Return to ASCII

Screenhot "Matrix" als ASCII-Film

Der American Standard Code for Information Interchange wird 50 Jahre alt

Der folgende Beitrag ist vor 2021 erschienen. Unsere Redaktion hat seither ein neues Leitbild und redaktionelle Standards. Weitere Informationen finden Sie hier.

Am 17. Juni 1963 wurde ASCII standardisiert. Über Jahrzehnte hinweg bildete er die Grundlage für die Kodierung von Schrift- und Steuerzeichen in Computern und beendete das babylonische Zeichen-Wirrwarr, das zuvor herrschte. Heute abgelöst von - oder besser: eingegangen in - Unicode ist ASCII zur Retro-Kunstform aufgestiegen. Seine Ursprünge, damalige und heutige Verwendungsweisen sagen viel über die Frage, wie Maschinen und Menschen mit Zeichen umgehen. Ein paar Gedanken anlässlich des 50. Geburtstags

In welcher Beziehung steht eigentlich ein Tisch zu seinem Namen? Gibt es eine natürlich Verbindung zwischen einem Zeichen - etwa einem Laut - und dem, was es bezeichnet? Scheinbar nicht, sonst würde der Tisch überall auf der Welt mit demselben Wort bezeichnet werden. Die Verbindung zwischen einem Ding und seinem Namen ist willkürlich - aber trotz ihres zufälligen Ursprungs bleibt sie doch weitgehend stabil. Man hat sich in den Regionen, in welchen Deutsch gesprochen wird, darauf geeinigt, den Tisch mit dem Wort Tisch zu benennen. Zwar gibt es Aussprachevarianten aber egal ob in Nord-, Süd, Ost- oder Westdeutschland: Wenn das Wort Tisch aufgeschrieben wird, weiß jeder, was gemeint ist, weil dann ein konventionalisierter Code (das lateinische Alphabet) zur Anwendung kommt.

Was sprachlich zwischen Menschen ausgehandelt ist, ist aufgrund der Signalvielfalt (Schrift, Laut, Icon, Diagramm, ...) viel komplizierter als das, was für die Kommunikation zwischen Maschinen - insbesondere Computern - festgelegt werden muss. Denn im Gegensatz zum Menschen verarbeiten Computer nur eine Sorte von Signalen: Spannungsimpulse. Und für diese gilt, dass dem Computer nur zwei Zeichen bekannt sind, das für "Ein" und "Aus". Diese beiden Zustände hat man bereits in der Frühgeschichte des Digitalcomputers auf ein Zahlensystem übertragen, bei dem "Ein" für die Ziffer 1 und "Aus" für die Ziffer 0 steht. Damit war ein grundlegender Code zur Verständigung von Computern geschaffen.

Die Probleme begannen in dem Moment, wo der Mensch ins Spiel kam, der von seiner eigenen sprachlichen Verfassung her komplexere Zeichensysteme als das binäre benötigt, um Informationen ohne große Übersetzungsarbeit verstehen zu können. Von den Pionieren des Computerzeitalters - etwa John von Neumann - wird zwar behauptet, sie hätten Computerausdrucke ausschließlich in binären Zahlenkolonnen gelesen und verstanden, doch selbst Assembler-Programmierern, die sich der signalverarbeitenden Hardware maximal nähern, fällt es schwer, in diesem Zeichensystem zu arbeiten geschweige denn zu denken.

Bits und Codes

Die Lösung des Problems, zwischen Menschen und Maschinen zu vermitteln, ist ein paar Jahrzehnte älter als der Computer selbst. In der zweiten Hälfte des 19. Jahrhunderts war es die Telegrafie, die ebenfalls ein sehr reduziertes Signalrepertoir besaß, das übersetzt werden musste. Weil sich das ternäre Zeichensystem des so genannten "Morse-Codes" (kurzes Signal, langes Signal, Pause-Signal) zwar schon bedingt für menschliches Verstehen eignete, von Maschinen allerdings gern fehlinterpretiert wurde (Wie lang muss ein langes Signal sein, um nicht als kurz verstanden zu werden?) dachte sich um 1870 Émil Baudot ein duales System (Signal, kein Signal) aus, bei dem mit fünf Zeichen nicht nur das gesamte Alphabet, sondern auch noch Ziffern, Satzzeichen und Steuerzeichen, die die empfangende Maschine in bestimmte Zustände versetzen können ("nächste Zeile", "Glocke läuten", …), aus. Der so genannte "Baudot-Code" als fünf Bit breiter Zeichencode war geboren.

Eine weitere Vorarbeit für die Verwendung digitaler Codes in Computern wurde 1901 ersonnen. Der neuseeländische Erfinder Donald Murray konzipierte damals eine Schreibmaschine, mit der sich die eingegebenen Zeichen automatisch in Baudot-Code umwandeln ließen. Dieser Code wurde von der Maschine auf Papierstreifen gestanzt und konnte auch direkt als elektrisches Signal versendet werden. Noch bis weit ins 20. Jahrhundert hinein wurden solche "Teletypewriter" als Ein- und Ausgabegeräte für Computer genutzt. (Monitore haben sich hingegen erst Ende der 1970er-Jahre das Ausgabemedium für Computer verbreitet.)

Und auch der Code selbst - in leicht abgewandelter Form - wurde noch in den 1970er-Jahren für das Schreiben und Lesen von Lochstreifen genutzt. Neben Fernschreiber-Mitteilungen waren es vor allem Computerdaten, die auf solche Streifen gestanzt wurden. Das allererste kommerzielle Microcomputer-BASIC für den Altair 8800 wurde von der 1975 gerade im Entstehen begriffenen Firma "Micro-Soft" auf diesem Medium (und in einem 5-Bit breiten Code) publiziert. Doch zu dieser Zeit genügte diese Zeichenbreite eigentlich schon längst nicht mehr. Die Mainframes der Firma IBM hatten bereits Ende der 1950er-Jahre mehr zu sagen, als sich 32 Zeichen (so viele Kombinationen lassen sich mit 5 Bit herstellen) auszudrücken und auszudrucken war.

Daher lancierte IBM den Extended Binary Coded Decimals Interchange Code, kurz EBCDIC, der nunmehr 8 Bit zur Zeichenkodierung bereitstellte. Die daraus resultierende Zeichentabelle von 256 möglichen Zeichen enthielt neben den Groß- und Kleinbuchstaben, Ziffern, Satzzeichen, Operatoren und Steuerzeichen (Backspace, Escape, Ende der Übertragung, …) - etliche Plätze in der Tabelle blieben jedoch leer. Für Fremdsprachen, die andere Sonderzeichen enthielten (wie deutsche Umlaute, spanische Tilden oder französische Akzente) gab es eigene EBCDIC-Varianten. Dies war insofern unproblematisch, als Computer zu dieser Zeit noch nicht im "internationalen Dialog" miteinander standen und der Markt Ende der 1950er-Jahre ohnehin fast vollständig von IBM-Computern dominiert war.

Die Geburt von ASCII

Mit der Popularisierung des Computers in den 1960er-Jahren - allem voran der Ausstattung von Universitäten mit Großrechnern - wurde der proprietäre EBCDIC-Code jedoch zu einem Problem. Wieder einmal gab es nicht nur mehr zu übertragen (als das, was die EBCDIC-Tabelle bereithielt), sondern auch konkurrierende Entwürfe, die regelrecht babylonische Zustände heraufzubeschwören drohten. Computer von Bull konnten sich nicht mit denen von IBM verständigen, Zuse-Rechner verstanden die UNIVACs nicht, Computer von Control Data hatten denen von General Electric nichts zu sagen usw. Ein für alle verbindlicher, standardisierter Code musste geschaffen werden.

Die Initiative ging von IBM aus. Der damals dort beschäftigte Robert Bemer hatte 1960 die Code-Vielfalt in seiner Survey of coded character representation analysiert und kritisiert hatte und wurde im Oktober desselben Jahres zusammen mit anderen IBM-Mitarbeitern und in Kooperation mit dem damaligen US-amerikanischen Büro für Standardisierungen beauftragt, einen solchen Code zu entwickeln. Das als "X3" getaufte Komitee veröffentlichte drei Jahre später den X3.4-1963-Code - die erste Version von ASCII. (Eine zweite Version von ASCII entstand 1967/8 und stellte die Basis aller späteren Adaptionen dar.)

Die erste ASCII-Zeichentabelle umfasste sieben Bit also 128 Zeichen. In dieser Menge fanden neben dem Zeichenvorrat von EBCDIC auch einige internationale Sonderzeichen und Steuerzeichen Platz. Insbesondere die Anordnungen der mit der Shift-Taste aufgerufenen Sonderzeichen, wie wir sie heute noch auf Computertastaturen finden, wurde damals bereits festgelegt. Aber auch Steuerzeichen, wie der Carriage Return (ASCII 013), die Bell (bzw. der Beep auf ASCII 007) oder die Escape-Taste (ASCII 027) wurde damals festgelegt.

Escape from the Computer

Mit der Escape-Taste hat es im ASCII-Universum etwas besonderes auf sich. Dient sie auch heute noch bei etlichen Anwenderprogrammen dazu, eine Prozedur abzubrechen (wenn etwa ein Requester die Eingaben "OK" und "Abbruch" enthält, wählt die CR-Taste das "OK" und die Escape-Taste den "Abbruch"), so hatte Robert Bemer ihr noch eine zweite Funktion zugeschrieben. Aufgrund der Tatsache, dass zur Zeit der Erfindung von ASCII Computer immer noch wesentlich seltener miteinander als mit anderen Geräten kommunizierten, musste eine Möglichkeit gefunden werden, die speziellen Funktionen solcher Geräte mithilfe des normalen Zeichenrepertoirs aufzurufen. Zwar enthält der ASCII-Zeichensatz bereits Codes, die etwa den Zeilenvorschub auf Monitoren und Druckern forcieren oder den Cursor/Druckkopf um eine Tabulatorstelle nach Rechts einrücken - wie aber verhält es sich zum Beispiel bei Nadeldruckern mit der Möglichkeit, einzelne Nadeln bitweise anzusteuern, um beispielsweise Liniengrafiken zu Papier zu bringen?

Um solche Spezialfunktionen aufzurufen, erfand Robert Bemer die so genannte Escape-Sequenz. Wurde an eine Peripherie-Gerät über den Kanal auf dem es mit dem Computer kommunizierte, das ASCII-Zeichen 027 ("ESC") gesandt und dann eine bestimmte Kombination anderer Zeichen, so konnte man vom Computer Sonderfunktionen dieses Gerätes aufrufen. Bei Druckern ließen sich auf diese Weise bequem neben den bereits angesprochenen Nadel-Adressierungen die Schriftbreiten, der Zeilendurchschuss oder die Druckqualität einstellen. Das Besondere daran war, dass die spezifischen Sequenzen vom Gerätehersteller vorgegeben werden konnten und sich nicht mehr nach dem Umfang oder den Möglichkeiten der Codetabelle richten mussten. Auf diese Weise wurde der ASCII-Standard zur Basis einer schier grenzenlosen Vielfalt an Steuerzeichenketten.

Das ver(sch)wendete achte Bit

Als in den 1970er-Jahren die Mikrocomputer und Minicomputer die Ära der Großrechner endgültig beendeten, setzte sich auch eine neue Rechengröße bei Dateneinheiten durch und ersetzte das bis dahin oft 18, 22 oder 36 Bit breite "Datenwort": Das "Byte" wurde fortan nach dem Bit und dem (4 Bit breiten) Nibble zur Einheitsgröße für Speicheradressen, Befehlswortgrößen, Busbreiten und anderem. Komfortablerweise passte der sieben Bit breite ASCII in ein Byte und ließ davon sogar noch die Hälfte frei. Die standardisierten ASCII-Zeichen bildeten im so genannten "8-Bit-Zeitalter" den kleinsten gemeinsamen Nenner, wenn Computer miteinander kommunizierten. Das achte Bit - also die Zeichen von 128 bis 255 - aber auch oft die Zeichen zwischen 0 und 26 nutzten die Hersteller der unterschiedlichen Computerplattformen, um darin eigene Zeichen unterzubringen.

Die Varianten waren vielfältig und ließen die Standard-ASCII-Zeichentabelle nicht immer unberührt. Commodore nutzte ab 1977 auf den hauseigenen Plattformen den CBM ASCII (auch PETSCII genannt), Atari implementierte 1979 die Variante ATASCII in ihre Computer, der TRS 80 nutzte das achte Bit für Semigrafik-Zeichen aus 2 mal 3 Pixeln (die übrigen beiden Bits wurden zur Kodierung des verwendeten Grafikmodus genutzt), Apple zog Mitte 1980er-Jahre für sein grafisches Betriebssystem Mac OS mit der Codetabelle Mac OS Roman nach … um nur die wichtigsten hauseigenen Versionen zu nennen.

Robert Bemer, der "Father of ASCII" und Erfinder der Escape-Sequenzen hat die Entwicklung bis zu seinem Tod im Jahre 2004 beobachtet, in Artikeln kommentiert und dazu beigetragen, dass ASCII Bestandteil späterer Codetabellen geblieben ist. Heute findet sich die ASCII-Tabelle noch als UTF-8 im mittlerweile als Standard genutzten Unicode wieder. ASCII selbst taucht darüber hinaus vor allem in der Kunst auf. Die Anfänge, mit Zeichensätzen Grafiken zu erstellen, reichen weit bis hinter die Konkrete Poesie zurück; computerisiert erreicht diese Kunstform jedoch erst mit ASCII und ab den 1970er-Jahren ihre Höhepunkte. Heute kann man neben solchen Bildern sogar ASCII-Filme sehen, ASCII-Spiele spielen und ASCII-Musikvideos bestaunen.

So, wie ASCII in den 1970er-Jahren maßgeblich dazu beigetragen hat, dass sich auch verschiedenste Computer bei der Datenfernübertragung verstehen konnten, bildet es heute den Ausgangspunkt für die Kodifizierung von am Internet angeschlossenen Maschinen. Und das sind bekanntermaßen bei weitem nicht mehr nur Computer. Vom Mobiltelefon zum Auto kommunizieren die Apparate heute mit einem Codestandard - dass sie sich dennoch oft genug weder untereinander noch mit ihren Nutzern verstehen, liegt wahrscheinlich aber nicht an der benutzten Zeichenbasis.