Linux Fu: The Old School Terminal

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.

40 thoughts on “Linux Fu: The Old School Terminal

    1. Some of the old Dell Ultrasharp monitors have this input too. I have a 2001fp somewhere. It has vga, dvi, composite, and I think svideo. It cost a lot when I bought it but that was 2005/2006 era when a 20″ lcd was expensive. I think it was $750 regular price but I got it for $500 on sale. I used to have my computer, an old secondary one I was using for a fileserver, and a first gen xbox hooked up to mine back then.

  1. It is cool! It has been out there for a long time. I like to use it when working with my 1/3 scale PDP 11/70 front panel (ssh into the RPI-4 behind the scenes to help with the ‘retro’ look/feel) .

    1. Reminds me of when I was bemoaning getting my (real) terminal working at work. Yoof says ‘i know Linux’ like I was some old git. He didn’t even know there was such a thing as a physical terminal, and thought I was talking about X…

  2. When I was in college (ca 1992), my roommate found an IBM 3101 terminal somewhere (I believe it was being thrown out from a campus computer lab). At that time, our connection to the network was via a 19.2k serial port in the back of our room phone. You could hook up a serial terminal (or terminal emulator) and connect to shell accounts, or start SLIP mode and be on the Internet with TCP/IP. We both got into playing MUDs, and many hours were spent either on that terminal, or on my Amiga 3000 telnetted into the game. The 3101 had typical IBM keyboard of the day, and I think the keyboard alone weighed like 10 pounds. There was a definite CLUNK when typing on it, I think it may even had had some kind of device inside to make the clunk, just to simulate the feeling of typing on a selectric. The screenshots in the article brought it all back.

  3. 35 years ago, my dad brought home a computer with a green screen. It had exactly that game shown in the screenshots. What game is it (and where do I get it?). I always found that game fascinating.

  4. There seems to be a small error in the Bash script where the if-line is

        if [ -z “$1″ ]; then PORT=”$1”; fi

    but should be

        if [ -n “$1″ ]; then PORT=”$1”; fi

    otherwise PORT is cleared when the script is called without a parameter and only used if it is called with a parameter (which in turn therefore is not used).

      1. I was wondering if there is a good reason to use “! -z” instead of “-n”?

        And just to show off my bashing skills 😉, you could replace

            PORT=/dev/ttyACM0
            if [ ! -z “$1″ ]; then PORT=”$1″; fi

        with

            PORT=”${1:-/dev/ttyACM0}”

        Short, sharp and succinct, but not nearly as easy to understand as the other, I know. 😇

        1. I think ! -z is just old habit. I know about ${:-} but, I can never remember which of those are POSIX and which are bash-specific (I am pretty sure that one is generic, but I never remember) and I have motivation for other reasons not to write specifically for bash even though it is what I use. I sometimes cave in and use the math, but I try not to ;-)

    1. You can tone that down to just a simple crisp terminal if you desire. You don’t have to just use the default values. Adjust to suit ‘your’ interpretation of an old CRT.

  5. Augh. The stupid “rolling shutter” artifact emulation in cool-retro-term is the worst.

    Such a thing only happens when you’re recording a glass CRT with a camera. If you’re there in person you will never see that.

    1. There are setting …. You can turn off, tone down whatever you don’t like. So you have the ability to set the screen to ‘exactly’ how ‘you’ remember an old terminal should look like to your own eyes :) . And the color to, amber, green, white …. your call.

      1. It’s not about what I “remember”. It’s about the stupid preview images that show something that never happened.

        For something that otherwise makes a pretty concerted effort to have defaults that are an accurate recreation of what glass teletypes looked like, showing the rolling shutter is actively wrong. One may as well have a color Nyancat soaring in the background instead, it’d be equally accurate.

        1. Yeah, I’m afraid I have to put this in the same category as those virtual Nixie tubes that have a blue glow around the numbers, and the “dial” telephones that just put a bunch of pushbuttons in a ring.

    2. Came for that comment! Almost makes one think the devs never saw real CRT terminals except on recordings, or are ironically catering to an audience to which that applies.

      The effect can happen in recordings as mentioned,

      it also *does* happen IRL with certain types of RADAR displays (the big round ones – IIRC they have slow phosphors and a slow polar deflection mechanically controlled by a synchro/servo system?) and other *actually* slow-scanning displays (some styles of patient monitors, oscilloscopes, SSTV, sonar, etc etc).

      Might also have happened on certain DVBST based terminals.

      Most likely never ever happened on a *raster based* terminal, which is what is emulated here – these scan each frame 25/30/50/60 or whatever times per second. If there ever were raster terminals that slow-scanned like this, they would exhibit a very odd delay in local or remote echo….

      1. In the late 80s or early 90s when for some reason people wanted their PCs to look like dumb terminals, there were monochrome monitors that used oddball phosphors originally developed for RADAR that had long persistence. Most of these were either orange or green, so some of those effects are authentic. But the rolling bright bar artifact was never a thing.

        1. I remember, and remember these phosphors also had a tendency to charge up from room lighting and having a slight glow for quite a while … back then I found that rather spooky :) I guess they liked using these long persistence phosphors to ease up on the flicker from 50Hz refresh rates….

          1. I heard that at least some of the original Apple Lisas used the P7 phosphor of all things, if there was ever a RADAR/ECG/Instruments phosphor that you’d not expect on a computer monitor, that would be it…

            … also, trying out coolretroterm, I didn’t have the impression it really tries to reproduce the way beams widen and colors desaturate and become more whitish – whether that is a property of the phosphor or of the spot being just bloody bright – in the very center, depending on the brightness levels set. Once they perfect that, we need a way to tune in screen burn in, gassy CRT behaviour and double peaking, or expansion mesh characteristics in case of DVBST terminals :)

            I have and have used storage tube scopes but no storage tube terminals, I wonder how terminals using storage tubes prevented settings or vector patterns that were patently unsafe for the tube (you know to be careful with burn in when using analog storage scopes, and there is an art form to setting them up just right to capture what you want to capture and getting neither excessive bleed, too weak traces, or tube damage – was that expected of terminal users and programmers too?)

          2. I was using University of California Irvine’s computer center from 1970-75, and in ’74, I think it was, they replaced all of their Datapoint 2000 and 2200 terminals (which I loved, BTW) that had been connected to a pair of XDS Sigma 7 timeshare machines, with Tektronix 4013 terminals. These had two distinct features that were far beyond the Datapoint “glass TTYs”: 1) they were vector graphic terminals, and 2) they had two switch-selectable character sets, ASCII and APL. I don’t know which of this was the primary reason for the change, but overnight we went from the Datapoints to the Teks.
            The Tek 4013s we’re Direct-View (bistable) Storage Tubes, which made it possible to do high resolution (4k x 3k) vectors. Which was fantastic. BUT, being DVSTs, they were not very bright, but extremely sensitive to burn-in.
            Now, the 4013s had a screen-saving feature, which would dim the flood guns on the CRT after some period of inactivity, but this was thwarted by the Sigma 7’s login routine, which cleared the screen and put up a two-line login prompt, and after a minute or two of inactivity, would repeat this process. The result of this confluence of screen saver and login prompt repeater was that around twenty-five of these terminals were ruined within a month. I don’t recall what they replaced the 4013s with, but yeah, it was a complete faisco.

  6. As the others already put it, the defaults are a bit overdone, but after setting it to something sane and more to real-world truth then this is a fun terminal emulator to use. Would be cool if it understood Sixels and friends, something criminally missing from packaged xterm, Gnome Terminal and others.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.