【发布时间】:2018-05-16 07:16:27
【问题描述】:
我已经在这个 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]);
}
}
- 只能通过单个字母输入(预期)
- 在程序询问内存大小后,提供任何输入只会导致从 $F004 (LDA $F004) 读取循环 - 即我无法让 EhBASIC 知道何时停止接收输入
我想知道一种输入字符串的有效方法,并通过“内存大小?”。
另外,如果我想让EhBASIC自动计算内存大小,我应该在$F004中输入什么?
我在这方面几乎是新手......
【问题讨论】: