void mc1000_state::mc1000(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 3579545); m_maincpu->set_addrmap(AS_PROGRAM, &mc1000_state::mc1000_mem); m_maincpu->set_addrmap(AS_OPCODES, &mc1000_state::mc1000_banking_mem); m_maincpu->set_addrmap(AS_IO, &mc1000_state::mc1000_io); /* timers */ timer_device &ne555clear(TIMER(config, "ne555clear")); ne555clear.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ)); ne555clear.config_param(CLEAR_LINE); timer_device &ne555assert(TIMER(config, "ne555assert")); ne555assert.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ)); ne555assert.set_start_delay(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE)); ne555assert.config_param(ASSERT_LINE); /* video hardware */ SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER); MC6847_NTSC(config, m_vdg, XTAL(3'579'545)); m_vdg->hsync_wr_callback().set(FUNC(mc1000_state::hs_w)); m_vdg->fsync_wr_callback().set(FUNC(mc1000_state::fs_w)); m_vdg->input_callback().set(FUNC(mc1000_state::videoram_r)); m_vdg->set_screen(SCREEN_TAG); /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay8910(AY8910(config, AY8910_TAG, 3579545/2)); ay8910.set_flags(AY8910_SINGLE_OUTPUT); ay8910.set_resistors_load(RES_K(2.2), 0, 0); ay8910.port_b_read_callback().set(FUNC(mc1000_state::keydata_r)); ay8910.port_a_write_callback().set(FUNC(mc1000_state::keylatch_w)); ay8910.add_route(ALL_OUTPUTS, "mono", 0.25); /* devices */ CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->set_interface("mc1000_cass"); SOFTWARE_LIST(config, "cass_list").set_original("mc1000_cass"); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(FUNC(mc1000_state::write_centronics_busy)); output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out")); m_centronics->set_output_latch(latch); /* internal ram */ RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("48K"); }