Charger un programme
Tout ce qui n’est pas une option (pas de « – » devant) est un programme ou un point de départ. On peut en donner plusieurs : ils sont chargés dans l’ordre. Sans programme, Phosphoneo démarre le firmware seul : logo, bannière, puis NeoDOS.
fichier.neo
Syntaxe : prog.neo
Charge un exécutable .neo (le format du firmware : une suite de blocs, chacun avec son adresse, et une adresse d’exécution). Un bloc à l’adresse $FFFF va dans la mémoire graphique (sprites, tuiles), un bloc à $FFFD dans la page BASIC courante. Si le fichier donne une adresse d’exécution, le programme démarre là.
Exemple
$ phosphoneo hello.neo --cycles 3000000
phosphoneo : hello.neo bloc -> $0800 (323 octets)
phosphoneo : 3000001 cycles, 7 appels API
À savoir. Avant le 2026-09-16 le bloc
$FFFFétait ignoré : des sprites sans image faisaient planter le firmware. C’est corrigé et couvert par un test.
fichier.bas
Syntaxe : prog.bas
Charge un programme NeoBASIC déjà tokenisé (celui que produit SAVE) sur la page BASIC et le lance (équivaut à exec, $0806).
Exemple
$ phosphoneo hello.bas --cycles 3000000 --screenshot-text out.txt
fichier@ADRESSE
Syntaxe : prog.bin@800 | graphique.gfx@FFFF | prog.bas@page
Charge un fichier brut à une adresse, en hexadécimal. @FFFF désigne la mémoire graphique ; @page la page BASIC. Le fichier n’est pas lancé : il faut ajouter un point de départ (cold, warm, exec ou run@).
Exemple
$ phosphoneo graphics.neo6502@800 cold --cycles 3000000
phosphoneo : graphics.neo6502 -> $0800 (323 octets)
phosphoneo : 3000001 cycles, 7 appels API
cold warm exec run@ADRESSE
Syntaxe : cold | warm | exec | run@C000
Point de départ du 65C02 une fois les fichiers chargés : cold = $0800, warm = $0803, exec = $0806 (les trois entrées du noyau), run@HEX = n’importe quelle adresse. Sans point de départ, le 65C02 part sur le vecteur de reset, c’est-à-dire NeoDOS.
--storage
Syntaxe : --storage DOSSIER
Dossier de l’hôte vu par le firmware comme la carte SD ou la clé USB (défaut : storage). C’est là que LOAD, DIR ou le jeu lui-même lisent et écrivent leurs fichiers. Les chemins sont résolus comme le fait FatFs : . ignoré, .. borné à la racine, rien d’accessible hors du dossier.
Exemple
$ phosphoneo --storage ~/jeux --cycles 45000000 --type-keys '15000000:DIR\n' --screenshot-text out.txt
À savoir. Les noms de fichiers sont en Latin-1 côté 6502 et en UTF-8 côté dossier, comme sur la carte. En mode fenêtre, le menu Ctrl+F12 peut aussi changer de dossier ou prendre une clé USB réelle de l’hôte.
--load-at
Syntaxe : --load-at CYCLES:FICHIER
Charge un .neo ou un .bas après N cycles et redémarre le 65C02 dessus : ce que fait la page web quand on choisit un programme. Le fichier est cherché dans le dossier de stockage. Quatre chargements au plus.
Exemple
$ phosphoneo --storage d --load-at 15000000:prog.neo
--floppy
Syntaxe : --floppy /dev/sda
Remplace le dossier de stockage par un vrai lecteur de disquettes (ou n’importe quel périphérique bloc), servi par le FatFs du firmware : les appels du 65C02 empruntent la même pile que sur la carte, au dernier maillon près. Il faut appartenir au groupe disk.
À savoir. Ce mode n’est pas couvert par la sauvegarde d’état.