Aller au contenu
Phosphoneowiki
Sommaire

Le firmware lié

Presque tout ce qu’un programme Neo6502 fait passe par l’API du firmware. Plutôt que de la réécrire, Phosphoneo la compile.

Le choix : compiler, pas réécrire

L’API (console, dessin, sprites, son, fichiers, clavier, souris, blitter, boîte à outils de Trinity) est écrite en C++ dans le dossier firmware/common/ du firmware, partagé entre la carte et l’émulateur officiel. Réécrire cette API en C dans Phosphoneo garantissait de diverger un jour. L’ADR-01 a donc retenu : compiler firmware/common/ tel quel (licence MIT, par ses contributeurs), avec -DIBMPC, et n’écrire que ce qui l’entoure.

Ce qui est à nous

Une couche hôte (src/neo/neo_host.cpp), dérivée de celle de l’émulateur officiel, fournit au firmware ce qu’il attend du matériel : stockage (FIS*), horloge (TMRRead), compteur de trames, file du clavier, son, série USB. Le processeur, la boucle principale, les captures, les journaux et les sauvegardes d’état sont aussi à nous.

Conséquences

  • Quand un appel 5,2 trace une ligne, c’est le code de la carte qui la trace.
  • Les nouveautés du firmware arrivent par une recompilation : chaque version de Trinity est intégrée, et les captures de référence sont refaites après avoir été regardées.
  • Une version du firmware est épinglée dans le manifeste des captures de référence ; les lignes de version (bannière) sont masquées dans les empreintes, pour qu’un simple changement de numéro ne casse pas tout.

Mode disquette

Avec --floppy, les appels de fichiers passent par le FatFs du firmware et une couche disque POSIX jusqu’au périphérique : la pile de la carte, au dernier maillon près.

Sources dans le dépôt : docs/adr/0001-liaison-firmware-common.md, docs/ACCURACY.md, docs/ORIGINE.md.