Tajemnice ATARI

6 STRONA


SCRAP LOADER


   Przedstawiony program pozwala odzyskiwać uszkodzone programy lub ich fragmenty z plików zapisanych na taśmie rozkazem CSAVE. Zdarza się bowiem nieraz, że plik taki ulegnie "podkasowaniu" w pobliżu końca (np. wskutek pomyłki w ustawieniu licznika) i choć większość programu jest na kasecie, nie da się w zwykły sposób odczytać.

   Po przepisaniu poniższego programu należy go nagrać na taśmę, ponieważ podczas wykonywania swojego zadania "odzyskiwacz" zostanie skasowany. Uruchomiony program prosi pojedynczym sygnałem o wczytanie wadliwego programu. Po dojściu do uszkodzenia lub końca komputer przez kilka sekund wydaje dźwięki wyrażające jego niezadowolenie, po czym wyświetla listing odzyskanego programu. Pojawiający się przy tym komunikat o błędzie nr 15 może martwić już tylko malkontentów.

   Kilka słów o sposobie działania: Uszkodzony program, traktowany jako ciąg bajtów, zostaje wczytany przez kanał # 1 pod typowy dla Basicu adres 1792 + 256. Następnie "odzyskiwacz" odczytuje z nagłówka programu adres tablicy zmiennych, odnajduje rozmiar pierwszego wiersza i dalej, odliczając długości kolejnych wierszy, poszukuje końca programu. Ostatni, uszkodzony wiersz zostanie zastąpiony przez rozkaz LIST w trybie bezpośrednim, po czym do stosownych komórek na stronie zerowej wpisywane są wektory odzyskanego programu, a na zakończenie wyświetla się pełny jego listing.


Marek Omirski


   Od redakcji: Program ten jest dostosowany do standardowej konfiguracji ATARI z magnetofonem. Nie będzie więc działał poprawnie w obecności DOS-ów, COS-ów, systemów TURBO, itd.

10 REM *----------------------------*
20 REM : Scrap Loader               :
30 REM : autor: Marek Omirski       :
40 REM : (c) 1992 Tajemnice ATARI   :
50 REM *----------------------------*
60 A=1536:TRAP 80
70 READ B:POKE A,B:A=A+1:GOTO 70
80 A=USR(1536)
100 REM -----------------------------
110 DATA 104,32,32,244,169,12,133,85
120 DATA 162,241,160,6,32,66,198,162
130 DATA 16,169,215,32,179,6,169,225
140 DATA 32,179,6,169,60,141,2,211
150 DATA 173,89,3,208,11,162,66,160
160 DATA 196,32,66,198,32,140,183,96
170 DATA 216,24,105,8,141,89,3,173
180 DATA 250,7,105,2,133,203,173,251
190 DATA 7,105,7,133,204,32,201,6,176
200 DATA 219,164,203,132,205,164,204
210 DATA 132,206,160,0,177,203,240,14
220 DATA 24,101,203,133,203,144,2,230
230 DATA 204,32,201,6,144,228,56,165
240 DATA 205,233,2,133,205,133,138
250 DATA 176,2,198,206,160,5,185,235
260 DATA 6,145,205,136,16,248,162,9
270 DATA 24,189,242,7,105,7,149,128
280 DATA 202,189,242,7,149,128,202,16
290 DATA 239,24,165,205,105,6,133,140
300 DATA 133,142,165,206,133,139,105
310 DATA 0,133,141,133,143,24,165,140
320 DATA 105,16,133,144,165,141,105,0
330 DATA 133,145,32,181,180,141,185,6
340 DATA 160,9,185,0,6,201,255,240,3
350 DATA 153,82,3,136,16,243,32,86
360 DATA 228,96,24,165,204,205,89,3
370 DATA 208,5,165,203,205,88,3,96,3
380 DATA 255,206,187,255,255,2,0,4
390 DATA 128,7,255,242,7,255,255,0
400 DATA 148,255,255,0,128,6,6,4,22
410 DATA 211,227,242,225,240,160,204
420 DATA 239,225,228,229,242,155

PIŁKA


   Kolejny już w TA program Rafała Mantiuka ze Szczecina imituje lot piłki odbijającej się o brzegi ekranu i o paletkę, którą możemy poruszać za pomocą joysticka. Program wykorzystuje przerwanie VBLANK i działa niezależnie od sterującego programu w Basicu, umożliwia więc stworzenie w prosty sposób własnej gry typu "Arkanoid".

10 DIM A$(26):A=1536:TRAP 90
20 TRAP 60:READ A$:I=1:H=0:TRAP 20
30 N=ASC(A$(I))-48:N=N-7*(N>9):I=I+1
40 X=16*X+N:H=1-H:IF H=1 THEN 30
50 POKE A,X:X=0:A=A+1:GOTO 30
60 END 
1000 DATA 68A20086CEE886CF8E6F028E0A
1010 DATA D0E886D08E1DD0A92E8D2F02A9
1020 DATA 648D07D4A93285CDA9788D02D0
1030 DATA 85D1A0FFA900998F6688D0FAA9
1040 DATA FF8D61678D6267A044A206A907
1050 DATA 4C5CE4A5CCF052A5CD1865CF85
1060 DATA CDC9329004C9C89009A5CF49FF
1070 DATA 18690185CFA5CE1865D085CEF0
1080 DATA 0DC957B009AD0DD0F025A5D030
1090 DATA 1EA5D049FF18690185D0A6CEF0
1100 DATA 14AD0DD085CBF00D8A1865D065
1110 DATA D065D085CE8D1ED020C306AD78
1120 DATA 02C90FF01FC90BD00BA5D1C933
1130 DATA 9015A9FD4CB806A5D1C9BEB00A
1140 DATA A9031865D185D18D82D04C62E4
1150 DATA A209A4CEBDD706998F66C8CA10
1160 DATA F6A5CD8D01D060000000183C3C
1170 DATA 18000000

   Uaktywnienie programu następuje po wykonaniu

X=USR(1536)

a wyłącza się go klawiszem RESET. Piłkę uruchamia się rozkazem

POKE 204,1

zaś wyłącza przez

POKE 204,0

   Wartość 0 w komórce 203 oznacza kolizję piłki z dolną ścianą. Komórki 207 i 208 zawierają prędkość piłki odpowiednio w poziomie i w pionie (dla ruchu w lewo i w górę wpisuje się 256-prędkość). W płonie nie należy przekraczać prędkości 3, a w poziomie 7.

   Autor dołącza krótki przykład zastosowania powyższego programu, na którym łatwiej będzie prześledzić jego możliwości. Oczywiście przed uruchomieniem tego przykładu trzeba wykonać główny program.

   Redakcja przeprasza serdecznie za przekręcenie nazwiska autora programu "Basic Tracker" z TA 6/91. Był nim także Rafał Mantiuk.

10 X=USR(1536):DIM C$(1):C$=CHR$(125)
20 POKE 204,1:D=0:? C$:POKE 752,1:L=15
:POKE 203,1:POKE 706,L:POSITION 5,23:?
 "WYNIK:";:W=0
30 FOR F=5 TO 10 STEP 2:POSITION 8+D,F
:? " o  o  o  o  o  o  o ":NEXT F
40 POKE 53278,1:POKE 203,1
50 POSITION 12,23:? W;:IF PEEK(53253)=
4 THEN 90
60 IF PEEK(203)=0 THEN L=L-3:GOTO 110
70 IF INT(RND(0)*50+1)=10 THEN D=1-D:G
OTO 30
80 GOTO 50
90 W=W+1:IF PEEK(207)>128 THEN POKE 20
7,1:GOTO 40
100 POKE 207,255:GOTO 40
110 IF L<0 THEN POKE 204,0:POSITION 15
,12:? "GAME OVER":GOTO 130
120 POKE 706,L:GOTO 40
130 ON STRIG(0) GOTO 130:GOTO 20




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

Pixel 2001