Curious connections: Voyager probes and Sinclair ZX Spectrum
- Reference: 1757920508
- News link: https://www.theregister.co.uk/2025/09/15/curious_connections_between_the_voyager/
- Source link:
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 [1]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.
After nearly half a century in deep space, every ping from Voyager 1 is a bonus [2]READ MORE
Despite such overlap between their histories, Voyager didn't use a microprocessor — the first such marriage was between Intel's 4004 and [3]Pioneer Venus in 1978. Yet Voyager 1's [4]computer issue in 2023 and the subsequent epic eight month fault finding and interstellar firmware update, as [5]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 [6]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 [7]Gordon Moore .
[8]
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.
[9]
[10]
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 [11]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.
The Reg chats with Voyager Imaging Team member Dr Garry E Hunt [12]READ MORE
Admittedly, the two systems and the process of fault-finding the system software diverge to a marked extent. [13]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.
[14]The International Space Station will deorbit in glory. How's your legacy tech doing?
[15]Mysteries in polar orbit – space's oldest working hardware still keeps its secrets
[16]Silicon, stars, and sulfur make Apollo's unlikely legacy
[17]Space nukes: The unbelievably bad idea that's exactly that ... unbelievable
[18]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.
[19]
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. ®
Get our [20]Tech Resources
[1] https://www.theregister.com/2025/05/07/linux_kernel_drops_486/
[2] https://www.theregister.com/2025/09/07/48_years_voyager_1/
[3] https://www.computinghistory.org.uk/det/6273/Pioneer-Venus-launches-the-first-microprocessor-into-space/
[4] https://www.theregister.com/2023/12/14/engineers_work_to_fix_voyager/
[5] https://youtu.be/p0K7u3B_8rY?si=HqMg527hhFJYgPv5
[6] https://hackaday.com/2024/05/06/the-computers-of-voyager/
[7] https://www.theregister.com/2005/10/01/intel_moore_40/
[8] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_offbeat/science&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2aMfjuPALLaus5ZZv7vrD0wAAAtE&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[9] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_offbeat/science&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aMfjuPALLaus5ZZv7vrD0wAAAtE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[10] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_offbeat/science&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33aMfjuPALLaus5ZZv7vrD0wAAAtE&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[11] https://forum.nasaspaceflight.com/index.php?topic=9476.500
[12] https://www.theregister.com/2018/09/18/garry_hunt_interview/
[13] https://science.nasa.gov/mission/voyager/where-are-voyager-1-and-voyager-2-now/
[14] https://www.theregister.com/2022/08/30/iss_legacy_tech/
[15] https://www.theregister.com/2024/11/25/amsat_oscar_7_anniversary/
[16] https://www.theregister.com/2024/07/29/opinion_column_space/
[17] https://www.theregister.com/2024/02/19/opinion_column/
[18] https://www.theregister.com/2023/08/07/opinion_column_voyager/
[19] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_offbeat/science&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aMfjuPALLaus5ZZv7vrD0wAAAtE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[20] https://whitepapers.theregister.com/
The Spectrum switched in banks of 16K. So unlike the Voyager you could arrange to not pull the rug out from under your feet at least in terms of code running from RAM. With Interface 1 however you also had ROM switching in the bottom 16k of the address space which must have involved some sort of dispatch vector shenanigans between the two of them.
Most common use for RAM switching would be to swap over the frame buffers, display one whilst you wrote to the other, then swap them over. This made 128K games run slightly faster since you didn't need to LDI the new frame to the video address. Video memory was 6k. Can't for the life of me remember what we put in the other 10k since obviously it would only be available half the time and you couldn't just switch it whenever you felt like it. I'm guessing we put two copies of the same read-only stuff like tables and sprites in there rather than code. Am I right in remembering that the bank switched to the video address was slightly slower to access? Probably used the same technique on the CPC but its video memory was a bit bigger.
The only game I can think of that we enhanced to take advantage of the extra memory in the 128K was Outrun. It could keep more of the stages you'd played through in memory instead of having to reload from tape so game restarts could be quicker.
"The consequences of a coding error are also somewhat different"
Well, neither Sinclair nor Sugar were going to issue a bug-fixed ROM for the Spectrum, bless them. Sinclair because it would have taken money away from his portable TV and the C5 and Sugar because he'd spent more than enough money already buying it from Nine Tiles, despite it starting up with "© 1982 Sinclair Research Ltd", [1]it never was .
[1] https://worldofspectrum.net/legacy-info/sinclair-basic/
"infuriating bodge"
One solution to the 64K limit was the Commodore equivalent from around 1982 - the 6509 processor. This was basically a 6502 with an addition to handle banked memory via two enhanced instructions - LDA(z),Y and STA(z),Y. These allowed one bank to access any of the other available banks to load and save data. The bank to use was specified by writing to the first two memory locations in the normal 64K memory map (the 6510 used in the C64 did something slightly different with the same two memory locations). The 6509 was only ever used in the CBM-II series (designated the 500, 600 and 700 series in some countries), which didn't last that long as Commodore lost enthusiasm for the project early on and ended up dumping stock.
"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. "
They also illustrate another important lesson - don't lose your documentation. Nor, come to that, your build tools.
One of my first jobs as a developer was to rebuild a system, porting it from Vax to the then brand spanking new (and, in fact, only available in sample form) Alpha processor.
Just a few snags. The documentation had been lost. The code was poorly documented. The code hadn’t been consistently checked in to CMS (think a VMS only very primitive Git). So I then had to check all of the development systems, gathering up scraps of code, debugging madly as I went, to see if I could build a coherent working version. Documenting it all as I went.
The code was all nearly entirely C with a bit of Pascal and a smidgen of DCL. And no AI to ask. No Stack to ask either if it comes to that. So yes. I sympathise with this story. It was a different world.
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
This elicited a much needed hearty chuckle on a dreary Monday. Exactly like peeking and poking at 110 baud with a 48 hour latency wouldn't.
Documentation
The original Spectrum was very well specified. I have the complete ROM disassembly book still on my bookshelf.
"It's not as nasty as Intel's segment register solution"
Actually, Intel solution is quite clean, especially in protected mode, where it allows an high degree of security that is now mostly lost, so we can enjoy a lot of vulnerabilities because the lack of it.
The only thing it wasn't goot at is swapping memory in and out to an external storage - segments are too large. 64K or larger pages would be as well, anyway.
*Cough*
The Amstrad CPC6128 was released in 1985. The Spectrum 128k was Johnny Come Lately as far as Z80 memory paging was concerned in home computing.
I don't know about the Spectrum 128k but [1]RAM swapping wasn't a huge inconvenience on the CPC . You just divided your code and data into blocks and arranged them as required. Paging was something you did relatively infrequently, something of a context switch rather than something you were continually working around. And again I don't know about the Speccy but on the CPC you could hide one RAM page behind ROM. When you wrote to the address it went through to the RAM so if you were only writing data you effectively extended the address space.
[1] https://cpctech.cpcwiki.de/docs/rampage.html