home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol142 / sfamain.bas < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  14.3 KB  |  261 lines

  1. 10 WIDTH 51:PRINT CHR$(26):PA=320:GOSUB 8000:PRINT"      The Search For Almazar":PRINT TAB(13)"Part I":PRINT:PRINT"    Written by Winston M. Llamas":PRINT"Adapted to OSBORNE-1 by Robert I. Liddelow 16.5.83":PRINT"  c. Aug 1981. All Rights Reserved."
  2. 20 DIM FT(72),MO(72,5),VC$(53),VC(53),TC$(42),TC(42),OP(29),LO$(29),SO$(29),SP(14)
  3. 30 OPEN"I",#1,"SFAMOVE.0":FOR X=1 TO 72:INPUT#1,RI,MO(X,0),MO(X,1),MO(X,2),MO(X,3),MO(X,4),MO(X,5):NEXT:CLOSE#1
  4. 40 OPEN"I",#1,"SFAVOC.0":FOR X=0 TO 53:INPUT#1,VC$(X),VC(X):NEXT X:FOR Y=0 TO 42:INPUT#1,TC$(Y),TC(Y):NEXT Y:CLOSE#1
  5. 50 OPEN"I",#1,"SFAOBDES.0":FOR X=0 TO 29:INPUT#1,DU,LO$(X):NEXT X:FOR Y=0 TO 19:INPUT#1,DU,SO$(Y):NEXT Y:FOR Z=0 TO 29:INPUT#1,OP(Z):NEXT Z:CLOSE#1
  6. 60 '
  7. 70 PRINT CHR$(26):N=1:GOSUB 7000
  8. 80 '
  9. 90 '
  10. 100 IF RN>10 AND RN<30 THEN GOSUB 7400
  11. 114 TU=TU+1:IF TU>400 THEN RE=74:PRINT:GOSUB 7100:DI=3:GOTO 7300
  12. 115 IF SP(8)=1 THEN  SP(14)=SP(14)+1:ELSE IF SP(8)=0 THEN SP(14)=0
  13. 116 IF SP(2)=1 THEN SP(1)=SP(1)-1:IF SP(1)<1 THEN SP(2)=0
  14. 117 IF SP(1)<20 AND SP(2)=1 AND OP(8)=-1 AND W1<>1 THEN RE=17:PRINT:GOSUB 7100:W1=1
  15. 118 IF SP(13)>0 THEN SP(13)=SP(13)+1:IF SP(13)>5 THEN RE=70:PRINT:GOSUB 7100:GOSUB 7200:GOTO 100
  16. 119 IF TU>360 AND W2<>1 THEN RE=16:PRINT:GOSUB 7100:W2=1
  17. 121 IF RN=15 THEN SC=1:ELSE IF OP(23)=RN THEN SP(6)=SP(6)+1:IF SP(6)>5 THEN IO=22:PRINT:GOSUB 1800
  18. 122 IF SP(14)>7 THEN RE=65:PRINT:GOSUB 7100:SP(14)=0:SP(8)=0:GOSUB 7200:GOTO 100
  19. 123 C1=0:OW=0:PRINT:INPUT CO$:PRINT:LC=LEN(CO$):FOR X=1 TO LC:IF MID$(CO$,X,1)=" " THEN C1=X:GOTO 125:ELSE NEXT X
  20. 124 IF CO$="" THEN RE=2:GOSUB 7100:GOTO 100
  21. 125 V1=C1-1:IF C1=0 OR V1>4 THEN V1=4:ELSE OW=1
  22. 130 C1$=LEFT$(CO$,V1):FOR X=0 TO 53:IF C1$=VC$(X) THEN IV=VC(X):GOTO 140:ELSE NEXT X:RE=2:GOSUB 7100:GOTO 100
  23. 140 IF IV>16 THEN 970:ELSE IF IV>6 GOTO 190
  24. 144 IF IV=1 AND SP(7)<>2 AND RN=62 THEN RE=91:GOSUB 7100:GOTO 100
  25. 145 IF IV=1 AND RN=59 AND OP(29)<>59 THEN RE=1:GOSUB 7100:GOTO 100
  26. 150 N=MO(RN,(IV-1)):IF N=0 THEN RE=1:GOSUB 7100:GOTO 100:ELSE GOSUB 7000:GOTO 100
  27. 190 ON IV-6 GOSUB 200,300,400,500,600,700,800,900,3300,3400:GOTO 100
  28. 200 N=RN:FT(N)=0:GOSUB 7000:RETURN
  29. 300 IF RN=47 OR RN=43 OR RN=52 OR RN=54 OR RN=63 OR RN=61 OR RN=70 OR RN=69 GOTO 305:ELSE RE=102:GOTO 390
  30. 305 INPUT"The HINT will cost 3 points - still want it";HQ$:IF LEFT$(HQ$,1)="N" THEN RETURN ELSE PRINT
  31. 310 IF RN=47 THEN RE=94
  32. 315 IF RN=63 THEN RE=95
  33. 320 IF RN=54 THEN RE=96
  34. 325 IF RN=61 THEN RE=97
  35. 330 IF RN=70 THEN RE=98
  36. 335 IF RN=69 THEN RE=99
  37. 340 IF RN=52 THEN RE=100
  38. 345 IF RN=43 THEN RE=101
  39. 385 PR=PR+3
  40. 390 GOSUB 7100:RETURN
  41. 400 PRINT"You are carrying":FOR X=0 TO 29:IF OP(X)=-1 THEN PRINT SO$(X):CA=1
  42. 410 NEXT X:IF CA=0 THEN PRINT"   ....nothing!
  43. 420 RETURN
  44. 500 RE=6:IF RN=27 OR RN=28 THEN RE=43
  45. 505 IF RN=41 THEN RE=48
  46. 510 IF RN=43 OR RN=44 OR RN=49 THEN RE=30
  47. 520 GOSUB 7100:IF RE=30 THEN RE=31:GOSUB 7100
  48. 530 IF RE<>6 GOTO 7200 ELSE RETURN
  49. 600 PT=0:FOR X=0 TO 7:IF OP(X)=-1 THEN PT=PT+7
  50. 610 IF OP(X)=72 THEN PT=PT+10
  51. 620 NEXT X:PT=PT-(DI*10)-PR:IF RE=8 THEN PT=PT+10
  52. 630 PRINT"You have scored: "PT"points.":RETURN
  53. 700 INPUT"Are you sure you want to quit";QU$:IF LEFT$(QU$,1)<>"N" GOTO 7300 ELSE RETURN
  54. 800 OPEN"O",#1,"SFA/SAV.0":FOR X=0 TO 29:WRITE#1,OP(X):NEXT X:FOR Y=1 TO 72:WRITE#1,FT(Y):NEXT Y:FOR Z=0 TO 14:WRITE#1,SP(Z):NEXT Z:WRITE#1,RN,TU,SC,IN,PR:CLOSE#1
  55. 810 PRINT"The game is now saved for later play.
  56. "CHR$(13)"To continue the same game, type RESTORE at your
  57. "CHR$(13)"first turn after resumption":PRINT:GOSUB 600:PRINT:END
  58. 900 IF TU>1 THEN PRINT"It is too late to resume an old game":RETURN
  59. 910 OPEN"I",#1,"SFA/SAV.0":FOR X=0 TO 29:INPUT#1,OP(X):NEXT X:FOR Y=1 TO 72:INPUT#1,FT(Y):NEXT Y:FOR Z=0 TO 14:INPUT#1,SP(Z):NEXT Z:INPUT#1,RN,TU,SC,IN,PR:CLOSE#1:N=RN:GOSUB 7000:RETURN
  60. 970 S2=C1+1:C2$=MID$(CO$,S2,4)
  61. 980 FOR X=0 TO 42:IF C2$=TC$(X) THEN IO=TC(X):GOTO 990:ELSE NEXT X:RE=2:GOSUB 7100:GOTO 100
  62. 990 ON IV-16 GOSUB 1000,1100,1200,1200,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000,3100,3200:GOTO 100
  63. 1000 IF IO>18 THEN RE=2:GOTO 1030
  64. 1005 IF IN+1>7 THEN RE=83:GOTO 1099
  65. 1010 IF IO=18 THEN IF OP(5)=RN THEN RE=3:OP(5)=-1:GOTO 1098:ELSE IF OP(19)=RN THEN RE=3:OP(19)=-1:GOTO 1098
  66. 1015 IF IO<>5 AND IO<>16 GOTO 1018:ELSE IF IO=5 THEN IF OP(5)=-1 THEN RE=7:GOTO 1099:ELSE IF OP(19)=-1 THEN RE=62:GOTO 1099
  67. 1016 IF IO=5 THEN IF OP(22)=RN THEN IF OP(18)=-1 THEN RE=3:OP(22)=0:OP(18)=0:OP(5)=-1:GOTO 1099:ELSE RE=60:GOTO 1099
  68. 1017 IF IO=16 THEN IF OP(16)=RN THEN IF SP(3)=1 THEN RE=3:OP(16)=-1:GOTO 1098:EELSE RE=18:GOTO 1099
  69. 1018 IF IO=1 AND OP(20)=RN THEN RE=23:GOSUB 7100:GOTO 7200
  70. 1020 IF OP(IO)=RN THEN RE=3:OP(IO)=-1:ELSE IF OP(IO)=-1 THEN RE=7 ELSE RE=4
  71. 1030 IF IO=28 THEN IF OP(8)<>-1 THEN RE=63:ELSE IF RN<>8 THEN RE=71:ELSE RE=3:SP(1)=100
  72. 1040 IF IO=29 THEN IF OP(5)=-1 OR OP(19)=-1 THEN RE=62:ELSE IF OP(18)<>-1 THEN RE=60:ELSE IF RN<>43 AND RN<>44 AND RN<>49 THEN RE=4:ELSE RE=3:OP(18)=0:OP(19)=-1
  73. 1045 IF IV=22 THEN IF RE=60 THEN RE=77:ELSE IF RE=4 THEN RE=78
  74. 1046 IF IV=22 AND RE=71 THEN RE=78
  75. 1050 IF IO=7 AND OP(26)=RN THEN OP(7)=-1:OP(26)=0:RE=3
  76. 1060 IF IO=27 THEN IF RN=32 THEN RE=9 ELSE RE=4
  77. 1070 IF IO=25 THEN IF RN=65 THEN RE=9 ELSE RE=4
  78. 1080 IF IO=2 AND OP(23)=RN THEN RE=93
  79. 1085 IF IO=31 THEN IF RN=69 THEN RE=9 ELSE RE=4
  80. 1086 IF IO=19 THEN IF RN=52 THEN RE=9 ELSE RE=4
  81. 1090 IF IO=3 AND OP(24)=RN THEN RE=61
  82. 1098 IF RE=3 AND IO<19 THEN IN=IN+1
  83. 1099 GOSUB 7100:RETURN
  84. 1100 IF IO<19 OR IO=29 GOTO 1105:ELSE RE=2:GOTO 1199
  85. 1105 IF OP(IO)=-1 AND IO<>7 THEN OP(IO)=RN:RE=3:ELSE RE=5
  86. 1106 IF IO=16 ANR RE=3 THEN RE=66:SP(3)=0
  87. 1110 IF IO=18 AND OP(5)=-1 THEN OP(5)=RN:RE=3:GOTO 1140
  88. 1120 IF(IO=18 OR IO=29) AND OP(19)=-1 THEN OP(19)=RN:RE=3
  89. 1130 IF IO=7 AND OP(IO)=-1 THEN IF OP(14)=RN THEN RE=3:OP(7)=RN:ELSE RE=75:OP(7)=0:IN=IN-1
  90. 1140 IF RE=3 THEN IN=IN-1
  91. 1199 GOSUB 7100:RETURN
  92. 1200 IF IO>18 THEN RE=2:GOTO 1299
  93. 1210 IF OP(IO)=-1 THEN RE=6:ELSE RE=5:GOTO 1299
  94. 1220 IF IV=19 AND (RN=43 OR RN=44) AND IO=12 THEN SP(8)=ABS(SP(8)-1):IF SP(8)=1 THEN RE=28 ELSE RE=29
  95. 1230 IF IV=19 AND (RN=27 OR RN=28) AND IO=11 THEN SP(9)=ABS(SP(9)-1):IF SP(9)=1 THEN RE=35 ELSE RE=36
  96. 1240 IF IV=29 AND IO=10 THEN GOSUB 1300
  97. 1299 GOSUB 7100:RETURN
  98. 1300 IF RN=61 AND SP(5)=0 THEN SP(5)=1:RE=22:GOSUB 7100:RE=25:PRINT:OP(2)=RN:OP(23)=0:RETURN
  99. 1400 RE=4:IF RN=25 AND IO=26 THEN RE=34
  100. 1410 IF RN=32 AND IO=26 THEN RE=37
  101. 1420 IF RN=43 AND IO=35 THEN RE=32
  102. 1430 IF RN=44 AND IO=26 THEN RE=67
  103. 1440 IF RN=65 AND IO=25 THEN IF SP(10)=1 THEN RE=38 ELSE RE=44
  104. 1450 IF RN=70 AND IO=26 THEN RE=33
  105. 1454 IF IO<>26 AND IO<>25 AND IO<>35 THEN RE=2
  106. 1455 IF RN<>70 OR IO<>26 GOTO 1460
  107. 1456 FOR X=0 TO 7:IF OP(X)<>72 GOTO 1460
  108. 1457 NEXT X:IF OP(10)=-1 THEN RE=8:GOSUB 7100:GOTO 7300
  109. 1460 GOSUB 7100:IF RE=44 GOTO 7200
  110. 1470 RETURN
  111. 1500 IF IO=8 THEN IO=28:GOTO 1000
  112. 1510 IF IO=18 THEN IO=29:GOTO 1000
  113. 1520 RE=2:GOSUB 7100:RETURN
  114. 1600 RE=2:IF IO<>8 AND IO<>13 GOTO 1690
  115. 1605 IF SP(2)=1 AND IO=8 THEN RE=82:GOTO 1690
  116. 1610 IF OP(10)<>-1 THEN RE=5:GOTO 1690
  117. 1620 IF IO=8 AND SP(1)<1 THEN RE=13:GOTO 1690
  118. 1630 IF OP(17)<>-1 THEN RE=12:GOTO 1690
  119. 1640 IF IO=8 THEN RE=3:SP(2)=1:SP(13)=0:ELSE OP(13)=0:IN=IN-1:IF RN=52 THEN OP(20)=0:OP(1)=RN:RE=24:ELSE RE=3
  120. 1690 GOSUB 7100:RETURN
  121. 1700 RE=6:IF IO=20 OR IO=22 OR IO=36 OR IO=27 GOTO 1705:ELSE RE=2:GOTO 1690
  122. 1705 IF IO=36 THEN IF OP(21)<>RN THEN RE=4
  123. 1706 IF IO=20 AND OP(24)<>RN THEN RE=4
  124. 1707 IF IO=22 AND OP(23)<>RN THEN RE=4
  125. 1708 IF RE=4 GOTO 1690
  126. 1710 INPUT"With what, your bare hands";QU$:IF LEFT$(QU$,1)="N" GOTO 1750
  127. 1720 IF IO=20 THEN RE=21
  128. 1730 IF IO=22 THEN RE=45
  129. 1740 IF IO=36 THEN RE=81
  130. 1745 IF IO=27 THEN RE=11
  131. 1750 PRINT:GOSUB 7100:IF RE<>21 AND RE<>45 THEN RETURN ELSE 7200
  132. 1800 RE=2:IF IO=27 THEN IF OP(25)=RN THEN RE=10 ELSE RE=4
  133. 1810 IF IO=22 AND OP(23)=RN THEN SP(6)=0:RE=45:GOSUB 7100:GOTO 7200
  134. 1811 IF IO>19 GOTO 1820
  135. 1815 IF OP(IO)<>-1 THEN RE=5:ELSE IF OP(IO)<>RN THEN RE=4
  136. 1816 IF OP(IO)=-1 THEN OP(IO)=RN:RE=3:IN=IN-1
  137. 1820 GOSUB 7100:RETURN
  138. 1900 RE=6:IF IO>18 AND IO<>27 THEN RE=2:GOTO 1960
  139. 1910 IF IO=27 THEN IF OP(25)=RN GOTO 1710 ELSE RE=4:GOTO 1960
  140. 1920 IF IO=7 AND OP(7)=-1 THEN RE=75:OP(7)=0
  141. 1930 IF (IO=18 OR IO=5) AND OP(5)=-1 THEN RE=84:GOSUB 7100:PRINT:RE=73:OP(5)=0:IN=IN-1:GOTO 1960
  142. 1940 IF IO=18 AND OP(19)=-1 THEN OP(19)=0:IN=IN-1:RE=84
  143. 1950 IF OP(IO)<>-1 THEN RE=5
  144. 1955 IF IO=18 AND OP(18)=-1 THEN IN=IN-1:OP(18)=0:RE=84
  145. 1960 GOSUB 7100:RETURN
  146. 2000 RE=2:IF IO>18 GOTO 2099
  147. 2010 IF IO=18 OR IO=5 GOTO 1900
  148. 2020 IF OP(IO)<>-1 THEN RE=5:GOTO 2099:ELSE RE=3:IN=IN-1:OP(IO)=RN:IF (IO=6 AND OP(21)=RN) GOTO 2030 ELSE 2099
  149. 2030 KG=RND-(IN*.01):IF KG>.4 THEN PRINT"You killed a nasty knife throwing gnome!":OP(21)=0:ELSE PRINT"You missed - you ought to have your eyes examined!"
  150. 2040 RETURN
  151. 2099 GOSUB 7100:RETURN
  152. 2100 RE=19:IF IO<>5 GOTO 2110 ELSE IF OP(5)=-1 OR OP(5)=RN THEN RE=40:OP(5)=0:OP(18)=-1:GOTO 2199
  153. 2101 IF OP(5)=RN THEN RE=40:OP(5)=0:OP(18)=RN
  154. 2105 IF OP(22)=RN THEN OP(22)=0:RE=40:GOTO 2199
  155. 2110 IF IO=15 THEN IF OP(15)=-1 THEN OP(15)=0:IN=IN-1:RE=80:ELSE IF OP(15)=RN THEN OP(15)=0:RE=80
  156. 2120 IF IO=16 THEN IF OP(16)=-1 THEN RE=41:IN=IN-1:OP(16)=0:GOSUB 7100:GOTO 7200:ELSE IF OP(16)=RN THEN RE=66
  157. 2199 GOSUB 7100:RETURN
  158. 2200 RE=57:IF IO<>229 THEN RE=2:GOTO 2199
  159. 2210 IF OP(19)=-1 THEN RE=56:OP(19)=0:OP(18)=-1
  160. 2215 IF OP(19)=RN THEN RE=56:OP(19)=0:OP(18)=RN
  161. 2220 IF RN=43 OR RN=44 OR RN=49 THEN RE=56
  162. 2230 GOTO 2199
  163. 2300 IF IO<>16 AND IO<>20 THEN RE=2:GOTO 2199
  164. 2310 IF IO=16 THEN IF OP(16)<>RN THEN RE=4:GOTO 2199:ELSE IF OP(15)=-1 THEN SP(3)=1:RE=3:GOTO 2199:ELSE RE=19:GOTO 2199
  165. 2320 IF OP(24)<>RN THEN RE=4:GOTO 2199:ELSE IF OP(16)<>-1 THEN RE=19:GOTO 2199
  166. 2330 IN=IN-1:OP(24)=0:RE=20:GOSUB 7100:OP(16)=0:RE=26:PRINT:OP(3)=RN:GOTO 2199
  167. 2400 RE=6:IF IO>18 AND IO<>24 THEN RE=2:GOTO 2199
  168. 2410 IF IO<>24 GOTO 2199:ELSE IF RN<>59 THEN RE=4:GOTO 2199
  169. 2415 IF OP(29)=59 THEN RE=85:OP(29)=0:GOTO 2199
  170. 2420 RE=72:OP(29)=59:GOTO 2199
  171. 2500 IF IO<>30 AND IO<>31 AND IO<>32 THEN RE=2:GOTO 2199
  172. 2501 IF IO=30 AND RN=62 GOTO 2530
  173. 2505 RE=4:IF IO=32 AND RN=66 THEN IF OP(9)=-1 THEN SP(11)=1:RE=3:ELSE RE=14
  174. 2510 IF IO=31 AND RN=69 THEN IF OP(9)=-1 THEN RE=3:SP(12)=1:ELSE RE=14
  175. 2520 GOTO 2199
  176. 2530 INPUT"LEFT";N1$:INPUT"RIGHT";N2$:INPUT"LEFT";N3$:PRINT
  177. 2540 IF VAL(N1$)=3 AND VAL(N2$)=7 AND VAL(N3$)=21 THEN RE=87:SP(7)=1:ELSE RE=89
  178. 2550 GOTO 2199
  179. 2600 RE=2:IF IO<>21 AND IO<>23 GOTO 2199
  180. 2610 RE=4:IF IO=21 THEN IF (RN<>27 AND RN<>28) GOTO 2199:ELSE IF SP(9)=0 THEN RE=42:GOTO 2199
  181. 2620 IF IO=23 THEN IF (RN<>43 AND RN<>44) GOTO 2199:ELSE IF SP(8)=0 THEN RE=27:GOTO 2199
  182. 2630 IF RN=43 THEN N=44 ELSE IF RN=44 THEN N=43
  183. 2640 IF RN=27 THEN N=28 ELSE IF RN=28 THEN N=27
  184. 2650 GOTO 7000
  185. 2700 RE=2:IF IO<>23 AND IO<>29 GOTO 2720
  186. 2710 IF RN=43 OR RN=44 OR RN=49 THEN RE=31 ELSE RE=57
  187. 2720 GOSUB 7100:IF RE=31 GOTO 7200 ELSE RETURN
  188. 2800 IF IO<>30 AND IO<>31 AND IO<>32 AND IO<>33 THEN RE=2:GOTO 2899
  189. 2810 RE=4:IF IO<>30 GOTO 2820 ELSE IF RN<>62 GOTO 2899 ELSE IF SP(7)<1 THEN RE=88:GOTO 2899:ELSE IF SP(7)=2 THEN RE=68:GOTO 2899:ELSE RE=3:SP(7)=2:GOTO 2899
  190. 2820 IF IO=31 AND RN=69 THEN IF SP(12)<1 THEN RE=86:ELSE IF SP(12)=2 THEN RE=68:ELSE RE=39:SP(12)=2
  191. 2830 IF IO=32 AND RN=66 THEN IF SP(11)<1 THEN RE=86:ELSE IF SP(11)=2 THEN RE=68:ELSE SP(11)=2:IF OP(4)=0 THEN OP(4)=RN:RE=76:ELSE RE=3
  192. 2840 IF IO=33 THEN IF RN<>65 GOTO 2899:ELSE IF SP(10)=1 THEN RE=3:SP(10)=0:OP(27)=RN:OP(28)=0:ELSE RE=68
  193. 2899 GOSUB 7100:RETURN
  194. 2900 IF IO<>30 AND IO<>31 AND IO<>32 AND IO<>33 THEN RE=2:GOTO 2899
  195. 2910 RE=4:IF IO=30 AND RN=62 THEN IF SP(7)=0 THEN RE=69:ELSE RE=3:SP(7)=0
  196. 2920 IF IO=31 AND RN=69 THEN IF SP(12)=0 THEN RE=69:ELSE RE=3:SP(12)=0
  197. 2930 IF IO=32 AND RN=66 THEN IF SP(11)=0 THEN RE=69:ELSE RE=3:SP(11)=0
  198. 2940 IF IO=33 AND RN=65 THEN IF SP(10)=1 THEN RE=69:ELSE RE=3:SP(10)=1:OP(27)=0:OP(28)=RN
  199. 2950 GOTO 2899
  200. 3000 IF IO<>8 THEN RE=2:GOTO 2899
  201. 3010 IF OP(IO)<>-1 THEN RE=5 ELSE IF SP(2)<>0 THEN SP(2)=0:RE=3:ELSE RE=92
  202. 3020 GOTO 2899
  203. 3100 RE=6:IF IO>18 AND IO<>34 THEN RE=2:GOTO 3199
  204. 3110 IF IO<>34 GOTO 3199
  205. 3120 IF RN<>60 THEN RE=4:GOTO 3199:ELSE RE=79:N=61
  206. 3199 GOSUB 7100:IF RE<>7 THEN RETURN ELSE PRINT:GOTO 7000
  207. 3200 IF IO<>18 THEN RE=2:GOTO 2899
  208. 3205 RE=5:IF OP(18)=-1 THEN RE=90
  209. 3210 IF OP(5)=-1 THEN OP(5)=0:OP(18)=-1:RE=73
  210. 3220 IF OP(19)=-1 THEN RE=3:OP(19)=0:OP(18)=-1
  211. 3230 GOTO 2899
  212. 3300 EN=0:IF RN=1 OR RN=10 OR RN=55 THEN N=RN+1:EN=1
  213. 3305 IF RN=62 THEN IF SP(7)=2 THEN N=72:EN=1:ELSE RE=91:GOTO 2199
  214. 3310 IF RN=31 THEN N=33:EN=1
  215. 3320 IF RN=51 THEN N=70:EN=1
  216. 3330 IF EN=0 THEN RE=58:GOSUB 7100:ELSE GOSUB 7000
  217. 3340 RETURN
  218. 3400 LE=0:IF RN=2 OR RN=11 OR RN=56 THEN N=RN-1:LE=1
  219. 3410 IF RN=33 THEN N=31:LE=1
  220. 3420 IF RN=70 THEN N=51:LE=1
  221. 3425 IF RN=72 THEN N=62:LE=1
  222. 3430 IF LE=0 THEN RE=59:GOSUB 7100:ELSE GOSUB 7000
  223. 3440 RETURN
  224. 7000 IF ((RN=43 AND N=44) OR (RN=44 AND N=43)) AND SP(8)=0 THEN RE=27:GOSUB 7100:N=RN:RETURN
  225. 7001 IF ((RN=27 AND N=28) OR (RN=28 AND N=27)) AND SP(9)=0 THEN RE=42:GOSUB 7100:N=RN:RETURN
  226. 7002 IF RN=61 AND N<>61 AND IV=1 AND SP(5)=0 THEN RE=64:GOSUB 7100:N=RN:RETURN
  227. 7003 IF RN=67 AND N=71 AND SP(5)=0 THEN RE=1:GOSUB 7100:N=RN:RETURN
  228. 7004 SR=0:IF ((N>11 AND N<>15 AND N<30) OR (N>32 AND N<39)) THEN SR=1
  229. 7005 IF SR=0 GOTO 7009
  230. 7006 IF SP(2)=1 AND (OP(8)=-1 OR OP(8)=N) GOTO 7009:ELSE RE=15:GOSUB 7100:IF SP(13)=0 THEN SP(13)=1
  231. 7007 RN=N:N=0:RETURN
  232. 7009 IF FT(N)=0 THEN NF$="SFALDES.0" ELSE NF$="SFASDES.0"
  233. 7010 OPEN"R",#1,NF$:FIELD#1,128 AS DE$:GET#1,N:CLOSE#1:SP(13)=0
  234. 7015 FOR X=1 TO 128:IF MID$(DE$,X,10)=STRING$(10,32) GOTO 7040
  235. 7030 PRINT MID$(DE$,X,1);:NEXT X
  236. 7040 PRINT:RN=N:FT(N)=0:N=0:IF RN=41 AND VO=0 THEN RE=55:PRINT:GOSUB 7100:VO=1
  237. 7050 FOR X=0 TO 29:IF OP(X)=RN AND X<>21 THEN PRINT:PRINT LO$(X)
  238. 7060 NEXT X:RETURN
  239. 7100 OPEN"R",#1,"SFARESP.0":FIELD#1,128 AS R$:GET#1,RE:RE$=R$:CLOSE#1:FOR X=1 TO 128:IF MID$(RE$,X,12)=STRING$(12,32) GOTO 7110:ELSE PRINT MID$(RE$,X,1);:NEXT X
  240. 7110 PRINT:RETURN
  241. 7200 DI=DI+1:IF DI=3 THEN RE=49:PRINT:GOSUB 7100:GOTO 7300
  242. 7205 PRINT:INPUT"Do you want another chance";QU$:IF LEFT$(QU$,1)<>"Y" GOTO 7300
  243. 7210 IN=0:PRINT:RE=DI+45:GOSUB 7100:FOR X=0 TO 18:IF OP(X)=-1 THEN OP(X)=INT(RND*15)
  244. 7220 NEXT X:OP(8)=2:OP(17)=6:OP(12)=42:N=1:SP(2)=0:SP(8)=0:SP(14)=0:SC=0:PRINT:GOSUB 7000:RETURN
  245. 7300 PRINT:GOSUB 600:RE=50:IF PT>7 THEN RE=51
  246. 7320 IF PT>35 THEN RE=52
  247. 7330 IF PT>79 THEN RE=53
  248. 7340 IF PT=90 THEN RE=54
  249. 7350 PRINT:GOSUB 7100:PRINT:END
  250. 7400 IF SC=0 THEN RETURN
  251. 7410 IF OP(21)=0 THEN OP(21)=INT(RND*35)
  252. 7420 IF OP(21)>RN THEN OP(21)=OP(21)-1
  253. 7425 IF OP(21)<RN THEN OP(21)=OP(21)+1
  254. 7430 IF OP(21)<>RN THEN RETURN
  255. 7440 PRINT:PRINT LO$(21):RA=RND+(IN*.01):IF RA>.7 THEN PRINT:PRINT"He throws a small knife at you!":PRINT:IF RA>.9 THEN PRINT"It gets you!":GOTO 7200:ELSE PRINT"It misses you!"
  256. 7450 RETURN
  257. 8000 'PRINT @ LOOKALIKE
  258. 8010 YPA=INT(PA/64):XPA=PA MOD 64
  259. 8020 PRINT CHR$(27)"="CHR$(32+YPA)CHR$(32+XPA);
  260. 8030 RETURN
  261.