Linux Fu: The Old School Terminal [Hackaday]

View Article on Hackaday

Maybe you have a vintage old-school computer. Maybe you have a replica. Maybe you just want to run SIMH and relive the glory days of CP/M or VMS. The problem is, it looks kind of silly to have CP/M running in your beautiful X11 terminal window full of 3D animations, opacity effects, and special fonts. You could buy an old CRT monitor. That would be cool, too, because on a modern screen, you don’t get scan lines and all the crummy artifacts that go along with an electron beam and phosphor display device. Or you can grab retro-cool-term.

Star Trek on CP/M

Even if you don’t have an old computer, the program will work fine to simply run your shell for everyday use. Confound the youngsters when they see your terminal with scan lines and CRT jitter updating the latest packages.

What Is It?

If you want a shell in a GUI, you used to use xterm, although most people use something more modern. I use Konsole, but some like RXVT or whatever terminal your distro favors. Cool-retro-term is just a replacement for this. By default, it only opens a shell prompt.

What makes it special is its nice emulation of a real CRT. You can adjust it, too, or pick from some predefined profiles that look like different terminals. You should be able to install it with your package manager, or you can get a recent version from GitHub. You can also find it in places like the Snap store, if you are into that sort of thing.



What Isn’t It?

You are all set if you want to run your Linux machine with a nostalgic terminal or an emulator like SIMH. But if you want to connect to your Altair replica or your KIM-1, you’ll need a serial port terminal program to run inside cool-retro-term. This shouldn’t be a GUI program — you want it to run inside the terminal. I suggest Minicom, but there are many choices, including picocom or tio.

The capabilities, in that case, are totally up to the serial terminal. Cool-retro-term is just the display. If you are connecting to real old hardware, look for programs with handshaking options and the ability to throttle their speed. That old computer might have a 9600 baud port, but it also might not expect to have to process at full speed all the time like it will if you try to send over an entire file.

This is such a problem, by the way, that I wrote a Minicom plugin that you may have seen if you ever tried AmForth or worked much with the COSMAC Elf. It transfers files one byte at a time and waits for the remote computer to echo the character as a form of handshaking. It can also wait at the end of each line for a prompt to keep you from overrunning the old computer.

Effects and Problems

Once you get bored with the default profiles, there are plenty of options for configuring the screen how you like. You can control basic things like brightness and contrast. You can set the margin and how much the “screen” curves. Want phosphor burn in or a scanning raster line? No problem.

Some of the raster options are a bit impractical for real work, and you may want to find the cleanest font if you plan to really use it as more than a conversation piece.

Since I run it under KDE, the default option screens are unreadable if you use any kind of custom theme. The answer — or at least one answer — is to set the following environment variable:

QT_QUICK_CONTROLS_STYLE=Material cool-retro-term

The resulting settings display will be ugly but readable.

Making it Easy

I always forget how to launch the program for my various retrocomputers, so I make shell scripts to manage it. That’s a good place to set the style environment, too, if needed. Here’s one of my scripts:

#!/bin/bash
PORT=/dev/ttyACM0
if [ -z "$1" ]; then PORT="$1"; fi
exec cool-retro-term --workdir "$HOME" -p Altair -e minicom -m -c on -D "$PORT" altair

This means I have a profile called Altair in cool-retro-term and another one called altair for Minicom. The minicom settings will have the baud rate, the word wrap settings, and other special items like my custom file upload filters.

While it would be fun to pick up an old ADM-3 terminal, they aren’t cheap, and you have to keep them working. (I actually do have an old ADDS terminal.) But with cool-retro-term, you can have a near-authentic experience with very little effort.

Don’t have an old CP/M machine? Make one for $4. Or set up SIMH, which is easier than you think, thanks to some docker images.