summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/spectrum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/spectrum.cpp')
-rw-r--r--src/mame/drivers/spectrum.cpp29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp
index b99227983df..b13b8f7b287 100644
--- a/src/mame/drivers/spectrum.cpp
+++ b/src/mame/drivers/spectrum.cpp
@@ -737,6 +737,8 @@ void spectrum_state::machine_reset()
m_port_fe_data = -1;
m_port_7ffd_data = -1;
m_port_1ffd_data = -1;
+ m_irq_on_timer->adjust(attotime::never);
+ m_irq_off_timer->adjust(attotime::never);
}
/* F4 Character Displayer */
@@ -755,27 +757,22 @@ static GFXDECODE_START( gfx_spectrum )
GFXDECODE_ENTRY( "maincpu", 0x3d00, spectrum_charlayout, 7, 8 )
GFXDECODE_END
-void spectrum_state::device_timer(emu_timer &timer, device_timer_id id, int param)
+TIMER_CALLBACK_MEMBER(spectrum_state::irq_on)
{
- switch (id)
- {
- case TIMER_IRQ_ON:
- m_int_at = m_maincpu->total_cycles();
- m_int_at -= m_maincpu->attotime_to_cycles(m_maincpu->local_time() - machine().time());
- m_maincpu->set_input_line(0, ASSERT_LINE);
- m_irq_off_timer->adjust(m_maincpu->clocks_to_attotime(32));
- break;
- case TIMER_IRQ_OFF:
- m_maincpu->set_input_line(0, CLEAR_LINE);
- break;
- default:
- throw emu_fatalerror("Unknown id in spectrum_state::device_timer");
- }
+ m_int_at = m_maincpu->total_cycles();
+ m_int_at -= m_maincpu->attotime_to_cycles(m_maincpu->local_time() - machine().time());
+ m_maincpu->set_input_line(0, ASSERT_LINE);
+ m_irq_off_timer->adjust(m_maincpu->clocks_to_attotime(32));
+}
+
+TIMER_CALLBACK_MEMBER(spectrum_state::irq_off)
+{
+ m_maincpu->set_input_line(0, CLEAR_LINE);
}
INTERRUPT_GEN_MEMBER(spectrum_state::spec_interrupt)
{
- timer_set(m_screen->time_until_pos(0, get_screen_area().left()), TIMER_IRQ_ON);
+ m_irq_on_timer->adjust(m_screen->time_until_pos(0, get_screen_area().left()));
}
void spectrum_state::spectrum_common(machine_config &config)