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); }