Wow this was without a doubt one of the more confusing things I’ve ever done.
So here is the problem. I want to delete some files from an IMD disk image, and then copy some new ones in. Easy right? .. maybe.
Ok first up the easiest tool I’ve found to manipulate CP/M disk images is cpmtools. Even better their pre-compiled binary is for Win32, so I’ll run it with Wine on OS X. which works fine. Although there is one slight problem, cpmtools doesn’t read the IMD disk format. So you will have to download imd118.zip from a backup of the late author’s computer.
Now using IMD you need to convert the OS disk into a ‘raw’ or ‘binary’ file. Naturally IMD is a MS-DOS program so firing up DOSBox, I ran:
Uncompressing, so easy!
IMDU CPM68K12.IMD CPM.RAW /B
And a few seconds later I had my raw file. Now the next thing was to manipulate the image in cpmtools. cpmtools has a database of disk drive types, and naturally there is no definition for the SAGE2. However thanks to a friend of mine (hi Lorenzo!) I took at look at 22disk, and found their demo version did in-fact have a definition for the SAGE:
BEGIN SAG2 Sage IV – DSDD 96 tpi 5.25″
SIDE1 0 1,2,3,4,5,6,7,8
SIDE2 1 1,2,3,4,5,6,7,8
BSH 4 BLM 15 EXM 0 DSM 315 DRM 63 AL0 080H AL1 0 OFS 2
Which is great, however it took a bit of experimenting to work out how to format this information for cpmtools. I compared a bunch of known formats, and then managed to work this out:
And now I can look at the image file!
$ wine cpmls -f sage2 CPM68K12.RAW
So I tidy up the image, and copy it back to the IMD program for compressing. And this was, without a doubt the most difficult to figure out, until after a bunch of searching, and Lorenzo once more again pointed me in the direction of bin2imd
BIN2IMD X.RAW X.IMD DM=2 N=80 SS=512 SM=1-8 /2
And the best part is that it worked! So now I was able to transfer over a binary version of com.68k, com2.68k, along with Zork, and fire it up!
8080 Zork on 68k CP/M
Unfortunately the interpreter doesn’t work right. It could be the disk transfers fault, maybe the SIMH SAGE emulator, or even the 8080 emulator. But it worked this far.