Skip to the content
2 layers262.5 × 107.9 mmEconopet, the printed circuit board in 3D

Mainboard replacement for Commodore PET/CBM series machines

Size
262.5 × 107.9 mm
Copper layers
2
Thickness
0.57 mm
Parts
305
Nets
346
Pads
1,592
Tracks, vias
5,449, 2,192
Pours
21
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
25 Sep 2023
Updated
8 Nov 2026

Overview

Econopet is an open-source printed circuit board by DLehenbauer, from the DLehenbauer/econopet repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 262.5 × 107.9 mm with 305 parts on 346 nets, routed with 5,449 tracks and 2,192 vias.

It is built around the SN74LS07D, 74LS245SC and SN74LVC4245APW, with the AMS1117-3.3, SS54 and TS-1088-AR02016 among its other parts. Its parts include 116 capacitors, 77 resistors, 14 ICs, 12 diodes and 11 connectors. It belongs with the computers and single-board computers and retro computing and games boards of this library.

Main components

9

README

README.md

EconoPET

Open hardware mainboard replacement for Commodore PET/CBM 2001/30xx/40xx/80xx machines. The EconoPET can also run standalone with HDMI display and USB keyboard.

EconoPET running Space Invaders

User Resources

See the project page for user manual and firmware updates.

Manufacturing

⚠️ Warning: Rev A is not perfect. Before ordering, review the currently known issues and understand that new issues may be discovered over time.

Rev. A has been released. For manufacturing and assembly instructions, go here.

Development

This project uses a Dev Container for a consistent development environment on Windows, macOS, and Linux.

Prerequisites

Workflow

This project uses CMake to manage the build process for firmware, gateware, ROMs, and SD card package.

sh
# Configure
cmake --preset default              # Do this first

# Build
cmake --build --preset all          # Build everything
cmake --build --preset boot         # Build the EconoPET SD-card bootloader
cmake --build --preset fw           # Build firmware only
cmake --build --preset fw-test      # Build firmware tests only
cmake --build --preset sys-test     # Build system integration tests
cmake --build --preset gw           # Build gateware only
cmake --build --preset rom          # Build ROMs only
cmake --build --preset sdcard       # Build SD card package

# Build and Program
cmake --build --preset prog-boot    # Build and program bootloader over SWD
cmake --build --preset prog-fw      # Build and program firmware over SWD
cmake --build --preset prog-gw      # Build and program gateware over SWD
cmake --build --preset prog         # Build and program bootloader, firmware and gateware over SWD

# Test
ctest --preset all --parallel       # Run all tests
ctest --preset fw --parallel        # Run firmware tests only
ctest --preset sys                  # Run system integration suite only
ctest --preset gw --parallel        # Run gateware unit tests only
ctest --preset gw-boot --parallel   # Run full-boot benches (Verilator, minutes)

Gateware benches run under both simulators. gw runs both quick suites; gw-iv and gw-vl run only Icarus or Verilator, respectively. Verilator is two-state and settles differently, so it catches races Icarus tolerates. Each suite takes under a minute. ECONOPET_MEDIA_DIR must point at the directory containing roms/ and disks/; top_tb and the boot bench load real ROMs from its roms/ subdirectory.

The integration-test author guide covers host, board and firmware fixtures, checked CPU programs, ROM calls, and cooperative phases. Use its nested CTest commands to filter individual integration cases or set inner parallelism. The root sys preset selects the aggregate wrapper.

gw-boot is separate because it simulates seconds of PET time: it boots the stock BASIC-4 ROMs on the soft 6502 and passes only once the banner, the RAM sizing result and the READY. prompt are all on screen. That takes ~5 minutes under Verilator and is impractical under Icarus. It prints the screen at the end and writes gw/EconoPET/outflow/stock6502_boot_tb.pgm:

text
|*** COMMODORE BASIC 4.0 ***             |
|                                        |
| 31743 BYTES FREE                       |
|                                        |
|READY.                                  |

ctest hides that on success, so use ctest --preset gw-boot --parallel -V to see it, or run ./verilate.sh stock6502_boot_tb 0 directly. See docs/dev/verilator.md for the Verilator runner and docs/dev/testing.md for test seeding and replay.

License

This project is released under the CC0 1.0 Universal (CC0) license, placing it in the public domain.

Exception: external dependencies are subject to their own licenses as noted in their respective source code and in NOTICE.md.

CI

Parts

305
QtyValueFootprintReferences
52100nCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C14, C18, C25, C27, C28, C33, C34, C35, C36, C100, C104, C106, C107 +36
154u7 10VCapacitor_SMD:C_0402_1005MetricC23, C26, C30, C31, C32, C62, C63, C64, C65, C66, C75, C76, C77, C79, C99
1010kResistor_SMD:R_0402_1005MetricR18, R19, R20, R25, R32, R33, R39, R62, R66, R70
910kx4Resistor_SMD:R_Array_Convex_4x0603RN1, RN4, RN5, RN8, RN9, RN10, RN14, RN15, RN16
91uCapacitor_SMD:C_0402_1005MetricC20, C39, C41, C42, C43, C80, C103, C114, C115
9270Resistor_SMD:R_0603_1608MetricR53, R54, R55, R56, R57, R58, R59, R60, R61
81kResistor_SMD:R_0402_1005MetricR27, R29, R38, R41, R42, R43, R65, R74
82k2Resistor_SMD:R_0402_1005MetricR7, R44, R45, R48, R49, R50, R51, R52
622uCapacitor_SMD:C_0805_2012MetricC11, C19, C22, C24, C29, C113
64k7Resistor_SMD:R_0402_1005MetricR1, R2, R3, R4, R13, R40
510nCapacitor_SMD:C_0402_1005MetricC54, C56, C58, C60, C61
51k5Resistor_SMD:R_0402_1005MetricR17, R34, R35, R67, R69
522nCapacitor_SMD:C_0402_1005MetricC9, C10, C81, C85, C116
410uCapacitor_SMD:C_0603_1608MetricC12, C13, C15, C16
412kResistor_SMD:R_0402_1005MetricR6, R26, R36, R75
433pCapacitor_SMD:C_0402_1005MetricC17, C21, C86, C87
447u 10VCapacitor_SMD:C_1206_3216MetricC8, C84, C101, C102
44k7x4Resistor_SMD:R_Array_Convex_4x0603RN2, RN3, RN6, RN7
4LED_REDLED_SMD:LED_0603_1608MetricD6, D8, D9, D10
4SS54Diode_SMD:D_SMAD1, D2, D3, D12
4TS-1088-AR02016LCSC:SW-SMD_L3.9-W3.0-P4.45SW1, SW2, SW4, SW6
3100kResistor_SMD:R_0402_1005MetricR24, R28, R71
32u2 6.3VCapacitor_SMD:C_0402_1005MetricC88, C91, C92
3470x4Resistor_SMD:R_Array_Convex_4x0603RN11, RN12, RN13
35k6Resistor_SMD:R_0402_1005MetricR21, R22, R23
3SN74LS07Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU14, U15, U16
3SN74LVC4245APackage_SO:TSSOP-24_4.4x7.8mm_P0.65mmU7, U8, U9
3SS8050Package_TO_SOT_SMD:SOT-23Q4, Q5, Q6
21Resistor_SMD:R_0603_1608MetricR72, R73
21.8uHLCSC:IND-SMD_L5.0-W5.0_FNR50XXSL1, L2
210u 16VCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-AC108, C109
2120Resistor_SMD:R_0805_2012MetricR5, R12
21N4148WSDiode_SMD:D_SOD-323D13, D14
22200uFCapacitor_THT:CP_Radial_D12.5mm_P5.00mmC111, C112
222kResistor_SMD:R_0402_1005MetricR11, R37
227Resistor_SMD:R_0603_1608MetricR46, R47
2330kResistor_SMD:R_0603_1608MetricR14, R16
2470Resistor_SMD:R_0402_1005MetricR30, R31
256kResistor_SMD:R_0402_1005MetricR63, R64
274LS245Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU17, U18
2AO3401AEconoPET:SOT-23_L2.9-W1.3-P1.90-LS2.4-BRQ2, Q3
2DNPCapacitor_SMD:C_0402_1005MetricC4, C5
2LED_GRNLED_SMD:LED_0603_1608MetricD7, D11
2MountingHole_PillarMountingHole:MountingHole_3.5mmH3, H4
2TPS564247DRLRPackage_TO_SOT_SMD:SOT-563U4, U6
2W65C21NPackage_DIP:DIP-40_W15.24mm_SocketU11, U12
112 MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1120kResistor_SMD:R_0603_1608MetricR8
113kResistor_SMD:R_0603_1608MetricR9
1150Resistor_SMD:R_0805_2012MetricR76
115000uFEconoPET:CP_Radial_D18.0mm_P5.00mm_P7.50mmC110
1330Resistor_SMD:R_0603_1608MetricR10
133KResistor_SMD:R_0402_1005MetricR81
142Ω SPKEconoPET:AT1220TT9RLS1
147nCapacitor_SMD:C_0603_1608MetricC105
15V POWERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ28
15V PWRConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ10
1600 200maInductor_SMD:L_0603_1608MetricFB1
1680Resistor_SMD:R_0402_1005MetricR68
168kResistor_SMD:R_0603_1608MetricR15
168nCapacitor_SMD:C_0603_1608MetricC82
16V POWERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ27
174LS145Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU19
19V POWERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ11
19V POWER JACKPET:BarrelJack_HorizontalJ13
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1AUDIOEconoPET:CUI_SJ-43504-SMT-TRJ21
1BUS_EXPANSIONConnector_PinHeader_2.54mm:PinHeader_2x25_P2.54mm_VerticalJ4
1CASS A READJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP3
1CASS A ~{MOTOR}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP5
1CASS A ~{SWITCH}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP1
1CASS B READJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP4
1CASS B ~{MOTOR}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP6
1CASS B ~{SWITCH}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP2
1CASS_A_EDGEEconoPET:CBM_PET_CASS_EDGE_CON_12PJ3
1CASS_A_HEADERConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ15
1CASS_B_EDGEEconoPET:CBM_PET_CASS_EDGE_CON_12PJ6
1CASS_B_HEADERConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ16
1CONFIGEconoPET:SW_DIP_SPSTx03_Slide_6.7x9.18mm_W7.62mm_P2.54mm_LowProfile_or_SolderJumperSW3
1DVI_CECJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP7

The 270 most common of 305 parts.

More from DLehenbauer/econopet

1
  • 2 layers262.5 × 107.9 mmEconopet, the printed circuit board in 3D

    Econopet

    DLehenbauer/econopet

    Mainboard replacement for Commodore PET/CBM series machines

    295 parts19CC0-1.0

Similar boards

  • 2 layers262.5 × 107.9 mmCommodore pet clone, the printed circuit board in 3D

    Commodore pet clone

    DLehenbauer/commodore-pet-clone

    Open hardware clone of the Commodore PET 4032

    316 parts13CC0-1.0
  • 2 layers87.5 × 70 mmGbpunk, the printed circuit board in 3D

    Gbpunk

    kaybarkbark/gbpunk

    RP2040 Based Gameboy Flash Cart

    92 parts1
  • 4 layers75.2 × 99.5 mmFOC, the printed circuit board in 3D

    FOC

    nordstream3/FOC

    Date | Manufacturer | amount | includes | shipping & tax | price | -------- | -------- | -------- | -------- | -------- | -------- | 2024-01-17 | JLCPCB | 10 boards | All assembled excl fets and caps | YES, to EU |…

    261 parts81
  • 4 layers127.6 × 98 mmHomebrew6502Project, the printed circuit board in 3D

    Homebrew6502Project

    snorklerjoe/useful6502

    A homebrew 65c02s-based computer and custom operating system, with a handful of modern features.

    275 parts1MIT
  • 2 layers40.8 × 45 mmSATNEO, the printed circuit board in 3D

    SATNEO

    arithmaldor/Saturn2NEOGEO

    Use a saturn controller on a neo geo or supergun

    14 parts
  • 2 layers101.5 × 83 mmPrototype, the printed circuit board in 3D

    Prototype

    alttpo/cart-prototype

    SNES prototype cart for 3v3 experimentation

    40 partsMIT
  • 4 layers150 × 30 mmSingle sh proto, the printed circuit board in 3D

    Single sh proto

    andrewsharmon/rp2350-stepper-controller

    Low-cost 10-axis sine-microstepping controller for small steppers on the RP2350 (PIO + DMA). WIP.

    163 partsMIT
  • 2 layers100 × 92 mmBase station, the printed circuit board in 3D

    Base station

    yeyintlwin/kicad-board-design

    Design a two-layer KiCad PCB entirely from Python scripts - no GUI step, no commercial autorouter

    69 partsMIT

Questions

How big is the Econopet PCB?

It measures 262.5 × 107.9 mm and has 2 copper layers, 0.57 mm thick.

What parts does the Econopet use?

305 parts, built around the SN74LS07D, 74LS245SC, SN74LVC4245APW and AMS1117-3.3. 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 Econopet KiCad files?

From the DLehenbauer/econopet repository on GitHub, at the commit this page was made from: the board is hw/rev-b/mainboard/kicad/Mainboard.kicad_pcb and its schematic hw/rev-a/mainboard/kicad/Audio.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Econopet design in my own project?

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