Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

6502-ACE

6502-ACE.png

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

📖 Guide:AC6502 Documentation — the user's and programmer's guide for the whole family. Start with Your ACE, the tour of this board.


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

ProjectDescription
6502-ACEAll-in-one Computer Experience — A single board computer (YOU ARE HERE)
6502-COBComputer On a Backplane — Modular desktop computer with expandable card slots
6502-DEVDevelopment Environment Vehicle — Emulation-based dev system
6502-KIMKeypad Input Monitor - KIM-1 inspired minimal computer
6502-VCSVideo Computer System — Cartridge-based retro gaming console

Software

ProjectDescription
6502-BIOSThe shared BIOS (kernel, monitor, BASIC) for all AC6502 computers
6502-EMULATOREmulator for the whole family — desktop app, browser build, and a command line for scripted runs
6502-PRGTemplate project for writing assembly language programs
6502-CRTTemplate project for writing assembly language cartridges
6502-ASMAssembly language example programs and demos
6502-BASBASIC program listings
6502-WOZMONWozmon as a standalone ROM
6502-NOPAn all-NOP ROM, for probing a board during bring-up
6502-DOCSThe documentation site — the guide, the printable reference cards, branding and label artwork
cffsBuilds CompactFlash disk images for the BIOS filesystem
bastokTokenizes BASIC listings into .prg images, and back
bin2wozConverts a binary into a Wozmon serial upload

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: Two Atari 2600-compatible joystick ports (J6 JOYSTICK A on VIA PORT A, J8 JOYSTICK B on VIA PORT B), read as JOY(2) and JOY(1) respectively
  • 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 (SW17, just above Esc) 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 (True IDE) mode
  • Storage: CompactFlash socket. The BIOS filesystem divides the card into 256 disk banks of 1 MB each, so 256 MB is the usable capacity regardless of the card fitted

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, releasing PORT A / PORT B so the 6502 can read the joysticks that share them
  • 6502 reset control: drives RESB on PC7, holding the CPU in reset for ~250 ms at power-on, and debounces the reset button on PC0
  • Optional jiffy clock: pulses NMIB from the DS1511Y SQW input; compiled out unless ENABLE_SQW is defined

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

ReferenceQtyValueDescriptionDigiKeyMouserOther
BT11CR2032Battery HolderBAT-HLD-001-THM-ND712-BAT-HLD-001-THM
C1, C9–C3023100nFDisc Capacitor478-5732-NDAMAZON
C2, C3, C5, C6, C851µFDisc Capacitor478-7667-NDAMAZON
C4, C722.2nFDisc Capacitor478-SR151C222KAATR1CT-NDAMAZON
C31110uFElectrolytic Capacitor 16vP966-NDAMAZON
D11LED3.0mm Power LED732-5008-NDAMAZON
D2, D32BAT85Schottky DiodeBAT85SCT-ND78-BAT85SAMAZON
J11PHI2 SELECTPin Header 1×3 2.54mmAMAZON
J21CTS ENPin Header 1×3 2.54mmAMAZON
J31RESET SWPin Header 1×2 2.54mmAMAZON
J41DCD ENPin Header 1×3 2.54mmAMAZON
J51VDDPin Header 1×2 2.54mmAMAZON
J61JOYSTICK ADB-9 Male609-1481-ND649-D09P33E4GX00LF
J71PADDLESPin Header 1×4 2.54mmAMAZON
J81JOYSTICK BDB-9 Male609-1481-ND649-D09P33E4GX00LF
J91PORT BBox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J101PORT ABox Header 2×6 2.54mm2057-BHR-12-VUA-NDAMAZON
J111AUDIO LRCA JackPJRAN1X1U02X-ND502-PJRAN1X1U02X
J121DB9 MALE (DTE)DB-9 Male609-1481-ND649-D09P33E4GX00LF
J131PS/26-pin Mini-DIN806-KMDGX-6S-BSAMAZON
J141KEYBOARDPin Header 1×16 2.00mmAMAZON
J151AUDIO RRCA JackPJRAN1X1U03X-ND502-PJRAN1X1U03X
J161AUDIOPin Header 1×2 2.54mmAMAZON
J1715V DCDC Barrel Jack2073-DCJ200-10-A-K1-K-ND640-DCJ200-10-A-K1-K
J181CARTCard Edge 2×20 2.54mmA31723-ND571-5-5530843-4
J191BUSBox Header 2×20 2.54mmAMAZON
J201VCCPin Header 1×2 2.54mmAMAZON
J211POWER LEDPin Header 1×2 2.54mmAMAZON
J221STORAGEPin Socket 2×10 2.54mm HorizS5563-ND
R1–R4, R25510kΩ1/8W ResistorRNF18FTD10K0CT-NDAMAZON
R5–R23, R26–R34281kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R241330Ω1/8W ResistorAMAZON
SW1–SW13, SW15, SW18–SW29, SW31, SW33–SW41, SW43, SW44, SW46–SW49, SW51–SW58, SW61, SW64–SW6654VariousCherry MX Switch 1.00uCH196-NDAMAZON
SW59, SW60, SW63, SW67, SW685CTRL / ALT / FNCherry MX Switch 1.25uCH196-NDAMAZON
SW16, SW302TAB / BackslashCherry MX Switch 1.50uCH196-NDAMAZON
SW321CAPS LOCKCherry MX Switch 1.75uCH196-NDAMAZON
SW141BACKSPACECherry MX Switch 2.00uCH196-NDAMAZON
SW42, SW45, SW503SHIFT / ENTERCherry MX Switch 2.25uCH196-NDAMAZON
SW621SPACECherry MX Switch 6.25uCH196-NDAMAZON
SW171RESETTact Push Button 6mmAMAZON
SW691POWERSPDT SwitchEG4326-ND612-400MSP1R6BLKM6QE
SW701IO ENABLE8× DIP Switch SPSTAMAZON
U11W65C02S65C02 CPU955-W65C02S6TPG-14
U21W65C2265C22 VIA955-W65C22N6TPG-14
U31Pico9918AVDP (VGA)TINDIE
U4165C51ACIAJAMECO
U5174HC1634-bit Counter296-8246-5-ND595-SN74HC163N
U61ATmega1284-PKeyboard Controller MCUATMEGA1284-PU-ND556-ATMEGA1284-PU
U71AS6C6225632KB SRAM1450-1033-ND913-AS6C62256-55PCN
U81AT28C25632KB EEPROMAT28C256-15PU-ND556-AT28C25615PU
U916581SID ChipLINK
U101MAX238xNG+RS-232 TransceiverMAX238CNG+-ND700-MAX238CNG
U11–U14, U16574HC00Quad NAND296-1563-5-ND595-SN74HC00N
U151AS6C4008512KB SRAM1450-1027-ND913-AS6C4008-55PCN
U17174HC308-input NAND296-9196-5-ND595-CD74HC30E
U181DS1511YRTC + NVRAMDS1511Y+-ND700-DS1511Y
U19, U20274HC1383-to-8 Decoder296-1575-5-ND595-SN74HC138N
U21, U22274HC573Octal Latch296-12815-5-ND595-CD74HC573EE4
U23174HC02Quad NOR296-1565-5-ND595-SN74HC02N
X1116MHzDIP-14 OscillatorX947-ND815-ACO-16-EK
Y111.8432MHzCrystal3155-1.8432M20P2/49U-ND815-AB-1.8432-B2

ACE CF Adapter

ReferenceQtyValueDescriptionDigiKeyMouserOther
D11ACT LED3.0mm LED732-5008-NDAMAZON
J11STORAGEPin Header 2×10 2.54mm HorizAMAZON
J21Compact FlashCF Socket4827-101D-TAAB-R01-ND
R1–R441kΩ1/8W ResistorRNF18FTD1K00CT-NDAMAZON
R51330Ω1/8W ResistorAMAZON

ACE RAM Patch

ReferenceQtyValueDescriptionDigiKeyMouserOther
J1174HC00 (U13)DIP-14 Piggyback Socket
U1174HC00Quad NAND296-1563-5-ND595-SN74HC00N
U2174HC02Quad NOR296-1565-5-ND595-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

12 stars

Watchers

0 watching

Forks

Contributors

Languages