6502-ACE

A.C. Wright 6502
All-in-One Computer Experience
This is your ACE
One board, one computer, everything on it — including the keyboard. The 6502-ACE folds every function of the modular COB's card stack onto a single PCB: processor, memory, video, sound, storage, serial, clock, joysticks, and 67 mechanical keys soldered straight to the board. Nothing to fit, nothing to decide. Switch it on and start typing. It is the finished machine of the AC6502 family, built around the Western Design Center W65C02S — the fully-static CMOS descendant of the 1975 MOS 6502.
What is on the board
CPUWDC W65C02S at 1 MHz, jumper-selectable to 2 MHz
RAM32 KB SRAM (62256) + 512 KB banked SRAM (AS6C4008)
ROM32 KB EEPROM (28C256) — the whole 6502 BIOS
VideoPico9918 — TMS9918A-compatible, VGA out, 40×24 text, 16 colors
SoundARMSID — MOS 6581 replacement, 3 voices, RCA out
StorageCompactFlash on the ACE CF Adapter (8-bit True IDE)
Serial65C51 ACIA + MAX238, DB-9, 19200 8-N-1
GPIO65C22 VIA — two 8-bit ports and two timers
ClockDS1511Y, battery-backed, with 256 bytes of NVRAM
Keyboard67 Cherry MX switches on the board, plus PS/2 (ATmega1284P, AB Controller)
SticksTwo Atari 2600-compatible joystick ports
Power5 V DC, 2–3 A, barrel jack
Two switches and a jumper
The power switch is the cold start. The small white reset button, just above ESC, is the warm one: it restarts the machine but leaves memory alone, so your program and variables are still there afterwards. That makes it the safe way out of anything that has run away.
PHI2 SELECT picks 1 or 2 MHz. The eight-way IO ENABLE DIP bank has one switch per I/O section — leave them all on; they are for fault-finding.
Memory map
RangeContents
$0000–$07FFZero page, stack, Kernal and BASIC buffers
$0800–$7FFFYour program, variables and strings (30 KB)
$8000–$9FFFI/O — eight 1 KB device slots
$A000–$B7FFKernal + jump table
$B800–$BFFFCharacter set
$C000–$EDFFBASIC interpreter
$EE00–$FEFFMachine-code Monitor
$FF00–$FFF9Wozmon
$FFFA–$FFFFNMI, RESET and IRQ vectors
Did you know?
The entire operating system — Kernal, machine-code Monitor and a full BASIC — fits in one 32 KB EEPROM, with room to spare for the character set.
The Pico9918 is a Raspberry Pi Pico pretending, cycle for cycle, to be the 1979 TMS9918A from the ColecoVision and the MSX.
Three version numbers ship in that one chip: BIOS v1.5, BASIC V2.0 and Monitor v1.1.

6502-ACE

A.C. Wright 6502
All-in-One Computer Experience
Switching on
The splash appears, counts down five seconds and boots BASIC. You get a banner, a byte count, and the prompt — which is OK. Everything is typed there.
-- 6502 BIOS v1.5 -- 6502 BASIC V2.0 30718 BYTES FREE OK
Press ENTER during the countdown to skip it, or ESC to boot the machine-code Monitor instead. Type X there to come back. BASIC and the Monitor have sheets of their own, and the whole guide is at acwright.github.io/6502-DOCS.
First things to type
Type thisWhat happens
PRINT "HELLO"Puts text on the screen
PRINT 6502*2Use it as a calculator — answers 13004
LISTShow the program in memory
RUNRun it
NEWThrow it away and start again
MEMFree bytes, what the machine found, and the current disk
Loading and saving
CommandWhat happens
DIRList the files on the CompactFlash card
LOAD "NAME"Load a program
SAVE "NAME"Save the one you have
DEL "NAME"Delete a file
DISK 3Switch to disk bank 3. The card holds 256 of them, 16 files each
Fun to try — no card needed
Endless name scroll — type
10 PRINT "ACE ";
20 GOTO 10
then RUN. Press ESC to stop it.
Random maze —
10 PRINT CHR$(47 + 45 * INT(RND(1) * 2));
20 GOTO 10
fills the screen with slashes that read as a maze.
Make some noise — VOL 15 then SOUND 1,440,50 plays a concert A for half a second. Voices are 1 to 3; volume 0 to 15.
Wiggle a joystick — PRINT JOY(1) reads 255 with nothing held, and drops a bit for each direction you push.
Wozmon easter egg — SYS 65280 lands you in a copy of the original Apple I monitor. Its prompt is a backslash; FF00.FF07 reads eight bytes. Press the reset button to come back.
BASIC in one table
StatementPurpose
PRINTShow text or numbers
INPUT AAsk the person at the keyboard for a value
LET A=5Give a variable a value (LET optional)
IF…THENMake a decision
FOR…NEXTCounting loop — one NEXT per loop
GOTO / GOSUBJump to, or call, a line number
CLS / LOCATE / COLORClear the screen, move the cursor, set the colors
PEEK / POKERead or write one byte of memory
SYS addrCall machine code and come back
Handy keys
KeyDoes
ESCStops a running program. The one to remember
Ctrl + CThe same thing, if that is the habit you have
BackspaceRub out the last character
Reset buttonWarm restart — your program survives