

Simple6502
A simple 6502 single board computer
- Size
- 100 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 46
- Nets
- 74
- Pads
- 419
- Tracks, vias
- 1,333, 106
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 21 Sep 2023
- Updated
- 2 Nov 2026
Overview
Simple6502 is an open-source printed circuit board by marianol, from the marianol/simple6502 repository on GitHub. It is a 2-layer board of 100 × 100 mm with 46 parts on 74 nets, routed with 1,333 tracks and 106 vias.
It is built around the 74HC138, 74HCT00D and 74LS30PC, with the DS1813-10+ among its other parts. Its parts include 9 connectors, 8 capacitors, 8 resistors, 7 ICs and 2 switches. It belongs with the computers and single-board computers and retro computing and games boards of this library.
Main components
474HC138
SOP-160℃~+70℃ 24ns@5.0V,16pF 2V~6V 3/8 5.2mA 5.2mA 5uA 74HC Decoder Reverse function Single Supply SOP-16 Signal Switches, Multiplexers, Decoders ROHSGRSignal Switches, Multiplexers, Decoders74HCT00D
SO-14-40℃~+125℃ 100mV、400mV 12ns@4.5V,50pF 2 2V 3.7V、4.4V 4 4.5V~5.5V 40uA 4mA 4mA 74HCT Series 800mV NAND Gate Overvoltage-tolerant input TTL Compatible CMOS SO-14 Logic Gates ROHSNexperiaLogic Gates74LS30PC
PDIP-140℃~+70℃ 1 1.1mA 18ns@5V,50pF、20ns@5V,50pF 2.7V 2V 4.75V~5.25V 400uA 500mV 74LS Series 8 800mV 8mA NAND Gate PDIP-14 Logic GatesTexas InstrumentsLogic GatesDS1813-10+
TO-92-3-40℃~+85℃@(Ta) 1 1.2V~5.5V 150ms 4.35V Active Low No Open Drain Voltage Monitor Yes TO-92-3 Supervisor and Reset ICs ROHSMaxim Integrated (Analog Devices)Supervisor And Reset ICs
README
README.mdsimple6502
My own take on a simple 6502 single board computer, inspired on Garth Wilson's excellent 6502 Primer, Daryl Rictor, Ben Eater, and my own beautiful C=64 and all the classic 8-bit computers of the late 70s early 80s.
This project exists because of scope creep on my YAsixfive02 project, which is in its 10000 iteration. Which I don't think will ever end.
Organization
The project is organized as follows:
- /hardware
- /simple6502 The SBC computer motherboard a.k.a The Project
- /IO_Card A 6522 IO card with 2 VIAs
- /protoCard A protoboard card for the simple6502 to build your projects
- /6502motherboard An untested but complete card connector backplane motherboard. I decided to abandon this in favor of the SBC, i may pick it up later
- /schematics PDF schematics and renders
- /gallery images of the completed PCBs
- /3dmodels Kicad 3D models
- /firmware
- BIOS and ROM for the simple6502, check the ReadMe
- /docs
- docs will be here for now only datasheets
Design
The goal is to build a simple 6502 SBC with RAM, ROM, IO decoding and a serial interface. An expansion bus will carry all the address, data and supporting lines to allow adding IO and other hardware expansions. The PCB will be kept at 100x100mm to reduce cost.
For the serial interface I settled on the Motorola 68B50 ACIA, just because I had one lying around. This forced using a 1.8432MHz clock that drives both the CPU and the ACIA. I added a header for an FTDI card to convert the TTL serial to USB. The ACIA is connected to the IO_8 line locating it at 0x7F70 in the memory map. The jumper J2 next to the header allows you to run the board with the USB 5v rail from the FTDI. IMPORTANT!! This overrides the power switch SW2 and there is no protection built into the board so you should not connect this jumper at the same time as the 5V barrel J7 or the AUX Power header J8. The bus Slot connectors have pin 27 tied to IO_1 and IO_2 respectively allowing to design expansion cards that can be mapped into memory based on where they are plugged. You still have access to IO_3 to IO_7 in case you want to use those. The Expansion Port J1 is intended to be used with a 40 pin ribbon for ease of development of prototype boards.

I made the PCBs for Revision 1.6 on PCBWay.

Status
Revision 1.6:
- PCB built and tested.
- BIOS 0.0.1 working on Rev 1.6. Minimal BIOS routines to control the ACIA
Memory Map
Momory Decocing is done using gates for RAM, ROM and IO. IO_CS line is sent to a 3-8 decoder to get 8 individual IO select lines. IO line $\overline{IO\textunderscore08}$ is used for the onboard ACIA for serial communication. IO lines $\overline{IO\textunderscore01}$ and $\overline{IO\textunderscore02}$ are sent to pin 27 of Slot 1 and 2 respectively. This allows cards that use this pin to get mapped to the memory based on the Slot they are inserted.
I should have mapped some IO on Zero Page for ease of programming and fast IO, but that is left for another revision, since is too convoluted with gates and better suited for a PAL/GAL.
Address Space
- 0x0000 - 0x7EFF : RAM 32K - 256 bytes (31.75k)
- 0x7F00 - 0x7F0F : IO_1 > SLOT 1
- 0x7F10 - 0x7F1F : IO_2 > SLOT 2
- 0x7F20 - 0x7F2F : IO_3
- 0x7F30 - 0x7F3F : IO_4
- 0x7F40 - 0x7F4F : IO_5
- 0x7F50 - 0x7F5F : IO_6
- 0x7F60 - 0x7F6F : IO_7
- 0x7F70 - 0x7F7F : IO_8 > ACIA
- 0x7F80 - 0x7FFF : Not Decoded
- 0x8000 - 0xFFFF : ROM (32K)
Card Connector Design
The card connector is based on the EDAC 395 series. I decided on the 395-50-520-201 which I had from a previous Apple ][ repair. Exposed in the connector are:
- Address lines A0..A15
- Data lines D0..D7
- Clock $\phi$ 2
- $\overline{IO{\textunderscore}CS}$, $\overline{RAM{\textunderscore}CS}$ , and $\overline{ROM{\textunderscore}CS}$ chip select lines
- $\overline{RD}$ and $\overline{WR}$
- $\overline{RESET}$
- Pin 27 is the slot IO select line. For Slot 1 is $\overline{IO\textunderscore01}$ mapping it to 0x7F00, and for Slot 2 is $\overline{IO\textunderscore02}$ mapping it to 0x7F10.
- IO chip select lines $\overline{IO\textunderscore03}$ .. $\overline{IO\textunderscore07}$.
- $\overline{IRQ}$ and $\overline{NMI}$
- VCC and GND, this are set so if you insert a card backwards you will not short them.
- Pins 21, 24, 33, and 34 are only connected between the 2 slots and have no connection to the mainboard
Licence
Licenced under CERN Open Hardware licence CERN-OHL-S v2, see CERN-OHL-S-v2.txt
(c) 2023-2024 Mariano Luna. All rights reserved
Parts
46| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 0.1uF | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1, C2, C3, C4, C6, C7, C8 |
| 4 | M | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H1, H2, H3, H4 |
| 3 | 4K7 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R1, R2, R5 |
| 2 | 1K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R7, R8 |
| 2 | 3K3 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R3, R4 |
| 1 | 1000uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C5 |
| 1 | 220 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R6 |
| 1 | 74HC138 | Package_DIP:DIP-16_W7.62mm_Socket | U7 |
| 1 | 74HCT00 | Package_DIP:DIP-14_W7.62mm_Socket | U5 |
| 1 | 74LS30 | Package_DIP:DIP-14_W7.62mm_Socket | U6 |
| 1 | ACO-1MHz | Oscillator:Oscillator_DIP-14 | X1 |
| 1 | AUX 5VDC | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J8 |
| 1 | CLK SEL | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3 |
| 1 | DS1813-10+ | DS1813-10_:21-0248A | T1 |
| 1 | Expansion Port | Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical | J1 |
| 1 | FTDI Serial | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J4 |
| 1 | GND | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | J5 |
| 1 | IO_01: 0x7F00 | Connector_Card:EDAC 395-050-520-201 | SLOT2 |
| 1 | IO_02: 0x7F10 | Connector_Card:EDAC 395-050-520-201 | SLOT1 |
| 1 | MC68B50 | Package_DIP:DIP-24_W15.24mm_Socket | U2 |
| 1 | POWER | Button_Switch_THT:SW_Push_2P2T_Toggle_CK_PVA2OAH5xxxxxxV2 | SW2 |
| 1 | POWER | LED_THT:LED_D3.0mm | D1 |
| 1 | POWER 5V | Connector_BarrelJack:BarrelJack_Horizontal | J7 |
| 1 | RAM 62256 | Package_DIP:DIP-28_W15.24mm_Socket | U3 |
| 1 | RAM_~{OE} | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1 |
| 1 | RESET | Button_Switch_THT:SW_TH_Tactile_Omron_B3F-10xx | SW1 |
| 1 | RESET | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J6 |
| 1 | ROM 28C256 | Package_DIP:DIP-28_W15.24mm_Socket | U4 |
| 1 | ROM_~{OE} | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP3 |
| 1 | USB Power | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | W65C02SxP | Package_DIP:DIP-40_W15.24mm_Socket | U1 |
| 1 | ~{VP} | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | J9 |
| 1 | ~{WR} | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP2 |
Questions
How big is the Simple6502 PCB?
It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Simple6502 use?
46 parts, built around the 74HC138, 74HCT00D, 74LS30PC and DS1813-10+. 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 Simple6502 KiCad files?
From the marianol/simple6502 repository on GitHub, at the commit this page was made from: the board is hardware/simple6502/simple6502.kicad_pcb and its schematic hardware/6502_PS2_Keyboard/6502_PS2_Keyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Simple6502 design in my own project?
Its repository states no licence, so its author keeps all rights: ask marianol before reusing the design.
More from marianol/simple6502
4- 2 layers100 × 99.9 mm

- 2 layers100 × 100 mm

- 2 layers79.5 × 99.9 mm

- 2 layers100 × 99.9 mm

Similar boards
- 2 layers149.9 × 99.9 mm

- 2 layers49.6 × 78.3 mm

Odyssey
jotego/jtcores
FPGA cores compatible with multiple arcade game machines and KiCAD schematics of arcade games. Working on MiSTer FPGA/Analogue Pocket
24 parts346GPL-3.0 - 2 layers100 × 77.5 mm

- 4 layers243.8 × 170.2 mm

- 2 layers58.4 × 50.8 mm

OpenC64KernalCart
SukkoPera/OpenC64KernalCart
Open Hardware Multi-KERNAL Cartridge for the Commodore 64
13 parts29 - 2 layers83.8 × 61.5 mm

- 2 layers100 × 100 mm

MZ80K SD
yanataka60/MZ80K_SD
MZ-80KシリーズでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです
25 parts28MIT - 2 layers100 × 100 mm
