Esempio n. 1
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");
}
Esempio n. 2
0
    machine_config( mtx512 )
-------------------------------------------------*/

MACHINE_CONFIG_START(mtx_state::mtx512)

	/* basic machine hardware */
	Z80(config, m_maincpu, XTAL(4'000'000));
	m_maincpu->set_addrmap(AS_PROGRAM, &mtx_state::mtx_mem);
	m_maincpu->set_addrmap(AS_IO, &mtx_state::mtx_io);
	m_maincpu->set_daisy_config(mtx_daisy_chain);

	MCFG_MACHINE_START_OVERRIDE(mtx_state,mtx512)
	MCFG_MACHINE_RESET_OVERRIDE(mtx_state,mtx512)

	/* video hardware */
	tms9929a_device &vdp(TMS9929A(config, "tms9929a", XTAL(10'738'635)));
	vdp.set_screen("screen");
	vdp.set_vram_size(0x4000);
	vdp.int_callback().set(FUNC(mtx_state::mtx_tms9929a_interrupt));
	SCREEN(config, "screen", SCREEN_TYPE_RASTER);

	/* sound hardware */
	SPEAKER(config, "mono").front_center();
	SN76489A(config, SN76489A_TAG, XTAL(4'000'000)).add_route(ALL_OUTPUTS, "mono", 1.00);

	/* devices */
	Z80CTC(config, m_z80ctc, XTAL(4'000'000));
	m_z80ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	m_z80ctc->zc_callback<1>().set(FUNC(mtx_state::ctc_trg1_w));
	m_z80ctc->zc_callback<2>().set(FUNC(mtx_state::ctc_trg2_w));
Esempio n. 3
0
void mtx_state::mtx512(machine_config &config)
{
	/* basic machine hardware */
	Z80(config, m_maincpu, 4_MHz_XTAL);
	m_maincpu->set_addrmap(AS_PROGRAM, &mtx_state::mtx_mem);
	m_maincpu->set_addrmap(AS_IO, &mtx_state::mtx_io);
	m_maincpu->set_daisy_config(mtx_daisy_chain);

	/* video hardware */
	tms9929a_device &vdp(TMS9929A(config, "tms9929a", 10.6875_MHz_XTAL));
	vdp.set_screen("screen");
	vdp.set_vram_size(0x4000);
	vdp.int_callback().set(FUNC(mtx_state::mtx_tms9929a_interrupt));
	SCREEN(config, "screen", SCREEN_TYPE_RASTER);

	/* sound hardware */
	SPEAKER(config, "mono").front_center();
	SN76489A(config, m_sn, 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.00);

	/* devices */
	Z80CTC(config, m_z80ctc, 4_MHz_XTAL);
	m_z80ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	m_z80ctc->zc_callback<1>().set(FUNC(mtx_state::ctc_trg1_w));
	m_z80ctc->zc_callback<2>().set(FUNC(mtx_state::ctc_trg2_w));

	TIMER(config, "z80ctc_timer").configure_periodic(FUNC(mtx_state::ctc_tick), attotime::from_hz(4_MHz_XTAL/13));

	CENTRONICS(config, m_centronics, centronics_devices, "printer");
	m_centronics->busy_handler().set(FUNC(mtx_state::write_centronics_busy));
	m_centronics->fault_handler().set(FUNC(mtx_state::write_centronics_fault));
	m_centronics->perror_handler().set(FUNC(mtx_state::write_centronics_perror));
	m_centronics->select_handler().set(FUNC(mtx_state::write_centronics_select));

	output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
	m_centronics->set_output_latch(cent_data_out);

	snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot"));
	snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(mtx_state, mtx), this), "mtx", attotime::from_seconds(1));
	quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
	quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mtx_state, mtx), this), "run", attotime::from_seconds(1));

	CASSETTE(config, m_cassette);
	m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
	m_cassette->set_interface("mtx_cass");

	TIMER(config, "cassette_timer").configure_periodic(FUNC(mtx_state::cassette_tick), attotime::from_hz(44100));

	/* internal ram */
	RAM(config, m_ram).set_default_size("64K").set_extra_options("96K,128K,192K,320K,448K,512K");

	/* rom extension board */
	GENERIC_SOCKET(config, m_extrom, generic_plain_slot, "mtx_rom", "bin,rom");
	m_extrom->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_extrom_load, this));

	/* rs232 board with disk drive bus */
	MTX_EXP_SLOT(config, m_exp, mtx_expansion_devices, nullptr);
	m_exp->set_program_space(m_maincpu, AS_PROGRAM);
	m_exp->set_io_space(m_maincpu, AS_IO);
	m_exp->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
	m_exp->busreq_handler().set_inputline(m_maincpu, Z80_INPUT_LINE_BUSRQ);

	/* cartridge slot */
	GENERIC_CARTSLOT(config, m_rompak, generic_plain_slot, "mtx_cart", "bin,rom");
	m_rompak->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_rompak_load, this));

	/* software lists */
	SOFTWARE_LIST(config, "cass_list").set_original("mtx_cass");
	SOFTWARE_LIST(config, "flop_list").set_original("mtx_flop");
	SOFTWARE_LIST(config, "cart_list").set_original("mtx_cart");
	SOFTWARE_LIST(config, "rom_list").set_original("mtx_rom");
}