diff --git a/Components/6845/CRTC6845.hpp b/Components/6845/CRTC6845.hpp index ecc468da1..fea89eeb1 100644 --- a/Components/6845/CRTC6845.hpp +++ b/Components/6845/CRTC6845.hpp @@ -87,19 +87,6 @@ template class CRTC6845 { void run_for(Cycles cycles) { int cyles_remaining = cycles.as_int(); while(cyles_remaining--) { - // check for start of horizontal sync - if(character_counter_ == registers_[2]) { - hsync_counter_ = 0; - bus_state_.hsync = true; - } - - // check for end of horizontal sync; note that a sync time of zero will result in an immediate - // cancellation of the plan to perform sync - if(bus_state_.hsync) { - bus_state_.hsync = hsync_counter_ != (registers_[3] & 15); - hsync_counter_ = (hsync_counter_ + 1) & 15; - } - // check for end of visible characters if(character_counter_ == registers_[1]) { // TODO: consider skew in character_is_visible_. Or maybe defer until perform_bus_cycle? @@ -120,6 +107,19 @@ template class CRTC6845 { character_counter_++; } + // check for start of horizontal sync + if(character_counter_ == registers_[2]) { + hsync_counter_ = 0; + bus_state_.hsync = true; + } + + // check for end of horizontal sync; note that a sync time of zero will result in an immediate + // cancellation of the plan to perform sync + if(bus_state_.hsync) { + bus_state_.hsync = hsync_counter_ != (registers_[3] & 15); + hsync_counter_ = (hsync_counter_ + 1) & 15; + } + perform_bus_cycle_phase2(); } }