summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-09-04 22:05:25 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-09-04 22:08:26 +0200
commitc5f8c29d1c72fcc49771abe360dd73c8eb404917 (patch)
tree43892cb84293ef81c75ea62970364f081deb2221
parent4cb48c238df9da2abbcac6ef15d9548cf48d8194 (diff)
-in8250: De-MCFG, nw
-rw-r--r--src/devices/bus/hp_dio/hp98644.cpp19
-rw-r--r--src/devices/bus/isa/com.cpp140
-rw-r--r--src/devices/bus/nubus/bootbug.cpp18
-rw-r--r--src/devices/bus/pofo/hpc102.cpp20
-rw-r--r--src/devices/bus/s100/wunderbus.cpp64
-rw-r--r--src/devices/bus/svi3x8/slot/sv805.cpp18
-rw-r--r--src/devices/machine/fdc37c93x.cpp23
-rw-r--r--src/devices/machine/ins8250.h23
-rw-r--r--src/devices/machine/vrc5074.cpp16
-rw-r--r--src/mame/drivers/aristmk5.cpp40
-rw-r--r--src/mame/drivers/avigo.cpp10
-rw-r--r--src/mame/drivers/cdc721.cpp42
-rw-r--r--src/mame/drivers/firebeat.cpp37
-rw-r--r--src/mame/drivers/fromanc2.cpp8
-rw-r--r--src/mame/drivers/h19.cpp4
-rw-r--r--src/mame/drivers/h89.cpp4
-rw-r--r--src/mame/drivers/ibmpcjr.cpp10
-rw-r--r--src/mame/drivers/imds.cpp11
-rw-r--r--src/mame/drivers/magtouch.cpp8
-rw-r--r--src/mame/drivers/meritm.cpp10
-rw-r--r--src/mame/drivers/mtouchxl.cpp9
-rw-r--r--src/mame/drivers/pc1512.cpp30
-rw-r--r--src/mame/drivers/pcat_dyn.cpp11
-rw-r--r--src/mame/drivers/pcat_nit.cpp19
-rw-r--r--src/mame/drivers/pcw16.cpp41
-rw-r--r--src/mame/drivers/rex6000.cpp40
-rw-r--r--src/mame/drivers/tv990.cpp22
-rw-r--r--src/mame/drivers/twinkle.cpp8
-rw-r--r--src/mame/drivers/zrt80.cpp5
29 files changed, 346 insertions, 364 deletions
diff --git a/src/devices/bus/hp_dio/hp98644.cpp b/src/devices/bus/hp_dio/hp98644.cpp
index 72129571c5e..5ac97e3826b 100644
--- a/src/devices/bus/hp_dio/hp98644.cpp
+++ b/src/devices/bus/hp_dio/hp98644.cpp
@@ -26,18 +26,17 @@ DEFINE_DEVICE_TYPE(HPDIO_98644, dio16_98644_device, "dio98644", "HP98644A Asynch
#define INS8250_TAG "ins8250"
MACHINE_CONFIG_START( dio16_98644_device::device_add_mconfig )
- MCFG_DEVICE_ADD(INS8250_TAG, INS8250, XTAL(2'457'600))
-
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts))
+ INS8250(config, m_uart, XTAL(2'457'600));
+ m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/isa/com.cpp b/src/devices/bus/isa/com.cpp
index 9a26665f5c3..57393a52500 100644
--- a/src/devices/bus/isa/com.cpp
+++ b/src/devices/bus/isa/com.cpp
@@ -34,54 +34,54 @@ DEFINE_DEVICE_TYPE(ISA8_COM, isa8_com_device, "isa_com", "Communications Adapter
//-------------------------------------------------
MACHINE_CONFIG_START(isa8_com_device::device_add_mconfig)
- MCFG_DEVICE_ADD( "uart_0", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport0", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport0", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport0", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_1))
- MCFG_DEVICE_ADD( "uart_1", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport1", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport1", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport1", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_2))
- /*MCFG_DEVICE_ADD( "uart_2", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport2", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport2", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport2", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_1))
- MCFG_DEVICE_ADD( "uart_3", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport3", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport3", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport3", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_2))*/
+ ins8250_device &uart0(INS8250(config, "uart_0", XTAL(1'843'200)));
+ uart0.out_tx_callback().set("serport0", FUNC(rs232_port_device::write_txd));
+ uart0.out_dtr_callback().set("serport0", FUNC(rs232_port_device::write_dtr));
+ uart0.out_rts_callback().set("serport0", FUNC(rs232_port_device::write_rts));
+ uart0.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_1));
+ ins8250_device &uart1(INS8250(config, "uart_1", XTAL(1'843'200)));
+ uart1.out_tx_callback().set("serport1", FUNC(rs232_port_device::write_txd));
+ uart1.out_dtr_callback().set("serport1", FUNC(rs232_port_device::write_dtr));
+ uart1.out_rts_callback().set("serport1", FUNC(rs232_port_device::write_rts));
+ uart1.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_2));
+ /*ins8250_device &uart2(INS8250(config, "uart_2", XTAL(1'843'200)));
+ uart2.out_tx_callback().set("serport2", FUNC(rs232_port_device::write_txd));
+ uart2.out_dtr_callback().set("serport2", FUNC(rs232_port_device::write_dtr));
+ uart2.out_rts_callback().set("serport2", FUNC(rs232_port_device::write_rts));
+ uart2.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_1));
+ ins8250_device &uart3(INS8250(config, "uart_3", XTAL(1'843'200)));
+ uart3.out_tx_callback().set("serport3", FUNC(rs232_port_device::write_txd));
+ uart3.out_dtr_callback().set("serport3", FUNC(rs232_port_device::write_dtr));
+ uart3.out_rts_callback().set("serport3", FUNC(rs232_port_device::write_rts));
+ uart3.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_2));*/
MCFG_DEVICE_ADD( "serport0", RS232_PORT, isa_com, "microsoft_mouse" )
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("uart_0", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart_0", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart0, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart0, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart0, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart0, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart0, ins8250_uart_device, cts_w))
MCFG_DEVICE_ADD( "serport1", RS232_PORT, isa_com, nullptr )
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("uart_1", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart_1", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart1, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart1, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart1, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart1, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart1, ins8250_uart_device, cts_w))
//MCFG_DEVICE_ADD( "serport2", RS232_PORT, isa_com, nullptr )
- //MCFG_RS232_RXD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, rx_w))
- //MCFG_RS232_DCD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dcd_w))
- //MCFG_RS232_DSR_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dsr_w))
- //MCFG_RS232_RI_HANDLER(WRITELINE("uart_1", ins8250_uart_device, ri_w))
- //MCFG_RS232_CTS_HANDLER(WRITELINE("uart_1", ins8250_uart_device, cts_w))
+ //MCFG_RS232_RXD_HANDLER(WRITELINE(uart2, ins8250_uart_device, rx_w))
+ //MCFG_RS232_DCD_HANDLER(WRITELINE(uart2, ins8250_uart_device, dcd_w))
+ //MCFG_RS232_DSR_HANDLER(WRITELINE(uart2, ins8250_uart_device, dsr_w))
+ //MCFG_RS232_RI_HANDLER(WRITELINE(uart2, ins8250_uart_device, ri_w))
+ //MCFG_RS232_CTS_HANDLER(WRITELINE(uart2, ins8250_uart_device, cts_w))
//MCFG_DEVICE_ADD( "serport3", RS232_PORT, isa_com, nullptr )
- //MCFG_RS232_RXD_HANDLER(WRITELINE("uart_2", ins8250_uart_device, rx_w))
- //MCFG_RS232_DCD_HANDLER(WRITELINE("uart_2", ins8250_uart_device, dcd_w))
- //MCFG_RS232_DSR_HANDLER(WRITELINE("uart_2", ins8250_uart_device, dsr_w))
- //MCFG_RS232_RI_HANDLER(WRITELINE("uart_2", ins8250_uart_device, ri_w))
- //MCFG_RS232_CTS_HANDLER(WRITELINE("uart_2", ins8250_uart_device, cts_w))
+ //MCFG_RS232_RXD_HANDLER(WRITELINE(uart3, ins8250_uart_device, rx_w))
+ //MCFG_RS232_DCD_HANDLER(WRITELINE(uart3, ins8250_uart_device, dcd_w))
+ //MCFG_RS232_DSR_HANDLER(WRITELINE(uart3, ins8250_uart_device, dsr_w))
+ //MCFG_RS232_RI_HANDLER(WRITELINE(uart3, ins8250_uart_device, ri_w))
+ //MCFG_RS232_CTS_HANDLER(WRITELINE(uart3, ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
//**************************************************************************
@@ -136,39 +136,39 @@ DEFINE_DEVICE_TYPE(ISA8_COM_AT, isa8_com_at_device, "isa_com_at", "Communication
//-------------------------------------------------
MACHINE_CONFIG_START(isa8_com_at_device::device_add_mconfig)
- MCFG_DEVICE_ADD( "uart_0", NS16450, XTAL(1'843'200) ) /* Verified: IBM P/N 6320947 Serial/Parallel card uses an NS16450N */
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport0", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport0", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport0", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_1))
- MCFG_DEVICE_ADD( "uart_1", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport1", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport1", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport1", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_2))
- /*MCFG_DEVICE_ADD( "uart_2", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport2", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport2", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport2", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_1))
- MCFG_DEVICE_ADD( "uart_3", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport3", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport3", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport3", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, isa8_com_device, pc_com_interrupt_2))*/
+ ns16450_device &uart0(NS16450(config, "uart_0", XTAL(1'843'200))); /* Verified: IBM P/N 6320947 Serial/Parallel card uses an NS16450N */
+ uart0.out_tx_callback().set("serport0", FUNC(rs232_port_device::write_txd));
+ uart0.out_dtr_callback().set("serport0", FUNC(rs232_port_device::write_dtr));
+ uart0.out_rts_callback().set("serport0", FUNC(rs232_port_device::write_rts));
+ uart0.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_1));
+ ns16450_device &uart1(NS16450(config, "uart_1", XTAL(1'843'200)));
+ uart1.out_tx_callback().set("serport1", FUNC(rs232_port_device::write_txd));
+ uart1.out_dtr_callback().set("serport1", FUNC(rs232_port_device::write_dtr));
+ uart1.out_rts_callback().set("serport1", FUNC(rs232_port_device::write_rts));
+ uart1.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_2));
+ /*ns16450_device &uart2(NS16450(config, "uart_2", XTAL(1'843'200)));
+ uart2.out_tx_callback().set("serport2", FUNC(rs232_port_device::write_txd));
+ uart2.out_dtr_callback().set("serport2", FUNC(rs232_port_device::write_dtr));
+ uart2.out_rts_callback().set("serport2", FUNC(rs232_port_device::write_rts));
+ uart2.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_1));
+ ns16450_device &uart3(NS16450(config, "uart_3", XTAL(1'843'200)));
+ uart3.out_tx_callback().set("serport3", FUNC(rs232_port_device::write_txd));
+ uart3.out_dtr_callback().set("serport3", FUNC(rs232_port_device::write_dtr));
+ uart3.out_rts_callback().set("serport3", FUNC(rs232_port_device::write_rts));
+ uart3.out_int_callback().set(FUNC(isa8_com_device::pc_com_interrupt_2));*/
MCFG_DEVICE_ADD( "serport0", RS232_PORT, isa_com, "microsoft_mouse" )
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("uart_0", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart_0", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart0, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart0, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart0, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart0, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart0, ins8250_uart_device, cts_w))
MCFG_DEVICE_ADD( "serport1", RS232_PORT, isa_com, nullptr )
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart_1", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("uart_1", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart_1", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart1, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart1, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart1, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart1, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart1, ins8250_uart_device, cts_w))
// MCFG_DEVICE_ADD( "serport2", RS232_PORT, isa_com, nullptr )
// MCFG_DEVICE_ADD( "serport3", RS232_PORT, isa_com, nullptr )
diff --git a/src/devices/bus/nubus/bootbug.cpp b/src/devices/bus/nubus/bootbug.cpp
index 436e5a339e0..b466946ded0 100644
--- a/src/devices/bus/nubus/bootbug.cpp
+++ b/src/devices/bus/nubus/bootbug.cpp
@@ -47,17 +47,17 @@ DEFINE_DEVICE_TYPE(NUBUS_BOOTBUG, nubus_bootbug_device, "nb_btbug", "Brigent Boo
//-------------------------------------------------
MACHINE_CONFIG_START(nubus_bootbug_device::device_add_mconfig)
- MCFG_DEVICE_ADD( "uart_0", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport0", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport0", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport0", rs232_port_device, write_rts))
+ ns16450_device &uart(NS16450(config, "uart_0", XTAL(1'843'200)));
+ uart.out_tx_callback().set("serport0", FUNC(rs232_port_device::write_txd));
+ uart.out_dtr_callback().set("serport0", FUNC(rs232_port_device::write_dtr));
+ uart.out_rts_callback().set("serport0", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD( "serport0", RS232_PORT, isa_com, "terminal" )
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart_0", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("uart_0", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart_0", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart, ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/pofo/hpc102.cpp b/src/devices/bus/pofo/hpc102.cpp
index 0ad264a9051..f473b0c7d78 100644
--- a/src/devices/bus/pofo/hpc102.cpp
+++ b/src/devices/bus/pofo/hpc102.cpp
@@ -34,18 +34,18 @@ DEFINE_DEVICE_TYPE(POFO_HPC102, pofo_hpc102_device, "pofo_hpc102", "Atari Portfo
//-------------------------------------------------
MACHINE_CONFIG_START(pofo_hpc102_device::device_add_mconfig)
- MCFG_DEVICE_ADD(M82C50A_TAG, INS8250, XTAL(1'843'200)) // should be INS8250A
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, device_portfolio_expansion_slot_interface, eint_w))
+ INS8250(config, m_uart, XTAL(1'843'200)); // should be INS8250A
+ m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(FUNC(device_portfolio_expansion_slot_interface::eint_w));
MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(M82C50A_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(M82C50A_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(M82C50A_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(M82C50A_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(M82C50A_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index 490929ec252..c05d56197c3 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -92,45 +92,45 @@ MACHINE_CONFIG_START(s100_wunderbus_device::device_add_mconfig)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, s100_wunderbus_device, pic_int_w))
MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_DEVICE_ADD(INS8250_1_TAG, INS8250, XTAL(18'432'000)/10)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(I8259A_TAG, pic8259_device, ir3_w))
-
- MCFG_DEVICE_ADD(INS8250_2_TAG, INS8250, XTAL(18'432'000)/10)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(I8259A_TAG, pic8259_device, ir4_w))
-
- MCFG_DEVICE_ADD(INS8250_3_TAG, INS8250, XTAL(18'432'000)/10)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_C_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_C_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_C_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(I8259A_TAG, pic8259_device, ir5_w))
+ INS8250(config, m_ace1, XTAL(18'432'000)/10);
+ m_ace1->out_tx_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
+ m_ace1->out_dtr_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
+ m_ace1->out_rts_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
+ m_ace1->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir3_w));
+
+ INS8250(config, m_ace2, XTAL(18'432'000)/10);
+ m_ace2->out_tx_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
+ m_ace2->out_dtr_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
+ m_ace2->out_rts_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
+ m_ace2->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir4_w));
+
+ INS8250(config, m_ace3, XTAL(18'432'000)/10);
+ m_ace3->out_tx_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_txd));
+ m_ace3->out_dtr_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_dtr));
+ m_ace3->out_rts_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_rts));
+ m_ace3->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir5_w));
MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE(INS8250_1_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INS8250_1_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(INS8250_1_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(INS8250_1_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INS8250_1_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_ace1, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_ace1, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_ace1, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_ace1, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_ace1, ins8250_uart_device, cts_w))
MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INS8250_2_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INS8250_2_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(INS8250_2_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(INS8250_2_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INS8250_2_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_ace2, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_ace2, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_ace2, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_ace2, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_ace2, ins8250_uart_device, cts_w))
MCFG_DEVICE_ADD(RS232_C_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INS8250_3_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INS8250_3_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(INS8250_3_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(INS8250_3_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INS8250_3_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_ace3, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_ace3, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_ace3, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_ace3, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_ace3, ins8250_uart_device, cts_w))
MCFG_UPD1990A_ADD(UPD1990C_TAG, XTAL(32'768), NOOP, WRITELINE(DEVICE_SELF, s100_wunderbus_device, rtc_tp_w))
MACHINE_CONFIG_END
diff --git a/src/devices/bus/svi3x8/slot/sv805.cpp b/src/devices/bus/svi3x8/slot/sv805.cpp
index 4bdbd583c97..8ef0db95127 100644
--- a/src/devices/bus/svi3x8/slot/sv805.cpp
+++ b/src/devices/bus/svi3x8/slot/sv805.cpp
@@ -21,17 +21,17 @@ DEFINE_DEVICE_TYPE(SV805, sv805_device, "sv805", "SV-805 RS-232 Interface")
//-------------------------------------------------
MACHINE_CONFIG_START(sv805_device::device_add_mconfig)
- MCFG_DEVICE_ADD("uart", INS8250, XTAL(3'072'000))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, sv805_device, uart_intr_w))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("rs232", rs232_port_device, write_rts))
+ INS8250(config, m_uart, XTAL(3'072'000));
+ m_uart->out_int_callback().set(FUNC(sv805_device::uart_intr_w));
+ m_uart->out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set("rs232", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart", ins8250_uart_device, dsr_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
diff --git a/src/devices/machine/fdc37c93x.cpp b/src/devices/machine/fdc37c93x.cpp
index eaf83cd6d28..c61716f2c4e 100644
--- a/src/devices/machine/fdc37c93x.cpp
+++ b/src/devices/machine/fdc37c93x.cpp
@@ -250,17 +250,20 @@ MACHINE_CONFIG_START(fdc37c93x_device::device_add_mconfig)
// parallel port
MCFG_DEVICE_ADD("lpt", PC_LPT, 0)
MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_parallel_w))
+
// serial ports
- MCFG_DEVICE_ADD("uart_0", NS16450, XTAL(1'843'200)) // or NS16550 ?
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, fdc37c93x_device, irq_serial1_w))
- MCFG_INS8250_OUT_TX_CB(WRITELINE(*this, fdc37c93x_device, txd_serial1_w))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(*this, fdc37c93x_device, dtr_serial1_w))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(*this, fdc37c93x_device, rts_serial1_w))
- MCFG_DEVICE_ADD("uart_1", NS16450, XTAL(1'843'200))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, fdc37c93x_device, irq_serial2_w))
- MCFG_INS8250_OUT_TX_CB(WRITELINE(*this, fdc37c93x_device, txd_serial2_w))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(*this, fdc37c93x_device, dtr_serial2_w))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(*this, fdc37c93x_device, rts_serial2_w))
+ NS16450(config, pc_serial1_comdev, XTAL(1'843'200)); // or NS16550 ?
+ pc_serial1_comdev->out_int_callback().set(FUNC(fdc37c93x_device::irq_serial1_w));
+ pc_serial1_comdev->out_tx_callback().set(FUNC(fdc37c93x_device::txd_serial1_w));
+ pc_serial1_comdev->out_dtr_callback().set(FUNC(fdc37c93x_device::dtr_serial1_w));
+ pc_serial1_comdev->out_rts_callback().set(FUNC(fdc37c93x_device::rts_serial1_w));
+
+ NS16450(config, pc_serial2_comdev, XTAL(1'843'200));
+ pc_serial2_comdev->out_int_callback().set(FUNC(fdc37c93x_device::irq_serial2_w));
+ pc_serial2_comdev->out_tx_callback().set(FUNC(fdc37c93x_device::txd_serial2_w));
+ pc_serial2_comdev->out_dtr_callback().set(FUNC(fdc37c93x_device::dtr_serial2_w));
+ pc_serial2_comdev->out_rts_callback().set(FUNC(fdc37c93x_device::rts_serial2_w));
+
// RTC
MCFG_DS12885_ADD("rtc")
MCFG_MC146818_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_rtc_w))
diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h
index af68f36887b..0db2e4598cf 100644
--- a/src/devices/machine/ins8250.h
+++ b/src/devices/machine/ins8250.h
@@ -158,27 +158,4 @@ DECLARE_DEVICE_TYPE(INS8250, ins8250_device)
DECLARE_DEVICE_TYPE(NS16450, ns16450_device)
DECLARE_DEVICE_TYPE(NS16550, ns16550_device)
-
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_INS8250_OUT_TX_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_tx_callback(DEVCB_##_devcb);
-
-#define MCFG_INS8250_OUT_DTR_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
-
-#define MCFG_INS8250_OUT_RTS_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
-
-#define MCFG_INS8250_OUT_INT_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
-
-#define MCFG_INS8250_OUT_OUT1_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_out1_callback(DEVCB_##_devcb);
-
-#define MCFG_INS8250_OUT_OUT2_CB(_devcb) \
- downcast<ins8250_uart_device &>(*device).set_out_out2_callback(DEVCB_##_devcb);
-
#endif // MAME_MACHINE_INS8250_H
diff --git a/src/devices/machine/vrc5074.cpp b/src/devices/machine/vrc5074.cpp
index dd275031b76..bbd8aa14158 100644
--- a/src/devices/machine/vrc5074.cpp
+++ b/src/devices/machine/vrc5074.cpp
@@ -144,16 +144,16 @@ void vrc5074_device::target1_map(address_map &map)
}
MACHINE_CONFIG_START(vrc5074_device::device_add_mconfig)
- MCFG_DEVICE_ADD("uart", NS16550, DERIVED_CLOCK(1, 12))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, vrc5074_device, uart_irq_callback))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("ttys00", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("ttys00", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("ttys00", rs232_port_device, write_rts))
+ ns16550_device &uart(NS16550(config, "uart", DERIVED_CLOCK(1, 12)));
+ uart.out_int_callback().set(FUNC(vrc5074_device::uart_irq_callback));
+ uart.out_tx_callback().set("ttys00", FUNC(rs232_port_device::write_txd));
+ uart.out_dtr_callback().set("ttys00", FUNC(rs232_port_device::write_dtr));
+ uart.out_rts_callback().set("ttys00", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("ttys00", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart", ns16550_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("uart", ns16550_device, dcd_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart", ns16550_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart, ns16550_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart, ns16550_device, dcd_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart, ns16550_device, cts_w))
MACHINE_CONFIG_END
vrc5074_device::vrc5074_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index c8d7ebe5ae1..7f7e0ab6678 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -2060,28 +2060,28 @@ MACHINE_CONFIG_START(aristmk5_state::aristmk5)
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
// TL16C452FN U71
- MCFG_DEVICE_ADD("uart_0a", NS16450, MASTER_CLOCK / 9)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("uart_irq", input_merger_device, in_w<0>))
- MCFG_DEVICE_ADD("uart_0b", NS16450, MASTER_CLOCK / 9)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("uart_irq", input_merger_device, in_w<1>))
+ ns16450_device &uart0a(NS16450(config, "uart_0a", MASTER_CLOCK / 9));
+ uart0a.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<0>));
+ ns16450_device &uart0b(NS16450(config, "uart_0b", MASTER_CLOCK / 9));
+ uart0b.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<1>));
// TL16C452FN U72
- MCFG_DEVICE_ADD("uart_1a", NS16450, MASTER_CLOCK / 9)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("uart_irq", input_merger_device, in_w<2>))
- MCFG_DEVICE_ADD("uart_1b", NS16450, MASTER_CLOCK / 9)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("uart_irq", input_merger_device, in_w<3>))
+ ns16450_device &uart1a(NS16450(config, "uart_1a", MASTER_CLOCK / 9));
+ uart1a.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<2>));
+ ns16450_device &uart1b(NS16450(config, "uart_1b", MASTER_CLOCK / 9));
+ uart1b.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<3>));
// COMM port 4 - 5
- MCFG_DEVICE_ADD("uart_2a", NS16450, MASTER_CLOCK / 9)
-// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, aristmk5_state, uart_irq_callback))
- MCFG_DEVICE_ADD("uart_2b", NS16450, MASTER_CLOCK / 9)
-// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, aristmk5_state, uart_irq_callback))
+ NS16450(config, "uart_2a", MASTER_CLOCK / 9);
+// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<4>));
+ NS16450(config, "uart_2b", MASTER_CLOCK / 9);
+// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<5>));
// COMM port 6 - 7
- MCFG_DEVICE_ADD("uart_3a", NS16450, MASTER_CLOCK / 9)
-// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, aristmk5_state, uart_irq_callback))
- MCFG_DEVICE_ADD("uart_3b", NS16450, MASTER_CLOCK / 9)
-// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, aristmk5_state, uart_irq_callback))
+ NS16450(config, "uart_3a", MASTER_CLOCK / 9);
+// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<6>));
+ NS16450(config, "uart_3b", MASTER_CLOCK / 9);
+// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<7>));
MCFG_INPUT_MERGER_ANY_HIGH("uart_irq")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, aristmk5_state, uart_irq_callback))
@@ -2113,8 +2113,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(aristmk5_state::aristmk5_touch)
aristmk5(config);
- MCFG_DEVICE_MODIFY("uart_0a")
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
+ subdevice<ins8250_device>("uart_0a")
+ ->out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
MCFG_MICROTOUCH_ADD("microtouch", 2400, WRITELINE("uart_0a", ins8250_uart_device, rx_w))
MACHINE_CONFIG_END
@@ -2127,8 +2127,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(aristmk5_state::aristmk5_usa_touch)
aristmk5_usa(config);
- MCFG_DEVICE_MODIFY("uart_0a")
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
+ subdevice<ins8250_device>("uart_0a")
+ ->out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
MCFG_MICROTOUCH_ADD("microtouch", 2400, WRITELINE("uart_0a", ins8250_uart_device, rx_w))
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp
index b1aa1fbc27a..6bd2117758f 100644
--- a/src/mame/drivers/avigo.cpp
+++ b/src/mame/drivers/avigo.cpp
@@ -756,11 +756,11 @@ MACHINE_CONFIG_START(avigo_state::avigo)
MCFG_DEVICE_IO_MAP(avigo_io)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
- MCFG_DEVICE_ADD( "ns16550", NS16550, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, avigo_state, com_interrupt))
+ NS16550(config, m_uart, XTAL(1'843'200));
+ m_uart->out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(FUNC(avigo_state::com_interrupt));
MCFG_DEVICE_ADD( "serport", RS232_PORT, default_rs232_devices, nullptr )
MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, rx_w))
diff --git a/src/mame/drivers/cdc721.cpp b/src/mame/drivers/cdc721.cpp
index f7c3f1eb563..0a79492e570 100644
--- a/src/mame/drivers/cdc721.cpp
+++ b/src/mame/drivers/cdc721.cpp
@@ -348,11 +348,11 @@ MACHINE_CONFIG_START(cdc721_state::cdc721)
ledlatch.bit_handler<6>().set_output("prog3").invert();
ledlatch.bit_handler<7>().set_output("dsr").invert();
- MCFG_DEVICE_ADD("comuart", INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, cdc721_state, int_w<0>))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("comm", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("comm", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("comm", rs232_port_device, write_rts))
+ ins8250_device &comuart(INS8250(config, "comuart", 1.8432_MHz_XTAL));
+ comuart.out_int_callback().set(FUNC(cdc721_state::int_w<0>));
+ comuart.out_tx_callback().set("comm", FUNC(rs232_port_device::write_txd));
+ comuart.out_dtr_callback().set("comm", FUNC(rs232_port_device::write_dtr));
+ comuart.out_rts_callback().set("comm", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("comm", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("comuart", ins8250_device, rx_w))
@@ -361,18 +361,18 @@ MACHINE_CONFIG_START(cdc721_state::cdc721)
MCFG_RS232_CTS_HANDLER(WRITELINE("comuart", ins8250_device, cts_w))
MCFG_RS232_RI_HANDLER(WRITELINE("comuart", ins8250_device, ri_w))
- MCFG_DEVICE_ADD("kbduart", INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, cdc721_state, int_w<5>))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(*this, cdc721_state, foreign_char_bank_w<2>))
- //MCFG_INS8250_OUT_RTS_CB(WRITELINE(*this, cdc721_state, alarm_high_low_w))
- MCFG_INS8250_OUT_OUT1_CB(WRITELINE(*this, cdc721_state, foreign_char_bank_w<1>))
- MCFG_INS8250_OUT_OUT2_CB(WRITELINE(*this, cdc721_state, foreign_char_bank_w<0>))
+ ins8250_device &kbduart(INS8250(config, "kbduart", 1.8432_MHz_XTAL));
+ kbduart.out_int_callback().set(FUNC(cdc721_state::int_w<5>));
+ kbduart.out_dtr_callback().set(FUNC(cdc721_state::foreign_char_bank_w<2>));
+ //kbduart.out_rts_callback().set(FUNC(cdc721_state::alarm_high_low_w));
+ kbduart.out_out1_callback().set(FUNC(cdc721_state::foreign_char_bank_w<1>));
+ kbduart.out_out2_callback().set(FUNC(cdc721_state::foreign_char_bank_w<0>));
- MCFG_DEVICE_ADD("pauart", INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("int2", input_merger_device, in_w<1>))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("cha", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("cha", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("cha", rs232_port_device, write_rts))
+ ins8250_device &pauart(INS8250(config, "pauart", 1.8432_MHz_XTAL));
+ pauart.out_int_callback().set("int2", FUNC(input_merger_device::in_w<1>));
+ pauart.out_tx_callback().set("cha", FUNC(rs232_port_device::write_txd));
+ pauart.out_dtr_callback().set("cha", FUNC(rs232_port_device::write_dtr));
+ pauart.out_rts_callback().set("cha", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("cha", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("pauart", ins8250_device, rx_w))
@@ -381,11 +381,11 @@ MACHINE_CONFIG_START(cdc721_state::cdc721)
MCFG_RS232_CTS_HANDLER(WRITELINE("pauart", ins8250_device, cts_w))
MCFG_RS232_RI_HANDLER(WRITELINE("pauart", ins8250_device, ri_w))
- MCFG_DEVICE_ADD("pbuart", INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_INT_CB(WRITELINE("int2", input_merger_device, in_w<0>))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("chb", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("chb", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("chb", rs232_port_device, write_rts))
+ ins8250_device &pbuart(INS8250(config, "pbuart", 1.8432_MHz_XTAL));
+ pbuart.out_int_callback().set("int2", FUNC(input_merger_device::in_w<0>));
+ pbuart.out_tx_callback().set("chb", FUNC(rs232_port_device::write_txd));
+ pbuart.out_dtr_callback().set("chb", FUNC(rs232_port_device::write_dtr));
+ pbuart.out_rts_callback().set("chb", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("chb", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("pbuart", ins8250_device, rx_w))
diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp
index 40cdc1c55ff..407433be345 100644
--- a/src/mame/drivers/firebeat.cpp
+++ b/src/mame/drivers/firebeat.cpp
@@ -1223,14 +1223,14 @@ MACHINE_CONFIG_START(firebeat_state::firebeat)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- MCFG_DEVICE_ADD("duart_com", PC16552D, 0) // pgmd to 9600baud
- MCFG_DEVICE_ADD("duart_com:chan0", NS16550, XTAL(19'660'800))
- MCFG_DEVICE_ADD("duart_com:chan1", NS16550, XTAL(19'660'800))
- MCFG_DEVICE_ADD("duart_midi", PC16552D, 0) // in all memory maps, pgmd to 31250baud
- MCFG_DEVICE_ADD("duart_midi:chan0", NS16550, XTAL(24'000'000))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, firebeat_state, midi_uart_ch0_irq_callback))
- MCFG_DEVICE_ADD("duart_midi:chan1", NS16550, XTAL(24'000'000))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, firebeat_state, midi_uart_ch1_irq_callback))
+ PC16552D(config, "duart_com", 0); // pgmd to 9600baud
+ NS16550(config, "duart_com:chan0", XTAL(19'660'800));
+ NS16550(config, "duart_com:chan1", XTAL(19'660'800));
+ PC16552D(config, "duart_midi", 0); // in all memory maps, pgmd to 31250baud
+ ns16550_device &midi_chan0(NS16550(config, "duart_midi:chan0", XTAL(24'000'000)));
+ midi_chan0.out_int_callback().set(FUNC(firebeat_state::midi_uart_ch0_irq_callback));
+ ns16550_device &midi_chan1(NS16550(config, "duart_midi:chan1", XTAL(24'000'000)));
+ midi_chan1.out_int_callback().set(FUNC(firebeat_state::midi_uart_ch1_irq_callback));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(firebeat_state::firebeat2)
@@ -1292,16 +1292,17 @@ MACHINE_CONFIG_START(firebeat_state::firebeat2)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- MCFG_DEVICE_ADD("duart_com", PC16552D, 0)
- MCFG_DEVICE_ADD("duart_com:chan0", NS16550, XTAL(19'660'800))
- MCFG_DEVICE_ADD("duart_com:chan1", NS16550, XTAL(19'660'800))
- MCFG_DEVICE_ADD("duart_midi", PC16552D, 0)
- MCFG_DEVICE_ADD("duart_midi:chan0", NS16550, XTAL(24'000'000))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, firebeat_state, midi_uart_ch0_irq_callback))
- MCFG_DEVICE_ADD("duart_midi:chan1", NS16550, XTAL(24'000'000))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, firebeat_state, midi_uart_ch1_irq_callback))
- MCFG_MIDI_KBD_ADD("kbd0", WRITELINE("duart_midi:chan0", ins8250_uart_device, rx_w), 31250)
- MCFG_MIDI_KBD_ADD("kbd1", WRITELINE("duart_midi:chan1", ins8250_uart_device, rx_w), 31250)
+ PC16552D(config, "duart_com", 0);
+ NS16550(config, "duart_com:chan0", XTAL(19'660'800));
+ NS16550(config, "duart_com:chan1", XTAL(19'660'800));
+ PC16552D(config, "duart_midi", 0);
+ ns16550_device &midi_chan0(NS16550(config, "duart_midi:chan0", XTAL(24'000'000)));
+ midi_chan0.out_int_callback().set(FUNC(firebeat_state::midi_uart_ch0_irq_callback));
+ ns16550_device &midi_chan1(NS16550(config, "duart_midi:chan1", XTAL(24'000'000)));
+ midi_chan1.out_int_callback().set(FUNC(firebeat_state::midi_uart_ch1_irq_callback));
+
+ MCFG_MIDI_KBD_ADD("kbd0", WRITELINE(midi_chan0, ins8250_uart_device, rx_w), 31250)
+ MCFG_MIDI_KBD_ADD("kbd1", WRITELINE(midi_chan1, ins8250_uart_device, rx_w), 31250)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(firebeat_state::firebeat_spu)
diff --git a/src/mame/drivers/fromanc2.cpp b/src/mame/drivers/fromanc2.cpp
index 8cc1008c5ee..0bc5fdb4fa4 100644
--- a/src/mame/drivers/fromanc2.cpp
+++ b/src/mame/drivers/fromanc2.cpp
@@ -636,10 +636,10 @@ MACHINE_CONFIG_START(fromanc2_state::fromanc4)
EEPROM_93C46_16BIT(config, "eeprom");
- MCFG_DEVICE_ADD("uart", NS16550, 2000000) // actual type is TL16C550CFN; clock unknown
- MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", M68K_IRQ_2))
- //MCFG_INS8250_OUT_TX_CB(WRITELINE("link", rs232_port_device, write_txd))
- //MCFG_INS8250_OUT_RTS_CB(WRITELINE("link", rs232_port_device, write_rts))
+ NS16550(config, m_uart, 2000000); // actual type is TL16C550CFN; clock unknown
+ m_uart->out_int_callback().set_inputline("maincpu", M68K_IRQ_2);
+ //m_uart->out_tx_callback().set("link", FUNC(rs232_port_device::write_txd));
+ //m_uart->out_rts_callback().set("link", FUNC(rs232_port_device::write_rts));
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "lpalette", gfx_fromancr)
diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp
index 5a6b088ecca..5632f53ca72 100644
--- a/src/mame/drivers/h19.cpp
+++ b/src/mame/drivers/h19.cpp
@@ -544,8 +544,8 @@ MACHINE_CONFIG_START(h19_state::h19)
MCFG_MC6845_UPDATE_ROW_CB(h19_state, crtc_update_row)
MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) // frame pulse
- MCFG_DEVICE_ADD("ins8250", INS8250, INS8250_CLOCK)
- MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ ins8250_device &uart(INS8250(config, "ins8250", INS8250_CLOCK));
+ uart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(KBDC_TAG, MM5740, MM5740_CLOCK)
MCFG_MM5740_MATRIX_X1(IOPORT("X1"))
diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp
index 79f9fd64dd7..6dd41e6938c 100644
--- a/src/mame/drivers/h89.cpp
+++ b/src/mame/drivers/h89.cpp
@@ -191,8 +191,8 @@ MACHINE_CONFIG_START(h89_state::h89)
MCFG_DEVICE_PROGRAM_MAP(h89_mem)
MCFG_DEVICE_IO_MAP(h89_io)
- MCFG_DEVICE_ADD( "ins8250", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd))
+ ins8250_device &uart(INS8250(config, "ins8250", XTAL(1'843'200)));
+ uart.out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(WRITELINE("ins8250", ins8250_uart_device, rx_w))
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index de23ec2cd99..07774a1eef6 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -617,11 +617,11 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
ppi.out_pb_callback().set(FUNC(pcjr_state::pcjr_ppi_portb_w));
ppi.in_pc_callback().set(FUNC(pcjr_state::pcjr_ppi_portc_r));
- MCFG_DEVICE_ADD( "ins8250", INS8250, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
+ ins8250_device &uart(INS8250(config, "ins8250", XTAL(1'843'200)));
+ uart.out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
+ uart.out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr));
+ uart.out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
+ uart.out_int_callback().set("pic8259", FUNC(pic8259_device::ir3_w));
MCFG_DEVICE_ADD( "serport", RS232_PORT, pcjr_com, nullptr )
MCFG_RS232_RXD_HANDLER(WRITELINE("ins8250", ins8250_uart_device, rx_w))
diff --git a/src/mame/drivers/imds.cpp b/src/mame/drivers/imds.cpp
index 2471878bcd9..6d1ea0c0416 100644
--- a/src/mame/drivers/imds.cpp
+++ b/src/mame/drivers/imds.cpp
@@ -85,22 +85,13 @@ void imds_state::machine_reset()
m_term_data = 0;
}
-//static const ins8250_interface imds_com_interface =
-//{
-// 1843200,
-// DEVCB_NOOP,
-// nullptr,
-// nullptr,
-// nullptr
-//};
-
MACHINE_CONFIG_START(imds_state::imds)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I8080, 4_MHz_XTAL) // no idea of clock.
MCFG_DEVICE_PROGRAM_MAP(imds_mem)
MCFG_DEVICE_IO_MAP(imds_io)
-// MCFG_INS8250_ADD( "ins8250", imds_com_interface )
+// INS8250(config, "ins8250", 1843200);
/* video hardware */
MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
diff --git a/src/mame/drivers/magtouch.cpp b/src/mame/drivers/magtouch.cpp
index 80ccbc65040..8a3abf4b812 100644
--- a/src/mame/drivers/magtouch.cpp
+++ b/src/mame/drivers/magtouch.cpp
@@ -205,9 +205,11 @@ MACHINE_CONFIG_START(magtouch_state::magtouch)
MCFG_DEVICE_REPLACE("vga", TVGA9000_VGA, 0)
pcat_common(config);
- MCFG_DEVICE_ADD( "ns16450_0", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir4_w))
+
+ ns16450_device &uart(NS16450(config, "ns16450_0", XTAL(1'843'200)));
+ uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
+ uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
+
MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("ns16450_0", ins8250_uart_device, rx_w) )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp
index d483aa7dbc6..e0698e81570 100644
--- a/src/mame/drivers/meritm.cpp
+++ b/src/mame/drivers/meritm.cpp
@@ -1165,8 +1165,9 @@ MACHINE_CONFIG_START(meritm_state::crt250_crt252_crt258)
MCFG_MACHINE_START_OVERRIDE(meritm_state, crt250_crt252_crt258)
- MCFG_DEVICE_ADD(m_uart, NS16550, UART_CLK)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(m_microtouch, microtouch_device, rx))
+ NS16550(config, m_uart, UART_CLK);
+ m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx));
+
MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
MACHINE_CONFIG_END
@@ -1183,8 +1184,9 @@ MACHINE_CONFIG_START(meritm_state::crt260)
MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1200)) // DS1232, TD connected to VCC
MCFG_MACHINE_START_OVERRIDE(meritm_state, crt260)
- MCFG_DEVICE_ADD(m_uart, NS16550, UART_CLK)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(m_microtouch, microtouch_device, rx))
+ NS16550(config, m_uart, UART_CLK);
+ m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx));
+
MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp
index 97d8acc2d3b..ea3a61469b8 100644
--- a/src/mame/drivers/mtouchxl.cpp
+++ b/src/mame/drivers/mtouchxl.cpp
@@ -226,10 +226,11 @@ MACHINE_CONFIG_START(mtxl_state::at486)
MCFG_SLOT_OPTION_MACHINE_CONFIG("ide", cdrom)
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_dm", true) // original is a gd-5440
- MCFG_DEVICE_ADD("ns16550", NS16550, XTAL(1'843'200))
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir4_w))
- MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE("ns16550", ins8250_uart_device, rx_w))
+ ns16550_device &uart(NS16550(config, "ns16550", XTAL(1'843'200)));
+ uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
+ uart.out_int_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir4_w));
+
+ MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w))
MCFG_DEVICE_ADD("cs4231", AD1848, 0)
MCFG_AD1848_IRQ_CALLBACK(WRITELINE("mb:pic8259_master", pic8259_device, ir5_w))
diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp
index 75113b1d322..c69a4d27f14 100644
--- a/src/mame/drivers/pc1512.cpp
+++ b/src/mame/drivers/pc1512.cpp
@@ -1216,11 +1216,11 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
- MCFG_DEVICE_ADD(INS8250_TAG, INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
+ INS8250(config, m_uart, 1.8432_MHz_XTAL);
+ m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(I8259A2_TAG, FUNC(pic8259_device::ir4_w));
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_ack))
@@ -1231,11 +1231,11 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INS8250_TAG, ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
// ISA8 bus
MCFG_DEVICE_ADD(ISA_BUS_TAG, ISA8, 0)
@@ -1347,11 +1347,11 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
- MCFG_DEVICE_ADD(INS8250_TAG, INS8250, 1.8432_MHz_XTAL)
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
+ INS8250(config, m_uart, 1.8432_MHz_XTAL);
+ m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(I8259A2_TAG, FUNC(pic8259_device::ir4_w));
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_ack))
diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp
index 2a91174f4fc..86a80953f4f 100644
--- a/src/mame/drivers/pcat_dyn.cpp
+++ b/src/mame/drivers/pcat_dyn.cpp
@@ -192,11 +192,12 @@ MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn)
NVRAM(config, "nvram").set_custom_handler(FUNC(pcat_dyn_state::nvram_init));
- MCFG_DEVICE_ADD( "ns16550", NS16550, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir4_w))
+ ns16550_device &uart(NS16550(config, "ns16550", XTAL(1'843'200)));
+ uart.out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
+ uart.out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr));
+ uart.out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
+ uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
+
MCFG_DEVICE_ADD( "serport", RS232_PORT, pcat_dyn_com, "msmouse" )
MCFG_SLOT_FIXED(true)
MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, rx_w))
diff --git a/src/mame/drivers/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp
index 25518a4e6b7..5966c54379e 100644
--- a/src/mame/drivers/pcat_nit.cpp
+++ b/src/mame/drivers/pcat_nit.cpp
@@ -242,10 +242,12 @@ MACHINE_CONFIG_START(pcat_nit_state::pcat_nit)
pcvideo_vga(config);
pcat_common(config);
- MCFG_DEVICE_ADD( "ns16450_0", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir4_w))
- MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("ns16450_0", ins8250_uart_device, rx_w) ) // rate?
+
+ ns16450_device &uart(NS16450(config, "ns16450_0", XTAL(1'843'200)));
+ uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
+ uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
+
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w) ) // rate?
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
@@ -261,10 +263,11 @@ MACHINE_CONFIG_START(pcat_nit_state::bonanza)
pcvideo_cirrus_gd5428(config);
pcat_common(config);
- MCFG_DEVICE_ADD( "ns16450_0", NS16450, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_INS8250_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir4_w))
- MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("ns16450_0", ins8250_uart_device, rx_w) ) // rate?
+ ns16450_device &uart(NS16450(config, "ns16450_0", XTAL(1'843'200)));
+ uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
+ uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
+
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w) ) // rate?
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index 65f5d006122..b2d963db4e0 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -1017,29 +1017,30 @@ MACHINE_CONFIG_START(pcw16_state::pcw16)
MCFG_DEVICE_IO_MAP(pcw16_io)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ ns16550_device &uart1(NS16550(config, "ns16550_1", XTAL(1'843'200))); /* TODO: Verify uart model */
+ uart1.out_tx_callback().set("serport1", FUNC(rs232_port_device::write_txd));
+ uart1.out_dtr_callback().set("serport1", FUNC(rs232_port_device::write_dtr));
+ uart1.out_rts_callback().set("serport1", FUNC(rs232_port_device::write_rts));
+ uart1.out_int_callback().set(FUNC(pcw16_state::pcw16_com_interrupt_1));
- MCFG_DEVICE_ADD( "ns16550_1", NS16550, XTAL(1'843'200) ) /* TODO: Verify uart model */
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport1", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport1", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport1", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, pcw16_state, pcw16_com_interrupt_1))
MCFG_DEVICE_ADD( "serport1", RS232_PORT, pcw16_com, "msystems_mouse" )
- MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550_1", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("ns16550_1", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("ns16550_1", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("ns16550_1", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("ns16550_1", ins8250_uart_device, cts_w))
-
- MCFG_DEVICE_ADD( "ns16550_2", NS16550, XTAL(1'843'200) ) /* TODO: Verify uart model */
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport2", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport2", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport2", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, pcw16_state, pcw16_com_interrupt_2))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(uart1, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(uart1, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(uart1, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(uart1, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(uart1, ins8250_uart_device, cts_w))
+
+ NS16550(config, m_uart2, XTAL(1'843'200)); /* TODO: Verify uart model */
+ m_uart2->out_tx_callback().set("serport2", FUNC(rs232_port_device::write_txd));
+ m_uart2->out_dtr_callback().set("serport2", FUNC(rs232_port_device::write_dtr));
+ m_uart2->out_rts_callback().set("serport2", FUNC(rs232_port_device::write_rts));
+ m_uart2->out_int_callback().set(FUNC(pcw16_state::pcw16_com_interrupt_2));
+
MCFG_DEVICE_ADD( "serport2", RS232_PORT, pcw16_com, nullptr )
- MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550_2", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("ns16550_2", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("ns16550_2", ins8250_uart_device, dsr_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("ns16550_2", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart2, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart2, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart2, ins8250_uart_device, dsr_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart2, ins8250_uart_device, cts_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp
index e3b40385c44..94686d8a17c 100644
--- a/src/mame/drivers/rex6000.cpp
+++ b/src/mame/drivers/rex6000.cpp
@@ -921,18 +921,18 @@ MACHINE_CONFIG_START(rex6000_state::rex6000)
ADDRESS_MAP_BANK(config, "bank0").set_map(&rex6000_state::rex6000_banked_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x2000);
ADDRESS_MAP_BANK(config, "bank1").set_map(&rex6000_state::rex6000_banked_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x2000);
- MCFG_DEVICE_ADD( "ns16550", NS16550, XTAL(1'843'200) )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, rex6000_state, serial_irq))
+ NS16550(config, m_uart, XTAL(1'843'200));
+ m_uart->out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(FUNC(rex6000_state::serial_irq));
MCFG_DEVICE_ADD( "serport", RS232_PORT, default_rs232_devices, nullptr )
- MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("ns16550", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("ns16550", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", rex6000_state, rex6000, "rex,ds2", 0)
@@ -971,18 +971,18 @@ MACHINE_CONFIG_START(oz750_state::oz750)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer1", rex6000_state, irq_timer1, attotime::from_hz(64))
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer2", rex6000_state, irq_timer2, attotime::from_hz(8192))
- MCFG_DEVICE_ADD( "ns16550", NS16550, XTAL(9'830'400) / 4 )
- MCFG_INS8250_OUT_TX_CB(WRITELINE("serport", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("serport", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("serport", rs232_port_device, write_rts))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, rex6000_state, serial_irq))
+ NS16550(config, m_uart, XTAL(9'830'400) / 4);
+ m_uart->out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
+ m_uart->out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr));
+ m_uart->out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
+ m_uart->out_int_callback().set(FUNC(rex6000_state::serial_irq));
MCFG_DEVICE_ADD( "serport", RS232_PORT, default_rs232_devices, nullptr )
- MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, rx_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("ns16550", ins8250_uart_device, ri_w))
- //MCFG_RS232_CTS_HANDLER(WRITELINE("ns16550", ins8250_uart_device, cts_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w))
+ MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w))
+ MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w))
+ //MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp
index b40f1817799..98f9b93e127 100644
--- a/src/mame/drivers/tv990.cpp
+++ b/src/mame/drivers/tv990.cpp
@@ -387,17 +387,17 @@ MACHINE_CONFIG_START(tv990_state::tv990)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
- MCFG_DEVICE_ADD( UART0_TAG, NS16450, XTAL(3'686'400) )
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232A_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232A_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232A_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, tv990_state, uart0_irq))
-
- MCFG_DEVICE_ADD( UART1_TAG, NS16450, XTAL(3'686'400) )
- MCFG_INS8250_OUT_DTR_CB(WRITELINE(RS232B_TAG, rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE(RS232B_TAG, rs232_port_device, write_rts))
- MCFG_INS8250_OUT_TX_CB(WRITELINE(RS232B_TAG, rs232_port_device, write_txd))
- MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, tv990_state, uart1_irq))
+ NS16450(config, m_uart0, XTAL(3'686'400));
+ m_uart0->out_dtr_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart0->out_rts_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_rts));
+ m_uart0->out_tx_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart0->out_int_callback().set(FUNC(tv990_state::uart0_irq));
+
+ NS16450(config, m_uart1, XTAL(3'686'400));
+ m_uart1->out_dtr_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_dtr));
+ m_uart1->out_rts_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_rts));
+ m_uart1->out_tx_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_txd));
+ m_uart1->out_int_callback().set(FUNC(tv990_state::uart1_irq));
MCFG_DEVICE_ADD(LPT_TAG, PC_LPT, 0)
MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, tv990_state, lpt_irq))
diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp
index eb77403c176..a689054312f 100644
--- a/src/mame/drivers/twinkle.cpp
+++ b/src/mame/drivers/twinkle.cpp
@@ -1116,10 +1116,10 @@ MACHINE_CONFIG_START(twinkle_state::twinkle)
MCFG_RS232_RI_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, cts_w))
- MCFG_DEVICE_MODIFY("fdc37c665gt:uart2")
- MCFG_INS8250_OUT_TX_CB(WRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_INS8250_OUT_DTR_CB(WRITELINE("rs232", rs232_port_device, write_dtr))
- MCFG_INS8250_OUT_RTS_CB(WRITELINE("rs232", rs232_port_device, write_rts))
+ ins8250_device &uart(*subdevice<ins8250_device>("fdc37c665gt:uart2"));
+ uart.out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd));
+ uart.out_dtr_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
+ uart.out_rts_callback().set("rs232", FUNC(rs232_port_device::write_rts));
/* video hardware */
MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL(53'693'175) )
diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp
index ceee36980e8..e1290b76fea 100644
--- a/src/mame/drivers/zrt80.cpp
+++ b/src/mame/drivers/zrt80.cpp
@@ -302,8 +302,9 @@ MACHINE_CONFIG_START(zrt80_state::zrt80)
MCFG_MC6845_CHAR_WIDTH(8) /*?*/
MCFG_MC6845_UPDATE_ROW_CB(zrt80_state, crtc_update_row)
- MCFG_DEVICE_ADD( "ins8250", INS8250, 2457600 )
- MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ INS8250(config, m_8250, 2457600);
+ m_8250->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
+
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(PUT(zrt80_state, kbd_put))
MACHINE_CONFIG_END