Skip to the content
PCBKitNew board
2 layers190.2 × 100.3 mmMicropet v3, the printed circuit board in 3D

A small, single-PCB clone of the Commodore PET with all modern parts

Size
190.2 × 100.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
183
Nets
309
Pads
1,153
Tracks, vias
7,030, 752
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
18 Jun 2024
Updated
12 May 2025

Overview

Micropet v3 is an open-source printed circuit board by fachat, from the fachat/cbm_micropet repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 190.2 × 100.3 mm with 183 parts on 309 nets, routed with 7,030 tracks and 752 vias.

It is built around the 74LVC1G04Z, AMS1117-3.3 and MAX3421EEHJ+, with the DS1813-5+, IRLML5203 and MCP79510-I/MS among its other parts. Its parts include 71 capacitors, 32 resistors, 15 ICs, 11 diodes and 8 connectors. It belongs with the FPGA and CPLD boards of this library.

Main components

6

README

README.md

Micro-PET R3

Note: this is a part of a larger set of repositories, with upet_family as the main repository.

This is a re-incarnation of the Commodore PET computer(s) from the later 1970s.

It is build on a PCB slightly larger than a Eurocard board and has only parts that can still be obtained new in 2024. The current version is 3.0A

Picture of a MicroPET

Here is the Overview video

Some more videos on the build process can be found here YT 8-bit times

Features

The board is built with a number of features:

  • Commodore 3032 / 4032 / 8032 / 8296 with options menu to select at boot
    • Boot-menu to select different PET versions to run (BASIC 1, 2, 4)
    • 40 and 80 col character display
    • 8296 memory map emulation
    • IEEE488 interface (card edge and 24pin flat ribbon cable)
    • Tape connector (card edge, 5V only)
    • PET graphics keyboard, or alternatively a C64 keyboard
  • Improved system design:
    • 512k video RAM, plus 512k fast RAM, accessible using banks on the W65816 CPU
    • boot from an SPI Flash ROM
    • up to 17.5 MHz mode (via configuration register)
    • Write protection for the PET ROMs once copied to RAM
    • lower 32k RAM mappable from all of the 512k fast RAM
    • Audio output using a DAC with DMA
  • Improved Video output:
    • VGA colour video output
    • up to 96x72 characters on screen
    • hires modes up to a 768x576 resolution
    • 16 out of 64 colour palette, Colour-PET or C128 VDC-compatible, Sprites
    • Hires graphics mode (using a configuration register)
    • modifyable character set
    • multiple video pages mappable to $8000 video mem address

Overview

The system architecture is actually rather simple, as you can see in the following graphics.

MicroPET System Architecture

The main functionality is "hidden" inside the FPGA. It does:

  1. clock generation and management
  2. memory mapping
  3. video generation.
  4. SPI interface and boot
  5. DAC DMA

On the CPU side of the FPGA it is actually a rather almost normal 65816 computer, with the exception that the bank register (that catches and stores the address lines A16-23 from the CPU's data bus) is in the FPGA, and that there is no ROM. The ROM has been replaced with some code in the FPGA that copies the initial program to the CPU accessible RAM, taking it from the Flash Boot ROM via SPI. This actually simplifies the design, as

  1. parallel ROMs are getting harder to come by and
  2. they are typically not as fast as is needed, and
  3. with the SPI boot they don't occupy valuable CPU address space.

The video generation is done using time-sharing access to the video RAM. The VGA output is 768x576 at 60Hz. So there is a 28ns slot per pixel on the screen, with a pixel clock of 35MHz.

The system runs at 17.5MHz, so a byte of pixel output (i.e. eight pixels) has four memory accesses to VRAM. Two of them are reserved for video access, one for fetching the character data (e.g. at $08xxx in the PET), and the second one to fetch the "character ROM" data, i.e. the pixel data for a character. This is also stored in VRAM, and is being loaded there from the Flash Boot ROM by the initial boot loader.

The FPGA reads the character data, stores it to fetch the character pixel data, and streams that out using its internal video shift register.

For more detailled descriptions of the features and how to use them, pls see the FPGA repository that contains the code for the FPGA, as described in the next section.

Version History

  • Revision 2.1A: the first one with boot-from-SPI, and card edge connectors for IEEE and tape.
  • Revision 1.1B: the original one with parallel ROMs, and no SPI boot; also, no card edge connectors

Building

Here are four subdirectories:

  • Board that contains the board schematics and layout
  • Case 3-D printed supports and keyboards to mount board in a C64c case

In addition, two other repositories are needed - they are separate as they are shared with other variants of the upet-family:

  • FPGA contains the VHDL code to program the FPGA logic chip used, and describes the configuration options - including the SPI usage, the DAC usage, and the Video features.
  • ROM ROM contents to boot

Board

To have the board built, you can use the gerbers that are stored in the zip file in the Board/production subdirectory.

To populate the board, there is an interactive bom (bill of materials) from KiCad, as well as the KiCad BOM CSV export in the bom folder. The parts I used are in the Mouser BOM.

The BOM contains an Ethernet breakout board that is put into the connectors "above" the USB port. As an alternative you could use the Wifi breakout board. Note that at this time, this is not tested / programmed yet.

FPGA

The FPGA is a Xilinx Spartan 6 programmable logic chip. It runs on 3.3V and it is programmed in VHDL.

To build the FPGA content, clone the FPGA repository, and look for the ShellUPet.bin. This needs to be programmed into the SPI flash chip containing the configration for the FPGA.

ROM

To build the boot ROM image, clone the ROM repository, and build the spiimg70m file. This needs to be programmed into the SPI flash ROM containing the 65816 boot code.

The ROM image can be built using gcc, xa65, and make. Use your favourite EPROM programmer to burn it into the SPI Flash chip.

The ROM contains images of all required ROM images for BASIC 1, 2, and 4, and corresponding editor ROMs, including some that have been extended with wedges.

The updated editor ROMs are from Steve's Editor ROM project and can handle C64 keyboards, has a DOS wedge included, and resets into the Micro-PET boot menu. For more details see the description in the ROM repository.

Case

The Case subdirectory holds some supporting 3D models, to use an existing C64-II case for the Micro-PET.

Also, it contains the models for custom key caps for a PET N-type keyboard, as is default for the Micro-PET. As keyboard PCB I suggest using Steve Gray's PET keyboard replacements using modern, MX-type key switches.

Gallery (Still R2)

Picture of a MicroPET

Note: the published schematics and board has the extra wires fixed/included.

MicroPET with self-printed key caps

MicroPET running the 8296 burnin

MicroPET before adjusting a C64 case

Parts

183
QtyValueFootprintReferences
490.1umicropet_v3:C0603C1, C2, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +33
7MOUNT-HOLE3.2micropet_v3:3,2H1, H2, H3, H4, H5, H6, H7
61N4148DO35-7micropet_v3:DO35-7D2, D3, D4, D9, D10, D11
6JP1Emicropet_v3:JP1JP2, JP3, JP4, JP5, JP8, JP9
410kmicropet_v3:0207_2VR9, R10, R11, R24
418pmicropet_v3:C0603C29, C30, C39, C40
41N4148micropet_v3:D-5D1, D5, D6, D8
41umicropet_v3:C050-025X075C49, C50, C51, C52
422umicropet_v3:E2,5-6C28, C36, C37, C38
4470micropet_v3:0204VR13, R14, R15, R19
310micropet_v3:0207_2VR6, R20, R21
31kmicropet_v3:0204VR26, R27, R28
333micropet_v3:0204_7R1, R2, R4
3JP2Emicropet_v3:JP2JP1, JP6, JP10
2100micropet_v3:0204VR18, R31
2100nmicropet_v3:C0603C7, C8
21umicropet_v3:C0603C10, C11
222umicropet_v3:C0805C65, C66
22k4micropet_v3:RN-9RN2, RN4
2390micropet_v3:0207_2VR17, R22
25k1micropet_v3:RN-9RN3, RN5
268micropet_v3:0204VR7, R8
2680micropet_v3:0204VR30, R32
274LS641micropet_v3:DIL20U$5, U$6
2PIAPLCCmicropet_v3:PLCC44IC10, IC11
2RAMSOCK32TO512KSOPmicropet_v3:SOP32IC1, IC13
2SPIFLASHmicropet_v3:DIL08U$4, U$14
11.0u Cermicropet_v3:C0603C9
1100kmicropet_v3:0207_2VR16
110kmicropet_v3:RN-9RN1
112MHzmicropet_v3:HC49_SQ3
11503_09micropet_v3:1503_09X1
12k2micropet_v3:0204_5R5
12k4micropet_v3:0207_2VR3
131-XXmicropet_v3:B3F-31XXS1
132kHzmicropet_v3:TC26HQ2
1330micropet_v3:0207_2VR29
13k3micropet_v3:0204_5R23
13k3micropet_v3:0204VR12
147umicropet_v3:E2,5-6C26
147umicropet_v3:E5-8,5C5
147umicropet_v3:E5-6C6
14k7micropet_v3:0207_2VR25
17400Dmicropet_v3:SO14IC3
174125Dmicropet_v3:SO14IC6
174138Dmicropet_v3:SO16IC7
174145Nmicropet_v3:DIL16IC5
174245DWmicropet_v3:SO20WIC2
17486Dmicropet_v3:SO14IC4
174LVC1G04Package_TO_SOT_SMD:SOT-23-5U2
174LVC8T245SO24micropet_v3:SO24LIC16
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1AP2132BBmicropet_v3:PSOP-8-FIXEDU$16
1C64KEYBmicropet_v3:C64KEYBP1
1CBMTAPEmicropet_v3:JP6P6
1D-SUB15-HDR15RAmicropet_v3:HDR15RAX2
1DCJ0202micropet_v3:DCJ0202J1
1DS1813micropet_v3:TO92U$3
1ETHOLIENCmicropet_v3:ETHOLIENCU$9
1IEEE488FLATCABLEmicropet_v3:FLAT24P2
1IRLML5203micropet_v3:MICRO3Q1
1JP4Emicropet_v3:JP4JP7
1JP7Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalU$8
1LED3MMmicropet_v3:LED3MMLED1
1MAX3421Emicropet_v3:TQFP32-5MMIC8
1MCP48X2micropet_v3:SOIC8SN1
1MCP79510micropet_v3:MSOP10U$13
1PETKEYBDmicropet_v3:C64KEYBP7
1PETSKEY_EXTRAmicropet_v3:JP6U$11
1PETUSERPORTmicropet_v3:FLAT24P3
1PIEZOBEEPERmicropet_v3:JP2BEEP1
1PORT_CASSETTE_EDGEmicropet_v3:MA156_6-2_KEYEDCN3
1PORT_IEEE_EDGEmicropet_v3:MA156_12-2_IEEECN4
1RENOSCXLHmicropet_v3:RENJS6JS1
1SD-CARD-GRAVImicropet_v3:GRAVITECH-SDCARDU$12
1USB-A-Hmicropet_v3:USB-A-HUSB1
1VIAPLCCmicropet_v3:PLCC44IC9
1W65C816SPLCCmicropet_v3:PLCC44U$1
1XC6SLX9-TQG144micropet_v3:TQFP144U$2
1XILINXPROGmicropet_v3:FLAT10BOXU$7

Questions

How big is the Micropet v3 PCB?

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

What parts does the Micropet v3 use?

183 parts, built around the 74LVC1G04Z, AMS1117-3.3, MAX3421EEHJ+ and DS1813-5+. 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 Micropet v3 KiCad files?

From the fachat/cbm_micropet repository on GitHub, at the commit this page was made from: the board is Board/micropet_v3.kicad_pcb and its schematic Board/A%2fV_Out.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Micropet v3 design in my own project?

Its repository publishes it under the GPL-3.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).

Similar boards

  • 4 layers160 × 100.2 mmCsa ultracpu, the printed circuit board in 3D

    Csa ultracpu

    fachat/csa_ultracpu

    The CPU board for a 17MHz Colour-PET clone with modern interfaces

    175 parts9GPL-3.0
  • 4 layers52.8 × 61.2 mmGameboyCartridgeV2.1, the printed circuit board in 3D

    GameboyCartridgeV2.1

    shilga/rp-gameboy-cartridge-hw

    You should order with ENIG (electroless nickel immersion gold) plating. While the cartridge will work with HASL you will getter contact with ENIG and it is less prone to wearing down.

    81 parts72CERN-OHL-P-2.0
  • 2 layers30.5 × 63 mmAdbuino, the printed circuit board in 3D

    Adbuino

    akuker/adbuino

    Arduino-based USB keyboard and Mouse to ADB adapter. Allows USB keyboards and mice to be used with vintage Macintosh computers.

    75 parts60
  • 2 layers90 × 83.5 mmSensactHsIO3, the printed circuit board in 3D

    SensactHsIO3

    klaus-liebler/sensact

    Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…

    189 parts4Apache-2.0
  • 2 layers22.9 × 36.7 mmUsb2usb, the printed circuit board in 3D

    Usb2usb

    tmk/USB2USB_Converter

    USB to USB keyboard protocol converter supported by TMK keyboard firmware

    26 parts152
  • 2 layers100 × 100 mmMist1010, the printed circuit board in 3D

    Mist1010

    UzixLS/mist1010-board

    10x10cm PCB variant of MIST FPGA project for G738/G706 enclosure

    273 parts43MIT