Exemple #1
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 #2
0
GFXDECODE_END

/*************************************
 *
 *  Machine driver
 *
 *************************************/

void carpolo_state::carpolo(machine_config &config)
{
	/* basic machine hardware */
	M6502(config, m_maincpu, XTAL(11'289'000)/12); /* 940.75 kHz */
	m_maincpu->set_addrmap(AS_PROGRAM, &carpolo_state::main_map);

	pia6821_device &pia0(PIA6821(config, "pia0", 0));
	pia0.readpb_handler().set(FUNC(carpolo_state::pia_0_port_b_r));
	pia0.writepa_handler().set(FUNC(carpolo_state::pia_0_port_a_w));
	pia0.writepb_handler().set(FUNC(carpolo_state::pia_0_port_b_w));
	pia0.ca2_handler().set(FUNC(carpolo_state::coin1_interrupt_clear_w));
	pia0.cb2_handler().set(FUNC(carpolo_state::coin2_interrupt_clear_w));

	pia6821_device &pia1(PIA6821(config, "pia1", 0));
	pia1.readpa_handler().set(FUNC(carpolo_state::pia_1_port_a_r));
	pia1.readpb_handler().set(FUNC(carpolo_state::pia_1_port_b_r));
	pia1.ca2_handler().set(FUNC(carpolo_state::coin3_interrupt_clear_w));
	pia1.cb2_handler().set(FUNC(carpolo_state::coin4_interrupt_clear_w));

	TTL7474(config, m_ttl7474_2s_1, 0);
	m_ttl7474_2s_1->comp_output_cb().set(FUNC(carpolo_state::ttl7474_2s_1_q_cb));

	TTL7474(config, m_ttl7474_2s_2, 0);
	m_ttl7474_2s_2->comp_output_cb().set(FUNC(carpolo_state::ttl7474_2s_2_q_cb));

	TTL7474(config, m_ttl7474_2u_1, 0);
	m_ttl7474_2u_1->comp_output_cb().set(FUNC(carpolo_state::ttl7474_2u_1_q_cb));

	TTL7474(config, m_ttl7474_2u_2, 0);
	m_ttl7474_2u_2->comp_output_cb().set(FUNC(carpolo_state::ttl7474_2u_2_q_cb));

	TTL7474(config, m_ttl7474_1f_1, 0);
	TTL7474(config, m_ttl7474_1f_2, 0);
	TTL7474(config, m_ttl7474_1d_1, 0);
	TTL7474(config, m_ttl7474_1d_2, 0);
	TTL7474(config, m_ttl7474_1c_1, 0);
	TTL7474(config, m_ttl7474_1c_2, 0);
	TTL7474(config, m_ttl7474_1a_1, 0);
	TTL7474(config, m_ttl7474_1a_2, 0);

	TTL74148(config, m_ttl74148_3s, 0);
	m_ttl74148_3s->out_cb().set(FUNC(carpolo_state::ttl74148_3s_cb));

	TTL153(config, m_ttl74153_1k);
	m_ttl74153_1k->za_cb().set(FUNC(carpolo_state::ls153_za_w)); // pia1 pb5
	m_ttl74153_1k->zb_cb().set(FUNC(carpolo_state::ls153_zb_w)); // pia1 pb4

	/* video hardware */
	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
	screen.set_refresh_hz(60);
	screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
	screen.set_size(256, 256);
	screen.set_visarea(0, 239, 0, 255);
	screen.set_screen_update(FUNC(carpolo_state::screen_update));
	screen.screen_vblank().set(FUNC(carpolo_state::screen_vblank));
	screen.set_palette(m_palette);

	GFXDECODE(config, m_gfxdecode, m_palette, gfx_carpolo);
	PALETTE(config, m_palette, FUNC(carpolo_state::carpolo_palette), 12*2+2*16+4*2);
}