PATCHERProgram 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
|