diff --git a/Machines/Oric/Microdisc.cpp b/Machines/Oric/Microdisc.cpp index e5f248fbc..344da6006 100644 --- a/Machines/Oric/Microdisc.cpp +++ b/Machines/Oric/Microdisc.cpp @@ -104,12 +104,12 @@ void Microdisc::set_head_load_request(bool head_load) { } } -void Microdisc::run_for_cycles(unsigned int number_of_cycles) { +void Microdisc::run_for(const Cycles &cycles) { if(head_load_request_counter_ < head_load_request_counter_target) { - head_load_request_counter_ += number_of_cycles; + head_load_request_counter_ += cycles.as_int(); if(head_load_request_counter_ >= head_load_request_counter_target) set_head_loaded(true); } - WD::WD1770::run_for(Cycles((int)number_of_cycles)); + WD::WD1770::run_for(cycles); } bool Microdisc::get_drive_is_ready() { diff --git a/Machines/Oric/Microdisc.hpp b/Machines/Oric/Microdisc.hpp index d320c7721..a2a80a0a6 100644 --- a/Machines/Oric/Microdisc.hpp +++ b/Machines/Oric/Microdisc.hpp @@ -10,10 +10,11 @@ #define Microdisc_hpp #include "../../Components/1770/1770.hpp" +#include "../../Components/ClockReceiver.hpp" namespace Oric { -class Microdisc: public WD::WD1770 { +class Microdisc: public ClockReceiver, public WD::WD1770 { public: Microdisc(); @@ -24,7 +25,7 @@ class Microdisc: public WD::WD1770 { bool get_interrupt_request_line(); - void run_for_cycles(unsigned int number_of_cycles); + void run_for(const Cycles &cycles); enum PagingFlags { BASICDisable = (1 << 0), diff --git a/Machines/Oric/Oric.cpp b/Machines/Oric/Oric.cpp index 94f70180b..1f06466e7 100644 --- a/Machines/Oric/Oric.cpp +++ b/Machines/Oric/Oric.cpp @@ -131,7 +131,7 @@ unsigned int Machine::perform_bus_operation(CPU::MOS6502::BusOperation operation } via_.run_for_cycles(1); - if(microdisc_is_enabled_) microdisc_.run_for_cycles(8); + if(microdisc_is_enabled_) microdisc_.run_for(Cycles(8)); cycles_since_video_update_++; return 1; }