Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Tłumaczenie: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
Jak umieścić twoje programy na taśmie
kasetowej
SAVE, LOAD, VERIFY. MERGE
SPIS TREŚCI |
|
Podstawowe sposoby używania magnetofonu kasetowego do zapisu (SAVE), ładowania (LOAD) i weryfikowania (VERIFY) programów zostały podane w broszurze wprowadzającej. Powinieneś się z nimi tam zapoznać, zanim przejdziesz do czytania tego rozdziału.
Widzieliśmy, że LOAD wymazuje stary program i jego zmienne z komputera, zanim rozpocznie ładowanie nowego z taśmy; istnieje inne polecenie, MERGE, które tego nie robi. MERGE tylko wtedy usuwa wiersz programu lub zmienną, jeśli musi, ponieważ jest nowy wiersz z takim samym numerem lub nowa zmienna o takiej samej nazwie. Wpisz program 'kostki' z Rozdziału 11 i zapisz go na taśmie jako "kostka". Teraz wprowadź i uruchom:
1 PRINT 1 2 PRINT 2 10 PRINT 10 20 LET x=20 |
a następnie postępuj tak samo jak przy weryfikacji, lecz zamień polecenie VERIFY "kostka" za pomocą:
MERGE "kostka" |
Jeśli wylistujesz program, zobaczysz, że wiersze 1 i 2 przetrwały, lecz wiersze 10 i 20 zostały zastąpione wierszami z programu kostki. Zmienna x również przetrwała (spróbuj PRINT x).
Dotychczas widziałeś proste postacie tych czterech poleceń używanych z magnetofonem kasetowym:
SAVE zapisuje program i zmienne na taśmie.
VERIFY sprawdza program i zmienne na taśmie z programem i zmiennymi w komputerze.
LOAD czyści komputer z całego zapisanego w nim programu i zmiennych, a następnie zamienia je programem i zmiennymi odczytanymi z kasety.
MERGE jest jak LOAD z wyjątkiem tego, że nie czyści starego programu i zmiennych, a jedynie zastępuje stare wiersze nowymi z taśmy oraz stare zmienne nowymi, jeśli ich numery wierszy lub nazwy są takie same.
W każdym z nich po słowie kluczowym występuje łańcuch tekstowy: dla SAVE dostarcza on nazwy programu do zapisu na taśmie, natomiast dla pozostałych trzech informuje on komputer, jaki program ma znaleźć. Podczas szukania wypisuje on nazwę każdego napotkanego programu. Istnieje dla tych poleceń kilka usprawnień.
Po VERIFY, LOAD i MERGE możesz umieścić pusty łańcuch jako nazwę do wyszukania: wtedy komputer nie troszczy się o tę nazwę, lecz bierze pierwszy napotkany program.
Wariant SAVE przyjmuje postać:
SAVE łańcuch LINE liczba |
Program zapisany z użyciem tego automatycznie uruchamia się od podanego numeru wiersza po załadowaniu rozkazem LOAD (lecz nie MERGE).
Jak dotąd, jedynym zapisywanym na kasecie rodzajem informacji były programy wraz z ich zmiennymi. Oprócz nich są jeszcze dwa inne rodzaje, zwane tablicami i bajtami.
Tablice są obsługiwane nieco inaczej:
Możesz zapisywać tablice na taśmie przy pomocy DATA w poleceniu SAVE:
SAVE łańcuch DATA nazwa tablicy() |
Łańcuch jest nazwą, którą otrzyma ta informacja na taśmie i działa to identycznie jak przy zapisie programów.
Nazwa tablicy określa tablicę, którą chcesz zachować, jest zatem jedynie literą lub literą z kolejnym znakiem $. Pamiętaj o zakończeniu tej nazwy za pomocą nawiasów: mógłbyś sądzić, że są one logicznie zbędne, lecz wciąż je należy tam umieszczać, aby ułatwić pracę komputerowi.
Musisz rozróżniać oddzielne role łańcucha i nazwy tablicy. Jeśli wpiszesz (przykładowo)
SAVE "ceny" DATA c() |
To SAVE weźmie tablicę c z komputera i zapisze ją na taśmie pod nazwą "ceny". Gdy wpiszesz:
VERIFY "ceny" DATA c() |
to komputer poszuka tablicy zapisanej na taśmie pod nazwą "ceny" (gdy ją znajdzie, wypisze na ekranie "Number array: ceny"), a następnie zweryfikuje ją z tablicą c w komputerze.
LOAD "ceny" DATA c() |
odszuka tablicę na taśmie, a następnie — jeśli jest na to miejsce w komputerze — usunie istniejącą tablicę o nazwie c i wczyta nową z taśmy, nazywając ją c.
Dla zapisanych tablic nie możesz używać polecenie MERGE.
W ten sam sposób zapisujesz tablice znakowe (łańcuchy). Gdy komputer przeszukuje taśmę i znajdzie jedną z nich, to wypisze "Character array:" z nazwą znalezionej tablicy. Gdy wczytujesz tablicę znakową, to usunięta zostanie nie tylko dowolna poprzednia tablica znakowa o takiej samej nazwie, lecz również dowolna zmienna łańcuchowa z taką samą nazwą.
Zapis bajtów jest wykorzystywany dla fragmentów informacji bez określania do czego one służą — może być to treść obrazu, grafika definiowana przez użytkownika lub coś, co sobie zrobiłeś dla siebie. Zapis ten wykonuje się za pomocą słowa CODE, jak w:
SAVE "obraz" CODE 16384,6912 |
Jednostką pamięci jest bajt (liczba od 0 do 255), a każdy bajt posiada adres (będący liczbą od 0 do 65535). Pierwszą liczbą za CODE jest adres pierwszego bajtu do zapisania na taśmie, a druga określa liczbę bajtów do zapisania. W naszym przypadku 16384 jest adresem pierwszego bajtu obszaru ekranu (zawierającego obraz telewizyjny), a 6912 jest liczbą bajtów zawartych w tym obszarze, zatem zapisujemy na taśmie kopię obrazu telewizyjnego — wypróbuj to. Nazwa "obraz" działa tak sama jak nazwy dla programów.
Aby załadować obraz z powrotem, użyj:
LOAD "obraz" CODE |
Za CODE możesz umieszczać liczby w postaci:
LOAD nazwa CODE start, długość |
Tutaj długość jest jedynie środkiem bezpieczeństwa; gdy komputer odnajdzie na taśmie bajty o prawidłowej nazwie, to wciąż odmówi ich załadowania, jeśli jest ich więcej niż wynosi parametr długość — jest wtedy widocznie więcej danych niż się spodziewałeś i mogłyby one zapisać coś, czego nie życzysz sobie. Dostaniesz wtedy raport błędów R Tape loading error (R Błąd ładowania z taśmy). Możesz opuścić długość, a wtedy komputer wczyta bajty bez względu na ich liczbę.
Start pokazuje adres, pod który zostanie załadowany pierwszy bajt — może być on inny od adresu użytego do zapisu na taśmie, chociaż w przypadku, gdy są one jednakowe, możesz w poleceniu LOAD opuścić parametr start.
CODE 16384,6912 jest tak użyteczne do zapisu i odczytu obrazu, że możesz zastąpić je za pomocą SCREEN$ — na przykład:
SAVE "obraz" SCREEN$ LOAD "obraz" SCREEN$ |
Jest to rzadki przypadek, dla którego nie zadziała VERIFY — polecenie to wypisuje na ekranie nazwy bloków informacji, które napotka na taśmie, zatem gdy zabierze się do weryfikacji zawartości ekranu z zawartością danych z taśmy, to ekran już jest zmieniony i weryfikacja się nie powiedzie. We wszystkich innych przypadkach zwykle możesz używać VERIFY po rozkazie SAVE.
Poniżej jest pełne podsumowanie czterech poleceń używanych w tym rozdziale.
Nazwa oznacza wyrażenie łańcuchowe i odnosi się do nazwy, pod którą dana informacja jest zapisywana na kasecie. Powinno się ono składać ze znaków drukowalnych ASCII, z których wykorzystywane jest pierwszych dziesięć.
Istnieje cztery rodzaje informacji, które mogą być przechowywane na taśmie: program ze zmiennymi (razem), tablice liczbowe, tablice znakowe i bezpośrednie bajty.
Gdy VERIFY, LOAD i MERGE szukają na taśmie informacji o danej nazwie i danego typu, wypisują na ekranie rodzaj i nazwę wszystkich danych, które napotkają po drodze. Rodzaj jest pokazywany przez napisy "Program:", "Number array:" (tablica liczbowa), "Character array:" (tablica znakowa) i "Bytes:" (bajty). Jeśli nazwa była pustym łańcuchem, to korzystają z pierwszej informacji o pożądanym typie, bez względu na jej nazwę.
Zapisuje informację na taśmie pod podaną nazwą. Błąd F zdarza się, gdy nazwa jest pusta lub zawiera więcej niż 11 znaków.
SAVE zawsze umieszcza na spodzie ekranu wiadomość Start tape, then press any key (Uruchom taśmę, a następnie naciśnij dowolny klawisz) i czeka na naciśnięcie klawisza przed rozpoczęciem zapisywania czegokolwiek.
Sprawdza informację zapisaną na taśmie z informacją znajdującą się już w pamięci. Błąd daje raport R Tape loading error (R Błąd ładowania z taśmy),
Ładuje nową informację z taśmy, usuwając stare dane z pamięci.
Ładuje nową informację z taśmy bez usuwania starej informacji z pamięci.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 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.