C-Kurs von Christoph Bach In diesem Teil habe ich ein winziges Utility auf teils unkonventionelle Weise programmiert. Das Programm zeigt den Speicherinhalt in hexadezimaler und in interner Darstellung an. Mit den Pfeiltasten kann man sich im Speicher bewegen. * Eine Zeile hoch + Eine Zeile runter = Eine Seite hoch - eine Seite runter Space und ESC verlassen das Programm, jede andere Taste erhöht die Adresse um eins. Das Programm wurde in zwei Teile gegliedert: die Anzeige am Bildschirm, und die Auswertung der Tastendrücke. Die Bildschirmanzeige: Zu Beginn wird der Bildschirm gelöscht und mit dem Titel und der Adresse beschriftet. Dabei kann man schön den Überlauf der Variablen, und die Darstellung von negativen Werten betrachten. Es folgen zwei ineinander verschachtelte for-Schleifen, die insgesamt 200 Zeichen auf den Bildschirm bringen. Die erste und schnelle Methode besteht darin, direkt in den Bildspeicher zu schreiben. Dessen Anfangsadresse steht in den Speicherzellen 88 und 89 (dezimal). Die Position am Bildschirm muß man dabei selbst berechnen. Die zweite langsamere Möglichkeit ist die mit printf(). Dabei hat man jedoch den Vorteil der formatierten Ausgabe. Um die Positionierung des Cursors muß man sich dabei auch nicht kümmern. Nach jeder geschriebenen Seite erfolgt ein Zeilenvorschub. Dem Programm wird die Adresse übergeben, ab der es die Daten anzeigen soll. Auf diese Weise werden keine globalen Variablen benötigt. Das Hauptprogramm: Nach der Deklaration der Variablen, wird die Anfangsadresse auf 0 gesetzt. Den linken Rand kann man mit poke(82,0) auf 0 setzen. Dann wird die erste Seite angezeigt. Die Tastaturabfrage: Mit der seltsamen for-Schleife wird eine REPEAT UNTIL Schleife simuliert. Die Variable c bekommt als Startwert das Zeichen B zugewiesen, es hätte auch jedes andere Zeichen sein können. Die Schleife wird abgebrochen, wenn die Bedingung c!=27 NICHT erfüllt ist (also die ESC-Taste gedrückt wurde s.u.). Die Schleifenvariable soll nicht regelmäßig erhöht werden, also bleibt dieser Parameter leer. So etwas geht nur in C. Jeder PASCAL-Compiler würde hier die Arbeit einstellen. Der Variablen c wird mit getkey() der letzte Tastendruck zugewiesen. War das die Leertaste, so wird die aktuelle Schleife (die for- Scleife) abgebrochen. Mit switch wird jetzt der Inhalt von c abgefragt, und der Wert von seite entsprechend geändert. Dabei gibt der default-Zweig an, was passieren soll, wenn keine der vorhergehenden case-Abfragen zutreffen. Anschließend wird die aktuelle Seite gezeigt. Jetzt sind wir am Ende der for- Schleife angekommen. Ist der Wert von c gleich 27, dann wird hier abgebrochen. Anregungen: Man kann das Programm noch in viele Richtungen ausbauen: - Anzeige der ATASCI-Werte - Sprung zu einer bestimmten Adresse - Editieren des Speicherinhaltes - Speichern und Laden von Speicher- teilen etc. Ich wünsche Euch allen frohe Weihnachten und viel Spaß, auch mit Eurem Computer.