zxplay_go User Manual

This is the everyday user guide to zxplay_go — how to start it, pick a machine, load software, save your place, wire up peripherals, and get sound and the right keys. It covers the graphical app; the headless/CLI debugging flags are documented separately (run zxplay_go --help, and see DEBUGGER.md).

For deeper, per-topic detail this manual links out to:


1. Starting up

Launch the app and you get a 48K Spectrum by default, sitting at the © copyright line ready for BASIC. Everything else — a different machine, a game, a peripheral — is reachable from the menu bar.

You can also pick a machine straight from the command line:

FlagBoots into
(none)ZX Spectrum 48K
--nextZX Spectrum Next
--pentagonPentagon 128
--zx81Sinclair ZX81
--zx80Sinclair ZX80

To run without a window (for scripting/CI), add --headless --frames N.

Or skip the flags and hand it a file — zxplay_go game.tap picks the machine from the extension and starts the program (see Launching a file directly).


2. Choosing a machine

Machine menu:

Switching machine reboots into the new one. Your loaded peripherals and config are remembered where they still apply.


3. Loading software

Everything loads from the File menu, by dragging a file onto the window, or by handing the file to zxplay_go at launch (zxplay_go game.tap, or a file-manager double-click — see Launching a file directly). zxplay_go picks the right loader from the extension.

You haveUseNotes
.tap / .tzx tapeFile → Load TapeThen LOAD "" (48K) or pick Tape Loader (128). Auto-starts most tapes.
.z80 / .szx / .sna snapshotFile → Load SnapshotRestores a frozen machine instantly.
.romFile → Load ROMReplace the system ROM (advanced).
.dck / Interface 2 cartridgeFile → Insert Interface 2 Cartridge16K ROM cartridges.
.trd TR-DOS diskFile → Load TR-DOS Disk A/BPentagon / 48K / 128K. Enter TR-DOS, then CAT/LOAD. See below.
.dsk / .mgt diskFile → Load Disk / DISCiPLE DiskSee §6 Peripherals.
.p / .o (ZX81/ZX80)File → Open FileLoads and runs the program.

Recent files (File → Recent) keeps your last-opened items one click away.

Tapes in detail

zxplay_go does proper tape emulation (the signal is decoded by the ROM loader, not faked), so loaders with custom timing work. You can:

Some protected games need the Speedlock Workaround (File → disk submenu) toggled on.

TR-DOS disks (.TRD)

TR-DOS is the disk system used on the Pentagon and other 128K clones. Pick a Pentagon 128 (or 48K/128K) machine, then File → Load TR-DOS Disk A (or B) and choose a .trd image — the Beta Disk interface and its TR-DOS ROM are enabled automatically. To use the disk, enter TR-DOS from BASIC with RANDOMIZE USR 15616 (or via the 128 menu), then the usual CAT, LOAD "name", RUN, etc. You can also mount a disk at launch with --trd path.trd.

Loading a tape at launch (including headless)

Pass --tape path.tap (or .tzx) to mount a tape into the deck at startup and start it playing. This works in both GUI and headless mode — the one way to feed a standard tape to a scripted/CI run without the window:

# Headless: boot 48K, mount a tape, run; then drive LOAD"" yourself
zxplay_go --headless --tape game.tap --press-key 'l@60,...' --frames 3000

# 128K clones auto-start most tapes via the boot menu's Tape Loader
zxplay_go --headless --pentagon --tape game.tzx --frames 5000

On the 48K the guest still has to read the tape — type LOAD "" (or schedule it with --press-key); on the 128 choose Tape Loader from the boot menu. The fast-load trap is installed automatically so the load is near-instant.

Launching a file directly (command line / double-click)

zxplay_go FILE boots straight into a program: the extension picks the machine and the file is loaded and started without touching a menu. This is also what a file-manager double-click runs once the desktop integration is installed.

ExtensionMachineWhat happens
.tap / .tzx48K (default)Tape mounted; in the GUI the LOAD "" command is typed for you (the 128 clones use their boot menu's Tape Loader)
.z80 / .sna / .szxFrom the snapshotState restored instantly (48K/128K picked by the file)
.rzxFrom the recordingPlayback starts
.nexSpectrum NextBoots NextZXOS and launches through its own .nexload, no confirmation dialog
.trdPentagon 128Disk mounted in Beta drive A (enter TR-DOS as usual)
.p / .81ZX81Program injected and running
.o / .80ZX80Program injected and running

Rules:

# Compile-run loop: boot the Next, run the build, screenshot the result
zxplay_go --headless --frames=2500 --save-screen=out.png build.nex

# Check a snapshot renders correctly
zxplay_go --headless --frames=100 --save-screen=snap.png game.z80

File-manager integration (Linux/XDG): desktop/install-desktop.sh installs a per-user launcher entry, icon, and the file associations for every type above, so double-clicking a Spectrum file opens it in zxplay_go. No root needed; --uninstall removes it. Details and the MIME specifics (including why .p/.o are CLI-only) are in desktop/README.md.


4. Saving your place

There are two independent mechanisms:

Quick save / quick load (F2 / F4)

The fastest way to bookmark a moment. F2 writes the whole machine to a single quick-save slot; F4 restores it. They're also in the File menu ("Quick Save State" / "Quick Load State").

The slot lives in your user config directory (quicksave.szx) and survives restarts, so you can quit, come back, and press F4 to pick up where you were.

Quick save/load is available on the 48K…+3 and Pentagon machines. It is not offered for the ZX80/ZX81 (no compatible state format) or the Spectrum Next (its full hardware state isn't captured by an .szx snapshot — use the Next's own snapshot facilities instead).

Named snapshots

File → Save Snapshot… writes a .szx / .z80 / .sna file you name and keep. Use these for permanent saves and for sharing a state with others. Load them back via File → Load Snapshot.


5. The keyboard

The Spectrum keyboard is mapped onto your PC keyboard as faithfully as the layouts allow. The essentials:

On 128K/+2/+3 you type keywords letter-by-letter (the later editor); on 48K the single-key keyword entry applies. On the ZX80/ZX81 each keyword sits on its native key — see §9.

You can remap any key: Help → Custom Keymap… opens an editor and saves your layout. The complete default matrix, with every shifted symbol, is in KEYBOARD_GUIDE.md.


6. Peripherals (disks, printers, mice)

Peripherals are enabled from the Peripherals menu and then driven from File. Available on the classic Spectrums (not the ZX80/ZX81):


7. Sound

zxplay_go mixes all sound sources sample-accurately:

Record (WAV) under File captures the audio to a file. Mute everything with --no-sound at launch (handy for long debugger sessions).


8. Spectrum Next

The Next needs two things before it will boot, both one-time:

  1. ROMs — File → Install Next ROMs… (the licensed Next firmware is not bundled; the app fetches/installs it for you).
  2. An SD card — either point it at a folder (File → Set Next SD Card Directory…) or at a card image (File → Set Next SD Card Image (.img/.mmc)…).

Then Machine → Spectrum Next (or launch with --next) boots NextZXOS the real way — FPGA bootrom → firmware → NextZXOS — with Layer 2, sprites, tilemap, the copper and the extra sound all live. Full setup and troubleshooting: docs/spectrum-next.md.


9. ZX80 / ZX81

These two run their original ROMs with CPU-generated video — the Z80 literally builds each scanline, exactly as it did in 1980/81. So expect the authentic behaviour: the screen flickers/jumps during heavy computation on the ZX81 in FAST mode, SLOW mode steadies it, and the cursor starts as an inverse K.

Load programs with File → Open File (.p for ZX81, .o for ZX80). The keyword keyboard differs per machine — for example PRINT is on O on the ZX80 but on P on the ZX81. Details and the per-machine keymap: docs/zx80-zx81.md.


10. Display & view

View menu:

Save Screenshot… (File) writes the current frame to a PNG.


11. Tools & extras


12. Keyboard shortcuts

KeyAction
F2Quick save state
F4Quick load state
F12Trigger NMI (Multiface freezer)
EscExit full screen
Arrow keysJoystick directions (when a joystick is enabled)
Right Alt / Right CtrlJoystick fire

13. Troubleshooting

For anything deeper — timing, hardware conformance, the debugger, or how zxplay_go stacks up against other emulators — follow the links at the top of this manual.