From 9d0bc9eea5c9f7a64aaa3ed82376c678e5c248c2 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sun, 26 Mar 2023 15:24:10 +0200 Subject: [PATCH] could not change msb of stack limit register --- bus.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bus.cpp b/bus.cpp index 5786c9f..ca066e9 100644 --- a/bus.cpp +++ b/bus.cpp @@ -736,13 +736,14 @@ void bus::write(const uint16_t addr_in, const word_mode_t word_mode, uint16_t va if (a == ADDR_STACKLIM || a == ADDR_STACKLIM + 1) { // stack limit register DOLOG(debug, true, "WRITE-I/O stack limit register %s: %03o", a & 1 ? "MSB" : "LSB", value); - if (a == ADDR_STACKLIM + 1) { - uint16_t v = c->getStackLimitRegister(); + uint16_t v = c->getStackLimitRegister(); + if (a == ADDR_STACKLIM) + v = (v & 0xff00) | value; + else v = (v & 0x00ff) | (value << 8); - c->setStackLimitRegister(v); - } + c->setStackLimitRegister(v); return; }