void c64_namesoft_midi_cartridge_device::device_add_mconfig(machine_config &config) { ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); m_acia->irq_handler().set(FUNC(c64_namesoft_midi_cartridge_device::acia_irq_w)); MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); MIDI_PORT(config, "mdout", midiout_slot, "midiout"); clock_device &acia_clock(CLOCK(config, "acia_clock", 31250*16)); acia_clock.signal_handler().set(FUNC(c64_namesoft_midi_cartridge_device::write_acia_clock)); }
void esqkt_state::ts(machine_config &config) { M68000(config, m_maincpu, 16_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &esqkt_state::ts_map); ES5510(config, m_esp, 10_MHz_XTAL); m_esp->set_disable(); auto &panel(ESQPANEL2X40_VFX(config, "sq1panel")); panel.write_tx().set(m_duart, FUNC(scn2681_device::rx_b_w)); SCN2681(config, m_duart, 4000000); m_duart->irq_cb().set(FUNC(esqkt_state::duart_irq_handler)); m_duart->a_tx_cb().set(FUNC(esqkt_state::duart_tx_a)); m_duart->b_tx_cb().set(FUNC(esqkt_state::duart_tx_b)); m_duart->outport_cb().set(FUNC(esqkt_state::duart_output)); m_duart->set_clocks(500000, 500000, 1000000, 1000000); auto &mdin(MIDI_PORT(config, "mdin")); midiin_slot(mdin); mdin.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_a_w)); // route MIDI Tx send directly to 68681 channel A Rx midiout_slot(MIDI_PORT(config, "mdout")); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); ESQ_5505_5510_PUMP(config, m_pump, 16_MHz_XTAL / (16 * 32)); m_pump->set_esp(m_esp); m_pump->add_route(0, "lspeaker", 1.0); m_pump->add_route(1, "rspeaker", 1.0); auto &es5506a(ES5506(config, "ensoniq", 16_MHz_XTAL)); es5506a.sample_rate_changed().set(FUNC(esqkt_state::es5506_clock_changed)); es5506a.set_region0("waverom"); /* Bank 0 */ es5506a.set_region1("waverom2"); /* Bank 1 */ es5506a.set_region2("waverom3"); /* Bank 0 */ es5506a.set_region3("waverom4"); /* Bank 1 */ es5506a.set_channels(4); /* channels */ es5506a.irq_cb().set(FUNC(esqkt_state::esq5506_otto_irq)); /* irq */ es5506a.read_port_cb().set(FUNC(esqkt_state::esq5506_read_adc)); /* ADC */ es5506a.add_route(0, "pump", 1.0, 0); es5506a.add_route(1, "pump", 1.0, 1); es5506a.add_route(2, "pump", 1.0, 2); es5506a.add_route(3, "pump", 1.0, 3); es5506a.add_route(4, "pump", 1.0, 4); es5506a.add_route(5, "pump", 1.0, 5); es5506a.add_route(6, "pump", 1.0, 6); es5506a.add_route(7, "pump", 1.0, 7); }
void bbc_emrmidi_device::device_add_mconfig(machine_config &config) { ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("mdout1", FUNC(midi_port_device::write_txd)); m_acia->txd_handler().append("mdout2", FUNC(midi_port_device::write_txd)); m_acia->irq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); CLOCK(config, m_acia_clock, 2_MHz_XTAL / 4); m_acia_clock->signal_handler().set(FUNC(bbc_emrmidi_device::write_acia_clock)); midiout_slot(MIDI_PORT(config, "mdout1")); midiout_slot(MIDI_PORT(config, "mdout2")); auto &mdin(MIDI_PORT(config, "mdin")); midiin_slot(mdin); mdin.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); }
void msx_cart_msx_audio_nms1205_device::device_add_mconfig(machine_config &config) { // This is actually incorrect. The sound output is passed back into the MSX machine where it is mixed internally and output through the system 'speaker'. // At the same time the sound is also output on two output on the nms1205 cartridge itself SPEAKER(config, "mono").front_center(); Y8950(config, m_y8950, XTAL(3'579'545)); m_y8950->add_route(ALL_OUTPUTS, "mono", 0.40); m_y8950->keyboard_write().set("kbdc", FUNC(msx_audio_kbdc_port_device::write)); m_y8950->keyboard_read().set("kbdc", FUNC(msx_audio_kbdc_port_device::read)); m_y8950->irq().set(FUNC(msx_cart_msx_audio_nms1205_device::irq_write)); MSX_AUDIO_KBDC_PORT(config, "kbdc", msx_audio_keyboards, nullptr); // There is a 2 MHz crystal on the PCB, the 6850 TX and RX clocks are derived from it ACIA6850(config, m_acia6850, 0); m_acia6850->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(FUNC(msx_cart_msx_audio_nms1205_device::midi_in)); MIDI_PORT(config, m_mdthru, midiout_slot, "midiout"); MIDI_PORT(config, m_mdout, midiout_slot, "midiout"); }
void msx_cart_sfg_device::device_add_mconfig(machine_config &config) { // YM2151 (OPM) // YM3012 (DAC) // YM2148 (MKS) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); YM2151(config, m_ym2151, XTAL(3'579'545)); // The SFG01 uses a YM2151, the SFG05 uses a YM2164, input clock comes from the main cpu frequency m_ym2151->irq_handler().set(FUNC(msx_cart_sfg_device::ym2151_irq_w)); m_ym2151->add_route(0, "lspeaker", 0.80); m_ym2151->add_route(1, "rspeaker", 0.80); YM2148(config, m_ym2148, XTAL(4'000'000)); m_ym2148->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); m_ym2148->port_write_handler().set("kbdc", FUNC(msx_audio_kbdc_port_device::write)); m_ym2148->port_read_handler().set("kbdc", FUNC(msx_audio_kbdc_port_device::read)); m_ym2148->irq_handler().set(FUNC(msx_cart_sfg_device::ym2148_irq_w)); MSX_AUDIO_KBDC_PORT(config, m_kbdc, msx_audio_keyboards, nullptr); MIDI_PORT(config, "mdout", midiout_slot, "midiout"); MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set("ym2148", FUNC(ym2148_device::write_rxd)); }