dfitoimd: decoding Intel M2FM floppy flux images (was Re: Intel 432 floppy flux images for decoding)

Eric Smith spacewar at gmail.com
Sat Aug 6 18:12:45 CDT 2016


Because the cwtool support for Intel M2FM floppy disk flux images
isn't publicly available, I've written a crude Python 3 program for
converting such images (in DFI format) to ImageDisk images, and put it
on github:

    https://github.com/brouhaha/dfitoimd

My ADPLL data separator has parameters to control the proportions of
frequency adjustment and instantaneous phase adjustment that are done
at each flux transition. I've experimented with the parameters quite a
bit, but it's still not good enough to reliably recover all sectors
from the disk images that started this thread. The default parameters
are currently 0.5% frequency adjustment and 10% instantaneous phase
adjustment. I was actually fairly surprised that I didn't get better
results with more frequency adjustment and less instantaneous phase
adjustment. It's entirely possible that my algorithm isn't very good.

The code can handle normal IBM 3740 single-density FM format as well,
though there are other published programs that already do that.
There's a start at code for IBM System/34 double-density MFM format
also, but it hasn't been tested at all as I don't happen to have any
suitable DFI images.

The dfitoimd program is quite slow; on a typical Intel M2FM image with
two revolutions per track and 25 MHz sampling, it takes 64 seconds on
a 4.0 GHz AMD CPU. I'm pretty sure that rewriting it in C/C++/C# or
the like would make it much faster, but I specifically chose Python as
I find it easier to experiment with the algorithms.


More information about the cctech mailing list