mirror of
https://github.com/holub/mame
synced 2025-05-23 14:19:01 +03:00
[PIT8253] Update PIT counter even if there was no elapsed cycles (this only affects fast drivers like at586 in MESS)
This commit is contained in:
parent
200b21dff7
commit
bd0c65cb91
@ -266,10 +266,10 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (elapsed_cycles > 0 && timer->phase == 1)
|
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||||
{
|
{
|
||||||
/* Counter load cycle */
|
/* Counter load cycle */
|
||||||
--elapsed_cycles;
|
if (elapsed_cycles > 0) --elapsed_cycles;
|
||||||
timer->phase = 2;
|
timer->phase = 2;
|
||||||
load_counter_value( device, timer );
|
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.
|
Gate rising-edge sensitive only.
|
||||||
Rising edge initiates counting and resets output after next clock. */
|
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 */
|
/* Counter load cycle, output goes low */
|
||||||
--elapsed_cycles;
|
if (elapsed_cycles > 0) --elapsed_cycles;
|
||||||
timer->phase = 2;
|
timer->phase = 2;
|
||||||
load_counter_value( device, timer );
|
load_counter_value( device, timer );
|
||||||
set_output( device, timer, 0 );
|
set_output( device, timer, 0 );
|
||||||
@ -391,9 +391,9 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer,
|
|||||||
}
|
}
|
||||||
else
|
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;
|
timer->phase = 2;
|
||||||
load_counter_value( device, timer );
|
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 */
|
/* Reload counter, output goes high */
|
||||||
--elapsed_cycles;
|
if (elapsed_cycles > 0) --elapsed_cycles;
|
||||||
timer->phase = 2;
|
timer->phase = 2;
|
||||||
load_counter_value( device, timer );
|
load_counter_value( device, timer );
|
||||||
adjusted_value = adjusted_count( bcd, timer->value );
|
adjusted_value = adjusted_count( bcd, timer->value );
|
||||||
@ -468,7 +468,7 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( elapsed_cycles > 0 && timer->phase == 1 )
|
if ( elapsed_cycles >= 0 && timer->phase == 1 )
|
||||||
{
|
{
|
||||||
--elapsed_cycles;
|
--elapsed_cycles;
|
||||||
timer->phase = 2;
|
timer->phase = 2;
|
||||||
@ -546,7 +546,7 @@ static void simulate2(const device_config *device, struct pit8253_timer *timer,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (elapsed_cycles > 0 && timer->phase == 1)
|
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||||
{
|
{
|
||||||
--elapsed_cycles;
|
--elapsed_cycles;
|
||||||
timer->phase = 2;
|
timer->phase = 2;
|
||||||
|
Loading…
Reference in New Issue
Block a user