From 98be6ede458f1da2a89ca036d5329e1e31fb2b15 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 25 Dec 2016 16:13:05 -0500 Subject: [PATCH] Shuffled a little to reduce risk of overflow, ensured writing is a loop, still seem to be writing too quickly for some reason. --- Components/1770/1770.cpp | 5 ++++- Storage/Disk/DiskController.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Components/1770/1770.cpp b/Components/1770/1770.cpp index 35c1d8c5b..8888bea69 100644 --- a/Components/1770/1770.cpp +++ b/Components/1770/1770.cpp @@ -626,7 +626,6 @@ void WD1770::posit_event(Event new_event_type) for(int b = 0; b < 16; b++) write_bit(!(b&1)); } -// printf("%d\n", counter); WAIT_FOR_EVENT(Event::DataWritten); distance_into_section_ = 0; @@ -637,7 +636,9 @@ void WD1770::posit_event(Event new_event_type) update_status([] (Status &status) { status.data_request = true; }); + printf("- %d\n", counter); WAIT_FOR_EVENT(Event::DataWritten); + printf("+ %d\n", counter); distance_into_section_++; if(distance_into_section_ == 128 << header_[3]) { @@ -652,6 +653,8 @@ void WD1770::posit_event(Event new_event_type) goto wait_for_command; } + goto type2_write_loop; + type2_write_crc: // TODO: write CRC and FF for(int b = 0; b < 48; b++) diff --git a/Storage/Disk/DiskController.cpp b/Storage/Disk/DiskController.cpp index 8507141bc..827d47b12 100644 --- a/Storage/Disk/DiskController.cpp +++ b/Storage/Disk/DiskController.cpp @@ -189,7 +189,7 @@ void Controller::set_expected_bit_length(Time bit_length) bit_length_ = bit_length; bit_length_.simplify(); - cycles_per_bit_ = Storage::Time(8000000) * (bit_length * rotational_multiplier_); + cycles_per_bit_ = Storage::Time(8000000) * (bit_length * rotational_multiplier_) * Storage::Time(clock_rate_multiplier_); cycles_per_bit_.simplify(); // this conversion doesn't need to be exact because there's a lot of variation to be taken