home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Arcade / ZAP (.txt) < prev   
Encoding:
Commodore BASIC  |  2019-04-13  |  4.9 KB  |  149 lines

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