Building the PAL-2: A KIM-1-Compatible Computer That Actually Worked
After soldering hundreds of joints, my PAL-2 sprang to life with one press of Reset. Then came serial transfers, kimload, and plans for CP/M-65.
I have finally finished building my PAL-2, a KIM-1-compatible computer based on the MOS 6502. The PAL-2 combines the familiar KIM-1-style experience with 32 KB of RAM and a second RIOT on a single board—and, most importantly, it arrives as a proper kit.
That last part meant soldering. A lot of soldering.
After completing several hundred joints, I was not exactly confident that the machine would work on the first attempt. There are simply too many opportunities for a bad joint, a misplaced component, or some tiny mistake that is almost impossible to spot once the board is populated.
So when I connected the power and the LED display remained completely dark, I was not even surprised. It felt less like a failure and more like confirmation of what I had already expected.
Fortunately, the diagnosis was much simpler than anticipated: I pressed RS—Reset.
The display immediately came to life. Suddenly, there were more endorphins than I knew what to do with. After all those solder joints, the computer was alive.
From the keypad to PAP Load
After a quick round of basic tests, I connected the PAL-2 to my computer through a USB-to-UART adapter and switched to the serial interface. That opened the door to a much more convenient way of getting software onto the machine: the KIM-1 monitor's PAP Load command.
I started sending paper-tape files over the serial connection—and it worked. Seeing programs arrive and run on a machine I had assembled myself was immensely satisfying.
There was one problem, though: uploading PAP files was not completely reliable. The original KIM-1 serial routine is bit-banged by the 6502 and timing matters. A transfer that sends data too aggressively can lose a bit or reach the monitor before it is ready for the next character.
That is why I had a small utility called kimload created.

kimload sends .pap and .ptp files to a KIM-1, PAL-1, or PAL-2 through the TTY serial port. Before transmission, it validates every record's length and checksum. During the transfer, it waits for the hardware echo of each character and adds configurable delays between characters and records. It also shows progress and produces useful error messages when the board stops responding or rejects a record.
In other words, it turns PAP loading from a slightly temperamental manual process into something much more predictable:
kimload program.pap
kimload -go auto program.papThe utility is written in Go, supports macOS and Linux, and is available on GitHub: github.com/jrydval/Kim1-PAP-Load.
Next stop: CP/M-65
The PAL-2 is now built, tested, and accepting programs over serial. The next step is to add an SD card module with an SPI interface.
Once that is in place, I am going to try running CP/M-65.
A freshly hand-soldered KIM-1-compatible computer, loading software from an SD card and running a CP/M-like operating system for the 6502? That sounds like exactly the kind of unnecessary—and therefore irresistible—retrocomputing project I was hoping for.
PAL-2 and KIM-1 project series
- 1. Learning the 6502 by Building a KIM-1 Simulator
- 2. CP/M-65 Comes to My KIM-1 Simulator
- 3. Building the PAL-2: A KIM-1-Compatible Computer That Actually Worked
- 4. Getting CP/M-65 to Boot on My PAL-2