Aller au contenu
Phosphoricwiki
Sommaire

Les décisions

Chaque choix structurant de Phosphoric a sa fiche : le contexte, ce qui a été décidé, ce que cela coûte. Une décision remplacée n’est pas effacée ; elle renvoie à la suivante.

N°DécisionPourquoiCe que ça coûte
0001Le Makefile est le seul système de construction (2.1.3)le CMakeLists.txt n’était plus entretenu : vingt sources y manquaientplus de projets d’IDE générés ; toute nouvelle source s’ajoute au Makefile
0002Les commandes externes passent par une file vidée par la boucle de l’émulateur (1.52)--control, l’API HTTP et le menu F1 modifient l’état ; exécutées en pleine instruction, elles le corrompraientune commande HTTP attend jusqu’à une trame (20 ms) ; la file doit être fermée avant le serveur
0003L’ordre des ticks est une table à part, distincte de l’ordre de répartition des accès (2.4.0)les deux ordres diffèrent depuis toujours, et celui des ticks a des effets observablesles unifier demanderait de prouver l’équivalence octet par octet
0004Changer de cartes relance le processus (2.11.0)brancher une carte ouvre ROM, surcouche, bus, transport, et parfois un firmware en marcheun vrai démarrage à froid : la mémoire de l’Oric est perdue ; la version web ne peut pas se relancer
0005Deux branches miroir, française et anglaise, qui ne diffèrent que par les commentaires (2.1.4)le projet est écrit en français, mais publié aussi pour un public anglophonechaque livraison se fait en deux temps : main, puis la traduction dans main-en
0006Les cartes d’extension sont des modules, avec une liste explicite (2.13.0)une carte simple touchait une dizaine de fichiers ; ajouter une carte était long et sujet aux oublispas de chargement dynamique ; une ligne par carte dans la liste

Ce que chacune a permis

  • 0001 a rendu la construction fiable : le piège « make SDL2=0 puis make tests » qui mêlait des objets incompatibles a disparu par construction.
  • 0002 a donné un seul interpréteur, control_dispatch(), à toutes les sources de commandes. Depuis la 2.12.0, ses commandes sont rangées par thème (control_cmd_*.c).
  • 0003 a permis d’ajouter un périphérique cadencé à la place exacte qui conserve le comportement mesuré, et de dérouler la boucle des ticks (une boucle générique coûtait 22 % par trame).
  • 0004 a rendu les cartes du menu F1 modifiables : une carte ajoutée au registre apparaît dans le menu sans autre changement.
  • 0005 est vérifiée par un outil, tools/check_comment_only_diff.py, qui retire les commentaires et exige des fichiers identiques ; make test-comment-diff teste cet outil lui-même.
  • 0006 a été prouvée par make test-card-template : la carte d’exemple, ajoutée à une copie de l’arbre, marche de bout en bout.

Les fiches complètes sont dans le dépôt, docs/adr/.

Sources dans le dépôt : docs/adr/README.md, docs/adr/0001-makefile-seul-build.md, docs/adr/0002-file-de-commandes.md, docs/adr/0003-ordre-des-ticks.md, docs/adr/0004-cartes-par-relance.md, docs/adr/0005-miroirs-fr-en.md, docs/adr/0006-cartes-en-modules.md.