diff options
Diffstat (limited to 'src/devices/bus/electron/plus3.cpp')
-rw-r--r-- | src/devices/bus/electron/plus3.cpp | 25 |
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)); } |