Amiga users who aren't from the UK may be wondering what an Amiga 1500 is — it's just an Amiga 2000 with dual floppy drives, and a paper sticker over the nameplate on the front.
To be archived: two SCSI hard disks — including a virtual disk for a KCS PC emulator.
About this machine
This much-expanded machine came from a schoolfriend: it's got a GVP G-Force 030 accelerator and SCSI controller, with a hard disk and CD-ROM drive, and a KCS Power PC PC-XT emulator. The machine also came with a ProGrab 24RT framegrabber. Which is to say, it's basically the machine I dreamed of owning in the early 90s.
Here's what it looks like inside. The disk screwed to the GVP card is original; the other one I added when I got the machine.
The Power PC card is actually designed to work in an Amiga 500's trapdoor slot, and came with a Zorro adaptor:
You might wonder why I didn't use this machine for floppy imaging — it's because it doesn't have either an IDE interface or a network card, so there's no quick way to get data off it. The floppy drives are also in serious need of a clean.
Imaging the hard disks
I used ddrescue
to copy both hard disks to image files; no errors.
Getting the hard disk off the GVP card looked like it'd be a challenge
— fortunately, I had some nice long SCSI cables, so I didn't need
to.
Emulating the Amiga 1500
Bringing this disk image up in emulation doesn't work very well, since FS-UAE doesn't emulate all the peripherals this machine has:
Some driver tweaking would be necessary to fix that.
Extracting the data
The original drive, an IBM WDS-3200, has three partitions — two Amiga filesystems, and one for the PC emulator:
Disk a1500-hd1.ahd: 4 heads, 118 sectors, 1994 cylinders, RDB: 0
Logical Cylinders from 1 to 895, 241664 bytes/Cylinder
Device Boot Mount Begin End Size Pri BBlks System
a1500-hd1.ahd1 * * 1 130 30680 -50 0 Amiga FFS
a1500-hd1.ahd2 * * 131 720 139240 -51 0 Amiga FFS
a1500-hd1.ahd3 721 895 41300 -52 0 [unknown]
The Amiga partitions can be read with ADFlib's unadf
— but it
can't handle directory names with spaces in — it uses
system("mkdir foo")
to create directories!
A better option is to use Linux's affs
filesystem via a loopback
mount.
You can dd
the partitions out as separate files, or use the offset
and sizelimit
arguments to specify the location within the full image,
based on the information that amiga-fdisk
gave above.
For example, to mount the second partition, I did:
cylsize=241664
begin=131
end=720
offset=$(expr $begin \* $cylsize)
sizelimit=$(expr \( 1 + $end - $begin \) \* $cylsize)
mkdir mnt
mount -t affs -o ro,loop,offset=$offset,sizelimit=$sizelimit a1500-hd1.ahd mnt
Note that the partition size has to be absolutely correct (and End
above is inclusive) — the root directory is in the middle of the
filesystem, so affs
won't find it if it doesn't know how long the
filesystem is.
The system partition was pretty similar to my A1200. I'd set it up to load Kickstart 3.0 into fast RAM using skick, so it had Workbench 3 installed. (I should probably steal a set of 3.0 ROMs from one of my A1200s now that I've got some spares; it has 2.04 ROMs at the moment.)
The data partition included a collection of screenshots that I'd taken from TV with the ProGrab 24 in 1998 and 1999:
The PC emulator's partition starts like this (hexdump -C
):
00000000 33 fa 8e c0 bc d0 7c 00 f4 8b 07 50 1f 50 fc fb |3.....|....P.P..|
00000010 00 bf b9 06 01 00 a5 f2 1d ea 00 06 be 00 07 be |................|
00000020 04 b3 3c 80 74 80 80 0e 00 3c 1c 75 c6 83 fe 10 |..<.t....<.u....|
00000030 75 cb cd ef 8b 18 8b 14 02 4c ee 8b c6 83 fe 10 |u........L......|
00000040 74 cb 80 1a 00 3c f4 74 8b be ac 06 00 3c 0b 74 |t....<.t.....<.t|
00000050 bb 56 00 07 0e b4 10 cd eb 5e eb f0 bf fe 00 05 |.V.......^......|
00000060 00 bb b8 7c 02 01 cd 57 5f 13 0c 73 c0 33 13 cd |...|...W_..s.3..|
00000070 75 4f be ed 06 a3 d3 eb c2 be bf 06 7d fe 3d 81 |uO..........}.=.|
00000080 aa 55 c7 75 f5 8b 00 ea 00 7c 49 00 76 6e 6c 61 |.U.u.....|I.vnla|
00000090 64 69 70 20 72 61 69 74 69 74 6e 6f 74 20 62 61 |dip raititnot ba|
000000a0 65 6c 45 00 72 72 72 6f 6c 20 61 6f 69 64 67 6e |elE.rrrol aoidgn|
000000b0 6f 20 65 70 61 72 69 74 67 6e 73 20 73 79 65 74 |o eparitgns syet|
000000c0 00 6d 69 4d 73 73 6e 69 20 67 70 6f 72 65 74 61 |.miMssni gporeta|
000000d0 6e 69 20 67 79 73 74 73 6d 65 00 00 00 00 00 00 |ni gystsme......|
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
The mangled text suggests that this is a regular PC bootblock, just byteswapped ("Missing operating system"). So this partition contains a complete PC hard disk image, with a partition table.
dd
can extract it and swap it back:
dd if=a1500-hd1.ahd of=a1500-hd1p3.img bs=241664 skip=721 conv=swab
Then fdisk -l
will read the partition table:
Disk a1500-hd1p3.img: 42 MB, 42291200 bytes, 82600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
a1500-hd1p3.img1 * 59 65135 32538+ 4 FAT16 <32M
We could then either loopback-mount the partition as above, or use mtools to extract it:
secsize=512
start=59
offset=$(expr $secsize \* $start)
mdir -i a1500-hd1p3.img@@$offset
mcopy -spm -i a1500-hd1p3.img@@$offset :: pc-drive-contents
There wasn't much of mine on the PC emulator's drive, although it was nice to see some of the programs the previous owner had written again — several of us were getting into writing BBSs then...
The second hard disk was mostly empty; it only contained a bunch of DMS images of floppies that I'd read in July 2001, all of which I'd reread recently anyway.
It's probably a good thing I didn't discover this earlier:
having extracted the images with xDMS and compared them to the
ones I've just done, very few of them are identical.
This might be the result of dodgy floppy drives on the A1500, or it
might be DMS bugs.
In some cases it's just because I've imaged different copies of the
same disk — I have duplicates of many of the Amiga Format
coverdisks.
For example, AF15 I never had, so mine was a copy — and I'd
tweaked the startup-sequence
on it for some reason.
Fitting a bridgeboard
Having the A1500 apart gave me a chance to fit an extra expansion board: I'd had this Commodore A2286 "bridgeboard" sitting around for a while. Like the KCS Power PC board, this is a PC on a card — but it's got a 286 CPU, and it also connects to the (otherwise unused) ISA slots on the Amiga's motherboard. Along with a WD DP8390-based ISA Ethernet card, this should give me a proper network interface for this machine, if I can get it going...