diff --git a/Machines/Acorn/Archimedes/FloppyDisc.hpp b/Machines/Acorn/Archimedes/FloppyDisc.hpp index f203f84d6..a60097f2c 100644 --- a/Machines/Acorn/Archimedes/FloppyDisc.hpp +++ b/Machines/Acorn/Archimedes/FloppyDisc.hpp @@ -16,7 +16,7 @@ template class FloppyDisc: public WD::WD1770, public WD::WD1770::Delegate { public: FloppyDisc(InterruptObserverT &observer) : WD::WD1770(P1772), observer_(observer) { - emplace_drives(1, 8000000, 300, 2, Storage::Disk::Drive::ReadyType::IBMRDY); // A guess at RDY type. + emplace_drives(1, 8000000, 300, 2, Storage::Disk::Drive::ReadyType::ShugartModifiedRDY); // A guess at RDY type. set_delegate(this); } diff --git a/Machines/Acorn/Archimedes/InputOutputController.hpp b/Machines/Acorn/Archimedes/InputOutputController.hpp index ebaa1f1bc..6311a6fcc 100644 --- a/Machines/Acorn/Archimedes/InputOutputController.hpp +++ b/Machines/Acorn/Archimedes/InputOutputController.hpp @@ -202,7 +202,7 @@ struct InputOutputController: public ClockingHint::Observer { uint8_t value = control_ | 0xc0; value &= ~(i2c_.data() ? 0x01 : 0x00); value &= ~(i2c_.clock() ? 0x02 : 0x00); - value &= ~(floppy_.ready() ? 0x04 : 0x00); + value &= ~(floppy_.ready() ? 0x00 : 0x04); value &= ~(video_.flyback_active() ? 0x00 : 0x80); // i.e. high during flyback. set_byte(value); // logger.error().append("IOC control read: C:%d D:%d", !(value & 2), !(value & 1)); diff --git a/Storage/Disk/Controller/DiskController.hpp b/Storage/Disk/Controller/DiskController.hpp index ae7fbe163..a1a1a4a39 100644 --- a/Storage/Disk/Controller/DiskController.hpp +++ b/Storage/Disk/Controller/DiskController.hpp @@ -122,6 +122,9 @@ class Controller: Drive &get_drive(size_t index) { return *drives_[index]; } + const Drive &get_drive(size_t index) const { + return *drives_[index]; + } void for_all_drives(const std::function &func) { size_t index = 0;