Exemple #1
0
void selz80_state::selz80(machine_config &config)
{
	/* basic machine hardware */
	Z80(config, m_maincpu, XTAL(4'000'000)); // it's actually a 5MHz XTAL with a NEC uPD780C-1 cpu
	m_maincpu->set_addrmap(AS_PROGRAM, &selz80_state::selz80_mem);
	m_maincpu->set_addrmap(AS_IO, &selz80_state::selz80_io);
	MCFG_MACHINE_RESET_OVERRIDE(selz80_state, selz80 )

	/* video hardware */
	config.set_default_layout(layout_selz80);

	/* Devices */
	CLOCK(config, m_clock, 153600);
	m_clock->signal_handler().set("uart", FUNC(i8251_device::write_txc));
	m_clock->signal_handler().append("uart", FUNC(i8251_device::write_rxc));

	i8251_device &uart(I8251(config, "uart", 0));
	uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
	uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
	uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));

	rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
	rs232.rxd_handler().set("uart", FUNC(i8251_device::write_rxd));
	rs232.dsr_handler().set("uart", FUNC(i8251_device::write_dsr));
	rs232.cts_handler().set("uart", FUNC(i8251_device::write_cts));

	i8279_device &kbdc(I8279(config, "i8279", 5000000 / 2)); // based on divider
	kbdc.out_sl_callback().set(FUNC(selz80_state::scanlines_w));    // scan SL lines
	kbdc.out_disp_callback().set(FUNC(selz80_state::digit_w));      // display A&B
	kbdc.in_rl_callback().set(FUNC(selz80_state::kbd_r));           // kbd RL lines
	kbdc.in_shift_callback().set_constant(1);                       // Shift key
	kbdc.in_ctrl_callback().set_constant(1);
}
Exemple #2
0
void sdk85_state::sdk85(machine_config &config)
{
	/* basic machine hardware */
	I8085A(config, m_maincpu, 6.144_MHz_XTAL);
	m_maincpu->set_addrmap(AS_PROGRAM, &sdk85_state::sdk85_mem);
	m_maincpu->set_addrmap(AS_IO, &sdk85_state::sdk85_io);

	I8355(config, "romio", 6.144_MHz_XTAL / 2); // Monitor ROM (A14)

	I8355(config, "expromio", 6.144_MHz_XTAL / 2); // Expansion ROM (A15)

	i8155_device &i8155(I8155(config, "ramio", 6.144_MHz_XTAL / 2)); // Basic RAM (A16)
	i8155.out_to_callback().set_inputline(m_maincpu, I8085_TRAP_LINE);

	I8155(config, "expramio", 6.144_MHz_XTAL / 2); // Expansion RAM (A17)

	/* video hardware */
	config.set_default_layout(layout_sdk85);

	/* Devices */
	i8279_device &kdc(I8279(config, "kdc", 6.144_MHz_XTAL / 2));        // Keyboard/Display Controller (A13)
	kdc.out_irq_callback().set_inputline("maincpu", I8085_RST55_LINE);  // irq
	kdc.out_sl_callback().set(FUNC(sdk85_state::scanlines_w));          // scan SL lines
	kdc.out_disp_callback().set(FUNC(sdk85_state::digit_w));            // display A&B
	kdc.in_rl_callback().set(FUNC(sdk85_state::kbd_r));                 // kbd RL lines
	kdc.in_shift_callback().set_constant(1);                            // Shift key
	kdc.in_ctrl_callback().set_constant(1);
}
Exemple #3
0
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);
}
Exemple #4
0
void icecold_state::icecold(machine_config &config)
{
	/* basic machine hardware */
	MC6809E(config, m_maincpu, XTAL(6'000'000)/4); // 68A09E
	m_maincpu->set_addrmap(AS_PROGRAM, &icecold_state::icecold_map);

	pia6821_device &pia0(PIA6821(config, "pia0", 0));
	pia0.readpa_handler().set_ioport("JOY");
	pia0.readpb_handler().set_ioport("DSW3");
	pia0.irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE);
	pia0.irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE);

	PIA6821(config, m_pia1, 0);
	m_pia1->readpa_handler().set(FUNC(icecold_state::ay_r));
	m_pia1->writepa_handler().set(FUNC(icecold_state::ay_w));
	m_pia1->writepb_handler().set(FUNC(icecold_state::snd_ctrl_w));
	m_pia1->irqa_handler().set_inputline("maincpu", M6809_FIRQ_LINE);
	m_pia1->irqb_handler().set_inputline("maincpu", M6809_FIRQ_LINE);

	pia6821_device &pia2(PIA6821(config, "pia2", 0));
	pia2.irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE);
	pia2.irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE);

	i8279_device &kbdc(I8279(config, "i8279", XTAL(6'000'000)/4));
	kbdc.out_irq_callback().set("pia0", FUNC(pia6821_device::cb1_w));   // irq
	kbdc.out_sl_callback().set(FUNC(icecold_state::scanlines_w));       // scan SL lines
	kbdc.out_disp_callback().set(FUNC(icecold_state::digit_w));         // display A&B
	kbdc.in_rl_callback().set(FUNC(icecold_state::kbd_r));              // kbd RL lines

	// 30Hz signal from CH-C of ay0
	TIMER(config, "sint_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(icecold_state::icecold_sint_timer), this), attotime::from_hz(30));

	// for update motors position
	TIMER(config, "motors_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(icecold_state::icecold_motors_timer), this), attotime::from_msec(50));

	// video hardware
	config.set_default_layout(layout_icecold);

	// sound hardware
	SPEAKER(config, "mono").front_center();
	AY8910(config, m_ay8910[0], XTAL(6'000'000)/4);
	m_ay8910[0]->port_a_read_callback().set_ioport("DSW4");
	m_ay8910[0]->port_b_write_callback().set(FUNC(icecold_state::ay8910_0_b_w));
	m_ay8910[0]->add_route(ALL_OUTPUTS, "mono", 0.25);

	AY8910(config, m_ay8910[1], XTAL(6'000'000)/4);
	m_ay8910[1]->port_a_write_callback().set(FUNC(icecold_state::ay8910_1_a_w));
	m_ay8910[1]->port_b_write_callback().set(FUNC(icecold_state::ay8910_1_b_w));
	m_ay8910[1]->add_route(ALL_OUTPUTS, "mono", 0.25);
}
Exemple #5
0
	MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, maygay1b_state, m1_meter_w))
	MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(*this, maygay1b_state, m1_lockout_w))
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

	MCFG_DEVICE_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4)
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

	MCFG_DEVICE_ADD("msm6376", OKIM6376, 102400) //? Seems to work well with samples, but unconfirmed
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

	MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?

	i8279_device &kbdc(I8279(config, "i8279", M1_MASTER_CLOCK/4));      // unknown clock
	kbdc.out_sl_callback().set(FUNC(maygay1b_state::scanlines_w));      // scan SL lines
	kbdc.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_w));    // display A&B
	kbdc.in_rl_callback().set(FUNC(maygay1b_state::kbd_r));             // kbd RL lines

#ifndef USE_MCU
	// on M1B there is a 2nd i8279, on M1 / M1A a 8051 handles this task!
	i8279_device &kbdc2(I8279(config, "i8279_2", M1_MASTER_CLOCK/4));   // unknown clock
	kbdc2.out_sl_callback().set(FUNC(maygay1b_state::scanlines_2_w));   // scan SL lines
	kbdc2.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_2_w)); // display A&B
#endif

	REEL(config, m_reels[0], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
	m_reels[0]->optic_handler().set(FUNC(maygay1b_state::reel_optic_cb<0>));
	REEL(config, m_reels[1], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
	m_reels[1]->optic_handler().set(FUNC(maygay1b_state::reel_optic_cb<1>));
Exemple #6
0
	crtc.set_screen("screen");
	crtc.set_show_border_area(false);
	crtc.set_char_width(8);
	crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row), this);

	// sound hardware

	// devices
	pg685_module(config);

	MCFG_DEVICE_ADD("mainuart", I8251, XTAL(12'288'000) / 6) // divider guessed

	// rs232 port

	// keyboard
	i8279_device &kbdc(I8279(config, "kbdc", XTAL(12'288'000) / 6)); // divider guessed
	kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w));

	// printer

	// floppy
	// m_fdc->intrq_wr_callback(FUNC(zorba_state::fdc_intrq_w));
	// m_fdc->drq_wr_callback(FUNC(zorba_state::fdc_drq_w));
	FLOPPY_CONNECTOR(config, "fdc:0", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
	FLOPPY_CONNECTOR(config, "fdc:1", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);

MACHINE_CONFIG_END

MACHINE_CONFIG_START(pg685_state::pg685)
	// main cpu
	MCFG_DEVICE_ADD("maincpu", V20, XTAL(15'000'000) / 3)