diff options
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 |
commit | 384bf0e5100c1fa005b4814dc950e3cbcbbb76a9 (patch) | |
tree | 1b993c2dd0e9645eba62dc492814931f7555dced /src/mame/drivers/tranz330.cpp | |
parent | 547086658208e3aa715ab74d520ad0b8e4d7fa22 (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.cpp | 81 |
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 ) |