.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.
-h, --help show this help message and exit
-l FILENAME, --load FILENAME
Load disk image buffer from file, replacing previous
-s FILENAME, --save FILENAME
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.
-k SECTOR_NUM, --skew SECTOR_NUM
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