A terminal emulator, terminal application, term, or tty for short, is a program that emulates a video terminal within some other display architecture. Though typically synonymous with a command line shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a graphical user interface is often called a terminal window.
A terminal window allows the user access to a text terminal and all its applications such as command line interfaces (CLI) and text user interface applications. These may be running either on the same machine or on a different one via telnet, ssh, or dial-up. On Unix-like operating systems it is common to have one or more terminal windows connected to the local machine.
Terminals usually support a set of escape sequences for controlling color, cursor position, etc. Examples include the family of terminal control sequence standards known as ECMA-48, ANSI X3.64 or ISO/IEC 6429.
Early adopters of computer technology, such as banks, insurance companies, and governments, still make frequent use of terminal emulators. They typically have decades old applications running on mainframe computers. The old “dumb” video terminals used to access the mainframe are long since obsolete; however, applications on the mainframe are still in use. Quite often, terminal emulators are the only way a user can access applications running on these older machines.
Raw and cooked input/output
On Unix-like systems, for an individual keypress received by the terminal or terminal emulator, it sends an individual code from the character set in use. Also, carriage return and line feed are distinct operations. In raw mode, text passes directly from the terminal or PTY (a device node that a program wishing to emulate a terminal is bound to) to the TTY device. In cooked mode a number of changes are made as the data pass between the terminal or PTY and the TTY: The application gets complete lines of input at once neatly terminated with a line feed and can send just a linefeed when it wants a new line. Also, text typed is echoed back to the user. When a program is started, the terminal is generally in cooked mode which allows easy input and output of text, but applications that want more control will often put the terminal into raw mode, or a slightly more processed rare mode. The characteristics of cooked mode can be turned on and off individually which may be needed for certain applications.
In asychronous terminals data can flow in any direction at any time. In synchronous terminals a protocol controls who may send data when. The IBM 3270-based terminals used with IBM mainframe computers are an example of synchronous terminals. They operate in an essentially "screen-at-a-time" mode (also known as block mode). Users can make numerous changes to a page, before submitting the updated screen to the remote machine as a single action. This paradigm can be surprising to those used to the more common asynchronous terminal behaviour, though in fact it is conceptually quite similar to the submission of HTTP forms on the Web.
Terminal emulators that simulate the original 3270 hardware terminal are available for most operating systems, for use both by those administering systems such as the z9, as well as those using the corresponding applications such as CICS.
Other examples of synchronous terminals include the IBM 5250, and the ICL 7561. The Honeywell Bull VIP7800 and Hewlett-Packard 700/92 terminals also had a block mode.
Examples of terminal emulators
Many terminal emulators have been developed, for terminals such as VT100, VT220, VT320, IBM 3270/8/9/E, IBM 5250, IBM 3179G, Data General D211, Hewlett Packard HP700/92, Sperry/Unisys 2000-series UTS60, Burroughs/Unisys A-series T27/TD830/ET1100, ADDS ViewPoint, Sun console, QNX, AT386, SCO-ANSI, SNI 97801, Televideo, and Wyse 50/60. Additionally, programs have been developed to emulate terminals which are themselves programs, such as xterm and assorted console terminals (e.g., for Linux). Finally, some emulations simply refer to a standard, such as ANSI. These programs are available on many platforms ranging from DOS and Unix to GUI operating systems such as Windows and Macs, to embedded operating systems found in cellphones and industrial hardware.