The bundled tools
Around the emulator, small Python or shell tools prepare inputs and read outputs.
mkneo.py — making a .neo
tools/mkneo.py prog.neo 800:code.bin FFFF:sprites.gfx --exec 800
Assembles a .neo executable (the firmware’s format) from ADDRESS:FILE blocks (hexadecimal); address FFFF means graphics memory. --exec ADR gives the execution address; without it, the program is not started automatically.
mkssd.py — a DFS floppy image
tools/mkssd.py disc.ssd TITLE HELLO=prog.bbc
An 80-track Acorn DFS image (204,800 bytes), for --bb-disc. NAME=FILE[,LOAD,EXEC] adds a file; default $1900/$8023, a BASIC program.
fake_modem.py — a software modem
python3 tools/fake_modem.py /tmp/pty.txt &
NEO_CDC_TTY=$(cat /tmp/pty.txt) phosphoneo --sdl prog.neo
Creates a pseudo-terminal for NEO_CDC_TTY / --cdc-tty. The windowed mode’s Ctrl+F12 menu can also start it (“software” choice) and stop it on exit. Two dialects: Hayes (ATZ, ATDT → CONNECT 2400, echo, +++) and ESP-AT as a Pico W speaks it (AT+CWJAP, AT+CIPSTART opens a real TCP connection). Options: --log, --relay HOST:PORT, --raw.
web_serve.py — serving the browser version
make wasm && tools/web_serve.py 8000 --proxy http://prophet.3617.fr:8998
Serves the web/ folder and relays to the given server any request that is not a file: the JavaScript modem thus talks to the page’s own origin, with no CORS.
golden.sh — reference screenshots
golden.sh run, baseline, show NAME, fingerprint NAME: see the tests.
Call latencies
apilat_table.py turns the measurement program’s output (tests/corpus/apilat.neo6502, which times 50,000 calls per function) into a table for --api-latency; latency_baseline.sh and latency_merge.py produce and merge the co-simulation measurements.