PAUSE (TSB)
PAUSE (TSB) | |
Syntax: | PAUSE [<string>,] <sek> |
Parameter | |
<string>: Kommentarstring | |
<sek>: 0..255 (Sekunden) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Bildschirmkontrolle |
Aufgabe: | Programm für eine festgelegte Zeit anhalten |
Abkürzung: | paU |
Token: | $64 $66 (100 102) |
Verwandte Befehle | |
keine |
Dieser Artikel beschreibt das TSB-Schlüsselwort PAUSE (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls PAUSE.
Typ: Anweisung Syntax: PAUSE [<string>,] <sek>
PAUSE ist dazu gedacht, einen Bildschirm für eine bestimmte Anzahl von Sekunden auf jeden Fall sichtbar zu halten. Der Befehl hält ein laufendes Programmm also zeitkontrolliert an. Um eine einfache Möglichkeit zu haben, dem Benutzer ein solches Anhalten zu signalisieren, bietet PAUSE den optionalen <string>-Parameter an. Der String wird an der aktuellen Cursorposition ausgegeben. Nach der Ausgabe steht der Cursor dann hinter dem letzten Zeichen des Strings.
Eine Angabe von 0 als Wartezeit ist erlaubt, der Interpreter setzt dann seine Arbeit unverzüglich fort.
Die Wartezeit kann durch Betätigen einer beliebigen Taste (außer Shift, C= oder CTRL) abgebrochen werden.
Hinweise:
- Wenn man das aus Simons' Basic gewohnte Verhalten des Befehls bevorzugt (PAUSE reagiert nur auf Return ), gibt man in der Initialisierungsroutine seines Programms einmalig
POKE $B90E,$24
ein. Das in TSB normale Verhalten von PAUSE wird mitPOKE $B90E,$D0
wiederhergestellt (ab v2.31.113, vorher $A806). - Hat man PAUSE auf das Verhalten von Simons' BASIC umgestellt, ist es möglich, die Abbruchtaste anders als mit CHR$(13) zu belegen, ähnlich wie im PAUSE Beispiel 2 gezeigt. Nur muss man jetzt einen POKE in $B911 benutzen (früher $A809).
Beachten:
- Werte über 255 für <sek> werden akzeptiert, aber auf Byteformat reduziert. Der Interpreter führt intern ein (<sek> AND 255) durch.
- In TSB muss der Ausdruck für <sek> immer mit einer Ziffer beginnen, wenn kein Hinweis-String verwendet wird. Anders als bei PAUSE von Simons' Basic führen Zeichen mit einem PETSCII-Code kleiner als 48 ("0") oder größer als 57 ("9"), wie zum Beispiel ".", "+","$" bzw. "a" als Variablenname, sonst zu einem TYPE MISMATCH ERROR. Um dies zu vermeiden, gibt man PAUSE 0 + <ausdruck> ein.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Beispiel 1[Bearbeiten | Quelltext bearbeiten]
90 a$="Bitte warten": b$="Danke " 100 PRINT AT(23,23)"";: PAUSE a$,5 110 PRINT AT(23,23)"";: PAUSE b$,2 120 CLS
(in den Zeilen 100 und 110 wird in Simons'-Basic-Syntax ein Hinweis ausgegeben, nach einer Wartezeit von 5 Sekunden und schließlich nach 2 Sekunden der Screen gelöscht)
Beispiel 2[Bearbeiten | Quelltext bearbeiten]
Der Wert für die Pausenzeit wird immer auf eine Ganzzahl abgerundet. Deshalb macht es keinen Sinn, etwa PAUSE 0.9
einzugeben.
Tipp: Um Zeitspannen zu bemessen, die kürzer sind als eine Sekunde, verwendet man die Speicherstelle $C516. Sie wird von (T)SB 60-mal in der Sekunde erhöht, zählt also 60tel Sekunden. Will man z.B. zur Aufmerksamkeitssteigerung den Bildschirmrahmen kurz flackern lassen, geht man so vor:
1010 POKE $C516,0: BFLASH 5,2,11 1020 REPEAT: UNTIL PEEK($C516)>15: BFLASH OFF
Das Programm lässt den Rahmen für etwa eine Viertelsekunde mit schneller Frequenz zwischen Rot und Dunkel-grau blinken.
Beispiel 3[Bearbeiten | Quelltext bearbeiten]
In TSB v230122 ist der PAUSE-Befehl erweitert worden: die Pause kann nun mit einer beliebigen Eingabetaste statt nur mit <RETURN> abgebrochen werden. Das folgende Programm zeigt, wie dies dazu benutzt werden kann, eine Diashow zu erstellen. Nach PAUSE wird aus der Speicherstelle $C5 = 197 (letzte gedrückte Taste) der Tastaturcode der Abbruchtaste ermittelt. Davon abhängig können nun ähnlich wie nach GET Aktionen ausgeführt werden. Hier wird mit der Abfrage nach "d" der Diashow-Modus ein- bzw. ausgeschaltet oder das Programm mit "x" beendet.
100 B=0:.INIT 110 LOOP 120 PRINT AT(6,2+3*D)" --- " 130 USE AT(11,23)"BILD ##",B+1 140 IF D=0 THEN .GETKEY:ELSE .DIASHOW 150 END LOOP 160 END 180 REM --- 190 PROC .INIT 200 CLS 210 INSERT "+-+! !+-+",2,17,20,20,0 220 PRINTAT(1,1)"DIASHOW" 230 PRINTAT(4,1)"D = DIASHOW" 240 PRINTAT(5,1)" OFF/ON" 250 PRINTAT(7,1)"X = EXIT" 260 END PROC 270 REM --- 280 PROC .GETKEY 290 KEYGET A$ 300 IF A$="X" THEN CLS: END 310 IF A$="D" THEN DO 320 D=1 330 ELSE 340 B=(B+1)AND15 350 DONE 360 END PROC 370 REM --- 380 PROC .DIASHOW 390 PAUSE 3: G=PEEK(197) 400 IF G=23 THEN CLS:END 410 IF G=18 THEN DO 420 D=0 430 ELSE 440 B=(B+1)AND15: 450 DONE 460 END PROC
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!