summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dectalk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dectalk.cpp')
-rw-r--r--src/mame/drivers/dectalk.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp
index ee03a4ed2f3..4805da6c6bf 100644
--- a/src/mame/drivers/dectalk.cpp
+++ b/src/mame/drivers/dectalk.cpp
@@ -876,18 +876,16 @@ TIMER_CALLBACK_MEMBER(dectalk_state::outfifo_read_cb)
m_duart->duart_rx_break(1, 0);*/
}
-void dectalk_state::dectalk(machine_config &config)
-{
+MACHINE_CONFIG_START(dectalk_state::dectalk)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* E74 20MHz OSC (/2) */
- m_maincpu->set_addrmap(AS_PROGRAM, &dectalk_state::m68k_mem);
-
- SCN2681(config, m_duart, XTAL(3'686'400)); // MC2681 DUART ; Y3 3.6864MHz xtal */
- m_duart->irq_cb().set(FUNC(dectalk_state::duart_irq_handler));
- m_duart->a_tx_cb().set(FUNC(dectalk_state::duart_txa));
- m_duart->b_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
- m_duart->inport_cb().set(FUNC(dectalk_state::duart_input));
- m_duart->outport_cb().set(FUNC(dectalk_state::duart_output));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2) /* E74 20MHz OSC (/2) */
+ MCFG_DEVICE_PROGRAM_MAP(m68k_mem)
+ MCFG_DEVICE_ADD(m_duart, SCN2681, XTAL(3'686'400)) // MC2681 DUART ; Y3 3.6864MHz xtal */
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, dectalk_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, dectalk_state, duart_txa))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, dectalk_state, duart_input))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, dectalk_state, duart_output))
TMS32010(config, m_dsp, XTAL(20'000'000)); /* Y1 20MHz xtal */
m_dsp->set_addrmap(AS_PROGRAM, &dectalk_state::tms32010_mem);
@@ -895,9 +893,9 @@ void dectalk_state::dectalk(machine_config &config)
m_dsp->bio().set(FUNC(dectalk_state::spc_semaphore_r)); //read infifo-has-data-in-it fifo readable status
#ifdef USE_LOOSE_TIMING
- config.m_minimum_quantum = attotime::from_hz(100);
+ MCFG_QUANTUM_TIME(attotime::from_hz(100))
#else
- config.m_perfect_cpu_quantum = subtag("dsp");
+ MCFG_QUANTUM_PERFECT_CPU("dsp")
#endif
X2212(config, "x2212");
@@ -906,16 +904,15 @@ void dectalk_state::dectalk(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- AD7541(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.9); // ad7541.e107 (E88 10KHz OSC, handled by timer)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", AD7541, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.9) // ad7541.e107 (E88 10KHz OSC, handled by timer)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* Y2 is a 3.579545 MHz xtal for the dtmf decoder chip */
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_b_w));
-}
+MACHINE_CONFIG_END