Skip to content
Phosphoneowiki
Contents

The emulated Neo6502

A 65C02 for programs, an RP2040 for everything else, and a door between the two: address $FF00.

Two chips, one door

Olimex’s board pairs a W65C02S and an RP2040 (two ARM cores). The 65C02 sees 64 KB of memory; in the emulator, the firmware’s cpuMemory array is that RAM. To ask the firmware for something (write a character, draw a line, open a file), the program writes the parameters to memory then writes to address $FF00: this is the API, organised in function groups (console, system, files, graphics, sprites, sound, keyboard…).

Black screen with NeoDOS's green text: firmware banner, version, then the A:\> prompt
The boot as Phosphoneo renders it: Trinity firmware banner, NeoDOS 0.34, then the A:\> prompt. Screenshot taken by the emulator itself, with no display.

What Phosphoneo reproduces

  • The screen: 320 × 240 pixels, 256 colours, plus an 80 × 25 colour text mode for Trinity.
  • Sound: the firmware’s generator, with its channels.
  • Files: a host folder plays the SD card or USB stick; a floppy mode serves a real drive.
  • Keyboard, mouse, gamepad: from the window, or scripted at an exact cycle.
  • USB serial port: connected to a software modem for network programs.

What it does not reproduce

The DVI signal, USB enumeration and timing, the extension UART, I2C, SPI, GPIO, and the SD card’s speed are not modelled. The line-by-line detail is in accuracy.

Sources in the repository : README.md, docs/ARCHITECTURE.md, docs/ACCURACY.md.