|
||
---|---|---|
.forgejo/workflows | ||
.gitignore | ||
LICENSE | ||
petmem.kicad_pcb | ||
petmem.kicad_prl | ||
petmem.kicad_pro | ||
petmem.kicad_sch | ||
README.md |
petmem
SRAM memory expansion for 16KiB Commodore PET models.
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).