1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-16 18:30:32 +00:00

This seems to be the proper interpretation of speeds?

This commit is contained in:
Thomas Harte 2020-01-19 20:42:51 -05:00
parent 84f5feab70
commit c2bd5be51a

View File

@ -259,11 +259,11 @@ class TrackConstructor {
const auto encoder_at_rate = [&encoder, &segments](unsigned int rate) -> Storage::Encodings::MFM::Encoder* {
if(!encoder) {
segments.emplace_back();
segments.back().length_of_a_bit = Storage::Time(int(rate), 1);
segments.back().length_of_a_bit = Storage::Time(int(rate + 1), 1);
encoder = Storage::Encodings::MFM::GetMFMEncoder(segments.back().data);
} else if(segments.back().length_of_a_bit.length != rate) {
segments.emplace_back();
segments.back().length_of_a_bit = Storage::Time(int(rate), 1);
segments.back().length_of_a_bit = Storage::Time(int(rate + 1), 1);
encoder->reset_target(segments.back().data);
}
return encoder.get();
@ -276,7 +276,7 @@ class TrackConstructor {
// assert(location->position >= track_position && location->position < track_data_.end());
// Advance to location.position.
auto default_rate_encoder = encoder_at_rate(128);
auto default_rate_encoder = encoder_at_rate(127);
while(track_position < location->position) {
default_rate_encoder->add_byte(*track_position);
++track_position;
@ -333,7 +333,7 @@ class TrackConstructor {
// Add a CRC only if it fits (TODO: crop if necessary?).
if(bytes_to_write & 127) {
default_rate_encoder = encoder_at_rate(128);
default_rate_encoder = encoder_at_rate(127);
default_rate_encoder->add_crc((location->sector.status & 0x18) == 0x10);
}
} break;