From 37815a982a570b3b05bdaca00c712867b1804b9a Mon Sep 17 00:00:00 2001 From: Thomas Harte <thomas.harte@gmail.com> Date: Fri, 13 Nov 2020 22:05:45 -0500 Subject: [PATCH] Much logging later, corrects 7Mhz IWM windows. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Confirmed by mathematics — the new ones are seven-eighths the length of the established 8Mhz windows — and with reference to suitable Apple documentation. --- Components/DiskII/IWM.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Components/DiskII/IWM.cpp b/Components/DiskII/IWM.cpp index 09d29f7f4..d1a404437 100644 --- a/Components/DiskII/IWM.cpp +++ b/Components/DiskII/IWM.cpp @@ -64,7 +64,7 @@ uint8_t IWM::read(int address) { if(data_register_ & 0x80) { data_register_ = 0; - LOG("Reading data: " << PADHEX(2) << int(result)); +// LOG("Reading data: " << PADHEX(2) << int(result)); } // LOG("Reading data register: " << PADHEX(2) << int(result)); @@ -136,8 +136,8 @@ void IWM::write(int address, uint8_t input) { } switch(mode_ & 0x18) { - case 0x00: bit_length_ = Cycles(24); break; // slow mode, 7Mhz - case 0x08: bit_length_ = Cycles(12); break; // fast mode, 7Mhz + case 0x00: bit_length_ = Cycles(28); break; // slow mode, 7Mhz + case 0x08: bit_length_ = Cycles(14); break; // fast mode, 7Mhz case 0x10: bit_length_ = Cycles(32); break; // slow mode, 8Mhz case 0x18: bit_length_ = Cycles(16); break; // fast mode, 8Mhz } @@ -256,6 +256,7 @@ void IWM::run_for(const Cycles cycles) { drives_[active_drive_]->run_for(Cycles(1)); ++cycles_since_shift_; if(cycles_since_shift_ == bit_length_ + error_margin) { +// LOG("Shifting 0 at " << std::dec << cycles_since_shift_.as_integral()); propose_shift(0); } } @@ -363,7 +364,7 @@ void IWM::process_event(const Storage::Disk::Drive::Event &event) { switch(event.type) { case Storage::Disk::Track::Event::IndexHole: return; case Storage::Disk::Track::Event::FluxTransition: - LOG("Shifting 1 at " << std::dec << cycles_since_shift_.as_integral()); +// LOG("Shifting 1 at " << std::dec << cycles_since_shift_.as_integral()); propose_shift(1); break; }