Skip to the content
2 layers280 × 220 mmKIM Board, the printed circuit board in 3D

6502-KIM 8-Bit Retro Computer Project

Size
280 × 220 mm
Copper layers
2
Thickness
1.6 mm
Parts
128
Nets
158
Pads
790
Tracks, vias
2,371, 626
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 May 2026
Updated
7 Nov 2026

Overview

KIM Board is an open-source printed circuit board by acwright, from the acwright/6502-KIM repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 2-layer board of 280 × 220 mm with 128 parts on 158 nets, routed with 2,371 tracks and 626 vias.

It is built around the MAX232N, 74HC00D and 74HC138, with the MM74C922N and BAT85 among its other parts. Its parts include 27 switches, 26 capacitors, 23 resistors, 17 ICs and 7 connectors. It belongs with the retro computing and games boards of this library.

Main components

5

README

README.md

6502-KIM

6502-KIM.png

(Image shows the alternative Main Board configuration — preferred Backplane/Backplane Pro build pictured separately)

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 The KIM keypad add-on chapter.


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 KIM (Keypad Input Monitor) is a complete, self-contained 65C02 computer. The preferred way to build it is using a Backplane or Backplane Pro, CPU Card, and Memory Card from the COB project, along with the Serial Card and Backplane Helper (also from COB) and the Keypad Card — a card that the Keypad Helper (keypad matrix) and Keypad LCD Helper (16x2 LCD display) attach to. As an alternative, the Main Board from the VCS project can be substituted for the Backplane/CPU/Memory combination.

The KIM Board puts the whole KIM on one through-hole board, with two breadboards for building circuits beside the keypad. Its memory map and I/O addresses are the same as today's KIM, so the KC Monitor, the BIOS and every program run on it unchanged. Rev 1.0 has been ordered. No board has been built or tested yet.

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 (YOU ARE HERE)
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 KIM-specific hardware. The KIM Board is the whole KIM on one board. Today's KIM, described after it, also uses boards, cards, and helpers from the 6502-COB project, and optionally from the 6502-VCS project.

KIM Board

Hardware/KIM Board/

Rev 1.0's schematic passes its checks (see Checking the schematics), and its PCB is finished and exported for production (Production/KIM Board/Rev 1.0/). The first boards have been ordered. No board has been built or tested yet.

One through-hole board that joins every part of today's KIM. The computer itself (CPU, RAM, ROM, glue logic and the I/O decode) is the ACE Board Rev 1.1's. The clock, the reset and the power input are the Backplane Pro Rev 1.1's. The serial port is the Serial Card's, and the keypad, the LCD and the KC Monitor are the Keypad Card's, Keypad Helper's and Keypad LCD Helper's. The card slot and the 6502 BUS header are the Backplane Helper's. The keypad, the LCD, the card slot and the 6502 BUS header sit exactly where they are on today's KIM, and the board fits today's base plate. Provides:

  • CPU: 65C02 (U1) at 1 MHz, clocked by a 1 MHz DIP-14 oscillator (X1)
  • RAM: 32KB SRAM (AS6C62256, U2)
  • ROM: 32KB EEPROM (AT28C256, U3) holding the BIOS, on a footprint that takes a ZIF socket or an ordinary one
  • Keypad and display: W65C21N PIA (U8), the KC Monitor's 8KB AT28C64 (U9) in a plain socket, the 24-key keypad with its MM74C922 encoder (U16), and the 16×2 LCD (U13) with its 10kΩ contrast trimmer (VR1). R19 beside VR1 is not fitted. It is there for a trimmer larger than 10kΩ: a resistor fitted in parallel brings the trimmer near 10kΩ. The PIA's CB1 and CB2 are unused; they are joined and held high by R23 (10kΩ), so neither floats. It is a resistor rather than a tie to VCC because software can make CB2 an output.
  • Serial: R6551AP ACIA (U15) at $9000 with a MAX232 (U14) and a 1.8432 MHz crystal (Y1). The female DB-9 (J2) is wired as DCE, as on the Serial Card, so a straight-through cable reaches a PC. The CTS EN jumper (J3) picks whether the ACIA's CTS comes from ground or from the cable. Ground is the default, which leaves the transmitter always free to send
  • Reset: 555 power-on reset (U12, Q1) and a reset button (SW26)
  • Power: 5V DC, center positive, through a barrel jack (J7), a 1N5819 reverse-polarity diode (D5) and the power switch (SW27)
  • Expansion: one card slot (J4), the 6502 BUS header (J5), and the breadboards with the breadboard headers (J6)
The KIM enable jumper (J1)

J1 is a 3-pin header marked KIM ENABLE, with KIM printed at pin 1 and BASIC at pin 3. One shunt switches the KIM on or off:

  • KIM (shunt on pins 1 and 2): the machine starts in the KC Monitor, with the keypad and the LCD.
  • BASIC (shunt on pins 2 and 3): BASIC over the serial port, as today's KIM runs with its Keypad Card pulled. The keypad and the LCD do nothing.
  • Set the jumper to BASIC before fitting a cartridge in the card slot.

Pin 1 is KIMB, pin 2 is GND, and pin 3 isn't connected, so in the BASIC position the shunt only parks on the header. In the KIM position the shunt grounds KIMB, which enables the Keypad Card's first 74HC138 (U10, on its ~E1). In the BASIC position, R15 (10kΩ) holds KIMB high, so U10 is disabled and neither the PIA nor the KC Monitor's ROM is ever selected. A BAT85 (D1) joins KIMB to HRDB, anode on HRDB. In the KIM position the shunt pulls HRDB low through D1, which takes $C000–$FFFF away from the BIOS ROM, as the Keypad Card does today. A cartridge pulling HRDB low can't pull KIMB low through D1, so only the jumper switches the KIM on.

Reads with PHI2 high:

KIM enableCartridge$0000–$7FFF$8000–$9FFF$A000–$BFFF$C000–$DFFF$E000–$FFFF
KIMoutRAMIO1–IO8ROMPIAKC Monitor ROM
BASICoutRAMIO1–IO8ROMROMROM
BASICinRAMIO1–IO8ROMcartridgecartridge
KIMinRAMIO1–IO8ROMPIA and cartridgeKC Monitor ROM and cartridge

The last row is a mistake: the PIA and the KC Monitor's ROM fight the cartridge over the data bus. Set the jumper to BASIC before fitting a cartridge.

With the jumper set to BASIC, RESB still resets the PIA. That clears its control registers, so its interrupts stay off and it never pulls IRQB. The PIA's own pull-ups hold the LCD's E and R/W high and turn the keypad encoder's outputs off, so neither the LCD nor the encoder drives anything.

The IO ENABLE switch (SW25)

The eight-way DIP switch marked IO ENABLE has one position for each of the eight 1KB I/O windows, IO1 to IO8. U7, a 74HC138, decodes $8000–$9FFF into the eight windows, and switch n passes window n's select through as IOnB. With a switch off, a 1kΩ pull-up holds that select high, so nothing in that window is selected.

SwitchSelectWindowOn the board
1IO1B$8000–$83FFbreadboard headers only
2IO2B$8400–$87FFbreadboard headers only
3IO3B$8800–$8BFFbreadboard headers only
4IO4B$8C00–$8FFFbreadboard headers only
5IO5B$9000–$93FFthe serial port's ACIA (U15), and the breadboard headers
6IO6B$9400–$97FFbreadboard headers only. IO6 is the window for breadboard circuits
7IO7B$9800–$9BFFbreadboard headers only
8IO8B$9C00–$9FFFbreadboard headers only

Leave switch 5 on: it is the serial port. The others matter only to a breadboard circuit that uses its select. A card in the card slot decodes its own address and doesn't use these switches.

The card slot (J4) and the 6502 BUS header (J5)

The card slot takes one COB card or one ACE or VCS cartridge. The 6502 BUS header is a 2×20 box header that takes a ribbon cable to a COB Backplane, which is how the KIM Board grows into a bigger machine. Both carry the same bus as the breadboard headers. EXP0 and EXP1 are both HRDB, as on the ACE. EXP2 and EXP3 are bus lines with nothing on the board attached.

  • A COB card in the card slot decodes its own address. It must not use IO5, the serial port, or a window a breadboard circuit uses.
  • An ACE or VCS cartridge in the card slot gets $C000–$FFFF while the KIM enable jumper is set to BASIC (the third row of the table above).
  • A COB Backplane on the 6502 BUS header adds no pull-ups of its own. The KIM Board carries the one 10kΩ pull-up on each shared line (IRQB, NMIB, RESB, RDY, BE).
The breadboards

The bottom-left of the board holds two snap-together breadboards, each 6.5 × 2.25 in, as on today's KIM. The breadboards are where circuits are built: the breadboard circuits, the LED latch at $9400 first. Nothing is mounted under them.

The breadboard headers (J6) bring the whole bus and the eight I/O selects to the breadboards. They are one straight strip of female headers just above the breadboards, which jumper wires plug into: a 1×20, a 1×20 and a 1×10, left to right, with one empty pitch between them.

HeaderPins, left to right
Row 1 (the bus's odd pins)GND, RESB, IRQB, NMIB, RDY, BE, RWB, SYNC, PHI2, EXP3, EXP2, D7, D6, D5, D4, D3, D2, D1, D0, VCC
Row 2 (the bus's even pins)VCC, EXP1 (HRDB), EXP0 (HRDB), A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, A1, A0, GND
SelectGND, IO1B, IO2B, IO3B, IO4B, IO5B, IO6B, IO7B, IO8B, VCC
  • The bus keeps its pin numbers. Row 1 is the 6502 BUS header's odd pins in order, and Row 2 its even pins, so one pin table describes the 6502 BUS header, the card slot and the breadboard headers.
  • Each header has power at both ends, so a breadboard circuit finds GND and VCC next to the signals it uses.
  • The selects come after the IO ENABLE switch. A select reaches the breadboard headers only while its switch is on.

Rules for breadboard circuits:

  • A circuit drives D0–D7 only while it is selected, PHI2 is high and RWB is high.
  • A circuit may pull IRQB, NMIB and RESB low, open-drain, and must never drive them high.
  • IO1B–IO8B are address decodes only, not qualified by PHI2 or RWB, exactly as on the ACE. A circuit qualifies its writes with PHI2, as the LED latch does.
  • IO5B is the board's own serial port. Build in IO6 ($9400–$97FF), the window the series uses for its breadboard circuits.
  • At boot, the Kernal probes for the cards it knows, and the probe reads and writes their windows. A circuit in a window other than IO6 should expect to be read and written at boot.
  • A circuit that pulls HRDB (EXP0/EXP1) low takes $C000–$FFFF from the ROM, as a cartridge does. D1 keeps it from switching the KIM on.

The LED latch's schematic is the one-page KIM Demo sheet in 6502-DOCS. It decodes $9400 with its own 74HC138 from A10–A15, so it doesn't need IO6B. IO6B on the breadboard headers offers the same select ready-made, for later circuits.

Backplane / Backplane Pro

Hardware/Backplane/ (6502-COB — preferred)

Passive backplane providing 5 card slots with full bus interconnect across all slots. The Backplane Pro is an enhanced variant with integrated clock generation, reset circuitry, and power distribution.

CPU Card

Hardware/CPU Card/ (6502-COB — preferred)

Hosts the 65C02 CPU in a card form factor. Plugs into the Backplane or Backplane Pro.

Memory Card

Hardware/Memory Card/ (6502-COB — preferred)

Provides 32KB SRAM and 32KB EEPROM with address decoding logic. Plugs into the Backplane or Backplane Pro.

Serial Card

Hardware/Serial Card/ (6502-COB)

RS-232 serial communication via R6551AP ACIA and MAX232 level shifter. Optional — usually fitted, and required for the KC Monitor's serial monitor, but the KIM runs keypad-only without it.

Backplane Helper

Hardware/Backplane Helper/ (6502-COB)

Adds additional card slots to expand the total backplane configuration.

Main Board

Hardware/Main Board/ (6502-VCS — alternative)

An all-in-one board containing the 65C02 CPU, 32KB SRAM, 32KB EEPROM, clock, and reset circuitry. Can be used in place of the Backplane + CPU Card + Memory Card combination.

Keypad Card

Hardware/Keypad Card/

The card that makes the KIM a KIM. A cartridge card carrying its own ROM and I/O, which the Keypad Helper and Keypad LCD Helper attach to. Provides:

  • PIA: W65C21N — Port A carries the keypad code (PA0–PA4) and the LCD control lines (PA5 = RS, PA6 = R/W, PA7 = E); Port B is the LCD data bus. CA1 is the keypad data-available interrupt, CA2 the keypad encoder's output enable.
  • ROM: AT28C64 8KB EEPROM holding the cartridge firmware — see Firmware
  • Decoding: two 74HC138 decoders
  • Ports: PORT A and PORT B headers for the Keypad Helper and the Keypad LCD Helper

Unlike every other card in the family, the Keypad Card overlays the top of the address space. Its ROM replaces BASIC, the Monitor, Wozmon and the CPU vectors, while $A000–$BFFF stays reachable and is called into by the cartridge:

RangeContents
$A000–$B7FFBIOS Kernal (unchanged, still callable)
$B800–$BFFFCP437 character set (unchanged, still readable)
$C000–$DFFFPIA registers (mirrored I/O window)
$E000–$FFF9Cartridge ROM (AT28C64, 8KB)
$FFFA–$FFFFCPU vectors (NMI, RESET, IRQ) — the cartridge's own

This takeover is the reason the KIM behaves differently from every other system in the family, and it is why the KIM is not currently emulated by the emulator or the DEV board.

Keypad Helper

Hardware/Keypad Helper/

The keypad itself, attaching to the Keypad Card — either directly to PORT A, or through the pass-through header on the Keypad LCD Helper. Provides:

  • Input: 24 Cherry MX key switches wired as a 4×6 matrix
  • Encoder: MM74C922 16-key encoder, extended to 24 keys with a 74HC00
  • Output: 5-bit keycode plus a data-available strobe over a 2×6 PORT header

Scanning, debounce and encoding are all done in hardware. The helper carries no microcontroller and runs no firmware of its own.

Keypad LCD Helper

Hardware/Keypad LCD Helper/

Display companion board that sits between the Keypad Card and the Keypad Helper. Provides:

  • Display: 16×2 HD44780 LCD with a 10kΩ contrast trimmer, driven from PORT A (RS, R/W, E) and PORT B (8-bit data bus)
  • Pass-through: a KEYPAD header carrying PA0–PA4, CA1 and CA2 straight through to the Keypad Helper

Like the Keypad Helper, this board carries no microcontroller and runs no firmware — the LCD is driven directly by the Keypad Card's PIA.

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
KIM Board1.1UntestedSilkscreen only, but Rev 1.0 hasn't been tested yet.
Keypad Card1.1Proven designSilkscreen text only.
Keypad Helper1.0TestedBuilt and tested.
Keypad LCD Helper1.1Proven designSilkscreen, outline clean-up.

Firmware

Firmware/KC Monitor/

The KC Monitor is a 6502 assembly language cartridge ROM for the KIM system. It burns to the Keypad Card's AT28C64 and turns the card into a KIM-1-style hex monitor: browse and edit memory and execute code from the 24-key keypad and 16×2 LCD, with a concurrent Wozmon-compatible serial monitor over the Serial Card when one is fitted. See Firmware/KC Monitor/README.md.

It is the only firmware in this repository — the Keypad Helper and Keypad LCD Helper are hardware-only boards and run no code.

CAD

CAD/

3D-printable enclosure bases and laser-cut top panels for the KIM 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 boards mount on the base plate, for both the KIM Board and the four-board build, with every hole's position and the hardware each build needs. One plate takes either build. The plate is a stack of three 3 mm acrylic layers. A plate made before the KIM Board needs one more hole, Ø3.2 at (16, 224), which you can drill by hand through all three layers.

CAD/Assembly.json says how the KIM is put together: which boards each build uses, at which revision, where each sits on the plate and which way round, which tops sit on them, and where the printed parts go. Tools/cad/make.py generates the plate (CAD/Bases/Plate.svg and Plate.stl), its mounting drawing and the boards' tops in CAD/Tops/ from it, and checks it against the boards' PCBs and 3D models. Edit the assembly file, not the generated files. Plate.lbrn2, the LightBurn file, is remade from Plate.svg by hand.

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 all KIM hardware.

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.

KIM Board

RevJumperWhat it's forAs shippedWhat to doNeeded
1.0, 1.1J1KIM ENABLE: the KIM (pins 1 and 2) or BASIC (pins 2 and 3). See The KIM enable jumper above.No shunt: BASIC, held by R15.Fit the shunt on pins 1 and 2 for the KC Monitor, the keypad and the LCD. Set it to BASIC before fitting a cartridge.
1.0, 1.1J3CTS: where the ACIA's CTS comes from.No shunt.Fit the shunt on pins 2 and 3, ground, as the boards are built. On pins 1 and 2 it takes CTS from the cable, and a cable that doesn't assert it stops the transmitter. With no shunt the input floats, and serial may not work.For serial
1.0, 1.1JP1Bridged across D2, the diode in the ACIA's interrupt line.Bridged.Leave it. The ACIA's interrupt output only pulls low, so D2 isn't needed. Cut JP1 only for a part that drives its interrupt high as well as low.

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.

None of this repository's boards has an off-board header at its newest revision.

Checking the schematics

Tests/check-schematics.mjs

This script checks the KIM Board's logic by evaluating its netlist, not by reading the gates. It is built on the ACE's checker, written after the ACE's banked RAM latches were wrong twice and both times looked right on paper. It asks KiCad for the KIM Board's netlist, builds the glue logic from the gates it finds there, and drives every address, as a read and as a write, with PHI2 high and low, the KIM enable jumper fitted and open, a cartridge in the card slot and out, and the IO ENABLE switches all on and then each one off. That is 9,437,184 bus states. A net that nothing drives counts as a failure, so a missing wire fails too.

It checks:

  • the memory map in the KIM enable jumper's table, with the jumper in both positions;
  • that at most one chip drives the data bus on any read, except with the jumper set to KIM and a cartridge in;
  • that the PIA and the KC Monitor's ROM are never selected with the jumper set to BASIC, and that a cartridge pulling HRDB low never pulls KIMB low;
  • that the ACIA is selected only at $9000–$93FF, and only with IO ENABLE switch 5 on;
  • that each select on the breadboard headers is low only in its own 1KB window;
  • that the CPU, the PIA and the ACIA run from the 1 MHz oscillator;
  • one 10kΩ pull-up on each shared line, SOB tied to VCC, and RESB pulled low only by the reset transistor;
  • that the PIA's CB1 and CB2 are joined and held high by one 10kΩ pull-up.

Run it after any change to the KIM Board's schematic:

sh
node Tests/check-schematics.mjs

It needs Node.js and KiCad's kicad-cli, which it finds on the PATH, at the macOS default location, or through a KICAD_CLI environment variable. It takes about 30 seconds, prints ok or FAIL for each check, and exits non-zero on a failure. It takes another schematic's path as an argument, for checking a modified copy.

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.

Purchase

I have a few PCBs available on Tindie for those interested in building their own AC6502 system without ordering from a fab directly.

I sell on Tindie

License

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

Parts

128
QtyValueFootprintReferences
19100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC1, C2, C3, C12, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +3
11MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4, H5, H7, H8, H9, H10, H12, H16
91kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR6, R7, R8, R9, R10, R11, R12, R13, R14
810kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R2, R3, R4, R5, R15, R18, R23
51uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC8, C9, C10, C11, C13
474HC00Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU4, U5, U6, U17
374HC138Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU7, U10, U11
2100kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR20, R21
210uFCapacitor_THT:CP_Radial_D4.0mm_P1.50mmC6, C26
21N914Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD3, D4
2BAT85Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2
10Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW11
11Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW2
11 MHzOscillator:Oscillator_DIP-14X1
11.8432 MHzCrystal:Crystal_HC49-U_VerticalY1
110k6502 Parts:Trimmer 3386FVR1
11MResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR16
11N5819Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD5
12Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW3
12N3904Package_TO_SOT_THT:TO-92_InlineQ1
13Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW4
1330Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR22
14Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW5
147kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR17
15Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW6
15V DCConnector_BarrelJack:BarrelJack_HorizontalJ7
16Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW7
165C02Package_DIP:DIP-40_W15.24mm_Socket_LongPadsU1
17Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW8
18Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW9
19Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW10
1AButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW20
1AS6C62256Package_DIP:DIP-28_W15.24mm_Socket_LongPadsU2
1AT28C256Socket:DIP_Socket-28_W11.9mm_W12.7mm_W15.24mm_W17.78mm_W18.5mm_3M_228-1277-00-0602JU3
1AT28C64Package_DIP:DIP-28_W15.24mm_Socket_LongPadsU9
1BButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW24
1BREADBOARD HEADERS6502 Parts:KIM Breadboard HeadersJ6
1BUS6502 Parts:6502 Bus ConnectorJ5
1CButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW16
1CART6502 Parts:6502 Card SlotJ4
1CTS ENConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1DButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW15
1DELButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW22
1DNP: parallel with VR1 to make ~10 kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR19
1EButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW14
1ESCButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW17
1FButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW13
1GNDTestPoint:TestPoint_Pad_2.5x2.5mmTP2
1INSButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW18
1IO ENABLEButton_Switch_THT:SW_DIP_SPSTx08_Slide_9.78x22.5mm_W7.62mm_P2.54mmSW25
1KIM ENABLEConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1LCD-16X26502 Parts:LCD-16X2U13
1LEFTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1
1LM555Package_DIP:DIP-8_W7.62mm_Socket_LongPadsU12
1LOGO6502 Logos:6502 KIM Board Logo 5mmG***
1LOGOA.C. Wright Logo:A.C. Wright Logo 10mmG***
1MAX232Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU14
1MM74C922Package_DIP:DIP-18_W7.62mm_Socket_LongPadsU16
1PGDNButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW23
1PGUPButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW19
1POWER6502 Parts:Power SwitchSW27
1POWER LEDLED_THT:LED_D3.0mmD6
1R6551APPackage_DIP:DIP-28_W15.24mm_Socket_LongPadsU15
1RESETButton_Switch_THT:SW_PUSH_6mmSW26
1RIGHTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW12
1SERIAL (DCE)Connector_Dsub:DSUB-9_Socket_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ2
1SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1UPButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW21
1VCCTestPoint:TestPoint_Pad_2.5x2.5mmTP1
1W65C21NPackage_DIP:DIP-40_W15.24mm_Socket_LongPadsU8

The 126 most common of 128 parts.

More from acwright/6502-KIM

4
  • 2 layers100 × 150 mmKeypad Helper, the printed circuit board in 3D

    Keypad Helper

    acwright/6502-KIM

    6502-KIM 8-Bit Retro Computer Project

    42 parts2CERN-OHL-P-2.0
  • 2 layers100 × 57.6 mmKeypad Card, the printed circuit board in 3D

    Keypad Card

    acwright/6502-KIM

    6502-KIM 8-Bit Retro Computer Project

    14 parts2CERN-OHL-P-2.0
  • 2 layers100.3 × 64.7 mmKeypad LCD Helper, the printed circuit board in 3D

    Keypad LCD Helper

    acwright/6502-KIM

    6502-KIM 8-Bit Retro Computer Project

    13 parts2CERN-OHL-P-2.0
  • 2 layers100 × 65 mmKeypad LCD Helper, the printed circuit board in 3D

    Keypad LCD Helper

    acwright/6502-KIM

    6502-KIM 8-Bit Retro Computer Project

    13 parts2CERN-OHL-P-2.0

Similar boards

  • 2 layers100 × 57.6 mmSerial Card, the printed circuit board in 3D

    Serial Card

    acwright/6502-COB

    6502-COB 8-Bit Retro Computer Project

    24 parts47CERN-OHL-P-2.0
  • 2 layers335 × 250 mmACE Board, the printed circuit board in 3D

    ACE Board

    acwright/6502-ACE

    6502-ACE 8-Bit Retro Computer Project

    205 parts12CERN-OHL-P-2.0
  • 2 layers198.1 × 193 mmSTE25, the printed circuit board in 3D

    STE25

    stonedDiscord/Automatenplatinen

    Reverse engineerte Hardware aus deutschen Spielautomaten.

    252 parts5BSD-2-Clause
  • 2 layers225.1 × 167.8 mm6502 computer, the printed circuit board in 3D

    6502 computer

    jp0409hlh/6502_computer

    A computer based on Ben Eater's 6502 series

    81 parts7
  • 2 layers284.9 × 96.5 mmFella, the printed circuit board in 3D

    Fella

    agkaminski/FellaPC

    DIY 6502 all-in-keyboard personal computer

    115 parts2CC0-1.0
  • 4 layers188 × 128.3 mmZAK180, the printed circuit board in 3D

    ZAK180

    agkaminski/ZAK180

    DIY all-in-keyboard computer featuring Z180 and floppy drive

    140 parts
  • 2 layers53.3 × 130.8 mmRtc sd, the printed circuit board in 3D

    Rtc sd

    zuiko21/minimOS

    Scalable OS for 6502/65816

    39 parts23MIT
  • 4 layers215.3 × 96.8 mmZak181, the printed circuit board in 3D

    Zak181

    agkaminski/ZAK181

    Improved ZAK180: DIY all-in-keyboard computer featuring Z180 and floppy drive.

    123 parts

Questions

How big is the KIM Board PCB?

It measures 280 × 220 mm and has 2 copper layers, 1.6 mm thick.

What parts does the KIM Board use?

128 parts, built around the MAX232N, 74HC00D, 74HC138 and MM74C922N. 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 KIM Board KiCad files?

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

Can I use the KIM Board 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).