GFXDECODE_END void c900_state::c900(machine_config &config) { /* basic machine hardware */ Z8001(config, m_maincpu, 12_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &c900_state::mem_map); m_maincpu->set_addrmap(AS_DATA, &c900_state::data_map); m_maincpu->set_addrmap(AS_IO, &c900_state::io_map); m_maincpu->set_addrmap(z8001_device::AS_SIO, &c900_state::special_io_map); M6508(config, m_fdcpu, 12_MHz_XTAL / 8); // PH1/PH2 = 1.5 MHz m_fdcpu->set_addrmap(AS_PROGRAM, &c900_state::fdc_map); GFXDECODE(config, "gfxdecode", "palette", gfx_c900); PALETTE(config, "palette", palette_device::MONOCHROME); z8036_device &cio(Z8036(config, "cio", 12_MHz_XTAL / 16)); // SNDCLK = 750kHz cio.pb_wr_cb().set(FUNC(c900_state::sound_pb_w)); scc8030_device &scc(SCC8030(config, "scc", 12_MHz_XTAL / 2)); // 5'850'000 is the ideal figure /* Port B */ scc.out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd)); scc.out_dtrb_callback().set("rs232", FUNC(rs232_port_device::write_dtr)); scc.out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts)); //scc.out_int_callback().set("rs232", FUNC(c900_state::scc_int)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set("scc", FUNC(scc8030_device::rxb_w)); rs232.cts_handler().set("scc", FUNC(scc8030_device::ctsb_w)); SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_spkrdev).add_route(ALL_OUTPUTS, "mono", 0.05); }
int main (int argc, char** argv) { ComputeHullIO cio(argc,argv); cio.execute(); cio.write_pcd(); return (0); }