Opinion The Voyager space probes are dear to the hearts of every geek who can remember the 1980s.
The twin robotic spacecraft launched in 1977, the same year as the Apple II, the TRS-80 and the Commodore Pet, making the spacecraft the patron saints of the modern computer age. By the time Voyager’s primary mission ended with Voyager 2's 1989 Neptune encounter, earthlings had the 80486, the Gameboy and the Apple Macintosh Portable. As Voyager 2 was nearly three billion miles (4.7 billion kilometers) away at that point, however, hardware upgrades were ruled out by the cost of delivery. The mission celebrated vintage technology long before it became popular.
Despite such overlap between their histories, Voyager didn't use a microprocessor — the first such marriage was between Intel's 4004 and Pioneer Venus in 1978. Yet Voyager 1's computer issue in 2023 and the subsequent epic eight month fault finding and interstellar firmware update, as space vlogger Scott Manley so aptly called it, revealed some intriguing parallels between the 48-year old spacecraft and the Sinclair ZX Spectrum, in particular the Spectrum 128, launched in 1986, the same year Voyager 2 was speeding over Uranus' clouds.
The Voyager design has three computers, each doubled up for redundancy and peak processing. The ones handling navigation, communication and instrument control, are duplicates or derivatives of systems previously used on the Viking Mars missions, so were relatively well documented. The third, the Flight Data Subsystem or FDS, was designed as entirely novel to Voyager. It had to be as fast and flexible as possible to cope with the flood of planetary encounter data, so had to use the most advanced tech of the time that incurred acceptable risk.
Thus, the FDS uses solid state dynamic memory, DRAM, instead of the magnetic storage of the other systems. This is 8k of 16-bit words, the same total storage of the original 16k 8-bit bytes of DRAM in the original entry-level Spectrum. The Spectrum used eight memory chips to the Voyager's 512 and was more compatible with a household budget. Got to love Gordon Moore.
Also like the Spectrum, the Voyagers have no modern operating system, the built-in software is hand-crafted machine code written in assembler and performing specific tasks. By the time the problem occurred, the small Voyager team had very spotty documentation leading to a lot of reverse engineering. By the time the ZX Spectrum 128 was in development, the original source code was also poorly documented and written for a lost assembler program, needing considerable reverse engineering to be rebuilt — your correspondent’s first job as a coder. Degree of difficulty very different, resonance nonetheless.
Although it addressed 8K words of memory, the FDS's architecture could only manage twelve bits of address space, enough for 4k. The memory was therefore divided into two 4K pages, with the processor switching between them. That this complicated software design required paging out while running code because it needs to access the other page, is fraught with danger. The 280 in the Spectrum 128 can only access 64k of memory, so uses the same trick to access all of its titular 128K. Rather thrillingly, the assembler instruction to do the switch, OUT, is the same on both platforms, being more commonly used to OUTput control signals to hardware such as the paging logic. As the z80's instruction set was based on that of 1974's 8080 developed at the same time as the FDS, convergent evolution is no surprise.
Admittedly, the two systems and the process of fault-finding the system software diverge to a marked extent. Voyager 1's data link is nearly two days' return journey at light speed, at around 110 bits per second. The Spectrum 128's firmware was debugged over 9600bps RS-232 links to a Vax 11/780, with a Z80 in-circuit emulator plugged into a prototype providing instant and complete visibility of memory contents and processor instruction steps.
- The International Space Station will deorbit in glory. How's your legacy tech doing?
- Mysteries in polar orbit – space's oldest working hardware still keeps its secrets
- Silicon, stars, and sulfur make Apollo's unlikely legacy
- Space nukes: The unbelievably bad idea that's exactly that ... unbelievable
- Hide and seek in outer space highlights a battle here on Earth
The longest wait was the five minutes it took to blow a new 32k UVEPROM. The Voyager 1 debugging team worked mostly on a weekly cycle per test, the Spectrum 128 team barely had time to sip their coffee. Also, you can turn a Spectrum off and on again because code in ROM doesn’t go away, and you don't have to be permanently wired into a radioisotope thermoelectric generator. The consequences of a coding error are also somewhat different: loss of an irreplaceable interstellar asset on one hand, another cup of coffee on the other.
Paging, though, made life harder for both. It's not as nasty as Intel's segment register solution in the 8086 to running 16-bit address code in a larger memory map. The advent of proper memory management units runs the discovery of beer a very close second in system software circles. Voyager's FDS was not the first to use discrete hardware paging, nor the Spectrum 128 the last, but they do mark out the era when the mismatch between processor and memory technologies produced this infuriating bodge.
There is one final bond between the Voyagers and the ZX Spectrum — and, indeed, the whole generation of 8-bit computers operating at the edge of what achievable technology could do. Both were inspirations, examples of where imagination could take us, one at interplanetary scale, the other nestling on a desk. Both have completed their primary missions and are in the normal sense of the word, obsolete. It’s just that nobody’s told them this.
The best technologies have a cultural impact that far outlives their original purposes, and to feel an intimate connection to them as that happens is worth celebrating indeed. ®