diff --git a/src/emu/bus/abcbus/sio.c b/src/emu/bus/abcbus/sio.c index 22fdc7c6064..fe4d93ac2e7 100644 --- a/src/emu/bus/abcbus/sio.c +++ b/src/emu/bus/abcbus/sio.c @@ -71,41 +71,13 @@ const rom_entry *abc_sio_device::device_rom_region() const } -//------------------------------------------------- -// Z80DART_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - //------------------------------------------------- // MACHINE_DRIVER( abc_sio ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( abc_sio ) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_4_9152MHz) - MCFG_Z80DART_ADD(Z80SIO_TAG, 0, sio_intf) + MCFG_Z80DART_ADD(Z80SIO_TAG, 0, 0, 0, 0, 0) MACHINE_CONFIG_END diff --git a/src/emu/bus/cpc/cpc_rs232.c b/src/emu/bus/cpc/cpc_rs232.c index 8c991c812ec..c1e0a5c7221 100644 --- a/src/emu/bus/cpc/cpc_rs232.c +++ b/src/emu/bus/cpc/cpc_rs232.c @@ -13,33 +13,6 @@ const device_type CPC_RS232 = &device_creator; -Z80DART_INTERFACE(dart_intf) -{ - 0, //m_rxca; - 0, //m_txca; - 0, //m_rxcb; - 0, //m_txcb; - - DEVCB_DEVICE_LINE_MEMBER("rs232",rs232_port_device,write_txd), //m_out_txda_cb; - DEVCB_DEVICE_LINE_MEMBER("rs232",rs232_port_device,write_dtr), //m_out_dtra_cb; - DEVCB_DEVICE_LINE_MEMBER("rs232",rs232_port_device,write_rts), //m_out_rtsa_cb; - DEVCB_NULL, //m_out_wrdya_cb; - DEVCB_NULL, //m_out_synca_cb; - - DEVCB_NULL, //m_out_txdb_cb; - DEVCB_NULL, //m_out_dtrb_cb; - DEVCB_NULL, //m_out_rtsb_cb; - DEVCB_NULL, //m_out_wrdyb_cb; - DEVCB_NULL, //m_out_syncb_cb; - - DEVCB_NULL, //m_out_int_cb; - DEVCB_NULL, //m_out_rxdrqa_cb; - DEVCB_NULL, //m_out_txdrqa_cb; - DEVCB_NULL, //m_out_rxdrqb_cb; - DEVCB_NULL //m_out_txdrqb_cb; -}; - - // device machine config static MACHINE_CONFIG_FRAGMENT( cpc_rs232 ) MCFG_DEVICE_ADD("pit", PIT8253, 0) @@ -50,7 +23,10 @@ static MACHINE_CONFIG_FRAGMENT( cpc_rs232 ) MCFG_PIT8253_OUT1_HANDLER(WRITELINE(cpc_rs232_device, pit_out1_w)) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(cpc_rs232_device, pit_out2_w)) - MCFG_Z80DART_ADD("dart", XTAL_4MHz, dart_intf) + MCFG_Z80DART_ADD("dart", XTAL_4MHz, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) MCFG_RS232_PORT_ADD("rs232",default_rs232_devices,NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("dart",z80dart_device,rxa_w)) diff --git a/src/emu/bus/epson_sio/tf20.c b/src/emu/bus/epson_sio/tf20.c index 2fa07ca55fc..c90fccc8490 100644 --- a/src/emu/bus/epson_sio/tf20.c +++ b/src/emu/bus/epson_sio/tf20.c @@ -80,29 +80,6 @@ ioport_constructor epson_tf20_device::device_input_ports() const // machine configurations //------------------------------------------------- -static UPD7201_INTERFACE( tf20_upd7201_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, epson_tf20_device, txda_w), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, epson_tf20_device, dtra_w), - 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 -}; - static SLOT_INTERFACE_START( tf20_floppies ) SLOT_INTERFACE( "sd320", EPSON_SD_320 ) SLOT_INTERFACE_END @@ -118,7 +95,9 @@ static MACHINE_CONFIG_FRAGMENT( tf20 ) MCFG_RAM_DEFAULT_SIZE("64k") // upd7201 serial interface - MCFG_UPD7201_ADD("3a", XTAL_CR1 / 2, tf20_upd7201_intf) + MCFG_UPD7201_ADD("3a", XTAL_CR1 / 2, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(epson_tf20_device, txda_w)) + MCFG_Z80DART_OUT_DTRA_CB(WRITELINE(epson_tf20_device, dtra_w)) // floppy disk controller MCFG_UPD765A_ADD("5a", true, true) diff --git a/src/emu/bus/wangpc/mcc.c b/src/emu/bus/wangpc/mcc.c index ece33c4984f..5fac3131f0d 100644 --- a/src/emu/bus/wangpc/mcc.c +++ b/src/emu/bus/wangpc/mcc.c @@ -53,69 +53,13 @@ const device_type WANGPC_MCC = &device_creator; -//------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - -//------------------------------------------------- -// Z80DART_INTERFACE( dart_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( wangpc_mcc ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( wangpc_mcc ) - MCFG_Z80SIO2_ADD(Z80SIO2_TAG, 4000000, sio_intf) - MCFG_Z80DART_ADD(Z80DART_TAG, 4000000, dart_intf) + MCFG_Z80SIO2_ADD(Z80SIO2_TAG, 4000000, 0, 0, 0, 0) + MCFG_Z80DART_ADD(Z80DART_TAG, 4000000, 0, 0, 0, 0) MACHINE_CONFIG_END diff --git a/src/emu/bus/wangpc/rtc.c b/src/emu/bus/wangpc/rtc.c index 7bfb76d7c62..c81ce087485 100644 --- a/src/emu/bus/wangpc/rtc.c +++ b/src/emu/bus/wangpc/rtc.c @@ -126,34 +126,6 @@ static I8237_INTERFACE( dmac_intf ) DEVCB_NULL } }; -//------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( wangpc_rtc ) //------------------------------------------------- @@ -172,7 +144,8 @@ static MACHINE_CONFIG_FRAGMENT( wangpc_rtc ) MCFG_DEVICE_ADD(Z80CTC_1_TAG, Z80CTC, 2000000) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, 2000000, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, 2000000, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MACHINE_CONFIG_END diff --git a/src/emu/machine/z80dart.c b/src/emu/machine/z80dart.c index 672ffd0c1cc..e4553fa4cd9 100644 --- a/src/emu/machine/z80dart.c +++ b/src/emu/machine/z80dart.c @@ -95,6 +95,25 @@ z80dart_device::z80dart_device(const machine_config &mconfig, device_type type, device_z80daisy_interface(mconfig, *this), m_chanA(*this, CHANA_TAG), m_chanB(*this, CHANB_TAG), + m_rxca(0), + m_txca(0), + m_rxcb(0), + m_txcb(0), + m_out_txda_cb(*this), + m_out_dtra_cb(*this), + m_out_rtsa_cb(*this), + m_out_wrdya_cb(*this), + m_out_synca_cb(*this), + m_out_txdb_cb(*this), + m_out_dtrb_cb(*this), + m_out_rtsb_cb(*this), + m_out_wrdyb_cb(*this), + m_out_syncb_cb(*this), + m_out_int_cb(*this), + m_out_rxdrqa_cb(*this), + m_out_txdrqa_cb(*this), + m_out_rxdrqb_cb(*this), + m_out_txdrqb_cb(*this), m_variant(variant) { for (int i = 0; i < 8; i++) @@ -106,6 +125,25 @@ z80dart_device::z80dart_device(const machine_config &mconfig, const char *tag, d device_z80daisy_interface(mconfig, *this), m_chanA(*this, CHANA_TAG), m_chanB(*this, CHANB_TAG), + m_rxca(0), + m_txca(0), + m_rxcb(0), + m_txcb(0), + m_out_txda_cb(*this), + m_out_dtra_cb(*this), + m_out_rtsa_cb(*this), + m_out_wrdya_cb(*this), + m_out_synca_cb(*this), + m_out_txdb_cb(*this), + m_out_dtrb_cb(*this), + m_out_rtsb_cb(*this), + m_out_wrdyb_cb(*this), + m_out_syncb_cb(*this), + m_out_int_cb(*this), + m_out_rxdrqa_cb(*this), + m_out_txdrqa_cb(*this), + m_out_rxdrqb_cb(*this), + m_out_txdrqb_cb(*this), m_variant(TYPE_DART) { for (int i = 0; i < 8; i++) @@ -148,43 +186,6 @@ upd7201_device::upd7201_device(const machine_config &mconfig, const char *tag, d } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void z80dart_device::device_config_complete() -{ - // inherit a copy of the static data - const z80dart_interface *intf = reinterpret_cast(static_config()); - if (intf != NULL) - *static_cast(this) = *intf; - - // or initialize to defaults if none provided - else - { - m_rxca = m_txca = m_rxcb = m_txcb = 0; - - 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_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)); - memset(&m_out_wrdyb_cb, 0, sizeof(m_out_wrdyb_cb)); - memset(&m_out_syncb_cb, 0, sizeof(m_out_syncb_cb)); - memset(&m_out_int_cb, 0, sizeof(m_out_int_cb)); - memset(&m_out_rxdrqa_cb, 0, sizeof(m_out_rxdrqa_cb)); - memset(&m_out_txdrqa_cb, 0, sizeof(m_out_txdrqa_cb)); - memset(&m_out_rxdrqb_cb, 0, sizeof(m_out_rxdrqb_cb)); - memset(&m_out_txdrqb_cb, 0, sizeof(m_out_txdrqb_cb)); - } -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -192,32 +193,30 @@ void z80dart_device::device_config_complete() void z80dart_device::device_start() { // resolve callbacks - m_out_int_func.resolve(m_out_int_cb, *this); + m_out_txda_cb.resolve_safe(); + m_out_dtra_cb.resolve_safe(); + m_out_rtsa_cb.resolve_safe(); + m_out_wrdya_cb.resolve_safe(); + m_out_synca_cb.resolve_safe(); + m_out_txdb_cb.resolve_safe(); + m_out_dtrb_cb.resolve_safe(); + m_out_rtsb_cb.resolve_safe(); + m_out_wrdyb_cb.resolve_safe(); + m_out_syncb_cb.resolve_safe(); + m_out_int_cb.resolve_safe(); + m_out_rxdrqa_cb.resolve_safe(); + m_out_txdrqa_cb.resolve_safe(); + m_out_rxdrqb_cb.resolve_safe(); + m_out_txdrqb_cb.resolve_safe(); // configure channel A m_chanA->m_rxc = m_rxca; m_chanA->m_txc = m_txca; - 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; - m_chanA->m_out_wrdy_cb = m_out_wrdya_cb; - m_chanA->m_out_sync_cb = m_out_synca_cb; - m_chanA->m_out_rxdrq_cb = m_out_rxdrqa_cb; - m_chanA->m_out_txdrq_cb = m_out_txdrqa_cb; - // configure channel B m_chanB->m_rxc = m_rxcb; m_chanB->m_txc = m_txcb; - 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; - m_chanB->m_out_wrdy_cb = m_out_wrdyb_cb; - m_chanB->m_out_sync_cb = m_out_syncb_cb; - m_chanB->m_out_rxdrq_cb = m_out_rxdrqb_cb; - m_chanB->m_out_txdrq_cb = m_out_txdrqb_cb; - // state saving save_item(NAME(m_int_state)); } @@ -333,7 +332,7 @@ void z80dart_device::z80daisy_irq_reti() void z80dart_device::check_interrupts() { int state = (z80daisy_irq_state() & Z80_DAISY_INT) ? ASSERT_LINE : CLEAR_LINE; - m_out_int_func(state); + m_out_int_cb(state); } @@ -546,15 +545,6 @@ void z80dart_channel::device_start() m_uart = downcast(owner()); m_index = m_uart->get_channel_index(this); - // resolve callbacks - 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); - m_out_wrdy_func.resolve(m_out_wrdy_cb, *m_uart); - m_out_sync_func.resolve(m_out_sync_cb, *m_uart); - m_out_rxdrq_func.resolve(m_out_rxdrq_cb, *m_uart); - m_out_txdrq_func.resolve(m_out_txdrq_cb, *m_uart); - // state saving save_item(NAME(m_rr)); save_item(NAME(m_wr)); @@ -620,17 +610,26 @@ void z80dart_channel::tra_callback() if (!(m_wr[5] & WR5_TX_ENABLE)) { // transmit mark - m_out_txd_func(1); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_txda_cb(1); + else + m_uart->m_out_txdb_cb(1); } else if (m_wr[5] & WR5_SEND_BREAK) { // transmit break - m_out_txd_func(0); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_txda_cb(0); + else + m_uart->m_out_txdb_cb(0); } else if (!is_transmit_register_empty()) { // transmit data - m_out_txd_func(transmit_register_get_data_bit()); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_txda_cb(transmit_register_get_data_bit()); + else + m_uart->m_out_txdb_cb(transmit_register_get_data_bit()); } } @@ -656,12 +655,18 @@ void z80dart_channel::tra_complete() else if (m_wr[5] & WR5_SEND_BREAK) { // transmit break - m_out_txd_func(0); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_txda_cb(0); + else + m_uart->m_out_txdb_cb(0); } else { // transmit mark - m_out_txd_func(1); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_txda_cb(1); + else + m_uart->m_out_txdb_cb(1); } // if transmit buffer is empty @@ -1321,7 +1326,10 @@ void z80dart_channel::set_dtr(int state) { m_dtr = state; - m_out_dtr_func(m_dtr); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_dtra_cb(m_dtr); + else + m_uart->m_out_dtrb_cb(m_dtr); } @@ -1331,7 +1339,10 @@ void z80dart_channel::set_dtr(int state) void z80dart_channel::set_rts(int state) { - m_out_rts_func(state); + if (m_index == z80dart_device::CHANNEL_A) + m_uart->m_out_rtsa_cb(state); + else + m_uart->m_out_rtsb_cb(state); } diff --git a/src/emu/machine/z80dart.h b/src/emu/machine/z80dart.h index bcecb4fca82..377a6ca3e55 100644 --- a/src/emu/machine/z80dart.h +++ b/src/emu/machine/z80dart.h @@ -152,92 +152,96 @@ #include "cpu/z80/z80daisy.h" - //************************************************************************** // DEVICE CONFIGURATION MACROS //************************************************************************** -#define MCFG_Z80DART_ADD(_tag, _clock, _config) \ +#define MCFG_Z80DART_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80DART, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80SIO0_ADD(_tag, _clock, _config) \ +#define MCFG_Z80SIO0_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80SIO0, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80SIO1_ADD(_tag, _clock, _config) \ +#define MCFG_Z80SIO1_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80SIO1, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80SIO2_ADD(_tag, _clock, _config) \ +#define MCFG_Z80SIO2_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80SIO2, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80SIO3_ADD(_tag, _clock, _config) \ +#define MCFG_Z80SIO3_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80SIO3, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80SIO4_ADD(_tag, _clock, _config) \ +#define MCFG_Z80SIO4_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, Z80SIO4, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_I8274_ADD(_tag, _clock, _config) \ +#define MCFG_I8274_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, I8274, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_UPD7201_ADD(_tag, _clock, _config) \ +#define MCFG_UPD7201_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ MCFG_DEVICE_ADD(_tag, UPD7201, _clock) \ - MCFG_DEVICE_CONFIG(_config) + MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) -#define MCFG_Z80DART_REMOVE(_tag) \ - MCFG_DEVICE_REMOVE(_tag) -#define Z80DART_INTERFACE(_name) \ - const z80dart_interface (_name) = +#define MCFG_Z80DART_OFFSETS(_rxa, _txa, _rxb, _txb) \ + z80dart_device::configure_channels(*device, _rxa, _txa, _rxb, _txb); -#define Z80SIO_INTERFACE(_name) \ - const z80dart_interface (_name) = +#define MCFG_Z80DART_OUT_TXDA_CB(_devcb) \ + devcb = &z80dart_device::set_out_txda_callback(*device, DEVCB2_##_devcb); -#define UPD7201_INTERFACE(_name) \ - const z80dart_interface (_name) = +#define MCFG_Z80DART_OUT_DTRA_CB(_devcb) \ + devcb = &z80dart_device::set_out_dtra_callback(*device, DEVCB2_##_devcb); -#define I8274_INTERFACE(_name) \ - const z80dart_interface (_name) = +#define MCFG_Z80DART_OUT_RTSA_CB(_devcb) \ + devcb = &z80dart_device::set_out_rtsa_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_WRDYA_CB(_devcb) \ + devcb = &z80dart_device::set_out_wrdya_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_SYNCA_CB(_devcb) \ + devcb = &z80dart_device::set_out_synca_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_TXDB_CB(_devcb) \ + devcb = &z80dart_device::set_out_txdb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_DTRB_CB(_devcb) \ + devcb = &z80dart_device::set_out_dtrb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_RTSB_CB(_devcb) \ + devcb = &z80dart_device::set_out_rtsb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_WRDYB_CB(_devcb) \ + devcb = &z80dart_device::set_out_wrdyb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_SYNCB_CB(_devcb) \ + devcb = &z80dart_device::set_out_syncb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_INT_CB(_devcb) \ + devcb = &z80dart_device::set_out_int_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_RXDRQA_CB(_devcb) \ + devcb = &z80dart_device::set_out_rxdrqa_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_TXDRQA_CB(_devcb) \ + devcb = &z80dart_device::set_out_txdrqa_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_RXDRQB_CB(_devcb) \ + devcb = &z80dart_device::set_out_rxdrqb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_Z80DART_OUT_TXDRQB_CB(_devcb) \ + devcb = &z80dart_device::set_out_txdrqb_callback(*device, DEVCB2_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> z80dart_interface - -struct z80dart_interface -{ - int m_rxca; - int m_txca; - int m_rxcb; - int m_txcb; - - 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_write_line m_out_txdb_cb; - devcb_write_line m_out_dtrb_cb; - devcb_write_line m_out_rtsb_cb; - devcb_write_line m_out_wrdyb_cb; - devcb_write_line m_out_syncb_cb; - - devcb_write_line m_out_int_cb; - devcb_write_line m_out_rxdrqa_cb; - devcb_write_line m_out_txdrqa_cb; - devcb_write_line m_out_rxdrqb_cb; - devcb_write_line m_out_txdrqb_cb; -}; - - // ======================> z80dart_channel class z80dart_device; @@ -277,14 +281,6 @@ public: DECLARE_WRITE_LINE_MEMBER( txc_w ); DECLARE_WRITE_LINE_MEMBER( sync_w ); - devcb_write_line m_out_txd_cb; - devcb_write_line m_out_dtr_cb; - devcb_write_line m_out_rts_cb; - devcb_write_line m_out_wrdy_cb; - devcb_write_line m_out_sync_cb; - devcb_write_line m_out_rxdrq_cb; - devcb_write_line m_out_txdrq_cb; - int m_rxc; int m_txc; @@ -434,14 +430,6 @@ protected: int get_rx_word_length(); int get_tx_word_length(); - devcb_resolved_write_line m_out_txd_func; - devcb_resolved_write_line m_out_dtr_func; - devcb_resolved_write_line m_out_rts_func; - devcb_resolved_write_line m_out_wrdy_func; - devcb_resolved_write_line m_out_sync_func; - devcb_resolved_write_line m_out_rxdrq_func; - devcb_resolved_write_line m_out_txdrq_func; - // receiver state UINT8 m_rx_data_fifo[3]; // receive data FIFO UINT8 m_rx_error_fifo[3]; // receive error FIFO @@ -476,8 +464,7 @@ protected: // ======================> z80dart_device class z80dart_device : public device_t, - public device_z80daisy_interface, - public z80dart_interface + public device_z80daisy_interface { friend class z80dart_channel; @@ -486,6 +473,31 @@ public: z80dart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source); z80dart_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + template static devcb2_base &set_out_txda_callback(device_t &device, _Object object) { return downcast(device).m_out_txda_cb.set_callback(object); } + template static devcb2_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast(device).m_out_dtra_cb.set_callback(object); } + template static devcb2_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast(device).m_out_rtsa_cb.set_callback(object); } + template static devcb2_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast(device).m_out_wrdya_cb.set_callback(object); } + template static devcb2_base &set_out_synca_callback(device_t &device, _Object object) { return downcast(device).m_out_synca_cb.set_callback(object); } + template static devcb2_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast(device).m_out_txdb_cb.set_callback(object); } + template static devcb2_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast(device).m_out_dtrb_cb.set_callback(object); } + template static devcb2_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast(device).m_out_rtsb_cb.set_callback(object); } + template static devcb2_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast(device).m_out_wrdyb_cb.set_callback(object); } + template static devcb2_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast(device).m_out_syncb_cb.set_callback(object); } + template static devcb2_base &set_out_int_callback(device_t &device, _Object object) { return downcast(device).m_out_int_cb.set_callback(object); } + template static devcb2_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast(device).m_out_rxdrqa_cb.set_callback(object); } + template static devcb2_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast(device).m_out_txdrqa_cb.set_callback(object); } + template static devcb2_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast(device).m_out_rxdrqb_cb.set_callback(object); } + template static devcb2_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast(device).m_out_txdrqb_cb.set_callback(object); } + + static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb) + { + z80dart_device &dev = downcast(device); + dev.m_rxca = rxa; + dev.m_txca = txa; + dev.m_rxcb = rxb; + dev.m_txcb = txb; + } + DECLARE_READ8_MEMBER( cd_ba_r ); DECLARE_WRITE8_MEMBER( cd_ba_w ); DECLARE_READ8_MEMBER( ba_cd_r ); @@ -512,7 +524,6 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); virtual machine_config_constructor device_mconfig_additions() const; @@ -550,8 +561,30 @@ protected: required_device m_chanB; // internal state - devcb_resolved_write_line m_out_int_func; - int m_int_state[8]; // interrupt state + int m_rxca; + int m_txca; + int m_rxcb; + int m_txcb; + + devcb2_write_line m_out_txda_cb; + devcb2_write_line m_out_dtra_cb; + devcb2_write_line m_out_rtsa_cb; + devcb2_write_line m_out_wrdya_cb; + devcb2_write_line m_out_synca_cb; + + devcb2_write_line m_out_txdb_cb; + devcb2_write_line m_out_dtrb_cb; + devcb2_write_line m_out_rtsb_cb; + devcb2_write_line m_out_wrdyb_cb; + devcb2_write_line m_out_syncb_cb; + + devcb2_write_line m_out_int_cb; + devcb2_write_line m_out_rxdrqa_cb; + devcb2_write_line m_out_txdrqa_cb; + devcb2_write_line m_out_rxdrqb_cb; + devcb2_write_line m_out_txdrqb_cb; + + int m_int_state[8]; // interrupt state int m_variant; }; @@ -641,5 +674,4 @@ extern const device_type I8274; extern const device_type UPD7201; - #endif diff --git a/src/mess/drivers/abc1600.c b/src/mess/drivers/abc1600.c index 7d23b69fd77..abfad7ace1b 100644 --- a/src/mess/drivers/abc1600.c +++ b/src/mess/drivers/abc1600.c @@ -563,7 +563,7 @@ void abc1600_state::update_drdy2() } //------------------------------------------------- -// Z80DART_INTERFACE( dart_intf ) +// Z80DART //------------------------------------------------- READ8_MEMBER( abc1600_state::dart_r ) @@ -576,30 +576,6 @@ WRITE8_MEMBER( abc1600_state::dart_w ) m_dart->ba_cd_w(space, A2_A1 ^ 0x03, data); } -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // SCC8530_INTERFACE( sc_intf ) //------------------------------------------------- @@ -904,7 +880,12 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state ) MCFG_Z80DMA_IN_IORQ_CB(DEVREAD8(ABC1600_MAC_TAG, abc1600_mac_device, dma2_iorq_r)) MCFG_Z80DMA_OUT_IORQ_CB(DEVWRITE8(ABC1600_MAC_TAG, abc1600_mac_device, dma2_iorq_w)) - MCFG_Z80DART_ADD(Z8470AB1_TAG, XTAL_64MHz/16, dart_intf) + MCFG_Z80DART_ADD(Z8470AB1_TAG, XTAL_64MHz/16, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(MC68008P8_TAG, M68K_IRQ_5)) // shared with SCC MCFG_DEVICE_ADD(Z8530B1_TAG, SCC8530, XTAL_64MHz/16) MCFG_Z8530_INTRQ_CALLBACK(INPUTLINE(MC68008P8_TAG, M68K_IRQ_5)) diff --git a/src/mess/drivers/abc80x.c b/src/mess/drivers/abc80x.c index 39fb4ab335b..a68826e5b3c 100644 --- a/src/mess/drivers/abc80x.c +++ b/src/mess/drivers/abc80x.c @@ -662,7 +662,7 @@ WRITE_LINE_MEMBER( abc800_state::ctc_z2_w ) } //------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) +// Z80SIO //------------------------------------------------- void abc800_state::clock_cassette(int state) @@ -724,60 +724,8 @@ WRITE_LINE_MEMBER( abc800_state::sio_rtsb_w ) } } -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- -// Z80DART_INTERFACE( abc800_dart_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( abc800_dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// Z80DART_INTERFACE( abc802_dart_intf ) +// Z80DART abc802 //------------------------------------------------- WRITE_LINE_MEMBER( abc802_state::lrs_w ) @@ -792,32 +740,8 @@ WRITE_LINE_MEMBER( abc802_state::mux80_40_w ) m_80_40_mux = state; } -static Z80DART_INTERFACE( abc802_dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- -// Z80DART_INTERFACE( abc806_dart_intf ) +// Z80DART abc806 //------------------------------------------------- WRITE_LINE_MEMBER( abc806_state::keydtr_w ) @@ -827,29 +751,6 @@ WRITE_LINE_MEMBER( abc806_state::keydtr_w ) bankswitch(); } -static Z80DART_INTERFACE( abc806_dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // z80_daisy_config abc800_daisy_chain //------------------------------------------------- @@ -1138,8 +1039,22 @@ static MACHINE_CONFIG_START( abc800c, abc800c_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(abc800_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(abc800_state, ctc_z2_w)) - MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) - MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc800_dart_intf) + MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) @@ -1198,8 +1113,22 @@ static MACHINE_CONFIG_START( abc800m, abc800m_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(abc800_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(abc800_state, ctc_z2_w)) - MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) - MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc800_dart_intf) + MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) @@ -1258,8 +1187,24 @@ static MACHINE_CONFIG_START( abc802, abc802_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(abc800_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(abc800_state, ctc_z2_w)) - MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) - MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc802_dart_intf) + MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc802_state, lrs_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(abc802_state, mux80_40_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_CASSETTE_ADD("cassette", cass_intf) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) @@ -1313,8 +1258,22 @@ static MACHINE_CONFIG_START( abc806, abc806_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(abc800_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(abc800_state, ctc_z2_w)) - MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) - MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc806_dart_intf) + MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(abc800_state, sio_txdb_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(abc806_state, keydtr_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) diff --git a/src/mess/drivers/altos5.c b/src/mess/drivers/altos5.c index 1f919fe93b6..cc9e306ea8d 100644 --- a/src/mess/drivers/altos5.c +++ b/src/mess/drivers/altos5.c @@ -326,58 +326,6 @@ WRITE8_MEMBER( altos5_state::port09_w ) setup_banks(2); } -// serial printer and console#3 -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - // console#3 - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - // printer - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -// consoles#1 and 2 -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - // console#2 - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY connects to (altos5_state, fdc_intrq_w), - DEVCB_NULL, // SYNC - - // console#1 - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, // unused DRQ pins - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static SLOT_INTERFACE_START( altos5_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -455,8 +403,19 @@ static MACHINE_CONFIG_START( altos5, altos5_state ) MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL_8MHz / 2) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80DART_ADD("z80dart", XTAL_8MHz / 2, dart_intf ) - MCFG_Z80SIO0_ADD("z80sio", XTAL_8MHz / 2, sio_intf ) + MCFG_Z80DART_ADD("z80dart", XTAL_8MHz / 2, 0, 0, 0, 0 ) + // Channel A - console #3 + // Channel B - printer + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_Z80SIO0_ADD("z80sio", XTAL_8MHz / 2, 0, 0, 0, 0 ) + // Channel A - console #2 + // WRDY connects to (altos5_state, fdc_intrq_w) + // Channel B - console #1 + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_8MHz / 2) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/ampro.c b/src/mess/drivers/ampro.c index 7bb247b03ac..0036d40cef4 100644 --- a/src/mess/drivers/ampro.c +++ b/src/mess/drivers/ampro.c @@ -117,29 +117,6 @@ static const z80_daisy_config daisy_chain_intf[] = { NULL } }; -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY - DEVCB_NULL, // SYNC - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - // Baud rate generator. All inputs are 2MHz. TIMER_DEVICE_CALLBACK_MEMBER( ampro_state::ctc_tick ) { @@ -192,7 +169,12 @@ static MACHINE_CONFIG_START( ampro, ampro_state ) MCFG_Z80CTC_ZC0_CB(WRITELINE(ampro_state, ctc_z0_w)) // Z80DART Ch A, SIO Ch A MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80dart", z80dart_device, rxtxcb_w)) // SIO Ch B - MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, dart_intf ) + MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE("z80dart", z80dart_device, rxa_w)) diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index 2a988f199fd..ab14bc15438 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -194,33 +194,6 @@ WRITE_LINE_MEMBER( apricot_state::timer_out2 ) } } -static Z80SIO_INTERFACE( apricot_z80sio_intf ) -{ - 0, 0, - XTAL_4MHz / 16, XTAL_4MHz / 16, - - // channel a - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_DEVICE_LINE_MEMBER("ic71", i8089_device, drq2_w), - DEVCB_NULL, - - // channel b - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(apricot_state, data_selector_dtr_w), - DEVCB_DRIVER_LINE_MEMBER(apricot_state, data_selector_rts_w), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER("ic31", pic8259_device, ir5_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // FLOPPY //************************************************************************** @@ -403,7 +376,14 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) MCFG_PIT8253_CLK2(XTAL_4MHz / 2) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(apricot_state, timer_out2)) - MCFG_Z80SIO0_ADD("ic15", XTAL_15MHz / 6, apricot_z80sio_intf) + MCFG_Z80SIO0_ADD("ic15", XTAL_15MHz / 6, 0, 0, XTAL_4MHz / 16, XTAL_4MHz / 16) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_WRDYA_CB(DEVWRITELINE("ic71", i8089_device, drq2_w)) + MCFG_Z80DART_OUT_DTRB_CB(WRITELINE(apricot_state, data_selector_dtr_w)) + MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(apricot_state, data_selector_rts_w)) + MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE("ic31", pic8259_device, ir5_w)) // rs232 port MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) diff --git a/src/mess/drivers/apricotf.c b/src/mess/drivers/apricotf.c index eea28a23c41..adbaf8d1cd4 100644 --- a/src/mess/drivers/apricotf.c +++ b/src/mess/drivers/apricotf.c @@ -214,7 +214,7 @@ INPUT_PORTS_END //************************************************************************** //------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) +// Z80SIO //------------------------------------------------- WRITE_LINE_MEMBER( f1_state::sio_int_w ) @@ -224,30 +224,6 @@ WRITE_LINE_MEMBER( f1_state::sio_int_w ) m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_ctc_int || m_sio_int); } -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // Z80CTC //------------------------------------------------- @@ -309,7 +285,9 @@ static MACHINE_CONFIG_START( act_f1, f1_state ) /* Devices */ MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0) - MCFG_Z80SIO2_ADD(Z80SIO2_TAG, 2500000, sio_intf) + + MCFG_Z80SIO2_ADD(Z80SIO2_TAG, 2500000, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(WRITELINE(f1_state, sio_int_w)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 2500000) MCFG_Z80CTC_INTR_CB(WRITELINE(f1_state, ctc_int_w)) diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c index 9b0243ef22c..748f39d8d44 100644 --- a/src/mess/drivers/apricotp.c +++ b/src/mess/drivers/apricotp.c @@ -437,34 +437,6 @@ static I8237_INTERFACE( dmac_intf ) }; -//------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // wd17xx_interface fdc_intf //------------------------------------------------- @@ -591,7 +563,9 @@ static MACHINE_CONFIG_START( fp, fp_state ) MCFG_PIT8253_CLK1(2000000) MCFG_PIT8253_CLK2(2000000) - MCFG_Z80SIO0_ADD(Z80SIO0_TAG, 2500000, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO0_TAG, 2500000, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir4_w)) + MCFG_WD2797x_ADD(WD2797_TAG, 2000000) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(I8259A_TAG, pic8259_device, ir1_w)) MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE(I8237_TAG, am9517a_device, dreq1_w)) diff --git a/src/mess/drivers/attache.c b/src/mess/drivers/attache.c index 7888b1efed5..2c5f670d1bb 100644 --- a/src/mess/drivers/attache.c +++ b/src/mess/drivers/attache.c @@ -871,29 +871,6 @@ static const ay8910_interface ay8912_interface = DEVCB_NULL /* portB write */ }; -static Z80SIO_INTERFACE( sio_interface ) -{ - 0, 0, 0, 0, - - 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 -}; - static const am9517a_interface dma_interface = { DEVCB_DRIVER_LINE_MEMBER(attache_state,hreq_w), // out_hreq_cb @@ -1003,7 +980,7 @@ static MACHINE_CONFIG_START( attache, attache_state ) MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w)) - MCFG_Z80SIO0_ADD("sio",XTAL_8MHz / 26, sio_interface) + MCFG_Z80SIO0_ADD("sio",XTAL_8MHz / 26, 0, 0, 0, 0) MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/bigbord2.c b/src/mess/drivers/bigbord2.c index da18bac1269..3b4c7c019df 100644 --- a/src/mess/drivers/bigbord2.c +++ b/src/mess/drivers/bigbord2.c @@ -399,32 +399,6 @@ static INPUT_PORTS_START( bigbord2 ) INPUT_PORTS_END -/* Z80 SIO */ - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - /* Z80 CTC */ TIMER_DEVICE_CALLBACK_MEMBER(bigbord2_state::ctc_tick) @@ -613,7 +587,8 @@ static MACHINE_CONFIG_START( bigbord2, bigbord2_state ) MCFG_Z80DMA_IN_IORQ_CB(READ8(bigbord2_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(bigbord2_state, io_write_byte)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, MAIN_CLOCK, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, MAIN_CLOCK, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80CTCA_TAG, Z80CTC, MAIN_CLOCK) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index 33212683b14..5c7bb8a1139 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -733,7 +733,7 @@ WRITE_LINE_MEMBER( bullet_state::dart_rxtxca_w ) } //------------------------------------------------- -// Z80DART_INTERFACE( dart_intf ) +// Z80DART //------------------------------------------------- WRITE_LINE_MEMBER( bullet_state::dartardy_w ) @@ -748,30 +748,6 @@ WRITE_LINE_MEMBER( bullet_state::dartbrdy_w ) update_dma_rdy(); } -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_DRIVER_LINE_MEMBER(bullet_state, dartardy_w), - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_DRIVER_LINE_MEMBER(bullet_state, dartbrdy_w), - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // Z80DMA //------------------------------------------------- @@ -1141,7 +1117,16 @@ static MACHINE_CONFIG_START( bullet, bullet_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(XTAL_4_9152MHz/4)) - MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) + MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(bullet_state, dartardy_w)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(bullet_state, dartbrdy_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80DMA_TAG, Z80DMA, XTAL_16MHz/4) MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE(Z80_TAG, INPUT_LINE_HALT)) @@ -1212,7 +1197,16 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(XTAL_4_9152MHz/4)) - MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) + MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(bullet_state, dartardy_w)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(bullet_state, dartbrdy_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80DMA_TAG, Z80DMA, XTAL_16MHz/4) MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE(Z80_TAG, INPUT_LINE_HALT)) diff --git a/src/mess/drivers/bw12.c b/src/mess/drivers/bw12.c index 6ff2a062d2b..6d1031bbb2f 100644 --- a/src/mess/drivers/bw12.c +++ b/src/mess/drivers/bw12.c @@ -431,31 +431,6 @@ WRITE_LINE_MEMBER( bw12_state::pia_cb2_w ) } } -/* Z80-SIO/0 Interface */ - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* PIT8253 Interface */ WRITE_LINE_MEMBER( bw12_state::pit_out0_w ) @@ -609,7 +584,14 @@ static MACHINE_CONFIG_START( common, bw12_state ) MCFG_PIA_IRQA_HANDLER(DEVWRITELINE(Z80_TAG, z80_device, irq_line)) MCFG_PIA_IRQB_HANDLER(DEVWRITELINE(Z80_TAG, z80_device, irq_line)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(PIT8253_TAG, PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_1_8432MHz) diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index 0ece6895de2..67bcdb479b1 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -585,34 +585,6 @@ WRITE8_MEMBER( compis_state::ppi_pc_w ) m_isbx0->opt0_w(BIT(data, 7)); } -//------------------------------------------------- -// I8274_INTERFACE( mpsc_intf ) -//------------------------------------------------- - -static I8274_INTERFACE( mpsc_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int3_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // cassette_interface compis_cassette_interface //------------------------------------------------- @@ -725,7 +697,14 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0) MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rxd)) - MCFG_I8274_ADD(I8274_TAG, XTAL_16MHz/4, mpsc_intf) + MCFG_I8274_ADD(I8274_TAG, XTAL_16MHz/4, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE(I80186_TAG, i80186_cpu_device, int3_w)) MCFG_DEVICE_ADD(MM58174A_TAG, MM58274C, 0) MCFG_MM58274C_MODE24(0) // 12 hour diff --git a/src/mess/drivers/czk80.c b/src/mess/drivers/czk80.c index dc981e5a6c9..d8356c247f8 100644 --- a/src/mess/drivers/czk80.c +++ b/src/mess/drivers/czk80.c @@ -151,29 +151,6 @@ WRITE_LINE_MEMBER( czk80_state::ctc_z2_w ) { } -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), - DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY - DEVCB_NULL, // SYNC - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* after the first 4 bytes have been read from ROM, switch the ram back in */ TIMER_CALLBACK_MEMBER( czk80_state::czk80_reset) { @@ -230,7 +207,11 @@ static MACHINE_CONFIG_START( czk80, czk80_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(czk80_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(czk80_state, ctc_z2_w)) - MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, dart_intf) + MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, 0, 0, 0, 0 ) + //MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + //MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + //MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_16MHz/4) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/huebler.c b/src/mess/drivers/huebler.c index f103c587d3b..9ef6b2cf4ab 100644 --- a/src/mess/drivers/huebler.c +++ b/src/mess/drivers/huebler.c @@ -263,29 +263,6 @@ WRITE_LINE_MEMBER(amu880_state::cassette_w) m_cassette->output(state ? -1.0 : +1.0); } -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DRIVER_LINE_MEMBER(amu880_state, cassette_w), - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 Daisy Chain */ static const z80_daisy_config amu880_daisy_chain[] = @@ -387,7 +364,9 @@ static MACHINE_CONFIG_START( amu880, amu880_state ) MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, XTAL_10MHz/4) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_10MHz/4, sio_intf) // U856 + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_10MHz/4, 0, 0, 0, 0) // U856 + MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(amu880_state, cassette_w)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_CASSETTE_ADD("cassette", amu880_cassette_interface) MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", amu880_state, tape_tick, attotime::from_hz(44100)) diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c index 806498ee613..91821010745 100644 --- a/src/mess/drivers/isbc.c +++ b/src/mess/drivers/isbc.c @@ -187,29 +187,6 @@ WRITE8_MEMBER( isbc_state::ppi_c_w ) m_pic_1->ir7_w(0); } -static I8274_INTERFACE(isbc286_uart8274_interface) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER("rs232a", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232a", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232a", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER("rs232b", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232b", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232b", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(isbc_state, isbc_uart8274_irq), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - WRITE_LINE_MEMBER(isbc_state::isbc_uart8274_irq) { m_uart8274->m1_r(); // always set @@ -315,7 +292,14 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, isbc286_uart8274_interface) + MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(WRITELINE(isbc_state, isbc_uart8274_irq)) MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxa_w)) diff --git a/src/mess/drivers/mc80.c b/src/mess/drivers/mc80.c index d0f85742e4f..6ec5f512360 100644 --- a/src/mess/drivers/mc80.c +++ b/src/mess/drivers/mc80.c @@ -241,7 +241,8 @@ static MACHINE_CONFIG_START( mc8030, mc80_state ) // ZC1: to SIO CLK CH B // ZC2: KMBG (??) - MCFG_Z80SIO0_ADD( "asp_sio", 4800, mc8030_asp_z80sio_intf ) + MCFG_Z80SIO0_ADD("asp_sio", 4800, 0, 0, 0, 0 ) + // SIO CH A in = keyboard; out = beeper; CH B = IFSS (??) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/mikromik.c b/src/mess/drivers/mikromik.c index 1db8af7bea0..b30365e853f 100644 --- a/src/mess/drivers/mikromik.c +++ b/src/mess/drivers/mikromik.c @@ -380,7 +380,7 @@ WRITE_LINE_MEMBER( mm1_state::auxc_w ) } //------------------------------------------------- -// UPD7201_INTERFACE( mpsc_intf ) +// UPD7201 //------------------------------------------------- WRITE_LINE_MEMBER( mm1_state::drq2_w ) @@ -399,30 +399,6 @@ WRITE_LINE_MEMBER( mm1_state::drq1_w ) } } -static UPD7201_INTERFACE( mpsc_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(mm1_state, drq2_w), // receive DRQ - DEVCB_DRIVER_LINE_MEMBER(mm1_state, drq1_w), // transmit DRQ - DEVCB_NULL, - DEVCB_NULL -}; - - READ_LINE_MEMBER( mm1_state::dsra_r ) { return 1; @@ -519,7 +495,13 @@ static MACHINE_CONFIG_START( mm1, mm1_state ) 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_UPD7201_ADD(UPD7201_TAG, XTAL_6_144MHz/2, mpsc_intf) + MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_6_144MHz/2, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_RXDRQA_CB(WRITELINE(mm1_state, drq2_w)) + MCFG_Z80DART_OUT_TXDRQA_CB(WRITELINE(mm1_state, drq1_w)) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) diff --git a/src/mess/drivers/mtx.c b/src/mess/drivers/mtx.c index 1610bf5fecc..27d776de5c4 100644 --- a/src/mess/drivers/mtx.c +++ b/src/mess/drivers/mtx.c @@ -235,36 +235,6 @@ WRITE_LINE_MEMBER(mtx_state::ctc_trg2_w) } } -/*------------------------------------------------- - Z80DART_INTERFACE( dart_intf ) --------------------------------------------------*/ - -static Z80DART_INTERFACE( dart_intf ) -{ - 0, - 0, - 0, - 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /*------------------------------------------------- z80_daisy_config mtx_daisy_chain -------------------------------------------------*/ @@ -396,7 +366,8 @@ static MACHINE_CONFIG_DERIVED( rs128, mtx512 ) MCFG_CPU_CONFIG(rs128_daisy_chain) /* devices */ - MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_4MHz, dart_intf) + MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_4MHz, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) /* internal ram */ MCFG_RAM_MODIFY(RAM_TAG) diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c index cd7800f92ab..e355b6fdeb6 100644 --- a/src/mess/drivers/mz2500.c +++ b/src/mess/drivers/mz2500.c @@ -2068,30 +2068,6 @@ WRITE_LINE_MEMBER(mz2500_state::mz2500_rtc_alarm_irq) // m_maincpu->set_input_line_and_vector(0, HOLD_LINE,drvm_irq_vector[3]); } -static Z80SIO_INTERFACE( mz2500_sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - static MACHINE_CONFIG_START( mz2500, mz2500_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000) @@ -2112,7 +2088,7 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state ) MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz2500_state, mz2500_pio1_porta_w)) MCFG_Z80PIO_IN_PB_CB(READ8(mz2500_state, mz2500_pio1_porta_r)) - MCFG_Z80SIO0_ADD( "z80sio", 6000000, mz2500_sio_intf ) + MCFG_Z80SIO0_ADD("z80sio", 6000000, 0, 0, 0, 0) MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz) MCFG_RP5C15_OUT_ALARM_CB(WRITELINE(mz2500_state, mz2500_rtc_alarm_irq)) diff --git a/src/mess/drivers/nanos.c b/src/mess/drivers/nanos.c index 7df7ff526e4..d7e799a13b3 100644 --- a/src/mess/drivers/nanos.c +++ b/src/mess/drivers/nanos.c @@ -127,52 +127,6 @@ WRITE_LINE_MEMBER(nanos_state::z80daisy_interrupt) m_maincpu->set_input_line(INPUT_LINE_IRQ0, state); } -static Z80SIO_INTERFACE( sio1_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -static Z80SIO_INTERFACE( sio2_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 Daisy Chain */ static const z80_daisy_config nanos_daisy_chain[] = @@ -550,8 +504,11 @@ static MACHINE_CONFIG_START( nanos, nanos_state ) MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL_4MHz) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80SIO0_ADD( "z80sio_0", XTAL_4MHz, sio1_intf) - MCFG_Z80SIO0_ADD( "z80sio_1", XTAL_4MHz, sio2_intf) + MCFG_Z80SIO0_ADD("z80sio_0", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(WRITELINE(nanos_state, z80daisy_interrupt)) + + MCFG_Z80SIO0_ADD("z80sio_1", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(WRITELINE(nanos_state, z80daisy_interrupt)) MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) MCFG_Z80PIO_IN_PA_CB(READ8(nanos_state, nanos_port_a_r)) diff --git a/src/mess/drivers/onyx.c b/src/mess/drivers/onyx.c index 1e36fa02067..38547a88264 100644 --- a/src/mess/drivers/onyx.c +++ b/src/mess/drivers/onyx.c @@ -29,7 +29,7 @@ and be connected to a RS422 network. //#include "cpu/z80/z80daisy.h" //#include "machine/z80ctc.h" //#include "machine/z80pio.h" -//#include "machine/z80sio.h" +//#include "machine/z80dart.h" //#include "machine/z80dma.h" #include "machine/terminal.h" @@ -68,56 +68,6 @@ WRITE8_MEMBER( onyx_state::kbd_put ) m_term_data = data; } -#if 0 -/* Z80 SIO 0 */ - -WRITE16_MEMBER( onyx_state::pk8_sio_0_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_sio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(onyx_state, pk8_sio_0_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 SIO 1 */ - -WRITE16_MEMBER( onyx_state::pk8_sio_1_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_sio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(onyx_state, pk8_sio_1_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 Daisy Chain */ - -static const z80_daisy_config p8k_daisy_chain[] = -{ - { "z80dma" }, /* FDC related */ - { "z80pio_2" }, - { "z80ctc_0" }, - { "z80sio_0" }, - { "z80sio_1" }, - { "z80pio_0" }, - { "z80pio_1" }, - { "z80ctc_1" }, - { NULL } -}; -#endif /* Input ports */ static INPUT_PORTS_START( c8002 ) @@ -155,58 +105,6 @@ static ADDRESS_MAP_START(subio, AS_IO, 8, onyx_state) ADDRESS_MAP_END -#if 0 - -/* Z80 SIO 0 */ - -WRITE16_MEMBER( onyx_state::pk8_16_sio_0_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_16_sio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_16_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(onyx_state, pk8_16_sio_0_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 SIO 1 */ - -WRITE16_MEMBER( onyx_state::pk8_16_sio_1_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_16_sio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_16_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(onyx_state, pk8_16_sio_1_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 Daisy Chain */ - -static const z80_daisy_config p8k_16_daisy_chain[] = -{ - { "z80ctc_0" }, - { "z80ctc_1" }, - { "z80sio_0" }, - { "z80sio_1" }, - { "z80pio_0" }, - { "z80pio_1" }, - { "z80pio_2" }, - { NULL } -}; -#endif - - /*************************************************************************** Machine Drivers @@ -230,8 +128,8 @@ static MACHINE_CONFIG_START( c8002, onyx_state ) /* peripheral hardware */ //MCFG_DEVICE_ADD("z80ctc_0", Z80CTC, XTAL_4MHz) //MCFG_DEVICE_ADD("z80ctc_1", Z80CTC, XTAL_4MHz) - //MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_16_sio_0_intf) - //MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_16_sio_1_intf) + //MCFG_Z80SIO0_ADD("z80sio_0", 9600, 0, 0, 0, 0) + //MCFG_Z80SIO0_ADD("z80sio_1", 9600, 0, 0, 0, 0) //MCFG_DEVICE_ADD("z80pio_0", Z80CTC, XTAL_4MHz) //MCFG_DEVICE_ADD("z80pio_1", Z80CTC, XTAL_4MHz) //MCFG_DEVICE_ADD("z80pio_2", Z80CTC, XTAL_4MHz) diff --git a/src/mess/drivers/osbexec.c b/src/mess/drivers/osbexec.c index 5dc2b1b227b..71326d0ab63 100644 --- a/src/mess/drivers/osbexec.c +++ b/src/mess/drivers/osbexec.c @@ -421,30 +421,6 @@ WRITE_LINE_MEMBER(osbexec_state::osbexec_pia1_irq) } -static Z80SIO_INTERFACE( osbexec_sio_config ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - #if 0 static const wd17xx_interface osbexec_wd17xx_interface = { @@ -606,7 +582,6 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state ) MCFG_CPU_IO_MAP( osbexec_io) MCFG_CPU_CONFIG( osbexec_daisy_config ) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DRIVER(osbexec_state, screen_update) MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK/2, 768, 0, 640, 260, 0, 240 ) /* May not be correct */ @@ -619,7 +594,7 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) -// MCFG_PIT8253_ADD( "pit", osbexec_pit_config ) +// MCFG_PIT8253_ADD("pit", osbexec_pit_config) MCFG_DEVICE_ADD("pia_0", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(osbexec_state, osbexec_pia0_a_r)) @@ -635,7 +610,7 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state ) MCFG_PIA_IRQA_HANDLER(WRITELINE(osbexec_state, osbexec_pia1_irq)) MCFG_PIA_IRQB_HANDLER(WRITELINE(osbexec_state, osbexec_pia1_irq)) - MCFG_Z80SIO2_ADD( "sio", MAIN_CLOCK/6, osbexec_sio_config ) + MCFG_Z80SIO2_ADD("sio", MAIN_CLOCK/6, 0, 0, 0, 0) MCFG_MB8877_ADD("mb8877", default_wd17xx_interface_2_drives ) diff --git a/src/mess/drivers/pcm.c b/src/mess/drivers/pcm.c index 818342d4617..0f4574e4700 100644 --- a/src/mess/drivers/pcm.c +++ b/src/mess/drivers/pcm.c @@ -231,30 +231,6 @@ static const z80_daisy_config pcm_daisy_chain[] = { NULL } }; -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - /* F4 Character Displayer */ static const gfx_layout pcm_charlayout = @@ -302,7 +278,7 @@ static MACHINE_CONFIG_START( pcm, pcm_state ) /* Devices */ MCFG_K7659_KEYBOARD_ADD() - MCFG_CASSETTE_ADD( "cassette", default_cassette_interface ) + MCFG_CASSETTE_ADD("cassette", default_cassette_interface) MCFG_DEVICE_ADD("z80pio_u", Z80PIO, XTAL_10MHz/4) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) @@ -313,7 +289,7 @@ static MACHINE_CONFIG_START( pcm, pcm_state ) MCFG_Z80PIO_IN_PB_CB(READ8(pcm_state, pcm_85_r)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(pcm_state, pcm_85_w)) - MCFG_Z80SIO0_ADD( "z80sio", 4800, sio_intf ) // clocks come from the system ctc + MCFG_Z80SIO0_ADD("z80sio", 4800, 0, 0, 0, 0) // clocks come from the system ctc MCFG_DEVICE_ADD("z80ctc_u", Z80CTC, XTAL_10MHz /4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/pulsar.c b/src/mess/drivers/pulsar.c index 67202352fa3..3d61ef572b7 100644 --- a/src/mess/drivers/pulsar.c +++ b/src/mess/drivers/pulsar.c @@ -184,29 +184,6 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY - DEVCB_NULL, // SYNC - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static SLOT_INTERFACE_START( pulsar_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -255,7 +232,11 @@ static MACHINE_CONFIG_START( pulsar, pulsar_state ) MCFG_MSM5832_ADD("rtc", XTAL_32_768kHz) - MCFG_Z80DART_ADD("z80dart", XTAL_4MHz, dart_intf ) + MCFG_Z80DART_ADD("z80dart", XTAL_4MHz, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE("z80dart", z80dart_device, rxa_w)) diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 19ff70cb574..80de3d575d2 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -438,35 +438,6 @@ READ8_MEMBER(qx10_state::mc146818_r) return m_rtc->read(space, !offset); } -/* - UPD7201 - Channel A: Keyboard - Channel B: RS232 -*/ - -static UPD7201_INTERFACE(qx10_upd7201_interface) -{ - 0, 0, 0, 0, // channel b clock set by pit2 channel 2 - - DEVCB_DEVICE_LINE_MEMBER("kbd", rs232_port_device, write_txd), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(qx10_state, keyboard_irq), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - WRITE_LINE_MEMBER(qx10_state::keyboard_irq) { m_scc->m1_r(); // always set @@ -825,7 +796,16 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) MCFG_PIC8259_ADD("pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(qx10_state, get_slave_ack)) MCFG_PIC8259_ADD("pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL) - MCFG_UPD7201_ADD("upd7201", MAIN_CLK/4, qx10_upd7201_interface) + + MCFG_UPD7201_ADD("upd7201", MAIN_CLK/4, 0, 0, 0, 0) // channel b clock set by pit2 channel 2 + // Channel A: Keyboard + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("kbd", rs232_port_device, write_txd)) + // Channel B: RS232 + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(WRITELINE(qx10_state, keyboard_irq)) + MCFG_I8237_ADD("8237dma_1", MAIN_CLK/4, qx10_dma8237_1_interface) MCFG_I8237_ADD("8237dma_2", MAIN_CLK/4, qx10_dma8237_2_interface) diff --git a/src/mess/drivers/rt1715.c b/src/mess/drivers/rt1715.c index 248cb5651e4..226e47f1cca 100644 --- a/src/mess/drivers/rt1715.c +++ b/src/mess/drivers/rt1715.c @@ -263,29 +263,6 @@ INPUT_PORTS_END MACHINE DRIVERS ***************************************************************************/ -static Z80SIO_INTERFACE( rt1715_sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - /* priority unknown */ static const z80_daisy_config rt1715_daisy_chain[] = { @@ -325,7 +302,7 @@ static MACHINE_CONFIG_START( rt1715, rt1715_state ) MCFG_DEVICE_ADD("a30", Z80CTC, XTAL_10MHz/4 /* ? */) - MCFG_Z80SIO0_ADD("a29", XTAL_10MHz/4 /* ? */, rt1715_sio_intf) + MCFG_Z80SIO0_ADD("a29", XTAL_10MHz/4 /* ? */, 0, 0, 0, 0) /* floppy */ MCFG_DEVICE_ADD("a71", Z80PIO, XTAL_10MHz/4 /* ? */) diff --git a/src/mess/drivers/super6.c b/src/mess/drivers/super6.c index b7d0e15ee51..6e0fed78878 100644 --- a/src/mess/drivers/super6.c +++ b/src/mess/drivers/super6.c @@ -355,34 +355,6 @@ TIMER_DEVICE_CALLBACK_MEMBER( super6_state::ctc_tick ) m_ctc->trg0(0); } -//------------------------------------------------- -// Z80DART_INTERFACE( dart_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // Z80DMA //------------------------------------------------- @@ -541,7 +513,14 @@ static MACHINE_CONFIG_START( super6, super6_state ) 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_Z80DART_ADD(Z80DART_TAG, XTAL_24MHz/4, dart_intf) + MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_24MHz/4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxa_w)) diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c index 21f24b0bb91..bb6fbdcdde2 100644 --- a/src/mess/drivers/superslave.c +++ b/src/mess/drivers/superslave.c @@ -268,62 +268,6 @@ WRITE_LINE_MEMBER( superslave_state::ft_w ) } -//------------------------------------------------- -// Z80DART_INTERFACE( dart0_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( dart0_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// Z80DART_INTERFACE( dart1_intf ) -//------------------------------------------------- - -static Z80DART_INTERFACE( dart1_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_C_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_D_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 ) DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 ) @@ -393,7 +337,14 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_8MHz/2) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_Z80DART_ADD(Z80DART_0_TAG, XTAL_8MHz/2, dart0_intf) + MCFG_Z80DART_ADD(Z80DART_0_TAG, XTAL_8MHz/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, rxa_w)) @@ -406,7 +357,14 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) MCFG_RS232_DCD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, dcdb_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, ctsb_w)) - MCFG_Z80DART_ADD(Z80DART_1_TAG, XTAL_8MHz/2, dart1_intf) + MCFG_Z80DART_ADD(Z80DART_1_TAG, XTAL_8MHz/2, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_C_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_C_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_C_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_D_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_D_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_D_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_C_TAG, default_rs232_devices, NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, rxa_w)) diff --git a/src/mess/drivers/tdv2324.c b/src/mess/drivers/tdv2324.c index 7011b8751fc..e2267bc4d64 100644 --- a/src/mess/drivers/tdv2324.c +++ b/src/mess/drivers/tdv2324.c @@ -235,34 +235,6 @@ UINT32 tdv2324_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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 -}; - - //------------------------------------------------- // tms9927_interface vtac_intf //------------------------------------------------- @@ -323,7 +295,8 @@ static MACHINE_CONFIG_START( tdv2324, tdv2324_state ) MCFG_DEVICE_ADD(P8253_5_1_TAG, PIT8253, 0) - MCFG_Z80SIO2_ADD(MK3887N4_TAG, 8000000/2, sio_intf) + MCFG_Z80SIO2_ADD(MK3887N4_TAG, 8000000/2, 0, 0, 0, 0) + MCFG_FD1797x_ADD(FD1797PL02_TAG, 8000000/4) MCFG_FLOPPY_DRIVE_ADD(FD1797PL02_TAG":0", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1797PL02_TAG":1", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c index 8265090ab68..186f8a31c3b 100644 --- a/src/mess/drivers/tiki100.c +++ b/src/mess/drivers/tiki100.c @@ -463,30 +463,6 @@ UINT32 tiki100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, return 0; } -/* Z80-DART Interface */ - -static Z80DART_INTERFACE( dart_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80-PIO Interface */ DECLARE_WRITE_LINE_MEMBER( tiki100_state::write_centronics_ack ) @@ -698,7 +674,14 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state ) // pixel clock 20.01782 MHz /* devices */ - MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_8MHz/4, dart_intf) + MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_8MHz/4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(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, XTAL_8MHz/4) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index dd85b5e3467..9f71593d172 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -612,34 +612,6 @@ WRITE_LINE_MEMBER( trs80m2_state::strobe_w ) m_centronics->write_strobe(!state); } -//------------------------------------------------- -// Z80SIO_INTERFACE( sio_intf ) -//------------------------------------------------- - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // Z80CTC //------------------------------------------------- @@ -796,7 +768,8 @@ static MACHINE_CONFIG_START( trs80m2, trs80m2_state ) MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(trs80m2_state, strobe_w)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(Z80PIO_TAG, z80pio_device, strobe_b)) @@ -880,7 +853,9 @@ static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(trs80m2_state, strobe_w)) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL ) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") diff --git a/src/mess/drivers/ts802.c b/src/mess/drivers/ts802.c index 10f9748245b..0d7ec9cc226 100644 --- a/src/mess/drivers/ts802.c +++ b/src/mess/drivers/ts802.c @@ -135,52 +135,6 @@ WRITE8_MEMBER( ts802_state::io_write_byte ) m_io->write_byte(offset, data); } -static Z80DART_INTERFACE( dart0_intf ) -{ - 0, 0, 0, 0, - - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY - DEVCB_NULL, // SYNC - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -static Z80DART_INTERFACE( dart1_intf ) -{ - 0, 0, 0, 0, - - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_dtr), - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, // out data - DEVCB_NULL, // DTR - DEVCB_NULL, // RTS - DEVCB_NULL, // WRDY - DEVCB_NULL, // SYNC - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static SLOT_INTERFACE_START( ts802_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -247,8 +201,11 @@ static MACHINE_CONFIG_START( ts802, ts802_state ) MCFG_Z80DMA_IN_IORQ_CB(READ8(ts802_state, io_read_byte)) MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(ts802_state, io_write_byte)) - MCFG_Z80DART_ADD("z80dart1", XTAL_16MHz / 4, dart0_intf ) - MCFG_Z80DART_ADD("z80dart2", XTAL_16MHz / 4, dart1_intf ) + MCFG_Z80DART_ADD("z80dart1", XTAL_16MHz / 4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_Z80DART_ADD("z80dart2", XTAL_16MHz / 4, 0, 0, 0, 0 ) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_16MHz / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 96ce7d6fcf8..00a3074c307 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -348,34 +348,6 @@ WRITE_LINE_MEMBER(victor9k_state::mux_serial_a_w) */ -//------------------------------------------------- -// UPD7201_INTERFACE( mpsc_intf ) -//------------------------------------------------- - -static UPD7201_INTERFACE( mpsc_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir1_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // MC6852_INTERFACE( ssda_intf ) //------------------------------------------------- @@ -962,7 +934,15 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_PIT8253_CLK2(100000) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE(I8259A_TAG, pic8259_device, ir2_w)) - MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, mpsc_intf) + MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir1_w)) + MCFG_DEVICE_ADD(MC6852_TAG, MC6852, XTAL_30MHz/30) MCFG_MC6852_TX_DATA_CALLBACK(DEVWRITELINE(HC55516_TAG, hc55516_device, digit_w)) MCFG_MC6852_IRQ_CALLBACK(WRITELINE(victor9k_state, ssda_irq_w)) diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c index a1fc9aab1dc..abbc820e163 100644 --- a/src/mess/drivers/x1.c +++ b/src/mess/drivers/x1.c @@ -2241,29 +2241,6 @@ static GFXDECODE_START( x1 ) // GFXDECODE_ENTRY( "pcg", 0x00000, x1_pcg_8x8, 0, 1 ) GFXDECODE_END -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static const z80_daisy_config x1_daisy[] = { { "x1kb" }, @@ -2602,7 +2579,8 @@ static MACHINE_CONFIG_DERIVED( x1turbo, x1 ) MCFG_CPU_CONFIG(x1turbo_daisy) MCFG_MACHINE_RESET_OVERRIDE(x1_state,x1turbo) - MCFG_Z80SIO0_ADD("sio", MAIN_CLOCK/4 , sio_intf ) + MCFG_Z80SIO0_ADD("sio", MAIN_CLOCK/4 , 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("x1_cpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("dma", Z80DMA, MAIN_CLOCK/4) MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE("x1_cpu", INPUT_LINE_HALT)) diff --git a/src/mess/drivers/x1twin.c b/src/mess/drivers/x1twin.c index b8603df9f1a..913bf46de1a 100644 --- a/src/mess/drivers/x1twin.c +++ b/src/mess/drivers/x1twin.c @@ -410,43 +410,6 @@ static GFXDECODE_START( x1 ) GFXDECODE_ENTRY( "kanji", 0x00000, x1_chars_16x16, 0, 1 ) GFXDECODE_END -#if 0 -static const z80sio_interface sio_intf = -{ - DEVCB_NULL, /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_NULL, /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - - -static Z80DART_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - 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_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; -#endif - - static const z80_daisy_config x1_daisy[] = { { "x1kb" }, diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c index fdd4e3bf5b4..f25722b20f2 100644 --- a/src/mess/drivers/xerox820.c +++ b/src/mess/drivers/xerox820.c @@ -348,31 +348,6 @@ WRITE_LINE_MEMBER( xerox820ii_state::rdpio_pardy_w ) // TODO } -/* Z80 SIO */ - -static Z80SIO_INTERFACE( sio_intf ) -{ - 0, 0, 0, 0, - - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_txd), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_dtr), - DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, write_rts), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 CTC */ TIMER_DEVICE_CALLBACK_MEMBER( xerox820_state::ctc_tick ) @@ -632,7 +607,14 @@ 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_Z80SIO0_ADD(Z80SIO_TAG, XTAL_20MHz/8, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_20MHz/8, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80sio0_device, rxa_w)) @@ -712,7 +694,14 @@ static MACHINE_CONFIG_START( xerox820ii, xerox820ii_state ) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats) - MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, sio_intf) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80sio0_device, rxa_w)) diff --git a/src/mess/includes/mc80.h b/src/mess/includes/mc80.h index 43c5654df1b..70af33622d2 100644 --- a/src/mess/includes/mc80.h +++ b/src/mess/includes/mc80.h @@ -52,13 +52,4 @@ public: required_device m_maincpu; }; - -/*----------- defined in machine/mc80.c -----------*/ - -/*****************************************************************************/ -/* Implementation for MC80.3x */ -/*****************************************************************************/ - -extern const z80dart_interface mc8030_asp_z80sio_intf; - -#endif /* MC80_H_ */ +#endif diff --git a/src/mess/machine/mc80.c b/src/mess/machine/mc80.c index ea6110ee639..d154cc20dcd 100644 --- a/src/mess/machine/mc80.c +++ b/src/mess/machine/mc80.c @@ -130,27 +130,3 @@ WRITE8_MEMBER( mc80_state::asp_port_a_w ) WRITE8_MEMBER( mc80_state::asp_port_b_w ) { } - -// SIO CH A in = keyboard; out = beeper; CH B = IFSS (??) -Z80SIO_INTERFACE( mc8030_asp_z80sio_intf ) -{ - 0, 0, 0, 0, - - 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 -};