Neo6502 › Artikelen › Neo6502
Neo6502: een echte 65C02 en een RP2040 voor 30 euro — waar wij aan werken
Het bordje van Olimex, waarom Tachibana erin geïnteresseerd is, tien projecten in uitvoering — en wat we nog niet beweren.
De Neo6502 is een klein bordje van Olimex (80 × 55 mm, OSHW-gecertificeerde open hardware, 30 euro): een echte W65C02S-processor, een RP2040-microcontroller met 2 MB flash, een DVI/HDMI-uitgang, een USB-A-hostpoort voor het toetsenbord, een UEXT-connector, een 6502-busconnector en een audio-uitgang. De firmware, geschreven door Paul Robson, maakt van de RP2040 de chipset van de machine: video 320×240 in 256 kleuren, sprites, tiles, blitter, 4-stemmig geluid, FAT32-bestanden op een USB-stick, alles aangestuurd vanuit de 6502 via een API op $FF00. NeoBASIC start onmiddellijk; C (llvm-mos, cc65) en assembler worden ondersteund.
De Neo6502 in het kort
| Processor | W65C02S |
| Microcontroller | RP2040, 2 MB flash |
| Video | DVI/HDMI — 320×240, 256 |
| Toetsenbord | USB-A host |
| Uitbreiding | UEXT, 6502 bus |
| Audio | 3.5 mm, speaker |
| Formaat, licentie | 80 × 55 mm, OSHW |
| Prijs | 30 € |
Video 320×240 in 256 kleuren, 6,25 MHz en ≈ 61 KB bruikbaar RAM: waarden uit de documenten van onze repositories; de rest komt van het productblad van Olimex.
1. Waarom Tachibana geïnteresseerd is
Een 65C02 op 6,25 MHz, ongeveer 61 KB bruikbaar RAM (het scherm zit aan de kant van de RP2040), een echt palet en snelle bestanden: voor onze Oric-ports is dat zes keer de snelheid en drie keer het geheugen, op een machine die bestaat, leverbaar is en 30 euro kost. En de 6502-bus is naar buiten gebracht op een connector. Wij zien er zowel een softwaretestbank als een doelplatform in.
2. Phosphoneo, het referentiemodel
In de lijn van Phosphoric is Phosphoneo een golden model-emulator van de Neo6502: cyclusgestuurd, 65C02-kern 100 % gevalideerd op het SingleStepTests-orakel (2,54 miljoen gevallen), firmware-API gelinkt vanuit de officiële code, deterministische tooling (headless, schermopnames, automatisch typen, traces, savestates). Sprint 1 opgeleverd (v0.2.0): NeoBASIC start headless en de opnames zijn identiek aan de officiële emulator.
3. Neo6502kbd, het toetsenbord
De firmware levert een ASCII-wachtrij en de ruwe toestand van elke toets. Neo6502kbd voegt aan de 6502-kant een driver in 65C02-assembler (ca65) toe: detectie van aanslagen, een gebeurteniswachtrij (scancode, modifiers), een configureerbare toewijzing basis / Shift / AltGr / Ctrl, gecompileerd uit een leesbaar .kmap-bestand (us, fr) door neokbd, een Go-tool die genereert, controleert en simuleert.
4. Neo6502bbc, BBC Micro-spellen
De BBC Micro en de Neo6502 delen de 6502; BBC-spellen roepen het MOS aan via vaste vectoren op $FFxx, eenvoudig om te leiden. Neo6502bbc stuurt OSWRCH, OSBYTE, OSWORD, OSCLI, OSRDCH, OSFIND en OSGBPB door naar de firmware-API. Epic 3 loopt: een BBC Model B-emulator (reload, branch bbc) start MOS 1.20, BASIC 2 en DFS op de pc en brengt Spellbinder tot de eerste speelbare kamer. De Neo6502 doet het beter dan de Oric voor deze ports: 320 pixels native, MODE 5 in 4 exacte kleuren.
5. De firmware-fork
Drie gedocumenteerde sprints: pc-emulator en referentieopnames; videomodi (PicoDVI-budget, multimodus-architectuur, Hercules 720×350 met 9×14-lettertype, 320×256 in 16 kleuren, schermpagina's, XOR-sprites); systeem (tick-IRQ, een preëmptieve scheduler met 10 vectoren in de 6502-kernel, multi-boot van de RP2040: een selector en vier flash-slots van 480 KB voor de Neo-firmware en reload-images BBC, Oric en Apple //e, gekozen vanuit de monitor).
6. AsteroNeo, Astéroric geport
AsteroNeo is de port van Astéroric, onze studiekloon van Asteroids voor de Oric-1: de spellogica (golven, fragmentatie, AI van de schotel, hyperspace, highscores — overgezet uit de disassemblage van de arcade-ROM rev 4) blijft ongewijzigd in cc65-C; alles wat de Oric-hardware raakte is vervangen door de firmware-API — XOR-lijnen en -pixels in modus 0 (320×240), asteroïden als veelhoeken afgeleid van de arcadevormen en gladgestreken (24/16/10 hoekpunten) getekend door de RP2040 (poly_xor in assembler), toetsenbord via herconfigureerbare HID-codes, 4-kanaals geluid, spelstap op 30 Hz op frames van 60 Hz. Sprint 1 geleverd, sprint 2 (playtest en polish) loopt: v0.2.0, binary asteroneo.neo gepubliceerd op GitHub en Framagit, hosttests (gcc), Phosphoneo-opnames bit voor bit vergeleken, rooktest in de officiële emulator.
7. Neo6502Prophet, de programmarepository
Neo6502Prophet is een onafhankelijke Go-herimplementatie van de Prophet-server, de programmarepository van de Neo6502-gemeenschap: het protocol van de client prophet.neo byte voor byte nagemaakt, punt voor punt gehard (verversen met token, begrensde invoer, ingeperkte bestanden, SHA-256-vingerafdrukken), dubbele HTTP- en HTTPS-listener, statische controle van .neo-bestanden en dynamische audit in Phosphoneo (56 van de 56 programma's afgespeeld), webinterface, eigen repository waar AsteroNeo is gepubliceerd. In productie op prophet.3617.fr; een native grafische client is gestart.
8. De verkenningen
Neo6502drive: virtuele harde schijf en diskettes op een Feather RP2040 USB Host, als FAT32-USB-stick (MSC-modus, geen driver) of als UEXT-blokapparaat. Oric 2 Neo: een Oric van de nieuwe generatie op de Neo6502, compatibel met Oric-1/Atmos, uitgebreid door ROM en firmware. Neo6502civ: Civilization 1 in 6502-assembler (geblit mono-framebuffer). Neo6502scumm: Maniac Mansion via de SCUMM v0-interpreter. Allemaal in sprint 0: verkenning, geen code.
9. Wat we niet beweren
Geen van deze bouwstenen heeft al op een bordje gedraaid: alles wordt gecontroleerd in de officiële emulator, in Phosphoneo en in co-simulatie (libemul). De DVI-renderer, de klokwissel, de timer en de buslus wachten op een Neo6502 op tafel. De validatieprotocollen zijn geschreven; ze worden uitgevoerd zodra het bordje er is.