From 6052c9a0c03923ce57e7e932afcb1e9a577326ce Mon Sep 17 00:00:00 2001 From: TQ Hirsch Date: Sat, 30 Sep 2023 16:14:59 +0200 Subject: [PATCH] Got to end of test, but fails to successfully end test :-/ --- src/main/kotlin/com/thequux/mcpdp/core/CPU.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/thequux/mcpdp/core/CPU.kt b/src/main/kotlin/com/thequux/mcpdp/core/CPU.kt index 041549c..3dfa390 100644 --- a/src/main/kotlin/com/thequux/mcpdp/core/CPU.kt +++ b/src/main/kotlin/com/thequux/mcpdp/core/CPU.kt @@ -1134,9 +1134,11 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) { } is NonExistentMemoryError -> { cpu_err = cpu_err or CPU_ERR_NXM + logger.warn("NXM at {}", error.addr.toOctal()) setTrap(TrapReason.NXM) } is BusTimeoutError -> { + logger.warn("TMO at {}", error.addr.toOctal()) cpu_err = cpu_err or CPU_ERR_UNIBUS_TIMEOUT setTrap(TrapReason.NXM) } @@ -1177,7 +1179,7 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) { fun callVector(vector: UShort) { val old_psw = psw - val newPSW = core.getw((vector + 2u).toUShort()) and 0xCFFFu or (cur_mode shl 12).toUShort() + val newPSW = core.getSpace(0).getw((vector + 2u).toUShort()) and 0xCFFFu or (cur_mode shl 12).toUShort() setPSW(newPSW, true) stack_push(old_psw) stack_push(pc) @@ -1225,10 +1227,10 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) { fun checkSP(addr: UShort): UShort { if (cur_mode != 0) return addr - if (sp < stack_limit + 224u || sp.toInt() and 0xFFFE == 0xFFFE) { + if (addr < stack_limit + 224u || addr.toInt() and 0xFFFE == 0xFFFE) { trapRed() throw EndCycle() - } else if (sp < stack_limit + 256u) { + } else if (addr < stack_limit + 256u) { // logger.warn("Stack YLW") // stack limit yellow cpu_err = cpu_err or CPU_ERR_STK_YLW