summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/r10788.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/r10788.cpp')
-rw-r--r--src/devices/machine/r10788.cpp30
1 files changed, 6 insertions, 24 deletions
diff --git a/src/devices/machine/r10788.cpp b/src/devices/machine/r10788.cpp
index f4b0ac810ab..fd8e69c9b3c 100644
--- a/src/devices/machine/r10788.cpp
+++ b/src/devices/machine/r10788.cpp
@@ -40,7 +40,7 @@
**********************************************************************/
#include "emu.h"
-#include "machine/r10788.h"
+#include "r10788.h"
//#define VERBOSE 1
#include "logmacro.h"
@@ -67,8 +67,6 @@ r10788_device::r10788_device(const machine_config &mconfig, const char *tag, dev
*/
void r10788_device::device_start()
{
- m_display.resolve();
-
save_item(NAME(m_reg));
save_item(NAME(m_ktr));
save_item(NAME(m_kts));
@@ -80,7 +78,7 @@ void r10788_device::device_start()
save_item(NAME(m_io_counter));
save_item(NAME(m_scan_counter));
- m_timer = timer_alloc(TIMER_DISPLAY);
+ m_timer = timer_alloc(FUNC(r10788_device::display_update), this);
// recurring timer every 36 cycles
m_timer->adjust(clocks_to_attotime(36), 0, clocks_to_attotime(36));
}
@@ -102,27 +100,11 @@ void r10788_device::device_reset()
}
-/**
- * @brief r10788_device::device_timer timer event callback
- * @param timer emu_timer which fired
- * @param id timer identifier
- * @param param parameter
- * @param ptr pointer parameter
- */
-void r10788_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+TIMER_CALLBACK_MEMBER(r10788_device::display_update)
{
- uint8_t data;
- switch (id)
- {
- case TIMER_DISPLAY:
- data = (m_reg[0][m_scan_counter] & m_mask_a) +
- 16 * (m_reg[1][m_scan_counter] & m_mask_b);
- LOG("%s: scan counter:%2d data:%02x\n", __FUNCTION__, m_scan_counter, data);
- m_display(m_scan_counter, data, 0xff);
- break;
- default:
- LOG("%s: invalid timer id:%d\n", __FUNCTION__, id);
- }
+ uint8_t data = ((m_reg[1][m_scan_counter] & m_mask_b) << 4) | (m_reg[0][m_scan_counter] & m_mask_a);
+ LOG("display_update: scan counter:%2d data:%02x\n", m_scan_counter, data);
+ m_display(m_scan_counter, data, 0xff);
m_scan_counter = (m_scan_counter + 1) % 16;
}