CFOG's PIP, May 1988, Volume 7 No. 3, Whole No. 65, page 36

A Bit of History

by David S. Tilton

[Reprinted from the Letters to the Editor column of the November 1987 Dr. Dobb's Journal of Software Tools.]

In the December 1986 Letters column was a letter from a Mr. Hawkins in which he was complaining among other things about the terseness of the C language. He attributed this "propensity for the least possible typing" to the authors of the language being two fingered typists. More likely it was what they were typing on that inspired them to opt for the least possible typing. C is an older language than many realize since although it was born in the early 1970s along with Unix, it did not escape its birthplace, the Bell Laboratories, until around 1980. The standard terminal in use back in the early seventies was the Teletype machine. In many operating systems from CP/M to Unix the abbreviation TTY, used for things related to the terminals, makes sense only if it is realized that the terminals were originally Teletype machines.

The Teletype machine was an electromechanical device, not an electronic device, and was therefore very slow by today's standards. Typically it operated at 110 baud or ten characters per second. Furthermore, after a key was struck you had to wait a full tenth of a second before striking the next key or it would be ignored. Since most people, especially when thinking at the keyboard, tend to type unevenly, the average typing speed was often much less than ten characters per second.

In spite of their slowness the Teletype machines were the most practical terminals for multiuser systems (then called time sharing systems) and for small computers. The electronic terminals using a CRT were at that time dumb terminals and very expensive. Furthermore, if hard copy was desired it was necessary to buy a printer which would cost almost as much as a full Teletype terminal. The wide-spread use of Teletype machines as terminals left its mark on computer standards in many ways besides the TTY abbreviation. The most important is probably the ASCII code. This was developed for the Teletype machines and then adopted by computers when the Teletype machines were adopted as terminals.

Many computerists are puzzled by the fact that all of the control codes except DEL are at the beginning of the codes while DEL is at the very end. The old name for DEL, RUBOUT, gives a clue to this mystery. Because it was very difficult to type at a rate anywhere near the maximum of ten characters per second on the Teletype machines, most teletypes were equipped with a paper tape punch and reader. The message was punched into paper tape off line and then transmitted at the maximum rate by the tape reader on line to save expensive on line time. But suppose you made a mistake and hit the wrong key near the end of punching a long tape. Once a key was struck there was no way to un-punch the holes in the tape and it would be very frustrating to have to do the whole tape over again. Instead the tape was manually backed up to the error and the error overpunched with the RUBOUT code which punched all the hole positions. The receiving Teletype was set to ignore RUBOUT codes so that errors simply didn't print.

The paper tape units came in at least two versions, the 7-bit and the 8-bit types. The 7-bit type was common for most communications uses but for computers and for communication channels with a parity bit the 8-bit units were used. With computers paper tapes were used for off line storage and for distributing software. For computer use at the computer high speed paper tape punches and readers were developed and became so common that CP/M had input/output channels reserved for them. Many of the earlier and less expensive Teletype machines were upper case only and this is one of the reasons that BASIC as developed at Dartmouth College would work with all upper case. Apparently the Bell Labs could afford the more expensive Teletypes with the full character set and both C and Unix are case sensitive although Unix has a provision for translating upper case to lower case for upper case only terminals and both tend to use mostly lower case. Some Teletypes could transmit either case although they printed upper case only, translating lower case to upper case when receiving. Note that all of the older text editors such as ed on the Unix system are line editors and that only the newer editors such as vi are fullscreen editors. That is because with the Teletypes as terminals there was no screen.

This is not the first case where decisions made in the past for valid reasons persist in standards long after the reasons for making those decisions no longer apply. After all the gauge of modern railroads was set by decree of an ancient Roman emperor and the layout of the standard typewriter keyboard was made to discourage fast typing and thus avoid key pileups. After a standard has been in use for a while there are many things around embodying that standard that would be obsolete if the standard were changed so old standards linger long after they are obeolete.

Incidentally the slow Teletype machines hooked to a timesharing system seemed like a big advance to programmers who previously had to punch their programs on a card punch and submit them for batch processing every time they wanted to try something. Then they would wait hours or even days for the results which might be only a cryptic error message. Think how that would affect your debugging procedures.

David S. Tilton