我在模拟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/