示例#1
0
文件: c80.cpp 项目: PugsyMAME/mame
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");
}
示例#2
0
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);
}
示例#3
0
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);
}
示例#4
0
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");
}
示例#5
0
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");
}
示例#6
0
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");
}
示例#7
0
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");
}
示例#8
0
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);
}
示例#9
0
文件: pro80.cpp 项目: PugsyMAME/mame
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
}
示例#10
0
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));
}
示例#11
0
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);
}
示例#12
0
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);
}