From d0359d510f0b208f821c9e9c3d3affa774b0b8e3 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Fri, 24 Mar 2023 14:01:53 +0100 Subject: [PATCH] stack limit register fix (can only change upper 8 bits) --- bus.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bus.cpp b/bus.cpp index 8ad3be3..c01718c 100644 --- a/bus.cpp +++ b/bus.cpp @@ -684,14 +684,14 @@ void bus::write(const uint16_t a, const bool word_mode, uint16_t value, const bo if (a == ADDR_STACKLIM || a == ADDR_STACKLIM + 1) { // stack limit register DOLOG(debug, true, "writeb Set stack limit register: %o", value); - uint16_t v = c->getStackLimitRegister(); - if (a == ADDR_STACKLIM) - v = (v & 0xff00) | value; - else + if (a == ADDR_STACKLIM + 1) { + uint16_t v = c->getStackLimitRegister(); + v = (v & 0x00ff) | (value << 8); - c->setStackLimitRegister(v); + c->setStackLimitRegister(v); + } return; } @@ -726,7 +726,7 @@ void bus::write(const uint16_t a, const bool word_mode, uint16_t value, const bo if (a == ADDR_STACKLIM) { // stack limit register DOLOG(debug, true, "write Set stack limit register: %o", value); - c->setStackLimitRegister(value); + c->setStackLimitRegister(value & 0xff00); return; }