Wait, did I just say we’ve left the dead board in the machine? Of course! Fault-tolerant 1980s hardware doesn’t care when things die. It explicitly notices the dead board on startup, then it goes on about its business as if everything else was just fine. It’s ECC RAM anyway, so we’re able to run without RAM being mirrored. The end result is likely slower RAM, but no actual less memory.
Speaking of memory, this Nimbus has virtual memory! This was a very big deal in 1989, and it even required a second processor because the 68030 could not dump an entire page of memory on its own.
These weird quirks may sound like the stuff hardware design nightmares are made of, but in the 1980s this stuff was par for the course. You didn’t so much design the hardware as wage war upon it from an engineering schematic. Everything you wanted to do couldn’t be done due to some little edge case, or some weird idiosyncrasy of the base hardware. The Stratus team pulled off some amazing things with their hardware.
Of course, the hardware is only one-third of this project. The remaining two-thirds are software: the server software and the client software. We lucked out on the client-side: Some folks at NewNet IRC in #C64friends have taken on the task of distributing a working set of disks. Currently, it seems the Club Caribe disks work just fine, so we’re going with them. The upgrade from Habitat to Club Caribe seemingly changed only one byte on the client disk.
Thus, we’re left with the server code. And this is where it gets really messy. Chip and Randy wrote some incredible code: fast, small, well architected. Unfortunately, they wrote it all in PL/I. And because it was written specifically for the Stratus, literally the only way to get this server back up so that people can play Habitat using C64 emulators was for us to get this Stratus Nimbus.
Green was kind enough to install the PL/I compilers for us, but even with them, this could get very complicated very quickly. One of the last big sticking points is the fact that the C64 can’t just connect to the Habitat server; instead, it must connect to QLink and then be handed off to Habitat. That means we have to run QLink Reloaded, a third-party recreation of the QLink server, and one that has been written almost blind. We’ve reached out to some old AOL folks to try to find more QLink source code; QLink eventually became AOL.
But given that all these pieces work, and players can go online with their C64 emulators, we still have a lot of work ahead of us. We’ll need a whole host of developers to translate the PL/I to a modern language like C. That’s not impossible, but PL/I itself has some idiosyncrasies. The language is not reflective, so changing a variable anywhere in the code changes it globally. As a result, huge chunks of the code are dedicated to resetting variables. Obviously, that won’t be needed in C.
So there you have it: a complete rundown of the crazy project I’m working on right now. This Sunday, we hope to get the whole thing up and running, so you’ll be able to try the game yourself. It’s been a long time coming, but hopefully, this will be the first of many more resurrections in software.