diff options
Diffstat (limited to 'src/mame/drivers/sun1.cpp')
-rw-r--r-- | src/mame/drivers/sun1.cpp | 67 |
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 ) |