6502仿真器测试:嵌套

Has*_*XXI 2 cpu 6502 emulation

我正在为未来的NES仿真器实现自己的MOS 6502 cpu仿真器。我正在使用nestest来测试模拟器的正确性。一切似乎都找到了,直到我到达以下行:

在此处输入图片说明

如您所见,状态寄存器(6F)被压入堆栈。在下一条指令中,将其从累积器中的堆栈中拉出。在下一次读取中,日志显示A:7F。这有意义吗?A不应该是6F吗?

我正在使用此日志:http : //www.qmtpro.com/~nes/misc/nestest.log

我猜,由于它来自Nintendulator,因此应该可靠。

我是误会了还是此日志不可靠?

Eig*_*uru 5

出于此处和此处更好地说明的原因,在将状态寄存器压入堆栈时,请PHP始终设置Break标志。但是,该标志的物理实现方式与我们对其进行可视化的方式之间存在代表性的差异-它实际上根本没有保存在状态寄存器中,而是以实际状态显示。

当6502执行一条PHP指令时,它会将要写入堆栈的状态寄存器的值设置为第 4位,但这不会反映为对状态寄存器本身的实际更改。因此,您的日志显示之后的状态寄存器未更改PHP,但是当您PLA将该字节设置为4时。您可以通过使用监视器在PHP指令之后中断然后查看堆栈存储区中的字节($ 01xx)来自己查看。