Before we begin, I should fully disclose that I am about to discuss my personal non-profit and the work we’re doing. I am extremely compromised, super invested, and heavily opinionated about my non-profit, so we’re leaving Neutral Journalism Town and heading for Bias Avenue.

That being said, I have spent the past year working on the largest, strangest software project I’ve ever had the pleasure of managing. But to explain this project, I’m going to need to give y’all a history lesson first, so sit back and get in a 1980s mood.

In the beginning…
The year is 1986, and Lucasfilm Games has just completed the first round of development on an entirely new type of video game. The game will be hosted in a new service for home computer users known as Quantum Link, and will allow thousands of people to interact and live online in a graphical world with digital representations of people. These digital representations will come to be known as Avatars.

The game is called Habitat, and from 1986 to 1988, it will be in development but available to a select number of QLink users as well. Lucasfilm will host its yearly employee meeting in Habitat, and players from around the U.S. will log in to form what has to have been the first graphics-based online game community ever.

A few years later, Habitat will be sold to Fujitsu and be renamed Club Caribe. Science fiction themes and about half the digital world of the game would be roped off and made unusable. Later, the game would be reworked further and relaunched in 1995 as WorldsAway.

0923.sdt-blog-habitat

But way back in 1986, the original Habitat remained fairly difficult to access. While Lucas ran the game, players could only login via QLink, which at the time was only available on weekends and evenings, if you can imagine such a thing. Even when it was available online, QLink charged by the hour, and a Commodore 64 using a 1200 baud modem can’t really zip through large portions of the Habitat universe without heavy delays and lots of time.

About a year ago, I was put in touch with Chip Morningstar, one of the two big brains behind the game’s design. Morningstar is an engineer’s engineer, and he currently heads architecture at PayPal. Thanks to his designs, Habitat was built to withstand thousands of users at once, and it was able to contain a massive world which fit onto two 5.25-inch floppy disks.

Randy Farmer was the other big brain behind the game, and he said that of the 64KB of memory in the C64, 32KB were used exclusively for the character animations and movements so as not to create a flicker in the display. Thus, this online graphical environment kept all of its visuals in 32KB, and all of its core gameplay and networking code in another 32KB.

While the Habitat client ran on a Commodore 64, the server ran on Stratus VOS. I’ll wait here while you read about it in Wikipedia.

Frankly, the folks reading this site right now are some of the only people in existence who even have a better than 20% chance of ever hearing of VOS. I consider myself something of an expert on computing history from around 1980 forward, and I’d never heard of this OS, nor of this hardware architecture before. And yet, JP Morgan Chase is still hiring VOS people!

Finding the machine
As it turns out, Stratus Technologies is still around. Today they sell IBM z series, which makes perfect sense given the company’s roots in mainframe hardware. But back in 1986, if you wanted an always-on piece of server hardware, there weren’t many choices. Stratus was probably the best option, though companies like Tandem and Sun were offering similar solutions: super fault tolerance in the server hardware.

When we began work on this project, I started snooping around computer recycling centers and with computer collectors to try and find a Stratus machine. Before long, I stumbled upon Paul Green, who has been with Stratus since the start. He very graciously offered to build us a VOS machine for the project, and to ship it out to California for us, free of charge.

0923.sdt-blog-computer

The image above is the server, a Stratus Nimbus. It contains 64MB of RAM, two 16Mhz 68030 processors, and we were very lucky that Paul was able to find an Ethernet card for it! Of course that card is RS-232, but he sent an adapter for RJ45. This past weekend, we fired it up and gave it an IP address. Then we immediately shut it down, fearful that someone would log in via telnet.

Of course, that was ludicrous. Even if someone did see our login and password over clear text (no SSH back then), what could someone do with this beast? The VOS is not exactly a well-known OS. The directories are separated by angle brackets, and the actual command prompt doesn’t take any Unix commands I’m familiar with.

The PL/I problem
It is a beautiful machine, however. It’s like a classic car: quirky, unique, and entirely impossible to repair if something goes wrong. Why? Because this is probably the last functional Nimbus in the world. And it’s not even fully functional. Today, if you sent someone a computer with bad RAM, you’d get an earful. The Nimbus, sadly, only has one good board of RAM, and is thus left with only 32MB of RAM instead of the 64MB that are actually there.

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.