summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2013-12-22 16:27:05 +0000
committer smf- <smf-@users.noreply.github.com>2013-12-22 16:27:05 +0000
commit6c3f17c5956faefd2f1dc026468db2da03eee2bc (patch)
tree275f9cacd98df9821ae9e0e2a2ff4d155a4df358 /src/mess/drivers
parentb4c7b67ff9a1b12dd414502864cee66628b3bd19 (diff)
replaced read rx/cts/dcd callbacks in I8251 with write handlers, which allows multiple chips to be connected together without using glue methods. [smf]
Diffstat (limited to 'src/mess/drivers')
-rw-r--r--src/mess/drivers/alphatro.c13
-rw-r--r--src/mess/drivers/bw2.c5
-rw-r--r--src/mess/drivers/cgc7900.c4
-rw-r--r--src/mess/drivers/compis.c6
-rw-r--r--src/mess/drivers/h8.c12
-rw-r--r--src/mess/drivers/horizon.c10
-rw-r--r--src/mess/drivers/imsai.c2
-rw-r--r--src/mess/drivers/isbc.c4
-rw-r--r--src/mess/drivers/jade.c2
-rw-r--r--src/mess/drivers/kyocera.c6
-rw-r--r--src/mess/drivers/m20.c12
-rw-r--r--src/mess/drivers/nc.c4
-rw-r--r--src/mess/drivers/pc6001.c2
-rw-r--r--src/mess/drivers/pc8001.c2
-rw-r--r--src/mess/drivers/pc8401a.c5
-rw-r--r--src/mess/drivers/pc8801.c14
-rw-r--r--src/mess/drivers/pc9801.c2
-rw-r--r--src/mess/drivers/px8.c2
-rw-r--r--src/mess/drivers/rainbow.c18
-rw-r--r--src/mess/drivers/sage2.c10
-rw-r--r--src/mess/drivers/sbrain.c4
-rw-r--r--src/mess/drivers/sdk86.c6
-rw-r--r--src/mess/drivers/sg1000.c5
-rw-r--r--src/mess/drivers/softbox.c6
-rw-r--r--src/mess/drivers/tandy2k.c6
-rw-r--r--src/mess/drivers/tsispch.c3
-rw-r--r--src/mess/drivers/v1050.c10
-rw-r--r--src/mess/drivers/vixen.c5
-rw-r--r--src/mess/drivers/vk100.c6
-rw-r--r--src/mess/drivers/votrpss.c6
-rw-r--r--src/mess/drivers/vt100.c8
-rw-r--r--src/mess/drivers/xor100.c11
-rw-r--r--src/mess/drivers/zorba.c6
33 files changed, 74 insertions, 143 deletions
diff --git a/src/mess/drivers/alphatro.c b/src/mess/drivers/alphatro.c
index 296d87a5458..cfbdfe3ae72 100644
--- a/src/mess/drivers/alphatro.c
+++ b/src/mess/drivers/alphatro.c
@@ -67,7 +67,6 @@ public:
DECLARE_READ8_MEMBER(port10_r);
DECLARE_WRITE8_MEMBER(port10_w);
DECLARE_INPUT_CHANGED_MEMBER(alphatro_break);
- DECLARE_READ_LINE_MEMBER(rxdata_callback);
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
TIMER_DEVICE_CALLBACK_MEMBER(alphatro_c);
TIMER_DEVICE_CALLBACK_MEMBER(alphatro_p);
@@ -140,11 +139,6 @@ void alphatro_state::device_timer(emu_timer &timer, device_timer_id id, int para
}
}
-READ_LINE_MEMBER( alphatro_state::rxdata_callback )
-{
- return (bool)m_cass_data[2];
-}
-
WRITE_LINE_MEMBER( alphatro_state::txdata_callback )
{
m_cass_state = state;
@@ -379,7 +373,7 @@ void alphatro_state::machine_reset()
m_cass_state = 1;
m_cass_data[0] = 0;
m_cass_data[1] = 0;
- m_cass_data[2] = 0;
+ m_usart->write_rx(0);
m_cass_data[3] = 0;
m_beep->set_state(0);
m_beep->set_frequency(950); /* piezo-device needs to be measured */
@@ -417,14 +411,11 @@ static MC6845_INTERFACE( alphatro_crtc6845_interface )
static const i8251_interface alphatro_usart_interface =
{
- DEVCB_DRIVER_LINE_MEMBER(alphatro_state,rxdata_callback), //rxd_cb
DEVCB_DRIVER_LINE_MEMBER(alphatro_state,txdata_callback), //txd_cb
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -447,7 +438,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(alphatro_state::alphatro_p)
if (cass_ws != m_cass_data[0])
{
m_cass_data[0] = cass_ws;
- m_cass_data[2] = ((m_cass_data[1] < 12) ? 1 : 0);
+ m_usart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
m_cass_data[1] = 0;
}
}
diff --git a/src/mess/drivers/bw2.c b/src/mess/drivers/bw2.c
index a10f6d68a94..fa7ea7aa74a 100644
--- a/src/mess/drivers/bw2.c
+++ b/src/mess/drivers/bw2.c
@@ -550,9 +550,7 @@ static const struct pit8253_interface pit_intf =
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -660,7 +658,10 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
// software list
MCFG_SOFTWARE_LIST_ADD("flop_list","bw2")
diff --git a/src/mess/drivers/cgc7900.c b/src/mess/drivers/cgc7900.c
index 3ba608918c3..3460b005e0c 100644
--- a/src/mess/drivers/cgc7900.c
+++ b/src/mess/drivers/cgc7900.c
@@ -353,8 +353,6 @@ static const i8251_interface rs232_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -370,8 +368,6 @@ static const i8251_interface rs449_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c
index e10e517b143..869848bdb9c 100644
--- a/src/mess/drivers/compis.c
+++ b/src/mess/drivers/compis.c
@@ -544,11 +544,9 @@ static const struct pit8253_interface pit_intf =
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r),
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w),
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(I80130_TAG, i80130_device, ir2_w),
DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w),
DEVCB_NULL,
@@ -781,7 +779,9 @@ static MACHINE_CONFIG_START( compis, compis_state )
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir6_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir5_w))
MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
- MCFG_COMPIS_KEYBOARD_ADD(NULL)
+
+ MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0)
+ MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
// software lists
MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
diff --git a/src/mess/drivers/h8.c b/src/mess/drivers/h8.c
index a7226e67df7..84f3f3c6797 100644
--- a/src/mess/drivers/h8.c
+++ b/src/mess/drivers/h8.c
@@ -71,7 +71,6 @@ public:
DECLARE_WRITE8_MEMBER(portf1_w);
DECLARE_WRITE8_MEMBER(h8_status_callback);
DECLARE_WRITE_LINE_MEMBER(h8_inte_callback);
- DECLARE_READ_LINE_MEMBER(rxdata_callback);
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
TIMER_DEVICE_CALLBACK_MEMBER(h8_irq_pulse);
TIMER_DEVICE_CALLBACK_MEMBER(h8_c);
@@ -219,7 +218,7 @@ void h8_state::machine_reset()
m_cass_state = 1;
m_cass_data[0] = 0;
m_cass_data[1] = 0;
- m_cass_data[2] = 0;
+ m_uart->write_rx(0);
m_cass_data[3] = 0;
m_ff_b = 1;
}
@@ -262,11 +261,6 @@ But, all of this can only occur if bit 5 of port F0 is low. */
output_set_value("run_led", state);
}
-READ_LINE_MEMBER( h8_state::rxdata_callback )
-{//printf("%X",m_cass_data[2]);
- return (bool)m_cass_data[2];
-}
-
WRITE_LINE_MEMBER( h8_state::txdata_callback )
{
m_cass_state = state;
@@ -274,14 +268,12 @@ WRITE_LINE_MEMBER( h8_state::txdata_callback )
static const i8251_interface uart_intf =
{
- DEVCB_DRIVER_LINE_MEMBER(h8_state,rxdata_callback), //rxd_cb
DEVCB_DRIVER_LINE_MEMBER(h8_state,txdata_callback), //txd_cb
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -306,7 +298,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(h8_state::h8_p)
if (cass_ws != m_cass_data[0])
{
m_cass_data[0] = cass_ws;
- m_cass_data[2] = (m_cass_data[1] < 12) ? 1 : 0;
+ m_uart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
m_cass_data[1] = 0;
}
}
diff --git a/src/mess/drivers/horizon.c b/src/mess/drivers/horizon.c
index 68748d5a8c1..166a97fa092 100644
--- a/src/mess/drivers/horizon.c
+++ b/src/mess/drivers/horizon.c
@@ -103,9 +103,7 @@ INPUT_PORTS_END
static const i8251_interface usart_l_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -121,9 +119,7 @@ static const i8251_interface usart_l_intf =
static const i8251_interface usart_r_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -192,9 +188,15 @@ 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, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
+
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
// S-100
MCFG_S100_BUS_ADD(s100_intf)
diff --git a/src/mess/drivers/imsai.c b/src/mess/drivers/imsai.c
index 5bb5d49dcf8..c85d8036c5b 100644
--- a/src/mess/drivers/imsai.c
+++ b/src/mess/drivers/imsai.c
@@ -105,8 +105,6 @@ static const i8251_interface uart_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c
index fee9cf11c9d..6d32a8d32a2 100644
--- a/src/mess/drivers/isbc.c
+++ b/src/mess/drivers/isbc.c
@@ -132,7 +132,7 @@ DEVICE_INPUT_DEFAULTS_END
static const serial_terminal_interface terminal_intf =
{
- DEVCB_NULL
+ DEVCB_DEVICE_LINE_MEMBER("uart8251", i8251_device, write_rx)
};
static const struct pit8253_interface isbc86_pit_config =
@@ -245,11 +245,9 @@ static I8274_INTERFACE(isbc_uart8274_interface)
static const i8251_interface isbc_uart8251_interface =
{
- DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, tx_r),
DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, rx_w),
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w),
DEVCB_NULL,
DEVCB_NULL,
diff --git a/src/mess/drivers/jade.c b/src/mess/drivers/jade.c
index becc0edb1ca..67fd7f8563e 100644
--- a/src/mess/drivers/jade.c
+++ b/src/mess/drivers/jade.c
@@ -91,8 +91,6 @@ static const i8251_interface uart_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/kyocera.c b/src/mess/drivers/kyocera.c
index 23120578e4f..14e4b774814 100644
--- a/src/mess/drivers/kyocera.c
+++ b/src/mess/drivers/kyocera.c
@@ -1188,9 +1188,7 @@ static IM6402_INTERFACE( uart_intf )
static const i8251_interface tandy200_uart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -1532,7 +1530,11 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
+
// 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/m20.c b/src/mess/drivers/m20.c
index b1a2ef6b76e..8682e32a760 100644
--- a/src/mess/drivers/m20.c
+++ b/src/mess/drivers/m20.c
@@ -87,7 +87,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(tty_clock_tick_w);
DECLARE_WRITE_LINE_MEMBER(kbd_clock_tick_w);
DECLARE_WRITE_LINE_MEMBER(timer_tick_w);
- DECLARE_READ_LINE_MEMBER(kbd_rx);
DECLARE_WRITE_LINE_MEMBER(kbd_tx);
DECLARE_WRITE8_MEMBER(kbd_put);
@@ -148,12 +147,7 @@ UINT32 m20_state::screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-// these two i8251 callbacks will ask for/send 1 bit at a time.
-READ_LINE_MEMBER(m20_state::kbd_rx)
-{
- /* TODO: correct hookup for keyboard, keyboard uses 8048 */
- return 0x00;
-}
+/* TODO: correct hookup for keyboard, keyboard uses 8048 */
WRITE_LINE_MEMBER(m20_state::kbd_tx)
{
@@ -869,9 +863,7 @@ void m20_state::fdc_intrq_w(bool state)
static const i8251_interface kbd_i8251_intf =
{
- DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rx),
DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_tx),
- DEVCB_NULL, // dsr
DEVCB_NULL, // dtr
DEVCB_NULL, // rts
DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rxrdy_int), // rx ready
@@ -882,9 +874,7 @@ static const i8251_interface kbd_i8251_intf =
static const i8251_interface tty_i8251_intf =
{
- DEVCB_NULL, // rxd in
DEVCB_NULL, // txd out
- DEVCB_NULL, // dsr
DEVCB_NULL, // dtr
DEVCB_NULL, // rts
DEVCB_NULL, // rx ready
diff --git a/src/mess/drivers/nc.c b/src/mess/drivers/nc.c
index 3c4f19e6962..66989c80b9f 100644
--- a/src/mess/drivers/nc.c
+++ b/src/mess/drivers/nc.c
@@ -817,8 +817,6 @@ static const i8251_interface nc100_uart_interface =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(nc_state,nc100_rxrdy_callback),
DEVCB_DRIVER_LINE_MEMBER(nc_state,nc100_txrdy_callback),
DEVCB_NULL,
@@ -1164,8 +1162,6 @@ static const i8251_interface nc200_uart_interface=
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(nc_state,nc200_rxrdy_callback),
DEVCB_DRIVER_LINE_MEMBER(nc_state,nc200_txrdy_callback),
DEVCB_NULL,
diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c
index 1d9d76ba0a5..abf2a8a201a 100644
--- a/src/mess/drivers/pc6001.c
+++ b/src/mess/drivers/pc6001.c
@@ -1926,8 +1926,6 @@ static const i8251_interface pc6001_usart_interface=
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/pc8001.c b/src/mess/drivers/pc8001.c
index 02adc493310..40a2e498b9e 100644
--- a/src/mess/drivers/pc8001.c
+++ b/src/mess/drivers/pc8001.c
@@ -411,8 +411,6 @@ static const i8251_interface uart_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/pc8401a.c b/src/mess/drivers/pc8401a.c
index 0c447ae1295..ba57fe231c9 100644
--- a/src/mess/drivers/pc8401a.c
+++ b/src/mess/drivers/pc8401a.c
@@ -571,9 +571,7 @@ static I8255A_INTERFACE( ppi_intf )
static const i8251_interface uart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -597,7 +595,10 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
/* video hardware */
MCFG_FRAGMENT_ADD(pc8401a_video)
diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c
index e77a75f5728..6b7be4196d4 100644
--- a/src/mess/drivers/pc8801.c
+++ b/src/mess/drivers/pc8801.c
@@ -447,9 +447,7 @@ public:
DECLARE_READ8_MEMBER(upd765_tc_r);
DECLARE_WRITE8_MEMBER(fdc_irq_vector_w);
DECLARE_WRITE8_MEMBER(fdc_drive_mode_w);
- DECLARE_READ_LINE_MEMBER(rxdata_callback);
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
- DECLARE_READ_LINE_MEMBER(dsr_r);
DECLARE_WRITE_LINE_MEMBER(rxrdy_w);
DECLARE_READ8_MEMBER(pc8801_sound_board_r);
DECLARE_WRITE8_MEMBER(pc8801_sound_board_w);
@@ -2606,16 +2604,6 @@ static const ay8910_interface single_ay8910_config =
};
/* Cassette Configuration */
-READ_LINE_MEMBER( pc8801_state::rxdata_callback )
-{
- return 0;
- //return (m_cass->input() > -0.1) ? 1 : 0;
-}
-
-READ_LINE_MEMBER( pc8801_state::dsr_r )
-{
- return 0; // bit 7 status
-}
WRITE_LINE_MEMBER( pc8801_state::txdata_callback )
{
@@ -2629,9 +2617,7 @@ WRITE_LINE_MEMBER( pc8801_state::rxrdy_w )
static const i8251_interface uart_intf =
{
- DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxdata_callback), //rxd_cb
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,txdata_callback), //txd_cb
- DEVCB_DRIVER_LINE_MEMBER(pc8801_state,dsr_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxrdy_w),
DEVCB_NULL,
diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c
index 2d60eadf162..3feecbad542 100644
--- a/src/mess/drivers/pc9801.c
+++ b/src/mess/drivers/pc9801.c
@@ -3418,8 +3418,6 @@ static const i8251_interface pc9801_uart_interface =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/px8.c b/src/mess/drivers/px8.c
index 50881cef109..4a5e4b15a91 100644
--- a/src/mess/drivers/px8.c
+++ b/src/mess/drivers/px8.c
@@ -734,8 +734,6 @@ static const i8251_interface i8251_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/rainbow.c b/src/mess/drivers/rainbow.c
index c0b87294a32..57ef93b8a3b 100644
--- a/src/mess/drivers/rainbow.c
+++ b/src/mess/drivers/rainbow.c
@@ -272,9 +272,6 @@ public:
DECLARE_READ8_MEMBER(system_parameter_r);
- DECLARE_READ_LINE_MEMBER(dsr_r);
-
- DECLARE_READ_LINE_MEMBER(kbd_rx);
DECLARE_WRITE_LINE_MEMBER(kbd_tx);
DECLARE_WRITE_LINE_MEMBER(kbd_rxready_w);
DECLARE_WRITE_LINE_MEMBER(kbd_txready_w);
@@ -510,6 +507,7 @@ static INPUT_PORTS_START( rainbow100b_in )
PORT_DIPNAME( 0x02, 0x02, "W13 (FACTORY TEST A, LEAVE OFF)") PORT_TOGGLE
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
PORT_START("W14")
PORT_DIPNAME( 0x04, 0x04, "W14 (FACTORY TEST B, LEAVE OFF)") PORT_TOGGLE
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
@@ -523,6 +521,7 @@ static INPUT_PORTS_START( rainbow100b_in )
PORT_DIPNAME( 0x01, 0x00, "W18 (FACTORY TEST D, LEAVE OFF) (8251A: DSR)") PORT_TOGGLE
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_WRITE_LINE_DEVICE_MEMBER("kbdser", i8251_device, write_dsr)
// J17 jumper on FDC controller board shifts drive select (experimental) -
PORT_START("FLOPPY CONTROLLER")
@@ -1119,11 +1118,6 @@ WRITE8_MEMBER( rainbow_state::diagnostic_w )
}
-READ_LINE_MEMBER(rainbow_state::dsr_r)
-{
- return m_inp4->read(); // W18 (1/0)
-}
-
// KEYBOARD
void rainbow_state::update_kbd_irq()
{
@@ -1138,12 +1132,6 @@ void rainbow_state::update_kbd_irq()
}
-READ_LINE_MEMBER(rainbow_state::kbd_rx)
-{
-// printf("read keyboard\n");
- return 0x00;
-}
-
WRITE_LINE_MEMBER(rainbow_state::kbd_tx)
{
// printf("%02x to keyboard\n", state);
@@ -1246,9 +1234,7 @@ static const floppy_interface floppy_intf =
static const i8251_interface i8251_intf =
{
- DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rx), // rxd in
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_tx), // txd out
- DEVCB_DRIVER_LINE_MEMBER(rainbow_state, dsr_r), // dsr
DEVCB_NULL, // dtr
DEVCB_NULL, // rts
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rxready_w),
diff --git a/src/mess/drivers/sage2.c b/src/mess/drivers/sage2.c
index 6d97e120073..8998446af8e 100644
--- a/src/mess/drivers/sage2.c
+++ b/src/mess/drivers/sage2.c
@@ -427,9 +427,7 @@ static const struct pit8253_interface pit1_intf =
static const i8251_interface usart0_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5),
@@ -445,9 +443,7 @@ static const i8251_interface usart0_intf =
static const i8251_interface usart1_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir1_w),
@@ -555,9 +551,15 @@ 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, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_dsr))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
+
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_dsr))
// internal ram
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/sbrain.c b/src/mess/drivers/sbrain.c
index 1117e4f2843..52d0e36148e 100644
--- a/src/mess/drivers/sbrain.c
+++ b/src/mess/drivers/sbrain.c
@@ -277,8 +277,6 @@ static const i8251_interface u0_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -290,8 +288,6 @@ static const i8251_interface u1_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/sdk86.c b/src/mess/drivers/sdk86.c
index 7b0ebc51ed9..4d5983648da 100644
--- a/src/mess/drivers/sdk86.c
+++ b/src/mess/drivers/sdk86.c
@@ -138,9 +138,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( sdk86_state::serial_tick )
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_NULL, // connected to CTS
DEVCB_NULL,
@@ -177,7 +175,11 @@ 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, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
+
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 feb99678ef0..88c79200aa9 100644
--- a/src/mess/drivers/sg1000.c
+++ b/src/mess/drivers/sg1000.c
@@ -650,9 +650,7 @@ static I8255_INTERFACE( sf7000_ppi_intf )
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -889,7 +887,10 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_dsr))
/* software lists */
MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000")
diff --git a/src/mess/drivers/softbox.c b/src/mess/drivers/softbox.c
index e95136970fb..3f41f3aa2f1 100644
--- a/src/mess/drivers/softbox.c
+++ b/src/mess/drivers/softbox.c
@@ -178,9 +178,7 @@ INPUT_PORTS_END
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -418,7 +416,11 @@ 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, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
+
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
MCFG_IMI5000H_ADD("corvus1")
diff --git a/src/mess/drivers/tandy2k.c b/src/mess/drivers/tandy2k.c
index e38347386a8..c992f59bf0a 100644
--- a/src/mess/drivers/tandy2k.c
+++ b/src/mess/drivers/tandy2k.c
@@ -408,9 +408,7 @@ WRITE_LINE_MEMBER( tandy2k_state::txrdy_w )
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_DRIVER_LINE_MEMBER(tandy2k_state, rxrdy_w),
@@ -699,7 +697,11 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_dsr))
+
MCFG_TANDY2K_KEYBOARD_ADD(WRITELINE(tandy2k_state, kbdclk_w), WRITELINE(tandy2k_state, kbddat_w))
// software lists
diff --git a/src/mess/drivers/tsispch.c b/src/mess/drivers/tsispch.c
index d4a91bbea14..8539249ac4e 100644
--- a/src/mess/drivers/tsispch.c
+++ b/src/mess/drivers/tsispch.c
@@ -164,11 +164,10 @@ WRITE_LINE_MEMBER(tsispch_state::i8251_txrdy_int)
machine().device<pic8259_device>("pic8259")->ir3_w(state);
}
+// (todo: proper hookup, currently using hack w/i8251_receive_character())
const i8251_interface i8251_config =
{
- DEVCB_NULL, // in rxd, serial (todo: proper hookup, currently using hack w/i8251_receive_character())
DEVCB_NULL, // out txd, serial
- DEVCB_NULL, // in dsr
DEVCB_NULL, // out dtr
DEVCB_NULL, // out rts
DEVCB_DRIVER_LINE_MEMBER(tsispch_state,i8251_rxrdy_int), // out rxrdy
diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c
index 7f956c3673b..cdf75777ba0 100644
--- a/src/mess/drivers/v1050.c
+++ b/src/mess/drivers/v1050.c
@@ -932,11 +932,9 @@ WRITE_LINE_MEMBER( v1050_state::kb_rxrdy_w )
static const i8251_interface kb_8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, so_r),
DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w),
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(v1050_state, kb_rxrdy_w),
DEVCB_NULL,
DEVCB_NULL,
@@ -967,9 +965,7 @@ WRITE_LINE_MEMBER( v1050_state::sio_txrdy_w )
static const i8251_interface sio_8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_DRIVER_LINE_MEMBER(v1050_state, sio_rxrdy_w),
@@ -1137,7 +1133,10 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_dsr))
// SASI bus
MCFG_SCSIBUS_ADD(SASIBUS_TAG)
@@ -1149,7 +1148,8 @@ static MACHINE_CONFIG_START( v1050, v1050_state )
MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick)
// keyboard
- MCFG_V1050_KEYBOARD_ADD()
+ MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
+ MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_KB_TAG, i8251_device, write_rx))
// software lists
MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop")
diff --git a/src/mess/drivers/vixen.c b/src/mess/drivers/vixen.c
index ec69f98f06f..5e0c34dbcac 100644
--- a/src/mess/drivers/vixen.c
+++ b/src/mess/drivers/vixen.c
@@ -670,9 +670,7 @@ WRITE_LINE_MEMBER( vixen_state::txrdy_w )
static const i8251_interface usart_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_DRIVER_LINE_MEMBER(vixen_state, rxrdy_w),
@@ -818,7 +816,10 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_dsr))
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen")
diff --git a/src/mess/drivers/vk100.c b/src/mess/drivers/vk100.c
index f26ccb6e6be..4042dd5fb6b 100644
--- a/src/mess/drivers/vk100.c
+++ b/src/mess/drivers/vk100.c
@@ -1009,9 +1009,7 @@ static MC6845_INTERFACE( mc6845_intf )
static const i8251_interface i8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
//DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rts), // out_rts_cb
@@ -1036,7 +1034,11 @@ static MACHINE_CONFIG_START( vk100, vk100_state )
/* i8251 uart */
MCFG_I8251_ADD("i8251", i8251_intf)
+
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
+
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 27170b7cede..07d946c2cf1 100644
--- a/src/mess/drivers/votrpss.c
+++ b/src/mess/drivers/votrpss.c
@@ -193,9 +193,7 @@ IRQ_CALLBACK_MEMBER( votrpss_state::irq_ack )
static const i8251_interface uart_intf =
{
- //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
- //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dsr_r),
//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w),
//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
DEVCB_NULL,
@@ -204,8 +202,6 @@ static const i8251_interface uart_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -342,6 +338,8 @@ 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", default_rs232_devices, "serial_terminal")
+ //MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart", i8251_device, write_rx))
+ //MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr))
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c
index dbe02a2a863..a23a8056d2d 100644
--- a/src/mess/drivers/vt100.c
+++ b/src/mess/drivers/vt100.c
@@ -407,9 +407,7 @@ GFXDECODE_END
static const i8251_interface i8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
DEVCB_NULL, // out_rxrdy_cb
@@ -442,10 +440,12 @@ static MACHINE_CONFIG_START( vt100, vt100_state )
MCFG_VT100_VIDEO_ADD("vt100_video", vt100_video_interface)
-
- /* i8251 uart */
MCFG_I8251_ADD("i8251", i8251_intf)
+
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
+
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/xor100.c b/src/mess/drivers/xor100.c
index a5f62316206..c7d6aa7c9c2 100644
--- a/src/mess/drivers/xor100.c
+++ b/src/mess/drivers/xor100.c
@@ -374,9 +374,7 @@ WRITE_LINE_MEMBER( xor100_state::com5016_ft_w )
static const i8251_interface printer_8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -389,9 +387,7 @@ static const i8251_interface printer_8251_intf =
static const i8251_interface terminal_8251_intf =
{
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
@@ -579,8 +575,15 @@ 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, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_dsr))
+
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_rx))
+ MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_dsr))
+
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
// S-100
diff --git a/src/mess/drivers/zorba.c b/src/mess/drivers/zorba.c
index 8a6e13e8477..8a1a2a98bd4 100644
--- a/src/mess/drivers/zorba.c
+++ b/src/mess/drivers/zorba.c
@@ -234,8 +234,6 @@ static const i8251_interface u0_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -248,8 +246,6 @@ static const i8251_interface u1_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -262,8 +258,6 @@ static const i8251_interface u2_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};