
Csa ultracpu
fachat/csa_ultracpu
The CPU board for a 17MHz Colour-PET clone with modern interfaces

A small, single-PCB clone of the Commodore PET with all modern parts
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.
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

Here is the Overview video
Some more videos on the build process can be found here YT 8-bit times
The board is built with a number of features:
The system architecture is actually rather simple, as you can see in the following graphics.

The main functionality is "hidden" inside the FPGA. It does:
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
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.
Here are four subdirectories:
In addition, two other repositories are needed - they are separate as they are shared with other variants of the upet-family:
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.
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.
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.
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.

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



| Qty | Value | Footprint | References |
|---|---|---|---|
| 49 | 0.1u | micropet_v3:C0603 | C1, C2, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +33 |
| 7 | MOUNT-HOLE3.2 | micropet_v3:3,2 | H1, H2, H3, H4, H5, H6, H7 |
| 6 | 1N4148DO35-7 | micropet_v3:DO35-7 | D2, D3, D4, D9, D10, D11 |
| 6 | JP1E | micropet_v3:JP1 | JP2, JP3, JP4, JP5, JP8, JP9 |
| 4 | 10k | micropet_v3:0207_2V | R9, R10, R11, R24 |
| 4 | 18p | micropet_v3:C0603 | C29, C30, C39, C40 |
| 4 | 1N4148 | micropet_v3:D-5 | D1, D5, D6, D8 |
| 4 | 1u | micropet_v3:C050-025X075 | C49, C50, C51, C52 |
| 4 | 22u | micropet_v3:E2,5-6 | C28, C36, C37, C38 |
| 4 | 470 | micropet_v3:0204V | R13, R14, R15, R19 |
| 3 | 10 | micropet_v3:0207_2V | R6, R20, R21 |
| 3 | 1k | micropet_v3:0204V | R26, R27, R28 |
| 3 | 33 | micropet_v3:0204_7 | R1, R2, R4 |
| 3 | JP2E | micropet_v3:JP2 | JP1, JP6, JP10 |
| 2 | 100 | micropet_v3:0204V | R18, R31 |
| 2 | 100n | micropet_v3:C0603 | C7, C8 |
| 2 | 1u | micropet_v3:C0603 | C10, C11 |
| 2 | 22u | micropet_v3:C0805 | C65, C66 |
| 2 | 2k4 | micropet_v3:RN-9 | RN2, RN4 |
| 2 | 390 | micropet_v3:0207_2V | R17, R22 |
| 2 | 5k1 | micropet_v3:RN-9 | RN3, RN5 |
| 2 | 68 | micropet_v3:0204V | R7, R8 |
| 2 | 680 | micropet_v3:0204V | R30, R32 |
| 2 | 74LS641 | micropet_v3:DIL20 | U$5, U$6 |
| 2 | PIAPLCC | micropet_v3:PLCC44 | IC10, IC11 |
| 2 | RAMSOCK32TO512KSOP | micropet_v3:SOP32 | IC1, IC13 |
| 2 | SPIFLASH | micropet_v3:DIL08 | U$4, U$14 |
| 1 | 1.0u Cer | micropet_v3:C0603 | C9 |
| 1 | 100k | micropet_v3:0207_2V | R16 |
| 1 | 10k | micropet_v3:RN-9 | RN1 |
| 1 | 12MHz | micropet_v3:HC49_S | Q3 |
| 1 | 1503_09 | micropet_v3:1503_09 | X1 |
| 1 | 2k2 | micropet_v3:0204_5 | R5 |
| 1 | 2k4 | micropet_v3:0207_2V | R3 |
| 1 | 31-XX | micropet_v3:B3F-31XX | S1 |
| 1 | 32kHz | micropet_v3:TC26H | Q2 |
| 1 | 330 | micropet_v3:0207_2V | R29 |
| 1 | 3k3 | micropet_v3:0204_5 | R23 |
| 1 | 3k3 | micropet_v3:0204V | R12 |
| 1 | 47u | micropet_v3:E2,5-6 | C26 |
| 1 | 47u | micropet_v3:E5-8,5 | C5 |
| 1 | 47u | micropet_v3:E5-6 | C6 |
| 1 | 4k7 | micropet_v3:0207_2V | R25 |
| 1 | 7400D | micropet_v3:SO14 | IC3 |
| 1 | 74125D | micropet_v3:SO14 | IC6 |
| 1 | 74138D | micropet_v3:SO16 | IC7 |
| 1 | 74145N | micropet_v3:DIL16 | IC5 |
| 1 | 74245DW | micropet_v3:SO20W | IC2 |
| 1 | 7486D | micropet_v3:SO14 | IC4 |
| 1 | 74LVC1G04 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | 74LVC8T245SO24 | micropet_v3:SO24L | IC16 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | AP2132BB | micropet_v3:PSOP-8-FIXED | U$16 |
| 1 | C64KEYB | micropet_v3:C64KEYB | P1 |
| 1 | CBMTAPE | micropet_v3:JP6 | P6 |
| 1 | D-SUB15-HDR15RA | micropet_v3:HDR15RA | X2 |
| 1 | DCJ0202 | micropet_v3:DCJ0202 | J1 |
| 1 | DS1813 | micropet_v3:TO92 | U$3 |
| 1 | ETHOLIENC | micropet_v3:ETHOLIENC | U$9 |
| 1 | IEEE488FLATCABLE | micropet_v3:FLAT24 | P2 |
| 1 | IRLML5203 | micropet_v3:MICRO3 | Q1 |
| 1 | JP4E | micropet_v3:JP4 | JP7 |
| 1 | JP7 | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical | U$8 |
| 1 | LED3MM | micropet_v3:LED3MM | LED1 |
| 1 | MAX3421E | micropet_v3:TQFP32-5MM | IC8 |
| 1 | MCP48X2 | micropet_v3:SOIC8 | SN1 |
| 1 | MCP79510 | micropet_v3:MSOP10 | U$13 |
| 1 | PETKEYBD | micropet_v3:C64KEYB | P7 |
| 1 | PETSKEY_EXTRA | micropet_v3:JP6 | U$11 |
| 1 | PETUSERPORT | micropet_v3:FLAT24 | P3 |
| 1 | PIEZOBEEPER | micropet_v3:JP2 | BEEP1 |
| 1 | PORT_CASSETTE_EDGE | micropet_v3:MA156_6-2_KEYED | CN3 |
| 1 | PORT_IEEE_EDGE | micropet_v3:MA156_12-2_IEEE | CN4 |
| 1 | RENOSCXLH | micropet_v3:RENJS6 | JS1 |
| 1 | SD-CARD-GRAVI | micropet_v3:GRAVITECH-SDCARD | U$12 |
| 1 | USB-A-H | micropet_v3:USB-A-H | USB1 |
| 1 | VIAPLCC | micropet_v3:PLCC44 | IC9 |
| 1 | W65C816SPLCC | micropet_v3:PLCC44 | U$1 |
| 1 | XC6SLX9-TQG144 | micropet_v3:TQFP144 | U$2 |
| 1 | XILINXPROG | micropet_v3:FLAT10BOX | U$7 |
It measures 190.2 × 100.3 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

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

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.

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


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…

shm-dmitry/xray-detector
V3 version in progress. V2 version details:

tmk/USB2USB_Converter
USB to USB keyboard protocol converter supported by TMK keyboard firmware

UzixLS/mist1010-board
10x10cm PCB variant of MIST FPGA project for G738/G706 enclosure