Skip to the content
PCBKitNew board
2 layers53.3 × 53.3 mm6502ino, the printed circuit board in 3D

Arduino shield with an 65c02 processor

Size
53.3 × 53.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
66
Pads
146
Tracks, vias
342, 27
Pours
1
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
31 Aug 2019
Updated
3 Oct 2019

Overview

6502ino is an open-source printed circuit board by c0pperdragon, from the c0pperdragon/6502ino repository on GitHub. It is a 2-layer board of 53.3 × 53.3 mm with 23 parts on 66 nets, routed with 342 tracks and 27 vias.

It is built around the 74AC00 and IDT71256SA12Y. Its parts include 12 resistors, 4 capacitors and 3 ICs.

Main components

2

README

README.md

6502ino

A minimal circuit to form the environment necessary to run a 65c02 CPU.

Normally getting any form of 6502 processor to run and communicate with the outside world is very cumbersome. In addition to the CPU and RAM you need very specific IO controller parts that can be hooked up to the system address and data bus. You need a ROM for the initial boot code and some form of MMU to drive the various selection lines according to the memory address (all IO is memory mapped). All this leads to a pretty large and costly board even for the most basic program to execute.

This project tries to reduce the system size as much as possible by using a microcontroller - in the form of an Arduino Uno - to do all the tricky stuff. Together with only a bit of 7400 series logic and 32KB RAM, this is enough to get the 65c02 working with 16Mhz on a breadboard.

Setting the fuses to generate 16Mhz on pin 8

For the setup to work, you need to configure your arduino to permanently ouput the full system clock on a dedicated pin. This feature can not be set up from inside a program, but needs to be done by configuring the "fuse bits".

Setting the fuse bits is a bit complicated, but you only need to do it once. To access these bits, you need a dedicated programming device, called the AVR ISP (in-circuit-programmer). Luckily any arduino can be programmed to become such a device with the "ArduinoISP" example sketch that is included in the Arduino IDE. So you basically need a spare arduino for this process.

Wiring up the programmer arduino to the arduino being programmed can be seen in countless internet resources. But there it is mainly done to programm a bootloader. You need to do a different thing, for which you need the command-line tool "avrdude.exe" which is installed along with the Arduino IDE somewhere in the depth of the "hardware/tools" folder.

Once everything is hooked up, open a system console and execute the following command (replace com10 with whatever port your programmer arduino is registered in the system):

text
avrdude -p atmega328p -b 19200 -C ../etc/avrdude.conf -c avrisp -P com10

If everything works correctly, this will show you some status and the current settings of the fuse bits. We are particularly interested in the value of the 'L' fuse bits, which on my factory default Arduino Uno shows as L:FF. To set the permanent clock output, you need to modify this value (an 8-bit value) to have the bit 6 set to 0. In my case this means

to set the 'L' fuses to BF:

text
avrdude -p atmega328p -b 19200 -C ../etc/avrdude.conf -c avrisp -P com10 -U lfuse:w:0xBF:m

After this settings are done, the Arduino will constantly send a 16Mhz signal on pin 8, no matter what, even during reset.

Parts

23
QtyValueFootprintReferences
106K8Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8, R9, R10
3100nFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2, C3
2Conn_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJDIGITAL1, JPOWER1
1100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR12
110uFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC4
16k8Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR11
174AC00Package_DIP:DIP-14_W7.62mm_SocketU3
1Conn_01x06Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJANALOG1
1Conn_01x10Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJDIGITAL2
1IDT71256SAPackage_DIP:DIP-28_W7.62mm_SocketU2
1W65C02SPackage_DIP:DIP-40_W15.24mm_SocketU1

Questions

How big is the 6502ino PCB?

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

What parts does the 6502ino use?

23 parts, built around the 74AC00 and IDT71256SA12Y. 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 6502ino KiCad files?

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

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

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

Similar boards

  • 2 layers116.8 × 147.3 mmCpu, the printed circuit board in 3D

    Cpu

    eshazen/retro-25

    Retro-tech HP-25 calculator clone using Z80

    52 parts33
  • 2 layers88.9 × 88.9 mmByteMachine, the printed circuit board in 3D

    ByteMachine

    c0pperdragon/ByteMachine

    A generic main board to build 8-bit computers

    46 parts20
  • 2 layersBreadBin, the printed circuit board in 3D

    BreadBin

    c0pperdragon/BreadBin

    A CPU made of 7400 logic on breadboards - inside a bread bin ;-)

    45 parts18
  • 2 layers101.6 × 83.8 mmZ80DevBoard, the printed circuit board in 3D

    Z80DevBoard

    dbuchwald/Z80DevBoard

    Simple Z80 based prototyping and development board designed as extension to Arduino Mega 2560

    39 parts3MIT
  • 2 layers88.9 × 71.1 mmPinky-8, the printed circuit board in 3D

    Pinky-8

    contrarian-computing/pinky-8

    A homebrew SBC based on the WDC 65C02S and 65C22S

    37 parts2MIT
  • 2 layers150 × 100 mmRp6502, the printed circuit board in 3D

    Rp6502

    clintonimaroo/Sketcha

    This is a Next.js project bootstrapped with create-next-app.

    55 parts
  • 2 layers172.7 × 108.6 mmClementina hardware, the printed circuit board in 3D

    Clementina hardware

    fran150/clementina-hardware

    KiCad schematic for Clementina, a 3.3V W65C02S computer with a Raspberry Pi Pico 2 W (MIA) handling video, audio, storage and I/O.

    48 partsGPL-3.0
  • 4 layers78 × 47 mmSummit scourer, the printed circuit board in 3D

    Summit scourer

    goodoldchap345/summit_scourer

    125 parts