Aller au contenu
Phosphoneowiki
Sommaire

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.

Sources dans le dépôt : src/main.c, README.md.