summaryrefslogtreecommitdiffstats
path: root/src/mame/machine/cuda.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/cuda.cpp')
-rw-r--r--src/mame/machine/cuda.cpp48
1 files changed, 23 insertions, 25 deletions
diff --git a/src/mame/machine/cuda.cpp b/src/mame/machine/cuda.cpp
index 39cad3032c0..d91112fe5fb 100644
--- a/src/mame/machine/cuda.cpp
+++ b/src/mame/machine/cuda.cpp
@@ -395,8 +395,8 @@ void cuda_device::device_start()
write_via_clock.resolve_safe();
write_via_data.resolve_safe();
- m_timer = timer_alloc(0);
- m_prog_timer = timer_alloc(1);
+ m_timer = timer_alloc(FUNC(cuda_device::seconds_tick), this);
+ m_prog_timer = timer_alloc(FUNC(cuda_device::timer_tick), this);
save_item(NAME(ddrs[0]));
save_item(NAME(ddrs[1]));
save_item(NAME(ddrs[2]));
@@ -457,37 +457,35 @@ void cuda_device::device_reset()
last_adb = 0;
}
-void cuda_device::device_timer(emu_timer &timer, device_timer_id id, int param)
+TIMER_CALLBACK_MEMBER(cuda_device::seconds_tick)
{
- if (id == 0)
+ onesec |= 0x40;
+
+ if (onesec & 0x10)
{
- onesec |= 0x40;
+ m_maincpu->set_input_line(M68HC05EG_INT_CPI, ASSERT_LINE);
+ }
+}
- if (onesec & 0x10)
- {
- m_maincpu->set_input_line(M68HC05EG_INT_CPI, ASSERT_LINE);
- }
+TIMER_CALLBACK_MEMBER(cuda_device::timer_tick)
+{
+ timer_ctrl |= 0x80;
+
+ if (timer_ctrl & 0x20)
+ {
+ m_maincpu->set_input_line(M68HC05EG_INT_TIMER, ASSERT_LINE);
}
- else
+
+ ripple_counter--;
+ if (ripple_counter <= 0)
{
- timer_ctrl |= 0x80;
+ timer_ctrl |= 0x40;
- if (timer_ctrl & 0x20)
- {
- m_maincpu->set_input_line(M68HC05EG_INT_TIMER, ASSERT_LINE);
- }
+ ripple_counter = timer_counter;
- ripple_counter--;
- if (ripple_counter <= 0)
+ if (timer_ctrl & 0x10)
{
- timer_ctrl |= 0x40;
-
- ripple_counter = timer_counter;
-
- if (timer_ctrl & 0x10)
- {
- m_maincpu->set_input_line(M68HC05EG_INT_TIMER, ASSERT_LINE);
- }
+ m_maincpu->set_input_line(M68HC05EG_INT_TIMER, ASSERT_LINE);
}
}
}