„ANSI-Escapesequenz“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Gliederung
→‎Steuerzeichen: Quellen: http://ind-systeme.com/deutsch/produkte/daten/software/download/irnet/doc/de/vtemudis.html und http://www.columbia.edu/kermit/ftp/a/msvibm.vt
Zeile 46: Zeile 46:
Die Standards sind aufbauend und miteinander verwoben – wurde einer der Standards angepasst, so wurde meist auch eine angepasste Version der anderen Standards veröffentlicht.
Die Standards sind aufbauend und miteinander verwoben – wurde einer der Standards angepasst, so wurde meist auch eine angepasste Version der anderen Standards veröffentlicht.


== Steuerzeichen ==
== Steuersequenz ==
Der ASCII-Standard nach ECMA-6 (ANSI X3.4) definiert [[Steuerzeichen#C0|C0-Steuerzeichen]] (im Bereich 0–31 [[Dezimalsystem|dezimal]] bzw. 00–1F<sub>hex</sub> [[Hexadezimalsystem|hexadezimal]]) und ist auf 7 Bits begrenzt. Die Erweiterung auf 8 Bit nach ECMA-43 beinhalten die als [[Steuerzeichen#C1|C1]] bezeichneten Steuerzeichen im Bereich 128–159 (80–9F<sub>hex</sub>) für die Bildschirm- und Druckerausgabe. Weil jedoch der Platz für Steuerzeichen begrenzt war wurden zusätzliche Befehle und Funktionen über [[Escape-Sequenz|Escapesequenzen]] eingeführt. Diese sind nach ANSI X3.64 bzw. ECMA-48 standardisiert und beinhalten Steuerfunktionen für [[Cursor]]-Befehle, Bildschirm-Befehle (Lösch-, Attribut-, Modus-Befehle) und Tastatur-Befehle.<ref>[http://academic.evergreen.edu/projects/biophysics/technotes/program/ansi_esc.htm Programming: ANSI.SYS Escape Sequences] (englisch); abgerufen am 26. März 2016.</ref> Nachdem diese auf den ersten Terminals im professionellen Umfeld eingeführt wurden, bekamen die erweiterten Escapesequenzen erst durch den IBM-PC und MS-DOS weitere Verbreitung. Der dazu nötige Treiber hieß [[ANSI.SYS]], weshalb bald der Name „ANSI-Escapesequenzen“ entstand, obwohl der Standard zu diesem Zeitpunkt bereits von ISO und IEC übernommen wurde.
Der ASCII-Standard nach ECMA-6 (ANSI X3.4) definiert [[Steuerzeichen#C0|C0-Steuerzeichen]] (im Bereich 0–31 [[Dezimalsystem|dezimal]] bzw. 00–1F [[Hexadezimalsystem|hexadezimal]]) und ist auf 7&nbsp;Bits begrenzt. Die Erweiterung auf 8&nbsp;Bit nach ECMA-43 beinhalten die als [[Steuerzeichen#C1|C1]] bezeichneten Steuerzeichen im Bereich von 128–159 dezimal bzw. 80–9F hexadezimal für die Bildschirm- und Druckersteuerung. Weil jedoch der Platz für Steuerzeichen begrenzt war wurden zusätzliche Befehle und Funktionen über Steuersequenzen implementiert.


Während ein Steuerzeichen eine Funktion direkt umsetzt, sind bei einer Steuersequenz mehrere Zeichen notwendig. Die Anzahl der Zeichen ist je nach Funktion unterschiedlich. Die primären Steuerzeichen liegen im C1-Bereich und sind daher nur auf Sytemen mit 8-Bit-Zeichensätzen verfügbar. Damit aber auch 7-Bit-Systeme von Steuersequenzen profitieren können, wurden sogenannte '''[[Escapesequenzen]]''' eingeführt. Es gibt von den meisten Steuerzeichen im C1-Bereich ein Äquivalent dazu über eine Escapesequenz, die somit auch auf Systemen mit 7-Bit-Zeichensatz – dem ASCII-Zeichensatz – verfügbar sind.
Um die erweiterten Steuerfunktionen nutzen zu können muss zuerst eines der C1-Steuerzeichen gesetzt werden. Diese benötigen jedoch einen 8-Bit-Zeichensatz. Um weiterhin 7-Bit-kompatibel zu bleiben kann daher derselbe Steuerbefehl auch als Escapesequenz mittels des C0-Steuerzeichens <code>ESC</code> genutzt werden, benötigt dann jedoch zwei Zeichen statt eines.


Diese Steuersequenzen sind nach ANSI X3.64 bzw. ECMA-48 standardisiert und beinhalten [[Cursor]]-Befehle, Bildschirm-Befehle (Lösch-, Attribut-, Modus-Befehle) und Tastatur-Befehle.<ref>[http://academic.evergreen.edu/projects/biophysics/technotes/program/ansi_esc.htm Programming: ANSI.SYS Escape Sequences] (englisch); abgerufen am 26. März 2016.</ref>

=== 7-Bit-Äquivalent zu den erweiterten 8-Bit-Steuerzeichen ===
{| class="wikitable"<!-- width="100%" -->
{| class="wikitable"<!-- width="100%" -->
|-
|-
!rowspan=2| Steuerbefehl
!colspan=2| Steuerbefehl
!rowspan=2| ISO
!colspan=2| C1-Position
!rowspan=2| C1-Position
!rowspan=2| 7-Bit-Äquivalent
!colspan=2| C0
!colspan=2| C0-Position
!rowspan=2| Funktion
|-
|-
! Bezeichnung
! Escapesequenz
! ISO-Abkürzung
! Positionen
! Dezimal
! Hex
! Dezimal
! Hex
|-
| {{lang|en|Index}}
| IND
|
| 84
| ESC D
|
|
| Cursor eine Position nach unten (scrollen wenn nötig)
|-
| {{lang|en|New Line}}
| NEL
|
| 85
| ESC E
|
|
| Neue Zeile (scrollen wenn nötig)
|-
| {{lang|en|Set Horizontal Tab}}
| HTS
|
| 88
| ESC H
|
|
| Tab-Stop setzen
|-
| {{lang|en|Reverse Index}}
| RI
|
| 8D
| ESC M
|
|
| Cursor eine Position nach oben (scrollen wenn nötig)
|-
| ?
| SS2
|
| 8E
| ESC N
|
|
| Zeichensatz G2 für 1 Zeichen nach GL laden
|-
| ?
| SS3
|
| 8F
| ESC O
|
|
| Zeichensatz G2 für 1 Zeichen nach GL laden
|-
| {{lang|en|Device Control String}}
| DCS
|
| 90
| ESC P
|
|
| Startzeichen einer Steuersequenz
|-
| {{lang|en|Start Protected Area}}
| SPA
|
| 96
| ESC V
| 027
| 1B
| proprietäre Steuersequenz von MS-DOS KERMIT
|-
| {{lang|en|End Protected Area}}
| EPA
|
| 97
| ESC W
| 027
| 1B
| proprietäre Steuersequenz von MS-DOS KERMIT
|-
| ?
| ROI
|
| 9A
| ESC %
|
|
| Einleitung einer proprietären [[VT100]]-Steuersequenz
|-
|-
| {{lang|en|Control Sequence Intro}}
| {{lang|en|Control Sequence Intro}}
| CSI
| CSI
| 155 (9B<sub>hex</sub>)
| 155
| 9B
| ESC [
| ESC <nowiki>[</nowiki>
| 27 (1B<sub>hex</sub>), 91 (5B<sub>hex</sub>)
| 027 091
|}
| 1B 5B
| Einleitung einer Steuersequenz
|-
| {{lang|en|String Terminator}}
| ST
|
| 9C
| ESC \
|
|
| Zeichen für das Ende einer Steuersequenz
|-
| {{lang|en|Operating System Command}}
| OSC
|
| 9D
| ESC <nowiki>]</nowiki>
|
|
| proprietäre Steuersequenz von MS-DOS KERMIT
|-
| {{lang|en|Privacy Message}}
| PM
|
| 9E
| ESC ^
|
|
| proprietäre Steuersequenz von MS-DOS KERMIT
|-
| {{lang|en|Application Program Command}}
| APC
|
| 9F
| ESC _
|
|
| proprietäre Steuersequenz von MS-DOS KERMIT
|}<!--
Mnemonic Code (oktal) 7-Bit Äquivalent Aktion
IND 204 ESC D Cursor 1 nach unten, ggf. scrollen
NEL 205 ESC E neue Zeile, ggf. scrollen
HTS 211 ESC H Tab-Stop setzen
RI 215 ESC M Cursor 1 nach oben, ggf. scrollen
SS2 216 ESC N Zeichensatz G2 für 1 Zeichen nach GL laden
SS3 217 ESC O Zeichensatz G3 für 1 Zeichen nach GL laden
DCS 220 ESC P Startzeichen einer Steuersequenz
CSI 233 ESC [ Einleitung einer Steuersequenz
ST 234 ESC \ Endezeichen einer Steuersequenz
ROI 232 ESC % Einleitung einer proprietären Steuersequenz
-->


Der einzige Nachteil der Escapesequenz ist, dass ein zusätzliches Zeichen pro Steuerbefehl verarbeitet werden muss, was auf langsamen Terminals zu Geschwindigkeitseinbußen führen kann.
Der einzige Nachteil der Escapesequenz ist, dass ein zusätzliches Zeichen pro Steuerbefehl verarbeitet werden muss, was auf langsamen Terminals zu Geschwindigkeitseinbußen führen kann.

Version vom 27. März 2016, 22:33 Uhr

Als ANSI-Escapesequenzen bezeichnet man auf Escape basierte Steuerzeichen, die auf dem Standard von ANSI X3.64 von 1974 bzw. ECMA-48 von 1975 beruhen. Diese werden als Escapesequenzen bezeichnet und dienen der Bildschirm- und Tastatursteuerung auf Terminals wie dem DEC VT100 (1979). Sie wurden ebenfalls in einer Reihe von Terminalemulationen und Kommandozeileninterpretern implementiert.

Die 2. Ausgabe von ECMA-48 wurde 1978 als ISO 6429 und mit der 4. Ausgabe 1986 als ISO/IEC 6429 standardisiert. Der aktuelle ECMA-48-Standard entspricht der 5. Ausgabe vom Juni 1991.

Geschichte

In den 1970er-Jahren wurde der ASCII-Standard, der bereits 1968 festgelegt worden ware, durch das American National Standards Institute (ANSI) überarbeitet. Dieser als ANSI X3.4-1977 bezeichnete Standard definiert jedoch nur die ersten 7 Bit, wurde als die ASCII-Zeichentabelle bekannt und bildet die Grundlage für weitere internationale Zeichensätze. Die ersten Arbeiten zur Standardisierung eines 8-Bit-Zeichensatzes resultierten bereits 1971 in ANSI X3.41 und ECMA-35. Gemeinsamt mit der European Computer Manufacturers Association (ECMA) wurde in den Komitees mit den Bezeichnungen „X3L2“ bei ANSI und „TC 1“ bei ECMA an der Erweiterung der 8-Bit-Eingabe- und -Ausgabesteuerung gearbeitet, was u. a. die Möglichkeiten der Videoausgabe auf Terminals erweitern und gleichzeitig standardisieren sollte. Das Ergebnis dieser Arbeit ist ECMA-48 vom September 1976 sowie ANSI X3.64 von 1977. Diese Spezifikation wurde auch dem ISO-Komitee vorgelegt und 1978 als ISO 6429 akzeptiert. Die 2. Ausgabe von ANSI X3.64 und ECMA-48 von 1979 ist identisch mit der ISO-Norm.

Der ersten Terminals, die ANSI X3.64-1977 umsetzten, waren der DEC-VT100-Terminal von 1978 der Heathkit H89 von 1979.

Standards

Der Standard wurde mit minimalen Abweichungen sohl von ANSI als auch ECMA herausgegeben und nach Einreichung auch zur ISO- und IEC-Norm. Nur die ECMA-Standards sind allerdings frei zugänglich (gratis). Der ANSI-Standard wurde zugunsten der ISO-Norm zurückgezogen, um Doppelstandardisierung zu vermeiden.

Jahr Bezeichnung ANSI ECMA ISO/IEC
1965 7-bit Coded Character Set USAS[1] X3.4 ECMA-6[2] ISO/IEC 646
1971 Character Code Structure and Extension Techniques ANSI X3.41 ECMA-35[3] ISO/IEC 2022
1974 8-bit Coded Character Set Structure and Rules ? ECMA-43[4] ISO/IEC 4873
1979 Control Functions for Coded Character Sets ANSI X3.64 ECMA-48[5] ISO/IEC 6429

Die Standards sind aufbauend und miteinander verwoben – wurde einer der Standards angepasst, so wurde meist auch eine angepasste Version der anderen Standards veröffentlicht.

Steuersequenz

Der ASCII-Standard nach ECMA-6 (ANSI X3.4) definiert C0-Steuerzeichen (im Bereich 0–31 dezimal bzw. 00–1F hexadezimal) und ist auf 7 Bits begrenzt. Die Erweiterung auf 8 Bit nach ECMA-43 beinhalten die als C1 bezeichneten Steuerzeichen im Bereich von 128–159 dezimal bzw. 80–9F hexadezimal für die Bildschirm- und Druckersteuerung. Weil jedoch der Platz für Steuerzeichen begrenzt war wurden zusätzliche Befehle und Funktionen über Steuersequenzen implementiert.

Während ein Steuerzeichen eine Funktion direkt umsetzt, sind bei einer Steuersequenz mehrere Zeichen notwendig. Die Anzahl der Zeichen ist je nach Funktion unterschiedlich. Die primären Steuerzeichen liegen im C1-Bereich und sind daher nur auf Sytemen mit 8-Bit-Zeichensätzen verfügbar. Damit aber auch 7-Bit-Systeme von Steuersequenzen profitieren können, wurden sogenannte Escapesequenzen eingeführt. Es gibt von den meisten Steuerzeichen im C1-Bereich ein Äquivalent dazu über eine Escapesequenz, die somit auch auf Systemen mit 7-Bit-Zeichensatz – dem ASCII-Zeichensatz – verfügbar sind.

Diese Steuersequenzen sind nach ANSI X3.64 bzw. ECMA-48 standardisiert und beinhalten Cursor-Befehle, Bildschirm-Befehle (Lösch-, Attribut-, Modus-Befehle) und Tastatur-Befehle.[6]

7-Bit-Äquivalent zu den erweiterten 8-Bit-Steuerzeichen

Steuerbefehl C1-Position 7-Bit-Äquivalent C0-Position Funktion
Bezeichnung ISO-Abkürzung Dezimal Hex Dezimal Hex
Index IND 84 ESC D Cursor eine Position nach unten (scrollen wenn nötig)
New Line NEL 85 ESC E Neue Zeile (scrollen wenn nötig)
Set Horizontal Tab HTS 88 ESC H Tab-Stop setzen
Reverse Index RI 8D ESC M Cursor eine Position nach oben (scrollen wenn nötig)
? SS2 8E ESC N Zeichensatz G2 für 1 Zeichen nach GL laden
? SS3 8F ESC O Zeichensatz G2 für 1 Zeichen nach GL laden
Device Control String DCS 90 ESC P Startzeichen einer Steuersequenz
Start Protected Area SPA 96 ESC V 027 1B proprietäre Steuersequenz von MS-DOS KERMIT
End Protected Area EPA 97 ESC W 027 1B proprietäre Steuersequenz von MS-DOS KERMIT
? ROI 9A ESC % Einleitung einer proprietären VT100-Steuersequenz
Control Sequence Intro CSI 155 9B ESC [ 027 091 1B 5B Einleitung einer Steuersequenz
String Terminator ST 9C ESC \ Zeichen für das Ende einer Steuersequenz
Operating System Command OSC 9D ESC ] proprietäre Steuersequenz von MS-DOS KERMIT
Privacy Message PM 9E ESC ^ proprietäre Steuersequenz von MS-DOS KERMIT
Application Program Command APC 9F ESC _ proprietäre Steuersequenz von MS-DOS KERMIT

Der einzige Nachteil der Escapesequenz ist, dass ein zusätzliches Zeichen pro Steuerbefehl verarbeitet werden muss, was auf langsamen Terminals zu Geschwindigkeitseinbußen führen kann.

Sicherheit

Da die Steuerzeichen auch dazu verwendet werden können, Tastatureingaben zu simulieren und umzudefinieren, kann eine Datei mit ANSI-Escapesequenzen auf einem Computer auch Schaden anrichten. Dabei ist es lediglich nötig, die Datei von einem voll ANSI-fähigen Programm anzeigen zu lassen, dass dann die enthaltenen Escapesequenzen ungefiltert ausführt. Diese Art der Schadfunktion wird auch als ANSI-Bombe bezeichnet.[7]

Implementierungen

Einzelnachweise

  1. ANSI: Historical Overview (englisch); abgerufen am 27. März 2016. Das American National Standards Institute (ANSI) hieß vor 1969 United States of America Standards Institute (USASI).
  2. ECMA-6 (englisch)
  3. ECMA-35 (englisch)
  4. ECMA-43 (englisch)
  5. ECMA-48 (englisch)
  6. Programming: ANSI.SYS Escape Sequences (englisch); abgerufen am 26. März 2016.
  7. PC-Welt: Viel Farbenpracht mit Ansi-Bomben; abgerufen am 26. März 2016.
  8. MSDN: ANSI.SYS (englisch); abgerufen am 26. März 2016.
  9. Nivot Ink Blog: Windows 10 TH2 (v1511) Console Host Enhancements (englisch), Oisin Grehan, 4. Februar 2016; abgerufen am 26. März 2016.