C64_Superchase/original_listings/SUPERCH-atari.bas

146 lines
5.1 KiB
QBasic
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

30 HI=0:DIM F$(40),N$(3)
40 GOTO 14000
42 POKE 1,0:POKE 2,0
43 POKE 764,255
45 TRAP 40000
47 F$="":GOSUB 12000:SK=PEEK(0):P=PEEK(1)*256+PEEK(2):GOSUB 10000:GOTO 8000
990 REM READ JOY, MOVE
1000 REM
1010 PA=STICK(0)
1020 S3=(PA=7)
1030 S0=(PA=14):S1=(PA=13):S2=(PA=11)
1100 IF S0 THEN POKE X,7+128:C=20:GOTO 1160
1130 IF S3 THEN POKE X,6+128:C=-1:GOTO 1160
1140 IF S2 THEN POKE X,8+128:C=1:GOTO 1160
1150 IF S1 THEN POKE X,9+128:C=-20:GOTO 1160
1155 FOR J=1 TO 50:NEXT J:GOTO 1300
1160 X=X-C:IF PEEK(X)=129 THEN X=X+C:GOTO 1300
1165 SOUND 0,100,10,8
1170 F$(LEN(F$)+1)=CHR$(-C+99)
1180 J=PEEK(X):POKE X,2+64:IF J=10 THEN K=100:GOSUB 9000
1190 IF J=11 THEN K=50:GOSUB 9000
1200 IF J=12 THEN K=30:GOSUB 9000
1210 IF J=13 THEN K=20:GOSUB 9000
1220 IF J=14 THEN K=10:GOSUB 9000
1230 SOUND 0,0,0,0
1250 POSITION 6,22:? #6;P;" ";
1300 POKE X,3+64:RETURN
1990 REM "MOVE MONSTER
2000 IF LEN(F$)>=30 THEN GOSUB 3000
2005 O=O+1:IF O/S<>INT(O/S) THEN RETURN
2010 FOR J=1 TO SK:GOSUB 4000:POKE F,0:F=F+(ASC(F$)-99):F$=F$(1+((LEN(F$)>1)))
2030 POKE F,5+192:SOUND 0,120,0,8:FOR M=1 TO 50:NEXT M:POKE F,4+192:SOUND 0,80,0,8:NEXT J:SOUND 0,0,0,0:RETURN
2990 REM " SPEED UP MONSTER
3000 POKE F,0:S=S-1:IF S<1 THEN S=1
3005 POSITION 18,22:? #6;E-S;
3010 FOR N=1 TO 10:POKE F,0:F=F+(ASC(F$)-99):F$=F$(2):POKE F,5+192
3150 IF (N/SK=INT(N/SK)) AND PP THEN GOSUB 1000
3310 FOR M=N TO N+2:SOUND 0,M*3,0,8:NEXT M:NEXT N:SOUND 0,0,0,0
3500 RETURN
3990 REM " CHECK IF EATEN
4000 IF X<>F THEN RETURN
4005 POKE F,8:SOUND 0,0,0,0
4010 GOSUB 18000:POSITION 0,22:? #6;"A TASTY MORSEL INDEED_";
4015 FOR J=1 TO 2000
4025 NEXT J
4027 IF PP=0 THEN 16800
4060 GOTO 11000
6990 REM " GET PROMOTED
7000 J=INT(P/256):POKE 1,J:POKE 2,P-J*256
7100 SK=PEEK(0)+1:POKE 0,SK
7200 POSITION 0,23:? #6;"CONGRATULATIONS !!"
7205 FOR J=1 TO 1000:NEXT J
7400 PRINT "}":POKE 752,1:? " ONE AS FLEET-FOOTED AS YOU DESERVES":? " MORE CHALLENGE.":POKE 710,18
7405 FOR J=1 TO 500:NEXT J
7410 PRINT " YOU ARE THEREFORE PROMOTED TO":? " SKILL LEVEL ";SK
7420 FOR J=1 TO 1000:NEXT J
7500 GOTO 45
7990 REM " MAIN LOOP!
8000 FOR M=1 TO 500:GOSUB 1000:IF LEN(F$)<20 THEN NEXT M
8100 GOSUB 1000:GOSUB 2000:GOSUB 4000:GOTO 8100
8990 REM " PICKED UP TREASURE
9000 FOR I=1 TO 10:SOUND 0,10*RND(0),10,8:NEXT I:SOUND 0,0,0,0
9010 P=P+K*(E-S):PC=PC+1:IF PC>=61 THEN 7000
9100 RETURN
9990 REM " SET VARIABLES, ETC.
10000 REM
10030 S=10:PC=0:RO=22:PP=1
10110 W=5:E=11:GOSUB 18000
10600 POSITION 8,23:? #6;"<22><><EFBFBD>"
10700 POSITION 0,22:? #6;"<22><><EFBFBD><EFBFBD>ź speed:1"
10800 X=SC+21:F=X
10900 RETURN
11000 REM " GAME OVER
11102 ? "}":POKE 752,1:POKE 710,212
11103 IF P>HI THEN HI=P:GOSUB 11150
11105 ?:? "YOUR SCORE IS: ";P
11107 ?:? "THE HIGH SCORE IS ";HI;" BY ";N$
11110 ?:?:? "PLAY AGAIN ? (Y/N): ";
11120 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
11130 IF A=ASC("N") THEN GRAPHICS 0:END
11140 POKE 764,255:POKE 77,0:GOTO 40
11150 ?:? "CONGRATULATIONS!! YOU HAVE THE NEW HIGH SCORE.":?:? "PLEASE ENTER YOUR INITIALS";:INPUT N$
11160 RETURN
11990 REM " MAKE MAZE (ALGORITHM FROM COMPUTE!)
12000 GRAPHICS 17:POKE 756,CHSET/256
12010 TRAP 12015:DIM A(3):A(0)=2:A(1)=-40:A(2)=-2:A(3)=40:WL=129:HL=0:TRAP 40000
12015 A=SC+21
12100 FOR I=1 TO 21:? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":NEXT I:POKE A,5
12150 ? #6;"the dwarves mined":? #6;"here many years ago";
12200 J=INT(RND(1)*4):X=J
12205 B=A+A(J)
12210 IF PEEK(B)=WL THEN POKE B,J+1:POKE A+A(J)/2,HL:A=B:GOTO 12200
12240 J=(J+1)*(J<3):IF J<>X THEN 12205
12250 J=PEEK(A):POKE A,HL:IF J<5 THEN A=A-A(J-1):GOTO 12200
12255 GOSUB 18000
12260 POSITION 0,22:? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
12270 RESTORE
12300 FOR K=10 TO 14:READ J,C
12310 FOR A=1 TO J
12320 B=SC+40+INT(20*RND(0))*20+INT(19*RND(0))
12330 IF PEEK(B)<>0 THEN 12320
12340 POKE B,K
12350 NEXT A:NEXT K
12500 RESTORE:RETURN
12600 DATA 1,1,7,3,12,7,15,6,26,0
13990 REM " TITLE PAGE, ETC.
14000 GRAPHICS 17
14005 SC=PEEK(88)+256*PEEK(89):CHSET=PEEK(106)-8:CHSET=CHSET*256
14007 FOR I=0 TO 512:POKE CHSET+I,PEEK(57344+I):NEXT I
14010 ? #6;" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":? #6
14020 ? #6
14030 GOTO 16000
14050 ? #6:? #6;"<22><><EFBFBD><EFBFBD>̠<EFBFBD><CCA0><EFBFBD><EFBFBD>̿ <1..9>"
14060 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
14070 SK=A-48:IF SK<1 OR SK>9 THEN 14060
14080 POKE 0,SK:GOTO 42
15990 REM " SHOW & DEFINE CHARACTERS
16000 FOR J=1 TO 7:POKE SC+J*40+80,J:NEXT J
16010 FOR J=8 TO 15:POKE SC+19+80+40*(J-7),J:NEXT J
16020 POKE 756,CHSET/256
16150 FOR J=0 TO 7:POKE CHSET+J,0:NEXT J
16160 FOR J=1 TO 10:READ K:NEXT J
16200 X=256:FOR J=0 TO 119:READ K
16250 X=X-0.81:SOUND 0,X,10,8
16300 POKE CHSET+8+J,K:NEXT J
16305 FOR I=0 TO 7:READ A:POKE CHSET+63*8+I,A:NEXT I
16310 SOUND 0,0,0,0:GOTO 14050
17111 REM " CHARACTER DATA
17112 DATA 85,42,85,42,85,42,85,0
17115 DATA 28,42,62,34,28,36,68,38
17120 DATA 28,42,62,34,28,21,18,24
17130 DATA 60,90,126,74,66,60,36,102
17140 DATA 60,90,126,74,126,66,66,195
17150 DATA 0,224,240,224,14,15,14,0
17160 DATA 4,14,14,14,32,112,112,112
17170 DATA 0,112,240,112,7,15,7,0
17180 DATA 14,14,14,4,112,112,112,32
17190 DATA 0,8,34,8,93,8,34,8
17200 DATA 1,76,18,34,68,72,50,128
17210 DATA 0,73,42,0,216,28,60,0
17220 DATA 0,2,24,36,36,24,64,0
17230 DATA 0,0,12,28,56,48,0,0
17235 DATA 0,126,126,126,122,126,126,0
17300 DATA 0,7,15,14,24,48,0,64
18000 COLOR 0:PLOT 0,21:DRAWTO 19,21:PLOT 0,22:DRAWTO 19,22:PLOT 0,23:DRAWTO 19,23:RETURN