assembly - 等待 $D012(C64 汇编器)的更改

标签 assembly 6502 c64

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

相关文章:

assembly - 这些线在 assembly 中起什么作用?

assembly - ARM Aarch64 中的 PUSH {lr} 和 POP {lr}

javascript - 6502 仿真增强型基本无限循环 $C000 至 $E0ED

coordinate-transformation - 打印出屏幕任意位置的字母

windows - 与时间相关的中断在 Windows 中的汇编程序中不起作用?

assembly - MARS MIPS 汇编程序给出错误 : Extended (pseudo) instruction or format not permitted

low-level - CPU 仿真并锁定到特定时钟速度

string - DASM 汇编器中的 ASCII 到 C64 屏幕代码

xcode - Xcode 中的 C64 开发?