.IMD diskette image file recovery

Mark J. Blair nf6x at nf6x.net
Fri Feb 5 00:31:21 CST 2016

If you want raw data from an IMD file in some order other than the physical ordering on the original media, my Python package that I linked to previously may be helpful. It may also require some coding, but the supplied classes make it pretty easy for somebody with Python familiarity to access the contents of arbitrary sectors in a .IMD file.

Even without Python programming experience, the command-line utility that comes with the package makes it easy to take a .IMD file, remove sector interleave so that the physical and logical sector ordering are the same, and then write out a new .IMD file to be processed by any other .IMD-aware programs. For example, to convert "foo.imd" to a new file "bar.imd" with no sector interleave:

  imdutil.py --load foo.imd --interleave 0 --save bar.imd

It doesn't understand any filesystems - yet - but it may still be helpful. Documentation is admittedly lacking... the command-line utility has built-in help which can be accessed by the typical -h or --help arguments, and the classes have embedded docstrings which (savvy Python folks) can access with pydoc. And it has a unit test suite which I think tests it all out with reasonable thoroughness.

Here's the --help output from the included utility script, to give y'all an idea of what it does:

~% imdutil.py -h
usage: imdutil.py [-h] [-l FILENAME] [-s FILENAME] [-S] [-D] [-i SKIP]
                  [-k SECTOR_NUM] [-u C.H.S] [-U]

ImageDisk (.IMD) utility version 1.0.0a1
  Copyright (C) 2016 Mark J. Blair, released under GPLv3

Arguments are processed in the order encountered, with cumulative effects
upon the disk image buffer. The disk image buffer is discarded at program
exit. Arguments may be abbreviated.        

optional arguments:
  -h, --help            show this help message and exit
                        Load disk image buffer from file, replacing previous
                        buffer contents.
                        Save disk image buffer to file.
  -S, --summary         Print summary of image contents.
  -D, --details         Print detailed description of image contents.
  -i SKIP, --interleave SKIP
                        Interleave sectors with specified skip factor.
                        Rotate sector order to place sectors with specified
                        sector number after index pulse.
  -u C.H.S, --dumpsector C.H.S
                        Print hexadecimal dump of sector. Specify the sector
                        in cylinder.head.sector format. Use physical cylinder
                        and head numbers, and logical sector number.
  -U, --dumpall         Print hexadecimal dump of all sectors, in physical

  imdutil.py --load mydisk.imd --summary

Mark J. Blair, NF6X <nf6x at nf6x.net>

More information about the cctalk mailing list