From 470919e85d9e687d48f63b7592d0c023f4503eaf Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Tue, 21 Mar 2023 11:04:04 +0100 Subject: [PATCH] If bit 9 of MMR0 is not set, abort an instruction but do not trap --- bus.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bus.cpp b/bus.cpp index 284a566..23ba2c5 100644 --- a/bus.cpp +++ b/bus.cpp @@ -415,7 +415,7 @@ uint32_t bus::calculate_physical_address(const int run_mode, const uint16_t a, c m_offset &= 0x3ffff; if (trap_on_failure) { - if (MMR0 & (1 << 9)) { + { const int access_control = pages[run_mode][d][apf].pdr & 7; bool do_trap = false; @@ -431,7 +431,8 @@ uint32_t bus::calculate_physical_address(const int run_mode, const uint16_t a, c if (do_trap) { DOLOG(debug, true, "TRAP(0250) (throw 1) for access_control %d on address %06o", access_control, a); - c->schedule_trap(0250); // invalid address + if (MMR0 & (1 << 9)) + c->schedule_trap(0250); // invalid address if (is_write) pages[run_mode][d][apf].pdr |= 1 << 7;