Rozdział 27 - Organizacja pamięci

Pamięć dzieli się na różne obszary przechowujące różne rodzaje danych. Obszary te są tylko tak duże, aby mieściły się w nich dane, które w danym momencie przechowują, a jeśli wstawisz ich więcej w danym punkcie (na przykład przez dodanie wiersza programu lub zmiennej) to miejsce zostanie zrobione przez przesunięcie w górę wszystkiego ponad tym punktem. Odwrotnie, gdy usuwasz dane, wszystko na d tym punktem jest przesuwane w dół.

Zmienne systemowe zawierają różne elementy danych, które informują komputer o jego stanie. Zostały one w pełni opisane w następnym rozdziale, lecz na tę chwilę zwróć uwagę, iż niektóre z nich (zwane D_FILE, VARS, E_LINE itd.) zawierają adresy granic pomiędzy różnymi obszarami w pamięci. To nie są zmienne języka BASIC, a ich nazwy nie zostaną rozpoznane przez komputer.

Każdy wiersz w programie przechowywany jest jako:

Zwróć uwagę, iż w przeciwieństwie do wszystkich pozostałych przypadków dwubajtowych liczb w Z80 numer wiersza tutaj (a również w zmiennej sterującej pętli FOR-NEXT) jest przechowywany z najbardziej znaczącym bajtem jako pierwszym, tzn. w kolejności ich zapisu.

Stała liczbowa w programie jest zakończona swoją postacią binarną przy pomocy znaku CHR$ 126, za którym następuje pięć kolejnych bajtów jej reprezentacji zmiennoprzecinkowej.

Bufor wyświetlania jest kopią w pamięci obrazu telewizyjnego. Rozpoczyna się od znaku NEWLINE, a następnie zawiera dwadzieścia cztery wiersze tekstu, każdy zakończony za pomocą NEWLINE. System ten jest tak zaprojektowany, że wiersz nie wymaga przestrzeni dla pełnych trzydziestu dwóch znaków: końcowe spacje mogą zostać pominięte. Ma to na celu zaoszczędzenie pamięci, gdy jest jej mało.

Gdy całkowita ilość pamięci (zgodnie ze zmienną systemową RAMTOP) jest mniejsza od 3 1/4 K, wtedy pusty ekran - ustawiony na początku pracy komputera lub przez polecenie CLS - składa się jedynie z dwudziestu pięciu znaków NEWLINE. Gdy pamięć jest większa, pusty ekran jest rozwijany w pełni do 24*32 spacji i pozostaje przy tym rozmiarze; jednakże polecenie SCROLL w pewnych warunkach, gdy dolna część ekranu rozwija się na więcej niż dwa wiersze, może to zmienić wstawiając na spodzie skrócone wiersze.

Zmienne mają różne formaty zgodnie z ich różną naturą.

Zmienna liczbowa o nazwie zbudowanej tylko z jednej litery:

Zmienna o nazwie dłuższej niż jeden znak:

Tablica liczb:

Kolejność elementów jest następująca:

najpierw elementy o pierwszym indeksie równym 1
później elementy o pierwszym indeksie równym 2
później elementy o pierwszym indeksie równym 3
itd. dla wszystkich kolejnych wartości pierwszego indeksu.

Elementy o danym pierwszym indeksie są uporządkowane tak samo względem drugiego indeksu itd. aż do ostatniego indeksu.

Przykładowo elementy tablicy B o wymiarach 3 x 6 z rozdziału 22 są przechowywane w kolejności:

B(1,1),B(1,2),B(1,3),B(1,4),B(1,5),B(1,6),B(2,1),B(2,2),...,B(2,6),B(3,1),B(3,2),...,B(3,6).

 

Zmienna sterująca pętli FOR-NEXT:

Łańcuch:

Tablica znaków:

Obszar pod adresem E_LINE zawiera wpisywany wiersz (jako rozkaz, wiersz programu lub dane dla polecenia INPUT) jak również nieco obszaru roboczego.

Kalkulator jest częścią systemu BASIC zajmującą się arytmetyką, a przetwarzane liczby są w większości przechowywane na stosie kalkulatora.

Wolny obszar zawiera przestrzeń pamięci, która dotąd nie została jeszcze wykorzystana.

Stos maszynowy jest używany przez układ scalony mikroprocesora Z80 do przechowywania danych oraz adresów powrotnych z procedur.

Stos GOSUB był wspomniany w rozdziale 14.

Miejsce dla procedur USR musi być osobno ustawione przez ciebie przy wykorzystaniu rozkazu NEW, co opisano w ostatnim rozdziale.

 

 


   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