AT-Клавиатура
При программировании AT-клавиатуры следует помнить, что последовательный порт имеет FIFO буфер на 3 байта. После того, как принят и обработан один байт, стоит проверить нет ли еще принятых байтов и возвращаться из программы обработки клавиатуры только если этих байтов нет.
Программа инициализации клавиатуры и считывания байта.
Процедура инициализации клавиатуры:
COM_A EQU 19h
DAT_A EQU 18h
KBD_INIT:
LD A,0 ; установка портов режима
OUT (COM_A),A ; в соответствии с описанием
LD A,1 ; последовательного порта Z84C15
OUT (COM_A),A
LD A,0
OUT (COM_A),A
LD A,3
OUT (COM_A),A
LD A,0C1h
OUT (COM_A),A
LD A,4
OUT (COM_A),A
LD A,5h
OUT (COM_A),A
LD A,5
OUT (COM_A),A
LD A,062H
OUT (COM_A),A
RET
Процедура считывания байта с клавиатуры:
READ_KBD: ; считывание с клавиатуры
IN A,(COM_A)
BIT 0,A ; проверить наличие байта
SCF ; установить флаг C
RET Z ; и вернуться, если не было байта
IN A,(DAT_A) ; считать байт
AND A ; сбросить C
RET ; и вернуться
Особенности спектрумовской реализации (доп бит для F1..F10)