static void Op40(void) // RTI
{
regs.cc = regs.RdMem(0x0100 + ++regs.sp);
+//clear I (seems to be the case, either that or clear it in the IRQ setup...)
+//I can't find *any* verification that this is the case.
+// regs.cc &= ~FLAG_I;
regs.pc = regs.RdMem(0x0100 + ++regs.sp);
regs.pc |= (uint16)(regs.RdMem(0x0100 + ++regs.sp)) << 8;
}
dumpDis = false;
}
#endif
+#if 0
+// ProDOS debugging
+if (regs.pc == 0x2000)
+ dumpDis = true;
+#endif
#ifdef __DEBUG__
if (dumpDis)
regs.clock += CPUCycles[opcode];
#ifdef __DEBUG__
if (dumpDis)
- WriteLog(" [PC=%04X, SP=%04X, CC=%s%s-%s%s%s%s%s, A=%02X, X=%02X, Y=%02X]\n",
+ WriteLog(" [PC=%04X, SP=%04X, CC=%s%s.%s%s%s%s%s, A=%02X, X=%02X, Y=%02X]\n",
regs.pc, 0x0100 + regs.sp,
(regs.cc & FLAG_N ? "N" : "-"), (regs.cc & FLAG_V ? "V" : "-"),
(regs.cc & FLAG_B ? "B" : "-"), (regs.cc & FLAG_D ? "D" : "-"),