我在模拟C64机器上玩asm时遇到了一些问题。

我要检查的是是否按下了键盘上的“N”键,然后程序应等待更改出现在地址$ D012上。现在我不明白的是我如何“等待”更改出现?有人可以告诉我这是怎么回事吗?

检查键盘上的N按钮是否被按下很简单-只需使用子例程FFE4(输入)和FFD2(输出)。

我真的不要求为我做任何事情,但是如果我能快速了解D012的工作原理以及如何“等待”更改,我将非常感激。

提前致谢!

最佳答案

$d012包含当前的栅格线。

如果只需要等到寄存器更改,即等到下一个光栅行,就可以执行简单的忙碌等待:

lda $d012 ;load the current raster line into the accumulator
cmp $d012 ;check if it has changed
beq *-3   ;if not, jump back and check again

编辑:

如果要等待几条光栅线,例如3:
lda $d012
clc       ;make sure carry is clear
adc #$03  ;add lines to wait
cmp $d012
bne *-3   ;check *until* we're at the target raster line

关于assembly - 等待$ D012上的更改(C64汇编器),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18811244/

10-11 02:45