2013-01-06 · in Media Archiving · 1219 words

Amiga 1500

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.

Amiga 1500 inside

The Power PC card is actually designed to work in an Amiga 500's trapdoor slot, and came with a Zorro adaptor:

KCS Power PC board

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.

Archiving the GVP hard disk

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:

Emulated A1500 not looking good Emulated A1500 crashed

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:

A friend on Fifteen to One, 1999-06-03 News at Ten, 1998-10-14 BBC Two trail, 1998-10-13

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...

Commodore A2286 bridgeboard WD DP8390 Ethernet board