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]