Собственно, меня клавиатуры "
Галаксии" и "
РК-86" заинтересовали вот по какой причине:
я разбирался, как программно опрашивают частично аппаратную клавиатуру
NES-Famicom
и по коду у них оказалось в этой процедуре аж
5 полных таблиц перекодировки!
Я этому очень удивился... потому как у "
Специалиста" всего одна таблица, и будь у него
не "
ЙЦУКЕН", а натуральная "
QWERTY" раскладка английской клавиатуры, таблиц бы стало
две, на мой взгляд, ну никак не пять!
Поэтому я вспомнил про "
Галаксию" и "
РК-86" - а как в них обошлись совсем без таблиц?
Выяснилось, что в "
РК-86" всё же есть табличка в две строчки...
И на клавиатуру "
Галаксии" я тоже посмотрел, раз уж
я сам и рисовал приличную схему её:
- 0Galaksija_kbd.gif (10.58 KiB) Viewed 12996 times
|
В случае с "
Галаксией" мне представляется следующий "
безтабличный" алгоритм, исходя из
схемотехники узла обслуживания клавиатуры.
Опрос строк и столбцов в "
Галаксии" осуществляется чисто аппаратно.
"
Слушает" состояние строки (или позицию в столбце) мультиплексор, управляемый тремя младшими
адресами:
А0...А2. При этом клавиши в матрице так и расположены по возрастанию.
Смотрим крайний столбец:
А - 41H,
В - 42H, ... и т.п. странно, что нет
@ - 40H.
За переключение "
бегущего нуля" опроса столбцов отвечает дешифратор, управляемый адресами
старше:
A3...A5.
Таким образом,
весь алгоритм сканирования матрицы клавиатуры у "
Галаксии" -
это чтение
8х7=56 адресов, начиная с базового 2000H. При каждом чтении проверяется
бит D0.
Если он равен нулю, то клавиша - нажата, а
адрес - это практически код клавиши, возможно,
плюс немного самой простой арифметики, чтобы из адреса сделать конкретный код.