Aller au contenu
Phosphoricwiki
Sommaire

Où en est Phosphoric

Phosphoric en est à la version 2.30.0, du 5 octobre 2026. Voici ce que le projet affirme, le test qui le prouve, ce qu’il ne prétend pas, et le chemin parcouru depuis janvier.

Dans cette page

Ce qui est prouvé

AffirmationLe test qui la ferait tomber
Le 6502 est exact au cycle : 100,00 % de séquences bus exactes sur 2 440 000 casmake test-cycle CYCLE_MAX_CASES=0
Le test fonctionnel 6502_functional_test passe en entier (environ 96 millions de cycles)sa cible dans make tests
La machine est cadencée au cycle : un appel de l’horloge, un cycle de tout, jamais à videmake test-clock (14 tests)
Les minuteries du VIA comptent au cycle (période N+2, PB7, CA2)make test-io
L’ULA lit une cellule par cycle, après l’accès du CPU du même cyclemake test-raster-split, make test-clock
Le PSG tourne à horloge/8, sortie intégrée, sans repliementmake test-audio (mesure du signal)
Une sauvegarde d’état prise en pleine trame reprend exactement au même pointmake test-savestate-determinism
À cycle égal, les programmes du corpus local donnent la même imagemake test-corpus
Une trame coûte moins de 1 000 µs sur la machine de référencemake test-bench

Toute la suite : 70 suites, 1 362 vérifications, au vert. Le détail est dans Les tests.

Ce qui reste approché, et qu’on ne cache pas

  • Le contrôleur de disquette (WD1793) est au niveau N1+ : il est cadencé en cycles, avec une vraie latence de rotation, mais ses délais de transfert sont forfaitaires, et l’image du disque est plate (pas de flux magnétique). Une vraie perte d’octet ou une erreur de CRC ne peut donc pas se produire.
  • Le demi-cycle du mode « one-shot » du VIA (N + 1,5) n’est pas représenté.
  • La bordure et le blanking ne sont pas dessinés : l’image fait toujours 240 × 224 pixels.
  • La phase absolue entre le balayage et le processeur n’est pas modélisée. Elle n’est observable sur un Oric non modifié qu’avec une modification matérielle, le « VSYNC hack », qui n’est pas émulée.
  • La cassette se charge par défaut en corrigeant la ROM (chargement rapide). Le mode au signal existe (--tape-signal) et il est exact au cycle, mais ce n’est pas le défaut, par choix : même contenu chargé, 2,4 fois moins de cycles.

Le classement complet, composant par composant, est dans La précision, mot à mot.

Les programmes essayés

La liste de compatibilité du dépôt date du 30 août 2026 (version 1.110). À cette date : 26 cassettes et 11 disquettes fonctionnaient, dont des jeux d’époque chargés en rapide, et Sedoric 3 et 4. Un seul cas demande le chargement au signal : un jeu dont le chargeur maison déchiffre les données en lisant la cassette lui-même.

Lors du passage au nouveau cœur 6502, treize programmes réels (six disquettes Sedoric, sept cassettes) ont donné le même écran avec l’ancien et le nouveau cœur, et les démarrages de l’Oric-1 et de l’Atmos sont identiques octet pour octet.

Les plates-formes

Plate-formeConstructionVérifiée par
Linuxmake (GCC ou Clang, SDL2)la référence ; toute la suite de tests
Windows 11.exe construit sur Linux par la CI, ou MinGW-w64CI windows-build (construction et tests)
macOS (Intel et Apple Silicon)clang d’Apple et SDL2 de HomebrewCI macos-build, sur un vrai Apple Silicon
Navigateurmake wasm (Emscripten)tests de bout en bout dans Chrome sans affichage

Sous Windows, quelques fonctions restent propres à Linux et WSL2 : certains transports série, le serveur GDB, la pause asynchrone de --control, la diffusion Chromecast et le MIDI de l’hôte.

La chronologie

Phosphoric de janvier à octobre 2026Le 31 janvier 2026, première structure du projet (0.1.0). Le 22 février, la 1.0. Le 16 juillet, l'affichage SDL2 devient le défaut (1.67). Le 30 août, le portage macOS (1.110). Le 10 septembre, l'oracle 65x02 mesure 44,26 % de séquences bus exactes ; le 11 septembre, la 2.0 : cœur micro-séquencé à 100 % et machine cadencée au cycle. Le 30 septembre, le menu F1 (2.5) ; le 5 octobre, la 2.30. 405 versions au total.405 versions en huit moisjanv.févr.marsavrilmaijuinjuil.aoûtsept.oct.0.131 janvier : le projet1.022 février1.67SDL2 par défaut1.110portage macOS1.122 → 2.010-11 sept. : de 44,26 % à 100 %2.5menu F12.305 octobreDe l'oracle (V2-S1) à la 2.0 (V2-S11) : onze étapes en moins de 24 heures.La 2.x découpe l'architecture : main() en étapes, cartes en modules, menu F1, LOCI-USB.
De la première structure, le 31 janvier 2026, à la version 2.30, le 5 octobre : 405 versions.
VersionDateCe qu’elle apporte
0.1.031 janvier 2026la structure du projet
1.0.0-alpha22 févrierprocesseur, mémoire, entrées-sorties, image, son et stockage réunis
1.6716 juilletl’affichage SDL2 devient le défaut
1.11030 aoûtla construction native sous macOS
1.12210 septembrel’oracle 65x02 : 44,26 % de séquences bus exactes, le point de départ chiffré
1.12411 septembrele cœur micro-séquencé par défaut : 100 %
2.0.011 septembrela machine cadencée au cycle : horloge maître, VIA, ULA, PSG, FDC, cassette
2.0.212 septembrel’ordre CPU puis ULA dans le cycle, pris sur des mesures du matériel
2.5.030 septembrele menu des périphériques (F1)
2.6 et 2.730 septembrele VIA mesuré sur un vrai 6522, puis son chemin « paresseux » exact
2.13 à 2.193 octobreles cartes d’extension en modules
2.275 octobrela LOCI-USB branchée est prise d’office
2.285 octobrele menu F1 en français ou en anglais
2.30.05 octobrela LOCI-USB lit par blocs : retour au BASIC en 4 s au lieu de 12

Ce qui est prévu

Le dépôt garde ouverts, entre autres :

  • un modèle de piste magnétique pour le contrôleur de disquette (perte réelle d’octets, READ TRACK, CRC) ;
  • l’horodatage sous le cycle de tous les accès du processeur, puis la calibration des constantes du bus d’extension sur du matériel ;
  • faire tourner, dans la CI de Phosphoric, les programmes de test du VIA venus d’un autre émulateur.

Sources dans le dépôt : README.md, VERSION_TRACKING, docs/ACCURACY.md, docs/COMPATIBILITY.md, docs/specs/V2_CYCLE_ACCURACY.md.