Tachibana

Neo6502 › Artículos › Neo6502

Neo6502: un 65C02 real y un RP2040 por 30 euros — nuestros proyectos

La placa de Olimex, por qué le interesa a Tachibana, diez proyectos en marcha — y lo que aún no decimos.

Por bmarty · Tachibana · 15 de septiembre de 2026 · actualizado el 16 de septiembre de 2026

El Neo6502 es una pequeña placa de Olimex (80 × 55 mm, hardware libre certificado OSHW, 30 euros): un procesador W65C02S real, un microcontrolador RP2040 con 2 MB de flash, salida DVI/HDMI, un puerto USB-A host para el teclado, un conector UEXT, un conector de bus 6502 y salida de audio. El firmware, escrito por Paul Robson, convierte al RP2040 en el chipset de la máquina: vídeo 320×240 en 256 colores, sprites, tiles, blitter, sonido de 4 voces, archivos FAT32 en una llave USB, todo controlado desde el 6502 por una API en $FF00. NeoBASIC arranca al instante; C (llvm-mos, cc65) y ensamblador están soportados.

El Neo6502 en pocas palabras

ProcesadorW65C02S
MicrocontroladorRP2040, 2 MB flash
VídeoDVI/HDMI — 320×240, 256
TecladoUSB-A host
ExpansiónUEXT, 6502 bus
Audio3.5 mm, speaker
Formato, licencia80 × 55 mm, OSHW
Precio30 €

Vídeo 320×240 en 256 colores, 6,25 MHz y ≈ 61 K de RAM útil: valores de los documentos de nuestros repositorios; el resto viene de la ficha de Olimex.

1. Por qué le interesa a Tachibana

Un 65C02 a 6,25 MHz, unos 61 K de RAM útil (la pantalla vive en el lado del RP2040), una paleta real y archivos rápidos: para nuestros ports de Oric es seis veces la velocidad y el triple de memoria, en una máquina que existe, disponible, por 30 euros. Y el bus 6502 sale por un conector. Vemos a la vez un banco de pruebas software y una plataforma destino.

2. Phosphoneo, el modelo de referencia

En la línea de Phosphoric, Phosphoneo es un emulador golden model del Neo6502: a ritmo de ciclo, núcleo 65C02 validado al 100 % con el oráculo SingleStepTests (2,54 millones de casos), API del firmware enlazada desde el código oficial, herramientas deterministas (headless, capturas, tecleo automático, trazas, savestates). Sprint 1 entregado (v0.2.0): NeoBASIC arranca en headless y las capturas coinciden con el emulador oficial.

3. Neo6502kbd, el teclado

El firmware ofrece una cola ASCII y el estado bruto de cada tecla. Neo6502kbd añade en el lado 6502 un driver en ensamblador 65C02 (ca65): detección de pulsaciones, cola de eventos (scancode, modificadores), mapeo configurable base / Shift / AltGr / Ctrl compilado desde un archivo .kmap legible (us, fr) por neokbd, una herramienta en Go que genera, comprueba y simula.

4. Neo6502bbc, los juegos del BBC Micro

El BBC Micro y el Neo6502 comparten el 6502; los juegos BBC llaman al MOS por vectores fijos en $FFxx, fáciles de reparchear. Neo6502bbc redirige OSWRCH, OSBYTE, OSWORD, OSCLI, OSRDCH, OSFIND y OSGBPB a la API del firmware. Épica 3 en curso: un emulador BBC Model B (reload, rama bbc) arranca el MOS 1.20, BASIC 2 y el DFS en el PC y lleva Spellbinder hasta su primera sala jugable. El Neo6502 lo hace mejor que el Oric para estos ports: 320 píxeles nativos, MODE 5 con 4 colores exactos.

5. El fork del firmware

Tres sprints documentados: emulador PC y capturas de referencia; modos de vídeo (presupuesto PicoDVI, arquitectura multimodo, Hercules 720×350 con fuente 9×14, 320×256 en 16 colores, páginas de pantalla, sprites XOR); sistema (tick IRQ, planificador apropiativo de 10 vectores en el núcleo 6502, multiarranque del RP2040: un selector y cuatro slots de 480 K en flash para el firmware Neo e imágenes reload BBC, Oric y Apple //e, elegidos desde el monitor).

6. AsteroNeo, Astéroric portado

AsteroNeo es el port de Astéroric, nuestro clon de estudio de Asteroids para Oric-1: la lógica del juego (oleadas, fragmentación, IA del platillo, hiperespacio, récords — transpuesta del desensamblado arcade rev 4) se conserva tal cual en C cc65; todo lo que tocaba el hardware Oric se sustituye por la API del firmware — líneas y píxeles XOR en modo 0 (320×240), asteroides como polígonos derivados de las formas arcade y suavizados (24/16/10 vértices) trazados por el RP2040 (poly_xor en ensamblador), teclado por códigos HID remapeables, sonido de 4 canales, paso de juego a 30 Hz sobre cuadros a 60 Hz. Sprint 1 entregado, sprint 2 (playtest y pulido) en curso: v0.2.0, binario asteroneo.neo publicado en GitHub y Framagit, tests host (gcc), capturas Phosphoneo comparadas bit a bit, prueba de humo en el emulador oficial.

7. Neo6502Prophet, el repositorio de programas

Neo6502Prophet es una reimplementación independiente en Go del servidor Prophet, el repositorio de programas de la comunidad Neo6502: protocolo del cliente prophet.neo reproducido byte a byte, endurecido punto por punto (refresco con token, entradas acotadas, archivos confinados, huellas SHA-256), doble escucha HTTP y HTTPS, verificación estática de los .neo y auditoría dinámica en Phosphoneo (56 programas de 56 reproducidos), interfaz web, repositorio propio donde está publicado AsteroNeo. En producción en prophet.3617.fr; un cliente nativo gráfico está en marcha.

8. Los proyectos en encuadre

Neo6502drive: disco duro y disquetes virtuales sobre un Feather RP2040 USB Host, como llave USB FAT32 (modo MSC, sin driver) o como dispositivo de bloques UEXT. Oric 2 Neo: un Oric de nueva generación sobre el Neo6502, compatible Oric-1/Atmos, ampliado por la ROM y el firmware. Neo6502civ: Civilization 1 en ensamblador 6502 (framebuffer mono blitteado). Neo6502scumm: Maniac Mansion con el intérprete SCUMM v0. Todos en sprint 0: encuadre, sin código.

9. Lo que no decimos

Ninguna de estas piezas ha corrido aún en una placa: todo se verifica en el emulador oficial, en Phosphoneo y en cosimulación (libemul). El renderer DVI, el cambio de reloj, el timer y el bucle de bus esperan un Neo6502 sobre la mesa. Los protocolos de validación están escritos; se ejecutarán en cuanto llegue la placa.

Fuentes y enlaces

← Neo6502 · Prophet → · AsteroNeo →