diff options
author | smf- <smf-@users.noreply.github.com> | 2013-12-20 00:26:35 +0000 |
---|---|---|
committer | smf- <smf-@users.noreply.github.com> | 2013-12-20 00:26:35 +0000 |
commit | 10be53e45e0da6089a413dde34089325a246689d (patch) | |
tree | 42a6a4bbb20c1dafca5d62fe7db55795cf28df75 /src/mess | |
parent | 297064c46d13cf55e7b38679a54c6d53c44dabdb (diff) |
converted serial & rs232 devices to devcb2 [smf]
Diffstat (limited to 'src/mess')
64 files changed, 742 insertions, 1282 deletions
diff --git a/src/mess/drivers/68ksbc.c b/src/mess/drivers/68ksbc.c index 1ed0b5514bd..ded54f5648d 100644 --- a/src/mess/drivers/68ksbc.c +++ b/src/mess/drivers/68ksbc.c @@ -74,22 +74,13 @@ static ACIA6850_INTERFACE( acia_intf ) DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( c68ksbc, c68ksbc_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) // text says 8MHz, schematic says 10MHz MCFG_CPU_PROGRAM_MAP(c68ksbc_mem) MCFG_ACIA6850_ADD("acia", acia_intf) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/abc1600.c b/src/mess/drivers/abc1600.c index 339bb9b4ea7..10bce6de13c 100644 --- a/src/mess/drivers/abc1600.c +++ b/src/mess/drivers/abc1600.c @@ -845,34 +845,6 @@ WRITE_LINE_MEMBER( abc1600_state::nmi_w ) } -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -980,8 +952,8 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state ) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":0", abc1600_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":1", abc1600_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_ABC_KEYBOARD_PORT_ADD("abc99", DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z8470AB1_TAG, z80dart_device, dcdb_w)) MCFG_ABCBUS_SLOT_ADD("bus0i", abc1600bus_cards, NULL) MCFG_ABCBUS_SLOT_IRQ_CALLBACK(DEVWRITELINE(Z8536B1_TAG, z8536_device, pa7_w)) diff --git a/src/mess/drivers/abc80.c b/src/mess/drivers/abc80.c index 0c9a0384a59..0e589e1b04f 100644 --- a/src/mess/drivers/abc80.c +++ b/src/mess/drivers/abc80.c @@ -452,20 +452,6 @@ static ASCII_KEYBOARD_INTERFACE( keyboard_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -574,7 +560,7 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) MCFG_ABC80_KEYBOARD_ADD(WRITELINE(abc80_state, keydown_w)) MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "slow") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("slow", abc830_slow) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) // internal ram diff --git a/src/mess/drivers/abc80x.c b/src/mess/drivers/abc80x.c index e431809558e..19fbe1b342b 100644 --- a/src/mess/drivers/abc80x.c +++ b/src/mess/drivers/abc80x.c @@ -884,35 +884,6 @@ static const cassette_interface cass_intf = }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, ctsa_w) -}; - - - //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -1176,8 +1147,15 @@ static MACHINE_CONFIG_START( abc800c, abc800c_state ) MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc800_dart_intf) MCFG_CASSETTE_ADD("cassette", cass_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus @@ -1219,8 +1197,15 @@ static MACHINE_CONFIG_START( abc800m, abc800m_state ) MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc800_dart_intf) MCFG_CASSETTE_ADD("cassette", cass_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus @@ -1262,8 +1247,15 @@ static MACHINE_CONFIG_START( abc802, abc802_state ) MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc802_dart_intf) MCFG_CASSETTE_ADD("cassette", cass_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + MCFG_ABC_KEYBOARD_PORT_ADD("abc55", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus @@ -1298,8 +1290,15 @@ static MACHINE_CONFIG_START( abc806, abc806_state ) MCFG_Z80CTC_ADD(Z80CTC_TAG, ABC800_X01/2/2, ctc_intf) MCFG_Z80SIO2_ADD(Z80SIO_TAG, ABC800_X01/2/2, sio_intf) MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc806_dart_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + MCFG_ABC_KEYBOARD_PORT_ADD("abc77", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w)) // ABC bus diff --git a/src/mess/drivers/altos5.c b/src/mess/drivers/altos5.c index b959e5ae5d4..593b20c05b2 100644 --- a/src/mess/drivers/altos5.c +++ b/src/mess/drivers/altos5.c @@ -427,15 +427,6 @@ static Z80SIO_INTERFACE( sio_intf ) DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("z80sio", z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("z80sio", z80dart_device, rib_w), - DEVCB_DEVICE_LINE_MEMBER("z80sio", z80dart_device, ctsb_w) -}; - static SLOT_INTERFACE_START( altos5_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -508,7 +499,12 @@ static MACHINE_CONFIG_START( altos5, altos5_state ) MCFG_Z80CTC_ADD( "z80ctc", XTAL_8MHz / 2, ctc_intf ) MCFG_Z80DART_ADD("z80dart", XTAL_8MHz / 2, dart_intf ) MCFG_Z80SIO0_ADD("z80sio", XTAL_8MHz / 2, sio_intf ) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("z80sio", z80dart_device, dcdb_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("z80sio", z80dart_device, rib_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("z80sio", z80dart_device, ctsb_w)) + MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", altos5_state, ctc_tick, attotime::from_hz(XTAL_8MHz / 4)) MCFG_FD1797x_ADD("fdc", XTAL_8MHz / 8) MCFG_FLOPPY_DRIVE_ADD("fdc:0", altos5_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/ampro.c b/src/mess/drivers/ampro.c index 2ee210d3a85..6e31c0e9468 100644 --- a/src/mess/drivers/ampro.c +++ b/src/mess/drivers/ampro.c @@ -166,15 +166,6 @@ static Z80CTC_INTERFACE( ctc_intf ) DEVCB_NULL /* ZC/TO2 callback */ }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static SLOT_INTERFACE_START( ampro_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -209,7 +200,7 @@ static MACHINE_CONFIG_START( ampro, ampro_state ) /* Devices */ MCFG_Z80CTC_ADD( "z80ctc", XTAL_16MHz / 4, ctc_intf ) MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, dart_intf ) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", ampro_state, ctc_tick, attotime::from_hz(XTAL_16MHz / 8)) MCFG_WD1772x_ADD("fdc", XTAL_16MHz / 2) MCFG_FLOPPY_DRIVE_ADD("fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/amstr_pc.c b/src/mess/drivers/amstr_pc.c index 5bd19924b6d..5480c3896e6 100644 --- a/src/mess/drivers/amstr_pc.c +++ b/src/mess/drivers/amstr_pc.c @@ -272,10 +272,34 @@ static MACHINE_CONFIG_START( pc200, amstrad_pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], amstr_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_pc200 ) @@ -345,10 +369,34 @@ static MACHINE_CONFIG_START( ppc512, amstrad_pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], amstr_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], amstr_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", amstr_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_pc200 ) diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index f5160df1987..0e8f975f9d3 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -212,17 +212,6 @@ static Z80SIO_INTERFACE( apricot_z80sio_intf ) DEVCB_NULL }; -// note: missing a receive clock callback to support external clock mode -// (m_data_selector_rts == 1 and m_data_selector_dtr == 0) -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("ic15", z80dart_device, dcda_w), - DEVCB_DEVICE_LINE_MEMBER("ic15", z80dart_device, synca_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("ic15", z80dart_device, ctsa_w) -}; - // note: fault output should be connected to syncb input of the sio static const centronics_interface apricot_centronics_intf = { @@ -416,7 +405,12 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) MCFG_Z80SIO0_ADD("ic15", XTAL_15MHz / 6, apricot_z80sio_intf) // rs232 port - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) +// note: missing a receive clock callback to support external clock mode +// (m_data_selector_rts == 1 and m_data_selector_dtr == 0) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ic15", z80dart_device, dcda_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ic15", z80dart_device, synca_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w)) // centronics printer MCFG_CENTRONICS_PRINTER_ADD("centronics", apricot_centronics_intf) diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c index 3755095a0d9..b2365c76a1d 100644 --- a/src/mess/drivers/atarist.c +++ b/src/mess/drivers/atarist.c @@ -2143,20 +2143,6 @@ static const centronics_interface centronics_intf = //------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- // SLOT_INTERFACE( midiin_slot ) //------------------------------------------------- @@ -2174,11 +2160,6 @@ WRITE_LINE_MEMBER( st_state::midi_rx_w ) } } -static const serial_port_interface midiin_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(st_state, midi_rx_w) -}; - //------------------------------------------------- // SLOT_INTERFACE( midiout_slot ) @@ -2188,11 +2169,6 @@ static SLOT_INTERFACE_START( midiout_slot ) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - //************************************************************************** @@ -2438,9 +2414,12 @@ static MACHINE_CONFIG_START( st, st_state ) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") // cartridge MCFG_CARTSLOT_ADD("cart") @@ -2493,9 +2472,12 @@ static MACHINE_CONFIG_START( megast, megast_state ) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MCFG_RP5C15_ADD(RP5C15_TAG, XTAL_32_768kHz, rtc_intf) // cartridge @@ -2557,9 +2539,12 @@ static MACHINE_CONFIG_START( ste, ste_state ) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") // cartridge MCFG_CARTSLOT_ADD("cart") @@ -2631,9 +2616,12 @@ static MACHINE_CONFIG_START( stbook, stbook_state ) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, 0, st_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL, NULL) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin", NULL) - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout", NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL, NULL) + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin", NULL) + MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout", NULL) // cartridge MCFG_CARTSLOT_ADD("cart") diff --git a/src/mess/drivers/avigo.c b/src/mess/drivers/avigo.c index d3548040f7a..8bebc86ceb0 100644 --- a/src/mess/drivers/avigo.c +++ b/src/mess/drivers/avigo.c @@ -234,15 +234,6 @@ static const ins8250_interface avigo_com_interface = DEVCB_NULL }; -static const rs232_port_interface avigo_serport_config = -{ - DEVCB_DEVICE_LINE_MEMBER("ns16550", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("ns16550", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("ns16550", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("ns16550", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("ns16550", ins8250_uart_device, cts_w) -}; - void avigo_state::machine_reset() { /* if is a cold start initialize flash contents */ @@ -893,7 +884,13 @@ static MACHINE_CONFIG_START( avigo, avigo_state ) MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_NS16550_ADD( "ns16550", avigo_com_interface, XTAL_1_8432MHz ) - MCFG_RS232_PORT_ADD( "serport", avigo_serport_config, avigo_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport", avigo_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ns16550", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ns16550", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ns16550", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ns16550", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ns16550", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", LCD) diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c index 4153d09db23..537df17240c 100644 --- a/src/mess/drivers/bbc.c +++ b/src/mess/drivers/bbc.c @@ -629,15 +629,6 @@ static ECONET_INTERFACE( econet_intf ) DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_FRAGMENT( bbc_cartslot ) MCFG_CARTSLOT_ADD("cart1") MCFG_CARTSLOT_EXTENSION_LIST("rom") @@ -705,7 +696,7 @@ static MACHINE_CONFIG_START( bbca, bbc_state ) /* acia */ MCFG_ACIA6850_ADD("acia6850", bbc_acia6850_interface) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* devices */ MCFG_VIA6522_ADD("via6522_0", 1000000, bbcb_system_via) @@ -892,7 +883,7 @@ static MACHINE_CONFIG_START( bbcm, bbc_state ) /* acia */ MCFG_ACIA6850_ADD("acia6850", bbc_acia6850_interface) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* devices */ MCFG_UPD7002_ADD("upd7002", bbc_uPD7002) diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index f4298138753..00f98596b1c 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -1066,38 +1066,11 @@ WRITE_LINE_MEMBER( bulletf_state::req_w ) } -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //------------------------------------------------- // z80_daisy_config daisy_chain @@ -1247,9 +1220,9 @@ static MACHINE_CONFIG_START( bullet, bullet_state ) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232b_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232a_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // software lists MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet") @@ -1289,9 +1262,9 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state ) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232b_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232a_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_SCSIBUS_ADD(SCSIBUS_TAG) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) diff --git a/src/mess/drivers/bw12.c b/src/mess/drivers/bw12.c index 7f3df287ea9..9bfcb753cdf 100644 --- a/src/mess/drivers/bw12.c +++ b/src/mess/drivers/bw12.c @@ -601,33 +601,6 @@ FLOPPY_FORMATS_MEMBER( bw12_state::bw14_floppy_formats ) FLOPPY_FORMATS_END -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, ctsb_w) -}; - /* F4 Character Displayer */ static const gfx_layout bw12_charlayout = { @@ -679,8 +652,14 @@ static MACHINE_CONFIG_START( common, bw12_state ) MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, sio_intf) MCFG_PIT8253_ADD(PIT8253_TAG, pit_intf) MCFG_AY3600_ADD(AY3600PRO002_TAG, 0, bw12_ay3600_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, dcdb_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w)) /* printer */ MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, bw12_centronics_intf) diff --git a/src/mess/drivers/bw2.c b/src/mess/drivers/bw2.c index bf51997bde5..a10f6d68a94 100644 --- a/src/mess/drivers/bw2.c +++ b/src/mess/drivers/bw2.c @@ -595,20 +595,6 @@ static SLOT_INTERFACE_START( bw2_floppies ) SLOT_INTERFACE_END -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -674,7 +660,7 @@ static MACHINE_CONFIG_START( bw2, bw2_state ) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, NULL, bw2_state::floppy_formats) MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, XTAL_16MHz, bw2_expansion_cards, NULL) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) // software list MCFG_SOFTWARE_LIST_ADD("flop_list","bw2") diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index aaca6f82491..cf57527daf2 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1925,20 +1925,6 @@ static CBM2_USER_PORT_INTERFACE( p500_user_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(MOS6551A_TAG, mos6551_device, rxd_w), - DEVCB_DEVICE_LINE_MEMBER(MOS6551A_TAG, mos6551_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER(MOS6551A_TAG, mos6551_device, dsr_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(MOS6551A_TAG, mos6551_device, cts_w) -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -2196,7 +2182,13 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state ) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL) MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6567_CLOCK, cbm2_expansion_cards, NULL) MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, rxd_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, cts_w)) + MCFG_QUICKLOAD_ADD("quickload", p500_state, p500, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) // internal ram @@ -2253,7 +2245,13 @@ static MACHINE_CONFIG_START( p500_pal, p500_state ) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL) MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6569_CLOCK, cbm2_expansion_cards, NULL) MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, rxd_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, cts_w)) + MCFG_QUICKLOAD_ADD("quickload", p500_state, p500, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) // internal ram @@ -2316,7 +2314,13 @@ static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state ) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL) MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, XTAL_18MHz/9, cbm2_expansion_cards, NULL) MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, rxd_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MOS6551A_TAG, mos6551_device, cts_w)) + MCFG_QUICKLOAD_ADD("quickload", cbm2_state, cbmb, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) // software list diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index 0331414b67d..e10e517b143 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -673,34 +673,6 @@ static const mm58274c_interface rtc_intf = //------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I8274_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I8274_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I8274_TAG, z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(I8274_TAG, z80dart_device, ctsb_w) -}; - - -//------------------------------------------------- // cassette_interface compis_cassette_interface //------------------------------------------------- @@ -790,8 +762,15 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_I8274_ADD(I8274_TAG, XTAL_16MHz/4, mpsc_intf) MCFG_MM58274C_ADD(MM58174A_TAG, rtc_intf) MCFG_CASSETTE_ADD(CASSETTE_TAG, compis_cassette_interface) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcdb_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsb_w)) + MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100)) MCFG_ISBX_SLOT_ADD(ISBX_0_TAG, 0, isbx_cards, "fdc") diff --git a/src/mess/drivers/dectalk.c b/src/mess/drivers/dectalk.c index 5a3d160f99c..a808048b705 100644 --- a/src/mess/drivers/dectalk.c +++ b/src/mess/drivers/dectalk.c @@ -399,15 +399,6 @@ static const duartn68681_config dectalk_duart_config = DEVCB_DRIVER_MEMBER(dectalk_state, dectalk_duart_output), /* output port */ }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("duartn68681", duartn68681_device, rx_b_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* FIFO and TMS32010 stuff */ #define SPC_INITIALIZE state->m_m68k_spcflags_latch&0x1 // speech initialize flag @@ -921,7 +912,8 @@ static MACHINE_CONFIG_START( dectalk, dectalk_state ) /* Y2 is a 3.579545 MHz xtal for the dtmf decoder chip */ - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duartn68681", duartn68681_device, rx_b_w)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/ep64.c b/src/mess/drivers/ep64.c index 073d40a54fd..99bee8fb1df 100644 --- a/src/mess/drivers/ep64.c +++ b/src/mess/drivers/ep64.c @@ -461,19 +461,6 @@ INPUT_PORTS_END // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DAVE_TAG, dave_device, int2_w) -}; - //------------------------------------------------- // cassette_interface cass_intf @@ -542,7 +529,10 @@ static MACHINE_CONFIG_START( ep64, ep64_state ) MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, DAVE_TAG, NULL) MCFG_EP64_EXPANSION_BUS_CALLBACKS(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), INPUTLINE(Z80_TAG, INPUT_LINE_NMI), INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT)) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(DAVE_TAG, dave_device, int2_w)) + MCFG_CASSETTE_ADD(CASSETTE1_TAG, cass_intf) MCFG_CASSETTE_ADD(CASSETTE2_TAG, cass_intf) diff --git a/src/mess/drivers/esq1.c b/src/mess/drivers/esq1.c index cebd3ab1721..54ff6e52f8e 100644 --- a/src/mess/drivers/esq1.c +++ b/src/mess/drivers/esq1.c @@ -590,20 +590,10 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("duart", duartn68681_device, rx_a_w) // route MIDI Tx send directly to 68681 channel A Rx -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - static const duartn68681_config duart_config = { DEVCB_DRIVER_LINE_MEMBER(esq1_state, duart_irq_handler), @@ -627,8 +617,11 @@ static MACHINE_CONFIG_START( esq1, esq1_state ) MCFG_DUARTN68681_ADD("duart", 4000000, duart_config) MCFG_ESQPANEL2x40_ADD("panel", esqpanel_config) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duart", duartn68681_device, rx_a_w)) // route MIDI Tx send directly to 68681 channel A Rx + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mess/drivers/esq5505.c b/src/mess/drivers/esq5505.c index c9b73b37c62..9056445b69b 100644 --- a/src/mess/drivers/esq5505.c +++ b/src/mess/drivers/esq5505.c @@ -653,20 +653,10 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("duart", duartn68681_device, rx_a_w) // route MIDI Tx send directly to 68681 channel A Rx -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - static MACHINE_CONFIG_START( vfx, esq5505_state ) MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(vfx_map) @@ -678,8 +668,10 @@ static MACHINE_CONFIG_START( vfx, esq5505_state ) MCFG_DUARTN68681_ADD("duart", 4000000, duart_config) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duart", duartn68681_device, rx_a_w)) // route MIDI Tx send directly to 68681 channel A Rx + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -732,8 +724,10 @@ static MACHINE_CONFIG_START(vfx32, esq5505_state) MCFG_DUARTN68681_ADD("duart", 4000000, duart_config) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duart", duartn68681_device, rx_a_w)) // route MIDI Tx send directly to 68681 channel A Rx + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mess/drivers/esqkt.c b/src/mess/drivers/esqkt.c index 8a154743ce2..300dd27509e 100644 --- a/src/mess/drivers/esqkt.c +++ b/src/mess/drivers/esqkt.c @@ -240,20 +240,10 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("duart", duartn68681_device, rx_a_w) // route MIDI Tx send directly to 68681 channel A Rx -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - static MACHINE_CONFIG_START( kt, esqkt_state ) MCFG_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(kt_map) @@ -264,8 +254,11 @@ static MACHINE_CONFIG_START( kt, esqkt_state ) MCFG_ESQPANEL2x40_SQ1_ADD("sq1panel", esqpanel_config) MCFG_DUARTN68681_ADD("duart", 4000000, duart_config) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duart", duartn68681_device, rx_a_w)) // route MIDI Tx send directly to 68681 channel A Rx + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) diff --git a/src/mess/drivers/horizon.c b/src/mess/drivers/horizon.c index 76947656fd4..68748d5a8c1 100644 --- a/src/mess/drivers/horizon.c +++ b/src/mess/drivers/horizon.c @@ -133,38 +133,11 @@ static const i8251_interface usart_r_intf = }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //------------------------------------------------- // S100_INTERFACE( s100_intf ) @@ -219,9 +192,9 @@ static MACHINE_CONFIG_START( horizon, horizon_state ) // devices MCFG_I8251_ADD(I8251_L_TAG, usart_l_intf) MCFG_I8251_ADD(I8251_R_TAG, usart_r_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // S-100 MCFG_S100_BUS_ADD(s100_intf) diff --git a/src/mess/drivers/ht68k.c b/src/mess/drivers/ht68k.c index 80f612667f6..e2d4dd52479 100644 --- a/src/mess/drivers/ht68k.c +++ b/src/mess/drivers/ht68k.c @@ -121,15 +121,6 @@ WRITE8_MEMBER(ht68k_state::duart_output) if (m_floppy) {m_floppy->ss_w(BIT(data,3) ? 0 : 1);} } -static const rs232_port_interface rs232_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("duart68681", duartn68681_device, rx_a_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static const duartn68681_config ht68k_duart68681_config = { DEVCB_DRIVER_LINE_MEMBER(ht68k_state, duart_irq_handler), @@ -148,7 +139,8 @@ static MACHINE_CONFIG_START( ht68k, ht68k_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(ht68k_mem) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("duart68681", duartn68681_device, rx_a_w)) /* video hardware */ MCFG_DUARTN68681_ADD( "duart68681", XTAL_8MHz / 2, ht68k_duart68681_config ) diff --git a/src/mess/drivers/hx20.c b/src/mess/drivers/hx20.c index 2164efadfda..3e91a307bf4 100644 --- a/src/mess/drivers/hx20.c +++ b/src/mess/drivers/hx20.c @@ -755,20 +755,6 @@ WRITE_LINE_MEMBER( hx20_state::rtc_irq_w ) } -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // VIDEO @@ -862,7 +848,7 @@ static MACHINE_CONFIG_START( hx20, hx20_state ) // devices MCFG_MC146818_ADD(MC146818_TAG, XTAL_4_194304Mhz) MCFG_MC146818_IRQ_HANDLER(WRITELINE(hx20_state, rtc_irq_w)) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_CASSETTE_ADD(CASSETTE_TAG, default_cassette_interface) MCFG_EPSON_SIO_ADD("sio", "tf20") diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c index c14250a7024..fee9cf11c9d 100644 --- a/src/mess/drivers/isbc.c +++ b/src/mess/drivers/isbc.c @@ -256,15 +256,6 @@ static const i8251_interface isbc_uart8251_interface = DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("uart8274", z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("uart8274", z80dart_device, ctsa_w) -}; - READ8_MEMBER( isbc_state::get_slave_ack ) { if (offset == 7) @@ -323,7 +314,10 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_I8255A_ADD("ppi", isbc286_ppi_interface) MCFG_CENTRONICS_PRINTER_ADD("centronics", isbc_centronics) MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, isbc_uart8274_interface) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart8274", z80dart_device, ctsa_w)) MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, "fdc_218a") MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE("pic_1", pic8259_device, ir3_w)) diff --git a/src/mess/drivers/kyocera.c b/src/mess/drivers/kyocera.c index 7fc7d5b68c7..23120578e4f 100644 --- a/src/mess/drivers/kyocera.c +++ b/src/mess/drivers/kyocera.c @@ -1199,19 +1199,6 @@ static const i8251_interface tandy200_uart_intf = DEVCB_NULL }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Machine Drivers */ void kc85_state::machine_start() @@ -1405,7 +1392,7 @@ static MACHINE_CONFIG_START( kc85, kc85_state ) MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) MCFG_IM6402_ADD(IM6402_TAG, uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) @@ -1444,7 +1431,7 @@ static MACHINE_CONFIG_START( pc8201, pc8201_state ) MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) MCFG_IM6402_ADD(IM6402_TAG, uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) @@ -1495,7 +1482,7 @@ static MACHINE_CONFIG_START( trsm100, trsm100_state ) MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) MCFG_IM6402_ADD(IM6402_TAG, uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) @@ -1545,7 +1532,7 @@ static MACHINE_CONFIG_START( tandy200, tandy200_state ) MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, tandy200_8155_intf) MCFG_RP5C01_ADD(RP5C01A_TAG, XTAL_32_768kHz, tandy200_rtc_intf) MCFG_I8251_ADD(I8251_TAG, /*XTAL_4_9152MHz/2,*/ tandy200_uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) diff --git a/src/mess/drivers/mikromik.c b/src/mess/drivers/mikromik.c index 889fc8bc060..c6f903c6e9d 100644 --- a/src/mess/drivers/mikromik.c +++ b/src/mess/drivers/mikromik.c @@ -683,49 +683,6 @@ void mm1_state::fdc_drq_w(bool state) } -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232c_intf -//------------------------------------------------- - -static const rs232_port_interface rs232c_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, ctsb_w) -}; - - - //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -799,9 +756,11 @@ static MACHINE_CONFIG_START( mm1, mm1_state ) MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_6_144MHz/2, mpsc_intf) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", mm1_floppies, "525qd", mm1_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", mm1_floppies, "525qd", mm1_state::floppy_formats) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_C_TAG, rs232c_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_C_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/ob68k1a.c b/src/mess/drivers/ob68k1a.c index 3da5d440751..79d2a75fdbb 100644 --- a/src/mess/drivers/ob68k1a.c +++ b/src/mess/drivers/ob68k1a.c @@ -258,34 +258,6 @@ WRITE_LINE_MEMBER( ob68k1a_state::rx_tx_1_w ) } -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -346,8 +318,8 @@ static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state ) MCFG_ACIA6850_ADD(MC6850_0_TAG, acia0_intf) MCFG_ACIA6850_ADD(MC6850_1_TAG, acia1_intf) MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(ob68k1a_state, rx_tx_0_w), WRITELINE(ob68k1a_state, rx_tx_1_w)) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c index 60a05a72769..b172748d409 100644 --- a/src/mess/drivers/pc.c +++ b/src/mess/drivers/pc.c @@ -1047,10 +1047,34 @@ static MACHINE_CONFIG_START( pccga, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cga ) @@ -1155,10 +1179,35 @@ static MACHINE_CONFIG_START( europc, europc_pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) + MCFG_PC_JOY_ADD("pc_joy") /* video hardware */ @@ -1225,8 +1274,20 @@ static MACHINE_CONFIG_START( t1000hx, tandy_pc_state ) MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000") @@ -1283,8 +1344,20 @@ static MACHINE_CONFIG_START( t1000_16, tandy_pc_state ) MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000") @@ -1342,8 +1415,20 @@ static MACHINE_CONFIG_START( t1000_286, tandy_pc_state ) MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000") @@ -1419,8 +1504,20 @@ static MACHINE_CONFIG_START( ibmpcjr, tandy_pc_state ) MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_PCVIDEO_PCJR_ADD("pcvideo_pcjr") @@ -1606,10 +1703,34 @@ static MACHINE_CONFIG_START( iskr1031, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cga ) @@ -1682,10 +1803,34 @@ static MACHINE_CONFIG_START( iskr3104, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ // MCFG_FRAGMENT_ADD( pcvideo_ega ) // Put this back after ISA are added to this driver @@ -1737,10 +1882,34 @@ static MACHINE_CONFIG_START( poisk2, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_poisk2 ) @@ -1792,10 +1961,34 @@ static MACHINE_CONFIG_START( zenith, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cga ) @@ -1847,10 +2040,34 @@ static MACHINE_CONFIG_START( olivetti, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cga ) @@ -1902,10 +2119,34 @@ static MACHINE_CONFIG_START( ibm5550, pc_state ) MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */ - MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL ) - MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport2", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_2", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport3", ibm5150_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w)) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cga ) diff --git a/src/mess/drivers/pc1512.c b/src/mess/drivers/pc1512.c index 7c7911e5d24..c4c1fe83a80 100644 --- a/src/mess/drivers/pc1512.c +++ b/src/mess/drivers/pc1512.c @@ -1133,20 +1133,6 @@ static SLOT_INTERFACE_START( pc1512_floppies ) SLOT_INTERFACE_END -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(INS8250_TAG, ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER(INS8250_TAG, ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER(INS8250_TAG, ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER(INS8250_TAG, ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER(INS8250_TAG, ins8250_uart_device, cts_w) -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -1311,7 +1297,12 @@ static MACHINE_CONFIG_START( pc1512, pc1512_state ) MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, NULL, pc1512_state::floppy_formats) MCFG_INS8250_ADD(INS8250_TAG, uart_intf, XTAL_1_8432MHz) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, cts_w)) // ISA8 bus MCFG_ISA8_BUS_ADD(ISA_BUS_TAG, ":" I8086_TAG, isabus_intf) @@ -1375,7 +1366,12 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state ) MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, NULL, pc1512_state::floppy_formats) MCFG_INS8250_ADD(INS8250_TAG, uart_intf, XTAL_1_8432MHz) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(INS8250_TAG, ins8250_uart_device, cts_w)) // ISA8 bus MCFG_ISA8_BUS_ADD(ISA_BUS_TAG, ":" I8086_TAG, isabus_intf) diff --git a/src/mess/drivers/pc8401a.c b/src/mess/drivers/pc8401a.c index 6d42cd9862e..0c447ae1295 100644 --- a/src/mess/drivers/pc8401a.c +++ b/src/mess/drivers/pc8401a.c @@ -582,19 +582,6 @@ static const i8251_interface uart_intf = DEVCB_NULL }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Machine Drivers */ static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) @@ -610,7 +597,7 @@ static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) MCFG_I8251_ADD(I8251_TAG, uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* video hardware */ MCFG_FRAGMENT_ADD(pc8401a_video) @@ -644,7 +631,7 @@ static MACHINE_CONFIG_START( pc8500, pc8500_state ) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) MCFG_I8251_ADD(I8251_TAG, uart_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* video hardware */ MCFG_FRAGMENT_ADD(pc8500_video) diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c index ab5946fa19c..b7f4d60bc02 100644 --- a/src/mess/drivers/portfoli.c +++ b/src/mess/drivers/portfoli.c @@ -772,20 +772,6 @@ static const centronics_interface centronics_intf = }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(M82C50A_TAG, ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER(M82C50A_TAG, ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER(M82C50A_TAG, ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER(M82C50A_TAG, ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER(M82C50A_TAG, ins8250_uart_device, cts_w) -}; - - //************************************************************************** // IMAGE LOADING @@ -913,7 +899,13 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_INS8250_ADD(M82C50A_TAG, i8250_intf, XTAL_1_8432MHz) // should be MCFG_INS8250A_ADD MCFG_TIMER_DRIVER_ADD_PERIODIC("counter", portfolio_state, counter_tick, attotime::from_hz(XTAL_32_768kHz/16384)) MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_TICK_TAG, portfolio_state, system_tick, attotime::from_hz(XTAL_32_768kHz/32768)) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(M82C50A_TAG, ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(M82C50A_TAG, ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(M82C50A_TAG, ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(M82C50A_TAG, ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(M82C50A_TAG, ins8250_uart_device, cts_w)) /* fake keyboard */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500)) diff --git a/src/mess/drivers/prof80.c b/src/mess/drivers/prof80.c index 38534b515e9..d4e71be1d7b 100644 --- a/src/mess/drivers/prof80.c +++ b/src/mess/drivers/prof80.c @@ -451,20 +451,6 @@ static ECBBUS_INTERFACE( ecb_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -549,8 +535,8 @@ static MACHINE_CONFIG_START( prof80, prof80_state ) MCFG_ECBBUS_SLOT_ADD(5, "ecb_5", ecbbus_cards, NULL) // V24 - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/px4.c b/src/mess/drivers/px4.c index 9395c5fe4dd..5a9f0bbed48 100644 --- a/src/mess/drivers/px4.c +++ b/src/mess/drivers/px4.c @@ -1242,15 +1242,6 @@ PALETTE_INIT_MEMBER(px4_state, px4p) // MACHINE DRIVERS //************************************************************************** -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static const cassette_interface px4_cassette_interface = { cassette_default_formats, @@ -1299,7 +1290,7 @@ static MACHINE_CONFIG_START( px4, px4_state ) MCFG_EPSON_SIO_ADD("sio", NULL) // rs232 port - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, NULL) // rom capsules MCFG_CARTSLOT_ADD("capsule1") diff --git a/src/mess/drivers/ql.c b/src/mess/drivers/ql.c index a073bd2967f..59a88851140 100644 --- a/src/mess/drivers/ql.c +++ b/src/mess/drivers/ql.c @@ -887,34 +887,6 @@ static MICRODRIVE_CONFIG( mdv2_config ) }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -1034,8 +1006,8 @@ static MACHINE_CONFIG_START( ql, ql_state ) MCFG_WD1772_ADD(WD1772_TAG,ql_wd17xx_interface) MCFG_MICRODRIVE_ADD(MDV_1, mdv1_config) MCFG_MICRODRIVE_ADD(MDV_2, mdv2_config) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) // wired as DCE - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) // wired as DTE + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) // wired as DCE + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // wired as DTE // cartridge MCFG_CARTSLOT_ADD("cart") diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index f78f617de3b..a56c163d315 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -843,19 +843,6 @@ static ADDRESS_MAP_START( upd7220_map, AS_0, 8, qx10_state ) AM_RANGE(0x00000, 0x5ffff) AM_READWRITE(vram_r,vram_w) ADDRESS_MAP_END -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( qx10, qx10_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MAIN_CLK / 4) @@ -887,7 +874,7 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) MCFG_UPD765A_ADD("upd765", true, true) MCFG_FLOPPY_DRIVE_ADD("upd765:0", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_QX10_KEYBOARD_ADD("kbd", qx10_keyboard_interface) /* internal ram */ diff --git a/src/mess/drivers/sage2.c b/src/mess/drivers/sage2.c index 19ddbac6977..6d97e120073 100644 --- a/src/mess/drivers/sage2.c +++ b/src/mess/drivers/sage2.c @@ -497,38 +497,11 @@ static const centronics_interface centronics_intf = }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x08 ) // 19200 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x10 ) // 7E1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //************************************************************************** @@ -582,9 +555,9 @@ static MACHINE_CONFIG_START( sage2, sage2_state ) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_IEEE488_BUS_ADD() - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/sdk86.c b/src/mess/drivers/sdk86.c index 6a934bc4170..7b0ebc51ed9 100644 --- a/src/mess/drivers/sdk86.c +++ b/src/mess/drivers/sdk86.c @@ -165,15 +165,6 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x20 ) // 8N2 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( sdk86, sdk86_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_14_7456MHz/3) /* divided down by i8284 clock generator; jumper selection allows it to be slowed to 2.5MHz, hence changing divider from 3 to 6 */ @@ -186,7 +177,7 @@ static MACHINE_CONFIG_START( sdk86, sdk86_state ) /* Devices */ MCFG_I8251_ADD(I8251_TAG, usart_intf) MCFG_I8279_ADD("i8279", 2500000, sdk86_intf) // based on divider - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", sdk86_state, serial_tick, attotime::from_hz(307200)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/sg1000.c b/src/mess/drivers/sg1000.c index 34ec6dff097..feb99678ef0 100644 --- a/src/mess/drivers/sg1000.c +++ b/src/mess/drivers/sg1000.c @@ -686,19 +686,6 @@ static const sn76496_config psg_intf = DEVCB_NULL }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /*------------------------------------------------- MACHINE_START( sg1000 ) -------------------------------------------------*/ @@ -902,7 +889,7 @@ static MACHINE_CONFIG_START( sf7000, sf7000_state ) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD("cassette", sc3000_cassette_interface) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* software lists */ MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000") diff --git a/src/mess/drivers/softbox.c b/src/mess/drivers/softbox.c index 5284941ec11..e95136970fb 100644 --- a/src/mess/drivers/softbox.c +++ b/src/mess/drivers/softbox.c @@ -336,24 +336,11 @@ static I8255A_INTERFACE( ppi1_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x10 ) // 7E1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //************************************************************************** @@ -431,7 +418,7 @@ static MACHINE_CONFIG_START( softbox, softbox_state ) MCFG_HARDDISK_ADD("harddisk2") MCFG_HARDDISK_ADD("harddisk3") MCFG_HARDDISK_ADD("harddisk4") - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) MCFG_IMI5000H_ADD("corvus1") diff --git a/src/mess/drivers/super6.c b/src/mess/drivers/super6.c index 26892775028..92e42ec9ec5 100644 --- a/src/mess/drivers/super6.c +++ b/src/mess/drivers/super6.c @@ -494,38 +494,11 @@ static const z80_daisy_config super6_daisy_chain[] = }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x08 ) // 19200 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //************************************************************************** @@ -588,9 +561,9 @@ static MACHINE_CONFIG_START( super6, super6_state ) MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, NULL, WRITELINE(super6_state, fr_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", super6_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", super6_floppies, NULL, floppy_image_device::default_floppy_formats) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232b_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232a_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c index 0de3239bb5c..ba5c60cf95a 100644 --- a/src/mess/drivers/superslave.c +++ b/src/mess/drivers/superslave.c @@ -336,66 +336,11 @@ static Z80PIO_INTERFACE( pio_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_0_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_0_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_0_TAG, z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_0_TAG, z80dart_device, ctsb_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232c_intf -//------------------------------------------------- - -static const rs232_port_interface rs232c_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_1_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_1_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232d_intf -//------------------------------------------------- - -static const rs232_port_interface rs232d_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_1_TAG, z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(Z80DART_1_TAG, z80dart_device, ctsb_w) -}; - //------------------------------------------------- // z80_daisy_config superslave_daisy_chain @@ -456,11 +401,23 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) MCFG_Z80DART_ADD(Z80DART_1_TAG, XTAL_8MHz/2, dart1_intf) MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf) MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, NULL, WRITELINE(superslave_state, fr_w), WRITELINE(superslave_state, ft_w)) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal") + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, ctsa_w)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_C_TAG, rs232c_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_D_TAG, rs232d_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, dcdb_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_0_TAG, z80dart_device, ctsb_w)) + + MCFG_RS232_PORT_ADD(RS232_C_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_D_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, dcdb_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(Z80DART_1_TAG, z80dart_device, ctsb_w)) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/tandy2k.c b/src/mess/drivers/tandy2k.c index 5bdd7be2e2a..e38347386a8 100644 --- a/src/mess/drivers/tandy2k.c +++ b/src/mess/drivers/tandy2k.c @@ -603,19 +603,6 @@ static const centronics_interface centronics_intf = DEVCB_NULL // NOT BUSY output }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - // Keyboard WRITE_LINE_MEMBER( tandy2k_state::kbdclk_w ) @@ -712,7 +699,7 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_TANDY2K_KEYBOARD_ADD(WRITELINE(tandy2k_state, kbdclk_w), WRITELINE(tandy2k_state, kbddat_w)) // software lists diff --git a/src/mess/drivers/tavernie.c b/src/mess/drivers/tavernie.c index b3edd92a275..02340ec8465 100644 --- a/src/mess/drivers/tavernie.c +++ b/src/mess/drivers/tavernie.c @@ -342,15 +342,6 @@ static ACIA6850_INTERFACE( mc6850_intf ) DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - WRITE8_MEMBER( tavernie_state::kbd_put ) { m_term_data = data; @@ -376,7 +367,7 @@ static MACHINE_CONFIG_START( cpu09, tavernie_state ) /* Devices */ MCFG_CASSETTE_ADD( "cassette", default_cassette_interface ) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") MCFG_PIA6821_ADD("pia", mc6821_intf) MCFG_PTM6840_ADD("ptm", mc6840_intf) MCFG_ACIA6850_ADD("acia", mc6850_intf) diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c index a008fa790eb..9f0243a838f 100644 --- a/src/mess/drivers/tiki100.c +++ b/src/mess/drivers/tiki100.c @@ -623,19 +623,6 @@ static const z80_daisy_config tiki100_daisy_chain[] = { NULL } }; -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //------------------------------------------------- // cassette_interface cassette_intf @@ -720,8 +707,8 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state ) MCFG_FD1797x_ADD(FD1797_TAG, XTAL_8MHz/8) // FD1767PL-02 or FD1797-PL MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", tiki100_floppies, "525qd", tiki100_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", tiki100_floppies, "525qd", tiki100_state::floppy_formats) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_CASSETTE_ADD(CASSETTE_TAG, cassette_intf) MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", tiki100_state, tape_tick, attotime::from_hz(44100)) diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c index c501819bef3..7f956c3673b 100644 --- a/src/mess/drivers/v1050.c +++ b/src/mess/drivers/v1050.c @@ -1013,19 +1013,6 @@ void v1050_state::fdc_drq_w(bool state) update_fdc(); } -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* static LEGACY_FLOPPY_OPTIONS_START( v1050 ) LEGACY_FLOPPY_OPTION( v1050, "dsk", "Visual 1050 disk image", basicdsk_identify_default, basicdsk_construct_default, NULL, @@ -1150,7 +1137,7 @@ static MACHINE_CONFIG_START( v1050, v1050_state ) MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", v1050_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_KB_TAG, v1050_state, kb_8251_tick, attotime::from_hz((double)XTAL_16MHz/4/13/8)) MCFG_TIMER_DRIVER_ADD(TIMER_SIO_TAG, v1050_state, sio_8251_tick) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) // SASI bus MCFG_SCSIBUS_ADD(SASIBUS_TAG) diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 80515163fb2..b5be86d9ccd 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -1174,35 +1174,6 @@ static SLOT_INTERFACE_START( victor9k_floppies ) SLOT_INTERFACE_END -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, dcda_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, ria_w), - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, ctsa_w) -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, dcdb_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, rib_w), - DEVCB_DEVICE_LINE_MEMBER(UPD7201_TAG, z80dart_device, ctsb_w) -}; - - - //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -1281,8 +1252,17 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_VIA6522_ADD(M6522_6_TAG, XTAL_30MHz/30, via6_intf) MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ria_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcdb_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) + MCFG_VICTOR9K_KEYBOARD_ADD(WRITELINE(victor9k_state, kbrdy_w)) // internal ram diff --git a/src/mess/drivers/vixen.c b/src/mess/drivers/vixen.c index 45c8efe65e6..ec69f98f06f 100644 --- a/src/mess/drivers/vixen.c +++ b/src/mess/drivers/vixen.c @@ -709,20 +709,6 @@ void vixen_state::fdc_intrq_w(bool state) } -//------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //************************************************************************** // MACHINE INITIALIZATION @@ -832,7 +818,7 @@ static MACHINE_CONFIG_START( vixen, vixen_state ) MCFG_IEEE488_BUS_ADD() MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(vixen_state, srq_w)) MCFG_IEEE488_ATN_CALLBACK(WRITELINE(vixen_state, atn_w)) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) /* software lists */ MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen") diff --git a/src/mess/drivers/vk100.c b/src/mess/drivers/vk100.c index edacff66546..f26ccb6e6be 100644 --- a/src/mess/drivers/vk100.c +++ b/src/mess/drivers/vk100.c @@ -1021,15 +1021,6 @@ static const i8251_interface i8251_intf = DEVCB_NULL // out_syndet_cb }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( vk100, vk100_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_5_0688MHz) @@ -1045,7 +1036,7 @@ static MACHINE_CONFIG_START( vk100, vk100_state ) /* i8251 uart */ MCFG_I8251_ADD("i8251", i8251_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) MCFG_DEFAULT_LAYOUT( layout_vk100 ) diff --git a/src/mess/drivers/votrpss.c b/src/mess/drivers/votrpss.c index 8560fc6a8e0..27170b7cede 100644 --- a/src/mess/drivers/votrpss.c +++ b/src/mess/drivers/votrpss.c @@ -209,15 +209,6 @@ static const i8251_interface uart_intf = DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static const struct pit8253_interface pit_intf = { { @@ -350,7 +341,7 @@ static MACHINE_CONFIG_START( votrpss, votrpss_state ) /* Serial components - comment out if not needed */ //MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", votrpss_state, serial_tick, attotime::from_hz(153600)) - //MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + //MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") MACHINE_CONFIG_END diff --git a/src/mess/drivers/votrtnt.c b/src/mess/drivers/votrtnt.c index 148acb7b59e..5e213467c04 100644 --- a/src/mess/drivers/votrtnt.c +++ b/src/mess/drivers/votrtnt.c @@ -101,15 +101,6 @@ static ACIA6850_INTERFACE( acia_intf ) DEVCB_NULL }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static struct votrax_sc01_interface votrtnt_votrax_interface = { DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0) @@ -129,7 +120,7 @@ static MACHINE_CONFIG_START( votrtnt, votrtnt_state ) /* serial hardware */ MCFG_ACIA6850_ADD("acia", acia_intf) - MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c index 2205603203f..dbe02a2a863 100644 --- a/src/mess/drivers/vt100.c +++ b/src/mess/drivers/vt100.c @@ -418,15 +418,6 @@ static const i8251_interface i8251_intf = DEVCB_NULL // out_syndet_cb }; -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( vt100, vt100_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_24_8832MHz / 9) @@ -454,7 +445,7 @@ static MACHINE_CONFIG_START( vt100, vt100_state ) /* i8251 uart */ MCFG_I8251_ADD("i8251", i8251_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index 50775f9fb64..ea1b44a20de 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -1042,20 +1042,6 @@ static const centronics_interface centronics_intf = //------------------------------------------------- -// rs232_port_interface rs232_intf -//------------------------------------------------- - -static const rs232_port_interface rs232_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- // WANGPC_BUS_INTERFACE( kb_intf ) //------------------------------------------------- @@ -1206,7 +1192,7 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf) - MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) MCFG_WANGPC_KEYBOARD_ADD() // bus diff --git a/src/mess/drivers/wicat.c b/src/mess/drivers/wicat.c index 21178ea201b..08694eef7fa 100644 --- a/src/mess/drivers/wicat.c +++ b/src/mess/drivers/wicat.c @@ -601,51 +601,6 @@ static mm58274c_interface wicat_rtc_intf = 1 // first day }; -struct rs232_port_interface wicat_serial1_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("uart1",mc2661_device,rx_w), // RX out - DEVCB_DEVICE_LINE_MEMBER("uart1",mc2661_device,dcd_w), // DCD out - DEVCB_DEVICE_LINE_MEMBER("uart1",mc2661_device,dsr_w), // DSR out - DEVCB_NULL, // RI out - DEVCB_DEVICE_LINE_MEMBER("uart1",mc2661_device,cts_w) // CTS out -}; - -struct rs232_port_interface wicat_serial2_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("uart2",mc2661_device,rx_w), // RX out - DEVCB_DEVICE_LINE_MEMBER("uart2",mc2661_device,dcd_w), // DCD out - DEVCB_DEVICE_LINE_MEMBER("uart2",mc2661_device,dsr_w), // DSR out - DEVCB_NULL, // RI out - DEVCB_DEVICE_LINE_MEMBER("uart2",mc2661_device,cts_w) // CTS out -}; - -struct rs232_port_interface wicat_serial3_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("uart3",mc2661_device,rx_w), // RX out - DEVCB_DEVICE_LINE_MEMBER("uart3",mc2661_device,dcd_w), // DCD out - DEVCB_DEVICE_LINE_MEMBER("uart3",mc2661_device,dsr_w), // DSR out - DEVCB_NULL, // RI out - DEVCB_DEVICE_LINE_MEMBER("uart3",mc2661_device,cts_w) // CTS out -}; - -struct rs232_port_interface wicat_serial4_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("uart4",mc2661_device,rx_w), // RX out - DEVCB_DEVICE_LINE_MEMBER("uart4",mc2661_device,dcd_w), // DCD out - DEVCB_DEVICE_LINE_MEMBER("uart4",mc2661_device,dsr_w), // DSR out - DEVCB_NULL, // RI out - DEVCB_DEVICE_LINE_MEMBER("uart4",mc2661_device,cts_w) // CTS out -}; - -struct rs232_port_interface wicat_serial5_intf = -{ - DEVCB_DEVICE_LINE_MEMBER("uart5",mc2661_device,rx_w), // RX out - DEVCB_DEVICE_LINE_MEMBER("uart5",mc2661_device,dcd_w), // DCD out - DEVCB_DEVICE_LINE_MEMBER("uart5",mc2661_device,dsr_w), // DSR out - DEVCB_NULL, // RI out - DEVCB_DEVICE_LINE_MEMBER("uart5",mc2661_device,cts_w) // CTS out -}; - AM9517A_INTERFACE( wicat_videodma_intf ) { DEVCB_DRIVER_LINE_MEMBER(wicat_state,dma_hrq_w), // m_out_hreq_cb; @@ -676,11 +631,35 @@ static MACHINE_CONFIG_START( wicat, wicat_state ) MCFG_MC2661_ADD("uart5", XTAL_5_0688MHz, wicat_uart5_intf) MCFG_MC2661_ADD("uart6", XTAL_5_0688MHz, wicat_uart6_intf) // connected to modem port - MCFG_RS232_PORT_ADD("serial1",wicat_serial1_intf,default_rs232_devices,NULL) - MCFG_RS232_PORT_ADD("serial2",wicat_serial2_intf,default_rs232_devices,NULL) - MCFG_RS232_PORT_ADD("serial3",wicat_serial3_intf,default_rs232_devices,NULL) - MCFG_RS232_PORT_ADD("serial4",wicat_serial4_intf,default_rs232_devices,NULL) - MCFG_RS232_PORT_ADD("serial5",wicat_serial5_intf,default_rs232_devices,NULL) + MCFG_RS232_PORT_ADD("serial1",default_rs232_devices,NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart1",mc2661_device,rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart1",mc2661_device,dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart1",mc2661_device,dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart1",mc2661_device,cts_w)) + + MCFG_RS232_PORT_ADD("serial2",default_rs232_devices,NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart2",mc2661_device,rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart2",mc2661_device,dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart2",mc2661_device,dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart2",mc2661_device,cts_w)) + + MCFG_RS232_PORT_ADD("serial3",default_rs232_devices,NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart3",mc2661_device,rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart3",mc2661_device,dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart3",mc2661_device,dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart3",mc2661_device,cts_w)) + + MCFG_RS232_PORT_ADD("serial4",default_rs232_devices,NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart4",mc2661_device,rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart4",mc2661_device,dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart4",mc2661_device,dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart4",mc2661_device,cts_w)) + + MCFG_RS232_PORT_ADD("serial5",default_rs232_devices,NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart5",mc2661_device,rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart5",mc2661_device,dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart5",mc2661_device,dsr_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart5",mc2661_device,cts_w)) /* video hardware */ MCFG_CPU_ADD("videocpu",Z8002,XTAL_8MHz/2) // AMD AMZ8002DC diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c index 15678e36234..004e7d4d789 100644 --- a/src/mess/drivers/xerox820.c +++ b/src/mess/drivers/xerox820.c @@ -521,33 +521,6 @@ static ASCII_KEYBOARD_INTERFACE( keyboard_intf ) }; -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Video */ UINT32 xerox820_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -729,8 +702,8 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state ) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":0", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":1", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xerox820_state, fr_w), DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) /* internal ram */ @@ -777,8 +750,8 @@ 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_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xerox820_state, fr_w), DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) // SASI bus diff --git a/src/mess/drivers/xor100.c b/src/mess/drivers/xor100.c index 8ea5716621f..a5f62316206 100644 --- a/src/mess/drivers/xor100.c +++ b/src/mess/drivers/xor100.c @@ -499,37 +499,11 @@ void xor100_state::fdc_drq_w(bool state) } -//------------------------------------------------- -// rs232_port_interface rs232a_intf -//------------------------------------------------- - -static const rs232_port_interface rs232a_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- -// rs232_port_interface rs232b_intf -//------------------------------------------------- - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600 DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1 DEVICE_INPUT_DEFAULTS_END -static const rs232_port_interface rs232b_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; static S100_INTERFACE( s100_intf ) { @@ -605,8 +579,8 @@ static MACHINE_CONFIG_START( xor100, xor100_state ) MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, xor100_centronics_intf) - MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) - MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, "serial_terminal") + MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) + MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) // S-100 diff --git a/src/mess/includes/pc.h b/src/mess/includes/pc.h index 54eee98f48b..c47bb16cfb8 100644 --- a/src/mess/includes/pc.h +++ b/src/mess/includes/pc.h @@ -203,7 +203,6 @@ extern const struct pit8253_interface ibm5150_pit8253_config; extern const struct pit8253_interface pcjr_pit8253_config; extern const struct pit8253_interface mc1502_pit8253_config; extern const ins8250_interface ibm5150_com_interface[4]; -extern const rs232_port_interface ibm5150_serport_config[4]; extern const i8255_interface ibm5160_ppi8255_interface; extern const i8255_interface pc_ppi8255_interface; extern const i8255_interface pcjr_ppi8255_interface; diff --git a/src/mess/machine/isa_com.c b/src/mess/machine/isa_com.c index 9e8fddb0b71..a084d4f6eb4 100644 --- a/src/mess/machine/isa_com.c +++ b/src/mess/machine/isa_com.c @@ -47,38 +47,6 @@ static const ins8250_interface genpc_com_interface[2]= }*/ }; -static const rs232_port_interface serport_config[2] = -{ - { - DEVCB_DEVICE_LINE_MEMBER("uart_0", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("uart_0", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("uart_0", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("uart_0", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("uart_0", ins8250_uart_device, cts_w) - }, - { - DEVCB_DEVICE_LINE_MEMBER("uart_1", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("uart_1", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("uart_1", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("uart_1", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("uart_1", ins8250_uart_device, cts_w) - }/*, - { - DEVCB_DEVICE_LINE_MEMBER("uart_2", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("uart_2", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("uart_2", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("uart_2", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("uart_2", ins8250_uart_device, cts_w) - }, - { - DEVCB_DEVICE_LINE_MEMBER("uart_3", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("uart_3", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("uart_3", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("uart_3", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("uart_3", ins8250_uart_device, cts_w) - }*/ -}; - static SLOT_INTERFACE_START(isa_com) SLOT_INTERFACE("microsoft_mouse", MSFT_SERIAL_MOUSE) SLOT_INTERFACE("msystems_mouse", MSYSTEM_SERIAL_MOUSE) @@ -91,10 +59,34 @@ static MACHINE_CONFIG_FRAGMENT( com_config ) MCFG_INS8250_ADD( "uart_1", genpc_com_interface[1], XTAL_1_8432MHz ) //MCFG_INS8250_ADD( "uart_2", genpc_com_interface[2], XTAL_1_8432MHz ) //MCFG_INS8250_ADD( "uart_3", genpc_com_interface[3], XTAL_1_8432MHz ) - MCFG_RS232_PORT_ADD( "serport0", serport_config[0], isa_com, "microsoft_mouse" ) - MCFG_RS232_PORT_ADD( "serport1", serport_config[1], isa_com, NULL ) - //MCFG_RS232_PORT_ADD( "serport2", serport_config[2], isa_com, NULL ) - //MCFG_RS232_PORT_ADD( "serport3", serport_config[3], isa_com, NULL ) + + MCFG_RS232_PORT_ADD( "serport0", isa_com, "microsoft_mouse" ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", isa_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w)) + + //MCFG_RS232_PORT_ADD( "serport2", isa_com, NULL ) + //MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, rx_w)) + //MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dcd_w)) + //MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dsr_w)) + //MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w)) + //MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w)) + + //MCFG_RS232_PORT_ADD( "serport3", isa_com, NULL ) + //MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, rx_w)) + //MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, dcd_w)) + //MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, dsr_w)) + //MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, ri_w)) + //MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, cts_w)) MACHINE_CONFIG_END //************************************************************************** @@ -160,10 +152,22 @@ static MACHINE_CONFIG_FRAGMENT( com_at_config ) MCFG_NS16450_ADD( "uart_1", genpc_com_interface[1], XTAL_1_8432MHz ) // MCFG_NS16450_ADD( "uart_2", genpc_com_interface[2], XTAL_1_8432MHz ) // MCFG_NS16450_ADD( "uart_3", genpc_com_interface[3], XTAL_1_8432MHz ) - MCFG_RS232_PORT_ADD( "serport0", serport_config[0], isa_com, "microsoft_mouse" ) - MCFG_RS232_PORT_ADD( "serport1", serport_config[1], isa_com, NULL ) -// MCFG_RS232_PORT_ADD( "serport2", serport_config[2], isa_com, NULL ) -// MCFG_RS232_PORT_ADD( "serport3", serport_config[3], isa_com, NULL ) + MCFG_RS232_PORT_ADD( "serport0", isa_com, "microsoft_mouse" ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_0", ins8250_uart_device, cts_w)) + + MCFG_RS232_PORT_ADD( "serport1", isa_com, NULL ) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, rx_w)) + MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dcd_w)) + MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dsr_w)) + MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w)) + MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w)) + +// MCFG_RS232_PORT_ADD( "serport2", isa_com, NULL ) +// MCFG_RS232_PORT_ADD( "serport3", isa_com, NULL ) MACHINE_CONFIG_END //************************************************************************** diff --git a/src/mess/machine/isa_gus.c b/src/mess/machine/isa_gus.c index 6fbbc982e12..3af65916336 100644 --- a/src/mess/machine/isa_gus.c +++ b/src/mess/machine/isa_gus.c @@ -1219,20 +1219,10 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa16_gus_device, midi_rx_w) -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - static const gf1_interface gus_gf1_config = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,wavetable_irq), @@ -1253,8 +1243,10 @@ static MACHINE_CONFIG_FRAGMENT( gus_config ) MCFG_SOUND_ROUTE(0,"lspeaker",0.50) MCFG_SOUND_ROUTE(1,"rspeaker",0.50) MCFG_ACIA6850_ADD("midi",gus_midi_interface) - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, isa16_gus_device, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MACHINE_CONFIG_END static INPUT_PORTS_START( gus_joy ) diff --git a/src/mess/machine/isa_sblaster.c b/src/mess/machine/isa_sblaster.c index 5d86d0729ae..95f1d5a8fce 100644 --- a/src/mess/machine/isa_sblaster.c +++ b/src/mess/machine/isa_sblaster.c @@ -65,20 +65,10 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, sb_device, midi_rx_w) -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - static MACHINE_CONFIG_FRAGMENT( sblaster1_0_config ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ym3812", YM3812, ym3812_StdClock) @@ -97,8 +87,10 @@ static MACHINE_CONFIG_FRAGMENT( sblaster1_0_config ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MCFG_PC_JOY_ADD("pc_joy") - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, sb_device, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( sblaster1_5_config ) @@ -114,8 +106,10 @@ static MACHINE_CONFIG_FRAGMENT( sblaster1_5_config ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MCFG_PC_JOY_ADD("pc_joy") - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, sb_device, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( sblaster_16_config ) @@ -131,8 +125,10 @@ static MACHINE_CONFIG_FRAGMENT( sblaster_16_config ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MCFG_PC_JOY_ADD("pc_joy") - MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, sb_device, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout") MACHINE_CONFIG_END static READ8_DEVICE_HANDLER( ym3812_16_r ) diff --git a/src/mess/machine/mpu401.c b/src/mess/machine/mpu401.c index c4a18dfb0b8..16361ab329d 100644 --- a/src/mess/machine/mpu401.c +++ b/src/mess/machine/mpu401.c @@ -70,28 +70,20 @@ static SLOT_INTERFACE_START(midiin_slot) SLOT_INTERFACE("midiin", MIDIIN_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiin_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, mpu401_device, midi_rx_w) -}; - static SLOT_INTERFACE_START(midiout_slot) SLOT_INTERFACE("midiout", MIDIOUT_PORT) SLOT_INTERFACE_END -static const serial_port_interface midiout_intf = -{ - DEVCB_NULL // midi out ports don't transmit inward -}; - MACHINE_CONFIG_FRAGMENT( mpu401 ) MCFG_CPU_ADD(M6801_TAG, M6801, 4000000) /* 4 MHz as per schematics */ MCFG_CPU_PROGRAM_MAP(mpu401_map) MCFG_CPU_IO_MAP(mpu401_io_map) MCFG_M6801_SER_TX(WRITELINE(mpu401_device, mpu401_midi_tx)) - MCFG_SERIAL_PORT_ADD(MIDIIN_TAG, midiin_intf, midiin_slot, "midiin") - MCFG_SERIAL_PORT_ADD(MIDIOUT_TAG, midiout_intf, midiout_slot, "midiout") + MCFG_SERIAL_PORT_ADD(MIDIIN_TAG, midiin_slot, "midiin") + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, mpu401_device, midi_rx_w)) + + MCFG_SERIAL_PORT_ADD(MIDIOUT_TAG, midiout_slot, "midiout") MACHINE_CONFIG_END ROM_START( mpu401 ) diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c index b2eff69e7c2..22b79589bb2 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -520,38 +520,6 @@ const ins8250_interface ibm5150_com_interface[4]= } }; -const rs232_port_interface ibm5150_serport_config[4] = -{ - { - DEVCB_DEVICE_LINE_MEMBER("ins8250_0", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_0", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_0", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_0", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_0", ins8250_uart_device, cts_w) - }, - { - DEVCB_DEVICE_LINE_MEMBER("ins8250_1", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_1", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_1", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_1", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_1", ins8250_uart_device, cts_w) - }, - { - DEVCB_DEVICE_LINE_MEMBER("ins8250_2", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_2", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_2", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_2", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_2", ins8250_uart_device, cts_w) - }, - { - DEVCB_DEVICE_LINE_MEMBER("ins8250_3", ins8250_uart_device, rx_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_3", ins8250_uart_device, dcd_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_3", ins8250_uart_device, dsr_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_3", ins8250_uart_device, ri_w), - DEVCB_DEVICE_LINE_MEMBER("ins8250_3", ins8250_uart_device, cts_w) - } -}; - /********************************************************** * * NMI handling diff --git a/src/mess/machine/serial.c b/src/mess/machine/serial.c index 2c5566aeaa5..a71cec90a23 100644 --- a/src/mess/machine/serial.c +++ b/src/mess/machine/serial.c @@ -16,15 +16,17 @@ device_serial_port_interface::~device_serial_port_interface() serial_port_device::serial_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, SERIAL_PORT, "Serial Port", tag, owner, clock, "serial_port", __FILE__), - device_slot_interface(mconfig, *this), - m_dev(NULL) + device_slot_interface(mconfig, *this), + m_dev(NULL), + m_out_rx_handler(*this) { } serial_port_device::serial_port_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_slot_interface(mconfig, *this), - m_dev(NULL) + device_slot_interface(mconfig, *this), + m_dev(NULL), + m_out_rx_handler(*this) { } @@ -34,21 +36,12 @@ serial_port_device::~serial_port_device() void serial_port_device::device_config_complete() { - const serial_port_interface *intf = reinterpret_cast<const serial_port_interface *>(static_config()); - if (intf != NULL) - { - *static_cast<serial_port_interface *>(this) = *intf; - } - else - { - memset(&m_out_rx_cb, 0, sizeof(m_out_rx_cb)); - } m_dev = dynamic_cast<device_serial_port_interface *>(get_card_device()); } void serial_port_device::device_start() { - m_out_rx_func.resolve(m_out_rx_cb, *this); + m_out_rx_handler.resolve_safe(); } const device_type RS232_PORT = &device_creator<rs232_port_device>; @@ -69,7 +62,11 @@ device_rs232_port_interface::~device_rs232_port_interface() } rs232_port_device::rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : serial_port_device(mconfig, RS232_PORT, "RS232 Port", tag, owner, clock, "rs232", __FILE__) + : serial_port_device(mconfig, RS232_PORT, "RS232 Port", tag, owner, clock, "rs232", __FILE__), + m_out_dcd_handler(*this), + m_out_dsr_handler(*this), + m_out_ri_handler(*this), + m_out_cts_handler(*this) { } @@ -79,22 +76,8 @@ rs232_port_device::~rs232_port_device() void rs232_port_device::device_config_complete() { - const rs232_port_interface *intf = reinterpret_cast<const rs232_port_interface *>(static_config()); - if (intf != NULL) - { - *static_cast<rs232_port_interface *>(this) = *intf; - memcpy(&(serial_port_interface::m_out_rx_cb), &(rs232_port_interface::m_out_rx_cb), sizeof(rs232_port_interface::m_out_rx_cb)); - } - else - { - memset(&(serial_port_interface::m_out_rx_cb), 0, sizeof(serial_port_interface::m_out_rx_cb)); - memset(&m_out_dcd_cb, 0, sizeof(m_out_dcd_cb)); - memset(&m_out_dsr_cb, 0, sizeof(m_out_dsr_cb)); - memset(&m_out_ri_cb, 0, sizeof(m_out_ri_cb)); - memset(&m_out_cts_cb, 0, sizeof(m_out_cts_cb)); - } + serial_port_device::device_config_complete(); m_dev = dynamic_cast<device_rs232_port_interface *>(get_card_device()); - serial_port_device::m_dev = dynamic_cast<device_serial_port_interface *>(get_card_device()); loopdtr = 0; looprts = 0; } @@ -102,10 +85,10 @@ void rs232_port_device::device_config_complete() void rs232_port_device::device_start() { serial_port_device::device_start(); - m_out_dcd_func.resolve(m_out_dcd_cb, *this); - m_out_dsr_func.resolve(m_out_dsr_cb, *this); - m_out_ri_func.resolve(m_out_ri_cb, *this); - m_out_cts_func.resolve(m_out_cts_cb, *this); + m_out_dcd_handler.resolve_safe(); + m_out_dsr_handler.resolve_safe(); + m_out_ri_handler.resolve_safe(); + m_out_cts_handler.resolve_safe(); } // XXX:make loopback handshaking optional if needed diff --git a/src/mess/machine/serial.h b/src/mess/machine/serial.h index 49514860790..5b028c2ea72 100644 --- a/src/mess/machine/serial.h +++ b/src/mess/machine/serial.h @@ -3,20 +3,16 @@ #include "emu.h" -#define MCFG_SERIAL_PORT_ADD(_tag, _intf, _slot_intf, _def_slot) \ +#define MCFG_SERIAL_PORT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, SERIAL_PORT, 0) \ - MCFG_DEVICE_CONFIG(_intf) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) -#define MCFG_RS232_PORT_ADD(_tag, _intf, _slot_intf, _def_slot) \ +#define MCFG_RS232_PORT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, RS232_PORT, 0) \ - MCFG_DEVICE_CONFIG(_intf) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) -struct serial_port_interface -{ - devcb_write_line m_out_rx_cb; -}; +#define MCFG_SERIAL_OUT_RX_HANDLER(_devcb) \ + devcb = &serial_port_device::set_out_rx_handler(*device, DEVCB2_##_devcb); class device_serial_port_interface : public device_slot_card_interface { @@ -32,36 +28,32 @@ protected: }; class serial_port_device : public device_t, - public serial_port_interface, - public device_slot_interface + public device_slot_interface { public: serial_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); serial_port_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); virtual ~serial_port_device(); + // static configuration helpers + template<class _Object> static devcb2_base &set_out_rx_handler(device_t &device, _Object object) { return downcast<serial_port_device &>(device).m_out_rx_handler.set_callback(object); } + DECLARE_WRITE_LINE_MEMBER( tx ) { if(m_dev) m_dev->tx(state); } DECLARE_READ_LINE_MEMBER( rx ) { return (m_dev) ? m_dev->rx() : 1; } - void out_rx(UINT8 param) { m_out_rx_func(param); } + void out_rx(UINT8 param) { m_out_rx_handler(param); } + protected: virtual void device_start(); virtual void device_config_complete(); device_serial_port_interface *m_dev; + private: - devcb_resolved_write_line m_out_rx_func; + devcb2_write_line m_out_rx_handler; }; extern const device_type SERIAL_PORT; -struct rs232_port_interface -{ - devcb_write_line m_out_rx_cb; - devcb_write_line m_out_dcd_cb; - devcb_write_line m_out_dsr_cb; - devcb_write_line m_out_ri_cb; - devcb_write_line m_out_cts_cb; -}; class device_rs232_port_interface : public device_serial_port_interface { @@ -76,6 +68,7 @@ public: virtual UINT8 dsr_r() { return m_dsr; } virtual UINT8 ri_r() { return m_ri; } virtual UINT8 cts_r() { return m_cts; } + protected: UINT8 m_dtr; UINT8 m_rts; @@ -85,13 +78,32 @@ protected: UINT8 m_cts; }; -class rs232_port_device : public serial_port_device, - public rs232_port_interface + +#define MCFG_RS232_OUT_DCD_HANDLER(_devcb) \ + devcb = &rs232_port_device::set_out_dcd_handler(*device, DEVCB2_##_devcb); + +#define MCFG_RS232_OUT_DSR_HANDLER(_devcb) \ + devcb = &rs232_port_device::set_out_dsr_handler(*device, DEVCB2_##_devcb); + +#define MCFG_RS232_OUT_RI_HANDLER(_devcb) \ + devcb = &rs232_port_device::set_out_ri_handler(*device, DEVCB2_##_devcb); + +#define MCFG_RS232_OUT_CTS_HANDLER(_devcb) \ + devcb = &rs232_port_device::set_out_cts_handler(*device, DEVCB2_##_devcb); + + +class rs232_port_device : public serial_port_device { public: rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); virtual ~rs232_port_device(); + // static configuration helpers + template<class _Object> static devcb2_base &set_out_dcd_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_out_dcd_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dsr_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_out_dsr_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_out_ri_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_out_ri_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_out_cts_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_out_cts_handler.set_callback(object); } + DECLARE_WRITE_LINE_MEMBER( dtr_w ); DECLARE_WRITE_LINE_MEMBER( rts_w ); @@ -100,20 +112,21 @@ public: DECLARE_READ_LINE_MEMBER( ri_r ) { return (m_dev) ? m_dev->ri_r() : 0; } DECLARE_READ_LINE_MEMBER( cts_r ) { return (m_dev) ? m_dev->cts_r() : looprts; } - void out_dcd(UINT8 param) { m_out_dcd_func(param); } - void out_dsr(UINT8 param) { m_out_dsr_func(param); } - void out_ri(UINT8 param) { m_out_ri_func(param); } - void out_cts(UINT8 param) { m_out_cts_func(param); } + void out_dcd(UINT8 param) { m_out_dcd_handler(param); } + void out_dsr(UINT8 param) { m_out_dsr_handler(param); } + void out_ri(UINT8 param) { m_out_ri_handler(param); } + void out_cts(UINT8 param) { m_out_cts_handler(param); } protected: virtual void device_start(); virtual void device_config_complete(); - device_rs232_port_interface *m_dev; + private: - devcb_resolved_write_line m_out_dcd_func; - devcb_resolved_write_line m_out_dsr_func; - devcb_resolved_write_line m_out_ri_func; - devcb_resolved_write_line m_out_cts_func; + device_rs232_port_interface *m_dev; + devcb2_write_line m_out_dcd_handler; + devcb2_write_line m_out_dsr_handler; + devcb2_write_line m_out_ri_handler; + devcb2_write_line m_out_cts_handler; UINT8 loopdtr; UINT8 looprts; }; |