← TOS 09 / 1990

Tips und Tricks für Programmierer

Programmieren

Die Uhr im Ein-Sekunden-Takt

Die Uhr in GFA-Basic über »PRINT TIMER« arbeitet nur im Zwei-Sekunden-Takt. Durch einen kleinen Trick erhalten Sie die Zeit auch sekundenweise: Setzen Sie mit »EVERY 200 ...« den 200-Hz-Interrupt auf ihre eigene Routine (uhr).

Diese wird nun jede Sekunde aufgerufen und erzeugt die aktuelle Uhrzeit ti$:

EVERY 200 GOSUB uhr ! JEDE SEKUNDE DO ON MENU LOOP PROCEDURE uhr IF TIME$= ti$ AND ADD (VAL(RIGHTS (ti$,1)),1)<10 MID$(ti$,8)„RIGHTS(STR$(ADD(VAL(RIGHTS(ti$,1)),1)),1) ELSE ti$=,.TIME$ ENDIF PRINT AT(24,23) ; "UHRZEIT: ";ti$; RETURN

(Sandro Lucifora/ba)

Wo bin ich?

Wenige Programmierer beachten, daß es auch Anwender gibt, die von Festplatte oder RAM-Disk laden. Viele suchen Nachladedateien nur auf Laufwerk A. Das GEMDOS stellt jedoch eine Funktion zur Verfügung, mit der Sie das aktuelle Laufwerk erfragen. Mit einem kleinen Zusatz ermitteln Sie in GFA-Basic auch den kompletten aktuellen Pfad:

pfd$=CHR$ ( GEMDOS (25 ) +65) +":"+DIR$ ( 0 ) +"\"

Diese Zeile sollten Sie auch verwenden, wenn Sie eine Datei nachladen oder die Dateiauswahlbox aufrufen. Festplattenbesitzer werden Ihnen dankbar sein.

(Sandro Lucifora/ba)

»Fließ«-Text

Mit nur wenigen Zeilen Programmieraufwand lassen sich in Omikron-Basic tolle Grafikeffekte realisieren, so in's Bild fließende Grafiktexte. Dazu verwenden Sie eine Schleife, die die X-Koordinaten des darzustellenden Textes durchläuft. Wenn die Text-Anweisung z. B. »TEXT 50, 200, 'Beispiel'« lautet, sieht die Schleife so aus:

1: FOR Variable= 40 to 210 2: CLIP Variable, 140 to Variable,70 3: TEXT 50, 200, 'Beispiel' 4: NEXT Variable

In Zeile 2 begrenzen wir die Bildschirmausgabe auf eine 1 Pixel breite Linie, die in der Höhe 20 Pixel (oben und unten je 10) mehr haben sollte als der Text. Nun geben wir den Text in Zeile 3 aus und schließen die Schleife. Das Programm stellt immer nur einen 1 Pixel breiten Ausschnitt von links nach rechts wandernd dar. Dadurch entsteht der Eindruck, man würde ein unsichtbares Blatt, das über dem Text liegt, nach rechts wegziehen. Das geht natürlich auch in andere Richtungen wie das Beispielprogramm »TEXTSCR.BAS« zeigt.

(Markus Gotha/ba)

Geschwindigkeit ist keine Hexerei

Nach und nach sind in GFA-Basic immer mehr Befehle hinzugekommen, die den ST in Sachen Geschwindigkeit immer besser ausnutzen:

  • Die Befehle für Integerzahlen SUB, ADD,MUL,DIV beschleunigen die Rechenleistung gegenüber den normalen Operanden -, +, *, / erheblich.
  • Bei der Subtraktion oder Addition der Zahl 1 sind die Befehle DEC(-1) und INC(+1) schneller.
  • Benötigen Sie den ASCII-Wert eines Zeichen plus eins bzw. minus eins, so verwenden Sie statt »PRINT ASC(CHR$(a$)+1)« den Befehl »PRINT SUCC(a$)« und statt »PRINT ASC(CHR$(a$)-1)« den Befehl »PRINT PRED(a$)«.
  • Statt der Befehle PRINT und INPUT verwenden Sie beim Arbeiten mit ASCII-Dateien und Datenträgern die Befehle STORE und RECALL.
  • Beim Auslesen von nicht-lesegeschützten Speicherstellen sind die geschweiften Klammern { } sehr schnell. Verwenden Sie deswegen statt PEEK den Befehl BYTE{x}, statt DPEEKden Befehl WORD{x} und statt LPEEK den Befehl {x}. (Sandro Lucifora/ba)