eighty columns

Entry three of ten in “the end of the wire,” a series on the terminal. Each one stands alone.

Nearly every arbitrary-looking thing about the terminal is the frozen shape of a machine that no longer exists.

Most lines of text on the internet end with two characters instead of one.

A carriage return, then a line feed. They are two characters because they were two motions. The carriage — the part holding the paper — traveled back to the left margin. Then the paper advanced by one line. Two instructions for two moving parts, and if you sent only the first one you got a line printed on top of the line before it.

There is no carriage. There is no paper. \r\n is still what terminates every header in every HTTP request your browser has made today.


The device file is /dev/tty.

Teletype. The abbreviation is not a nickname for “terminal” — it is the name of the machine, the one with a keyboard, a roll of paper, and a mechanism loud enough that people put them in separate rooms. Every process on your laptop that asks whether it is talking to a human asks by checking for a teletype.


Eighty columns is two decisions, forty years apart, neither of which has been revisited since.

The first is the shape of the punched card. Hollerith’s census card and the format that descended from it standardized at 3¼ by 7⅜ inches, and the reason is furniture. The Census Bureau had to store and sort sixty million cards, and the Treasury Department already manufactured drawers, bins, and boxes sized for large US paper currency, which circulated at roughly those dimensions until 1923. The card was sized to fit the boxes. Not to be a dollar bill — it is slightly larger than one, and anyone with a ruler can check — but to fit the containers the government was already buying.

The second decision is the number. The 1890 card had twenty-four columns. Eighty arrived in 1928, when IBM narrowed the holes from round to rectangular and fit more of them onto the same rectangle. The shape is a logistics inheritance from 1890. The count is a packing optimization from 1928. They are unrelated, and together they are the width of your screen.


Twenty-four rows is a memory limit.

The IBM 2260, in 1965, displayed eighty columns by twelve rows, because twelve was what its sonic delay-line memory could hold. The IBM 3270, in 1971, used four banks of shift registers — 1,920 characters, which is exactly eighty by twenty-four. The 3270 became the best-selling terminal in the world, and once it had, every competitor had to match its geometry to interoperate.

The DEC VT100, announced in June 1978, is eighty by twenty-four for that reason. It did not choose the number. It arrived into a world where the number was already the number.

Your terminal emulator is emulating that machine. It has a model number. You have probably typed its name into a TERM variable without noticing you were naming a piece of hardware.


Press Ctrl-S and your session freezes.

That is XOFF, and it is not a bug or a leftover keyboard shortcut. It is flow control: a message from the receiving end saying stop sending, I cannot keep up. It exists because there were devices on the far end of the wire that were mechanically slower than the wire, and the only way to avoid losing characters was to ask the sender to pause. Ctrl-Q resumes.

Nothing in your setup is slower than the wire. The brake is still installed, and it is still bound to a key next to the one you use to save.


The control characters are a vocabulary for a device with one channel.

There was no second input path — no menu bar, no right-click, no way to reach past the stream of characters and touch the process behind it. So the alphabet had to carry two kinds of message at once: the text you were sending, and the instructions about the sending. Ctrl-C, Ctrl-D, Ctrl-Z are what remains of that. The Unix manuals of the period are written in those terms; the tty documentation describes editing behavior as bounded by the beginning of a line or an EOT — end of transmission, a phrase about a wire.


The last fossil is the one that gives the whole thing away.

In early Unix, # erased the last character you typed and @ killed the whole line. The Sixth and Seventh Edition manuals both say so in the same words. It looks like a quirk, and it is not — it is a specification, and it predates Unix.

“Erase and Kill Character Conventions,” Multics System Programmers’ Manual section BC.2.03, by J. H. Saltzer and C. Strachey, dated 27 January 1966. The document reasons entirely in terms of print positions and carriage motion, and it distinguishes three separate things: the printed line, the canonical form, and the final input. Those have to be three separate things, because on paper the first one cannot be taken back. The erase character, Saltzer and Strachey write, “erases itself and the contents of the previous print position” — but on the page, both marks are still there.

That is the whole design. You do not erase a mistake on a printing terminal. You announce that you did not mean it, and the machine agrees to ignore it. The people who had been living inside Multics walked down the hall and built Unix, and the convention came with them.


We call these fossils, and the word is wrong, because a fossil is dead.

Every one of them survived a total replacement of the hardware underneath it. Not through sentiment or backward compatibility alone — through fitness. The constraint each one encodes is still here. The channel is still narrow: your terminal is a byte stream and the stream is still the thing that makes it composable. The link is still unreliable, which is why a protocol that can be resynchronized character by character keeps beating protocols that assume the connection holds. And the receiver is still sometimes slower than the sender, which is what flow control was and what backpressure is, one abstraction layer up and under a newer name.

What died was the paper, the platen, and the noise. What the paper was a workaround for — a thin, one-way, lossy connection between a person and a machine somewhere else — never went anywhere. We stopped noticing we were inside it, which is a different thing from getting out.

The wire is shorter now. It runs to a process on the same chip, through a socket that never leaves the building. It is still a wire, and everything at your end of it is shaped like the far end used to be.