Сообщение от
Barmaley_m
Можно. Для этого надо в обработчике прерываний по IM 2, когда необходимо опрашивать клавиатуру, поставить вызов обработчика прерываний из ПЗУ (CALL 0x38).
Вот этого не делаю для скорости - опрос клавиатуры таким способом нужен время от времени, а не постоянно. А обработчик 0x38 грузный.
Сообщение от
Barmaley_m
Еще лучше - сделать свой драйвер клавиатуры. Потому что ПЗУшный во-первых требует, чтобы IY=0x5C3A, что исключает возможность использование хорошего регистра IY для других целей. Во-вторых, ПЗУшный драйвер не поддерживает одновременного нажатия нескольких клавиш.
Опрос одновременного нажатия не требуется. Это чтобы буковки печатать, имя вводить.
Ладно, спрошу проще. В чём у меня сомнения. Нельзя ли переписать код вот так:
Код:
LD IY,#5C3A
RES 5,(IY+1)
; DI ; убираем
IM 0
; EI ; убираем
LOOP_REPEAT:
BIT 5,(IY+1)
JR Z,LOOP_REPEAT
LD L,(IY-50) ; result in L - a pressed key code
; DI ; убираем
IM 2
; EI ; убираем
RET