From 310d867d4b77ac93c3e3c3fd0ec83f76ec5579e3 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 28 Aug 2018 18:11:03 +0200 Subject: z80pio.cpp: removed macros (nw) --- src/devices/bus/abcbus/fd2.cpp | 20 ++++---- src/devices/bus/abcbus/lux10828.cpp | 14 ++--- src/devices/bus/cpc/cpc_pds.cpp | 7 +-- src/devices/bus/imi7000/imi5000h.cpp | 48 ++++++++--------- src/devices/bus/msx_cart/bm_012.cpp | 12 ++--- src/devices/cpu/z80/tmpz84c015.cpp | 16 +++--- src/devices/machine/z80pio.h | 33 ------------ src/mame/drivers/a5105.cpp | 4 +- src/mame/drivers/abc80.cpp | 10 ++-- src/mame/drivers/ac1.cpp | 10 ++-- src/mame/drivers/altos5.cpp | 18 +++---- src/mame/drivers/avt.cpp | 10 ++-- src/mame/drivers/babbage.cpp | 16 +++--- src/mame/drivers/bbcbc.cpp | 9 ++-- src/mame/drivers/binbug.cpp | 10 ++-- src/mame/drivers/br8641.cpp | 20 ++++---- src/mame/drivers/bullet.cpp | 20 ++++---- src/mame/drivers/c80.cpp | 18 +++---- src/mame/drivers/ccs300.cpp | 4 +- src/mame/drivers/cedar_magnet.cpp | 26 +++++----- src/mame/drivers/chessmst.cpp | 44 ++++++++-------- src/mame/drivers/czk80.cpp | 4 +- src/mame/drivers/dmax8000.cpp | 8 +-- src/mame/drivers/einstein.cpp | 14 ++--- src/mame/drivers/fidelz80.cpp | 8 +-- src/mame/drivers/hazelgr.cpp | 12 ++--- src/mame/drivers/huebler.cpp | 8 +-- src/mame/drivers/jupace.cpp | 10 ++-- src/mame/drivers/kaypro.cpp | 21 ++++---- src/mame/drivers/kc.cpp | 32 ++++++------ src/mame/drivers/kramermc.cpp | 8 +-- src/mame/drivers/lc80.cpp | 32 ++++++------ src/mame/drivers/llc.cpp | 26 +++++----- src/mame/drivers/mbee.cpp | 26 +++++----- src/mame/drivers/mc8020.cpp | 8 +-- src/mame/drivers/mc8030.cpp | 24 ++++----- src/mame/drivers/mccpm.cpp | 2 +- src/mame/drivers/mcr.cpp | 10 ++-- src/mame/drivers/mes.cpp | 4 +- src/mame/drivers/mpf1.cpp | 12 ++--- src/mame/drivers/mz2000.cpp | 8 +-- src/mame/drivers/mz2500.cpp | 8 +-- src/mame/drivers/mz700.cpp | 10 ++-- src/mame/drivers/nanos.cpp | 16 +++--- src/mame/drivers/nascom1.cpp | 2 +- src/mame/drivers/onyx.cpp | 33 ++++++------ src/mame/drivers/p8k.cpp | 26 +++++----- src/mame/drivers/pasopia.cpp | 8 +-- src/mame/drivers/pasopia7.cpp | 8 +-- src/mame/drivers/pcm.cpp | 16 +++--- src/mame/drivers/poly880.cpp | 16 +++--- src/mame/drivers/polyplay.cpp | 12 ++--- src/mame/drivers/pro80.cpp | 2 +- src/mame/drivers/proconn.cpp | 88 ++++++++++++++++---------------- src/mame/drivers/rt1715.cpp | 4 +- src/mame/drivers/sc1.cpp | 6 +-- src/mame/drivers/sc2.cpp | 10 ++-- src/mame/drivers/senjyo.cpp | 6 +-- src/mame/drivers/super6.cpp | 4 +- src/mame/drivers/super80.cpp | 16 +++--- src/mame/drivers/superslave.cpp | 4 +- src/mame/drivers/sys2900.cpp | 4 +- src/mame/drivers/system1.cpp | 9 ++-- src/mame/drivers/tiki100.cpp | 12 ++--- src/mame/drivers/tranz330.cpp | 8 +-- src/mame/drivers/trs80m2.cpp | 32 ++++++------ src/mame/drivers/ts816.cpp | 10 ++-- src/mame/drivers/vcs80.cpp | 8 +-- src/mame/drivers/victory.cpp | 12 ++--- src/mame/drivers/xerox820.cpp | 50 +++++++++--------- src/mame/drivers/z1013.cpp | 13 ++--- src/mame/drivers/z9001.cpp | 10 ++-- src/mame/machine/cedar_magnet_plane.cpp | 26 +++++----- src/mame/machine/cedar_magnet_sprite.cpp | 41 +++++++-------- 74 files changed, 572 insertions(+), 604 deletions(-) diff --git a/src/devices/bus/abcbus/fd2.cpp b/src/devices/bus/abcbus/fd2.cpp index ef6af85b9ac..02131c32269 100644 --- a/src/devices/bus/abcbus/fd2.cpp +++ b/src/devices/bus/abcbus/fd2.cpp @@ -128,7 +128,7 @@ void abc_fd2_device::abc_fd2_mem(address_map &map) void abc_fd2_device::abc_fd2_io(address_map &map) { map.global_mask(0x73); - map(0x30, 0x33).rw(Z80PIO_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x30, 0x33).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); map(0x50, 0x53).rw(FD1771_TAG, FUNC(fd1771_device::read), FUNC(fd1771_device::write)); map(0x60, 0x60).w(FUNC(abc_fd2_device::status_w)); } @@ -243,17 +243,17 @@ MACHINE_CONFIG_START(abc_fd2_device::device_add_mconfig) MCFG_DEVICE_IO_MAP(abc_fd2_io) MCFG_Z80_DAISY_CHAIN(daisy_chain) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 4_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, abc_fd2_device, pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, abc_fd2_device, pio_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, abc_fd2_device, pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, abc_fd2_device, pio_pb_w)) + Z80PIO(config, m_pio, 4_MHz_XTAL / 2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(abc_fd2_device::pio_pa_r)); + m_pio->out_pa_callback().set(FUNC(abc_fd2_device::pio_pa_w)); + m_pio->in_pb_callback().set(FUNC(abc_fd2_device::pio_pb_r)); + m_pio->out_pb_callback().set(FUNC(abc_fd2_device::pio_pb_w)); MCFG_DEVICE_ADD(FD1771_TAG, FD1771, 4_MHz_XTAL / 4) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(Z80PIO_TAG, z80pio_device, pb7_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(Z80PIO_TAG, z80pio_device, pb5_w)) - MCFG_WD_FDC_HLD_CALLBACK(WRITELINE(Z80PIO_TAG, z80pio_device, pb6_w)) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(m_pio, z80pio_device, pb7_w)) + MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(m_pio, z80pio_device, pb5_w)) + MCFG_WD_FDC_HLD_CALLBACK(WRITELINE(m_pio, z80pio_device, pb6_w)) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":0", abc_fd2_floppies, "525sssd", abc_fd2_device::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":1", abc_fd2_floppies, "525sssd", abc_fd2_device::floppy_formats) diff --git a/src/devices/bus/abcbus/lux10828.cpp b/src/devices/bus/abcbus/lux10828.cpp index 9978ebeeb81..834f852dadc 100644 --- a/src/devices/bus/abcbus/lux10828.cpp +++ b/src/devices/bus/abcbus/lux10828.cpp @@ -186,7 +186,7 @@ void luxor_55_10828_device::luxor_55_10828_mem(address_map &map) void luxor_55_10828_device::luxor_55_10828_io(address_map &map) { map.global_mask(0xff); - map(0x70, 0x73).mirror(0x0c).rw(Z80PIO_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x70, 0x73).mirror(0x0c).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); map(0xb0, 0xb3).mirror(0x0c).rw(FUNC(luxor_55_10828_device::fdc_r), FUNC(luxor_55_10828_device::fdc_w)); map(0xd0, 0xd0).mirror(0x0f).w(FUNC(luxor_55_10828_device::status_w)); map(0xe0, 0xe0).mirror(0x0f).w(FUNC(luxor_55_10828_device::ctrl_w)); @@ -326,12 +326,12 @@ MACHINE_CONFIG_START(luxor_55_10828_device::device_add_mconfig) MCFG_DEVICE_IO_MAP(luxor_55_10828_io) MCFG_Z80_DAISY_CHAIN(daisy_chain) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 4_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, luxor_55_10828_device, pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, luxor_55_10828_device, pio_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, luxor_55_10828_device, pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, luxor_55_10828_device, pio_pb_w)) + Z80PIO(config, m_pio, 4_MHz_XTAL / 2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(luxor_55_10828_device::pio_pa_r)); + m_pio->out_pa_callback().set(FUNC(luxor_55_10828_device::pio_pa_w)); + m_pio->in_pb_callback().set(FUNC(luxor_55_10828_device::pio_pb_r)); + m_pio->out_pb_callback().set(FUNC(luxor_55_10828_device::pio_pb_w)); MCFG_DEVICE_ADD(MB8876_TAG, MB8876, 4_MHz_XTAL / 4) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, luxor_55_10828_device, fdc_intrq_w)) diff --git a/src/devices/bus/cpc/cpc_pds.cpp b/src/devices/bus/cpc/cpc_pds.cpp index bc170675a51..c1000939152 100644 --- a/src/devices/bus/cpc/cpc_pds.cpp +++ b/src/devices/bus/cpc/cpc_pds.cpp @@ -17,11 +17,12 @@ DEFINE_DEVICE_TYPE(CPC_PDS, cpc_pds_device, "cpc_pds", "Programmers Development System (CPC Target)") -MACHINE_CONFIG_START(cpc_pds_device::device_add_mconfig) - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(4'000'000)) // no clock on the PCB, so will presume that it uses the CPC's clock +void cpc_pds_device::device_add_mconfig(machine_config &config) +{ + Z80PIO(config, m_pio, XTAL(4'000'000)); // no clock on the PCB, so will presume that it uses the CPC's clock // no pass-through seen on remake PCBs, unknown if actual hardware had a pass-through port or not -MACHINE_CONFIG_END +} //************************************************************************** diff --git a/src/devices/bus/imi7000/imi5000h.cpp b/src/devices/bus/imi7000/imi5000h.cpp index e826a81663f..ec8ac8c8347 100644 --- a/src/devices/bus/imi7000/imi5000h.cpp +++ b/src/devices/bus/imi7000/imi5000h.cpp @@ -354,30 +354,30 @@ MACHINE_CONFIG_START(imi5000h_device::device_add_mconfig) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, imi5000h_device, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, imi5000h_device, ctc_z2_w)) - MCFG_DEVICE_ADD(Z80PIO_0_TAG, Z80PIO, XTAL(8'000'000)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, imi5000h_device, pio0_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, imi5000h_device, pio0_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(Z80PIO_0_TAG, z80pio_device, strobe_a)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, imi5000h_device, pio0_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, imi5000h_device, pio0_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(Z80PIO_0_TAG, z80pio_device, strobe_b)) - - MCFG_DEVICE_ADD(Z80PIO_2_TAG, Z80PIO, XTAL(8'000'000)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, imi5000h_device, pio2_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, imi5000h_device, pio2_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(Z80PIO_2_TAG, z80pio_device, strobe_a)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, imi5000h_device, pio2_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, imi5000h_device, pio2_pb_w)) - - MCFG_DEVICE_ADD(Z80PIO_3_TAG, Z80PIO, XTAL(8'000'000)/2) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, imi5000h_device, pio3_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, imi5000h_device, pio3_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(Z80PIO_3_TAG, z80pio_device, strobe_a)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, imi5000h_device, pio3_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, imi5000h_device, pio3_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(Z80PIO_3_TAG, z80pio_device, strobe_b)) + z80pio_device& pio0(Z80PIO(config, Z80PIO_0_TAG, XTAL(8'000'000)/2)); + pio0.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio0.in_pa_callback().set(FUNC(imi5000h_device::pio0_pa_r)); + pio0.out_pa_callback().set(FUNC(imi5000h_device::pio0_pa_w)); + pio0.out_ardy_callback().set(Z80PIO_0_TAG, FUNC(z80pio_device::strobe_a)); + pio0.in_pb_callback().set(FUNC(imi5000h_device::pio0_pb_r)); + pio0.out_pb_callback().set(FUNC(imi5000h_device::pio0_pb_w)); + pio0.out_brdy_callback().set(Z80PIO_0_TAG, FUNC(z80pio_device::strobe_b)); + + z80pio_device& pio2(Z80PIO(config, Z80PIO_2_TAG, XTAL(8'000'000)/2)); + pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio2.in_pa_callback().set(FUNC(imi5000h_device::pio2_pa_r)); + pio2.out_pa_callback().set(FUNC(imi5000h_device::pio2_pa_w)); + pio2.out_ardy_callback().set(Z80PIO_2_TAG, FUNC(z80pio_device::strobe_a)); + pio2.in_pb_callback().set(FUNC(imi5000h_device::pio2_pb_r)); + pio2.out_pb_callback().set(FUNC(imi5000h_device::pio2_pb_w)); + + z80pio_device& pio3(Z80PIO(config, Z80PIO_3_TAG, XTAL(8'000'000)/2)); + pio3.in_pa_callback().set(FUNC(imi5000h_device::pio3_pa_r)); + pio3.out_pa_callback().set(FUNC(imi5000h_device::pio3_pa_w)); + pio3.out_ardy_callback().set(Z80PIO_3_TAG, FUNC(z80pio_device::strobe_a)); + pio3.in_pb_callback().set(FUNC(imi5000h_device::pio3_pb_r)); + pio3.out_pb_callback().set(FUNC(imi5000h_device::pio3_pb_w)); + pio3.out_brdy_callback().set(Z80PIO_3_TAG, FUNC(z80pio_device::strobe_b)); //MCFG_HARDDISK_ADD("harddisk1") MACHINE_CONFIG_END diff --git a/src/devices/bus/msx_cart/bm_012.cpp b/src/devices/bus/msx_cart/bm_012.cpp index be5eb7a60c0..dd4154a137f 100644 --- a/src/devices/bus/msx_cart/bm_012.cpp +++ b/src/devices/bus/msx_cart/bm_012.cpp @@ -61,12 +61,12 @@ MACHINE_CONFIG_START(msx_cart_bm_012_device::device_add_mconfig) // Sony CXK5864BSP-10L (8KB ram) // Sharp LH0081A Z80A-PIO-0 - For communicating between the MSX and the TMP - MCFG_DEVICE_ADD("bm012_pio", Z80PIO, XTAL(3'579'545)) // ????? - MCFG_Z80PIO_OUT_PA_CB(WRITE8("tmpz84c015af", tmpz84c015_device, pa_w)) - MCFG_Z80PIO_IN_PA_CB(READ8("tmpz84c015af", tmpz84c015_device, pa_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("tmpz84c015af", tmpz84c015_device, pb_w)) - MCFG_Z80PIO_IN_PB_CB(READ8("tmpz84c015af", tmpz84c015_device, pb_r)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE("tmpz84c015af", tmpz84c015_device, strobe_b)) + Z80PIO(config, m_bm012_pio, XTAL(3'579'545)); // ????? + m_bm012_pio->out_pa_callback().set("tmpz84c015af", FUNC(tmpz84c015_device::pa_w)); + m_bm012_pio->in_pa_callback().set("tmpz84c015af", FUNC(tmpz84c015_device::pa_r)); + m_bm012_pio->out_pb_callback().set("tmpz84c015af", FUNC(tmpz84c015_device::pb_w)); + m_bm012_pio->in_pb_callback().set("tmpz84c015af", FUNC(tmpz84c015_device::pb_r)); + m_bm012_pio->out_brdy_callback().set("tmpz84c015af", FUNC(tmpz84c015_device::strobe_b)); // MIDI ports MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") diff --git a/src/devices/cpu/z80/tmpz84c015.cpp b/src/devices/cpu/z80/tmpz84c015.cpp index 3ea871f8df4..78e515ecece 100644 --- a/src/devices/cpu/z80/tmpz84c015.cpp +++ b/src/devices/cpu/z80/tmpz84c015.cpp @@ -208,14 +208,14 @@ MACHINE_CONFIG_START(tmpz84c015_device::device_add_mconfig) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<2>)) MCFG_Z80CTC_ZC3_CB(WRITELINE(*this, tmpz84c015_device, zc_cb_trampoline_w<3>)) - MCFG_DEVICE_ADD("tmpz84c015_pio", Z80PIO, DERIVED_CLOCK(1,1) ) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(DEVICE_SELF, INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio, DERIVED_CLOCK(1,1)); + m_pio->out_int_callback().set_inputline(DEVICE_SELF, INPUT_LINE_IRQ0); - MCFG_Z80PIO_IN_PA_CB(READ8(*this, tmpz84c015_device, in_pa_cb_trampoline_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, tmpz84c015_device, out_pa_cb_trampoline_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, tmpz84c015_device, out_ardy_cb_trampoline_w)) + m_pio->in_pa_callback().set(FUNC(tmpz84c015_device::in_pa_cb_trampoline_r)); + m_pio->out_pa_callback().set(FUNC(tmpz84c015_device::out_pa_cb_trampoline_w)); + m_pio->out_ardy_callback().set(FUNC(tmpz84c015_device::out_ardy_cb_trampoline_w)); - MCFG_Z80PIO_IN_PB_CB(READ8(*this, tmpz84c015_device, in_pb_cb_trampoline_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, tmpz84c015_device, out_pb_cb_trampoline_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, tmpz84c015_device, out_brdy_cb_trampoline_w)) + m_pio->in_pb_callback().set(FUNC(tmpz84c015_device::in_pb_cb_trampoline_r)); + m_pio->out_pb_callback().set(FUNC(tmpz84c015_device::out_pb_cb_trampoline_w)); + m_pio->out_brdy_callback().set(FUNC(tmpz84c015_device::out_brdy_cb_trampoline_w)); MACHINE_CONFIG_END diff --git a/src/devices/machine/z80pio.h b/src/devices/machine/z80pio.h index f0bfad62351..f5314351a09 100644 --- a/src/devices/machine/z80pio.h +++ b/src/devices/machine/z80pio.h @@ -37,32 +37,6 @@ #include "machine/z80daisy.h" -//************************************************************************** -// DEVICE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_Z80PIO_OUT_INT_CB(_devcb) \ - downcast(*device).set_out_int_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_IN_PA_CB(_devcb) \ - downcast(*device).set_in_pa_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_OUT_PA_CB(_devcb) \ - downcast(*device).set_out_pa_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_OUT_ARDY_CB(_devcb) \ - downcast(*device).set_out_ardy_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_IN_PB_CB(_devcb) \ - downcast(*device).set_in_pb_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_OUT_PB_CB(_devcb) \ - downcast(*device).set_out_pb_callback(DEVCB_##_devcb); - -#define MCFG_Z80PIO_OUT_BRDY_CB(_devcb) \ - downcast(*device).set_out_brdy_callback(DEVCB_##_devcb); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -84,13 +58,6 @@ public: // construction/destruction z80pio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward(cb)); } auto out_int_callback() { return m_out_int_cb.bind(); } auto in_pa_callback() { return m_in_pa_cb.bind(); } auto out_pa_callback() { return m_out_pa_cb.bind(); } diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index bb0901ff2a9..6a84ce93084 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -603,8 +603,8 @@ MACHINE_CONFIG_START(a5105_state::a5105) MCFG_Z80CTC_ZC0_CB(WRITELINE("z80ctc", z80ctc_device, trg2)) MCFG_Z80CTC_ZC2_CB(WRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(15'000'000) / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4)); + pio.out_int_callback().set_inputline(m_maincpu, 0); MCFG_CASSETTE_ADD( "cassette" ) diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp index 57961e69dc3..a86917d7c0b 100644 --- a/src/mame/drivers/abc80.cpp +++ b/src/mame/drivers/abc80.cpp @@ -512,11 +512,11 @@ MACHINE_CONFIG_START(abc80_state::abc80) WAVE(config, "wave", CASSETTE_TAG).add_route(ALL_OUTPUTS, "mono", 0.25); // devices - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(11'980'800)/2/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, abc80_state, pio_pa_r)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, abc80_state, pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, abc80_state, pio_pb_w)) + Z80PIO(config, m_pio, XTAL(11'980'800)/2/2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(abc80_state::pio_pa_r)); + m_pio->in_pb_callback().set(FUNC(abc80_state::pio_pb_r)); + m_pio->out_pb_callback().set(FUNC(abc80_state::pio_pb_w)); MCFG_CASSETTE_ADD(CASSETTE_TAG) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) diff --git a/src/mame/drivers/ac1.cpp b/src/mame/drivers/ac1.cpp index b2398af04d9..8493a919c6c 100644 --- a/src/mame/drivers/ac1.cpp +++ b/src/mame/drivers/ac1.cpp @@ -135,11 +135,11 @@ MACHINE_CONFIG_START(ac1_state::ac1) MCFG_DEVICE_PROGRAM_MAP(ac1_mem) MCFG_DEVICE_IO_MAP(ac1_io) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(8'000'000) / 4) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, ac1_state, ac1_port_a_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, ac1_state, ac1_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, ac1_state, ac1_port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, ac1_state, ac1_port_b_w)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(8'000'000)/4)); + pio.in_pa_callback().set(FUNC(ac1_state::ac1_port_a_r)); + pio.out_pa_callback().set(FUNC(ac1_state::ac1_port_a_w)); + pio.in_pb_callback().set(FUNC(ac1_state::ac1_port_b_r)); + pio.out_pb_callback().set(FUNC(ac1_state::ac1_port_b_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp index 76b829df42e..1ff3e82bd9b 100644 --- a/src/mame/drivers/altos5.cpp +++ b/src/mame/drivers/altos5.cpp @@ -430,15 +430,15 @@ MACHINE_CONFIG_START(altos5_state::altos5) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, altos5_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, altos5_state, io_write_byte)) - MCFG_DEVICE_ADD("pio0", Z80PIO, 8_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, altos5_state, port08_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, altos5_state, port08_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, altos5_state, port09_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, altos5_state, port09_w)) - - MCFG_DEVICE_ADD("pio1", Z80PIO, 8_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio0, 8_MHz_XTAL / 2); + m_pio0->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio0->in_pa_callback().set(FUNC(altos5_state::port08_r)); + m_pio0->out_pa_callback().set(FUNC(altos5_state::port08_w)); + m_pio0->in_pb_callback().set(FUNC(altos5_state::port09_r)); + m_pio0->out_pb_callback().set(FUNC(altos5_state::port09_w)); + + z80pio_device& pio1(Z80PIO(config, "pio1", 8_MHz_XTAL / 2)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD("dart", Z80DART, 8_MHz_XTAL / 2) // Channel A - console #3 diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp index 20536778729..f175dddfc3e 100644 --- a/src/mame/drivers/avt.cpp +++ b/src/mame/drivers/avt.cpp @@ -1000,14 +1000,14 @@ MACHINE_CONFIG_START(avt_state::avt) // ZC1 not connected // TRG2 to TP18; ZC2 to TP9; TRG3 to VSYNC; TRG0 to cpu_clock/4 - MCFG_DEVICE_ADD("pio0", Z80PIO, CPU_CLOCK) // U23 - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PB_CB(IOPORT("IN0")) + Z80PIO(config, m_pio0, CPU_CLOCK); // U23 + m_pio0->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio0->in_pb_callback().set_ioport("IN0"); // PORT A appears to be lamp drivers // PORT B d0-d5 = muxed inputs; d6 = SW2 pushbutton; d7 = ? - MCFG_DEVICE_ADD("pio1", Z80PIO, CPU_CLOCK) // U22 - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio1, CPU_CLOCK); // U22 + m_pio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // PORT A d0-d7 = TP13,TP12,TP11,TP10,TP8,TP7,TP5,TP3 // PORT B d0-d7 = "Player2", DCOM, CCOM, BCOM, ACOM, LOCKOUT/TP6, TP4, 50/60HZ (held high, jumper on JP13 grounds it) // DCOM,CCOM,BCOM,ACOM appear to be muxes diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp index 7dab7381653..675b4c364c1 100644 --- a/src/mame/drivers/babbage.cpp +++ b/src/mame/drivers/babbage.cpp @@ -247,14 +247,14 @@ MACHINE_CONFIG_START(babbage_state::babbage) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, babbage_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, babbage_state, ctc_z2_w)) - MCFG_DEVICE_ADD("z80pio_1", Z80PIO, MAIN_CLOCK) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, babbage_state, pio1_b_w)) - - MCFG_DEVICE_ADD("z80pio_2", Z80PIO, MAIN_CLOCK) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, babbage_state, pio2_a_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, babbage_state, pio2_b_w)) + Z80PIO(config, m_pio_1, MAIN_CLOCK); + m_pio_1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio_1->out_pb_callback().set(FUNC(babbage_state::pio1_b_w)); + + Z80PIO(config, m_pio_2, MAIN_CLOCK); + m_pio_2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio_2->in_pa_callback().set(FUNC(babbage_state::pio2_a_r)); + m_pio_2->out_pb_callback().set(FUNC(babbage_state::pio2_b_w)); MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", babbage_state, keyboard_callback, attotime::from_hz(30)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index cdbe8b388f9..3fa5e1c20ac 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -124,11 +124,10 @@ MACHINE_CONFIG_START(bbcbc_state::bbcbc) MCFG_DEVICE_IO_MAP(io_map) MCFG_Z80_DAISY_CHAIN(bbcbc_daisy_chain) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 10.6875_MHz_XTAL / 3) - //MCFG_Z80PIO_OUT_PA_CB(???) - //MCFG_Z80PIO_IN_STROBE_CB(???) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, bbcbc_state, input_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, bbcbc_state, input_select_w)) + Z80PIO(config, m_z80pio, 10.6875_MHz_XTAL / 3); + //m_z80pio->out_pa_callback().set(???); + m_z80pio->in_pb_callback().set(FUNC(bbcbc_state::input_r)); + m_z80pio->out_pb_callback().set(FUNC(bbcbc_state::input_select_w)); tms9129_device &vdp(TMS9129(config, "tms9129", 10.6875_MHz_XTAL)); vdp.set_screen("screen"); diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp index 8cf0ece1dae..7b8f9ebb6fb 100644 --- a/src/mame/drivers/binbug.cpp +++ b/src/mame/drivers/binbug.cpp @@ -568,12 +568,12 @@ MACHINE_CONFIG_START(dg680_state::dg680) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_Z80CTC_ZC0_CB(WRITELINE("z80ctc", z80ctc_device, trg1)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(8'000'000) / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, dg680_state, porta_r)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(8'000'000) / 4)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio.in_pa_callback().set(FUNC(dg680_state::porta_r)); // OUT_ARDY - this activates to ask for kbd data but not known if actually used - MCFG_Z80PIO_IN_PB_CB(READ8(*this, dg680_state, portb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, dg680_state, portb_w)) + pio.in_pb_callback().set(FUNC(dg680_state::portb_r)); + pio.out_pb_callback().set(FUNC(dg680_state::portb_w)); MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc0", dg680_state, time_tick, attotime::from_hz(200)) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc3", dg680_state, uart_tick, attotime::from_hz(4800)) diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp index 784bf0ab3f1..da04a510f15 100644 --- a/src/mame/drivers/br8641.cpp +++ b/src/mame/drivers/br8641.cpp @@ -173,19 +173,19 @@ MACHINE_CONFIG_START(brandt8641_state::brandt8641) // Z80APIO U9 // Z80APIO U14 // Z80PIO U7 - unknown which is which - MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio1, XTAL(4'000'000)); + m_pio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, brandt8641_state, port08_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, brandt8641_state, port08_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, brandt8641_state, port09_w)) + Z80PIO(config, m_pio2, XTAL(4'000'000)); + m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio2->in_pa_callback().set(FUNC(brandt8641_state::port08_r)); + m_pio2->out_pa_callback().set(FUNC(brandt8641_state::port08_w)); + m_pio2->out_pb_callback().set(FUNC(brandt8641_state::port09_w)); - MCFG_DEVICE_ADD("pio3", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio3, XTAL(4'000'000)); + m_pio3->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL(4'000'000)) // Z80CTC U8 + Z80CTC(config, "ctc", XTAL(4'000'000)); // Z80CTC U8 MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp index a61fe71f23f..93749e31694 100644 --- a/src/mame/drivers/bullet.cpp +++ b/src/mame/drivers/bullet.cpp @@ -1141,10 +1141,10 @@ MACHINE_CONFIG_START(bullet_state::bullet) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, bullet_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, bullet_state, io_write_byte)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 16_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, bullet_state, pio_pb_r)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, 16_MHz_XTAL / 4)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio.out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + pio.in_pb_callback().set(FUNC(bullet_state::pio_pb_r)); MCFG_DEVICE_ADD(MB8877_TAG, MB8877, 16_MHz_XTAL / 16) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) @@ -1220,12 +1220,12 @@ MACHINE_CONFIG_START(bulletf_state::bulletf) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, bullet_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, bullet_state, io_write_byte)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 16_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8("scsi_ctrl_in", input_buffer_device, bus_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, bulletf_state, pio_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, bulletf_state, cstrb_w)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, 16_MHz_XTAL / 4)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio.in_pa_callback().set("scsi_ctrl_in", FUNC(input_buffer_device::bus_r)); + pio.out_pa_callback().set(FUNC(bulletf_state::pio_pa_w)); + pio.out_ardy_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + pio.out_brdy_callback().set(FUNC(bulletf_state::cstrb_w)); MCFG_DEVICE_ADD(MB8877_TAG, MB8877, 16_MHz_XTAL / 16) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(Z80DART_TAG, z80dart_device, rib_w)) diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp index 5991651f614..6a614e5c8b5 100644 --- a/src/mame/drivers/c80.cpp +++ b/src/mame/drivers/c80.cpp @@ -265,15 +265,15 @@ MACHINE_CONFIG_START(c80_state::c80) config.set_default_layout(layout_c80); /* devices */ - MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 2500000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, c80_state, pio1_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, c80_state, pio1_pa_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, c80_state, pio1_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, c80_state, pio1_brdy_w)) - - MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 2500000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio1, 2500000); + m_pio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio1->in_pa_callback().set(FUNC(c80_state::pio1_pa_r)); + m_pio1->out_pa_callback().set(FUNC(c80_state::pio1_pa_w)); + m_pio1->out_pb_callback().set(FUNC(c80_state::pio1_pb_w)); + m_pio1->out_brdy_callback().set(FUNC(c80_state::pio1_brdy_w)); + + z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(2500000))); + pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED ) diff --git a/src/mame/drivers/ccs300.cpp b/src/mame/drivers/ccs300.cpp index 089b178547c..506521f357b 100644 --- a/src/mame/drivers/ccs300.cpp +++ b/src/mame/drivers/ccs300.cpp @@ -143,8 +143,8 @@ MACHINE_CONFIG_START(ccs300_state::ccs300) MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL(4'000'000)) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, "pio", XTAL(4'000'000))); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp index 843d5adcb45..2187c04669c 100644 --- a/src/mame/drivers/cedar_magnet.cpp +++ b/src/mame/drivers/cedar_magnet.cpp @@ -779,19 +779,19 @@ MACHINE_CONFIG_START(cedar_magnet_state::cedar_magnet) ADDRESS_MAP_BANK(config, "mb_sub_ram").set_map(&cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000); ADDRESS_MAP_BANK(config, "mb_sub_pal").set_map(&cedar_magnet_state::cedar_magnet_mainboard_sub_pal_map).set_options(ENDIANNESS_LITTLE, 8, 8+6, 0x100); - MCFG_DEVICE_ADD("z80pio_ic48", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_state, ic48_pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_state, ic48_pio_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_state, ic48_pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_state, ic48_pio_pb_w)) - - MCFG_DEVICE_ADD("z80pio_ic49", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) -// MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_state, ic49_pio_pa_r)) // NOT USED -// MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_state, ic49_pio_pa_w)) // NOT USED - MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_state, ic49_pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_state, ic49_pio_pb_w)) + Z80PIO(config, m_ic48_pio, 4000000/2); +// m_ic48_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_ic48_pio->in_pa_callback().set(FUNC(cedar_magnet_state::ic48_pio_pa_r)); + m_ic48_pio->out_pa_callback().set(FUNC(cedar_magnet_state::ic48_pio_pa_w)); + m_ic48_pio->in_pb_callback().set(FUNC(cedar_magnet_state::ic48_pio_pb_r)); + m_ic48_pio->out_pb_callback().set(FUNC(cedar_magnet_state::ic48_pio_pb_w)); + + Z80PIO(config, m_ic49_pio, 4000000/2); +// m_ic49_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); +// m_ic49_pio->in_pa_callback().set(FUNC(cedar_magnet_state::ic49_pio_pa_r)); // NOT USED +// m_ic49_pio->out_pa_callback().set(FUNC(cedar_magnet_state::ic49_pio_pa_w)); // NOT USED + m_ic49_pio->in_pb_callback().set(FUNC(cedar_magnet_state::ic49_pio_pb_r)); + m_ic49_pio->out_pb_callback().set(FUNC(cedar_magnet_state::ic49_pio_pb_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp index 1876b061339..bcb50b77787 100644 --- a/src/mame/drivers/chessmst.cpp +++ b/src/mame/drivers/chessmst.cpp @@ -386,14 +386,14 @@ MACHINE_CONFIG_START(chessmst_state::chessmst) MCFG_DEVICE_IO_MAP(chessmst_io) MCFG_Z80_DAISY_CHAIN(chessmst_daisy_chain) - MCFG_DEVICE_ADD("z80pio1", Z80PIO, 9.8304_MHz_XTAL/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, chessmst_state, pio1_port_a_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio1_port_b_w)) + z80pio_device& pio1(Z80PIO(config, "z80pio1", 9.8304_MHz_XTAL/4)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, 9.8304_MHz_XTAL/4) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, chessmst_state, pio2_port_a_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio2_port_b_w)) + Z80PIO(config, m_pia2, 9.8304_MHz_XTAL/4); + m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmst); @@ -411,14 +411,14 @@ MACHINE_CONFIG_START(chessmst_state::chessmsta) MCFG_DEVICE_IO_MAP(chessmst_io) MCFG_Z80_DAISY_CHAIN(chessmst_daisy_chain) - MCFG_DEVICE_ADD("z80pio1", Z80PIO, 8_MHz_XTAL/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, chessmst_state, pio1_port_a_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio1_port_b_w)) + z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, 8_MHz_XTAL/4) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, chessmst_state, pio2_port_a_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio2_port_b_w)) + Z80PIO(config, m_pia2, 8_MHz_XTAL/4); + m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmst); @@ -436,15 +436,15 @@ MACHINE_CONFIG_START(chessmst_state::chessmstdm) MCFG_DEVICE_IO_MAP(chessmstdm_io) MCFG_Z80_DAISY_CHAIN(chessmstdm_daisy_chain) - MCFG_DEVICE_ADD("z80pio1", Z80PIO, 8_MHz_XTAL/4) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, chessmst_state, pio1_port_a_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio1_port_b_dm_w)) - MCFG_Z80PIO_IN_PB_CB(IOPORT("EXTRA")) + z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4)); + pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_dm_w)); + pio1.in_pb_callback().set_ioport("EXTRA"); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, 8_MHz_XTAL/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, chessmst_state, pio2_port_a_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, chessmst_state, pio2_port_b_w)) + Z80PIO(config, m_pia2, 8_MHz_XTAL/4); + m_pia2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmstdm); diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp index 725299bd79a..d3ebf864f1f 100644 --- a/src/mame/drivers/czk80.cpp +++ b/src/mame/drivers/czk80.cpp @@ -209,8 +209,8 @@ MACHINE_CONFIG_START(czk80_state::czk80) //MCFG_Z80DART_OUT_RTSA_CB(WRITELINE("rs232", rs232_port_device, write_rts)) MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(16'000'000)/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, "pio", XTAL(16'000'000)/4)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MACHINE_CONFIG_END diff --git a/src/mame/drivers/dmax8000.cpp b/src/mame/drivers/dmax8000.cpp index 8e2bb019f5d..0dfadd4f1c3 100644 --- a/src/mame/drivers/dmax8000.cpp +++ b/src/mame/drivers/dmax8000.cpp @@ -185,11 +185,11 @@ MACHINE_CONFIG_START(dmax8000_state::dmax8000) MCFG_DEVICE_ADD("dart2", Z80DART, 4'000'000) // RS232 ports - MCFG_DEVICE_ADD("pio1", Z80PIO, 4'000'000) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, dmax8000_state, port0c_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, dmax8000_state, port0d_w)) + z80pio_device& pio1(Z80PIO(config, "pio1", 4'000'000)); + pio1.out_pa_callback().set(FUNC(dmax8000_state::port0c_w)); + pio1.out_pb_callback().set(FUNC(dmax8000_state::port0d_w)); - MCFG_DEVICE_ADD("pio2", Z80PIO, 4'000'000) + Z80PIO(config, "pio2", 4'000'000); MCFG_DEVICE_ADD("fdc", FD1793, 2'000'000) // no idea MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index 0d90fd42ee4..ce680ac2deb 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -588,13 +588,13 @@ MACHINE_CONFIG_START(einstein_state::einstein) driver. So we update at 50Hz and hope this is good enough. */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", einstein_state, keyboard_timer_callback, attotime::from_hz(50)) - MCFG_DEVICE_ADD(IC_I063, Z80PIO, XTAL_X002 / 2) - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, einstein_state, int_w<0>)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, einstein_state, ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8("user", einstein_userport_device, read)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("user", einstein_userport_device, write)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE("user", einstein_userport_device, brdy_w)) + z80pio_device& pio(Z80PIO(config, IC_I063, XTAL_X002 / 2)); + pio.out_int_callback().set(FUNC(einstein_state::int_w<0>)); + pio.out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + pio.out_ardy_callback().set(FUNC(einstein_state::ardy_w)); + pio.in_pb_callback().set("user", FUNC(einstein_userport_device::read)); + pio.out_pb_callback().set("user", FUNC(einstein_userport_device::write)); + pio.out_brdy_callback().set("user", FUNC(einstein_userport_device::brdy_w)); MCFG_DEVICE_ADD(IC_I058, Z80CTC, XTAL_X002 / 2) MCFG_Z80CTC_INTR_CB(WRITELINE(*this, einstein_state, int_w<1>)) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index f0a02bbb372..7af9e8f97be 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -1760,10 +1760,10 @@ MACHINE_CONFIG_START(fidelz80_state::vsc) MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, fidelz80_state, vsc_ppi_portb_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, fidelz80_state, vsc_ppi_portc_w)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 3.9_MHz_XTAL) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, fidelz80_state, vsc_pio_porta_r)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, fidelz80_state, vsc_pio_portb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, fidelz80_state, vsc_pio_portb_w)) + Z80PIO(config, m_z80pio, 3.9_MHz_XTAL); + m_z80pio->in_pa_callback().set(FUNC(fidelz80_state::vsc_pio_porta_r)); + m_z80pio->in_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_r)); + m_z80pio->out_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_w)); MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) config.set_default_layout(layout_fidel_vsc); diff --git a/src/mame/drivers/hazelgr.cpp b/src/mame/drivers/hazelgr.cpp index 9fa626940b0..b2b4f41335b 100644 --- a/src/mame/drivers/hazelgr.cpp +++ b/src/mame/drivers/hazelgr.cpp @@ -97,15 +97,15 @@ MACHINE_CONFIG_START(haze_state::haze) MCFG_DEVICE_ADD("ctc3", Z80CTC, 1'000'000 ) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("pio1", Z80PIO, 1'000'000 ) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(IOPORT("TEST")) + z80pio_device& pio1(Z80PIO(config, "pio1", 1'000'000)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.in_pa_callback().set_ioport("TEST"); - MCFG_DEVICE_ADD("pio2", Z80PIO, 1'000'000 ) + Z80PIO(config, "pio2", 1'000'000); - MCFG_DEVICE_ADD("pio3", Z80PIO, 1'000'000 ) + Z80PIO(config, "pio3", 1'000'000); - MCFG_DEVICE_ADD("pio4", Z80PIO, 1'000'000 ) + Z80PIO(config, "pio4", 1'000'000); MACHINE_CONFIG_END ROM_START( hg_frd ) diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp index 32ff93fa4b5..f3f64d746ce 100644 --- a/src/mame/drivers/huebler.cpp +++ b/src/mame/drivers/huebler.cpp @@ -335,11 +335,11 @@ MACHINE_CONFIG_START(amu880_state::amu880) MCFG_Z80CTC_ZC1_CB(WRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, amu880_state, ctc_z2_w)) - MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, XTAL(10'000'000)/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio1(Z80PIO(config, Z80PIO1_TAG, XTAL(10'000'000)/4)); + pio1.out_int_callback().set_inputline(Z80_TAG, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, XTAL(10'000'000)/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(10'000'000)/4)); + pio2.out_int_callback().set_inputline(Z80_TAG, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO0, XTAL(10'000'000)/4) // U856 MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(*this, amu880_state, cassette_w)) diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp index 4d673d07a4f..89bb34163a9 100644 --- a/src/mame/drivers/jupace.cpp +++ b/src/mame/drivers/jupace.cpp @@ -797,11 +797,11 @@ MACHINE_CONFIG_START(ace_state::ace) MCFG_I8255_IN_PORTB_CB(READ8(*this, ace_state, sby_r)) MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, ace_state, ald_w)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(6'500'000)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, ace_state, pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, ace_state, pio_pa_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) + Z80PIO(config, m_z80pio, XTAL(6'500'000)/2); + m_z80pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_z80pio->in_pa_callback().set(FUNC(ace_state::pio_pa_r)); + m_z80pio->out_pa_callback().set(FUNC(ace_state::pio_pa_w)); + m_z80pio->out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp index 27a26ff0b95..33b2ebc14e7 100644 --- a/src/mame/drivers/kaypro.cpp +++ b/src/mame/drivers/kaypro.cpp @@ -246,14 +246,14 @@ MACHINE_CONFIG_START(kaypro_state::kayproii) brg.ft_handler().append("sio", FUNC(z80sio_device::txca_w)); brg.fr_handler().set("sio", FUNC(z80sio_device::rxtxcb_w)); - MCFG_DEVICE_ADD("z80pio_g", Z80PIO, 20_MHz_XTAL / 8) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) + Z80PIO(config, m_pio_g, 20_MHz_XTAL / 8); + m_pio_g->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio_g->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); - MCFG_DEVICE_ADD("z80pio_s", Z80PIO, 20_MHz_XTAL / 8) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - 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)) + Z80PIO(config, m_pio_s, 20_MHz_XTAL / 8); + m_pio_s->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio_s->in_pa_callback().set(FUNC(kaypro_state::pio_system_r)); + m_pio_s->out_pa_callback().set(FUNC(kaypro_state::kayproii_pio_system_w)); z80sio_device& sio(Z80SIO(config, "sio", 20_MHz_XTAL / 8)); sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -275,11 +275,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(kaypro_state::kayproiv) kayproii(config); - MCFG_DEVICE_REMOVE("z80pio_s") - MCFG_DEVICE_ADD("z80pio_s", Z80PIO, 2500000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, kaypro_state, pio_system_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kaypro_state, kayproiv_pio_system_w)) + m_pio_s->set_clock(2500000); + m_pio_s->out_pa_callback().set(FUNC(kaypro_state::kayproiv_pio_system_w)); MCFG_DEVICE_REMOVE("fdc:0") MCFG_DEVICE_REMOVE("fdc:1") MCFG_FLOPPY_DRIVE_ADD("fdc:0", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp index 35065d147e7..176627250e8 100644 --- a/src/mame/drivers/kc.cpp +++ b/src/mame/drivers/kc.cpp @@ -104,14 +104,14 @@ MACHINE_CONFIG_START(kc_state::kc85_3) MCFG_Z80_DAISY_CHAIN(kc85_daisy_chain) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, KC85_3_CLOCK) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, kc_state, pio_porta_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kc_state, pio_porta_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, kc_state, pio_ardy_cb)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, kc_state, pio_portb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, kc_state, pio_portb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, kc_state, pio_brdy_cb)) + Z80PIO(config, m_z80pio, KC85_3_CLOCK); + m_z80pio->out_int_callback().set_inputline(m_maincpu, 0); + m_z80pio->in_pa_callback().set(FUNC(kc_state::pio_porta_r)); + m_z80pio->out_pa_callback().set(FUNC(kc_state::pio_porta_w)); + m_z80pio->out_ardy_callback().set(FUNC(kc_state::pio_ardy_cb)); + m_z80pio->in_pb_callback().set(FUNC(kc_state::pio_portb_r)); + m_z80pio->out_pb_callback().set(FUNC(kc_state::pio_portb_w)); + m_z80pio->out_brdy_callback().set(FUNC(kc_state::pio_brdy_cb)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, KC85_3_CLOCK) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", 0)) @@ -185,14 +185,14 @@ MACHINE_CONFIG_START(kc85_4_state::kc85_4) MCFG_Z80_DAISY_CHAIN(kc85_daisy_chain) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, KC85_4_CLOCK) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, kc_state, pio_porta_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kc_state, pio_porta_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, kc_state, pio_ardy_cb)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, kc_state, pio_portb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, kc_state, pio_portb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, kc_state, pio_brdy_cb)) + Z80PIO(config, m_z80pio, KC85_4_CLOCK); + m_z80pio->out_int_callback().set_inputline(m_maincpu, 0); + m_z80pio->in_pa_callback().set(FUNC(kc_state::pio_porta_r)); + m_z80pio->out_pa_callback().set(FUNC(kc_state::pio_porta_w)); + m_z80pio->out_ardy_callback().set(FUNC(kc_state::pio_ardy_cb)); + m_z80pio->in_pb_callback().set(FUNC(kc_state::pio_portb_r)); + m_z80pio->out_pb_callback().set(FUNC(kc_state::pio_portb_w)); + m_z80pio->out_brdy_callback().set(FUNC(kc_state::pio_brdy_cb)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, KC85_4_CLOCK) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", 0)) diff --git a/src/mame/drivers/kramermc.cpp b/src/mame/drivers/kramermc.cpp index 0d9337fe5fa..143c453aa6f 100644 --- a/src/mame/drivers/kramermc.cpp +++ b/src/mame/drivers/kramermc.cpp @@ -117,10 +117,10 @@ MACHINE_CONFIG_START(kramermc_state::kramermc) MCFG_DEVICE_PROGRAM_MAP(kramermc_mem) MCFG_DEVICE_IO_MAP(kramermc_io) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 1500000) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, kramermc_state, kramermc_port_a_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kramermc_state, kramermc_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, kramermc_state, kramermc_port_b_r)) + z80pio_device& pio(Z80PIO(config, "z80pio", 1500000)); + pio.in_pa_callback().set(FUNC(kramermc_state::kramermc_port_a_r)); + pio.out_pa_callback().set(FUNC(kramermc_state::kramermc_port_a_w)); + pio.in_pb_callback().set(FUNC(kramermc_state::kramermc_port_b_r)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index b8fe5530823..03723b879ee 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -351,15 +351,15 @@ MACHINE_CONFIG_START(lc80_state::lc80) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, lc80_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, lc80_state, ctc_z2_w)) - MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 900000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, lc80_state, pio1_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, lc80_state, pio1_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, lc80_state, pio1_pb_w)) + z80pio_device& pio1(Z80PIO(config, Z80PIO1_TAG, 900000)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(lc80_state::pio1_pa_w)); + pio1.in_pb_callback().set(FUNC(lc80_state::pio1_pb_r)); + pio1.out_pb_callback().set(FUNC(lc80_state::pio1_pb_w)); - MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 900000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, lc80_state, pio2_pb_r)) + Z80PIO(config, m_pio2, 900000); + m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio2->in_pb_callback().set(FUNC(lc80_state::pio2_pb_r)); MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) @@ -388,15 +388,15 @@ MACHINE_CONFIG_START(lc80_state::lc80_2) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, lc80_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, lc80_state, ctc_z2_w)) - MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 900000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, lc80_state, pio1_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, lc80_state, pio1_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, lc80_state, pio1_pb_w)) + z80pio_device& pio1(Z80PIO(config, Z80PIO1_TAG, 900000)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(lc80_state::pio1_pa_w)); + pio1.in_pb_callback().set(FUNC(lc80_state::pio1_pb_r)); + pio1.out_pb_callback().set(FUNC(lc80_state::pio1_pb_w)); - MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 900000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, lc80_state, pio2_pb_r)) + Z80PIO(config, m_pio2, 900000); + m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio2->in_pb_callback().set(FUNC(lc80_state::pio2_pb_r)); MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp index c6056525986..06cf7bd8b95 100644 --- a/src/mame/drivers/llc.cpp +++ b/src/mame/drivers/llc.cpp @@ -223,14 +223,14 @@ MACHINE_CONFIG_START(llc_state::llc1) MCFG_PALETTE_ADD_MONOCHROME("palette") config.set_default_layout(layout_llc1); - MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL(3'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, llc_state, llc1_port1_a_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, llc_state, llc1_port1_a_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, llc_state, llc1_port1_b_w)) + z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(3'000'000))); + pio1.in_pa_callback().set(FUNC(llc_state::llc1_port1_a_r)); + pio1.out_pa_callback().set(FUNC(llc_state::llc1_port1_a_w)); + pio1.out_pb_callback().set(FUNC(llc_state::llc1_port1_b_w)); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL(3'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, llc_state, llc1_port2_a_r)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, llc_state, llc1_port2_b_r)) + z80pio_device& pio2(Z80PIO(config, "z80pio2", XTAL(3'000'000))); + pio2.in_pa_callback().set(FUNC(llc_state::llc1_port2_a_r)); + pio2.in_pb_callback().set(FUNC(llc_state::llc1_port2_b_r)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL(3'000'000)) // timer 0 irq does digit display, and timer 3 irq does scan of the @@ -270,13 +270,13 @@ MACHINE_CONFIG_START(llc_state::llc2) MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) - MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL(3'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(K7659_KEYBOARD_TAG, k7659_keyboard_device, read)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, llc_state, llc2_port1_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, llc_state, llc2_port1_b_w)) + z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(3'000'000))); + pio1.in_pa_callback().set(K7659_KEYBOARD_TAG, FUNC(k7659_keyboard_device::read)); + pio1.in_pb_callback().set(FUNC(llc_state::llc2_port1_b_r)); + pio1.out_pb_callback().set(FUNC(llc_state::llc2_port1_b_w)); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL(3'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, llc_state, llc2_port2_a_r)) + z80pio_device& pio2(Z80PIO(config, "z80pio2", XTAL(3'000'000))); + pio2.in_pa_callback().set(FUNC(llc_state::llc2_port2_a_r)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL(3'000'000)) diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp index dbe2515160e..6c71e6a1263 100644 --- a/src/mame/drivers/mbee.cpp +++ b/src/mame/drivers/mbee.cpp @@ -654,12 +654,12 @@ MACHINE_CONFIG_START(mbee_state::mbee) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 12_MHz_XTAL / 6) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, mbee_state, pio_ardy)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mbee_state, pio_port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, mbee_state, pio_port_b_w)) + Z80PIO(config, m_pio, 12_MHz_XTAL / 6); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_pio->out_ardy_callback().set(FUNC(mbee_state::pio_ardy)); + m_pio->in_pb_callback().set(FUNC(mbee_state::pio_port_b_r)); + m_pio->out_pb_callback().set(FUNC(mbee_state::pio_port_b_w)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -711,12 +711,12 @@ MACHINE_CONFIG_START(mbee_state::mbeeic) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 3375000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, mbee_state, pio_ardy)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mbee_state, pio_port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, mbee_state, pio_port_b_w)) + Z80PIO(config, m_pio, 3375000); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_pio->out_ardy_callback().set(FUNC(mbee_state::pio_ardy)); + m_pio->in_pb_callback().set(FUNC(mbee_state::pio_port_b_r)); + m_pio->out_pb_callback().set(FUNC(mbee_state::pio_port_b_w)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -749,7 +749,7 @@ MACHINE_CONFIG_START(mbee_state::mbeeic) MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("z80pio", z80pio_device, strobe_a)) + MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_a)) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") diff --git a/src/mame/drivers/mc8020.cpp b/src/mame/drivers/mc8020.cpp index ac848e7c1f9..70a23be711e 100644 --- a/src/mame/drivers/mc8020.cpp +++ b/src/mame/drivers/mc8020.cpp @@ -316,10 +316,10 @@ MACHINE_CONFIG_START(mc8020_state::mc8020) MCFG_PALETTE_ADD_MONOCHROME("palette") /* devices */ - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(2'457'600)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mc8020_state, port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mc8020_state, port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, mc8020_state, port_b_w)) + z80pio_device& pio(Z80PIO(config, "pio", XTAL(2'457'600))); + pio.out_pa_callback().set(FUNC(mc8020_state::port_a_w)); + pio.in_pb_callback().set(FUNC(mc8020_state::port_b_r)); + pio.out_pb_callback().set(FUNC(mc8020_state::port_b_w)); MCFG_DEVICE_ADD("ctc_clock", CLOCK, XTAL(2'457'600) / 64) // guess MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("ctc", z80ctc_device, trg2)) diff --git a/src/mame/drivers/mc8030.cpp b/src/mame/drivers/mc8030.cpp index be216b3e7df..7cc5140cdd1 100644 --- a/src/mame/drivers/mc8030.cpp +++ b/src/mame/drivers/mc8030.cpp @@ -203,23 +203,23 @@ MACHINE_CONFIG_START(mc8030_state::mc8030) MCFG_PALETTE_ADD_MONOCHROME("palette") /* Devices */ - MCFG_DEVICE_ADD("zve_pio", Z80PIO, XTAL(2'457'600)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, mc8030_state, zve_port_a_r)) - //MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mc8030_state, zve_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mc8030_state, zve_port_b_r)) - //MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, mc8030_state, zve_port_b_w)) + z80pio_device& zve_pio(Z80PIO(config, "zve_pio", XTAL(2'457'600))); + zve_pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + zve_pio.in_pa_callback().set(FUNC(mc8030_state::zve_port_a_r)); + //zve_pio.out_pa_callback().set(FUNC(mc8030_state::zve_port_a_w)); + zve_pio.in_pb_callback().set(FUNC(mc8030_state::zve_port_b_r)); + //zve_pio.out_pb_callback().set(FUNC(mc8030_state::zve_port_b_w)); MCFG_DEVICE_ADD("zve_ctc", Z80CTC, XTAL(2'457'600)) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // ZC0, ZC1, ZC2 for user - MCFG_DEVICE_ADD("asp_pio", Z80PIO, XTAL(2'457'600)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, mc8030_state, asp_port_a_r)) - //MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mc8030_state, asp_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mc8030_state, asp_port_b_r)) - //MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, mc8030_state, asp_port_b_w)) + z80pio_device& asp_pio(Z80PIO(config, "asp_pio", XTAL(2'457'600))); + asp_pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + asp_pio.in_pa_callback().set(FUNC(mc8030_state::asp_port_a_r)); + //asp_pio.out_pa_callback().set(FUNC(mc8030_state::asp_port_a_w)); + asp_pio.in_pb_callback().set(FUNC(mc8030_state::asp_port_b_r)); + //asp_pio.out_pb_callback().set(FUNC(mc8030_state::asp_port_b_w)); MCFG_DEVICE_ADD("asp_ctc", Z80CTC, XTAL(2'457'600)) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/mccpm.cpp b/src/mame/drivers/mccpm.cpp index 302c89cc0c0..abff5e29dcb 100644 --- a/src/mame/drivers/mccpm.cpp +++ b/src/mame/drivers/mccpm.cpp @@ -101,7 +101,7 @@ MACHINE_CONFIG_START(mccpm_state::mccpm) MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w)) MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsa_w)) - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(4'000'000)) + Z80PIO(config, "pio", XTAL(4'000'000)); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp index 7d091ae8232..9aad9555e92 100644 --- a/src/mame/drivers/mcr.cpp +++ b/src/mame/drivers/mcr.cpp @@ -1878,7 +1878,7 @@ MACHINE_CONFIG_START(mcr_nflfoot_state::mcr_91490_ipu) mcr_91490_snt(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("ipu", Z80, 7372800/2) + MCFG_DEVICE_ADD(m_ipu, Z80, 7372800/2) MCFG_Z80_DAISY_CHAIN(mcr_ipu_daisy_chain) MCFG_DEVICE_PROGRAM_MAP(ipu_91695_map) MCFG_DEVICE_IO_MAP(ipu_91695_portmap) @@ -1888,11 +1888,11 @@ MACHINE_CONFIG_START(mcr_nflfoot_state::mcr_91490_ipu) MCFG_DEVICE_ADD("ipu_ctc", Z80CTC, 7372800/2 /* same as "ipu" */) MCFG_Z80CTC_INTR_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("ipu_pio0", Z80PIO, 7372800/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_ipu_pio0, 7372800/2); + m_ipu_pio0->out_int_callback().set_inputline(m_ipu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("ipu_pio1", Z80PIO, 7372800/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_ipu_pio1, 7372800/2); + m_ipu_pio1->out_int_callback().set_inputline(m_ipu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD("ipu_sio", Z80SIO0, 7372800/2) MCFG_Z80DART_OUT_INT_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp index d6d3a8ed9de..04f6a0c5193 100644 --- a/src/mame/drivers/mes.cpp +++ b/src/mame/drivers/mes.cpp @@ -148,8 +148,8 @@ MACHINE_CONFIG_START(mes_state::mes) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_DEVICE_ADD("ctc", Z80CTC, 0) - MCFG_DEVICE_ADD("pio", Z80PIO, 0) + Z80CTC(config, "ctc", 0); + Z80PIO(config, "pio", 0); Z80SIO(config, "sio", 0); MCFG_DEVICE_ADD("keybd", GENERIC_KEYBOARD, 0) diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp index fedc0334e2f..0acdf1726bf 100644 --- a/src/mame/drivers/mpf1.cpp +++ b/src/mame/drivers/mpf1.cpp @@ -365,8 +365,8 @@ MACHINE_CONFIG_START(mpf1_state::mpf1) MCFG_Z80_DAISY_CHAIN(mpf1_daisy_chain) /* devices */ - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(3'579'545)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, XTAL(3'579'545)/2)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL(3'579'545)/2) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -399,8 +399,8 @@ MACHINE_CONFIG_START(mpf1_state::mpf1b) MCFG_Z80_DAISY_CHAIN(mpf1_daisy_chain) /* devices */ - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(3'579'545)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, XTAL(3'579'545)/2)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL(3'579'545)/2) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -439,8 +439,8 @@ MACHINE_CONFIG_START(mpf1_state::mpf1p) config.set_default_layout(layout_mpf1p); /* devices */ - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 2500000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, 2500000)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 2500000) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp index c445b16681d..b56e84163df 100644 --- a/src/mame/drivers/mz2000.cpp +++ b/src/mame/drivers/mz2000.cpp @@ -889,10 +889,10 @@ MACHINE_CONFIG_START(mz2000_state::mz2000) MCFG_I8255_IN_PORTC_CB(READ8(*this, mz2000_state, mz2000_portc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, mz2000_state, mz2000_portc_w)) - MCFG_DEVICE_ADD("z80pio_1", Z80PIO, MASTER_CLOCK) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, mz2000_state, mz2000_pio1_porta_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mz2000_state, mz2000_pio1_porta_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, mz2000_state, mz2000_pio1_portb_r)) + z80pio_device& pio(Z80PIO(config, "z80pio_1", MASTER_CLOCK)); + pio.in_pa_callback().set(FUNC(mz2000_state::mz2000_pio1_porta_r)); + pio.out_pa_callback().set(FUNC(mz2000_state::mz2000_pio1_porta_w)); + pio.in_pb_callback().set(FUNC(mz2000_state::mz2000_pio1_portb_r)); /* TODO: clocks aren't known */ MCFG_DEVICE_ADD("pit", PIT8253, 0) diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp index 5f6a73b9b83..e48dc84b0cd 100644 --- a/src/mame/drivers/mz2500.cpp +++ b/src/mame/drivers/mz2500.cpp @@ -1814,10 +1814,10 @@ MACHINE_CONFIG_START(mz2500_state::mz2500) MCFG_I8255_IN_PORTC_CB(READ8(*this, mz2500_state, mz2500_portc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, mz2500_state, mz2500_portc_w)) - MCFG_DEVICE_ADD("z80pio_1", Z80PIO, 6000000) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, mz2500_state, mz2500_pio1_porta_r)) - 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)) + z80pio_device& pio(Z80PIO(config, "z80pio_1", 6000000)); + pio.in_pa_callback().set(FUNC(mz2500_state::mz2500_pio1_porta_r)); + pio.out_pa_callback().set(FUNC(mz2500_state::mz2500_pio1_porta_w)); + pio.in_pb_callback().set(FUNC(mz2500_state::mz2500_pio1_porta_r)); Z80SIO(config, "z80sio", 6000000); diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp index 66e672bfe01..22e17fae496 100644 --- a/src/mame/drivers/mz700.cpp +++ b/src/mame/drivers/mz700.cpp @@ -456,11 +456,11 @@ MACHINE_CONFIG_START(mz_state::mz800) MCFG_DEVICE_MODIFY("pit8253") MCFG_PIT8253_CLK0(XTAL(17'734'470)/16) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(17'734'470)/5) - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, mz_state, mz800_z80pio_irq)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, mz_state, mz800_z80pio_port_a_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, mz_state, mz800_z80pio_port_a_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(17'734'470)/5)); + pio.out_int_callback().set(FUNC(mz_state::mz800_z80pio_irq)); + pio.in_pa_callback().set(FUNC(mz_state::mz800_z80pio_port_a_r)); + pio.out_pa_callback().set(FUNC(mz_state::mz800_z80pio_port_a_w)); + pio.out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index bb1199b1108..6f861789bd2 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -497,11 +497,11 @@ MACHINE_CONFIG_START(nanos_state::nanos) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, nanos_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, nanos_state, ctc_z2_w)) - MCFG_DEVICE_ADD(m_pio_0, Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio_0, XTAL(4'000'000)); + m_pio_0->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD(m_pio_1, Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio_1, XTAL(4'000'000)); + m_pio_1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); Z80SIO(config, m_sio_0, XTAL(4'000'000)); m_sio_0->out_int_callback().set(FUNC(nanos_state::z80daisy_interrupt)); @@ -509,10 +509,10 @@ MACHINE_CONFIG_START(nanos_state::nanos) 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)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, nanos_state, port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, nanos_state, port_b_w)) + Z80PIO(config, m_pio, XTAL(4'000'000)); + m_pio->in_pa_callback().set(FUNC(nanos_state::port_a_r)); + m_pio->in_pb_callback().set(FUNC(nanos_state::port_b_r)); + m_pio->out_pb_callback().set(FUNC(nanos_state::port_b_w)); /* UPD765 */ MCFG_UPD765A_ADD(m_fdc, false, true) diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp index 472c3071bbc..c2b2f0f8faf 100644 --- a/src/mame/drivers/nascom1.cpp +++ b/src/mame/drivers/nascom1.cpp @@ -690,7 +690,7 @@ MACHINE_CONFIG_START(nascom_state::nascom) MCFG_CASSETTE_ADD("cassette") // pio - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(16'000'000)/8) + Z80PIO(config, "z80pio", XTAL(16'000'000)/8); // internal extra ram RAM(config, m_ram).set_default_size("48K").set_extra_options("8K,16K,32K"); diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp index fc08a2b0856..57b6addba5b 100644 --- a/src/mame/drivers/onyx.cpp +++ b/src/mame/drivers/onyx.cpp @@ -155,13 +155,13 @@ MACHINE_CONFIG_START(onyx_state::c8002) sio1_clock.signal_handler().append(m_sio[0], FUNC(z80sio_device::txca_w)); /* peripheral hardware */ - MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL(16'000'000)/4) - //MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL(16'000'000)/4) - //MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("ctc1", Z80CTC, XTAL(16'000'000) /4) - MCFG_DEVICE_ADD("ctc2", Z80CTC, XTAL(16'000'000) /4) - MCFG_DEVICE_ADD("ctc3", Z80CTC, XTAL(16'000'000) /4) + Z80PIO(config, m_pio[0], XTAL(16'000'000)/4); + //m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + Z80PIO(config, m_pio[1], XTAL(16'000'000)/4); + //m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + Z80CTC(config, m_ctc[0], XTAL(16'000'000) /4); + Z80CTC(config, m_ctc[1], XTAL(16'000'000) /4); + Z80CTC(config, m_ctc[2], XTAL(16'000'000) /4); Z80SIO(config, m_sio[0], XTAL(16'000'000) /4); m_sio[0]->out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd)); m_sio[0]->out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr)); @@ -176,8 +176,9 @@ MACHINE_CONFIG_START(onyx_state::c8002) MCFG_RS232_DCD_HANDLER(WRITELINE("sio1", z80sio_device, dcda_w)) MCFG_RS232_CTS_HANDLER(WRITELINE("sio1", z80sio_device, ctsa_w)) - MCFG_DEVICE_ADD("pio1s", Z80PIO, XTAL(16'000'000)/4) - //MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("subcpu", INPUT_LINE_IRQ0)) + Z80PIO(config, "pio1s", XTAL(16'000'000)/4); + //z80pio_device& pio1s(Z80PIO(config, "pio1s", XTAL(16'000'000)/4)); + //pio1s->out_int_callback().set_inputline("subcpu", INPUT_LINE_IRQ0); clock_device &sio1s_clock(CLOCK(config, "sio1s_clock", 614400)); sio1s_clock.signal_handler().set("sio1s", FUNC(z80sio_device::rxtxcb_w)); @@ -261,13 +262,13 @@ MACHINE_CONFIG_START(onyx_state::c5000) //MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(m_sio[0] ,z80sio_device, txca_w)) /* peripheral hardware */ - //MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL(16'000'000)/4) - //MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - //MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL(16'000'000)/4) - //MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - //MCFG_DEVICE_ADD("ctc1", Z80CTC, XTAL(16'000'000) /4) - //MCFG_DEVICE_ADD("ctc2", Z80CTC, XTAL(16'000'000) /4) - //MCFG_DEVICE_ADD("ctc3", Z80CTC, XTAL(16'000'000) /4) + //Z80PIO(config, m_pio[0], XTAL(16'000'000)/4); + //m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + //Z80PIO(config, m_pio[1], XTAL(16'000'000)/4); + //m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + //Z80CTC(config, m_ctc[0], XTAL(16'000'000) /4); + //Z80CTC(config, m_ctc[1], XTAL(16'000'000) /4); + //Z80CTC(config, m_ctc[2], XTAL(16'000'000) /4); Z80SIO(config, m_sio[0], XTAL(16'000'000) /4); m_sio[0]->out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd)); diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp index 4e94c0b5d90..5aa1240db72 100644 --- a/src/mame/drivers/p8k.cpp +++ b/src/mame/drivers/p8k.cpp @@ -461,15 +461,15 @@ MACHINE_CONFIG_START(p8k_state::p8k) z80sio_device& sio1(Z80SIO(config, "sio1", XTAL(4'000'000))); sio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("pio0", Z80PIO, 1229000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + z80pio_device& pio0(Z80PIO(config, "pio0", 1229000)); + pio0.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("pio1", Z80PIO, 1229000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + z80pio_device& pio1(Z80PIO(config, "pio1", 1229000)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("pio2", Z80PIO, 1229000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(IOPORT("DSW")) + Z80PIO(config, m_pio2, 1229000); + m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio2->in_pa_callback().set_ioport("DSW"); MCFG_I8272A_ADD("i8272", true) MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma", z80dma_device, rdy_w)) @@ -518,14 +518,14 @@ MACHINE_CONFIG_START(p8k_state::p8k_16) z80sio_device& sio1(Z80SIO(config, "sio1", XTAL(4'000'000))); sio1.out_int_callback().set(FUNC(p8k_state::p8k_16_daisy_interrupt)); - MCFG_DEVICE_ADD("pio0", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, p8k_state, p8k_16_daisy_interrupt)) + z80pio_device& pio0(Z80PIO(config, "pio0", XTAL(4'000'000))); + pio0.out_int_callback().set(FUNC(p8k_state::p8k_16_daisy_interrupt)); - MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, p8k_state, p8k_16_daisy_interrupt)) + z80pio_device& pio1(Z80PIO(config, "pio1", XTAL(4'000'000))); + pio1.out_int_callback().set(FUNC(p8k_state::p8k_16_daisy_interrupt)); - MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, p8k_state, p8k_16_daisy_interrupt)) + Z80PIO(config, m_pio2, XTAL(4'000'000)); + m_pio2->out_int_callback().set(FUNC(p8k_state::p8k_16_daisy_interrupt)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp index 4876283539c..a2e8618584b 100644 --- a/src/mame/drivers/pasopia.cpp +++ b/src/mame/drivers/pasopia.cpp @@ -328,10 +328,10 @@ MACHINE_CONFIG_START(pasopia_state::pasopia) MCFG_Z80CTC_ZC1_CB(WRITELINE("z80ctc", z80ctc_device, trg2)) MCFG_Z80CTC_ZC2_CB(WRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, pasopia_state, mux_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, pasopia_state, keyb_r)) + Z80PIO(config, m_pio, XTAL(4'000'000)); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set(FUNC(pasopia_state::mux_w)); + m_pio->in_pb_callback().set(FUNC(pasopia_state::keyb_r)); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp index f356aa8ee58..81752f73fad 100644 --- a/src/mame/drivers/pasopia7.cpp +++ b/src/mame/drivers/pasopia7.cpp @@ -945,10 +945,10 @@ MACHINE_CONFIG_START(pasopia7_state::p7_base) MCFG_Z80CTC_ZC1_CB(WRITELINE("z80ctc", z80ctc_device, trg2)) // beep interface MCFG_Z80CTC_ZC2_CB(WRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, pasopia7_state, mux_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, pasopia7_state, keyb_r)) + Z80PIO(config, m_pio, XTAL(4'000'000)); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set(FUNC(pasopia7_state::mux_w)); + m_pio->in_pb_callback().set(FUNC(pasopia7_state::keyb_r)); MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) MCFG_I8255_IN_PORTA_CB(READ8(*this, pasopia7_state, unk_r)) diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp index b7a75ad0afb..4f521bd362b 100644 --- a/src/mame/drivers/pcm.cpp +++ b/src/mame/drivers/pcm.cpp @@ -284,14 +284,14 @@ MACHINE_CONFIG_START(pcm_state::pcm) MCFG_K7659_KEYBOARD_ADD() MCFG_CASSETTE_ADD("cassette") - MCFG_DEVICE_ADD("pio_u", Z80PIO, XTAL(10'000'000)/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - - MCFG_DEVICE_ADD("pio_s", Z80PIO, XTAL(10'000'000)/4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(K7659_KEYBOARD_TAG, k7659_keyboard_device, read)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, pcm_state, pcm_85_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, pcm_state, pcm_85_w)) + Z80PIO(config, m_pio_u, XTAL(10'000'000)/4); + m_pio_u->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + + Z80PIO(config, m_pio_s, XTAL(10'000'000)/4); + m_pio_s->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio_s->in_pa_callback().set(K7659_KEYBOARD_TAG, FUNC(k7659_keyboard_device::read)); + m_pio_s->in_pb_callback().set(FUNC(pcm_state::pcm_85_r)); + m_pio_s->out_pb_callback().set(FUNC(pcm_state::pcm_85_w)); Z80SIO(config, "sio", XTAL(10'000'000) /4); diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp index e9e13331aea..75a8e30aeb3 100644 --- a/src/mame/drivers/poly880.cpp +++ b/src/mame/drivers/poly880.cpp @@ -261,14 +261,14 @@ MACHINE_CONFIG_START(poly880_state::poly880) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, poly880_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(Z80CTC_TAG, z80ctc_device, trg3)) - MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, XTAL(7'372'800)/16) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, poly880_state, pio1_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, poly880_state, pio1_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, poly880_state, pio1_pb_w)) - - MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, XTAL(7'372'800)/16) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio1(Z80PIO(config, Z80PIO1_TAG, XTAL(7'372'800)/16)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(poly880_state::pio1_pa_w)); + pio1.in_pb_callback().set(FUNC(poly880_state::pio1_pb_r)); + pio1.out_pb_callback().set(FUNC(poly880_state::pio1_pb_w)); + + z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(7'372'800)/16)); + pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp index 7f724b8d678..9e1f33e4674 100644 --- a/src/mame/drivers/polyplay.cpp +++ b/src/mame/drivers/polyplay.cpp @@ -292,12 +292,12 @@ MACHINE_CONFIG_START(polyplay_state::polyplay_zre) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, polyplay_state, ctc_zc1_w)) //MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, polyplay_state, ctc_zc2_w)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, POLYPLAY_MAIN_CLOCK / 4) /* UB855D */ - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80CPU_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, polyplay_state, pio_porta_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, polyplay_state, pio_porta_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, polyplay_state, pio_portb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, polyplay_state, pio_portb_w)) + Z80PIO(config, m_z80pio, POLYPLAY_MAIN_CLOCK / 4); /* UB855D */ + m_z80pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_z80pio->in_pa_callback().set(FUNC(polyplay_state::pio_porta_r)); + m_z80pio->out_pa_callback().set(FUNC(polyplay_state::pio_porta_w)); + m_z80pio->in_pb_callback().set(FUNC(polyplay_state::pio_portb_r)); + m_z80pio->out_pb_callback().set(FUNC(polyplay_state::pio_portb_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp index 0a519b3057d..67643c7a06a 100644 --- a/src/mame/drivers/pro80.cpp +++ b/src/mame/drivers/pro80.cpp @@ -190,7 +190,7 @@ MACHINE_CONFIG_START(pro80_state::pro80) /* Devices */ MCFG_CASSETTE_ADD( "cassette" ) - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(4'000'000) / 2) + Z80PIO(config, "pio", XTAL(4'000'000) / 2); MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", pro80_state, timer_p, attotime::from_hz(40000)) // cass read MACHINE_CONFIG_END diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp index c3b29977d27..443290a563c 100644 --- a/src/mame/drivers/proconn.cpp +++ b/src/mame/drivers/proconn.cpp @@ -272,50 +272,50 @@ MACHINE_CONFIG_START(proconn_state::proconn) MCFG_DEVICE_IO_MAP(proconn_portmap) MCFG_S16LF01_ADD("vfd",0) - MCFG_DEVICE_ADD("z80pio_1", Z80PIO, 4000000) /* ?? Mhz */ - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, proconn_state,pio_1_m_out_int_w)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, proconn_state, pio_1_m_in_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, proconn_state, pio_1_m_out_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, proconn_state, pio_1_m_out_ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, proconn_state, pio_1_m_in_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, proconn_state, pio_1_m_out_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, proconn_state, pio_1_m_out_brdy_w)) - - MCFG_DEVICE_ADD("z80pio_2", Z80PIO, 4000000) /* ?? Mhz */ - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, proconn_state,pio_2_m_out_int_w)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, proconn_state, pio_2_m_in_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, proconn_state, pio_2_m_out_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, proconn_state, pio_2_m_out_ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, proconn_state, pio_2_m_in_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, proconn_state, pio_2_m_out_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, proconn_state, pio_2_m_out_brdy_w)) - - MCFG_DEVICE_ADD("z80pio_3", Z80PIO, 4000000) /* ?? Mhz */ - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, proconn_state,pio_3_m_out_int_w)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, proconn_state, pio_3_m_in_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, proconn_state, pio_3_m_out_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, proconn_state, pio_3_m_out_ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, proconn_state, pio_3_m_in_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, proconn_state, pio_3_m_out_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, proconn_state, pio_3_m_out_brdy_w)) - - MCFG_DEVICE_ADD("z80pio_4", Z80PIO, 4000000) /* ?? Mhz */ - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, proconn_state,pio_4_m_out_int_w)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, proconn_state, pio_4_m_in_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, proconn_state, pio_4_m_out_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, proconn_state, pio_4_m_out_ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, proconn_state, pio_4_m_in_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, proconn_state, pio_4_m_out_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, proconn_state, pio_4_m_out_brdy_w)) - - MCFG_DEVICE_ADD("z80pio_5", Z80PIO, 4000000) /* ?? Mhz */ - MCFG_Z80PIO_OUT_INT_CB(WRITELINE(*this, proconn_state,pio_5_m_out_int_w)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, proconn_state, pio_5_m_in_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, proconn_state, pio_5_m_out_pa_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, proconn_state, pio_5_m_out_ardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, proconn_state, pio_5_m_in_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, proconn_state, pio_5_m_out_pb_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, proconn_state, pio_5_m_out_brdy_w)) + Z80PIO(config, m_z80pio[0], 4000000); /* ?? Mhz */ + m_z80pio[0]->out_int_callback().set(FUNC(proconn_state::pio_1_m_out_int_w)); + m_z80pio[0]->in_pa_callback().set(FUNC(proconn_state::pio_1_m_in_pa_r)); + m_z80pio[0]->out_pa_callback().set(FUNC(proconn_state::pio_1_m_out_pa_w)); + m_z80pio[0]->out_ardy_callback().set(FUNC(proconn_state::pio_1_m_out_ardy_w)); + m_z80pio[0]->in_pb_callback().set(FUNC(proconn_state::pio_1_m_in_pb_r)); + m_z80pio[0]->out_pb_callback().set(FUNC(proconn_state::pio_1_m_out_pb_w)); + m_z80pio[0]->out_brdy_callback().set(FUNC(proconn_state::pio_1_m_out_brdy_w)); + + Z80PIO(config, m_z80pio[1], 4000000); /* ?? Mhz */ + m_z80pio[1]->out_int_callback().set(FUNC(proconn_state::pio_2_m_out_int_w)); + m_z80pio[1]->in_pa_callback().set(FUNC(proconn_state::pio_2_m_in_pa_r)); + m_z80pio[1]->out_pa_callback().set(FUNC(proconn_state::pio_2_m_out_pa_w)); + m_z80pio[1]->out_ardy_callback().set(FUNC(proconn_state::pio_2_m_out_ardy_w)); + m_z80pio[1]->in_pb_callback().set(FUNC(proconn_state::pio_2_m_in_pb_r)); + m_z80pio[1]->out_pb_callback().set(FUNC(proconn_state::pio_2_m_out_pb_w)); + m_z80pio[1]->out_brdy_callback().set(FUNC(proconn_state::pio_2_m_out_brdy_w)); + + Z80PIO(config, m_z80pio[2], 4000000); /* ?? Mhz */ + m_z80pio[2]->out_int_callback().set(FUNC(proconn_state::pio_3_m_out_int_w)); + m_z80pio[2]->in_pa_callback().set(FUNC(proconn_state::pio_3_m_in_pa_r)); + m_z80pio[2]->out_pa_callback().set(FUNC(proconn_state::pio_3_m_out_pa_w)); + m_z80pio[2]->out_ardy_callback().set(FUNC(proconn_state::pio_3_m_out_ardy_w)); + m_z80pio[2]->in_pb_callback().set(FUNC(proconn_state::pio_3_m_in_pb_r)); + m_z80pio[2]->out_pb_callback().set(FUNC(proconn_state::pio_3_m_out_pb_w)); + m_z80pio[2]->out_brdy_callback().set(FUNC(proconn_state::pio_3_m_out_brdy_w)); + + Z80PIO(config, m_z80pio[3], 4000000); /* ?? Mhz */ + m_z80pio[3]->out_int_callback().set(FUNC(proconn_state::pio_4_m_out_int_w)); + m_z80pio[3]->in_pa_callback().set(FUNC(proconn_state::pio_4_m_in_pa_r)); + m_z80pio[3]->out_pa_callback().set(FUNC(proconn_state::pio_4_m_out_pa_w)); + m_z80pio[3]->out_ardy_callback().set(FUNC(proconn_state::pio_4_m_out_ardy_w)); + m_z80pio[3]->in_pb_callback().set(FUNC(proconn_state::pio_4_m_in_pb_r)); + m_z80pio[3]->out_pb_callback().set(FUNC(proconn_state::pio_4_m_out_pb_w)); + m_z80pio[3]->out_brdy_callback().set(FUNC(proconn_state::pio_4_m_out_brdy_w)); + + Z80PIO(config, m_z80pio[4], 4000000); /* ?? Mhz */ + m_z80pio[4]->out_int_callback().set(FUNC(proconn_state::pio_5_m_out_int_w)); + m_z80pio[4]->in_pa_callback().set(FUNC(proconn_state::pio_5_m_in_pa_r)); + m_z80pio[4]->out_pa_callback().set(FUNC(proconn_state::pio_5_m_out_pa_w)); + m_z80pio[4]->out_ardy_callback().set(FUNC(proconn_state::pio_5_m_out_ardy_w)); + m_z80pio[4]->in_pb_callback().set(FUNC(proconn_state::pio_5_m_in_pb_r)); + m_z80pio[4]->out_pb_callback().set(FUNC(proconn_state::pio_5_m_out_pb_w)); + m_z80pio[4]->out_brdy_callback().set(FUNC(proconn_state::pio_5_m_out_brdy_w)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, 4000000) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp index 2cd7d6d1136..c9f1ecee025 100644 --- a/src/mame/drivers/rt1715.cpp +++ b/src/mame/drivers/rt1715.cpp @@ -317,8 +317,8 @@ MACHINE_CONFIG_START(rt1715_state::rt1715) Z80SIO(config, "a29", 9.832_MHz_XTAL / 4); /* floppy */ - MCFG_DEVICE_ADD("a71", Z80PIO, 9.832_MHz_XTAL / 4) - MCFG_DEVICE_ADD("a72", Z80PIO, 9.832_MHz_XTAL / 4) + Z80PIO(config, "a71", 9.832_MHz_XTAL / 4); + Z80PIO(config, "a72", 9.832_MHz_XTAL / 4); /* internal ram */ RAM(config, RAM_TAG).set_default_size("64K").set_default_value(0); diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp index ece405cc9e8..55772bc1337 100644 --- a/src/mame/drivers/sc1.cpp +++ b/src/mame/drivers/sc1.cpp @@ -168,9 +168,9 @@ MACHINE_CONFIG_START(sc1_state::sc1) config.set_default_layout(layout_sc1); /* devices */ - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, sc1_state, pio_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, sc1_state, pio_port_b_r)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(4'000'000))); + pio.out_pa_callback().set(FUNC(sc1_state::pio_port_a_w)); + pio.in_pb_callback().set(FUNC(sc1_state::pio_port_b_r)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp index cc685a0a641..abe351f6cd7 100644 --- a/src/mame/drivers/sc2.cpp +++ b/src/mame/drivers/sc2.cpp @@ -223,11 +223,11 @@ MACHINE_CONFIG_START(sc2_state::sc2) config.set_default_layout(layout_sc2); /* devices */ - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, sc2_state, pio_port_a_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, sc2_state, pio_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, sc2_state, pio_port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, sc2_state, pio_port_b_w)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(4'000'000))); + pio.in_pa_callback().set(FUNC(sc2_state::pio_port_a_r)); + pio.out_pa_callback().set(FUNC(sc2_state::pio_port_a_w)); + pio.in_pb_callback().set(FUNC(sc2_state::pio_port_b_r)); + pio.out_pb_callback().set(FUNC(sc2_state::pio_port_b_w)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp index 24df8de20d3..6e120ed45ed 100644 --- a/src/mame/drivers/senjyo.cpp +++ b/src/mame/drivers/senjyo.cpp @@ -560,9 +560,9 @@ MACHINE_CONFIG_START(senjyo_state::senjyo) MCFG_DEVICE_PROGRAM_MAP(senjyo_sound_map) MCFG_DEVICE_IO_MAP(senjyo_sound_io_map) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 2000000) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("sub", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, senjyo_state, pio_pa_r)) + Z80PIO(config, m_pio, 2000000); + m_pio->out_int_callback().set_inputline("sub", INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(senjyo_state::pio_pa_r)); MCFG_DEVICE_ADD("z80ctc", Z80CTC, 2000000 /* same as "sub" */) MCFG_Z80CTC_INTR_CB(INPUTLINE("sub", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp index a704a203c95..447070fb556 100644 --- a/src/mame/drivers/super6.cpp +++ b/src/mame/drivers/super6.cpp @@ -466,8 +466,8 @@ MACHINE_CONFIG_START(super6_state::super6) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, super6_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, super6_state, io_write_byte)) - MCFG_DEVICE_ADD(m_pio, Z80PIO, 24_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + Z80PIO(config, m_pio, 24_MHz_XTAL / 4); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(m_fdc, WD2793, 24_MHz_XTAL / 12) MCFG_WD_FDC_FORCE_READY diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index e113b2daab3..432a1be75bf 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -713,10 +713,10 @@ MACHINE_CONFIG_START(super80_state::super80) MCFG_Z80_DAISY_CHAIN(super80_daisy_chain) MCFG_MACHINE_RESET_OVERRIDE(super80_state, super80) - MCFG_DEVICE_ADD("z80pio", Z80PIO, MASTER_CLOCK/6) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, super80_state, pio_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, super80_state,pio_port_b_r)) + Z80PIO(config, m_pio, MASTER_CLOCK/6); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set(FUNC(super80_state::pio_port_a_w)); + m_pio->in_pb_callback().set(FUNC(super80_state::pio_port_b_r)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(48.8) @@ -800,10 +800,10 @@ MACHINE_CONFIG_START(super80_state::super80v) MCFG_Z80_DAISY_CHAIN(super80_daisy_chain) MCFG_MACHINE_RESET_OVERRIDE(super80_state, super80r) - MCFG_DEVICE_ADD("z80pio", Z80PIO, MASTER_CLOCK/6) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, super80_state, pio_port_a_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, super80_state,pio_port_b_r)) + Z80PIO(config, m_pio, MASTER_CLOCK/6); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->out_pa_callback().set(FUNC(super80_state::pio_port_a_w)); + m_pio->in_pb_callback().set(FUNC(super80_state::pio_port_b_r)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) diff --git a/src/mame/drivers/superslave.cpp b/src/mame/drivers/superslave.cpp index e3ce203ec06..0c8122eed14 100644 --- a/src/mame/drivers/superslave.cpp +++ b/src/mame/drivers/superslave.cpp @@ -372,8 +372,8 @@ MACHINE_CONFIG_START(superslave_state::superslave) am9519_device &am9519(AM9519(config, AM9519_TAG, 0)); am9519.out_int_callback().set_inputline(Z80_TAG, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(8'000'000)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio(Z80PIO(config, Z80PIO_TAG, XTAL(8'000'000)/2)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80DART_0_TAG, Z80DART, XTAL(8'000'000)/2) MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp index 090749163dc..0e1b84e7872 100644 --- a/src/mame/drivers/sys2900.cpp +++ b/src/mame/drivers/sys2900.cpp @@ -158,8 +158,8 @@ MACHINE_CONFIG_START(sys2900_state::sys2900) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_DEVICE_ADD("ctc", Z80CTC, 0) - MCFG_DEVICE_ADD("pio", Z80PIO, 0) + Z80CTC(config, "ctc", 0); + Z80PIO(config, "pio", 0); Z80SIO(config, "sio1", 0); Z80SIO(config, "sio2", 0); MACHINE_CONFIG_END diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp index b21125b0a31..5343d36a559 100644 --- a/src/mame/drivers/system1.cpp +++ b/src/mame/drivers/system1.cpp @@ -2219,10 +2219,11 @@ MACHINE_CONFIG_START(system1_state::sys1pio) MCFG_DEVICE_IO_MAP(system1_pio_io_map) MCFG_DEVICE_REMOVE("ppi8255") - MCFG_DEVICE_ADD("pio", Z80PIO, MASTER_CLOCK) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, system1_state, soundport_w)) - MCFG_Z80PIO_OUT_ARDY_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, system1_state, videomode_w)) + + Z80PIO(config, m_pio, MASTER_CLOCK); + m_pio->out_pa_callback().set(FUNC(system1_state::soundport_w)); + m_pio->out_ardy_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); + m_pio->out_pb_callback().set(FUNC(system1_state::videomode_w)); MACHINE_CONFIG_END #define ENCRYPTED_SYS1PPI_MAPS \ diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp index 7bbc95a861b..8526b77efb8 100644 --- a/src/mame/drivers/tiki100.cpp +++ b/src/mame/drivers/tiki100.cpp @@ -733,12 +733,12 @@ MACHINE_CONFIG_START(tiki100_state::tiki100) MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 8_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8("cent_data_in", input_buffer_device, bus_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, tiki100_state, pio_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, tiki100_state, pio_pb_w)) + Z80PIO(config, m_pio, 8_MHz_XTAL / 4); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set("cent_data_in", FUNC(input_buffer_device::bus_r)); + m_pio->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_pio->in_pb_callback().set(FUNC(tiki100_state::pio_pb_r)); + m_pio->out_pb_callback().set(FUNC(tiki100_state::pio_pb_w)); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 8_MHz_XTAL / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/tranz330.cpp b/src/mame/drivers/tranz330.cpp index 3968a1e49f9..5dbd12c4257 100644 --- a/src/mame/drivers/tranz330.cpp +++ b/src/mame/drivers/tranz330.cpp @@ -156,10 +156,10 @@ void tranz330_state::tranz330(machine_config &config) .output_handler().set_inputline(m_cpu, INPUT_LINE_IRQ0); Z80PIO(config, m_pio, XTAL(7'159'090)/2); //* - m_pio->set_out_int_callback(DEVCB_WRITELINE("irq", input_merger_device, in_w<0>)); //* - m_pio->set_out_pa_callback(DEVCB_WRITE8(*this, tranz330_state, pio_a_w)); - m_pio->set_in_pa_callback(DEVCB_READ8(*this, tranz330_state, card_r)); - m_pio->set_in_pb_callback(DEVCB_READ8(*this, tranz330_state, pio_b_r)); + m_pio->out_int_callback().set("irq", FUNC(input_merger_device::in_w<0>)); //* + m_pio->out_pa_callback().set(FUNC(tranz330_state::pio_a_w)); + m_pio->in_pa_callback().set(FUNC(tranz330_state::card_r)); + m_pio->in_pb_callback().set(FUNC(tranz330_state::pio_b_r)); Z80DART(config, m_dart, XTAL(7'159'090)/2); //* m_dart->set_out_syncb_callback(DEVCB_WRITELINE(*this, tranz330_state, syncb_w)); diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp index 031240ccbba..8081d8488ab 100644 --- a/src/mame/drivers/trs80m2.cpp +++ b/src/mame/drivers/trs80m2.cpp @@ -733,7 +733,7 @@ MACHINE_CONFIG_START(trs80m2_state::trs80m2) // devices MCFG_DEVICE_ADD(FD1791_TAG, FD1791, 8_MHz_XTAL / 4) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITE8(Z80PIO_TAG, z80pio_device, pa_w)) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITE8(m_pio, z80pio_device, pa_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(Z80DMA_TAG, z80dma_device, rdy_w)) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats) @@ -756,18 +756,18 @@ MACHINE_CONFIG_START(trs80m2_state::trs80m2) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, trs80m2_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, trs80m2_state, io_write_byte)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 8_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, trs80m2_state, pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, trs80m2_state, pio_pa_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, trs80m2_state, strobe_w)) + Z80PIO(config, m_pio, 8_MHz_XTAL / 2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(trs80m2_state::pio_pa_r)); + m_pio->out_pa_callback().set(FUNC(trs80m2_state::pio_pa_w)); + m_pio->out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_pio->out_brdy_callback().set(FUNC(trs80m2_state::strobe_w)); MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO0, 8_MHz_XTAL / 2) MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(Z80PIO_TAG, z80pio_device, strobe_b)) + MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_b)) MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_busy)) MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_fault)) MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_perror)) @@ -821,7 +821,7 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16) // devices MCFG_DEVICE_ADD(FD1791_TAG, FD1791, 8_MHz_XTAL / 4) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITE8(Z80PIO_TAG, z80pio_device, pa_w)) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITE8(m_pio, z80pio_device, pa_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(Z80DMA_TAG, z80dma_device, rdy_w)) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats) @@ -844,12 +844,12 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16) MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, trs80m2_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, trs80m2_state, io_write_byte)) - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 8_MHz_XTAL / 2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, trs80m2_state, pio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, trs80m2_state, pio_pa_w)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(*this, trs80m2_state, strobe_w)) + Z80PIO(config, m_pio, 8_MHz_XTAL / 2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(trs80m2_state::pio_pa_r)); + m_pio->out_pa_callback().set(FUNC(trs80m2_state::pio_pa_w)); + m_pio->out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_pio->out_brdy_callback().set(FUNC(trs80m2_state::strobe_w)); MCFG_DEVICE_ADD(Z80SIO_TAG, Z80SIO0, 8_MHz_XTAL / 2) MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -858,7 +858,7 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16) m_uic->out_int_callback().set_inputline(M68000_TAG, M68K_IRQ_5); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(Z80PIO_TAG, z80pio_device, strobe_b)) + MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_b)) MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_busy)) MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_fault)) MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_perror)) diff --git a/src/mame/drivers/ts816.cpp b/src/mame/drivers/ts816.cpp index c1706da9907..c6972a3827b 100644 --- a/src/mame/drivers/ts816.cpp +++ b/src/mame/drivers/ts816.cpp @@ -295,11 +295,11 @@ MACHINE_CONFIG_START(ts816_state::ts816) z80sio_device& sio9(Z80SIO(config, "sio9", XTAL(16'000'000) / 4)); sio9.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(16'000'000) / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - //MCFG_Z80PIO_IN_PA_CB(READ8(*this, ts816_state, porta_r)) - //MCFG_Z80PIO_IN_PB_CB(READ8(*this, ts816_state, portb_r)) - //MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, ts816_state, portb_w)) + z80pio_device& pio(Z80PIO(config, "pio", XTAL(16'000'000) / 4)); + pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + //pio.in_pa_callback().set(FUNC(ts816_state::porta_r)); + //pio.in_pb_callback().set(FUNC(ts816_state::portb_r)); + //pio.out_pb_callback().set(FUNC(ts816_state::portb_w)); MCFG_DEVICE_ADD("ctc1", Z80CTC, XTAL(16'000'000) / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp index 18dfb6f43d0..dda437ae35e 100644 --- a/src/mame/drivers/vcs80.cpp +++ b/src/mame/drivers/vcs80.cpp @@ -227,10 +227,10 @@ MACHINE_CONFIG_START(vcs80_state::vcs80) config.set_default_layout(layout_vcs80); /* devices */ - MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL(5'000'000)/2) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, vcs80_state, pio_pa_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, vcs80_state, pio_pb_w)) + Z80PIO(config, m_pio, XTAL(5'000'000)/2); + m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio->in_pa_callback().set(FUNC(vcs80_state::pio_pa_r)); + m_pio->out_pb_callback().set(FUNC(vcs80_state::pio_pb_w)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("1K"); diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp index 91ff2451263..b71305b08a8 100644 --- a/src/mame/drivers/victory.cpp +++ b/src/mame/drivers/victory.cpp @@ -221,13 +221,13 @@ MACHINE_CONFIG_START(victory_state::victory) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // PIO interrupts are disconnected - MCFG_DEVICE_ADD("pio1", Z80PIO, VICTORY_MAIN_CPU_CLOCK) // at K8 - MCFG_Z80PIO_IN_PA_CB(IOPORT("DIAL")) - MCFG_Z80PIO_IN_PB_CB(IOPORT("COIN")) + z80pio_device& pio1(Z80PIO(config, "pio1", VICTORY_MAIN_CPU_CLOCK)); // at K8 + pio1.in_pa_callback().set_ioport("DIAL"); + pio1.in_pb_callback().set_ioport("COIN"); - MCFG_DEVICE_ADD("pio2", Z80PIO, VICTORY_MAIN_CPU_CLOCK) // at L8 - MCFG_Z80PIO_IN_PA_CB(IOPORT("BUTTONS")) - MCFG_Z80PIO_IN_PB_CB(IOPORT("UNUSED")) + z80pio_device& pio2(Z80PIO(config, "pio2", VICTORY_MAIN_CPU_CLOCK)); // at L8 + pio2.in_pa_callback().set_ioport("BUTTONS"); + pio2.in_pb_callback().set_ioport("UNUSED"); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp index 8ffbd51c03a..0596f45d028 100644 --- a/src/mame/drivers/xerox820.cpp +++ b/src/mame/drivers/xerox820.cpp @@ -611,14 +611,14 @@ MACHINE_CONFIG_START(xerox820_state::xerox820) MCFG_PALETTE_ADD_MONOCHROME("palette") /* devices */ - MCFG_DEVICE_ADD(Z80PIO_KB_TAG, Z80PIO, 20_MHz_XTAL / 8) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, xerox820_state, kbpio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, xerox820_state, kbpio_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, xerox820_state, kbpio_pb_r)) + Z80PIO(config, m_kbpio, 20_MHz_XTAL / 8); + m_kbpio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_kbpio->in_pa_callback().set(FUNC(xerox820_state::kbpio_pa_r)); + m_kbpio->out_pa_callback().set(FUNC(xerox820_state::kbpio_pa_w)); + m_kbpio->in_pb_callback().set(FUNC(xerox820_state::kbpio_pb_r)); - MCFG_DEVICE_ADD(Z80PIO_GP_TAG, Z80PIO, 20_MHz_XTAL / 8) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + z80pio_device& pio_gp(Z80PIO(config, Z80PIO_GP_TAG, 20_MHz_XTAL / 8)); + pio_gp.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 20_MHz_XTAL / 8) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -653,7 +653,7 @@ MACHINE_CONFIG_START(xerox820_state::xerox820) dbrg.ft_handler().set(m_sio, FUNC(z80dart_device::rxtxcb_w)); MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0) - MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(Z80PIO_KB_TAG, z80pio_device, strobe_b)) + MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(m_kbpio, z80pio_device, strobe_b)) /* internal ram */ RAM(config, m_ram).set_default_size("64K"); @@ -692,22 +692,22 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* devices */ - MCFG_DEVICE_ADD(Z80PIO_KB_TAG, Z80PIO, 16_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, xerox820_state, kbpio_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, xerox820_state, kbpio_pa_w)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, xerox820_state, kbpio_pb_r)) - - MCFG_DEVICE_ADD(Z80PIO_GP_TAG, Z80PIO, 16_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - - MCFG_DEVICE_ADD(Z80PIO_RD_TAG, Z80PIO, 20_MHz_XTAL / 8) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8("sasi_data_in", input_buffer_device, bus_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8("sasi_data_out", output_latch_device, bus_w)) - MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(*this, xerox820ii_state, rdpio_pardy_w)) - MCFG_Z80PIO_IN_PB_CB(READ8("sasi_ctrl_in", input_buffer_device, bus_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, xerox820ii_state, rdpio_pb_w)) + Z80PIO(config, m_kbpio, 16_MHz_XTAL / 4); + m_kbpio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_kbpio->in_pa_callback().set(FUNC(xerox820_state::kbpio_pa_r)); + m_kbpio->out_pa_callback().set(FUNC(xerox820_state::kbpio_pa_w)); + m_kbpio->in_pb_callback().set(FUNC(xerox820_state::kbpio_pb_r)); + + z80pio_device& pio_gp(Z80PIO(config, Z80PIO_GP_TAG, 16_MHz_XTAL / 4)); + pio_gp.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + + z80pio_device& pio_rd(Z80PIO(config, Z80PIO_RD_TAG, 20_MHz_XTAL / 8)); + pio_rd.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio_rd.in_pa_callback().set("sasi_data_in", FUNC(input_buffer_device::bus_r)); + pio_rd.out_pa_callback().set("sasi_data_out", FUNC(output_latch_device::bus_w)); + pio_rd.out_ardy_callback().set(FUNC(xerox820ii_state::rdpio_pardy_w)); + pio_rd.in_pb_callback().set("sasi_ctrl_in", FUNC(input_buffer_device::bus_r)); + pio_rd.out_pb_callback().set(FUNC(xerox820ii_state::rdpio_pb_w)); MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 16_MHz_XTAL / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -742,7 +742,7 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii) dbrg.ft_handler().set(m_sio, FUNC(z80dart_device::rxtxcb_w)); MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0) - MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(Z80PIO_KB_TAG, z80pio_device, strobe_b)) + MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(m_kbpio, z80pio_device, strobe_b)) // SASI bus SCSI_PORT(config, m_sasibus, 0); diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp index 5692af62a33..69242021885 100644 --- a/src/mame/drivers/z1013.cpp +++ b/src/mame/drivers/z1013.cpp @@ -394,9 +394,9 @@ MACHINE_CONFIG_START(z1013_state::z1013) WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); /* devices */ - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(1'000'000)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, z1013_state, port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, z1013_state, port_b_w)) + z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(1'000'000))); + pio.in_pb_callback().set(FUNC(z1013_state::port_b_r)); + pio.out_pb_callback().set(FUNC(z1013_state::port_b_w)); MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) @@ -406,9 +406,10 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(z1013_state::z1013k76) z1013(config); - MCFG_DEVICE_REMOVE("z80pio") - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(1'000'000)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, z1013_state, k7659_port_b_r)) + + z80pio_device &pio(*subdevice("z80pio")); + pio.in_pb_callback().set(FUNC(z1013_state::k7659_port_b_r)); + pio.out_pb_callback().set_nop(); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp index 489451bf276..336d723a0b7 100644 --- a/src/mame/drivers/z9001.cpp +++ b/src/mame/drivers/z9001.cpp @@ -235,12 +235,12 @@ MACHINE_CONFIG_START(z9001_state::z9001) MCFG_GENERIC_KEYBOARD_CB(PUT(z9001_state, kbd_put)) MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10)) - MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL(9'830'400) / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, z9001_state, port88_w)) + z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(9'830'400) / 4)); + pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + pio1.out_pa_callback().set(FUNC(z9001_state::port88_w)); - MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL(9'830'400) / 4) // keyboard PIO - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + z80pio_device& pio2(Z80PIO(config, "z80pio2", XTAL(9'830'400) / 4)); // keyboard PIO + pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL(9'830'400) / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/machine/cedar_magnet_plane.cpp b/src/mame/machine/cedar_magnet_plane.cpp index 0c74542281a..0fd0301d2c9 100644 --- a/src/mame/machine/cedar_magnet_plane.cpp +++ b/src/mame/machine/cedar_magnet_plane.cpp @@ -76,19 +76,19 @@ MACHINE_CONFIG_START(cedar_magnet_plane_device::device_add_mconfig) MCFG_DEVICE_PROGRAM_MAP(cedar_magnet_plane_map) MCFG_DEVICE_IO_MAP(cedar_magnet_plane_io) - MCFG_DEVICE_ADD("z80pio0", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_plane_device, pio0_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_plane_device, pio0_pa_w)) -// MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_plane_device, pio0_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_plane_device, pio0_pb_w)) - - MCFG_DEVICE_ADD("z80pio1", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) -// MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_plane_device, pio1_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_plane_device, pio1_pa_w)) -// MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_plane_device, pio1_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_plane_device, pio1_pb_w)) + z80pio_device& pio0(Z80PIO(config, "z80pio0", 4000000/2)); +// pio0.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); + pio0.in_pa_callback().set(FUNC(cedar_magnet_plane_device::pio0_pa_r)); + pio0.out_pa_callback().set(FUNC(cedar_magnet_plane_device::pio0_pa_w)); +// pio0.in_pb_callback().set(FUNC(cedar_magnet_plane_device::pio0_pb_r)); + pio0.out_pb_callback().set(FUNC(cedar_magnet_plane_device::pio0_pb_w)); + + z80pio_device& pio1(Z80PIO(config, "z80pio1", 4000000/2)); +// pio1.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); +// pio1.in_pa_callback().set(FUNC(cedar_magnet_plane_device::pio1_pa_r)); + pio1.out_pa_callback().set(FUNC(cedar_magnet_plane_device::pio1_pa_w)); +// pio1.in_pb_callback().set(FUNC(cedar_magnet_plane_device::pio1_pb_r)); + pio1.out_pb_callback().set(FUNC(cedar_magnet_plane_device::pio1_pb_w)); MACHINE_CONFIG_END diff --git a/src/mame/machine/cedar_magnet_sprite.cpp b/src/mame/machine/cedar_magnet_sprite.cpp index af8c3e85b71..4c21f4da167 100644 --- a/src/mame/machine/cedar_magnet_sprite.cpp +++ b/src/mame/machine/cedar_magnet_sprite.cpp @@ -206,26 +206,27 @@ MACHINE_CONFIG_START(cedar_magnet_sprite_device::device_add_mconfig) MCFG_DEVICE_PROGRAM_MAP(cedar_magnet_sprite_map) MCFG_DEVICE_IO_MAP(cedar_magnet_sprite_io) - MCFG_DEVICE_ADD("z80pio0", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_sprite_device, pio0_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_sprite_device, pio0_pa_w)) -// MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_sprite_device, pio0_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_sprite_device, pio0_pb_w)) - - MCFG_DEVICE_ADD("z80pio1", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) -// MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_sprite_device, pio1_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_sprite_device, pio1_pa_w)) -// MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_sprite_device, pio1_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_sprite_device, pio1_pb_w)) - - MCFG_DEVICE_ADD("z80pio2", Z80PIO, 4000000/2) -// MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) -// MCFG_Z80PIO_IN_PA_CB(READ8(*this, cedar_magnet_sprite_device, pio2_pa_r)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, cedar_magnet_sprite_device, pio2_pa_w)) -// MCFG_Z80PIO_IN_PB_CB(READ8(*this, cedar_magnet_sprite_device, pio2_pb_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, cedar_magnet_sprite_device, pio2_pb_w)) + Z80PIO(config, m_pio0, 4000000/2); +// m_pio0->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); + m_pio0->in_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio0_pa_r)); + m_pio0->out_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio0_pa_w)); +// m_pio0->in_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio0_pb_r)); + m_pio0->out_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio0_pb_w)); + + Z80PIO(config, m_pio1, 4000000/2); +// m_pio1->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); +// m_pio1->in_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio1_pa_r)); + m_pio1->out_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio1_pa_w)); +// m_pio1->in_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio1_pb_r)); + m_pio1->out_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio1_pb_w)); + + Z80PIO(config, m_pio2, 4000000/2); +// m_pio2->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); +// m_pio2->in_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio2_pa_r)); + m_pio2->out_pa_callback().set(FUNC(cedar_magnet_sprite_device::pio2_pa_w)); +// m_pio2->in_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio2_pb_r)); + m_pio2->out_pb_callback().set(FUNC(cedar_magnet_sprite_device::pio2_pb_w)); + ADDRESS_MAP_BANK(config, "sp_sub_ram").set_map(&cedar_magnet_sprite_device::cedar_magnet_sprite_sub_ram_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000); MACHINE_CONFIG_END -- cgit v1.2.3