mirror of
https://github.com/holub/mame
synced 2025-06-01 18:41:47 +03:00
m6801: fix new regression with eat_cycles
This commit is contained in:
parent
036777b70e
commit
75818fcbd3
@ -898,8 +898,20 @@ void hd6301x_cpu_device::increment_counter(int amount)
|
|||||||
|
|
||||||
void m6801_cpu_device::eat_cycles()
|
void m6801_cpu_device::eat_cycles()
|
||||||
{
|
{
|
||||||
while (m_icount > 0)
|
int cycles_to_eat = std::min(int(m_timer_next - CTD), m_icount);
|
||||||
|
if (cycles_to_eat > 0)
|
||||||
|
increment_counter(cycles_to_eat);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hd6301x_cpu_device::eat_cycles()
|
||||||
|
{
|
||||||
|
if (BIT(m_tcsr3, 4))
|
||||||
|
{
|
||||||
|
while (m_icount > 0 && m_wai_state & (M6800_WAI | M6800_SLP))
|
||||||
increment_counter(1);
|
increment_counter(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m6801_cpu_device::eat_cycles();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cleanup high-word of counters */
|
/* cleanup high-word of counters */
|
||||||
|
@ -400,6 +400,7 @@ protected:
|
|||||||
virtual void check_irq2() override;
|
virtual void check_irq2() override;
|
||||||
virtual void set_timer_event() override;
|
virtual void set_timer_event() override;
|
||||||
virtual void modified_counters() override;
|
virtual void modified_counters() override;
|
||||||
|
virtual void eat_cycles() override;
|
||||||
virtual void increment_counter(int amount) override;
|
virtual void increment_counter(int amount) override;
|
||||||
virtual void check_timer_event() override;
|
virtual void check_timer_event() override;
|
||||||
virtual void cleanup_counters() override;
|
virtual void cleanup_counters() override;
|
||||||
|
Loading…
Reference in New Issue
Block a user