The system
Eliott65 piece by piece, from the bus cycle up to the sprites. Each article explains the principle, gives the measurements made on the board and points to the decisions that shaped it.
- The bus: serving every cycle of the 6502How the RP2040 serves every 6502 cycle with PIO and DMA, without an ARM core: from 0.3 to 8 MHz, the chip's real limit, and the SPEC, TURBO and MAX modes.
- System calls: a two-byte gateHow a 6502 program asks Eliott65 for a service: a freely placed parameter block, the $FFF8–$FFF9 gate, kernel polling, 5 µs per call, and the rules to know.
- Video: HDMI without a video chipEliott65's own video driver: HDMI 720 × 480 produced bit by bit by the RP2040, no frame in memory, text read from the 6502's memory, Hercules mode.
- The keyboard and USBThe USB host driver written for Eliott65: hub, keyboard with no system call, stick via Bulk-Only and SCSI, the standard's 500 ms timeout, 5–7× faster storage.
- Files: FAT12, FAT16 and FAT32Eliott65's file system: one module for FAT12, FAT16 and FAT32, long names, careful writing, .E65 programs launched from the USB stick, and ready for floppies.
- Hibernation: the whole machine in a fileHow Eliott65 saves the whole machine to a .HIB file and resumes it byte for byte, although the 6502's registers are invisible: the setjmp/longjmp method.
- Several programs at onceEliott65 multitasking: 8 processes in a 64 KiB 6502 thanks to swapped pages, NMI pre-emption with no resident byte, sleeping, a shell and Ctrl+Tab switching.
- Tiles and sprites: the graphicsEliott65's 320 × 240 graphics: SNES- and VERA-inspired tiles and sprites, data read in place from program memory, 63.5 µs per line, two cores in tandem.
- Sound: the board's speaker, and HDMISound under Eliott65: the board's speaker driven by PWM through the SON service, melodies read in place from program memory, and a test tone sent over HDMI.