diff --git a/src/devices/machine/tms5501.cpp b/src/devices/machine/tms5501.cpp index 54d0855bbb0..f7581a30a72 100644 --- a/src/devices/machine/tms5501.cpp +++ b/src/devices/machine/tms5501.cpp @@ -58,7 +58,7 @@ void tms5501_device::io_map(address_map &map) tms5501_device::tms5501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, TMS5501, tag, owner, clock), device_serial_interface(mconfig, *this), - m_write_irq(*this), + m_write_int(*this), m_write_xmt(*this), m_read_xi(*this), m_write_xo(*this), @@ -82,7 +82,7 @@ tms5501_device::tms5501_device(const machine_config &mconfig, const char *tag, d void tms5501_device::device_start() { // resolve callbacks - m_write_irq.resolve_safe(); + m_write_int.resolve_safe(); m_write_xmt.resolve_safe(); m_read_xi.resolve_safe(0); m_write_xo.resolve_safe(); @@ -496,11 +496,11 @@ void tms5501_device::check_interrupt() if (m_cmd & CMD_IAE) { - m_write_irq(state); + m_write_int(state); } else { - m_write_irq(CLEAR_LINE); + m_write_int(CLEAR_LINE); } } diff --git a/src/devices/machine/tms5501.h b/src/devices/machine/tms5501.h index 8510ccaced3..17a1cd19b87 100644 --- a/src/devices/machine/tms5501.h +++ b/src/devices/machine/tms5501.h @@ -38,24 +38,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_TMS5501_IRQ_CALLBACK(_write) \ - downcast(*device).set_irq_wr_callback(DEVCB_##_write); - -#define MCFG_TMS5501_XMT_CALLBACK(_write) \ - downcast(*device).set_xmt_wr_callback(DEVCB_##_write); - -#define MCFG_TMS5501_XI_CALLBACK(_read) \ - downcast(*device).set_xi_rd_callback(DEVCB_##_read); - -#define MCFG_TMS5501_XO_CALLBACK(_write) \ - downcast(*device).set_xo_wr_callback(DEVCB_##_write); - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -69,10 +51,10 @@ public: // construction/destruction tms5501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward(cb)); } - template devcb_base &set_xmt_wr_callback(Object &&cb) { return m_write_xmt.set_callback(std::forward(cb)); } - template devcb_base &set_xi_rd_callback(Object &&cb) { return m_read_xi.set_callback(std::forward(cb)); } - template devcb_base &set_xo_wr_callback(Object &&cb) { return m_write_xo.set_callback(std::forward(cb)); } + auto int_callback() { return m_write_int.bind(); } + auto xmt_callback() { return m_write_xmt.bind(); } + auto xi_callback() { return m_read_xi.bind(); } + auto xo_callback() { return m_write_xo.bind(); } DECLARE_WRITE_LINE_MEMBER( rcv_w ); @@ -167,7 +149,7 @@ private: void set_interrupt(uint8_t mask); void check_interrupt(); - devcb_write_line m_write_irq; + devcb_write_line m_write_int; devcb_write_line m_write_xmt; devcb_read8 m_read_xi; devcb_write8 m_write_xo; diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp index 264048fab80..f1f2d75657d 100644 --- a/src/mame/drivers/compucolor.cpp +++ b/src/mame/drivers/compucolor.cpp @@ -419,11 +419,11 @@ MACHINE_CONFIG_START(compucolor2_state::compucolor2) blink.count_out_cb().set(m_mioc, FUNC(tms5501_device::sens_w)).bit(4); // devices - MCFG_DEVICE_ADD(TMS5501_TAG, TMS5501, XTAL(17'971'200)/9) - MCFG_TMS5501_IRQ_CALLBACK(INPUTLINE(I8080_TAG, I8085_INTR_LINE)) - MCFG_TMS5501_XMT_CALLBACK(WRITELINE(*this, compucolor2_state, xmt_w)) - MCFG_TMS5501_XI_CALLBACK(READ8(*this, compucolor2_state, xi_r)) - MCFG_TMS5501_XO_CALLBACK(WRITE8(*this, compucolor2_state, xo_w)) + TMS5501(config, m_mioc, XTAL(17'971'200)/9); + m_mioc->int_callback().set_inputline(I8080_TAG, I8085_INTR_LINE); + m_mioc->xmt_callback().set(FUNC(compucolor2_state::xmt_w)); + m_mioc->xi_callback().set(FUNC(compucolor2_state::xi_r)); + m_mioc->xo_callback().set(FUNC(compucolor2_state::xo_w)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(TMS5501_TAG, tms5501_device, rcv_w)) diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp index f46b2090c5b..1d004d21717 100644 --- a/src/mame/drivers/dai.cpp +++ b/src/mame/drivers/dai.cpp @@ -232,10 +232,10 @@ MACHINE_CONFIG_START(dai_state::dai) MCFG_CASSETTE_INTERFACE("dai_cass") /* tms5501 */ - MCFG_DEVICE_ADD("tms5501", TMS5501, 2000000) - MCFG_TMS5501_IRQ_CALLBACK(INPUTLINE("maincpu", I8085_INTR_LINE)) - MCFG_TMS5501_XI_CALLBACK(READ8(*this, dai_state, dai_keyboard_r)) - MCFG_TMS5501_XO_CALLBACK(WRITE8(*this, dai_state, dai_keyboard_w)) + TMS5501(config, m_tms5501, 2000000); + m_tms5501->int_callback().set_inputline("maincpu", I8085_INTR_LINE); + m_tms5501->xi_callback().set(FUNC(dai_state::dai_keyboard_r)); + m_tms5501->xo_callback().set(FUNC(dai_state::dai_keyboard_w)); /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp index af285312122..bed9565e0a0 100644 --- a/src/mame/drivers/mcb216.cpp +++ b/src/mame/drivers/mcb216.cpp @@ -128,9 +128,9 @@ MACHINE_CONFIG_START(mcb216_state::mcb216) MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, mcb216) - MCFG_DEVICE_ADD("tms5501", TMS5501, 8_MHz_XTAL / 4) - MCFG_TMS5501_XMT_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_TMS5501_IRQ_CALLBACK(INPUTLINE("maincpu", 0)) + TMS5501(config, m_tms5501, 8_MHz_XTAL / 4); + m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd)); + m_tms5501->int_callback().set_inputline("maincpu", 0); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("tms5501", tms5501_device, rcv_w)) @@ -145,9 +145,9 @@ MACHINE_CONFIG_START(mcb216_state::cb308) MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, cb308) - MCFG_DEVICE_ADD("tms5501", TMS5501, 8_MHz_XTAL / 4) - MCFG_TMS5501_XMT_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_TMS5501_IRQ_CALLBACK(INPUTLINE("maincpu", 0)) + TMS5501(config, m_tms5501, 8_MHz_XTAL / 4); + m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd)); + m_tms5501->int_callback().set_inputline("maincpu", 0); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("tms5501", tms5501_device, rcv_w))