summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/s7.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/s7.cpp')
-rw-r--r--src/mame/drivers/s7.cpp38
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));
}