Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:ppi [2022-09-01 20:33] 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** | ||
- | <hidden> | ||
- | |||
- | Для опроса клавиатуры используются два порта - #A9 и #AA | ||
- | |||
- | ПОРТ #A9, PPI Port B - Keyboard Column Inputs (Read Only) | ||
- | Чтение из этого порта вернет состояние выбранной строки клавиатуры (выбранной через порт #AA) | ||
- | Биты 0-7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры | ||
- | |||
- | PS ЕСЛИ КЛАВИША НАЖАТА, ТО СООТВЕТСТВУЮЩИЙ БИТ УСТАНАВЛИВАЕТСЯ В 0 | ||
- | |||
- | |||
- | ПОРТ 0AAh, PPI Port C - Keyboard Row,LED,Cassette (Read/Write) | ||
- | Биты 0-3 соответствуют строке матрицы клавиатуры | ||
- | |||
- | Пример интернациональной раскладки матрицы клавиатуры | + | Для опроса клавиатуры используются два порта — A9 и AA: |
+ | ^ Регистр ^ Порт ^ Описание ^ | ||
+ | | A9 | B |Колонка матрицы клавиатуры (Только чтение) \\ Чтение из этого порта вернёт состояние выбранной строки клавиатуры (выбранной через порт AA) \\ Биты 0–7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры \\ **Если клавиша нажата, то соответствующий бит устанавливается в 0**| | ||
+ | | AA | C |Строка матрицы клавиатуры, LED, Cassette (Чтение/Запись) \\ Биты 0-3 соответствуют строке матрицы клавиатуры| | ||
+ | Полное описание регистров/портов приведено [[#registers|ниже]]. | ||
- | ^ПОРТ #A9^bit 7^bit 6^bit 5^bit 4^bit 3^bit 2^bit 1^bit 0^ | + | Пример интернациональной раскладки матрицы клавиатуры: |
- | ^ПОРТ #AA^ | + | | ^ Порт #A9 ^^^^^^^^ |
+ | ^ Порт #AA ^ бит 7 ^ бит 6 ^ бит 5 ^ бит 4 ^ бит 3 ^ бит 2 ^ бит 1 ^ бит 0 ^ | ||
^строка 0| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | ^строка 0| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | ||
^строка 1| ; | ] | [ | \ | = | - | 9 | 8 | | ^строка 1| ; | ] | [ | \ | = | - | 9 | 8 | | ||
Строка 46: | Строка 35: | ||
^строка 8| → | ↓ | ↑ | ← | DEL | INS | HOME | SPACE | | ^строка 8| → | ↓ | ↑ | ← | DEL | INS | HOME | SPACE | | ||
+ | Это пример раскладки без "шифта" и не расширенной клавиатуры: | ||
<code> | <code> | ||
- | PS это пример раскладки без "шифта" и не расширеной клавиатуры | ||
- | Более подробно см. здесь http://map.grauw.nl/articles/keymatrix.php | ||
- | |||
;------------------------------------------------------- | ;------------------------------------------------------- | ||
NAMBAS EQU #F922 ; адрес PNT | NAMBAS EQU #F922 ; адрес PNT | ||
Строка 146: | Строка 133: | ||
db " " | db " " | ||
;---------------------------------------------------------------------------- | ;---------------------------------------------------------------------------- | ||
- | |||
</code> | </code> | ||
- | </hidden> | + | Более подробно см. здесь: [[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}} | ||
Строка 159: | Строка 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| | ||
Строка 168: | Строка 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 |:::|:::|:::| |