Aller au contenu
Phosphoneowiki
Sommaire

Le cœur 65C02

Un émulateur de processeur se juge sur preuve : ici, 2,54 millions de cas comparés à une référence publique.

Un accès bus par cycle

Le cœur (src/cpu/cpu65c02.c) exécute une instruction en reproduisant la séquence des accès au bus, un par cycle, avec les lectures factices que fait le vrai processeur. C’est ce qui rend exact le nombre de cycles, donc le temps.

L’oracle

Le cœur est comparé à SingleStepTests (jeu wdc65c02) : 254 opcodes × 10 000 cas = 2 540 000 cas. Pour chacun on compare l’état final, la RAM, le nombre de cycles et la séquence exacte des accès au bus. Le score exigé est 100 %, et make test-oracle échoue en dessous. Une version rapide (test-oracle-quick) sert au quotidien.

Ce que l’oracle ne dit pas

Phosphoneo l’écrit dans la précision plutôt que de le taire :

  • les fichiers cb.json et db.json de l’oracle (WAI et STP) sont vides : leur comportement suit la fiche du fabricant, sans mesure ;
  • les interruptions et le RESET ne sont pas couverts par l’oracle (des tests propres, test-irq, vérifient le comportement fonctionnel) ;
  • pour $5C, l’oracle donne 4 cycles là où la fiche en indique 8 : on suit l’oracle, l’écart n’est pas tranché sur silicium ;
  • le cycle « décimal » d’ADC/SBC immédiat lit $007F ou $0000 comme l’oracle le donne, sans que la fiche l’explique.

Sources dans le dépôt : docs/ACCURACY.md, docs/ARCHITECTURE.md.