From 8b361fad4a247cb1cdf0c2dc28e354dec58c158d Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Mon, 21 Mar 2022 19:22:40 +0100 Subject: [PATCH] system size registers fix --- bus.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bus.cpp b/bus.cpp index 2fec7b4..57793bd 100644 --- a/bus.cpp +++ b/bus.cpp @@ -237,8 +237,14 @@ uint16_t bus::read(const uint16_t a, const bool word_mode, const bool use_prev) D(fprintf(stderr, "bus::readWord: odd address UNHANDLED %o\n", a);) D(fprintf(stderr, "UNHANDLED read %o(%c)\n", a, word_mode ? 'B' : ' ');) - if (a == 0177760) - return std::min(n_pages * 8192, 65536) - 4096; + // LO size register field must be all 1s, so subtract 1 + constexpr const uint32_t system_size = n_pages * 8192 - 4096 - 1; + + if (a == 0177762) // system size HI + return system_size >> 16; + + if (a == 0177760) // system size LO + return system_size & 65535; // c -> busError();