From e12030945860e22eb3e039201b8951986e4287b3 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Thu, 20 Jun 2024 07:14:15 +0200 Subject: [PATCH] duplicate memory size check removed --- bus.cpp | 8 ++++++-- memory.h | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bus.cpp b/bus.cpp index 68a5749..f69becb 100644 --- a/bus.cpp +++ b/bus.cpp @@ -873,7 +873,9 @@ void bus::write_word(const uint16_t a, const uint16_t value, const d_i_space_t s uint8_t bus::read_unibus_byte(const uint32_t a) { - uint8_t v = m->read_byte(a); + uint8_t v = 0; + if (a < m->get_memory_size()) + v = m->read_byte(a); TRACE("read_unibus_byte[%08o]=%03o", a, v); return v; } @@ -881,5 +883,7 @@ uint8_t bus::read_unibus_byte(const uint32_t a) void bus::write_unibus_byte(const uint32_t a, const uint8_t v) { TRACE("write_unibus_byte[%08o]=%03o", a, v); - m->write_byte(a, v); + + if (a < m->get_memory_size()) + m->write_byte(a, v); } diff --git a/memory.h b/memory.h index b7c0081..fab1a9b 100644 --- a/memory.h +++ b/memory.h @@ -26,8 +26,8 @@ public: static memory *deserialize(const JsonVariantConst j); uint16_t read_byte(const uint32_t a) const { return m[a]; } - void write_byte(const uint32_t a, const uint16_t v) { if (a < size) m[a] = v; } + void write_byte(const uint32_t a, const uint16_t v) { m[a] = v; } uint16_t read_word(const uint32_t a) const { return m[a] | (m[a + 1] << 8); } - void write_word(const uint32_t a, const uint16_t v) { if(a < size - 1) { m[a] = v; m[a + 1] = v >> 8; } } + void write_word(const uint32_t a, const uint16_t v) { m[a] = v; m[a + 1] = v >> 8; } };