redesign MFM decoding & add encoding #29
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The old implementation literally decoded MFM on the fly which was cool but irrelevant: we can store a track worth of flux on all the micros we care about, in addition to the decoded sector data.
So redo it based around the idea of holding the full track; and implement MFM writing.
MFM writing is only ever track-at-a-time and fully re-writes the track including all markers and timing.
The timing is not correct right now but it's good enough for the "05" test to read back what it wrote.Creating in draft form as the CI will be (justifiably) unhappy. I plan to rebase this code before pushing, so don't spend too much time on a detailed line by line review yet