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:


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 cctalk mailing list