N7WDZ

← All projects

PicoTerm: Connecting a CoCo 3 to a Pocket Pico

A terminal program written for one job, and a home-built cable, so a Tandy Color Computer 3 can talk to a Pocket Pico packet TNC with no setup at all.

The Color Computer 3 on a rack shelf under its monitor, which shows PicoTerm connected to a packet BBS
PicoTerm on the CoCo 3, connected over VHF FM to a packet BBS through the Pocket Pico TNC

My Tandy Color Computer 3 already made it onto packet radio with a Heath HK-21 Pocket Packet and the terminal programs VTerm and AutoTerm. They work, but every session started with settings screens: speed, data bits, parity, duplex. I wanted something simpler: put in the disk, type one command, and be at the TNC's cmd: prompt.

The TNC this time is a Pocket Pico, the Raspberry Pi Pico based packet TNC by Peter, KF7PSM. It emulates the HK-21, so to the CoCo it looks just like the real thing. Two pieces were needed: a program for the CoCo, and a cable between the two.

Assembly languageWritten in 6809 assembly for the CoCo 3's Motorola processor, so it runs fast
1200 baudThe serial communication speed between the CoCo and the Pico, built in, so there is nothing to set
80 columns80 characters per line on screen; the CoCo 3 starts up showing only 32
LTC1327 chipInside the cable, it converts between the CoCo's ±12 V signals and the Pico's 3.3 V

1. PicoTerm, the program

PicoTerm is a small terminal program written in 6809 machine language. It only does one thing: talk to a Pocket Pico at 1200 baud, 8 data bits, no parity, 1 stop bit, on an 80-column screen. There is nothing to set up. I worked it out with the help of an AI assistant, Claude, which wrote the assembly code and tested it in an emulator.

The monitor showing PicoTerm's yellow start-up lines and its help screen listing the keys, then a RESTART answered by the Pocket Pico with TTL Serial= 1200, 8, 1, None
The F1 help screen in yellow. Below it, the Pico answers a RESTART in white, showing its jack at 1200 baud.

The keys, for a CoCo keyboard that has no ESC, no Ctrl-C and no curly brackets:

CoCo keyWhat it does
BREAKCtrl-C (back to the cmd: prompt)
CLEARClear the screen
CTRL + letterControl key (CTRL+Z = Ctrl-Z)
Left arrowBackspace
SHIFT+0Caps lock on/off (starts on)
F1Help on screen
SHIFT+F1Wake up the Pocket Pico again
F2Quit to BASIC (press Y to confirm)

Characters the CoCo keyboard doesn't have are typed with CTRL plus a key:

CTRL +13789,-./
Types|~^[]{_}\

The CoCo's font shows ^ as an up arrow and _ as a left arrow. The right characters are still sent.

2. Loading it from the CoCo SDC

PicoTerm comes as one disk image, PICOTERM.DSK, holding a short BASIC launcher and the machine language program. I keep it on its own SD card in the CoCo SDC cartridge. From the BASIC OK prompt, mount the disk image and run it:

DRIVE 0,"PICOTERM.DSK"
RUN"PICOTERM"

The launcher switches to the 80-column screen, loads the program and starts it. Pressing F2 and then Y goes back to BASIC with a reminder of how to start it again. The disk image works from a real floppy too.

The monitor showing PicoTerm's yellow start-up lines, then the Pocket Pico's restart banner: TTL Serial= 1200, 8, 1, None, V-TNC Virtual Machine TNC, and the cmd: prompt
"The Pocket Pico is answering. Ready." A RESTART shows the Pico's jack running at 1200 baud.

3. Why a cable with a chip in it

The two ends don't speak the same voltages. The Pocket Pico's serial jack is 3.3-volt logic (TTL). The CoCo 3's 4-pin DIN serial port uses RS-232 levels, which swing to about plus and minus 12 volts. Wiring them straight together would damage the Pico. A level converter chip in the middle translates in both directions.

Pocket Pico 3.5 mm jackSignalCoCo 3 4-pin DINSignal
TipPico receivePin 2CoCo receive
RingPico transmitPin 4CoCo transmit
SleeveGroundPin 3Ground
Pin 1Carrier detect (not used)

4. The first test cable

The first live test used a test cable donated by Peter, KF7PSM, built around an ICL232, a 5-volt RS-232 converter chip, with a 7805 regulator and four capacitors on a small Radio Shack board. I reworked it for this job: a 4-pin DIN plug on the RS-232 side, a 3.5 mm plug on the logic side, and a two-resistor divider (2k and 3.3k) so the chip's 5-volt output comes down to a level that is safe for the Pico.

The reworked test cable laid out on a cutting mat: a small brown circuit board with long coiled wires and clip leads
The reworked ICL232 test cable
Close-up of the test cable's board with the ICL232 chip, a voltage regulator and four electrolytic capacitors
The ICL232 chip, 7805 regulator and capacitors

The first try got no answer, but a loopback test proved the cable and the CoCo were fine (more on that below). The catch was on the Pico side: it was still set to 115200 baud (see section 8). Once that was fixed, the cmd: prompt came right up.

The CoCo 3 under its monitor showing PicoTerm and the Pocket Pico's cmd: prompt, with the test cable wires running to the computer
First connection with the test cable

5. The finished cable: an LTC1327 on perfboard

For the permanent cable I used an LTC1327 from Linear Technology, another donation to the cause from Peter, KF7PSM. It runs on 3.3 volts, so its logic output can never go above what the Pico can take, and no divider resistors are needed. Its RS-232 outputs swing about plus and minus 5 volts, enough for the CoCo, and its inputs take the CoCo's plus and minus 12 volts without trouble.

The parts laid out: the LTC1327CN chip, a 28-pin socket, five small yellow capacitors, the regulator board and a green perfboard
The parts
The 28-pin socket placed on the perfboard
Socket first
Close-up of the small blue AMS1117 regulator board with its three pins
The AMS1117 3.3 V regulator board

I built it one step at a time, checking with a meter after each one: socket, capacitors, regulator, the 3.3-volt and ground wiring, then the two plugs. The chip went in last, only after the power checks passed. With the chip in: 3.26 volts from the regulator, plus 5.3 and minus 5.2 volts from the charge pump, and minus 5.19 volts on the CoCo's receive pin at idle, all as expected.

The perfboard held in a helping-hands stand, with the socket and capacitors in place
Socket and capacitors in place
The finished perfboard with the LTC1327CN chip in its socket, the capacitors and the regulator, and the cables soldered on
The finished board
Schematic of the cable: wall adapter to AMS1117 regulator, 3.3 V to the LTC1327CN; Pico tip and ring to the chip's receiver output and driver input; the chip's driver output and receiver input to CoCo DIN pins 2 and 4; all grounds common
The schematic of the LTC1327 cable

Loopback test: before plugging into the Pico, I jumpered the 3.5 mm plug's tip to its ring. Anything typed in PicoTerm then goes out through the cable and comes straight back, so letters showing on the screen prove the CoCo and both directions of the cable work. It is also the first thing to try if PicoTerm ever gets no answer.

The CoCo 3 running PicoTerm with a multimeter reading 3.263 volts on the cable's plug
Loopback test, with 3.26 V on the plug's tip
The bare board with its three cables: the 3.5 mm plug, the 4-pin DIN plug and the wall adapter
Ready for a case

6. A 3D-printed case

The board got a case designed in OpenSCAD from my measurements of the finished board, and printed on my Flashforge 3D printer. A first test print in PLA fit perfectly but was flimsy, so the second version has thicker walls and sturdier screw posts, printed in PETG. There are slots for the three cables and a small window so the regulator's red power LED shows through. The design and print files are on GitHub with PicoTerm. They are sized to my board and cables, so measure yours first.

The empty black 3D-printed case base on a cutting mat
The PETG base
The board sitting in the case base with its cables leaving through slots in the side
Board fitted, cables in their slots
The closed black case with four screws in the lid and cables coming out of the sides
Lid on
The closed case with a small red light glowing through a window in its side
The power LED through its window
The finished cable laid out: the black case in the middle, the 3.5 mm plug and 4-pin DIN plug on their cables, and the wall adapter
The finished cable: 3.5 mm plug for the Pico, 4-pin DIN for the CoCo, and the wall adapter

Power on: wall adapter first, then plug into the Pico. Power off: unplug from the Pico first, then the adapter.

The black cable case sitting on top of the Color Computer 3, its red power LED lit
In its spot on top of the CoCo 3, power LED on

7. On the air

The Color Computer 3 under its monitor showing PicoTerm; the black cable case sits on the left of the computer, the gray Pocket Pico on the right, and the blue CoCo SDC cartridge in the side slot
The whole setup: the cable case on the left, the gray Pocket Pico on the right, and the blue CoCo SDC in the cartridge slot

With the finished cable, PicoTerm found the Pico right away. I connected to KF7PSM-1, then to WV3V-1 through a relay, and read the message list on its personal BBS, all with clean text.

The monitor showing a connection to WV3V-1 via RELAY, the welcome message of WV3V's Personal PBBS and its message list
Connected to WV3V's personal BBS through a relay, reading the message list

This short video was taken during the first test of the finished cable:

8. One catch: the Pico's speed

The HK-21 ROM inside the Pocket Pico sets its serial speed from a *, but only on a brand-new, never-set-up Pico. The Pico saves its settings to flash memory, so one that has been used at another speed (115200 is common) keeps that speed and won't answer PicoTerm. That is what happened on my first test.

The fix is done once, over the Pico's USB port with any terminal program such as PuTTY. ABAUD 1200 sets the speed, but the Pico only saves to flash when TXDELAY changes (or a new BBS message arrives), so changing TXDELAY up one and back forces the save:

TXDELAY          (note the number, n)
ABAUD 1200
TXDELAY n+1
TXDELAY n
RESTART          (shows TTL Serial= 1200, 8, 1, None)

Don't use RESET for this: it brings back the * auto-baud but erases all of the Pico's settings. To go back to 115200 later, do the same with ABAUD 75.

Get PicoTerm

PicoTerm is free and open source (MIT license). The GitHub page has the disk image ready to copy to an SD card, the 6809 source code, the cable notes, the Pocket Pico 1200 baud steps, a printable quick reference card and the 3D-printable case.

Credits

The Pocket Pico and its Pico TNC firmware are by Peter, KF7PSM, who also donated the ICL232 test cable and the LTC1327 chip for the finished cable. PicoTerm was written with the help of Claude, an AI assistant.

Links

← All projects