Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2025 mgr Jerzy Wałaszek |
Więcej wiadomości na temat języka ZX-81 BASIC i jego struktur danych znajdziesz w tym artykule.
W tym rozdziale opisujemy tryby pracy klawiatury komputera ZX-81 oraz kombinacje klawiszy.
Klawisze specjalne zebrano w poniższej tabelce:
Klawisz | Nazwa | Wyjaśnienie | Odpowiednik PC |
Ret | NEWLINE | Zatwierdzanie wprowadzonych danych | Enter |
Space | BREAK | Wstrzymuje wykonanie programu! | Spacja |
Shift + 0 | RUBOUT | Usuwa znak | Backspace |
Shift + 1 | EDIT | Edytuje bieżący wiersz programu | - |
Shift + 5 / 8 | CURSOR | Przesuwa kursor w prawo / w lewo w buforze edycji | Klawisze kursora |
Shift + 7 / 6 | CURSOR | Przesuwa kursor programu w górę / w dół na listingu | Klawisze kursora |
Shift + 9 | GRAPHICS | Przełącza kursor w tryb graficzny G | Alt |
Shift + Ret | FUNCTION | Przełącza kursor w tryb funkcyjny F | Control |
Oprócz tych typowo specjalnych klawiszy, wszystkie klawisze ZX-81 zachowują się nieco specjalnie w zależności od różnych trybów wprowadzania danych, jak pokazano poniżej
Kursor K - tryb wprowadzania poleceń języka BASIC lub numeru wiersza.
Tryb ten jest automatycznie używany na początku każdego wiersza
(oraz po słowie THEN). Na początku wiersza można
wprowadzić numer wiersza za pomocą klawiszy 0-9. Znaki liter są interpretowane
jako słowa kluczowe języka BASIC (np.
Kursor L - tryb literowy - wprowadzanie operandów lub funkcji.
Ten tryb jest automatycznie wybierany po wprowadzeniu polecenia w trybie
K
. Pozwala na wprowadzenie wyrażeń, takich jak "HELLO" lub
1234.5678. Gdy wciśnięty jest klawisz SHIFT, mogą być wprowadzane funkcje /
operacje takie jak +, -, *, <=, OR, AND (np.
Kursor F - tryb funkcyjny - wprowadzanie funkcji.
Tryb ten jest uaktywniany przez naciśnięcie kombinacji klawiszy SHIFT + ENTER z poziomu trybu L , co umożliwia użytkownikowi wprowadzanie funkcji, takich jak L = USR, U = CHR$, których nie można wprowadzić w innym trybie bezpośrednio.
Kursor G - tryb graficzny (negatywowy tekst i grafika blokowa).
Tryb ten jest wprowadzany przez naciśnięcie klawiszy SHIFT + 9 z poziomu
trybu L
, co pozwala wpisywać znaki negatywowe
(łącznie ze spacją). Trzymając wciśnięty klawisz SHIFT, można wpisać
wszystkie kombinacje znaków grafiki blokowej (np. SHIFT + 1 =
, SHIFT+G =
).
Kursor > - bieżący wiersz programu.
Ten kursor nie jest częścią wiersza wprowadzania. Komputer wyświetla go na listingu programu (jeśli takowy istnieje) w górnej części ekranu. Kursor ten przesuwa się w gór lub w dół za pomocą klawiszy SHIFT + 7 / 8, co powoduje przewinięcie listingu w razie konieczności.
Kombinacja EDIT (SHIFT + 1) kopiuje bieżąco wybrany przez ten kursor wiersz programu do bufora edycyjnego (usuwając z niego poprzednią treść).
Symbol S - błąd składniowy.
To właściwie nie jest kursor. Gdy zostanie wprowadzony niepoprawny wiersz programu, to pojawi się w nim symbol S , wskazując pozycję z błędem i żądając usunięcia go przez użytkownika - błędnego wiersza nie da się wprowadzić do programu.
Wymazuje wszystkie zmienne i zwalnia zajętą przez nie pamięć.
Czyści ekran
Działa podobnie do GOTO, wznawia wykonanie programu od bieżącego wiersza lub od następnego wiersza, jeśli program został wstrzymany poleceniem STOP.
Przesyła kopię ekranu na drukarkę (jeśli jest podłączona), Kopiowane są jedynie 22 górne wiersze z pominięciem dwóch wierszy dolnych, które w ZX-81 BASIC służą do edycji danych.
Definiuje rozmiary dla tablicy. Wszystkie wartości (lub łańcuchy znakowe) w tablicy zostają ustawione na 0 (lub wypełnione spacjami w przypadku tablicy znakowej). Ostatni wymiar tablicy znakowej zawiera długość łańcucha. Na przykład, DIM A$(x,y,z) może być traktowane jako trójwymiarowa tablica znakowa lub jako dwuwymiarowa tablica łańcuchów A$(x,y), każdy o długości z znaków.
Przełącza na tryb FAST, w którym mikroprocesor skupia się jedynie na wykonywaniu programu użytkownika (około 4 razy szybciej), a ekran staje się czarny aż do zakończenia programu lub przełączenia na tryb SLOW. Ekran uaktywnia się również w okresach wykonywania poleceń PAUSE i INPUT.
Definiuje początek i zakres pętli FOR-NEXT. Standardowo STEP = 1.
Zapisuje adres powrotny na stosie i wykonuje skok do wiersza programu o podanym numerze
Wykonuje skok do wiersza o podanym numerze. Jako numer wiersza może być zastosowana liczba, zmienna lub dowolne wyrażenie, np. GOTO A*10+230.
Wykonuje instrukcję s jeśli x<>0. ZX-81 nie rozpoznaje konstrukcji THEN n jako skrótu dla THEN GOTO n.
Wymaga od użytkownika wprowadzenia wartości (lub łańcucha znaków), która zostanie przypisana do v. W trybie FAST ekran jest chwilowo uaktywniany na czas wprowadzenia danych. Program zostaje wstrzymany, jeśli pierwszym, wprowadzonym znakiem jest rozkaz STOP.
Przypisuje wartość wyrażenia e zmiennej v. ZX-81 nie rozumie konstrukcji v=e
jako skrótu dla LET v=e. Jeśli v jest fragmentem łańcucha tekstowego, np.
Wyświetla listing programu na ekranie. Standardowo rozpoczyna od pierwszego wiersza w programie. Jeśli program nie mieści się na ekranie, użyj polecenia CONT. Za rozkazem LIST można umieścić numer wiersza, od którego rozpocznie się ten listing.
Przesyła listing programu do drukarki. W tym przypadku zostaje wydrukowany cały program (od wiersza o numerze n, jeśli został podany).
Ładuje plik obrazu pamięci z magnetofonu kasetowego. Jeśli zostanie określona pusta nazwa pliku, np. LOAD "", to komputer załaduje pierwszy napotkany program. Podczas ładowania ekran znakowy jest wyłączony, gdy komputer zaczyna odbierać sygnał z magnetofonu kasetowego, na ekranie pojawiają się białe i czarne linie poziome. Obecny program wraz ze wszystkimi swoimi zmiennymi zostanie nadpisany programem i zmiennymi z odczytywanego pliku. Plik obrazu zawiera cały obszar pamięci od $4009 w górę do końca pamięci języka BASIC, czyli zmienne systemowe, program w języku BASIC, zawartość ekranu oraz wszystkie zmienne. Jeśli program został zapisany na taśmie poleceniem SAVE wykonywanym w czasie działania programu (czyli takim, które jest w jego kodzie), to po załadowaniu do pamięci komputera zostanie on automatycznie uruchomiony od następnego wiersza za instrukcją SAVE. Opcja ta pozwala tworzyć samo uruchamiające się programy w języku BASIC.
Działa podobnie do polecenia PRINT, jednakże wydruk trafia na drukarkę. Można stosować AT do określenia poziomej pozycji wydruku wewnątrz bieżąco drukowanego wiersza.
Uruchamia od nowa system BASIC. Cała pamięć aż do RAMTOP zostaje wymazana - bieżący program i wszystkie jego zmienne.
Uaktualnia zmienną b, która została podana we współdziałającym poleceniu FOR, i (jeśli nie osiągnięto lub nie przekroczono końcowego warunku pętli FOR-NEXT) powoduje skok do pierwszego wiersza za instrukcją FOR. W ZX-81 NEXT musi posiadać jawną zmienną.
Wstrzymuje program na n/50 części sekundy (przy założeniu, że częstotliwość wyświetlania wynosi 50Hz) lub do momentu, aż użytkownik naciśnie jakiś klawisz. W czasie oczekiwania uaktywniane jest wyświetlanie obrazu, jeśli komputer pracuje w trybie FAST. Największą dozwoloną wartością dla n jest 32767. Zwróć uwagę, iż naciśnięcie klawisza SPACE zatrzyma raczej program niż wyłączy PAUSE.
Rysuje białą kropkę (4 × 4 piksele, czyli ćwiartka znaku 8 × 8 pikseli) na określonych współrzędnych przy użyciu znaków graficznych. Początek układu współrzędnych (0,0) znajduje się w lewym dolnym narożniku ekranu z pominięciem dwóch dolnych wierszy.
Zapisuje bajt n pod adres m w pamięci. Obie wartości muszą być dziesiętne, ponieważ ZX-81 nie rozpoznaje liczb szesnastkowych.
Wyświetla swoje argumenty (jeśli są podane) na ekranie. Możliwe argumenty, to:
Argumenty mogą być oddzielone średnikiem ";" (następny argument będzie wyświetlony bezpośrednio na bieżącej pozycji) lub przecinkiem "," (następny argument zostanie wyświetlony na pozycji TAB 0 lub TAB 16). Jeśli ostatni argument nie kończy się średnikiem lub przecinkiem, to następny wydruk rozpocznie się od nowego wiersza.
W trakcie wydruku może powstać błąd, jeśli pamięć zostanie zapełniona. Można wtedy użyć polecenia CONT, które wyczyści ekran i wznowi wykonywanie programu.
Inicjalizuje ziarno generatora pseudolosowego (n = 1...65535). Gdy n = 0 (wartość standardowa) lub jest pominięte, jako ziarno zostanie wykorzystana bieżąca zawartość licznika ramek.
Definiuje komentarz ignorowany w czasie wykonywania programu. Obszar komentarza często jest wykorzystywany do przechowywania kodu maszynowego wewnątrz programu w języku BASIC. Jednakże komentarz nie powinien zawierać znaku NEWLINE ($76), tj. instrukcji HALT ani żadnego innego kodu, który zawiera tę wartość, np. JP $4176 lub LD A,$76.
Wykonuje powrót do wiersza za ostatnio wykonaną instrukcją GOSUB.
Czyści wszystkie zmienne i wykonuje skok do wiersza o podanym numerze. Jeśli numer nie został podany, skok zostanie wykonany do pierwszego wiersza w programie.
Zapisuje na taśmie obszar zmiennych systemowych, program, pamięć wideo oraz zdefiniowane zmienne. Nazwa pliku f musi być tekstem o długości od 1 do 127 znaków, w którym nie mogą znaleźć się znaki negatywowe. W czasie zapisywania ekran tekstowy zostaje wyłączony, pojawiają się na nim białe i czarne linie, które przedstawiają sygnały wysyłane do magnetofonu.
Gdy polecenie SAVE zostanie wykonane z wnętrza programu, to po załadowaniu się do pamięci program automatycznie się uruchomi od następnego wiersza za poleceniem SAVE. Zwróć uwagę, iż stos adresów powrotnych GOSUB nie jest umieszczany w pliku kasetowym, zatem polecenie SAVE nie powinno być wykonywane z wnętrza podprogramu - po wczytaniu i uruchomieniu programu instrukcja RETURN nic nie znajdzie na stosie GOSUB i program się zatrzyma z błędem.
Przesuwa ekran tekstowy w górę, wpisując na spodzie pusty wiersz. Uwaga, pusta linia jest zupełnie pusta. W pamięci VRAM tworzy ją pojedynczy kod HALT bez jakichkolwiek spacji.
Przełącza do trybu SLOW (około 4 razy wolniej niż w trybie FAST). Ekran jest wyświetlany, a program jest wykonywany tylko w okresach wygaszania pionowego. ZX-81 rozpoczyna pracę w trybie SLOW.
Wstrzymuje program. Użytkownik może wznowić wykonywanie programu od następnego wiersza przez wprowadzenie polecenia CONT.
Działa tak samo jak PLOT, tylko rysuje białą kropkę zamiast czarnej.
Zwróć uwagę, iż wszystkie funkcje w ZX-81 należy wprowadzać albo przy pomocy klawisza SHIFT, albo w trybie funkcyjnym. Na przykład dla słowa kluczowego INKEY$ należy wcisnąć kombinację klawiszy SHIFT + ENTER, a następnie B - próba wprowadzenie I, N, K, E, Y, $ skończy się błędem składniowym. To samo dotyczy operatorów ">=" i "**".
Zwraca wartość bezwzględną z n.
Zwraca znak o kodzie n (zamienia liczbę na jednoznakowy łańcuch tekstowy).
Zwraca kod pierwszego znaku lub zero, jeśli łańcuch jest pusty. Przeciwieństwo CHR$.
Zwraca znak bieżąco naciśniętego klawisza lub pusty łańcuch znakowy, jeśli żaden klawisz nie jest naciśnięty.
Zwraca długość łańcucha znakowego.
Zwraca bajt odczytany z adresu pamięci (podanego jako liczba dziesiętna - ZX-81 nie rozpoznaje liczb szesnastkowych).
Zwraca liczbę pseudolosową w zakresie 0 to 0.99999...
Zwraca znak liczby n (-1, 0, lub +1).
Zwraca łańcuch znakowy zawierający zapis liczby n jako ciąg znaków.
Wywołuje program maszynowy, który jest umieszczony w pamięci pod adresem n i zwraca wartość pary rejestrów BC, gdy program maszynowy zakończy swoje działanie i odda sterowanie językowi BASIC. Adres musi być dziesiętny, gdyż ZX-81 nie rozpoznaje liczb szesnastkowych.
Zamienia łańcuch na wartość, zatrzymuje program, jeśli napotka błąd. W łańcuchu może być dowolne wyrażenie numeryczne wraz z funkcjami i zmiennymi.
ACS n ASN n ATN n COS n EXP n INT n LN n PI SIN n SQR n TAN n |
- arccos(n) - arcsin(n) - arctg(n) - cos(n) - en - część całkowita z n, zaokrąglona w dół - ln(n) - logarytm naturalny przy podstawie e - 3.14159265... - sin(n) - pierwiastek kwadratowy z n - tg(n) |
op. | prio. | Wyjaśnienie |
a + b | 6 | Dodawanie |
a - b | 6 | Odejmowanie |
a * b | 8 | Mnożenie |
a / b | 8 | Dzielenie |
-a | 9 | Znak minus |
a ** b | 10 | Potęgowanie |
Zwracają 1, jeśli wynikiem jest prawda, a 0, jeśli wynikiem jest fałsz.
op. | prio. | Wyjaśnienie |
a = b | 5 | Równość |
a > b | 5 | Większe niż |
a < b | 5 | Mniejsze niż |
a <= b | 5 | Mniejsze bądź równe |
a >= b | 5 | Większe bądź równe |
a <> b | 5 | Różne |
op. | prio. | Wyjaśnienie |
a OR b | 2 | b <> 0, zwraca 1; b= 0, zwraca a |
a[$] AND b | 3 | b <> 0, zwraca a (lub a$); b = 0, zwraca 0 (lub "") |
NOT b | 4 | b<> 0, zwraca 0; b = 0, zwraca 1 |
Priorytet indeksowania (DIM) i fragmentów łańcuchów (TO) wynosi 12. Priorytet wszystkich funkcji wynosi 12.
Używane do określenia fragmentu łańcucha od pierwszego do ostatniego znaku. Standardową wartością dla początku jest 1, a dla końca ostatni znak w łańcuchu. Zatem:
"ABCDEFGH"(3 TO 5) = "CDE" "ABCDEFGH"(TO 5) = "ABCDE" "ABCDEFGH"(3 TO) = "CDEFGH" |
Może być stosowane zarówno w wyrażeniach tekstowych jak i przypisaniach. Na przykład:
LET A$(5 TO 7) = "***"
;zapisuje 5-ty, 6-ty i 7-my znak zmiennej A$ LET A$ = B$(TO 4) ;umieszcza w A$ znaki od 1 do 4 z B$ |
Gdy wiersz w buforze edycyjnym zawiera błąd, to komputer ZX-81 umieszcza na tej pozycji znak błędu składniowego - S , żądając od użytkownika usunięcia tego błędu. Wiersz zawierający błędy składniowe nie zostanie umieszczony w programie.
Jeśli błąd wystąpi w trakcie wykonywania programu w języku BASIC, to na spodzie ekranu zostanie wyświetlony następujący kod błędu:
0 Brak błędu, program zakończony normalnie z sukcesem
1
Napotkano
NEXT bez FOR.
2 Niezdefiniowana zmienna
3 Indeks
DIM poza zakresem. Może również dać błąd B, jeśli zostanie przekroczona
wartość 16 bitowa.
4 Pamięć pełna.
5 Ekran pełny. Wpisz
CONT, aby kontynuować z wyczyszczonym ekranem.
6 Przepełnienie
arytmetyczne. Wartość większa od 1038.
7 Napotkano
RETURN bez GOSUB.
8 Próba użycia INPUT jako
rozkazu bez numeru wiersza.
9 Program wstrzymany poleceniem
STOP. Można kontynuować za pomocą
CONT.
A Funkcja ze złym argumentem
B Liczba całkowita
poza zakresem.
C Funkcja
VAL nie powiodła się.
D Program wstrzymany przez BREAK
(klawisz spacji)
lub napotkano STOP na początku danych wczytanych przez INPUT.
E
Nieużywane
F Próba użycia
SAVE bez nazwy pliku.
Błędy są zawsze wyświetlane jako NR BŁĘDU/NR WIERSZA, skąd możemy odczytać numer wiersza programu, w którym dany błąd wystąpił
Bajty | Wyjaśnienie |
2 | Numer wiersza (starszy bajt, młodszy bajt - czyli odwrotnie niż normalnie) |
2 | Długość wiersza (młodszy bajt, starszy bajt) |
... | Długość - 1 bajtów z treścią wiersza |
1 | Znak NEWLINE o kodzie $76 |
Wewnątrz wiersza są używane następujące kody:
$00-$3F oraz $80-$BF dla normalnych i negatywowych znaków
$C0-$FF oraz
$40-$42 dla słów kluczowych
$7E dla wartości - wartości są dublowane w
wierszach programu, Najpierw występuje zwykły tekst, jak zostały wprowadzone
przez użytkownika
(podczas wykonywania programu ten zapis jest ignorowany, lecz
wciąż musi tam być, lecz zawsze można go sprowadzić do "0", jeśli jest to
wymagane). Następnie po kodzie $7E następuje 5 bajtów zapisu
zmiennoprzecinkowego. Zatem wartość bezpośrednia zajmuje w pamięci co najmniej 7
bajtów: cyfra + %7E + 5 bajtów wartości zmiennoprzecinkowej. Istnieją pewne
metody oszczędzania pamięci, takie jak: PI-PI dla 0 - 3 bajty, VAL"9" definiuje
wartość 9 w czterech bajtach, itp.
Bajty | Wyjaśnienie |
1 | $60 + znak (5 bitów) |
1 | Wykładnik |
4 | Bit znaku i mantysa |
Bajty | Wyjaśnienie |
1 | $A0 + pierwszy znak (5 bitów) |
... | Następne znaki (6 bitów) |
1 | $80 + ostatni znak (6 bitów) |
1 | Wykładnik |
4 | Bit znaku i mantysa |
Bajty | Wyjaśnienie |
1 | $80 + znak (5 bitów) |
2 | Całkowita długość dalszych danych |
1 | Liczba wymiarów |
D × 2 | Zakres każdego wymiaru |
N × 5 | Wartości |
Bajty | Wyjaśnienie |
1 | $E0 + znak (5 bitów) |
5 | Bieżąca wartość |
5 | Końcowa wartość |
5 | Krok |
2 | Numer pierwszego wiersza pętli (starszy-młodszy bajt!) |
Bajty | Wyjaśnienie |
1 | $40 + znak (5 bitów) |
2 | Długość łańcucha (0, jeśli pusty) |
... | łańcuch znaków (jeśli pusty, nic tu nie ma) |
Bajty | Wyjaśnienie |
1 | $C0 + znak (5 bitów) |
2 | Całkowita długość dalszych danych |
1 | Liczba wymiarów |
D × 2 | Zakres każdego wymiaru |
N | Znaki |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2025 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.