- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经在这个 6502 仿真器上工作了一段时间,并且我正在尝试让一个简单的增强型 BASIC ROM 工作。虽然它缺少精确的时钟计时,但仿真器确实通过了 AllSuiteA.asm。使用 EhBASIC,当对该地址完成读取时,我通过打印 $F001 的值设法获得了一些输出。
if(lastwrite == 0xF001)
{
printf("%c",CPUMEM[0xF001]);
}
但是,我不知道如何模拟输入过程。 This post指出无论何时 EhBASIC 需要输入,它都会轮询 $F004。但是我目前的代码似乎有两个问题:
while(1)
{
decodeandexecute();
if(lastread == 0xF004)
{
inputchar = getchar();
CPUMEM[0xF004] = inputchar;
}
if(lastwrite == 0xF001)
{
printf("%c",CPUMEM[0xF001]);
}
}
我想知道一个有效的方法来输入一串字符,并通过“内存大小?”。
另外,如果我想让EhBASIC自动计算内存大小,我应该在$F004中输入什么?
我在这方面几乎是个新手....
最佳答案
我看到你在代码中使用了 getchar
,如果我没记错的话那是一个阻塞调用(它会等到有人按下某个键)。
在ehbasic的手册中说:
How to.
The interpreter calls the system routines via RAM based vectors and,
as long as the requirements for each routine are met, these can be changed
on the fly if needs be.
All the routines exit via an RTS.
The routines are ...
Input
This is a non halting scan of the input device. If a character is ready it
should be placed in A and the carry flag set, if there is no character then A,
and the carry flag, should be cleared.
处理这个问题的一种方法是使用两个线程。一个线程运行 6502 运行 ehbasic 的仿真,另一个线程轮询键盘。然后让轮询线程将任何输入击键推送到一个小缓冲区中,ehbasic 输入例程可以从中使用。
手册:http://www.sunrise-ev.com/photos/6502/EhBASIC-manual.pdf
更新阅读您链接到的问题/答案,我看到它是一个修改过的 ehbasic。您的键盘轮询线程应该将读取的击键放在 $F004 中(并在一段时间后再次清除 F004 - 如果我理解说明的话)。
更新 2作为调试提示:在您的第一个版本中,只需一个带有固定输入的字符串,例如 10 print "hello"20 goto 10
并从那里输入 $f004。这样您就不必担心使用实际键盘时出现任何问题。
关于c - 6502 仿真器上的 EhBASIC 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605996/
很长一段时间以来,我一直对蓝牙低功耗 (BLE) 协议(protocol) 4.0 版及其工作原理非常感兴趣。我开发了一个 android 应用程序,可以作为 BLE 外围设备的中央设备。问题是 BL
我正在寻找在游戏中构建一个虚拟机,并且想知道是否有人知道任何非常简单的虚拟机(我认为 RISC/PIC 接近我想要的),通常用于嵌入式项目,例如控制机器人、电机、传感器等。我主要关心的是如果我自己编写
我一直在写一个 chip8 模拟器 -- http://en.wikipedia.org/wiki/CHIP-8 我已经测试了所有的操作码和图形计算,现在我正在努力处理用户输入。我有以下方法监视用户输
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我在哪里可以找到支持 "V" Vector Extension 的 RISC-V 模拟器? 我知道当前规范版本 0.8 是草案: This is a draft of a stable proposa
我想为以下微 Controller 板创建/启动模拟器:http://www.sparkfun.com/commerce/product_info.php?products_id=707# 固件是用汇
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在尝试编写一个 C 程序来模拟 ARM 二进制文件的执行。所以它现在所做的是,我们从二进制文件中获取指令到一个 uint32_t 数组中,然后我对其进行解码和执行。 问题是我只使用程序计数器访问数
我正在寻找一个现代系统来进行一些简单的汇编程序设计(用于娱乐/学习),而这些程序编程不具有x86平台的遗留负担(在该平台上您仍然必须处理BIOS,切换到保护模式,VESA恐怖才能以现代分辨率/色彩深度
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在构建一个网站的移动版本,我想要一种测试它的方法。许多免费模拟器的问题在于它们是针对 Windows 的。我知道我可以在 wine 中运行它们,只是想知道是否有本地 GNU/Linux 应用程序。
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我想在我的 Arduino mega 上安装 2 个 TCS34725 颜色传感器。传感器使用 I2c 通信,因此我不能将它们放在相同的 I2C 引脚上,因为它们具有相同的地址。我提出的解决方案是使用
在业余时间,我开始为 6502 CPU 编写一个非常简单的 C++ 仿真器。我过去常常为这个 CPU 写下很多汇编代码,所以所有的操作码、寻址模式和其他东西都不是什么大问题。 6502 有 56 条不
我是一名优秀的程序员,十分优秀!