Playing in the window
The window is for trying by hand what you will script afterwards: same settings, same results.
The window’s keys
| Key | Effect |
|---|---|
F11 or Alt+Enter | full screen |
F12 | PPM screenshot |
Ctrl+F12 | configuration menu (emulation is paused) |
F1 to F10 | passed to the Neo6502, as on the board |
The keyboard follows the firmware’s HID usages (US layout by default; the firmware’s layouts apply). The SDL gamepad is seen as the Neo6502’s gamepad 0.
The Ctrl+F12 menu
It overlays the screen. You load a .neo or .bas program from the storage folder, save a snapshot (snapshots/phosphoneo-YYYYMMDD-HHMMSS.phn) or resume one, mute the sound, change the window scale, cold-restart, and save the configuration. It also lets you change the storage folder (a folder picker) or take a real USB stick of the host (USB devices mounted under /media, /run/media or /mnt are listed): the choice applies at once, with a cold restart. Finally you choose the modem: none, the software modem of tools/fake_modem.py (started and stopped with Phosphoneo), or a host /dev/ttyUSB* / /dev/ttyACM*; the choice takes effect at the next launch, and NEO_CDC_TTY, if set, wins.
phosphoneo.cfg
The menu writes a phosphoneo.cfg file in the current folder: storage folder, scale, full screen, sound and modem. It is only read by an --sdl session, and only for what the command line does not set: windowless runs never depend on it, so they stay reproducible.
In the browser
The same code builds to WebAssembly (make wasm, with emsdk): a page loads the emulator, copies the files into in-memory storage and starts the program. Since Ctrl+F12 is taken by the browser, a Menu button replaces it; snapshots and configuration live in the page’s memory and are lost on reload. The browser’s modem forwards HTTP requests to a relay (tools/web_serve.py --proxy …).