Worktool — eine Programmierhilfe
Drei nützliche Optionen zur Programmeingabe werden durch dieses Programm realisiert. Farbwahl, aktuelle Zeitangabe und Warnton bei mehr als 80 Zeichen Eingabe auf Tastendruck.
Wie der Name schon sagt, hilft das »Worktool« dem Programmierer bei der Eingabe seiner eigenen Programme. Mehrere Optionen, die ansonsten nur bei erheblich teureren Geräten oder Hardware-Erweiterungen zu finden sind, werden ohne Basicspeicherverlust vom Toolkit übernommen.
Mittels Funktionstasten werden folgende Erweiterungen angesprochen:
— F1: Rahmen, Innenteil und Cursor erscheinen in einer vorher von Ihnen festgelegten Farbkombination.
Beim Schreiben von Programmen oder deren Test wird die Farbkombination, die Sie zur Eingabe verwenden, oft durch das Programm geändert. Haben Sie die Worktoolerweiterung eingegeben, können Sie sich jetzt, nach dem Probelauf 20 Tastendrücke ersparen um Farbkombinationen, wie zum Beispiel braun-rot-violett in Ihre Lieblingskombination zu verwandeln.
— F3: Ausgabe der aktuellen Uhrzeit, oder einer Stoppuhr. Wollen Sie wissen wieviel Uhr es ist, oder wie lange Sie schon mit dem Toolkit arbeiten, so genügt ein Druck auf F3. Wie sonst nur bei Steckmodulen der oberen Preisklasse wird vom Computer in der Mitte der 1. Zeile die Zeit in reverser Darstellung ausgegeben. Jedoch nicht permanent, sondern nur solange die Taste gedrückt ist. Das hat den Vorteil, daß keine Bildschirmzeile verloren geht.
— F5 und F7: Falls der eine oder andere von Ihnen schon einmal am CBM 4032 gearbeitet hat, wird er bestimmt bemerkt haben, daß dieser eine praktische Eingabehilfe besitzt. Er gibt, wenn der Cursor eine bestimmte Spalte erreicht, einen Piepser aus. Diese Option wurde beim Worktool noch erheblich verbessert. Im Direktmodus gibt er jetzt immer einen hellen Ton (ähnlich Tastaturklick) aus, sobald der Cursor die Spalte 35 oder 75 erreicht. Im Programmeingabemodus dagegen wird bei 35 der Klick, bei 75 ein Sägezahnton, und bei 80 ein auf- und abschwellender Ton erzeugt. Jeder kennt das ungeheuer langwierige und nervenzermürbende Editieren einer falsch eingegebenen PRINT-Zeile. Gerade im Programmierrausch schreibt man oft über die maximale Zeilenlänge hinaus, und muß später zeitaufwendig ausbessern. Ist mit F5 die Tonoption eingeschaltet, gibt der Computer rechtzeitig die oben genannten »Erinnerungstöne« aus. Mit F7 läßt sich diese Funktion ausschalten (hebt das Klima beim Mittagsschlaf Ihrer Frau).
Im Programm selbst wurde weitgehend auf Steuerzeichen verzichtet, und stattdessen der CHR$ und POKE-Befehl verwendet. Die DATAs sind der Übersicht und der Arbeitsersparnis halber in hexadezimaler Form einzugeben und werden von einer Routine automatisch umgerechnet. Das Programm gibt bei Fehleingabe einen Checksumfehler mit der Angabe des betreffenden Datenblocks aus. Die Funktionen einzelner Abschnitte sind in REM-Zeilen kurz umrissen. Das Basic-Programm benötigt 3k Speicher. Nachdem Sie Ihre Eingaben gemacht haben, löscht sich der Basic-Teil selbst und nur noch zirka 250 Bytes im abgeteilten Maschinensprachespeicher bei $C000 sind nötig. Es ist also der gesamte Basic-RAM frei verfügbar.
(Ulrich Grothaus / rg)10-110 | Ausgabe von Kopf und Menü |
120-140 | Eingabe der gewünschten Farbkombinationen |
220 | Farbwerte für Maschinenprogramm merken |
230 | Eingabe der aktuellen Uhrzeit beziehungsweise wenn nur RETURN der Nullstellung der Stoppuhr |
240 | diese Funktion rechnet den Dezimalwert in den TOD-BCD-Wert um |
250-280 | Auswerten des Zeitstrings, Einlesen der Werte in die CIAs und initialisieren der TOD Register, sowie starten der Uhr |
260-410 | Einlesen der Vorroutine und des Hauptteils sowie Start der Vorroutine. Die GOSUBs springen zum Umrechnen und Einpoketeil |
490 | Mit dem POKE 792, 193 wird das Low- byte des NMI-Interruptvektors auf einen RTI gelenkt. Dadurch ist die RESTORE- Taste ausgeschaltet, was ein Zurücksetzen der unteren Pages verhindert. Im Bedarfsfall könnten Sie dies durch Löschen der Zeile oder nachträglich mit POKE792,71 rückgängig machen. |
500-590 | Kurze Erklärungen und Abfrage, ob sich das Basic-Programm löschen kann. Geben Sie »N« ein, beginnt es von vorne. |
660-690 | Ausgabe des Kopfes |
700-710 | Sobald eine Taste gedrückt wird, löscht sich der Bildschirm, der Basic-Teil, und das Maschinenprogramm wird gestartet. Ferner wird der Bildschirm gelöscht, so daß der gesamte Bildschirm zum Programmieren frei ist und kein Ausgabekopf stört. |
710 | Die Schleife dient auf recht unkonventionelle Weise dazu, das Basic-Programm zu löschen, aber trotzdem noch den SYS abzuarbeiten. |
720-760 | Einleseroutine für den 1. Maschinenspracheteil. Zeile 730 und 740 rechnen die hexadezimalen DATAs in Dezimalzahlen von 0 bis 255 um. |
770-790 | DieseDATA-Zeilen enthalten den 1. Teil des Maschinenprogramms. |
800-840 | Einleseroutine für den 2. Maschinenspracheteil. |
850-1180 | Diese DATA-Zeilen enthalten das Interruptprogramm. |
$ C000-C00D | Der lnterrruptvektor wird auf das Worktool zusätzlich zur normalen Interruptroutine des Betriebssystems jede sechzigstel Sekunde abgearbeitet wird. |
$ C00E-C03A | Hier wird entschieden ob aufgrund einer gedrückten Funktionstaste oder eines Registerwertes in ein Unterprogramm verzweigt werden soll. Am Ende dieses Teils beziehungsweise einer aufgerufenen Unterroutine wird die normale Interruptroutine angesprungen. |
$C040-C052 | Falls F1 gedrückt ist, setzt diese Routine die Farbregister auf den eingestellten Wert, das heißt der Bildschirm erscheint in den von Ihnen gewünschten Farben. |
$C057-C08E | Wenn F3 gedrückt ist, werden die TOD- Register ausgewertet und die Zeit aktualisiert beziehungsweise ausgegeben. Dies hat gegenüber ähnlichen Programmen den Vorteil daß Sie die Zeit bei ihrer Programmeingabe überschreiben können, was bei der Ausgabe der Zeit im Interrupt nicht möglich gewesen wäre. Sie könnten ansonsten die 1. Bildschirmzeilen nicht benutzen, weil das einen Syntax Error hervorrufen würde. |
$ C091-C0A6 | Die derzeitige Cursorposition wird abgefragt und bei Bedarf, sofern Sie diese Option aktiviert haben, in eine Tonausgaberoutine gesprungen. |
$ C0AD-C109 | In diesem Teil werden die verschiedenen Töne ausgegeben. |