Skip to content
Phosphoneowiki
Contents

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.

Sources in the repository : tools/, README.md.