Using a 1978 terminal in 2026 (DEC VT-100)
15 points by njha
15 points by njha
Hardware flow control is a must. Another thing that back in the day made terminals usable was you could press a key like ^O to flush all terminal output to /dev/null. I think stty -a shows this as "discard" on Linux. Sadly this was never implemented in Linux, and it does nothing IIRC. Perhaps it works on BSD systems?
Nowadays people don't care about termcap/terminfo, and will just spew whatever to STDOUT, and don't even bother to check isatty(). Thankfully tmux/screen can help with this. It's just too much work to get a retro terminal to work these days.
I had a VT-420, and it theoretically had a kind of hardware flow control, but it wasn't the RTS/CTS kind that works with an RS-232 serial port, so I had to use XON/XOFF. GNU Screen has support for making XON/XOFF work better with "modern" programs that expect to use C-q or C-s for commands. Sadly, tmux doesn't.
Huh, curious. The discard control character is documented in termios(4) but not in stty(1), tho it is implemented in stty. It seems that the control character used to be called “flush” in the 1980s and in 1990 it was renamed to discard; also in 1990 the stty(1) man page was rewritten to mdoc and the flush/discard option was left out.
Yeah, it looks like the Linux kernel's N_TTY line discipline toggles a FLUSHO state but doesn't act on it, and from the looks of things never has. So all that stty stuff is strictly vestigial, and is probably there so ancient scripts don't break. POSIX apparently deems this feature as optional, so it remains a ghost in the machine ;)
Confirmed it does not work on Linux and it does on macOS. On Debian 13.2:
$ stty -a | grep flush
echoctl echoke -flusho -extproc
$ ping localhost
PING localhost (::1) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.036 ms
^O64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.037 ms
64 bytes from localhost (::1): icmp_seq=4 ttl=64 time=0.034 ms
^C
--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3054ms
rtt min/avg/max/mdev = 0.022/0.032/0.037/0.006 ms
On macOS 15.3:
$ stty -a | grep flush
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.203 ms
^O^C
--- localhost ping statistics ---
9 packets transmitted, 9 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.066/0.150/0.330/0.104 ms
Maybe I'll spend a day getting the VT-220 in my basement working again. To do it I have to figure out the old DEC 6pin serial mapping to RS-232 and build a converter but that shouldn't be awful.
Yeah that part was pretty straightforward. I just needed to set ixon for flow control and make a custom getty (I could not convince the real getty to have ixon or respect my terminal size but it’s very possible this was a skill issue).
If you're talking about MMJ, perhaps this'll help:
Even easier: https://www.stonewallcable.com/h8571-j-eq-dec-modular-adapter
This is what I used for my VT-420.
If by 6pin serial you mean the DECconnect MMJ connectors (6P6C RJ11 with an offset tab), I didn't think those were a thing until the VT320 or VT420. My VT220-Z has a regular boring DB25M on the back with a normal enough pinout, so no trouble hooking it up to a modern linux box. The smaller DE9M is for a printer, so can be ignored.
Surreal to see a device from my childhood described and probed like it's a medieval artifact. Your descriptions are excellent, even down to the CRT whine (a notorious indicator of age-based hearing loss) and the mushy keyboard.
To find out, I bought a VT-100 and decided to use it as my main terminal.
This is burying the lede, IMO. It's easy enough to buy a VT-320 or later, perhaps reconditioned for you, if you have the money and don't want to/can't put in the time/effort to do it yourself. But VT-100s are pretty rare and precious, I thought.