summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/electron/plus3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/electron/plus3.cpp')
-rw-r--r--src/devices/bus/electron/plus3.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/devices/bus/electron/plus3.cpp b/src/devices/bus/electron/plus3.cpp
index 5996e357389..b378fc5d4cc 100644
--- a/src/devices/bus/electron/plus3.cpp
+++ b/src/devices/bus/electron/plus3.cpp
@@ -14,10 +14,11 @@
**********************************************************************/
-
#include "emu.h"
#include "plus3.h"
+#include "formats/acorn_dsk.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
@@ -27,14 +28,16 @@ DEFINE_DEVICE_TYPE(ELECTRON_PLUS3, electron_plus3_device, "electron_plus3", "Aco
//-------------------------------------------------
-// MACHINE_DRIVER( plus3 )
+// FLOPPY_FORMATS( plus3 )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER(electron_plus3_device::floppy_formats)
- FLOPPY_ACORN_SSD_FORMAT,
- FLOPPY_ACORN_DSD_FORMAT,
- FLOPPY_ACORN_ADFS_OLD_FORMAT
-FLOPPY_FORMATS_END0
+void electron_plus3_device::floppy_formats(format_registration &fr)
+{
+ fr.add_mfm_containers();
+ fr.add(FLOPPY_ACORN_SSD_FORMAT);
+ fr.add(FLOPPY_ACORN_DSD_FORMAT);
+ fr.add(FLOPPY_ACORN_ADFS_OLD_FORMAT);
+}
void electron_floppies(device_slot_interface &device)
{
@@ -43,6 +46,10 @@ void electron_floppies(device_slot_interface &device)
}
+//-------------------------------------------------
+// ROM( plus3 )
+//-------------------------------------------------
+
ROM_START( plus3 )
// Bank 4 Disc
ROM_REGION(0x4000, "exp_rom", 0)
@@ -158,7 +165,7 @@ void electron_plus3_device::expbus_w(offs_t offset, uint8_t data)
{
m_fdc->write(offset & 0x03, data);
}
- else if (offset == 0xfe05)
+ else if ((offset == 0xfe05) && !(data & 0xf0))
{
m_romsel = data & 0x0f;
}
@@ -188,5 +195,5 @@ void electron_plus3_device::wd1770_status_w(uint8_t data)
m_fdc->dden_w(BIT(data, 3));
// bit 5: reset
- if (!BIT(data, 5)) m_fdc->soft_reset();
+ m_fdc->mr_w(BIT(data, 5));
}