33. Čas: TIME, TIME$, PAUSE

Na čo to je

V kapitole 18 sa čakalo zápisom do adresy 20 a slučkou s PEEK. Turbo-BASIC XL má na hodiny Atari pohodlné slová: koľko času uplynulo a počkaj.

Ako sa to píše

ZápisČo robí
TIMEfunkcia: počet päťdesiatin sekundy od zapnutia počítača
TIME$funkcia: ten istý čas ako text HHMMSS – hodiny, minúty, sekundy
PAUSE npríkaz: počkaj n päťdesiatin sekundy

Päťdesiatina sekundy je čas, za ktorý Atari nakreslí jeden obraz na televízore. PAUSE 50 je teda sekunda, PAUSE 25 pol sekundy, PAUSE 1 najkratšia možná prestávka.

Celý program

Súbor examples/time.tbas:

Turbo Basic XL
10 REM TIME, TIME$ and PAUSE
20 T=TIME
30 FOR I=1 TO 100:X=SQR(I):NEXT I
40 PRINT "A hundred square roots took ";(TIME-T)/50;" s"
50 PRINT "Since the start: ";TIME$
60 FOR N=3 TO 1 STEP -1
70   PRINT N
80   PAUSE 50
90 NEXT N
100 PRINT "Go!"

Preklad a spustenie

Basic26 time.tbas --run

Hodiny v simulátore stoja, takže tento program patrí do emulátora: v simulátore by PAUSE nikdy neskončil.

Čo uvidíš

Na európskom Atari (PAL) toto:

A hundred square roots took 2.86 s
Since the start: 000003
3
2
1
Go!

Medzi číslami 3, 2, 1 a Go! je vždy presne sekunda.

Ako to funguje

PAUSE v hre

Hlavná slučka hry potrebuje rovnomerné tempo. PAUSE 1 alebo PAUSE 2 na jej konci ju „prilepí“ na obraz televízora: pohyb je plynulý a rovnako rýchly v interpreteri aj v preloženom programe.

Turbo Basic XL
100 DO
110   EXEC MOVE_ALL
120   EXEC DRAW_ALL
130   PAUSE 2
140 LOOP

Stopky

Turbo Basic XL
10 PRINT "Press a key to start":GET K
20 T=TIME
30 PRINT "Press a key to stop":GET K
40 PRINT (TIME-T)/50;" seconds"

Časté chyby

Čo sa staloČo sa stane
PAUSE bez číslaerror B26040: expected a value, found end of line – počet treba napísať
PAUSE alebo čakanie na TIME v simulátoreprogram neskončí: instruction limit reached
PAUSE 1 v dlhej slučketisíc prechodov je dvadsať sekúnd čakania
TIME sa berie ako sekundysú to päťdesiatiny; del 50
premenná sa volá TIMEerror B26017: a statement cannot start with TIME – je to meno funkcie
americké Atari (NTSC)obraz sa tam kreslí 60-krát za sekundu, takže PAUSE 50 je o šestinu kratšia

Vyskúšaj si

  1. Zmeraj, ako dlho trvá slučka FOR I=1 TO 5000:NEXT I.
  2. Napíš odpočítavanie od 10 do 0, pri nule pípni (PRINT CHR$(253)).
  3. Prepíš sound.abas z kapitoly 21: podprogram na čakanie nahraď príkazom PAUSE.

Zhrnutie

Späť: 32. Hľadanie v texte a klávesy · Ďalej: 34. Bloky pamäte