Tajemnice ATARI

PATCHER

    Większość czasopism komputerowych publikuje od czasu do czasu poprawki do różnych programów (najczęściej gier), zwane żargonowo "pokami". Owocuje to zwykle setkami listów od zrozpaczonych czytelników, którzy nie potrafią tych poprawek dokonać.

   Program PATCHER (czytaj: paczer) umożliwia poprawienie programu, bez jakichkolwiek dodatkowych wiadomości czy narzędzi. Potrzebna jest tylko łata, czyli zestaw danych w wierszach DATA, przygotowany przez autora poprawki. Każdy poprawiany bajt opisany jest trzema liczbami: odległość bajtu od początku pliku, dotychczasowa wartość, nowa wartość. Dzięki podaniu starej wartości PATCHER może sprawdzić, czy łatamy właściwy plik.

   Przykład użycia PATCHER-a znajduje się na następnej stronie. Będziemy publikować ciekawe poprawki do ciekawych programów, lecz apelujemy, nie przysyłajcie "wiecznych żyć".

   Po przepisaniu programu nagrywamy go na nośnik rozkazem LIST. Następnie przepisujemy wiersze poprawki i dogrywamy PATCHER instrukcją ENTER.

   Uruchomiony program pyta o nazwę pliku do poprawienia. Po udanej transmisji, gdy plik zostanie wczytany i zidentyfikowany jako właściwy, program zapyta o nazwę pod jaką ma poprawiony plik zapisać. Dla magnetofonu piszemy C:, a w przypadku dysku D:nazwa.

   Poprawkę można cofnąć po zamianie miejscami w każdej trójce danych drugiej i trzeciej liczby. Sam PATCHER bez łaty może służyć jako kopier.

1 REM ............................
2 REM |        'PATCHER'         |
3 REM |    Autor: Marek Pasek    |
4 REM | (c) 1991 Tajemnice Atari |
5 REM ............................
6 REM 
10 DIM IO$(7),F$(15):IO$="hhh*LVd"
20 L=FRE(0)-32768*(FRE(0)>32767)-1024
30 DIM P$(L):P=ADR(P$)
40 MSB=INT(P/256):SLEN=INT(L/256)
50 MLEN=L-256*SLEN:LSB=P-256*MSB
60 ? "Plik do odczytu ":INPUT F$
70 OPEN #2,4,128,F$:POKE 866,7
80 POKE 868,LSB:POKE 869,MSB
90 POKE 872,MLEN:POKE 873,SLEN
100 X=USR(ADR(IO$),32)
110 IF PEEK(867)<>1 THEN 130
120 ? "Zbyt wielki plik!$)":END 
130 IF PEEK(867)=136 THEN 150
140 ? "Niepoprawna transmisja!$)":END 
150 CLOSE #2:TRAP 210
160 MLEN=PEEK(872):SLEN=PEEK(873)
170 READ AD,OBT,BT
180 IF PEEK(P+AD)=OBT THEN 200
190 ? "To nie jest ten plik!$)":END 
200 POKE P+AD,BT:GOTO 170
210 ? "Plik do zapisu ":INPUT F$
220 OPEN #2,8,128,F$:POKE 866,11
230 POKE 872,MLEN:POKE 873,SLEN
240 POKE 868,LSB:POKE 869,MSB
250 X=USR(ADR(IO$),32)
260 ? "Gotowe.":END 


Marek Pasek



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001