diff options
Diffstat (limited to 'src/mame/drivers/s7.cpp')
-rw-r--r-- | src/mame/drivers/s7.cpp | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp index ae674f92c9b..34c667092f3 100644 --- a/src/mame/drivers/s7.cpp +++ b/src/mame/drivers/s7.cpp @@ -115,7 +115,8 @@ public: protected: virtual void machine_start() override; virtual void machine_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param) override; + + TIMER_CALLBACK_MEMBER(irq_timer); private: void dig0_w(u8 data); @@ -153,7 +154,7 @@ private: bool m_memprotect = false; u8 m_game = 0U; emu_timer* m_irq_timer = nullptr; - static const device_timer_id TIMER_IRQ = 0; + required_device<cpu_device> m_maincpu; required_device<williams_s6_sound_device> m_s6sound; required_device<pia6821_device> m_pia21; @@ -624,26 +625,21 @@ WRITE_LINE_MEMBER( s7_state::pia_irq ) } } -void s7_state::device_timer(emu_timer &timer, device_timer_id id, int param) +TIMER_CALLBACK_MEMBER(s7_state::irq_timer) { - switch(id) + if(param == 1) + { + m_maincpu->set_input_line(M6808_IRQ_LINE, ASSERT_LINE); + m_irq_timer->adjust(attotime::from_ticks(32,3580000/4),0); + m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance + m_pia28->cb1_w(BIT(ioport("DIAGS")->read(), 3)); // Up/Down + } + else { - case TIMER_IRQ: - if(param == 1) - { - m_maincpu->set_input_line(M6808_IRQ_LINE, ASSERT_LINE); - m_irq_timer->adjust(attotime::from_ticks(32,3580000/4),0); - m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance - m_pia28->cb1_w(BIT(ioport("DIAGS")->read(), 3)); // Up/Down - } - else - { - m_maincpu->set_input_line(M6808_IRQ_LINE, CLEAR_LINE); - m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); - m_pia28->ca1_w(1); - m_pia28->cb1_w(1); - } - break; + m_maincpu->set_input_line(M6808_IRQ_LINE, CLEAR_LINE); + m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); + m_pia28->ca1_w(1); + m_pia28->cb1_w(1); } } @@ -662,7 +658,7 @@ void s7_state::machine_start() save_item(NAME(m_game)); save_item(NAME(m_comma)); - m_irq_timer = timer_alloc(TIMER_IRQ); + m_irq_timer = timer_alloc(FUNC(s7_state::irq_timer), this); m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); subdevice<nvram_device>("nvram")->set_base(m_nvram, sizeof(m_nvram)); } |