Eliott65 pour les nuls
Vous n’avez jamais touché à un microcontrôleur ? Aucune importance. En dix minutes, une photo et quelques schémas, voici ce qu’est Eliott65 et pourquoi il est un peu particulier.
Dans cette page
1. La machine : un ordinateur 8 bits d’aujourd’hui
La Neo6502kbd est un petit ordinateur vendu par Olimex, avec son clavier dans le boîtier. Son cœur est un vrai 6502, le processeur des Apple II, Commodore 64, Oric et BBC Micro : une puce neuve, fabriquée aujourd’hui par WDC sous le nom W65C02S.
Voici la carte, sortie de son boîtier, sur notre banc :
- W65C02S (U6) — le vrai processeur 6502. Il exécute les programmes, mais n’a aucune mémoire à lui.
- 3 × 74LVC245 (U7 à U9) — trois aiguillages : ils font passer à tour de rôle l’adresse basse, l’adresse haute et la donnée sur les mêmes 8 fils.
- RP2040 (U3) — le microcontrôleur à deux cœurs ARM. Il joue la mémoire de la 6502 et fait tourner tout Eliott65 : noyau, vidéo, USB, fichiers.
- Flash P25Q16 (U1) — 2 Mo où dort le firmware Eliott65 quand la carte est éteinte.
- Hub USB FE1.1s (U5) — répartit l’unique port USB du RP2040 sur les quatre prises.
- Prises USB-A — clavier, clé USB, souris. Le clavier du boîtier est un clavier USB ordinaire.
- Sortie HDMI — l’image, produite bit par bit par le RP2040, sans puce vidéo.
- USB-C : alimentation et PGM — l’alimentation, et la prise PGM pour parler au PC (elle met alors le hub en pause).
- Connecteur SWD1 — le port de débogage : trois fils vers une sonde qui lit et écrit la mémoire du RP2040 en marche.
- Haut-parleur (SPK1) — un transducteur magnétique : Eliott65 lui fait jouer notes et mélodies (service SON).
- Connecteur UEXT — extensions I2C, SPI et série (non utilisées par Eliott65).
Photo de notre banc : la carte sous tension, clé USB branchée, sonde de débogage sur SWD1.
Ce qui surprend quand on regarde de près : il n’y a pas de puce de mémoire à côté de la 6502. Pas de ROM, pas de RAM. La 6502 n’est reliée qu’à trois petites puces d’aiguillage (repère 2), et derrière elles, à un RP2040 (repère 3), le microcontrôleur du Raspberry Pi Pico.
2. L’astuce de la carte : un RP2040 qui joue la mémoire
Un processeur passe son temps à dire « donne-moi l’octet à telle adresse » ou « range cet octet à telle adresse ». Sur un ordinateur classique, c’est une puce de mémoire qui répond. Ici, c’est le RP2040 : il écoute chaque demande de la 6502 et répond lui-même, plusieurs millions de fois par seconde. Les 64 Kio que la 6502 croit avoir sont en réalité un morceau de la mémoire du RP2040.
3. L’idée d’Eliott65 : laisser toute la mémoire à la 6502
Sur un micro-ordinateur des années 80, le système occupe une bonne partie de la mémoire : ROM du BASIC, zone de l’écran, variables du système. Ce qui reste pour vos programmes est souvent bien moins que les 64 Kio que la 6502 sait adresser.
Puisque le RP2040 est là, à côté, avec ses deux cœurs et ses 264 Kio de mémoire, Eliott65 y installe tout le système : le noyau, les pilotes, la gestion des fichiers. Dans la mémoire de la 6502, il ne garde que 8 octets.
Ces 8 octets, ce sont :
- 2 octets de « porte » (en
$FFF8et$FFF9) : c’est par là que les programmes demandent un service au système ; - 6 octets de vecteurs (de
$FFFAà$FFFF) : la 6502 les exige, ils lui disent où démarrer et où aller en cas d’interruption.
4. Demander un service : la porte d’appel
Quand un programme veut afficher du texte, lire un fichier ou connaître l’heure, il fait un appel système. Avec Eliott65, cela se passe comme au guichet : on remplit un formulaire, on le glisse par la fente, on attend la réponse.
Le formulaire (le bloc de paramètres) est rangé où le programme veut, dans sa propre mémoire. Rien n’est réservé d’avance pour lui. C’est ce qui permet de ne garder que 8 octets.
5. Ce qu’on voit à l’écran
Au démarrage, Eliott65 lance un petit programme de test qui vérifie la mémoire et affiche l’état du système, puis il cherche un shell sur la clé USB : une ligne de commande où l’on tape le nom d’un programme pour le lancer.

Eliott65 sait aussi faire du graphisme : des décors en tuiles qui défilent et des lutins (les sprites, ces petits personnages qui se déplacent par-dessus le décor).

6. Plusieurs programmes à la fois
Eliott65 peut faire tourner jusqu’à 8 programmes en même temps. Un seul a l’écran et le clavier (on change avec Ctrl+Tab) ; les autres continuent en arrière-plan.
Mais la 6502 n’a qu’une seule mémoire de 64 Kio. L’astuce : quand on passe d’un programme à l’autre, le RP2040 range les pages utiles du premier dans sa propre réserve et remet celles du second à leur place. Comme la plupart des programmes n’utilisent qu’une petite partie de leurs 64 Kio, cela tient.
Et si un programme ne rend jamais la main ? Le noyau l’interrompt quand même, grâce à une interruption matérielle de la 6502 (la NMI) : c’est le multitâche préemptif.
7. Éteindre sans rien perdre : l’hibernation
Puisque toute la mémoire de la 6502 est dans le RP2040, le système peut la sauvegarder dans un fichier sur la clé, avec l’état de l’écran et du clavier. Plus tard, on « lance » ce fichier comme un programme, et la machine reprend exactement où elle en était, au même octet près.
8. En résumé
| Question | Réponse courte |
|---|---|
| C’est quoi ? | Un firmware, un noyau et un petit système d’exploitation pour la Neo6502kbd. |
| Qu’est-ce qui change ? | Le système vit dans le RP2040 ; la 6502 garde 65 528 octets sur 65 536. |
| Ça marche vraiment ? | Oui : tout ce qui est décrit ici a été mesuré et validé sur la carte. |
| Ça remplace quoi ? | Le firmware d’origine de la carte. Les deux ne sont pas compatibles : les programmes doivent être écrits pour Eliott65. |
| Et ensuite ? | Voir Où en est le projet. |
Pour aller plus loin, chaque idée de cette page a son article : le bus, les appels système, la vidéo, le multitâche, l’hibernation. Et les mots techniques sont expliqués dans le glossaire.