Heartlight SaverZapowiadaliśmy w poprzednim numerze wydrukowanie programu do zgrywania Heartlighta w postaci samodzielnej gry. Niniejszym to czynimy. Zamieszczamy dwa listingi: pierwszy dłuższy, ale i potrafiący nagrać gotową grę we wszystkich standardowo spotykanych formatach i krótszy, nagrywający tylko pliki w formacie DOS-u (COS-u). Aby uzyskać samodzielną grę należy: 1. Przepisać którąś ze "zgrywaczek"; 2. Nagrać ją na używaną pamięć zewnętrzną komendą SAVE"D:HLS.BAS" lub CSAVE; 3. Wczytać grę HEARTLIGHT i uruchomić ją; 4. Gdy ukaże się czołówka gry nacisnąć RESET; 5. Wczytać "zgrywaczkę" i ją uruchomić. Przyjemnej zabawy życzy
redakcja |
1 REM ------------------------------- 2 REM : short HEARTLIGHT saver : 3 REM : autor: Miroslaw Liminowicz : 4 REM : (c) 1991 Tajemnice Atari : 5 REM ------------------------------- 10 DIM A$(26):GAM=36864:K=GAM-9 20 CAV=28672:? CHR$(125) 30 DT=2000:C=1:BS=GAM-21:GOSUB 900 40 DT=960:C=2:BS=1536:GOSUB 900 50 ? "Podaj kody kolorow w grze:" 60 ? " 004,006,014,010,000";CHR$(28) 70 TRAP 30:INPUT C1,C2,C3,C4,C5 80 POKE K,C1:POKE K+1,C2:POKE K+2,C3 90 POKE K+3,C4:POKE K+4,C5 100 CL=PEEK(CAV+2)*240+23 110 CND=CAV+CL-1:POKE CAV-1,INT(CND/25 6):POKE CAV-2,CND-256*INT(CND/256):POK E CAV-3,112:POKE CAV-4,0 120 ? "Podaj nazwe pliku ";:INPUT A$ 130 AUX=0:IF A$(1,1)="C" THEN AUX=128 140 TRAP 190:OPEN #1,8,AUX,A$ 150 A=USR(1536,2325,GAM-21) 160 IF A=1 THEN A=USR(1536,CL+4,CAV-4) 170 IF A=1 THEN GOSUB 200:GOTO 120 180 GOSUB 200:? "Blad - ";A:GOTO 120 190 A=PEEK(195):GOTO 180 200 REM --- close and silence --- 210 CLOSE #1:SOUND 0,0,0,0:RETURN 900 REM --- hex to data conv --- 910 FS=0:RESTORE DT:TRAP 950 920 FOR X=0 TO C:READ A$:POKE 53279,7 930 FOR I=1 TO 26 STEP 2 940 H=ASC(A$(I))-48:H=(H-39*(H>9))*16: L=ASC(A$(I+1))-48:L=L-39*(L>9):POKE BS +FS,H+L:FS=FS+1:NEXT I:NEXT X 950 RETURN 960 REM --- saver --- 970 DATA 68688d5903688d5803688d5503 980 DATA 688d5403a90b8d5203a2102056 990 DATA e484d4a90085d560 2000 REM --- header --- 2010 DATA ffffe002e1026092c402c80200 2020 DATA 000000000090ff98 1 REM ------------------------------- 2 REM : HEARTLIGHT saver : 3 REM : autor: Miroslaw Liminowicz : 4 REM : (c) 1991 Tajemnice Atari : 5 REM ------------------------------- 10 DIM A$(26):OPEN #2,4,0,"K:" 20 MOV=36815:CAV=28672:K=36859 30 ? CHR$(125):? "Podaj kody kolorow w gotowej grze:" 40 ? " 004,006,014,010,000";CHR$(28) 50 INPUT C1,C2,C3,C4,C5 60 POKE K,C1:POKE K+1,C2:POKE K+2,C3 70 POKE K+3,C4:POKE K+4,C5:POKE 559,0 80 DT=3000:C=0:BS=1780:GOSUB 900 90 DT=960:C=10:BS=1536:GOSUB 900 100 DT=2000:C=3:BS=MOV:GOSUB 900 110 ? CHR$(125):? ,"Formaty zapisu:" 120 POSITION 2,8:POKE 559,34 130 ? "1. Samodzielny kasetowy (boot)" 140 ? "2. Samodzielny dyskowy (boot)" 150 ? "3. Plikowy (DOS lub COS)" 160 POSITION 4,13:? "Co wolisz "; 170 TRAP 110:INPUT CHOICE 180 ON CHOICE GOSUB 200,300,400 190 GOTO 110 200 REM --- tape boot writer --- 210 GOSUB 700:GOSUB 750:GOSUB 550 220 ? "Ustaw magnetofon...":A$="C:" 230 GOSUB 500:A=USR(1536,PLEN+6,MOV-6) 240 IF A=1 THEN A=USR(1536,CLEN,CAV) 250 GOSUB 600:IF A=1 THEN RETURN 260 GOSUB 550:? "Blad zapisu - ";A 270 GET #2,A:RETURN 280 GOSUB 600:A=PEEK(195):GOTO 260 300 REM --- disk boot writer --- 310 GOSUB 700:GOSUB 750:GOSUB 550 320 ? "Zapodaj sformatowany dysk..." 330 GET #2,A:A=USR(1570,MOV-6) 340 GOTO 250 400 REM --- CIO file writer --- 410 GOSUB 700:GOSUB 800:GOSUB 550 420 ? "Podaj nazwe pliku ";:INPUT A$ 430 GOSUB 500:A=USR(1536,12,1780) 440 IF A<>1 THEN 250 450 A=USR(1536,PLEN,MOV):GOTO 240 500 REM --- CIO open file --- 510 AUX=0:IF A$(1,1)="C" THEN AUX=128 520 TRAP 530:OPEN #1,8,AUX,A$:RETURN 530 POP :GOTO 280 550 REM --- mesage line cur.pos. --- 560 POSITION 2,17:? CHR$(156) 570 POSITION 2,18:? "nacisnij RETURN." 580 POSITION 2,17:RETURN 600 REM --- close and silence --- 650 CLOSE #1:SOUND 0,0,0,0:RETURN 700 REM --- set some lengths --- 710 CLEN=PEEK(CAV+2)*240+23:PLEN=2353 720 LGTH=PLEN+CLEN+6:SL=INT(LGTH/128) 730 IF SL*128<>LGTH THEN SL=SL+1 740 RETURN 750 REM --- create boot header --- 760 POKE MOV-5,SL:POKE MOV-3,INT((MOV- 6)/256):POKE MOV-4,MOV-6-256*INT((MOV- 6)/256):RETURN 800 REM --- create file header --- 810 HLE=MOV+LGTH-7:POKE 1791,INT(HLE/2 56):POKE 1790,HLE-256*INT(HLE/256):RET URN 900 REM --- hex to data conv --- 910 FS=0:RESTORE DT:TRAP 950 920 FOR X=0 TO C:READ A$:POKE 53279,7 930 FOR I=1 TO 26 STEP 2 940 H=ASC(A$(I))-48:H=(H-39*(H>9))*16: L=ASC(A$(I+1))-48:L=L-39*(L>9):POKE BS +FS,H+L:FS=FS+1:NEXT I:NEXT X 950 RETURN 960 REM --- saver --- 970 DATA 68688d5903688d5803688d5503 980 DATA 688d5403a90b8d5203a2102056 990 DATA e484d4a90085d560686885cc68 1000 DATA 85cba0008c0b03c88c0a03b1cb 1010 DATA 8d7c068c0103a9508d0203a900 1020 DATA 8d0403a9048d0503a200a000b1 1030 DATA cb9d0004e6cbd002e6cca5cbc9 1040 DATA 00a5cce9999008a90085cba970 1050 DATA 85cce810e02053e410034c1b06 1060 DATA ee0a03ad0a03c90090caa0014c 1070 DATA 1b06 2000 REM --- mover --- 2010 DATA a90085828580a8a9998583a970 2020 DATA 8581a21fb1829180c005b006b9 2030 DATA fb8f99c402c8d0efe683e681ca 2040 DATA d0e84c6092 2050 DATA 8d7c068c0103a9508d0203a900 2060 DATA 8d0403a9048d0503a200a000b1 2070 DATA cb9d0004e6cbd002e6cca5cbc9 2080 DATA 00a5cce9999008a90085cba970 2090 DATA 85cce810e02053e410034c1b06 2100 DATA ee0a03ad0a03c90090caa0014c 2110 DATA 1b06 3000 REM --- header --- 3010 DATA ffffe002e102cf8fcf8f |