diff options
Diffstat (limited to 'src/devices/machine/tms5501.cpp')
-rw-r--r-- | src/devices/machine/tms5501.cpp | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/src/devices/machine/tms5501.cpp b/src/devices/machine/tms5501.cpp index 43d30a2c2d0..f5844d1c8bf 100644 --- a/src/devices/machine/tms5501.cpp +++ b/src/devices/machine/tms5501.cpp @@ -88,11 +88,11 @@ void tms5501_device::device_start() m_write_xo.resolve_safe(); // create timers - m_timer[TIMER_1] = timer_alloc(TIMER_1); - m_timer[TIMER_2] = timer_alloc(TIMER_2); - m_timer[TIMER_3] = timer_alloc(TIMER_3); - m_timer[TIMER_4] = timer_alloc(TIMER_4); - m_timer[TIMER_5] = timer_alloc(TIMER_5); + m_timer[TIMER_1] = timer_alloc(FUNC(tms5501_device::timer_expired), this); + m_timer[TIMER_2] = timer_alloc(FUNC(tms5501_device::timer_expired), this); + m_timer[TIMER_3] = timer_alloc(FUNC(tms5501_device::timer_expired), this); + m_timer[TIMER_4] = timer_alloc(FUNC(tms5501_device::timer_expired), this); + m_timer[TIMER_5] = timer_alloc(FUNC(tms5501_device::timer_expired), this); // state saving save_item(NAME(m_rb)); @@ -122,38 +122,22 @@ void tms5501_device::device_reset() //------------------------------------------------- -// device_timer - handle timer events +// timer_expired - //------------------------------------------------- -void tms5501_device::device_timer(emu_timer &timer, device_timer_id id, int param) +TIMER_CALLBACK_MEMBER(tms5501_device::timer_expired) { - switch (id) + if (param == TIMER_5) { - case TIMER_1: - set_interrupt(IRQ_TMR1); - break; - - case TIMER_2: - set_interrupt(IRQ_TMR2); - break; - - case TIMER_3: - set_interrupt(IRQ_TMR3); - break; - - case TIMER_4: - set_interrupt(IRQ_TMR4); - break; - - case TIMER_5: if (!(m_cmd & CMD_XI7)) { set_interrupt(IRQ_TMR5); } - break; - - default: - break; + } + else + { + static uint8_t const s_irq_ids[4] = { IRQ_TMR1, IRQ_TMR2, IRQ_TMR3, IRQ_TMR4 }; + set_interrupt(s_irq_ids[param]); } } @@ -406,7 +390,7 @@ void tms5501_device::tmr_w(offs_t offset, uint8_t data) { if (LOG) logerror("TMS5501 '%s' Timer %u %02x\n", tag(), offset, data); - m_timer[offset]->adjust(attotime::from_double((double) data / (clock() / 128.0))); + m_timer[offset]->adjust(attotime::from_double((double) data / (clock() / 128.0)), (int)offset); } |