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); }
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); }