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:
parent
84f5feab70
commit
c2bd5be51a
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user