Introduction
Internet rocket scientist and YouTuber Scott Manley has taken the classic Sinclair ZX Spectrum on a virtual moon mission. By linking the 1980s Z80‑based machine to the modern simulation game Kerbal Space Program (KSP), he can control a lunar lander in real time.
How the Serial Connection Works
The original ZX Spectrum did not include a built‑in serial port, but add‑on hardware such as the ZX Interface 1 provides a RS‑232‑compatible link capable of up to 19,200 bits per second. Manley runs a tiny BASIC program on the Spectrum that reads data from this port and outputs telemetry like altitude, velocity and fuel level.
- Interface 1 converts the Spectrum’s parallel I/O to serial signals.
- The BASIC routine polls the serial buffer and prints numeric values.
- KSP receives the numbers via a Python script that interprets them as landing‑control commands.
Implementing the Bridge with Python
On the PC side, a Python script opens the appropriate COM/tty device, sets the baud rate to match the Spectrum, and continuously reads the incoming stream. The script then:
- Parses the raw numbers.
- Sanitises the data to avoid malformed packets.
- Feeds the values into KSP’s mod‑API, which moves the virtual lander accordingly.
In practice the setup looks like this:
- ZX Spectrum → Interface 1 → RS‑232 cable → USB‑to‑RS‑232 adapter → PC.
- Python script handles the serial port and talks to KSP.
Possibility with Other 8‑Bit Machines
The concept is not limited to the Spectrum. The Commodore 64’s user port also offers a serial interface, and a similar BASIC routine could be written for the MOS 6510 CPU. The same Python bridge would work with minor adjustments to the data format.
Conclusion
Manley’s project demonstrates that even four‑decade‑old hardware can interact with modern software when you bridge the gap with simple serial communication. It’s a compelling reminder that the Z80 and its contemporaries still have a vibrant place in today’s tech culture.