Poradnik młodego pirata cz. 4

Uff!

Po tak solidnej dawce teorii warto by było trochę odpocząć i przejść do nieco innej tematyki — jakie programy nadają sie do przepisania na taśmę.

 

 

 

Generalną zasadą powinno być uprzednie dobre poznanie danego programu, zanim przystąpi się do prób jego przeniesienia na kasetę. Należy przy tym zwrócić uwagę na następujące szczegóły:

  • czy komputer W TRAKCIE działania programu kontaktuje się ze stacją dysków?
  • czy komputer PO ZAKOŃCZENIU nie zapisuje wyników w jakimś zbiorze na dysku?

W pierwszym wypadku; dla wszystkich nie znających języka maszynowego mamy propozycję — przekonajcie sami siebie, że tak naprawdę to wcale Wam za bardzo nie zależy na tym programie. Taki program będzie wymagał na pewno sporych przeróbek, co jest możliwe, ale dla bardziej wtajemniczonych. W drugim wypadku należy po prostu wyłączyć/stację dysków z sieci przed zapisaniem wyników; jeżeli po próbie ich zapisania komputer nie zablokował się i gra wróciła do początku — taki program na taśmie da się zapisać.

W większości wypadków programy jednoczęściowe dają się przenieść bez większych problemów, oczywiście pod warunkiem poprawnego wykonania tej operacji. Dotyczy to wszystkich programów zaczynających się od adresu 2048 i uruchamianych za pomocą RUN. Z naszych obserwacji wynika, że bardzo ważny jest program przyspieszający.

Jak już wiesz, istnieją także programy, które należy wczytywać za pomocą

LOAD „NAZWA”, 8,

1. W takim wypadku należy zawsze sprawdzić najpierw adres pamięci, od jakiego program zaczyna się wczytywać. W tym celu trzeba posłużyć się podstępem i potraktować nasz program jako zbiór; sztuczka polega na odczytaniu dwóch pierwszych bajtów zawierających adres wczytywania.

Tytuł programu musi być wprowadzony dokładnie tak samo jak na dysku, w przeciwnym wypadku otrzymasz bzdury. Mamy już więc nasz adres i ... jednocześnie następny problem. Przypuśćmy, że otrzymałeś adres 680. W tej sytuacji Czytelników bez przygotowania w zakresie języka maszynowego odsyłamy do przedstawionego już rozwiązania — zrezygnowania z prób przegrywania. Takie programy bowiem zmieniają najczęściej wektory ważnych procedur systemu operacyjnego i wymagają bardzo dokładnej analizy pomijając już fakt samouruchamiania; jeżeli ktoś bardzo będzie chciał „rozgryzać” taki program np. poprzez likwidację samouruchamiania to musi robić to bezpośrednio na dyskietce, a nie w pamięci komputera. Inna metoda to zastosowanie dobrego monitora języka maszynowego. Uprzedzamy w każdym razie, że nad takimi programami trzeba się nieźle nabiedzić, a najbardziej potrzebna będzie tu wiedza o komputerze i jego systemie operacyjnym.

Przejdźmy teraz do programów kilkuczęściowych — dużo takich programów bowiem można spotkać na dyskietkach i niektóre z nich są dość łatwe do przeniesienia na taśmę, co wcale nie znaczy, że będzie to proste! Wyobraźmy sobie, że chcemy przenieść na taśmę dwuczęściowy program składający się z krótkiego programu wczytującego oraz właściwego programu:

10 LOAD „ABCD”,8,1 20 SYS 3945

Linia 20 mówi nam wyraźnie, od której komórki program się uruchamia; jego przeniesienie na taśmę powinno wyglądać następująco: 1. Wczytaj do pamięci program MASTER (lub podobny, używany przez Ciebie, o którym wiesz, że działa jak ww.);

2. Uruchom go; następnie wykonaj NEW <RETURN>;

3. Wpisz do pamięci następującą linijkę: 10 SYS 3945 <RETURN>

4. Wczytaj główną część programu za pomocą LOAD „ABCD”, 8, 1

5. Sprawdź wartości w komórkach 43-46; jeżeli otrzymałeś 1, 8, 3, 8 to musisz wrócić do punktu 2;

6. Jeżeli dwie ostatnie wartości są różne od podanych powyżej, to możesz już zapisać taki program na taśmie.

Czasami zdarza się jednak, że adres początku programu wynosi np. 25000; wtedy masz do wyboru następujące możliwości:

  • albo zapiszesz cały program w postaci jednego bloku, w skład którego wejdzie 23K zbędnej pamięci (co na pewno jest łatwiejsze, wydłuża jednak czas wczytywania programu);
  • możesz także wczytać monitor języka maszynowego i próbować przenieść program bliżej początku pamięci co niestety nie zawsze będzie możliwe.

W praktyce zawsze jest bezpieczniej zapisać nawet bardzo dużą „dziurę” gdyż bez dokładnego zbadania programu nie można stwierdzić czy nie będzie on w trakcie działania z „dziury” tej korzystał.

W podobny sposób można „składać” programy, które mają zapisane na dysku oddzielnie sam program i oddzielnie sprite’y oraz dane np. muzyczne. Procedura przenoszenia ich na taśmę jest w zasadzie taka sama z tym, że najpierw należy stworzyć ze wszystkich części (oczywiście po sprawdzeniu ich adresów wczytywania) jeden blok, który następnie zapisujemy na wolnym dysku za pomocą SAVE „NAZWA”, 8, 1. Przy okazji dobrą metodą jest wgrywanie każdej części osobno i sprawdzanie wartości w komórkach 45 i 46 — w ten sposób otrzymamy informację, która z części określa koniec programu. Załóżmy, że nasze programy mają następujące adresy początkowe i końcowe:

  • część 1 — 3000 do 24000
  • część 2 — 32768 do 39000
  • część 3 — 26000 do 32767

W takiej sytuacji po zgraniu wszystkich części należy ustawić jako adres końca programu 39000; po ustawieniu adresu początku (na 2049) należy zapisać na dysku jeden blok od 2049 do 39000.

Odrębne zagadnienie stanowią programy, które mają krótki program maszynowy jako program wczytujący pozostałe części. Konieczne jest wtedy określenie adresu komórki pamięci, od której program się uruchamia; dla nieznających języka maszynowego jest to prawie niemożliwe tak więc pozwolimy sobie pominąć, gdyż nie zaliczają się one do programów NIEKTÓRYCH. Z tego samego powodu pomijamy również programy samou-ruchamiające się.

(Ted)