*等待*按键并获取其矩阵或PETSCII代码的简单方法?

问题描述

我发现了一些与获取按键/行相关的 BASIC 和 KERNAL 函数和内存地址,但是我怎么能简单地等待按键并获取代码?我想暂停执行,并在按下一个键后恢复。我不希望它们在执行过程中排队。

解决方法

原则是使用非阻塞调用,一直调用直到拿到key。

在汇编程序中,您可以在 GETIN 处使用内核函数 $FFE4

WAIT_KEY
    jsr $FFE4        ; Calling KERNAL GETIN 
    beq WAIT_KEY     ; If Z,no key was pressed,so try again.
                     ; The key is in A

在 BASIC 中,您可以使用 GET

10 GET A$:IF A$="" GOTO 10:REM WAIT FOR KEY
20 PRINT A$

上面我使用了空格以使其更具可读性,但空格不是必需的(它们使用内存并需要时间来处理。它可以写成:

10 GETA$:IFA$=""GOTO10
20 PRINTA$