Thursday, October 13, 2016

Creating Cromemco IMD Dave Dunfield Image Disks

IMD or Image Disk is a disk format that is legendary to me and many others in the Vintage Computer community.  Some years ago Dave Dunfield  created the Image Disk IMD.COM program that is able to read diskettes at a very low sector level, determining things like sector gaps and saving this information into a file .IMD

This tool is use by countless people interested in preserving Diskette images in the Vintage computer environment.

Personally I have found it far superior to Catweasel and Kyroflux hardware diskette readers which I also expensively tried, but I always came back to Image Disk.

In order to create the IMD files you use Image Disk on a genuine IBM or strictly compatible PC.  You can use  the TestFDC compatibility checker  running under 16bit DOS to see if your hardware is compatible

My Setup
I use my original IBM PC XT 286 that I bought new, well some time ago.  It is modified to help with Cromemco diskette conversion in the following way

- RAM capacity is expanded, but actually this feature is not used as IMD.COM is a pure DOS program

- The Hard Disk controller has been replaced with one that has an IDE interface.  Then using an IDE to CF Compact Flash converter, it means that any images save to the PC hard disk  (which is actually a Compact Flash card) can be transferred by switching of the PC and inserting the CF card into a PC card reader

- The Graphics card is replaced by an ISA card with a VGA output so it can feed a standard modern Digital (i.e. not old PC Analog standard)   Computer screen

- The A drive is a standard 360K 5.25" diskette, not the 1.2MB diskette drive the computer came with.  This means I can directly image Cromemco 360K 5.25" diskette images as necessary

- The B: drive is a Marcus modified 3.5" diskette. In the PC config it is specified as a 5.25 High Density drive and this enables it to pass the BIOS startup without error.

In fact this drive is a 360 rpm fixed,  77 track, 8" drive emulator. The conversion is documented here

Objective of the Process
The objective is to save the exact information on the Cromemco Computer diskettes both in physical 8" pseudo drive (i.e. 3.5" format) but also to make an Image Copy of this diskette and save that, and also transfer the actual files onto my PC and Website for posterity, reference and examination

Overview of the Archive Process

  • The Cromemco computer is recabled to have at least one 8" physical drive and one physical 3.5" drive that pretends to be an 8" drive.  To remind you the conversion of the 3.5" drive is here.  The conversion relies on you converting a 3.5" floppy that has the Japanese mode 3 of operation.
  • The Cromemco computer is booted and conversion is undertaken in either CDOS or Cromix Operating systems corresponding to the diskette to be archived
  • CDOSgen may be need under CDOS to generate a new CDOS operating system with the correct diskette types.  It would be (of course) at least 2, 8" drives, since this is how it looks to the computer
  • On a running Cromemco computer: You make the copy of the 8" physical diskette onto the 3.5" diskette.  For bootable diskettes you must ensure to write the Operating system bootstrap to the first track of the floppy disk using the CDOS wrtsys or the Cromix wboot commands
  • Under Cromix you can use the readall command to most efficiently copy one diskette to another
  • You then use the IBM PC with Image Disk to make the image from the physical 3.5" diskette
  • Today the HxC emulator is also around.  This is a Diskette emulator using .hfe format files.   There is a utility to convert .IMD to .HFE so any Image Disk file created can be converted and then used in a HxC emulator.
  • So I have a HxC emulator on my main Cromemco system.  So this means any disk I have in .IMD format can be in seconds made into a .HFE file and used in the emulator.   Although that is true it's actually easier to manipulate physical 3.5 inch diskettes
IBM PC Pictures

Here is the special IDE Hard disk controller.  It is a very lucky thing that the Floppy part of this circuitry is still compatible with the original IBM PC, otherwise the IMD Image Disk Program would fail.

By Machine standards this disk controller is much younger than the PC.  This results in the hilarious fact that the Cache on the controller is larger than system memory!

Yes this is a genuine original IBM PC XT286 with Marcus modifications.   It is the days when IBM actually made x86 computers, in particular IBM Personal Computers.  

Starting Iand Using Image Disk
 IMD.COM started and I have a floppy disk 651 to image

Set Drive B parameters to 77 tracks and no dual stepping and to calculate the actual gaps on the diskette between sectors.  Also keep bad sectors, but in fact there must be none for a 100% usable diskette.

First you can test the RPM which should be 360 since my modified diskette is stuck at this non standard speed.  In Europe the speed is normally 300 rpm only.


Pressed R to read the diskette

 I put a comment into the image with more than enough information to identify exactly what the diskette is and use the 8 byte diskette label format.  This shows Cromix Large, Double Sided, Double Density, Single Tracking

 An example of a bad diskette.

There should not be any read errors.  So if they are it is back a lot of steps.  Basically you have to go back to the Cromemco and re create the 3.5" diskette from Scratch.  Well in other words,  don't create tens or hundreds of 3.5" diskette copies before then dismantling your 8" drive config!  Test the 3.5" copies as you go along

Okay we retry with a good disk number 651

 You will see this time the copy is being made without error.

IMD shows the critically awkward nature of the Cromemco Floppy disk for all to see and why hardly any other copying programs can make an image successfully

Track 0, Side 0 has a Single Density format of 26, 128 byte sectors.  Whereas all the other parts of the disk are 16 sectors x 512 bytes per track.

This is critically important.  Cromemco did this so that diskettes inserted into a computer with an earlier diskette controller could be read and known to be unreadable.  The first track could be read and it contains a label that show you the format of the rest of the diskette.

The floppy code reads this label and if for example you are using a 4FDC disk controller that can only read and write SD Single Density whereas the diskette is Double Density  (well all apart from Track 0 side 0) it will be able to print out a : Can read this double density diskette, error message.  Etcetera.

This was ingenious and clever at the time but has led to a continued nightmare for people trying to archive these diskettes, because disk copying programs, 99.999% of them expect a diskette to have constant format and usually density over the whole diskette.

Enough said!

 Okay the copy is finished without error

And here is the file that I created.

The HxC floppy emulator program is able to convert from a .IMD Image disk image either singly or in batch to a .HFE  HxC format

Technical Errata
Cromemco systems are for the most part Z80  (CDOS or Cromix Operating System), 68000 and 68010  Cromix or 68020 processor  with Cromix X Operating System.

I've found that physical 3.5" diskettes used on a 68020 Cromemco computer running Cromix 172XXU cannot be reliably read or written.  This is odd, because replacing the processor card only, and leaving all the hardware identical, and then booting with the regular 68000 (e.g. Cromix 168 or Cromix 162 levels) works perfectly.

I suspect a bug that will now never be corrected, since the OS source was never made public.

What is really bizarre however is that if the .IMD image is converted to a .HFE image and used on a HxC drive emulator, that works perfectly.  Hmm!

How Did I Do?
Over a period of 5 or so years my entire Cromemco catalog of over 700 disks had been imaged and is now online for Cromemco collectors.

I shall say it was a labour of love.  Whilst hard work it was never tedious and now it is digitised forever I can relax, well just a little.


TestFDC compatibility checker
Image Disk Download
DOS Widgets