ANSI.SYS

ANSI.SYS ist ein Gerätetreiber, der einen Teil der in ANSI X3.64 spezifizierten ANSI-Escapesequenzen in PC-kompatiblem DOS implementiert. Ursprünglich war die Implementierung Teil von MS-DOS 2.0 von 1983. Neben MS-DOS 3.x und neuer ist ein kompatibler Treiber u. a. auch in PC DOS von IBM und DR DOS von Digital Research enthalten, aber auch in OS/2. Zahlreiche weitere Betriebssysteme und Programme bieten meist eine zu MS-DOS-ANSI.SYS kompatible Emulation.

Aufgrund der großen Verbreitung und des Dateinamens wird die Bezeichnung ANSI-Treiber oft mit ANSI.SYS gleichgesetzt,[1][2] obwohl die Abkürzung ANSI eigentlich für die Normierungsorganisation American National Standards Institute im Allgemeinen steht. Die ANSI-Norm X3.64 mit dem Titel Control Functions for Coded Character Sets wurde später zudem zugunsten von ISO/IEC 6429 zurückgezogen um Doppelnormierungen zu vermeiden.

Der Quasistandard der ANSI-X3.64-Spezifikation war in den 1980er Jahren, in der Zeit der Bulletin Board Systems, kurz BBS, die in MS-DOS von Microsoft enthaltene Implementierung ANSI.SYS. Der Gerätetreiber geht auf die in IO.SYS von MS-DOS 2.0 enthaltenen ANSI-Funktionen[3] zurück. Ab MS-DOS Version 3.x kann der Treiber bei Bedarf mit DEVICE=ANSI.SYS in der CONFIG.SYS geladen werden. Dadurch kann wertvoller konventioneller Arbeitsspeicher gespart werden, wenn die ANSI-Funktionen nicht benötigt werden.

Microsofts ANSI-Treiber beinhaltet nur einen Teil der Funktionen und nimmt die Implementierung des Zenith Z-19 (bzw. Heath H-19, die Terminal-Ausführung des Heathkit H89) von 1979 als Referenz.[3] Der MS-DOS-ANSI-Treiber implementiert 11 Kommandos und 3 Erweiterungen aus der ANSI-X3.64-Spezifikation.[4]

Als BBS-Clients Verbreitung fanden, die ihrerseits hauptsächlich auf MS-DOS und Varianten davon liefen, wurde die Implementierung von Microsoft für MS-DOS zum De-facto-Standard, da davon ausgegangen werden konnte, dass jeder Anwender zumindest ANSI.SYS zur Verfügung hat. Andere ANSI-Treiber für DOS nahmen die Microsoft-Implementierung von ANSI X3.64 daher meist als Referenz, allerdings wurden auch oft Funktionen hinzugefügt. So bieten etwa einige BBS-Clients eigene ANSI-Interpreter. Eine der nur dort verbreiteten Erweiterungen ist ANSI music, das u. a. von Qmodem und TeliMate implementiert wurde.[5][6]

ANSI.SYS von MS-DOS war anfällig für sogenannte ANSI-Bomben, die die Möglichkeiten von Escapesequenzen zum Ausführen von Schadcode ausnutzen.[7] Durch ein Patchen der ANSI.SYS-Datei per Debug-Befehl oder einen Austausch durch eine andere ANSI.SYS-Datei eines Drittherstellers, die für solche Angriffe nicht anfällig war, konnte dies umgangen werden.[8]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Peter Norton: The Peter Norton Programmer’s guide to the IBM PC. Microsoft Corp., 1985, S. 386 ff. (Volltext in der Google-Buchsuche).
  2. Hajo Schulz: ANSI-Treiber unter Windows ME. In: Heise online. 29. Januar 2001. Abgerufen am 9. März 2019.
  3. a b SKELIO.ASM. (ASM) In: MS-DOS 2.0 Quelltext. Microsoft, 1983, abgerufen am 8. März 2019 (englisch, die ANSI-Routinen finden sich ab Zeile 468.).
  4. Glossary. In: The BBS Library. Abgerufen am 9. März 2019 (englisch).
  5. Kermit 95 and QmodemPro for Windows 95. In: The Kermit Project. Columbia University, Juli 1996, abgerufen am 9. März 2019 (englisch): „QmodemPro appears to be primarily targeted at the BBS / ZMODEM user community. It has excellent ANSI terminal emulation, supports … ‘ANSI music’, and so forth, …“
  6. ANSI Music – The Technical Details. (TXT) Abgerufen am 9. März 2019 (englisch): „… two major comm programs that support ANSI music: TeliMate and Qmodem.“
  7. Brett Glass: How to safely defuse an ANSI bomb. In: InfoWorld. Band 16, Nr. 18. Popular Computing, Inc., 2. Mai 1994, S. 40, Help Desk (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “An ANSI bomb is a lesser-known and much more interesting beast than a virus. … An ANSI bomb is a sequence of characters, embedded in ASCII text, that causes ANSI.SYS to do something unexpected and potentially catastrophic. … Not long ago, PKWare, makers of PKZip, discovered that even a comment embedded in a ZIP file … could contain an ANSI bomb.”
  8. Martin Rösler: Kapitel 6: Häufig auftretende Fragen und ihre Antworten – Frage 1: Was ist eine ANSI-Bombe? (Frequently Asked Questions) In: FAQ der VIRUS.GER – Version 2.3. Virus Help Munich (VHM), 29. Juni 1995, abgerufen am 2. Juni 2023: „Die eleganteste Lösung ist das Patchen von ANSI.SYS, da das Key-Remap-Feature dadurch nicht völlig abgeschaltet wird.“