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