From 1aa3f4c200a4aedbc756988246744c3417b88edd Mon Sep 17 00:00:00 2001 From: smf- Date: Sun, 22 Dec 2013 22:26:18 +0000 Subject: [PATCH] replaced read rx callback in MC2661 with a write handler, which allows multiple chips to be connected together without using glue methods. [smf] --- src/emu/machine/mc2661.c | 7 +------ src/emu/machine/mc2661.h | 1 - src/mess/drivers/wangpc.c | 4 +++- src/mess/drivers/wicat.c | 9 --------- 4 files changed, 4 insertions(+), 17 deletions(-) diff --git a/src/emu/machine/mc2661.c b/src/emu/machine/mc2661.c index 88ce69e3d1c..8bca28a21af 100644 --- a/src/emu/machine/mc2661.c +++ b/src/emu/machine/mc2661.c @@ -129,7 +129,6 @@ void mc2661_device::device_config_complete() // or initialize to defaults if none provided else { - memset(&m_in_rxd_cb, 0, sizeof(m_in_rxd_cb)); memset(&m_out_txd_cb, 0, sizeof(m_out_txd_cb)); memset(&m_out_rxrdy_cb, 0, sizeof(m_out_rxrdy_cb)); memset(&m_out_txrdy_cb, 0, sizeof(m_out_txrdy_cb)); @@ -149,7 +148,6 @@ void mc2661_device::device_config_complete() void mc2661_device::device_start() { // resolve callbacks - m_in_rxd_func.resolve(m_in_rxd_cb, *this); m_out_txd_func.resolve(m_out_txd_cb, *this); m_out_rxrdy_func.resolve(m_out_rxrdy_cb, *this); m_out_txrdy_func.resolve(m_out_txrdy_cb, *this); @@ -242,10 +240,7 @@ void mc2661_device::tra_complete() void mc2661_device::rcv_callback() { - if (m_in_rxd_func.isnull()) - receive_register_update_bit(m_signal); - else - receive_register_update_bit(m_in_rxd_func()); + receive_register_update_bit(m_signal); } diff --git a/src/emu/machine/mc2661.h b/src/emu/machine/mc2661.h index b7ed70854ff..58c1cc38307 100644 --- a/src/emu/machine/mc2661.h +++ b/src/emu/machine/mc2661.h @@ -60,7 +60,6 @@ struct mc2661_interface int m_rxc; int m_txc; - devcb_read_line m_in_rxd_cb; devcb_write_line m_out_txd_cb; devcb_write_line m_out_rxrdy_cb; diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index ea1b44a20de..ea5db0b43ef 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -963,7 +963,6 @@ static MC2661_INTERFACE( epci_intf ) { 0, 0, - DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), DEVCB_DRIVER_LINE_MEMBER(wangpc_state, epci_irq_w), DEVCB_NULL, @@ -1192,7 +1191,10 @@ 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, default_rs232_devices, NULL) + MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(SCN2661_TAG,mc2661_device,rx_w)) + MCFG_WANGPC_KEYBOARD_ADD() // bus diff --git a/src/mess/drivers/wicat.c b/src/mess/drivers/wicat.c index 68f29a155ae..4ca010eb7ef 100644 --- a/src/mess/drivers/wicat.c +++ b/src/mess/drivers/wicat.c @@ -444,7 +444,6 @@ static mc2661_interface wicat_uart0_intf = { 19200, // RXC 19200, // TXC - DEVCB_NULL, // RXD in DEVCB_DEVICE_LINE_MEMBER("videouart0",mc2661_device, rx_w), // TXD out DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, // TXRDY out @@ -460,7 +459,6 @@ static mc2661_interface wicat_uart1_intf = { 0, 0, - DEVCB_DEVICE_LINE_MEMBER("serial1", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("serial1", serial_port_device, tx), DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, @@ -475,7 +473,6 @@ static mc2661_interface wicat_uart2_intf = { 0, 0, - DEVCB_DEVICE_LINE_MEMBER("serial2", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("serial2", serial_port_device, tx), DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, @@ -490,7 +487,6 @@ static mc2661_interface wicat_uart3_intf = { 0, 0, - DEVCB_DEVICE_LINE_MEMBER("serial3", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("serial3", serial_port_device, tx), DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, @@ -505,7 +501,6 @@ static mc2661_interface wicat_uart4_intf = { 0, 0, - DEVCB_DEVICE_LINE_MEMBER("serial4", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("serial4", serial_port_device, tx), DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, @@ -520,7 +515,6 @@ static mc2661_interface wicat_uart5_intf = { 0, 0, - DEVCB_DEVICE_LINE_MEMBER("serial5", serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER("serial5", serial_port_device, tx), DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, @@ -536,7 +530,6 @@ static mc2661_interface wicat_uart6_intf = { 0, // RXC 0, // TXC - DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), // RXD in DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), // RXD out DEVCB_CPU_INPUT_LINE("maincpu",M68K_IRQ_2), // RXRDY out DEVCB_NULL, // TXRDY out @@ -552,7 +545,6 @@ static mc2661_interface wicat_video_uart0_intf = { 19200, // RXC 19200, // TXC - DEVCB_NULL, // RXD in DEVCB_DEVICE_LINE_MEMBER("uart0",mc2661_device, rx_w), // RXD out DEVCB_CPU_INPUT_LINE("videocpu",INPUT_LINE_IRQ0), // RXRDY out DEVCB_NULL, // TXRDY out @@ -567,7 +559,6 @@ static mc2661_interface wicat_video_uart1_intf = { 19200, // RXC 19200, // TXC - DEVCB_NULL, // RXD in DEVCB_NULL, // RXD out DEVCB_CPU_INPUT_LINE("videocpu",INPUT_LINE_IRQ0), // RXRDY out DEVCB_NULL, // TXRDY out