Tachibana
Language: English

Neo6502: a real 65C02 and an RP2040 for 30 euros — our work in progress

#neo6502

The Olimex board, why Tachibana cares, nine projects under way — now tested on a real board.

By bmarty · Tachibana · 15 September 2026 · updated 16 September 2026

The Neo6502 is a small board from Olimex (80 × 55 mm, OSHW-certified open hardware, 30 euros): a real W65C02S processor, an RP2040 microcontroller with 2 MB of flash, a DVI/HDMI output, a USB-A host port for the keyboard, a UEXT connector, a 6502 bus connector and audio out. The firmware, written by Paul Robson, turns the RP2040 into the machine's chipset: 320×240 video in 256 colours, sprites, tiles, blitter, 4-voice sound, FAT32 files on a USB stick, all driven from the 6502 through an API at $FF00. NeoBASIC boots instantly; C (llvm-mos, cc65) and assembly are supported.

The Neo6502 at a glance

ProcessorW65C02S
MicrocontrollerRP2040, 2 MB flash
VideoDVI/HDMI — 320×240, 256
KeyboardUSB-A host
ExpansionUEXT, 6502 bus
Audio3.5 mm, speaker
Form factor, licence80 × 55 mm, OSHW
Price30 €

320×240 video in 256 colours, 6.25 MHz and ≈ 61K of usable RAM: figures from our repositories' documents; the rest comes from the Olimex product sheet.

1. Why Tachibana cares

A 65C02 at 6.25 MHz, about 61K of usable RAM (the screen lives on the RP2040 side), a real palette and fast files: for our Oric ports that is six times the speed and three times the memory, on a machine that exists, is available, and costs 30 euros. And the 6502 bus comes out on a connector. We see both a software test bench and a target platform.

2. Phosphoneo, the reference model

In the line of Phosphoric, Phosphoneo is a golden-model emulator of the Neo6502: cycle-stepped, 65C02 core 100% validated on the SingleStepTests oracle (2.54 million cases), firmware API linked from the official code, deterministic tooling (headless, captures, auto-typing, traces, savestates). Sprint 1 delivered (v0.2.0): NeoBASIC boots headless and captures match the official emulator.

3. Neo6502kbd, the keyboard

The firmware provides an ASCII queue and the raw state of each key. Neo6502kbd adds, on the 6502 side, a 65C02 assembly driver (ca65): key-press detection, an event queue (scancode, modifiers), a configurable base / Shift / AltGr / Ctrl mapping compiled from a readable .kmap file (us, fr) by neokbd, a Go tool that generates, checks and simulates.

4. Neo6502bbc, BBC Micro games

The BBC Micro and the Neo6502 share the 6502; BBC games call the MOS through fixed vectors at $FFxx, easy to repatch. Neo6502bbc redirects OSWRCH, OSBYTE, OSWORD, OSCLI, OSRDCH, OSFIND and OSGBPB to the firmware API. Epic 3 in progress: a BBC Model B emulator (reload, bbc branch) boots MOS 1.20, BASIC 2 and DFS on the PC and takes Spellbinder to its first playable room. The Neo6502 does better than the Oric for these ports: native 320 pixels, MODE 5 in 4 exact colours.

5. The firmware fork

Update of 30 September 2026: this fork was archived on 19 September 2026; its multi-boot and its 320 × 256 mode were not carried over. The collective's firmware is now Trinity, which has a trial 320 × 240 mode in 16 colours.

Three documented sprints: PC emulator and reference captures; video modes (PicoDVI budget, multi-mode architecture, Hercules 720×350 with a 9×14 font, 320×256 in 16 colours, screen pages, XOR sprites); system (tick IRQ, a 10-vector pre-emptive scheduler in the 6502 kernel, RP2040 multi-boot: a selector and four 480K flash slots for the Neo firmware and reload BBC, Oric and Apple //e images, chosen from the monitor).

6. AsteroNeo, Astéroric ported

AsteroNeo is the port of Astéroric, our study clone of Asteroids for the Oric-1: the game logic (waves, fragmentation, saucer AI, hyperspace, high scores — transposed from the arcade rev 4 disassembly) is kept as is in cc65 C; everything that touched the Oric hardware is replaced by the firmware API — XOR lines and pixels in mode 0 (320×240), asteroids as polygons derived from the arcade shapes and smoothed (24/16/10 vertices) drawn by the RP2040 (poly_xor in assembly), keyboard by remappable HID codes, 4-channel sound, a 30 Hz game step on 60 Hz frames. Sprint 1 delivered, sprint 2 (playtest and polish) under way: v0.2.0, asteroneo.neo binary published on GitHub and Framagit, host tests (gcc), Phosphoneo captures compared bit for bit, smoke test in the official emulator.

7. Prophet, the program repository

Prophet, our server, is an independent Go reimplementation of the original Prophet server, the Neo6502 community's program repository: the prophet.neo client protocol reproduced byte for byte, hardened point by point (token-protected refresh, bounded inputs, confined files, SHA-256 fingerprints), dual HTTP and HTTPS listeners, static .neo verification and dynamic audit in Phosphoneo (56 programs out of 56 replayed), web interface, our own repository where AsteroNeo is published. In production at prophet.3617.fr; a native graphical client has started.

8. The framing stage

Oric 2 Neo: a next-generation Oric on the Neo6502, Oric-1/Atmos compatible, extended by ROM and firmware. Yuzu: the port of a strategy game written in 6502 assembly (blitted mono framebuffer). Sudachi: the port of an adventure game through a script interpreter. All in sprint 0: framing, no code.

9. What we do not claim

Update of 26 September 2026: a Neo6502 board is now on the desk, and all our programs have been tested on it — the Trinity firmware, NeoDOS, ProphetGui, AsteroNeo, Poker and the others, published on prophet.3617.fr. The automated tests keep running in the official emulator, in Phosphoneo and in co-simulation (libemul).

Sources & links

← Neo6502 · Prophet 0.25 → · SWD → · Prophet → · AsteroNeo →