Skip to content

Your ACE

One board, one computer, everything on it — including the keyboard. The ACE is a big board, about as tall as a Commodore 128 and a little narrower, and the front two-thirds of it is a full mechanical keyboard soldered straight to the PCB. No cards to fit, no expansion decisions to make.

The ACE board from above, without the keyboard: connectors along the back edge, the processor and ROM in the middle, and the CompactFlash adapter at the right.
The board, front to back. Power and the connectors run along the top edge, the processor and the ROM sit in the middle, and the CompactFlash adapter is the small board on the right.

The tour

The big chip in the middle is a W65C02S — the processor. It's a 1970s design still in production today, running here at 1 or 2 MHz. That sounds slow. It is slow. It's also completely comprehensible, which is the point: there is nothing happening inside your ACE that you can't eventually understand.

Next to it, two 32 KB chips. One is RAM (what your programs live in while they run); one is ROM, holding the BIOS — BASIC, the Monitor, and the routines that drive everything else. There's another half a megabyte of RAM on board as well, reached a slice at a time when a program needs more room than BASIC's 32 KB.

The little black module near the video connector is a Pico9918. It pretends to be a TMS9918A, the video chip from the ColecoVision and the MSX, and drives a plain VGA monitor. That's where your 40×24 text screen and its 16 colors come from. It has a second personality it keeps to itself until asked — see F18A mode, which is where the other 4080 colors are.

The socketed 28-pin chip is an ARMSID — a drop-in replacement for the MOS 6581, the sound chip from the Commodore 64. Three voices, real filters, RCA output to any powered speaker.

The keys are 67 Cherry MX switches in a proper typing layout, wired as a matrix straight into the board. This is your keyboard; nothing needs plugging in. See The keyboard for the handful of keys that do something out of the ordinary.

The card edge behind the keyboard, standing up rather than facing out, is the cartridge slot. Cartridges drop into it from above. It's also where the KIM keypad boards go.

Round the edges: a VGA connector, RCA audio, two joystick ports, a DB9 serial port, a CompactFlash slot on its own little adapter board, a PS/2 socket, and a 5 V barrel jack.

Two switches worth knowing. The power switch does what it says. The reset button sits just above the Esc key, where you can reach it without looking — and it is not the same as switching off:

  • Reset restarts the machine but leaves the memory alone. Your program and your variables are still there afterwards; type LIST and see. Use it to get out of anything.
  • Power off, then on is the clean slate. Memory is cleared and BASIC starts from scratch.
What the other chips do

A 65C22 VIA handles the joysticks and general-purpose I/O. A 65C51 ACIA with a MAX238 next to it drives the serial port. A DS1511Y keeps the time and date when the power's off, and hangs on to 256 bytes of memory for you. An ATmega1284P scans the keyboard and hands keystrokes to the 65C02 — it also holds the CPU in reset for a quarter of a second at power-on, which is why the machine comes up cleanly instead of mid-thought.

The jumper and the DIP switches

J1 PHI2 SELECT picks the CPU speed: 1 MHz or 2 MHz. 1 MHz is the safe default and the speed everything in this guide assumes. 2 MHz is free performance if your particular set of chips is happy with it — try it, and move the jumper back if anything gets flaky.

The eight-way DIP switch marked IO ENABLE has one position for each of the machine's eight I/O sections — banked RAM, clock, storage, serial, joysticks, sound, video. Leave them all on. They're there for fault-finding: switch a section off and the ACE boots without it, which is a quick way to work out which part is misbehaving.

What's on the board

Part of the machineChipNotes
CPUW65C02S1 or 2 MHz, jumper-selectable (J1 PHI2 SELECT)
RAM6225632 KB SRAM
Banked RAMAS6C4008512 KB, reached a 1 KB window at a time
ROM28C25632 KB EEPROM
StorageACE CF AdapterCompactFlash in 8-bit True IDE mode, via the ACE CF Adapter on the Storage header
VideoPico9918VGA 640×480, TMS9918A-compatible
AudioARMSID3-voice SID emulation, RCA output
Serial65C51 ACIA + MAX238RS-232 via DB9, 50–19200 baud
GPIO65C22 VIA20 GPIO pins, 2× 16-bit timers, shift register
RTCDS1511YBattery-backed clock and 256 bytes of NVRAM
Keyboard controllerATmega1284PRuns AB Controller firmware
InputPS/2 connector + 8×8 matrix headerBoth live at once
Joysticks2× Atari 2600-compatibleJ6 JOYSTICK A on VIA PORT A reads as JOY(2); J8 JOYSTICK B on VIA PORT B reads as JOY(1)
Clock16 MHz DIP-14 oscillator (X1)Drives the ATmega1284 at 16 MHz and the 65C02 at 1 or 2 MHz via a 74HC163 divider
ResetSW70Manual reset into the ATmega1284, which also provides power-on reset to the 65C02
Power5 V DC barrel jack
Building one yourself

The ACE is open hardware — the KiCad project, the bill of materials and the production files are all in the 6502-ACE repository. Two things worth knowing before you order boards:

  • The ACE CF Adapter is a separate small board that plugs into the Storage header — part of the machine, but its own PCB and its own BOM.
  • Rev 1.0 boards need the ACE RAM Patch for the banked SRAM to latch reliably. Rev 1.1 fixes it on the board.

Board revisions to date:

  • ACE Board Rev 1.1 — Fixes the LOADL/LOADH latch-enable gating for the banked SRAM: the final NAND stage becomes a NOR (LOADL = NOR(SEL_L, WB)), added as one 74HC02 (U23). Pull-ups R1–R4 and R25 go from 1 kΩ to 10 kΩ; C31 (10 µF) added at the power input. No firmware change.
  • ACE Board Rev 1.0 — Initial release. Banked RAM does not latch reliably — needs the ACE RAM Patch.

Next

Setting up — what to plug in, and in what order.

Written for BIOS v1.5. Released under the MIT License.