Skip to the content
PCBKitNew board
2 layers230.5 × 134.6 mm6502Computer, the printed circuit board in 3D

A 6502 computer inspired by the Apple 1.

Size
230.5 × 134.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
136
Nets
203
Pads
872
Tracks, vias
3,336, 239
Pours
1
Routed
Yes
KiCad
KiCad 4
Created
14 Apr 2017
Updated
7 Feb 2018

Overview

6502Computer is an open-source printed circuit board by jonthomasson, from the jonthomasson/retro1 repository on GitHub. It is a 2-layer board of 230.5 × 134.6 mm with 136 parts on 203 nets, routed with 3,336 tracks and 239 vias.

It is built around the MIC29150-3.3WT, MIC29150-5.0WT and MIC29152WT, with the JUMPER3 and 2N2222A among its other parts. Its parts include 43 capacitors, 24 resistors, 21 connectors, 16 ICs and 4 switches. It belongs with the retro computing and games boards of this library.

Main components

5

README

README.md

retro1

A 6502 computer inspired by the Apple 1.

After completing the Nand2Tetris course, I had a hankering for creating an actual working computer that I could solder together and program. I took on this challenge mostly for the learning experience. My goals were to get some more experience with digital logic, learn assembly programming, and gain more familiarity with Kicad. I chose the 6502 processor since it was really well documented, fairly simple in design, and had a slew of projects I could glean information off of. These projects included The 6502 Home Computer found at grappendorf.net. This project, built by Dirk Grappendorf, was truly amazing. The level of detail he went to for the build logs and the design of the case and other areas of the computer were just incredible. This project greatly aided me in setting up the SID chip, and interfacing it with the 65C02. Another great project that helped me in getting my address decoding circuits up and running was Grant Searle's Simple 6502 Computer. Grant is a legend in my eyes. He seems to be a master at both hardware and software design. Along the path of learning, I also built an L-Star, designed by a true genius, Jac Goudsmit. Jac had the clever idea to interface the 6502 cpu with a Parallax Propeller microcontroller. The Propeller would take care of the address decoding, memory, and i/o. The L-Star works phenomenally well, and I had a blast just playing around with the Woz monitor and Apple 1 BASIC. It was the L-Star project that gave me the idea of using the Propeller to connect to the 65C02 by way of the ACIA UART. From there the Propeller outputs text onto a VGA monitor. The PS/2 Keyboard and the SD Card also interface with the Propeller chip. If you're interested in looking at some of my build/learning log, I attached it as a pdf to this project. Last but not least, the entire 6502.org forum provided a wealth of knowledge and many useful links in getting started with designing a 6502 computer.

Although this was my first computer design, I had a few design rules that I wanted to try and stick to. The first rule was that for the sake of diy, simplicity, and nostalgia for 8 bit computers of the 80s, I wanted to use mostly all through hole components. This led to a larger board size, but it would help make the finished board easier to test and modify later. I also stuck with a green solder mask, and red power led to complete the nostalgic motif. My second goal was to try and create a flexible design, that wasn't just a computer, but could also work as a learning platform later on. For this reason I tried to break out most of the unused i/o pins to edge connectors or headers that could be accessed if the need arose. Keeping with this second rule/goal, I also wanted to have a modular address decoding circuit, that I could modify and play around with. The address decoding part of the computer really fascinates me for some reason. This seems to be where a lot of the magic happens where the processor, the memory, and the i/o lines shake hands. If I found a better address scheme later on down the road, I wanted to be able to incorporate it. I finally decided on making the address module footprint the same size as a 40 pin .6" width DIP package. This way I could possibly use the Simple CPLD module I had created to act as a dynamic address decoder, or build/test any number of other schemes without needing to respin multiple boards. I've created 2 other decoding modules thus far, one giving 16K ROM, 32K RAM, and another with 32K ROM and 32K RAM (minus 256 bytes). Those modules can be found here. A third goal was to use as much of the original C64 SID circuit as possible in my design. To do this I dove into the original C64 schematics and tried to stay true to the original design as much as possible, complete with styrene filter caps.

For software I developed test scripts as I went to aid in the testing of new components. I guess this approach is similar to test driven development. This made it somewhat easy to see if modifying a circuit broke any piece of tested functionality. The finished rom has the Apple II monitor, Micro Chess, a SID synth program (taken from the Dirk Grappendorf project), a program for setting the rtc circuitry with the date/time as well as invoke the square wave output of the rtc, and a buggy version of Apple II BASIC. I say buggy version of BASIC because it's only able to run simple commands like PRINT without throwing errors. I've attempted to follow the error down the stack, but I wasn't able to figure out what I was doing wrong.

Overall I think I met my initial goals for this project. I learned a ton and had a lot of fun with it. It whet my appetite for future projects. I'm by no means an expert now, having completed the build, but I at least feel more comfortable with digital logic and computer architecture than I was before embarking on this adventure. I hope that someone may find this journey useful. enter image description here enter image description here

Parts

136
QtyValueFootprintReferences
21.1uf6502Library:C_Disc_D3_P2.5C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C37, C39 +5
52406502Library:Resistor_Horizontal_RM10mmR17, R18, R21, R23, R25
5JUMPER36502Library:Pin_Header_Straight_1x03JP4, JP5, JP6, JP7, JP8
410k6502Library:Resistor_Horizontal_RM10mmR11, R16, R27, R29
41nf6502Library:C_Disc_D6_P3.5_SkinnyC27, C28, C30, C33
4CONN_02X096502Library:Socket_Strip_Angled_2x09P6, P8, P9, P10
34706502Library:Resistor_Horizontal_RM10mmR22, R24, R26
3FB6502Library:Ferrite_Bead_Horizontal_RM10mmFB1, FB2, FB3
2.33uf6502Library:C_Disc_D6_P5C3, C9
2.47nf6502Library:C_Disc_D3_P2.5C32, C34
21006502Library:Resistor_Horizontal_RM10mmR19, R20
210K6502Library:Resistor_Horizontal_RM10mmR28, R30
210ufCapacitors_ThroughHole:C_Radial_D5_L11_P2C35, C36
21N58176502Library:diode_do41D1, D2
21k6502Library:Resistor_Horizontal_RM10mmR10, R12
22.2nf6502Library:C_Axial_D6_L11_P18C25, C26
247ufCapacitors_ThroughHole:C_Radial_D5_L11_P2C4, C7
26522mod_pth_circuits:dil_40-600_socketU9, U11
26551mod_pth_circuits:dil_28-600_socketACIA 1 U10, ACIA 2 U12
26pf6502Library:C_Disc_D3_P2.5C23, C24
2CONN_01X056502Library:Socket_Strip_Straight_1x05P5, P7
2CONN_01X126502Library:Socket_Strip_Straight_1x12P13, P16
2CONN_01X206502Library:Socket_Strip_Straight_1x20P3, P4
2SW_PUSH_SAFE6502Library:1-1825027-1-TACTILE_SWITCHSW2, SW3
1.22uf6502Library:C_Disc_D3_P2.5C29
1.47uf6502Library:C_Disc_D3_P2.5C31
11.1k6502Library:Resistor_Horizontal_RM10mmR13
11.8432MHZ_OSC6502Library:ECS-2100AXY2
11000ufCapacitors_ThroughHole:C_Radial_D10_L16_P5C1
11000ufCapacitors_ThroughHole:C_Radial_D12.5_L25_P5C5
110ufCapacitors_ThroughHole:C_Radial_D12.5_L25_P5C38
11uf6502Library:C_Disc_D6_P5C43
124LC256_EEPROMmod_pth_circuits:dil_8-300_socketU18
12706502Library:Resistor_Horizontal_RM10mmR15
12N2222ATO_SOT_Packages_THT:TO-92_Molded_NarrowQ1
132.768kHz6502Library:crystal_tc-38_horizY3
13306502Library:Resistor_Horizontal_RM10mmR1
1422k6502Library:Resistor_Horizontal_RM10mmR2
153.6k6502Library:Resistor_Horizontal_RM10mmR3
15606502Library:Resistor_Horizontal_RM10mmR14
15MHz 20pfmod_crystal:crystal_hc-49sY4
162256_SRAMmod_pth_circuits:dil_28-600_socketU8
16581_SIDmod_pth_circuits:dil_28-600_socketU13
165C02mod_pth_circuits:dil_40-600_socketU6
17400mod_pth_circuits:dil_14-300_socketU16
174LS138Nmod_pth_circuits:dil_16-300_socketU14
1AT28C256_EEPROM6502Library:28-526-11-SOCKETU7
1AUDIO_OUT6502Library:RCJ013AUDIOJ3
1AddressDecoderModule6502Library:Address_Decoder_CPLD2U4
1BARREL_JACK6502Library:Barrel_Jack_PJ002AJ1
1BQ3285E_RTCmod_pth_circuits:dil_24-600_socketU15
1CONN_01X026502Library:Socket_Strip_Straight_1x02P12
1CONN_01X036502Library:Socket_Strip_Straight_1x03P11
1CONN_01X056502Library:Pin_Header_Angled_1x05P15
1CONN_01X076502Library:Socket_Strip_Straight_1x07P1
1CR2032 3V6502Library:BU2032SMBT1
1DECODER_JUMPERS6502Library:Pin_Header_Straight_3x05JP1
1DS1813_EconoResetTO_SOT_Packages_THT:TO-92_Molded_NarrowU5
1ECS-2100X-1MHZ6502Library:ECS-2100AXY1
1JACK_2P6502Library:SJ13525NHeadphoneJ2
1LED6502Library:WP1503CB_LEDPWR LED1
1LOGOcopyright:copyrightG***
1LOGOlogo:retro1G***
1MIC29150-3.3WTmod_to:to220-horiz-notabU3
1MIC29150-5.0WTmod_to:to220-horiz_5772U1
1MIC29152WTmod_to:to220-5-horiz-notabU2
1PROP_JUMPERS6502Library:Pin_Header_Straight_2x06JP9
1PROP_PLUG6502Library:PROP_PLUGP14
1PS2_KEYBOARD6502Library:MD60SMK1
1Prop_P8X32Amod_pth_circuits:dil_40-600_socketU17
1RR76502Library:7_pin_resistor_networkRR1
1SD_Card_SPI6502Library:DM1AASFPEJ_SDCARDCON1
1SPST26502Library:SW_Micro_Right_Angle_SPSTSW1
1TV_OUT6502Library:RCJ014VIDEOJ4
1VGA6502Library:117343442VGAJ5

The 132 most common of 136 parts.

Questions

How big is the 6502Computer PCB?

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

What parts does the 6502Computer use?

136 parts, built around the MIC29150-3.3WT, MIC29150-5.0WT, MIC29152WT and JUMPER3. 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 6502Computer KiCad files?

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

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

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

Similar boards

  • 6 layers245.6 × 153.7 mmMain schematic, the printed circuit board in 3D

    Main schematic

    datamaskinprosjekt/PCB

    248 partsMIT
  • 2 layers101.5 × 83 mmSd2snes, the printed circuit board in 3D

    Sd2snes

    mrehkopf/sd2snes

    SD card based multi-purpose cartridge for the SNES

    154 parts722GPL-2.0
  • 2 layers279.4 × 203.2 mmZ180GDC, the printed circuit board in 3D

    Z180GDC

    lynchaj/rhyophyre

    Single Board Computer featuring Zilog Z180 processor and NEC µPD7220 Graphics Display Controller

    249 parts12
  • 2 layers99.1 × 99.1 mmQL Qsound10x10, the printed circuit board in 3D

    QL Qsound10x10

    alvaroalea/QL_QsoundQprint_clone

    A clone board of the Sound card for the Sinclair QL Computer.

    23 parts11
  • 2 layers156.5 × 67.5 mmNixieScanDisplay, the printed circuit board in 3D

    NixieScanDisplay

    profdc9/NixieClock

    A Nixie clock that uses IN-14 tubes and very generic components that can be easily sourced.

    106 parts10
  • 2 layers89.3 × 50 mmMM58167-ISA RTC, the printed circuit board in 3D

    MM58167-ISA RTC

    jensma-de/MM58167-ISA-RTC

    RTC module for the ISA slot. With schematics, project files in kicad and open source software to drive the clock.

    29 parts9
  • 2 layers97.6 × 76.8 mm12f675-mppt, the printed circuit board in 3D

    12f675-mppt

    rasberryrabbit/PIC12F675MPPT

    Solar MPPT circuit.

    45 parts9GPL-3.0
  • 2 layers14.6 × 13.6 mmChip and transistor, the printed circuit board in 3D

    Chip and transistor

    gidim/e61-gauge

    An analog temperature gauge for E61 espresso machines. A custom PCB drives a VID6606 stepper motor gauge needle, reading temperature from an NTC thermistor.

    15 parts8