summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/6840ptm.c
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2011-05-02 03:32:58 +0000
committer Aaron Giles <aaron@aarongiles.com>2011-05-02 03:32:58 +0000
commit722631601e2a98baf53f82a8059bcfece53b79f8 (patch)
treef94c5500663ebc6e3ec1c33b4852c24187607b5f /src/emu/machine/6840ptm.c
parentd2c1a70fc2be52d570a675f36d431eced28049f9 (diff)
Reimplemented devcb using delegates and classes. Unified the logic
for identifying targets and simplified the code. [Aaron Giles] I have some further ideas but this is a good midway point.
Diffstat (limited to 'src/emu/machine/6840ptm.c')
-rw-r--r--src/emu/machine/6840ptm.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/emu/machine/6840ptm.c b/src/emu/machine/6840ptm.c
index 41547ca1e13..dcc32e99f22 100644
--- a/src/emu/machine/6840ptm.c
+++ b/src/emu/machine/6840ptm.c
@@ -114,7 +114,7 @@ void ptm6840_device::device_start()
/* resolve callbacks */
for (int i = 0; i < 3; i++)
{
- devcb_resolve_write8(&m_out_func[i], &m_out_cb[i], this);
+ m_out_func[i].resolve(m_out_cb[i], *this);
}
for (int i = 0; i < 3; i++)
@@ -139,7 +139,7 @@ void ptm6840_device::device_start()
m_timer[i]->enable(false);
}
- devcb_resolve_write_line(&m_irq_func, &m_irq_cb, this);
+ m_irq_func.resolve(m_irq_cb, *this);
/* register for state saving */
save_item(NAME(m_lsb_buffer));
@@ -355,7 +355,7 @@ void ptm6840_device::update_interrupts()
m_status_reg &= ~0x80;
}
- devcb_call_write_line(&m_irq_func, m_IRQ);
+ m_irq_func(m_IRQ);
}
}
@@ -443,9 +443,9 @@ void ptm6840_device::reload_count(int idx)
if ((m_mode[idx] == 4) || (m_mode[idx] == 6))
{
m_output[idx] = 1;
- if (m_out_func[idx].write != NULL)
+ if (!m_out_func[idx].isnull())
{
- devcb_call_write8(&m_out_func[idx], 0, m_output[idx]);
+ m_out_func[idx](0, m_output[idx]);
}
}
@@ -569,7 +569,7 @@ WRITE8_DEVICE_HANDLER_TRAMPOLINE(ptm6840, ptm6840_write)
if (!(m_control_reg[idx] & 0x80 ))
{
/* Output cleared */
- devcb_call_write8(&m_out_func[idx], 0, 0);
+ m_out_func[idx](0, 0);
}
/* Reset? */
if (idx == 0 && (diffs & 0x01))
@@ -658,7 +658,7 @@ void ptm6840_device::ptm6840_timeout(int idx)
m_output[idx] = m_output[idx] ? 0 : 1;
PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx + 1, m_output[idx]));
- devcb_call_write8(&m_out_func[idx], 0, m_output[idx]);
+ m_out_func[idx](0, m_output[idx]);
}
if ((m_mode[idx] == 4)||(m_mode[idx] == 6))
{
@@ -667,7 +667,7 @@ void ptm6840_device::ptm6840_timeout(int idx)
m_output[idx] = 1;
PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx + 1, m_output[idx]));
- devcb_call_write8(&m_out_func[idx], 0, m_output[idx]);
+ m_out_func[idx](0, m_output[idx]);
/* No changes in output until reinit */
m_fired[idx] = 1;