diff options
author | 2016-11-19 17:32:48 +0000 | |
---|---|---|
committer | 2016-11-19 17:41:02 +0000 | |
commit | 88dd05acc5a716e71e8d04e1f0a3fceeab5d0432 (patch) | |
tree | e7f06c27471a6cc48afab3de718338f6354d4630 /src/devices/bus/electron | |
parent | 9feefb0ff7f2a5d28a5584e1a0f0f4bb17e14a52 (diff) |
electron: added PRES ADFS versions to Plus3 expansion.
Diffstat (limited to 'src/devices/bus/electron')
-rw-r--r-- | src/devices/bus/electron/plus3.cpp | 34 | ||||
-rw-r--r-- | src/devices/bus/electron/plus3.h | 1 |
2 files changed, 22 insertions, 13 deletions
diff --git a/src/devices/bus/electron/plus3.cpp b/src/devices/bus/electron/plus3.cpp index d24cdaa014b..62f8e77f69a 100644 --- a/src/devices/bus/electron/plus3.cpp +++ b/src/devices/bus/electron/plus3.cpp @@ -37,9 +37,7 @@ FLOPPY_FORMATS_MEMBER(floppy_formats) FLOPPY_FORMATS_END0 SLOT_INTERFACE_START(electron_floppies) - SLOT_INTERFACE("35ssdd", FLOPPY_35_SSDD) SLOT_INTERFACE("35dd", FLOPPY_35_DD) - SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD) SLOT_INTERFACE("525sd", FLOPPY_525_SD) SLOT_INTERFACE("525dd", FLOPPY_525_DD) SLOT_INTERFACE("525qd", FLOPPY_525_QD) @@ -50,6 +48,7 @@ MACHINE_CONFIG_FRAGMENT( plus3 ) /* fdc */ MCFG_WD1770_ADD("fdc", XTAL_16MHz / 2) MCFG_FLOPPY_DRIVE_ADD("fdc:0", electron_floppies, "35dd", floppy_formats) + MCFG_SLOT_FIXED(true) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("fdc:1", electron_floppies, nullptr, floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) @@ -57,7 +56,7 @@ MACHINE_CONFIG_FRAGMENT( plus3 ) /* software lists */ MCFG_SOFTWARE_LIST_ADD("flop_ls", "electron_flop") - // pass-through + /* pass-through */ MCFG_ELECTRON_PASSTHRU_EXPANSION_SLOT_ADD(nullptr) MACHINE_CONFIG_END @@ -66,11 +65,16 @@ ROM_START( plus3 ) // Bank 4 Disc ROM_REGION(0x4000, "exp_rom", 0) ROM_DEFAULT_BIOS("adfs") - ROM_SYSTEM_BIOS(0, "adfs", "Acorn ADFS") + // ADFS + ROM_SYSTEM_BIOS(0, "adfs100", "Acorn ADFS 1.00") ROMX_LOAD("adfs.rom", 0x0000, 0x4000, CRC(3289bdc6) SHA1(e7c7a1094d50a3579751df2007269067c8ff6812), ROM_BIOS(1)) - - ROM_SYSTEM_BIOS(1, "dfs200", "Advanced 1770 DFS 2.00") - ROMX_LOAD("acp_dfs1770_200.rom", 0x0000, 0x4000, CRC(5a3a13c7) SHA1(d5dad7ab5a0237c44d0426cd85a8ec86545747e0), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(1, "adfs113", "PRES ADFS 1.13") + ROMX_LOAD("pres_adfs_113.rom", 0x0000, 0x4000, CRC(f06ca04a) SHA1(3c8221d63457c552aa2c9a502db632ce1dea66b4), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "adfs115", "PRES ADFS 1.15") + ROMX_LOAD("pres_adfs_115.rom", 0x0000, 0x4000, CRC(8f81edc3) SHA1(32007425058a7b0f8bd5c17b3c22552aa3a03eca), ROM_BIOS(3)) + // DFS + ROM_SYSTEM_BIOS(3, "dfs200", "Advanced 1770 DFS 2.00") + ROMX_LOAD("acp_dfs1770_200.rom", 0x0000, 0x4000, CRC(5a3a13c7) SHA1(d5dad7ab5a0237c44d0426cd85a8ec86545747e0), ROM_BIOS(4)) ROM_END //------------------------------------------------- @@ -115,8 +119,8 @@ void electron_plus3_device::device_start() address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM); m_slot = dynamic_cast<electron_expansion_slot_device *>(owner()); - space.install_write_handler(0xfcc0, 0xfcc3, WRITE8_DELEGATE(electron_plus3_device, wd1770_status_w)); - space.install_readwrite_handler(0xfcc4, 0xfccf, READ8_DEVICE_DELEGATE(m_fdc, wd1770_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_t, write)); + space.install_readwrite_handler(0xfcc0, 0xfcc0, READ8_DELEGATE(electron_plus3_device, wd1770_status_r), WRITE8_DELEGATE(electron_plus3_device, wd1770_status_w)); + space.install_readwrite_handler(0xfcc4, 0xfcc7, READ8_DEVICE_DELEGATE(m_fdc, wd1770_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_t, write)); } //------------------------------------------------- @@ -133,6 +137,12 @@ void electron_plus3_device::device_reset() // IMPLEMENTATION //************************************************************************** +READ8_MEMBER(electron_plus3_device::wd1770_status_r) +{ + return 0xff; +} + + WRITE8_MEMBER(electron_plus3_device::wd1770_status_w) { floppy_image_device *floppy = nullptr; @@ -140,8 +150,8 @@ WRITE8_MEMBER(electron_plus3_device::wd1770_status_w) m_drive_control = data; // bit 0, 1: drive select - if (BIT(data, 0)) floppy = m_fdc->subdevice<floppy_connector>("0")->get_device(); - if (BIT(data, 1)) floppy = m_fdc->subdevice<floppy_connector>("1")->get_device(); + if (BIT(data, 0)) floppy = m_floppy0->get_device(); + if (BIT(data, 1)) floppy = m_floppy1->get_device(); m_fdc->set_floppy(floppy); // bit 2: side select @@ -151,8 +161,6 @@ WRITE8_MEMBER(electron_plus3_device::wd1770_status_w) // bit 3: density m_fdc->dden_w(BIT(data, 3)); - // bit 4: interrupt enable? - // bit 5: reset if (!BIT(data, 5)) m_fdc->soft_reset(); } diff --git a/src/devices/bus/electron/plus3.h b/src/devices/bus/electron/plus3.h index f5a07585635..a16af3f370c 100644 --- a/src/devices/bus/electron/plus3.h +++ b/src/devices/bus/electron/plus3.h @@ -33,6 +33,7 @@ public: virtual machine_config_constructor device_mconfig_additions() const override; virtual const tiny_rom_entry *device_rom_region() const override; + DECLARE_READ8_MEMBER(wd1770_status_r); DECLARE_WRITE8_MEMBER(wd1770_status_w); protected: |