Rozdział 28 - Zmienne systemowe

Bajty w pamięci od 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 można użytecznie. Zostały one tutaj przedstawione wraz ze swoim zastosowaniem.

Noszą one 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.

 



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.