void s4_state::s4(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, 3580000); m_maincpu->set_addrmap(AS_PROGRAM, &s4_state::s4_main_map); TIMER(config, "irq").configure_periodic(FUNC(s4_state::irq), attotime::from_hz(250)); MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4) /* Video */ config.set_default_layout(layout_s4); /* Sound */ genpin_audio(config); /* Devices */ PIA6821(config, m_pia22, 0); m_pia22->writepa_handler().set(FUNC(s4_state::sol0_w)); m_pia22->writepb_handler().set(FUNC(s4_state::sol1_w)); m_pia22->ca2_handler().set(FUNC(s4_state::pia22_ca2_w)); m_pia22->cb2_handler().set(FUNC(s4_state::pia22_cb2_w)); m_pia22->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia22->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia24, 0); m_pia24->writepa_handler().set(FUNC(s4_state::lamp0_w)); m_pia24->writepb_handler().set(FUNC(s4_state::lamp1_w)); m_pia24->ca2_handler().set(FUNC(s4_state::pia24_ca2_w)); m_pia24->cb2_handler().set(FUNC(s4_state::pia24_cb2_w)); m_pia24->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia24->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia28, 0); m_pia28->readpa_handler().set(FUNC(s4_state::dips_r)); m_pia28->readca1_handler().set(FUNC(s4_state::pia28_ca1_r)); m_pia28->readcb1_handler().set(FUNC(s4_state::pia28_cb1_r)); m_pia28->writepa_handler().set(FUNC(s4_state::dig0_w)); m_pia28->writepb_handler().set(FUNC(s4_state::dig1_w)); m_pia28->ca2_handler().set(FUNC(s4_state::pia28_ca2_w)); m_pia28->cb2_handler().set(FUNC(s4_state::pia28_cb2_w)); m_pia28->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia28->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia30, 0); m_pia30->readpa_handler().set(FUNC(s4_state::switch_r)); m_pia30->writepb_handler().set(FUNC(s4_state::switch_w)); m_pia30->ca2_handler().set(FUNC(s4_state::pia30_ca2_w)); m_pia30->cb2_handler().set(FUNC(s4_state::pia30_cb2_w)); m_pia30->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_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); }
DEVICE_INPUT_DEFAULTS_END #endif /* Fake clock values until we TODO: figure out how the PTM generates the clocks */ #define CAN09T_BAUDGEN_CLOCK 1.8432_MHz_XTAL #define CAN09T_ACIA_CLOCK (CAN09T_BAUDGEN_CLOCK / 12) void can09t_state::can09t(machine_config &config) { MC6809(config, m_maincpu, 4.9152_MHz_XTAL); // IPL crystal m_maincpu->set_addrmap(AS_PROGRAM, &can09t_state::can09t_map); /* --PIA inits----------------------- */ PIA6821(config, m_syspia, 0); // CPU board m_syspia->readpa_handler().set(FUNC(can09t_state::syspia_A_r)); m_syspia->readpb_handler().set(FUNC(can09t_state::syspia_B_r)); m_syspia->writepb_handler().set(FUNC(can09t_state::syspia_B_w)); m_syspia->cb2_handler().set(FUNC(can09t_state::syspia_cb2_w)); /* 0xE1FB 0xB112 (SYSPIA Control A) = 0x00 - Channel A IRQ disabled */ /* 0xE1FB 0xB113 (SYSPIA Control B) = 0x00 - Channel B IRQ disabled */ /* 0xE203 0xB110 (SYSPIA DDR A) = 0x00 - Port A all inputs */ /* 0xE203 0xB111 (SYSPIA DDR B) = 0x7F - Port B mixed mode */ /* 0xE20A 0xB112 (SYSPIA Control A) = 0x05 - IRQ A enabled on falling transition on CA2 */ /* 0xE20A 0xB113 (SYSPIA Control B) = 0x34 - CB2 is low and lock DDRB */ /* 0xE20E 0xB111 (SYSPIA port B) = 0x10 - Data to port B */ PIA6821(config, m_usrpia, 0); // CPU board m_usrpia->cb2_handler().set(FUNC(can09t_state::usrpia_cb2_w)); /* 0xE212 0xB122 (USRPIA Control A) = 0x00 - Channel A IRQ disabled */ /* 0xE212 0xB123 (USRPIA Control B) = 0x00 - Channel B IRQ disabled */ /* 0xE215 0xB120 (USRPIA DDR A) = 0x00 - Port A all inputs */ /* 0xE215 0xB121 (USRPIA DDR B) = 0xFF - Port B all outputs */ /* 0xE21A 0xB122 (USRPIA Control A) = 0x34 - CA2 is low and lock DDRB */ /* 0xE21A 0xB123 (USRPIA Control B) = 0x34 - CB2 is low and lock DDRB */ PIA6821(config, m_pia3, 0); // ROM board PIA6821(config, m_pia4, 0); // ROM board PTM6840(config, "ptm", 0); /* RS232 usage: mame can09t -window -debug -rs232 terminal */ ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); CLOCK(config, "acia_clock", CAN09T_ACIA_CLOCK).signal_handler().set(FUNC(can09t_state::write_acia_clock)); }
void clowndwn_state::clowndwn(machine_config &config) { /* basic machine hardware */ M6802(config, m_maincpu, 8000000); // unknown type and clock m_maincpu->set_addrmap(AS_PROGRAM, &clowndwn_state::clowndwn_map); PIA6821(config, "pia0", 0); PIA6821(config, "pia1", 0); PIA6821(config, "pia2", 0); PIA6821(config, "pia3", 0); PIA6821(config, "pia4", 0); /* sound hardware */ SPEAKER(config, "mono").front_center(); }
void venture_sound_device::device_add_mconfig(machine_config &config) { m6502_device &audiocpu(M6502(config, "audiocpu", 3579545/4)); audiocpu.set_addrmap(AS_PROGRAM, &venture_sound_device::venture_audio_map); RIOT6532(config, m_riot, SH6532_CLOCK); m_riot->in_pa_callback().set(FUNC(venture_sound_device::r6532_porta_r)); m_riot->out_pa_callback().set(FUNC(venture_sound_device::r6532_porta_w)); m_riot->in_pb_callback().set(FUNC(venture_sound_device::r6532_portb_r)); m_riot->out_pb_callback().set(FUNC(venture_sound_device::r6532_portb_w)); m_riot->irq_callback().set("audioirq", FUNC(input_merger_device::in_w<0>)); PIA6821(config, m_pia, 0); m_pia->writepa_handler().set(FUNC(venture_sound_device::pia_pa_w)); m_pia->writepb_handler().set(FUNC(venture_sound_device::pia_pb_w)); m_pia->ca2_handler().set(FUNC(venture_sound_device::pia_ca2_w)); m_pia->cb2_handler().set(FUNC(venture_sound_device::pia_cb2_w)); m_pia->irqb_handler().set("audioirq", FUNC(input_merger_device::in_w<1>)); INPUT_MERGER_ANY_HIGH(config, "audioirq").output_handler().set_inputline("audiocpu", m6502_device::IRQ_LINE); // open collector SPEAKER(config, "mono").front_center(); this->add_route(ALL_OUTPUTS, "mono", 0.50); }
void bbc_mertec_device::device_add_mconfig(machine_config &config) { PIA6821(config, m_pia, DERIVED_CLOCK(1, 8)); //m_pia->readpb_handler().set("userport", FUNC(bbc_userport_slot_device::pb_r)); //m_pia->writepb_handler().set("userport", FUNC(bbc_userport_slot_device::pb_w)); //m_pia->irq_handler().set("irqs", FUNC(input_merger_device::in_w<0>)); /* adc */ UPD7002(config, m_upd7002, 0); m_upd7002->set_get_analogue_callback(FUNC(bbc_mertec_device::get_analogue_input), this); m_upd7002->set_eoc_callback(FUNC(bbc_mertec_device::upd7002_eoc), this); /* analogue port */ BBC_ANALOGUE_SLOT(config, m_analog, bbc_analogue_devices, nullptr); /* user port */ BBC_USERPORT_SLOT(config, m_userport, bbc_userport_devices, nullptr); //m_userport->cb1_handler().set(m_pia, FUNC(via6522_device::write_cb1)); //m_userport->cb2_handler().set(m_pia, FUNC(via6522_device::write_cb2)); /* 2mhz bus port */ BBC_1MHZBUS_SLOT(config, m_2mhzbus, DERIVED_CLOCK(1, 4), bbc_1mhzbus_devices, nullptr); m_2mhzbus->irq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_exp_slot_device::irq_w)); m_2mhzbus->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_exp_slot_device::nmi_w)); }
DEVICE_INPUT_DEFAULTS_END //------------------------------------------------- // device_add_mconfig - add device-specific // machine configuration //------------------------------------------------- void ss50_mpc_device::device_add_mconfig(machine_config &config) { PIA6821(config, m_pia, 0); // actually MC6820 m_pia->writepa_handler().set("outgate", FUNC(input_merger_device::in_w<0>)).bit(0); m_pia->cb2_handler().set(FUNC(ss50_mpc_device::reader_control_w)); m_pia->readpb_handler().set_ioport("STOP").mask(0x01).lshift(6); m_pia->readpb_handler().append(FUNC(ss50_mpc_device::count_r)).lshift(7); m_pia->writepb_handler().set(FUNC(ss50_mpc_device::count_select_w)).bit(2); m_pia->writepb_handler().append(m_counter, FUNC(ripple_counter_device::reset_w)).bit(0); //m_pia->irqa_handler().set(FUNC(ss50_mpc_device::pia_irq_w)); //m_pia->irqb_handler().set(FUNC(ss50_mpc_device::pia_irq_w)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(FUNC(ss50_mpc_device::serial_input_w)); rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); INPUT_MERGER_ALL_HIGH(config, "outgate").output_handler().set("rs232", FUNC(rs232_port_device::write_txd)); INPUT_MERGER_ANY_HIGH(config, m_loopback).output_handler().set("outgate", FUNC(input_merger_device::in_w<1>)); RIPPLE_COUNTER(config, m_counter); // CD4024AE (IC3) m_counter->set_stages(7); // only Q5 (÷32) and Q4 (÷16) are actually used }
void mekd2_state::mekd2(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, XTAL_MEKD2 / 2); /* 614.4 kHz */ m_maincpu->set_addrmap(AS_PROGRAM, &mekd2_state::mekd2_mem); config.set_default_layout(layout_mekd2); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); CASSETTE(config, m_cass); /* Devices */ PIA6821(config, m_pia_s, 0); m_pia_s->readpa_handler().set(FUNC(mekd2_state::mekd2_key_r)); m_pia_s->readcb1_handler().set(FUNC(mekd2_state::mekd2_key40_r)); m_pia_s->writepa_handler().set(FUNC(mekd2_state::mekd2_segment_w)); m_pia_s->writepb_handler().set(FUNC(mekd2_state::mekd2_digit_w)); m_pia_s->ca2_handler().set(FUNC(mekd2_state::mekd2_nmi_w)); m_pia_s->irqa_handler().set_inputline("maincpu", INPUT_LINE_NMI); m_pia_s->irqb_handler().set_inputline("maincpu", INPUT_LINE_NMI); PIA6821(config, m_pia_u, 0); m_pia_u->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); ACIA6850(config, m_acia, 0); m_acia->txd_handler().set(FUNC(mekd2_state::cass_w)); clock_device &acia_tx_clock(CLOCK(config, "acia_tx_clock", XTAL_MEKD2 / 256)); // 4800Hz acia_tx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); clock_device &acia_rx_clock(CLOCK(config, "acia_rx_clock", 300)); // toggled by cassette circuit acia_rx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_rxc)); TIMER(config, "mekd2_c").configure_periodic(FUNC(mekd2_state::mekd2_c), attotime::from_hz(4800)); TIMER(config, "mekd2_p").configure_periodic(FUNC(mekd2_state::mekd2_p), attotime::from_hz(40000)); QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mekd2_state, mekd2_quik), this), "d2", attotime::from_seconds(1)); }
void ob68k1a_state::ob68k1a(machine_config &config) { // basic machine hardware M68000(config, m_maincpu, 10_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &ob68k1a_state::ob68k1a_mem); // devices PIA6821(config, m_pia0, 0); PIA6821(config, m_pia1, 0); PTM6840(config, MC6840_TAG, 10_MHz_XTAL/10).set_external_clocks(0, 0, 0); ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(m_rs232a, FUNC(rs232_port_device::write_txd)); m_acia0->rts_handler().set(m_rs232a, FUNC(rs232_port_device::write_rts)); RS232_PORT(config, m_rs232a, default_rs232_devices, "terminal"); m_rs232a->rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd)); m_rs232a->dcd_handler().set(m_acia0, FUNC(acia6850_device::write_dcd)); m_rs232a->cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts)); ACIA6850(config, m_acia1, 0); m_acia1->txd_handler().set(m_rs232b, FUNC(rs232_port_device::write_txd)); m_acia1->rts_handler().set(m_rs232b, FUNC(rs232_port_device::write_rts)); RS232_PORT(config, m_rs232b, default_rs232_devices, nullptr); m_rs232b->rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); m_rs232b->dcd_handler().set(m_acia1, FUNC(acia6850_device::write_dcd)); m_rs232b->cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts)); COM8116(config, m_dbrg, 5.0688_MHz_XTAL); m_dbrg->fr_handler().set(m_acia0, FUNC(acia6850_device::write_txc)); m_dbrg->fr_handler().append(m_acia0, FUNC(acia6850_device::write_rxc)); m_dbrg->ft_handler().set(m_acia1, FUNC(acia6850_device::write_txc)); m_dbrg->ft_handler().append(m_acia1, FUNC(acia6850_device::write_rxc)); // internal ram RAM(config, m_ram, 0); m_ram->set_default_size("32K"); m_ram->set_extra_options("128K"); }
void laser2001_state::lasr2001(machine_config &config) { // basic machine hardware M6502(config, m_maincpu, XTAL(17'734'470)/9); m_maincpu->set_addrmap(AS_PROGRAM, &laser2001_state::lasr2001_map); // devices PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(laser2001_state::pia_pa_r)); m_pia->readpb_handler().set(FUNC(laser2001_state::pia_pb_r)); m_pia->readca1_handler().set(FUNC(laser2001_state::pia_ca1_r)); m_pia->writepa_handler().set(FUNC(laser2001_state::pia_pa_w)); m_pia->writepb_handler().set(FUNC(laser2001_state::pia_pb_w)); m_pia->ca2_handler().set(FUNC(laser2001_state::pia_ca2_w)); m_pia->cb2_handler().set(FUNC(laser2001_state::pia_cb2_w)); CASSETTE(config, m_cassette); m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(FUNC(laser2001_state::write_centronics_busy)); OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); // video hardware tms9929a_device &vdp(TMS9929A(config, TMS9929_TAG, XTAL(10'738'635))); vdp.set_screen("screen"); vdp.set_vram_size(0x4000); vdp.int_callback().set_inputline(M6502_TAG, m6502_device::IRQ_LINE); SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); SN76489A(config, m_psg, XTAL(17'734'470)/9); m_psg->ready_cb().set(FUNC(laser2001_state::write_psg_ready)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); WAVE(config, "wave", m_cassette).add_route(1, "mono", 0.25); // cartridge CRVISION_CART_SLOT(config, m_cart, crvision_cart, nullptr); // internal ram RAM(config, m_ram); m_ram->set_default_size("16K"); m_ram->set_extra_options("32K"); // software list SOFTWARE_LIST(config, "cart_list").set_original("crvision"); SOFTWARE_LIST(config, "cart_list2").set_original("laser2001_cart"); }
void midway_cheap_squeak_deluxe_device::device_add_mconfig(machine_config &config) { M68000(config, m_cpu, DERIVED_CLOCK(1, 2)); m_cpu->set_addrmap(AS_PROGRAM, &midway_cheap_squeak_deluxe_device::csdeluxe_map); PIA6821(config, m_pia, 0); m_pia->writepa_handler().set(FUNC(midway_cheap_squeak_deluxe_device::porta_w)); m_pia->writepb_handler().set(FUNC(midway_cheap_squeak_deluxe_device::portb_w)); m_pia->irqa_handler().set(FUNC(midway_cheap_squeak_deluxe_device::irq_w)); m_pia->irqb_handler().set(FUNC(midway_cheap_squeak_deluxe_device::irq_w)); AD7533(config, m_dac, 0).add_route(ALL_OUTPUTS, *this, 1.0); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
void bally_as3022_device::device_add_mconfig(machine_config &config) { M6808(config, m_cpu, DERIVED_CLOCK(1, 1)); m_cpu->set_addrmap(AS_PROGRAM, &bally_as3022_device::as3022_map); PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(bally_as3022_device::pia_porta_r)); m_pia->writepa_handler().set(FUNC(bally_as3022_device::pia_porta_w)); m_pia->writepb_handler().set(FUNC(bally_as3022_device::pia_portb_w)); m_pia->cb2_handler().set(FUNC(bally_as3022_device::pia_cb2_w)); m_pia->irqa_handler().set(FUNC(bally_as3022_device::irq_w)); m_pia->irqb_handler().set(FUNC(bally_as3022_device::irq_w)); AY8910(config, m_ay, DERIVED_CLOCK(1, 4)); m_ay->port_a_read_callback().set(FUNC(bally_as3022_device::ay_io_r)); m_ay->add_route(ALL_OUTPUTS, *this, 0.33, AUTO_ALLOC_INPUT, 0); }
void crvision_state::creativision(machine_config &config) { // basic machine hardware M6502(config, m_maincpu, XTAL(2'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &crvision_state::crvision_map); // devices PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(crvision_state::pia_pa_r)); m_pia->readpb_handler().set(FUNC(crvision_state::pia_pb_r)); m_pia->writepa_handler().set(FUNC(crvision_state::pia_pa_w)); m_pia->writepb_handler().set(SN76489_TAG, FUNC(sn76496_base_device::write)); CASSETTE(config, m_cassette); m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7)); INPUT_BUFFER(config, "cent_status_in", 0); OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); OUTPUT_LATCH(config, "cent_ctrl_out").bit_handler<4>().set(m_centronics, FUNC(centronics_device::write_strobe)); // sound hardware SPEAKER(config, "mono").front_center(); SN76489A(config, m_psg, XTAL(2'000'000)); m_psg->ready_cb().set(m_pia, FUNC(pia6821_device::cb1_w)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); WAVE(config, "wave", m_cassette).add_route(1, "mono", 0.25); // cartridge CRVISION_CART_SLOT(config, m_cart, crvision_cart, nullptr); // internal ram RAM(config, m_ram); m_ram->set_default_size("1K"); // main RAM m_ram->set_extra_options("15K"); // 16K expansion (lower 14K available only, upper 2K shared with BIOS ROM) // software lists SOFTWARE_LIST(config, "cart_list").set_original("crvision"); }
void s4_state::s4a(machine_config &config) { s4(config); /* Add the soundcard */ M6808(config, m_audiocpu, 3580000); m_audiocpu->set_addrmap(AS_PROGRAM, &s4_state::s4_audio_map); MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4a) SPEAKER(config, "speaker").front_center(); MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); PIA6821(config, m_pias, 0); m_pias->readpb_handler().set(FUNC(s4_state::sound_r)); m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE); m_pias->irqb_handler().set_inputline("audiocpu", M6808_IRQ_LINE); }
MCFG_DEVICE_ADD("maincpu", MC6809, M1_MASTER_CLOCK/2) // claimed to be 4 MHz MCFG_DEVICE_PROGRAM_MAP(m1_memmap) MCFG_DEVICE_ADD("mcu", I80C51, 2000000) // EP840034.A-P-80C51AVW MCFG_MCS51_PORT_P0_IN_CB(READ8(*this, maygay1b_state, mcu_port0_r)) MCFG_MCS51_PORT_P0_OUT_CB(WRITE8(*this, maygay1b_state, mcu_port0_w)) MCFG_MCS51_PORT_P1_OUT_CB(WRITE8(*this, maygay1b_state, mcu_port1_w)) MCFG_MCS51_PORT_P2_IN_CB(READ8(*this, maygay1b_state, mcu_port2_r)) MCFG_MCS51_PORT_P2_OUT_CB(WRITE8(*this, maygay1b_state, mcu_port2_w)) MCFG_MCS51_PORT_P3_OUT_CB(WRITE8(*this, maygay1b_state, mcu_port3_w)) MCFG_DEVICE_ADD("duart68681", MC68681, M1_DUART_CLOCK) MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, maygay1b_state, duart_irq_handler)) MCFG_MC68681_INPORT_CALLBACK(READ8(*this, maygay1b_state, m1_duart_r)) pia6821_device &pia(PIA6821(config, "pia", 0)); pia.writepa_handler().set(FUNC(maygay1b_state::m1_pia_porta_w)); pia.writepb_handler().set(FUNC(maygay1b_state::m1_pia_portb_w)); hc259_device &mainlatch(HC259(config, "mainlatch")); // U29 mainlatch.q_out_cb<0>().set(FUNC(maygay1b_state::ramen_w)); // m_RAMEN mainlatch.q_out_cb<1>().set(FUNC(maygay1b_state::alarmen_w)); // AlarmEn mainlatch.q_out_cb<2>().set(FUNC(maygay1b_state::nmien_w)); // Enable mainlatch.q_out_cb<3>().set(FUNC(maygay1b_state::rts_w)); // RTS mainlatch.q_out_cb<4>().set(FUNC(maygay1b_state::psurelay_w)); // PSURelay mainlatch.q_out_cb<5>().set(FUNC(maygay1b_state::wdog_w)); // WDog mainlatch.q_out_cb<6>().set(FUNC(maygay1b_state::srsel_w)); // Srsel S16LF01(config, m_vfd); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right();
void zorba_state::zorba(machine_config &config) { // basic machine hardware Z80(config, m_maincpu, 24_MHz_XTAL / 6); m_maincpu->set_addrmap(AS_PROGRAM, &zorba_state::zorba_mem); m_maincpu->set_addrmap(AS_IO, &zorba_state::zorba_io); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_color(rgb_t::green()); screen.set_refresh_hz(50); screen.set_screen_update("crtc", FUNC(i8275_device::screen_update)); GFXDECODE(config, "gfxdecode", m_palette, gfx_zorba); PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT); /* sound hardware */ SPEAKER(config, "mono").front_center(); BEEP(config, m_beep, 800).add_route(ALL_OUTPUTS, "mono", 1.00); // should be horizontal frequency / 16, so depends on CRTC parameters INPUT_MERGER_ANY_HIGH(config, "irq0").output_handler().set(FUNC(zorba_state::irq_w<0>)); INPUT_MERGER_ANY_HIGH(config, "irq1").output_handler().set(FUNC(zorba_state::irq_w<1>)); INPUT_MERGER_ANY_HIGH(config, "irq2").output_handler().set(FUNC(zorba_state::irq_w<2>)); /* devices */ Z80DMA(config, m_dma, 24_MHz_XTAL / 6); // busack on cpu connects to bai pin m_dma->out_busreq_callback().set(FUNC(zorba_state::busreq_w)); //connects to busreq on cpu m_dma->out_int_callback().set("irq0", FUNC(input_merger_device::in_w<0>)); //ba0 - not connected m_dma->in_mreq_callback().set(FUNC(zorba_state::memory_read_byte)); m_dma->out_mreq_callback().set(FUNC(zorba_state::memory_write_byte)); m_dma->in_iorq_callback().set(FUNC(zorba_state::io_read_byte)); m_dma->out_iorq_callback().set(FUNC(zorba_state::io_write_byte)); I8251(config, m_uart0, 0); // U32 COM port J2 m_uart0->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); // TODO: this line has a LED attached m_uart0->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); m_uart0->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_uart0->rxrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<1>)); m_uart0->txrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<0>)); I8251(config, m_uart1, 0); // U31 printer port J3 m_uart1->txd_handler().set("serprn", FUNC(rs232_port_device::write_txd)); m_uart1->rts_handler().set("serprn", FUNC(rs232_port_device::write_rts)); m_uart1->rxrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<3>)); m_uart1->txrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<2>)); I8251(config, m_uart2, 0); // U30 serial keyboard J6 m_uart2->txd_handler().set("keyboard", FUNC(zorba_keyboard_device::txd_w)); m_uart2->rxrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<5>)); m_uart2->txrdy_handler().set(FUNC(zorba_state::tx_rx_rdy_w<4>)); // port A - disk select etc, beeper // port B - parallel interface PIA6821(config, m_pia0, 0); m_pia0->writepa_handler().set(FUNC(zorba_state::pia0_porta_w)); m_pia0->writepb_handler().set("parprndata", FUNC(output_latch_device::bus_w)); m_pia0->cb2_handler().set("parprn", FUNC(centronics_device::write_strobe)); // IEEE488 interface PIA6821(config, m_pia1, 0); m_pia1->readpa_handler().set(m_ieee, FUNC(ieee488_device::dio_r)); // TODO: gated with PB1 m_pia1->writepa_handler().set(m_ieee, FUNC(ieee488_device::host_dio_w)); // TODO: gated with PB1 m_pia1->readpb_handler().set(FUNC(zorba_state::pia1_portb_r)); m_pia1->writepb_handler().set(FUNC(zorba_state::pia1_portb_w)); m_pia1->ca2_handler().set(m_ieee, FUNC(ieee488_device::host_ifc_w)); m_pia1->cb2_handler().set(m_ieee, FUNC(ieee488_device::host_ren_w)); m_pia1->irqa_handler().set("irq1", FUNC(input_merger_device::in_w<0>)); m_pia1->irqb_handler().set("irq1", FUNC(input_merger_device::in_w<1>)); // PIT pit8254_device &pit(PIT8254(config, "pit", 0)); pit.set_clk<0>(24_MHz_XTAL / 3); pit.set_clk<1>(24_MHz_XTAL / 3); pit.set_clk<2>(24_MHz_XTAL / 3); pit.out_handler<0>().set(FUNC(zorba_state::br1_w)); pit.out_handler<1>().set(m_uart1, FUNC(i8251_device::write_txc)); pit.out_handler<1>().append(m_uart1, FUNC(i8251_device::write_rxc)); pit.out_handler<2>().set(m_uart2, FUNC(i8251_device::write_txc)); pit.out_handler<2>().append(m_uart2, FUNC(i8251_device::write_rxc)); // CRTC I8275(config, m_crtc, 14.318'181_MHz_XTAL / 7); m_crtc->set_character_width(8); m_crtc->set_display_callback(FUNC(zorba_state::zorba_update_chr), this); m_crtc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w)); m_crtc->irq_wr_callback().set("irq0", FUNC(input_merger_device::in_w<1>)); m_crtc->set_screen("screen"); // Floppies FD1793(config, m_fdc, 24_MHz_XTAL / 24); m_fdc->intrq_wr_callback().set("irq2", FUNC(input_merger_device::in_w<0>)); m_fdc->drq_wr_callback().set("irq2", FUNC(input_merger_device::in_w<1>)); FLOPPY_CONNECTOR(config, m_floppy0, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true); FLOPPY_CONNECTOR(config, m_floppy1, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true); // J1 IEEE-488 IEEE488(config, m_ieee); m_ieee->srq_callback().set(m_pia1, FUNC(pia6821_device::ca2_w)); // TODO: gated with PB1 from PIA // J2 EIA RS232/internal modem // TODO: this has additional lines compared to a regular RS232 port (TxC in, RxC in, RxC out, speaker in, power) rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); rs232.rxd_handler().set(m_uart0, FUNC(i8251_device::write_rxd)); // TODO: this line has a LED attached rs232.cts_handler().set(m_uart0, FUNC(i8251_device::write_cts)); // TODO: this line has a LED attached rs232.dsr_handler().set(m_uart0, FUNC(i8251_device::write_dsr)); // J3 Parallel printer centronics_device &parprn(CENTRONICS(config, "parprn", centronics_devices, "printer")); parprn.busy_handler().set(m_uart1, FUNC(i8251_device::write_cts)); parprn.busy_handler().append(m_uart1, FUNC(i8251_device::write_dsr)); // TODO: shared with serial CTS parprn.fault_handler().set(FUNC(zorba_state::printer_fault_w)); parprn.select_handler().set(FUNC(zorba_state::printer_select_w)); output_latch_device &parprndata(OUTPUT_LATCH(config, "parprndata")); parprn.set_output_latch(parprndata); // J3 Serial printer rs232_port_device &serprn(RS232_PORT(config, "serprn", default_rs232_devices, nullptr)); serprn.rxd_handler().set(m_uart1, FUNC(i8251_device::write_rxd)); // TODO: this line has a LED attached // J6 TTL-level serial keyboard ZORBA_KEYBOARD(config, "keyboard").rxd_cb().set(m_uart2, FUNC(i8251_device::write_rxd)); SOFTWARE_LIST(config, "flop_list").set_original("zorba"); }
void s6_state::s6(machine_config &config) { /* basic machine hardware */ M6808(config, m_maincpu, 3580000); // 6802 or 6808 could be used here m_maincpu->set_addrmap(AS_PROGRAM, &s6_state::s6_main_map); MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6) /* Video */ config.set_default_layout(layout_s6); /* Sound */ genpin_audio(config); /* Devices */ PIA6821(config, m_pia22, 0); m_pia22->writepa_handler().set(FUNC(s6_state::sol0_w)); m_pia22->writepb_handler().set(FUNC(s6_state::sol1_w)); m_pia22->ca2_handler().set(FUNC(s6_state::pia22_ca2_w)); m_pia22->cb2_handler().set(FUNC(s6_state::pia22_cb2_w)); m_pia22->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia22->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia24, 0); m_pia24->writepa_handler().set(FUNC(s6_state::lamp0_w)); m_pia24->writepb_handler().set(FUNC(s6_state::lamp1_w)); m_pia24->ca2_handler().set(FUNC(s6_state::pia24_ca2_w)); m_pia24->cb2_handler().set(FUNC(s6_state::pia24_cb2_w)); m_pia24->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia24->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia28, 0); m_pia28->readpa_handler().set(FUNC(s6_state::dips_r)); m_pia28->writepa_handler().set(FUNC(s6_state::dig0_w)); m_pia28->writepb_handler().set(FUNC(s6_state::dig1_w)); m_pia28->ca2_handler().set(FUNC(s6_state::pia28_ca2_w)); m_pia28->cb2_handler().set(FUNC(s6_state::pia28_cb2_w)); m_pia28->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia28->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia30, 0); m_pia30->readpa_handler().set(FUNC(s6_state::switch_r)); m_pia30->writepb_handler().set(FUNC(s6_state::switch_w)); m_pia30->ca2_handler().set(FUNC(s6_state::pia30_ca2_w)); m_pia30->cb2_handler().set(FUNC(s6_state::pia30_cb2_w)); m_pia30->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia30->irqb_handler().set(FUNC(s6_state::pia_irq)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* Add the soundcard */ M6802(config, m_audiocpu, 3580000); m_audiocpu->set_addrmap(AS_PROGRAM, &s6_state::s6_audio_map); SPEAKER(config, "speaker").front_center(); MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); SPEAKER(config, "speech").front_center(); HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00); PIA6821(config, m_pias, 0); m_pias->readpb_handler().set(FUNC(s6_state::sound_r)); m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w)); m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w)); m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); // FIXME: needs an input merger m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); }
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); }
void bitgraph_state::bg_motherboard(machine_config &config) { SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(40); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ m_screen->set_size(1024, 768); m_screen->set_visarea_full(); m_screen->set_screen_update(FUNC(bitgraph_state::screen_update)); m_screen->set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); ACIA6850(config, m_acia0, 0); m_acia0->txd_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_txd)); m_acia0->rts_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_rts)); m_acia0->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232h(RS232_PORT(config, RS232_H_TAG, default_rs232_devices, "null_modem")); rs232h.rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd)); rs232h.dcd_handler().set(m_acia0, FUNC(acia6850_device::write_dcd)); rs232h.cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts)); ACIA6850(config, m_acia1, 0); m_acia1->txd_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_txd)); m_acia1->rts_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_rts)); m_acia1->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232k(RS232_PORT(config, RS232_K_TAG, default_rs232_devices, "keyboard")); rs232k.rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd)); rs232k.dcd_handler().set(m_acia1, FUNC(acia6850_device::write_dcd)); rs232k.cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts)); rs232k.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(kbd_rs232_defaults)); ACIA6850(config, m_acia2, 0); m_acia2->txd_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_txd)); m_acia2->rts_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_rts)); m_acia2->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1); rs232_port_device &rs232d(RS232_PORT(config, RS232_D_TAG, default_rs232_devices, nullptr)); rs232d.rxd_handler().set(m_acia2, FUNC(acia6850_device::write_rxd)); rs232d.dcd_handler().set(m_acia2, FUNC(acia6850_device::write_dcd)); rs232d.cts_handler().set(m_acia2, FUNC(acia6850_device::write_cts)); // XXX actual part may be something else COM8116(config, m_dbrga, 5.0688_MHz_XTAL); m_dbrga->fr_handler().set(FUNC(bitgraph_state::com8116_a_fr_w)); m_dbrga->ft_handler().set(FUNC(bitgraph_state::com8116_a_ft_w)); COM8116(config, m_dbrgb, 5.0688_MHz_XTAL); m_dbrgb->fr_handler().set(FUNC(bitgraph_state::com8116_b_fr_w)); m_dbrgb->ft_handler().set(FUNC(bitgraph_state::com8116_b_ft_w)); PIA6821(config, m_pia, 0); m_pia->readca1_handler().set(FUNC(bitgraph_state::pia_ca1_r)); m_pia->cb2_handler().set(FUNC(bitgraph_state::pia_cb2_w)); m_pia->readpa_handler().set(FUNC(bitgraph_state::pia_pa_r)); m_pia->writepa_handler().set(FUNC(bitgraph_state::pia_pa_w)); m_pia->readpb_handler().set(FUNC(bitgraph_state::pia_pb_r)); m_pia->writepb_handler().set(FUNC(bitgraph_state::pia_pb_w)); ER2055(config, m_earom, 0); SPEAKER(config, "mono").front_center(); AY8912(config, m_psg, XTAL(1'294'400)); m_psg->port_a_write_callback().set(FUNC(bitgraph_state::earom_write)); m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); }
void by133_state::babypac(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, XTAL(3'579'545)/4); // no xtal, just 2 chips m_maincpu->set_addrmap(AS_PROGRAM, &by133_state::main_map); MC6809(config, m_videocpu, XTAL(3'579'545)); m_videocpu->set_addrmap(AS_PROGRAM, &by133_state::video_map); M6803(config, m_audiocpu, XTAL(3'579'545)); m_audiocpu->set_addrmap(AS_PROGRAM, &by133_state::sound_map); m_audiocpu->out_p1_cb().set("dac", FUNC(dac_byte_interface::data_w)); // P10-P17 m_audiocpu->in_p2_cb().set(FUNC(by133_state::m6803_port2_r)); // P20-P24 sound command in m_audiocpu->out_p2_cb().set(FUNC(by133_state::m6803_port2_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); PIA6821(config, m_pia_u7, 0); m_pia_u7->readpa_handler().set(FUNC(by133_state::u7_a_r)); m_pia_u7->writepa_handler().set(FUNC(by133_state::u7_a_w)); m_pia_u7->readpb_handler().set(FUNC(by133_state::u7_b_r)); m_pia_u7->writepb_handler().set(FUNC(by133_state::u7_b_w)); m_pia_u7->ca2_handler().set(FUNC(by133_state::u7_ca2_w)); m_pia_u7->cb2_handler().set(FUNC(by133_state::u7_cb2_w)); m_pia_u7->irqa_handler().set_inputline("videocpu", M6809_FIRQ_LINE); m_pia_u7->irqa_handler().set_inputline("videocpu", M6809_FIRQ_LINE); PIA6821(config, m_pia_u10, 0); m_pia_u10->readpa_handler().set(FUNC(by133_state::u10_a_r)); m_pia_u10->writepa_handler().set(FUNC(by133_state::u10_a_w)); m_pia_u10->readpb_handler().set(FUNC(by133_state::u10_b_r)); m_pia_u10->writepb_handler().set(FUNC(by133_state::u10_b_w)); m_pia_u10->ca2_handler().set(FUNC(by133_state::u10_ca2_w)); m_pia_u10->cb2_handler().set(FUNC(by133_state::u10_cb2_w)); m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); TIMER(config, "babypac1").configure_periodic(FUNC(by133_state::u10_timer), attotime::from_hz(120)); // mains freq*2 PIA6821(config, m_pia_u11, 0); m_pia_u11->readpa_handler().set(FUNC(by133_state::u11_a_r)); m_pia_u11->writepa_handler().set(FUNC(by133_state::u11_a_w)); m_pia_u11->readpb_handler().set(FUNC(by133_state::u11_b_r)); m_pia_u11->writepb_handler().set(FUNC(by133_state::u11_b_w)); m_pia_u11->ca2_handler().set(FUNC(by133_state::u11_ca2_w)); m_pia_u11->cb2_handler().set(FUNC(by133_state::u11_cb2_w)); m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); TIMER(config, "babypac2").configure_periodic(FUNC(by133_state::u11_timer), attotime::from_hz(634)); // 555 timer*2 /* video hardware */ TMS9928A(config, m_crtc, XTAL(10'738'635)).set_screen("screen"); m_crtc->set_vram_size(0x4000); m_crtc->int_callback().set_inputline(m_videocpu, M6809_IRQ_LINE); SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "speaker").front_center(); ZN429E(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // U32 (Vidiot) or U6 (Cheap Squeak) voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); SPEAKER(config, "beee").front_center(); BEEP(config, m_beep, 600).add_route(ALL_OUTPUTS, "beee", 0.10); }
} /************************* * Machine Drivers * *************************/ MACHINE_CONFIG_START(jokrwild_state::jokrwild) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */ MCFG_DEVICE_PROGRAM_MAP(jokrwild_map) // NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); pia6821_device &pia0(PIA6821(config, "pia0", 0)); pia0.readpa_handler().set_ioport("IN0"); pia0.readpb_handler().set_ioport("IN1"); pia0.writepa_handler().set(FUNC(jokrwild_state::testa_w)); pia0.writepb_handler().set(FUNC(jokrwild_state::testb_w)); pia6821_device &pia1(PIA6821(config, "pia1", 0)); pia1.readpa_handler().set_ioport("IN2"); pia1.readpb_handler().set_ioport("IN3"); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) // From MC6845, registers 00 & 04. (value-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 26*8-1) // From MC6845, registers 01 & 06.
GFXDECODE_END void osborne1_state::osborne1(machine_config &config) { Z80(config, m_maincpu, MAIN_CLOCK/4); m_maincpu->set_addrmap(AS_PROGRAM, &osborne1_state::osborne1_mem); m_maincpu->set_addrmap(AS_OPCODES, &osborne1_state::osborne1_op); m_maincpu->set_addrmap(AS_IO, &osborne1_state::osborne1_io); m_maincpu->irqack_cb().set(FUNC(osborne1_state::irqack_w)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_color(rgb_t::green()); m_screen->set_screen_update(FUNC(osborne1_state::screen_update)); m_screen->set_raw(MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10); m_screen->set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_osborne1); PALETTE(config, "palette", palette_device::MONOCHROME_HIGHLIGHT); SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 1.00); PIA6821(config, m_pia0); m_pia0->readpa_handler().set(m_ieee, FUNC(ieee488_device::dio_r)); m_pia0->readpb_handler().set(FUNC(osborne1_state::ieee_pia_pb_r)); m_pia0->writepa_handler().set(m_ieee, FUNC(ieee488_device::host_dio_w)); m_pia0->writepb_handler().set(FUNC(osborne1_state::ieee_pia_pb_w)); m_pia0->ca2_handler().set(m_ieee, FUNC(ieee488_device::host_ifc_w)); m_pia0->cb2_handler().set(m_ieee, FUNC(ieee488_device::host_ren_w)); m_pia0->irqa_handler().set(FUNC(osborne1_state::ieee_pia_irq_a_func)); IEEE488(config, m_ieee, 0); m_ieee->srq_callback().set(m_pia0, FUNC(pia6821_device::ca2_w)); PIA6821(config, m_pia1); m_pia1->writepa_handler().set(FUNC(osborne1_state::video_pia_port_a_w)); m_pia1->writepb_handler().set(FUNC(osborne1_state::video_pia_port_b_w)); m_pia1->cb2_handler().set(FUNC(osborne1_state::video_pia_out_cb2_dummy)); m_pia1->irqa_handler().set(FUNC(osborne1_state::video_pia_irq_a_func)); ACIA6850(config, m_acia); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_acia->irq_handler().set(FUNC(osborne1_state::serial_acia_irq_func)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.dcd_handler().set(m_acia, FUNC(acia6850_device::write_dcd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); rs232.ri_handler().set(m_pia1, FUNC(pia6821_device::ca2_w)); MB8877(config, m_fdc, MAIN_CLOCK/16); m_fdc->set_force_ready(true); FLOPPY_CONNECTOR(config, m_floppy0, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, m_floppy1, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats); // internal ram RAM(config, RAM_TAG).set_default_size("68K"); // 64kB main RAM and 4kbit video attribute RAM SOFTWARE_LIST(config, "flop_list").set_original("osborne1"); }
/* RS232 usage: mame can09t -window -debug -rs232 terminal */ ACIA6850(config, m_acia, 0); m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); CLOCK(config, "acia_clock", CAN09T_ACIA_CLOCK).signal_handler().set(FUNC(can09t_state::write_acia_clock)); } #define CAN09_X1_CLOCK 22.1184_MHz_XTAL /* UKI 22118.40 Khz */ #define CAN09_CPU_CLOCK (CAN09_X1_CLOCK / 16) /* ~1.38MHz Divider needs to be check but is the most likelly */ void can09_state::can09(machine_config &config) { MC6809E(config, m_maincpu, CAN09_CPU_CLOCK); // MC68A09EP m_maincpu->set_addrmap(AS_PROGRAM, &can09_state::can09_map); /* RAM banks */ RAM(config, RAM_TAG).set_default_size("768K"); // CRTC init hd6845s_device &crtc(HD6845S(config, "crtc", CAN09_CPU_CLOCK)); // HD46505SP-1 (HD68A45SP) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); //crtc.set_update_row_callback(FUNC(can09_state::crtc_update_row), this); // not written yet /* Setup loop from data table in ROM: 0xFFCB 0xE020 (CRTC register number), 0xFFD0 0xE021 (CRTC register value) Reg Value Comment 0x00 0x55 Horizontal Total number of characters, 0x01 0x40 Horizontal Displayed number of characters 0x02 0x43 Horizontal Sync Position, character number 0x03 0x03 Horizontal Sync width, number of charcters 0x04 0x50 Vertical Total number of characters 0x05 0x09 Vertical Total Adjust number of characters 0x06 0x48 Vertical Displayed number of characters 0x07 0x4B Vertical Sync Position, character number 0x08 0x00 Interlace Mode/Scew, Non-Interlaced 0x09 0x03 Max Scan Line Address Register 0x0A 0x00 Cursor Start 0x0B 0x0A Cursor End 0x0C 0x00 Start Address hi 0x0D 0x00 Start Address lo 0x0E 0x00 Cursor hi 0x0F 0x00 Cursor lo Note - no init of Light Pen registers */ /* screen - totally faked value for now */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(50); screen.set_raw(4_MHz_XTAL / 2, 512, 0, 512, 576, 0, 576); screen.set_screen_update(FUNC(can09_state::screen_update)); screen.set_palette("palette"); PALETTE(config, "palette", palette_device::MONOCHROME); /* Floppy */ WD1770(config, "wd1770", 8_MHz_XTAL); // TODO: Verify 8MHz UKI crystal assumed to be used #if 0 FLOPPY_CONNECTOR(config, "wd1770:0", candela_floppies, "3dd", floppy_image_device::default_floppy_formats); SOFTWARE_LIST(config, "flop3_list").set_original("candela"); #endif /* --PIA inits----------------------- */ PIA6821(config, m_pia1, 0); // CPU board m_pia1->readpa_handler().set(FUNC(can09_state::pia1_A_r)); m_pia1->writepa_handler().set(FUNC(can09_state::pia1_A_w)); m_pia1->readpb_handler().set(FUNC(can09_state::pia1_B_r)); m_pia1->writepb_handler().set(FUNC(can09_state::pia1_B_w)); m_pia1->cb2_handler().set(FUNC(can09_state::pia1_cb2_w)); /* 0xFF7D 0xE035 (PIA1 Control A) = 0x00 - Channel A IRQ disabled */ /* 0xFF81 0xE037 (PIA1 Control B) = 0x00 - Channel A IRQ disabled */ /* 0xFF85 0xE034 (PIA1 DDR A) = 0x1F - Port A mixed mode */ /* 0xFF89 0xE036 (PIA1 DDR B) = 0x79 - Port B mixed mode */ /* 0xFF8D 0xE035 (PIA1 Control A) = 0x04 - Channel A lock DDR */ /* 0xFF8F 0xE037 (PIA1 Control B) = 0x04 - Channel B lock DDR */ /* 0xFF93 0xE034 (PIA1 Port B) = 0x18 - Write Data on Port B */ #if 1 PIA6821(config, PIA2_TAG, 0); // CPU board ACIA6850(config, "acia1", 0); // CPU board ACIA6850(config, "acia2", 0); // CPU board #endif }