summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit7e3d87d6c124bfc3f51089b1fcc569faf2571bfa (patch)
tree842c9f8ea5af2655f57765e3b68150d6465cc5cd
parent3da383f37208f6ee5865ca202e9a9b494975aa9e (diff)
amstr_pc: Machines have internal 3.5" floppy drive.
-rw-r--r--src/mame/drivers/amstr_pc.cpp50
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)
{