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

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

ROZDZIAŁ 23 – Gdy zaczyna brakować pamięci

Dzieją się dziwne rzeczy

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Ł 23 – Gdy zaczyna brakować pamięci

ZX81 posiada ograniczoną ilość wewnętrznej pamięci, a nie trudno ją zapełnić. Najlepszym dowodem na to, iż to się właśnie dzieje jest zwykle komunikat 4, lecz mogą zdarzyć się również inne rzeczy, a niektóre z nich są raczej dziwne. Dokładne zachowanie się komputera uzależnione jest od tego, czy masz dołączone rozszerzenie pamięci, czy też nie, zatem najpierw załóżmy, iż nie masz. Jeśli masz, to je zdejmij (po wyłączeniu najpierw komputera).

Bufor wyświetlania, to jest obszar wewnątrz komputera, gdzie przechowuje on obraz telewizyjny, jest sprytnie zaprojektowany, tak aby zabierał tylko tyle miejsca w pamięci, ile jest potrzebne na to, co dotychczas zostało wydrukowane na ekranie: wiersz ekranowy może zawierać do 32 znaków plus znak NEWLINE. Oznacza to, iż może ci zabraknąć pamięci przy drukowaniu na ekranie, a najczęściej zdarza się to przy listowaniu programu. Wpisz

NEW
DIM
A(150)
10 FOR N=1 TO 15
20 PRINT N

Tu pojawia się pierwsza niespodzianka: wiersz 10 znika z listingu. Listing zostaje ograniczony do bieżącego wiersza 20 i nie ma miejsca na oba wiersze. Teraz wpisz:

30 NEXT N

Znów, na listingu jest tylko miejsce dla wiersza 30. Teraz wpisz:

40 REM(bez NEWLINE)

a zobaczysz jak znika wiersz 30 i wiersz 40 skacze na górę ekranu. Nie został on wstawiony do programu - wciąż masz kursor  L   i możesz nim poruszać. Widziałeś jedynie w działaniu prosty mechanizm porzucania dolnych 24 wierszy ekranu w celu odzyskania nieco pamięci. Teraz wpisz:

XXXXXX  (wciąż bez NEWLINE)

a kursor zniknie - nie ma miejsca na wyświetlenie go. Wpisz jeszcze jedno X, bez NEWLINE, a zniknie jedno z X. Teraz wpisz NEWLINE. Zniknie wszystko, lecz program wciąż jest w komputerze, co można udowodnić usuwając wiersz 10 i używając klawiszy obrazekobrazek. Teraz wpisz:

10 FOR N=1 TO 15

znów - przesunie się na górę ekranu jak poprzednio zrobił to wiersz 40. Lecz gdy spróbujesz nacisnąć NEWLINE, wiersz nie zostanie wstawiony, chociaż nie będzie komunikatu o błędzie ani nie pojawi się znacznik  S  informujący, iż coś jest źle. Jest to wynikiem braku miejsca na sprawdzenie składni wiersza, co zwykle zdarza się wierszom zawierającym liczby (inne niż numery wiersza na początku).

Jedynym lekarstwem jest zrobienie nieco miejsca w jakiś sposób, lecz najpierw usuń wiersz 10, który nie chce wejść. Naciśnij EDIT: ekran stanie się pusty, ponieważ brakuje miejsca na sprowadzenie wiersza w dół do edycji.

Gdy EDIT nie działa, czasami udaje się zrobić nieco miejsca wpisując kilka spacji aż kursor pójdzie w górę ekranu.

Naciśnij NEWLINE, a otrzymasz z powrotem część listingu. Teraz usuń wiersz 40 (którego i tak przecież nie chciałeś mieć w programie) wpisując:

40   (oraz NEWLINE)

Teraz spróbuj ponownie wprowadzić wiersz 10 -  wciąż się nie da. Wymaż go ponownie. Wciąż musisz znaleźć gdzieś nieco dodatkowego miejsca. Uświadom sobie, iż powodem odrzucenia wiersza 10 był prawdopodobnie brak pamięci dla sprawdzenia składni dwóch liczb, 1 i 15: zatem jeśli usuniesz chwilowo wiersz 20 z programu, to może będziesz miał miejsce na wprowadzenie wiersza 10 oraz ponowne wprowadzenie usuniętego wiersza 20 (który nie zawiera żadnych liczb). Wypróbuj poniższego sposobu.

Wpisz:

20
10 FOR N=1 TO 15
20 PRINT N

a program jest wprowadzony poprawnie.

Wpisz

GOTO 10

i znów wiersz zostaje odrzucony, ponieważ nie można sprawdzić jego składni, jednakże jeśli go wymażesz i wpiszesz:

RUN

to zadziała (RUN usuwa tablicę dając dużo wolnego miejsca).

Teraz wpisz jeszcze raz wszystko tak samo jak przedtem począwszy od NEW do wiersza 30, a następnie

40 REM XXXXXXXXXXXX

(12 liter X), co zakończy się wyglądając jak 40 RE. Gdy naciśniesz NEWLINE, listing będzie się składał tylko z wiersza 30, a wiersz 40 został zupełnie stracony. Stało się tak dlatego, iż po prostu był on zbyt długi, aby zmieścić się w programie. Efekt ten staje się gorszy, gdy wiersz jest wydłużoną wersją wiersza już znajdującego się w programie, ponieważ wtedy tracisz zarówno stary jak i nowy wiersz, który miał go zastąpić.

Ostatecznym rozwiązaniem tego problemu jest dokupienie modułu pamięci RAM, który wtyka się z tyłu komputera. Moduł Sinclair 16K RAM udostępnia ci szesnaście razy więcej pamięci niż w komputerze bez rozszerzenia.

Jeśli posiadasz stary moduł ZX80 3K RAM, to nie będzie on pracował z ZX81.

Zachowanie z rozszerzeniem pamięci jest trochę inne, ponieważ bufor wyświetlania jest wypełniony spacjami, aby utworzyć każdy wiersz długi na 32 znaki (zwróć uwagę, iż SCROLL zmienia te ustawienie - zobacz do rozdziału 27).  Teraz drukowanie lub wyświetlanie listingu nie spowoduje braku pamięci w komputerze, a ty nie zobaczysz tych skróconych listingów i skaczących wierszy; lecz zobaczysz utknięte wiersze lub stracone, a jedynym ratunkiem będzie znalezienie nieco wolnego miejsca.

Jeśli posiadasz rozszerzenie pamięci, to podłącz je i przejdź do wpisywania w początkowej części tego rozdziału używając:

DIM A(3069)

zamiast

DIM A(150)

Podsumowując, to pogmatwana historia, której morał jest taki: unikaj całkowitego zapchania komputera, jeśli tylko możesz. Drugi morał jednakże pokazuje, iż nie wszystko jest takie złe, na jakie wygląda.

  1. Jeśli listing zaczyna się skracać lub wiersze skaczą do góry, to miejsca w pamięci jest coraz mniej.
  2. Jeśli NEWLINE przestanie działać na końcu wiersza, to prawdopodobnie brakuje miejsca na zajęcie się liczbami. Wymaż ten wiersz używając EDIT-NEWLINE lub RUBOUT.
  3. Wciśnięcie NEWLINE może spowodować utratę całego wiersza.

Dla wszystkich tych dziwności lekarstwo jest takie samo. Nie panikuj, lecz poszukaj wolnego miejsca.

Pierwszym do rozważenia jest polecenie CLEAR. Jeśli masz kilka zmiennych, na których ci nie zależy, to to należy zrobić.

Jeśli to nie rozwiąże sytuacji, poszukaj w programie zbędnych poleceń, takich jak polecenia REM i wykasuj kilka z nich.

Podsumowanie

Gdy pamięć się zapełnia, dzieją się dziwne rzeczy, lecz zwykle nie są one beznadziejne.


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
©2024 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.