Analyser: Generic MFM Support


Before the various recent distractions, we were working on generic hardware MFM support in our analyser, supporting media from a huge variety of platforms, such as the PC-8801, IBM-PC, Atari ST, and many many more. There are quite a few missing WIP’s that have not been posted on this work, but in the interests of keeping things current, we’ll post on our current progress.

Gap Analysation

Previously the gap analyser tried to completely understand data that may or may not be present in gaps and that requires extremely complicated code. It did work very well, but in some cases it decided to designate some random write splice, or unformatted area generated bits, as valid data. This happened under very specific circumstances, such as a write splice generating no loss of continuity in the recording - this is very unlikely, but does happen once in a while. While the presence of such data would not be harmful in an image, it wouldn’t represent the intended/mastering data content faithfully that IPFs are intended for.

Instead of working on trying to make everything magically work, we decided to go for a different solution. With the new approach, the analyser will assume there is nothing worthwhile in gaps after block data, unless:

  1. It recognises data as part of a script pattern.
  2. The data has at least one MFM mark - real controllers require 3 marks, but at least one would be used by a duplication system anyway.

Gap data between sector headers and sector data is always preserved as default. Should we find something that needs more it will be added as a new script pattern.

With this approach, we are now going to investigate how the dumps containing edge cases behave.

So what does this mean in practice? If it works, there may still be a small number of images that we won’t be releasing for a while as they wouldn’t work with this approach, but in the meantime we would be able to release anything else which should be 99+% of everything we have dumped.