Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor: Steven Vickers |
©2021 mgr Jerzy Wałaszek |
Rozkaz: PAUSE
Funkcja: INKEY$
SPIS TREŚCI |
ROZDZIAŁ 1 Przygotowanie ZX81
ROZDZIAŁ 2 Wydawanie komputerowi poleceń ROZDZIAŁ 3 Lekcja historii ROZDZIAŁ 4 Sinclair ZX81 jako kalkulator kieszonkowy ROZDZIAŁ 5 Funkcje ROZDZIAŁ 6 Zmienne ROZDZIAŁ 7 Łańcuchy tekstowe ROZDZIAŁ 8 Programowanie komputera ROZDZIAŁ 9 Dalsze programowanie komputera ROZDZIAŁ 10 Jeśli ... ROZDZIAŁ 11 Zestaw znaków ROZDZIAŁ 12 Pętle ROZDZIAŁ 13 Wolno i Szybko ROZDZIAŁ 14 Podprogramy ROZDZIAŁ 15 Uruchamianie programów ROZDZIAŁ 16 Pamięć taśmowa ROZDZIAŁ 17 Wyświetlanie z bajerami ROZDZIAŁ 18 Grafika ROZDZIAŁ 19 Czas i ruch ROZDZIAŁ 20 Drukarka dla ZX81 ROZDZIAŁ 21 Podłańcuchy ROZDZIAŁ 22 Tablice ROZDZIAŁ 23 Gdy zaczyna brakować pamięci ROZDZIAŁ 24 Liczenie na palcach ROZDZIAŁ 25 Jak pracuje komputer ROZDZIAŁ 26 Stosowanie kodu maszynowego ROZDZIAŁ 27 Organizacja pamięci ROZDZIAŁ 28 Zmienne systemowe DODATKI A Zestaw znaków B Numery komunikatów C ZX81 dla znających język BASIC |
Często będziesz chciał, aby twój program wykonywał się przez określony czas, a do tego celu przyda ci się polecenie PAUSE (szczególnie w trybie FAST):
PAUSE n
zatrzymuje obliczenia i wyświetla obraz przez n ramek telewizyjnych (przy 50 ramkach na sekundę lub 60 w Ameryce). Parametr n może przyjmować wartości do 32767, co daje ci nieco poniżej 11 minut; jeśli n jest większe, to oznacza wstrzymanie programu w nieskończoność.
Pauzę zawsze można przerwać naciskając jakiś klawisz (a spacja spowoduje dodatkowo przerwanie programu). Klawisz musisz wcisnąć po wystartowaniu polecenia PAUSE.
Na końcu pauzy ekran błyśnie.
Jeśli polecenie PAUSE jest zastosowane w programie, który będzie uruchomiony w trybie FAST na starym komputerze ZX80 z nową pamięcią 8K ROM, to po nim należy bezpośrednio zastosować polecenie POKE 16437,255. PAUSE wydaje się działać bez tego, lecz w wyniku cały twój program zostanie wymazany z pamięci.
Ten program wyświetla małą wskazówkę sekundową (właściwie będzie to kropka na krawędzi tarczy) zegara:
5 REM NAJPIERW TWORZYMY TARCZE ZEGARA
10
FOR N=1 TO 12
20 PRINT AT 10-10*COS (N/6*PI),10+10*SIN
(N/6*PI);N
30 NEXT N
35 REM TERAZ URUCHAMIAMY ZEGAR
40
FOR T=0 TO 10000
45 REM T JEST CZASEM W SEKUNDACH
50
LET A=T/30*PI
60 LET SX=21+18*SIN A
70
LET SY=22+18*COS A
200 PLOT SX,SY
300 PAUSE 42
310
POKE 16437,255
320 UNPLOT SX,SY
400 NEXT T
(opuść polecenie REM, chyba że posiadasz rozszerzenie pamięci).
Ten zegar będzie pracował przez około 2 3/4 godziny z powodu wiersza 40, lecz z łatwością możesz ten czas wydłużyć. Zwróć uwagę na sposób kontroli czasu w wierszu 300. Mógłbyś tam oczekiwać PAUSE 50, aby zegar tykał co sekundę, lecz obliczenia również zabierają nieco czasu i należy je uwzględnić. Najlepiej ustalić odpowiednią wartość metodą prób i błędów, porównując czas komputera z prawdziwym zegarkiem i modyfikując wiersz 300 aż uzyska się zgodność (nie możesz zrobić tego zbyt dokładnie; regulacja o jedną ramkę w jednej sekundzie daje 2% dokładność lub pół godziny na dobę).
Funkcja INKEY$ (nie posiadająca argumentu) czyta klawiaturę. Jeśli wciskasz dokładnie jeden klawisz (lub SHIFT i inny klawisz), to wynikiem jest znak otrzymywany z tego klawisza w trybie L ; w przeciwnym razie otrzymasz pusty łańcuch tekstowy. Znaki sterujące nie mają swoich zwykłych funkcji, lecz dają wynik jak CHR$ 118 dla NEWLINE - na wydruku otrzymasz znak "?".
Wypróbuj ten program, który pracuje jak maszyna do pisania:
10 IF INKEY$<>"" THEN GOTO 10
20 IF INKEY$=""
THEN GOTO 20
30 PRINT INKEY$;
40 GOTO 10
Tutaj wiersz 10 czeka, aż podniesiesz swój palec ponad klawiaturę, a wiersz 20 czeka, aż naciśniesz nowy klawisz.
Pamiętaj, iż w przeciwieństwie do INPUT, INKEY$ nie czeka na ciebie. Zatem nie musisz wciskać NEWLINE, lecz z drugiej strony, jeśli nic nie wpiszesz, to przegapisz swoją szansę.
Polecenie: PAUSE
Funkcja: INKEY$
![]() |
Zespół Przedmiotowy |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.