From 3e716dbca1da20fe45160c6b654c264999694277 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Wed, 15 Jun 2022 08:23:35 +0200 Subject: [PATCH] on the 11/34, supervisor-mode does not exist - behaves like user-mode(?) --- bus.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bus.cpp b/bus.cpp index e26cb3a..f54daea 100644 --- a/bus.cpp +++ b/bus.cpp @@ -283,6 +283,9 @@ uint16_t bus::read(const uint16_t a, const bool word_mode, const bool use_prev, int run_mode = (c->getPSW() >> (use_prev ? 12 : 14)) & 3; + if (run_mode == 1 && c->get_34()) + run_mode = 3; + uint32_t m_offset = calculate_physical_address(run_mode, a, !peek_only, false, peek_only); if (word_mode) @@ -693,6 +696,9 @@ uint16_t bus::write(const uint16_t a, const bool word_mode, uint16_t value, cons int run_mode = (c->getPSW() >> (use_prev ? 12 : 14)) & 3; + if (run_mode == 1 && c->get_34()) + run_mode = 3; + uint32_t m_offset = calculate_physical_address(run_mode, a, true, true, false); DOLOG(debug, true, "WRITE to %06o/%07o: %o", a, m_offset, value);