Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:ppi [2022-09-01 20:13] 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> | ||
- | <code> | ||
- | Для опроса клавиатуры используются два порта - #A9 и #AA | ||
- | ПОРТ #A9, PPI Port B - Keyboard Column Inputs (Read Only) | + | Для опроса клавиатуры используются два порта — A9 и AA: |
- | Чтение из этого порта вернет состояние выбранной строки клавиатуры (выбранной через порт #AA) | + | ^ Регистр ^ Порт ^ Описание ^ |
- | Биты 0-7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры | + | | A9 | B |Колонка матрицы клавиатуры (Только чтение) \\ Чтение из этого порта вернёт состояние выбранной строки клавиатуры (выбранной через порт AA) \\ Биты 0–7 соответствует одной из 8 клавиш в каждой строке матрицы клавиатуры \\ **Если клавиша нажата, то соответствующий бит устанавливается в 0**| |
+ | | AA | C |Строка матрицы клавиатуры, LED, Cassette (Чтение/Запись) \\ Биты 0-3 соответствуют строке матрицы клавиатуры| | ||
+ | Полное описание регистров/портов приведено [[#registers|ниже]]. | ||
- | PS ЕСЛИ КЛАВИША НАЖАТА, ТО СООТВЕТСТВУЮЩИЙ БИТ УСТАНАВЛИВАЕТСЯ В 0 | + | Пример интернациональной раскладки матрицы клавиатуры: |
- | + | | ^ Порт #A9 ^^^^^^^^ | |
- | + | ^ Порт #AA ^ бит 7 ^ бит 6 ^ бит 5 ^ бит 4 ^ бит 3 ^ бит 2 ^ бит 1 ^ бит 0 ^ | |
- | ПОРТ 0AAh, PPI Port C - Keyboard Row,LED,Cassette (Read/Write) | + | ^строка 0| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
- | Биты 0-3 соответствуют строке матрицы клавиатуры | + | ^строка 1| ; | ] | [ | \ | = | - | 9 | 8 | |
- | + | ^строка 2| b | a | DEAD | / | . | , | ` | ' | | |
- | + | ^строка 3| j | i | h | g | f | e | d | c | | |
- | Пример интернациональной раскладки матрицы клавиатуры | + | ^строка 4| r | q | p | o | n | m | l | k | |
- | + | ^строка 5| z | y | x | w | v | u | t | s | | |
- | ПОРТ #A9 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 | + | ^строка 6| F3 | F2 | F1 | CODE | CAPS | GRAPH | CTRL | SHIFT | |
- | + | ^строка 7| RET | SELECT | BS | STOP | TAB | ESC | F5 | F4 | | |
- | ПОРТ #AA | + | ^строка 8| → | ↓ | ↑ | ← | DEL | INS | HOME | SPACE | |
- | строка 0 7 6 5 4 3 2 1 0 | + | |
- | строка 1 ; ] [ \ = - 9 8 | + | |
- | строка 2 b a DEAD / . , ` ' | + | |
- | строка 3 j i h g f e d c | + | |
- | строка 4 r q p o n m l k | + | |
- | строка 5 z y x w v u t s | + | |
- | строка 6 F3 F2 F1 CODE CAPS GRAPH CTRL SHIFT | + | |
- | строка 7 RET SELECT BS STOP TAB ESC F5 F4 | + | |
- | строка 8 → ↓ ↑ ← DEL INS HOME SPACE | + | |
- | + | ||
- | PS это пример раскладки без "шифта" и не расширеной клавиатуры | + | |
- | Более подробно см. здесь http://map.grauw.nl/articles/keymatrix.php | + | |
+ | Это пример раскладки без "шифта" и не расширенной клавиатуры: | ||
+ | <code> | ||
;------------------------------------------------------- | ;------------------------------------------------------- | ||
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 |:::|:::|:::| |