From bd0c65cb911455308c4f7f7010807d5da6ea5ca5 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 4 Jan 2010 13:05:45 +0000 Subject: [PATCH] [PIT8253] Update PIT counter even if there was no elapsed cycles (this only affects fast drivers like at586 in MESS) --- src/emu/machine/pit8253.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/emu/machine/pit8253.c b/src/emu/machine/pit8253.c index b3529ec7712..e8ea08eb52a 100644 --- a/src/emu/machine/pit8253.c +++ b/src/emu/machine/pit8253.c @@ -266,10 +266,10 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, } else { - if (elapsed_cycles > 0 && timer->phase == 1) + if (elapsed_cycles >= 0 && timer->phase == 1) { /* Counter load cycle */ - --elapsed_cycles; + if (elapsed_cycles > 0) --elapsed_cycles; timer->phase = 2; load_counter_value( device, timer ); } @@ -327,10 +327,10 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, Gate rising-edge sensitive only. Rising edge initiates counting and resets output after next clock. */ - if ( elapsed_cycles > 0 && timer->phase == 1 ) + if ( elapsed_cycles >= 0 && timer->phase == 1 ) { /* Counter load cycle, output goes low */ - --elapsed_cycles; + if (elapsed_cycles > 0) --elapsed_cycles; timer->phase = 2; load_counter_value( device, timer ); set_output( device, timer, 0 ); @@ -391,9 +391,9 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, } else { - if ( elapsed_cycles > 0 && timer->phase == 1 ) + if ( elapsed_cycles >= 0 && timer->phase == 1 ) { - --elapsed_cycles; + if (elapsed_cycles > 0) --elapsed_cycles; timer->phase = 2; load_counter_value( device, timer ); } @@ -412,10 +412,10 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, } } - if ( elapsed_cycles > 0 && timer->phase == 3 ) + if ( elapsed_cycles >= 0 && timer->phase == 3 ) { /* Reload counter, output goes high */ - --elapsed_cycles; + if (elapsed_cycles > 0) --elapsed_cycles; timer->phase = 2; load_counter_value( device, timer ); adjusted_value = adjusted_count( bcd, timer->value ); @@ -468,7 +468,7 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, } else { - if ( elapsed_cycles > 0 && timer->phase == 1 ) + if ( elapsed_cycles >= 0 && timer->phase == 1 ) { --elapsed_cycles; timer->phase = 2; @@ -546,7 +546,7 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer, } else { - if (elapsed_cycles > 0 && timer->phase == 1) + if (elapsed_cycles >= 0 && timer->phase == 1) { --elapsed_cycles; timer->phase = 2;