【发布时间】:2015-03-30 06:12:39
【问题描述】:
我一直在为 MOS 6502 开发一个仿真器,现在我几乎已经完全完成了。不过它有一个小问题。它似乎通过了我通过的所有测试,但由于某种原因,它导致增强型基本以科学计数法输出所有内容,包括字符。
Enhanced Basic is only supposed to put numbers into scientific notation if they are > 999999.4375.
我应该从哪里开始寻找?哪些仿真问题会导致 EhBasic 做出这样的响应?这么大的程序我什至不知道从哪里开始,而且考虑到我的模拟器通过了我提供的所有测试,我无法完全找到测试的问题。
这是增强型基础的示例输出。
6502 EhBASIC [C]old/[W]arm ?
Memory size ? $C000
4.8383E+04 Bytes free
Enhanced BASIC 2.22
Ready
4.8383 实际上应该是 48383。
我冒昧地重写了the code 并注释掉了任何不需要查看此问题的内容。它现在应该对任何人都更具可读性。
要重现这个,按 C 运行 EhBASIC Cold,对于内存大小,输入 $C000。
编辑:澄清
累加器是内存[memory_size]
一些变量后面有 [0],因为我利用 javaScript Uint8 数组具有无符号 8 位整数和无符号 16 位整数。
【问题讨论】:
-
首先,检查明显的,模拟器上运行的二进制图像是正确的。然后 - 也许您的模拟指令之一没有正确设置进位或零标志。也许正在使用 BIT 指令并且没有正确模拟(这很奇怪)。一个标志位可能正在被一条指令清除,而它应该被单独留下。您应该在 EhBASIC 中找到显示数字的例程,将其反汇编,然后开始寻找线索。
标签: javascript emulation scientific-notation 6502