diff options
author | Nigel Barnes <Pernod70@users.noreply.github.com> | 2018-11-20 20:22:32 +0000 |
---|---|---|
committer | Nigel Barnes <Pernod70@users.noreply.github.com> | 2018-11-20 21:55:05 +0000 |
commit | 7e3d87d6c124bfc3f51089b1fcc569faf2571bfa (patch) | |
tree | 842c9f8ea5af2655f57765e3b68150d6465cc5cd | |
parent | 3da383f37208f6ee5865ca202e9a9b494975aa9e (diff) |
amstr_pc: Machines have internal 3.5" floppy drive.
-rw-r--r-- | src/mame/drivers/amstr_pc.cpp | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp index 6788af70430..9b7ee939530 100644 --- a/src/mame/drivers/amstr_pc.cpp +++ b/src/mame/drivers/amstr_pc.cpp @@ -95,6 +95,7 @@ private: int m_dipstate; static void cfg_com(device_t *device); + static void cfg_fdc(device_t *device); void pc200_io(address_map &map); void pc2086_map(address_map &map); @@ -484,25 +485,37 @@ INPUT_PORTS_END // GFXDECODE_ENTRY( "gfx1", 0x0000, pc200_charlayout, 3, 1 ) // GFXDECODE_END -// has it's own mouse void amstrad_pc_state::cfg_com(device_t *device) { + /* has it's own mouse */ device = device->subdevice("serport0"); MCFG_SLOT_DEFAULT_OPTION(nullptr) } +void amstrad_pc_state::cfg_fdc(device_t *device) +{ + /* all machines have an internal 3.5" drive */ + auto fdc0 = dynamic_cast<device_slot_interface *>(device->subdevice("fdc:0")); + fdc0->set_default_option("35dd"); + fdc0->set_fixed(true); + + auto fdc1 = dynamic_cast<device_slot_interface *>(device->subdevice("fdc:1")); + fdc1->set_default_option("35dd"); +} + MACHINE_CONFIG_START(amstrad_pc_state::pc200) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8086, 8000000) - MCFG_DEVICE_PROGRAM_MAP(ppc640_map) - MCFG_DEVICE_IO_MAP(pc200_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb) + I8086(config, m_maincpu, 8000000); + m_maincpu->set_addrmap(AS_PROGRAM, amstrad_pc_state::ppc640_map); + m_maincpu->set_addrmap(AS_IO, amstrad_pc_state::pc200_io); + m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb)); MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu") // FIXME: determine ISA bus clock MCFG_DEVICE_ADD("aga", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "aga_pc200", true) MCFG_DEVICE_ADD("fdc", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", true) + MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_fdc) MCFG_DEVICE_ADD("com", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", true) MCFG_SLOT_OPTION_MACHINE_CONFIG("com", cfg_com) @@ -527,24 +540,25 @@ MACHINE_CONFIG_START(amstrad_pc_state::pc200) RAM(config, m_ram).set_default_size("640K").set_extra_options("512K"); MACHINE_CONFIG_END -MACHINE_CONFIG_START(amstrad_pc_state::pc2086) +void amstrad_pc_state::pc2086(machine_config &config) +{ pc200(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(pc2086_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_pc_state::pc2086_map); +} -MACHINE_CONFIG_START(amstrad_pc_state::ppc640) +void amstrad_pc_state::ppc640(machine_config &config) +{ pc200(config); - MCFG_DEVICE_REPLACE("maincpu", V30, 8000000) - MCFG_DEVICE_PROGRAM_MAP(ppc640_map) - MCFG_DEVICE_IO_MAP(ppc512_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb) + config.device_replace("maincpu", V30, 8000000); + m_maincpu->set_addrmap(AS_PROGRAM, amstrad_pc_state::ppc640_map); + m_maincpu->set_addrmap(AS_IO, amstrad_pc_state::ppc512_io); + m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb)); - MCFG_DEVICE_REMOVE("isa1") - MCFG_DEVICE_REMOVE("isa2") + config.device_remove("isa1"); + config.device_remove("isa2"); - MCFG_DEVICE_ADD("rtc", MC146818, 32.768_kHz_XTAL) -MACHINE_CONFIG_END + MC146818(config, "rtc", 32.768_kHz_XTAL); +} void amstrad_pc_state::ppc512(machine_config &config) { |