A terminal, in computer technology, is an I/O device used by a person to communicate with a computer. Terminals consist of a keyboard and a display device. Hard-copy terminals use paper upon which the output from the computer is printed. Video terminals have a video screen to display the computer output. With the advent of inexpensive general-purpose personal computers, terminals are rarely used in the modern world, since a personal computer can act as a terminal for a remote computer, usually via a terminal emulator, as well as running other applications.
The original terminals were hard-copy devices, such as the ASR33 Teletype. Teletypes operated at 110 baud (about 11 characters per second). Some were equipped with paper tape punch/readers. The print head was a metal cylinder with ASCII symbols on it (uppercase letters only). The head was rotated and raised/lowered before impacting the paper through an inked ribbon. Thus, allowing any of the embossed glyphs to be printed on the paper. Typically, lowercase letters were converted to uppercase. The paper was fed through the teletype via a friction feed similar to typewriters of the day.
The next advance in printing terminals used a different type of print-head called a dot-matrix printer. The advantage is that these print heads could print faster than the teletype print heads. The original dot-matrix terminals could operate as fast as 300 baud (about 30 characters per second), but later advancements provided speeds up to 1200 baud (about 120 characters per second). Dot-matrix printer technology consists of narrow metal pins organized in rows and columns (typically 7x9). For a given glyph, a pattern of the pins were pushed out, through an ink ribbon, creating a representation of the glyph on the paper. The paper was typically fed via a tractor mechanism: equally-spaced holes on the left and right margins of the paper were used by a mechanism to pull paper past the print line.
The first video terminals were nothing more than "glass teletypes". That is, they simply replaced the paper with a video screen. They often had the same restrictions as teletypes including uppercase only display. However, free of mechanical constraints, they could operate at higher speeds than teletypes. Obviously, there was no paper record of the output and so these devices were not appropriate for all applications. Video terminals typically provided a 24 line by 80 column screen. Each column position on each line is called a character cell, which meant that each character took the same space on the screen, as opposed to proportional spacing. In place of a print head, a cursor was provided to indicate the location where the next output would show. Cursors typically were inverse blocks or underscores, blinking or solid. Each character was represented by a dot matrix (called a raster font) similar to dot-matrix print heads.
Second generation video terminals provided the ability to position the cursor at arbitrary locations on the screen, to change the characteristics of individual characters, such as blinking, bold, underlined, etc. With each successive generation of video terminal, more features were added, including a choice of fonts, graphics symbols, changing screen resolution, and colors. These features were selected by the output of special sequences of characters to the terminal. The most common mechanism was to start the sequence with the ASCII escape code (ASCII value 27), hence they were called "escape sequences" or "escape codes". If followed by properly formatted pre-defined codes, the terminal would interpret the characters as a command rather than as characters to display on the screen.
Video terminals supported maximum speeds of 19,200 baud (about 1,920 characters per second). The most popular terminal model was the VT100 from Digital Equipment Corporation, whose escape sequences became somewhat of a standard in the early days of personal computing.
Although almost always used by an individual person, sometimes printing terminals were simply used as output-only printers, with the keyboard rarely being used.
Terminals typically communicated with computers via direct connections to physical ports on the computer, or remotely via modems over phone lines. Dial-up lines were slower than direct connections, with the fastest commercial modems operating at 9,600 baud (about 960 bytes per second). However, dial-up ports allowed remote computer access and also allowed those ports to be shared among many users, although only one at a time.
Physical connections used one of several competing technologies, the most common being the serial RS232 standard, although there were many proprietary schemes, especially for mainframes. RS232 connections typically used the DB25 or DB9 plugs. The initial personal computers came with two RS232 ports on the back of the system unit, which were usually used to connect printers. RS232 supports concurrent bi-directional data transfer.
For terminals using a form of serial communication, there were several options in how the data was transmitted/received and both sides of the connection needed to be matched or the data was corrupted - usually beyond any recognition.
The speed, called the "baud" rate, indicated how many bits per second were sent. Supported baud rates were not a continuous range, but discrete steps, as supported by UART chips: 110, 150, 300, 600...9,600, and 19,200 (although not all UARTs supported all speeds). The actual number of characters sent depended upon how many bits were sent per character, as described below. However, since the number of bits varied depending on these settings, the actual speed was often unknown to the terminal user. However, dividing the baud rate by 10 gave a close approximation of the number of characters (or bytes) per second.
The character size, which could be either 7 or 8 bits.
0, 1, or 2 stop bits could be used to end each character transmission.
A parity bit could optionally be used to attempt to validate the data.
Because computers could output data faster than even the fastest terminal could accept, a means of pausing the I/O was needed. This was needed in both directions since a computer with numerous ports taking input from terminals could sometimes not keep up with all of the input. Mechanical connections usually had control lines that indicated when either end of the line could accept more data. In the use of dialup lines, there are no individual control lines for flow control. In such cases, an XON/XOFF protocol is used. XON and XOFF are ASCII control codes which are reserved to indicate resuming and pausing (respectively) data transfer.
Terminals typically only sent data when a key on the keyboard was pressed. The computer received the data and then sent the character back to the terminal for display. The process is called "echo" and provided the ability to hide characters by not echoing characters when the computer software was asking for a password, for instance. However, the travel time for the characters in both directions, plus pauses when the computer was busy, could tend to make typing more difficult. Thus, many terminals also included a "local echo" ability where the terminal would both send a character when a key was pressed, but also displayed the character at the cursor position itself. In this case, the computer had to know about the local echo or else it would still output the character to the terminal after the terminal already displayed it, resulting in duplicating each character.