summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-08-24 23:02:43 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2018-08-24 23:02:43 +0200
commit1e445ab370775fb1e62f135fdba902b02a5929cc (patch)
tree34e3a3a32c4244f52d45d33f40d2f8bdb9d0bf1d
parentdabf58e85af92a40c410fe502170a042b7e41f95 (diff)
z8536.cpp, z80sti.cpp: deMCGF; z80sio.cpp: started deMCFG (nw)
-rw-r--r--src/devices/bus/ecbbus/grip.cpp18
-rw-r--r--src/devices/machine/z80sti.h50
-rw-r--r--src/devices/machine/z8536.h42
-rw-r--r--src/mame/drivers/a7150.cpp16
-rw-r--r--src/mame/drivers/abc1600.cpp32
-rw-r--r--src/mame/drivers/abc80x.cpp22
-rw-r--r--src/mame/drivers/altos5.cpp10
-rw-r--r--src/mame/drivers/altos8600.cpp28
-rw-r--r--src/mame/drivers/apricotf.cpp6
-rw-r--r--src/mame/drivers/att4425.cpp26
-rw-r--r--src/mame/drivers/c900.cpp2
-rw-r--r--src/mame/drivers/ccs300.cpp10
-rw-r--r--src/mame/drivers/dlair.cpp4
-rw-r--r--src/mame/drivers/duet16.cpp4
-rw-r--r--src/mame/drivers/gridcomp.cpp2
-rw-r--r--src/mame/drivers/hk68v10.cpp2
-rw-r--r--src/mame/drivers/isbc.cpp30
-rw-r--r--src/mame/drivers/k8915.cpp8
-rw-r--r--src/mame/drivers/kaypro.cpp30
-rw-r--r--src/mame/drivers/m79152pc.cpp24
-rw-r--r--src/mame/drivers/mz2500.cpp2
-rw-r--r--src/mame/drivers/nanos.cpp8
-rw-r--r--src/mame/drivers/pcm.cpp2
-rw-r--r--src/mame/drivers/polyplay.cpp4
-rw-r--r--src/mame/drivers/proconn.cpp2
-rw-r--r--src/mame/drivers/rainbow.cpp18
-rw-r--r--src/mame/drivers/rt1715.cpp2
-rw-r--r--src/mame/drivers/ts803.cpp6
-rw-r--r--src/mame/drivers/unixpc.cpp8
29 files changed, 178 insertions, 240 deletions
diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp
index 776519555a7..7a98f57bb1d 100644
--- a/src/devices/bus/ecbbus/grip.cpp
+++ b/src/devices/bus/ecbbus/grip.cpp
@@ -148,7 +148,7 @@ void ecb_grip21_device::grip_io(address_map &map)
// AM_RANGE(0x15, 0x15) AM_WRITE(cc2_w)
map(0x16, 0x16).w(FUNC(ecb_grip21_device::flash_w));
map(0x17, 0x17).w(FUNC(ecb_grip21_device::vol1_w));
- map(0x20, 0x2f).rw(Z80STI_TAG, FUNC(z80sti_device::read), FUNC(z80sti_device::write));
+ map(0x20, 0x2f).rw(m_sti, FUNC(z80sti_device::read), FUNC(z80sti_device::write));
map(0x30, 0x30).rw(FUNC(ecb_grip21_device::lrs_r), FUNC(ecb_grip21_device::lrs_w));
map(0x40, 0x40).r(FUNC(ecb_grip21_device::stat_r));
map(0x50, 0x50).w(MC6845_TAG, FUNC(mc6845_device::address_w));
@@ -433,8 +433,8 @@ MACHINE_CONFIG_START(ecb_grip21_device::device_add_mconfig)
MCFG_MC6845_SHOW_BORDER_AREA(true)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(ecb_grip21_device, crtc_update_row)
- MCFG_MC6845_OUT_DE_CB(WRITELINE(Z80STI_TAG, z80sti_device, i1_w))
- MCFG_MC6845_OUT_CUR_CB(WRITELINE(Z80STI_TAG, z80sti_device, i1_w))
+ MCFG_MC6845_OUT_DE_CB(WRITELINE(m_sti, z80sti_device, i1_w))
+ MCFG_MC6845_OUT_CUR_CB(WRITELINE(m_sti, z80sti_device, i1_w))
// MCFG_MC6845_ADD(HD6345_TAG, HD6345, SCREEN_TAG, XTAL(16'000'000)/4)
@@ -444,12 +444,12 @@ MACHINE_CONFIG_START(ecb_grip21_device::device_add_mconfig)
MCFG_I8255_IN_PORTB_CB(READ8(*this, ecb_grip21_device, ppi_pb_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, ecb_grip21_device, ppi_pc_w))
- MCFG_DEVICE_ADD(Z80STI_TAG, Z80STI, XTAL(16'000'000)/4)
- MCFG_Z80STI_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
- MCFG_Z80STI_IN_GPIO_CB(READ8(*this, ecb_grip21_device, sti_gpio_r))
- MCFG_Z80STI_OUT_TBO_CB(WRITELINE(*this, ecb_grip21_device, speaker_w))
- MCFG_Z80STI_OUT_TCO_CB(WRITELINE(Z80STI_TAG, z80sti_device, tc_w))
- MCFG_Z80STI_OUT_TDO_CB(WRITELINE(Z80STI_TAG, z80sti_device, tc_w))
+ Z80STI(config, m_sti, XTAL(16'000'000)/4);
+ m_sti->out_int_cb().set_inputline(Z80_TAG, INPUT_LINE_IRQ0);
+ m_sti->in_gpio_cb().set(FUNC(ecb_grip21_device::sti_gpio_r));
+ m_sti->out_tbo_cb().set(FUNC(ecb_grip21_device::speaker_w));
+ m_sti->out_tco_cb().set(m_sti, FUNC(z80sti_device::tc_w));
+ m_sti->out_tdo_cb().set(m_sti, FUNC(z80sti_device::tc_w));
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, ecb_grip21_device, write_centronics_busy))
diff --git a/src/devices/machine/z80sti.h b/src/devices/machine/z80sti.h
index e0926a98dc0..521630dbe13 100644
--- a/src/devices/machine/z80sti.h
+++ b/src/devices/machine/z80sti.h
@@ -39,40 +39,6 @@
//**************************************************************************
-// DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_Z80STI_RXCLOCK(_clock) \
- downcast<z80sti_device &>(*device).set_rx_clock(_clock);
-
-#define MCFG_Z80STI_TXCLOCK(_clock) \
- downcast<z80sti_device &>(*device).set_tx_clock(_clock);
-
-#define MCFG_Z80STI_OUT_INT_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_IN_GPIO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_in_gpio_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_GPIO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_SO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_TAO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_TBO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_TCO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
-
-#define MCFG_Z80STI_OUT_TDO_CB(_devcb) \
- downcast<z80sti_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -86,14 +52,14 @@ public:
// construction/destruction
z80sti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_gpio_callback(Object &&cb) { return m_in_gpio_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
+ auto out_int_cb() { return m_out_int_cb.bind(); }
+ auto in_gpio_cb() { return m_in_gpio_cb.bind(); }
+ auto out_gpio_cb() { return m_out_gpio_cb.bind(); }
+ auto out_so_cb() { return m_out_so_cb.bind(); }
+ auto out_tao_cb() { return m_out_tao_cb.bind(); }
+ auto out_tbo_cb() { return m_out_tbo_cb.bind(); }
+ auto out_tco_cb() { return m_out_tco_cb.bind(); }
+ auto out_tdo_cb() { return m_out_tdo_cb.bind(); }
void set_rx_clock(int clock) { m_rx_clock = clock; }
void set_tx_clock(int clock) { m_tx_clock = clock; }
diff --git a/src/devices/machine/z8536.h b/src/devices/machine/z8536.h
index a0b0ab9b56c..19265344156 100644
--- a/src/devices/machine/z8536.h
+++ b/src/devices/machine/z8536.h
@@ -59,34 +59,6 @@
#include "machine/z80daisy.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_Z8536_IRQ_CALLBACK(_write) \
- downcast<z8536_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
-
-#define MCFG_Z8536_PA_IN_CALLBACK(_read) \
- downcast<z8536_device &>(*device).set_pa_rd_callback(DEVCB_##_read);
-
-#define MCFG_Z8536_PA_OUT_CALLBACK(_write) \
- downcast<z8536_device &>(*device).set_pa_wr_callback(DEVCB_##_write);
-
-#define MCFG_Z8536_PB_IN_CALLBACK(_read) \
- downcast<z8536_device &>(*device).set_pb_rd_callback(DEVCB_##_read);
-
-#define MCFG_Z8536_PB_OUT_CALLBACK(_write) \
- downcast<z8536_device &>(*device).set_pb_wr_callback(DEVCB_##_write);
-
-#define MCFG_Z8536_PC_IN_CALLBACK(_read) \
- downcast<z8536_device &>(*device).set_pc_rd_callback(DEVCB_##_read);
-
-#define MCFG_Z8536_PC_OUT_CALLBACK(_write) \
- downcast<z8536_device &>(*device).set_pc_wr_callback(DEVCB_##_write);
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -97,13 +69,13 @@ class cio_base_device : public device_t
{
public:
- template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pa_rd_callback(Object &&cb) { return m_read_pa.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pa_wr_callback(Object &&cb) { return m_write_pa.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pb_rd_callback(Object &&cb) { return m_read_pb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pb_wr_callback(Object &&cb) { return m_write_pb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pc_rd_callback(Object &&cb) { return m_read_pc.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_pc_wr_callback(Object &&cb) { return m_write_pc.set_callback(std::forward<Object>(cb)); }
+ auto irq_wr_cb() { return m_write_irq.bind(); }
+ auto pa_rd_cb() { return m_read_pa.bind(); }
+ auto pa_wr_cb() { return m_write_pa.bind(); }
+ auto pb_rd_cb() { return m_read_pb.bind(); }
+ auto pb_wr_cb() { return m_write_pb.bind(); }
+ auto pc_rd_cb() { return m_read_pc.bind(); }
+ auto pc_wr_cb() { return m_write_pc.bind(); }
DECLARE_WRITE_LINE_MEMBER( pa0_w ) { external_port_w(PORT_A, 0, state); }
DECLARE_WRITE_LINE_MEMBER( pa1_w ) { external_port_w(PORT_A, 1, state); }
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index c3051668f92..134c0984ad9 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -540,14 +540,14 @@ MACHINE_CONFIG_START(a7150_state::a7150)
m_ctc->zc_callback<0>().append(Z80SIO_TAG, FUNC(z80sio_device::txca_w));
m_ctc->zc_callback<1>().set(Z80SIO_TAG, FUNC(z80sio_device::rxtxcb_w));
- MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO, XTAL(16'000'000)/4)
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("gfxcpu", INPUT_LINE_IRQ0))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE(*this, a7150_state, kgs_iml_w))
-// MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE(*this, a7150_state, kgs_ifss_loopback_w))
+ z80sio_device& sio(Z80SIO(config, Z80SIO_TAG, XTAL(16'000'000)/4));
+ sio.out_int_callback().set_inputline(m_gfxcpu, INPUT_LINE_IRQ0);
+ sio.out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
+ sio.out_dtra_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
+ sio.out_rtsa_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
+ sio.out_txdb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
+ sio.out_dtrb_callback().set(FUNC(a7150_state::kgs_iml_w));
+ //sio.out_rtsb_callback().set(FUNC(a7150_state::kgs_ifss_loopback_w));
// V.24 port (graphics tablet)
MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "loopback")
diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp
index 4666e19c419..a064ca26307 100644
--- a/src/mame/drivers/abc1600.cpp
+++ b/src/mame/drivers/abc1600.cpp
@@ -921,20 +921,20 @@ MACHINE_CONFIG_START(abc1600_state::abc1600)
SCC8530(config, m_scc, 64_MHz_XTAL / 16);
m_scc->intrq_callback().set_inputline(MC68008P8_TAG, M68K_IRQ_5);
- MCFG_DEVICE_ADD(Z8536B1_TAG, Z8536, 64_MHz_XTAL / 16)
- MCFG_Z8536_IRQ_CALLBACK(INPUTLINE(MC68008P8_TAG, M68K_IRQ_2))
- MCFG_Z8536_PA_IN_CALLBACK(READ8(*this, abc1600_state, cio_pa_r))
- MCFG_Z8536_PB_IN_CALLBACK(READ8(*this, abc1600_state, cio_pb_r))
- MCFG_Z8536_PB_OUT_CALLBACK(WRITE8(*this, abc1600_state, cio_pb_w))
- MCFG_Z8536_PC_IN_CALLBACK(READ8(*this, abc1600_state, cio_pc_r))
- MCFG_Z8536_PC_OUT_CALLBACK(WRITE8(*this, abc1600_state, cio_pc_w))
+ Z8536(config, m_cio, 64_MHz_XTAL / 16);
+ m_cio->irq_wr_cb().set_inputline(MC68008P8_TAG, M68K_IRQ_2);
+ m_cio->pa_rd_cb().set(FUNC(abc1600_state::cio_pa_r));
+ m_cio->pb_rd_cb().set(FUNC(abc1600_state::cio_pb_r));
+ m_cio->pb_wr_cb().set(FUNC(abc1600_state::cio_pb_w));
+ m_cio->pc_rd_cb().set(FUNC(abc1600_state::cio_pc_r));
+ m_cio->pc_wr_cb().set(FUNC(abc1600_state::cio_pc_w));
MCFG_NMC9306_ADD(NMC9306_TAG)
MCFG_E0516_ADD(E050_C16PC_TAG, 32.768_kHz_XTAL)
MCFG_DEVICE_ADD(SAB1797_02P_TAG, FD1797, 64_MHz_XTAL / 64)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pb7_w))
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pb7_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this, abc1600_state, fdc_drq_w))
MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":0", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats)
@@ -952,18 +952,18 @@ MACHINE_CONFIG_START(abc1600_state::abc1600)
MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(WRITELINE(Z8470AB1_TAG, z80dart_device, dcdb_w))
MCFG_ABCBUS_SLOT_ADD("bus0i", abc1600bus_cards, nullptr)
- MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa7_w))
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa7_w))
MCFG_ABCBUS_SLOT_ADD("bus0x", abc1600bus_cards, nullptr)
- MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa6_w))
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa6_w))
MCFG_ABCBUS_SLOT_NMI_CALLBACK(WRITELINE(*this, abc1600_state, nmi_w))
- MCFG_ABCBUS_SLOT_XINT2_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa2_w))
- MCFG_ABCBUS_SLOT_XINT3_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa3_w))
- MCFG_ABCBUS_SLOT_XINT4_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa4_w))
- MCFG_ABCBUS_SLOT_XINT5_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa5_w))
+ MCFG_ABCBUS_SLOT_XINT2_CALLBACK(WRITELINE(m_cio, z8536_device, pa2_w))
+ MCFG_ABCBUS_SLOT_XINT3_CALLBACK(WRITELINE(m_cio, z8536_device, pa3_w))
+ MCFG_ABCBUS_SLOT_XINT4_CALLBACK(WRITELINE(m_cio, z8536_device, pa4_w))
+ MCFG_ABCBUS_SLOT_XINT5_CALLBACK(WRITELINE(m_cio, z8536_device, pa5_w))
MCFG_ABCBUS_SLOT_ADD("bus1", abc1600bus_cards, nullptr)
- MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa1_w))
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa1_w))
MCFG_ABCBUS_SLOT_ADD("bus2", abc1600bus_cards, "4105")
- MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(Z8536B1_TAG, z8536_device, pa0_w))
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa0_w))
//MCFG_ABCBUS_SLOT_PREN_CALLBACK(WRITELINE(Z8410AB1_2_TAG, z80dma_device, iei_w))
MCFG_ABCBUS_SLOT_TRRQ_CALLBACK(WRITELINE(Z8410AB1_2_TAG, z80dma_device, rdy_w))
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index 6d501a1eca6..74dfa9d2044 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -1067,14 +1067,14 @@ MACHINE_CONFIG_START(abc800_state::common)
m_ctc->zc_callback<2>().append(m_dart, FUNC(z80dart_device::txca_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CTC_TAG, abc800_state, ctc_tick, attotime::from_hz(ABC800_X01/2/2/2))
- MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO, ABC800_X01/2/2)
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE(*this, abc800_state, sio_txdb_w))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE(*this, abc800_state, sio_dtrb_w))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE(*this, abc800_state, sio_rtsb_w))
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
+ Z80SIO(config, m_sio, ABC800_X01/2/2);
+ m_sio->out_txda_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
+ m_sio->out_dtra_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
+ m_sio->out_rtsa_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
+ m_sio->out_txdb_callback().set(FUNC(abc800_state::sio_txdb_w));
+ m_sio->out_dtrb_callback().set(FUNC(abc800_state::sio_dtrb_w));
+ m_sio->out_rtsb_callback().set(FUNC(abc800_state::sio_rtsb_w));
+ m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(Z80DART_TAG, Z80DART, ABC800_X01/2/2)
MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
@@ -1093,9 +1093,9 @@ MACHINE_CONFIG_START(abc800_state::common)
MCFG_RS232_CTS_HANDLER(WRITELINE(Z80DART_TAG, z80dart_device, ctsa_w))
MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_sio, z80sio_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_sio, z80sio_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_sio, z80sio_device, ctsa_w))
MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, nullptr)
MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(WRITELINE(Z80DART_TAG, z80dart_device, rxb_w))
diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp
index 746039d0a6e..76b829df42e 100644
--- a/src/mame/drivers/altos5.cpp
+++ b/src/mame/drivers/altos5.cpp
@@ -445,14 +445,14 @@ MACHINE_CONFIG_START(altos5_state::altos5)
// Channel B - printer
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_DEVICE_ADD("sio", Z80SIO, 8_MHz_XTAL / 2)
+ z80sio_device& sio(Z80SIO(config, "sio", 8_MHz_XTAL / 2));
// Channel A - console #2
// WRDY connects to (altos5_state, fdc_intrq_w)
// Channel B - console #1
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ sio.out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ sio.out_dtrb_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ sio.out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts));
+ sio.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
z80ctc_device &ctc(Z80CTC(config, "ctc", 8_MHz_XTAL / 2));
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp
index f6b73c48c08..91e7e5800f8 100644
--- a/src/mame/drivers/altos8600.cpp
+++ b/src/mame/drivers/altos8600.cpp
@@ -757,24 +757,24 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
RAM(config, RAM_TAG).set_default_size("1M");//.set_extra_options("512K");
- MCFG_DEVICE_ADD("uart8274", I8274_NEW, 16_MHz_XTAL/4)
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232a", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232a", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232a", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232b", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232b", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir7_w))
+ I8274_NEW(config, m_uart8274, 16_MHz_XTAL/4);
+ m_uart8274->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
+ m_uart8274->out_dtra_callback().set("rs232a", FUNC(rs232_port_device::write_dtr));
+ m_uart8274->out_rtsa_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
+ m_uart8274->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
+ m_uart8274->out_dtrb_callback().set("rs232b", FUNC(rs232_port_device::write_dtr));
+ m_uart8274->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
+ m_uart8274->out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir7_w));
MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", i8274_new_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", i8274_new_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", i8274_new_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsa_w))
MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", i8274_new_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", i8274_new_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", i8274_new_device, ctsb_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsb_w))
MCFG_DEVICE_ADD("ppi", I8255A, 0)
diff --git a/src/mame/drivers/apricotf.cpp b/src/mame/drivers/apricotf.cpp
index 07cc1fb7153..a917824c7a0 100644
--- a/src/mame/drivers/apricotf.cpp
+++ b/src/mame/drivers/apricotf.cpp
@@ -369,8 +369,8 @@ MACHINE_CONFIG_START(f1_state::act_f1)
/* Devices */
MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0)
- MCFG_DEVICE_ADD(Z80SIO2_TAG, Z80SIO, 2500000)
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE("irqs", input_merger_device, in_w<0>))
+ Z80SIO(config, m_sio, 2500000);
+ m_sio->out_int_callback().set("irqs", FUNC(input_merger_device::in_w<0>));
MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 2500000)
MCFG_Z80CTC_INTR_CB(WRITELINE("irqs", input_merger_device, in_w<1>))
@@ -378,7 +378,7 @@ MACHINE_CONFIG_START(f1_state::act_f1)
MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, f1_state, ctc_z2_w))
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(Z80SIO2_TAG, z80sio_device, ctsa_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_sio, z80sio_device, ctsa_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mame/drivers/att4425.cpp b/src/mame/drivers/att4425.cpp
index d4fe1d767af..a73ea90542f 100644
--- a/src/mame/drivers/att4425.cpp
+++ b/src/mame/drivers/att4425.cpp
@@ -260,27 +260,27 @@ MACHINE_CONFIG_START(att4425_state::att4425)
MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL(32'000'000)) // XXX
MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
#ifdef notdef
- MCFG_Z80CTC_ZC0_CB(WRITELINE(Z80SIO_TAG, z80sio_device, rxca_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(Z80SIO_TAG, z80sio_device, txca_w))
- MCFG_Z80CTC_ZC2_CB(WRITELINE(Z80SIO_TAG, z80sio_device, rxtxcb_w))
+ MCFG_Z80CTC_ZC0_CB(WRITELINE(m_sio, z80sio_device, rxca_w))
+ MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(m_sio, z80sio_device, txca_w))
+ MCFG_Z80CTC_ZC2_CB(WRITELINE(m_sio, z80sio_device, rxtxcb_w))
#endif
- MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO, 4800) // XXX
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd))
+ Z80SIO(config, m_sio, 4800); // XXX
+ m_sio->out_int_callback().set_inputline(Z80_TAG, INPUT_LINE_IRQ0);
+ m_sio->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
+ m_sio->out_dtra_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
+ m_sio->out_rtsa_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
+ m_sio->out_txdb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
// host
MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "null_modem")
- MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_sio, z80sio_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_sio, z80sio_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_sio, z80sio_device, ctsa_w))
// aux printer?
MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, "printer")
- MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, rxb_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_sio, z80sio_device, rxb_w))
// XXX
MCFG_DEVICE_ADD("line_clock", CLOCK, 9600*64)
diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp
index b23960da184..8f7433e29ce 100644
--- a/src/mame/drivers/c900.cpp
+++ b/src/mame/drivers/c900.cpp
@@ -103,7 +103,7 @@ MACHINE_CONFIG_START(c900_state::c900)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_c900)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("cio", Z8036, 6'000'000)
+ Z8036(config, "cio", 6'000'000);
MCFG_DEVICE_ADD("scc", SCC8030, 6'000'000) // 5'850'000 is the ideal figure
/* Port B */
diff --git a/src/mame/drivers/ccs300.cpp b/src/mame/drivers/ccs300.cpp
index 3a1366331f9..089b178547c 100644
--- a/src/mame/drivers/ccs300.cpp
+++ b/src/mame/drivers/ccs300.cpp
@@ -129,11 +129,11 @@ MACHINE_CONFIG_START(ccs300_state::ccs300)
uart_clock.signal_handler().append("sio", FUNC(z80sio_device::rxca_w));
/* Devices */
- MCFG_DEVICE_ADD("sio", Z80SIO, XTAL(4'000'000))
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232", rs232_port_device, write_rts))
+ z80sio_device& sio(Z80SIO(config, "sio", XTAL(4'000'000)));
+ sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ sio.out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ sio.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ sio.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w))
diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp
index 9a93bc9c2c7..6c4aeafef13 100644
--- a/src/mame/drivers/dlair.cpp
+++ b/src/mame/drivers/dlair.cpp
@@ -777,8 +777,8 @@ MACHINE_CONFIG_START(dlair_state::dleuro)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80CTC_ZC0_CB(WRITELINE(*this, dlair_state, write_speaker))
- MCFG_DEVICE_ADD("sio", Z80SIO, MASTER_CLOCK_EURO/4 /* same as "maincpu" */)
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ z80sio_device& sio(Z80SIO(config, "sio", MASTER_CLOCK_EURO/4 /* same as "maincpu" */));
+ sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
// TODO: hook up tx and rx callbacks
MCFG_WATCHDOG_ADD("watchdog")
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index ef636f2dcfc..9908e3eab07 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -388,8 +388,8 @@ MACHINE_CONFIG_START(duet16_state::duet16)
itm.o3_callback().append("itm", FUNC(ptm6840_device::set_c2));
itm.irq_callback().set(m_tmint, FUNC(input_merger_device::in_w<0>));
- MCFG_DEVICE_ADD("sio", UPD7201_NEW, 8_MHz_XTAL / 2)
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE("pic", pic8259_device, ir1_w)) // INT5
+ upd7201_new_device& sio(UPD7201_NEW(config, "sio", 8_MHz_XTAL / 2));
+ sio.out_int_callback().set("pic", FUNC(pic8259_device::ir1_w)); // INT5
MCFG_DEVICE_ADD("kbusart", I8251, 8_MHz_XTAL / 4)
MCFG_I8251_TXD_HANDLER(WRITELINE("kbd", rs232_port_device, write_txd))
diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp
index 6c1995b4ed2..d18a022bd1b 100644
--- a/src/mame/drivers/gridcomp.cpp
+++ b/src/mame/drivers/gridcomp.cpp
@@ -421,7 +421,7 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101)
MCFG_IEEE488_REN_CALLBACK(WRITELINE("hpib", tms9914_device, ren_w))
MCFG_IEEE488_SLOT_ADD("ieee_rem", 0, remote488_devices, nullptr)
- MCFG_DEVICE_ADD("uart8274", I8274_NEW, XTAL(4'032'000))
+ I8274_NEW(config, m_uart8274, XTAL(4'032'000));
MCFG_DEVICE_ADD("modem", I8255, 0)
diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp
index b3a4bafc41f..e0641938d19 100644
--- a/src/mame/drivers/hk68v10.cpp
+++ b/src/mame/drivers/hk68v10.cpp
@@ -342,7 +342,7 @@ MACHINE_CONFIG_START(hk68v10_state::hk68v10)
MCFG_DEVICE_ADD("maincpu", M68010, 10_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP (hk68v10_mem)
- MCFG_DEVICE_ADD("cio", Z8536, SCC_CLOCK)
+ Z8536(config, "cio", SCC_CLOCK);
/* Terminal Port config */
MCFG_DEVICE_ADD("scc", SCC8530N, SCC_CLOCK)
diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp
index b20a9f0566b..ac51247f888 100644
--- a/src/mame/drivers/isbc.cpp
+++ b/src/mame/drivers/isbc.cpp
@@ -449,7 +449,7 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic_0", pic8259_device, ir0_w))
MCFG_PIT8253_CLK1(XTAL(22'118'400)/18)
// MCFG_PIT8253_OUT1_HANDLER(WRITELINE("uart8274", z80dart_device, rxtxcb_w))
- MCFG_PIT8253_OUT1_HANDLER(WRITELINE("uart8274", i8274_new_device, rxtxcb_w))
+ MCFG_PIT8253_OUT1_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxtxcb_w))
MCFG_PIT8253_CLK2(XTAL(22'118'400)/18)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, isbc_state, isbc286_tmr2_w))
@@ -477,15 +477,15 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_Z80DART_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts))
MCFG_Z80DART_OUT_INT_CB(WRITELINE(*this, isbc_state, isbc_uart8274_irq))
#else
- MCFG_DEVICE_ADD("uart8274", I8274_NEW, XTAL(16'000'000)/4)
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232a", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232a", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232a", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232b", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232b", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts))
+ I8274_NEW(config, m_uart8274, XTAL(16'000'000)/4);
+ m_uart8274->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
+ m_uart8274->out_dtra_callback().set("rs232a", FUNC(rs232_port_device::write_dtr));
+ m_uart8274->out_rtsa_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
+ m_uart8274->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
+ m_uart8274->out_dtrb_callback().set("rs232b", FUNC(rs232_port_device::write_dtr));
+ m_uart8274->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
// MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, isbc_state, isbc_uart8274_irq))
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE("pic_0", pic8259_device, ir6_w))
+ m_uart8274->out_int_callback().set("pic_0", FUNC(pic8259_device::ir6_w));
#endif
MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
@@ -494,9 +494,9 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", z80dart_device, dcda_w))
MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", z80dart_device, ctsa_w))
#else
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", i8274_new_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", i8274_new_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", i8274_new_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsa_w))
#endif
MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, "terminal")
@@ -505,9 +505,9 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", z80dart_device, dcdb_w))
MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", z80dart_device, ctsb_w))
#else
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", i8274_new_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", i8274_new_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", i8274_new_device, ctsb_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsb_w))
#endif
MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", isbc286_terminal)
diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp
index c28625d3584..d0c16e2f3be 100644
--- a/src/mame/drivers/k8915.cpp
+++ b/src/mame/drivers/k8915.cpp
@@ -158,10 +158,10 @@ MACHINE_CONFIG_START(k8915_state::k8915)
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL(4'915'200) / 2)
MCFG_Z80CTC_ZC2_CB(WRITELINE("sio", z80sio_device, rxtxcb_w))
- MCFG_DEVICE_ADD("sio", Z80SIO, XTAL(4'915'200) / 2)
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232", rs232_port_device, write_rts))
+ z80sio_device& sio(Z80SIO(config, "sio", XTAL(4'915'200) / 2));
+ sio.out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ sio.out_dtrb_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ sio.out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard")
MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxb_w))
diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp
index 24ec3ce48bf..27a26ff0b95 100644
--- a/src/mame/drivers/kaypro.cpp
+++ b/src/mame/drivers/kaypro.cpp
@@ -255,12 +255,12 @@ MACHINE_CONFIG_START(kaypro_state::kayproii)
MCFG_Z80PIO_IN_PA_CB(READ8(*this, kaypro_state, pio_system_r))
MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kaypro_state, kayproii_pio_system_w))
- MCFG_DEVICE_ADD("sio", Z80SIO, 20_MHz_XTAL / 8)
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("serial", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("serial", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("serial", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("kbd", kaypro_10_keyboard_device, txd_w))
+ z80sio_device& sio(Z80SIO(config, "sio", 20_MHz_XTAL / 8));
+ sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ sio.out_txda_callback().set("serial", FUNC(rs232_port_device::write_txd));
+ sio.out_dtra_callback().set("serial", FUNC(rs232_port_device::write_dtr));
+ sio.out_rtsa_callback().set("serial", FUNC(rs232_port_device::write_rts));
+ sio.out_txdb_callback().set("kbd", FUNC(kaypro_10_keyboard_device::txd_w));
MCFG_DEVICE_ADD("fdc", FD1793, 20_MHz_XTAL / 20)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, kaypro_state, fdc_intrq_w))
@@ -344,16 +344,16 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484)
serprn.rxd_handler().append("sio_2", FUNC(z80sio_device::synca_w));
serprn.cts_handler().set("sio_2", FUNC(z80sio_device::ctsa_w));
- MCFG_DEVICE_ADD("sio_1", Z80SIO, 16_MHz_XTAL / 4)
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // FIXME: use a combiner
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("modem", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("modem", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("modem", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("kbd", kaypro_10_keyboard_device, txd_w))
+ z80sio_device& sio_1(Z80SIO(config, "sio_1", 16_MHz_XTAL / 4));
+ sio_1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // FIXME: use a combiner
+ sio_1.out_txda_callback().set("modem", FUNC(rs232_port_device::write_txd));
+ sio_1.out_dtra_callback().set("modem", FUNC(rs232_port_device::write_dtr));
+ sio_1.out_rtsa_callback().set("modem", FUNC(rs232_port_device::write_rts));
+ sio_1.out_txdb_callback().set("kbd", FUNC(kaypro_10_keyboard_device::txd_w));
- MCFG_DEVICE_ADD("sio_2", Z80SIO, 16_MHz_XTAL / 4) /* extra sio for modem and printer */
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // FIXME: use a combiner
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("serprn", rs232_port_device, write_txd))
+ z80sio_device& sio_2(Z80SIO(config, "sio_2", 16_MHz_XTAL / 4)); /* extra sio for modem and printer */
+ sio_2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // FIXME: use a combiner
+ sio_2.out_txda_callback().set("serprn", FUNC(rs232_port_device::write_txd));
com8116_device &brg(COM8116(config, "brg", XTAL(5'068'800))); // WD1943, SMC8116
brg.fr_handler().set("sio_1", FUNC(z80sio_device::rxca_w));
diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp
index efab0bd4678..c5f9728593a 100644
--- a/src/mame/drivers/m79152pc.cpp
+++ b/src/mame/drivers/m79152pc.cpp
@@ -161,21 +161,21 @@ MACHINE_CONFIG_START(m79152pc_state::m79152pc)
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL(4'000'000))
//MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_DEVICE_ADD("uart", Z80SIO, XTAL(4'000'000))
- //MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232", rs232_port_device, write_rts))
- //MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232a", rs232_port_device, write_txd))
- //MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232a", rs232_port_device, write_dtr))
- //MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232a", rs232_port_device, write_rts))
+ Z80SIO(config, m_uart, XTAL(4'000'000));
+ //m_uart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ m_uart->out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
+ //m_uart->out_txdb_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
+ //m_uart->out_dtrb_callback().set("rs232a", FUNC(rs232_port_device::write_dtr));
+ //m_uart->out_rtsb_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart", z80sio_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart", z80sio_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, z80sio_device, rxa_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, z80sio_device, ctsa_w))
//MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, "terminal")
- //MCFG_RS232_RXD_HANDLER(WRITELINE("uart", z80sio_device, rxb_w))
- //MCFG_RS232_CTS_HANDLER(WRITELINE("uart", z80sio_device, ctsb_w))
+ //MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, z80sio_device, rxb_w))
+ //MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, z80sio_device, ctsb_w))
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp
index c84ddf84767..820aeab7b9c 100644
--- a/src/mame/drivers/mz2500.cpp
+++ b/src/mame/drivers/mz2500.cpp
@@ -1819,7 +1819,7 @@ MACHINE_CONFIG_START(mz2500_state::mz2500)
MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mz2500_state, mz2500_pio1_porta_w))
MCFG_Z80PIO_IN_PB_CB(READ8(*this, mz2500_state, mz2500_pio1_porta_r))
- MCFG_DEVICE_ADD("z80sio", Z80SIO, 6000000)
+ Z80SIO(config, "z80sio", 6000000);
MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, 32.768_kHz_XTAL)
MCFG_RP5C15_OUT_ALARM_CB(WRITELINE(*this, mz2500_state, mz2500_rtc_alarm_irq))
diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp
index f61ab398414..bb1199b1108 100644
--- a/src/mame/drivers/nanos.cpp
+++ b/src/mame/drivers/nanos.cpp
@@ -503,11 +503,11 @@ MACHINE_CONFIG_START(nanos_state::nanos)
MCFG_DEVICE_ADD(m_pio_1, Z80PIO, XTAL(4'000'000))
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_DEVICE_ADD(m_sio_0, Z80SIO, XTAL(4'000'000))
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, nanos_state, z80daisy_interrupt))
+ Z80SIO(config, m_sio_0, XTAL(4'000'000));
+ m_sio_0->out_int_callback().set(FUNC(nanos_state::z80daisy_interrupt));
- MCFG_DEVICE_ADD(m_sio_1, Z80SIO, XTAL(4'000'000))
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, nanos_state, z80daisy_interrupt))
+ Z80SIO(config, m_sio_1, XTAL(4'000'000));
+ m_sio_1->out_int_callback().set(FUNC(nanos_state::z80daisy_interrupt));
MCFG_DEVICE_ADD(m_pio, Z80PIO, XTAL(4'000'000))
MCFG_Z80PIO_IN_PA_CB(READ8(*this, nanos_state, port_a_r))
diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp
index 58c9b3449ac..b7a75ad0afb 100644
--- a/src/mame/drivers/pcm.cpp
+++ b/src/mame/drivers/pcm.cpp
@@ -293,7 +293,7 @@ MACHINE_CONFIG_START(pcm_state::pcm)
MCFG_Z80PIO_IN_PB_CB(READ8(*this, pcm_state, pcm_85_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, pcm_state, pcm_85_w))
- MCFG_DEVICE_ADD("sio", Z80SIO, XTAL(10'000'000) /4)
+ Z80SIO(config, "sio", XTAL(10'000'000) /4);
Z80CTC(config, m_ctc_u, 10_MHz_XTAL / 4);
m_ctc_u->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp
index 2652d8c1350..7f724b8d678 100644
--- a/src/mame/drivers/polyplay.cpp
+++ b/src/mame/drivers/polyplay.cpp
@@ -329,8 +329,8 @@ MACHINE_CONFIG_START(polyplay_state::polyplay_zrepp)
MCFG_DEVICE_IO_MAP(polyplay_io_zrepp)
/* devices */
- MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO, POLYPLAY_MAIN_CLOCK / 4) /* UB8560D */
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE(Z80CPU_TAG, INPUT_LINE_IRQ0))
+ Z80SIO(config, m_z80sio, POLYPLAY_MAIN_CLOCK / 4); /* UB8560D */
+ m_z80sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index 08d8216704f..c3b29977d27 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -320,7 +320,7 @@ MACHINE_CONFIG_START(proconn_state::proconn)
MCFG_DEVICE_ADD("z80ctc", Z80CTC, 4000000)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_DEVICE_ADD("z80sio", Z80SIO, 4000000) /* ?? Mhz */
+ Z80SIO(config, m_z80sio, 4000000); /* ?? Mhz */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index b3cd2a86824..727f3b514b1 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -3310,20 +3310,20 @@ MACHINE_CONFIG_START(rainbow_state::rainbow)
m_dbrg->fr_handler().set(FUNC(rainbow_state::dbrg_fr_w));
m_dbrg->ft_handler().set(FUNC(rainbow_state::dbrg_ft_w));
- MCFG_DEVICE_ADD("mpsc", UPD7201_NEW, 24.0734_MHz_XTAL / 5 / 2) // 2.4073 MHz (nominally 2.5 MHz)
- MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, rainbow_state, mpsc_irq))
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("comm", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("printer", rs232_port_device, write_txd))
+ UPD7201_NEW(config, m_mpsc, 24.0734_MHz_XTAL / 5 / 2); // 2.4073 MHz (nominally 2.5 MHz)
+ m_mpsc->out_int_callback().set(FUNC(rainbow_state::mpsc_irq));
+ m_mpsc->out_txda_callback().set("comm", FUNC(rs232_port_device::write_txd));
+ m_mpsc->out_txdb_callback().set("printer", FUNC(rs232_port_device::write_txd));
// RTS and DTR outputs are not connected
MCFG_DEVICE_ADD("comm", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("mpsc", upd7201_new_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("mpsc", upd7201_new_device, ctsa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("mpsc", upd7201_new_device, dcda_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, rxa_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, ctsa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, dcda_w))
MCFG_DEVICE_ADD("printer", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("mpsc", upd7201_new_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("mpsc", upd7201_new_device, ctsb_w)) // actually DTR
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, ctsb_w)) // actually DTR
MCFG_DEVICE_MODIFY("comm")
MCFG_SLOT_OPTION_ADD("microsoft_mouse", MSFT_SERIAL_MOUSE)
diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp
index 247e65dcaed..2cd7d6d1136 100644
--- a/src/mame/drivers/rt1715.cpp
+++ b/src/mame/drivers/rt1715.cpp
@@ -314,7 +314,7 @@ MACHINE_CONFIG_START(rt1715_state::rt1715)
MCFG_Z80CTC_ZC0_CB(WRITELINE("a29", z80sio_device, txca_w))
MCFG_Z80CTC_ZC2_CB(WRITELINE("a29", z80sio_device, rxtxcb_w))
- MCFG_DEVICE_ADD("a29", Z80SIO, 9.832_MHz_XTAL / 4)
+ Z80SIO(config, "a29", 9.832_MHz_XTAL / 4);
/* floppy */
MCFG_DEVICE_ADD("a71", Z80PIO, 9.832_MHz_XTAL / 4)
diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp
index 79b169ef8c5..3b55dab096c 100644
--- a/src/mame/drivers/ts803.cpp
+++ b/src/mame/drivers/ts803.cpp
@@ -450,9 +450,9 @@ MACHINE_CONFIG_START(ts803_state::ts803)
dart_clock.signal_handler().set("dart", FUNC(z80dart_device::txca_w));
dart_clock.signal_handler().append("dart", FUNC(z80dart_device::rxca_w));
- MCFG_DEVICE_ADD("sti", Z80STI, 16_MHz_XTAL / 4)
- MCFG_Z80STI_OUT_TBO_CB(WRITELINE("dart", z80dart_device, rxtxcb_w))
- MCFG_Z80STI_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ z80sti_device& sti(Z80STI(config, "sti", 16_MHz_XTAL / 4));
+ sti.out_tbo_cb().set("dart", FUNC(z80dart_device::rxtxcb_w));
+ sti.out_int_cb().set_inputline("maincpu", INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD("dart", Z80DART, 16_MHz_XTAL / 4)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp
index f716877dae9..e912f2e858c 100644
--- a/src/mame/drivers/unixpc.cpp
+++ b/src/mame/drivers/unixpc.cpp
@@ -385,10 +385,10 @@ MACHINE_CONFIG_START(unixpc_state::unixpc)
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this, unixpc_state, wd2797_drq_w))
MCFG_FLOPPY_DRIVE_ADD("wd2797:0", unixpc_floppies, "525dd", floppy_image_device::default_floppy_formats)
- MCFG_DEVICE_ADD("mpsc", UPD7201_NEW, 19.6608_MHz_XTAL / 8)
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232", rs232_port_device, write_rts))
+ upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", 19.6608_MHz_XTAL / 8));
+ mpsc.out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ mpsc.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ mpsc.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("kbc", ACIA6850, 0)