Адреса и клавиатура поведение строб выглядеть как Apple II, поэтому я буду использовать это, чтобы ответить. (Если это на самом деле ретрокомпьютерный вопрос, вы можете опубликовать его на Retrocomputing.)
Для немного другого ответа от ответа 8-битного Гуру, вот версия («A») вашего кода, предполагающая, что вы хотите напечатайте символ конечного ключа (поскольку он часто вводит/возвращает, как показано ниже), что делает очистку конца цикла. Вы можете также опустить КСС # $ 80, так как LDA KYBD наборы N.
START JSR HOME
LOOP LDA KYBD ;Key pressed?
BPL LOOP
STA STROBE ;Yes: clear key
JSR COUT ;Print key
CMP #$8D ;End key?
BNE LOOP
RTS ;Yes: return to caller
Если вы не хотите печатать клавишу разъединения, вы все равно должны очистить строб перед выходом:
START JSR HOME
LOOP LDA KYBD ;Key pressed?
BPL LOOP
STA STROBE ;Yes: clear key
CMP #$8D ;End key?
BEQ EXIT
JSR COUT ;No: print key
JMP LOOP
EXIT RTS ;Yes: return to caller
код выхода будет специфичным для среды. Например, RTS будет хорошо, если бы он был вызван из Applesoft BASIC с CALL 32768, но если ваша программа была вызвана из операционной системы ProDOS Disk, вам нужно будет вызвать API с командой QUIT.
Обратите внимание, что версия «A» работает только в том случае, если COUT сохраняет содержимое A, как в прошивке Apple II. Имея в виду, что находится в каждом регистре и какие флаги изменены или остаются нетронутыми после каждой инструкции, это способ сжатого и компактного языка ассемблера.
Похоже, вы уже знаете, как делать сравнения и conditíonal ветви. Этого должно быть достаточно, чтобы решить вашу проблему. –