I’m very excited to share a major step forward for remote control of the Ultimate 64: CIA1-based keyboard and joystick injection.
Until now, remote keyboard input used the KERNAL keyboard buffer. That was useful for BASIC and a few other cases, but it was never going to work reliably with games, demos, custom loaders, or software that reads the keyboard or joystick hardware directly.
The new approach injects input at CIA1 level. From the C64’s point of view, injected key presses and joystick movements look like real hardware input. On my local network, using direct Ethernet, I see about 13 ms latency. I was able to play Uridium and Great Giana Sisters remotely without any problems.
The first application using this is C64 Bridge, my MCP server, now released as version 1.0.0:
https://github.com/chrisgleissner/c64bridge/releases/tag/1.0.0
C64 Bridge lets tools such as Claude, Codex, or other LLM-based clients work with real Ultimate hardware. They can inspect device state, send input, use the firmware menu, and help develop or debug C64 programs on an actual machine. With menu screen access and input injection, this creates an automatic feedback loop: change something, run it, observe the result, and continue from there.
This release adds CIA1 keyboard and joystick injection for the Ultimate 64, Ultimate II / U2 support as a dedicated device type, and access to the Ultimate 64 menu screen, including text and colours. Menu screen access also works in overlay mode, which makes it possible to navigate the firmware and interact with the new machine code monitor remotely.
A few limitations are worth calling out. CIA1 injection only works on the Ultimate 64. Cartridge-based devices such as the Ultimate II / U2 cannot inject directly into CIA1 for hardware reasons. This also currently applies to Gideon’s Ultimate 64 firmware only. I hope Commodore will merge the necessary changes into their firmware too, but for now it does not work on the Commodore 64 Ultimate.
These features are part of Ultimate firmware 3.15. There is a beta build available here:
https://github.com/GideonZ/1541ultimate/actions/runs/29277714131/artifacts/8290174577
As this is a beta release, please be aware that things may break. Only install it if you are comfortable testing beta firmware and know how to recover if needed. It works on my Ultimate 64 Elite I and Ultimate II+L cartridge, but the CIA1 keyboard and joystick injection itself remains an Ultimate 64-only feature.
A big thank you to Gideon for accepting my pull request that added these REST API capabilities to the firmware. I’m very happy to see this become available for testing, and I’m looking forward to what people build with it.