Skip to content

acwright/6502-ACE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6502-ACE

6502-ACE.png

An AC6502 retro-style 8-bit computer based on the 65C02 microprocessor.


Table of Contents


Overview

The AC6502 ecosystem is a family of open-source, 65C02-based computers sharing a common architecture, memory map, and BIOS. Each computer in the family is purpose-built for a different use case but runs the same software and firmware.

The ACE (All-in-one Computer Experience) is a complete, self-contained 65C02 computer on a single PCB. It integrates everything found across the COB's modular cards — CPU, memory, video, audio, storage, serial, GPIO, RTC, and keyboard controller — onto one board, delivering the full experience without a backplane or expansion cards.

Architecture

All AC6502 computers share:

  • CPU: 65C02 (or accurate emulation)
  • Memory: 32KB RAM + 32KB ROM, with optional banked RAM expansion
  • Memory Map: Standardized across the ecosystem — zero page, stack, I/O space ($8000–$9FFF), system ROM, and interrupt vectors at $FFFA–$FFFF
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 65C02 control signals (RW, PHI2, RESET, IRQ, NMI, RDY, SYNC)
  • BIOS: A common BIOS provides the kernel, monitor, and BASIC interpreter across all systems

Systems

Project Description
6502-ACE All-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COB Computer On a Backplane — Modular desktop computer with expandable card slots
6502-DEV Development Environment Vehicle — Emulation-based dev system
6502-KIM Keypad Input Monitor - KIM-1 inspired minimal computer
6502-VCS Video Computer System — Cartridge-based retro gaming console

Software

Project Description
6502-BIOS The shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-PRG Template project for writing assembly language programs
6502-CRT Template project for writing assembly language cartridges
6502-EMULATOR Node.js-based AC6502 emulator
6502-WEBULATOR Web-based AC6502 emulator

Hardware

This repository contains KiCad 7.0+ PCB designs for the ACE board.

ACE Board

Hardware/ACE Board/

The single integrated board hosting the W65C02S CPU and all peripherals. Provides:

  • CPU: W65C02S running at 1 or 2 MHz (jumper-selectable)
  • RAM: 32KB SRAM (62256) + Optional 512K banked SRAM (AS6C4008)
  • ROM: 32KB EEPROM (28C256)
  • Video: Pico9918 (VGA 640×480)
  • Audio: ARMSID SID chip emulator (3-voice synthesis, RCA output)
  • Storage: Storage adapter socket
  • Serial: 65C51 ACIA with MAX238 level shifter (RS-232 via DB9, 50–19200 baud)
  • GPIO: 65C22 VIA (20 GPIO pins, 2× 16-bit timers, shift register)
  • RTC: DS1511Y real-time clock with battery-backed NVRAM
  • Keyboard Controller: ATmega1284P running AB Controller firmware
  • Input: PS/2 keyboard connector and 8×8 keyboard matrix header
  • Joystick: Atari 2600-compatible joystick port
  • Clock: 16 MHz DIP-14 full can oscillator (X1); drives the ATmega1284 at 16 MHz and the 65C02 at 1 or 2 MHz via the 74HC163 divider (J1 PHI2 SELECT jumper)
  • Reset: Manual reset button (SW70) connected to the ATmega1284, which also provides power-on reset to the 65C02
  • Power: 5V DC via barrel jack

Revision History

Rev 1.1

  • Fixes the gating of the LOADL and LOADH latch-enable signals for the 74HC573 latches (U21, U22) that drive the AS6C4008 banked SRAM. In Rev 1.0 the final two decode gates (U13C/U13D) were NANDs, which left the latches pulsing while idle and allowed spurious loads on reads, so the latches never reliably held a bank value.
  • The fix replaces the final NAND stage with a NOR function: LOADL = NOR(SEL_L, WB) and LOADH = NOR(SEH_L, WB), holding each latch enable low out of window and only pulsing on an in-window write. This makes banked RAM work correctly with no firmware change.
  • Implemented by adding one 74HC02 quad NOR (U23). The existing select logic in U13A/U13B is unchanged.
  • Some pull-up resistors changed from 1kΩ to 10kΩ: R1R4 and R25 are now 10kΩ.
  • Added C31 (10µF electrolytic) at the power input for bulk decoupling capacitance.

Rev 1.0

  • Initial release.

ACE CF Adapter

Hardware/ACE CF Adapter/

A CompactFlash adapter board that connects to the Storage header on the ACE Board. Provides:

  • Interface: 8-bit IDE mode
  • Storage: CompactFlash socket (up to 1MB)

ACE RAM Patch

Hardware/ACE RAM Patch/

A piggyback patch board for Rev 1.0 of the ACE Board that corrects the extended RAM (banked SRAM) issue. Installs by plugging into the U13 (74HC00) socket on the main board. Provides:

  • Fix: Replaces the Rev 1.0 NAND-based latch-enable logic with a NOR function (LOADL = NOR(SEL_L, WB), LOADH = NOR(SEH_L, WB)), preventing spurious latch pulses and making banked RAM work correctly with no firmware change
  • Interface: DIP-14 piggyback connector into U13 on the Rev 1.0 ACE Board

Firmware

This repository contains PlatformIO-based firmware for the ACE board.

AB Controller

Firmware/AB Controller/

Firmware for the ATmega1284P keyboard controller on the ACE board. Provides:

  • Dual keyboard input: PS/2 and 8×8 matrix keyboard simultaneously
  • PS/2 scancode to ASCII conversion
  • Matrix keyboard scanning with hardware debouncing
  • Modifier key support: Shift (symbols/punctuation) and Ctrl (control codes)
  • Buffered output via 65C22 VIA with CA1/CB1 data-ready strobes
  • Independent enable/disable for PS/2 and matrix inputs

See Firmware/AB Controller/README.md for setup and usage instructions.

CAD

CAD/

3D-printable enclosure bases and laser-cut top panels for the ACE system.

Production

Production/

JLCPCB-ready Gerber files and BOM/CPL for PCB fabrication and assembly.

Schematics

Schematics/

PDF schematics for the ACE board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across all AC6502 hardware projects.

Bill of Materials

ACE Board

Reference Qty Value Description DigiKey Mouser Other
BT1 1 CR2032 Battery Holder BAT-HLD-001-THM-ND 712-BAT-HLD-001-THM
C1, C9–C30 23 100nF Disc Capacitor 478-5732-ND AMAZON
C2, C3, C5, C6, C8 5 1µF Disc Capacitor 478-7667-ND AMAZON
C4, C7 2 2.2nF Disc Capacitor 478-SR151C222KAATR1CT-ND AMAZON
C31 1 10uF Electrolytic Capacitor 16v P966-ND AMAZON
D1 1 LED 3.0mm Power LED 732-5008-ND AMAZON
D2, D3 2 BAT85 Schottky Diode BAT85SCT-ND 78-BAT85S AMAZON
J1 1 PHI2 SELECT Pin Header 1×3 2.54mm AMAZON
J2 1 CTS EN Pin Header 1×3 2.54mm AMAZON
J3 1 RESET SW Pin Header 1×2 2.54mm AMAZON
J4 1 DCD EN Pin Header 1×3 2.54mm AMAZON
J5 1 VDD Pin Header 1×2 2.54mm AMAZON
J6 1 JOYSTICK A DB-9 Male 609-1481-ND 649-D09P33E4GX00LF
J7 1 PADDLES Pin Header 1×4 2.54mm AMAZON
J8 1 JOYSTICK B DB-9 Male 609-1481-ND 649-D09P33E4GX00LF
J9 1 PORT B Box Header 2×6 2.54mm 2057-BHR-12-VUA-ND AMAZON
J10 1 PORT A Box Header 2×6 2.54mm 2057-BHR-12-VUA-ND AMAZON
J11 1 AUDIO L RCA Jack PJRAN1X1U02X-ND 502-PJRAN1X1U02X
J12 1 DB9 MALE (DTE) DB-9 Male 609-1481-ND 649-D09P33E4GX00LF
J13 1 PS/2 6-pin Mini-DIN 806-KMDGX-6S-BS AMAZON
J14 1 AUDIO R RCA Jack PJRAN1X1U03X-ND 502-PJRAN1X1U03X
J15 1 AUDIO Pin Header 1×2 2.54mm AMAZON
J16 1 5V DC DC Barrel Jack 2073-DCJ200-10-A-K1-K-ND 640-DCJ200-10-A-K1-K
J17 1 CART Card Edge 2×20 2.54mm A31723-ND 571-5-5530843-4
J18 1 BUS Box Header 2×20 2.54mm AMAZON
J19 1 VCC Pin Header 1×2 2.54mm AMAZON
J20 1 POWER LED Pin Header 1×2 2.54mm AMAZON
J21 1 STORAGE Pin Socket 2×10 2.54mm Horiz S5563-ND
J22 1 KEYBOARD Pin Header 1×16 2.00mm AMAZON
R1–R4, R25 5 10kΩ 1/8W Resistor RNF18FTD10K0CT-ND AMAZON
R5–R23, R26–R34 28 1kΩ 1/8W Resistor RNF18FTD1K00CT-ND AMAZON
R24 1 330Ω 1/8W Resistor AMAZON
SW1–SW13, SW15, SW17–SW28, SW30, SW32–SW40, SW42–SW43, SW45–SW48, SW50–SW57, SW60, SW63–SW65 54 Various Cherry MX Switch 1.00u CH196-ND AMAZON
SW58, SW59, SW62, SW66, SW67 5 CTRL / ALT / FN Cherry MX Switch 1.25u CH196-ND AMAZON
SW16, SW29 2 TAB / Backslash Cherry MX Switch 1.50u CH196-ND AMAZON
SW31 1 CAPS LOCK Cherry MX Switch 1.75u CH196-ND AMAZON
SW14 1 BACKSPACE Cherry MX Switch 2.00u CH196-ND AMAZON
SW41, SW44, SW49 3 SHIFT / ENTER Cherry MX Switch 2.25u CH196-ND AMAZON
SW61 1 SPACE Cherry MX Switch 6.25u CH196-ND AMAZON
SW68 1 POWER SPDT Switch EG4326-ND 612-400MSP1R6BLKM6QE
SW69 1 IO ENABLE 8× DIP Switch SPST AMAZON
SW70 1 RESET Tact Push Button 5mm AMAZON
U1 1 W65C02S 65C02 CPU 955-W65C02S6TPG-14
U2 1 W65C22 65C22 VIA 955-W65C22N6TPG-14
U3 1 Pico9918A VDP (VGA) TINDIE
U4 1 65C51 ACIA JAMECO
U5 1 74HC163 4-bit Counter 296-8246-5-ND 595-SN74HC163N
U6 1 ATmega1284-P Keyboard Controller MCU ATMEGA1284-PU-ND 556-ATMEGA1284-PU
U7 1 AS6C62256 32KB SRAM 1450-1033-ND 913-AS6C62256-55PCN
U8 1 AT28C256 32KB EEPROM AT28C256-15PU-ND 556-AT28C25615PU
U9 1 6581 SID Chip LINK
U10 1 MAX238xNG+ RS-232 Transceiver MAX238CNG+-ND 700-MAX238CNG
U11–U14, U16 5 74HC00 Quad NAND 296-1563-5-ND 595-SN74HC00N
U15 1 AS6C4008 512KB SRAM 1450-1027-ND 913-AS6C4008-55PCN
U17 1 74HC30 8-input NAND 296-9196-5-ND 595-CD74HC30E
U18 1 DS1511Y RTC + NVRAM DS1511Y+-ND 700-DS1511Y
U19, U20 2 74HC138 3-to-8 Decoder 296-1575-5-ND 595-SN74HC138N
U21, U22 2 74HC573 Octal Latch 296-12815-5-ND 595-CD74HC573EE4
U23 1 74HC02 Quad NOR 296-1565-5-ND 595-SN74HC02N
X1 1 16MHz DIP-14 Oscillator X947-ND 815-ACO-16-EK
Y1 1 1.8432MHz Crystal 3155-1.8432M20P2/49U-ND 815-AB-1.8432-B2

ACE CF Adapter

Reference Qty Value Description DigiKey Mouser Other
D1 1 ACT LED 3.0mm LED 732-5008-ND AMAZON
J1 1 STORAGE Pin Header 2×10 2.54mm Horiz AMAZON
J2 1 Compact Flash CF Socket 4827-101D-TAAB-R01-ND
R1–R4 4 1kΩ 1/8W Resistor RNF18FTD1K00CT-ND AMAZON
R5 1 330Ω 1/8W Resistor AMAZON

ACE RAM Patch

Reference Qty Value Description DigiKey Mouser Other
J1 1 74HC00 (U13) DIP-14 Piggyback Socket
U1 1 74HC00 Quad NAND 296-1563-5-ND 595-SN74HC00N
U2 1 74HC02 Quad NOR 296-1565-5-ND 595-SN74HC02N

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.
Firmware is released under the MIT License.

About

6502-ACE 8-Bit Retro Computer Project

Resources

Stars

Watchers

Forks

Contributors

Languages