32KB RAM expansion for the Commodore PET
Find a file
Gregor Riepl 54514aef01
Some checks failed
/ verify (push) Failing after 4m58s
More serial clock clarification
2025-04-28 21:50:50 +02:00
.forgejo/workflows Annotate tags 2025-04-24 20:58:04 +02:00
.gitignore Ignore parts cache 2025-04-24 21:28:46 +02:00
LICENSE Initial checkin 2023-10-13 09:27:04 +02:00
petmem.kicad_pcb Add some more ground connections 2025-04-26 02:59:44 +02:00
petmem.kicad_prl Add some more ground connections 2025-04-26 02:59:44 +02:00
petmem.kicad_pro Add a jumper to disconnect the RAM upper bank 2025-04-20 11:44:00 +02:00
petmem.kicad_sch Add a jumper to disconnect the RAM upper bank 2025-04-20 11:44:00 +02:00
README.md More serial clock clarification 2025-04-28 21:50:50 +02:00

petmem

SRAM memory expansion for 16KiB Commodore PET models.

PCB front 3D rendering PCB back 3D rendering

Description

Commodore released several different models of the PET (also known as CBM in Europe), with various peripheral configurations and different amounts of RAM. See the PET index for a comprehensive overview.

Obtaining first-generation DRAM chips has become difficult in 2025, but low-density SRAMs are still manufactured to this day. The CMOS 62256 (available from various manufacturers) is ideally suited for interfacing with old hardware due to its TTL-compatible logic levels, and it's inexpensive. The memory expansion is built around this chip, with some discrete logic ICs to do the interfacing and address decoding.

The latest revision of the PCB also features a second-generation UART (the 16C550, a CMOS version of the 16550 once popular in the IBM PC era), but integration and testing hasn't been completed yet. This UART is still manufactured in the form of a CMOS version, but it's becoming rare and can be expensive. The chip and the extra address decoding logic can be left out if it's not needed.

Manufacturing

Manufacturing data (Gerber/Excellon files, BOM, etc.) can be found in the docs branch.

These files are produced automatically by a CI workflow. Their name includes the corresponding tag on the main branch. To produce new files, tag a new release and wait until the pipeline completes.

Building

Memory expansion

The memory expansion consists of U5, C1, U4 and C4. Additionally, the voltage regulator U3, C3, C6 needs to be mounted to supply the circuit with 5 volts, as well as headers J11 on the front and J4 and J9 on the back side of the PCB. J4 and J9 are female headers.

Reset button

Solder the pin header SW1. C7 and R3 are available as an optional RC filter, but it's normally not needed.

UART

The UART requires the following parts to be mounted: U9, C12, U10, C13, U1, C2, R4, Q3, C11, U6, as well as pin header J1 on the back side. J1 should either have extra long pins that are bent at the end, or connect to a secondary PCB at a 90° angle (not designed yet).

An activity LED circuit consisting of Q2, D1, R1 can be mounted to the back side if needed. This LED is connected to OUT1 in the 16550.

The serial clock can either be supplied from the ϕ2 system clock or from crystal Y1. Refer to the data sheet for possible values and how to configure the baud rate. Keep in mind that the serial clock generator does not have a PLL and can only generate baud rates that are integer fractions of f/16. When running off the ϕ2 clock (1MHz), the highest common baud rate without excessive error would be 4800 bit/s.

With an external crystal, faster baud rates can be generated. For example, a 16MHz crystal will allow running at 38400, 19200 or 9600 baud with an error of only 1%. Place C5 and C6 as appropriate (22p usually works well), and don't forget to cut jumper trace JP2, or the two clock signals will interfere. Keep in mind that you will also need to process the data received by the UART, so there will an upper limit to the speed.

Note

The UART outputs (TXD, RTS, DTR) are wired through a tri-state buffer. To enable them, assert OUT2 via the corresponding register in the 16550.

Warning

This is purely experimental. Use at your own risk.

Installation

The PCB attaches directly to the memory expansion ports (J4 and J9) on the PET mainboard via two 50-pin receptables on the back side of the PCB. These are standard 2.54mm pitch female pin headers.

Additionally, a power connection is required, because the memory expansion ports don't include any power pins. Connect a 2-pin jumper wire with female connectors into J11 on the memory expansion board, and the other ends into pin 4 (+9V unregulated) and pin 5 (ground) of receptacle J11 on the PET mainboard. A linear regulator on the expansion board converts the voltage down to 5V.

Optional reset button

The expansion board includes a pin header for connecting a reset button. If you'd like to modify your case to add one, you can connect it to this header.

Optional UART

The UART is exposed via J1, and the pins are labled on the top side of the expansion board.

There is no voltage level converter, all inputs are 5V TTL. If you require a real RS-232 UART, you need to add an external converter (ST232 or similar).