Steuerzeichen
Ich weiß, der eine oder andere wird nun eine Nachbetrachtung des dritten Testflugs des Starships an dieser Stelle erwarten. Aber ihr wollt ja alle eine fundierte Analyse und die braucht Zeit. Bisher habe ich mir das Video noch nicht mal angesehen, vom Start habe ich, weil ich zu dem Zeitpunkt unterwegs war, nur das Verglühen gesehen. Daher gehe ich auch auf Kommentare zum Start im vorletzten Artikel nicht ein.
Zu meinem heutigen Thema kam ich durch meinen letzten Artikel über den weltweit schnellsten Z80 Rechner, denn mit Steuerzeichen muss ich mich nun dauernd bei der Arbeit auseinander setzen. Es ist wieder ein Ausflug in die Zeit als Programmierer noch Code eintippten und nicht jeder einen Computer hatte.
Es geht um Steuerzeichen. Der Begriff wird allen die erst in den letzten drei Jahrzehnten den ersten Computer erworben haben, nichts sagen. Aber es ist einer der Informatikbegriffe, der wirklich aussagekräftig: ein Steuerzechen ist ein Zeichen das bei einem Ausgabegerät etwas steuert.
Es ist die Universallösung für ein Problem, dass es von Anbeginn an gab, wenn man Geräte für verschiedene Computer anbieten wollte. Das waren zuerst Drucker für die sich bald einheitliche Schnittstellen wie die Centronics Schnittstelle etablierten, dann ab den Siebzigern Terminals. Ein Terminal sieht einem Computer ziemlich ähnlich, ist aber „dumm“. Das ist etwas übertrieben, verfügt jedes Terminal doch über einen Mikroprozessor, RAM und ROM. Es hat einen Bildschirm und Tastatur. Die Bezeichnung „dumm“ meint aber auf ihm läuft kein Programm, das der Anwender schreibt oder verändern kann. Es hat keinen Massenspeicher und nur Anschluss an einen Großrechner. Alle Eingaben, die er macht gehen an einen Großrechner der über eine Telefonleitung oder später Datenleitung mit dem Terminal verbunden ist.
Aber ich schweife ab, ich beginne mal mit den Druckern. Heute erwartet man vom Drucker das er Grafik, Dokumente in jeder beliebigen Schrift genauso wie am Bildschirm ausdruckt (WYSIWYG -What you see ist what you get) doch lange Zeit kamen Drucker nur zum einfachen Ausdrucken von Text in einer Type zum Einsatz. Doch selbst dafür musste man dem Drucker mitteilen, wann eine Zeile oder eine Seite zu Ende war. Das waren die ersten Steuerzeichen, die bis heute Bestand haben. Als Ende der Sechziger Jahre in den USA ein einheitlicher Zeichensatz geschaffen wurde (ASCII American Code für Information Interchange, vorher konnte die Codierung, das heißt welches Bitmuster für ein bestimmtes Zeichen stand, von Computerhersteller zu Computerhersteller wechseln) reservierte man die ersten 31 Codes für Steuerfunktionen. Einige sind bis heute populär:
Nul (Code 0): Dieses Steuerzeichen macht einfach gar nichts. Anders als beim Leerzeichen (Code 32) bewegt sich dabei der Druckkopf nicht.
Bell (Code 7): Dieses Steuerzeichen erzeugt einen Klingelton. So konnte der Drucker den Operateuren mitteilen, dass sie etwas machen mussten z.B. Papier nachlegen oder Ausdrucke abholen.
Backspace (BS, Code 8): Selbst wenn die damaligen Drucker nicht verschiedene Fonts beherrschten, so kam doch der Wunsch nach einfachen Formatierung auf, wie Unterstreichen oder Fett drucken oder durchstreichen. Das konnte man erreichen, wenn man ein Zeichen druckte, dann um einen Schritt zurückging und noch ein Zeichen druckte. Backspace hatte genau diese Funktio: es bewegte den Druckkopf um eine Stelle nach links. War das dasselbe Zeichen, so wurde es fett gedruckt, war es der Unterstrich (_) so wurde unterstrichen und war es ein Bindestrich (-) so wurde durchgestrichen. So konnte man auch etwas „aus-X-en“. Später wurde Backspace zur ersten Möglichkeit eine Eingabe zu korrigieren. Die Taste dafür gibt es bis heute: es ist die rechts oben mit dem Pfeil nach links.
Tab (Code 9): Wie jede Schreibmaschine hatten Drucker Tabulatoren um Tabellen vertikal untereinander auszurichten, mit Tab sprang man den nächsten Tabulator an, der meist fix alle 8 Zeichen gesetzt war.
Linefeed (LF, Code 10): Drucker müssen irgendwann mal eine neue Zeile drucken. Wenn die Zeile nicht bis zur letzten Position geht, so kann man mit Linefeed eine Zeile nach unten rücken, ohne die horizontale Position zu verändern. Das ist nützlich wenn man nicht nur Text, sondern Grafiken aus Zeichen druckt.
Formfeed (FF, Code 12): Analog zum Linefeed bewirkt Formfeed, dass der Drucker zur nächsten Seite vorrückt. Seiten konnten unterschiedlich lang sein, so war Computerpapier mit der Lochung am Rand länger als Din-A4 oder das amerikanische Letterformat.
Carriage Return (CR, Code 13): Bei Linefeed rückt der Drucker zwar eine Zeile nach unten, bleibt aber auf derselben horizontalen Position. Will man am Anfang der neuen Zeile drucken, so muss man den Druckkopf mit Carriage Return wieder an den Zeilenanfang schicken.
Diese Steuerzeichen waren durchdacht. Denn so konnte man mit Tab, Linefeed und Formfeed Zeit sparen, wenn der Druckkopf sich schnell bewegen konnte oder nur der Papiervorschub aktiv war. Als dann Text in Dateien abgespeichert wurde, übernahm man einige dieser Steuerzeichen, denn auch hier musste man wissen, wann eine Zeile zu Ende ist. Bis heute haben die Codes für Tab, CR und LF Bedeutung in reinen Textdateien und viele Drucker verstehen auch noch FF. In Dateien braucht man eigentlich keine zwei Zeichen für die Markierung eines Zeilenendes. So verwenden Unixsysteme nur CR. Andere Betriebssysteme, darunter CP/M, der Klon davon DOS und so auch Windows verwandten dagegen CR+LF, weil man so die Dokumente direkt an den Drucker schicken konnte ohne sie vorher durch ein Programm zu verarbeiten.
Als dann Drucker einzogen, die mehr konnten, als nur Text in einer Type zu drucken, kamen Druckerbeschreibungssprachen auf, Epson setzte den Standard für Matrixdrucker und HP den Standard für Laserdrucker, weil beide Produkte der Firmen sehr früh Marktbedeutung erreichten. Für die vielen Codes, die man fpr komplexe Drucker mit Fonts und Grafikfähigkeiten benötigte reichten die 32 Codes unter dem Leerzeichen nicht aus, so etablierte es sich, dass man eine Steuersequenz mit einem definierten Codes unter 32 einleitete und dann weitere folgten. Das war meist Escape (ESC, Code 27). ESC 4 selektiert bei einem Epson Matrixdrucker kursive Schrift, dagegen bei einem HP Laserjet ist es ESC (s1S.
Nun komme ich zu den Terminals. Sie ersetzten zuerst Fernschreiber die als Verbindung zu Großrechnern genutzt wurden. Dabei tippte man etwas ein, was nicht nur ausgedruckt, sondern auch zum Großrechner geschickt wurde, die Antwort wurde ebenfalls ausgedruckt. Ein Terminal hatte dagegen einen Bildschirm und eine Tastatur. Das ergab neue Möglichkeiten. Man konnte Ausgabebereich des Großrechners von der Eingabezone trennen. Es war mit Cursortasten auch möglich, etwas zu editieren, wenn man sich vertippt hatte, ohne alles neu einzugeben. Für die Ansteuerung des Cursors und Editfunktionen musste es aber Funktionen geben. So entwickelte man auch für sie Steuercodes, die dann in den auszugebenden Text eingebaut wurden. Aber nicht nur die Ausgabe brauchte Steuercodes, auch die Tastatur benötigte welche. Genormt waren ja nur die druckbaren Zeichen, welchen Code sollte eine Cursor- oder Funktionstaste absetzen? Auch hier gab es bald Standards.
Damit verlasse ich nun aber die Welt der Großrechner und Terminals. Als die Microcomputer aufkamen, gab es prinzipiell zwei Methoden wie Anwendungsprogramme die Bildschirmsteuerung und Abfrage der Tastatur handeln konnten. Sie konnten die Hardware abfragen und direkt ansteuern, dann lief das Programm nur auf diesem Rechner. Das ging, wenn die Plattform weit verbreitet war, wie die von Apple. Ansonsten musste der Programmierer der Software dafür Sorge tragen, das er es für verschiedene Plattformen auslegte, zum Beispiel, indem er eine standardisierte Sprungleiste vorhersah, in der er zur Anpassung nur die richtigen Hardareadressen eintrug. Aufgrund aber spezifischen Faktoren (kommt bei der Cursorsteuerung die Zeile oder Spalte zuerst? Hat die erste Zeile die Nummer 0 oder 1 …) war das nicht einfach. Eines der ersten Textverarbeitungsprogramme war Electric Pencil. Der Autor passte es über 100-mal an verschiedene Rechner an. Vielleicht ein Grund, warum er dann die Weiterentwicklung von Electric Pencil einstellte.
Mit der Einführung eines Betriebssystems das plattformübergreifend a – CP/M – wurden auch Steuerzeichen gang und gäbe bei Microcomputern. CP/M verwandte praktisch keine Steuerzeichen, außer einigen für das Editieren der Eingabe. Es gab aber alle Steuerzeichen in einem Text weiter. Programme die bildschirmorientiertes Arbeiten boten, wie Turbo Pascal, Wordstar oder Multiplan hatten dann ein Installationsprogramm, in denen man in einer Tabelle die Codes für die Steuerzeichen ablegen konnte. Manche erlaubten auch das Anpassen der Tastatur, oft wurde aber eine Standardsteuerung, die nur die unteren drei Reihen einer QWRTY Tastatur nutzte und die Controltaste nutzte, um den Code zu übertragen eingesetzt. Wer damit aufgewachsen ist kennt die Codes bis heute – Wort suchen? CTRL-Q CTRL F. Den Text speichern?: CTRL-K CTRL-S), habe ich bis heute behalten. Diese Codes führte Wordstar ein, die meisten Programme übernahmen diesen Standard.
Da viele Rechner anfangs auch verkauft wurden als Alternative zum Terminal mit der Möglichkeit ihn auch Stand-Alone zu nutzen, setzten sich Steuerzeichen bei ihnen schnell durch. Dazu brauchte der PC nur eine serielle Schnittstelle und ein Modem/Akkustikkoppler. Auch mein Computer CPC 464 hatte solche Steuerzeichen, obwohl man bei der Programmierung in BASIC eigene Befehle für die Bildschirmsteuerung hat, aber so lief auf ihm auch CP/M.
Selbst der IBM bot so eine Terminalemulation noch, hier war es der Ansi-Treiber, der ein VT100 Terminal emulierte. IBM selbst wollte es seinen Kunden nicht so einfach machen. Sie mussten eine Zusatzkarte kaufen, welche ihren PC zu einem IBM 3270 Terminal verwandelte. Mit MS-DOS begann aber auch der Niedergang der Steuerzeichen. Denn bald verschwanden reine MS-DOS kompatible Rechner vom Markt. Das waren Rechner wie drr Sirius mit der 8086/8088 CPU, aber anderer Architektur als der IBM PC. Sie waren unter MS-DOS kompatible, griff ein Programm aber direkt auf die PC-Hardware zu, was damals üblich warum etwas Zeit zu sparen lief das Programm nicht auf diesen Rechnern. Die Zahl der verschiedenen Hersteller von Microcomputern und damit auch die Zahl der Systeme, nahm in den achtziger Jahren ab, am Ende des Jahrzehnts gab es in dem Bereich der PC (nicht Heimcomputer) gerade noch vier Plattformen: Amiga, Atari ST, Macintosh und IBM-kompatible.
Heute haben Steuerzeichen eine Renaissance, da viele Kits die Hobby-Bastler konzipieren CP/M einsetzen, das so konzipiert wurde das Eingabe/Ausgabegerät vom Computer getrennt sein können. In diesem Falle ist das Ein-/Ausgabegerät ein PC mit einer Terminalemulation und der Rechner hängt an einem USB Port. Das bedeutet der Entwickler kann sich auf die Hardware konzentrieren und muss nur CP/M leicht anpassen aber nicht selbst ein Betriebssystem entwickeln. Und wie in den achtzigern muss man bei Programmen Installationsroutinen durchlaufen. Nicht ganz einfach. Bei Turbo Pascal 3.02 stimmte immer etwas in dem Hervorheben von Blöcken nicht, bis ich schließlich die korrekte Sequenz für das Abschalten für ein VT100 Terminal, das von Tera Term emuliert wird, fand.
Das System mit den Steuerzeichen und die Benutzung der ersten 32 Zeichen (2 hoch 5 Bits) wurde schon beim guten alten Fernschreiber benutzt.
Zum Beispiel die CR und LF und das Umschaltzeichen um von der Buchstabendarstellung auf Zahlen- und Sonderzeichendarstellung umzuschalten.
Denn 26 Buchstaben + 10 Zahlen + Satzzeichen überstiegen die 32 Signale, die ein Fernschreibgerät überträgt.
Weiß Ralf mit Z aus Wikipedia