summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/electron
diff options
context:
space:
mode:
author Nigel Barnes <Pernod70@users.noreply.github.com>2016-11-19 17:32:48 +0000
committer Nigel Barnes <Pernod70@users.noreply.github.com>2016-11-19 17:41:02 +0000
commit88dd05acc5a716e71e8d04e1f0a3fceeab5d0432 (patch)
treee7f06c27471a6cc48afab3de718338f6354d4630 /src/devices/bus/electron
parent9feefb0ff7f2a5d28a5584e1a0f0f4bb17e14a52 (diff)
electron: added PRES ADFS versions to Plus3 expansion.
Diffstat (limited to 'src/devices/bus/electron')
-rw-r--r--src/devices/bus/electron/plus3.cpp34
-rw-r--r--src/devices/bus/electron/plus3.h1
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: