mirror of
https://github.com/holub/mame
synced 2025-05-28 08:33:05 +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()
|
||||
{
|
||||
while (m_icount > 0)
|
||||
increment_counter(1);
|
||||
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);
|
||||
}
|
||||
else
|
||||
m6801_cpu_device::eat_cycles();
|
||||
}
|
||||
|
||||
/* cleanup high-word of counters */
|
||||
|
@ -400,6 +400,7 @@ protected:
|
||||
virtual void check_irq2() override;
|
||||
virtual void set_timer_event() override;
|
||||
virtual void modified_counters() override;
|
||||
virtual void eat_cycles() override;
|
||||
virtual void increment_counter(int amount) override;
|
||||
virtual void check_timer_event() override;
|
||||
virtual void cleanup_counters() override;
|
||||
|
Loading…
Reference in New Issue
Block a user