首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCPU-16不接受来自键盘的输入

DCPU-16不接受来自键盘的输入
EN

Stack Overflow用户
提问于 2012-05-16 19:47:07
回答 2查看 390关注 0票数 2

我已经开始学习DCPU-16的汇编,以便为0x10c做准备,但是当我运行的tutorial结束时,我发现程序没有响应键盘输入。一步一步地,我发现代码卡在让cpu等待键盘输入的循环中。

这里有问题的一行:

代码语言:javascript
复制
IFE [0x9000 + I],0 ; if keyboard buffer is empty
SET PC,loop

会不会是因为代码是针对较旧版本的DCPU?如果是这样,它现在是如何工作的?

Stack overflow上的第一篇文章,如果我做了任何失礼,请原谅,并感谢你们所有人。完整代码:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-16 22:05:33

在最新的规格中,键盘是基于中断的,而不是使用地址0x9000的内存映射。因此,如果您使用的是最新的仿真器,您的代码将无法工作。

http://dcpu.com/highnerd/rc_1/keyboard.txt

票数 5
EN

Stack Overflow用户

发布于 2012-06-11 19:04:59

即使使用旧的规范,我仍然认为缓冲区的起始索引存储在$9010中,所以您应该这样做,而不是将i设置为0:

代码语言:javascript
复制
SET I, [0x9010]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10617836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档