summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/sun1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/sun1.cpp')
-rw-r--r--src/mame/drivers/sun1.cpp67
1 files changed, 34 insertions, 33 deletions
diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp
index 231b50e43d7..4df00473f42 100644
--- a/src/mame/drivers/sun1.cpp
+++ b/src/mame/drivers/sun1.cpp
@@ -114,40 +114,41 @@ void sun1_state::machine_reset()
}
-MACHINE_CONFIG_START(sun1_state::sun1)
+void sun1_state::sun1(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2)
- MCFG_DEVICE_PROGRAM_MAP(sun1_mem)
-
- MCFG_DEVICE_ADD("timer", AM9513, XTAL(16'000'000) / 4)
- MCFG_AM9513_FOUT_CALLBACK(WRITELINE("timer", am9513_device, gate1_w))
- MCFG_AM9513_OUT1_CALLBACK(NOOP) // Watchdog; generates BERR/Reset
- MCFG_AM9513_OUT2_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_6)) // User timer
- MCFG_AM9513_OUT3_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_7)) // Refresh timer (2 ms)
- MCFG_AM9513_OUT4_CALLBACK(WRITELINE("iouart", upd7201_new_device, rxca_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("iouart", upd7201_new_device, txca_w))
- MCFG_AM9513_OUT5_CALLBACK(WRITELINE("iouart", upd7201_new_device, rxcb_w))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("iouart", upd7201_new_device, txcb_w))
-
- MCFG_DEVICE_ADD("iouart", UPD7201_NEW, XTAL(16'000'000) / 4)
- MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232a", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232a", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232a", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232b", rs232_port_device, write_txd))
- MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("rs232b", rs232_port_device, write_dtr))
- MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts))
- MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", M68K_IRQ_5))
-
- MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_new_device, rxa_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("iouart", upd7201_new_device, ctsa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("iouart", upd7201_new_device, dcda_w))
-
- MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_new_device, rxb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE("iouart", upd7201_new_device, ctsb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE("iouart", upd7201_new_device, dcdb_w))
-MACHINE_CONFIG_END
+ M68000(config, m_maincpu, 16_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &sun1_state::sun1_mem);
+
+ am9513_device &timer(AM9513(config, "timer", 16_MHz_XTAL / 4));
+ timer.fout_cb().set("timer", FUNC(am9513_device::gate1_w));
+ timer.out1_cb().set_nop(); // Watchdog; generates BERR/Reset
+ timer.out2_cb().set_inputline(m_maincpu, M68K_IRQ_6); // User timer
+ timer.out3_cb().set_inputline(m_maincpu, M68K_IRQ_7); // Refresh timer (2 ms)
+ timer.out4_cb().set(m_iouart, FUNC(upd7201_new_device::rxca_w));
+ timer.out4_cb().append(m_iouart, FUNC(upd7201_new_device::txca_w));
+ timer.out5_cb().set(m_iouart, FUNC(upd7201_new_device::rxcb_w));
+ timer.out5_cb().append(m_iouart, FUNC(upd7201_new_device::txcb_w));
+
+ UPD7201_NEW(config, m_iouart, 16_MHz_XTAL / 4);
+ m_iouart->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
+ m_iouart->out_dtra_callback().set("rs232a", FUNC(rs232_port_device::write_dtr));
+ m_iouart->out_rtsa_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
+ m_iouart->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
+ m_iouart->out_dtrb_callback().set("rs232b", FUNC(rs232_port_device::write_dtr));
+ m_iouart->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
+ m_iouart->out_int_callback().set_inputline(m_maincpu, M68K_IRQ_5);
+
+ rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, "terminal"));
+ rs232a.rxd_handler().set(m_iouart, FUNC(upd7201_new_device::rxa_w));
+ rs232a.cts_handler().set(m_iouart, FUNC(upd7201_new_device::ctsa_w));
+ rs232a.dcd_handler().set(m_iouart, FUNC(upd7201_new_device::dcda_w));
+
+ rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(m_iouart, FUNC(upd7201_new_device::rxb_w));
+ rs232b.cts_handler().set(m_iouart, FUNC(upd7201_new_device::ctsb_w));
+ rs232b.dcd_handler().set(m_iouart, FUNC(upd7201_new_device::dcdb_w));
+}
/* ROM definition */
ROM_START( sun1 )