Skip to the content
PCBKitNew board
2 layers81.8 × 57.6 mmFlash Cart, the printed circuit board in 3D

6502-VCS 8-Bit Retro Computer Project

Size
81.8 × 57.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
70
Pads
211
Tracks, vias
837, 222
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 May 2026
Updated
7 Nov 2026

Overview

Flash Cart is an open-source printed circuit board by acwright, from the acwright/6502-VCS repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 2-layer board of 81.8 × 57.6 mm with 25 parts on 70 nets, routed with 837 tracks and 222 vias.

It is built around the 74HC32D, 74HC138 and 74HC139D, with the 74HC1G04GW and 74HC273D among its other parts. Its parts include 9 capacitors, 8 ICs and 1 connector. It belongs with the retro computing and games boards of this library.

Main components

5

README

README.md

6502-VCS

6502-VCS.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. See VCS's page in the family appendix.


Building one? Every part you need, with supplier numbers and known issues, is in BOM.md.

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 VCS is a cartridge-based retro gaming console. It features a real 65C02 CPU, swappable ROM cartridges, VGA video output via Pico9918, SID audio via ARMSID, and support for PS/2 keyboards, matrix keyboards, and Atari 2600-compatible joysticks.

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
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 (YOU ARE HERE)

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 boards that make up the VCS system.

Main Board

Hardware/Main Board/

The core board containing the 65C02 CPU, 32KB SRAM, 32KB EEPROM, clock, and reset circuitry. Runs at 1 MHz and provides the bus connection for the Input and Output boards.

Input Board

Hardware/Input Board/

Unified input board supporting a matrix keyboard, PS/2 keyboard, and Atari 2600-compatible joysticks. Uses a 65C22 VIA and an ATmega1284 microcontroller as the keyboard encoder controller.

The joysticks share the VIA ports with the keyboard encoder rather than having connectors of their own: they come in on the J1 PORT B and J2 PORT A box headers, with JOY(1) reading PORT B and JOY(2) reading PORT A. See Joystick Interface for the wiring options and the bitmask the BIOS returns.

Output Board

Hardware/Output Board/

Combined VGA video output (via Raspberry Pi Pico running Pico9918) and SID audio output (via ARMSID). Provides TMS9918A-compatible graphics modes at 640×480 VGA and 3-voice SID synthesis.

ROM Cart

Hardware/ROM Cart/

Swappable ROM cartridge for the VCS system. Comes in two versions:

  • Rev 1.0a — Uses the 28C256 32KB EEPROM (electrically erasable, no UV eraser required).
  • Rev 1.0b — Uses the 27C256 32KB EPROM (UV-erasable).

Flash Cart

Hardware/Flash Cart/

Banked flash cartridge, and the successor to the fixed 16K ROM Cart. One all-SMD board covers 128KB to 1MB, depending on which parts are populated, and the flash is programmed in circuit through the card edge, either by the Flash Helper (an Arduino Mega 2560 shield with one connector on it) or by the 6502 itself.

  • $C000–$DFFF is a switchable 8K window, selected by a write-only bank register at $E000–$FFFF.
  • $E000–$FFFF is fixed to the last 8K of the primary flash, so the vectors and the bank-switching code can never be mapped out.
  • Existing 16K cart images run unmodified.

See DESIGN.md for the memory map, the logic, the programming sequences and the build variants.

Flash Helper

Hardware/Flash Helper/

The programmer for the Flash Cart: an Arduino Mega 2560 R3 shield with a cartridge slot on it, and nothing else. It pretends to be the 65C02 on the far side of the card edge, so a cart is programmed in circuit with no chip ever removed — which matters, because the flash is a soldered-down TSOP part.

  • Two parts: the Arduino, and the same TE card edge connector the Main Board fits as J9.
  • Thirty-seven of the forty card edge pins: A0–A15, D0–D7, RWB, PHI2, RESB, IRQB, NMIB, VCC and GND.
  • EXP0 and EXP1 are deliberately not connected. Cartridges tie them to GND to disable the system ROM, so driving them would be a short.
  • Host side is 6502-flash, a Node CLI. See DESIGN.md.

As a card tester. Every card in the AC6502 family — the COB cards, the KIM Keypad Card and both VCS carts — carries the same 6502 Card Edge fingers and drops into this socket. IRQB and NMIB are wired for that reason rather than for programming: the GPIO, LCD, Serial and Serial Card Pro cards all assert IRQB, and a tester that could not see it would miss most of what they do. That firmware is a separate build and does not exist yet.

Which revision to make

Make the newest revision of a board, and check its label first. The table below gives each board's newest revision. A newer revision fixes what was found on the older ones. Every revision, old and new, is in REVISIONS.md, with what changed in each.

Each revision carries one of three labels:

  • Tested: This revision was built and tested.
  • Proven design: Not built at this revision, but its circuit is a tested revision's. The only changes are silkscreen text, part values, mounting holes, outline clean-up, capacitor pitch, socket outlines, a footprint swap with the same holes, a solder jumper's default, or tracks rerouted with DRC and the netlist check passing. A builder can treat it as tested.
  • Untested: The circuit, the power path or the layout changed in a way that only a built board proves, or the board has never been built at all.

BOM.md has the parts for every revision, and its known issues.

BoardNewest revisionLabelWhy
Flash Cart1.0UntestedMade, and not tested yet.
Flash Helper1.0UntestedMade, and not tested yet.
Input Board1.1Proven designSilkscreen text only.
Main Board1.1Proven design10k pull-ups, small part moves and tracks rerouted. The jumpers are gone, and HRDB is wired as it is on the tested Rev 1.0 with them fitted.
Output Board1.1Proven designSilkscreen text, and the VDD header removed.
ROM Cart1.0a or 1.0bTestedRev 1.0a takes an AT28C256 EEPROM; Rev 1.0b takes an AT27C256 EPROM.

Firmware

This repository contains PlatformIO-based firmware for the Input Board.

IB Controller

Firmware/IB Controller/

Firmware for the ATmega1284 on the Input Board. Provides:

  • Matrix keyboard scanning and encoding
  • PS/2 keyboard interface
  • Atari 2600-compatible joystick input
  • Parallel I/O to the AC6502 bus via 65C22 VIA

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

CAD

CAD/

3D-printable enclosure parts and laser-cut top panels for the VCS system.

Board images are in CAD/Images/<Board>/Rev X/: Front.png and Back.png on white, and Front Transparent.png and Back Transparent.png with no background. Every image is a 3D render at the same size, with the black solder mask and white silkscreen the boards are made with. Bare-board photos may differ, because the renders show parts fitted.

Top panels are versioned by board revision, like Hardware/: CAD/Tops/<Board>/Rev X/. Each revision has its own complete folder, even when two revisions share the same files. Bases/ holds the parts for a whole computer, not for one board, so it isn't versioned.

The plate mounting drawing (SVG) shows where the Output Board, the Main Board and the Input Board mount on the base plate, with every hole's position and the hardware the build needs. The plate is a stack of three 3 mm acrylic layers.

Production

Production/

REVISIONS.md lists every board revision: whether it was made, its JLCPCB order, the commit it was made from, and what fits it.

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

Schematics

Schematics/

PDF schematics for each board.

Shared lines

Five lines of the 6502 bus are shared by every board on it: RESB, IRQB, NMIB, RDY and BE. A board may pull one of these lines low, and nothing drives one high. Each line is held high by one 10kΩ pull-up resistor to VCC, on the board with the CPU: the ACE Board, the KIM Board, the VCS Main Board, the COB CPU Card or CPU Card Pro, or the DEV Board. No other board has one. Two pull-ups on the same line would sit in parallel and lower its resistance, so a card that adds its own pull-up changes the machine for every other board. The VIAs and PIAs in the BOMs, the W65C22N and W65C21N, have open-drain interrupt outputs for this reason. A W65C22S drives IRQB high as well as low, so it can't share the line without a diode.

The same holds where a board has its own reset circuit. A reset switch, its timer and the transistor that pulls RESB low can be on any board, such as the COB Backplane Pro or the Clock Card, but the RESB pull-up is only ever on the board with the CPU. Each of those boards draws its pull-ups together, in one group on its schematic.

SOB is a CPU pin that isn't on the bus. It is tied to VCC, directly or through a 10kΩ resistor.

A few chips have a pull-up of their own inside the chip, such as an ATmega's reset pin. Where such a pin is wired to RESB, its pull-up of 30–60kΩ sits in parallel with the 10kΩ one. That's harmless, because whatever pulls RESB low can sink the extra current many times over.

A revision that doesn't follow this yet says so in its known issues in BOM.md, with what to fit or remove.

Extra pins: EXP0–EXP3 and HRDB

EXP stands for "extra pin". Four pins of the 6502 bus are left for a builder's own use: pin 4 is EXP1, pin 6 is EXP0, pin 19 is EXP3 and pin 21 is EXP2.

Pins 4 and 6 have a second job. A cartridge ties both of them to GND. That pulls HRDB ("High ROM disable bar", active low) low on the board with the ROM, which takes $C000–$FFFF away from the ROM so that the cartridge answers there instead. So in a build that uses cartridges, pins 4 and 6 are reserved for HRDB, and nothing else may drive them. They are free as EXP1 and EXP0 only in a build that never uses cartridges. EXP2 and EXP3 are always free.

How the boards treat pins 4 and 6:

  • The ACE Board and the KIM Board join them to their ROM's HRDB input, and their silk says HRDB. The VCS Main Board joins them the same way from Rev 1.1.
  • The COB Memory Card joins them to its HRDB only through jumpers: fit two shunts on J2, or bridge JP1 and JP2, in a COB that takes cartridges. It is the only board with these jumpers, because the COB is the experimenter's build. The VCS Main Board Rev 1.0 had them too (J5, or JP3 and JP4); fit them, because the VCS always takes cartridges.
  • A cartridge (the ROM Cart, the Flash Cart, the KIM Keypad Card) ties them to GND.
  • A board that only carries the bus through, such as a backplane or a helper, calls them EXP1 and EXP0, as its silk does, and a note on its schematic says what they carry.

Jumpers

Some boards have solder jumpers, and pin headers that take a shunt. The tables below give every one: what it's for, how the board is shipped, and what to do with it. The Needed column marks the ones that matter:

  • To run: the board doesn't work until this is set. Set it before the first power-up.
  • For serial, For interrupts, For cartridges: the board runs without it, but that feature doesn't.
  • Blank: leave it as shipped unless you want what it offers.

Where a header needs a shunt, the board's BOM lists it.

Input Board

RevJumperWhat it's forAs shippedWhat to doNeeded
1.0, 1.1J6I/O window: one shunt picks the 1 KB window the board answers in.No shunt.Fit the shunt beside $9400: IO 6, where the BIOS looks for the Input Board.To run
1.0, 1.1JP1Bridged across D1, the diode in the VIA's interrupt line.Bridged.Leave it. The VIA's interrupt output only pulls low, so D1 isn't needed. Cut JP1 only for a part that drives its interrupt high as well as low.

Main Board

RevJumperWhat it's forAs shippedWhat to doNeeded
1.0J5, JP3, JP4HRDB EN: joins the bus's EXP1 and EXP0 to the ROM's High ROM disable.Open, no shunts.Fit two shunts on J5, or bridge JP3 and JP4: without them a cartridge can't take $C000–$FFFF, and the VCS always takes cartridges. Rev 1.1 wires them.For cartridges
1.0J8EXP EN: shunts here join CPU signals (VPB, MLB, SOB, PHI1O, PHI2O) to the bus's extra pins.No shunts.Leave it empty: the VCS takes cartridges, which ground EXP0 and EXP1. Rev 1.1 has no J8.
1.0JP1, J2ROM WE: joins the ROM's /WE to the write strobe, so a program can write the EEPROM in circuit.Open, no shunt.Leave it open: R1 holds /WE high. Rev 1.1 ties /WE to VCC.
1.0JP2, J1Power: JP2 is across J1 (PWR_SW), the header for a power switch.Open.Bridge JP2, or wire a switch to J1. Until one is done the board has no power. Rev 1.1 has neither.To run
1.0JP5, J7Original 6502: grounds pin 1, which is VSS on an NMOS 6502 and VPB on a 65C02.Open, no shunt.Leave both open for a 65C02. Rev 1.1 has neither.
1.0JP6, J6Clock: JP6 is across J6 (CLOCK_ENBL_SW), the header for a switch that stops the clock.Open.Bridge JP6, or wire a switch to J6. Until one is done there is no clock on PHI2. Rev 1.1 has neither.To run

Output Board

RevJumperWhat it's forAs shippedWhat to doNeeded
1.0, 1.1J6Interrupt: one shunt sends the board's interrupt to IRQB or NMIB.No shunt.Fit the shunt on IRQB, which the BIOS expects. With no shunt the interrupt reaches neither.For interrupts
1.0, 1.1J7I/O windows: two shunts pick the windows for the sound chip and the video chip.No shunts.Fit one shunt beside $9800 (IO 7) for the sound chip and one beside $9C00 (IO 8) for the video chip, where the BIOS looks for them.To run
1.0JP1Bridged across D1, the diode in the pico9918's interrupt line.Bridged.Cut JP1. The pico9918 drives its interrupt high as well as low, and only D1 stops it holding IRQB high against the Input Board, as on the VGA Card 1.0. Rev 1.1 ships it open.For interrupts
1.0, 1.1JP3, JP2JP3 feeds PHI2 to an enable of U3, a 74HC138, so the board is selected only while PHI2 is high. JP2 would tie that enable high instead.JP3 bridged, JP2 open.Leave them.
1.1JP1Bridged across D1, the diode in the pico9918's interrupt line.Open.Leave it open: the pico9918 drives its interrupt high as well as low, and D1 lets it only pull IRQB low. Never bridge it.

Off-board headers

Some boards have small headers, such as RESET SW, CLOCK ENBL SW, POWER LED and VCC, that a standard build leaves empty. They are for a machine built into a full enclosure, which AC6502 doesn't offer today. In such a build, the parts a person handles are mounted on the case and wired to the board through these headers: the power jack, the switches, the LEDs and the keyboard. The matching parts on the board are then left off. For example, an ACE Board can sit inside a case with its power jack, power switch and key switches left off, and a Keyboard Helper as its keyboard.

To build a board for a case:

  1. Fit the header, and wire the part on the case to it. The table says what goes on each pin.
  2. Leave off the parts on the board that the table names. A button on the case can work beside the board's own button, but some parts, such as an LED that shares the board's resistor, can't share.
  3. Set any jumper the table mentions. The Jumpers section has the rest.

The connector follows the kind of build. A single-board machine, the ACE Board or the KIM Board, uses plain 2.54 mm pin headers, which are simpler and cheaper. A board in a multi-board machine, every COB board and the separate boards of the VCS, the DEV and the KIM, uses JST XH, the family's standard for these headers.

The table lists every off-board header on each board's newest revision, read from the board's PCB file.

BoardRevHeaderLabelConnectorWhat it's forLeave off
Main Board1.1J4RESET SWJST XH, 2 pinsA reset button on the case. The header is wired across SW1, the board's own reset button.SW1, if the case covers it. Both buttons reset the machine if it stays.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across all AC6502 hardware projects, with their 3D models in Models/. A part is named for what it is and its shape, such as RJ45 Jack LED or CR2032 Holder, never for a manufacturer's part number, so a replacement part with the same footprint fits without renaming anything. The part numbers to buy are in BOM.md. Every AC6502 repository carries the same copy of each part.

Bill of Materials

Every part for every board, by revision, is in BOM.md, with supplier numbers, known issues, build notes and files to upload to Digi-Key and Mouser. What changed in each revision, and what is known about each one, is in REVISIONS.md.

License

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

Parts

25
QtyValueFootprintReferences
8100nFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C5, C6, C7, C8
274HC32Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU6, U7
2MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2
2MountingHoleMountingHole:MountingHole_2.2mm_M2H3, H4
2SST39SF040Package_SO:TSOP-I-32_11.8x8mm_P0.5mmU1, U2
110uFCapacitor_SMD:C_0805_2012MetricC9
16502 Card Edge6502 Parts:6502 Card EdgeJ1
174HC138Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU4
174HC139Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU5
174HC1G04Package_TO_SOT_SMD:SOT-23-5U8
174HC273Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU3
1LOGOA.C. Wright Logo:A.C. Wright Logo 5mmG***
1LOGO6502 Logos:6502 Flash Cart Logo 5mmG***

The 24 most common of 25 parts.

Questions

How big is the Flash Cart PCB?

It measures 81.8 × 57.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Flash Cart use?

25 parts, built around the 74HC32D, 74HC138, 74HC139D and 74HC1G04GW. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Flash Cart KiCad files?

From the acwright/6502-VCS repository on GitHub, at the commit this page was made from: the board is Hardware/Flash Cart/Rev 1.0/Flash Cart.kicad_pcb and its schematic Hardware/Flash Cart/Rev 1.0/Flash Cart.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Flash Cart design in my own project?

Its repository publishes it under the CERN-OHL-P-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from acwright/6502-VCS

7
  • 2 layers100 × 100 mm6502-VCS, the printed circuit board in 3D

    6502-VCS

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    63 parts3CERN-OHL-P-2.0
  • 2 layers100 × 100 mm6502-VCS, the printed circuit board in 3D

    6502-VCS

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    50 parts3CERN-OHL-P-2.0
  • 2 layers100 × 100 mmOutput Board, the printed circuit board in 3D

    Output Board

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    31 parts3CERN-OHL-P-2.0
  • 2 layers100 × 100 mmInput Board, the printed circuit board in 3D

    Input Board

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    28 parts3CERN-OHL-P-2.0
  • 2 layers100 × 100 mmInput Board, the printed circuit board in 3D

    Input Board

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    28 parts3CERN-OHL-P-2.0
  • 2 layers81.8 × 57.6 mmROM Cart, the printed circuit board in 3D

    ROM Cart

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    12 parts3CERN-OHL-P-2.0
  • 2 layers101.6 × 53.3 mmFlash Helper, the printed circuit board in 3D

    Flash Helper

    acwright/6502-VCS

    6502-VCS 8-Bit Retro Computer Project

    5 parts3CERN-OHL-P-2.0

Similar boards

  • 2 layers209 × 175 mmExcalibur64, the printed circuit board in 3D

    Excalibur64

    Cptscorcher/Excallibur-64

    A reimagining of the seminal Excalibur 64 Computer

    126 partsGPL-3.0
  • 2 layers210 × 170 mmTB04addr8bit ctrl, the printed circuit board in 3D

    TB04addr8bit ctrl

    Myuu1967/TB-04

    4bitCPU(TB-04)に関するリポジトリです

    102 parts
  • 4 layers271.8 × 147.3 mmSF68, the printed circuit board in 3D

    SF68

    scefrom/SF68

    A board featuring the Motorola 68000

    130 parts2
  • 4 layers100 × 100 mmEth, the printed circuit board in 3D

    Eth

    imihajlow/ccpu

    A 8-bit computer made of 74xx series logic gates and memory ICs.

    101 parts145
  • 2 layers234 × 100 mmV2b, the printed circuit board in 3D

    V2b

    KITTY-6502/hardware

    the KITTY is a 65c02 homebrew kit microcomputer designed around text mode graphics and cartridge media. It is fully open source, and uses exclusively in-production parts.

    147 parts
  • 2 layers178 × 711 mmMSAP-2 rev.A SMD, the printed circuit board in 3D

    MSAP-2 rev.A SMD

    mehrantsi/MSAP-2

    An 8-bit computer. Successor to MSAP-1

    658 parts13MIT