From d2090c5b8ddd13cfec59f5a338487bb00bd2eefb Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 9 Apr 2026 09:52:28 -0400 Subject: [PATCH] Differentiate the ROM from cartridges. --- Machines/Thomson/MO5/MO5.cpp | 4 ++-- Machines/Thomson/MO5/MemoryMap.hpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Machines/Thomson/MO5/MO5.cpp b/Machines/Thomson/MO5/MO5.cpp index d8d25d7a8..9a27af10a 100644 --- a/Machines/Thomson/MO5/MO5.cpp +++ b/Machines/Thomson/MO5/MO5.cpp @@ -94,7 +94,7 @@ struct ConcreteMachine: { auto rom = roms.find(BasicROM)->second; memory_.set_monitor(rom.end() - 0x1000, rom.end()); - memory_.set_rom(std::vector(rom.begin(), rom.end() - 0x1000)); + memory_.set_rom(rom.begin(), rom.end() - 0x1000); } if(has_floppy) { @@ -605,7 +605,7 @@ private: if(rom.size() < 16384) { rom.resize(16384); } - memory_.set_rom(rom); + memory_.set_cartridge(rom); } if(has_floppy) { diff --git a/Machines/Thomson/MO5/MemoryMap.hpp b/Machines/Thomson/MO5/MemoryMap.hpp index eb662286e..af9da4c8f 100644 --- a/Machines/Thomson/MO5/MemoryMap.hpp +++ b/Machines/Thomson/MO5/MemoryMap.hpp @@ -43,11 +43,18 @@ public: std::copy(begin, end, monitor_.begin()); } - void set_rom(const std::vector &rom) { - rom_ = rom; + template + void set_rom(const IteratorT begin, const IteratorT end) { + rom_ = std::vector(begin, end); update_commutable_rom(); } + void set_cartridge(const std::vector &cartridge) { + if constexpr (!is_mo6) { + set_rom(cartridge.begin(), cartridge.end()); + } + } + void set_floppy_rom(const std::vector &rom) { std::copy_n(rom.begin(), std::min(rom.size(), floppy_rom_.size()), floppy_rom_.begin()); set_read(0xa, floppy_rom_.data());