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.
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
| Procesador | W65C02S |
| Microcontrolador | RP2040, 2 MB flash |
| Vídeo | DVI/HDMI — 320×240, 256 |
| Teclado | USB-A host |
| Expansión | UEXT, 6502 bus |
| Audio | 3.5 mm, speaker |
| Formato, licencia | 80 × 55 mm, OSHW |
| Precio | 30 € |
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.