From 7d7aa2f5d5a85af15561ee43473b3cac123cd4f4 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 26 Aug 2017 14:37:03 -0400 Subject: [PATCH] Eliminates repetition of the unpacking of register 3 into a horizontal sync count. --- Components/6845/CRTC6845.hpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Components/6845/CRTC6845.hpp b/Components/6845/CRTC6845.hpp index f8a60e17c..ecc468da1 100644 --- a/Components/6845/CRTC6845.hpp +++ b/Components/6845/CRTC6845.hpp @@ -87,16 +87,17 @@ template class CRTC6845 { void run_for(Cycles cycles) { int cyles_remaining = cycles.as_int(); while(cyles_remaining--) { - // check for end of horizontal sync - if(bus_state_.hsync) { - hsync_counter_ = (hsync_counter_ + 1) & 15; - bus_state_.hsync = hsync_counter_ != (registers_[3] & 15); - } - // check for start of horizontal sync if(character_counter_ == registers_[2]) { hsync_counter_ = 0; - if(registers_[3] & 15) bus_state_.hsync = true; + 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