fluxtoimd icon indicating copy to clipboard operation
fluxtoimd copied to clipboard

Floppy disk flux transition to ImageDisk decoder

fluxtoimd.py is a Python 3 program to read floppy disk flux transitions images, demodulate the data, and write the data to an ImageDisk image file. DiscFerret (.dfi) images and ZIP files of KryoFlux Stream File images are supported as input.

Copyright © 2016 Eric Smith [email protected]

This program is free software: you can redistribute it and/or
modify it under the terms of version 3 of the GNU General Public
License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see
<http://www.gnu.org/licenses/>.

Currently fluxtoimd.py supports 8-inch floppy disks in the following formats:

  • IBM 3740 FM single-density (industry-standard single density as used by most floppy controllers)

  • Intel M2FM double-density 128 byte/sector format (used by SBC 202 floppy controller in Intel MDS 800/Series II/Series III development systems)

  • HP M2FM double-density 256 byte/sector format (used by HP 7902, 9885, 9895)

There is untested code to support the following formats:

  • IBM System/34 MFM double-density (industry standard double-density as used by most floppy controllers)

In principle the code should work with images of 5¼ inch and 3½ inch floppy disks, but that has not been tested.

USAGE:

To use with kryoflux to read Intel m2fm and fm disks (MDS/ISIS)

Read 8" single sided disk as stream file. Use -g2 to read double sided disks. This reads each track about five times to allow error recovery. ./dtc -fdirname/track -g0 -i0 -d0 -p -e76 -dd0

Zip up the output directory zip -rj filename.zip dirname/*

Process the files ./fluxtoimd -F ksf --intelm2fm filename.zip filename.imd -C "Description of disk"

Uncorrectable read errors will generate this message if all reads of sector had data CRC error *** BAD: track 21 sector 46

If the sector was not found or had header CRC error for all reads this error will be generated. *** BAD nodata: track 03 sector 26

Summary of errors are printed at the end of the conversion.

To extract the files with isisutils into a directory ./isis.py -x -d output_dir file.imd

To extract into a zip file ./isis.py -x -z output.zip file.imd

To view directory ./isis.py -v file.imd

For CP/M disks cpmtools can extract with this diskdef for double density disks.

# Intel MDS/22 8" Double Density
diskdef mds-dd
  seclen 128
  tracks 77
  sectrk 52
  blocksize 2048
  maxdir 128
  skew 0
  boottrk 2
  os 2.2
end

Untested single density
# Intel MDS/22 8" Single Density
diskdef mds-sd
  seclen 128
  tracks 77
  sectrk 26
  blocksize 1024
  maxdir 64
  skew 0
  boottrk 2
  os 2.2
end

For cpmtools the .imd files need to be converted to raw .img file. Libdsk can convert ./libdsk-1.5.12/tools/dskconv -otype raw filename.imd filename.img And disk utilities ./Disk-Utilities/disk-analyse/disk-analyse filename.imd filename.img

For directory ./cpmtools/cpmls -f mds-dd filename.img

To extract ./cpmcp -f mds-dd filename.img '0:*' output-directory