summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tranz330.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-05-01 21:35:58 +1000
committer Vas Crabb <vas@vastheman.com>2018-05-01 21:35:58 +1000
commit384bf0e5100c1fa005b4814dc950e3cbcbbb76a9 (patch)
tree1b993c2dd0e9645eba62dc492814931f7555dced /src/mame/drivers/tranz330.cpp
parent547086658208e3aa715ab74d520ad0b8e4d7fa22 (diff)
Route sound relative to current device.
Also, look Ma - no magic prologue! Slot card additions run in the context of the slot itself, which isn't entirely intuitive. Slot configuration needs a bunch of other cleanup anyway.
Diffstat (limited to 'src/mame/drivers/tranz330.cpp')
-rw-r--r--src/mame/drivers/tranz330.cpp81
1 files changed, 43 insertions, 38 deletions
diff --git a/src/mame/drivers/tranz330.cpp b/src/mame/drivers/tranz330.cpp
index 49f19d6ff5d..9b6357cc10d 100644
--- a/src/mame/drivers/tranz330.cpp
+++ b/src/mame/drivers/tranz330.cpp
@@ -139,48 +139,53 @@ static const z80_daisy_config tranz330_daisy_chain[] =
// * - check clocks
// ? - check purported RS232 hookup, inconsistent information found at the relevant webpage vs. user-submitted errata
-MACHINE_CONFIG_START(tranz330_state::tranz330)
- z80_device &cpu = Z80(config, CPU_TAG, XTAL(7'159'090)/2); //*
- cpu.set_addrmap(AS_PROGRAM, address_map_constructor(&tranz330_state::tranz330_mem, tag(), this));
- cpu.set_addrmap(AS_IO, address_map_constructor(&tranz330_state::tranz330_io, tag(), this));
- cpu.set_daisy_config(tranz330_daisy_chain);
-
- MCFG_DEVICE_ADD("ctc_clock", CLOCK, XTAL(7'159'090)/4) // ?
- MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(tranz330_state, clock_w))
-
- MCFG_DEVICE_ADD(RTC_TAG, MSM6242, XTAL(32'768))
-
- MCFG_DEVICE_ADD(PIO_TAG, Z80PIO, XTAL(7'159'090)/2) //*
- MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0)) //*
- MCFG_Z80PIO_OUT_PA_CB(WRITE8(tranz330_state, pio_a_w))
- MCFG_Z80PIO_IN_PA_CB(READ8(tranz330_state, card_r))
- MCFG_Z80PIO_IN_PB_CB(READ8(tranz330_state, pio_b_r))
-
- MCFG_DEVICE_ADD(DART_TAG, Z80DART, XTAL(7'159'090)/2) //*
- MCFG_Z80DART_OUT_SYNCB_CB(WRITELINE(tranz330_state, syncb_w))
- MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) //?
- MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_dtr)) //?
- MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts)) //?
- MCFG_Z80DART_OUT_INT_CB(INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0))
-
- MCFG_DEVICE_ADD(CTC_TAG, Z80CTC, XTAL(7'159'090)/2) //*
- MCFG_Z80CTC_ZC2_CB(WRITELINE(tranz330_state, sound_w))
- MCFG_Z80CTC_INTR_CB(INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0))
-
- MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE(DART_TAG, z80dart_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(DEVWRITELINE(DART_TAG, z80dart_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(DEVWRITELINE(DART_TAG, z80dart_device, ctsb_w))
+void tranz330_state::tranz330(machine_config &config)
+{
+ m_cpu = Z80(config, CPU_TAG, XTAL(7'159'090)/2); //*
+ m_cpu->set_addrmap(AS_PROGRAM, address_map_constructor(&tranz330_state::tranz330_mem, tag(), this));
+ m_cpu->set_addrmap(AS_IO, address_map_constructor(&tranz330_state::tranz330_io, tag(), this));
+ m_cpu->set_daisy_config(tranz330_daisy_chain);
+
+ CLOCK(config, "ctc_clock", XTAL(7'159'090)/4) // ?
+ .set_signal_handler(DEVCB_WRITELINE(tranz330_state, clock_w));
+
+ MSM6242(config, RTC_TAG, XTAL(32'768));
+
+ m_pio = Z80PIO(config, PIO_TAG, XTAL(7'159'090)/2); //*
+ m_pio->set_out_int_callback(DEVCB_INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0)); //*
+ m_pio->set_out_pa_callback(DEVCB_WRITE8(tranz330_state, pio_a_w));
+ m_pio->set_in_pa_callback(DEVCB_READ8(tranz330_state, card_r));
+ m_pio->set_in_pb_callback(DEVCB_READ8(tranz330_state, pio_b_r));
+
+ m_dart = Z80DART(config, DART_TAG, XTAL(7'159'090)/2); //*
+ m_dart->set_out_syncb_callback(DEVCB_WRITELINE(tranz330_state, syncb_w));
+ m_dart->set_out_txdb_callback(DEVCB_DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)); //?
+ m_dart->set_out_dtrb_callback(DEVCB_DEVWRITELINE(RS232_TAG, rs232_port_device, write_dtr)); //?
+ m_dart->set_out_rtsb_callback(DEVCB_DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts)); //?
+ m_dart->set_out_int_callback(DEVCB_INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0));
+
+ m_ctc = Z80CTC(config, CTC_TAG, XTAL(7'159'090)/2); //*
+ m_ctc->set_zc_callback<2>(DEVCB_WRITELINE(tranz330_state, sound_w));
+ m_ctc->set_intr_callback(DEVCB_INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0));
+
+ m_rs232 = RS232_PORT(config, RS232_TAG, 0);
+ m_rs232->option_reset();
+ slot_options_default_rs232_devices(m_rs232);
+ m_rs232->set_default_option(nullptr);
+ m_rs232->set_fixed(false);
+ m_rs232->set_rxd_handler(DEVCB_DEVWRITELINE(DART_TAG, z80dart_device, rxb_w));
+ m_rs232->set_dcd_handler(DEVCB_DEVWRITELINE(DART_TAG, z80dart_device, dcdb_w));
+ m_rs232->set_cts_handler(DEVCB_DEVWRITELINE(DART_TAG, z80dart_device, ctsb_w));
// video
- MCFG_MIC10937_ADD(VFD_TAG, 0)
- MCFG_DEFAULT_LAYOUT( layout_tranz330 )
+ MIC10937(config, VFD_TAG, 60).set_port_value(0);
+ config.m_default_layout = &layout_tranz330;
// sound
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
+ SPEAKER(config, "mono", 0).set_position(0.0, 0.0, 1.0);
+ SPEAKER_SOUND(config, "speaker", 0)
+ .add_route(ALL_OUTPUTS, "mono", 0.25);
+}
ROM_START( tranz330 )