Aller au contenu
Phosphoneowiki
Sommaire

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.

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