Les deux backends
Un second avis intégré : le même programme peut passer par le code de l’API compilé, ou par le vrai firmware sur un RP2040 émulé.
Le comportement lié (par défaut)
Le code de l’API est compilé dans Phosphoneo et répond directement quand le 65C02 écrit à $FF00. C’est rapide, et c’est le seul backend qui offre tous les journaux (--api-log, la trace avec adresses effectives, les arrêts sur appel d’API). La latence d’un appel y vaut 0 cycle, sauf --api-latency.
La co-simulation (--neo-emu)
Le vrai fichier ELF du firmware s’exécute sur un émulateur de RP2040 (Cortex-M0+, PIO, DMA, USB, snapshots) : le programme PIO qui sert le bus du 65C02 est celui de la carte, et DSPHandler s’exécute en ARM. Cela donne :
- les latences des appels en pas ARM (
--api-latency-outécrit la table) ; - un second avis : une partie des cas de référence est rejouée dans les deux backends et doit concorder ;
- les firmwares « reload » (BBC Micro, Oric) qui prennent le bus en bit-bang.
Ses limites sont écrites dans la précision : écran, USB et son y sont simulés à gros grain, la bibliothèque flottante de la ROM est simulée, et le journal d’API n’est pas disponible (l’appel s’y exécute sur l’ARM émulé).