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:
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 a 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″
DENSITY MFM,LOW
CYLINDERS 80
SIDES 2
SECTORS 8,512
SIDE1 0 1,2,3,4,5,6,7,8
SIDE2 1 1,2,3,4,5,6,7,8
ORDER SIDES
BSH 4 BLM 15 EXM 0 DSM 315 DRM 63 AL0 080H AL1 0 OFS 2
END
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:
diskdef sage2
seclen 512
tracks 160
sectrk 8
blocksize 2048
maxdir 128
skew 1
boottrk 2
os 2.2
end
And now I can look at the image file!
$ wine cpmls -f sage2 CPM68K12.RAW
0:
ar68.68k
armath.sub
as.sub
as68.68k
as68symb.dat
asgo.sub
brwnies.txt
copy.68k
core.sub
cpm.sys
ddt.68k
ddt68000.68k
dump.68k
e.sub
find.68k
halt.68k
init.68k
linkcore.sub
lnk.sub
lo68.68k
m.sub
mcc.sub
mince.68k
mince.swp
mind.sub
orbit.sub
p.sub
pe.sub
pip.68k
print.68k
red.sub
redasm.sub
sage4utl.68k
sagebios.sys
screen.68k
setenv.68k
setprntr.68k
sig.txt
space.sub
spacem.sub
startup.sub
stat.68k
tlnk.sub
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
So yeah.
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!
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.
There is a mistake in your cpmtools definition. The maxdir entry is DRM+1 = 64
versus 128. I’ve added the libdsk definition below for others that may need it.
# libdsk definition
[sag2]
description = SAG2 Sage IV – DSDD 96 tpi 5.25″ – 512 x 8
sides = alt
cylinders = 160
heads = 2
secsize = 512
sectors = 8
secbase = 1
datarate = DD
Once your directory listing is sane, you need to locate a large .ASM or .TXT file to extract and view it’s contents, for full content. If the skew is off, the listing may
not be sane or full content.
Otherwise THANKS for the info on BIN2IMD.
Larry
thanks! there may have been a fundamental reason my com2.68k may not have operated exactly correct.
ImageDisk URL is now
http://dunfield.classiccmp.org/img/
there you can find
v1.18 at
http://dunfield.classiccmp.org/img42841/imd118.zip
and v1.19 at
http://dunfield.classiccmp.org/img42841/imd119.zip