From 25b08cec6bd4f5ed88ed6eeef7e188fb0b17b9a3 Mon Sep 17 00:00:00 2001 From: smf- Date: Sun, 22 Dec 2013 22:05:13 +0000 Subject: [PATCH] replaced read rx callback in Z80DART (and clones) with a write handler, which allows multiple chips to be connected together without using glue methods. [smf] --- src/emu/bus/abcbus/sio.c | 6 ++- src/emu/bus/wangpc/mcc.c | 12 ++++-- src/emu/bus/wangpc/rtc.c | 8 ++-- src/emu/machine/z80dart.c | 29 +++++++++----- src/emu/machine/z80dart.h | 7 ++-- src/mess/drivers/abc1600.c | 18 +++++++-- src/mess/drivers/abc80x.c | 75 ++++++++++++++++++++--------------- src/mess/drivers/altos5.c | 5 +-- src/mess/drivers/ampro.c | 4 +- src/mess/drivers/apricot.c | 3 +- src/mess/drivers/apricotf.c | 8 ++-- src/mess/drivers/apricotp.c | 8 ++-- src/mess/drivers/attache.c | 6 ++- src/mess/drivers/bigbord2.c | 8 ++-- src/mess/drivers/bullet.c | 16 ++++++-- src/mess/drivers/bw12.c | 10 +++-- src/mess/drivers/compis.c | 10 +++-- src/mess/drivers/huebler.c | 13 +++--- src/mess/drivers/isbc.c | 16 ++++++-- src/mess/drivers/mikromik.c | 5 ++- src/mess/drivers/mtx.c | 8 ++-- src/mess/drivers/mz2500.c | 6 ++- src/mess/drivers/nanos.c | 16 +++++--- src/mess/drivers/osbexec.c | 8 ++-- src/mess/drivers/pcm.c | 6 ++- src/mess/drivers/qx10.c | 13 ++++-- src/mess/drivers/rt1715.c | 6 ++- src/mess/drivers/super6.c | 12 ++++-- src/mess/drivers/superslave.c | 20 +++++++--- src/mess/drivers/tdv2324.c | 6 ++- src/mess/drivers/tiki100.c | 12 ++++-- src/mess/drivers/trs80m2.c | 8 ++-- src/mess/drivers/victor9k.c | 4 +- src/mess/drivers/x1.c | 8 ++-- src/mess/drivers/x1twin.c | 8 ++-- src/mess/drivers/xerox820.c | 13 ++++-- src/mess/includes/abc1600.h | 1 + src/mess/includes/abc80x.h | 6 +-- src/mess/includes/huebler.h | 3 ++ src/mess/machine/abc77.c | 12 +----- src/mess/machine/abc77.h | 1 - src/mess/machine/abc800kb.c | 12 +----- src/mess/machine/abc800kb.h | 1 - src/mess/machine/abc99.c | 31 ++++++++++----- src/mess/machine/abc99.h | 3 +- src/mess/machine/abckb.c | 25 +++++------- src/mess/machine/abckb.h | 39 +++++++++--------- src/mess/machine/mc80.c | 6 ++- src/mess/machine/tf20.c | 2 - 49 files changed, 339 insertions(+), 224 deletions(-) diff --git a/src/emu/bus/abcbus/sio.c b/src/emu/bus/abcbus/sio.c index 2ea28e36237..eabd3663010 100644 --- a/src/emu/bus/abcbus/sio.c +++ b/src/emu/bus/abcbus/sio.c @@ -97,15 +97,17 @@ static Z80DART_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/emu/bus/wangpc/mcc.c b/src/emu/bus/wangpc/mcc.c index c496277af49..ece33c4984f 100644 --- a/src/emu/bus/wangpc/mcc.c +++ b/src/emu/bus/wangpc/mcc.c @@ -66,15 +66,17 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; @@ -92,15 +94,17 @@ static Z80DART_INTERFACE( dart_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/emu/bus/wangpc/rtc.c b/src/emu/bus/wangpc/rtc.c index bb8396589da..7d783334266 100644 --- a/src/emu/bus/wangpc/rtc.c +++ b/src/emu/bus/wangpc/rtc.c @@ -166,16 +166,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/emu/machine/z80dart.c b/src/emu/machine/z80dart.c index beabd129dff..f770e6b7c30 100644 --- a/src/emu/machine/z80dart.c +++ b/src/emu/machine/z80dart.c @@ -166,13 +166,11 @@ void z80dart_device::device_config_complete() { m_rxca = m_txca = m_rxcb = m_txcb = 0; - memset(&m_in_rxda_cb, 0, sizeof(m_in_rxda_cb)); memset(&m_out_txda_cb, 0, sizeof(m_out_txda_cb)); memset(&m_out_dtra_cb, 0, sizeof(m_out_dtra_cb)); memset(&m_out_rtsa_cb, 0, sizeof(m_out_rtsa_cb)); memset(&m_out_wrdya_cb, 0, sizeof(m_out_wrdya_cb)); memset(&m_out_synca_cb, 0, sizeof(m_out_synca_cb)); - memset(&m_in_rxdb_cb, 0, sizeof(m_in_rxdb_cb)); memset(&m_out_txdb_cb, 0, sizeof(m_out_txdb_cb)); memset(&m_out_dtrb_cb, 0, sizeof(m_out_dtrb_cb)); memset(&m_out_rtsb_cb, 0, sizeof(m_out_rtsb_cb)); @@ -200,7 +198,6 @@ void z80dart_device::device_start() m_chanA->m_rxc = m_rxca; m_chanA->m_txc = m_txca; - m_chanA->m_in_rxd_cb = m_in_rxda_cb; m_chanA->m_out_txd_cb = m_out_txda_cb; m_chanA->m_out_dtr_cb = m_out_dtra_cb; m_chanA->m_out_rts_cb = m_out_rtsa_cb; @@ -213,8 +210,6 @@ void z80dart_device::device_start() m_chanB->m_rxc = m_rxcb; m_chanB->m_txc = m_txcb; - m_chanB->m_in_rxd_cb = m_in_rxdb_cb; - m_chanB->m_in_rxd_cb = m_in_rxdb_cb; m_chanB->m_out_txd_cb = m_out_txdb_cb; m_chanB->m_out_dtr_cb = m_out_dtrb_cb; m_chanB->m_out_rts_cb = m_out_rtsb_cb; @@ -509,7 +504,6 @@ void z80dart_channel::device_start() m_index = m_uart->get_channel_index(this); // resolve callbacks - m_in_rxd_func.resolve(m_in_rxd_cb, *m_uart); m_out_txd_func.resolve(m_out_txd_cb, *m_uart); m_out_dtr_func.resolve(m_out_dtr_cb, *m_uart); m_out_rts_func.resolve(m_out_rts_cb, *m_uart); @@ -654,10 +648,7 @@ void z80dart_channel::rcv_callback() { if (m_wr[3] & WR3_RX_ENABLE) { - if (m_in_rxd_func.isnull()) - receive_register_update_bit(get_in_data_bit()); - else - receive_register_update_bit(m_in_rxd_func()); + receive_register_update_bit(get_in_data_bit()); } } @@ -1331,3 +1322,21 @@ void z80dart_channel::set_rts(int state) serial_connection_out(); } + + +//------------------------------------------------- +// write_rx - +//------------------------------------------------- + +WRITE_LINE_MEMBER(z80dart_channel::write_rx) +{ + if (state) + { + input_callback(m_input_state | RX); + } + else + { + input_callback(m_input_state & ~RX); + } +} + diff --git a/src/emu/machine/z80dart.h b/src/emu/machine/z80dart.h index cbf1341b172..d0549917ac8 100644 --- a/src/emu/machine/z80dart.h +++ b/src/emu/machine/z80dart.h @@ -218,14 +218,12 @@ struct z80dart_interface int m_rxcb; int m_txcb; - devcb_read_line m_in_rxda_cb; devcb_write_line m_out_txda_cb; devcb_write_line m_out_dtra_cb; devcb_write_line m_out_rtsa_cb; devcb_write_line m_out_wrdya_cb; devcb_write_line m_out_synca_cb; - devcb_read_line m_in_rxdb_cb; devcb_write_line m_out_txdb_cb; devcb_write_line m_out_dtrb_cb; devcb_write_line m_out_rtsb_cb; @@ -272,6 +270,7 @@ public: void receive_data(UINT8 data); + DECLARE_WRITE_LINE_MEMBER( write_rx ); DECLARE_WRITE_LINE_MEMBER( cts_w ); DECLARE_WRITE_LINE_MEMBER( dcd_w ); DECLARE_WRITE_LINE_MEMBER( ri_w ); @@ -279,7 +278,6 @@ public: DECLARE_WRITE_LINE_MEMBER( txc_w ); DECLARE_WRITE_LINE_MEMBER( sync_w ); - devcb_read_line m_in_rxd_cb; devcb_write_line m_out_txd_cb; devcb_write_line m_out_dtr_cb; devcb_write_line m_out_rts_cb; @@ -437,7 +435,6 @@ protected: int get_rx_word_length(); int get_tx_word_length(); - devcb_resolved_read_line m_in_rxd_func; devcb_resolved_write_line m_out_txd_func; devcb_resolved_write_line m_out_dtr_func; devcb_resolved_write_line m_out_rts_func; @@ -497,6 +494,8 @@ public: // interrupt acknowledge int m1_r(); + DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_chanA->write_rx(state); } + DECLARE_WRITE_LINE_MEMBER( rxb_w ) { m_chanB->write_rx(state); } DECLARE_WRITE_LINE_MEMBER( ctsa_w ) { m_chanA->cts_w(state); } DECLARE_WRITE_LINE_MEMBER( ctsb_w ) { m_chanB->cts_w(state); } DECLARE_WRITE_LINE_MEMBER( dcda_w ) { m_chanA->dcd_w(state); } diff --git a/src/mess/drivers/abc1600.c b/src/mess/drivers/abc1600.c index 10bce6de13c..b183e12d933 100644 --- a/src/mess/drivers/abc1600.c +++ b/src/mess/drivers/abc1600.c @@ -616,21 +616,23 @@ static Z80DART_INTERFACE( dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r), DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(MC68008P8_TAG, M68K_IRQ_5) // shared with SCC + DEVCB_CPU_INPUT_LINE(MC68008P8_TAG, M68K_IRQ_5), // shared with SCC + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -952,9 +954,17 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state ) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":0", abc1600_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":1", abc1600_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) - MCFG_ABC_KEYBOARD_PORT_ADD("abc99", DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z8470AB1_TAG, z80dart_device, dcdb_w)) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxa_w)) + + MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc99") + MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxb_w)) + MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxtxcb_w)) + MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(DEVWRITELINE(Z8470AB1_TAG, z80dart_device, dcdb_w)) + MCFG_ABCBUS_SLOT_ADD("bus0i", abc1600bus_cards, NULL) MCFG_ABCBUS_SLOT_IRQ_CALLBACK(DEVWRITELINE(Z8536B1_TAG, z8536_device, pa7_w)) MCFG_ABCBUS_SLOT_ADD("bus0x", abc1600bus_cards, NULL) diff --git a/src/mess/drivers/abc80x.c b/src/mess/drivers/abc80x.c index 19fbe1b342b..a215b3f5d89 100644 --- a/src/mess/drivers/abc80x.c +++ b/src/mess/drivers/abc80x.c @@ -700,11 +700,6 @@ void abc800_state::clock_cassette(int state) m_ctc_z0 = state; } -READ_LINE_MEMBER( abc800_state::sio_rxdb_r ) -{ - return m_sio_rxdb; -} - WRITE_LINE_MEMBER( abc800_state::sio_txdb_w ) { m_sio_txdb = state; @@ -742,21 +737,23 @@ static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(abc800_state, sio_rxdb_r), DEVCB_DRIVER_LINE_MEMBER(abc800_state, sio_txdb_w), DEVCB_DRIVER_LINE_MEMBER(abc800_state, sio_dtrb_w), DEVCB_DRIVER_LINE_MEMBER(abc800_state, sio_rtsb_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -768,21 +765,23 @@ static Z80DART_INTERFACE( abc800_dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r), DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -806,21 +805,23 @@ static Z80DART_INTERFACE( abc802_dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r), DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w), DEVCB_DRIVER_LINE_MEMBER(abc802_state, lrs_w), DEVCB_DRIVER_LINE_MEMBER(abc802_state, mux80_40_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -839,21 +840,22 @@ static Z80DART_INTERFACE( abc806_dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r), DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w), DEVCB_DRIVER_LINE_MEMBER(abc806_state, keydtr_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -913,7 +915,7 @@ void abc800_state::device_timer(emu_timer &timer, device_timer_id id, int param, if (m_dfd_in && !dfd_in) { - m_sio_rxdb = !(m_tape_ctr == 15); + m_sio->rxb_w(!(m_tape_ctr == 15)); } if (!dfd_in && (m_tape_ctr == 15)) @@ -947,9 +949,6 @@ void abc800_state::machine_start() save_item(NAME(m_pling)); save_item(NAME(m_sb)); save_item(NAME(m_ctc_z0)); - save_item(NAME(m_sio_rxdb)); - save_item(NAME(m_sio_rxcb)); - save_item(NAME(m_sio_txcb)); save_item(NAME(m_sio_txdb)); save_item(NAME(m_sio_rtsb)); save_item(NAME(m_dfd_out)); @@ -996,9 +995,6 @@ void abc802_state::machine_start() save_item(NAME(m_pling)); save_item(NAME(m_sb)); save_item(NAME(m_ctc_z0)); - save_item(NAME(m_sio_rxdb)); - save_item(NAME(m_sio_rxcb)); - save_item(NAME(m_sio_txcb)); save_item(NAME(m_sio_txdb)); save_item(NAME(m_sio_rtsb)); save_item(NAME(m_dfd_out)); @@ -1068,9 +1064,6 @@ void abc806_state::machine_start() save_item(NAME(m_fetch_charram)); save_item(NAME(m_map)); save_item(NAME(m_ctc_z0)); - save_item(NAME(m_sio_rxdb)); - save_item(NAME(m_sio_rxcb)); - save_item(NAME(m_sio_txcb)); save_item(NAME(m_sio_txdb)); save_item(NAME(m_sio_rtsb)); save_item(NAME(m_dfd_out)); @@ -1149,14 +1142,19 @@ static MACHINE_CONFIG_START( abc800c, abc800c_state ) MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) - MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) + MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc800") + MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) + MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) + MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc830") @@ -1199,14 +1197,19 @@ static MACHINE_CONFIG_START( abc800m, abc800m_state ) MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) - MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) + MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc800") + MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) + MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) + MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc830") @@ -1249,14 +1252,19 @@ static MACHINE_CONFIG_START( abc802, abc802_state ) MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) - MCFG_ABC_KEYBOARD_PORT_ADD("abc55", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) + MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc55") + MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) + MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) + MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc834") @@ -1292,14 +1300,19 @@ static MACHINE_CONFIG_START( abc806, abc806_state ) MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc806_dart_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) - MCFG_ABC_KEYBOARD_PORT_ADD("abc77", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) + MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc77") + MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) + MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) + MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "abc832") diff --git a/src/mess/drivers/altos5.c b/src/mess/drivers/altos5.c index 593b20c05b2..9319ad4f229 100644 --- a/src/mess/drivers/altos5.c +++ b/src/mess/drivers/altos5.c @@ -382,7 +382,6 @@ static Z80DART_INTERFACE( dart_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, // printer DEVCB_NULL, @@ -390,7 +389,6 @@ static Z80DART_INTERFACE( dart_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), DEVCB_NULL, @@ -405,7 +403,6 @@ static Z80SIO_INTERFACE( sio_intf ) 0, 0, 0, 0, // console#2 - DEVCB_NULL, // ChA in data DEVCB_NULL, // out data DEVCB_NULL, // DTR DEVCB_NULL, // RTS @@ -413,7 +410,6 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, // SYNC // console#1 - DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w), @@ -501,6 +497,7 @@ static MACHINE_CONFIG_START( altos5, altos5_state ) MCFG_Z80SIO0_ADD("z80sio", XTAL_8MHz / 2, sio_intf ) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("z80sio", z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("z80sio", z80dart_device, dcdb_w)) MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("z80sio", z80dart_device, rib_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("z80sio", z80dart_device, ctsb_w)) diff --git a/src/mess/drivers/ampro.c b/src/mess/drivers/ampro.c index 6e31c0e9468..a5f092eda72 100644 --- a/src/mess/drivers/ampro.c +++ b/src/mess/drivers/ampro.c @@ -122,14 +122,12 @@ static Z80DART_INTERFACE( dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, // ChB in data DEVCB_NULL, // out data DEVCB_NULL, // DTR DEVCB_NULL, // RTS @@ -201,6 +199,8 @@ static MACHINE_CONFIG_START( ampro, ampro_state ) MCFG_Z80CTC_ADD( "z80ctc", XTAL_16MHz / 4, ctc_intf ) MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, dart_intf ) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("z80dart", z80dart_device, rxa_w)) + MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", ampro_state, ctc_tick, attotime::from_hz(XTAL_16MHz / 8)) MCFG_WD1772x_ADD("fdc", XTAL_16MHz / 2) MCFG_FLOPPY_DRIVE_ADD("fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index 0e8f975f9d3..e1889b4857f 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -190,7 +190,6 @@ static Z80SIO_INTERFACE( apricot_z80sio_intf ) XTAL_4MHz / 16, XTAL_4MHz / 16, // channel a - DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w), @@ -199,7 +198,6 @@ static Z80SIO_INTERFACE( apricot_z80sio_intf ) // channel b DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(apricot_state, data_selector_dtr_w), DEVCB_DRIVER_LINE_MEMBER(apricot_state, data_selector_rts_w), DEVCB_NULL, @@ -408,6 +406,7 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) // note: missing a receive clock callback to support external clock mode // (m_data_selector_rts == 1 and m_data_selector_dtr == 0) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ic15", z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ic15", z80dart_device, dcda_w)) MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ic15", z80dart_device, synca_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w)) diff --git a/src/mess/drivers/apricotf.c b/src/mess/drivers/apricotf.c index 2ee3811b940..d98d3f0442d 100644 --- a/src/mess/drivers/apricotf.c +++ b/src/mess/drivers/apricotf.c @@ -245,16 +245,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(f1_state, sio_int_w) + DEVCB_DRIVER_LINE_MEMBER(f1_state, sio_int_w), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c index e5bc2e07229..adaab62ab87 100644 --- a/src/mess/drivers/apricotp.c +++ b/src/mess/drivers/apricotp.c @@ -488,16 +488,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w) + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/attache.c b/src/mess/drivers/attache.c index 93c6ee96534..b68a4a78984 100644 --- a/src/mess/drivers/attache.c +++ b/src/mess/drivers/attache.c @@ -900,15 +900,17 @@ static Z80SIO_INTERFACE( sio_interface ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/drivers/bigbord2.c b/src/mess/drivers/bigbord2.c index bb0304b79d7..025b3156f7e 100644 --- a/src/mess/drivers/bigbord2.c +++ b/src/mess/drivers/bigbord2.c @@ -431,16 +431,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(bigbord2_state, bigbord2_interrupt) + DEVCB_DRIVER_LINE_MEMBER(bigbord2_state, bigbord2_interrupt), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index 00f98596b1c..34de3211aa3 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -760,21 +760,23 @@ static Z80DART_INTERFACE( dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_DRIVER_LINE_MEMBER(bullet_state, dartardy_w), DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_DRIVER_LINE_MEMBER(bullet_state, dartbrdy_w), DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -1220,9 +1222,13 @@ static MACHINE_CONFIG_START( bullet, bullet_state ) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) // software lists MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet") @@ -1262,9 +1268,13 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state ) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) MCFG_SCSIBUS_ADD(SCSIBUS_TAG) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) diff --git a/src/mess/drivers/bw12.c b/src/mess/drivers/bw12.c index 9bfcb753cdf..64ddd9000e3 100644 --- a/src/mess/drivers/bw12.c +++ b/src/mess/drivers/bw12.c @@ -450,21 +450,23 @@ static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /* PIT8253 Interface */ @@ -654,10 +656,12 @@ static MACHINE_CONFIG_START( common, bw12_state ) MCFG_AY3600_ADD(AY3600PRO002_TAG, 0, bw12_ay3600_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcdb_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w)) diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index 869848bdb9c..50fe301eac6 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -641,21 +641,23 @@ static I8274_INTERFACE( mpsc_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int3_w) + DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int3_w), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -762,10 +764,12 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_CASSETTE_ADD(CASSETTE_TAG, compis_cassette_interface) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcdb_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsb_w)) diff --git a/src/mess/drivers/huebler.c b/src/mess/drivers/huebler.c index c6b1b0c7bd8..61e82fa4dde 100644 --- a/src/mess/drivers/huebler.c +++ b/src/mess/drivers/huebler.c @@ -284,9 +284,9 @@ static Z80PIO_INTERFACE( pio2_intf ) /* Z80-SIO Interface */ -READ_LINE_MEMBER(amu880_state::cassette_r) +TIMER_DEVICE_CALLBACK_MEMBER( amu880_state::tape_tick ) { - return m_cassette->input() < 0.0; + m_z80sio->rxa_w(m_cassette->input() < 0.0); } WRITE_LINE_MEMBER(amu880_state::cassette_w) @@ -298,7 +298,6 @@ static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, - DEVCB_DRIVER_LINE_MEMBER(amu880_state, cassette_r), DEVCB_DRIVER_LINE_MEMBER(amu880_state, cassette_w), DEVCB_NULL, DEVCB_NULL, @@ -310,9 +309,12 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /* Z80 Daisy Chain */ @@ -409,6 +411,7 @@ static MACHINE_CONFIG_START( amu880, amu880_state ) MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_10MHz/4, sio_intf) // U856 MCFG_CASSETTE_ADD("cassette", amu880_cassette_interface) + MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", amu880_state, tape_tick, attotime::from_hz(44100)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c index d479c7e3b2e..127b1a454a4 100644 --- a/src/mess/drivers/isbc.c +++ b/src/mess/drivers/isbc.c @@ -137,6 +137,11 @@ static const serial_terminal_interface terminal_intf = DEVCB_DEVICE_LINE_MEMBER("uart8251", i8251_device, write_rx) }; +static const serial_terminal_interface isbc_terminal_intf = +{ + DEVCB_DEVICE_LINE_MEMBER("uart8274", z80dart_device, rxb_w) +}; + static const struct pit8253_interface isbc86_pit_config = { { @@ -228,21 +233,23 @@ static I8274_INTERFACE(isbc_uart8274_interface) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, tx_r), DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, rx_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w) + DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; static const i8251_interface isbc_uart8251_interface = @@ -316,6 +323,7 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, isbc_uart8274_interface) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart8274", z80dart_device, ctsa_w)) @@ -330,7 +338,7 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_ISBC_215_IRQ(DEVWRITELINE("pic_0", pic8259_device, ir5_w)) /* video hardware */ - MCFG_SERIAL_TERMINAL_ADD("terminal", terminal_intf, 9600) + MCFG_SERIAL_TERMINAL_ADD("terminal", isbc_terminal_intf, 9600) MCFG_DEVICE_INPUT_DEFAULTS(isbc286_terminal) MACHINE_CONFIG_END diff --git a/src/mess/drivers/mikromik.c b/src/mess/drivers/mikromik.c index c6f903c6e9d..7b28920cd92 100644 --- a/src/mess/drivers/mikromik.c +++ b/src/mess/drivers/mikromik.c @@ -628,7 +628,6 @@ static UPD7201_INTERFACE( mpsc_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), @@ -640,7 +639,6 @@ static UPD7201_INTERFACE( mpsc_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mm1_state, drq2_w), // receive DRQ @@ -756,7 +754,10 @@ static MACHINE_CONFIG_START( mm1, mm1_state ) MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_6_144MHz/2, mpsc_intf) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", mm1_floppies, "525qd", mm1_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", mm1_floppies, "525qd", mm1_state::floppy_formats) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_RS232_PORT_ADD(RS232_C_TAG, default_rs232_devices, NULL) diff --git a/src/mess/drivers/mtx.c b/src/mess/drivers/mtx.c index 7d306e7736d..e85cbf0b7ac 100644 --- a/src/mess/drivers/mtx.c +++ b/src/mess/drivers/mtx.c @@ -260,16 +260,18 @@ static Z80DART_INTERFACE( dart_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /*------------------------------------------------- diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c index 15e5a72bca7..0974cc5f08a 100644 --- a/src/mess/drivers/mz2500.c +++ b/src/mess/drivers/mz2500.c @@ -2120,15 +2120,17 @@ static Z80SIO_INTERFACE( mz2500_sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/drivers/nanos.c b/src/mess/drivers/nanos.c index 500fc2b1b92..461b4701b56 100644 --- a/src/mess/drivers/nanos.c +++ b/src/mess/drivers/nanos.c @@ -168,16 +168,18 @@ static Z80SIO_INTERFACE( sio1_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(nanos_state, z80daisy_interrupt) + DEVCB_DRIVER_LINE_MEMBER(nanos_state, z80daisy_interrupt), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; static Z80SIO_INTERFACE( sio2_intf ) @@ -189,16 +191,18 @@ static Z80SIO_INTERFACE( sio2_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(nanos_state, z80daisy_interrupt) + DEVCB_DRIVER_LINE_MEMBER(nanos_state, z80daisy_interrupt), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /* Z80 Daisy Chain */ diff --git a/src/mess/drivers/osbexec.c b/src/mess/drivers/osbexec.c index fa29768d2ac..55272a41e76 100644 --- a/src/mess/drivers/osbexec.c +++ b/src/mess/drivers/osbexec.c @@ -464,16 +464,18 @@ static Z80SIO_INTERFACE( osbexec_sio_config ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL //DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_NULL, //DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/pcm.c b/src/mess/drivers/pcm.c index 7f2b99a83a4..37d266fa636 100644 --- a/src/mess/drivers/pcm.c +++ b/src/mess/drivers/pcm.c @@ -278,15 +278,17 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index a56c163d315..8b1b7458acb 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -465,26 +465,28 @@ static UPD7201_INTERFACE(qx10_upd7201_interface) { 0, 0, 0, 0, // channel b clock set by pit2 channel 2 - DEVCB_DEVICE_LINE_MEMBER("kbd", serial_keyboard_device, tx_r), DEVCB_DEVICE_LINE_MEMBER("kbd", serial_keyboard_device, rx_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(qx10_state, keyboard_irq) + DEVCB_DRIVER_LINE_MEMBER(qx10_state, keyboard_irq), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; static struct serial_keyboard_interface qx10_keyboard_interface = { - DEVCB_NULL + DEVCB_DEVICE_LINE_MEMBER("upd7201", z80dart_device, rxa_w) }; WRITE_LINE_MEMBER(qx10_state::keyboard_irq) @@ -874,7 +876,10 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) MCFG_UPD765A_ADD("upd765", true, true) MCFG_FLOPPY_DRIVE_ADD("upd765:0", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("upd7201", upd7201_device, rxb_w)) + MCFG_QX10_KEYBOARD_ADD("kbd", qx10_keyboard_interface) /* internal ram */ diff --git a/src/mess/drivers/rt1715.c b/src/mess/drivers/rt1715.c index 849e7988d46..5147cec7a61 100644 --- a/src/mess/drivers/rt1715.c +++ b/src/mess/drivers/rt1715.c @@ -280,15 +280,17 @@ static Z80SIO_INTERFACE( rt1715_sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/drivers/super6.c b/src/mess/drivers/super6.c index 92e42ec9ec5..c2ae9498494 100644 --- a/src/mess/drivers/super6.c +++ b/src/mess/drivers/super6.c @@ -371,21 +371,23 @@ static Z80DART_INTERFACE( dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -561,9 +563,13 @@ static MACHINE_CONFIG_START( super6, super6_state ) MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, NULL, WRITELINE(super6_state, fr_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", super6_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", super6_floppies, NULL, floppy_image_device::default_floppy_formats) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c index ba5c60cf95a..631ed7c3cd9 100644 --- a/src/mess/drivers/superslave.c +++ b/src/mess/drivers/superslave.c @@ -276,21 +276,23 @@ static Z80DART_INTERFACE( dart0_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -302,21 +304,23 @@ static Z80DART_INTERFACE( dart1_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; @@ -403,19 +407,23 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, NULL, WRITELINE(superslave_state, fr_w), WRITELINE(superslave_state, ft_w)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, ctsa_w)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, dcdb_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, ctsb_w)) MCFG_RS232_PORT_ADD(RS232_C_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_D_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, dcdb_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, ctsb_w)) diff --git a/src/mess/drivers/tdv2324.c b/src/mess/drivers/tdv2324.c index b0fabde5e79..f271fea2918 100644 --- a/src/mess/drivers/tdv2324.c +++ b/src/mess/drivers/tdv2324.c @@ -296,15 +296,17 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c index 9f0243a838f..b1eb943f615 100644 --- a/src/mess/drivers/tiki100.c +++ b/src/mess/drivers/tiki100.c @@ -468,21 +468,22 @@ static Z80DART_INTERFACE( dart_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /* Z80-PIO Interface */ @@ -707,8 +708,13 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state ) MCFG_FD1797x_ADD(FD1797_TAG, XTAL_8MHz/8) // FD1767PL-02 or FD1797-PL MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", tiki100_floppies, "525qd", tiki100_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", tiki100_floppies, "525qd", tiki100_state::floppy_formats) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) + MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD(CASSETTE_TAG, cassette_intf) MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", tiki100_state, tape_tick, attotime::from_hz(44100)) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index 0e33b03d9c7..d6d52b0fbdb 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -649,16 +649,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index b5be86d9ccd..5cff6ba028b 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -380,14 +380,12 @@ static UPD7201_INTERFACE( mpsc_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), @@ -1254,11 +1252,13 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w)) MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ria_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxb_w)) MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcdb_w)) MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c index 3a72700699e..993ddab55aa 100644 --- a/src/mess/drivers/x1.c +++ b/src/mess/drivers/x1.c @@ -2284,16 +2284,18 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; static const z80_daisy_config x1_daisy[] = diff --git a/src/mess/drivers/x1twin.c b/src/mess/drivers/x1twin.c index 1a4306a123e..2c046ce6abd 100644 --- a/src/mess/drivers/x1twin.c +++ b/src/mess/drivers/x1twin.c @@ -450,16 +450,18 @@ static Z80DART_INTERFACE( sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c index 004e7d4d789..554191d4ea3 100644 --- a/src/mess/drivers/xerox820.c +++ b/src/mess/drivers/xerox820.c @@ -423,21 +423,23 @@ static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) + DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL }; /* Z80 CTC */ @@ -702,8 +704,13 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state ) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":0", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":1", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xerox820_state, fr_w), DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80sio0_device, rxa_w)) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80sio0_device, rxb_w)) + MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) /* internal ram */ diff --git a/src/mess/includes/abc1600.h b/src/mess/includes/abc1600.h index 829e0e1600f..064a599a402 100644 --- a/src/mess/includes/abc1600.h +++ b/src/mess/includes/abc1600.h @@ -45,6 +45,7 @@ #define BUS2_TAG "bus2" #define RS232_A_TAG "rs232a" #define RS232_B_TAG "rs232b" +#define ABC_KEYBOARD_PORT_TAG "kb" diff --git a/src/mess/includes/abc80x.h b/src/mess/includes/abc80x.h index 684c0ad111e..a147d1965b3 100644 --- a/src/mess/includes/abc80x.h +++ b/src/mess/includes/abc80x.h @@ -61,6 +61,7 @@ #define DISCRETE_TAG "discrete" #define RS232_A_TAG "rs232a" #define RS232_B_TAG "rs232b" +#define ABC_KEYBOARD_PORT_TAG "kb" //************************************************************************** @@ -86,7 +87,6 @@ public: m_char_ram(*this, "char_ram"), m_io_sb(*this, "SB"), m_ctc_z0(0), - m_sio_rxdb(1), m_sio_txcb(0), m_sio_txdb(1), m_sio_rtsb(1), @@ -123,7 +123,6 @@ public: void clock_cassette(int state); DECLARE_READ8_MEMBER( pling_r ); - DECLARE_READ_LINE_MEMBER( keyboard_txd_r ); DECLARE_READ8_MEMBER( keyboard_col_r ); DECLARE_WRITE8_MEMBER( keyboard_row_w ); DECLARE_WRITE8_MEMBER( keyboard_ctrl_w ); @@ -133,7 +132,6 @@ public: DECLARE_WRITE_LINE_MEMBER( ctc_z0_w ); DECLARE_WRITE_LINE_MEMBER( ctc_z1_w ); DECLARE_WRITE_LINE_MEMBER( ctc_z2_w ); - DECLARE_READ_LINE_MEMBER( sio_rxdb_r ); DECLARE_WRITE_LINE_MEMBER( sio_txdb_w ); DECLARE_WRITE_LINE_MEMBER( sio_dtrb_w ); DECLARE_WRITE_LINE_MEMBER( sio_rtsb_w ); @@ -151,8 +149,6 @@ public: // serial state UINT8 m_sb; int m_ctc_z0; - int m_sio_rxdb; - int m_sio_rxcb; int m_sio_txcb; int m_sio_txdb; int m_sio_rtsb; diff --git a/src/mess/includes/huebler.h b/src/mess/includes/huebler.h index c1b3d270350..0b2e0315aa8 100644 --- a/src/mess/includes/huebler.h +++ b/src/mess/includes/huebler.h @@ -25,6 +25,7 @@ public: amu880_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_cassette(*this, "cassette"), + m_z80sio(*this, Z80SIO_TAG), m_kb_rom(*this, "keyboard"), m_char_rom(*this, "chargen"), m_video_ram(*this, "video_ram"), @@ -51,6 +52,7 @@ public: { } required_device m_cassette; + required_device m_z80sio; required_memory_region m_kb_rom; required_memory_region m_char_rom; required_shared_ptr m_video_ram; @@ -77,6 +79,7 @@ public: UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER( keyboard_r ); + TIMER_DEVICE_CALLBACK_MEMBER( tape_tick ); void scan_keyboard(); diff --git a/src/mess/machine/abc77.c b/src/mess/machine/abc77.c index 4789501a188..8d1ad08d1d9 100644 --- a/src/mess/machine/abc77.c +++ b/src/mess/machine/abc77.c @@ -383,6 +383,8 @@ inline void abc77_device::serial_output(int state) if (m_txd != state) { m_txd = state; + + m_slot->write_rx(m_txd); } } @@ -526,16 +528,6 @@ void abc77_device::device_timer(emu_timer &timer, device_timer_id id, int param, } -//------------------------------------------------- -// rxd_r - -//------------------------------------------------- - -int abc77_device::rxd_r() -{ - return m_txd; -} - - //------------------------------------------------- // txd_w - //------------------------------------------------- diff --git a/src/mess/machine/abc77.h b/src/mess/machine/abc77.h index 78d2dc158e3..f34285ce06b 100644 --- a/src/mess/machine/abc77.h +++ b/src/mess/machine/abc77.h @@ -42,7 +42,6 @@ public: virtual ioport_constructor device_input_ports() const; // abc_keyboard_interface overrides - virtual int rxd_r(); virtual void txd_w(int state); DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset ); diff --git a/src/mess/machine/abc800kb.c b/src/mess/machine/abc800kb.c index 897e16e01e8..55a18604f86 100644 --- a/src/mess/machine/abc800kb.c +++ b/src/mess/machine/abc800kb.c @@ -293,6 +293,8 @@ inline void abc800_keyboard_device::serial_output(int state) if (m_txd != state) { m_txd = state; + + m_slot->write_rx(m_txd); } } @@ -396,16 +398,6 @@ void abc800_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, } -//------------------------------------------------- -// rxd_r - -//------------------------------------------------- - -int abc800_keyboard_device::rxd_r() -{ - return m_txd; -} - - //------------------------------------------------- // txd_w - //------------------------------------------------- diff --git a/src/mess/machine/abc800kb.h b/src/mess/machine/abc800kb.h index d00bfe2f3af..f669a76763a 100644 --- a/src/mess/machine/abc800kb.h +++ b/src/mess/machine/abc800kb.h @@ -41,7 +41,6 @@ public: virtual ioport_constructor device_input_ports() const; // abc_keyboard_interface overrides - virtual int rxd_r(); virtual void txd_w(int state); // not really public diff --git a/src/mess/machine/abc99.c b/src/mess/machine/abc99.c index fc5899e5e1f..a4272a52213 100644 --- a/src/mess/machine/abc99.c +++ b/src/mess/machine/abc99.c @@ -430,6 +430,21 @@ inline void abc99_device::serial_input() } +//------------------------------------------------- +// serial_output - +//------------------------------------------------- + +inline void abc99_device::serial_output(int state) +{ + if (m_txd != state) + { + m_txd = state; + + m_slot->write_rx(m_txd); + } +} + + //------------------------------------------------- // serial_clock - //------------------------------------------------- @@ -489,7 +504,8 @@ abc99_device::abc99_device(const machine_config &mconfig, const char *tag, devic m_t1_z2(0), m_t1_z5(0), m_led_en(0), - m_reset(1) + m_reset(1), + m_txd(1) { } @@ -516,6 +532,7 @@ void abc99_device::device_start() save_item(NAME(m_t1_z5)); save_item(NAME(m_led_en)); save_item(NAME(m_reset)); + save_item(NAME(m_txd)); } @@ -550,16 +567,6 @@ void abc99_device::device_timer(emu_timer &timer, device_timer_id id, int param, } -//------------------------------------------------- -// rxd_r - -//------------------------------------------------- - -int abc99_device::rxd_r() -{ - return m_so_z2 && m_so_z5; -} - - //------------------------------------------------- // txd_w - //------------------------------------------------- @@ -616,6 +623,7 @@ WRITE8_MEMBER( abc99_device::z2_p1_w ) // serial output m_so_z2 = BIT(data, 0); + serial_output(m_so_z2 && m_so_z5); // key down key_down(!BIT(data, 1)); @@ -758,6 +766,7 @@ WRITE8_MEMBER( abc99_device::z5_p2_w ) // serial output m_so_z5 = BIT(data, 6); + serial_output(m_so_z2 && m_so_z5); // keyboard CPU T1 m_t1_z2 = BIT(data, 7); diff --git a/src/mess/machine/abc99.h b/src/mess/machine/abc99.h index f754679f996..f93953ef83b 100644 --- a/src/mess/machine/abc99.h +++ b/src/mess/machine/abc99.h @@ -40,7 +40,6 @@ public: virtual ioport_constructor device_input_ports() const; // abc_keyboard_interface overrides - virtual int rxd_r(); virtual void txd_w(int state); DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset ); @@ -83,6 +82,7 @@ private: }; inline void serial_input(); + inline void serial_output(int state); inline void serial_clock(); inline void key_down(int state); inline void scan_mouse(); @@ -108,6 +108,7 @@ private: int m_t1_z5; int m_led_en; int m_reset; + int m_txd; }; diff --git a/src/mess/machine/abckb.c b/src/mess/machine/abckb.c index 48a208e31bd..60319fd7ecd 100644 --- a/src/mess/machine/abckb.c +++ b/src/mess/machine/abckb.c @@ -52,8 +52,9 @@ abc_keyboard_interface::abc_keyboard_interface(const machine_config &mconfig, de abc_keyboard_port_device::abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, ABC_KEYBOARD_PORT, "Luxor ABC keyboard port", tag, owner, clock, "abc_keyboard_port", __FILE__), device_slot_interface(mconfig, *this), - m_write_trxc(*this), - m_write_keydown(*this) + m_out_rx_handler(*this), + m_out_trxc_handler(*this), + m_out_keydown_handler(*this) { } @@ -67,8 +68,9 @@ void abc_keyboard_port_device::device_start() m_card = dynamic_cast(get_card_device()); // resolve callbacks - m_write_trxc.resolve_safe(); - m_write_keydown.resolve_safe(); + m_out_rx_handler.resolve_safe(); + m_out_trxc_handler.resolve_safe(); + m_out_keydown_handler.resolve_safe(); } @@ -84,17 +86,12 @@ void abc_keyboard_port_device::device_reset() //------------------------------------------------- -// rxd_r - +// write_rx - //------------------------------------------------- -READ_LINE_MEMBER( abc_keyboard_port_device::rxd_r ) +WRITE_LINE_MEMBER( abc_keyboard_port_device::write_rx ) { - int state = 1; - - if (m_card != NULL) - state = m_card->rxd_r(); - - return state; + m_out_rx_handler(state); } @@ -115,7 +112,7 @@ WRITE_LINE_MEMBER( abc_keyboard_port_device::txd_w ) WRITE_LINE_MEMBER( abc_keyboard_port_device::trxc_w ) { - m_write_trxc(state); + m_out_trxc_handler(state); } @@ -125,7 +122,7 @@ WRITE_LINE_MEMBER( abc_keyboard_port_device::trxc_w ) WRITE_LINE_MEMBER( abc_keyboard_port_device::keydown_w ) { - m_write_keydown(state); + m_out_keydown_handler(state); } diff --git a/src/mess/machine/abckb.h b/src/mess/machine/abckb.h index 6995520b544..f9c050b11ed 100644 --- a/src/mess/machine/abckb.h +++ b/src/mess/machine/abckb.h @@ -18,22 +18,22 @@ -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define ABC_KEYBOARD_PORT_TAG "kb" - - - //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_ABC_KEYBOARD_PORT_ADD(_def_slot, _trxc, _keydown) \ - MCFG_DEVICE_ADD(ABC_KEYBOARD_PORT_TAG, ABC_KEYBOARD_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(abc_keyboard_devices, _def_slot, false) \ - downcast(device)->set_callbacks(DEVCB2_##_trxc, DEVCB2_##_keydown); +#define MCFG_ABC_KEYBOARD_PORT_ADD(_tag, _def_slot) \ + MCFG_DEVICE_ADD(_tag, ABC_KEYBOARD_PORT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(abc_keyboard_devices, _def_slot, false) + +#define MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(_devcb) \ + devcb = &abc_keyboard_port_device::set_out_rx_handler(*device, DEVCB2_##_devcb); + +#define MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(_devcb) \ + devcb = &abc_keyboard_port_device::set_out_trxc_handler(*device, DEVCB2_##_devcb); + +#define MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(_devcb) \ + devcb = &abc_keyboard_port_device::set_out_keydown_handler(*device, DEVCB2_##_devcb); @@ -50,16 +50,15 @@ public: // construction/destruction abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - template void set_callbacks(_trxc trxc, _keydown keydown) { - m_write_trxc.set_callback(trxc); - m_write_keydown.set_callback(keydown); - } + template static devcb2_base &set_out_rx_handler(device_t &device, _Object object) { return downcast(device).m_out_rx_handler.set_callback(object); } + template static devcb2_base &set_out_trxc_handler(device_t &device, _Object object) { return downcast(device).m_out_trxc_handler.set_callback(object); } + template static devcb2_base &set_out_keydown_handler(device_t &device, _Object object) { return downcast(device).m_out_keydown_handler.set_callback(object); } // computer interface - DECLARE_READ_LINE_MEMBER( rxd_r ); DECLARE_WRITE_LINE_MEMBER( txd_w ); // peripheral interface + DECLARE_WRITE_LINE_MEMBER( write_rx ); DECLARE_WRITE_LINE_MEMBER( trxc_w ); DECLARE_WRITE_LINE_MEMBER( keydown_w ); @@ -68,8 +67,9 @@ protected: virtual void device_start(); virtual void device_reset(); - devcb2_write_line m_write_trxc; - devcb2_write_line m_write_keydown; + devcb2_write_line m_out_rx_handler; + devcb2_write_line m_out_trxc_handler; + devcb2_write_line m_out_keydown_handler; abc_keyboard_interface *m_card; }; @@ -81,7 +81,6 @@ public: // construction/destruction abc_keyboard_interface(const machine_config &mconfig, device_t &device); - virtual int rxd_r() { return 1; }; virtual void txd_w(int state) { }; protected: diff --git a/src/mess/machine/mc80.c b/src/mess/machine/mc80.c index 67552aef017..9ac678da883 100644 --- a/src/mess/machine/mc80.c +++ b/src/mess/machine/mc80.c @@ -201,14 +201,16 @@ Z80SIO_INTERFACE( mc8030_asp_z80sio_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, DEVCB_NULL }; diff --git a/src/mess/machine/tf20.c b/src/mess/machine/tf20.c index 1c7d7d3698e..1e0867f0b7d 100644 --- a/src/mess/machine/tf20.c +++ b/src/mess/machine/tf20.c @@ -93,14 +93,12 @@ static UPD7201_INTERFACE( tf20_upd7201_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,