Glossary
The wiki’s technical terms, explained in one or two sentences, and in the sense in which Eliott65 uses them.
The hardware
6502, W65C02S
The 8-bit processor of the Apple II, Commodore 64, Oric or BBC Micro. The W65C02S is its modern CMOS version, still made by WDC; it is the one fitted in the Neo6502kbd.
RP2040
The microcontroller of the Raspberry Pi Pico: two ARM Cortex-M0+ cores, 264 KiB of memory, and PIO blocks. On the board, it plays the memory and peripherals of the 6502; Eliott65 runs inside it.
Core 0, core 1
The two ARM processors of the RP2040. Under Eliott65, core 0 runs the kernel (and draws the graphics), core 1 produces the video signal.
PIO
Small specialised processors in the RP2040, which run programs of a few instructions at the pace of the clock and drive the pins to the exact cycle. Eliott65 uses them for the bus and the video.
DMA
Direct Memory Access: a controller that copies data from one place to another without tying up the cores. It serves every byte of the 6502 bus and feeds the video.
Bus, bus cycle
The wires through which the processor exchanges addresses and data with the memory. A cycle is one exchange: an address, a byte read or written.
PHI2
The 6502’s clock. During its low phase, the address settles; during its high phase, the data is exchanged. On the board, it is the RP2040 that generates it.
74LVC245
A “buffer” chip that lets eight signals through, in a chosen direction. The board has three of them, which share the same eight pins of the RP2040.
Flash, XIP
Flash is the memory that keeps the firmware when the power is off (2 MB on the board). The RP2040 can run code directly from it (eXecute In Place, XIP), but more slowly than from its RAM.
PWM
Pulse-width modulation: a square wave whose frequency and share of time at 1 can be set. Eliott65 uses it to make the board’s speaker sound.
Static (core)
A static processor tolerates its clock being stopped indefinitely without losing anything. The W65C02S is one: Eliott65 can freeze it at any moment.
The system
Firmware
The software that runs in the RP2040. Eliott65 is a firmware, which also contains the kernel.
Kernel, out-of-band kernel
The kernel is the heart of the system: it manages programs, memory, files. It is out-of-band when it runs alongside the processor it serves (here in the RP2040), and not inside it.
Call gate
The two bytes $FFF8–$FFF9 through which a program asks for a service. Writing the high byte
triggers the call. See System calls.
Parameter block
The small area, in the program’s memory, where it stores the service number and its parameters, and where the kernel writes the results.
Vectors
The last six bytes of the 6502’s memory ($FFFA–$FFFF): the addresses it goes to on
NMI, RESET and IRQ.
Zero page
The first 256 bytes of the 6502’s memory ($0000–$00FF), faster to access. Parameter blocks
must not be placed there.
RESET, IRQ, NMI
Three pins of the 6502: the reset, the ordinary (maskable) interrupt and the non-maskable interrupt, which cannot be ignored. Eliott65 uses the NMI for pre-emption.
.E65
The format of Eliott65 programs: a header and the code, loaded directly into the 6502’s memory.
Evanescent boot
Launching a program without a resident loader: the RP2040 places it in memory, then releases RESET.
libe65
The small assembler library supplied to programs: calling through the gate, hibernation,
switching, sleep. Its include file, e65.inc, is generated from the API description.
Multitasking
Process
A running program. Eliott65 accepts up to 8 of them.
Foreground
The process that has the screen and the keyboard. You change it with Ctrl+Tab.
Switching
Moving from one process to another.
Cooperative, pre-emptive
In cooperative multitasking, each program hands back control itself. In pre-emptive multitasking, the kernel takes it back, even if the program does not want to give it up.
Page, frame
The 6502’s memory is divided into 16 pages of 4 KiB. The pages of waiting processes are stored in frames in the RP2040’s reserve.
MMU
Memory Management Unit: a device that translates addresses on every access. Tried in the Eliott65 bus, it cost 34% of speed and was set aside.
Hibernation, .HIB
Saving the whole machine to a .HIB file, from which it can resume exactly. See
Hibernation.
Files and USB
FAT, cluster
The file system of USB sticks and floppy disks. The disk is divided into clusters; the FAT table says which cluster follows which in a file. FAT12, FAT16 and FAT32 differ in the size of its entries.
8.3 name, long name
An 8.3 name has 8 characters, a dot, 3 characters (BONJOUR.E65). Long names are stored
separately, in special entries.
Host, hub, enumeration
The USB host directs the exchanges (here the RP2040). The hub multiplies the ports. Enumeration is the discovery of a newly plugged-in device.
Low Speed, Full Speed, PRE
Two USB speeds (1.5 and 12 Mbit/s). A slow device behind a fast hub requires a PRE packet before each exchange.
HID
Human Interface Device: the USB family of keyboards and mice. A keyboard sends HID reports: the keys pressed.
Bulk-Only, SCSI
The USB stick protocol: SCSI commands (read, write, capacity…) carried over Bulk-Only.
Video and graphics
DVI, HDMI, TMDS
DVI is the digital video signal that any HDMI socket accepts. Each pixel of each colour is encoded in it as a 10-bit TMDS symbol.
Line buffer
An area of memory that holds a single line of the picture, ready to go out. Eliott65 has only two, instead of a complete frame.
Tile, map, layer
A tile is a small pattern (8 × 8 or 16 × 16 pixels). A map says which tile to put where. A layer is one level of background, made of tiles or a bitmap; Eliott65 has two.
Sprite
A small drawing that moves freely over the background; in French, lutin.
bpp
Bits per pixel: 1 bpp gives 2 colours, 4 bpp 16 colours, 8 bpp 256 colours.
Palette, palette bank
The palette maps a colour number to an actual colour. A bank is a piece of the palette; changing it on every line puts more colours on the screen.
The workshop
SWD, probe
SWD is the debug port of ARM processors. A probe connected to it reads and writes the memory of the running RP2040.
OpenOCD
The free software that drives the probe from the PC.
Emulator, test bench
An emulator runs the machine on the PC. A test bench simulates one specific part of the hardware (the bus, the video, USB) in order to test the real driver.
ADR
Architecture Decision Record: a note that records a decision, its context and its consequences. See The decisions.
KiB, MB
A KiB (kibibyte) is 1,024 bytes; the 6502’s 64 KiB make 65,536 bytes.