home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / spiele / ajetcruz.bas < prev    next >
Encoding:
BASIC Source File  |  1991-05-14  |  21.2 KB  |  673 lines

  1. 1 REM PROGRAM NAME JETSET
  2. 2 REM IFR FLITE SIMULATOR, BOEING 747
  3. 3 REM CREATED 6-28-81 BY GENE SZYMANSKI
  4. 4 REM REVISED 2-28-82
  5. 5 KEY OFF : DEF SEG=&H40 : POKE &H17,PEEK(&H17) OR 96
  6. 8 REM CONVERTED TO IBM PC BASIC ON 10-30-82
  7. 9 GOTO 23
  8. 10 REM PLOTS VARIABLE ON REVERSE BACKGROUND
  9. 11 LOCATE (YP+1),(XP+1): COLOR 0,7 : PRINT "";
  10. 12 PRINT USING F$;V1;
  11. 13 PRINT "": COLOR 7,0
  12. 14 RETURN
  13. 23 REM BEGIN CRUISE MODULE HERE
  14. 24 CLS : RANDOMIZE (VAL(MID$(TIME$,7,2))*10)
  15. 25 DIM M$(20)
  16. 26 KR=57.2958: XQ=64
  17. 27 RS=1 : IF RND(1)=<.5 THEN RS=-1
  18. 28 RW=(15-5)*RND(1)+5
  19. 29 RW=RS*RW
  20. 30 REM SET UP WIND TABLE
  21. 32 DIM WA(10,1)
  22. 34 FOR I=0 TO 7 : WA(I,0)=INT(359*RND(1)+1) : NEXT I
  23. 36 FOR I=8 TO 10 : WA(I,0)=90*RND(1)+225 : NEXT I
  24. 38 A=0
  25. 40 FOR I=1 TO 10 : WA(I,1)=25*RND(1)+A : A=A+25 : NEXT I
  26. 41 RS$(0)=STRING$(31,"-")
  27. 42 RS$(1)=SPACE$(13)+".   ."+SPACE$(13)
  28. 43 RS$(2)=SPACE$(11)+".       ."
  29. 44 RS$(3)=SPACE$(9)+STRING$(13,"-")
  30. 45 REM VOR STATION FREQS TABLE
  31. 46 DIM VF(15)
  32. 47 VF(0)=115.9 : VF(1)=113.8 : VF(2)=112.7
  33. 48 VF(3)=117.7 : VF(4)=117.8 : VF(5)=112.2
  34. 49 VF(6)=117.4 : VF(7)=115.5 : VF(8)=116.4
  35. 50 VF(9)=113.6 : VF(10)=116.9 : VF(11)=117!
  36. 51 VF(12)=112.3 : VF(13)=117.9 : VF(14)=115.7
  37. 52 VF(15)=112.8
  38. 62 REM ILS CONSTANTS FOR AIRPORTS
  39. 63 DIM VG(15,1)
  40. 64 VG(0,0)=238 : VG(0,1)=28
  41. 66 VG(2,0)=240 : VG(2,1)=30
  42. 69 VG(5,0)=90 : VG(5,1)=217
  43. 71 VG(7,0)=299 : VG(7,1)=164
  44. 72 VG(8,0)=166 : VG(8,1)=42
  45. 79 VG(15,0)=341 : VG(15,1)=75
  46. 100 REM VOR STATION COORDINATES TABLE
  47. 101 DIM VP(15,1)
  48. 102 VP(0,0)=40.633 : VP(0,1)=73.773
  49. 103 VP(1,0)=40.202 : VP(1,1)=74.495
  50. 104 VP(2,0)=42.358 : VP(2,1)=70.99301
  51. 105 VP(3,0)=41.282 : VP(3,1)=70.027
  52. 106 VP(4,0)=42.74301 : VP(4,1)=73.802
  53. 107 VP(5,0)=46.41201 : VP(5,1)=84.315
  54. 108 VP(6,0)=38.35 : VP(6,1)=81.77001
  55. 109 VP(7,0)=40.917 : VP(7,1)=77.99301
  56. 110 VP(8,0)=42.928 : VP(8,1)=78.64701
  57. 111 VP(9,0)=41.358 : VP(9,1)=82.162
  58. 112 VP(10,0)=42.96701 : VP(10,1)=83.74201
  59. 113 VP(11,0)=44.555 : VP(11,1)=88.19501
  60. 114 VP(12,0)=41.547 : VP(12,1)=88.318
  61. 115 VP(13,0)=39.495 : VP(13,1)=76.97801
  62. 116 VP(14,0)=42.048 : VP(14,1)=83.458
  63. 117 VP(15,0)=39.637 : VP(15,1)=75.303
  64. 155 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV
  65. 160 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN
  66. 165 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM
  67. 170 DATA ALTITUDE,FEET,CLOCK
  68. 175 DIM P$(28)
  69. 180 FOR I=0 TO 28 : READ P$(I) : NEXT I
  70. 185 DIM S$(25)
  71. 190 FOR I=1 TO 25 : S$(I)=SPACE$(I) : NEXT I
  72. 192 FOR I=0 TO 9 : F(I)=0 : NEXT I
  73. 195 REM INIT FLITE VARIABLES TO STATE AT LIFTOFF
  74. 196 FU=195480!:FP=63:CC=75:ZZ=380:RC=6704:AL=1900
  75. 198 MZ=77:TR=4:FL=1:FA=10:BR=10:WH=10
  76. 200 RA=0:ZZ(1)=380:FA(1)=10:CC(1)=75:AL(1)=1900:RP=40
  77. 201 DP(4)=39:DP(5)=52:DP(6)=75:DP(7)=15
  78. 202 L1=39.8667:G1=75.25:LL(1)=L1:GL(1)=G1:LS(1)=L1:GS(1)=G1
  79. 203 VO(1)=0!:VO$(1)="OUT ":VO(3)=0:VO(4)=999.9
  80. 204 GX(0)=0:GY(0)=0
  81. 205 XO=36481!:YO=0
  82. 220 TV$=TIME$:GOSUB 7050 :TL=TD
  83. 221 TW(1)=TD
  84. 222 GOSUB 335
  85. 224 GOSUB 600
  86. 300 K$=INKEY$:IF K$<>"" THEN GOSUB 800
  87. 304 GOTO 1000
  88. 335 REM DISPLAY PANEL HEADERS ONLY
  89. 340 LOCATE 1,4 :PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20)
  90. 341 LOCATE 10,55 :PRINT P$(13);S$(3);P$(16)
  91. 342 LOCATE 11,57 :PRINT P$(14);S$(6);P$(14)
  92. 343 LOCATE 13,57 :PRINT P$(15);S$(5);P$(15)
  93. 345 LOCATE 2,14 :PRINT P$(6);S$(6);P$(10);S$(6)
  94. 350 LOCATE 2,69 :PRINT P$(28)
  95. 355 LOCATE 3,2 :PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23)
  96. 360 LOCATE 4,23 :PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26)
  97. 365 LOCATE 5,1 :PRINT P$(3)
  98. 370 LOCATE 6,40 :PRINT P$(22);S$(6);P$(25);S$(5);P$(27)
  99. 375 LOCATE 7,1 :PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7)
  100. 380 LOCATE 8,14 :PRINT P$(8)
  101. 381 LOCATE 4,69 :PRINT"VLF OMEGA":LOCATE 5,66 :PRINT"LAT"
  102. 382 LOCATE 6,65 :PRINT"LONG"
  103. 383 LOCATE 7,33 :PRINT". . . . | . . . .": LOCATE 9,40 :PRINT"RUD"
  104. 384 LOCATE 10,33 :PRINT CHR$(218);STRING$(15,196);CHR$(191)
  105. 386 FOR X=33 TO 49 STEP 16
  106. 387 FOR Y=11 TO 23
  107. 388 LOCATE Y,X :PRINT CHR$(179);
  108. 389 NEXT Y
  109. 390 NEXT X
  110. 391 LOCATE 24,33 :PRINT CHR$(192);STRING$(15,196);CHR$(217);
  111. 392 LOCATE 11,40 :PRINT"VOR": LOCATE 12,45 :PRINT"MHZ"
  112. 393 LOCATE 15,39 :PRINT"RANGE"
  113. 394 LOCATE 17,36 :PRINT".....:....."
  114. 395 LOCATE 20,39 :PRINT"RADIAL"
  115. 396 LOCATE 22,40 :PRINT"DME": LOCATE 23,45 :PRINT"NM";
  116. 397 FOR Y=2 TO 8 : LOCATE Y,13 :PRINT CHR$(196): NEXT Y
  117. 398 FOR Y=2 TO 4 : LOCATE Y,22 :PRINT CHR$(196) : NEXT Y
  118. 400 LOCATE 15,1 :PRINT CHR$(218);STRING$(15,196);CHR$(191)
  119. 402 FOR X=1 TO 17 STEP 16
  120. 404 FOR Y=16 TO 22
  121. 406 LOCATE Y,X :PRINT CHR$(179);
  122. 408 NEXT Y
  123. 410 NEXT X
  124. 412 LOCATE 23,1 :PRINT CHR$(192);STRING$(15,196);CHR$(217);
  125. 414 LOCATE 14,8 :PRINT"ILS"
  126. 416 LOCATE 18,20 :PRINT"MARKER": LOCATE 19,21 :PRINT">  <"
  127. 418 GX(1)=0 : GY(1)=0
  128. 420 GOSUB 2100
  129. 422 COLOR 0,7 : LOCATE 11,7 :PRINT"     "
  130. 424 COLOR 7,0 : LOCATE 10,5 :PRINT"RADAR ALT";SPC(6);"STALL"
  131. 425 LOCATE 11,19 :PRINT">     <"
  132. 599 RETURN
  133. 600 REM DISPLAY INSTRUMENT READINGS
  134. 601 REM DISPLAY RUDDER POSIT
  135. 602 LOCATE 8,33:COLOR 0,7:PRINT S$(17)
  136. 603 LOCATE 8,(RP+1):PRINT CHR$(24): COLOR 7,0
  137. 605 YP=1:XP=0:F$="######":V1=FU:GOSUB 10
  138. 610 YP=1:XP=7:F$="###":V1=FP:GOSUB 10
  139. 615 YP=1:XP=39:V1=CC:GOSUB 10
  140. 620 YP=4:XP=39:V1=ZZ:GOSUB 10
  141. 625 YP=4:XP=46:F$="######":V1=RC:GOSUB 10
  142. 630 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 10
  143. 635 YP=5:XP=0:F$="###":V1=MZ:GOSUB 10
  144. 636 IF F(2)=1 THEN YP=10:XP=6:F$="#####":V1=AL:GOSUB 10
  145. 638 TV$=TIME$ : LOCATE 1,67 :PRINT TV$
  146. 640 REM DISPLAY THRUST
  147. 650 FOR I=2 TO 8
  148. 651 LOCATE I,12:COLOR 0,7:PRINT" "
  149. 652 NEXT I
  150. 655 LOCATE (TR+1),12 :PRINT">";
  151. 660 REM DISPLAY FLAPS
  152. 665 FOR I=2 TO 4 : LOCATE I,21:COLOR 0,7:PRINT" ": NEXT I
  153. 670 LOCATE (FL+1),21:PRINT">"
  154. 674 F$="+###"
  155. 675 YP=5:XP=20:V1=FA:GOSUB 10
  156. 676 IF F(6)=0 THEN SX=7 :SSX=0 :GOTO 679
  157. 677 IF SX=7 THEN SX=0 :SSX=7 :GOTO 679
  158. 678 SX=7 : SSX=0
  159. 679 IF F(7)=0 THEN COLOR SX,SSX:LOCATE 11,20 :PRINT"     "
  160. 680 REM DISPLAY BRAKES
  161. 690 FOR I=11 TO 13 :LOCATE I,55:COLOR 0,7:PRINT" ":NEXT I
  162. 695 LOCATE (BR+1),55:PRINT">"
  163. 700 REM WHEELS
  164. 705 FOR I=11 TO 13:LOCATE I,63:COLOR 0,7:PRINT" ":NEXT I
  165. 710 LOCATE (WH+1),63:PRINT">"
  166. 711 IF F(2)=1 GOTO 723
  167. 712 REM DISPLAY LAT/LONGIT
  168. 713 YP=4:XP=69:F$="###":V1=DP(4):GOSUB 10
  169. 714 YP=4:XP=73:F$="##.#":V1=DP(5):GOSUB 10
  170. 715 YP=5:XP=69:F$="###":V1=DP(6):GOSUB 10
  171. 716 YP=5:XP=73:F$="##.#":V1=DP(7):GOSUB 10
  172. 717 LOCATE 5,79:PRINT"N"
  173. 718 LOCATE 6,79:PRINT"W"
  174. 723 IF F(2)=1 THEN RETURN
  175. 724 REM DISPLAY VOR VALUES
  176. 725 YP=11:XP=38:F$="###.#":V1=VO(1):GOSUB 10
  177. 726 LOCATE 14,40:COLOR 0,7:PRINT VO$(1):COLOR 7,0
  178. 727 YP=18:XP=39:F$="###":V1=VO(3):GOSUB 10
  179. 728 YP=22:XP=38:F$="###.#":V1=VO(4):GOSUB 10
  180. 729 LOCATE 18,35:COLOR 0,7:PRINT S$(13)
  181. 730 IF VO$(1)="OUT " GOTO 732
  182. 731 LOCATE 18,(VO(2)+1):PRINT CHR$(24)
  183. 732 RETURN
  184. 800 REM KEY POLL SUBROUTINE
  185. 805 IF K$="F" THEN TR=TR-1:IF TR<1 THEN TR=1:  'INCREASE THRUST
  186. 807 IF K$="S" THEN TR=TR+1:IF TR>6 THEN TR=6:  'DECREASE THRUST
  187. 810 IF K$="," THEN RA=RA-1:IF RA<-4 THEN RA=-4:'GO LEFT
  188. 811 IF K$="." THEN RA=RA+1:IF RA>4 THEN RA=4:  'GO RIGHT
  189. 812 IF K$="/" THEN RA=0
  190. 815 IF (K$<>"2") AND (K$<>"8") GOTO 830
  191. 817 J=5:IF BR=12 THEN J=1:  'ADJUST ELEVATOR
  192. 819 IF K$="2" THEN FA=FA+J ELSE FA=FA-J
  193. 821 IF FA<-40 THEN FA=-40
  194. 823 IF FA>40 THEN FA=40
  195. 825 IF FA>0 THEN FL=1
  196. 827 IF FA=0 THEN FL=2
  197. 830 IF K$<>"W" GOTO 836
  198. 833 IF WH=10 THEN WH=12 ELSE WH=10:   'WHEELS
  199. 836 IF K$="V" THEN LOCATE 15,56:PRINT "";:INPUT "VOR FREQ ";VO(1):LOCATE 15,56:PRINT SPC(16);"":    'VOR FREQUENCY
  200. 839 IF K$="R" THEN LOCATE 15,56:PRINT "";:INPUT "VOR RADIAL ";VO(3):LOCATE 15,56:PRINT SPC(16);"":   'RADIAL
  201. 842 IF K$<>"L" GOTO 848
  202. 845 IF BR=10 THEN BR=12 ELSE BR=10:   'FLAPS
  203. 848 IF K$="A" THEN F(3)=1:   'DISPLAY NEAREST RADIAL
  204. 851 IF K$="Q" THEN IF F(7)=1 THEN TR=7:  'REVERSE THRUST
  205. 854 IF K$="M" THEN IF F(2)=0 THEN FA=0:  'ABORT LANDING
  206. 857 IF K$="6" THEN FA=1:FL=1:IF F(2)=0 THEN FA=0:FL=2:   'FLARE
  207. 860 RETURN
  208. 1000 REM SITUATION UPDATE ROUTINE
  209. 1002 TV$=TIME$:GOSUB 7050:TJ=TD-TL:TL=TD
  210. 1009 REM UPDATE FUEL
  211. 1010 FU=FU-(14-TR)*TJ:IF FU<0 THEN FU=0
  212. 1011 FP=FU/3120
  213. 1012 GOSUB 1130
  214. 1013 GOSUB 1145
  215. 1014 IF TR=7 THEN GOSUB 1800 ELSE GOSUB 1124
  216. 1016 GOSUB 1106
  217. 1018 GOSUB 1114
  218. 1019 IF F(2)=1 THEN GOTO 1600
  219. 1020 GOSUB 1400
  220. 1021 GOSUB 1500
  221. 1030 IF AL<=0 THEN AF=1:GOTO 3000
  222. 1031 IF F(2)=0 THEN GOTO 1099
  223. 1032 IF AL>0 GOTO 1068
  224. 1033 IF F(7)=1 GOTO 1090
  225. 1034 F(7)=1
  226. 1036 TY=YN
  227. 1038 TX=XN-750
  228. 1042 IF FA>1 THEN AF=2:GOTO 3000
  229. 1044 IF FA<0 THEN AF=3:GOTO 3000
  230. 1046 IF F(6)=0 GOTO 1062
  231. 1048 IF AX>100 THEN AF=4:GOTO 3000
  232. 1050 IF AX>80 THEN AF=5:GOTO 3000
  233. 1052 IF WH=10 THEN AF=6:GOTO 3000
  234. 1054 IF TX>0 THEN AF=7:GOTO 3000
  235. 1056 IF TX<-10500 THEN AF=7:GOTO 3000
  236. 1058 IF ABS(TY)>100 THEN AF=7:GOTO 3000
  237. 1060 GOTO 1099
  238. 1062 AF=8:GOTO 3000
  239. 1068 IF F(5)=1 GOTO 1082
  240. 1070 IF FA>0 GOTO 1076
  241. 1072 IF FA<0 THEN F(6)=0
  242. 1074 GOTO 1099
  243. 1076 IF F(6)=0 THEN AX=AL:F(6)=1
  244. 1077 IF TR=6 GOTO 1080
  245. 1078 IF FA<2 THEN RC=-1800:GOTO 1099
  246. 1079 FA=2:FL=1:RC=-1800:GOTO 1099
  247. 1080 FA=1:FL=1:RC=-300:GOTO 1099
  248. 1082 IF AL<20 THEN AF=9:GOTO 3000
  249. 1084 TR=3:FA=0:FL=2
  250. 1086 AF=10:GOTO 3000
  251. 1090 IF XN<-9750 OR ABS(YN)>100 GOTO 1094
  252. 1091 IF ZZ>0 GOTO 1099
  253. 1092 AF=0:GOTO 3000
  254. 1094 AF=9:GOTO 3000
  255. 1099 GOTO 1700
  256. 1106 IF F(7)=1 THEN RC=0:GOTO 1112
  257. 1107 IF F(6)=1 GOTO 1112
  258. 1108 RC=ZZ*SIN(ABS(FA/KR))*101.6
  259. 1110 IF FA<0 THEN RC=-1*RC
  260. 1112 RETURN
  261. 1114 REM UPDATE ALTITUDE
  262. 1115 IF F(7)=1 GOTO 1122
  263. 1116 AL=AL+TJ*RC/60
  264. 1118 IF AL<0 THEN AL=0:GOTO 1122
  265. 1120 IF AL>45000! THEN AL=45000!
  266. 1122 RETURN
  267. 1124 REM UPDATE AIRSPEED
  268. 1125 ZZ=800-100*TR
  269. 1126 ZZ=ZZ-2*FA
  270. 1127 IF BR=10 THEN RETURN
  271. 1128 ZZ=ZZ/3+20:RETURN
  272. 1130 IF F(5)=1 GOTO 1132
  273. 1131 IF F(2)=1 GOTO 1142
  274. 1132 IF RA=0 THEN RT=0:GOTO 1141
  275. 1133 IF RA<0 THEN J=-1 ELSE J=1
  276. 1134 RA=ABS(RA):IF RA=1 THEN RT=1:GOTO 1137
  277. 1135 IF RA=2 THEN RT=10:GOTO 1137
  278. 1136 IF RA=3 THEN RT=20 ELSE RT=30
  279. 1137 RT=J*RT:RA=J*RA
  280. 1138 CC=CC+RT
  281. 1139 IF CC=>360 THEN CC=CC-360:GOTO 1141
  282. 1140 IF CC<0 THEN CC=360+CC
  283. 1141 RETURN
  284. 1142 IF RA=0 THEN GOTO 1141
  285. 1143 IF RA<0 THEN CC=CC-1 ELSE CC=CC+1
  286. 1144 RA=0:GOTO 1139
  287. 1145 REM UPDATE RUDDER POSIT VARIABLE
  288. 1146 RP=40+RA+RA:RETURN
  289. 1200 REM COMPUTES DIST&BEARING TO A KNOWN POINT LOCATION
  290. 1202 VL=ABS(LB-LC):BL(5)=-1:IF LB=>LC THEN BL(5)=1
  291. 1204 VG=ABS(GB-GC):BL(4)=1:IF GB=>GC THEN BL(4)=-1
  292. 1206 LA=LC:GOSUB 2400
  293. 1208 M1=MP
  294. 1210 LA=LB:GOSUB 2400
  295. 1212 M2=MP:DM=ABS(M2-M1)
  296. 1214 IF DM=0 GOTO 1220
  297. 1216 QO=VG/(DM/60):IF QO>114.59 GOTO 1220
  298. 1218 CA=KR*ATN(QO):DR=VL*(1/COS(CA/KR)):GOTO 1222
  299. 1220 CA=90:DR=VG*COS(LC/KR)
  300. 1222 DR=DR*60:IF BL(5)=-1 GOTO 1226
  301. 1224 IF BL(4)=1 THEN CR=CA ELSE CR=360-CA
  302. 1225 GOTO 1228
  303. 1226 IF BL(4)=1 THEN CR=180-CA ELSE CR=180+CA
  304. 1228 RETURN
  305. 1250 REM GET WIND VECTOR FOR CURRENT ALTITUDE
  306. 1252 I=FIX(AL/4000):IF I=>10 THEN I=10
  307. 1254 WD=WA(I,0):WV=WA(I,1)
  308. 1256 RETURN
  309. 1260 REM SOLVES WIND TRIANGLE
  310. 1262 A=CC:L=AJ:GOSUB 1300
  311. 1264 MX=LX:MY=LY
  312. 1266 GOSUB 1250
  313. 1268 A=WD+180:IF A=>360 THEN A=A-360
  314. 1270 L=WV:GOSUB 1300
  315. 1272 MX=MX+LX:MY=MY+LY:GOSUB 1350
  316. 1274 TK=MA:GS=VZ
  317. 1276 RETURN
  318. 1300 REM RESOLVES A VECTOR INTO RECT. COORD.
  319. 1302 IF A<=90 THEN Q=1:B=90-A:GOTO 1310
  320. 1304 IF A<=180 THEN Q=2:B=A-90:GOTO 1310
  321. 1306 IF A<=270 THEN Q=3:B=270-A:GOTO 1310
  322. 1308 Q=4:B=A-270
  323. 1310 LX=L*COS(B/KR):LY=L*SIN(B/KR)
  324. 1312 IF Q=1 THEN GOTO 1320
  325. 1314 IF Q=2 THEN LY=-1*LY:GOTO 1320
  326. 1316 IF Q=3 THEN LX=-1*LX:LY=-1*LY:GOTO 1320
  327. 1318 LX=-1*LX
  328. 1320 RETURN
  329. 1350 REM COMPOSES X,Y COMPONENTS INTO A POLAR VECTOR
  330. 1352 VZ=SQR(MX^2+MY^2)
  331. 1354 IF MX<=0 GOTO 1358
  332. 1356 IF MY<=0 THEN Q=2 ELSE Q=1
  333. 1357 GOTO 1360
  334. 1358 IF MY<=0 THEN Q=3 ELSE Q=4
  335. 1360 IF MX=0 THEN MA=90:GOTO 1366
  336. 1362 MQ=ABS(MY/MX)
  337. 1364 MA=ATN(MQ)*KR
  338. 1366 IF Q=1 THEN MA=90-MA:GOTO 1374
  339. 1368 IF Q=2 THEN MA=90+MA:GOTO 1374
  340. 1370 IF Q=3 THEN MA=270-MA:GOTO 1374
  341. 1372 MA=270+MA
  342. 1374 RETURN
  343. 1400 REM GET POSIT FOR OMEGA DISPLAY
  344. 1402 ZZ(2)=ZZ:FA(2)=FA:CC(2)=CC:AL(2)=AL
  345. 1404 ZZ=ZZ(1):FA=FA(1):CC=CC(1):AL=AL(1)
  346. 1406 IF ZZ(2)<>ZZ OR FA(2)<>FA GOTO 1440
  347. 1408 IF CC(2)<>CC OR AL(2)<>AL GOTO 1440
  348. 1410 F(0)=1:IF TD<TW(1)+60 GOTO 1442
  349. 1412 AJ=ZZ*COS(ABS(FA)/KR)
  350. 1414 GOSUB 1260
  351. 1416 DN=GS*(TD-TW(1))/3600
  352. 1418 CN=TK:L1=LL(1):GL=GL(1)
  353. 1420 GOSUB 2000
  354. 1422 F(0)=0:TW(1)=TD:LL(1)=L2:GL(1)=G2
  355. 1424 LS(1)=L2:GS(1)=G2
  356. 1426 FOR J=4 TO 7: DP(J)=CP(J): NEXT J
  357. 1428 ZZ(1)=ZZ(2):FA(1)=FA(2):CC(1)=CC(2):AL(1)=AL(2)
  358. 1430 ZZ=ZZ(2):FA=FA(2):CC=CC(2):AL=AL(2)
  359. 1432 RETURN
  360. 1440 TW(1)=TD:F(0)=0
  361. 1442 AJ=ZZ*COS(ABS(FA)/KR)
  362. 1444 GOSUB 1260
  363. 1446 DN=GS*TJ/3600
  364. 1448 CN=TK:L1=LS(1):G1=GS(1)
  365. 1450 GOSUB 2000
  366. 1452 LS(1)=L2:GS(1)=G2
  367. 1454 IF F(0)=1 GOTO 1458
  368. 1456 LL(1)=L2:GL(1)=G2
  369. 1458 GOTO 1426
  370. 1500 REM VOR ROUTINE
  371. 1502 IF VO(1)=0 GOTO 1540
  372. 1504 FOR J=0 TO 15: IF VO(1)=VF(J) GOTO 1506
  373. 1505 NEXT J:GOTO 1540
  374. 1506 LC=VP(J,0):GC=VP(J,1)
  375. 1508 LB=L2:GB=G2
  376. 1509 AR=VG(J,0):LL=VG(J,1)
  377. 1510 LO=360-LL
  378. 1512 GOSUB 1200
  379. 1514 IF DR>300 GOTO 1540
  380. 1516 IF CR=>360 THEN CR=CR-360
  381. 1517 GOTO 1578
  382. 1518 VO$(1)="FROM"
  383. 1519 VO(5)=CR-VO(3):IF VO(5)<=180 GOTO 1522
  384. 1520 VO(5)=VO(5)-360:GOTO 1524
  385. 1522 IF VO(5)<-180 THEN VO(5)=VO(5)+360
  386. 1524 IF ABS(VO(5))>90 THEN I1=VO(3):GOTO 1536
  387. 1526 IF VO$(1)="FROM" THEN I=-1 ELSE I=1
  388. 1527 IF I=1 THEN VO(3)=I1
  389. 1528 VO(2)=40+I*INT(VO(5)):VO(4)=DR
  390. 1530 IF VO(2)<35 THEN VO(2)=34
  391. 1532 IF VO(2)>45 THEN VO(2)=46
  392. 1534 GOTO 1560
  393. 1536 VO$(1)=" TO ":VO(3)=VO(3)+180: IF VO(3)=>360 THEN VO(3)=VO(3)-360
  394. 1538 GOTO 1519
  395. 1540 VO$(1)="OUT ":VO(4)=999.9:F(3)=0
  396. 1541 RETURN
  397. 1546 IF DR>12 OR DR<10 THEN MK=0:GOTO 1518
  398. 1548 IF AL>4000 THEN MK=0:GOTO 1518
  399. 1550 IF F(1)=1 THEN J=9 ELSE J=2.5
  400. 1552 IF CR>AR+J OR CR<AR-J THEN MK=0:GOTO 1518
  401. 1554 F(1)=1:MK=1:GOTO 1518
  402. 1560 IF MK=0 THEN COLOR 7,0 ELSE COLOR 0,7
  403. 1562 LOCATE 19,22:PRINT"  "
  404. 1564 COLOR 7,0
  405. 1566 IF MK=0 THEN F(1)=0:GOTO 1541
  406. 1570 IF CC>LL+1 OR CC<LL-1 GOTO 1541
  407. 1572 IF RA<>0 GOTO 1541
  408. 1574 F(1)=0:F(2)=1
  409. 1576 GOTO 1540
  410. 1578 IF F(3)=1 THEN VO(3)=CR:F(3)=0
  411. 1580 GOTO 1546
  412. 1600 REM ILS ROUTINE
  413. 1602 ZN=AL:TH=2.82471:MK=1
  414. 1603 DW=1.69*RW*TJ:IF F(7)=1 THEN DW=0
  415. 1604 IF F(7)=1 THEN CC=LL:RA=0
  416. 1606 CJ=CC
  417. 1608 IF CJ>180 THEN CJ=360-CJ:CJ=-1*CJ
  418. 1610 HA=LO+CJ
  419. 1612 DC=360-HA:TS=1:IF HA<180 THEN DC=HA:TS=-1
  420. 1614 IF DC<0 THEN DC=-1*DC:TS=-1*TS
  421. 1616 TL$="W":IF TS=1 THEN TL$="E"
  422. 1618 DD=1.69*ZZ*TJ
  423. 1620 DY=DD*SIN(DC/KR):DX=DD*COS(DC/KR)
  424. 1622 XN=XO-DX:IF TL$="E" THEN DY=-1*DY
  425. 1624 YN=YO+DY+DW
  426. 1626 LM=KR*ATN(AL/XN)
  427. 1628 BE=KR*ATN(ABS(YN)/ABS(XN)):IF BE>2.5 THEN MK=0
  428. 1630 J=(LM-TH)/.25:J=FIX(J)
  429. 1632 IF J>3 THEN J=3
  430. 1633 IF J<-3 THEN J=-3
  431. 1636 BE=BE/.25:BE=FIX(BE)
  432. 1637 IF BE<-7 THEN BE=-7
  433. 1638 IF BE>7 THEN BE=7
  434. 1639 IF YN=>0 THEN BE=-1*BE
  435. 1640 IF MK=0 GOTO 1648
  436. 1642 IF XN>34960! AND XN<38000! GOTO 1648
  437. 1644 IF XN>2534 AND XN<5574 GOTO 1648
  438. 1646 MK=0
  439. 1648 GX(1)=BE:GY(1)=J
  440. 1650 GOSUB 2100
  441. 1654 IF MK=0 THEN COLOR 7,0 ELSE COLOR 0,7
  442. 1656 LOCATE 19,22:PRINT"  "
  443. 1658 COLOR 7,0
  444. 1662 XO=XN:YO=YN
  445. 1664 IF F8=1 GOTO 1676
  446. 1666 IF XN>12000 GOTO 1676
  447. 1668 F8=1
  448. 1670 FOR I=1 TO 4
  449. 1672 LOCATE (14+I),50:PRINT RS$(I)
  450. 1674 NEXT I
  451. 1676 IF F8=0 GOTO 1699
  452. 1678 LOCATE 18,(XQ+1):PRINT" "
  453. 1680 YU=FIX(YN/16.7):XC=64+YU
  454. 1682 IF XC<49 THEN XC=49
  455. 1684 IF XC>79 THEN XC=79
  456. 1686 LOCATE 18,(XC+1):PRINT CHR$(24)
  457. 1688 XQ=XC
  458. 1699 GOTO 1031
  459. 1700 GOTO 1799
  460. 1799 GOTO 224
  461. 1800 REM REVERSE THRUST APPLIED
  462. 1802 IF F(4)=1 GOTO 1806
  463. 1804 VO=ZZ*1.152*1.47:F(4)=1
  464. 1806 V=VO-(3.23636)*TJ
  465. 1808 IF V<=0 THEN V=0
  466. 1810 VO=V
  467. 1812 ZZ=V/(1.152*1.47)
  468. 1814 RETURN
  469. 2000 REM COMPUTES NEW POSITION
  470. 2004 IF CN=0 THEN CA=0:LB(5)=1:LB(6)=1:GOTO 2014
  471. 2006 IF CN>0 AND CN<=90 THEN CA=CN:LB(5)=1:LB(6)=1:GOTO 2014
  472. 2008 IF CN>90 AND CN<=180 THEN CA=180-CN:LB(5)=-1:LB(6)=1:GOTO 2014
  473. 2010 IF CN>180 AND CN<=270 THEN CA=CN-180:LB(5)=-1:LB(6)=-1:GOTO 2014
  474. 2012 CA=360-CN:LB(5)=1:LB(6)=-1
  475. 2014 IF CA>89.5 GOTO 2034
  476. 2016 DL=DN*COS(CA/KR):DL=DL/60:LB(3)=LB(5)
  477. 2018 IF LB(3)=1 THEN L2=L1+DL:GOTO 2024
  478. 2020 L2=ABS(L1-DL)
  479. 2024 LA=L1:GOSUB 2400
  480. 2026 M1=MP
  481. 2028 LA=L2:GOSUB 2400
  482. 2030 M2=MP
  483. 2032 DM=ABS(M1-M2):DG=DM*TAN(CA/KR):GOTO 2036
  484. 2034 L2=L1:DG=DN/COS(L1/KR)
  485. 2036 DG=DG/60:LB(4)=LB(6)
  486. 2038 IF LB(4)=-1 GOTO 2046
  487. 2040 G2=ABS(G1-DG)
  488. 2044 GOTO 2050
  489. 2046 G2=G1+DG
  490. 2050 CP(4)=FIX(L2):CP(5)=(L2-CP(4))*60
  491. 2052 CP(6)=FIX(G2):CP(7)=(G2-CP(6))*60
  492. 2054 RETURN
  493. 2100 REM PLOT GLIDESLOPE CROSSHAIRS
  494. 2101 IF XO<=750 THEN RETURN
  495. 2102 X0=8+GX(0):X1=8+GX(1):Y0=18+GY(0):Y1=18+GY(1)
  496. 2103 COLOR 7,0
  497. 2104 FOR Y=16 TO 22:LOCATE Y,(X0+1):PRINT" ":NEXT Y
  498. 2106 LOCATE (Y0+1),2:PRINT STRING$(15,32)
  499. 2108 FOR Y=16 TO 22:LOCATE Y,(X1+1):PRINT CHR$(197):NEXT Y
  500. 2110 LOCATE (Y1+1),2:PRINT STRING$(15,197)
  501. 2112 LOCATE (Y1+1),(X1+1):PRINT CHR$(197)
  502. 2114 LOCATE 19,9:PRINT"O"
  503. 2116 GX(0)=GX(1):GY(0)=GY(1)
  504. 2118 RETURN
  505. 2400 REM COMPUTES MERIDIONAL PARTS,MP
  506. 2404 KM(0)=7915.704468#
  507. 2406 KM(1)=23.268932#
  508. 2408 KM(2)=.0525
  509. 2410 KM(3)=.000213
  510. 2414 IF LA=0 THEN LA=0+1/60
  511. 2416 IF LA>(89+59/60) THEN LA=89+59/60
  512. 2418 S1=SIN(LA/KR)
  513. 2420 S2=S1*S1:S3=S1*S2
  514. 2422 TM(0)=TAN((45+LA/2)/KR)
  515. 2424 TM(0)=KM(0)*LOG(TM(0))/LOG(10)
  516. 2426 TM(1)=KM(1)*S1
  517. 2428 TM(2)=KM(2)*S3
  518. 2430 TM(3)=KM(3)*S2*S3
  519. 2432 MP=TM(0)-TM(1)-TM(2)-TM(3)
  520. 2436 RETURN
  521. 3000 REM ABORT ROUTINES
  522. 3002 M$(1)="---------- A CRASH HAS OCCURRED ----------"
  523. 3004 M$(2)="YOU ACCIDENTALLY STALLED THE AIRCRAFT DURING FINAL APPROACH."
  524. 3006 M$(3)="THE STALL OCCURRED AT AN ALTITUDE OF"
  525. 3008 M$(4)="THE AIRCRAFT STRUCK THE GROUND IN A NOSE-HIGH ATTITUDE"
  526. 3010 M$(5)="THE IMPACT RUPTURED THE TAILSECTION OF THE FUSELAGE"
  527. 3012 M$(6)="---- LOCATION OF CRASH ----"
  528. 3013 M$(7)="---- LANDING POSITION ----"
  529. 3016 M$(8)="    PITCH ANGLE="
  530. 3018 M$(9)="    AIRSPEED="
  531. 3020 M$(10)="YOU FLARED AT TOO HIGH AN ALTITUDE DURING FINAL APPROACH."
  532. 3022 M$(11)="THE RESULTING STALL OCCURRED AT AN ALTITUDE OF"
  533. 3024 M$(12)="THE IMPACT RUPTURED THE"
  534. 3026 M$(13)="YOU FORGOT TO LOWER THE LANDING GEAR"
  535. 3028 M$(14)="YOU FAILED TO TOUCH DOWN INSIDE THE RUNWAY"
  536. 3030 M$(15)="------------- AN IMPROPER LANDING WAS MADE ----------"
  537. 3032 M$(16)="NO DAMAGE OR INJURIES OCCURRED"
  538. 3033 RL=0:IF TX>0 THEN RL=1
  539. 3034 RW=0:IF ABS(TY)>100 THEN RW=1
  540. 3040 N$(2)="FEET INSIDE THE RUNWAY"
  541. 3041 IF TX=>0 THEN N$(2)="FEET SHORT OF RUNWAY"
  542. 3042 N$(3)="FEET TO LEFT OF RUNWAY CENTERLINE"
  543. 3043 IF TY=>0 THEN N$(3)="FEET TO RIGHT OF RUNWAY CENTERLINE"
  544. 3044 RX=FIX(TX):RX=ABS(RX)
  545. 3045 RY=FIX(TY):RY=ABS(RY)
  546. 3050 IF AF=0 GOTO 3600
  547. 3055 AX=INT(AX):FA=INT(FA):ZZ=INT(ZZ)
  548. 3060 ON AF GOTO 3100,3150,3200,3250,3300,3350,3400,3450,3500,3550
  549. 3100 GOSUB 3700
  550. 3101 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 10
  551. 3102 LOCATE 16,1:PRINT M$(1)
  552. 3104 PRINT"YOU FLEW INTO THE GROUND"
  553. 3106 PRINT"THE INSTRUMENT READINGS AT TIME OF CRASH ARE AS SHOWN ABOVE."
  554. 3108 GOTO 9999
  555. 3150 CLS
  556. 3152 PRINT M$(1)
  557. 3154 PRINT M$(2)
  558. 3156 PRINT M$(3);AX;"FEET."
  559. 3158 PRINT M$(4)
  560. 3160 PRINT M$(5)
  561. 3162 N$(1)=M$(6)
  562. 3164 GOSUB 3800
  563. 3166 GOTO 9999
  564. 3200 CLS
  565. 3202 PRINT M$(1)
  566. 3204 PRINT"YOU FLEW INTO THE GROUND DURING FINAL APPROACH."
  567. 3206 PRINT"AT TIME OF CRASH, THE AIRCRAFT PROFILE WAS AS FOLLOWS :"
  568. 3208 PRINT M$(8);FA;"DEGREES"
  569. 3210 PRINT M$(9);ZZ
  570. 3212 N$(1)=M$(6)
  571. 3214 GOSUB 3800
  572. 3216 GOTO 9999
  573. 3250 CLS
  574. 3252 PRINT M$(1)
  575. 3254 PRINT M$(10)
  576. 3256 PRINT M$(11);AX;"FEET."
  577. 3258 PRINT M$(12)+"FUSELAGE."
  578. 3260 N$(1)=M$(6)
  579. 3262 GOSUB 3800
  580. 3264 GOTO 9999
  581. 3300 CLS
  582. 3302 IF WH=10 THEN PRINT M$(1)
  583. 3304 IF WH=12 THEN PRINT"---------- A MINOR CRASH HAS OCCURRED ----------"
  584. 3306 PRINT M$(10)
  585. 3308 PRINT M$(11);AX;"FEET."
  586. 3310 IF WH=10 THEN PRINT M$(13)
  587. 3312 IF WH=10 THEN PRINT M$(12)+"FUSELAGE."
  588. 3314 IF WH=12 THEN PRINT"THE IMPACT DAMAGED THE LANDING GEAR."
  589. 3316 IF WH=12 THEN PRINT"ALL PASSENGERS HAVE BEEN SAFELY EVACUATED."
  590. 3318 N$(1)=M$(6)
  591. 3320 GOSUB 3800
  592. 3322 GOTO 9999
  593. 3350 CLS
  594. 3352 PRINT M$(1)
  595. 3354 PRINT M$(13)
  596. 3356 PRINT"THE AIRCRAFT LANDED ON ITS BELLY, CAUSING MODERATE DAMAGE."
  597. 3358 PRINT"ALL PASSENGERS HAVE BEEN SAFELY EVACUATED."
  598. 3360 N$(1)=M$(6)
  599. 3362 GOSUB 3800
  600. 3364 GOTO 9999
  601. 3400 CLS
  602. 3402 PRINT M$(15)
  603. 3404 PRINT M$(14)
  604. 3406 N$(1)=M$(7)
  605. 3408 GOSUB 3800
  606. 3410 GOTO 9999
  607. 3450 CLS
  608. 3452 PRINT M$(15)
  609. 3454 PRINT"YOU FAILED TO EXECUTE A FLARE PRIOR TO TOUCHING DOWN."
  610. 3456 PRINT"THIS IS A VIOLATION OF COMPANY PROCEDURES."
  611. 3458 PRINT M$(16)
  612. 3460 N$(1)=M$(7)
  613. 3462 GOSUB 3800
  614. 3464 GOTO 9999
  615. 3500 CLS
  616. 3502 PRINT M$(15)
  617. 3504 PRINT"YOU ROLLED OFF THE RUNWAY AFTER TOUCHING DOWN."
  618. 3506 PRINT M$(16)
  619. 3508 N$(1)=M$(7)
  620. 3512 GOSUB 3800
  621. 3513 PRINT
  622. 3514 IF XN<-9750 THEN PRINT"YOU ROLLED PAST FAR END OF RUNWAY."
  623. 3516 IF ABS(YN)>100 THEN PRINT"YOU ROLLED THRU RUNWAY SIDE BORDERS."
  624. 3518 GOTO 9999
  625. 3550 CLS
  626. 3552 PRINT"----- YOUR MISSED APPROACH SIGNAL IS ACKNOWLEDGED -----"
  627. 3554 PRINT"YOU HAVE FOLLOWED PROPER PROCEDURES."
  628. 3556 GOTO 9999
  629. 3600 CLS
  630. 3602 PRINT"----- YOU HAVE SUCCESFULLY COMPLETED THE FLIGHT -----"
  631. 3604 PRINT"ALL PROCEDURES WERE PROPERLY EXECUTED."
  632. 3606 N$(1)=M$(7)
  633. 3610 PRINT"CONGRATULATIONS ON A SUCCESSFUL FLIGHT."
  634. 3612 GOSUB 3800
  635. 3613 PRINT
  636. 3614 XN=ABS(XN):JN=FIX(XN+750)
  637. 3615 YN=ABS(YN):YN=FIX(YN)
  638. 3616 PRINT"YOUR AIRCRAFT CAME TO REST AT THE FOLLOWING POSITION :"
  639. 3617 PRINT"     ";JN;"FEET INSIDE THE RUNWAY"
  640. 3618 PRINT"     ";YN;"FEET FROM RUNWAY CENTERLINE"
  641. 3620 GOTO 9999
  642. 3700 REM SUBRTN TO CLEAR LOWER PART OF DISPLAY
  643. 3702 FOR I=10 TO 24
  644. 3704 LOCATE I,1:PRINT SPC(79);
  645. 3706 NEXT I
  646. 3708 RETURN
  647. 3800 REM LANDING STATISTICS
  648. 3802 PRINT
  649. 3804 PRINT SPACE$(26);N$(1)
  650. 3806 PRINT
  651. 3808 IF RL=0 THEN PRINT RX;N$(2)
  652. 3809 IF RL=1 THEN COLOR 0,7:PRINT RX;N$(2):COLOR 7,0
  653. 3810 PRINT
  654. 3812 IF RW=0 THEN PRINT RY;N$(3)
  655. 3813 IF RW=1 THEN COLOR 0,7:PRINT RY;N$(3):COLOR 7,0
  656. 3814 PRINT
  657. 3816 PRINT"--- SIZE OF RUNWAY IS 10,500 FEET X 200 FEET ---"
  658. 3818 RETURN
  659. 5085 REM TIME DELAY PAD
  660. 5090 FOR I=1 TO TQ
  661. 5095 NEXT I
  662. 5099 RETURN
  663. 7050 REM CONVERT RTC TO TIME OF DAY IN SECONDS ABSOLUTE
  664. 7055 J=7
  665. 7060 FOR I=0 TO 2
  666. 7065 TC$(I)=MID$(TV$,J,2)
  667. 7070 J=J-3
  668. 7075 TC(I)=VAL(TC$(I))
  669. 7080 TD=(3600*TC(2))+(60*TC(1))+TC(0)
  670. 7085 NEXT I
  671. 7090 RETURN
  672. 9999 END
  673.