void jupiter2_state::jupiter2(machine_config &config) { // basic machine hardware M6800(config, m_maincpu, 2000000); m_maincpu->set_addrmap(AS_PROGRAM, &jupiter2_state::jupiter2_mem); // devices FD1771(config, INS1771N1_TAG, 1000000); FLOPPY_CONNECTOR(config, INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats); ACIA6850(config, m_acia0, XTAL(2'000'000)); // unknown frequency m_acia0->txd_handler().set("serial0", FUNC(rs232_port_device::write_txd)); m_acia0->rts_handler().set("serial0", FUNC(rs232_port_device::write_rts)); rs232_port_device &serial0(RS232_PORT(config, "serial0", default_rs232_devices, "terminal")); serial0.rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd)); serial0.cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts)); ACIA6850(config, m_acia1, XTAL(2'000'000)); // unknown frequency m_acia1->txd_handler().set("serial1", FUNC(rs232_port_device::write_txd)); m_acia1->rts_handler().set("serial1", FUNC(rs232_port_device::write_rts)); rs232_port_device &serial1(RS232_PORT(config, "serial1", default_rs232_devices, "terminal")); serial1.rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); serial1.cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts)); // internal ram RAM(config, RAM_TAG).set_default_size("64K"); }
void goldngam_state::swisspkr(machine_config &config) { base(config); ACIA6850(config, "acia", 0).irq_handler().set_inputline("maincpu", M68K_IRQ_4); AY8912(config, "aysnd", MASTER_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 1.00); }
void newbrain_eim_device::device_add_mconfig(machine_config &config) { // devices Z80CTC(config, m_ctc, XTAL(16'000'000)/8); m_ctc->zc_callback<0>().set(m_acia, FUNC(acia6850_device::write_rxc)); m_ctc->zc_callback<1>().set(m_acia, FUNC(acia6850_device::write_txc)); m_ctc->zc_callback<2>().set(FUNC(newbrain_eim_device::ctc_z2_w)); TIMER(config, "z80ctc_c2").configure_periodic(FUNC(newbrain_eim_device::ctc_c2_tick), attotime::from_hz(XTAL(16'000'000)/4/13)); adc0809_device &adc(ADC0809(config, ADC0809_TAG, 500000)); adc.eoc_callback().set(FUNC(newbrain_eim_device::adc_eoc_w)); adc.in_callback<0>().set_constant(0); adc.in_callback<1>().set_constant(0); adc.in_callback<2>().set_constant(0); adc.in_callback<3>().set_constant(0); adc.in_callback<4>().set_constant(0); adc.in_callback<5>().set_constant(0); adc.in_callback<6>().set_constant(0); adc.in_callback<7>().set_constant(0); ACIA6850(config, m_acia, 0); m_acia->irq_handler().set(FUNC(newbrain_eim_device::acia_interrupt)); RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr); NEWBRAIN_EXPANSION_SLOT(config, m_exp, XTAL(16'000'000)/8, newbrain_expansion_cards, "fdc"); // internal ram RAM(config, RAM_TAG).set_default_size("96K"); }
void enmirage_state::mirage(machine_config &config) { MC6809E(config, m_maincpu, 2000000); m_maincpu->set_addrmap(AS_PROGRAM, &enmirage_state::mirage_map); config.set_default_layout(layout_mirage); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); es5503_device &es5503(ES5503(config, "es5503", 7000000)); es5503.set_channels(2); es5503.irq_func().set(FUNC(enmirage_state::mirage_doc_irq)); es5503.adc_func().set(FUNC(enmirage_state::mirage_adc_read)); es5503.add_route(0, "lspeaker", 1.0); es5503.add_route(1, "rspeaker", 1.0); VIA6522(config, m_via, 1000000); m_via->writepa_handler().set(FUNC(enmirage_state::mirage_via_write_porta)); m_via->writepb_handler().set(FUNC(enmirage_state::mirage_via_write_portb)); m_via->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); acia6850_device &acia6850(ACIA6850(config, "acia6850", 0)); acia6850.irq_handler().set_inputline(m_maincpu, M6809_FIRQ_LINE); WD1772(config, m_fdc, 8000000); m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); m_fdc->drq_wr_callback().set_inputline(m_maincpu, M6809_IRQ_LINE); FLOPPY_CONNECTOR(config, "wd1772:0", ensoniq_floppies, "35dd", enmirage_state::floppy_formats); }
void acorn_vib_device::device_add_mconfig(machine_config &config) { INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set(FUNC(acorn_vib_device::irq_w)); VIA6522(config, m_via6522, XTAL(1'000'000)); m_via6522->writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w)); m_via6522->ca2_handler().set(m_centronics, FUNC(centronics_device::write_strobe)); m_via6522->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->ack_handler().set(m_via6522, FUNC(via6522_device::write_ca1)); m_centronics->busy_handler().set(m_via6522, FUNC(via6522_device::write_pa7)); output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); m_centronics->set_output_latch(cent_data_out); I8255(config, m_ppi8255, 0); ACIA6850(config, m_acia, 0); m_acia->txd_handler().set(m_rs232, FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set(m_rs232, FUNC(rs232_port_device::write_rts)); m_acia->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>)); RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); m_rs232->rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); m_rs232->cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); m_rs232->dcd_handler().set(m_acia, FUNC(acia6850_device::write_dcd)); CLOCK(config, m_acia_clock, 1.8432_MHz_XTAL); m_acia_clock->signal_handler().set(FUNC(acorn_vib_device::write_acia_clock)); }
void ob68k1a_state::ob68k1a(machine_config &config) { // basic machine hardware M68000(config, m_maincpu, 10_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &ob68k1a_state::ob68k1a_mem); // devices PIA6821(config, m_pia0, 0); PIA6821(config, m_pia1, 0); PTM6840(config, MC6840_TAG, 10_MHz_XTAL/10).set_external_clocks(0, 0, 0); ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(m_rs232a, FUNC(rs232_port_device::write_txd)); m_acia0->rts_handler().set(m_rs232a, FUNC(rs232_port_device::write_rts)); RS232_PORT(config, m_rs232a, default_rs232_devices, "terminal"); m_rs232a->rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd)); m_rs232a->dcd_handler().set(m_acia0, FUNC(acia6850_device::write_dcd)); m_rs232a->cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts)); ACIA6850(config, m_acia1, 0); m_acia1->txd_handler().set(m_rs232b, FUNC(rs232_port_device::write_txd)); m_acia1->rts_handler().set(m_rs232b, FUNC(rs232_port_device::write_rts)); RS232_PORT(config, m_rs232b, default_rs232_devices, nullptr); m_rs232b->rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); m_rs232b->dcd_handler().set(m_acia1, FUNC(acia6850_device::write_dcd)); m_rs232b->cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts)); COM8116(config, m_dbrg, 5.0688_MHz_XTAL); m_dbrg->fr_handler().set(m_acia0, FUNC(acia6850_device::write_txc)); m_dbrg->fr_handler().append(m_acia0, FUNC(acia6850_device::write_rxc)); m_dbrg->ft_handler().set(m_acia1, FUNC(acia6850_device::write_txc)); m_dbrg->ft_handler().append(m_acia1, FUNC(acia6850_device::write_rxc)); // internal ram RAM(config, m_ram, 0); m_ram->set_default_size("32K"); m_ram->set_extra_options("128K"); }
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)); }
INPUT_PORTS_END void qvt6800_state::qvt190(machine_config &config) { M6800(config, m_maincpu, XTAL(16'669'800) / 9); m_maincpu->set_addrmap(AS_PROGRAM, &qvt6800_state::qvt190_mem_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // V61C16P55L + battery ACIA6850(config, "acia1", 0); ACIA6850(config, "acia2", 0); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(XTAL(16'669'800), 882, 0, 720, 315, 0, 300); screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); mc6845_device &crtc(MC6845(config, "crtc", XTAL(16'669'800) / 9)); crtc.set_screen("screen"); crtc.set_char_width(9); crtc.set_update_row_callback(FUNC(qvt6800_state::update_row), this); }
DEVICE_INPUT_DEFAULTS_END #endif /* Fake clock values until we TODO: figure out how the PTM generates the clocks */ #define CAN09T_BAUDGEN_CLOCK 1.8432_MHz_XTAL #define CAN09T_ACIA_CLOCK (CAN09T_BAUDGEN_CLOCK / 12) void can09t_state::can09t(machine_config &config) { MC6809(config, m_maincpu, 4.9152_MHz_XTAL); // IPL crystal m_maincpu->set_addrmap(AS_PROGRAM, &can09t_state::can09t_map); /* --PIA inits----------------------- */ PIA6821(config, m_syspia, 0); // CPU board m_syspia->readpa_handler().set(FUNC(can09t_state::syspia_A_r)); m_syspia->readpb_handler().set(FUNC(can09t_state::syspia_B_r)); m_syspia->writepb_handler().set(FUNC(can09t_state::syspia_B_w)); m_syspia->cb2_handler().set(FUNC(can09t_state::syspia_cb2_w)); /* 0xE1FB 0xB112 (SYSPIA Control A) = 0x00 - Channel A IRQ disabled */ /* 0xE1FB 0xB113 (SYSPIA Control B) = 0x00 - Channel B IRQ disabled */ /* 0xE203 0xB110 (SYSPIA DDR A) = 0x00 - Port A all inputs */ /* 0xE203 0xB111 (SYSPIA DDR B) = 0x7F - Port B mixed mode */ /* 0xE20A 0xB112 (SYSPIA Control A) = 0x05 - IRQ A enabled on falling transition on CA2 */ /* 0xE20A 0xB113 (SYSPIA Control B) = 0x34 - CB2 is low and lock DDRB */ /* 0xE20E 0xB111 (SYSPIA port B) = 0x10 - Data to port B */ PIA6821(config, m_usrpia, 0); // CPU board m_usrpia->cb2_handler().set(FUNC(can09t_state::usrpia_cb2_w)); /* 0xE212 0xB122 (USRPIA Control A) = 0x00 - Channel A IRQ disabled */ /* 0xE212 0xB123 (USRPIA Control B) = 0x00 - Channel B IRQ disabled */ /* 0xE215 0xB120 (USRPIA DDR A) = 0x00 - Port A all inputs */ /* 0xE215 0xB121 (USRPIA DDR B) = 0xFF - Port B all outputs */ /* 0xE21A 0xB122 (USRPIA Control A) = 0x34 - CA2 is low and lock DDRB */ /* 0xE21A 0xB123 (USRPIA Control B) = 0x34 - CB2 is low and lock DDRB */ PIA6821(config, m_pia3, 0); // ROM board PIA6821(config, m_pia4, 0); // ROM board PTM6840(config, "ptm", 0); /* RS232 usage: mame can09t -window -debug -rs232 terminal */ ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); CLOCK(config, "acia_clock", CAN09T_ACIA_CLOCK).signal_handler().set(FUNC(can09t_state::write_acia_clock)); }
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)); }
DEVICE_INPUT_DEFAULTS_END //------------------------------------------------- // device_add_mconfig - add device-specific // machine configuration //------------------------------------------------- void ss50_mps_device::device_add_mconfig(machine_config &config) { ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); //m_acia->rts_handler().set(FUNC(ss50_mps_device::reader_control_w)); m_acia->irq_handler().set(FUNC(ss50_mps_device::acia_irq_w)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); }
void mekd2_state::mekd2(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, XTAL_MEKD2 / 2); /* 614.4 kHz */ m_maincpu->set_addrmap(AS_PROGRAM, &mekd2_state::mekd2_mem); config.set_default_layout(layout_mekd2); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); CASSETTE(config, m_cass); /* Devices */ PIA6821(config, m_pia_s, 0); m_pia_s->readpa_handler().set(FUNC(mekd2_state::mekd2_key_r)); m_pia_s->readcb1_handler().set(FUNC(mekd2_state::mekd2_key40_r)); m_pia_s->writepa_handler().set(FUNC(mekd2_state::mekd2_segment_w)); m_pia_s->writepb_handler().set(FUNC(mekd2_state::mekd2_digit_w)); m_pia_s->ca2_handler().set(FUNC(mekd2_state::mekd2_nmi_w)); m_pia_s->irqa_handler().set_inputline("maincpu", INPUT_LINE_NMI); m_pia_s->irqb_handler().set_inputline("maincpu", INPUT_LINE_NMI); PIA6821(config, m_pia_u, 0); m_pia_u->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); ACIA6850(config, m_acia, 0); m_acia->txd_handler().set(FUNC(mekd2_state::cass_w)); clock_device &acia_tx_clock(CLOCK(config, "acia_tx_clock", XTAL_MEKD2 / 256)); // 4800Hz acia_tx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); clock_device &acia_rx_clock(CLOCK(config, "acia_rx_clock", 300)); // toggled by cassette circuit acia_rx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_rxc)); TIMER(config, "mekd2_c").configure_periodic(FUNC(mekd2_state::mekd2_c), attotime::from_hz(4800)); TIMER(config, "mekd2_p").configure_periodic(FUNC(mekd2_state::mekd2_p), attotime::from_hz(40000)); QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mekd2_state, mekd2_quik), this), "d2", attotime::from_seconds(1)); }
void f1gp_state::f1gpb(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 10000000); /* 10 MHz ??? */ m_maincpu->set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu1_map); m_maincpu->set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); m68000_device &sub(M68000(config, "sub", 10000000)); /* 10 MHz ??? */ sub.set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu2_map); sub.set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); /* NO sound CPU */ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */ ACIA6850(config, m_acia, 0); m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3); m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now clock_device &acia_clock(CLOCK(config, "acia_clock", 1000000)); // guessed acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(f1gp_state::screen_update_f1gpb)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_f1gp); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); //VSYSTEM_GGA(config, "gga", 0); /* sound hardware */ SPEAKER(config, "mono").front_center(); okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.00); }
void bitgraph_state::bitgrpha(machine_config &config) { M68000(config, m_maincpu, XTAL(6'900'000)); m_maincpu->set_addrmap(AS_PROGRAM, &bitgraph_state::bitgrapha_mem); bg_motherboard(config); CLOCK(config, "system_clock", 40).signal_handler().set(FUNC(bitgraph_state::system_clock_write)); ACIA6850(config, m_acia3, 0); m_acia3->txd_handler().set(RS232_M_TAG, FUNC(rs232_port_device::write_txd)); m_acia3->rts_handler().set(RS232_M_TAG, FUNC(rs232_port_device::write_rts)); m_acia3->irq_handler().set_inputline(M68K_TAG, M68K_IRQ_1); rs232_port_device &rs232m(RS232_PORT(config, RS232_M_TAG, default_rs232_devices, nullptr)); rs232m.rxd_handler().set(m_acia3, FUNC(acia6850_device::write_rxd)); rs232m.dcd_handler().set(m_acia3, FUNC(acia6850_device::write_dcd)); rs232m.cts_handler().set(m_acia3, FUNC(acia6850_device::write_cts)); RAM(config, RAM_TAG).set_default_size("128K"); }
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 goupil_base_state::base(machine_config &config) { M6808(config, m_maincpu, CPU_CLOCK); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(50); // TODO: sound hardware ACIA6850(config, m_acia, 0); // TODO: Is this specific to the G1? VIA6522(config, m_via_video, CPU_CLOCK / 4); VIA6522(config, m_via_keyb, CPU_CLOCK / 4); m_via_keyb->irq_handler().set_inputline(m_maincpu, M6808_IRQ_LINE); VIA6522(config, m_via_modem, CPU_CLOCK / 4); m_via_modem->irq_handler().set_inputline(m_maincpu, M6808_IRQ_LINE); /* Floppy */ FD1791(config, m_fdc, 8_MHz_XTAL); FLOPPY_CONNECTOR(config, m_floppy0, goupil_floppies, "525qd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, m_floppy1, goupil_floppies, "525qd", floppy_image_device::default_floppy_formats); i8279_device &i8279_kb1(I8279(config, "i8279_kb1", CPU_CLOCK)); i8279_kb1.out_sl_callback().set(FUNC(goupil_g1_state::scanlines_kbd1_w)); // scan SL lines i8279_kb1.in_rl_callback().set(FUNC(goupil_g1_state::kbd1_r)); // kbd RL lines i8279_kb1.in_shift_callback().set(FUNC(goupil_g1_state::shift_kb1_r)); i8279_kb1.in_ctrl_callback().set(FUNC(goupil_g1_state::ctrl_kb1_r)); i8279_kb1.out_irq_callback().set(m_via_keyb, FUNC(via6522_device::write_ca1)); i8279_device &i8279_kb2(I8279(config, "i8279_kb2", CPU_CLOCK)); i8279_kb2.out_sl_callback().set(FUNC(goupil_g1_state::scanlines_kbd2_w)); // scan SL lines i8279_kb2.in_rl_callback().set(FUNC(goupil_g1_state::kbd2_r)); // kbd RL lines i8279_kb2.in_shift_callback().set_constant(1); i8279_kb2.in_ctrl_callback().set_constant(1); }
void altair_state::altair(machine_config &config) { /* basic machine hardware */ I8080(config, m_maincpu, 2_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &altair_state::mem_map); m_maincpu->set_addrmap(AS_IO, &altair_state::io_map); /* video hardware */ acia6850_device &acia(ACIA6850(config, "acia", 0)); acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); acia.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set("acia", FUNC(acia6850_device::write_rxd)); rs232.dcd_handler().set("acia", FUNC(acia6850_device::write_dcd)); rs232.cts_handler().set("acia", FUNC(acia6850_device::write_cts)); clock_device &uart_clock(CLOCK(config, "uart_clock", 153600)); // TODO: this is set using jumpers S3/S2/S1/S0 uart_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc)); uart_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc)); /* quickload */ QUICKLOAD(config, "quickload", 0).set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(altair_state, altair), this), "bin", 0); }
/* Devices */ mc6845_device &crtc(MC6845(config, "crtc", XTAL(18'869'600) / 8)); // clk unknown crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); crtc.set_update_row_callback(FUNC(mx2178_state::crtc_update_row), this); crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); clock_device &acia_clock(CLOCK(config, "acia_clock", XTAL(18'869'600) / 30)); acia_clock.signal_handler().set("acia1", FUNC(acia6850_device::write_txc)); acia_clock.signal_handler().append("acia1", FUNC(acia6850_device::write_rxc)); acia_clock.signal_handler().append("acia2", FUNC(acia6850_device::write_txc)); acia_clock.signal_handler().append("acia2", FUNC(acia6850_device::write_rxc)); acia6850_device &acia1(ACIA6850(config, "acia1", 0)); acia1.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd)); acia1.rts_handler().set("rs232a", FUNC(rs232_port_device::write_rts)); acia1.irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr)); rs232a.rxd_handler().set("acia1", FUNC(acia6850_device::write_rxd)); rs232a.cts_handler().set("acia1", FUNC(acia6850_device::write_cts)); acia6850_device &acia2(ACIA6850(config, "acia2", 0)); acia2.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd)); acia2.rts_handler().set("rs232b", FUNC(rs232_port_device::write_rts)); acia2.irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, "keyboard")); rs232b.rxd_handler().set("acia2", FUNC(acia6850_device::write_rxd));
void bitgraph_state::bg_motherboard(machine_config &config) { SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(40); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ m_screen->set_size(1024, 768); m_screen->set_visarea_full(); m_screen->set_screen_update(FUNC(bitgraph_state::screen_update)); m_screen->set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_txd)); m_acia0->rts_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_rts)); m_acia0->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232h(RS232_PORT(config, RS232_H_TAG, default_rs232_devices, "null_modem")); rs232h.rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd)); rs232h.dcd_handler().set(m_acia0, FUNC(acia6850_device::write_dcd)); rs232h.cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts)); ACIA6850(config, m_acia1, 0); m_acia1->txd_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_txd)); m_acia1->rts_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_rts)); m_acia1->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232k(RS232_PORT(config, RS232_K_TAG, default_rs232_devices, "keyboard")); rs232k.rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); rs232k.dcd_handler().set(m_acia1, FUNC(acia6850_device::write_dcd)); rs232k.cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts)); rs232k.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(kbd_rs232_defaults)); ACIA6850(config, m_acia2, 0); m_acia2->txd_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_txd)); m_acia2->rts_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_rts)); m_acia2->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232d(RS232_PORT(config, RS232_D_TAG, default_rs232_devices, nullptr)); rs232d.rxd_handler().set(m_acia2, FUNC(acia6850_device::write_rxd)); rs232d.dcd_handler().set(m_acia2, FUNC(acia6850_device::write_dcd)); rs232d.cts_handler().set(m_acia2, FUNC(acia6850_device::write_cts)); // XXX actual part may be something else COM8116(config, m_dbrga, 5.0688_MHz_XTAL); m_dbrga->fr_handler().set(FUNC(bitgraph_state::com8116_a_fr_w)); m_dbrga->ft_handler().set(FUNC(bitgraph_state::com8116_a_ft_w)); COM8116(config, m_dbrgb, 5.0688_MHz_XTAL); m_dbrgb->fr_handler().set(FUNC(bitgraph_state::com8116_b_fr_w)); m_dbrgb->ft_handler().set(FUNC(bitgraph_state::com8116_b_ft_w)); PIA6821(config, m_pia, 0); m_pia->readca1_handler().set(FUNC(bitgraph_state::pia_ca1_r)); m_pia->cb2_handler().set(FUNC(bitgraph_state::pia_cb2_w)); m_pia->readpa_handler().set(FUNC(bitgraph_state::pia_pa_r)); m_pia->writepa_handler().set(FUNC(bitgraph_state::pia_pa_w)); m_pia->readpb_handler().set(FUNC(bitgraph_state::pia_pb_r)); m_pia->writepb_handler().set(FUNC(bitgraph_state::pia_pb_w)); ER2055(config, m_earom, 0); SPEAKER(config, "mono").front_center(); AY8912(config, m_psg, XTAL(1'294'400)); m_psg->port_a_write_callback().set(FUNC(bitgraph_state::earom_write)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); }
void f1gp_state::f1gp(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &f1gp_state::f1gp_cpu1_map); m_maincpu->set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); m68000_device &sub(M68000(config, "sub", XTAL(20'000'000)/2)); /* verified on pcb */ sub.set_addrmap(AS_PROGRAM, &f1gp_state::f1gp_cpu2_map); sub.set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); Z80(config, m_audiocpu, XTAL(20'000'000)/4); /* verified on pcb */ m_audiocpu->set_addrmap(AS_PROGRAM, &f1gp_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &f1gp_state::sound_io_map); config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */ ACIA6850(config, m_acia, 0); m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3); m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now clock_device &acia_clock(CLOCK(config, "acia_clock", 1000000)); // guessed acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(f1gp_state::screen_update_f1gp)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_f1gp); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old[0], 0); m_spr_old[0]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<0>), this); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_pritype(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); m_spr_old[1]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<1>), this); m_spr_old[1]->set_gfx_region(2); m_spr_old[1]->set_pritype(2); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); K053936(config, m_k053936, 0); m_k053936->set_wrap(1); m_k053936->set_offsets(-58, -2); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); m_soundlatch->set_separate_acknowledge(true); ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(8'000'000))); ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(0, "lspeaker", 0.25); ymsnd.add_route(0, "rspeaker", 0.25); ymsnd.add_route(1, "lspeaker", 1.0); ymsnd.add_route(2, "rspeaker", 1.0); }
/* RS232 usage: mame can09t -window -debug -rs232 terminal */ ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); CLOCK(config, "acia_clock", CAN09T_ACIA_CLOCK).signal_handler().set(FUNC(can09t_state::write_acia_clock)); } #define CAN09_X1_CLOCK 22.1184_MHz_XTAL /* UKI 22118.40 Khz */ #define CAN09_CPU_CLOCK (CAN09_X1_CLOCK / 16) /* ~1.38MHz Divider needs to be check but is the most likelly */ void can09_state::can09(machine_config &config) { MC6809E(config, m_maincpu, CAN09_CPU_CLOCK); // MC68A09EP m_maincpu->set_addrmap(AS_PROGRAM, &can09_state::can09_map); /* RAM banks */ RAM(config, RAM_TAG).set_default_size("768K"); // CRTC init hd6845s_device &crtc(HD6845S(config, "crtc", CAN09_CPU_CLOCK)); // HD46505SP-1 (HD68A45SP) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); //crtc.set_update_row_callback(FUNC(can09_state::crtc_update_row), this); // not written yet /* Setup loop from data table in ROM: 0xFFCB 0xE020 (CRTC register number), 0xFFD0 0xE021 (CRTC register value) Reg Value Comment 0x00 0x55 Horizontal Total number of characters, 0x01 0x40 Horizontal Displayed number of characters 0x02 0x43 Horizontal Sync Position, character number 0x03 0x03 Horizontal Sync width, number of charcters 0x04 0x50 Vertical Total number of characters 0x05 0x09 Vertical Total Adjust number of characters 0x06 0x48 Vertical Displayed number of characters 0x07 0x4B Vertical Sync Position, character number 0x08 0x00 Interlace Mode/Scew, Non-Interlaced 0x09 0x03 Max Scan Line Address Register 0x0A 0x00 Cursor Start 0x0B 0x0A Cursor End 0x0C 0x00 Start Address hi 0x0D 0x00 Start Address lo 0x0E 0x00 Cursor hi 0x0F 0x00 Cursor lo Note - no init of Light Pen registers */ /* screen - totally faked value for now */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(50); screen.set_raw(4_MHz_XTAL / 2, 512, 0, 512, 576, 0, 576); screen.set_screen_update(FUNC(can09_state::screen_update)); screen.set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); /* Floppy */ WD1770(config, "wd1770", 8_MHz_XTAL); // TODO: Verify 8MHz UKI crystal assumed to be used #if 0 FLOPPY_CONNECTOR(config, "wd1770:0", candela_floppies, "3dd", floppy_image_device::default_floppy_formats); SOFTWARE_LIST(config, "flop3_list").set_original("candela"); #endif /* --PIA inits----------------------- */ PIA6821(config, m_pia1, 0); // CPU board m_pia1->readpa_handler().set(FUNC(can09_state::pia1_A_r)); m_pia1->writepa_handler().set(FUNC(can09_state::pia1_A_w)); m_pia1->readpb_handler().set(FUNC(can09_state::pia1_B_r)); m_pia1->writepb_handler().set(FUNC(can09_state::pia1_B_w)); m_pia1->cb2_handler().set(FUNC(can09_state::pia1_cb2_w)); /* 0xFF7D 0xE035 (PIA1 Control A) = 0x00 - Channel A IRQ disabled */ /* 0xFF81 0xE037 (PIA1 Control B) = 0x00 - Channel A IRQ disabled */ /* 0xFF85 0xE034 (PIA1 DDR A) = 0x1F - Port A mixed mode */ /* 0xFF89 0xE036 (PIA1 DDR B) = 0x79 - Port B mixed mode */ /* 0xFF8D 0xE035 (PIA1 Control A) = 0x04 - Channel A lock DDR */ /* 0xFF8F 0xE037 (PIA1 Control B) = 0x04 - Channel B lock DDR */ /* 0xFF93 0xE034 (PIA1 Port B) = 0x18 - Write Data on Port B */ #if 1 PIA6821(config, PIA2_TAG, 0); // CPU board ACIA6850(config, "acia1", 0); // CPU board ACIA6850(config, "acia2", 0); // CPU board #endif }
GFXDECODE_END void osborne1_state::osborne1(machine_config &config) { Z80(config, m_maincpu, MAIN_CLOCK/4); m_maincpu->set_addrmap(AS_PROGRAM, &osborne1_state::osborne1_mem); m_maincpu->set_addrmap(AS_OPCODES, &osborne1_state::osborne1_op); m_maincpu->set_addrmap(AS_IO, &osborne1_state::osborne1_io); m_maincpu->irqack_cb().set(FUNC(osborne1_state::irqack_w)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_color(rgb_t::green()); m_screen->set_screen_update(FUNC(osborne1_state::screen_update)); m_screen->set_raw(MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10); m_screen->set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_osborne1); PALETTE(config, "palette", palette_device::MONOCHROME_HIGHLIGHT); SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 1.00); PIA6821(config, m_pia0); m_pia0->readpa_handler().set(m_ieee, FUNC(ieee488_device::dio_r)); m_pia0->readpb_handler().set(FUNC(osborne1_state::ieee_pia_pb_r)); m_pia0->writepa_handler().set(m_ieee, FUNC(ieee488_device::host_dio_w)); m_pia0->writepb_handler().set(FUNC(osborne1_state::ieee_pia_pb_w)); m_pia0->ca2_handler().set(m_ieee, FUNC(ieee488_device::host_ifc_w)); m_pia0->cb2_handler().set(m_ieee, FUNC(ieee488_device::host_ren_w)); m_pia0->irqa_handler().set(FUNC(osborne1_state::ieee_pia_irq_a_func)); IEEE488(config, m_ieee, 0); m_ieee->srq_callback().set(m_pia0, FUNC(pia6821_device::ca2_w)); PIA6821(config, m_pia1); m_pia1->writepa_handler().set(FUNC(osborne1_state::video_pia_port_a_w)); m_pia1->writepb_handler().set(FUNC(osborne1_state::video_pia_port_b_w)); m_pia1->cb2_handler().set(FUNC(osborne1_state::video_pia_out_cb2_dummy)); m_pia1->irqa_handler().set(FUNC(osborne1_state::video_pia_irq_a_func)); ACIA6850(config, m_acia); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_acia->irq_handler().set(FUNC(osborne1_state::serial_acia_irq_func)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.dcd_handler().set(m_acia, FUNC(acia6850_device::write_dcd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); rs232.ri_handler().set(m_pia1, FUNC(pia6821_device::ca2_w)); MB8877(config, m_fdc, MAIN_CLOCK/16); m_fdc->set_force_ready(true); FLOPPY_CONNECTOR(config, m_floppy0, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, m_floppy1, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats); // internal ram RAM(config, RAM_TAG).set_default_size("68K"); // 64kB main RAM and 4kbit video attribute RAM SOFTWARE_LIST(config, "flop_list").set_original("osborne1"); }