Eliott65 on the Neo6502kbd at a glance: processor, memory, display, sound and storage, with the values measured on the board.
Processor
Processor
WDC W65C02S, at 3.3 V
Speed
TURBO mode by default; at 252 MHz it gave 7.52 MHz (6.48 MHz in SPEC mode, within the WDC data sheet; 8.0 MHz in MAX mode)
Measured speed, video on
7.707 MHz at 270 MHz, with the bus fix (v0.59.1); 7.72 MHz before it (v0.52.0)
Controller
RP2040: 2 ARM Cortex-M0+ cores at 270 MHz (252 MHz up to v0.51), 264 KiB of memory
ROM
None. The 6502 has no ROM: all of its memory is served by the RP2040. The Eliott65 firmware
(kernel, drivers, files) lives in the RP2040’s 2 MB flash, out of the 6502’s sight. At start-up,
the program is placed directly in memory, with no resident loader.
RAM
6502 memory
64 KiB (65,536 bytes)
Free for programs
65,528 bytes: the system takes only 8 (call gate and vectors)
Multitasking
up to 8 programs, each with its own 64 KiB; 4 KiB pages kept in a pool of 30 frames
Graphics video memory
32 KiB, expandable to 64 KiB by borrowing free frames
Display
Output
HDMI, 720 × 480 at 60 Hz, one signal for every mode (since v0.52); 640 × 480 as an option
Text mode
40 × 30 characters, 8 × 8 font, 16 colours, one text and one background colour per cell
Graphics mode
320 × 240 pixels, centred on the screen (40-pixel black borders)
Hercules mode
720 × 350, 1 bit per pixel, white, amber or green ink (v0.53); 80 × 25 text in 9 × 14 cells, inverse, underline, blink, 9 × 14 font drawn for Eliott65 (v0.58); shell in 80 columns; nothing checked on the board yet
Layers
2, tiled (8 × 8 or 16 × 16) or bitmap, from 1 to 8 bits per pixel
Sprites
128, with depth and mirroring
Colours
a palette of 256 colours chosen from 4,096; a palette bank per line (241 colours on screen in the VAGUE demo)
Effects
scrolling per layer and per line
Text and images are read directly from the program’s memory, without copying. The limits of the
graphics (how many layers and sprites fit per line) are detailed in Tiles and
sprites.
Sound
Board speaker
notes and melodies from 20 Hz to 20 kHz, by PWM, without blocking the program
Over the HDMI socket
a test tone (an A at 441 Hz, 44.1 kHz), decoded correctly on the bench but not yet confirmed by ear
Storage and input
Storage
USB stick: FAT12, FAT16, FAT32, long names, reading and writing; FAT12 floppies ready (USB drive to come)
Keyboard
USB, US (QWERTY, the default) and FR (AZERTY) layouts
Mouse
recognised on the hub, not yet used
System
System calls
7 services, 47 functions, about 5 µs per call
Multitasking
cooperative and pre-emptive (by NMI), a shell with background tasks and Ctrl+Tab
Hibernation
the whole machine in a .HIB file, exact resumption
Values from the Eliott65 repository at version 0.60.0.
Sources in the repository : README.md, docs/adr/ADR-0027-signal-unique-720x480.md, docs/journal/00-synthese.md, docs/api/API.md, docs/journal/13-graphisme.md, docs/journal/14-son.md.