summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
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
commit10be53e45e0da6089a413dde34089325a246689d (patch)
tree42a6a4bbb20c1dafca5d62fe7db55795cf28df75 /src/mess
parent297064c46d13cf55e7b38679a54c6d53c44dabdb (diff)
converted serial & rs232 devices to devcb2 [smf]
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/68ksbc.c11
-rw-r--r--src/mess/drivers/abc1600.c32
-rw-r--r--src/mess/drivers/abc80.c16
-rw-r--r--src/mess/drivers/abc80x.c73
-rw-r--r--src/mess/drivers/altos5.c16
-rw-r--r--src/mess/drivers/ampro.c11
-rw-r--r--src/mess/drivers/amstr_pc.c64
-rw-r--r--src/mess/drivers/apricot.c18
-rw-r--r--src/mess/drivers/atarist.c60
-rw-r--r--src/mess/drivers/avigo.c17
-rw-r--r--src/mess/drivers/bbc.c13
-rw-r--r--src/mess/drivers/bullet.c35
-rw-r--r--src/mess/drivers/bw12.c37
-rw-r--r--src/mess/drivers/bw2.c16
-rw-r--r--src/mess/drivers/cbm2.c38
-rw-r--r--src/mess/drivers/compis.c39
-rw-r--r--src/mess/drivers/dectalk.c12
-rw-r--r--src/mess/drivers/ep64.c18
-rw-r--r--src/mess/drivers/esq1.c17
-rw-r--r--src/mess/drivers/esq5505.c22
-rw-r--r--src/mess/drivers/esqkt.c17
-rw-r--r--src/mess/drivers/horizon.c31
-rw-r--r--src/mess/drivers/ht68k.c12
-rw-r--r--src/mess/drivers/hx20.c16
-rw-r--r--src/mess/drivers/isbc.c14
-rw-r--r--src/mess/drivers/kyocera.c21
-rw-r--r--src/mess/drivers/mikromik.c51
-rw-r--r--src/mess/drivers/ob68k1a.c32
-rw-r--r--src/mess/drivers/pc.c321
-rw-r--r--src/mess/drivers/pc1512.c28
-rw-r--r--src/mess/drivers/pc8401a.c17
-rw-r--r--src/mess/drivers/portfoli.c22
-rw-r--r--src/mess/drivers/prof80.c18
-rw-r--r--src/mess/drivers/px4.c11
-rw-r--r--src/mess/drivers/ql.c32
-rw-r--r--src/mess/drivers/qx10.c15
-rw-r--r--src/mess/drivers/sage2.c31
-rw-r--r--src/mess/drivers/sdk86.c11
-rw-r--r--src/mess/drivers/sg1000.c15
-rw-r--r--src/mess/drivers/softbox.c15
-rw-r--r--src/mess/drivers/super6.c31
-rw-r--r--src/mess/drivers/superslave.c75
-rw-r--r--src/mess/drivers/tandy2k.c15
-rw-r--r--src/mess/drivers/tavernie.c11
-rw-r--r--src/mess/drivers/tiki100.c17
-rw-r--r--src/mess/drivers/v1050.c15
-rw-r--r--src/mess/drivers/victor9k.c42
-rw-r--r--src/mess/drivers/vixen.c16
-rw-r--r--src/mess/drivers/vk100.c11
-rw-r--r--src/mess/drivers/votrpss.c11
-rw-r--r--src/mess/drivers/votrtnt.c11
-rw-r--r--src/mess/drivers/vt100.c11
-rw-r--r--src/mess/drivers/wangpc.c16
-rw-r--r--src/mess/drivers/wicat.c79
-rw-r--r--src/mess/drivers/xerox820.c35
-rw-r--r--src/mess/drivers/xor100.c30
-rw-r--r--src/mess/includes/pc.h1
-rw-r--r--src/mess/machine/isa_com.c84
-rw-r--r--src/mess/machine/isa_gus.c16
-rw-r--r--src/mess/machine/isa_sblaster.c28
-rw-r--r--src/mess/machine/mpu401.c16
-rw-r--r--src/mess/machine/pc.c32
-rw-r--r--src/mess/machine/serial.c51
-rw-r--r--src/mess/machine/serial.h75
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;
};