home *** CD-ROM | disk | FTP | other *** search
- 0 PG$="[160]Z A P ":AU$="BY TOM MARAZITA AND BRIAN SAWYER":JF=1
- 1 REM ZAP -- BY TOM MARAZITA
- 2 :
- 5 REM COPYRIGHT (C) 1983 THE CODE WORKS
- 6 REM BOX 6905, SANTA BARBARA, CA 93160
- 7 :
- 10 REM AS OF 9/1/83 GF
- 90 GOTO 62000
- 100 MX=255:DIM WM(MX),A(MX):BS=0:QI=256
- 101 DIM JD(15):FOR I=0 TO 15:READ JD(I):NEXT
- 102 DEF FNJ(X)=JD(PEEK(JS+X) AND 15):DEF FNB(X)=(PEEK(JS+X) AND 16)=0
- 103 GOSUB 7000:GOSUB 4000:DATA 0,0,0,0,0,3,9,6,0,1,7,4,0,2,8,5
- 110 EL=18:HP=0:TP=0:WI=2:LM=MX-WI:AL=0:CA=0:H=0:TC=0:SC=0:K=0:Q=0:KN=0
- 111 GOSUB 1000
- 120 POKE 51147,(5-G)*3
- 125 PRINT "[147]":SYS 51165
- 130 POKE 251,190:POKE 252,7:WM(HP)=PO:HP=HP+1:AL=AL+1:S=1:LN=10:K=0:NT=0
- 140 POKE 1001,216:POKE 51061,10:FOR N=50000 TO 50555:POKE N,0:NEXT
- 160 FOR X=WD+1 TO WD*2-2:POKE CRT+X,100:POKE CM+X,1:NEXT
- 170 FOR X=WD*2 TO WD*23 STEP WD:POKE CRT+X,103:POKE CM+X,1:NEXT
- 180 FOR X=WD*24+1 TO WD*25-2:POKE CRT+X,99:POKE CM+X,1:NEXT
- 190 FOR X=WD*24-1 TO WD*3-1 STEP -WD:POKE CRT+X,101:POKE CM+X,1:NEXT
- 191 POKE CRT+WD,96:POKE CRT+WD+39,96:POKE CRT+WD*24,96:POKE CRT+WD*24+39,96
- 192 PRINT "" TAB(31) "LEVEL=" G
- 195 GOSUB 900
- 211 GOTO 380
- 230 GET A$:IF A$="Q" THEN 650
- 326 SYS 51003:FOR DL=1 TO (5-G)*30:NEXT
- 327 Z=PEEK(999):IF Z=42 THEN GOSUB 550:GOTO 350
- 328 IF Z<>32 THEN 590
- 329 IF NT>0 AND RND(1)<.93 THEN 326
- 350 IF K>4 AND RND(1)<G/10 THEN 230
- 360 IF K>9 AND RND(1)<.85 THEN 405
- 380 K=K+1:KN=KN+1:NT=NT+1
- 390 A(K)=RND(1)*904+1104:IF PEEK(A(K))<>32 THEN 390
- 395 POKE A(K),42:GOTO 230
- 400 IF K=0 THEN 380
- 405 Z=INT(RND(1)*K)+1
- 410 REM IF PEEK(A(Z))<>42 THEN 440
- 415 IF PEEK (A(Z))<>42 THEN A(Z)=A(K):K=K-1:GOTO 440
- 420 IF RND(1)>NT/9 THEN 230
- 430 NT=NT-1:POKE A(Z),32
- 440 A(Z)=A(K):K=K-1:GOTO 230
- 550 POKE SID+18,33:NT=NT-1
- 560 SC=SC+INT(LN/1.6):Q=Q+1
- 565 S=S-1:POKE (PEEK(251)+PEEK(252)*256),81:LN=LN+2:IF LN>127 THEN LN=127
- 567 POKE 51061,LN:IF EL<LM THEN EL=EL+WI
- 570 GOSUB 900:POKE SID+18,16
- 580 RETURN
- 590 CA=CA+1
- 600 IF CS>L THEN L=CS
- 610 CS=0
- 615 EL=18:HP=0:AL=0
- 616 TP=0
- 620 CV=0:POKE SID+4,129:POKE SID+11,0
- 625 PO=PEEK(251)+PEEK(252)*256
- 635 FOR T=1 TO 8:FOR X=1 TO 100:NEXT:POKE SID+4,128:POKE PO,209:FOR X1=1 TO 100
- 636 NEXT:POKE PO,81:NEXT:POKE SID+24,0:GOSUB 1000
- 638 IF CA=6 THEN 650
- 640 GOTO 120
- 650 IF SC>BS THEN BS=SC
- 660 PRINT "[147]YOUR SCORE IS" SC
- 665 PRINT "YOU HIT";INT((Q/KN)*100);"[157]% OF THE TARGETS"
- 670 PRINT "HIGHEST SCORE SO FAR:";BS:PRINT
- 680 GOSUB 3500
- 682 IF YN THEN 110
- 700 PRINT:END
- 900 PRINT "SCORE=" SC;TAB(13);"CRASHES LEFT=" 5-CA
- 910 RETURN
- 1000 FOR I=0 TO 28:POKE SID+I,0:NEXT I
- 1100 REM CRASH
- 1110 POKE SID+6,250
- 1120 POKE SID+1,2
- 1200 REM BELL
- 1210 POKE SID+15,64
- 1220 POKE SID+20,250
- 1300 REM TURN
- 1310 POKE SID+12,80
- 1320 POKE SID+13,240
- 1330 POKE SID+8,12
- 1400 POKE SID+24,15
- 1500 RETURN
- 3200 T=PEEK(VIC+17):POKE VIC+17,0:T=T/1
- 3210 POKE VIC+33,7:PRINT "[147]"
- 3220 POKE VIC+33,0:POKE VIC+17,T
- 3230 RETURN
- 3500 NO=0
- 3510 TM=0:SW=1:PRINT "TRY AGAIN?[160][151]YES NO[145]"
- 3520 IF TI<TM THEN 3550
- 3530 PRINT TAB(11+NO*4);MID$("[151]",SW,1);MID$("YESNO[160]",3*NO+1,3);"[145]"
- 3540 SW=3-SW:TM=TI+15
- 3550 JD=PEEK(JS) AND 31:JB=(JD<16):JD=JD AND 15
- 3560 IF JB AND JD=15 THEN 3600
- 3570 IF (JD AND 8)=0 AND NO=0 THEN NO=1:GOTO 3510
- 3580 IF (JD AND 4)=0 AND NO=1 THEN NO=0:GOTO 3510
- 3590 GOTO 3520
- 3600 PRINT TAB(11+NO*4);"";MID$("YESNO[160]",3*NO+1,3);"[145]":YN=(NO=0):RETURN
- 4000 PRINT "SETTING UP...[157]"
- 4010 FOR N=51000 TO 52000:READ A:IF A=999 THEN RETURN
- 4020 POKE N,A:NEXT
- 4090 RETURN
- 7000 PRINT "[147]PICK A SKILL LEVEL:[151]":
- 7010 FOR I=1 TO 5:PRINT I;:NEXT I:PRINT:G=1:T=1:TM=0
- 7020 X=G:IF TI>TM THEN PRINT TAB(3*G-3);MID$("[151]",T,1);"[145]";G:T=3-T:TM=TI+10
- 7030 IF FNJ(0)=4 THEN IF G>1 THEN G=G-1
- 7040 IF FNJ(0)=6 THEN IF G<5 THEN G=G+1
- 7050 IF X<>G THEN PRINT TAB(3*X-3);"[151][145]";X:T=1:TM=0
- 7060 IF FNB(0)=0 THEN 7020
- 7070 PRINT "[147]":RETURN
- 50000 DATA 32,202,199,32,155,199,173,233,3,201,128,16,14,24,101,251,133
- 50010 DATA 251,165,252,105,0,133,252,24,144,9,24,101,251,133,251,176,2
- 50020 DATA 198,252,160,0,177,251,141,231,3,169,81,145,251,32,137,199,165
- 50030 DATA 251,141,80,195,165,252,141,124,196,162,10,189,80,195,133,253,189
- 50040 DATA 124,196,133,254,240,6,169,32,160,0,145,253,96,162,250,189,79
- 50050 DATA 195,157,80,195,189,123,196,157,124,196,202,208,241,96,162,0,173
- 50060 DATA 0,220,74,176,2,162,1,74,176,2,162,2,142,234,3,74,176
- 50070 DATA 7,168,138,24,105,3,170,152,74,176,5,138,24,105,6,170,224
- 50080 DATA 0,240,6,189,212,199,141,233,3,96,169,0,24,101,162,197,162
- 50090 DATA 208,252,96,1,216,40,255,215,39,1,217,41,169,216,133,254,169
- 50100 DATA 80,133,253,162,22,160,38,152,41,3,142,237,3,170,189,10,200
- 50110 DATA 145,253,174,237,3,136,208,238,165,253,24,105,40,133,253,144,2
- 50120 DATA 230,254,202,208,222,96,7,7,7,7,999
- 60000 IN$=" ":ZT=TI:ZC=2:ZD$=CHR$(20)
- 60010 GET Z$:IF Z$<>"" THEN 60070
- 60020 IF ZT<=TI THEN PRINT MID$(" [166]",ZC,1);"[157]";:ZC=3-ZC:ZT=TI+15
- 60030 GOTO 60010
- 60070 Z=ASC(Z$):ZL=LEN(IN$):IF (Z AND 127)<32 THEN PRINT " [157]";:GOTO 60110
- 60090 IF ZL>QI THEN 60010
- 60100 IN$=IN$+Z$:PRINT Z$;ZD$;Z$;
- 60110 IF Z=13 THEN IN$=MID$(IN$,2):PRINT CR$;:RETURN
- 60120 IF Z=20 AND ZL>1 THEN IN$=LEFT$(IN$,ZL-1):PRINT "[157]";:GOTO 60010
- 60130 IF Z=141 THEN Z$=CHR$(-20*(ZL>1)):FOR Z=2 TO ZL:PRINT Z$;:NEXT:GOTO 60000
- 60140 GOTO 60010
- 61000 CRT=1024:VIC=53248:WD=40:CR$=CHR$(13):SID=54272:JS=56320:CM=55296
- 61010 QL=214:QI=254:RETURN
- 62000 GOSUB 61000:POKE VIC+32,0:POKE VIC+33,0:LN=LEN(PG$):TB=(40-LN)/2
- 62010 PRINT "[147][158]"TAB(TB)LEFT$(" ",LN)
- 62020 PRINT ""TAB(TB)PG$:PRINT "" TAB(TB)LEFT$(" ",LN)
- 62030 PRINT ""TAB((40-LEN(AU$))/2)AU$
- 62040 MS$="HIT RETURN TO BEGIN":IF JF THEN MS$="HIT JOYSTICK BUTTON TO BEGIN"
- 62050 TB=((40-LEN (MS$))/2)
- 62060 PRINT "[159]" TAB(TB)MS$:PRINT "[159] (C) 1983 THE CODE WORKS"
- 62070 GET IN$:IF IN$<>"" THEN 62120
- 62080 IF (PEEK(JS) AND 16)=0 THEN 62120
- 62090 PRINT "" TAB(TB)LEFT$("[156][159]",K+1)LEFT$(MS$,Q)
- 62100 Q=Q+1:IF Q>LEN(MS$) THEN Q=0:K=1-K
- 62110 GOTO 62070
- 62120 CLR:PRINT "[147]":GOSUB 61000:GOTO 100
-