summaryrefslogtreecommitdiffstats
path: root/src/mame/machine/sgi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/sgi.cpp')
-rw-r--r--src/mame/machine/sgi.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/mame/machine/sgi.cpp b/src/mame/machine/sgi.cpp
index 21eb109832d..0b943ae4d90 100644
--- a/src/mame/machine/sgi.cpp
+++ b/src/mame/machine/sgi.cpp
@@ -86,10 +86,10 @@ void sgi_mc_device::device_start()
m_sys_id = 0x03; // rev. C MC
m_sys_id |= m_eisa_present() << 4;
- m_rpss_timer = timer_alloc(TIMER_RPSS);
+ m_rpss_timer = timer_alloc(FUNC(sgi_mc_device::rpss_tick), this);
m_rpss_timer->adjust(attotime::never);
- m_dma_timer = timer_alloc(TIMER_DMA);
+ m_dma_timer = timer_alloc(FUNC(sgi_mc_device::perform_dma), this);
m_dma_timer->adjust(attotime::never);
save_item(NAME(m_cpu_control));
@@ -211,7 +211,7 @@ uint32_t sgi_mc_device::dma_translate(uint32_t address)
return 0;
}
-void sgi_mc_device::dma_immediate()
+TIMER_CALLBACK_MEMBER(sgi_mc_device::perform_dma)
{
uint32_t memory_addr = m_dma_mem_addr;
uint32_t linecount = get_line_count();
@@ -721,19 +721,12 @@ void sgi_mc_device::write(offs_t offset, uint32_t data, uint32_t mem_mask)
}
}
-void sgi_mc_device::device_timer(emu_timer &timer, device_timer_id id, int param)
+TIMER_CALLBACK_MEMBER(sgi_mc_device::rpss_tick)
{
- if (id == TIMER_RPSS)
+ m_rpss_divide_counter--;
+ if (m_rpss_divide_counter < 0)
{
- m_rpss_divide_counter--;
- if (m_rpss_divide_counter < 0)
- {
- m_rpss_divide_counter = m_rpss_divide_count;
- m_rpss_counter += m_rpss_increment;
- }
- }
- else if (id == TIMER_DMA)
- {
- dma_immediate();
+ m_rpss_divide_counter = m_rpss_divide_count;
+ m_rpss_counter += m_rpss_increment;
}
}