From efd684dc56207f4615c4dccc41ebb37889da1aae Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 16 Jan 2020 21:34:57 -0500 Subject: [PATCH] Opts the BD-500 in for modified Shugart RDY. Hopefully this is correct. I'm presently mystified as to other options. --- Machines/Oric/BD500.cpp | 2 +- Machines/Oric/DiskController.hpp | 7 ++++--- Machines/Oric/Jasmin.cpp | 2 +- Machines/Oric/Microdisc.cpp | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Machines/Oric/BD500.cpp b/Machines/Oric/BD500.cpp index e8c3df0b7..638870b33 100644 --- a/Machines/Oric/BD500.cpp +++ b/Machines/Oric/BD500.cpp @@ -10,7 +10,7 @@ using namespace Oric; -BD500::BD500() : DiskController(P1793, 9000000) { +BD500::BD500() : DiskController(P1793, 9000000, Storage::Disk::Drive::ReadyType::ShugartModifiedRDY) { disable_basic_rom_ = true; select_paged_item(); set_is_double_density(true); diff --git a/Machines/Oric/DiskController.hpp b/Machines/Oric/DiskController.hpp index 7ffa2614b..4bfa0e4d8 100644 --- a/Machines/Oric/DiskController.hpp +++ b/Machines/Oric/DiskController.hpp @@ -13,13 +13,13 @@ namespace Oric { class DiskController: public WD::WD1770 { public: - DiskController(WD::WD1770::Personality personality, int clock_rate) : - WD::WD1770(personality), clock_rate_(clock_rate) {} + DiskController(WD::WD1770::Personality personality, int clock_rate, Storage::Disk::Drive::ReadyType ready_type) : + WD::WD1770(personality), clock_rate_(clock_rate), ready_type_(ready_type) {} void set_disk(std::shared_ptr disk, int d) { const size_t drive = size_t(d); if(!drives_[drive]) { - drives_[drive] = std::make_unique(clock_rate_, 300, 2); + drives_[drive] = std::make_unique(clock_rate_, 300, 2, ready_type_); if(drive == selected_drive_) set_drive(drives_[drive]); } drives_[drive]->set_disk(disk); @@ -67,6 +67,7 @@ class DiskController: public WD::WD1770 { private: PagedItem paged_item_ = PagedItem::DiskROM; int clock_rate_; + Storage::Disk::Drive::ReadyType ready_type_; inline void set_paged_item(PagedItem item) { if(paged_item_ == item) return; diff --git a/Machines/Oric/Jasmin.cpp b/Machines/Oric/Jasmin.cpp index 502953364..7aec9f014 100644 --- a/Machines/Oric/Jasmin.cpp +++ b/Machines/Oric/Jasmin.cpp @@ -12,7 +12,7 @@ using namespace Oric; // NB: there's some controversy here on WD1770 versus WD1772, but between those two I think // the only difference is stepping rates, and it says 1770 on the schematic I'm looking at. -Jasmin::Jasmin() : DiskController(P1770, 8000000) { +Jasmin::Jasmin() : DiskController(P1770, 8000000, Storage::Disk::Drive::ReadyType::ShugartRDY) { set_is_double_density(true); select_paged_item(); } diff --git a/Machines/Oric/Microdisc.cpp b/Machines/Oric/Microdisc.cpp index 02ba46e4e..11c5e2e64 100644 --- a/Machines/Oric/Microdisc.cpp +++ b/Machines/Oric/Microdisc.cpp @@ -18,7 +18,7 @@ namespace { const Cycles::IntType head_load_request_counter_target = 7653333; } -Microdisc::Microdisc() : DiskController(P1793, 8000000) { +Microdisc::Microdisc() : DiskController(P1793, 8000000, Storage::Disk::Drive::ReadyType::ShugartRDY) { set_control_register(last_control_, 0xff); }