summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/adc0844.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/adc0844.cpp')
-rw-r--r--src/devices/machine/adc0844.cpp30
1 files changed, 6 insertions, 24 deletions
diff --git a/src/devices/machine/adc0844.cpp b/src/devices/machine/adc0844.cpp
index c3616035927..1f745041138 100644
--- a/src/devices/machine/adc0844.cpp
+++ b/src/devices/machine/adc0844.cpp
@@ -31,7 +31,7 @@ DEFINE_DEVICE_TYPE(ADC0848, adc0848_device, "adc0848", "ADC0848 A/D Converter")
adc0844_device::adc0844_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
m_intr_cb(*this),
- m_ch1_cb(*this), m_ch2_cb(*this), m_ch3_cb(*this), m_ch4_cb(*this),
+ m_ch1_cb(*this, 0xff), m_ch2_cb(*this, 0xff), m_ch3_cb(*this, 0xff), m_ch4_cb(*this, 0xff),
m_conversion_timer(nullptr),
m_channel(0x0f),
m_result(0xff)
@@ -49,7 +49,7 @@ adc0844_device::adc0844_device(const machine_config &mconfig, const char *tag, d
adc0848_device::adc0848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
adc0844_device(mconfig, ADC0848, tag, owner, clock),
- m_ch5_cb(*this), m_ch6_cb(*this), m_ch7_cb(*this), m_ch8_cb(*this)
+ m_ch5_cb(*this, 0xff), m_ch6_cb(*this, 0xff), m_ch7_cb(*this, 0xff), m_ch8_cb(*this, 0xff)
{
}
@@ -59,32 +59,14 @@ adc0848_device::adc0848_device(const machine_config &mconfig, const char *tag, d
void adc0844_device::device_start()
{
- // resolve callbacks
- m_intr_cb.resolve_safe();
- m_ch1_cb.resolve_safe(0xff);
- m_ch2_cb.resolve_safe(0xff);
- m_ch3_cb.resolve_safe(0xff);
- m_ch4_cb.resolve_safe(0xff);
-
// allocate timers
- m_conversion_timer = timer_alloc();
+ m_conversion_timer = timer_alloc(FUNC(adc0844_device::conversion_complete), this);
// register for save states
save_item(NAME(m_channel));
save_item(NAME(m_result));
}
-void adc0848_device::device_start()
-{
- adc0844_device::device_start();
-
- // resolve callbacks
- m_ch5_cb.resolve_safe(0xff);
- m_ch6_cb.resolve_safe(0xff);
- m_ch7_cb.resolve_safe(0xff);
- m_ch8_cb.resolve_safe(0xff);
-}
-
//-------------------------------------------------
// clamp - restrict value to 0..255
//-------------------------------------------------
@@ -100,10 +82,10 @@ uint8_t adc0844_device::clamp(int value)
}
//-------------------------------------------------
-// device_timer - handler timer events
+// conversion_complete - finish ADC conversion
//-------------------------------------------------
-void adc0844_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+TIMER_CALLBACK_MEMBER(adc0844_device::conversion_complete)
{
switch (m_channel)
{
@@ -132,7 +114,7 @@ void adc0844_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_intr_cb(ASSERT_LINE);
}
-void adc0848_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+TIMER_CALLBACK_MEMBER(adc0848_device::conversion_complete)
{
switch (m_channel)
{