From ca7facfd5d57fcfcbff353b41903e5697a083951 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 7 Apr 2026 22:12:34 -0400 Subject: [PATCH] Front-pad system ROM if necessary. --- Machines/Thomson/MO5/MO5.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Machines/Thomson/MO5/MO5.cpp b/Machines/Thomson/MO5/MO5.cpp index e65474474..5135e3da4 100644 --- a/Machines/Thomson/MO5/MO5.cpp +++ b/Machines/Thomson/MO5/MO5.cpp @@ -94,12 +94,20 @@ struct ConcreteMachine: { const auto &rom = roms.find(BasicROM)->second; std::copy_n(rom.end() - 0x1000, 0x1000, monitor_.begin()); + rom_ = std::vector(rom.begin(), rom.end() - 0x1000); + + if(rom_.size() < 16384) { + std::vector padding(16384 - rom_.size(), 0xff); + rom_.insert(rom_.begin(), padding.begin(), padding.end()); + } } if(has_floppy) { const auto &floppy_rom = roms.find(ROM::Name::ThomsonCD90_640)->second; std::copy_n(floppy_rom.begin(), floppy_rom.size(), floppy_rom_.begin()); + } else { + std::fill(floppy_rom_.begin(), floppy_rom_.end(), 0xff); } Memory::Fuzz(ram_); @@ -649,8 +657,10 @@ private: } if(!media.cartridges.empty()) { - auto segment = media.cartridges.front()->segments().front(); - std::copy_n(segment.data.begin(), std::min(segment.data.size(), 16384), rom_.begin()); + rom_ = media.cartridges.front()->segments().front().data; + if(rom_.size() < 16384) { + rom_.resize(16384); + } } if(has_floppy) {