void wpcsnd_device::device_add_mconfig(machine_config &config) { MC6809E(config, m_cpu, XTAL(8'000'000) / 4); // MC68B09E m_cpu->set_addrmap(AS_PROGRAM, &wpcsnd_device::wpcsnd_map); config.m_minimum_quantum = attotime::from_hz(50); YM2151(config, m_ym2151, 3580000); m_ym2151->irq_handler().set(FUNC(wpcsnd_device::ym2151_irq_w)); m_ym2151->add_route(ALL_OUTPUTS, *this, 0.25); AD7524(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.25); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, *this, 0.5); }
void s6_state::s6(machine_config &config) { /* basic machine hardware */ M6808(config, m_maincpu, 3580000); // 6802 or 6808 could be used here m_maincpu->set_addrmap(AS_PROGRAM, &s6_state::s6_main_map); MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6) /* Video */ config.set_default_layout(layout_s6); /* Sound */ genpin_audio(config); /* Devices */ PIA6821(config, m_pia22, 0); m_pia22->writepa_handler().set(FUNC(s6_state::sol0_w)); m_pia22->writepb_handler().set(FUNC(s6_state::sol1_w)); m_pia22->ca2_handler().set(FUNC(s6_state::pia22_ca2_w)); m_pia22->cb2_handler().set(FUNC(s6_state::pia22_cb2_w)); m_pia22->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia22->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia24, 0); m_pia24->writepa_handler().set(FUNC(s6_state::lamp0_w)); m_pia24->writepb_handler().set(FUNC(s6_state::lamp1_w)); m_pia24->ca2_handler().set(FUNC(s6_state::pia24_ca2_w)); m_pia24->cb2_handler().set(FUNC(s6_state::pia24_cb2_w)); m_pia24->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia24->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia28, 0); m_pia28->readpa_handler().set(FUNC(s6_state::dips_r)); m_pia28->writepa_handler().set(FUNC(s6_state::dig0_w)); m_pia28->writepb_handler().set(FUNC(s6_state::dig1_w)); m_pia28->ca2_handler().set(FUNC(s6_state::pia28_ca2_w)); m_pia28->cb2_handler().set(FUNC(s6_state::pia28_cb2_w)); m_pia28->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia28->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia30, 0); m_pia30->readpa_handler().set(FUNC(s6_state::switch_r)); m_pia30->writepb_handler().set(FUNC(s6_state::switch_w)); m_pia30->ca2_handler().set(FUNC(s6_state::pia30_ca2_w)); m_pia30->cb2_handler().set(FUNC(s6_state::pia30_cb2_w)); m_pia30->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia30->irqb_handler().set(FUNC(s6_state::pia_irq)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* Add the soundcard */ M6802(config, m_audiocpu, 3580000); m_audiocpu->set_addrmap(AS_PROGRAM, &s6_state::s6_audio_map); SPEAKER(config, "speaker").front_center(); MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); 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); SPEAKER(config, "speech").front_center(); HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00); PIA6821(config, m_pias, 0); m_pias->readpb_handler().set(FUNC(s6_state::sound_r)); m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w)); m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w)); m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); // FIXME: needs an input merger m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); }