# Terminalemulation

Eine Terminalemulation ist ein Computerprogramm, das die Funktion eines Computer-Terminals nachbildet. Sie wird genutzt, um textbasierte Programme innerhalb einer grafischen Benutzeroberfläche verwenden zu können.
Vor dem Aufkommen der PCs war es üblich, auf Großrechner (Mainframes) über Terminals zuzugreifen. Terminals sind Hardwaregeräte bestehend aus Bildschirm und Tastatur, die es ermöglichten Daten in den Zentralcomputer einzugeben, bzw. anzuzeigen. Später wurden sie auch genutzt, um Programme, die am Großrechner liefen, direkt zu bedienen. Beispiele von Terminals sind IBM 3270 oder VT100.
Diese Geräte waren zwar billiger als der Großrechner, trotzdem aber teuer und platzraubend. Da nun mit dem Aufkommen der Personal Computer in den 1980er Jahren Geräte mit Monitor und Tastatur verfügbar waren, lag es nahe, die Funktion der Hardware-Terminals durch Programme zu ersetzen, die auf PCs liefen, so dass der PC neben seinen anderen Aufgaben (wie Textverarbeitung usw.) die Funktion des Terminals mit übernehmen konnte. Diese Programme werden als Terminal-Emulatoren bzw. Terminalemulation bezeichnet.

## Historie

In der Anfangszeit der IBM PC gab es eine Reihe von Terminal-Emulatoren, die unter MS-DOS liefen, wie z. B. Telix, Telemate oder Crosstalk.
Mit dem Beginn der grafischen Benutzeroberflächen Windows kam eine Reihe weiterer Programme hinzu, die unter Windows bzw. OS/2 liefen.
Gleichzeitig entstand im Unix-/Linux-Bereich das Programm xterm, das unter der grafischen Benutzeroberfläche X11 läuft. Da Unix ursprünglich ein Betriebssystem für Zentralcomputer war, ist das Prinzip, auf so ein System über ein Terminal zuzugreifen, für Unix/Linux-Systeme essenziell.
Heutzutage gibt es eine unüberschaubare Vielzahl von Terminal-Emulatoren für Windows, Linux und macOS. Putty ist eines der bekanntesten und beliebtesten Programme und verfügbar unter Windows, Linux und macOS.

## Architektur

Die Kommunikation zwischen Zentralcomputer und Terminal basiert auf einem Datenstrom, bei dem in die tatsächlich anzuzeigenden Daten noch Steuersequenzen eingefügt werden, die es erlauben, diese Daten am Bildschirm zu formatieren oder zu platzieren. Bei Terminals wie VT100 geschieht das durch Sequenzen mit dem Zeichen ESC und bestimmten darauf folgenden Codes der sog. Escape-Sequenz. Beispielsweise würde die Zeichenfolge ESC [ 2 J auf einem VT100 Terminal den Bildschirm löschen oder ESC [ 5 m auf einem VT100 Terminal den folgenden Text blinkend darstellen. Das Erkennen und Bearbeiten dieser Sequenzen und entsprechende Darstellung der Daten ist Aufgabe der Hardwareterminals. Es gibt verschiedene Standards dieser Terminal-Steuersequenzen, diese variieren je nach Hersteller. Eine davon ist z. B. als ANSI-Escapesequenz X3.64 bekannt.
Eine Terminalemulation stellt sich gegenüber einem textbasierten Programm als ein Computer-Terminal dar (daher der Name). Es ist ein Emulator in dem Sinne, dass es dem textbasierten Programm den Eindruck vermittelt, es sei mit einem Computer-Terminal verbunden, weil es die gleiche Aufgabe übernimmt.
Andererseits stellt sich eine Terminalemulation gegenüber der grafischen Oberfläche als ein grafikfähiges Programm dar. Somit stellt eine Terminalemulation einen Vermittler dar – zwischen einer Textanwendung und einer grafischen Oberfläche.
Eine weitverbreitete Terminalemulation ist xterm, die unter der grafischen Oberfläche X11 läuft. In ihr kann ein zeichenorientiertes Programm gestartet werden – meist eine Kommandozeilen-basierte Shell oder eine zeichenorientierte Anwendung („Textanwendung“).
Die Programme interagieren wie folgt:

## Beispiele

* xterm, Gnome Terminal, Konsole – Terminalemulationen zum Zugriff auf unixoide Systeme wie zum Beispiel GNU/Linux
* Terminal – Terminalemulation von macOS
* Windows Terminal, cmd.exe – Terminalemulationen unter Windows
* Reflection Desktop von Walker, Richer, Quinn (WRQ) – Terminalemulation zum Zugriff auf Rechner von IBM und HP.
* HP TeemTalk – Terminalemulation zum Zugriff auf Rechner von HP Inc.