void coco_rs232_device::device_add_mconfig(machine_config &config) { MOS6551(config, m_uart, 0); m_uart->set_xtal(1.8432_MHz_XTAL); m_uart->irq_handler().set(FUNC(coco_rs232_device::uart_irq_w)); m_uart->txd_handler().set(PORT_TAG, FUNC(rs232_port_device::write_txd)); rs232_port_device &rs232(RS232_PORT(config, PORT_TAG, default_rs232_devices, nullptr)); rs232.rxd_handler().set(m_uart, FUNC(mos6551_device::write_rxd)); rs232.dcd_handler().set(m_uart, FUNC(mos6551_device::write_dcd)); rs232.dsr_handler().set(m_uart, FUNC(mos6551_device::write_dsr)); rs232.cts_handler().set(m_uart, FUNC(mos6551_device::write_cts)); }
/* sound hardware */ SPEAKER(config, "speaker").front_center(); WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25); AY8910(config, m_ay8910[0], 1000000).add_route(ALL_OUTPUTS, "speaker", 0.5); AY8910(config, m_ay8910[1], 1000000).add_route(ALL_OUTPUTS, "speaker", 0.5); /* snapshot/quickload */ MCFG_SNAPSHOT_ADD("snapshot", microtan_state, microtan, "m65", attotime::from_msec(500)) MCFG_QUICKLOAD_ADD("quickload", microtan_state, microtan, "hex", attotime::from_msec(500)) /* cassette */ CASSETTE(config, m_cassette); /* acia */ mos6551_device &acia(MOS6551(config, "acia", 0)); acia.set_xtal(1.8432_MHz_XTAL); /* via */ VIA6522(config, m_via6522[0], 6_MHz_XTAL / 8); m_via6522[0]->readpa_handler().set(FUNC(microtan_state::via_0_in_a)); m_via6522[0]->writepa_handler().set(FUNC(microtan_state::via_0_out_a)); m_via6522[0]->writepb_handler().set(FUNC(microtan_state::via_0_out_b)); m_via6522[0]->ca2_handler().set(FUNC(microtan_state::via_0_out_ca2)); m_via6522[0]->cb2_handler().set(FUNC(microtan_state::via_0_out_cb2)); m_via6522[0]->irq_handler().set(m_irq_line, FUNC(input_merger_device::in_w<IRQ_VIA_0>)); VIA6522(config, m_via6522[1], 6_MHz_XTAL / 8); m_via6522[1]->writepa_handler().set(FUNC(microtan_state::via_1_out_a)); m_via6522[1]->writepb_handler().set(FUNC(microtan_state::via_1_out_b)); m_via6522[1]->ca2_handler().set(FUNC(microtan_state::via_1_out_ca2));