Skip to the content
2 layers142.2 × 175.3 mm6502protoboard, the printed circuit board in 3D

6502protoboard

rjhelms/6502proto2

A prototyping board for experimenting with 6502 hardware and software design

Size
142.2 × 175.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
95
Nets
237
Pads
1,112
Tracks, vias
1,402, 71
Pours
3
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
29 Jul 2021
Updated
13 Aug 2021

Overview

6502protoboard is an open-source printed circuit board by rjhelms, from the rjhelms/6502proto repository on GitHub. It is a 2-layer board of 142.2 × 175.3 mm with 95 parts on 237 nets, routed with 1,402 tracks and 71 vias.

It is built around the 74HC573, 74HC00D and 74HC08D, with the L7805 and SB240 among its other parts. Its parts include 31 connectors, 18 capacitors, 11 resistors, 11 ICs and 3 diodes.

Main components

5

README

README.md

6502 Protoboard

A prototyping board for experimenting with 6502 hardware and software design

License: CC BY-SA 4.0

This board implements a minimal 6502 system, containing a 65C02 processor, a 65C22 Versatile Interface Adapter (VIA), a 32kB EEPROM and 32kB of SRAM.

This project would not have been possible without Garth Wilson's excellent 6502 Primer, which is eseential reading for anyone looking to get started with 6502 homebrew.

Table of contents

Features

  • Two clock sources: 1MHz crystal oscillator "fast" clock and 555-timer based "slow" clock (approx 0.5Hz - 500Hz)
  • Blinkenlights for the address and data buses
  • Header for external clock source, if desired
  • 400-point breadboard area, for address decoding and other small circuits
  • IDC headers for address & data buses, CPU signals, and both VIA ports

Building

More to come - for now, refer to the interactive BOM.

Implementing address decoding

In order to let the 6502 processor talk to other chips, any 6502 system requires some address decoding logic. The board has no address decoding built in; it is up to the builder to implement their chosen address decoding with the breadboard area.

Pads above the breadboard area provide access to the 4 highest bytes of the address bus, as well as the PH2 clock and R/W, and the relevant inputs for each of the on-board ICs.

The address decoding chapter of Garth Wilson's primer is well worth a read before deciding what to implement.

Some key considerations when choosing an address decoding scheme:

  • Each address should select at most one device
  • Writes to RAM should only occur when PH2 is high
  • RAM should be at the bottom of the address space, to include the zero page ($0000-$00FF) and stack ($0100-$01FF).
  • ROM should be at the top of the address space, to include the reset and interrupt vectors at $FFFA-$FFFF.

Minimal setup

For a system only using the RAM, ROM, and VIA chips on board, satisfactory results can be achieved with a single 74HC00 quad NAND gate:

StartEndDevice
$0000$7FFFRAM
$8000$BFFFVIA
$C000$FFFFROM

With only 64kB of address space and 32kB of both RAM and ROM, at least some portion of one of these will need to be masked by the VIA or other devices. This logic masks the lower half of ROM, resulting in a system with 32kB of RAM and 16kB of ROM.

A similar addressing scheme with 16kB of RAM and 32kB of ROM can also be implemented with one 74HC00.

Adding more I/O

The minimal setup above works just fine for the chips on the protoboard, but doesn't leave any room for expanding the system any further. Also, while the VIA only needs 16 bytes of address space, the above setup allocates a whole 16kB to it!

By using a 74HC138 line decoder, that 16kB can be split into 8 2kB segments, each addressed by one output.

StartEndDevice
$0000$7FFFRAM
$8000$87FF(VIA) '138 output 0
...
$B800$BFFF'138 output 7
$C000$FFFFROM

Header pinouts

CPU signals

PinSignalPinSignal
1PH22PH2
3RESET4RDY
5R/W6IRQ
7unused8NMI
9unused10SYNC
11unused12BE
135V145V
15GND16GND

Address bus

PinSignalPinSignal
1A02A1
3A24A3
5A46A5
7A68A7
9A810A9
11A1012A11
13A1214A13
15A1416A15

CPU bus

PinSignalPinSignal
1D02D1
3D24D3
5D46D5
7D68D7

VIA ports

PinSignalPinSignal
15V25V
3PA04PA1
5PA26PA3
7PA48PA5
9PA610PA7
11CA112CA2
13GND14GND

Useful links

Parts

95
QtyValueFootprintReferences
14Conn_01x40Connector_PinHeader_2.54mm:PinHeader_1x40_P2.54mm_VerticalJ15, J16, J17, J18, J19, J20, J21, J22, J23, J24, J25, J26, J27, J28
13100nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC1, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C18
61KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6, R7, R8, R9, R10, R11
43K3Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R3, R4, R5
4Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2, J4, J5, J7
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
31KResistor_THT:R_Array_SIP9RN1, RN2, RN3
374HC573Package_DIP:DIP-20_W7.62mmU8, U9, U10
210nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC15, C17
2Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ30, J31
2Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ8, J10
2Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ13, J14
2Conn_02x07_Odd_EvenConnector_IDC:IDC-Header_2x07_P2.54mm_VerticalJ11, J12
2Conn_02x08_Odd_EvenConnector_IDC:IDC-Header_2x08_P2.54mm_VerticalJ1, J6
2DC-10EWADisplay:HDSP-4830BAR1, BAR2
2LEDLED_THT:LED_D5.0mmD2, D3
2Logo_Open_Hardware_SmallSymbol:OSHW-Logo_5.7x6mm_SilkScreenLOGO1, LOGO1
1100u 25VCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC2
11K8Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
11MHzOscillator:Oscillator_DIP-8X1
11uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC16
128C256Socket:DIP_Socket-28_W11.9_W12.7_W15.24_W17.78_W18.5_3M_228-1277-00-0602JU2
1330nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC3
1556Package_DIP:DIP-14_W7.62mm_LongPadsU6
162256Package_DIP:DIP-28_W15.24mm_Socket_LongPadsU3
174HC00Package_DIP:DIP-14_W7.62mmU7
174HC08Package_DIP:DIP-14_W7.62mmU11
1B1MPotentiometer_Custom:Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_CenteredRV1
1Barrel_Jack_SwitchConnector_BarrelJack:BarrelJack_Wuerth_6941xx301002J29
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ9
1Conn_02x04_Odd_EvenConnector_IDC:IDC-Header_2x04_P2.54mm_VerticalJ3
1DC-10GWADisplay:HDSP-4850BAR3
1HeatsinkHeatsinks_Custom:Heatsink_Assman_V4330NHS1
1L7805Package_TO_SOT_THT:TO-220-3_VerticalU5
1SB240Diode_THT:D_DO-15_P10.16mm_HorizontalD1
1SW_PushButton_THT_Custom:SW_TH_Tactile_Omron_B3F-10xx_Common_PinsSW1
1SW_SPDTSwitches_THT_Custom:SW_SPDT_E-Switch_200MSP1xM2SW2
1SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2
1SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1SolderJumper_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP3
1SolderJumper_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP4
1W65C02SPackage_DIP:DIP-40_W15.24mm_Socket_LongPadsU1
1W65C22SPackage_DIP:DIP-40_W15.24mm_Socket_LongPadsU4

Similar boards

  • 4 layers177 × 152.1 mmAvboard tht2, the printed circuit board in 3D

    Avboard tht2

    clydeshaffer/gametank

    design files for the gametank hardware implementation

    139 parts150
  • 2 layers194.3 × 174 mmMotherboard, the printed circuit board in 3D

    Motherboard

    aversey/suen

    A simple computer on M68k

    99 parts
  • 2 layers131.9 × 164.6 mmCft alu, the printed circuit board in 3D

    Cft alu

    alexiosc/cft

    The CFT homebrew minicomputer

    138 parts6GPL-3.0
  • 4 layers124.5 × 69.2 mmDB512k, the printed circuit board in 3D

    DB512k

    stonedDiscord/Automatenplatinen

    Reverse engineerte Hardware aus deutschen Spielautomaten.

    98 parts5BSD-2-Clause
  • 4 layers160 × 100.1 mmMini8086, the printed circuit board in 3D

    Mini8086

    svpetry/Mini8086

    A small 8086 computer system.

    51 parts3
  • 4 layers100 × 115 mmTransistorfet z280 Z280-SBC, the printed circuit board in 3D

    Transistorfet z280 Z280-SBC

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    56 parts1
  • 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 layers180.9 × 55.5 mmServicetastatur, the printed circuit board in 3D

    Servicetastatur

    stonedDiscord/servicetastatur

    Klon der blauen Servicetastatur für Merkur Profitech 3000 Geräte

    76 parts3CC-BY-SA-4.0

Questions

How big is the 6502protoboard PCB?

It measures 142.2 × 175.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 6502protoboard use?

95 parts, built around the 74HC573, 74HC00D, 74HC08D and L7805. 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 6502protoboard KiCad files?

From the rjhelms/6502proto repository on GitHub, at the commit this page was made from: the board is 6502protoboard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the 6502protoboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask rjhelms before reusing the design.