Les décisions, en bref
Chaque choix structurant du projet est consigné dans une note de décision (un ADR, pour Architecture Decision Record). Voici les 27 premières, chacune résumée en une phrase, avec l’article qui la raconte.
Dans cette page
Les fondations (13 octobre 2026)
| N° | Décision | Article |
|---|---|---|
| 0001 | Écrire un firmware entièrement neuf, sans reprendre Morpheus | L’idée |
| 0002 | Mettre tout le noyau dans le RP2040 ; ne laisser à la 6502 qu’une porte d’appel de 2 octets et ses vecteurs | Les appels système |
| 0003 | Essayer une MMU dans le contrôleur de bus — abandonnée sur mesure (−34 % de vitesse) | L’idée |
| 0004 | Écrire les pilotes HDMI et USB pour le projet, sans PicoDVI ni TinyUSB | La vidéo |
| 0005 | Faire tourner le RP2040 à 252 MHz par défaut — horloge remplacée par 270 MHz (0027) | Le bus |
| 0006 | Servir le bus par PIO + DMA, l’adresse lue en phase basse | Le bus |
| 0007 | Produire le DVI ligne par ligne, sans image en mémoire ; texte lu directement chez la 6502 | La vidéo |
| 0008 | Lire le clavier USB par un pilote maison et le livrer à la 6502 sans appel système | Le clavier et l’USB |
| 0009 | Lire et écrire les blocs de la clé directement dans la mémoire de la 6502 | Le clavier et l’USB |
| 0010 | Lire le FAT32 avec un module maison et lancer les programmes depuis la clé | Les fichiers |
| 0011 | Décrire l’API dans une source unique, d’où sortent la documentation et la bibliothèque | Les appels système |
| 0012 | Écrire le FAT32 par le noyau, à la demande de la 6502, dans un ordre prudent | Les fichiers |
| 0013 | Gérer FAT12, FAT16 et FAT32 dans un seul module, pour les disquettes | Les fichiers |
Le système grandit (14 octobre 2026)
| N° | Décision | Article |
|---|---|---|
| 0014 | Hiberner par cliché de la mémoire et reprendre à la manière de setjmp/longjmp | L’hibernation |
| 0015 | Multitâche coopératif avec deux espaces de 64 Kio — en partie remplacée par la 0018 | Le multitâche |
| 0016 | Préempter par la NMI, en empruntant 16 octets le temps de l’interruption | Le multitâche |
| 0017 | Mettre le shell hors du firmware, et la bascule Ctrl+Tab dans le noyau | Le multitâche |
| 0018 | Découper la mémoire des processus en pages de 4 Kio, échangées à la commutation | Le multitâche |
| 0019 | Endormir les processus qui attendent une touche ou un délai | Le multitâche |
| 0020 | Faire tourner le vrai noyau sur le PC, avec le cœur 65C02 de Phosphoneo | L’émulateur |
| 0021 | Modéliser le bus PIO + DMA de la carte dans l’émulateur | L’émulateur |
| 0022 | Simuler la vidéo : le vrai pilote DVI face à un écran simulé | L’émulateur |
| 0023 | Simuler l’USB : le vrai pilote face à des appareils simulés | L’émulateur |
| 0024 | Ouvrir une fenêtre SDL2 par un second exécutable, en 64 bits et en temps réel | L’émulateur |
| 0025 | Graphisme en plans de tuiles et lutins, mémoire vidéo hors de la 6502 | Le graphisme |
| 0026 | Faire collaborer les cœurs : le cœur 0 dessine, le cœur 1 encode | Le graphisme |
Un seul signal (15 octobre 2026)
| N° | Décision | Article |
|---|---|---|
| 0027 | Un seul signal pour tous les modes : 720 × 480 à 60 Hz, RP2040 à 270 MHz du démarrage à l’arrêt | La vidéo |
Ce que ces décisions ont en commun
- Garder la mémoire de la 6502. Presque chaque décision cherche à ne rien réserver chez elle : porte de 2 octets, texte et graphisme lus sur place, clavier dans une file du programme, NMI qui emprunte puis rend ses octets.
- Mesurer avant d’adopter. La MMU a été écartée sur un chiffre ; la copie des pages par DMA, plus rapide, est restée en option parce qu’elle faisait rater une ligne vidéo au démarrage, une fois sur deux, sans cause trouvée.
- Ne pas trahir le matériel. Quand l’émulateur ne pouvait pas faire tourner le vrai pilote vidéo en 64 bits, c’est l’émulateur qui a changé (compilé en 32 bits), pas le pilote.