Co-simulation et latences
Ces options ne servent que si Phosphoneo a été compilé avec la co-simulation (COSIM=1, qui lie l’émulateur de RP2040 de Phosphoric et LOCI) ; sinon --neo-emu répond qu’il faut un build COSIM. Cette page suit l’en-tête de main.c : les options n’ont pas toutes été rejouées pour ce wiki.
--neo-emu
Syntaxe : --neo-emu firmware.elf
Au lieu du comportement lié (le code de l’API compilé dans Phosphoneo), exécute le vrai fichier ELF du firmware sur l’émulateur de RP2040 : le programme PIO qui sert le bus sert celui du 65C02, comme sur la carte. Les cas de référence sont rejoués dans les deux backends et doivent concorder.
--api-latency
Syntaxe : --api-latency table.txt
Gèle le 65C02 pendant chaque appel d’API du nombre de cycles de la table (par fonction), au lieu de 0 par défaut. La table est calibrée en co-simulation : environ 31 cycles pour écrire un caractère, 1 200 pour une ligne, jusqu’à 30 000 (5 ms) pour un grand rectangle plein.
À savoir. Ce sont des moyennes par fonction, dans une unité construite (24,4 pas ARM par cycle) et non mesurée sur la carte : le protocole de mesure existe, il n’a pas encore été déroulé.
--api-latency-out
Syntaxe : --api-latency-out table.txt
En co-simulation, écrit la table de latence mesurée à la fin de l’exécution (c’est ainsi que tools/apilat_table.py construit la table de --api-latency).
--cdc-tty
Syntaxe : --cdc-tty /dev/pts/N (ou NEO_CDC_TTY=…)
Relie le port série USB (groupe 14) du firmware à un terminal ou pseudo-terminal de l’hôte : le programme croit parler à un modem sur USB. Avec tools/fake_modem.py, on obtient un modem logiciel (Hayes, ESP-AT, vraies connexions TCP) sans Pico W.
Exemple
$ python3 tools/fake_modem.py /tmp/pty.txt &
NEO_CDC_TTY=$(cat /tmp/pty.txt) phosphoneo --sdl prog.neo
--multiboot --slot-bin --slot-elf
Syntaxe : --multiboot neoboot.elf --slot-bin 1:fw.bin --slot-elf 2:reload.elf
Le sélecteur de démarrage multiple du firmware : --multiboot démarre par neoboot.elf, --slot-bin N:FICHIER place un binaire dans le slot N de la flash émulée (répétable), --slot-elf N:ELF désigne le firmware « reload » du slot N (BBC Micro, Oric), qui prend le bus en bit-bang après l’appel 1,14 et dessine en MODE 7.
--bb-disc --type-keys-bb --shots-bb
Syntaxe : --bb-disc disque.ssd --type-keys-bb CYCLES:TEXTE --shots-bb CYCLES
Pour les firmwares reload : --bb-disc présente une image de disquette (.ssd/.dsd pour le BBC) comme la clé USB ; --type-keys-bb tape du texte N cycles après la bascule sur le bus bit-bang ; --shots-bb règle le délai des captures après cette bascule (défaut 4 000 000 cycles, arrêt à +2 000 000). tools/mkssd.py fabrique une image .ssd.