Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:ppi [2022-09-01 20:41] GreyWolf [Пример опроса клавиатуры без использования подпрограмм ПЗУ] |
msx:ppi [2022-09-01 21:14] (текущий) GreyWolf [Пример опроса клавиатуры без использования подпрограмм ПЗУ] |
||
---|---|---|---|
Строка 13: | Строка 13: | ||
{{anchor:work_keyboard_without_rom}} | {{anchor:work_keyboard_without_rom}} | ||
===== Пример опроса клавиатуры без использования подпрограмм ПЗУ ===== | ===== Пример опроса клавиатуры без использования подпрограмм ПЗУ ===== | ||
- | |||
- | FIXME | ||
Пример опроса клавиатуры без использования подпрограмм [[msx:rom|]], автор **KoD/SDM** | Пример опроса клавиатуры без использования подпрограмм [[msx:rom|]], автор **KoD/SDM** | ||
- | Для опроса клавиатуры используются два порта - #A9 и #AA | + | Для опроса клавиатуры используются два порта — A9 и AA: |
- | + | ^ Регистр ^ Порт ^ Описание ^ | |
- | ПОРТ #A9, PPI Port B — Keyboard Column Inputs (Read Only) | + | | A9 | B |Колонка матрицы клавиатуры (Только чтение) \\ Чтение из этого порта вернёт состояние выбранной строки клавиатуры (выбранной через порт AA) \\ Биты 0–7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры \\ **Если клавиша нажата, то соответствующий бит устанавливается в 0**| |
- | + | | AA | C |Строка матрицы клавиатуры, LED, Cassette (Чтение/Запись) \\ Биты 0-3 соответствуют строке матрицы клавиатуры| | |
- | Чтение из этого порта вернёт состояние выбранной строки клавиатуры (выбранной через порт #AA) | + | Полное описание регистров/портов приведено [[#registers|ниже]]. |
- | + | ||
- | Биты 0–7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры | + | |
- | + | ||
- | PS ЕСЛИ КЛАВИША НАЖАТА, ТО СООТВЕТСТВУЮЩИЙ БИТ УСТАНАВЛИВАЕТСЯ В 0 | + | |
- | + | ||
- | + | ||
- | ПОРТ 0AAh, PPI Port C — Keyboard Row,LED,Cassette (Read/Write) | + | |
- | + | ||
- | Биты 0-3 соответствуют строке матрицы клавиатуры | + | |
- | Пример интернациональной раскладки матрицы клавиатуры | + | Пример интернациональной раскладки матрицы клавиатуры: |
| ^ Порт #A9 ^^^^^^^^ | | ^ Порт #A9 ^^^^^^^^ | ||
^ Порт #AA ^ бит 7 ^ бит 6 ^ бит 5 ^ бит 4 ^ бит 3 ^ бит 2 ^ бит 1 ^ бит 0 ^ | ^ Порт #AA ^ бит 7 ^ бит 6 ^ бит 5 ^ бит 4 ^ бит 3 ^ бит 2 ^ бит 1 ^ бит 0 ^ | ||
Строка 47: | Строка 35: | ||
^строка 8| → | ↓ | ↑ | ← | DEL | INS | HOME | SPACE | | ^строка 8| → | ↓ | ↑ | ← | DEL | INS | HOME | SPACE | | ||
- | PS это пример раскладки без "шифта" и не расширенной клавиатуры | + | Это пример раскладки без "шифта" и не расширенной клавиатуры: |
- | + | ||
- | Более подробно см. [[http://map.grauw.nl/articles/keymatrix.php|здесь]] | + | |
<code> | <code> | ||
- | |||
;------------------------------------------------------- | ;------------------------------------------------------- | ||
NAMBAS EQU #F922 ; адрес PNT | NAMBAS EQU #F922 ; адрес PNT | ||
Строка 149: | Строка 133: | ||
db " " | db " " | ||
;---------------------------------------------------------------------------- | ;---------------------------------------------------------------------------- | ||
- | |||
</code> | </code> | ||
- | ---- | + | Более подробно см. здесь: [[http://map.grauw.nl/articles/keymatrix.php|MSX Assembly Page: Keyboard matrices]] |
- | [[http://map.grauw.nl/articles/keymatrix.php|MSX Assembly Page: Keyboard matrices]] | ||
{{anchor:registers}} | {{anchor:registers}} | ||
Строка 160: | Строка 142: | ||
Здесь приведено соответствие регистров PPI и портов ввода/вывода: | Здесь приведено соответствие регистров PPI и портов ввода/вывода: | ||
- | ^ Регистр ^ Порт ^ Бит ^ Режим \\ (ввод/вывод) ^ Имя ^ Назначение ^ | + | ^ Регистр ^ Порт ^ Бит ^ Режим \\ (ввод/выход) ^ Имя ^ Назначение ^ |
- | | A {{anchor:reg_a}} | A8 {{anchor:a8}} | 0 | ввод/вывод | CS0 L |Выбор слота для адресов в диапазоне 0000-3FFF| | + | | A {{anchor:reg_a}} | A8 {{anchor:a8}} | 0 | ввод/выход | CS0 L |Выбор слота для адресов в диапазоне 0000-3FFF| |
|:::|:::| 1 |:::| CS0 H |:::| | |:::|:::| 1 |:::| CS0 H |:::| | ||
|:::|:::| 2 |:::| CS1 L |Выбор слота для адресов в диапазоне 4000-7FFF| | |:::|:::| 2 |:::| CS1 L |Выбор слота для адресов в диапазоне 4000-7FFF| | ||
Строка 169: | Строка 151: | ||
|:::|:::| 6 |:::| CS3 L |Выбор слота для адресов в диапазоне C000-FFFF| | |:::|:::| 6 |:::| CS3 L |Выбор слота для адресов в диапазоне C000-FFFF| | ||
|:::|:::| 7 |:::| CS3 H |:::| | |:::|:::| 7 |:::| CS3 H |:::| | ||
- | | B {{anchor:reg_b}} | A9 {{anchor:a9}} | 0 | ввод | |Состояние строки [[msx:russification:#matrix|матрицы клавиатуры]], указанной через порт [[#AA]] битами KB1–KB3| | + | | B {{anchor:reg_b}} | A9 {{anchor:a9}} | 0 | ввод | |Состояние строки [[msx:russification:#matrix|матрицы клавиатуры]], указанной через порт [[#AA]] битами KB1–KB3 \\ **Если клавиша нажата, то соответствующий бит устанавливается в 0**| |
|:::|:::| 1 |:::|:::|:::| | |:::|:::| 1 |:::|:::|:::| | ||
|:::|:::| 2 |:::|:::|:::| | |:::|:::| 2 |:::|:::|:::| |