summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-10-22 18:44:07 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2018-10-22 18:44:07 +0200
commit21b6c96cac665e557415c8c2d4ebef1d56bf5060 (patch)
tree41ee560bc42f8f9d9b56998794df37c0b2e3c17f
parent9703b60a209037ba4f8d091ed5a8f30744a83143 (diff)
rs232: another batch of MCFG removal (nw)
-rw-r--r--src/mame/drivers/a7150.cpp12
-rw-r--r--src/mame/drivers/abc1600.cpp6
-rw-r--r--src/mame/drivers/abc80.cpp2
-rw-r--r--src/mame/drivers/abc80x.cpp18
-rw-r--r--src/mame/drivers/altair.cpp21
-rw-r--r--src/mame/drivers/ampro.cpp22
-rw-r--r--src/mame/drivers/amust.cpp10
-rw-r--r--src/mame/drivers/attache.cpp24
-rw-r--r--src/mame/drivers/aussiebyte.cpp4
-rw-r--r--src/mame/drivers/dbox.cpp8
-rw-r--r--src/mame/drivers/duet16.cpp6
-rw-r--r--src/mame/drivers/horizon.cpp14
-rw-r--r--src/mame/drivers/ibmpcjr.cpp12
-rw-r--r--src/mame/drivers/iris3130.cpp27
-rw-r--r--src/mame/drivers/k8915.cpp8
-rw-r--r--src/mame/drivers/konin.cpp23
-rw-r--r--src/mame/drivers/m20.cpp8
-rw-r--r--src/mame/drivers/m79152pc.cpp12
-rw-r--r--src/mame/drivers/meritum.cpp6
-rw-r--r--src/mame/drivers/mikromik.cpp26
-rw-r--r--src/mame/drivers/mits680b.cpp15
-rw-r--r--src/mame/drivers/mvme147.cpp8
-rw-r--r--src/mame/drivers/pc8401a.cpp12
-rw-r--r--src/mame/drivers/pcd.cpp8
-rw-r--r--src/mame/drivers/pcipc.cpp24
-rw-r--r--src/mame/drivers/peoplepc.cpp6
-rw-r--r--src/mame/drivers/proteus.cpp18
-rw-r--r--src/mame/drivers/ql.cpp6
-rw-r--r--src/mame/drivers/qvt201.cpp12
-rw-r--r--src/mame/drivers/sage2.cpp16
-rw-r--r--src/mame/drivers/sg1000.cpp6
-rw-r--r--src/mame/drivers/slicer.cpp8
-rw-r--r--src/mame/drivers/vixen.cpp12
-rw-r--r--src/mame/machine/ioc2.cpp21
34 files changed, 224 insertions, 217 deletions
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index ef44b6550a8..dc139a21d32 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -549,14 +549,14 @@ MACHINE_CONFIG_START(a7150_state::a7150)
//sio.out_rtsb_callback().set(FUNC(a7150_state::kgs_ifss_loopback_w));
// V.24 port (graphics tablet)
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "loopback")
- MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, ctsa_w))
+ rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "loopback"));
+ rs232a.rxd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::rxa_w));
+ rs232a.dcd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::dcda_w));
+ rs232a.cts_handler().set(Z80SIO_TAG, FUNC(z80sio_device::ctsa_w));
// IFSS (current loop) port (keyboard)
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, "loopback")
- MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80sio_device, rxb_w))
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, "loopback"));
+ rs232b.rxd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::rxb_w));
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_RAW_PARAMS( XTAL(16'000'000), 737,0,640, 431,0,400 )
diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp
index b571f15c41f..73433f49461 100644
--- a/src/mame/drivers/abc1600.cpp
+++ b/src/mame/drivers/abc1600.cpp
@@ -941,10 +941,10 @@ MACHINE_CONFIG_START(abc1600_state::abc1600)
MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":1", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats)
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr)
+ RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr);
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_dart, z80dart_device, rxa_w))
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc99")
MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(WRITELINE(m_dart, z80dart_device, rxb_w))
diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp
index 53bc5e7b7b3..3f69e2eed92 100644
--- a/src/mame/drivers/abc80.cpp
+++ b/src/mame/drivers/abc80.cpp
@@ -527,7 +527,7 @@ MACHINE_CONFIG_START(abc80_state::abc80)
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abc80_cards, "abcexp")
- MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
+ RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr);
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(PUT(abc80_state, kbd_w))
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index 3f1994437f9..385af11840e 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -1087,15 +1087,15 @@ MACHINE_CONFIG_START(abc800_state::common)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CASSETTE_TAG, abc800_state, cassette_input_tick, attotime::from_hz(44100))
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_dart, z80dart_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(m_dart, z80dart_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_dart, z80dart_device, ctsa_w))
-
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_sio, z80sio_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(m_sio, z80sio_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_sio, z80sio_device, ctsa_w))
+ rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
+ rs232a.rxd_handler().set(m_sio, FUNC(z80dart_device::rxa_w));
+ rs232a.dcd_handler().set(m_sio, FUNC(z80dart_device::dcda_w));
+ rs232a.cts_handler().set(m_sio, FUNC(z80dart_device::ctsa_w));
+
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_sio, FUNC(z80dart_device::rxa_w));
+ rs232b.dcd_handler().set(m_sio, FUNC(z80dart_device::dcda_w));
+ rs232b.cts_handler().set(m_sio, FUNC(z80dart_device::ctsa_w));
MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, nullptr)
MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(WRITELINE(m_dart, z80dart_device, rxb_w))
diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp
index a11ba79bd9a..2c7d771b7c6 100644
--- a/src/mame/drivers/altair.cpp
+++ b/src/mame/drivers/altair.cpp
@@ -97,29 +97,30 @@ void altair_state::machine_reset()
m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, 0xFD00);
}
-MACHINE_CONFIG_START(altair_state::altair)
+void altair_state::altair(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8080, 2_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
+ I8080(config, m_maincpu, 2_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &altair_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &altair_state::io_map);
/* video hardware */
acia6850_device &acia(ACIA6850(config, "acia", 0));
acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
acia.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("acia", acia6850_device, write_rxd))
- MCFG_RS232_DCD_HANDLER(WRITELINE("acia", acia6850_device, write_dcd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("acia", acia6850_device, write_cts))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set("acia", FUNC(acia6850_device::write_rxd));
+ rs232.dcd_handler().set("acia", FUNC(acia6850_device::write_dcd));
+ rs232.cts_handler().set("acia", FUNC(acia6850_device::write_cts));
clock_device &uart_clock(CLOCK(config, "uart_clock", 153600)); // TODO: this is set using jumpers S3/S2/S1/S0
uart_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
uart_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", altair_state, altair, "bin", 0)
-MACHINE_CONFIG_END
+ QUICKLOAD(config, "quickload", 0).set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(altair_state, altair), this), "bin", 0);
+}
/* ROM definition */
ROM_START( al8800bt )
diff --git a/src/mame/drivers/ampro.cpp b/src/mame/drivers/ampro.cpp
index c537346f507..dade88e641d 100644
--- a/src/mame/drivers/ampro.cpp
+++ b/src/mame/drivers/ampro.cpp
@@ -48,8 +48,10 @@ public:
void init_ampro();
+protected:
+ virtual void machine_reset() override;
+
private:
- DECLARE_MACHINE_RESET(ampro);
TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
DECLARE_WRITE8_MEMBER(port00_w);
DECLARE_READ8_MEMBER(io_r);
@@ -137,7 +139,7 @@ static void ampro_floppies(device_slot_interface &device)
static INPUT_PORTS_START( ampro )
INPUT_PORTS_END
-MACHINE_RESET_MEMBER( ampro_state, ampro )
+void ampro_state::machine_reset()
{
membank("bankr0")->set_entry(0); // point at rom
membank("bankw0")->set_entry(0); // always write to ram
@@ -152,15 +154,14 @@ void ampro_state::init_ampro()
membank("bankw0")->configure_entry(0, &main[0x0000]);
}
-MACHINE_CONFIG_START(ampro_state::ampro)
+void ampro_state::ampro(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &ampro_state::ampro_mem);
m_maincpu->set_addrmap(AS_IO, &ampro_state::ampro_io);
m_maincpu->set_daisy_config(daisy_chain_intf);
- MCFG_MACHINE_RESET_OVERRIDE(ampro_state, ampro)
-
clock_device &ctc_clock(CLOCK(config, "ctc_clock", 16_MHz_XTAL / 8)); // 2MHz
ctc_clock.signal_handler().set(m_ctc, FUNC(z80ctc_device::trg0));
ctc_clock.signal_handler().append(m_ctc, FUNC(z80ctc_device::trg1));
@@ -178,14 +179,13 @@ MACHINE_CONFIG_START(ampro_state::ampro)
m_dart->out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
m_dart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_dart, z80dart_device, rxa_w))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
WD1772(config, m_fdc, 16_MHz_XTAL / 2);
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_SOFTWARE_LIST_ADD("flop_list", "ampro")
-MACHINE_CONFIG_END
+ FLOPPY_CONNECTOR(config, "fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ SOFTWARE_LIST(config, "flop_list").set_original("ampro");
+}
/* ROM definition */
ROM_START( ampro )
diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp
index 8a810dce397..2c9de4a8cb3 100644
--- a/src/mame/drivers/amust.cpp
+++ b/src/mame/drivers/amust.cpp
@@ -478,17 +478,17 @@ MACHINE_CONFIG_START(amust_state::amust)
uart1.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
uart1.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart1", i8251_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart1", i8251_device, write_cts))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart1", i8251_device, write_dsr))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "keyboard"));
+ rs232.rxd_handler().set("uart1", FUNC(i8251_device::write_rxd));
+ rs232.cts_handler().set("uart1", FUNC(i8251_device::write_cts));
+ rs232.dsr_handler().set("uart1", FUNC(i8251_device::write_dsr));
I8251(config, "uart2", 0);
//uart2.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
//uart2.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
//uart2.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("pit", PIT8253, 0)
+ PIT8253(config, "pit", 0);
i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set(FUNC(amust_state::port04_r));
diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp
index 951473295c8..8a373fc85fd 100644
--- a/src/mame/drivers/attache.cpp
+++ b/src/mame/drivers/attache.cpp
@@ -1154,13 +1154,13 @@ MACHINE_CONFIG_START(attache_state::attache)
m_sio->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsa_w))
+ rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
+ rs232a.rxd_handler().set(m_sio, FUNC(z80sio_device::rxa_w));
+ rs232a.cts_handler().set(m_sio, FUNC(z80sio_device::ctsa_w));
- MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsb_w))
+ rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_sio, FUNC(z80sio_device::rxb_w));
+ rs232b.cts_handler().set(m_sio, FUNC(z80sio_device::ctsb_w));
Z80CTC(config, m_ctc, 8_MHz_XTAL / 2);
m_ctc->zc_callback<0>().set(m_sio, FUNC(z80sio_device::rxca_w));
@@ -1237,13 +1237,13 @@ MACHINE_CONFIG_START(attache816_state::attache816)
m_sio->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsa_w))
+ rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
+ rs232a.rxd_handler().set(m_sio, FUNC(z80sio_device::rxa_w));
+ rs232a.cts_handler().set(m_sio, FUNC(z80sio_device::ctsa_w));
- MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsb_w))
+ rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_sio, FUNC(z80sio_device::rxb_w));
+ rs232b.cts_handler().set(m_sio, FUNC(z80sio_device::ctsb_w));
Z80CTC(config, m_ctc, 8_MHz_XTAL / 2);
m_ctc->zc_callback<0>().set(m_sio, FUNC(z80sio_device::rxca_w));
diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp
index b371206e878..0847cf0a848 100644
--- a/src/mame/drivers/aussiebyte.cpp
+++ b/src/mame/drivers/aussiebyte.cpp
@@ -571,8 +571,8 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte)
sio2.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
sio2.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio2", z80sio_device, rxa_w))
+ RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard");
+ m_rs232->rxd_handler().set("sio2", FUNC(z80sio_device::rxa_w));
WD2797(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(FUNC(aussiebyte_state::fdc_intrq_w));
diff --git a/src/mame/drivers/dbox.cpp b/src/mame/drivers/dbox.cpp
index 6b16eed4b63..88e8b5e7bf4 100644
--- a/src/mame/drivers/dbox.cpp
+++ b/src/mame/drivers/dbox.cpp
@@ -617,10 +617,10 @@ MACHINE_CONFIG_START(dbox_state::dbox)
MCFG_DEVICE_MODIFY("maincpu:serial")
MCFG_MC68340SER_A_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
MCFG_MC68340SER_B_TX_CALLBACK(WRITELINE("modem", rs232_port_device, write_txd))
- MCFG_DEVICE_ADD ("rs232", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER (WRITELINE ("maincpu:serial", mc68340_serial_module_device, rx_a_w))
- MCFG_DEVICE_ADD ("modem", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER (WRITELINE ("maincpu:serial", mc68340_serial_module_device, rx_b_w))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
+ rs232.rxd_handler().set("maincpu:serial", FUNC(mc68340_serial_module_device::rx_a_w));
+ rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
+ modem.rxd_handler().set("maincpu:serial", FUNC(mc68340_serial_module_device::rx_b_w));
/* Add the boot flash */
AMD_29F800B_16BIT(config, "flash");
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index 3b37314e0c3..5905b8ceb98 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -396,9 +396,9 @@ MACHINE_CONFIG_START(duet16_state::duet16)
kbusart.rxrdy_handler().set("kbint", FUNC(input_merger_device::in_w<0>));
kbusart.txrdy_handler().set("kbint", FUNC(input_merger_device::in_w<1>));
- MCFG_DEVICE_ADD("kbd", RS232_PORT, duet16_keyboard_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("kbusart", i8251_device, write_rxd))
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", keyboard)
+ rs232_port_device &kbd(RS232_PORT(config, "kbd", duet16_keyboard_devices, "keyboard"));
+ kbd.rxd_handler().set("kbusart", FUNC(i8251_device::write_rxd));
+ kbd.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
MCFG_INPUT_MERGER_ANY_HIGH("kbint")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("pic", pic8259_device, ir5_w)) // INT2
diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp
index f5e47dfc061..80dd8fd3967 100644
--- a/src/mame/drivers/horizon.cpp
+++ b/src/mame/drivers/horizon.cpp
@@ -191,19 +191,19 @@ MACHINE_CONFIG_START(horizon_state::horizon)
m_usart_l->dtr_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
m_usart_l->rts_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_L_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_L_TAG, i8251_device, write_dsr))
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
+ rs232a.rxd_handler().set(m_usart_l, FUNC(i8251_device::write_rxd));
+ rs232a.dsr_handler().set(m_usart_l, FUNC(i8251_device::write_dsr));
+ rs232a.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
I8251(config, m_usart_r, 0);
m_usart_r->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
m_usart_r->dtr_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
m_usart_r->rts_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_R_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_R_TAG, i8251_device, write_dsr))
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_usart_r, FUNC(i8251_device::write_rxd));
+ rs232b.dsr_handler().set(m_usart_r, FUNC(i8251_device::write_dsr));
// S-100
MCFG_DEVICE_ADD("s100", S100_BUS, XTAL(8'000'000) / 4)
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index eb24d034596..7e5f16ed9c0 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -630,12 +630,12 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
uart.out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts));
uart.out_int_callback().set(m_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))
- MCFG_RS232_DCD_HANDLER(WRITELINE("ins8250", ins8250_uart_device, dcd_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("ins8250", ins8250_uart_device, dsr_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("ins8250", ins8250_uart_device, ri_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("ins8250", ins8250_uart_device, cts_w))
+ rs232_port_device &serport(RS232_PORT(config, "serport", pcjr_com, nullptr));
+ serport.rxd_handler().set("ins8250", FUNC(ins8250_uart_device::rx_w));
+ serport.dcd_handler().set("ins8250", FUNC(ins8250_uart_device::dcd_w));
+ serport.dsr_handler().set("ins8250", FUNC(ins8250_uart_device::dsr_w));
+ serport.ri_handler().set("ins8250", FUNC(ins8250_uart_device::ri_w));
+ serport.cts_handler().set("ins8250", FUNC(ins8250_uart_device::cts_w));
/* video hardware */
MCFG_DEVICE_ADD("pcvideo_pcjr", PCVIDEO_PCJR, 0)
diff --git a/src/mame/drivers/iris3130.cpp b/src/mame/drivers/iris3130.cpp
index 4caa22bd9de..32b1f0ab43a 100644
--- a/src/mame/drivers/iris3130.cpp
+++ b/src/mame/drivers/iris3130.cpp
@@ -422,24 +422,25 @@ static DEVICE_INPUT_DEFAULTS_START( ip2_terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-MACHINE_CONFIG_START(sgi_ip2_state::sgi_ip2)
+void sgi_ip2_state::sgi_ip2(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68020, 16000000)
- MCFG_DEVICE_PROGRAM_MAP(sgi_ip2_map)
+ M68020(config, m_maincpu, 16000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &sgi_ip2_state::sgi_ip2_map);
- MCFG_DEVICE_ADD("duart68681a", MC68681, 3.6864_MHz_XTAL) /* Y3 3.6864MHz Xtal ??? copy-over from dectalk */
- MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, sgi_ip2_state, duarta_irq_handler))
- MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ MC68681(config, m_duarta, 3.6864_MHz_XTAL); /* Y3 3.6864MHz Xtal ??? copy-over from dectalk */
+ m_duarta->irq_cb().set(FUNC(sgi_ip2_state::duarta_irq_handler));
+ m_duarta->b_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
- MCFG_DEVICE_ADD("duart68681b", MC68681, 3.6864_MHz_XTAL) /* Y3 3.6864MHz Xtal ??? copy-over from dectalk */
- MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, sgi_ip2_state, duartb_irq_handler))
+ MC68681(config, m_duartb, 3.6864_MHz_XTAL); /* Y3 3.6864MHz Xtal ??? copy-over from dectalk */
+ m_duartb->irq_cb().set(FUNC(sgi_ip2_state::duartb_irq_handler));
- MCFG_DEVICE_ADD("rtc", MC146818, 4.194304_MHz_XTAL)
+ MC146818(config, m_rtc, 4.194304_MHz_XTAL);
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("duart68681a", mc68681_device, rx_b_w))
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", ip2_terminal)
-MACHINE_CONFIG_END
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set(m_duarta, FUNC(mc68681_device::rx_b_w));
+ rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(ip2_terminal));
+}
static INPUT_PORTS_START( sgi_ip2 )
PORT_START("SWTCH")
diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp
index cbafad2ef75..c2315cf1871 100644
--- a/src/mame/drivers/k8915.cpp
+++ b/src/mame/drivers/k8915.cpp
@@ -163,10 +163,10 @@ MACHINE_CONFIG_START(k8915_state::k8915)
sio.out_dtrb_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
sio.out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("sio", z80sio_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("sio", z80sio_device, ctsb_w))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "keyboard"));
+ rs232.rxd_handler().set("sio", FUNC(z80sio_device::rxb_w));
+ rs232.dcd_handler().set("sio", FUNC(z80sio_device::dcdb_w));
+ rs232.cts_handler().set("sio", FUNC(z80sio_device::ctsb_w));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp
index 8342e9e4b5f..3628ad19d1b 100644
--- a/src/mame/drivers/konin.cpp
+++ b/src/mame/drivers/konin.cpp
@@ -124,13 +124,14 @@ void konin_state::machine_start()
{
}
-MACHINE_CONFIG_START(konin_state::konin)
+void konin_state::konin(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8080, XTAL(4'000'000))
- MCFG_DEVICE_PROGRAM_MAP(konin_mem)
- MCFG_DEVICE_IO_MAP(konin_io)
- MCFG_I8085A_INTE(WRITELINE("picu", i8214_device, inte_w))
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("intlatch", i8212_device, inta_cb)
+ i8080_cpu_device &maincpu(I8080(config, m_maincpu, XTAL(4'000'000)));
+ maincpu.set_addrmap(AS_PROGRAM, &konin_state::konin_mem);
+ maincpu.set_addrmap(AS_IO, &konin_state::konin_io);
+ maincpu.out_inte_func().set(m_picu, FUNC(i8214_device::inte_w));
+ maincpu.set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i8212_device::inta_cb), "intlatch", (i8212_device*)nullptr));
i8212_device &intlatch(I8212(config, "intlatch", 0));
intlatch.md_rd_callback().set_constant(0);
@@ -158,11 +159,11 @@ MACHINE_CONFIG_START(konin_state::konin)
uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
uart.rxrdy_handler().set(FUNC(konin_state::picu_r3_w));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE("uart", i8251_device, write_dsr))
- MCFG_RS232_CTS_HANDLER(WRITELINE("uart", i8251_device, write_cts))
-MACHINE_CONFIG_END
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set("uart", FUNC(i8251_device::write_rxd));
+ rs232.dsr_handler().set("uart", FUNC(i8251_device::write_dsr));
+ rs232.cts_handler().set("uart", FUNC(i8251_device::write_cts));
+}
/* ROM definition */
ROM_START( konin )
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index 4a1c4f8124d..06888db0a48 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -841,11 +841,11 @@ MACHINE_CONFIG_START(m20_state::m20)
MCFG_DEVICE_ADD(m_i8259, PIC8259, 0)
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, m20_state, int_w))
- MCFG_DEVICE_ADD("kbd", RS232_PORT, keyboard, "m20")
- MCFG_RS232_RXD_HANDLER(WRITELINE("i8251_1", i8251_device, write_rxd))
+ rs232_port_device &kbd(RS232_PORT(config, "kbd", keyboard, "m20"));
+ kbd.rxd_handler().set(m_kbdi8251, FUNC(i8251_device::write_rxd));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("i8251_2", i8251_device, write_rxd))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
+ rs232.rxd_handler().set(m_ttyi8251, FUNC(i8251_device::write_rxd));
MCFG_DEVICE_ADD("apb", M20_8086, "maincpu", m_i8259, RAM_TAG)
diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp
index ba4cf7caa48..8eb93236cdd 100644
--- a/src/mame/drivers/m79152pc.cpp
+++ b/src/mame/drivers/m79152pc.cpp
@@ -335,12 +335,12 @@ MACHINE_CONFIG_START(m79152pc_state::m79152pc)
m_uart->out_dtrb_callback().set("modem", FUNC(rs232_port_device::write_dtr));
m_uart->out_rtsb_callback().set("modem", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("keyboard", RS232_PORT, default_rs232_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, z80sio_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, z80sio_device, ctsa_w))
- MCFG_DEVICE_ADD("modem", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, z80sio_device, rxb_w))
- //MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, z80sio_device, ctsb_w))
+ rs232_port_device &keyboard(RS232_PORT(config, "keyboard", default_rs232_devices, "keyboard"));
+ keyboard.rxd_handler().set(m_uart, FUNC(z80sio_device::rxa_w));
+ keyboard.cts_handler().set(m_uart, FUNC(z80sio_device::ctsa_w));
+ rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
+ modem.rxd_handler().set(m_uart, FUNC(z80sio_device::rxb_w));
+ //modem.cts_handler().set(m_uart, FUNC(z80sio_device::ctsb_w));
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 1000);
diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp
index 84bd6e27743..2fa35fc4d0a 100644
--- a/src/mame/drivers/meritum.cpp
+++ b/src/mame/drivers/meritum.cpp
@@ -402,9 +402,9 @@ MACHINE_CONFIG_START(meritum_state::meritum)
i8251_device &usart(I8251(config, "usart", 10_MHz_XTAL / 4)); // same as CPU clock
usart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("usart", i8251_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("usart", i8251_device, write_cts))
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
+ rs232.rxd_handler().set("usart", FUNC(i8251_device::write_rxd));
+ rs232.cts_handler().set("usart", FUNC(i8251_device::write_cts));
INPUT_MERGER_ALL_HIGH(config, "nmigate").output_handler().set("mainpit", FUNC(pit8253_device::write_gate2)).invert();
diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp
index 96d9a72381c..84dfd1e26b7 100644
--- a/src/mame/drivers/mikromik.cpp
+++ b/src/mame/drivers/mikromik.cpp
@@ -499,17 +499,17 @@ MACHINE_CONFIG_START(mm1_state::mm1)
MCFG_FLOPPY_DRIVE_SOUND(true)
UPD7201(config, m_mpsc, 6.144_MHz_XTAL/2);
- m_mpsc->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
- m_mpsc->out_dtra_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
- m_mpsc->out_rtsa_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
+ m_mpsc->out_txda_callback().set(m_rs232a, FUNC(rs232_port_device::write_txd));
+ m_mpsc->out_dtra_callback().set(m_rs232a, FUNC(rs232_port_device::write_dtr));
+ m_mpsc->out_rtsa_callback().set(m_rs232a, FUNC(rs232_port_device::write_rts));
m_mpsc->out_rxdrqa_callback().set(FUNC(mm1_state::drq2_w));
m_mpsc->out_txdrqa_callback().set(FUNC(mm1_state::drq1_w));
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_mpsc, z80dart_device, rxa_w))
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_DEVICE_ADD(RS232_C_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_mpsc, z80dart_device, ctsb_w))
+ RS232_PORT(config, m_rs232a, default_rs232_devices, nullptr);
+ m_rs232a->cts_handler().set(m_mpsc, FUNC(z80dart_device::rxa_w));
+ RS232_PORT(config, m_rs232b, default_rs232_devices, nullptr);
+ RS232_PORT(config, m_rs232c, default_rs232_devices, nullptr);
+ m_rs232c->cts_handler().set(m_mpsc, FUNC(z80dart_device::ctsb_w));
MCFG_DEVICE_ADD(KB_TAG, MM1_KEYBOARD, 2500) // actual KBCLK is 6.144_MHz_XTAL/2/16
MCFG_MM1_KEYBOARD_KBST_CALLBACK(WRITELINE(I8212_TAG, i8212_device, stb_w))
@@ -526,24 +526,26 @@ MACHINE_CONFIG_END
// MACHINE_CONFIG( mm1m6 )
//-------------------------------------------------
-MACHINE_CONFIG_START(mm1_state::mm1m6)
+void mm1_state::mm1m6(machine_config &config)
+{
mm1(config);
// video hardware
mm1m6_video(config);
-MACHINE_CONFIG_END
+}
//-------------------------------------------------
// MACHINE_CONFIG( mm1m7 )
//-------------------------------------------------
-MACHINE_CONFIG_START(mm1_state::mm1m7)
+void mm1_state::mm1m7(machine_config &config)
+{
mm1(config);
// video hardware
mm1m6_video(config);
// TODO hard disk
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/drivers/mits680b.cpp b/src/mame/drivers/mits680b.cpp
index 96a932158f1..c5aca8f7768 100644
--- a/src/mame/drivers/mits680b.cpp
+++ b/src/mame/drivers/mits680b.cpp
@@ -65,10 +65,11 @@ static INPUT_PORTS_START( mits680b )
INPUT_PORTS_END
-MACHINE_CONFIG_START(mits680b_state::mits680b)
+void mits680b_state::mits680b(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M6800, XTAL(1'000'000) / 2)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ M6800(config, m_maincpu, XTAL(1'000'000) / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mits680b_state::mem_map);
clock_device &uart_clock(CLOCK(config, "uart_clock", 153600));
uart_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
@@ -78,10 +79,10 @@ MACHINE_CONFIG_START(mits680b_state::mits680b)
acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
acia.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("acia", acia6850_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("acia", acia6850_device, write_cts))
-MACHINE_CONFIG_END
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set("acia", FUNC(acia6850_device::write_rxd));
+ rs232.cts_handler().set("acia", FUNC(acia6850_device::write_cts));
+}
/* ROM definition */
ROM_START( mits680b )
diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp
index f4ceba450a3..4ba6ed13afe 100644
--- a/src/mame/drivers/mvme147.cpp
+++ b/src/mame/drivers/mvme147.cpp
@@ -655,7 +655,7 @@ MACHINE_CONFIG_START(mvme147_state::mvme147)
MCFG_VME_DEVICE_ADD("vme")
MCFG_VME_SLOT_ADD("vme", 1, mvme147_vme_cards, nullptr)
- MCFG_DEVICE_ADD("m48t18", M48T02, 0) /* t08 differs only in accepted voltage levels compared to t18 */
+ M48T02(config, "m48t18", 0); /* t08 differs only in accepted voltage levels compared to t18 */
/* Terminal Port config */
SCC85C30(config, m_sccterm, SCC_CLOCK);
@@ -663,9 +663,9 @@ MACHINE_CONFIG_START(mvme147_state::mvme147)
m_sccterm->out_dtra_callback().set("rs232trm", FUNC(rs232_port_device::write_dtr));
m_sccterm->out_rtsa_callback().set("rs232trm", FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD("rs232trm", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER (WRITELINE(m_sccterm, scc85c30_device, rxa_w))
- MCFG_RS232_CTS_HANDLER (WRITELINE(m_sccterm, scc85c30_device, ctsa_w))
+ rs232_port_device &rs232trm(RS232_PORT(config, "rs232trm", default_rs232_devices, "terminal"));
+ rs232trm.rxd_handler().set(m_sccterm, FUNC(scc85c30_device::rxa_w));
+ rs232trm.cts_handler().set(m_sccterm, FUNC(scc85c30_device::ctsa_w));
SCC85C30(config, m_sccterm2, SCC_CLOCK);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index e6492f1cb5d..aa97d5b96c9 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -591,9 +591,9 @@ MACHINE_CONFIG_START(pc8401a_state::pc8401a)
uart.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
uart.rts_handler().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(I8251_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_dsr))
+ rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
+ rs232.rxd_handler().set(I8251_TAG, FUNC(i8251_device::write_rxd));
+ rs232.dsr_handler().set(I8251_TAG, FUNC(i8251_device::write_dsr));
/* video hardware */
pc8401a_video(config);
@@ -631,9 +631,9 @@ MACHINE_CONFIG_START(pc8500_state::pc8500)
uart.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
uart.rts_handler().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(I8251_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_dsr))
+ rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
+ rs232.rxd_handler().set(I8251_TAG, FUNC(i8251_device::write_rxd));
+ rs232.dsr_handler().set(I8251_TAG, FUNC(i8251_device::write_dsr));
/* video hardware */
pc8500_video(config);
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index d7bfdbe7e16..9bc1ef95030 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -547,10 +547,10 @@ MACHINE_CONFIG_START(pcd_state::pcd)
m_usart[2]->txrdy_handler().set(m_pic1, FUNC(pic8259_device::ir4_w));
m_usart[2]->txd_handler().set("rs232_2", FUNC(rs232_port_device::write_txd));
- MCFG_DEVICE_ADD("rs232_1", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart[0], mc2661_device, rx_w))
- MCFG_DEVICE_ADD("rs232_2", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart[2], mc2661_device, rx_w))
+ rs232_port_device &rs232_1(RS232_PORT(config, "rs232_1", default_rs232_devices, nullptr));
+ rs232_1.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w));
+ rs232_port_device &rs232_2(RS232_PORT(config, "rs232_2", default_rs232_devices, nullptr));
+ rs232_2.rxd_handler().set(m_usart[2], FUNC(mc2661_device::rx_w));
// sound hardware
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/pcipc.cpp b/src/mame/drivers/pcipc.cpp
index 08669a9b8dd..7b00286fd50 100644
--- a/src/mame/drivers/pcipc.cpp
+++ b/src/mame/drivers/pcipc.cpp
@@ -544,18 +544,18 @@ MACHINE_CONFIG_START(pcipc_state::pcipc)
MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false)
MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false)
MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false)
- MCFG_DEVICE_ADD("serport0", RS232_PORT, isa_com, "logitech_mouse")
- MCFG_RS232_RXD_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, rxd1_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ndcd1_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ndsr1_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, nri1_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ncts1_w))
- MCFG_DEVICE_ADD("serport1", RS232_PORT, isa_com, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, rxd2_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ndcd2_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ndsr2_w))
- MCFG_RS232_RI_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, nri2_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("board4:fdc37c93x", fdc37c93x_device, ncts2_w))
+ rs232_port_device &serport0(RS232_PORT(config, "serport0", isa_com, "logitech_mouse"));
+ serport0.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd1_w));
+ serport0.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd1_w));
+ serport0.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr1_w));
+ serport0.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri1_w));
+ serport0.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts1_w));
+ rs232_port_device &serport1(RS232_PORT(config, "serport1", isa_com, nullptr));
+ serport1.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd2_w));
+ serport1.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd2_w));
+ serport1.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr2_w));
+ serport1.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri2_w));
+ serport1.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts2_w));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcipc_state::pcipctx)
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index 153c78fdfd4..100d6df6b3b 100644
--- a/src/mame/drivers/peoplepc.cpp
+++ b/src/mame/drivers/peoplepc.cpp
@@ -298,9 +298,9 @@ MACHINE_CONFIG_START(peoplepc_state::olypeopl)
m_8251key->rxrdy_handler().set("pic8259_1", FUNC(pic8259_device::ir1_w));
m_8251key->txd_handler().set("kbd", FUNC(rs232_port_device::write_txd));
- MCFG_DEVICE_ADD("kbd", RS232_PORT, peoplepc_keyboard_devices, "keyboard")
- MCFG_RS232_RXD_HANDLER(WRITELINE("i8251_0", i8251_device, write_rxd))
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", keyboard)
+ rs232_port_device &kbd(RS232_PORT(config, "kbd", peoplepc_keyboard_devices, "keyboard"));
+ kbd.rxd_handler().set(m_8251key, FUNC(i8251_device::write_rxd));
+ kbd.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
I8251(config, m_8251ser, 0);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/proteus.cpp b/src/mame/drivers/proteus.cpp
index 79d96e73130..689813e5da8 100644
--- a/src/mame/drivers/proteus.cpp
+++ b/src/mame/drivers/proteus.cpp
@@ -375,9 +375,9 @@ MACHINE_CONFIG_START(proteus_state::proteus)
m_acia[0]->rts_handler().set("terminal", FUNC(rs232_port_device::write_rts));
m_acia[0]->irq_handler().set("irqs", FUNC(input_merger_device::in_w<4>));
- MCFG_DEVICE_ADD("terminal", RS232_PORT, default_rs232_devices, "terminal") // TODO: ADM-31 terminal required
- MCFG_RS232_RXD_HANDLER(WRITELINE("acia0", acia6850_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("acia0", acia6850_device, write_cts))
+ rs232_port_device &terminal(RS232_PORT(config, "terminal", default_rs232_devices, "terminal")); // TODO: ADM-31 terminal required
+ terminal.rxd_handler().set(m_acia[0], FUNC(acia6850_device::write_rxd));
+ terminal.cts_handler().set(m_acia[0], FUNC(acia6850_device::write_cts));
clock_device &acia0_clock(CLOCK(config, "acia0_clock", 4_MHz_XTAL / 2 / 13)); // TODO: this is set using jumpers
acia0_clock.signal_handler().set(m_acia[0], FUNC(acia6850_device::write_txc));
@@ -389,9 +389,9 @@ MACHINE_CONFIG_START(proteus_state::proteus)
m_acia[1]->rts_handler().set("printer", FUNC(rs232_port_device::write_rts));
m_acia[1]->irq_handler().set("irqs", FUNC(input_merger_device::in_w<5>));
- MCFG_DEVICE_ADD("printer", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("acia1", acia6850_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("acia1", acia6850_device, write_cts))
+ rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr));
+ printer.rxd_handler().set(m_acia[1], FUNC(acia6850_device::write_rxd));
+ printer.cts_handler().set(m_acia[1], FUNC(acia6850_device::write_cts));
clock_device &acia1_clock(CLOCK(config, "acia1_clock", 4_MHz_XTAL / 2 / 13)); // TODO: this is set using jumpers J2
acia1_clock.signal_handler().set(m_acia[1], FUNC(acia6850_device::write_txc));
@@ -403,9 +403,9 @@ MACHINE_CONFIG_START(proteus_state::proteus)
m_acia[2]->rts_handler().set("modem", FUNC(rs232_port_device::write_rts));
m_acia[2]->irq_handler().set("irqs", FUNC(input_merger_device::in_w<6>));
- MCFG_DEVICE_ADD("modem", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("acia2", acia6850_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE("acia2", acia6850_device, write_cts))
+ rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
+ modem.rxd_handler().set(m_acia[2], FUNC(acia6850_device::write_rxd));
+ modem.cts_handler().set(m_acia[2], FUNC(acia6850_device::write_cts));
clock_device &acia2_clock(CLOCK(config, "acia2_clock", 4_MHz_XTAL / 2 / 13)); // TODO: this is set using jumpers J1
acia2_clock.signal_handler().set(m_acia[2], FUNC(acia6850_device::write_txc));
diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp
index 148b2e2385b..34df45d79e5 100644
--- a/src/mame/drivers/ql.cpp
+++ b/src/mame/drivers/ql.cpp
@@ -951,9 +951,9 @@ MACHINE_CONFIG_START(ql_state::ql)
MCFG_MICRODRIVE_COMMS_OUT_CALLBACK(WRITELINE(MDV_2, microdrive_image_device, comms_in_w))
MCFG_MICRODRIVE_ADD(MDV_2)
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr) // wired as DCE
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) // wired as DTE
- MCFG_RS232_CTS_HANDLER(WRITELINE(ZX8302_TAG, zx8302_device, write_cts2))
+ RS232_PORT(config, m_ser1, default_rs232_devices, nullptr); // wired as DCE
+ RS232_PORT(config, m_ser2, default_rs232_devices, nullptr); // wired as DTE
+ m_ser2->cts_handler().set(m_zx8302, FUNC(zx8302_device::write_cts2));
MCFG_DEVICE_ADD("exp", QL_EXPANSION_SLOT, 0, ql_expansion_cards, nullptr) // FIXME: what's the clock on the slot?
//MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK()
diff --git a/src/mame/drivers/qvt201.cpp b/src/mame/drivers/qvt201.cpp
index 49e6add37fb..81cf016c7fc 100644
--- a/src/mame/drivers/qvt201.cpp
+++ b/src/mame/drivers/qvt201.cpp
@@ -105,16 +105,16 @@ MACHINE_CONFIG_START(qvt201_state::qvt201)
MCFG_DEVICE_ADD("duart", SCN2681, 3.6864_MHz_XTAL) // XTAL not directly connected
MCFG_MC68681_IRQ_CALLBACK(WRITELINE("mainint", input_merger_device, in_w<1>))
- MCFG_MC68681_A_TX_CALLBACK(WRITELINE("eia", rs232_port_device, write_txd))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(m_eia, rs232_port_device, write_txd))
MCFG_MC68681_B_TX_CALLBACK(WRITELINE("aux", rs232_port_device, write_txd))
MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, qvt201_state, duart_out_w))
- MCFG_DEVICE_ADD("eia", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_a_w))
+ RS232_PORT(config, m_eia, default_rs232_devices, nullptr);
+ m_eia->rxd_handler().set("duart", FUNC(scn2681_device::rx_a_w));
- MCFG_DEVICE_ADD("aux", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_b_w))
- MCFG_RS232_DSR_HANDLER(WRITELINE("duart", scn2681_device, ip4_w))
+ rs232_port_device &aux(RS232_PORT(config, "aux", default_rs232_devices, nullptr));
+ aux.rxd_handler().set("duart", FUNC(scn2681_device::rx_b_w));
+ aux.dsr_handler().set("duart", FUNC(scn2681_device::ip4_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // TC5516APL-2 or uPD446C-2 + battery
diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp
index 66a8cdb0334..2beb04fe575 100644
--- a/src/mame/drivers/sage2.cpp
+++ b/src/mame/drivers/sage2.cpp
@@ -450,11 +450,11 @@ MACHINE_CONFIG_START(sage2_state::sage2)
m_usart0->rxrdy_handler().set_inputline(M68000_TAG, M68K_IRQ_5);
m_usart0->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir2_w));
- MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart0, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(m_usart0, i8251_device, write_dsr))
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_usart0, i8251_device, write_cts))
- MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
+ rs232a.rxd_handler().set(m_usart0, FUNC(i8251_device::write_rxd));
+ rs232a.dsr_handler().set(m_usart0, FUNC(i8251_device::write_dsr));
+ rs232a.cts_handler().set(m_usart0, FUNC(i8251_device::write_cts));
+ rs232a.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
I8251(config, m_usart1, 0);
m_usart1->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
@@ -463,9 +463,9 @@ MACHINE_CONFIG_START(sage2_state::sage2)
m_usart1->rxrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir1_w));
m_usart1->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir3_w));
- MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart1, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(m_usart1, i8251_device, write_dsr))
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_usart1, FUNC(i8251_device::write_rxd));
+ rs232b.dsr_handler().set(m_usart1, FUNC(i8251_device::write_dsr));
UPD765A(config, m_fdc, false, false);
m_fdc->intrq_wr_callback().set(FUNC(sage2_state::fdc_irq));
diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp
index f9cd0d60758..2344d2582a7 100644
--- a/src/mame/drivers/sg1000.cpp
+++ b/src/mame/drivers/sg1000.cpp
@@ -645,9 +645,9 @@ MACHINE_CONFIG_START(sf7000_state::sf7000)
upd8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
upd8251.rts_handler().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(UPD8251_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(UPD8251_TAG, i8251_device, write_dsr))
+ rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
+ rs232.rxd_handler().set(UPD8251_TAG, FUNC(i8251_device::write_rxd));
+ rs232.dsr_handler().set(UPD8251_TAG, FUNC(i8251_device::write_dsr));
UPD765A(config, m_fdc, false, false);
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats)
diff --git a/src/mame/drivers/slicer.cpp b/src/mame/drivers/slicer.cpp
index 9ffdeb6de7b..79e14f9fd8a 100644
--- a/src/mame/drivers/slicer.cpp
+++ b/src/mame/drivers/slicer.cpp
@@ -108,10 +108,10 @@ MACHINE_CONFIG_START(slicer_state::slicer)
MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232_2", rs232_port_device, write_txd))
MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, slicer_state, sio_out_w))
- MCFG_DEVICE_ADD("rs232_1", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_a_w))
- MCFG_DEVICE_ADD("rs232_2", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_b_w))
+ rs232_port_device &rs232_1(RS232_PORT(config, "rs232_1", default_rs232_devices, "terminal"));
+ rs232_1.rxd_handler().set("duart", FUNC(scn2681_device::rx_a_w));
+ rs232_port_device &rs232_2(RS232_PORT(config, "rs232_2", default_rs232_devices, nullptr));
+ rs232_2.rxd_handler().set("duart", FUNC(scn2681_device::rx_b_w));
FD1797(config, m_fdc, 16_MHz_XTAL / 2 / 8);
m_fdc->intrq_wr_callback().set("maincpu", FUNC(i80186_cpu_device::int1_w));
diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp
index 9f349bcae61..2ab569670b8 100644
--- a/src/mame/drivers/vixen.cpp
+++ b/src/mame/drivers/vixen.cpp
@@ -775,15 +775,15 @@ MACHINE_CONFIG_START(vixen_state::vixen)
i8155_io.out_to_callback().set(FUNC(vixen_state::io_i8155_to_w));
I8251(config, m_usart, 0);
- m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
- m_usart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
- m_usart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
+ m_usart->txd_handler().set(m_rs232, FUNC(rs232_port_device::write_txd));
+ m_usart->dtr_handler().set(m_rs232, FUNC(rs232_port_device::write_dtr));
+ m_usart->rts_handler().set(m_rs232, FUNC(rs232_port_device::write_rts));
m_usart->rxrdy_handler().set(FUNC(vixen_state::rxrdy_w));
m_usart->txrdy_handler().set(FUNC(vixen_state::txrdy_w));
- MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(P8251A_TAG, i8251_device, write_rxd))
- MCFG_RS232_DSR_HANDLER(WRITELINE(P8251A_TAG, i8251_device, write_dsr))
+ RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+ m_rs232->rxd_handler().set(m_usart, FUNC(i8251_device::write_rxd));
+ m_rs232->dsr_handler().set(m_usart, FUNC(i8251_device::write_dsr));
FD1797(config, m_fdc, 23.9616_MHz_XTAL / 24);
m_fdc->intrq_wr_callback().set(FUNC(vixen_state::fdc_intrq_w));
diff --git a/src/mame/machine/ioc2.cpp b/src/mame/machine/ioc2.cpp
index bb96828ccef..34fa8f26210 100644
--- a/src/mame/machine/ioc2.cpp
+++ b/src/mame/machine/ioc2.cpp
@@ -48,7 +48,8 @@ ioport_constructor ioc2_device::device_input_ports() const
return INPUT_PORTS_NAME(front_panel);
}
-MACHINE_CONFIG_START(ioc2_device::device_add_mconfig)
+void ioc2_device::device_add_mconfig(machine_config &config)
+{
SCC85230(config, m_scc, SCC_PCLK);
m_scc->configure_channels(SCC_RXA_CLK.value(), SCC_TXA_CLK.value(), SCC_RXB_CLK.value(), SCC_TXB_CLK.value());
m_scc->out_txda_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_txd));
@@ -58,15 +59,15 @@ MACHINE_CONFIG_START(ioc2_device::device_add_mconfig)
m_scc->out_dtrb_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_dtr));
m_scc->out_rtsb_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD(RS232A_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_scc, scc85230_device, ctsa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc, scc85230_device, dcda_w))
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc, scc85230_device, rxa_w))
+ rs232_port_device &rs232a(RS232_PORT(config, RS232A_TAG, default_rs232_devices, nullptr));
+ rs232a.cts_handler().set(m_scc, FUNC(scc85230_device::ctsa_w));
+ rs232a.dcd_handler().set(m_scc, FUNC(scc85230_device::dcda_w));
+ rs232a.rxd_handler().set(m_scc, FUNC(scc85230_device::rxa_w));
- MCFG_DEVICE_ADD(RS232B_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_CTS_HANDLER(WRITELINE(m_scc, scc85230_device, ctsb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc, scc85230_device, dcdb_w))
- MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc, scc85230_device, rxb_w))
+ rs232_port_device &rs232b(RS232_PORT(config, RS232B_TAG, default_rs232_devices, nullptr));
+ rs232b.cts_handler().set(m_scc, FUNC(scc85230_device::ctsb_w));
+ rs232b.dcd_handler().set(m_scc, FUNC(scc85230_device::dcdb_w));
+ rs232b.rxd_handler().set(m_scc, FUNC(scc85230_device::rxb_w));
PC_LPT(config, m_pi1);
@@ -79,7 +80,7 @@ MACHINE_CONFIG_START(ioc2_device::device_add_mconfig)
m_pit->set_clk<1>(1000000);
m_pit->set_clk<2>(1000000);
m_pit->out_handler<2>().set(m_kbdc, FUNC(kbdc8042_device::write_out2));
-MACHINE_CONFIG_END
+}
ioc2_device::ioc2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)