home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / mission.lbr / MISSION.BZS / MISSION.BAS
BASIC Source File  |  1993-10-26  |  28KB  |  564 lines

  1. 5 '    ***
  2.     ***                        
  3.     ***        M I S S I O N :    I M P O S S I B L E
  4.     ***
  5. 6 '    ***         Program by Richard  Altman
  6.     ***         CP/M Version  --  11/20/89
  7.     ***
  8. 7 '    ***         Copyright (c) 1989 by Richard Altman
  9.     ***             All Rights Reserved.
  10.     ***
  11. 8 '    ***********************************************************************
  12. 9 '
  13. 10 '     USER SUPPORTED
  14. 11 '
  15. 12 '     This program is user-supported software.  It is copyrighted and cannot
  16. 13 ' be sold for profit (without the author's express written permission),  but
  17. 14 ' it may be copied and distributed for free.
  18. 15 '
  19. 16 '     The  SHAREWARE  concept is a  distribution method  that dispenses with
  20. 17 ' heavy  marketing/advertising costs and gives the user the  opportunity  to
  21. 18 ' try a software program before buying.   Its continued existence depends on
  22. 19 ' each user paying for what he does, in fact, use.
  23. 20 '
  24. 21 '     If you find this program [MISSION.BAS] useful, please send the $20 (or
  25. 22 ' more) registration fee directly to the author:
  26. 23 '
  27. 24 '        Richard S. Altman -- P.O. Box 4388 -- Clearlake, CA 95422
  28. 25 '
  29. 26 '      Upon registration,  you will receive a floppy diskette containing the
  30. 27 ' latest version of this program,  a compiled version,  and a printed manual
  31. 28 ' of instructions & hints.   You will also receive a FREE  calendar printing
  32. 29 ' program,  an  original  Blackjack  program  (for one or two players),  and
  33. 30 ' other programs by the same author.
  34. 31 '
  35. 32 '      WHEN ORDERING,  please be sure to indicate  single or double  density
  36. 33 ' disk drive,  and the name of the program [MISSION.BAS].   Comments on pro-
  37. 34 ' grams are also most welcome!
  38. 35 '
  39. 36 '     Due to  possible unforeseen circumstances,  the above offer is subject
  40. 37 ' to change without notice.
  41. 38 '
  42. 39 '***************************************************************************
  43.  
  44. 40 '    Set Up Variables
  45. 41 DEFSTR C,F,H-I,L:DEFINT A-B,E,M-N,P,W,Z:WIDTH 255
  46. 42 DIM F(24),J(10,10),K(10,10),L(16),M(16),N(16),O(22)
  47. 43 CLR=CHR$(23):F=CHR$(8):H=".":ESC$=CHR$(27):FQ=ESC$+CHR$(61):GOSUB 70
  48. 44 FOR X=1 TO 24:F(X)=FQ+CHR$(X+31)+" ":NEXT:GOSUB 5020:C7=CHR$(7)
  49. 45 DEF FNF(X,Y)=FQ+CHR$(X+31)+CHR$(Y+31):DEF FNRN(X)=INT(RND*X)+1
  50. 46 DEF FNTITLE$(X,M$)=FNF(X,1)+STRING$((80-LEN(M$))/2,12)+M$:CX=">>>>>  "
  51. 47 CA=STRING$(79,45):H1="/":Q$=CHR$(34):FB=CHR$(121):FC=CHR$(191)
  52. 48 C=STRING$(5,32):LH=" Headquarters":LS=" State Building"
  53. 49 LC="Secret Code Book":LT=" Terrorists":LM="Mission Team Member"
  54. 50 LU=" the"+LT:LF=STRING$(80,138)+CHR$(10):LA=" Enemy Agent"
  55. 51 FD=FNF(16,6)+CLR+" <A> = Get a Team Member or Code Book -or- "
  56. 52 FD=FD+F(18)+CA+FNF(17,6)+" <F> = Receive a Secret Report....         "
  57. 53 EL$=ESC$+"L":ED$=ESC$+"D":HF(1)="Foreign Embassy":GOTO 89
  58.  
  59. 54 '    Miscellaneous Subroutines
  60. 55 L=FNTITLE$(2,"  MISSION:  IMPOSSIBLE  ")
  61. 56 GOSUB 5025:IF L0="I"THEN GOSUB 5065 ELSE GOSUB 5060
  62. 57 L0="":PRINT CLR:GOTO 5020
  63. 58 IF Z<1 THEN Z=1
  64. 59 C1="":IF Z<>1 THEN C1="s"
  65. 60 C2="":IF Z<22 THEN C2=" only"
  66. 61 PRINT C"You have"C2;Z"hour"C1" left ";:RETURN
  67. 62 IF Z>1 THEN LG="begin your Assignment.   "ELSE LG="continue.   "
  68. 63 L=FNTITLE$(23,"   Press <ANY KEY> to "+LG):PRINT L;
  69. 64 Z3=1:GOSUB 6000:Z3=0:IF Z>1 THEN RETURN ELSE 55
  70. 65 PRINT" but it took"Y1"hours to do it!!!":PRINT
  71. 66 GOSUB 67:Z=Z-Y1:GOTO 800
  72. 67 J(X,Y)=0:K(X,Y)=0:RETURN
  73. 68 PRINT" at"K"-"J;H:RETURN
  74. 69 J(J,K)=K(J,K):RETURN
  75. 70 PRINT CHR$(26):LK=INKEY$:RETURN
  76. 71 PRINT:PRINT C"Your Mission, should you decide to accept it, is to ";:RETURN
  77. 72 PRINT C"You don't have any "LZ"s.":RETURN
  78. 73 PRINT C"You have";:IF D=1 THEN PRINT" one "LZ; ELSE PRINT D;LZ"s";
  79. 74 RETURN
  80. 75 W=0:FOR A=1 TO 16:IF M(A)=1 THEN W=W+1
  81. 76 NEXT:E1=0:FOR A=1 TO 5:IF P(A)=1 THEN E1=E1+1
  82. 77 NEXT:RETURN
  83. 78 L=C+"LEGAL MOVES:    NORTH - SOUTH - EAST - WEST - REPORT - DISCOVER - MAP"
  84. 79 L=L+C:GOSUB 5065:PRINT:RETURN
  85. 80 PRINT C"All of"LU" have been killed... ";:RETURN
  86. 81 K=K-J:K=K*100:K=INT(K+.5):RETURN
  87. 82 TB=TA-2:IF TB<1 THEN TB=1
  88. 83 TC=TA+2:IF TC>9 THEN TC=10
  89. 84 TE=TD-2:IF TE<1 THEN TE=1
  90. 85 TF=TD+2:IF TF>9 THEN TF=10
  91. 86 T(1)=TA+(TD/100):K(TA,TD)=10
  92. 87 FOR AA=TB TO TC:FOR AB=TE TO TF:K(AA,AB)=1:NEXT AB,AA:RETURN
  93. 88 GOSUB 70
  94. 89 WIN=0:Z1=0:IF H1="/"THEN 94 ELSE 2800
  95. 90 IF Z>10 THEN RETURN ELSE PRINT C;:L=C+C+"ONLY"+STR$(Z)+" HOUR"
  96. 91 IF Z<>1 THEN L=L+"S"
  97. 92 L=L+" LEFT to complete the Mission."+C+C:IF Z<10 THEN L=L+" "
  98. 93 GOSUB 5065:PRINT:RETURN
  99. 94 GOSUB 8000:H1="\":GOSUB 2700:GOTO 2800
  100.  
  101. 100 '    Start Mission
  102. 105 RESTORE 8500
  103. 110 FOR A=1 TO 16:READ L(A):M(A)=0:N(A)=1:NEXT
  104. 115 FOR A=1 TO 5:READ H$(A),A$(A),K$(A):NEXT:READ HF(2),HF(3)
  105. 120 FOR A=1 TO 5:W(A)=3:A(A)=1:E1(A)=1:P(A)=0:NEXT
  106. 125 FOR A=1 TO 10:G(A)=1:FOR B=1 TO 10:J(A,B)=1:K(A,B)=0:NEXT B,A
  107. 130 TA=FNRN(10):TD=FNRN(10):GOSUB 82:FOR A=2 TO 5
  108. 135 T=FNRN(10):TJ=FNRN(10):IF K(T,TJ)<>0 THEN 135
  109. 140 T(A)=T+(TJ/100):K(T,TJ)=A*10:NEXT
  110. 145 FOR AA=TB TO TC:FOR AB=TE TO TF:K(AA,AB)=0:NEXT AB,AA:K(TA,TD)=10
  111. 150 FOR A=1 TO 22
  112. 155 TE=FNRN(10):TF=FNRN(10):IF K(TE,TF)<>0 THEN 155
  113. 160 O(A)=TE+(TF/100):D1=FNRN(21)+1:K(TE,TF)=-D1:NEXT
  114. 165 FOR A=1 TO 5
  115. 170 M4=FNRN(10):M5=FNRN(10):IF K(M4,M5)<>0 THEN 170
  116. 175 B(A)=M4+(M5/100):K(M4,M5)=A*100:NEXT:S2=FNRN(3)
  117. 180 FOR A=1 TO 3
  118. 185 BB=FNRN(10):BC=FNRN(10):IF K(BB,BC)<>0 THEN 185
  119. 190 D(A)=BB+(BC/100):IF S2=A THEN S4=D(A):R4=A
  120. 195 K(BB,BC)=A*1000:IF S2=A THEN K(BB,BC)=K(BB,BC)+3:R1=BB:R2=BC
  121. 200 NEXT:PRINT C7:GOSUB 62:PRINT F(21)LF:GOSUB 70
  122. 205 Y=INT(T(1)):X=T(1)-Y:X=X*100:X=INT(X+.5):J(Y,X)=K(Y,X)
  123. 210 PRINT C"You are at the "H(1);LH;H:GOSUB 2500:PRINT F(15)CA
  124. 215 PRINT C"You are starting at"X"-"Y;H;C7:SWAP X,Y:M(1)=1:N(1)=0
  125. 220 PRINT C"You will start with "L(1)" to aid you."
  126. 225 PRINT C"You have only"Z"hours to complete your Mission, "LL;H
  127. 230 PRINT CA:GOTO 2045
  128.  
  129. 249 '    Print Final Map
  130. 250 GOSUB 70:L=FNF(1,16)+"  FINAL MAP of ALL LOCATIONS  ":GOSUB 5065
  131. 255 PRINT:Z1=9:GOTO 310
  132.  
  133. 299 '    Print Map
  134. 300 IF R7=1 THEN 840 ELSE R7=1
  135. 305 GOSUB 70:PRINT F(1)"H="LH",  X="LEFT$(LS,8);"ldg,  A="LA",  T="LT
  136. 310 PRINT STRING$(64,45):PRINT
  137. 315 T=3:FOR A=1 TO 10:FOR B=1 TO 10:S5=J(A,B):IF Z1=9 THEN S5=K(A,B)
  138. 320 IF S5=0 THEN PRINT TAB(T)"S";:GOTO 350
  139. 325 IF S5=1 THEN PRINT TAB(T)"?";:GOTO 350
  140. 330 IF S5>9 AND S5<51 THEN IF Z1=9 THEN PRINT TAB(T-1)CHR$(149)CHR$(179)CHR$(170);:GOTO 350 ELSE PRINT TAB(T)"H";:GOTO 350
  141. 335 IF S5>999 THEN IF Z1=9 THEN PRINT TAB(T-1)CHR$(144)"X"CHR$(160);:GOTO 350 ELSE PRINT TAB(T)"X";:GOTO 350
  142. 340 IF S5<0 THEN PRINT TAB(T)"T";:GOTO 350
  143. 345 PRINT TAB(T)"A";
  144. 350 T=T+6:NEXT B:T=3:PRINT:NEXT A:Y2=Y*6
  145. 355 PRINT FNF(X+3,Y2-4)CHR$(186)FNF(X+3,Y2-2)CHR$(181);:IF WIN=1 THEN RETURN
  146. 360 PRINT F(16);:IF Z1<>9 THEN 800 ELSE Z1=0
  147. 365 PRINT CX"The Secretary will dis-avow any knowledge of your actions.":RETURN
  148.  
  149. 399 '    Get Team Member
  150. 400 Q=K(X,Y)/10:U=FNRN(2):A=2
  151. 405 IF U=1 THEN 415 ELSE 445
  152. 410 IF A=0 THEN 435
  153. 415 IF W(Q)>0 THEN W(Q)=W(Q)-1 ELSE A=A-1:GOTO 435
  154. 420 FOR D4=1 TO 25:D1=FNRN(16):IF N(D1)=0 THEN NEXT:GOTO 430
  155. 425 M(D1)=1:N(D1)=0:J$=L(D1):RETURN
  156. 430 FOR D1=1 TO 16:IF N(D1)=1 THEN 425 ELSE NEXT
  157. 435 IF A<>0 THEN 445
  158. 440 J$=C+"Sorry!  There are no Team Members left at this"+LH+H:RETURN
  159. 445 IF E1(Q)>0 THEN E1(Q)=0:A=A-1 ELSE A=A-1:GOTO 410
  160. 450 D1=FNRN(5):IF A(D1)=1 THEN P(D1)=1:A(D1)=0 ELSE 450
  161. 455 J$="a "+LC:RETURN
  162.  
  163. 499 '    Get Secret Report
  164. 500 Q=K(X,Y)/10:GQ=FNRN(9):IF Q=1 THEN GQ=9
  165. 505 IF G(Q)=0 AND G(Q+5)=0 THEN 515
  166. 510 IF G(Q)=0 AND GQ<8 THEN G(Q+5)=0:GOTO 515 ELSE 520
  167. 515 PRINT C"Sorry, "LL", we have no further intelligence reports...":RETURN
  168. 520 PQ=0:PRINT:IF G(Q)=0 THEN G(Q+5)=0
  169. 525 PQ=PQ+1:IF PQ=6 THEN 630 ELSE U=FNRN(6)
  170. 530 G(Q)=0:ON U GOTO 535,555,570,585,610,585
  171. 535 FOR A=1 TO 22:J=INT(O(A)):K=O(A)-J:K=K*100:K=INT(K+.5)
  172. 540 IF J(J,K)<>1 THEN NEXT:GOTO 525
  173. 545 PRINT C"There are enemy"LT;:GOSUB 68
  174. 550 PRINT C"You must memorize their location and avoid them.":GOTO 69
  175. 555 FOR A=1 TO 5:J=INT(T(A)):K=T(A):GOSUB 81
  176. 560 IF J(J,K)<>1 THEN NEXT:GOTO 525
  177. 565 PRINT C"Another"LH" Building is located";:GOSUB 68:GOTO 69
  178. 570 FOR A=1 TO 2:J=INT(B(A)):K=B(A):GOSUB 81
  179. 575 IF J(J,K)<>1 THEN NEXT:GOTO 525
  180. 580 PRINT C"An"LA" is believed to be operating in Sector"K"-"J;H:GOTO 69
  181. 585 FOR A=1 TO 2:J=INT(D(A)):K=D(A):GOSUB 81
  182. 590 IF J(J,K)<>1 THEN NEXT:GOTO 525
  183. 595 PRINT C"Prisoners have been reported at the"LS;:GOSUB 68
  184. 600 PRINT C"** IMPORTANT **     This information has ";:L="not":GOSUB 5050
  185. 605 PRINT" been verified.":GOTO 69
  186. 610 J=INT(S4):K=S4:GOSUB 81:IF Q<>1 AND K(J,K)<>1006 AND K(J,K)<>2006 AND K(J,K)<>3006 THEN 615 ELSE 525
  187. 615 PRINT C"The "HF(R4)" is located";:GOSUB 68
  188. 620 PRINT C"Enemy"LT" have hidden "LQ" here."
  189. 625 J(J,K)=K(J,K)+3:K(J,K)=J(J,K):RETURN
  190. 630 PRINT C"I'm sorry, "LL", but Enemy"LT" have sabotaged the":PRINT C"receiv";
  191. 635 PRINT"ing station.    We have no more information at this time.":RETURN
  192.  
  193. 699 '    Move to new location
  194. 700 PRINT:J(X,Y)=K(X,Y):Z=Z-1:Z4=FNRN(99):IF Z4>96 THEN Z=Z+1
  195. 705 RX=K(X,Y):IF RX<51 AND RX>9 THEN GOSUB 70:S2=K(X,Y)/10:PRINT C"You are at the "H(S2);LH;H:GOSUB 2500:PRINT F(15);:GOTO 2000
  196. 710 IF RX<0 THEN 1500
  197. 715 IF RX>999 THEN 2100
  198. 720 IF RX=100 OR RX=200 OR RX=300 OR RX=400 OR RX=500 THEN 1800
  199. 725 PRINT:PRINT C;STRING$(9,166)"  You have reached a SAFE ZONE.":S1=1
  200.  
  201. 799 '    Obtain Orders
  202. 800 GOSUB 2300:LK=INKEY$:IF S1=0 THEN GOSUB 78:PRINT ELSE S1=0
  203. 805 GOSUB 90:PRINT C"You are now at"Y"-"X" "STRING$(13,95)"  Your orders, "LL"?   ";
  204. 810 GOSUB 6000
  205. 815 IF I="R"THEN 900
  206. 820 IF I="M"THEN 300 ELSE R7=0
  207. 825 IF I="D"THEN 1000
  208. 830 IF I="W"THEN IF Y-1<1 THEN 1055 ELSE Y=Y-1:GOTO 700
  209. 835 IF I="E"THEN IF Y+1>10 THEN 1055 ELSE Y=Y+1:GOTO 700
  210. 840 IF I="N"THEN IF X-1<1 THEN 1055 ELSE X=X-1:GOTO 700
  211. 845 IF I="S"THEN IF X+1>10 THEN 1055 ELSE X=X+1:GOTO 700 ELSE 810
  212.  
  213. 899 '    Condition Report
  214. 900 IF R7=2 THEN 810 ELSE R7=2
  215. 905 GOSUB 70:L=FNTITLE$(1,"  . . S T A T U S   R E P O R T . .  "):GOSUB 5065
  216. 910 PRINT F(4):FOR D1=1 TO 3:J=INT(D(D1)):K=D(D1):GOSUB 81
  217. 915 IF K(J,K)=1006 OR K(J,K)=2006 OR K(J,K)=3006 THEN 925 ELSE NEXT
  218. 920 GOTO 930
  219. 925 PRINT C"You know that "LQ;LV;"hidden";:GOSUB 68:PRINT
  220. 930 D=0:FOR A=1 TO 16:IF M(A)=1 THEN D=D+1
  221. 935 NEXT:LZ=LM:IF D=0 THEN GOSUB 72:GOTO 960
  222. 940 GOSUB 73:IF D=1 THEN PRINT":    ";:FOR A=1 TO 16:IF M(A)=1 THEN PRINT L(A);H:PRINT C;:GOTO 960 ELSE NEXT
  223. 945 PRINT":    They are....":PRINT FA:PRINT FA;:G=D:G1=0:FOR A=1 TO 16
  224. 950 IF M(A)=1 THEN PRINT L(A);:PRINT STRING$(24-LEN(L(A)),32);:G1=G1+1:IF G1=3 OR G1=6 OR G1=9 OR G1=12 OR G1=15 THEN PRINT:PRINT FA;
  225. 955 NEXT:IF D=3 OR D=6 OR D=9 OR D=12 OR D=15 THEN 960 ELSE PRINT:PRINT FA;
  226. 960 PRINT F;STRING$(70,95):D=0:FOR A=1 TO 5:IF P(A)=1 THEN D=D+1
  227. 965 NEXT:LZ=LC:IF G<16 THEN PRINT
  228. 970 IF D=0 THEN GOSUB 72:GOTO 975 ELSE GOSUB 73:PRINT H
  229. 975 PRINT:GOSUB 58:PRINT"before"LA"s will ";:L=LR
  230. 980 GOSUB 5050:PRINT F" ":PRINT C;C;LQ;H:PRINT:PRINT:GOTO 800
  231.  
  232. 999 '    Search (Discover) an area
  233. 1000 Z=Z-1:PRINT
  234. 1005 PRINT C"Which direction do you wish to explore and not enter?   ";
  235. 1010 GOSUB 6000
  236. 1015 IF I="N"THEN 1035
  237. 1020 IF I="S"THEN 1040
  238. 1025 IF I="E"THEN 1045
  239. 1030 IF I="W"THEN 1050 ELSE 1010
  240. 1035 IF X-1<1 THEN 1055 ELSE Q1=X-1:I="North":Q2=Y:GOTO 1070
  241. 1040 IF X+1>10 THEN 1055 ELSE Q1=X+1:I="South":Q2=Y:GOTO 1070
  242. 1045 IF Y+1>10 THEN 1055 ELSE Q2=Y+1:I="East":Q1=X:GOTO 1070
  243. 1050 IF Y-1>0 THEN Q2=Y-1:I="West":Q1=X:GOTO 1070
  244. 1055 PRINT:PRINT C"..... There is ";:L="nothing":GOSUB 5050
  245. 1060 PRINT" in that direction.  Why try there?":IF Z<15 THEN Z=Z+1
  246. 1065 S1=2:GOTO 800
  247.  
  248. 1070 PRINT:PRINT:LK=INKEY$:R5=K(Q1,Q2):D2=FNRN(32):IF D2>27 THEN 1075 ELSE 1105
  249. 1075 Z=Z-1:L=STRING$(82,148):GOSUB 1100
  250. 1080 PRINT"  I'm sorry, "LL", but"LT" have sabotaged the "LB;LD;
  251. 1085 L=STRING$(2,148):GOSUB 1100:L=STRING$(2,133):GOSUB 1100
  252. 1090 PRINT"  No information is available from that sector!"STRING$(29,32);
  253. 1095 L=STRING$(82,133):GOSUB 1100:PRINT:S1=2:GOTO 800
  254. 1100 GOSUB 5030:PRINT L;:GOTO 5035
  255. 1105 S1=3:PRINT C;STRING$(7,95)" To the "I" is ";
  256. 1110 J(Q1,Q2)=K(Q1,Q2):IF R5<0 THEN PRINT"a group of"LT;H:GOTO 800
  257. 1115 IF R5=0 THEN PRINT"a Safe Zone.  (Neutral Zone)":GOTO 800
  258. 1120 IF R5<51 THEN PRINT"a"LH" Building.":GOTO 800
  259. 1125 IF R5<501 THEN PRINT"an"LA;H:GOTO 800
  260. 1130 PRINT"a Foreign"LS;H:GOTO 800
  261.  
  262. 1499 '    Terrorist Attack
  263. 1500 GOSUB 70:PRINT CX"Oh, no!   You've run into a group of";-RX;F;LT;H
  264. 1505 GOSUB 5025:FOR T=1 TO 450:NEXT:AC=-RX/1.5:IF AC<7 THEN AC=7
  265. 1510 FOR A=1 TO AC:B=FNRN(8)+4:BA=FNRN(70):D1=FNRN(5)
  266. 1515 PRINT FNF(B,BA)K$(D1);:FOR T=1 TO 300:NEXT:PRINT FNF(B,BA)C;C;
  267. 1520 NEXT:GOSUB 5020:V=ABS(RX):GOSUB 75
  268. 1525 IF E1+W<3 AND V>9 THEN GOSUB 250:PRINT CX"You have been killed by"LU;H:GOTO 1850
  269. 1530 IF E1+W=0 THEN GOSUB 250:PRINT CX"You've been given a torturous death by"LU"....":GOTO 1850
  270. 1535 TX=FNRN(13):GOSUB 1865:PRINT F(10)CA:PRINT:IF TX<>4 OR RX>-8 THEN 1555
  271. 1540 PRINT CX"All of your Assistants have been killed by"LU;H
  272. 1545 PRINT CX"You barely escaped!":FOR A=1 TO 15:M(A)=0:NEXT
  273. 1550 FOR A=1 TO 5:P(A)=0:NEXT:PRINT:GOTO 800
  274. 1555 GOSUB 1860:E2=W+E1:IF V/3.4>E2 THEN 1570
  275. 1560 IF V/2>E2 THEN 1655
  276. 1565 Y1=FNRN(5)+3:PRINT C"Good work!!":GOSUB 80:GOTO 65
  277. 1570 IF E2<3 THEN E=FNRN(E2)ELSE E=FNRN(3)
  278. 1575 GOSUB 1580:GOTO 800
  279. 1580 D3=W-1:TG=0:GOSUB 80:GOSUB 67:PRINT C"However..."
  280. 1585 FOR A=1 TO E
  281. 1590 D1=FNRN(15)
  282. 1595 IF M(D1)=1 THEN M(D1)=0:PRINT C;L(D1)" has died fighting"LU;H:GOTO 1605
  283. 1600 IF W=0 THEN 1615 ELSE 1590
  284. 1605 TG=TG+1:D3=D3-1:IF D3<=0 THEN 1615
  285. 1610 NEXT:IF TG=3 THEN PRINT:RETURN
  286. 1615 PRINT:IF E1=0 THEN RETURN
  287. 1620 IF TG=3 THEN RETURN
  288. 1625 E=E-TG:IF E>E1 THEN E=E1
  289. 1630 IF E<=0 THEN 800
  290. 1635 M2=0:FOR A=1 TO E
  291. 1640 D1=FNRN(5):IF P(D1)=0 THEN 1640
  292. 1645 IF M2=0 THEN PRINT C"The"LT" have stolen the "LC"(s).":M2=1
  293. 1650 NEXT:RETURN
  294. 1655 GOSUB 80:PRINT
  295. 1660 D2=FNRN(15):Y1=FNRN(5)+3:GOSUB 1860:IF M(D2)=1 THEN PRINT C"But... "L(D2)" has been injured and you've lost"Y1"hours.":PRINT:GOTO 66 ELSE 1660
  296.  
  297. 1799 '    Enemy Agent
  298. 1800 S3=K(X,Y)/100:S3=INT(S3+.5)
  299. 1805 GOSUB 70:PRINT C;LA" "A$(S3)" ... is operating out of this sector."
  300. 1810 FOR T=1 TO 400:NEXT:GOSUB 5025
  301. 1815 FOR A=1 TO 90:E=FNRN(10)+4:PRINT FNF(E,FNRN(78))H;:NEXT
  302. 1820 GOSUB 75:FOR T=1 TO 500:NEXT:GOSUB 5020
  303. 1825 IF W<3 OR E1<1 THEN GOSUB 250:PRINT F(15)CX;F;LA" "A$(S3)" has shot you down in cold blood!!!":GOTO 1850
  304. 1830 Y1=FNRN(6)+5:GOSUB 1860:IF Y1<8 THEN PRINT F(15)C"Agent "A$(S3)" has wounded you...   Healing will take"Y1"hours.":Z=Z-Y1:PRINT:GOTO 800
  305. 1835 Y1=13:IF Z<13 THEN Y1=Z-1
  306. 1840 Y1=FNRN(Y1)+2:IF Y1<5 AND Z>9 THEN 1835
  307. 1845 GOSUB 1860:PRINT F(15)C"You have destroyed Agent "A$(S3)",";:GOTO 65
  308. 1850 L=STRING$(4,170):PRINT:PRINT C" "LA"s will soon "LR;LQ" ("L")."
  309. 1855 GOSUB 5025:PRINT FNF(R1+3,R2*6-4)L:GOTO 4500
  310. 1860 IF(Z-Y1)<1 THEN 1870 ELSE RETURN
  311. 1865 IF Z<1 THEN 1870 ELSE RETURN
  312. 1870 GOSUB 250:PRINT CX"Sorry, "LL", but time ran out!":GOTO 1850
  313.  
  314. 1999 '    At Headquarters
  315. 2000 PRINT F(15)CA:L=FD:PRINT L"   ";:J$="":GOSUB 5020
  316. 2005 GOSUB 6000
  317. 2010 IF I="A"THEN S3=1:GOTO 2020
  318. 2015 IF I="F"THEN S3=2:GOTO 2020 ELSE 2005
  319. 2020 L=FNF(15+S3,6)+" <"+I+"> ":GOSUB 5065:PRINT F(18)CLR
  320. 2025 IF S3=1 THEN GOSUB 400 ELSE GOSUB 500
  321. 2030 IF LEN(J$)>50 THEN PRINT J$:GOTO 2040
  322. 2035 IF S3=1 AND J$<>""THEN PRINT C"You now have "J$" to assist you."
  323. 2040 PRINT CA" ";:GOSUB 58:PRINT"to complete your Mission."
  324. 2045 PRINT C"Do you wish to remain at"LH" for another hour?   ";
  325. 2050 GOSUB 6000
  326. 2055 IF I="Y"THEN Z=Z-1:GOSUB 5025:GOTO 2000
  327. 2060 IF I="N"OR I="M"OR I=CHR$(13)THEN PRINT F(16)CLR;:GOTO 800 ELSE 2050
  328.  
  329. 2099 '    At Foreign State Building
  330. 2100 GOSUB 70:S3=INT(K(X,Y)/1000)
  331. 2105 PRINT C"You are at the "HF(S3);H:GOSUB 2600:GOSUB 75
  332. 2110 IF W<5 OR E1<2 THEN PRINT F(15)C"You don't have enough "LM"s or Code Books to enter.":PRINT:GOTO 800
  333. 2115 PRINT F(16)CX"Do you want to enter the "HF(S3)"?   ";C7;
  334. 2120 GOSUB 6000:IF I="N"THEN PRINT"No":PRINT:GOTO 800
  335. 2125 IF I="Y"OR I=CHR$(13)THEN PRINT"Yes":GOTO 2130 ELSE 2120
  336. 2130 IF K(X,Y)=1000 OR K(X,Y)=2000 OR K(X,Y)=3000 THEN 2200
  337. 2145 '    ##### Correct Bldg.
  338. 2150 WIN=1:IF Z<=5 THEN 2175
  339. 2155 L="Congratulations!!":PRINT CX;:GOSUB 5050:PRINT"    You've found ";
  340. 2160 IF Z2=1 OR Z2=3 THEN PRINT"the "LX"!"ELSE PRINT LQ"!"
  341. 2165 Z$="":IF Z<20 THEN Z$=" only"
  342. 2170 PRINT CX"You've completed your Mission with"Z$;Z"hours left.":GOTO 2185
  343. 2175 PRINT CX"Congratulations!    Just in time!"
  344. 2180 PRINT CX"You got "LQ" with only seconds to spare!"
  345. 2185 PRINT:PRINT CX;F;LA"s will not be able to "LR;:IF Z2=3 THEN PRINT"the ";
  346. 2190 PRINT LQ;H:GOTO 4500
  347. 2195 '    ##### Wrong State Bldg.
  348. 2200 Y1=FNRN(7)+4:Z=Z-Y1:PRINT CX"Wrong"LS"!    ";
  349. 2205 IF Z2=1 OR Z2=3 THEN PRINT"The "LX" are"; ELSE PRINT LQ" is";
  350. 2210 PRINT" not hidden here."
  351. 2215 PRINT CX"You've lost"Y1"hours looking.    (";
  352. 2220 IF Z<1 THEN PRINT"No time";:GOTO 2230 ELSE PRINT"Only"Z"hour";
  353. 2225 IF Z<>1 THEN PRINT"s";
  354. 2230 PRINT" left.)":IF Z<1 THEN FOR T=1 TO 750:NEXT
  355. 2235 PRINT:GOTO 800
  356. 2299 '    Check Time Left
  357. 2300 IF Z<=0 THEN FOR T=1 TO 850:NEXT:GOTO 1870
  358. 2305 GOSUB 75:M3=0:FOR A=1 TO 5:M3=M3+W(A):NEXT
  359. 2310 M4=0:FOR A=1 TO 5:IF E1(A)=1 THEN M4=M4+1
  360. 2315 NEXT:IF M3+W<5 OR M4+E1<2 THEN 2320 ELSE RETURN
  361. 2320 GOSUB 250:PRINT
  362. 2325 PRINT C"  Not enough help is left to enter the "HF(S3);H:GOTO 1850
  363.  
  364. 2499 '    Draw Headquarters Building
  365. 2500 GOSUB 5025:AD=107:AE=116:FOR A=56 TO 60
  366. 2505 PRINT EL$CHR$(A)CHR$(AD)CHR$(A)CHR$(AE);:AD=AD-4:AE=AE+4:NEXT
  367. 2510 FOR A=61 TO 78:PRINT EL$CHR$(A)CHR$(77)CHR$(A)CHR$(146);:NEXT
  368. 2515 FOR A=31 TO 52 STEP 4:PRINT FNF(9,A)CHR$(131);:NEXT
  369. 2520 PRINT EL$CHR$(52)CHR$(141)CHR$(60)CHR$(141)
  370. 2525 PRINT FNF(6,56)STRING$(2,166):GOTO 5020
  371.  
  372. 2599 '    Draw Embassy Building
  373. 2600 GOSUB 5025:PRINT EL$CHR$(61)CHR$(74)CHR$(78)CHR$(74)
  374. 2605 PRINT EL$CHR$(61)CHR$(149)CHR$(78)CHR$(149)
  375. 2610 AD=82:AE=141:FOR A=55 TO 60
  376. 2615 PRINT EL$CHR$(A)CHR$(AD)CHR$(A)CHR$(AE);:AD=AD-1:AE=AE+1:NEXT
  377. 2620 FOR A=61 TO 78:PRINT EL$CHR$(A)CHR$(74)CHR$(A)CHR$(149);:NEXT
  378. 2625 PRINT ED$CHR$(62)CHR$(75)CHR$(62)CHR$(148)
  379. 2630 PRINT ED$CHR$(77)CHR$(75)CHR$(77)CHR$(148)
  380. 2635 PRINT ED$CHR$(62)CHR$(95)CHR$(77)CHR$(95)
  381. 2640 PRINT ED$CHR$(62)CHR$(129)CHR$(77)CHR$(129)
  382. 2645 FOR A=36 TO 46 STEP 2:PRINT FNF(10,A)" ";:NEXT
  383. 2650 IF S3=1 THEN LW=" FOREIGN "+STRING$(18,12)+" EMBASSY "
  384. 2655 IF S3=2 THEN LW="PARLIAMNT"+STRING$(18,12)+"  HOUSE  "
  385. 2660 IF S3=3 THEN LW="  STATE  "+STRING$(18,12)+"  HOUSE  "
  386. 2665 L=FNF(10,23)+LW:GOSUB 5065:GOTO 5020
  387.  
  388. 2700 '    Input your name
  389. 2701 'LL="Mr. Altman":RETURN
  390. 2705 GOSUB 55:GOSUB 2765:I=CHR$(12)
  391. 2710 L=" Smith"+Q$+"   ":PRINT F(8)I;C"Mission Leader Identification:"
  392. 2715 PRINT F(10)I;C"Enter your name as follows:"
  393. 2720 PRINT I;C;Q$"Mr."L;Q$"Mrs."L;Q$"Miss"L;Q$"Ms."L;Q$"Dr."L:LL=L:PRINT F(16)
  394. 2725 PRINT I;C;STRING$(10,62)"  ";:INPUT LL:LJ=LEFT$(LL,4):LN=LEFT$(LL,5)
  395. 2730 IF LJ="Mr. "OR LJ="MR. "THEN RETURN
  396. 2735 IF LN="Mrs. "OR LN="MRS. "THEN RETURN
  397. 2740 IF LN="Miss "OR LN="MISS "THEN RETURN
  398. 2745 IF LJ="Ms. "OR LJ="MS. "THEN RETURN
  399. 2750 IF LJ="Dr. "OR LJ="DR. "THEN RETURN
  400. 2755 PRINT FNF(20,7)"A correct repsonse is necessary before you can listen to";
  401. 2760 PRINT" the tape!"C7:FOR A=1 TO 3200:NEXT:GOTO 2700
  402. 2765 GOSUB 5025:PRINT F(6)STRING$(79,176)F(13)STRING$(79,131)
  403. 2770 FOR X=7 TO 12:PRINT F(X)CHR$(170);FNF(X,79)CHR$(149):NEXT:GOTO 5020
  404.  
  405. 2800 '    Input the Skill Level
  406. 2801 'R3=1:P=LEN(LL):GOTO 2820
  407. 2805 GOSUB 55:PRINT F(4)CLR;F(6)LL",":P=LEN(LL)
  408. 2810 PRINT F(8)C"Please input the SKILL LEVEL:  1-6  (Easy to Hard)   ";
  409. 2815 GOSUB 6000:R3=VAL(I):IF R3<1 OR R3>6 THEN 2810
  410. 2820 Z=118-(R3*12)-FNRN(13):R=FNRN(7):IF R>2 THEN Z=Z-FNRN(R3+1)
  411. 2825 IF Z<48 THEN Z=48
  412. 2830 IF P<12 THEN LB="Satellite Relay":GOTO 3000
  413. 2835 IF P<14 THEN LB="Relay Station":GOTO 3000
  414. 2840 IF P<18 THEN LB="IMF Relay":GOTO 3000
  415. 2845 LB="Relay"
  416.  
  417. 2999 '    Display Assignment
  418. 3000 LB=LB+H:LD=STRING$(27-P-LEN(LB),32):GOSUB 70
  419. 3005 PRINT F(1)LF"Good morning, "LL",":GOSUB 5025
  420. 3010 Z2=FNRN(10):LR="execute ":LV=" is ":IF Z2=Z5 THEN 3010 ELSE Z5=Z2
  421. 3015 PRINT:PRINT:ON Z2 GOTO 3100,3200,3300,3400,3500,3600,3650,3700,3750,3800
  422. 3100 LX="Secret Plans":LR="recover ":LQ=" "+LX:LV=" are "
  423. 3110 PRINT C"Heinrich Belzig, a world-famous archeologist, has recently ";
  424. 3120 PRINT"discovered some"LQ" for a proposed Communist takeover in Europe."
  425. 3130 GOSUB 71:PRINT"rescue Belzig, and then"LR;:LQ="the"+LQ:PRINT LQ" and ";
  426. 3140 PRINT"permanently stop the coup,  which is supposed to   start";:GOTO 3810
  427. 3200 LQ="Mrs. Barkov":LR="kill "
  428. 3210 PRINT C"Konrad Barkov, the eminent atomic physicist, wishes to defect ";
  429. 3220 PRINT"to the UnitedStates.   He is safe in a neutral Embassy, but ";
  430. 3230 PRINT"refuses to defect until his wife,Krissa, is safely out from ";
  431. 3240 PRINT"behind the Iron Curtain."
  432. 3250 GOSUB 71:PRINT"free "LQ" and   bring her to the west.   Party ";
  433. 3260 PRINT"officials have threatened to kill "LQ
  434. 3270 PRINT"unless Dr. Barkov returns";:GOTO 3810
  435. 3300 LQ="nuclear warheads":LR="detonate ":LX=LQ:LV=" are "
  436. 3310 PRINT C"Helmut Varig has captured two "LQ", which he plans to use to"
  437. 3320 PRINT"blackmail the Allied forces into financing his neo-Nazi ";
  438. 3330 PRINT"dictatorship."
  439. 3340 GOSUB 71:PRINT"find a way into Karig'smaximum security vault and ";
  440. 3350 PRINT"recover the "LQ";  otherwise, he plans to"LR"them";:GOTO 3810
  441. 3400 LQ="Professor Pavel"
  442. 3410 PRINT C"Hans Pavel, a renowned military scientist, has developed a ";
  443. 3420 PRINT"revolutionary   anti-missle system.  He wishes to defect to this ";
  444. 3430 PRINT"country with his discovery, buthas been captured and placed ";
  445. 3440 PRINT"inside the heavily guarded Romelan Prison."
  446. 3450 GOSUB 71:PRINT"rescue "LQ" and his formula.  The prison authorities, ";
  447. 3460 PRINT"acting on their own, have planned to  "LR"him";:GOTO 3810
  448. 3500 LQ="Karl Voorhes":LP="a Swiss nuclear scientist"
  449. 3510 GOSUB 71:PRINT"rescue "LQ",":TK=1
  450. 3520 PRINT LP", who is being held at the "HF(1);
  451. 3530 IF TK=3 THEN PRINT:PRINT"and will "; ELSE PRINT" and will"
  452. 3540 PRINT"be killed";:GOTO 3810
  453. 3600 LQ="Janos Brigas":LP="a South American missionary":GOTO 3510
  454. 3650 LQ="Ambassador Pierce":LP="a United Nations diplomat"
  455. 3660 TK=3:GOSUB 71:PRINT"rescue Ambassador":PRINT"Pierce, ";:GOTO 3520
  456. 3700 LQ="Aristotle Katanos":LP="a Greek industrialist"
  457. 3710 TK=3:GOSUB 71:PRINT"rescue Aristotle":PRINT"Katanos, ";:GOTO 3520
  458. 3750 LQ="Sergei Ivanoff":LP="the famous Russian playright":GOTO 3510
  459. 3800 LQ="Cho Tsong Ling":LP="an elder Chinese statesman":GOTO 3510
  460. 3810 X=INT(Z/24):XX=Z-(X*24):PRINT" in"X"day";:IF X>1 THEN PRINT"s";
  461. 3820 IF XX=0 THEN PRINT H:GOTO 4000
  462. 3830 PRINT" and"XX"hour";:IF XX<>1 THEN PRINT"s." ELSE PRINT H
  463. 4000 PRINT:PRINT:IF TK>0 THEN TK=0:PRINT:PRINT
  464. 4010 PRINT"=====   As always, "LL", should you or any member of your IM Force"
  465. 4020 PRINT"    be caught or killed, the Secretary will dis-avow any knowledg";
  466. 4030 PRINT"e of":PRINT"    your actions.":PRINT:PRINT"=====  (This tape will ";
  467. 4040 PRINT"self-destruct in 10 seconds.)   Good luck!"
  468. 4050 PRINT F(21)LF;:GOTO 105
  469.  
  470. 4499 '    End of Mission
  471. 4500 FOR T=1 TO 750:NEXT:I=""
  472. 4505 PRINT F(22)C"  Do you want to try another Mission   (Y/N)  ?   ";
  473. 4510 GOSUB 5020:LK=INKEY$:GOSUB 6000
  474. 4515 IF I="Y"OR I=CHR$(13)THEN 88
  475. 4520 IF I="N"THEN 4525 ELSE 4510
  476. 4525 IF WIN=1 THEN GOSUB 250:PRINT F(16)CLR"   <<<"; ELSE PRINT F(22)CLR;C" ";
  477. 4530 PRINT" Your Mission, "LL", has been concluded. ";
  478. 4535 IF WIN=1 THEN PRINT">>>"F(18)ELSE PRINT
  479. 4540 END:GOTO 88
  480.  
  481. 5000 '    Misc. Subroutines
  482. 5005 '
  483. 5010 PRINT ESC$"B0";:RETURN:'    Inverse Video ON/OFF
  484. 5015 PRINT ESC$"C0";:RETURN
  485. 5020 PRINT ESC$"B4";:RETURN:'    Turn Cursor ON/OFF
  486. 5025 PRINT ESC$"C4";:RETURN
  487. 5030 PRINT ESC$"B1";:RETURN:'    Reduced Intensity ON/OFF
  488. 5035 PRINT ESC$"C1";:RETURN
  489. 5040 PRINT ESC$"B3";:RETURN:'    Underline ON/OFF
  490. 5045 PRINT ESC$"C3";:RETURN
  491. 5050 GOSUB 5040:PRINT L;:GOTO 5045:'    Underline L$ -----
  492. 5055 '
  493. 5060 GOSUB 5010:GOSUB 5030:PRINT L;:GOSUB 5015:GOTO 5035:'    Revrs. Video L$
  494. 5065 GOSUB 5010:PRINT L;:GOTO 5015:'                BRIGHT Video L$
  495.  
  496. 6000 '    INKEY$ Subroutines
  497. 6010 IZ=INKEY$:I="":IF Z3=1 THEN 6050
  498. 6015 I=INKEY$:IF I=""THEN 6015
  499. 6020 IF ASC(I)>90 THEN I=CHR$(ASC(I)-32)
  500. 6025 RETURN
  501.  
  502. 6050 I=INKEY$:IF I=""THEN 6055 ELSE RETURN
  503. 6055 TX=-200:GOSUB 6065:PRINT:PRINT CHR$(13);CHR$(11);CHR$(24)
  504. 6060 PRINT CHR$(11);:RETURN
  505. 6065 IJ=INKEY$:IK=""
  506. 6070 PRINT F(24);:GOSUB 5025:PRINT L;:GOSUB 5020
  507. 6075 IK=INKEY$:IF IK<>""THEN RETURN ELSE TX=TX+1:IF TX<250 THEN 6075
  508. 6080 PRINT F(24);:GOSUB 5025:GOSUB 5065:GOSUB 5020:TX=0
  509. 6085 IK=INKEY$:IF IK<>""THEN RETURN ELSE TX=TX+1:IF TX<150 THEN 6085
  510. 6090 TX=0:GOTO 6070
  511.  
  512. 8000 '    Instructions??
  513. 8005 L0="I":GOSUB 55:FA=" ":PRINT FNF(1,1)FA
  514. 8010 PRINT EL$FA;FA;FA;FC;:PRINT EL$FA;FA;FB;FA;
  515. 8015 PRINT EL$FA;FC;FB;FC;:PRINT EL$FB;FA;FB;FC;
  516. 8020 PRINT FNF(12,22)"Do you need instructions  (Y or N) ?"
  517. 8025 PRINT FNF(24,15)+"(c) 1989 by Richard Altman  ---  All rights reserved.";
  518. 8030 IK=INKEY$:I="":PRINT FNF(12,62)C7;
  519. 8035 I=INKEY$:IF I=""THEN VL=VL+1:IF VL>32222 THEN VL=100:GOTO 8035 ELSE 8035
  520. 8040 GOSUB 6020:IF I="Y"OR I="N"OR I=CHR$(13)THEN 8045 ELSE 8035
  521. 8045 RANDOMIZE VL:PRINT ED$FA;FA;FA;FC:GOSUB 5025:PRINT ED$FA;FA;FB;FA
  522. 8050 PRINT FNF(1,80)FA;FNF(2,60)CLR:FA="   | "
  523. 8055 IF I="Y"THEN 8100 ELSE 5020
  524.  
  525. 8100 '    Display Instructions
  526. 8105 PRINT F(3)CLR;F(5)C"The object of the Mission is to get back the object";
  527. 8110 PRINT"(s) or person taken":PRINT"by the"LA"s and hidden in a Foreign"LS;
  528. 8115 PRINT", located somewhere":PRINT"in Western Europe.  To enter it, you ";
  529. 8120 PRINT"must have at least five Team Members and":PRINT"two "LC"s.":PRINT
  530. 8125 PRINT C"There are five"LH", three Foreign"LS"s, five Enemy"
  531. 8130 PRINT"Agents, and a lot of"LT"!!  At ";:L="each of your"+LH:GOSUB 5050
  532. 8135 PRINT", you can get":PRINT"up to three "LM"s and one "LC" to assist you,";
  533. 8140 PRINT" but":PRINT"only one at a time.  You may also request an Intellige";
  534. 8145 PRINT"nce Report, which will    tell you of an important location."
  535. 8150 PRINT:PRINT C"The"LT" are quite mean, and can kill all or some of ";
  536. 8155 PRINT"your Mission    Team Members or steal your Code Books.    The"LA;
  537. 8160 PRINT"s are somewhat less    deadly;  however, they usually take many ";
  538. 8165 PRINT"hours to overcome.":PRINT:PRINT C"You may request a Report which ";
  539. 8170 PRINT"will tell you how many hours you have left, list "LM"s and Code ";
  540. 8175 PRINT"Books you have, and display the legal moves.":L0="I":Z=1:GOSUB 62
  541. 8180 PRINT F(5)CLR;C"In addition, you can also request a Map, which will show";
  542. 8185 PRINT" you all that you  currently know about the locations of things."
  543. 8190 PRINT:PRINT:L="Mission Control"+LH+" Building"
  544. 8195 PRINT C"You will start at the ";:GOSUB 5050:PRINT" with a "LM" to help ";
  545. 8200 PRINT"you.  You can `spy' on a neighboring sector without enteringit.";
  546. 8205 PRINT"   (MOVING and `DISCOVERING' take one hour each.)":PRINT
  547. 8210 PRINT"Use INITIALS for the":GOSUB 78:PRINT:PRINT:PRINT C"The SKILL LEVEL";
  548. 8215 PRINT" you choose will determine the number of hours you'll have  to ";
  549. 8220 PRINT"complete your Mission  (should you decide to accept it).     The ";
  550. 8225 PRINT"higher the  number you select, the ";:L="fewer":GOSUB 5050
  551. 8230 PRINT" hours you will have.   Good luck!!":Z=2:GOTO 62
  552.  
  553. 8499 '    Data
  554. 8500 DATA Rollin Hand,Barney Collier,Cinnamon Carter,Gregory Grant
  555. 8505 DATA Pablo San Ramon,Chung Ling Sun,Cameron Mitchell,Giuseppe Bonnano
  556. 8510 DATA Burgundy Ames,Matsuo Nakamura,Rene' de la Rue,Angus O'Shannahan
  557. 8515 DATA James Gil-Smythe,Peter Rogloff,Max Nargajuna,Sir Thomas Edmonds
  558. 8520 DATA Mission Control,Alpha,Bang!,Secret Service,Bravo,Fall!
  559. 8525 DATA Central Files,Delta,Ouch!,Central Intelligence,Zeta,Pain!
  560. 8530 DATA Field Operations,Omega,Scream!,Foreign Parliament House
  561. 8535 DATA Foreign State House,
  562.  
  563. 8600 '.........................................................................
  564.