diff --git a/Storage/Disk/DigitalPhaseLockedLoop.cpp b/Storage/Disk/DigitalPhaseLockedLoop.cpp index fc1dcd214..66ef529ac 100644 --- a/Storage/Disk/DigitalPhaseLockedLoop.cpp +++ b/Storage/Disk/DigitalPhaseLockedLoop.cpp @@ -61,8 +61,10 @@ void DigitalPhaseLockedLoop::post_phase_offset(int phase, int offset) { total_divisor += multiple; total_spacing += offset; } - window_length_ = total_spacing / total_divisor; - window_length_ = std::max(std::min(window_length_, clocks_per_bit_ + tolerance_), clocks_per_bit_ - tolerance_); + if(total_divisor) { + window_length_ = total_spacing / total_divisor; + window_length_ = std::max(std::min(window_length_, clocks_per_bit_ + tolerance_), clocks_per_bit_ - tolerance_); + } int error = phase - (window_length_ >> 1); diff --git a/Storage/Tape/Parsers/TapeParser.hpp b/Storage/Tape/Parsers/TapeParser.hpp index c46152337..422788ba7 100644 --- a/Storage/Tape/Parsers/TapeParser.hpp +++ b/Storage/Tape/Parsers/TapeParser.hpp @@ -160,7 +160,7 @@ template class PLLParser: /// Instantiates a new parser with the supplied @c tape. PLLParser(int clock_rate, int clocks_per_bit, int tolerance) : clock_rate_(clock_rate), - pll_(clocks_per_bit, tolerance, 3), + pll_(clocks_per_bit, tolerance, 15), input_bit_counter_(0), input_pattern_(0), was_high_(false) {