RetroChallenge 2023/10 - Applix1616 restoration/documentation

Time to tackle the SCSI interfaces.

First things first: I didn’t use the Gotek during this process. I wasn’t sure if I had issues with the Gotek or not talking to the Applix, and it seemed prudent to simply stick to doing everything by copying disk images I need to floppies, as I’d already confirmed these worked.

Some notes I gleaned from looking at the documents for setting up a SCSI hard drive on the Applix:

  • The first partition has a max size of 40 MB (with V4.* Roms) and MUST be on SCSI ID 0 LUN 0.
  • The hdconfig tool erases the disk and sets up partitions.
  • The blockdev program formats the partitions.

In BlueSCSI, you need to create a blank drive image for the machine to talk to. Given the limitations above, I stuck to a 40MB blank drive image generated using dd:
dd if=/dev/zero of=HD00_512.hda bs=1M count=40

This creates a file made of 40 blocks of 1Mbyte each, so 40MB. The filename indicates 00 for ID 0, LUN 0, then 512 indicates the sector size.

Note: While floppies need a sector size of 1024, SCSI drives need a sector size of 512. Of course, I found this out the hard way, as detailed below. :person_facepalming:

I copied the file HD00_512.hda to the SD Card that was going into the BlueSCSI. I also created a file called bluescsi.ini on the card with the following in it:

[SCSI]
System=“Generic”
Quirks=0
EnableSCSI2=0
DisableROMDrive=1

Specifically, this turns off SCSI2 negotiation. This is a really old machine and I don’t know what it would make of trying to use the SCSI2 negotiation method. I’d prefer it to be slow than flaky.

Now the docs on setting up a hard drive from the floppy disk I had contained a CRC error in that part of the disk. It’s quite possible that other parts of that disk were corrupted as well, such as the programs hdconfig or blockdev that are needed to set up a drive, so I went looking through the floppy disk images I have and found that there’s a bunch of versions of the Harddisk Update disk. A number have the docs on them (of various versions), so I went through a few of them with apptools on a Linux PC to see if I could find one that was a match to what was on the Applix Harddisk Update disk I had, under the assumption that it worked with the machine at some point in the past.

Eventually found 2 very similar disks to the one I have, which are obviously all versions of the same disk over time. One is slightly dated before the one I have, and one slightly after. I chose to use the disk that is slightly later than the one I have as it more closely matches the disk that came with the system (based on file dates, etc). It also seems to be the last version of that disk in the image archive I have.

First I copied the docs out of the disk image using apptools on my Linux PC, so I could figure out what I needed to do. Next I wrote the image to a floppy and booted it up. It loaded drivers for H2 and H3 (extra hard disk partitions), which is a nice bonus if I need more disk space.

Boot screen showing the memory resident driver that was loaded to talk to the extra drive partitions:

Nothing for it but to try this with the BlueSCSI attached. I couldn’t find the SCSI cable that I set aside for this job (about 60cm long and has 3x IDC50 pin connectors on it), but I did find a small one that is about 25cm long that reaches almost perfectly from the place I located the BlueSCSI in the case to the Disk Controller card. If I add the Memory/SCSI Expansion card, I’ll need to find another cable, but for now, this will do.

BlueSCSI installed in the case:

Now the BlueSCSI by default should try to power itself from the SCSI Termination power on the SCSI bus. There’s a cut track on the Disk Controller that disables this, as some early drives would fry things if the termination power was applied.

Rather than take out the disk controller and jumper that cut track (I really don’t want to disturb it when things seem to be working), I decided to simply put a connector on the external power connector for the BlueSCSI, and use the spare drive power socket and an extra power cable to power it from the spare power connector on the Disk Controller. I did this after the above photo.

With the BlueSCSI back in the case and connected to power, I booted the floppy and tried partitioning and formatting a disk (using hdconfig to partition and blockdev to format).

As I’m not sure if the 40MB limit in the Applix is 40x1024x1024 bytes or 40x1000x1024 bytes, I decided to play it safe and set up 2 partitions:

  • Partition /h0 I set to be 39000 blocks (so 39000 x 1024 bytes).
  • Partition /h1 I set to be 1952 blocks (so 1952 x 1024 bytes).

Note: The blockdev program wants the partition block sizes to be multiples of 8. I found this out when creating the /h1 partition, as the remaining space on the drive was 1959 blocks and it complained it wasn’t a multiple of 8. When I put in the /h0 size of 39000, it just happened to be a multiple of 8 (4875 x 8 = 39000).

Earlier, I mentioned that SCSI drives need 512 byte sector sizes. If you try 1024, it all gets confused and wont format. The blocks used by the filesystem are 1024 bytes, but the underlying sectors are 512 bytes. Of course, I only found this out as I tried with 1024 byte sectors first.

Failed formatting using the blockdev program:

After changing the filename on the SD Card to tell BlueSCSI it should use 512 byte sectors, things worked much smoother.

Successful formatting using the blockdev program:

Note: If you tell the blockdev program the disk is a fixed disk, then you need to reboot the machine to get it to recognise the newly formatted partition.

Rebooted. It saw /h0 and I could perform a directory on it! Copied the contents of the floppy (/f0) to the first hard disk partition (/h0), and then after changing a command in /h0/autoexec.shell to use /h0 instead of /f0, I rebooted again.

Successful boot off the BlueSCSI, with a directory listing of the SCSI drive:

This was quite fast to boot! The screen barely had time to sync to the Applix before the command prompt showing /h0> was ready for input.

Next up, I’m going to start meticulously going through the disk images I have access to and see what I can find. Will probably copy some of them onto the BlueSCSI to make the machine more usable.

FWIW: While I was looking through the disk images for the “Harddisk Update” disk I eventually used, I found a lot of versions of the User Disk, some with version numbers and some not. This was the disk that had programs that produced the stack exception errors I got previously. While looking through the disks, I noticed that not all of them had the signonold program that crashed on them. I suspect that the first User Disk I grabbed (which was also the first in the collection) is either very specific to some setup I don’t have, or was only suited to older versions of the 1616/OS Roms. Also, while I was setting up the BlueSCSI, when the SCSI disk wasn’t connected or was set up wrongly (eg: wrong sector size), I got a lot of “bus error” messages, so another possibility is that the Exception I had previously was the signonold program always trying to probe the SCSI hard drive and failing as it wasn’t connected.

As this machine has V4.5a Roms, I found a few V4.* User Disks that I’ll dig deeper into as I go through the disks. None of the V4.* disks seemed to have that signonold program on them. There’s definitely a lot of versions of the same thing, and going through all the versions of stuff is probably going to be the longer part of sorting through the disk images I have.

But it successfully boots off the SCSI hard disk! :tada:

1 Like