diff --git a/Machines/Oric/Oric.cpp b/Machines/Oric/Oric.cpp index 9d8638bdc..806be3e35 100644 --- a/Machines/Oric/Oric.cpp +++ b/Machines/Oric/Oric.cpp @@ -268,20 +268,21 @@ private: }; template class ConcreteMachine: - public MachineTypes::TimedMachine, - public MachineTypes::ScanProducer, - public MachineTypes::AudioProducer, - public MachineTypes::JoystickMachine, - public MachineTypes::MediaTarget, - public MachineTypes::MappedKeyboardMachine, + public Activity::Source, public Configurable::Device, public CPU::MOS6502::BusHandler, - public MOS::MOS6522::IRQDelegatePortHandler::Delegate, - public Storage::Tape::BinaryTapePlayer::Delegate, public DiskController::Delegate, - public Activity::Source, + public Keyboard::SpecialKeyHandler, public Machine, - public Keyboard::SpecialKeyHandler { + public MachineTypes::AudioProducer, + public MachineTypes::JoystickMachine, + public MachineTypes::MappedKeyboardMachine, + public MachineTypes::MediaTarget, + public MachineTypes::ScanProducer, + public MachineTypes::SoftResettable, + public MachineTypes::TimedMachine, + public MOS::MOS6522::IRQDelegatePortHandler::Delegate, + public Storage::Tape::BinaryTapePlayer::Delegate { public: ConcreteMachine(const Analyser::Static::Oric::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) : @@ -628,6 +629,12 @@ public: m6502_.run_for(cycles); } + void soft_reset() final { + // Toggle the NMI line; it's edge activated. + m6502_.set_nmi_line(true); + m6502_.set_nmi_line(false); + } + // to satisfy MOS::MOS6522IRQDelegate::Delegate void mos6522_did_change_interrupt_status(void *) final { set_interrupt_line();