Tachibana

Neo6502 › Articles › Neo6502

Neo6502 : un vrai 65C02 et un RP2040 pour 30 euros — nos chantiers

La carte d'Olimex, pourquoi Tachibana s'y intéresse, dix chantiers en cours — et ce qu'on ne dit pas encore.

Par bmarty · Tachibana · 15 septembre 2026 · mis à jour le 16 septembre 2026

Le Neo6502 est une petite carte d'Olimex (80 × 55 mm, matériel libre certifié OSHW, 30 euros) : un processeur W65C02S réel, un microcontrôleur RP2040 avec 2 Mo de flash, une sortie DVI/HDMI, un port USB-A hôte pour le clavier, un connecteur UEXT, un connecteur bus 6502 et une sortie audio. Le firmware, écrit par Paul Robson, fait du RP2040 le chipset de la machine : vidéo 320×240 en 256 couleurs, sprites, tuiles, blitter, son 4 voix, fichiers FAT32 sur clé USB, le tout piloté depuis le 6502 par une API en $FF00. NeoBASIC démarre en un instant ; C (llvm-mos, cc65) et assembleur sont pris en charge.

Le Neo6502 en bref

ProcesseurW65C02S
MicrocontrôleurRP2040, 2 MB flash
VidéoDVI/HDMI — 320×240, 256
ClavierUSB-A host
ExtensionUEXT, 6502 bus
Audio3.5 mm, speaker
Format, licence80 × 55 mm, OSHW
Prix30 €

Vidéo 320×240 en 256 couleurs, 6,25 MHz et ≈ 61 Ko de RAM utile : valeurs des documents de nos dépôts ; le reste vient de la fiche Olimex.

1. Pourquoi Tachibana s'y intéresse

Un 65C02 à 6,25 MHz, environ 61 Ko de RAM utile (l'écran est côté RP2040), une palette réelle et des fichiers rapides : pour nos portages Oric, c'est six fois la vitesse et le triple de mémoire, sur une machine qui existe, disponible, à 30 euros. Et le bus 6502 est sorti sur un connecteur. Nous y voyons à la fois un banc d'essai logiciel et une plateforme cible.

2. Phosphoneo, le modèle de référence

Dans la lignée de Phosphoric, Phosphoneo est un émulateur golden model du Neo6502 : cadencé au cycle, cœur 65C02 validé à 100 % sur l'oracle SingleStepTests (2,54 millions de cas), API du firmware liée depuis le code officiel, outillage déterministe (headless, captures, frappe automatique, traces, savestates). Sprint 1 livré (v0.2.0) : NeoBASIC démarre en headless et les captures sont identiques à l'émulateur officiel.

3. Neo6502kbd, le clavier

Le firmware fournit une file ASCII et l'état brut des touches. Neo6502kbd ajoute côté 6502 un driver en assembleur 65C02 (ca65) : détection des appuis, file d'événements (scancode, modificateurs), mappage configurable base / Shift / AltGr / Ctrl, compilé depuis un fichier .kmap lisible (us, fr) par neokbd, un outil en Go qui génère, vérifie et simule.

4. Neo6502bbc, les jeux BBC Micro

Le BBC Micro et le Neo6502 partagent le 6502 ; les jeux BBC appellent le MOS par des vecteurs fixes en $FFxx, faciles à repatcher. Neo6502bbc redirige OSWRCH, OSBYTE, OSWORD, OSCLI, OSRDCH, OSFIND et OSGBPB vers l'API du firmware. Épopée 3 en cours : un émulateur BBC Model B (reload, branche bbc) démarre le MOS 1.20, BASIC 2 et le DFS sur PC, et amorce Spellbinder jusqu'à la première salle jouable. Le Neo6502 fait mieux que l'Oric pour ces portages : 320 pixels natifs, MODE 5 en 4 couleurs exactes.

5. Le fork du firmware

Trois sprints documentés : émulateur PC et captures de référence ; modes vidéo (budget PicoDVI, architecture multi-modes, Hercules 720×350 avec police 9×14, 320×256 en 16 couleurs, pages écran, sprites XOR) ; système (tick IRQ, ordonnanceur préemptif à 10 vecteurs dans le noyau 6502, multi-boot du RP2040 : un sélecteur et quatre slots de 480 Ko en flash pour le firmware Neo et des images reload BBC, Oric, Apple //e, choisis depuis le moniteur).

6. AsteroNeo, Astéroric porté

AsteroNeo est le portage d'Astéroric, notre clone d'étude d'Asteroids pour Oric-1 : la logique de jeu (vagues, fragmentation, IA de la soucoupe, hyperespace, high scores — transposée du désassemblage arcade rev 4) est reprise telle quelle en C cc65 ; tout ce qui touchait au matériel Oric est remplacé par l'API du firmware — lignes et pixels XOR en mode 0 (320×240), astéroïdes en polygones dérivés des formes arcade et lissés (24/16/10 sommets) tracés par le RP2040 (poly_xor en assembleur), clavier par codes HID remappables, son 4 canaux, pas de jeu à 30 Hz sur des trames à 60 Hz. Sprint 1 livré, sprint 2 (playtest et polish) en cours : v0.2.0, binaire asteroneo.neo publié sur GitHub et Framagit, tests host (gcc), captures Phosphoneo comparées bit à bit, test de fumée dans l'émulateur officiel.

7. Neo6502Prophet, le dépôt de programmes

Neo6502Prophet est une réimplémentation indépendante en Go du serveur Prophet, le dépôt de programmes de la communauté Neo6502 : protocole du client prophet.neo reproduit octet pour octet, durci point par point (rafraîchissement à jeton, entrées bornées, fichiers confinés, empreintes SHA-256), double écoute HTTP et HTTPS, vérification statique des .neo et audit dynamique dans Phosphoneo (56 programmes sur 56 rejoués), interface web, dépôt propre où AsteroNeo est publié. En production sur prophet.3617.fr ; un client natif graphique est démarré.

8. Les cadrages

Neo6502drive : disque dur et disquettes virtuels sur un Feather RP2040 USB Host, en clé USB FAT32 (mode MSC, aucun driver) ou en périphérique bloc UEXT. Oric 2 Neo : une machine Oric de nouvelle génération sur le Neo6502, compatible Oric-1/Atmos, étendue par la ROM et le firmware. Neo6502civ : Civilization 1 en assembleur 6502 (framebuffer mono blitté). Neo6502scumm : Maniac Mansion par l'interpréteur SCUMM v0. Tous en sprint 0 : cadrage, aucun code.

9. Ce qu'on ne dit pas

Aucune de ces briques n'a encore tourné sur une carte : tout est vérifié dans l'émulateur officiel, dans Phosphoneo et en co-simulation (libemul). Le renderer DVI, le changement d'horloge, le timer et la boucle bus attendent un Neo6502 sur la table. Les protocoles de validation sont écrits ; ils seront joués dès que la carte sera là.

Sources & liens

← Neo6502 · Prophet → · AsteroNeo →