L'horloge et le temps
Le temps de Phosphoneo est un nombre de cycles. Aucune horloge de l’ordinateur n’y entre : c’est pourquoi un essai se répète à l’identique.
Les constantes
| Quoi | Valeur |
|---|---|
| fréquence du 65C02 | 6,25 MHz |
| une trame | 109 226 cycles, soit 60 Hz |
| un tick du minuteur | 62 500 cycles, soit 100 Hz |
| une seconde de machine | 6 250 000 cycles |
Le minuteur à 100 Hz du firmware est dérivé des cycles émulés, et non de l’horloge murale comme dans l’émulateur officiel : un programme qui attend le minuteur donne donc le même résultat à chaque exécution.
Fenêtre ou pas
Sans fenêtre, Phosphoneo va aussi vite que possible. En fenêtre (--sdl) ou avec --realtime, une trame émulée dure 1/60 s de temps mural : l’émulation est identique, seulement ralentie.
Combien coûte un appel d’API ?
Par défaut, 0 cycle : le 65C02 reprend la main dès que l’appel est traité, comme dans l’émulateur officiel. Avec --api-latency, il est gelé du nombre de cycles calibré en co-simulation, par fonction :
| Appel | Ordre de grandeur |
|---|---|
| 2,6 écrire un caractère | ≈ 31 cycles |
| 5,2 tracer une ligne | ≈ 1 200 cycles |
| 5,3 rectangle plein | jusqu’à 30 000 cycles (≈ 5 ms) |
| 5,4 ellipse pleine | jusqu’à 70 000 cycles (≈ 11 ms) |
Ce sont des moyennes par fonction, dans une unité construite (24,4 pas ARM par cycle) qui n’a pas été mesurée sur la carte : un pas ARM n’est pas un cycle ARM, et la latence réelle dépend des paramètres (la taille d’un rectangle). Le protocole de mesure sur la carte est écrit (docs/PROTOCOLE-MESURE-CARTE.md) ; il attend d’être déroulé.