Rozdział 25


Zmienne systemowe

 

Bajty w pamięci od adresu 23552 do 23733 są odłożone do specyficznego używania przez system. Możesz do nich zaglądać, aby dowiedzieć się różnych rzeczy o systemie, a niektóre z nich można z korzyścią zmieniać. W tym rozdziale są one przedstawione wraz z ich przeznaczeniem.

Nazywane są zmiennymi systemowymi i posiadają swoje nazwy, lecz nie myl ich ze zmiennymi używanymi w programach w języku BASIC. Komputer nie rozpozna tych nazw jako odwołań do zmiennych systemowych, a podane są jedynie w celu zapamiętania przez nas ludzi.

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

 

X

 - tej zmiennej nie powinno się zmieniać, ponieważ system mógłby się zawiesić

N

 - zmiana tej zmiennej nie będzie miała trwałych efektów

 

Liczba w pierwszej kolumnie oznacza ilość bajtów w zmiennej. Dla dwóch bajtów, pierwszy jest mniej znaczącym, drugi bardziej znaczącym, zatem odwrotnie niż mógłbyś się spodziewać. Aby wprowadzić wartość v do dwubajtowej zmiennej o adresie n, uzyj

 

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

 

a aby odczytać jej zawartość, użyj wyrażenia

 

PEEK n+256*PEEK (n+1)

 

Uwagi   

Adres   

Nazwa         

Zawartość

N8

23552

KSTATE

Używane przy odczycie klawiatury.

Nl

23560

LAST K

Przechowuje nowo naciśniety klawisz

1

23561

REPDEL

Czas (w 1/50 częściach sekundy, a w USA w 1/60 częściach sekundy), który musi upłynąć, zanim naciśniety klawisz rozpocznie powtarzanie. Wartość wynosi 35, lecz możesz ją zmienić na inną.

1

23562

REPPER

Opóźnienie (w 1/50 częściach sekundy, a w USA w 1/60 częściach sekundy) pomiędzy kolejnymi powtórzeniami wciśniętego klawisza: początkowo 5.

N2

23563

DEFADD

Adres argumentów funkcji zdefiniowanej przez użytkownika, jeśli taka jest obliczana; inaczej 0.

Nl

23565

K DATA

Przechowuje drugi bajt sekwencji sterującej kolorem, wprowadzonej z klawiatury.

N2

23566

TVDATA

Przechowuje bajty koloru, znaki sterujące AT i TAB przesyłane na ekran.

X38

23568

STRMS

Adresy kanałów podłączonych do strumieni.

2

23606

CHARS

256 mniej niż adres zestawu znaków (który rozpoczyna się od spacji i idzie dalej aż do symbolu ©). Zwykle w ROM, lecz możesz stworzyć własny zestaw znaków w pamięci RAM i ustawić CHARS tak, aby na niego wskazywało.

1

23608

RASP

Długość dźwięku ostrzeżenia - brzęczyka.

1

23609

PIP

Długość kliku klawiatury.

1

23610

ERR NR

1 mniej niż kod raportu. Zaczyna się od 255 (dla 0), zatem PEEK 23610 daje 255.

X1

23611

FLAGS

Różne znaczniki sterujące systemem BASIC.

X1

23612

TV FLAG

Znaczniki związane z wyświetlaniem obrazu.

X2

23613

ERR SP

Adres na stosie maszynowym, który ma być użyty jako powrót przy błędzie.

N2

23615

LIST SP

Adres powrotu z automatycznego listowania.

N1

23617

MODE

Określa kursor  K ,  L ,  C ,  E  lub  G .

2

23618

NEWPPC

Numer wiersza, do którego ma byc wykonany skok.

1

23620

NSPPC

Numer polecenia w wierszu, do którego będzie wykonany skok. Zmiana najpierw NEWPPC, a następnie NSPPC wymusza skok do określonego polecenia w wierszu.

2

23621

PPC

Numer wiersza aktualnie wykonywanego polecenia.

1

23623

SUBPPC

Numer polecenia wewnątrz wiersza, które jest aktualnie wykonywane.

1

23624

BORDCR

Kolor brzegu * 8, zawiera również atrybuty używane zwykle w dolnej części ekranu.

2

23625

E PPC

Numer bieżącego wiersza (z kursorem programu).

X2

23627

VARS

Adres zmiennych języka BASIC.

N2

23629

DEST

Adres zmiennej, której przypisywana jest wartość.

X2

23631

CHANS

Adres danych kanałowych.

X2

23633

CURCHL

Adres informacji bieżąco używanej do wprowadzania i wyprowadzania.

X2

23635

PROG

Adres programu w języku BASIC.

X2

23637

NXTLIN

Adres następnego wiersza w programie.

X2

23639

DATADD

Adres końca danych na ostatniej liście polecenia DATA.

X2

23641

E LINE

Adres wpisywanego polecenia.

2

23643

K CUR

Adres kursora.

X2

23645

CH ADD

Adres następnego znaku do zinterpretowania: znak za argumentem PEEK lub NEWLINE na końcu polecenia POKE.

2

23647

X PTR

Adres znaku za znacznikiem ?.

X2

23649

WORKSP

Adres tymczasowego obszaru roboczego.

X2

23651

STKBOT

Adres spodu stosu kalkulatora.

X2

23653

STKEND

Adres początku obszaru zapasowego.

N1

23655

BREG

Rejestr b kalkulatora.

N2

23656

MEM

Adres obszaru używanego na pamięć kalkulatora. (Zwykle MEMBOT, lecz nie zawsze.)

1

23658

FLAGS2

Więcej znaczników

X1

23659

DF SZ

Liczba wierszy (łącznie z jednym pustym wierszem) w dolnej części ekranu.

2

23660

S TOP

Numer górnego wiersza programu na automatycznym listingu.

2

23662

OLDPPC

Numer wiersza, do którego skacze CONTINUE.

1

23664

OSPCC

Numer polecenia wewnątrz wiersza, do którego skacze CONTINUE.

N1

23665

FLAGX

Różne znaczniki.

N2

23666

STRLEN

Długość łańcucha w czasie przypisywania.

N2

23668

T ADDR

Adres następnego elementu w tablicy składniowej (mało użyteczne).

2

23670

SEED

Ziarno pseudolosowe dla RND. Jest to zmienna ustawiana przez RANDOMIZE.

3

23672

FRAMES

3 bajty (najmniej znaczący pierwszy) licznika ramek obrazu. Zwiększane co 20ms. Zobacz do Rozdziału 18.

2

23675

UDG

Adres pierwszej grafiki definiowanej przez użytkownika. Na przykład możesz go zmienić, aby zaoszczędzić pamięć przy mniejszej liczbie zdefiniowanych grafik.

1

23677

COORDS

Współrzędna x ostatnio namalowanego punktu na ekranie.

1

23678

 

Współrzędna y ostatnio namalowanego punktu na ekranie.

1

23679

P POSN

33 kolumnowy numer pozycji drukarki.

X2

23680

PR CC

Pełny adres następnej pozycji dla LPRINT do druku (w buforze drukarki ZX Printer). Dozwolone wartości to 5B00 ... 5B1F. (Nie używane w trybie 128K lub po podłączeniu niektórych urządzeń zewnętrznych.)

2

23682

ECHO E

33 kolumnowy numer i 24 wierszowy numer (w dolnej połowie) końca bufora wprowadzania danych.

2

23684

DF CC

Adres pozycji PRINT w obszarze ekranu.

2

23686

DFCCL

Jak DF CC, lecz dla dolnej części ekranu.

X1

23688

S POSN

33 kolumnowy numer pozycji PRINT.

X1

23689

 

24 wierszowy numer pozycji PRINT.

X2

23690

SPOSNL

Jak S POSN, lecz dla dolnej części ekranu.

1

23692

SCR CT

Zlicza przesunięcia wierszy ekranu w górę: ma zawsze wartość o 1 większą od liczby przesunięć, które zostaną wykonane przed zatrzymaniem z napisem scroll? Jeśli będziesz tu ciągle wstawiał wartość większą od 1 (powiedzmy 255), to ekran będzie się przewijał i przewijał bez pytanie cię o zgodę.

1

23693

ATTR P

Stałe, bieżące kolory, itp. (ustawione przez polecenia sterujące kolorami).

1

23694

MASK P

Używane przy kolorach przezroczystych, itp. Każdy bit ustawiony na 1 oznacza, że odpowiadający mu atrybut nie będzie brany z ATTR P, lecz z tego, co jest aktualnie na ekranie.

N1

23695

ATTR T

Tymczasowe, bieżące kolory, itp. (ustawione przez elementy kolorów w poleceniach PRINT, DRAW itd.)

N1

23696

MASK T

Jak MASK P, lecz tymczasowe.

1

23697

P FLAG

Dalsze znaczniki.

N30

23698

MEMBOT

Obszar pamięci kalkulatora; używany do przechowywania liczb, których nie można wygodnie umieścić na stosie kalkulatora.

2

23728

NMIADD

To jest adres adresu przerwania NMI dostarczony przez użytkownika, który jest odczytywany przez standardowy program w ROM, gdy urządzenie zewnętrzne aktywuje przerwania NMI. Prawdopodobnie celowo wyłączony, aby w efekcie spowodować reset, jeśli obie komórki zawierają 0, lecz nic nie robić, gdy zmienna zawiera wartość różną od zera.

Interface 1 o numerze seryjnym większym od 87315 inicjuje te komórki na 0 i 80, aby pozwolić kanałowi "T" RS232 uzywać zmiennej długości wiersza. 23728 jest bieżącą pozycją druku, a 23729 szerokością wiersza — standardowo 80.

2

23730

RAMTOP

Adres ostatniego bajtu obszaru pamięci dla systemu BASIC.

2

23732

P RAMT

Adres ostatniego bajtu fizycznej pamięci RAM.

 

Ten program wyświetli ci 22 pierwsze bajty obszaru zmiennych języka BASIC

 

10 FOR n=0 TO 21
20 PRINT PEEK (PEEK 23627+256*PEEK 23628+n)
30 NEXT n

 

Postaraj się odszukać zmienną sterującą n. Teraz zmień wiersz 20 na

 

20 PRINT PEEK (23755+n)

 

Teraz otrzymasz pierwsze 22 bajty obszaru programu. Porównaj je z programem w pamięci komputera.

 

 


   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.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe