Сообщение от
barsik
В клавиатуре СПЕЦИАЛИСТА гораздо более грамотный алгоритм, чем классический алгоритм с диодами использованный в РК86 и ОРИОНЕ. Тут не производится сканирование матрицы по одному разряду, так называемым "бегущим нулём".
Сначала по вертикали выводятся все нули и читается байт по горизонтали, затем ППА перепрограммируется, ноль возникает по горизонтали а считывается байт по вертикали. А затем табличным методом высчитывается код нажатой клавиши. Это примерно в 10 раз быстрее, чем алгоритм РК86.
Глупости. Такой алгоритм применяется для обнаружения факта нажатия (RAMFOS, например, настраивает PA и PCl на вывод и читает PB). И он действительно просто молниеносный:
Код:
LDA PPA_B
ORI 03H
CPI 0FFh
Флаг Z укажет, что ничего не нажато. Шифт опрашивается отдельно, поэтому тут он маскируется. А потом, PA и PCl настраиваются на ввод, а PB на вывод и начинается бегущий 0 по PB, чтение слова из PA и PCl и побитный сдвиг. Поэтому в таблице сканкодов у них 6 строк по 12 символов (округлено до 16). Штатный загрузчик делает похожим методом. Как делает опрос MON_RSYS я не знаю - не разбирал, но, возможно, более оптимально.