Aller au contenu
Eliott65wiki
Sommaire

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écisionArticle
0001Écrire un firmware entièrement neuf, sans reprendre MorpheusL’idée
0002Mettre tout le noyau dans le RP2040 ; ne laisser à la 6502 qu’une porte d’appel de 2 octets et ses vecteursLes appels système
0003Essayer 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 TinyUSBLa vidéo
0005Faire tourner le RP2040 à 252 MHz par défaut — horloge remplacée par 270 MHz (0027)Le bus
0006Servir le bus par PIO + DMA, l’adresse lue en phase basseLe bus
0007Produire le DVI ligne par ligne, sans image en mémoire ; texte lu directement chez la 6502La vidéo
0008Lire le clavier USB par un pilote maison et le livrer à la 6502 sans appel systèmeLe clavier et l’USB
0009Lire et écrire les blocs de la clé directement dans la mémoire de la 6502Le clavier et l’USB
0010Lire le FAT32 avec un module maison et lancer les programmes depuis la cléLes fichiers
0011Décrire l’API dans une source unique, d’où sortent la documentation et la bibliothèqueLes appels système
0012Écrire le FAT32 par le noyau, à la demande de la 6502, dans un ordre prudentLes fichiers
0013Gérer FAT12, FAT16 et FAT32 dans un seul module, pour les disquettesLes fichiers

Le système grandit (14 octobre 2026)

N°DécisionArticle
0014Hiberner par cliché de la mémoire et reprendre à la manière de setjmp/longjmpL’hibernation
0015Multitâche coopératif avec deux espaces de 64 Kio — en partie remplacée par la 0018Le multitâche
0016Préempter par la NMI, en empruntant 16 octets le temps de l’interruptionLe multitâche
0017Mettre le shell hors du firmware, et la bascule Ctrl+Tab dans le noyauLe multitâche
0018Découper la mémoire des processus en pages de 4 Kio, échangées à la commutationLe multitâche
0019Endormir les processus qui attendent une touche ou un délaiLe multitâche
0020Faire tourner le vrai noyau sur le PC, avec le cœur 65C02 de PhosphoneoL’émulateur
0021Modéliser le bus PIO + DMA de la carte dans l’émulateurL’émulateur
0022Simuler la vidéo : le vrai pilote DVI face à un écran simuléL’émulateur
0023Simuler l’USB : le vrai pilote face à des appareils simulésL’émulateur
0024Ouvrir une fenêtre SDL2 par un second exécutable, en 64 bits et en temps réelL’émulateur
0025Graphisme en plans de tuiles et lutins, mémoire vidéo hors de la 6502Le graphisme
0026Faire collaborer les cœurs : le cœur 0 dessine, le cœur 1 encodeLe graphisme

Un seul signal (15 octobre 2026)

N°DécisionArticle
0027Un seul signal pour tous les modes : 720 × 480 à 60 Hz, RP2040 à 270 MHz du démarrage à l’arrêtLa 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.

Sources dans le dépôt : docs/adr/.