Dodatek C - ZX81 dla znających język BASIC

 

Wiadomości ogólne

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.

 

Prędkość

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.

 

Klawiatura

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.

 

Ekran

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) (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).

 

 

BASIC

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
 

 

Polecenia

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 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.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.