DEVICE_INPUT_DEFAULTS_END void genpc_state::pcmda(machine_config &config) { /* basic machine hardware */ I8088(config, m_maincpu, 4772720); m_maincpu->set_addrmap(AS_PROGRAM, &genpc_state::pc8_map); m_maincpu->set_addrmap(AS_IO, &genpc_state::pc8_io); m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb)); IBM5160_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu); ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "mda", false); // FIXME: determine ISA bus clock ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false); ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false); ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "hdc", false); ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, "adlib", false); ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false); /* keyboard */ PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K"); /* software lists */ SOFTWARE_LIST(config, "disk_list").set_original("ibm5150"); }
void pc1640_state::pc1640(machine_config &config) { I8086(config, m_maincpu, 24_MHz_XTAL / 3); m_maincpu->set_addrmap(AS_PROGRAM, &pc1640_state::pc1640_mem); m_maincpu->set_addrmap(AS_IO, &pc1640_state::pc1640_io); m_maincpu->set_irq_acknowledge_callback(I8259A2_TAG, FUNC(pic8259_device::inta_cb)); // sound SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.80); // devices PC1512_KEYBOARD(config, m_kb, 0); m_kb->clock_wr_callback().set(FUNC(pc1512_base_state::kbclk_w)); m_kb->data_wr_callback().set(FUNC(pc1512_base_state::kbdata_w)); pc1512_mouse_port_device &mouse(PC1512_MOUSE_PORT(config, PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse")); mouse.x_wr_callback().set(FUNC(pc1512_base_state::mouse_x_w)); mouse.y_wr_callback().set(FUNC(pc1512_base_state::mouse_y_w)); mouse.m1_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m1_w)); mouse.m2_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m2_w)); AM9517A(config, m_dmac, 24_MHz_XTAL / 6); m_dmac->out_hreq_callback().set(FUNC(pc1640_state::hrq_w)); m_dmac->out_eop_callback().set(FUNC(pc1640_state::eop_w)); m_dmac->in_memr_callback().set(FUNC(pc1640_state::memr_r)); m_dmac->out_memw_callback().set(FUNC(pc1640_state::memw_w)); m_dmac->in_ior_callback<1>().set(FUNC(pc1640_state::ior1_r)); m_dmac->in_ior_callback<2>().set(FUNC(pc1640_state::ior2_r)); m_dmac->in_ior_callback<3>().set(FUNC(pc1640_state::ior3_r)); m_dmac->out_iow_callback<0>().set(FUNC(pc1640_state::iow0_w)); m_dmac->out_iow_callback<1>().set(FUNC(pc1640_state::iow1_w)); m_dmac->out_iow_callback<2>().set(FUNC(pc1640_state::iow2_w)); m_dmac->out_iow_callback<3>().set(FUNC(pc1640_state::iow3_w)); m_dmac->out_dack_callback<0>().set(FUNC(pc1640_state::dack0_w)); m_dmac->out_dack_callback<1>().set(FUNC(pc1640_state::dack1_w)); m_dmac->out_dack_callback<2>().set(FUNC(pc1640_state::dack2_w)); m_dmac->out_dack_callback<3>().set(FUNC(pc1640_state::dack3_w)); PIC8259(config, m_pic, 0); m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); PIT8253(config, m_pit, 0); m_pit->set_clk<0>(28.636363_MHz_XTAL / 24); m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w)); m_pit->set_clk<1>(28.636363_MHz_XTAL / 24); m_pit->out_handler<1>().set(FUNC(pc1512_base_state::pit1_w)); m_pit->set_clk<2>(28.636363_MHz_XTAL / 24); m_pit->out_handler<2>().set(FUNC(pc1512_base_state::pit2_w)); MC146818(config, m_rtc, 32.768_kHz_XTAL); m_rtc->irq().set(m_pic, FUNC(pic8259_device::ir2_w)); PC_FDC_XT(config, m_fdc, 0); m_fdc->intrq_wr_callback().set(FUNC(pc1512_base_state::fdc_int_w)); m_fdc->drq_wr_callback().set(FUNC(pc1512_base_state::fdc_drq_w)); FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats); FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats); INS8250(config, m_uart, 1.8432_MHz_XTAL); m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); m_uart->out_dtr_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); m_uart->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->ack_handler().set(FUNC(pc1512_state::write_centronics_ack)); m_centronics->busy_handler().set(FUNC(pc1512_state::write_centronics_busy)); m_centronics->perror_handler().set(FUNC(pc1512_state::write_centronics_perror)); m_centronics->select_handler().set(FUNC(pc1512_state::write_centronics_select)); m_centronics->fault_handler().set(FUNC(pc1512_state::write_centronics_fault)); OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); rs232.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w)); rs232.dcd_handler().set(m_uart, FUNC(ins8250_uart_device::dcd_w)); rs232.dsr_handler().set(m_uart, FUNC(ins8250_uart_device::dsr_w)); rs232.ri_handler().set(m_uart, FUNC(ins8250_uart_device::ri_w)); rs232.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w)); // ISA8 bus isa8_device &isa(ISA8(config, ISA_BUS_TAG, 0)); isa.set_memspace(m_maincpu, AS_PROGRAM); isa.set_iospace(m_maincpu, AS_IO); isa.irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w)); isa.irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w)); isa.irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w)); isa.irq5_callback().set(m_pic, FUNC(pic8259_device::ir5_w)); isa.irq6_callback().set(m_pic, FUNC(pic8259_device::ir6_w)); isa.irq7_callback().set(m_pic, FUNC(pic8259_device::ir7_w)); isa.drq1_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq1_w)); isa.drq2_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq2_w)); isa.drq3_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq3_w)); ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock ISA8_SLOT(config, "isa2", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); ISA8_SLOT(config, "isa3", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); ISA8_SLOT(config, "isa4", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); ISA8_SLOT(config, "isa5", 0, ISA_BUS_TAG, pc1640_isa8_cards, "iga", false); // internal ram RAM(config, RAM_TAG).set_default_size("640K"); // software list SOFTWARE_LIST(config, "flop_list").set_original("pc1640_flop"); SOFTWARE_LIST(config, "hdd_list").set_original("pc1640_hdd"); }