mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-19 23:29:05 +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* {
|
const auto encoder_at_rate = [&encoder, &segments](unsigned int rate) -> Storage::Encodings::MFM::Encoder* {
|
||||||
if(!encoder) {
|
if(!encoder) {
|
||||||
segments.emplace_back();
|
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);
|
encoder = Storage::Encodings::MFM::GetMFMEncoder(segments.back().data);
|
||||||
} else if(segments.back().length_of_a_bit.length != rate) {
|
} else if(segments.back().length_of_a_bit.length != rate) {
|
||||||
segments.emplace_back();
|
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);
|
encoder->reset_target(segments.back().data);
|
||||||
}
|
}
|
||||||
return encoder.get();
|
return encoder.get();
|
||||||
@ -276,7 +276,7 @@ class TrackConstructor {
|
|||||||
// assert(location->position >= track_position && location->position < track_data_.end());
|
// assert(location->position >= track_position && location->position < track_data_.end());
|
||||||
|
|
||||||
// Advance to location.position.
|
// 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) {
|
while(track_position < location->position) {
|
||||||
default_rate_encoder->add_byte(*track_position);
|
default_rate_encoder->add_byte(*track_position);
|
||||||
++track_position;
|
++track_position;
|
||||||
@ -333,7 +333,7 @@ class TrackConstructor {
|
|||||||
|
|
||||||
// Add a CRC only if it fits (TODO: crop if necessary?).
|
// Add a CRC only if it fits (TODO: crop if necessary?).
|
||||||
if(bytes_to_write & 127) {
|
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);
|
default_rate_encoder->add_crc((location->sector.status & 0x18) == 0x10);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user