home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / GRUDS1.DSK / CCCMAIN.bas < prev    next >
BASIC Source File  |  2014-09-09  |  19KB  |  292 lines

  1. 0  REM  (C) AUTOMATED SIMULATIONS 1981, APPLE VERSION - 6/22/81, V01B
  2. 2  DEF  FN A(A) =  INT( RND(1) *A) +1
  3. 3  SCALE= 1: ROT= 0: GOTO 5000
  4. 30 I1 = U1: GOSUB 31: GOSUB 100: RETURN 
  5. 31 NS = MQ(MQ) +9:XX = XM:YY = YM: RETURN 
  6. 32  RETURN : POKE KG,1:Q$ =  STR$( FRE(8)):Q$ = Q$: CALL 2186: RETURN 
  7. 35  GOSUB 31:I1 = U1: IF XX = XA  AND YA = YY  THEN  GOSUB 205: RETURN 
  8. 36 NS =  PEEK(BA +XX +YY *8 -8) +U1: GOSUB 100: RETURN 
  9. 44  RETURN 
  10. 46 XD = XA -XT:YD = YA -YT:D(K%) = XD *XD +YD *YD: RETURN 
  11. 50  POKE KG,6: CALL KC: RETURN 
  12. 51  POKE KG,8: CALL KC: RETURN 
  13. 52  POKE KG,6:Q$ = "YOU CAN'T": CALL 2186: RETURN 
  14. 55  GOTO 90
  15. 57 PC = PC +MK(5)/10: IF PC >MK(U2)  THEN PC = MK(U2)
  16. 58  GOTO 88
  17. 60 H = U: GOSUB 390:P = MK(U1)/(4 +D2): IF D2 >DD  OR MA = U  OR P <.3 * RND(8)  THEN  RETURN 
  18. 61  IF D2 < = U2  THEN H = U1: RETURN 
  19. 62 I = 4 +4 * PEEK(UI +M1): IF XD = U  THEN NA = U:B = XA: GOTO 69
  20. 63  IF YD = U  THEN A = U:B = YA: GOTO 66
  21. 64  IF XD >YD  THEN A = YD/XD:B = YA - INT(XA *A): GOTO 66
  22. 65 A = XD/YD:B = XA - INT(YA *A): GOTO 69
  23. 66 XL = XA +U1:XU = XM -U1: IF XD >U  THEN XL = XM +U1:XU = XA -U1
  24. 67  FOR X = XL TO XU:Y =  INT(A *X +B +.5): IF  PEEK(BA +X +Y *8 -8) >I  THEN  RETURN 
  25. 68  NEXT :H = U1: RETURN 
  26. 69 YL = YA +U1:YU = YM -U1: IF YD >U  THEN YL = YM +U1:YU = YA -U1
  27. 70  FOR Y = YL TO YU:X =  INT(A *Y +B +.5): IF  PEEK(BA +X +Y *8 -8) >I  THEN  RETURN 
  28. 71  NEXT :H = U1: RETURN 
  29. 72  GOSUB 500: IF L = U  THEN 72
  30. 73 J =  ASC(C$) -48: IF J <U  OR J >9  THEN 72
  31. 74  RETURN 
  32. 75  POKE KG,12: IF GB >U  THEN Q$ = "PAW FULL": CALL 2186: RETURN 
  33. 76 Q$ = "PAW EMPTY": CALL 2186: RETURN 
  34. 77  POKE KG,U:Q$ = "WIND: " +F$(WD):Q$ = Q$: CALL 2186: RETURN 
  35. 78 K% =  INT(HU%/25): IF K% >U3  THEN K% = U3
  36. 79  POKE KG,10:Q$ = H$(K%): CALL 2186: RETURN 
  37. 80  GOSUB 500: IF L = U  THEN 80
  38. 81  RETURN 
  39. 82  FOR I = 1 TO 10: POKE  -16298,0: FOR J = 1 TO 30: NEXT : POKE  -16297,0: FOR J = 1 TO 30: NEXT : NEXT : RETURN 
  40. 83  POKE KG,4:Q$ = "HDG: " +F$(KF):Q$ = Q$: CALL 2186: RETURN 
  41. 84 K% = K% +U1: IF K% >4  THEN K% = U1: RETURN 
  42. 85  RETURN 
  43. 88 K% = 3.99 *PC/MK(U2): POKE KG,U2:Q$ = W$(K%): CALL 2186: RETURN 
  44. 90  POKE KG,16:Q$ = "HEAD TILT:": CALL 2186: POKE KG,18:Q$ = HT$(HT +U2,U):Q$ = Q$: CALL 2186: POKE KG,19:Q$ = HT$(HT +U2,U1):Q$ = Q$: CALL 2186: POKE KG,20: CALL KC: POKE KG,21: CALL KC: POKE KG,22: CALL KC
  45. 91  POKE 232,T(3): POKE 233,T(4): HCOLOR= 3: DRAW HT +5 AT 232,144: POKE 232,T(1): POKE 233,T(2): RETURN 
  46. 100  POKE KG,8 -YY: POKE KH,XX -1
  47. 110  CALL KI: IF DM = U  THEN 112
  48. 111  HCOLOR= 3 +4 *(MT = 2): DRAW NS AT (XX -1) *24,(8 -YY) *24: RETURN 
  49. 112  HCOLOR= HC(NS): DRAW NS +63 AT (XX -1) *24,(8 -YY) *24: RETURN 
  50. 200  IF IN >U  THEN  RETURN 
  51. 202 XX = XA:YY = YA
  52. 205  POKE 232,T(U3): POKE 233,T(4):NS = U1 +(FL <U):I1 = U1:DM = U1: GOSUB 100: POKE 232,T(U1): POKE 233,T(U2):DM = 0: RETURN 
  53. 250 NS =  PEEK(BA +XA +YA *8 -8) +U1: IF OC(XA,YA) >U  THEN NS = MQ(OC(XA,YA)) +9
  54. 260 XX = XA:YY = YA:I1 = U1: GOSUB 100: RETURN 
  55. 330 I = ( FN A(U3) -U2) *U3 +XX:J = ( FN A(U3) -U2) *U3 +YY: RETURN 
  56. 340  POKE KG,6:Q$ = "GOT 'EM!": CALL 2186
  57. 342 CD = CD + PEEK(UD +MQ(MQ)):ND = ND +U1
  58. 345 XM = XM(MQ):YM = YM(MQ): GOSUB 35:OC(XM,YM) = U
  59. 350  IF MQ = NB  THEN 360
  60. 355  FOR I2 = MQ TO NB -U1:MQ(I2) = MQ(I2 +U1):MP(I2) = MP(I2 +U1):XM(I2) = XM(I2 +U1):YM(I2) = YM(I2 +U1):MF%(I2) = MF%(I2 +U1):OC(XM(I2),YM(I2)) = I2: NEXT 
  61. 360 NB = NB -U1: RETURN 
  62. 380 H = U: IF XT >8  OR XT <U1  THEN  GOSUB 46: RETURN 
  63. 382  IF YT >8  OR YT <U1  THEN  GOSUB 46: RETURN 
  64. 384 H = U1: IF XT = XA  AND YA = YT  THEN XT = XM:YT = YM: IF MA >U  THEN JV = MV
  65. 386  RETURN 
  66. 390 XD = XA -XM:YD = YA -YM:D2 = XD *XD +YD *YD: RETURN 
  67. 450 QX = (XX -1) *24:QY = (8 -YY) *24: FOR I = 86 TO 89: XDRAW I AT QX,QY: FOR L = 1 TO 100: NEXT : XDRAW I AT QX,QY: NEXT 
  68. 455  FOR I = 89 TO 86  STEP  -1: XDRAW I AT QX,QY: FOR L = 1 TO 100: NEXT : XDRAW I AT QX,QY: NEXT : RETURN 
  69. 500 LE = 4 *SE:C$ = "": FOR M = U1 TO LE
  70. 510  IF  PEEK( -16384) >127  THEN 530
  71. 520  NEXT :L = 0: RETURN 
  72. 530 C$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0: IF C$ < = " "  OR C$ > = "]"  THEN 520
  73. 550 L = 1: RETURN 
  74. 600  IF  RND(1) >.2  THEN  RETURN 
  75. 605  IF  RND(1) >.8  THEN WD =  FN A(4): GOSUB 77
  76. 610  FOR I = U1 TO 8: FOR N = U1 TO 8:K% = BA +I +8 *N -8: IF  PEEK(K%) <8  THEN 650
  77. 620  IF  RND(1) >.5  THEN XX = I +IX(WD):YY = N +IY(WD): IF XX >U  AND XX <9  AND YY >U  AND YY <9  THEN L = BA +XX +8 *YY -8: IF  PEEK(L) >4  AND  PEEK(L) <8  THEN DB% = DB% +B( PEEK(L) -5): POKE L,8:NS = 9: GOSUB 100: GOTO 650
  78. 630  IF  RND(1) >.7  THEN  POKE K%,4:NS = 5:XX = I:YY = N: GOSUB 100
  79. 650  NEXT : NEXT : GOSUB 200: RETURN 
  80. 4000 TM = U:NR = 4 *LV +KR: IF F <U  THEN 4005
  81. 4001  FOR I = U TO 9: FOR J = U TO 9:OC(I,J) = U: IF F = U  THEN K% = BA +I +8 *J -8: IF  PEEK(K%) = 8  THEN  POKE K%,4
  82. 4003  NEXT : NEXT 
  83. 4005  GOSUB 88: GOSUB 83:K% = U1: GOSUB 55: GOSUB 75: GOSUB 77
  84. 4020 I1 = U1:BA = KA +64 *NR +16: FOR I = U1 TO 8:IJ = BA +(8 -I) *8: FOR M = U1 TO 8:NS =  PEEK(IJ +M) +U1:XX = M:YY = 9 -I: GOSUB 100
  85. 4040  NEXT : NEXT 
  86. 4050  IF F = U  OR NB = U  THEN  GOSUB 4500: RETURN 
  87. 4060 F = U: FOR MQ = 1 TO NB:XM = XM(MQ):YM = YM(MQ): GOSUB 30: NEXT : RETURN 
  88. 4100 LM = L:K% = KR +IX(KF):L = LV +IY(KF): IF K% <U  OR K% >3  OR L <U  OR L >3  THEN XB = XA:YB = YA: GOSUB 52: RETURN 
  89. 4105 XB = XA +JX(KF):YB = YA +JY(KF): IF LM >U1  THEN XB = XB +IX(KF):YB = YB +IY(KF)
  90. 4110 IJ =  PEEK(KA +16 +(4 *L +K%) *64 +XB +8 *YB -8): IF FL <U  THEN 4120
  91. 4111  IF MK(8) = U1  AND IJ <U2  THEN 4120
  92. 4112  IF MK(9) = U1  AND IN = U1  AND IJ >U1  THEN 4120
  93. 4113  IF IJ = U  OR IJ >MM  OR IN >U  THEN XB = XA:YB = YA: GOSUB 52: RETURN 
  94. 4120 PW(NR) = U2 *NB:KR = K%:LV = L: IF PW(NR) >10  THEN PW(NR) = 10
  95. 4130  GOTO 4000
  96. 4500 M = PW(NR):NB = U
  97. 4505 NB = NB +1: GOSUB 4880:MQ(NB) = I: GOSUB 4510: IF NB <M  THEN 4505
  98. 4506  RETURN 
  99. 4510 XM =  FN A(8):YM =  FN A(8):K% =  PEEK(BA +XM +YM *8 -8):MF%(NB) = U3: IF OC(XM,YM) >U  OR (XM = XA  AND YM = YA)  THEN 4510
  100. 4511  IF K% > PEEK(UB +I)  OR K% = U  THEN NB = NB -U1:M = M -1: RETURN 
  101. 4520 MP(NB) =  PEEK(UP +MQ(NB)):OC(XM,YM) = NB:XM(NB) = XM:YM(NB) = YM:J = NB:MQ = NB: GOSUB 30: RETURN 
  102. 4550  IF  PEEK(UA +I) = U  THEN  GOSUB 4510:NB = NB +U1:MQ(NB) = I: GOSUB 4510: RETURN 
  103. 4555 J =  FN A(6) -U1: IF OC(XE(J),YE(J)) = U  AND (XE(J) < >XA  OR YE(J) < >YA)  THEN XM = XE(J):YM = YE(J): GOTO 4590
  104. 4560 MF%(NB) = U: FOR J = 5 TO U  STEP  -1:XM = XE(J):YM = YE(J): IF OC(XM,YM) >U  OR (XM = XA  AND YM = YA)  THEN  NEXT 
  105. 4590  IF  PEEK(BA +XM +8 *YM -8) = U  THEN MF%(NB) = U: RETURN 
  106. 4595 MF%(NB) =  INT((J +2)/U2): GOSUB 4520: RETURN 
  107. 4800 L =  FN A(100): IF L > PEEK(TD +NR) +TM  OR NB >8  THEN  RETURN 
  108. 4830  GOSUB 4880:NB = NB +U1:MQ(NB) = I: GOSUB 4550: IF MF%(NB) = U  AND NB >U  THEN NB = NB -U1
  109. 4840  RETURN 
  110. 4880 L =  FN A(100) +EC +OA +TM:LS = U: FOR I = U1 TO Q1:LS = LS + PEEK(UW +I): IF L < = LS  THEN  RETURN 
  111. 4890  NEXT :I = 7: RETURN 
  112. 5000 AP = 3: IF MK(11) >U  THEN AP = PA/MK(11)
  113. 5030  GOSUB 4000: GOSUB 200
  114. 5040  GOSUB 200: POKE KG,23: CALL KC: IF  LEN(B$) >U  THEN 6050
  115. 5041  GOSUB 51: GOSUB 78: POKE KG,7: CALL KC: GOSUB 77
  116. 5042  IF PL% <U1  THEN 7000
  117. 5043  IF HU% >80  THEN 5200
  118. 5044  IF IG >U  THEN IA = IG: GOTO 5048
  119. 5045  IF PL% <BP  THEN  GOSUB 5850: GOTO 5040
  120. 5046  POKE KG,23:Q$ = "?": CALL 2186: GOSUB 500: POKE KG,23:Q$ = C$: CALL 2186: GOSUB 50: IF L = U  THEN PL% = PL% -U1: GOTO 5040
  121. 5047  FOR IA = U1 TO  LEN(O$): IF C$ < > MID$ (O$,IA,U1)  THEN 5050
  122. 5048  IF PL% <PA(IA)  THEN IG = IA: GOTO 7000
  123. 5049  POKE KG,23: CALL KC:IG = U:PL% = PL% -PA(IA):HU% = HU% +PA(IA)/MK(U): ON IA GOTO 5300,5300,5090,5100,5400,5800,5500,5600,5700,5900,6000,6100,6200,6300,6400,6500,6600,6700,6800,6900
  124. 5050  NEXT : IF C$ = "Q"  THEN  POKE KG,6:Q$ = "WANT TO QUIT?": CALL 2186: GOSUB 500: IF C$ = "Y"  THEN 13000
  125. 5052  IF C$ = "#"  THEN  POKE KG,6: GOSUB 10000:Q$ = "SCORE: " + STR$(S):Q$ = Q$: CALL 2186
  126. 5060  GOTO 5040
  127. 5090  IF FL >U  THEN PL% = U: GOTO 7000
  128. 5095 PL% = BP -U1: GOTO 5040
  129. 5100  IF FL <U  THEN 7000
  130. 5102 L = U1: GOSUB 5105: IF K% = MM  THEN PL% = U: GOTO 7000
  131. 5103  GOTO 5040
  132. 5105  IF MK(10) = U  THEN 5110
  133. 5107 K% =  PEEK(BA +XA +YA *8 -8): IF K% >U  THEN  POKE BA +XA +YA *8 -8,MK(10): IF K% >4  AND K% <8  THEN DB% = DB% +B(K% -5)
  134. 5108 MQ = OC(XA,YA): IF MQ >U  AND  PEEK(UI +MQ(MQ)) = U  THEN  GOSUB 340
  135. 5110  GOSUB 250:XB = XA +L *IX(KF):YB = YA +L *IY(KF): IF XB <U1  OR XB >8  OR YB <U1  OR YB >8  THEN  GOSUB 4100
  136. 5111 K% =  PEEK(BA +XB +YB *8 -8): IF K% = 5  THEN 5150
  137. 5112  IF FL <U  THEN 5120
  138. 5113  IF MK(8) = U1  AND K% <U2  THEN 5120
  139. 5114  IF MK(9) = U1  AND IN = U1  AND K% >U1  THEN 5120
  140. 5115  IF K% = U  OR K% >MM  THEN  GOSUB 200: RETURN 
  141. 5116  IF IN >U  AND K% >U1  THEN  RETURN 
  142. 5120 XA = XB:YA = YB: GOSUB 200: CALL 2439: IF K% = U  AND FL >U  THEN PL% = PL% +U2
  143. 5130  RETURN 
  144. 5150  FOR JK = 1 TO 10: GOSUB 82: NEXT : TEXT : HOME : VTAB 10: HTAB 5: PRINT "DONE IN BY THE POWER PLANT ...": FOR I = 1 TO 10000: NEXT : GOTO 11000
  145. 5200  POKE KG,7:Q$ = "BERSERK!": CALL 2186: IF GB < >U  THEN PL% = PL% -PA(20): GOTO 6800
  146. 5210 H = U: FOR I = 1 TO 4: IF OC(XA +IX(I),YA +IY(I)) >U  THEN KF = I: GOSUB 83:PL% = PL% -PA(U1):H = U1:I = 4
  147. 5220  NEXT : IF H >U  THEN PL% = PL% -PA(18): GOTO 6700
  148. 5230  IF  RND(1) <.7  THEN 5044
  149. 5231  IF FL <U  THEN PL% = BP -U1: GOTO 5044
  150. 5232  GOTO 5340
  151. 5300 K% = U: GOSUB 55:HT = U:KF = KF +3 -U2 *IA: IF KF >4  THEN KF = U1
  152. 5301  IF KF <U1  THEN KF = 4
  153. 5310 K% = U1: GOSUB 55: GOSUB 83: GOTO 5040
  154. 5340  IF  PEEK(BA +XA +IX(KF) +8 *(YA +IY(KF) -U1)) < = MM  THEN PL% = PL% -PA(4): GOTO 5100
  155. 5350 IA =  FN A(U2): GOTO 5048
  156. 5400 MM = 7:L = U2: GOSUB 5105:MM = MK(6):PL% = U: GOTO 7000
  157. 5500 XM = XA +IX(KF):YM = YA +IY(KF):J = HT: IF  ABS(J) >U1  THEN J =  INT(J/U2)
  158. 5501  IF J < >U  THEN XM = XM +IX(KF +J):YM = YM +IY(KF +J)
  159. 5502  IF XM <U1  OR XM >8  OR YM <U1  OR YM >8  THEN 5040
  160. 5505 K% = BA +XM +8 *YM -8: IF  PEEK(K%) >4  AND  PEEK(K%) <8  THEN DB% = DB% +B( PEEK(K%) -5)
  161. 5507 NS = 9:XX = XM:YY = YM: GOSUB 100: IF  PEEK(K%) >U2  THEN  POKE K%,8
  162. 5510 MQ = OC(XM,YM): IF MQ >U  THEN  IF  FN A(20) > PEEK(UC +MQ(MQ))  THEN  GOSUB 340
  163. 5515 HU% = HU% +6/MK(U): IF  PEEK(K%) <8  THEN NS =  PEEK(K%) +U1: GOSUB 100
  164. 5520  GOTO 5040
  165. 5600 PC = PC *.8: GOSUB 88:NS = 9: GOSUB 260: FOR I = U1 TO 4: GOSUB 6550:MQ = OC(XX,YY): IF MQ >U  THEN  GOSUB 342
  166. 5605  IF XX <U1  OR XX >8  OR YY <U1  OR YY >8  THEN 5630
  167. 5610 K% = BA +XX +8 *YY -8: IF XX >U  AND XX <9  AND YY >U  AND YY <9  THEN  IF  PEEK(K%) >4  AND  PEEK(K%) <8  THEN DB% = DB% +B( PEEK(K%) -5): POKE K%,8
  168. 5620 NS = 9: GOSUB 100
  169. 5630  NEXT : FOR I = U1 TO 4: GOSUB 6550: IF XX >U  AND XX <9  AND YY >U  AND YY <9  THEN K% = BA +XX +8 *YY -8:NS =  PEEK(K%) +U1: GOSUB 100:
  170. 5640  NEXT :PL% = U: GOTO 7000
  171. 5700  IF FL <U  THEN 7000
  172. 5702 XM = XA:YM = YA:H = U
  173. 5705 MQ = OC(XM,YM): IF MQ = U  OR  PEEK(UI +MQ(MQ)) >U  THEN 5720
  174. 5710  IF  FN A(8) < PEEK(UL +MQ(MQ))  THEN 5720
  175. 5712  GOSUB 340
  176. 5720  IF H >U  THEN 5040
  177. 5721 K% = BA +XM +8 *YM -8: IF  PEEK(K%) <5  OR (MK(U3) + FN A(20) -4 < PEEK(K%) *10)  THEN 5040
  178. 5730 DB% = DB% +B( PEEK(K%) -5): POKE K%,4: POKE KG,6:Q$ = "CRUNCH!": CALL 2186: GOTO 5040
  179. 5800  GOSUB 250:FL =  -FL: GOSUB 200: GOTO 7000
  180. 5850 BP = BP -AP: IF FL >U  THEN  RETURN 
  181. 5860 L = U1: GOSUB 5105: RETURN 
  182. 5900  GOSUB 5970: GOSUB 5970:H = 4
  183. 5905 HU% = HU% +U3/MK(U):AX = XA:AY = YA:DD = 5 + FN A(15):M = U3 *KF -U3 +HT: IF M <U  THEN M = 12 +M
  184. 5910 AX = AX +CX(M):AY = AY +CY(M):X =  INT(AX +.5):Y =  INT(AY +.5): IF X >8  OR X <U1  OR Y >8  OR Y <U1  THEN 5040
  185. 5915  FOR I = U TO U1: GOSUB 5960: NEXT :MQ = OC(X,Y)
  186. 5925 K% = BA +X +Y *8 -8: IF  PEEK(K%) < = H  OR  PEEK(K%) = 8  THEN 5940
  187. 5926  FOR I = U TO 5: GOSUB 5960: NEXT I: IF DD <5 + PEEK(K%)  THEN 5040
  188. 5927 DB% = DB% +B( PEEK(K%) -5): POKE K%,4:NS = 5:I1 = U1:XX = X:YY = Y: GOSUB 100: IF MQ = U  THEN 5040
  189. 5940  IF MQ >U  THEN  IF  FN A(6) > =  PEEK(UL +MQ(MQ))  THEN  IF H = 4  OR FL <U  OR  PEEK(UI +MQ(MQ)) >U  THEN XX = X:YY = Y: GOSUB 450: IF DD > PEEK(UC +MQ(MQ))  THEN MP(MQ) = MP(MQ) + PEEK(UC +MQ(MQ)) -DD: IF MP(MQ) <U1  THEN XM = X:YM = Y: GOSUB 340
  190. 5950  GOTO 5910
  191. 5960  FOR J = 81 TO 85: XDRAW J AT (X -1) *24,(8 -Y) *24: FOR IK = 0 TO 20: NEXT : NEXT : RETURN 
  192. 5970  POKE KM,249: POKE KN,U1: POKE KO,24: CALL KP: RETURN 
  193. 6000  IF FL <U  THEN 5040
  194. 6001 K% = BA +XA +8 *YA -8: IF  PEEK(K%) = U  AND MK(8) >U  THEN 6005
  195. 6002  IF  PEEK(K%) >U1  AND MK(9) >U  THEN 6005
  196. 6003  GOTO 5040
  197. 6005  POKE KG,6:Q$ = "DESCENDING": CALL 2186:B$ = ""
  198. 6010  POKE KG,8:Q$ = "DIRECTION?": CALL 2186: GOSUB 80: GOSUB 51
  199. 6020 J = U: FOR I = U1 TO 5: IF C$ =  MID$ (BC$,I,U1)  THEN J = I:I = 5
  200. 6030  NEXT : IF J = U  THEN 6010
  201. 6035 B$ = B$ + CHR$(J): IF J = 5  THEN 7000
  202. 6036  IF  LEN(B$) <5  THEN 6010
  203. 6040 B$ = B$ + CHR$(5): GOTO 7000
  204. 6050 PL% = U:K% =  ASC( LEFT$(B$,U1)): IF K% = 5  THEN IN = U:B$ = "": GOSUB 200:PL% = PA -U2: GOTO 5040
  205. 6060  POKE KG,6:Q$ = "SUBSURFACE": CALL 2186:IN = U1:B$ =  RIGHT$(B$, LEN(B$) -U1):KF = K%: GOSUB 83:HU% = HU% +(MK(9) *6)/MK(U):L = U1: GOSUB 5110: GOTO 5040
  206. 6100  IF NB = U  THEN 5040
  207. 6110  FOR MQ = U1 TO NB:XM = XM(MQ):YM = YM(MQ): GOSUB 390: IF  RND(U1) <4/(D2 *(U1 + PEEK(UA +MQ(MQ))) +.1)  THEN MN(MQ) = U1
  208. 6120  NEXT : GOTO 5040
  209. 6200 MQ = 1: POKE KG,8:Q$ = "SCREAM!": CALL 2186: POKE KJ,20: POKE KK,255: CALL KL: IF NB = U  THEN 5040
  210. 6210 XM = XM(MQ):YM = YM(MQ): GOSUB 390: IF  RND(U1) <4/(D2 +4 + PEEK(UC +MQ(MQ)))  THEN  GOSUB 342:MQ = MQ -1
  211. 6215  IF MQ <NB  THEN MQ = MQ +1: GOTO 6210
  212. 6220  GOTO 5040
  213. 6300 I = MI(KF):H = U1
  214. 6305  GOSUB 6550:XM = XX:YM = YY: IF XM <U1  OR XM >8  OR YM <U1  OR YM >8  THEN 5040
  215. 6310  GOTO 5705
  216. 6400  POKE KG,6:Q$ = "R OR L?": CALL 2186: GOSUB 500: GOSUB 50: IF  LEN(C$) = U  THEN 5040
  217. 6420 K% = U: IF C$ = "R"  THEN HT = HT +U1
  218. 6425  IF C$ = "L"  THEN HT = HT -U1
  219. 6440  IF HT < -U2  THEN HT =  -U2
  220. 6445  IF HT >U2  THEN HT = U2
  221. 6450 K% = U1: GOSUB 55: GOTO 5040
  222. 6500 I = KF: IF GB < >U  THEN GB = U: GOSUB 75
  223. 6505  GOSUB 6550: IF XX <U1  OR XX >8  OR YY <U1  OR YY >8  THEN 5040
  224. 6510 K% = BA +XX +8 *YY -8: IF  PEEK(K%) < >U1  THEN 6515
  225. 6511  IF (MK(U3) + FN A(20)) >73  THEN DB% = DB% +B(U2): POKE K%,U:NS = U1: GOSUB 100:MQ = OC(XX,YY): IF MQ >U  AND  PEEK(UI +MQ(MQ)) = U  THEN  GOSUB 345
  226. 6512  GOTO 5040
  227. 6515  IF  PEEK(K%) <5  OR  PEEK(K%) >7  OR (MK(U3) + FN A(20) < PEEK(K%) *10)  THEN 5040
  228. 6520 DB% = DB% +B( PEEK(K%) -5): POKE K%,4:NS = 5: GOSUB 100: GOTO 5040
  229. 6550 XX = XA +IX(I):YY = YA +IY(I): RETURN 
  230. 6600  FOR I = U1 TO U2: GOSUB 5970: NEXT :H = 10: GOTO 5905
  231. 6700 I = KF: GOSUB 6550:XM = XX:YM = YY:MQ = OC(XM,YM): IF XM <U1  OR XM >8  OR YM <U1  OR YM >8  OR MQ = U  THEN 5040
  232. 6705  IF GB < >U  THEN GB = U: GOSUB 75
  233. 6710  IF  FN A(6) > PEEK(UL +MQ(MQ))  THEN  GOSUB 35:GB = 2.5 *MP(MQ) - PEEK(UC +MQ(MQ)): GOSUB 75: GOSUB 340: GOTO 5040
  234. 6720  POKE KG,6:Q$ = "ARR - MISSED": CALL 2186: GOTO 5040
  235. 6800  IF GB = U  THEN  POKE KG,6:Q$ = "NO FOOD": CALL 2186: GOTO 5040
  236. 6810  FOR I = U1 TO U3: POKE KG,6:Q$ = "CHOMP": CALL 2186: FOR J = U1 TO 400: NEXT : GOSUB 50: FOR J = U1 TO 300: NEXT : NEXT :HU% = HU% -GB:GB = U: GOSUB 75: IF HU% <U  THEN HU% = U: POKE KG,6:Q$ = "BURP": CALL 2186: CALL 2474
  237. 6820  GOTO 5040
  238. 6900 K% = BA +XA +8 *YA -8: IF  PEEK(K%) >U  AND  PEEK(K%) <4  THEN  POKE K%,4
  239. 6910  GOTO 5040
  240. 7000  GOSUB 57: GOSUB 600:HU% = HU% +U3/MK(U):TM = TM +U1:EC = EC +U1:PA = PA -PD: POKE KG,14:Q$ = "TIME: " + STR$(EC):Q$ = Q$: CALL 2186:PL% = PL% +PA:BP = PA: IF IN >U  THEN 5040
  241. 7001  GOSUB 4800:MQ = U
  242. 7002  IF PA <U  THEN 11000
  243. 7004 MQ = MQ +U1: IF MQ >NB  THEN 5040
  244. 7005  IF MN(MQ) >U  THEN MN(MQ) = U: GOTO 7520
  245. 7010 M1 = MQ(MQ):MB =  PEEK(UB +M1):MA =  PEEK(UA +M1):XM = XM(MQ):YM = YM(MQ):DD =  PEEK(UR +M1): GOSUB 60: IF H = U  THEN 7200
  246. 7100 XX = XA:YY = YA: FOR I = U1 TO 4: POKE KM,252: POKE KN,10: POKE KO,3: CALL KP: NEXT : IF  RND(U1) <P  THEN  GOSUB 7710: GOTO 7110
  247. 7105  GOSUB 450
  248. 7110  IF MA = U1  OR  RND(1) + PEEK(UI +M1) <P  THEN 7500
  249. 7200 MV =  PEEK(UV +M1): FOR JV = U1 TO MV:J = MI(MF%(MQ)):K% =  FN A(4): FOR I = U1 TO 4:D(K%) = U: IF K% = J  THEN 7220
  250. 7210 XT = XM +IX(K%):YT = YM +IY(K%):L =  PEEK(BA +XT +8 *YT -8): GOSUB 380: IF H >U  THEN  IF (MB > = L  AND (MB >6  OR L >U))  AND OC(XT,YT) = U  THEN  GOSUB 46
  251. 7211  IF H = U  THEN  IF  RND(1) >.4  THEN D(K%) = U
  252. 7212  IF H >U  OR MA >U  THEN 7215
  253. 7213  GOSUB 35:OC(XM,YM) = U: GOSUB 350:MQ = MQ -U1: GOTO 7004
  254. 7215  IF D(K%) = U  THEN 7220
  255. 7216  IF MA >U  AND D(K%) <D2  THEN 7300
  256. 7217  IF MA = U  AND D(K%) >D2  THEN 7300
  257. 7220  GOSUB 84: NEXT I:K% =  FN A(4): FOR I = U1 TO 4: IF D(K%) >U  THEN XT = XM +IX(K%):YT = YM +IY(K%): GOTO 7300
  258. 7230  GOSUB 84: NEXT I: IF JV = U1  THEN K% = J:XT = XM +IX(K%):YT = YM +IY(K%): IF OC(XT,YT) = U  THEN  GOSUB 46: GOTO 7300
  259. 7240 JV = MV: GOTO 7310
  260. 7300 D2 = D(K%):MF%(MQ) = K%:OC(XM,YM) = U: GOSUB 35: IF XT >U  AND XT <9  AND YT <9  AND YT >U  THEN XM = XT:YM = YT: GOSUB 30:OC(XM,YM) = MQ: GOTO 7305
  261. 7302  GOSUB 350:MQ = MQ -U1: GOTO 7004
  262. 7305  IF  PEEK(BA +XM +8 *YM -8) = MB  THEN JV = MV
  263. 7310  NEXT JV:XM(MQ) = XM:YM(MQ) = YM
  264. 7500  IF MP(MQ) <U1  THEN OC(XM,YM) = U: GOSUB 342
  265. 7520  GOTO 7004
  266. 7710  GOSUB 450:K% =  PEEK(UD +M1) + FN A(4) -MK(4): GOSUB 82: IF M1 = 5  THEN PD = PD +.2: POKE KG,6:Q$ = "EEE-": CALL 2186: FOR I = 1 TO 400: NEXT : POKE KG,6:Q$ = "EEE-ARGGH!": CALL 2186
  267. 7720  IF K% <U1  THEN  RETURN 
  268. 7721 PC = PC -K%: IF PC <U  THEN 11000
  269. 7730  GOSUB 88: RETURN 
  270. 10000 S = A(U,SO) *DB% +A(U1,SO) *EC +A(U2,SO) *CD +A(U3,SO) *ND:S =  INT(S/SP): RETURN 
  271. 11000  FOR I = 1 TO 1000: NEXT : TEXT : HOME : VTAB 10: HTAB 4: PRINT NM$(MT +MG)" DIES! HUMANITY TRIUMPHS!": FOR I = 1 TO 2500: NEXT 
  272. 12020  GOSUB 10000: PRINT : HTAB 4: PRINT "YOUR SCORE IS: "S: PRINT : HTAB 4: PRINT "TIME: "EC
  273. 12030  VTAB 23: HTAB 4: PRINT "HIT C TO PLAY AGAIN"
  274. 12040  GET A$: POKE  -16368,0
  275. 12050  IF A$ < >"C"  THEN 12040
  276. 12060  PRINT : PRINT  CHR$(4)"RUNCCC"
  277. 13000  TEXT : HOME : VTAB 5: PRINT "DO YOU WANT TO SAVE THE GAME? ";: GET C$: IF C$ < >"Y"  THEN 12020
  278. 13005  PRINT : PRINT "INSERT DISK ON WHICH YOU WANT TO SAVE   THE GAME & PUSH ANY KEY": GET A$
  279. 13010  PRINT : PRINT  TAB( 4);"NOW SAVING GAME IN PROGRESS"
  280. 13015  PRINT  CHR$(4)"BSAVEINPROG.BIN,A"KA",L1041"
  281. 13020  PRINT  CHR$(4)"OPENINPROG": PRINT  CHR$(4)"WRITEINPROG": PRINT O$","MT","BA","DB%","EC","FL","GB","HT","HU%","KF","KR","LV","XA","YA","NR","NB","PA","PC","PD","PL%","SO","SE","SP","OA","MG","ND","NM$(MT +MG)
  282. 13025  FOR I = U TO 12: PRINT MK(I): NEXT 
  283. 13030  FOR I = 1 TO NB: PRINT MN(I): PRINT MP(I): PRINT MQ(I): PRINT XM(I): PRINT YM(I): NEXT 
  284. 13040  FOR I = 1 TO 8: FOR J = 1 TO 8: PRINT OC(I,J): NEXT : NEXT 
  285. 13060  FOR I = 1 TO 20: PRINT PA(I): NEXT 
  286. 13070  FOR I = 0 TO 15: PRINT PW(I): NEXT 
  287. 13072  PRINT  CHR$(4)"CLOSE"
  288. 13074  PRINT 
  289. 13078  PRINT 
  290. 13080  PRINT  TAB( 4);"SAVE OF GAME COMPLETE"
  291. 13085  PRINT : PRINT "INSERT PROGRAM DISK AND PRESS ANY KEY.": GET A$: PRINT 
  292. 13090  GOTO 12030