diff --git a/Machines/Thomson/MO/MO.cpp b/Machines/Thomson/MO/MO.cpp index fe5cca60a..7671e6d2f 100644 --- a/Machines/Thomson/MO/MO.cpp +++ b/Machines/Thomson/MO/MO.cpp @@ -63,8 +63,9 @@ struct ConcreteMachine: public MachineTypes::MappedKeyboardMachine, public MachineTypes::MediaChangeObserver, public MachineTypes::MediaTarget, - public MachineTypes::TimedMachine, + public MachineTypes::SoftResettable, public MachineTypes::ScanProducer, + public MachineTypes::TimedMachine, public Machine, public Utility::TypeRecipient { @@ -620,6 +621,13 @@ private: } } + // MARK: - Resettable. + + void soft_reset() final { + m6809_.template set(true); + memory_.reset(); + } + // MARK: - MappedKeyboardMachine. Thomson::MO::Keyboard::KeyboardMapper keyboard_mapper_; diff --git a/Machines/Thomson/MO/MemoryMap.hpp b/Machines/Thomson/MO/MemoryMap.hpp index e9aa80737..7d21b46fc 100644 --- a/Machines/Thomson/MO/MemoryMap.hpp +++ b/Machines/Thomson/MO/MemoryMap.hpp @@ -135,6 +135,21 @@ public: Memory::Fuzz(video_); } + void reset() { + page_video(false); + + cartridge_page_ = 0; + cartridge_page_ = 0; + rom_page_ = 0; + ram_page_ = 1; + basic_selection_ = false; + b000page_ = B000Page::Empty; + + access_mode_ = AccessMode::LightPen; + update_commutable_ram(); + update_commutable_rom(); + } + // MARK: - ROM installation and connection for video. void set_rom(const std::vector &rom) {