Vorsichtsmassnahmen Assembler-Programmierer, die aufwuchsen mit &ms-dos; und windows &windows; neigen oft dazu Shotcuts zu verwenden. Das Lesen der Tastaur-Scancodes und das direkte Schreiben in den Grafikspeicher sind zwei klassische Beispiele von Gewohnheiten, die unter &ms-dos; nicht verpönt sind, aber nicht als richtig angesehen werden. Warum dies? Sowohl das PC-BIOS als auch &ms-dos; sind notorisch langsam bei der Ausführung dieser Operationen. Sie mögen versucht sein ähnliche Angewohnheiten in der &unix;-Umgebung fortzuführen. Zum Beispiel habe ich eine Webseite gesehen, welche erklärt, wie man auf einem beliebten &unix;-Ableger die Tastatur-Scancodes verwendet. Das ist generell eine sehr schlechte Idee in einer &unix;-Umgebung! Lassen Sie mich erklären warum. &unix; ist geschützt Zum Einen mag es schlicht nicht möglich sein. &unix; läuft im Protected Mode. Nur der Kernel und Gerätetreiber dürfen direkt auf die Hardware zugreifen. Unter Umständen erlaubt es Ihnen ein bestimmter &unix;-Ableger Tastatur-Scancodes auszulesen, aber ein wirkliches &unix;-Betriebssystem wird dies zu verhindern wissen. Und falls eine Version es Ihnen erlaubt wird es eine andere nicht tun, daher kann eine sorgfältig erstellte Software über Nacht zu einem überkommenen Dinosaurier werden. &unix; ist eine Abstraktion Aber es gibt einen viel wichtigeren Grund, weshalb Sie nicht versuchen sollten, die Hardware direkt anzusprechen (natürlich nicht, wenn Sie einen Gerätetreiber schreiben), selbst auf den &unix;-ähnlichen Systemen, die es Ihnen erlauben: &unix; ist eine Abstraktion! Es gibt einen wichtigen Unterschied in der Design-Philosophie zwischen &ms-dos; und &unix;. &ms-dos; wurde entworfen als Einzelnutzer-System. Es läuft auf einem Rechner mit einer direkt angeschlossenen Tastatur und einem direkt angeschlossenem Bildschirm. Die Eingaben des Nutzers kommen nahezu immer von dieser Tastatur. Die Ausgabe Ihres Programmes erscheint fast immer auf diesem Bildschirm. Dies ist NIEMALS garantiert unter &unix;. Es ist sehr verbreitet für ein &unix;, daß der Nutzer seine Aus- und Eingaben kanalisiert und umleitet: &prompt.user; program1 | program2 | program3 > file1 Falls Sie eine Anwendung program2 geschrieben haben, kommt ihre Eingabe nicht von der Tastatur, sondern von der Ausgabe von program1. Gleichermassen geht Ihre Ausgabe nicht auf den Bildschirm, sondern wird zur Eingabe für program3, dessen Ausgabe wiederum in file1 endet. Aber es gibt noch mehr! Selbst wenn Sie sichergestellt haben, daß Ihre Eingabe und Ausgabe zum Terminal kommt bzw. gelangt, dann ist immer noch nicht garantiert, daß ihr Terminal ein PC ist: Es mag seinen Grafikspeicher nicht dort haben, wo Sie ihn erwarten, oder die Tastatur könnte keine PC-ähnlichen Scancodes erzeugen können. Es mag ein &macintosh; oder irgendein anderer Rechner sein. Sie mögen nun den Kopf schütteln: Mein Programm ist in PC-Assembler geschrieben, wie kann es auf einem &macintosh; laufen? Aber ich habe nicht gesagt, daß Ihr Programm auf &macintosh; läuft, nur sein Terminal mag ein &macintosh; sein. Unter &unix; muß der Terminal nicht direkt am Rechner angeschlossen sein, auf dem die Software läuft, er kann sgar auf einem anderen Kontinent sein oder sogar auf einem anderen Planeten. Es ist nicht ungewöhnlich, daß ein &macintosh;-Nutzer in Australien sich auf ein &unix;-System in Nordamerika (oder sonstwo) mittels telnet verbindet. Die Software läuft auf einem Rechner während das Terminal sich auf einem anderen Rechner befindet: Falls Sie versuchen sollten die Scancodes auszulesen werden Sie die falschen Eingaben erhalten! Das Gleiche gilt für jede andere Hardware: Eine Datei, welche Sie einlesen, mag auf einem Laufwerk sein, auf das Sie keinen direkten Zugriff haben. Eine Kamera, deren Bilder Sie auslesen, befindet sich möglicherweise in einem Space Shuttle, durch Satelliten mit Ihnen verbunden. Das sind die Gründe, weshalb Sie niemals unter &unix; Annahmen treffen dürfen, woher Ihre Daten kommen oder gehen. Lassen Sie immer das System den physischen Zugriff auf die Hardware regeln. Das sind Vorsichtsmassnahmen, keine absoluten Regeln. Ausnahmen sind möglich. Wenn zum Beispiel ein Texteditor bestimmt hat, daß er auf einer lokalen Maschine läuft, dann mag er die Tastatur-Scancodes direkt auslesen, um eine bessere Kontrolle zu gewährleisten. Ich erwähne diese Vorsichtsmassnahmen nicht, um Ihnen zu sagen, was sie tun oder lassen sollen, ich will Ihnen nur bewusst machen, daß es bestimmte Fallstrcike gibt, die Sie erwarten, wenn Sie soeben ihn &unix; von &ms-dos; angelangt sind. Kreative Menschen brechen oft Regeln und das ist in Ordnung, solange sie wissen welche Regeln und warum.