Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor: Steven Vickers
Tłumaczył: mgr Jerzy Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

ROZDZIAŁ 28 – Zmienne systemowe

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

ROZDZIAŁ 28 – Zmienne systemowe

Bajty w pamięci od adresu 16384 do 16508 są przeznaczone na użytek systemu. Możesz pobierać ich zawartość, aby dowiedzieć się wielu różnych rzeczy o systemie, a niektóre z nich mogą być dla ciebie użyteczne. Zostały tutaj przedstawione wraz ze swoim zastosowaniem. Noszą  nazwę zmiennych systemowych i posiadają nazwy, lecz nie myl ich ze zmiennymi języka BASIC. Komputer nie rozpozna tych nazw jako odwołań do zmiennych systemowych, ponieważ nazwy te służą jedynie jako hasła pamięciowe dla nas ludzi.

Skróty w kolumnie 1 posiadają następujące znaczenia:

X - tej zmiennej nie powinno się zmieniać, ponieważ system może się załamać.

N - wpisanie wartości do tej zmiennej nie będzie miało trwałego efektu.

S - zmienna jest zachowywana przez SAVE.

Liczba w kolumnie 1 określa liczbę bajtów zajmowanych przez daną zmienną. Dla zmiennych dwubajtowych pierwszy bajt jest mniej znaczący - na odwrót niż mógłbyś się spodziewać. Zatem wstawienie wartości v do zmiennej dwubajtowej pod adresem n wymaga poniższych rozkazów języka BASIC:

POKE n,v-256*INT (v/256)
POKE
n+1,INT (v/256)

a do odczytania wartości zmiennej użyj wyrażenia:

PEEK n + 256*PEEK (n+1)


Uwagi  Adres  Nazwa  Zawartość
1 16384 ERR_NR 1 mniej niż kod komunikatu. Zaczyna się od 255 (dla -1), zatem PEEK 16384, jeśli w ogóle działa, daje 255. POKE 16384,n może być stosowane do wymuszenia zatrzymania z błędem: 0 ≤ n ≤ 14 daje jeden ze zwykłych komunikatów, 15 ≤ n ≤ 34 lub 99 ≤ n ≤ 127 daje niestandardowy komunikat, a 35 ≤ n ≤ 98 może zakłócić bufor wyświetlania.
X1 16385 FLAGS Różne znaczniki sterujące systemem BASIC.
X2 16386 ERR_SP Adres pierwszego elementu na stosie maszynowym (po powrocie z GOSUB).
2 16388 RAMTOP Adres pierwszego bajtu ponad obszarem systemu BASIC. Możesz zmieniać zawartość w celu zarezerwowania przez NEW przestrzeni ponad tym obszarem (zobacz do rozdziału 26) lub do oszukiwania CLS, aby ustawiło minimalny bufor wyświetlania (rozdział 27). Zmiana zawartości RAMTOP nie przynosi efektu aż do zastosowania jednego z tych dwóch poleceń.
N1 16390 MODE Określa kursor K, L, F lub G.
N2 16391 PPC Numer wiersza obecnie wykonywanego polecenia. Zmiana zawartości nie ma trwałych efektów, jedynie w ostatnim wierszu programu.
S1 16393 VERSN 0 identyfikuje ZX81 BASIC w zapisanych na taśmie programach.
S2 16394 E_PPC Numer bieżącego wiersza (z kursorem programu).
SX2 16396 D_FILE Zobacz do rozdziału 27
S2 16398 DF_CC Adres pozycji wydruku dla polecenia PRINT w buforze wyświetlania. Można zmienić w celu wysłania wyjścia z PRINT gdzieś indziej.
SX2 16400 VARS Zobacz do rozdziału 27
SN2 16402 DEST Adres zmiennej, której przypisuje się wartość.
SX2 16404 E_LINE Zobacz do rozdziału 27
SX2 16406 CH_ADD Adres następnego znaku do zinterpretowania: znaku za argumentem PEEK lub NEWLINE na końcu polecenia POKE.
S2 16408 X_PTR Adres znaku poprzedzającego znacznik  S .
SX2 16410 STKBOT Zobacz do rozdziału 27
SX2 16412 STKEND Zobacz do rozdziału 27
SN1 16414 BERG Rejestr b kalkulatora
SN2 16415 MEM Adres obszaru pamięci wykorzystywanego przez kalkulator (zwykle MEMBOT, lecz nie zawsze).
S1 16417 wolne  
SX1 16418 DF_SZ Liczba wierszy (łącznie z jednym pustym wierszem) w dolnej części ekranu.
S2 16419 S_TOP Numer górnego wiersza programu na automatycznych listingach.
SN2 16421 LAST_K Pokazuje naciśnięty klawisz
SN1 16423   Stan filtrowania drgań klawiatury
SN1 16424 MARGIN Liczba pustych linii ponad i poniżej obrazka na ekranie telewizyjnym: w Polsce 55, 31 w Ameryce.
SX2 16425 NXTLIN Adres następnego wiersza programu do wykonania.
S2 16427 OLDPPC Numer wiersza, do którego wykona skok rozkaz CONT.
SN1 16429 FLAGX Różne znaczniki.
SN2 16430 STRLEN Długość łańcucha przy przypisaniu tekstowym.
SN2 16432 T_ADDR Adres następnego elementu w tablicy składniowej (mało prawdopodobne, aby było użyteczne)
S2 16434 SEED Ziarno dla funkcji RND. To jest zmienna ustawiana przez rozkaz RAND.
S2 16436 FRAMES Zlicza ramki obrazu telewizyjnego. Bit 15 jest 1. Bity od 0 do 14 są zmniejszane przy każdej ramce obrazowej wysłanej do telewizora. Można ją wykorzystać do mierzenia czasu, lecz polecenie PAUSE również jej używa. PAUSE zeruje bit 15, a w bitach od 0 do 14 umieszcza długość przerwy. Gdy zostanie ona zliczona do 0, pauza kończy się. Jeśli pauza przerywa się z powodu naciśnięcia klawisza, bit 15 jest ponownie ustawiany na 1.
S1 16438 COORDS Współrzędna x ostatnio narysowanego punktu graficznego przez polecenie PLOT lub UNPLOT.
S1 16439   Współrzędna y ostatnio narysowanego punktu graficznego przez polecenie PLOT lub UNPLOT.
S1 16440 PR_CC Najmniej znaczący bajt adresu następnej pozycji dla LPRINT przy wydruku (w PRBUFF).
SX1 16441 S_POSN Numer kolumny dla pozycji wydruku przez PRINT.
SX1 16442   Numer wiersza dla pozycji wydruku przez PRINT.
S1 16443 CDFLAG Różne znaczniki. Bit 7 jest ustawiony (1) podczas obliczeń i wyświetlania obrazu.
S33 16444 PRBUFF Bufor drukarki (33-ci znak to NEWLINE).
SN30 16477 MEMBOT Obszar pamięci kalkulatora; wykorzystywany do przechowywania liczb, które nie można wygodnie umieścić na stosie kalkulatora.
S2 16507 wolne  

Ćwiczenia

  1. Wypróbuj ten program:

    10 FOR N=0 TO 21
    20 PRINT PEEK (PEEK 16400+256*PEEK 16401+N)
    30 NEXT N

    Wyświetla on pierwsze 22 bajty obszaru zmiennych systemowych; spróbuj dopasować zmienną sterującą N z opisem w rozdziale 27.
  1. W programie powyżej zmień wiersz 20 na:

    20 PRINT PEEK (16509+N)

    Teraz otrzymasz wartości pierwszych 22 bajtów z obszaru programu. Dopasuj je do samego programu.
Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 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: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.