home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib22a.dsk / DECEMBER.1984 / OBELISK.bas < prev    next >
BASIC Source File  |  2023-02-26  |  22KB  |  307 lines

  1. 10  REM  **********************
  2. 20  REM  *                    *
  3. 30  REM  *       OBELISK      *
  4. 40  REM  * BY  DARYL L. SCOTT *
  5. 50  REM  * COPYRIGHT (C) 1984 *
  6. 60  REM  * BY MICROSPARC, INC *
  7. 70  REM  * CONCORD, MA  01742 *
  8. 80  REM  *                    *
  9. 90  REM  **********************
  10. 100  REM 
  11. 110  LOMEM: 24576: FOR X = 1 TO 16: READ P,D: NEXT : FOR X = 800 TO 813: READ Y: POKE X,Y: NEXT : FOR X = 832 TO 848: READ Y: POKE X,Y: NEXT : POKE 850,0: POKE 851,0: ONERR  GOTO 2970
  12. 120  GOTO 2990
  13. 130  IF DS = 1  THEN SC = 3
  14. 140  IF DS = 3  THEN SC = 2
  15. 150  ON SH GOSUB 160,190,160,160,200,210,220,230,190,240,190: RETURN 
  16. 160 Z = A +SC *(SC +1):W = B +8 -SC
  17. 170  HPLOT Z,W TO Z +12 *SC,W TO Z +12 *SC,W +30 *SC TO Z,W +30 *SC TO Z,W TO Z -2 *SC,W -2 *SC TO Z +10 *SC,W -2 *SC TO Z +12 *SC,W: HPLOT Z -2 *SC,W -2 *SC TO Z -2 *SC,W +28 *SC TO Z,W +30 *SC
  18. 180  HPLOT Z +2 *SC,B +13 *SC TO Z +10 *SC,B +13 *SC TO Z +10 *SC,B +15 *SC TO Z +2 *SC,B +15 *SC TO Z +2 *SC,B +13 *SC: RETURN 
  19. 190  HPLOT A -5 *SC,B +20 *SC TO A,B TO A +5 *SC,B +20 *SC TO A,B +15 *SC TO A -5 *SC,B +20 *SC: HPLOT A,B +12 *SC TO A,B +20 *SC: RETURN 
  20. 200  HPLOT A -3,B +2 TO A +3,B +2 TO A -3,B +6 TO A,B TO A +3,B +6 TO A -3,B +2: RETURN 
  21. 210  HPLOT A,B +7 TO A +20,B +7 TO A +10,B TO A,B +7: RETURN 
  22. 220 W = B -5:ZZ = A -5: HPLOT ZZ,W TO ZZ +8,W +6 TO ZZ +5,W TO ZZ +9,W +5 TO ZZ,W +9 TO ZZ +8,W: RETURN 
  23. 230  HPLOT A,B +2 TO A +14 *SC,B +2: HPLOT A +3 *SC,B +1 TO A +11 *SC,B +1: HPLOT A +5 *SC,B TO A +9 *SC,B: RETURN 
  24. 240  HPLOT A +1,B +1 TO A +9,B +1 TO A +9,B +9 TO A +1,B +9 TO A +1,B +1: RETURN 
  25. 250 OP = PD:PD =  PDL(0): IF OP < >PD  THEN  HCOLOR= 0: HPLOT 140,158 TO LX,150:LX = 127 + INT(PD/255 *25): HCOLOR= 3: HPLOT 140,158 TO LX,150:SI = LX -140
  26. 260  RETURN 
  27. 270 X =  INT( RND(1) *10): IF RP(X) < >1  THEN 400
  28. 280 DD = 400: ON X GOTO 290,300,310,320,330,340,350,360,370
  29. 290 XR = 135:YR = 62:Z = 135:DD = 800: GOTO 380
  30. 300 XR = 135:YR = 70:Z = 135:DD = 600: GOTO 380
  31. 310 XR = 135:YR = 55:Z = 135: GOTO 380
  32. 320 XR = 60:YR = 70:Z = 64: GOTO 380
  33. 330 XR = 220:YR = 70:Z = 216: GOTO 380
  34. 340 XR = 28:YR = 55:Z = 32: GOTO 380
  35. 350 XR = 93:YR = 55:Z = 97: GOTO 380
  36. 360 XR = 178:YR = 55:Z = 174: GOTO 380
  37. 370 XR = 248:YR = 55:Z = 244
  38. 380  IF  PEEK( -16287) >127  THEN 420
  39. 390  POKE 806,25: POKE 801,20: HCOLOR= 5: CALL 800: HPLOT XR,YR TO Z,158:SH = 7:A = Z:B = 153: GOSUB 220: HCOLOR= 0: POKE 839,10: POKE 845,40: CALL 832: HPLOT XR,YR TO Z,158: GOSUB 220: HCOLOR= 3:DA = DA +DD: GOSUB 920
  40. 400  IF DA >40000  THEN EN = EN -50
  41. 410  GOSUB 250:A$ = "":FR =  FRE(0): IF  PEEK( -16287) <128  THEN 470
  42. 420  HCOLOR= 6: POKE 839,0: POKE 845,60: CALL 832:FX = LX:FY = 150:SF = SF +1:OX = FX:OY = FY:FY = P3:DS = 1:Y = FY:FX = LX +SI *(150 -FY)/P5: IF FX >1  AND FX <267  THEN  HPLOT OX,OY TO FX,FY:OX = FX:OY = FY: GOTO 1940
  43. 430  GOTO 460
  44. 440 FY = P2:DS = 3: GOTO 1970
  45. 450 FY = P1:DS = 4:Y = FY:FX = LX +SI *(150 -FY)/P5: IF FX >1  AND FX <267  THEN  HPLOT OX,OY TO FX,FY:OX = FX:OY = FY: GOTO 2020
  46. 460 EN = EN -500: GOSUB 900: HCOLOR= 0: HPLOT LX,150 TO OX,OY: GOSUB 250
  47. 470  IF  PEEK( -16287) >127  THEN 420
  48. 480  IF  RND(1) >.96  THEN 700
  49. 490 ADJ = 1:KEY =  PEEK(49152): IF KEY <128  THEN 270
  50. 500  GET A$: IF A$ = " "  THEN 1430
  51. 510  IF A$ < >"M"  OR ME < = 0  THEN 640
  52. 520 ME = ME -1:EN = EN -1600: POKE 839,0: POKE 845,50: FOR Z = 1 TO 2: CALL 832: HPLOT 0,0: CALL 62454: HCOLOR= 2: CALL 832: HPLOT 0,0: CALL 62454: HCOLOR= 5: NEXT : CALL 832
  53. 530 F2 = 1: FOR Z = 1 TO 9: ON Z GOTO 540,550,560,570,580,590,600,610,620
  54. 540 FX = 131:FY = P3: GOTO 1940
  55. 550 FX = 131:FY = P2: GOTO 1970
  56. 560 FX = 128:FY = P1: GOTO 2020
  57. 570 FX = 59:FY = P2: GOTO 1970
  58. 580 FX = 221: GOTO 1970
  59. 590 FX = 32:FY = P1: GOTO 2020
  60. 600 FX = 92: GOTO 2020
  61. 610 FX = 176: GOTO 2020
  62. 620 FX = 248: GOTO 2020
  63. 630  NEXT :F2 =  PEEK(49168):F2 = 0: GOTO 1160
  64. 640  IF A$ =  CHR$(27)  THEN T1$ = " STATUS REPORT ": POKE 801,0: POKE 806,8: CALL 800: GOSUB 2670: CALL 800
  65. 650  IF  VAL(A$) >0  AND  VAL(A$) <9  THEN  HCOLOR= 0: GOSUB 1260:DI =  VAL(A$): GOSUB 1210
  66. 660  IF A$ < >"Q"  THEN 270
  67. 670  TEXT : HOME : VTAB (12): HTAB (4): FLASH : PRINT "DO YOU REALLY WANT TO QUIT <Y/N>?";: FOR X = 1 TO 3: POKE 801,0: POKE 806,10: CALL 800: POKE 801,200: POKE 806,15: CALL 800: NEXT 
  68. 680  NORMAL : GET AN$: IF AN$ < >"Y"  THEN  POKE  -16302,0: POKE  -16299,0: POKE  -16304,0: GOTO 270
  69. 690 EOG = 1:T1$ = "*QUIT MISSION*":ADJ = .8: GOTO 2670
  70. 700 X = 241:I =  -8 - INT( RND(1) *10):R =  RND(1):FF = 1: IF R >.5  THEN I = I * -1:X = 20
  71. 710 Y = 28: HCOLOR= 3: POKE 801,60: POKE 806,2
  72. 720  HCOLOR= 1:X = X +I:A = X:B = Y: GOSUB 210: CALL 800
  73. 730  IF  RND(1) <.30  THEN  HCOLOR= 3: HPLOT X +P4,Y +P4 TO X +P4,158: HCOLOR= 5:A = X +9:B = 152: GOSUB 220: CALL 800: HCOLOR= 0: HPLOT X +P4,Y +P4 TO X +P4,158: GOSUB 220: HCOLOR= 3:DA = DA +600
  74. 740  CALL 800: HCOLOR= 0:A = X:B = Y: GOSUB 210: IF X >19  AND X <242  THEN 770
  75. 750 X =  PEEK(49168): FOR X = 1 TO 2: POKE 801,0: POKE 806,10: CALL 800: POKE 801,200: POKE 806,15: CALL 800: NEXT :TR = TR +1
  76. 760 X = R1:Y = R2:F2 = 1:C$ = "1": GOSUB 2570:F2 = 0:R1 =  INT( RND(1) *16) +2:R2 =  INT( RND(1) *16) +2:P$(R2) =  LEFT$(P$(R2),R1 -1) +"3" + RIGHT$(P$(R2),20 -R1):MV = 0:PD = 0:F1 = 0:S1 = 0: GOTO 1160
  77. 770  IF FF =  -1  THEN  HCOLOR= P6: GOTO 830
  78. 780 OP = PD:PD =  PDL(0): IF OP < >PD  THEN  HCOLOR= 0: HPLOT 140,158 TO LX,150:LX = 127 + INT(PD/255 *25): HCOLOR= 3: HPLOT 140,158 TO LX,150:SI = LX -140
  79. 790  IF  PEEK( -16287) <128  THEN 720
  80. 800 EN = EN -450:F1 = 1: HCOLOR= 6: POKE 839,0: POKE 845,60: CALL 832:OX = LX:OY = 150:SF = SF +1: IF LX <131  OR LX >149  THEN FY = 78: GOTO 820
  81. 810 FY = 62
  82. 820 FX = LX +SI *(150 -FY)/P5: IF FF = 1  THEN 860
  83. 830  IF LX <132  OR LX >147  THEN FF = 1: GOTO 870
  84. 840 OY = FY:OX = FX:FY = 30:FX = LX +SI *(150 -FY)/P5: IF FX <2  THEN FX = 2
  85. 850  IF FX >266  THEN FX = 266
  86. 860  HPLOT OX,OY TO FX,FY:FF = FF * -1: IF FF =  -1  THEN 720
  87. 870  HCOLOR= 0:LY = 150: HPLOT LX,LY TO FX,FY: IF FY = 30  AND FX <X +15  AND FX >X +3  THEN 890
  88. 880 F1 = 0: GOTO 720
  89. 890 DS = 4:S = 1: GOSUB 920: GOSUB 900: GOTO 2100
  90. 900  IF EN >0  THEN  HCOLOR= 0: HPLOT 242,171 TO 85 +EN/99999 *157,171: HCOLOR= 6: RETURN 
  91. 910 T1$ = " OUT OF ENERGY ":EOG = 1:EN = 0: GOTO 2670
  92. 920  IF DA <99999  THEN  HCOLOR= 5: HPLOT 85,181 TO 85 +DA/99999 *158,181: HCOLOR= 3: RETURN 
  93. 930 T1$ = "CRITICAL DAMAGE":EOG = 1:DA = 99999: GOTO 2670
  94. 940  IF X <1  THEN X = 20 +X
  95. 950  IF X >20  THEN X = X -20
  96. 960  IF Y <1  THEN Y = 20 +Y
  97. 970  IF Y >20  THEN Y = Y -20
  98. 980 LC =  VAL( MID$ (P$(Y),X,1)): RETURN 
  99. 990  IF LC = 1  THEN RP(P) = 1:SC = 1: HCOLOR= 3:SH = 1:A = XL:B = YL: GOSUB 130: RETURN 
  100. 1000  IF LC = 2  AND DS = 1  THEN SC = 3:RX = 111:RY = 148
  101. 1010  IF LC = 2  AND DS = 4  THEN SC = 1:RX = XL -4:RY = YL +25
  102. 1020  IF LC = 2  AND DS = 3  THEN SC = 2:RX = XL +8:RY = YL +70
  103. 1030  IF LC = 2  THEN  HCOLOR= 5:SH = 8:A = RX:B = RY: GOSUB 130
  104. 1040  IF LC = 3  AND DS = 4  THEN SH = 9:A = XL:B = YL:SC = 1: GOSUB 130
  105. 1050  IF LC = 3  AND DS = 3  THEN SH = 2:SC = 2:A = XL +15:B = YL: GOSUB 130
  106. 1060  IF LC = 3  AND DS = 1  THEN SC = 3:SH = 2:A = 140:B = 95: GOSUB 130: HCOLOR= 0: HPLOT 50,160 TO 225,160
  107. 1070  HCOLOR= 3:SC = 1: RETURN 
  108. 1080  CLEAR : ONERR  GOTO 2970
  109. 1090  DIM P$(20):DI = 1:A$ = " ":LX = 140:EN = 99999:ME = 8:P1 = 62:P2 = 78:P3 = 86:P4 = 10:P5 = 8:P6 = 6:P7 = 33:ADJ = 1
  110. 1100 VV = ( PEEK(78) +1)/256: FOR Y = 1 TO 20: FOR X = 1 TO 20:V =  RND(1) *VV: IF V <.50 *VV  THEN V = 1:TR = TR +1
  111. 1110 V$ =  STR$( INT(V)):P$(X) = P$(X) +V$: NEXT X: POKE 801,10 +Y: POKE 806,25 -Y: CALL 800: NEXT Y:R =  RND(1) *4:RL = TR:V =  INT(V *20):VV =  INT(VV *20): IF VV <2  THEN VV = 2
  112. 1120  IF VV >19  THEN VV = 19
  113. 1130 P$(V) =  LEFT$(P$(V),VV -1) +"3" + RIGHT$(P$(V),20 -VV):R1 = VV:R2 = V:PX =  INT(VV +8 +R):PY =  INT(V +8 +R): IF PX >20  THEN PX = PX -20
  114. 1140  IF PY >20  THEN PY = PY -20
  115. 1150 OL = 1: GOTO 1430
  116. 1160  HGR2 : POKE  -16302,0:PD =  -1: HCOLOR= 1: HPLOT 1,0 TO 279,0 TO 279,159 TO 1,159 TO 1,0
  117. 1170  HCOLOR= 2:HX = 1: HPLOT HX,50:HX = 0: FOR X = 1 TO 10:HY =  INT( RND(1) *10):HX = HX +28: HPLOT  TO HX -1,50 -HY: NEXT : HCOLOR= 1: HPLOT HX -1,50 -HY: HCOLOR= 3
  118. 1180 FR =  FRE(0): HCOLOR= 3: HPLOT 1,50: FOR X = 28 TO 280  STEP 28:B = 22 - INT( RND(1) *22):SH = 5:A = X -20 +( INT( RND(1) *10)): GOSUB 200: NEXT : HCOLOR= 3
  119. 1190  HCOLOR= 3: HPLOT 1,161 TO 279,161 TO 279,191 TO 1,191 TO 1,161: HPLOT 40,161 TO 40,191: HPLOT 249,161 TO 249,191: HPLOT 264,161 TO 264,191: HPLOT 250,168 TO 278,168: HPLOT 250,176 TO 278,176: HPLOT 250,184 TO 278,184
  120. 1200  HCOLOR= 3: HPLOT 20,166: HPLOT 30,166: HPLOT 30,176: HPLOT 30,186: HPLOT 20,186: HPLOT 10,186: HPLOT 10,176: HPLOT 10,166: GOTO 1350
  121. 1210  HCOLOR= 0:SH = 10:A = 9:B = 165: GOSUB 240:B = 175: GOSUB 240:A = 18:B = 165: GOSUB 240:B = 175: GOSUB 240: HCOLOR= 3: HPLOT 20,166: HPLOT 30,166: HPLOT 30,176: HPLOT 30,186: HPLOT 20,186: HPLOT 10,186: HPLOT 10,176: HPLOT 10,166
  122. 1220 X = PX -R1:Y = PY -R2: IF X =  >0  AND Y =  >0  THEN SH = 10:A = 9:B = 165: GOSUB 240: GOTO 1260
  123. 1230  IF X =  >0  AND Y <0  THEN SH = 10:A = 9:B = 175: GOSUB 240: GOTO 1260
  124. 1240  IF X <0  AND Y =  >0  THEN SH = 10:A = 18:B = 165: GOSUB 240: GOTO 1260
  125. 1250 SH = 10:A = 18:B = 175: GOSUB 240
  126. 1260  ON DI GOSUB 1270,1280,1290,1300,1310,1320,1330,1340: RETURN 
  127. 1270  HPLOT 20,176 TO 20,166: RETURN 
  128. 1280  HPLOT 20,176 TO 30,166: RETURN 
  129. 1290  HPLOT 20,176 TO 30,176: RETURN 
  130. 1300  HPLOT 20,176 TO 30,186: RETURN 
  131. 1310  HPLOT 20,176 TO 20,186: RETURN 
  132. 1320  HPLOT 20,176 TO 10,186: RETURN 
  133. 1330  HPLOT 20,176 TO 10,176: RETURN 
  134. 1340  HPLOT 20,176 TO 10,166: RETURN 
  135. 1350 Y = 171: HCOLOR= 1: HPLOT 45,Y TO 65,167 TO 55,175 TO 75,Y:X = 84 +EN/99999 *159: HPLOT 85,Y TO X,Y: HPLOT 243,171
  136. 1360 Y = 181: HCOLOR= 5: FOR X = 45 TO 75  STEP 6: HPLOT X,Y TO X +3,Y: NEXT :X = 85 +DA/99999 *158: HPLOT 85,Y TO X,Y: HPLOT 243,Y: IF ME <1  THEN 1390
  137. 1370  HCOLOR= 6:X1 = 253:X2 = 260:Y = 165:E = ME: IF ME >4  THEN E = 4
  138. 1380  FOR X = 1 TO E: HPLOT X1,Y TO X2,Y:Y = Y +7: NEXT 
  139. 1390  IF ME <5  THEN  HCOLOR= 3: GOTO 1410
  140. 1400 X1 = 268:X2 = 275:Y = 165:E = ME -4: FOR X = 1 TO E: HPLOT X1,Y TO X2,Y:Y = Y +7: NEXT : HCOLOR= 3: IF F5 = 1  THEN  RETURN 
  141. 1410  IF S1 = 1  THEN  GOSUB 1520: GOSUB 1210: GOTO 270
  142. 1420  GOSUB 1530: GOSUB 1210: GOTO 270
  143. 1430  POKE 801,30: POKE 806,25: CALL 800:EN = EN -300: ON DI GOTO 1440,1450,1460,1470,1480,1490,1500,1510
  144. 1440 XI = 0:YI = 1: GOTO 1160
  145. 1450 XI = 1:YI = 1: GOTO 1160
  146. 1460 XI = 1:YI = 0: GOTO 1160
  147. 1470 XI = 1:YI =  -1: GOTO 1160
  148. 1480 XI = 0:YI =  -1: GOTO 1160
  149. 1490 XI =  -1:YI =  -1: GOTO 1160
  150. 1500 XI =  -1:YI = 0: GOTO 1160
  151. 1510 XI =  -1:YI = 1: GOTO 1160
  152. 1520  IF A$ < >"M"  THEN PX = PX +XI:PY = PY -YI
  153. 1530  FOR X = 1 TO 9:RP(X) = 0: NEXT : IF PX <1  THEN PX = 20
  154. 1540  IF PX >20  THEN PX = 1
  155. 1550  IF PY <1  THEN PY = 20
  156. 1560  IF PY >20  THEN PY = 1
  157. 1570  IF S1 = 0  THEN S1 = 1: GOTO 1620
  158. 1580  IF A$ < >"M"  THEN X = PX:Y = PY: GOSUB 980: IF LC = 1  AND DP = DI  THEN DA = DA +10000: TEXT : HOME : VTAB 10: INVERSE : PRINT "ROVER HIT OBELISK--- IT SELF DESTRUCTS": NORMAL : PRINT : FLASH : PRINT "<< ROVER SUSTAINS SIGNIFICANT DAMAGE >>"
  159. 1590  IF A$ < >"M"  AND LC = 1  AND DP = DI  THEN  NORMAL : FOR X = 1 TO 3: POKE 801,0: POKE 806,10: CALL 800: POKE 801,200: POKE 806,15: CALL 800: NEXT : FOR X = 1 TO 1500: NEXT : POKE  -16302,0: POKE  -16299,0: POKE  -16304,0
  160. 1600  IF LC = 3  AND DP < >DI  THEN 1620
  161. 1610  IF LC = 3  THEN T1$ = " SAFE IN SHIP! ":EOG = 1:ADJ = 1.2: GOTO 2940
  162. 1620 DP = DI:X = PX +1 *XI:Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 100:YL = 50:DS = 1:P = 1: GOSUB 990: IF LC < >2  THEN 1650
  163. 1630 X = PX +2 *XI:Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 115:YL = 60:DS = 3:P = 2: GOSUB 990: IF LC < >2  THEN 1650
  164. 1640 X = PX +3 *XI:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 127:YL = 50:DS = 4:P = 3: GOSUB 990
  165. 1650  ON DI GOTO 1660,1730,1800,1870,1660,1730,1800,1870
  166. 1660 YL = 60:DS = 3:X = PX -1:Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 40:P = 4: GOSUB 990
  167. 1670 X = PX +1: GOSUB 940: IF LC < >0  THEN XL = 200:P = 5: GOSUB 990
  168. 1680 YL = 50:DS = 4:X = PX -2:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 20:P = 6: GOSUB 990
  169. 1690 X = PX -1: GOSUB 940: IF LC < >0  THEN XL = 85:P = 7: GOSUB 990
  170. 1700 X = PX +1: GOSUB 940: IF LC < >0  THEN XL = 170:P = 8: GOSUB 990
  171. 1710 X = PX +2: GOSUB 940: IF LC < >0  THEN XL = 240:P = 9: GOSUB 990
  172. 1720  RETURN 
  173. 1730 YL = 60:DS = 3:X = PX +1 *XI:Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 40:P = 4: GOSUB 990
  174. 1740 X = PX +2 *XI:Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 200:P = 5: GOSUB 990
  175. 1750 YL = 50:DS = 4:X = PX +1 *XI:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 20:P = 6: GOSUB 990
  176. 1760 X = PX +2 *XI: GOSUB 940: IF LC < >0  THEN XL = 85:P = 7: GOSUB 990
  177. 1770 X = PX +3 *XI:Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 170:P = 8: GOSUB 990
  178. 1780 Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 240:P = 9: GOSUB 990
  179. 1790  RETURN 
  180. 1800 YL = 60:DS = 3:X = PX +XI *2:Y = PY +1: GOSUB 940: IF LC < >0  THEN XL = 40:P = 4: GOSUB 990
  181. 1810 Y = PY -1: GOSUB 940: IF LC < >0  THEN XL = 200:P = 5: GOSUB 990
  182. 1820 YL = 50:DS = 4:X = PX +XI *3:Y = PY +2: GOSUB 940: IF LC < >0  THEN XL = 20:P = 6: GOSUB 990
  183. 1830 Y = PY +1: GOSUB 940: IF LC < >0  THEN XL = 85:P = 7: GOSUB 990
  184. 1840 Y = PY -1: GOSUB 940: IF LC < >0  THEN XL = 170:P = 8: GOSUB 990
  185. 1850 X = PX +XI *3:Y = PY -2: GOSUB 940: IF LC < >0  THEN XL = 240:P = 9: GOSUB 990
  186. 1860  RETURN 
  187. 1870 YL = 60:DS = 3:X = PX +2 *XI:Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 40:P = 4: GOSUB 990
  188. 1880 X = PX +1 *XI:Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 200:P = 5: GOSUB 990
  189. 1890 YL = 50:DS = 4:X = PX +3 *XI:Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 20:P = 6: GOSUB 990
  190. 1900 Y = PY -2 *YI: GOSUB 940: IF LC < >0  THEN XL = 85:P = 7: GOSUB 990
  191. 1910 X = PX +2 *XI:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 170:P = 8: GOSUB 990
  192. 1920 X = PX +1 *XI:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 240:P = 9: GOSUB 990
  193. 1930  RETURN 
  194. 1940  IF FX = 131  AND RP(1) = 1  THEN X = 131:XL = 100:YL = 50:RX = 111:RY = 148:RP(1) = 0: GOTO 2090
  195. 1950  IF F2 = 1  THEN 630
  196. 1960  GOTO 440
  197. 1970  IF FX = 59  AND RP(4) = 1  THEN X = 56:XL = 40:YL = 60:RX = 48:RY = 130:RP(4) = 0: GOTO 2090
  198. 1980  IF FX = 131  AND RP(2) = 1  THEN X = 131:XL = 115:YL = 60:RX = 123:RY = 130:RP(2) = 0: GOTO 2090
  199. 1990  IF FX = 221  AND RP(5) = 1  THEN X = 216:XL = 200:YL = 60:RX = 208:RY = 130:RP(5) = 0: GOTO 2090
  200. 2000  IF FY < >P1  AND F2 = 0  THEN 450
  201. 2010  GOTO 630
  202. 2020  IF FX = 32  AND RP(6) = 1  THEN X = 24:XL = 20:YL = 50:RX = 16:RY = 75:RP(6) = 0: GOTO 2090
  203. 2030  IF FX = 92  AND RP(7) = 1  THEN X = 89:XL = 85:YL = 50:RX = 81:RY = 75:RP(7) = 0: GOTO 2090
  204. 2040  IF FX = 128  AND RP(3) = 1  THEN X = 131:XL = 127:YL = 50:RX = 123:RY = 75:RP(3) = 0: GOTO 2090
  205. 2050  IF FX = 176  AND RP(8) = 1  THEN X = 174:XL = 170:YL = 50:RX = 166:RY = 75:RP(8) = 0: GOTO 2090
  206. 2060  IF FX = 248  AND RP(9) = 1  THEN X = 244:XL = 240:YL = 50:RX = 236:RY = 75:RP(9) = 0: GOTO 2090
  207. 2070  IF F2 = 1  THEN 630
  208. 2080  GOTO 460
  209. 2090 RL = RL -1: IF F2 = 1  THEN  GOSUB 2150: GOTO 630
  210. 2100  HCOLOR= 0: HPLOT LX,150 TO OX,OY: FOR S = 1 TO 6 -DS:SC = S:XX = X +5:YY = Y +5: POKE 839,40: POKE 845,8: HCOLOR= 5: CALL 832:SH = 7:A = XX:B = YY: GOSUB 220: HCOLOR= 0: POKE 839,30: CALL 832: GOSUB 220: NEXT :SC = 1: HCOLOR= 3
  211. 2110  IF F1 = 1  THEN F1 = 0: GOTO 270
  212. 2120  HCOLOR= 5:SH = DS:A = XL:B = YL: GOSUB 130: HCOLOR= 0: GOSUB 130: IF DS = 1  THEN SC = 3
  213. 2130  GOSUB 2150: HCOLOR= 5: IF P >2  THEN SH = 8:A = RX:B = RY: GOSUB 130: HCOLOR= 3
  214. 2140 SC = 1: HCOLOR= 3: GOTO 270
  215. 2150 C$ = "2": IF YL = 50  AND XL = 100  THEN  GOSUB 2240: GOTO 2570
  216. 2160  IF YL = 60  AND XL = 115  THEN  GOSUB 2250: GOTO 2570
  217. 2170  IF YL = 50  AND XL = 127  THEN  GOSUB 2260: GOTO 2570
  218. 2180  IF YL = 60  AND XL = 40  THEN  GOSUB 2270: GOTO 2570
  219. 2190  IF YL = 60  AND XL = 200  THEN  GOSUB 2320: GOTO 2570
  220. 2200  IF YL = 50  AND XL = 20  THEN  GOSUB 2370: GOTO 2570
  221. 2210  IF YL = 50  AND XL = 85  THEN  GOSUB 2420: GOTO 2570
  222. 2220  IF YL = 50  AND XL = 170  THEN  GOSUB 2470: GOTO 2570
  223. 2230  IF YL = 50  AND XL = 240  THEN  GOSUB 2520: GOTO 2570
  224. 2240 X = PX +1 *XI:Y = PY -1 *YI: RETURN 
  225. 2250 X = PX +2 *XI:Y = PY -2 *YI: RETURN 
  226. 2260 X = PX +3 *XI:Y = PY -3 *YI: RETURN 
  227. 2270  ON DI GOTO 2280,2290,2300,2310,2280,2290,2300,2310
  228. 2280 X = PX -1:Y = PY -2 *YI: RETURN 
  229. 2290 X = PX +1 *XI:Y = PY -2 *YI: RETURN 
  230. 2300 X = PX +2 *XI:Y = PY +1: RETURN 
  231. 2310 X = PX +2 *XI:Y = PY -1 *YI: RETURN 
  232. 2320  ON DI GOTO 2330,2340,2350,2360,2330,2340,2350,2360
  233. 2330 X = PX +1:Y = PY -2 *YI: RETURN 
  234. 2340 X = PX +2 *XI:Y = PY -1 *YI: RETURN 
  235. 2350 X = PX +2 *XI:Y = PY -1: RETURN 
  236. 2360 X = PX +1 *XI:Y = PY -2 *YI: RETURN 
  237. 2370  ON DI GOTO 2380,2390,2400,2410,2380,2390,2400,2410
  238. 2380 X = PX -2:Y = PY -3 *YI: RETURN 
  239. 2390 X = PX +1 *XI:Y = PY -3 *YI: RETURN 
  240. 2400 X = PX +3 *XI:Y = PY +2: RETURN 
  241. 2410 X = PX +3 *XI:Y = PY -1 *YI: RETURN 
  242. 2420  ON DI GOTO 2430,2440,2450,2460,2430,2440,2450,2460
  243. 2430 X = PX -1:Y = PY -3 *YI: RETURN 
  244. 2440 X = PX +2 *XI:Y = PY -3 *YI: RETURN 
  245. 2450 X = PX +3 *XI:Y = PY +1: RETURN 
  246. 2460 X = PX +3 *XI:Y = PY -2 *YI: RETURN 
  247. 2470  ON DI GOTO 2480,2490,2500,2510,2480,2490,2500,2510
  248. 2480 X = PX +1:Y = PY -3 *YI: RETURN 
  249. 2490 X = PX +3 *XI:Y = PY -2 *YI: RETURN 
  250. 2500 X = PX +3 *XI:Y = PY -1: RETURN 
  251. 2510 X = PX +2 *XI:Y = PY -3 *YI: RETURN 
  252. 2520  ON DI GOTO 2530,2540,2550,2560,2530,2540,2550,2560
  253. 2530 X = PX +2:Y = PY -3 *YI: RETURN 
  254. 2540 X = PX +3 *XI:Y = PY -1 *YI: RETURN 
  255. 2550 X = PX +3 *XI:Y = PY -2: RETURN 
  256. 2560 X = PX +1 *XI:Y = PY -3 *YI: RETURN 
  257. 2570  GOSUB 940: IF X <2  THEN P$(Y) = C$ + RIGHT$(P$(Y),19): RETURN 
  258. 2580  IF X >19  THEN P$(Y) =  LEFT$(P$(Y),19) +C$: RETURN 
  259. 2590 P$(Y) =  LEFT$(P$(Y),X -1) +C$ + RIGHT$(P$(Y),20 -X): IF F2 = 1  THEN  RETURN 
  260. 2600  IF FY = P3  THEN 2630
  261. 2610  IF FY = P2  AND FX = 131  THEN 2640
  262. 2620 P = 3: RETURN 
  263. 2630 X = PX +1 *XI:Y = PY -1 *YI: GOSUB 940: IF LC < >0  THEN XL = 100:YL = 50:DS = 1:P = 1: GOSUB 990: IF LC < >2  THEN  RETURN 
  264. 2640 X = PX +2 *XI:Y = PY -2 *YI:P = 2: GOSUB 940: IF LC < >0  THEN XL = 115:YL = 60:DS = 3: GOSUB 990: IF LC < >2  THEN  RETURN 
  265. 2650 X = PX +3 *XI:Y = PY -3 *YI: GOSUB 940: IF LC < >0  THEN XL = 127:YL = 50:DS = 4:P = 3: GOSUB 990
  266. 2660 P = 2: RETURN 
  267. 2670 EL =  INT(EN/99999 *100 +.5):RH =  INT((TR -RL +.000001)/(TR +.001) *100 +.5):DM =  INT((DA +.000001)/99999 *100 +.5):HS =  PEEK(850) + PEEK(851) *256
  268. 2680 R =  INT(ADJ *RH *((200 +EL)/100) -DM): IF ADJ = .8  THEN R = R -20
  269. 2690  IF ADJ = 1.2  THEN R = R +20
  270. 2700  IF R <0  THEN R = 0
  271. 2710  IF R <HS  OR EOG = 0  THEN F8 = 0: GOTO 2730
  272. 2720 HS = R: POKE 851,HS/256: POKE 850,HS - PEEK(851) *256:F8 = 1
  273. 2730  TEXT : HOME : HTAB (13): FLASH : PRINT T1$: NORMAL : PRINT : IF EOG = 1  THEN  POKE 839,0: POKE 845,50: FOR X = 1 TO 5: CALL 832: NEXT 
  274. 2740  HTAB (9): INVERSE : PRINT "*** MISSION STATUS ***": NORMAL : PRINT : PRINT "CURR DIRECTION= ";DI;"    % ENERGY LEFT= ";EL: PRINT "#OBELISKS LEFT= ";RL;: PRINT  TAB( 22)"%OBELISKS HIT= ";RH
  275. 2750  PRINT "# SHOTS FIRED = ";SF;: PRINT  TAB( 22)"% DAMAGE     = ";DM: PRINT "# MEGABLASTS  = ";ME;: PRINT  TAB( 22)"TOTAL RATING = ";R: GOSUB 2850: REM  COMPUTE RANK
  276. 2760  PRINT "RANK:";R$;: HTAB (22): IF F8 = 1  THEN  FLASH 
  277. 2770  PRINT "HIGHEST TODAY= ";HS: NORMAL : PRINT : HTAB (9): INVERSE : PRINT "*** COMMAND SUMMARY ***": NORMAL : PRINT : PRINT  TAB( 7)"NUMBERS 1-8 - SET DIRECTION": PRINT  TAB( 9)"SPACE BAR - MOVE FORWARD": PRINT 
  278. 2780  PRINT  TAB( 8)"PADDLE # 0 - AIM PHASER": PRINT  TAB( 8)"BUTTON # 0 - FIRE PHASER": PRINT : PRINT  TAB( 10)"LETTER M - MEGABLAST": PRINT  TAB( 10)"LETTER Q - QUIT MISSION": PRINT  TAB( 9)"<ESC> KEY - MISSION STATUS"
  279. 2790  IF   NOT EOG  THEN 2840
  280. 2800  GOSUB 2930: VTAB (24): HTAB (9): PRINT "PLAY ANOTHER GAME <Y/N>?";
  281. 2810  GET AN$: IF AN$ < >"Y"  AND AN$ < >"N"  THEN 2810
  282. 2820  IF AN$ = "Y"  THEN OL = 0:NX = 1: GOTO 2990
  283. 2830  VTAB (23): HTAB 1: CALL  -958: HTAB 9: INVERSE : PRINT "<< THANKS FOR PLAYING >>";: NORMAL : END 
  284. 2840  VTAB (24): PRINT  TAB( 9)"HIT ANY KEY TO CONTINUE";: GET AN$: POKE  -16302,0: POKE  -16299,0: POKE  -16304,0: RETURN 
  285. 2850  IF R <16  THEN R$ = "JR CABIN BOY": RETURN 
  286. 2860  IF R <31  THEN R$ = "ROVER MECHANIC": RETURN 
  287. 2870  IF R <51  THEN R$ = "ROVER CREWMAN": RETURN 
  288. 2880  IF R <76  THEN R$ = "JR STAR PILOT": RETURN 
  289. 2890  IF R <96  THEN R$ = "SR STAR PILOT": RETURN 
  290. 2900  IF R <116  THEN R$ = "STAR CAPTAIN": RETURN 
  291. 2910  IF R <136  THEN R$ = "STAR ADMIRAL": RETURN 
  292. 2920 R$ = "STAR COMMANDER": RETURN 
  293. 2930  RESTORE : FOR X = 1 TO 16: READ P,D: POKE 806,P: POKE 801,D: CALL 800: NEXT : RETURN 
  294. 2940 F5 = 1: GOSUB 1160:X = 132:S = 4:I = 14:Y = 115:F = 1.2: POKE 806,10: POKE 801,60: HCOLOR= 3
  295. 2950  CALL 800:S = S *F: IF S >Y  THEN 2670
  296. 2960 SH = 9:A = X:B = Y -S: HCOLOR= 3: CALL 800:SC = 1: GOSUB 130: CALL 800: HCOLOR= 0: GOSUB 130: CALL 800: POKE 806,10 -S/I: GOTO 2950
  297. 2970 ER =  PEEK(222):EL =  PEEK(218) + PEEK(219) *256: IF OL = 1  THEN 1160
  298. 2980  GOTO 1080
  299. 2990  TEXT : HOME : INVERSE :BL$ = "": VTAB 5: HTAB (14): PRINT "O B E L I S K": NORMAL : PRINT : PRINT  TAB( 12)"BY DARYL L. SCOTT"
  300. 3000  VTAB 10: GOSUB 3050: PRINT : PRINT  TAB( 4)"DESTROY THE ALIEN OBELISKS, FIND": PRINT  TAB( 4)"YOUR BASE SHIP, AND BLAST OFF!!!": PRINT : GOSUB 3050
  301. 3010  PRINT : PRINT : PRINT  TAB( 14)"COPYRIGHT 1984": PRINT  TAB( 12)"BY MICROSPARC, INC."
  302. 3020  VTAB 1: HTAB 1: FOR X = 1 TO 39:BL$ = BL$ +" ": NEXT : INVERSE : PRINT BL$: FOR X = 2 TO 23: PRINT " ";: HTAB 39: PRINT " ": NEXT : PRINT BL$;: NORMAL 
  303. 3030  VTAB 20: IF   NOT NX  THEN  GOSUB 2930: HTAB (8): FLASH : PRINT " <<HIT ANY KEY TO BEGIN>>";: NORMAL : GET A$: PRINT : VTAB 20: HTAB (8): PRINT "USE <ESC> FOR INSTRUCTIONS";
  304. 3040  VTAB 12: HTAB 2: PRINT  LEFT$(BL$,35);: HTAB 15: FLASH : PRINT "<< BATTLE >>";: NORMAL : VTAB 13: HTAB 2: PRINT  LEFT$(BL$,35);: HTAB 15: FLASH : PRINT "<< ALERT! >>";: NORMAL : GOTO 1080
  305. 3050  HTAB 4: FOR X = 1 TO 32: PRINT "-";: NEXT : PRINT : RETURN 
  306. 3060  DATA 18,250,24,250,23,75,22,72,19,75,28,250,24,250,23,75,22,75,19,75,28,250,24,250,23,100,22,100,23,100,19,250: DATA 162,48,141,48,192,169,16,32,168,252,202,208,245,96,162,1,141,48,192,138,105,56,32,168,252,232,224,21,208,242,96
  307. 3070  DATA 18,250,24,250,23,75,22,72,19,75,28,250,24,250,23,75,22,75,19,75,28,250,24,250,23,100,22,100,23,100,19,250