我已经开始学习 DCPU-16 的汇编来为 0x10c 做准备,但是在我正在运行的教程结束时,我发现程序没有响应键盘输入。一步一步地进入,我发现代码被卡在循环设置中,让 cpu 等待键盘输入。
这里的违规行:
IFE [0x9000 + I],0 ; if keyboard buffer is empty
SET PC,loop
可能是因为代码是针对旧版本的 DCPU 的吗?如果是这样,它现在将如何运作?
第一篇关于 Stack Overflow 的帖子,如果我有任何失礼,请见谅,谢谢大家。完整代码:
SET A,0
SET B,0
SET C, 0xF000
SET I, 0
:loop
IFE [0x9000 + I],0 ; if keyboard buffer is empty
SET PC,loop
IFE [0x9000 + I],8
SET PC, backspace
IFE [0x9000 + I],10
SET PC, enter
SET B, [0x9000 + I]
BOR B,C
SET [0x8000+A], B
SET [0x9000 + I], 0
ADD A, 1
ADD I, 1
IFE I, 16
SET I, 0
SET PC,loop
:backspace
SUB A, 1
SET [0x8000+A],0
SET [0x9000 + I], 0
ADD I, 1
IFE I, 16
SET I, 0
SET PC,loop
:enter
AND A, 0xFFE0
ADD A, 0x0020
SET [0x9000 + I], 0
ADD I, 1
IFE I, 16
SET I, 0
SET PC,loop