void c80_state::c80(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 2500000); /* U880D */ m_maincpu->set_addrmap(AS_PROGRAM, &c80_state::c80_mem); m_maincpu->set_addrmap(AS_IO, &c80_state::c80_io); m_maincpu->set_daisy_config(c80_daisy_chain); /* video hardware */ config.set_default_layout(layout_c80); /* devices */ Z80PIO(config, m_pio1, 2500000); m_pio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_pio1->in_pa_callback().set(FUNC(c80_state::pio1_pa_r)); m_pio1->out_pa_callback().set(FUNC(c80_state::pio1_pa_w)); m_pio1->out_pb_callback().set(FUNC(c80_state::pio1_pb_w)); m_pio1->out_brdy_callback().set(FUNC(c80_state::pio1_brdy_w)); z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(2500000))); pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); SPEAKER(config, "mono").front_center(); WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25); /* internal ram */ RAM(config, RAM_TAG).set_default_size("1K"); }
void vc4000_state::elektor(machine_config &config) { vc4000(config); m_maincpu->set_addrmap(AS_PROGRAM, &vc4000_state::elektor_mem); CASSETTE(config, "cassette"); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); }
void camplynx_state::lynx_common(machine_config &config) { PALETTE(config, m_palette, palette_device::RGB_3BIT); /* sound hardware */ SPEAKER(config, "speaker").front_center(); DAC_6BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.375); // unknown DAC VOLTAGE_REGULATOR(config, "vref").add_route(0, m_dac, 1.0, DAC_VREF_POS_INPUT).add_route(0, m_dac, -1.0, DAC_VREF_NEG_INPUT); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.02); }
void laser2001_state::lasr2001(machine_config &config) { // basic machine hardware M6502(config, m_maincpu, XTAL(17'734'470)/9); m_maincpu->set_addrmap(AS_PROGRAM, &laser2001_state::lasr2001_map); // devices PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(laser2001_state::pia_pa_r)); m_pia->readpb_handler().set(FUNC(laser2001_state::pia_pb_r)); m_pia->readca1_handler().set(FUNC(laser2001_state::pia_ca1_r)); m_pia->writepa_handler().set(FUNC(laser2001_state::pia_pa_w)); m_pia->writepb_handler().set(FUNC(laser2001_state::pia_pb_w)); m_pia->ca2_handler().set(FUNC(laser2001_state::pia_ca2_w)); m_pia->cb2_handler().set(FUNC(laser2001_state::pia_cb2_w)); CASSETTE(config, m_cassette); m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(FUNC(laser2001_state::write_centronics_busy)); OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); // video hardware tms9929a_device &vdp(TMS9929A(config, TMS9929_TAG, XTAL(10'738'635))); vdp.set_screen("screen"); vdp.set_vram_size(0x4000); vdp.int_callback().set_inputline(M6502_TAG, m6502_device::IRQ_LINE); SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); SN76489A(config, m_psg, XTAL(17'734'470)/9); m_psg->ready_cb().set(FUNC(laser2001_state::write_psg_ready)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); WAVE(config, "wave", m_cassette).add_route(1, "mono", 0.25); // cartridge CRVISION_CART_SLOT(config, m_cart, crvision_cart, nullptr); // internal ram RAM(config, m_ram); m_ram->set_default_size("16K"); m_ram->set_extra_options("32K"); // software list SOFTWARE_LIST(config, "cart_list").set_original("crvision"); SOFTWARE_LIST(config, "cart_list2").set_original("laser2001_cart"); }
void a5105_state::a5105(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(15'000'000) / 4); m_maincpu->set_addrmap(AS_PROGRAM, &a5105_state::a5105_mem); m_maincpu->set_addrmap(AS_IO, &a5105_state::a5105_io); m_maincpu->set_daisy_config(a5105_daisy_chain); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(50); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update)); m_screen->set_size(40*8, 32*8); m_screen->set_visarea(0, 40*8-1, 0, 25*8-1); GFXDECODE(config, m_gfxdecode, m_palette, gfx_a5105); PALETTE(config, m_palette, FUNC(a5105_state::a5105_palette), 16); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); BEEP(config, "beeper", 500).add_route(ALL_OUTPUTS, "mono", 0.50); /* Devices */ UPD7220(config, m_hgdc, XTAL(15'000'000) / 16); // unk clock m_hgdc->set_addrmap(0, &a5105_state::upd7220_map); m_hgdc->set_display_pixels(FUNC(a5105_state::hgdc_display_pixels)); m_hgdc->set_draw_text(FUNC(a5105_state::hgdc_draw_text)); z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(15'000'000) / 4)); ctc.intr_callback().set_inputline(m_maincpu, 0); ctc.zc_callback<0>().set("z80ctc", FUNC(z80ctc_device::trg2)); ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3)); z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4)); pio.in_pb_callback().set(FUNC(a5105_state::pio_pb_r)); pio.out_int_callback().set_inputline(m_maincpu, 0); CASSETTE(config, m_cass); UPD765A(config, m_fdc, 8'000'000, true, true); FLOPPY_CONNECTOR(config, "upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:3", a5105_floppies, "525qd", a5105_state::floppy_formats); /* internal ram */ RAM(config, RAM_TAG).set_default_size("64K"); }
void spectrum_state::spectrum_common(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, X1 / 4); /* This is verified only for the ZX Spectrum. Other clones are reported to have different clocks */ m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::spectrum_mem); m_maincpu->set_addrmap(AS_IO, &spectrum_state::spectrum_io); m_maincpu->set_addrmap(AS_OPCODES, &spectrum_state::spectrum_fetch); m_maincpu->set_vblank_int("screen", FUNC(spectrum_state::spec_interrupt)); config.m_minimum_quantum = attotime::from_hz(60); MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum ) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(X1 / 2, 448, 0, 352, 312, 0, 296); m_screen->set_screen_update(FUNC(spectrum_state::screen_update_spectrum)); m_screen->screen_vblank().set(FUNC(spectrum_state::screen_vblank_spectrum)); m_screen->set_palette("palette"); PALETTE(config, "palette", FUNC(spectrum_state::spectrum_palette), 16); GFXDECODE(config, "gfxdecode", "palette", gfx_spectrum); MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum) /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* expansion port */ SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, "kempjoy"); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); /* devices */ snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot")); snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(spectrum_state, spectrum), this), "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx"); quickload_image_device &quickload(QUICKLOAD(config, "quickload")); quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(spectrum_state, spectrum), this), "raw,scr", attotime::from_seconds(2)); // The delay prevents the screen from being cleared by the RAM test at boot CASSETTE(config, m_cassette); m_cassette->set_formats(tzx_cassette_formats); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); m_cassette->set_interface("spectrum_cass"); SOFTWARE_LIST(config, "cass_list").set_original("spectrum_cass"); }
void crvision_state::creativision(machine_config &config) { // basic machine hardware M6502(config, m_maincpu, XTAL(2'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &crvision_state::crvision_map); // devices PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(crvision_state::pia_pa_r)); m_pia->readpb_handler().set(FUNC(crvision_state::pia_pb_r)); m_pia->writepa_handler().set(FUNC(crvision_state::pia_pa_w)); m_pia->writepb_handler().set(SN76489_TAG, FUNC(sn76496_base_device::write)); CASSETTE(config, m_cassette); m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7)); INPUT_BUFFER(config, "cent_status_in", 0); OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); OUTPUT_LATCH(config, "cent_ctrl_out").bit_handler<4>().set(m_centronics, FUNC(centronics_device::write_strobe)); // sound hardware SPEAKER(config, "mono").front_center(); SN76489A(config, m_psg, XTAL(2'000'000)); m_psg->ready_cb().set(m_pia, FUNC(pia6821_device::cb1_w)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); WAVE(config, "wave", m_cassette).add_route(1, "mono", 0.25); // cartridge CRVISION_CART_SLOT(config, m_cart, crvision_cart, nullptr); // internal ram RAM(config, m_ram); m_ram->set_default_size("1K"); // main RAM m_ram->set_extra_options("15K"); // 16K expansion (lower 14K available only, upper 2K shared with BIOS ROM) // software lists SOFTWARE_LIST(config, "cart_list").set_original("crvision"); }
void tec1_state::tecjmon(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(3'579'545) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &tec1_state::tecjmon_map); m_maincpu->set_addrmap(AS_IO, &tec1_state::tecjmon_io); /* video hardware */ config.set_default_layout(layout_tec1); /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); /* Devices */ CASSETTE(config, m_cass); }
void pro80_state::pro80(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(4'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &pro80_state::pro80_mem); m_maincpu->set_addrmap(AS_IO, &pro80_state::pro80_io); /* video hardware */ config.set_default_layout(layout_pro80); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); /* Devices */ CASSETTE(config, m_cass); Z80PIO(config, "pio", XTAL(4'000'000) / 2); TIMER(config, "timer_p").configure_periodic(FUNC(pro80_state::timer_p), attotime::from_hz(40000)); // cass read }
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 instruct_state::instruct(machine_config &config) { /* basic machine hardware */ S2650(config, m_maincpu, XTAL(3'579'545) / 4); m_maincpu->set_addrmap(AS_PROGRAM, &instruct_state::mem_map); m_maincpu->set_addrmap(AS_IO, &instruct_state::io_map); m_maincpu->set_addrmap(AS_DATA, &instruct_state::data_map); m_maincpu->set_periodic_int(FUNC(instruct_state::t2l_int), attotime::from_hz(120)); m_maincpu->sense_handler().set(FUNC(instruct_state::sense_r)); m_maincpu->flag_handler().set(FUNC(instruct_state::flag_w)); /* video hardware */ config.set_default_layout(layout_instruct); /* quickload */ quickload_image_device &quickload(QUICKLOAD(config, "quickload")); quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(instruct_state, instruct), this), "pgm", attotime::from_seconds(1)); /* cassette */ CASSETTE(config, m_cass); SPEAKER(config, "mono").front_center(); WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); }
GFXDECODE_END void partner_state::partner(machine_config &config) { /* basic machine hardware */ I8080(config, m_maincpu, 16_MHz_XTAL / 9); m_maincpu->set_addrmap(AS_PROGRAM, &partner_state::partner_mem); auto &ppi1(I8255(config, "ppi8255_1")); ppi1.out_pa_callback().set(FUNC(radio86_state::radio86_8255_porta_w2)); ppi1.in_pb_callback().set(FUNC(radio86_state::radio86_8255_portb_r2)); ppi1.in_pc_callback().set(FUNC(radio86_state::radio86_8255_portc_r2)); ppi1.out_pc_callback().set(FUNC(radio86_state::radio86_8255_portc_w2)); auto &i8275(I8275(config, "i8275", 16_MHz_XTAL / 12)); i8275.set_character_width(6); i8275.set_display_callback(FUNC(partner_state::display_pixels), this); i8275.drq_wr_callback().set("dma8257", FUNC(i8257_device::dreq2_w)); /* video hardware */ auto &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_screen_update("i8275", FUNC(i8275_device::screen_update)); screen.set_refresh_hz(50); screen.set_size(78*6, 30*10); screen.set_visarea(0, 78*6-1, 0, 30*10-1); GFXDECODE(config, "gfxdecode", m_palette, gfx_partner); PALETTE(config, m_palette, FUNC(partner_state::radio86_palette), 3); SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); auto &dma8257(I8257(config, "dma8257", 16_MHz_XTAL / 9)); dma8257.out_hrq_cb().set(FUNC(partner_state::hrq_w)); dma8257.in_memr_cb().set(FUNC(partner_state::memory_read_byte)); dma8257.out_memw_cb().set(FUNC(partner_state::memory_write_byte)); dma8257.in_ior_cb<0>().set("wd1793", FUNC(fd1793_device::data_r)); dma8257.out_iow_cb<0>().set("wd1793", FUNC(fd1793_device::data_w)); dma8257.out_iow_cb<2>().set("i8275", FUNC(i8275_device::dack_w)); dma8257.set_reverse_rw_mode(true); auto &cassette(CASSETTE(config, "cassette")); cassette.set_formats(rkp_cassette_formats); cassette.set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); cassette.set_interface("partner_cass"); SOFTWARE_LIST(config, "cass_list").set_type("partner_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM); FD1793(config, "wd1793", 16_MHz_XTAL / 16); FLOPPY_CONNECTOR(config, "fd0", "525qd", FLOPPY_525_QD, true, floppy_formats); FLOPPY_CONNECTOR(config, "fd1", "525qd", FLOPPY_525_QD, true, floppy_formats); SOFTWARE_LIST(config, "flop_list").set_type("partner_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM); /* internal ram */ RAM(config, m_ram); m_ram->set_default_size("64K"); m_ram->set_default_value(0x00); }