Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Autor: Steven Vickers |
©2024 mgr Jerzy Wałaszek |
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 |
Jeśli już znasz język BASIC, to nie powinieneś mieć zbytniego kłopotu w używaniu ZX81; lecz posiada on kilka swoich dziwactw.
(i) Słowa nie są literowane, lecz posiadają swoje własne klawisze - zajmujemy się tym w rozdziale 2 (przy słowach kluczowych i klawiszach z SHIFT) i w rozdziale 5 (przy nazwach funkcji). W tekście tej instrukcji takie słowa piszemy TŁUSTYM DRUKIEM.
(ii) W języku ZX81 BASIC brakuje poleceń READ, DATA i RESTORE (ale zobacz na ćwiczenie 3 rozdziału 22 zajmujące się tym), funkcji definiowanych przez użytkownika (FN i DEF, lecz czasami mozna użyć w tym charakterze VAL) oraz wierszy z wieloma poleceniami.
(iii) Obsługa łańcuchów jest pełna, lecz niestandardowa - zobacz do rozdziału 21, a również do rozdziału 22 (dla tablicy łańcuchów).
(iv) Zestaw znaków ZX81 jest zupełnie jego własny.
(v) Ogólnie obraz
telewizyjny nie jest liniowo odwzorowany w pamięci.
(vi) Jeśli przyzwyczaiłeś się do stosowania PEEK i POKE na innej maszynie, to pamiętaj, iż w ZX81 wszystkie adresy będą inne.
Maszyna pracuje w dwóch prędkościach zwanych trybem liczenia i wyświetlania oraz trybem szybkim.
W trybie liczenia i wyświetlania ciągle tworzony jest obraz telewizyjny, a obliczenia przeprowadzane są w pustych fragmentach obrazu u góry i u dołu.
W trybie szybkim obraz telewizyjny zostaje wyłączony i jest wyświetlany tylko po zakończeniu programu, podczas oczekiwania na dane dla INPUT i podczas wykonywania polecenia PAUSE. Tryb szybki pracuje około cztery razy szybciej i powinno się go używać w programach wykonujących dużo obliczeń a mało wydruku oraz przy wpisywaniu długich programów.
Przełączanie pomiędzy tymi trybami dokonuje się poleceniami FAST i SLOW.
Zestaw znaków ZX81 obejmuje nie tylko pojedyncze znaki (litery, cyfry, itp.), lecz również złożone hasła (słowa kluczowe, nazwy funkcji, itd. - piszemy je tutaj TŁUSTYM DRUKIEM), a wszystkie one są wprowadzane jednym przyciskiem klawiatury zamiast wpisywania litera po literze. Aby to umożliwić, niektóre klawisze mają do pięciu różnych znaczeń, udostępnianych częściowo przez klawisze z SHIFT (tj. z wciśniętym klawiszem SHIFT przy naciskaniu pożądanego klawisza) a częściowo przez wprowadzenie maszyny w różne tryby.
Tryb jest wskazywany przez kursor o kształcie litery w negatywie, która pokazuje miejsce wstawienia znaku wpisanego z klawiatury.
Tryb K (przy słowach kluczowych) występuje automatycznie, gdy komputer oczekuje rozkazu lub wiersza programu (a nie danych dla INPUT), a z jego pozycji w wierszu wie, że powinien oczekiwać numeru wiersza lub słowa kluczowego. Występuje on zwykle na samym początku wiersza, po kilku cyfrach na początku wiersza lub tuż za THEN. Jeśli nie zostanie wciśnięty klawisz SHIFT, to następny klawisz zostanie zinterpretowany albo jako słowo kluczowe (te są w większości wypisane ponad klawiszami) lub jako cyfra.
Tryb L (przy literach) zwykle występuje przy wszystkich pozostałych okazjach. Bez klawisza SHIFT następny klawisz zostanie zinterpretowany jako główny symbol na tym klawiszu.
W obu trybach K i L klawisze z SHIFT będą interpretowane jako drugorzędne, czerwone znaki w prawym górnym rogu klawisza.
Tryb F (przy funkcjach) występuje po naciśnięciu klawisza FUNCTION (NEWLINE z SHIFT) i trwa tylko przez jedno naciśnięcie klawiatury. Klawisz zostanie zinterpretowany jako nazwa funkcji, która jest wydrukowana pod klawiszem.
Tryb G przy symbolach graficznych włącza się po naciśnięciu klawisza GRAPHICS (9 z SHIFT) i trwa aż do ponownego naciśnięcia tego klawisza. Bez SHIFT klawisze są interpretowane jako negatywowe znaki z trybu L ; z SHIFT też, jeśli klawisz określa znak, lecz jeśli klawisz z SHIFT zwykle wprowadzałby wieloliterowe hasło, to w trybie graficznym daje symbol graficzny narysowany w prawym dolnym rogu klawisza.
Posiada 24 wiersze, każdy długi na 32 znaki, i jest podzielony na dwie części. Górna część ma co co najwyżej 22 wiersze i wyświetla albo listing programu, albo wyjście programu. Dolna część, co najmniej dwa wiersze, jest wykorzystywana do wprowadzania rozkazów, wierszy programu i danych dla INPUT, jak również do wyświetlania komunikatów.
Wejście z klawiatury: pojawia się w dolnej części ekranu w miarę wpisywania, przy czym każdy znak (pojedynczy symbol lub złożone hasło) jest wstawiany tuż przed kursorem. Kursor można przesuwać w lewo lub w prawo przy pomocy klawiszy (5 z SHIFT) lub (8 z SHIFT). Znak przed kursorem można usunąć za pomocą klawisza RUBOUT (0 z SHIFT) (uwaga - cały wiersz może zostać usunięty przez wpisanie EDIT (1 z SHIFT) a następnie NEWLINE; lub gdy są to dane dla INPUT przez naciśnięcie tylko EDIT).
Gdy zostanie naciśnięty klawisz NEWLINE, wiersz zostaje wykonany, wprowadzony do programu lub użyty dla INPUT o ile nie zawiera on błędu składniowego. W takim przypadku pojawia się symbol S tuż przed miejscem z błędem.
Gdy wiersze programu są wprowadzane, w górnej części ekranu wyświetlany jest listing. Sposób tworzenia tego listingu jest dosyć skomplikowany i wyjaśniony pełniej w rozdziale 9 przy ćwiczeniu 6. Ostatnio wprowadzony wiersz nazywany jest wierszem bieżącym i oznacza się go symbolem > , lecz można to zmienić używając klawiszy (6 z SHIFT) i (7 z SHIFT). Jeśli naciśnięty zostanie klawisz EDIT (1 z SHIFT), to wiersz bieżący zostaje sprowadzony w dół do dolnej części ekranu i może być poddany edycji.
Gdy jest wykonywany rozkaz lub uruchamiany program, ekran jest najpierw wymazywany, a następnie wynik jest wyświetlany w górnej części ekranu i pozostaje tam aż do wprowadzenia nowego wiersza programu, naciśnięcia NEWLINE w pustym wierszu lub naciśnięciu klawisza albo . W dolnej części pojawia się komunikat w postaci m/n, gdzie m jest kodem pokazującym co się stało (zobacz do dodatku B), a n jest numerem ostatnio wykonywanego wiersza - lub 0 dla rozkazu. Komunikat pozostaje na ekranie do czasu naciśnięcia dowolnego klawisza (i oznacza tryb K ).
W pewnych okolicznościach naciśnięcie klawisza SPACE może pełnić rolę BREAK zatrzymując komputer z komunikatem D. Zdarza się tak:
(i) na końcu polecenia, gdy program jest wykonywany,
(ii) gdy komputer szuka programu na taśmie,
(iii) gdy komputer używa drukarki (lub przypadkowo chce jej użyć, a jej nie ma).
Liczby są przechowywane z dokładnością 9, 10 cyfr. Największą możliwą liczbą jest około 1038, a najmniejszą (dodatnią) jest około 4 * 10-39.
Liczba jest przechowywana w ZX81 jako dwójkowa liczba zmiennoprzecinkowa z jednym bajtem cechy e (1 ≤ e ≤ 255) i czteroma bajtami mantysy m (½ ≤ m ≤ 1). Przedstawia to liczbę o wartości równej m * 2e-128.
Ponieważ ½ ≤ m ≤ 1, najbardziej znaczący bit mantysy m jest zawsze równy 1. Dlatego w zapisie zastępuje się go przez bit znaku - 0 dla liczb dodatnich i 1 dla ujemnych.
Zero posiada specjalny zapis, w którym wszystkie 5 bajtów jest równe 0.
Zmienne liczbowe posiadają nazwy o dowolnej długości, rozpoczynającymi się od litery i zawierającymi litery i cyfry. Wszystkie są znaczące, zatem przykładowo LONGNAME i LONGNAMETOO są różnymi nazwami. Spacje w nazwach są ignorowane.
Zmienne sterujące dla pętli FOR-NEXT posiadają nazwy zbudowane z pojedynczej litery.
Tablice liczbowe posiadają jednoliterowe nazwy, które mogą się pokrywać z nazwami zmiennych prostych. Mogą posiadać dowolnie wiele wymiarów o dowolnym rozmiarze. Indeksy rozpoczynają się od 1.
Łańcuchy mogą posiadać zupełnie dowolną długość. Nazwa łańcucha składa się z pojedynczej litery oraz znaku $.
Tablice łańcuchów mogą posiadać dowolnie wiele wymiarów o dowolnym rozmiarze. Nazwą jest pojedyncza litera oraz znak $ i nie może się pokrywać z nazwą łańcucha. Wszystkie łańcuchy w danej tablicy posiadają taką samą i niezmienną długość określoną przez dodatkowy, końcowy wymiar w poleceniu DIM. Indeksy rozpoczynają się od 1.
Slicing: podłańcuchy łańcuchów mogą być tworzone za pomocą odpowiednich operacji łańcuchowych - tzw. slicerów.
Slicer może być:
(i) pusty
(ii) wyrażeniem liczbowym
(iii) opcjonalnym wyrażeniem liczbowym TO opcjonalnym wyrażeniem liczbowym.
Stosuje się go przy wyrażaniu podłańcucha albo przez:
(a) wyrażenie łańcuchowe (slicer)
albo przez
(b) tablica łańcuchowa (indeks,...,indeks, slicer)
co oznacza to samo co
tablica łańcuchowa (indeks,...,indeks)(slicer)
Przy (a) załóżmy, iż wyrażenie łańcuchowe posiada wartość S$.
Jeśli slicer jest pusty, to wynikiem jest S$ traktowane jako podłańcuch obejmujący całą zmienną S$.
Jeśli slicer jest wyrażeniem liczbowym o wartości m, to wynikiem jest m-ty znak zmiennej S$ (podłańcuch o długości 1).
Jeśli slicer ma postać (iii), to załóżmy, iż pierwsze wyrażenie liczbowe posiada wartość m (standardową wartością jest 1) a drugie n (standardową wartością jest długość S$).
Jeśli 1 ≤ m ≤ n ≤ długość S$, to wynikiem jest podłańcuch S$ rozpoczynający się od m-tego znaku i kończący się na n-tym znaku.
Jeśli 0 ≤ n ≤ m, to wynikiem jest pusty łańcuch.
W przeciwnym razie powstaje błąd 3.
Slicing jest wykonywany przed wyliczaniem funkcji i operacji, chyba że nawiasy każą inaczej.
Podłańcuchom można przypisywać dane poleceniem LET.
Argument funkcji nie wymaga nawiasów, jeśli jest on stałą lub (być może indeksowaną lub poddaną slicingowi) zmienną.
Funkcja | Rodzaj argumentu (x) | Wynik |
ABS | liczba | Wartość bezwzględna, moduł liczby |
ACS | liczba | arcus cosinus w radianach. Błąd A, jeśli x nie jest w zakresie od -1 do +1. |
AND | dwuargumentowa operacja, prawy argument zawsze jest liczbą | Lewy argument liczbowy: A AND B = A, jeśli B ≠ 0, 0 jeśli B = 0 Lewy argument łańcuchowy: A$ AND B = A$, jeśli B ≠ 0, "" jeśli B = 0 |
ASN | liczba | arcus sinus w radianach. Błąd A, jeśli x nie jest w zakresie od -1 do +1. |
ATN | liczba | arcus tangens w radianach. |
CHR$ | liczba | Znak o kodzie x, zaokrąglonym do najbliższej liczby całkowitej. Błąd B, jeśli x nie jest w zakresie od 0 do 255. |
CODE | łańcuch | Kod pierwszego znaku w x (lub 0, jeśli x jest pustym łańcuchem). |
COS | liczba (w radianach) | cosinus |
EXP | liczba | ex |
INKEY$ | brak | Odczytuje klawiaturę. Wynikiem jest znak reprezentujący (w trybie L ) naciśnięty klawisz, jeśli naciśnięto dokładnie jeden, w przeciwnym razie wynikiem jest pusty łańcuch. |
INT | liczba | Część całkowita (zawsze zaokrąglana w dół) |
LEN | łańcuch | Długość |
LN | liczba | Logarytm naturalny (o podstawie e). Błąd, jeśli x ≤ 0 |
NOT | liczba | 0, jeśli x ≠ 0, 1, jeśli x = 0.
NOT posiada priorytet 4. |
OR | dwuargumentowa operacja, oba argumenty liczbowe | A OR B = 1, jeśli B ≠ 0, A, jeśli B = 0 OR Ma priorytet 2. |
PEEK | liczba | Wartość bajtu w pamięci znajdującego się pod adresem x
(zaokrąglonym do najbliższej liczby całkowitej). Błąd B, jeśli x nie jest w zakresie od 0 do 65535. |
PI | brak | π (3.14159265..) |
RND | brak | Następna liczba pseudolosowa y w ciągu generowanym przez potęgowanie 75 modulo 65537, odjęcie 1 i podzielenie przez 65536. 0 ≤ y ≤ 1. |
SGN | liczba | Znak (-1, 0 lub +1) argumentu x. |
SIN | liczba (w radianach) | sinus |
SQR | liczba | Pierwiastek kwadratowy Błąd B, jeśli x < 0 |
STR$ | liczba | Łańcuch cyfr, które pojawiłyby się na ekranie, gdyby argument x został wydrukowany. |
TAN | liczba (w radianach) | tangens |
USR | liczba | Wywołuje podprogram w kodzie maszynowym rozpoczynający się od adresu x (zaokrąglonego do najbliższej liczby całkowitej). Przy powrocie wynikiem jest zawartość pary rejestrów bc. Błąd B, jeśli x nie jest w zakresie od 0 do 65535 (ze względu na sposób tworzenia obrazu telewizyjnego przez ZX81, programów maszynowych nie można umieszczać powyżej adresu 32767 - przyp. tłum.). |
VAL | łańcuch | Oblicza x (bez ograniczających cudzysłowów)
jako wyrażenie liczbowe. Błąd C, jeśli x zawiera błąd składniowy lub daje w wyniku wartość łańcuchową. Są możliwe inne błędy zależne od wyrażenia. |
- | liczba | Negacja |
Tutaj zebraliśmy operacje dwuargumentowe:
+ | Dodawanie (na liczbach) lub konkatencja - łączenie (na łańcuchach) |
- | Odejmowanie |
* | Mnożenie |
/ | Dzielenie |
** | Podnoszenie do potęgi. Błąd B, jeśli argument jest ujemny. |
= | Równy* |
> | Większy niż* |
< | Mniejszy niż* |
<= | Mniejszy lub równy* |
>= | Większy lub równy* |
<> | Różny* |
* Oba argumenty muszą być tego samego typu. Wynikiem jest liczba 1, jeśli warunek jest spełniony i 0, jeśli nie jest.
Funkcje i operacje posiadają następujące priorytety:
Operacja | Priorytet |
Indeksowanie i slicing | 12 |
Wszystkie funkcje z wyjątkiem NOT i jednoargumentowego minusa | 11 |
** | 10 |
Jednoargumentowy minus | 9 |
* , / | 8 |
+ , - (dwuargumentowy -) | 6 |
= , > , < , <= , >=, <> | 5 |
NOT | 4 |
AND | 3 |
OR | 2 |
Na tej liście:
α | reprezentuje pojedynczą literę |
v | reprezentuje zmienną |
x,y,z | reprezentuje wyrażenia liczbowe |
m,n | reprezentuje wyrażenia liczbowe zaokrąglone do najbliższej liczby całkowitej |
e | reprezentuje wyrażenie |
f | reprezentuje wyrażenie łańcuchowe |
s | reprezentuje polecenie |
Zwróć uwagę, iż wszędzie dozwolone są dowolne wyrażenia (z wyjątkiem numerów wierszy na początku polecenia).
Wszystkie polecenia z wyjątkiem INPUT mogą być użyte albo w
charakterze bezpośrednich rozkazów, albo w wierszach programu
(chociaż czasami są bardziej sensowne w jednym niż w drugim).
CLEAR | Usuwa wszystkie zmienne i zwalnia zajmowaną przez nie pamięć. |
CLS | Maże zawartość bufora wyświetlania. Zobacz do rozdziału 27 zajmującego się buforem wyświetlania. |
CONT | Załóżmy, iż p/q było ostatnim komunikatem o niezerowym kodzie. Wtedy CONT ma ten sam efekt co GOTO q. jeśli p ≠ 9, lub GOTO q+1, jeśli p = 9 (polecenie STOP) |
COPY | Wysyła kopię ekranu na drukarkę, jeśli jest podłączona, w
przeciwnym razie nic nie robi. W przeciwieństwie do pozostałych poleceń, COPY nie wymazuje ekranu. Przed COPY nie mogą występować spacje. Komunikat D, jeśli naciśnięto klawisz BREAK. |
DIM α(n1,...,nk) | Usuwa każdą tablicę o nazwie α, i tworzy nową liczbową tablicę α
o k wymiarach n1,...,nk. Inicjuje wszystkie
wartości na 0. Błąd 4 powstaje, jeśli w pamięci brak miejsca na pomieszczenie tej tablicy. Tablica jest niezdefiniowana dopóki nie zostanie zwymiarowana w poleceniu DIM. |
DIM α$(n1,...,nk) | Usuwa każdą tablicę łańcuchową lub łańcuch o nazwie α$ i tworzy
nową tablicę znakową α$ o k wymiarach n1,...,nk.
Inicjuje wszystkie wartości na "". Może być traktowana jako tablica
łańcuchów o stałej długości nk z k-1 wymiarami n1,...,nk-1.
Błąd 4 powstaje przy braku wystarczającej ilości pamięci na pomieszczenie tablicy. Tablica jest niezdefiniowana dopóki nie zostanie zwymiarowana w poleceniu DIM. |
FAST | Rozpoczyna tryb szybki, w którym bufor wyświetlania jest wyświetlany tylko na końcu programu, podczas oczekiwania na wprowadzenie danych dla INPUT oraz w czasie pauzy. |
FOR α=x TO y | FOR α=x TO y STEP 1 |
FOR α=x TO y STEP z | Usuwa każdą zmienną prostą α i tworzy zmienną sterującą pętli α
o wartości początkowej x, granicy y, kroku z i adresie początku
pętli o 1 większym niż wynosi numer wiersza z poleceniem FOR
(-1, jeśli jest to rozkaz). Sprawdza, czy początkowa wartość
jest większa
(jeśli krok ≥ 0) lub mniejsza
(jeśli krok < 0) niż wartość granicy, a
jeśli tak, to pomija wiersze programu aż do wiersza zawierającego na
początku polecenie NEXT α. Zobacz NEXT α. Błąd 4 powstaje, jeśli w pamięci nie ma miejsca dla zmiennej sterującej. |
GOSUB n | Umieszcza numer wiersza na stosie GOSUB, a następnie
wykonuje
GOTO n
Błąd 4 może się zdarzyć, jeśli w programie brak wystarczającej liczby poleceń RETURN. |
GOTO n | Skacze do wiersza n (lub, jeśli takiego nie ma, do pierwszego wiersza o numerze bezpośrednio większym od n). |
IF x THEN s | Jeśli x jest prawdziwe (niezerowe), to wykonywane jest polecenie s. Postać "IF x THEN numer wiersza" jest niedozwolona. |
INPUT v | Zatrzymuje się (bez specjalnego zgłoszenia)
i oczekuje, aby użytkownik wprowadził z klawiatury jakieś wyrażenie;
wartość tego wyrażenia zostaje przypisana do v. W trybie szybkim
wyświetlany jest obraz telewizyjny. INPUT nie może być użyte
jako rozkaz; jeśli będziesz próbował, otrzymasz błąd 8. Jeśli pierwszym znakiem w danych dla INPUT będzie STOP, program zostanie wstrzymany z komunikatem D. |
LET v=e | Przypisuje wartość e zmiennej v. LET nie można pominąć. Prosta zmienna pozostaje niezdefiniowana, dopóki nie przypisze się jej wartości w poleceniu LET lub INPUT. Jeśli v jest łańcuchową zmienną indeksowaną, zmienną łańcuchową ze slicingiem (podłańcuchem), to przypisanie jest typu Prokrustesa: wartość łańcuchowa e zostanie albo obcięta, albo wypełniona spacjami po prawej stronie, aby posiadała taką samą długość jak zmienna v. |
LIST | LIST 0 |
LIST n | Wyświetla listing programu na telewizorze poczynając od wiersza
n i czyniąc go wierszem bieżącym. Błąd 4 lub 5 powstanie, gdy listing jest za długi, aby zmieścił się na ekranie; CONT wykona jeszcze raz dokładnie to samo. |
LLIST | LLIST 0 |
LLIST n | Podobne do LIST, lecz wykorzystuje drukarkę zamiast
ekranu telewizora. Jeśli drukarka jest niepodłączona do komputera, nic nie robi. Zatrzymuje się z komunikatem D, jeśli naciśnięto klawisz BREAK. |
LOAD f | Szuka na taśmie programu o nazwie f i ładuje go wraz z jego
zmiennymi do pamięci komputera. Jeśli f = "", to ładuje pierwszy napotkany program. Jeśli naciśnięto klawisz BREAK lub wykryty został błąd na taśmie, to: (i) jeśli nie został odczytany z taśmy jeszcze żaden program, zatrzymuje sie z komunikatem D i starym programem w pamięci; (ii) jeśli część programu została wczytana, to wykonuje NEW. |
LPRINT ... | Jak PRINT, lecz wykorzystuje do wydruku drukarkę zamiast
ekranu telewizora. Wiersz tekstu jest posyłany do drukarki: (i) gdy drukowanie przenosi się do innego wiersza, (ii) po poleceniu LPRINT nie zakończonym przecinkiem ani średnikiem, (iii) gdy przecinek lub element TAB wymaga przejścia do nowego wiersza, (iv) na końcu programu, jeśli coś pozostało nie wydrukowane. W elemencie AT liczy się tylko numer kolumny; numer wiersza jest ignorowany (z wyjątkiem wyjścia poza dozwolony zakres wartości, co kończy się komunikatem błędu). Element AT nigdy nie wysyła wiersza tekstu na drukarkę. Jeśli drukarki nie ma, nic nie powinno się dziać. Zatrzymuje się z komunikatem D, jeśli naciśnięto klawisz BREAK. |
NEW | Uruchamia od nowa system BASIC usuwając program i zmienne oraz wykorzystując pamięć aż do adresu o 1 mniej niż zawiera zmienna systemowa RAMTOP (bajty 16388 i 16389). |
NEXT α | (i) Wyszukuje zmienną sterującą α. (ii) Dodaje do jej wartości krok. (iii) Jeśli krok ≥ 0 i wartość > granica lub jeśli krok < 0 i wartość < granica, to skacze do wiersza początkowego pętli. Błąd 1, jeśli zamiast zmiennej kontrolnej istnieje zmienna prosta o nazwie α. Błąd 2, jeśli nie ma ani zmiennej prostej ani zmiennej sterującej o nazwie α. |
PAUSE n | Zatrzymuje obliczenia i wyświetla obraz telewizyjny przez n
ramek (przy 50 ramkach na sekundę) lub do czasu naciśnięcia
klawisza. 0 ≤ n ≤ 65535, w przeciwnym razie powstanie błąd B. Jeśli n ≥ 32767, to pauza działa bez limitu czasowego, aż zostanie naciśnięty klawisz. |
PLOT m,n | Zaczernia piksel o współrzędnych ( | m | , | n | ); przesuwa
pozycję wydruku polecenia PRINT tuż za piksel. 0 ≤ | m | ≤ 63, 0 ≤ | n | ≤ 43, w przeciwnym razie błąd B. |
POKE m,n | Zapisuje wartość n w bajcie pamięci pod adresem m.
0 ≤ m ≤ 65535, -255 ≤ n ≤ 255, inaczej błąd B. |
PRINT ... | '...' jest ciągiem elementów polecenia PRINT
rozdzielonych przecinkami lub średnikami, a są one zapisywane do
bufora wyświetlania dla obrazu telewizyjnego. Pozycja
(wiersz i kolumna), gdzie ma nyć wydrukowany kolejny znak
nosi nazwę pozycji wydruku PRINT. Element PRINT może być: (i) pusty, czyli nic nie zawierać (ii) wyrażeniem liczbowym Jeśli wartość jest ujemna, to najpierw drukowany jest znak minus. Teraz niech x będzie modułem drukowanej wartości. Jeśli x ≤ 10-5 lub x ≥ 1013, to zostanie wydrukowane w zapisie inżynierskim. Mantysa posiada do 8 cyfr (bez zer wiodących), kropka dziesiętna (brak jej przy jednocyfrowej mantysie) zostaje umieszczona za pierwszą cyfrą. Wykładnik rozpoczyna się od litery E, za którą jest + lub - i jedna do dwóch cyfr. W przeciwnym razie x zostanie wydrukowane w zapisie dziesiętnym z 8 cyframi znaczącymi bez zer końcowych za kropką dziesiętną. Kropa dziesiętna na samym początku zapisu zawsze poprzedza zero, zatem przykładowe wydruki będą następujące: .03 i 0.3. 0 jest drukowane jako pojedyncza cyfra 0. (iii) wyrażeniem łańcuchowym. Hasła złożone w łańcuchu są rozwijane z możliwą spacją zarówno przed jak i po. Znak obrazu cudzysłowu jest drukowany jako ". Niewykorzystywane znaki oraz znaki sterujące są drukowane jako ?. (iv) AT m,n Pozycja wydruku PRINT jest zmieniana na wiersz |m| (licząc od góry) i kolumnę n (licząc od lewej). 0 ≤ | m | ≤ 21, inaczej błąd 5 przy | m | = 22 lub 23, a w pozostałych przypadkach błąd B 0 ≤ | n | ≤ 31, inaczej błąd B. (v) TAB n n jest redukowane modulo 32. Następnie pozycja wydruku PRINT jest przesuwana do kolumny n pozostając w tym samym wierszu, o ile nowa pozycja nie wymaga cofnięcia się wstecz, w takim przypadku następuje przejście do następnego wiersza. 0 ≤ n ≤ 255, inaczej błąd B. Średnik pomiędzy dwoma elementami PRINT pozostawia pozycję niezmienioną, zatem drugi element jest drukowany bezpośrednio za pierwszym. Z drugiej strony przecinek przesuwa pozycję wydruku co najmniej o jedno miejsce, a następnie o tyle miejsc ile trzeba, aby wydruk znalazł się w kolumnie 0 lub 16, przechodząc w razie konieczności do nowego wiersza. Jeśli instrukcja PRINT nie kończy się średnikiem lub przecinkiem, to wstawiany jest nowy wiersz. Błąd 4 (brak pamięci) może wystąpić przy pamięci mniejszej od 3K. Błąd 5 oznacza, iż ekran został zapełniony. W obu przypadkach lekarstwem będzie CONT, które czyści ekran i kontynuuje wykonywanie programu. |
RAND | RAND 0 |
RAND n | Ustawia zmienną systemową (o nazwie SEED)
wykorzystywaną do generacji następnej wartości RND.
Jeśli n ≠ 0, to SEED przyjmuje wartość n; jeśli n = 0, to zostanie
jej nadana wartość innej zmiennej systemowej
(zwanej FRAMES), która zlicza ramki obrazów telewizyjnych
wyświetlonych dotąd na telewizorze, zatem powinniśmy otrzymać dosyć
przypadkową wartość. Błąd B pojawia się, gdy n nie jest w zakresie od 0 do 65535. |
REM ... | Brak działania, może zawierać dowolny ciąg znaków za wyjątkiem NEWLINE. |
RETURN | Pobiera numer wiersza ze stosu GOSUB i skacze do
wiersza zaraz za pobranym. Błąd 7 powstaje, gdy na stosie nie ma numeru wiersza - w twoim programie jest jakiś błąd; polecenia GOSUB nie są poprawnie zrównoważone z poleceniami RETURN. |
RUN | RUN 0 |
RUN n | CLEAR, a następnie GOTO n. |
SAVE f | Zapisuje program oraz zmienne na taśmie pod nazwą f. SAVE
nie powinno być używane wewnątrz podprogramu GOSUB.
Błąd F pojawia się w przypadku podania jako nazwy programu f pustego łańcucha, co jest niedozwolone. |
SCROLL | Przesuwa zawartość bufora wyświetlania o jeden wiersz w górę
tworząc pusty wiersz na spodzie ekranu. Nowy wiersz jest prawdziwie pusty, gdyż zawiera jedynie znak NEWLINE bez spacji (zobacz do rozdziału 27). |
SLOW | Wprowadza komputer w tryb liczenia i wyświetlania, w którym zawartość bufora wyświetlania jest ciągle wyświetlana na ekranie telewizora, a obliczenia są przeprowadzane podczas wyświetlania pustych marginesów u góry i u dołu ekranu. |
STOP | Zatrzymuje wykonywanie programu z komunikatem 9. CONT wznowi wykonanie od następnego wiersza. |
UNPLOT m,n | Jak PLOT, lecz wypełnia piksele na biało zamiast na czarno. |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.