Oleg N. Cher, самый правильный способ опроса клавиатуры в начале прерывания.
Включаешь режим IM2 настраиваешь вектор и вызываешь эту подпрограмму каждое прерывание:

Код:
CHECK_KEYS:
	LD (SCAN_SP+1),SP
        LD SP,KEY_TAB		; Опрос клавиатуры
        LD DE,MAIN.KEY_MAP
        LD BC,#29FF
SCANLP:
	POP HL
	LD A,L
	IN A,(#FE)
	CPL
        AND H
	ADD A,C
	CCF
	SBC A,A
	LD (DE),A
	INC E
        DJNZ SCANLP
SCAN_SP:
	LD SP,#0000
	RET

; Таблица портов клавиатуры
KEY_TAB:
	DB #FD,1        ;#14
	DB #7F,16       ;#23
	DB #FE,8        ;#21
	DB #FD,4        ;#16
	DB #FB,4        ;#0C
	DB #FD,8        ;#17
	DB #FD,16       ;#18
	DB #BF,16       ;#19
	DB #DF,4        ;#11
	DB #BF,8        ;#1A
	DB #BF,4        ;#1B
	DB #BF,2        ;#1C
	DB #7F,4        ;#25
	DB #7F,8        ;#24
	DB #DF,2        ;#12
	DB #DF,1        ;#13
	DB #FB,1        ;#0A
	DB #FB,8        ;#0D
	DB #FD,2        ;#15
	DB #FB,16       ;#0E
	DB #DF,8        ;#10
	DB #FE,16       ;#22
	DB #FB,2        ;#0B
	DB #FE,4        ;#20
	DB #DF,16       ;#0F
	DB #FE,2        ;#1F
	DB #EF,1	;#09
	DB #F7,1	;#00
	DB #F7,2        ;#01
	DB #F7,4        ;#02
	DB #F7,8        ;#03
	DB #F7,16       ;#04
	DB #EF,16       ;#05
	DB #EF,8        ;#06
	DB #EF,4        ;#07
	DB #EF,2        ;#08
	DB #7F,1        ;#27
	DB #BF,1        ;#1D
	DB #FE,1        ;#1E
	DB #7F,2        ;#26
	DB #00,#1F
Результатом работы этой процедуры будет массив с состояниями клавиш:

Код:
;------------------------------------------------------------------------------------------------------------
; Начало массива клавиш
KEY_MAP:
	DS #29,#00	
KEY_A	EQU KEY_MAP+#00
KEY_B	EQU KEY_MAP+#01
KEY_C	EQU KEY_MAP+#02
KEY_D	EQU KEY_MAP+#03
KEY_E	EQU KEY_MAP+#04
KEY_F	EQU KEY_MAP+#05
KEY_G	EQU KEY_MAP+#06
KEY_H	EQU KEY_MAP+#07
KEY_I	EQU KEY_MAP+#08
KEY_J	EQU KEY_MAP+#09
KEY_K	EQU KEY_MAP+#0A
KEY_L	EQU KEY_MAP+#0B
KEY_M	EQU KEY_MAP+#0C
KEY_N	EQU KEY_MAP+#0D
KEY_O	EQU KEY_MAP+#0E
KEY_P	EQU KEY_MAP+#0F
KEY_Q	EQU KEY_MAP+#10
KEY_R	EQU KEY_MAP+#11
KEY_S	EQU KEY_MAP+#12
KEY_T	EQU KEY_MAP+#13	
KEY_U	EQU KEY_MAP+#14
KEY_V	EQU KEY_MAP+#15
KEY_W	EQU KEY_MAP+#16
KEY_X	EQU KEY_MAP+#17
KEY_Y	EQU KEY_MAP+#18
KEY_Z	EQU KEY_MAP+#19
KEY_0	EQU KEY_MAP+#1A
KEY_1	EQU KEY_MAP+#1B
KEY_2	EQU KEY_MAP+#1C
KEY_3	EQU KEY_MAP+#1D
KEY_4	EQU KEY_MAP+#1E
KEY_5	EQU KEY_MAP+#1F
KEY_6	EQU KEY_MAP+#20
KEY_7	EQU KEY_MAP+#21
KEY_8	EQU KEY_MAP+#22
KEY_9	EQU KEY_MAP+#23
KEY_SPC	EQU KEY_MAP+#24
KEY_ENT	EQU KEY_MAP+#25
KEY_CS	EQU KEY_MAP+#26
KEY_SS	EQU KEY_MAP+#27
KEY_ANY	EQU KEY_MAP+#28
Всё, теперь проверить нажата ли клавиша "A" например можно так:
Код:
	LD A,(KEY_A)
	OR A
	JR Z,переход_клавиша_нажата

	итд...