1 REM:PROGRAM NAME = JETSET 2 REM:IFR FLIGHT SIMULATOR (BOEING 747) 3 REM:CREATED 06/28/81 BY JEAN SZYMANSKI 4 REM:REVISED 02/25/82 - INSTRUCTIONS IN NOVEMBER 1982 'BYTE MAGAZINE' 9 REM:SYSTEM "CLOCK OFF" 10 GOTO 10000 23 REM:BEGIN CRUISE MODULE HERE 24 CLS:CLEAR 2000:RANDOMIZE 57.2958 25 DIM M$(20) 26 KR=57.2958:XQ=64 27 RS=1:IF RND(0)<.5 THEN RS=-1 28 RW=(15-5)*RND(0)+5 29 RW=RS*RW 30 REM:SET UP WIND TABLE 32 DIM WA(10,1) 34 FOR I=0 TO 7:WA(I,0)=RND(359):NEXT 36 FOR I=8 TO 10:WA(I,0)=90*RND(0)+225:NEXT 38 A=0 40 FOR I=1 TO 10:WA(I,1)=25*RND(0)+A:A=A+25:NEXT 41 RS$(0)=STRING$(31,"_") 42 RS$(1)=SPACE$(13)+". ."+SPACE$(13) 43 RS$(2)=SPACE$(11)+". ." 44 RS$(3)=SPACE$(9)+STRING$(13,"_") 45 REM:VOR STATION FREQUENCY TABLE 46 DIM VF(15) 47 VF(0)=115.9:VF(1)=113.8:VF(2)=112.7 48 VF(3)=117.7:VF(4)=117.8:VF(5)=112.2 49 VF(6)=117.4:VF(7)=115.5:VF(8)=116.4 50 VF(9)=113.6:VF(10)=116.9:VF(11)=117! 51 VF(12)=112.3:VF(13)=117.9:VF(14)=115.7 52 VF(15)=112.8 62 REM:ILS CONSTANTS FOR AIRPORTS 63 DIM VG(15,1) 64 VG(0,0)=238:VG(0,1)=28 66 VG(2,0)=240:VG(2,1)=30 69 VG(5,0)=90:VG(5,1)=217 71 VG(7,0)=299:VG(7,1)=164 72 VG(8,0)=166:VG(8,1)=42 79 VG(15,0)=341:VG(15,1)=75 100 REM:VOR STATION COORDIATES TABLE 101 DIM VP(15,1) 102 VP(0,0)=40.633:VP(0,1)=73.773 103 VP(1,0)=40.202:VP(1,1)=74.495 104 VP(2,0)=42.358:VP(2,1)=70.99301 105 VP(3,0)=41.282:VP(3,1)=70.027 106 VP(4,0)=42.74301:VP(4,1)=73.802 107 VP(5,0)=46.41201:VP(5,1)=84.315 108 VP(6,0)=38.35:VP(6,1)=81.77001 109 VP(7,0)=40.917:VP(7,1)=77.99301 110 VP(8,0)=42.928:VP(8,1)=78.67401 111 VP(9,0)=41.358:VP(9,1)=82.162 112 VP(10,0)=42.96701:VP(10,1)=83.72401 113 VP(11,0)=44.555:VP(11,1)=88.19501 114 VP(12,0)=41.547:VP(12,1)=88.318 115 VP(13,0)=39.495:VP(13,1)=76.97801 116 VP(14,0)=42.048:VP(14,1)=83.458 117 VP(15,0)=39.637:VP(15,1)=75.303 155 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV 160 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN 165 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM 170 DATA ALTITUDE,FEET,CLOCK 175 DIM P$(28) 180 FOR I=0 TO 28:READ P$(I):NEXT 185 DIM S$(25) 190 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT 192 FOR I=0 TO 9:F(I)=0:NEXT 195 REM:INIT FLIGHT VARIABLES TO STATE AT LIFTOFF 196 FU=195480!:FP=63:CC=75:ZS=380:RC=6704:AL=1900 198 MZ=122:TR=4:FL=1:FA=10:BR=10:WH=10 200 RA=0:ZS(1)=380:FA(1)=10:CC(1)=75:AL(1)=1900:RP=40 201 DP(4)=39:DP(5)=52:DP(6)=75:DP(7)=15 202 L1=39.8667:G1=75.25:LL(1)=L1:GL(1)=G1:LS(1)=L1:GS(1)=G1 203 VO(1)=0:VO$(1)="OUT ":VO(3)=0:VO(4)=999.9 204 GX(0)=0:GY(0)=0 205 XO=36481!:YO=0 220 TV$=TIME$:GOSUB 7050:TL=TD 221 TW(1)=TD 222 GOSUB 335 224 GOSUB 600 300 K$=INKEY$:IF LEN(K$)=0 GOTO 304 302 GOSUB 800 304 GOTO 1000 335 REM:DISPLAY PANEL (HEADERS ONLY) 340 LOCATE 1,4:PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20) 341 LOCATE 10,55:PRINT P$(13);S$(3);P$(16) 342 LOCATE 11,57:PRINT P$(14);S$(6);P$(14) 343 LOCATE 13,57:PRINT P$(15);S$(5);P$(15) 345 LOCATE 2,14:PRINT P$(6);S$(6);P$(10);S$(6) 350 LOCATE 2,69:PRINT P$(28) 355 LOCATE 3,2:PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23) 360 LOCATE 4,23:PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26) 365 LOCATE 5,1:PRINT P$(3) 370 LOCATE 6,40:PRINT P$(22);S$(6);P$(25);S$(5);P$(27) 375 LOCATE 7,1:PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7) 380 LOCATE 8,14:PRINT P$(8) 381 LOCATE 4,69:PRINT"VLF OMEGA":LOCATE 5,66:PRINT"LAT" 382 LOCATE 6,65:PRINT"LONG" 383 LOCATE 7,33:PRINT". . . . : . . . .":LOCATE 9,40:PRINT"RUD" 384 LOCATE 10,33:PRINT CHR$(201);STRING$(15,205);CHR$(187) 386 FOR X = 32 TO 48 STEP 16 387 FOR Y = 10 TO 22 388 LOCATE (Y+1),(X+1):PRINT CHR$(186); 389 NEXT Y 390 NEXT X 391 LOCATE 24,33:PRINT CHR$(200);STRING$(15,205);CHR$(188); 392 LOCATE 11,40:PRINT"VOR":LOCATE 12,45:PRINT"MHZ" 393 LOCATE 15,39:PRINT"RANGE" 394 LOCATE 17,36:PRINT".....:....." 395 LOCATE 20,39:PRINT"RADIAL" 396 LOCATE 22,40:PRINT"DME":LOCATE 23,45:PRINT"NM"; 397 FOR Y = 1 TO 7:LOCATE (Y+1),13:PRINT CHR$(195):NEXT 398 FOR Y = 1 TO 3:LOCATE (Y+1),22:PRINT CHR$(195):NEXT 400 LOCATE 15,1:PRINT CHR$(201);STRING$(15,205);CHR$(187) 402 FOR X = 0 TO 16 STEP 16 404 FOR Y = 15 TO 21 406 LOCATE (Y+1),(X+1):PRINT CHR$(186); 408 NEXT Y 410 NEXT X 412 LOCATE 23,1:PRINT CHR$(200);STRING$(15,205);CHR$(188); 414 LOCATE 14,8:PRINT"ILS" 416 LOCATE 18,20:PRINT"MARKER":LOCATE 19,21:PRINT"> <" 418 GX(1)=0:GY(1)=0 420 GOSUB 2100 422 COLOR 0,7:LOCATE 11,8:PRINT" " 424 COLOR 7,0:LOCATE 10,5:PRINT"RADAR ALT";SPC(6);"STALL" 425 LOCATE 11,19:PRINT"> <" 599 RETURN 600 REM:DISPLAY INSTRUMENT READINGS 601 GOTO 720 605 YP=1:XP=0:F$="######":V1=FU:GOSUB 9000 606 LOCATE 1,67:COLOR 0,7:PRINT TIME$:COLOR 7,0 610 YP=1:XP=7:F$="###":V1=FP:GOSUB 9000 615 YP=1:XP=39:V1=CC:GOSUB 9000 620 YP=4:XP=39:V1=ZS:GOSUB 9000 625 YP=4:XP=46:F$="######":V1=RC:GOSUB 9000 630 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 9000 635 YP=5:XP=0:F$="###":V1=MZ:GOSUB 9000 636 IF F(2)=1 THEN YP=10:XP=6:F$="#####":V1=AL:GOSUB 9000 640 REM:DISPLAY THRUST 650 FOR I = 1 TO 7 651 LOCATE (I+1),12:PRINT" ";CHR$(195) 652 NEXT 655 LOCATE (TR+1),12:PRINT">"; 660 REM:DISPLAY FLAPS 665 FOR I = 1 TO 3:LOCATE (I+1),21:PRINT" ";CHR$(195):NEXT 670 LOCATE (FL+1),21:PRINT">" 674 F$="+###" 675 YP=5:XP=20:V1=FA:GOSUB 9000 676 IF F(6)=0 THEN SX=25:COLOR 7,0:GOTO 679 677 IF SX=25 THEN SX=26:COLOR 0,7:GOTO 679 678 SX=25 679 IF F(7)=0 THEN LOCATE 11,20:PRINT" ":COLOR 7,0 680 REM:DISPLAY BRAKES 690 FOR I=10 TO 12:LOCATE (I+1),55:PRINT" ";CHR$(195):NEXT 695 LOCATE (BR+1),55:PRINT">" 700 REM:WHEELS 705 FOR I=10 TO 12:LOCATE (I+1),63:PRINT" ";CHR$(195):NEXT 710 LOCATE (WH+1),63:PRINT">" 711 IF F(2)=1 GOTO 723 712 REM:DISPLAY LAT/LONGDITUDE 713 YP=4:XP=69:F$="###":V1=DP(4):GOSUB 9000 714 YP=4:XP=73:F$="##.#":V1=DP(5):GOSUB 9000 715 YP=5:XP=69:F$="###":V1=DP(6):GOSUB 9000 716 YP=5:XP=73:F$="##.#":V1=DP(7):GOSUB 9000 717 LOCATE 5,79:PRINT"N" 718 LOCATE 6,79:PRINT"W" 719 GOTO 723 720 REM:DISPLAY RUDDER POSITION 721 LOCATE 8,33:COLOR 0,7:PRINT S$(17) 722 LOCATE 8,(RP+1):PRINT CHR$(186):COLOR 7,0:GOTO 605 723 IF F(2)=1 THEN RETURN 724 REM:DISPLAY VOR VALUES 725 YP=11:XP=38:F$="###.#":V1=VO(1):GOSUB 9000 726 COLOR 0,7:LOCATE 14,40:PRINT VO$(1):COLOR 7,0 727 YP=18:XP=39:F$="###":V1=VO(3):GOSUB 9000 728 YP=22:XP=38:F$="###.#":V1=VO(4):GOSUB 9000 729 COLOR 0,7:LOCATE 18,35:PRINT S$(13):COLOR 7,0 730 IF VO$(1)="OUT " GOTO 732 731 LOCATE 18,(VO(2)+1):PRINT CHR$(24) 732 RETURN 800 REM:KEY POLL SUBROUT 805 IF K$="F" OR K$="S" THEN KK=1:GOTO 850 810 IF K$="," OR K$="." THEN KK=2:GOTO 850 811 IF K$="/" THEN RA=0:GOTO 855 825 IF K$="U" OR K$="D" THEN KK=3:GOTO 850 830 IF K$="W" THEN KK=4:GOTO 850 835 IF K$="V" THEN KK=5:GOTO 850 836 IF K$="R" THEN KK=6:GOTO 850 837 IF K$="L" THEN KK=7:GOTO 850 838 IF K$="A" THEN KK=8:GOTO 850 839 IF K$="Q" THEN KK=9:GOTO 850 840 IF K$="M" THEN KK=10:GOTO 850 841 IF K$="C" THEN KK=11:GOTO 850 850 ON KK GOSUB 900,908,914,928,931,935,940,944,946,950,953 855 RETURN 900 REM:THRUST KEY 902 IF K$="F" THEN TR=TR-1 ELSE TR=TR+1 904 IF TR<1 THEN TR=1:RETURN 908 REM:RUDDER KEYS 909 IF K$="," GOTO 912 ELSE RA=RA+1 910 IF RA>4 THEN RA=4 911 RETURN 912 RA=RA-1:IF RA<-4 THEN RA=-4 913 RETURN 914 REM:ELEVATOR KEYS 915 J=5:IF BR=12 THEN J=1 916 IF K$="U" THEN FA=FA+J ELSE FA=FA-J 918 IF FA>40 THEN FA=40 920 IF FA<-40 THEN FA=-40 922 IF FA>0 THEN FL=1:RETURN 924 IF FA=0 THEN FL=2:RETURN 926 FL=3:RETURN 928 REM:WHEELS KEY 929 IF WH=10 THEN WH=12:RETURN 930 IF WH=12 THEN WH=10:RETURN 931 REM:SET VOR FREQ 932 LOCATE 15,56 933 LINE INPUT"VOR FREQ ";VX$:VO(1)=VAL(VX$) 934 LOCATE 15,56:PRINT SPC(16):RETURN 935 REM:SET VOR RADIAL 936 LOCATE 15,56 937 LINE INPUT"VOR RADIAL ";VX$:VO(3)=VAL(VX$) 938 LOCATE 15,56:PRINT SPC(14):RETURN 940 REM:FLAPS KEY 941 IF BR=10 THEN BR=12:RETURN 942 IF BR=12 THEN BR=10:RETURN 944 REM:AUTO - OBS KEY 945 F(3)=1:RETURN 946 REM:REVERSE THRUST KEY 947 IF F(7)=1 THEN TR=7 948 RETURN 950 REM:MISSED APPROACH KEY 951 IF F(2)=1 THEN F(5)=1 952 RETURN 953 REM:FLARE KEY 954 IF F(2)=0 THEN FA=0:FL=2:RETURN 955 FA=1:FL=1:RETURN 1000 REM:SITUATION UPDATE ROUTINE 1002 TV$=TIME$:GOSUB 7050:TJ=TD-TL:TL=TD 1010 GOSUB 1100 1012 GOSUB 1130 1013 GOSUB 1145 1014 IF TR=7 THEN GOSUB 1800 ELSE GOSUB 1124 1016 GOSUB 1106 1018 GOSUB 1114 1019 IF F(2)=1 GOTO 1600 1020 GOSUB 1400 1021 GOSUB 1500 1030 IF AL<=0 THEN AF=1:GOTO 3000 1031 IF F(2)=0 GOTO 1099 1032 IF AL>0 GOTO 1068 1033 IF F(7)=1 GOTO 1090 1034 F(7)=1 1036 TY=YN 1038 TX=XN-750 1042 IF FA>1 THEN AF=2:GOTO 3000 1044 IF FA<0 THEN AF=3:GOTO 3000 1046 IF F(6)=0 GOTO 1062 1048 IF AX>100 THEN AF=4:GOTO 3000 1050 IF AX>80 THEN AF=5:GOTO 3000 1052 IF WH=10 THEN AF=6:GOTO 3000 1054 IF TX>0 THEN AF=7:GOTO 3000 1056 IF TX<-10500 THEN AF=7:GOTO 3000 1058 IF ABS(TY)>100 THEN AF=7:GOTO 3000 1060 GOTO 1099 1062 AF=8:GOTO 3000 1068 IF F(5)=1 GOTO 1082 1070 IF FA>0 GOTO 1076 1072 IF FA<0 THEN F(6)=0 1074 GOTO 1099 1076 IF F(6)=0 THEN AX=AL:F(6)=1 1077 IF TR=6 GOTO 1080 1078 IF FA<2 THEN RC=-1800:GOTO 1099 1079 FA=2:FL=1:RC=-1800:GOTO 1099 1080 FA=1:FL=1:RC=-300:GOTO 1099 1082 IF AL<20 THEN AF=9:GOTO 3000 1084 TR=3:FA=0:FL=2 1086 AF=10:GOTO 3000 1090 IF XN<-9750 OR ABS(YN)>100 GOTO 1094 1091 IF ZS>0 GOTO 1099 1092 AF=0:GOTO 3000 1094 AF=9:GOTO 3000 1099 GOTO 1700 1100 REM:UPDATE FUEL 1102 FU=FU-(14-TR)*TJ:IF FU<0 THEN FU=0 1104 FP=FU/3120:RETURN 1106 IF F(7)=1 THEN RC=0:RETURN 1107 IF F(6)=1 THEN RETURN 1108 RC=ZS*SIN(ABS(FA/KR))*101.6 1110 IF FA<0 THEN RC=-1*RC 1112 RETURN 1114 REM:UPDATE ALTITUDE 1115 IF F(7)=1 THEN RETURN 1116 AL=AL+TJ*RC/60 1118 IF AL<0 THEN AL=0:RETURN 1120 IF AL>45000! THEN AL=45000! 1122 RETURN 1124 REM:UPDATE AIRSPEED 1125 ZS=800-100*TR 1126 ZS=ZS-2*FA 1127 IF BR=10 THEN RETURN 1128 ZS=ZS/3+20:RETURN 1130 IF F(5)=1 GOTO 1132 1131 IF F(2)=1 GOTO 1142 1132 IF RA=0 THEN RT=0:RETURN 1133 IF RA<0 THEN J=-1 ELSE J=1 1134 RA=ABS(RA):IF RA=1 THEN RT=1:GOTO 1137 1135 IF RA=2 THEN RT=10:GOTO 1137 1136 IF RA=3 THEN RT=20 ELSE RT=30 1137 RT=J*RT:RA=J*RA 1138 CC=CC+RT 1139 IF CC=>360 THEN CC=CC-360:RETURN 1140 IF CC<0 THEN CC=360+CC 1141 RETURN 1142 IF RA=0 THEN RETURN 1143 IF RA<0 THEN CC=CC-1 ELSE CC=CC+1 1144 RA=0:GOTO 1139 1145 REM:UPDATE RUDDER POSITION VALUE 1146 RP=40+RA+RA:RETURN 1200 REM:COMPUTES DIST & BEARING TO A KNOWN POINT LOCATION 1202 VL=ABS(LB-LC):BL(5)=-1:IF LB=>LC THEN BL(5)=1 1204 VG=ABS(GB-GC):BL(4)=1:IF GB=>GC THEN BL(4)=-1 1206 LA=LC:GOSUB 2400 1208 M1=MP 1210 LA=LB:GOSUB 2400 1212 M2=MP:DM=ABS(M2-M1) 1214 IF DM=0 GOTO 1220 1216 QO=VG/(DM/60):IF QO>114.59 GOTO 1220 1218 CA=KR*ATN(QO):DR=VL*(1/COS(CA/KR)):GOTO 1222 1220 CA=90:DR=VG*COS(LC/KR) 1222 DR=DR*60:IF BL(5)=-1 GOTO 1226 1224 IF BL(4)=1 THEN CR=CA ELSE CR=360-CA 1225 RETURN 1226 IF BL(4)=1 THEN CR=180-CA ELSE CR=180+CA 1228 RETURN 1250 REM:GET WIND VECTOR FOR CURRENT ALTITUDE 1252 I=FIX(AL/4000):IF I=>10 THEN I=10 1254 WD=WA(I,0):WV=WA(I,1) 1256 RETURN 1260 REM:SOLVES WIND TRIANGLE 1262 A=CC:L=AJ:GOSUB 1300 1264 MX=LX:MY=LY 1266 GOSUB 1250 1268 A=WD+180:IF A=>360 THEN A=A-360 1270 L=WV:GOSUB 1300 1272 MX=MX+LX:MY=MY+LY:GOSUB 1350 1274 TK=MA:GS=VZ 1276 RETURN 1300 REM:RESOLVES A VECTOR INTO RECT. COORDS 1302 IF A<=90 THEN Q=1:B=90-A:GOTO 1310 1304 IF A<=180 THEN Q=2:B=A-90:GOTO 1310 1306 IF A<=270 THEN Q=3:B=270-A:GOTO 1310 1308 Q=4:B=A-270 1310 LX=L*COS(B/KR):LY=L*SIN(B/KR) 1312 IF Q=1 THEN RETURN 1314 IF Q=2 THEN LY=-1*LY:RETURN 1316 IF Q=3 THEN LX=-1*LX:LY=-1*LY:RETURN 1318 LX=-1*LX 1320 RETURN 1350 REM:COMPOSES X,Y COMPONENTS INTO A POLAR VECTOR 1352 VZ=SQR(MX^2+MY^2) 1354 IF MX<=0 GOTO 1358 1356 IF MY<=0 THEN Q=2 ELSE Q=1 1357 GOTO 1360 1358 IF MY<=0 THEN Q=3 ELSE Q=4 1360 IF MX=0 THEN MA=90:GOTO 1366 1362 MQ=ABS(MY/MX) 1364 MA=ATN(MQ)*KR 1366 IF Q=1 THEN MA=90-MA:RETURN 1368 IF Q=2 THEN MA=90+MA:RETURN 1370 IF Q=3 THEN MA=270-MA:RETURN 1372 MA=270+MA 1374 RETURN 1400 REM:GET POSITION FOR OMEGA DISPLAY 1402 ZS(2)=ZS:FA(2)=FA:CC(2)=CC:AL(2)=AL 1404 ZS=ZS(1):FA=FA(1):CC=CC(1):AL=AL(1) 1406 IF ZS(2)<>ZS OR FA(2)<>FA GOTO 1440 1408 IF CC(2)<>CC OR AL(2)<>AL GOTO 1440 1410 F(0)=1:IF TD300 GOTO 1540 1516 IF CR=>360 THEN CR=CR-360 1517 GOTO 1578 1518 VO$(1)="FROM" 1519 VO(5)=CR-VO(3):IF VO(5)<=180 GOTO 1522 1520 VO(5)=VO(5)-360:GOTO 1524 1522 IF VO(5)<-180 THEN VO(5)=VO(5)+360 1524 IF ABS(VO(5))>90 THEN I1=VO(3):GOTO 1536 1526 IF VO$(1)="FROM" THEN I=-1 ELSE I=1 1527 IF I=1 THEN VO(3)=I1 1528 VO(2)=40+I*INT(VO(5)):VO(4)=DR 1530 IF VO(2)<35 THEN VO(2)=34 1532 IF VO(2)>45 THEN VO(2)=46 1534 GOTO 1560 1536 VO$(1)=" TO ":VO(3)=VO(3)+180:IF VO(3)=>360 THEN VO(3)=VO(3)-360 1538 GOTO 1519 1540 VO$(1)="OUT ":VO(4)=999.9:F(3)=0:RETURN 1546 IF DR>12 OR DR<10 THEN MK=0:GOTO 1518 1548 IF AL>4000 THEN MK=0:GOTO 1518 1550 IF F(1) =1 THEN J=9 ELSE J=2.5 1552 IF CR>AR+J OR CRLL+1 OR CC0 THEN RETURN 1574 F(1)=0:F(2)=1 1576 GOTO 1540 1578 IF F(3)=1 THEN VO(3)=CR:F(3)=0 1580 GOTO 1546 1600 REM:ILS ROUTINE 1602 ZN=AL:TH=2.82471:MK=1 1603 DW=1.69*RW*TJ:IF F(7)=1 THEN DW=0 1604 IF F(7)=1 THEN CC=LL:RA=0 1606 CJ=CC 1608 IF CJ>180 THEN CJ=360-CJ:CJ=-1*CJ 1610 HA=LO+CJ 1612 DC=360-HA:TS=1:IF HA<180 THEN DC=HA:TS=-1 1614 IF DC<0 THEN DC=-1*DC:TS=-1*TS 1616 TL$="W":IF TS=1 THEN TL$="E" 1618 DD=1.69*ZS*TJ 1620 DY=DD*SIN(DC/KR):DX=DD*COS(DC/KR) 1622 XN=XO-DX:IF TL$="E" THEN DY=-1*DY 1624 YN=YO+DY+DW 1626 LM=KR*ATN(AL/XN) 1628 BE=KR*ATN(ABS(YN)/ABS(XN)):IF BE>2.5 THEN MK=0 1630 J=(LM-TH)/.25:J=FIX(J) 1632 IF J>3 THEN J=3 1633 IF J<-3 THEN J=-3 1636 BE=BE/.25:BE=FIX(BE) 1637 IF BE<-7 THEN BE=-7 1638 IF BE>7 THEN BE=7 1639 IF YN>0 THEN BE=-1*BE 1640 IF MK=0 GOTO 1648 1642 IF XN>34960! AND XN<38000! GOTO 1648 1644 IF XN>2534 AND XN<5574 GOTO 1648 1646 MK=0 1648 GX(1)=BE:GY(1)=J 1650 GOSUB 2100 1654 LOCATE 19,22:IF MK=1 THEN COLOR 0,7:PRINT" ":COLOR 7,0:ELSE PRINT" " 1662 XO=XN:YO=YN 1664 IF F8=1 GOTO 1676 1666 IF XN>12000 GOTO 1676 1668 F8=1 1670 FOR I=0 TO 3 1672 LOCATE (14+I),50:PRINT RS$(I) 1674 NEXT I 1676 IF F8=0 GOTO 1699 1678 LOCATE 18,(XQ+1):PRINT" " 1680 YU=FIX(YN/16.7):XC=64+YU 1682 IF XC<49 THEN XC=49 1684 IF XC>79 THEN XC=79 1686 LOCATE 18,(XC+1):PRINT CHR$(24) 1688 XQ=XC 1699 GOTO 1031 1700 GOTO 1799 1799 GOTO 224 1800 REM:REVERSE THRUST APPLIED 1802 IF F(4)=1 GOTO 1806 1804 VO=ZS*1.152*1.47:F(4)=1 1806 V=VO-(3.23636)*TJ 1808 IF V<=0 THEN V=0 1810 VO=V 1812 ZS=V/(1.152*1.47) 1814 RETURN 2000 REM:COMPUTES NEW POSITION 2004 IF CN=0 THEN CA=0:LB(5)=1:LB(6)=1:GOTO 2014 2006 IF CN>0 AND CN<=90 THEN CA=CN:LB(5)=1:LB(6)=1:GOTO 2014 2008 IF CN>90 AND CN<=180 THEN CA=180-CN:LB(5)=-1:LB(6)=1:GOTO 2014 2010 IF CN>180 AND CN<=270 THEN CA=CN-180:LB(5)=-1:LB(6)=-1:GOTO 2014 2012 CA=360-CN:LB(5)=1:LB(6)=-1 2014 IF CA>89.5 GOTO 2034 2016 DL=DN*COS(CA/KR):DL=DL/60:LB(3)=LB(5) 2018 IF LB(3)=1 THEN L2=L1+DL:GOTO 2024 2020 L2=ABS(L1-DL) 2024 LA=L1:GOSUB 2400 2026 M1=MP 2028 LA=L2:GOSUB 2400 2030 M2=MP 2032 DM=ABS(M1-M2):DG=DM*TAN(CA/KR):GOTO 2036 2034 L2=L1:DG=DN/COS(L1/KR) 2036 DG=DG/60:LB(4)=LB(6) 2038 IF LB(4)=-1 GOTO 2046 2040 G2=ABS(G1-DG) 2044 GOTO 2050 2046 G2=G1+DG 2050 CP(4)=FIX(L2):CP(5)=(L2-CP(4))*60 2052 CP(6)=FIX(G2):CP(7)=(G2-CP(6))*60 2054 RETURN 2100 REM:PLOT GLIDE SLOPE CROSSHAIRS 2101 IF XO<=750 THEN RETURN 2102 X0=8+GX(0):X1=8+GX(1):Y0=18+GY(0):Y1=18+GY(1) 2104 FOR Y=15 TO 21:LOCATE (Y+1),(X0+1):PRINT" ":NEXT 2106 LOCATE (Y0+1),2:PRINT STRING$(15,32) 2108 FOR Y=15 TO 21:LOCATE (Y+1),(X1+1):PRINT CHR$(197):NEXT 2110 LOCATE (Y1+1),2:PRINT STRING$(15,197) 2112 LOCATE (Y1+1),(X1+1):PRINT CHR$(43) 2114 LOCATE 19,9:PRINT"O" 2116 GX(0)=GX(1):GY(0)=GY(1) 2118 RETURN 2400 REM:COMPUTES MERIDIONAL PARTS, MP 2404 KM(0)=7915.704468# 2406 KM(1)=23.268932# 2408 KM(2)=.0525 2410 KM(3)=.000213 2414 IF LA=0 THEN LA=0+1/60 2416 IF LA>(89+59/60) THEN LA=89+59/60 2418 S1=SIN(LA/KR) 2420 S2=S1*S1:S3=S1*S2 2422 TM(0)=TAN((45+LA/2)/KR) 2424 TM(0)=KM(0)*LOG(TM(0))/LOG(10) 2426 TM(1)=KM(1)*S1 2428 TM(2)=KM(2)*S3 2430 TM(3)=KM(3)*S2*S3 2432 MP=TM(0)-TM(1)-TM(2)-TM(3) 2436 RETURN 3000 REM:ABORT ROUTINES 3002 M$(1)="---------- A CRASH HAS OCCURED ----------" 3004 M$(2)="YOU ACCIDENTLY STALLED THE AIRCRAFT DURING FINAL APPROACH." 3006 M$(3)="THE STALL OCCURRED AT AN ALTITUDE OF" 3008 M$(4)="THE AIRCRAFT STRUCK THE GROUND IN A NOSE-HIGH ATTITUDE." 3010 M$(5)="THE IMPACT RUPTURED THE TAIL SECTION OF THE FUSELAGE." 3012 M$(6)="---- LOCATION OF CRASH ----" 3013 M$(7)="---- LANDING POSITION ----" 3016 M$(8)=" PITCH ANGLE=" 3018 M$(9)=" AIRSPEED=" 3020 M$(10)="YOU FLARED AT TOO HIGH AN ALTITUDE DURING FINAL APPROACH." 3022 M$(11)="THE RESULTING STALL OCCURED AT AN ALTITUDE OF" 3024 M$(12)="THE IMPACT RUPTURED THE " 3026 M$(13)="YOU FORGOT TO LOWER THE LANDING GEAR." 3028 M$(14)="YOU FAILED TO TOUCH DOWN INSIDE THE RUNWAY." 3030 M$(15)="---------- AN IMPROPER LANDING WAS MADE ----------" 3032 M$(16)="NO DAMAGE OR INJURIES OCCURRED. 3033 RL=0:IF TX>100 THEN RL=1 3034 RW=0:IF ABS(TY)>100 THEN RW=1 3040 N$(2)="FEET INSIDE OF RUNWAY" 3041 IF TX=>0 THEN N$(2)="FEET SHORT OF RUNWAY" 3042 N$(3)="FEET TO LEFT OF RUNWAY CENERLINE" 3043 IF TY=>0 THEN N$(3)="FEET TO RIGHT OF RUNWAY CENTERLINE" 3044 RX=FIX(TX):RX=ABS(RX) 3045 RY=FIX(TY):RY=ABS(RY) 3050 IF AF=0 GOTO 3600 3055 ZS=INT(AX):FA=INT(FA):ZS=INT(ZS) 3060 ON AF GOTO 3100,3150,3200,3250,3300,3350,3400,3450,3500,3550 3100 GOSUB 3700 3101 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 9000 3102 LOCATE 16,1:PRINT M$(1) 3104 PRINT"YOU FLEW INTO THE GROUND." 3106 PRINT"THE INSTRUMENT READINGS AT TIME OF THE CRASH ARE SHOWN AS ABOVE." 3108 END 3150 CLS 3152 PRINT M$(1) 3154 PRINT M$(2) 3156 PRINT M$(3);AX;"FEET." 3158 PRINT M$(4) 3160 PRINT M$(5) 3162 N$(1)=M$(6) 3164 GOSUB 3800 3166 END 3200 CLS 3202 PRINT M$(1) 3204 PRINT"YOU FLEW INTO THE GROUND DURING FINAL APPROACH." 3206 PRINT"AT THE TIME OF THE CRASH THE AIRCRAFT PROFILE WAS AS FOLLOWS :" 3208 PRINT M$(8);FA;"DEGREES" 3210 PRINT M$(9);ZS 3212 N$(1)=M$(6) 3214 GOSUB 3800 3216 END 3250 CLS 3252 PRINT M$(1) 3254 PRINT M$(10) 3256 PRINT M$(11);AX;"FEET." 3258 PRINT M$(12)+"FUSELAGE." 3260 N$(1)=M$(6) 3262 GOSUB 3800 3264 END 3300 CLS 3302 IF WH=10 THEN PRINT M$(1) 3304 IF WH=12 THEN PRINT"---------- A MINOR CRASH HAS OCCURRED ----------" 3306 PRINT M$(10) 3308 PRINT M$(11);AX;"FEET." 3310 IF WH=10 THEN PRINT M$(13) 3312 IF WH=10 THEN PRINT M$(12)+"FUSELAGE." 3314 IF WH=12 THEN PRINT"THE IMPACT DAMAGED THE LANDING GEAR." 3316 IF WH=12 THEN PRINT"ALL THE PASSENGERS HAVE BEEN SAFELY EVACUATED." 3318 N$(1)=M$(6) 3320 GOSUB 3800 3322 END 3350 CLS 3352 PRINT M$(1) 3354 PRINT M$(13) 3356 PRINT"THE AIRCRAFT LANDED ON ITS BELLY, CAUSING MODERATE DAMAGE." 3358 PRINT"ALL THE PASSENGERS HAVE BEEN SAFELY EVACUATED." 3360 N$(1)=M$(6) 3362 GOSUB 3800 3364 END 3400 CLS 3402 PRINT M$(15) 3404 PRINT M$(14) 3406 N$(1)=M$(7) 3408 GOSUB 3800 3410 END 3450 CLS 3452 PRINT M$(15) 3454 PRINT"YOU FAILED TO EXECUTE A FLARE PRIOR TO TOUCHING DOWN." 3456 PRINT"THIS IS A VIOLATION OF COMPANY PROCEDURES." 3458 PRINT M$(16) 3460 N$(1)=M$(7) 3462 GOSUB 3800 3464 END 3500 CLS 3502 PRINT M$(15) 3504 PRINT"YOU ROLLED OFF THE RUNWAY AFTER TOUCHING DOWN." 3506 PRINT M$(16) 3508 N$(1)=M$(7) 3512 GOSUB 3800 3513 PRINT 3514 IF XN>-9750 THEN PRINT"YOU ROLLED PAST FAR END OF RUNWAY" 3516 IF ABS(YN)>100 THEN PRINT"YOU ROLLED THROUGH RUNWAY SIDE BORDERS" 3518 END 3550 CLS 3552 PRINT"----- YOUR MISSED APPROACH SIGNAL IS ACKNOWLEDGED -----" 3554 PRINT"YOU HAVE FOLLOWED PROPER PROCEDURES." 3556 END 3600 CLS 3602 PRINT"----- YOU HAVE SUCCESSFULLY COMPLETED THE FLIGHT -----" 3604 PRINT"ALL PROCEDURES WERE PROPERLY EXECUTED." 3606 N$(1)=M$(7) 3610 PRINT"CONGRATULATIONS ON A SUCCESSFUL FLIGHT." 3612 GOSUB 3800 3613 PRINT 3614 XN=ABS(XN):JN=FIX(XN+750) 3615 YN=ABS(YN):YN=FIX(YN) 3616 PRINT"YOUR AIRCRAFT CAME TO REST AT THE FOLLOWING POSITION:" 3617 PRINT" ";JN;"FEET INSIDE THE RUNWAY" 3618 PRINT" ";YN;"FEET FROM RUNWAY CENTERLINE" 3620 END 3700 REM:SUBROUTINE TO CLEAR LOWER PART OF DISPLAY 3702 FOR I=9 TO 23 3704 LOCATE (I+1),1:PRINT SPC(79); 3706 NEXT I 3708 RETURN 3800 REM:LANDING STATISTICS 3802 PRINT 3804 PRINT SPACE$(26);N$(1) 3806 PRINT 3808 IF RL=0 THEN PRINT RX;N$(2) 3809 IF RL=1 THEN COLOR 0,7:PRINT RX;N$(2):COLOR 7,0 3810 PRINT 3812 IF RW=0 THEN PRINT RY;N$(3) 3813 IF RW=1 THEN COLOR 0,7:PRINT RY;N$(3):COLOR 7,0 3814 PRINT 3816 PRINT"--- SIZE OF RUNWAY IS 10,500 FEET X 200 FEET ---" 3818 RETURN 5085 REM:TIME DELAY PAD 5090 FOR I=1 TO TQ 5095 NEXT I 5099 RETURN 7050 REM:CONVERT RTC TO TIME OF DAY IN SECONDS ABSOLUTE 7055 J=7 7060 FOR I=0 TO 2 7065 TC$(I)=MID$(TV$,J,2) 7070 J=J-3 7075 TC(I)=VAL(TC$(I)) 7080 TD=(3600*TC(2))+(60*TC(1))+TC(0) 7085 NEXT I 7090 RETURN 9000 REM:PLOTS VARIABLE ON REVERSE BACKGROUND 9005 COLOR 0,7:LOCATE (YP+1),(XP+1) 9010 PRINT USING F$;V1; 9015 COLOR 7,0 9020 RETURN 9999 END 10000 REM:BEGIN TAKEOFF MODULE HERE, EH 10020 CLS:CLEAR 1000:RANDOMIZE 57.2958 10025 KR=57.2958 10030 DIM XM(13),WM(13) 10031 DIM P$(31) 10035 DATA 37,35,32,30,27,25,22,20,17,15,12,10,7,5 10040 DATA 6,11,16,21,26,31,36,41,46,51,56,61,66,71 10041 FOR I=0 TO 28:READ P$(I):NEXT 10045 FOR I=0 TO 13:READ XM(I):NEXT 10050 FOR I=0 TO 13:READ WM(I):NEXT 10055 M$(1)="_":M$(2)="_":M$(3)="_" 10060 DIM XE(13),WE(13) 10065 K1=29:K2=23 10070 FOR I=0 TO 13 10075 XE(I)=K1:WE(I)=K2 10080 K1=K1-2:K2=K2+4 10085 NEXT 10090 IO=40 10095 RN=RND(0) 10100 RS=1:IF RN>.5 THEN RS=-1 10105 W1=75:IF RS=-1 THEN W1=255 10110 W2=RND(20):W3=RS*W2 10115 DIM XL(14),XR(14) 10120 J=31:K=49 10125 FOR I=0 TO 14 10130 XL(I)=J:XR(I)=K 10135 J=J-2:K=K+2 10140 NEXT 10145 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV 10150 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN 10155 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM 10160 DATA ALTITUDE,FEET,CLOCK,BRAKE,SET,REL 10170 FOR I=0 TO 31:READ P$(I):NEXT 10175 DIM S$(25) 10180 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT 10185 FOR I=0 TO 9:F(I)=0:NEXT 10190 REM:INIT VARIABLES FOR TAKEOFF MODE 10195 FU=200000!:FP=0:CC=75:ZS=0:RC=0:AL=0 10200 MZ=107:TR=6:FL=2:FA=0:WH=13:IX=40:HY=9:BR=11:BK=11 10205 AB=0 10215 LOCATE 9,18:PRINT"AIR CANADA 312 CLEARED AS FILED" 10217 PRINT:PRINT 10218 PRINT" SURFACE WINDS VARIABLE, GUSTING TO 15." 10219 PRINT" MINIMUM CEILING CONDITIONS ARE IN EFFECT." 10230 PRINT" SKY CONDITIONS AT 20,000 SCATTERED." 10235 PRINT" AT 30,000 BROKEN." 10240 PRINT:PRINT 10245 PRINT"UPON TAKEOFF, MAINTAIN HEADING 075 TO 3000, THEN PROCEED AS FILED." 10248 PRINT:PRINT:PRINT" STANDBY FOR TAKEOFF CLEARANCE" 10255 TQ=7000:GOSUB 11535 10260 CLS 10265 LOCATE 11,18:PRINT"AIR CANADA 312":PRINT:PRINT 10270 PRINT"YOU ARE CLEARED FOR TAKEOFF AT 0800 HOURS" 10275 TQ=3000:GOSUB 11535 10280 CLS 10285 TIME$="07:59:00":KEY OFF:CLS 10290 TV$=TIME$:GOSUB 11555:TL=TD 10295 GOSUB 10330 10300 GOSUB 10410 10305 GOSUB 10480 10310 GOSUB 10615 10315 K$=INKEY$:IF LEN(K$)=0 GOTO 10325 10320 GOSUB 10790 10325 GOTO 10945 10330 REM:DISPLAY PANEL (HEADERS ONLY) 10335 LOCATE 1,4:PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20) 10340 LOCATE 11,60:PRINT P$(13);S$(3);P$(16);S$(2);P$(29) 10345 LOCATE 12,62:PRINT P$(14);S$(6);P$(14);S$(6);P$(30) 10350 LOCATE 14,62:PRINT P$(15);S$(5);P$(15);S$(5);P$(31) 10352 IF F(9)=1 THEN RETURN 10355 LOCATE 2,14:PRINT P$(6);S$(6);P$(10);S$(6) 10360 LOCATE 2,69:PRINT P$(28) 10365 LOCATE 3,2:PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23) 10370 LOCATE 4,23:PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26) 10375 LOCATE 5,1:PRINT P$(3) 10380 LOCATE 6,40:PRINT P$(22);S$(6);P$(25);S$(5);P$(27) 10385 LOCATE 7,1:PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7) 10390 LOCATE 8,14:PRINT P$(8) 10395 FOR Y=1 TO 7:LOCATE (Y+1),13:PRINT CHR$(195):NEXT 10400 FOR Y=1 TO 3:LOCATE (Y+1),22:PRINT CHR$(195):NEXT 10405 RETURN 10410 REM:DISPLAY HORIZONTAL LINE 10415 IF F(9)=0 GOTO 10430 10420 LOCATE 10,1:PRINT SPACE$(80); 10425 IF HY=20 GOTO 10440 10430 LOCATE (HY+1),1:PRINT STRING$(80,"_") 10435 RETURN 10440 OH=9:HY=10 10445 FOR I=HY TO 22 10450 LOCATE (OH+1),1:PRINT SPACE$(80); 10455 LOCATE (I+1),1:PRINT STRING$(80,"_"); 10460 OH=I 10465 NEXT I 10470 LOCATE 24,(IO+1):PRINT" "; 10475 RETURN 10480 REM:DISPLAY RUNWAY 10485 IF F(4)=1 GOTO 10525 10490 S=10:X=29 10495 FOR Y=10 TO 22 10500 LOCATE (Y+1),(X+1):PRINT ".";SPACE$(S);" ";SPACE$(S);"."; 10505 X=X-2:S=S+2 10510 NEXT 10515 S$=S$(13) 10520 RETURN 10525 REM:PRINTS RUNWAY GRAPHICS 10530 IF N>3 GOTO 10600 10535 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM); 10540 LOCATE (NY+1),(NX+1):PRINT MK$; 10545 OY=NY:OX=NX 10550 WM=FW 10555 RETURN 10560 REM:ENTRY WHEN SHIP IN FINAL ZONE 10565 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM):IF F(9)=1 THEN RETURN 10570 FOR I=10 TO NY-1 10575 LOCATE (I+1),(XE(J)+1):PRINT SPACE$(WE(J)) 10580 NEXT I 10585 IF N>4 THEN RETURN 10590 LOCATE (NY+1),(XY+1):PRINT MK$; 10595 RETURN 10600 IF F(2)=1 GOTO 10560 ELSE F(2)=1 10605 FOR I=10 TO 13:LOCATE (I+1),60:PRINT SPACE$(21):NEXT 10610 GOTO 10560 10615 REM:DISPLAY INSTRUMENT READINGS 10618 LOCATE 1,67:COLOR 0,7:PRINT TIME$:COLOR 7,0 10620 YP=1:XP=0:F$="######":V1=FU:GOSUB 11600 10625 YP=1:XP=7:F$="###":V1=FP:GOSUB 11600 10630 YP=1:XP=39:V1=CC:GOSUB 11600 10635 YP=4:XP=39:V1=ZS:GOSUB 11600 10640 YP=4:XP=46:F$="######":V1=RC:GOSUB 11600 10645 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 11600 10650 YP=5:XP=0:F$="###":V1=MZ:GOSUB 11600 10655 REM:DISPLAY THRUST 10660 FOR I=1 TO 7 10665 LOCATE (I+1),12:PRINT" ";CHR$(195) 10670 NEXT 10675 LOCATE (TR+1),12:PRINT">" 10680 REM:DISPLAY PITCH 10685 FOR I=1 TO 3:LOCATE (I+1),21:PRINT" ";CHR$(195):NEXT 10690 LOCATE (FL+1),21:PRINT">" 10695 F$="+###" 10700 YP=5:XP=20:V1=FA:GOSUB 11600 10705 REM:DISPLAY FLAPS 10710 IF F(2)=1 GOTO 10760 10715 FOR I=11 TO 13:LOCATE (I+1),60:PRINT" ";CHR$(195):NEXT 10720 LOCATE (BR+1),60:PRINT">" 10725 REM:WHEELS 10730 FOR I=11 TO 13:LOCATE (I+1),68:PRINT" ";CHR$(195):NEXT 10735 LOCATE (WH+1),68:PRINT">" 10740 REM:BRAKES 10745 FOR I=11 TO 13:LOCATE (I+1),76:PRINT" ";CHR$(195):NEXT 10750 LOCATE (BK+1),76:PRINT">" 10760 REM:DISPLAY RUNWAY ALIGNMENT INDEX 10765 IF F(9)=1 THEN RETURN 10770 LOCATE 24,(IO+1):PRINT" "; 10775 LOCATE 24,(IX+1):PRINT CHR$(24); 10780 IO=IX 10785 RETURN 10790 REM:POLL KEY SUBROUT 10795 IF K$="F" THEN KK=1:GOTO 10820 10800 IF K$="," OR K$="." THEN KK=2:GOTO 10820 10805 IF K$="B" THEN KK=3:GOTO 10820 10810 IF K$="U" OR K$="D" THEN KK=4:GOTO 10820 10815 IF K$="L" THEN KK=5:GOTO 10820 10817 IF K$="W" THEN KK=6:GOTO 10820 10818 IF K$="S" THEN KK=7:GOTO 10820 10820 ON KK GOSUB 10830,10845,10865,10880,10925,10941,10826 10825 RETURN 10826 REM:THRUST KEY (DECREASE) 10827 IF F(7)=1 AND BR=11 THEN TR=4 10829 RETURN 10830 REM:THRUST KEY (INCREASE) 10831 IF F(7)=1 THEN RETURN 10835 F(1)=1:TR=1:RETURN 10845 REM:RUDDER KEYS 10846 IF F(7)=1 THEN RETURN 10850 IF ZS<=50 THEN RETURN 10855 IF K$="," THEN CC=CC-1 ELSE CC=CC+1 10860 RETURN 10865 REM:BRAKES 10870 IF F(0)=1 THEN RETURN 10875 F(0)=1:BK=13:RETURN 10880 REM:PITCH 10881 IF F(7)=1 THEN RETURN 10885 IF ZS<=50 THEN RETURN 10890 FD=-10:IF K$="U" THEN FD=10 10895 FA=FA+FD 10900 IF FA>60 THEN FA=60 10905 IF FA<-60 THEN FA=-60 10910 IF FA>0 THEN FL=1:RETURN 10915 IF FA=0 THEN FL=2:RETURN 10920 FL=3:RETURN 10925 REM:FLAPS 10926 IF F(7)=1 AND WH=11 THEN BR=11:RETURN 10930 IF F(3)=1 THEN RETURN 10935 IF F(3)=0 THEN F(3)=1:BR=13:RETURN 10940 RETURN 10941 REM:WHEELS 10942 IF F(7)=1 THEN WH=11 10944 RETURN 10945 REM:SITUATION UPDATE ROUTINE 10950 TV$=TIME$:GOSUB 11555:TJ=TD-TL:TL=TD 10955 IF F(9)=1 GOTO 12000 10960 IF F(0)=1 GOTO 10970 10965 GOSUB 11130:GOTO 10310 10970 IF F(4)=1 GOTO 10990 10975 F(4)=1 10980 XX=0:YY=0 10985 TD=TD:V0=0:N=1:OY=23:OX=5:WM=71 10990 REM: 10995 A=(118-18*TR)*.04028 11000 GOSUB 11190 11005 IF AL>0 GOTO 11060 11010 IF YY>10500 OR ABS(XX)>100 GOTO 11390 11015 IF FA<=0 GOTO 11100 11020 IF ZS<150 GOTO 11385 11025 IF FA>10 GOTO 11385 11030 IF F(3)=0 GOTO 11100 11035 AL=25 11040 GOSUB 11130 11045 GOSUB 11150 11050 GOSUB 11300 11055 GOTO 10305 11060 F(9)=1 11065 GOSUB 11130 11070 GOSUB 11150 11075 GOSUB 11170 11080 FOR I=10 TO 22:LOCATE (I+1),1:PRINT SPACE$(80);:NEXT 11085 HY=20 11090 GOSUB 10410 11095 GOTO 11115 11100 GOSUB 11130 11105 GOSUB 11300 11110 GOTO 10305 11115 REM:NOW DO DEPARTURE PROCEDURES 11120 GOTO 10310 11130 REM:UPDATE FUEL 11135 FU=FU-40*TJ 11140 FP=FU/3120 11145 RETURN 11150 REM:UPDATE RATE OF CLIMB 11155 RC=ZS*SIN(ABS(FA/57.3))*1.693*60 11160 IF FA<0 THEN RC=-1*RC 11165 RETURN 11170 REM:UPDATE ALT 11175 AL=AL+TJ*RC/60 11180 IF AL<=0 THEN AL=0 11185 RETURN 11190 REM:EQUATIONS OF MOTION 11195 T=TJ 11200 V=V0+A*T 11205 VB=(V+V0)/2:V0=V 11210 S=VB*T 11215 IF TD<(TX+18) GOTO 11235 11220 TX=TD 11225 WB=RS*RND(2) 11230 CC=CC+WB 11235 DA=(CC-75)/57.3 11240 DY=S*COS(ABS(DA)) 11245 DX=S*SIN(ABS(DA)) 11250 IF DA<0 THEN DX=-1*DX 11255 YY=YY+DY 11260 XX=XX+DX 11265 ZS=V/1.69278 11270 IF ZS>20 THEN ZS=ZS+WS 11275 IX=40+FIX(XX*7/20):IF IX>79 THEN IX=79 11280 IF IX<0 THEN IX=0 11285 ZP=FIX(YY-2500*(N-1)) 11290 IF ZP>2500 THEN N=N+1:GOTO 11285 11295 RETURN 11300 REM:VARIABLES FOR RUNWAY GRAPHICS 11305 MP=FIX(10+(13*ZP)/2500) 11310 IF N>3 GOTO 11350 11315 NY=MP 11320 J=NY-10 11325 NX=XM(J) 11330 FW=WM(J) 11335 S$=SPACE$(J) 11340 MK$=M$(N)+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_" 11345 RETURN 11350 REM:IN ZONE 4-MARKER IS RUNWAY EDGE 11355 NY=MP 11360 J=NY-10 11365 NX=XE(J) 11370 IF N>4 THEN RETURN 11375 MK$=STRING$(WE(J),"_") 11380 RETURN 11385 AB=1:GOTO 11415 11390 AB=2:IF YY<10500 GOTO 11415 11395 FOR I=10 TO 22 11400 LOCATE (I+1),1:PRINT SPACE$(80); 11405 NEXT I 11410 GOTO 11415 11415 REM:ABORT 11420 FOR I=10 TO 22 11425 LOCATE (I+1),1:COLOR 0,7:PRINT SPACE$(80); 11430 NEXT I 11435 LOCATE 11,30:PRINT"*** TAKEOFF FAILED ***":PRINT:PRINT 11440 ON AB GOSUB 11455,11480 11445 LOCATE 20,35:COLOR 7,0:PRINT"END OF PROGRAM"; 11450 END 11455 PRINT"YOU PULLED BACK ON THE STICK AT TOO SLOW A SPEED, OR YOU" 11460 PRINT"PULLED BACK THE STICK TOO FAR WHEN AT PROPER SPEED." 11465 PRINT"AS A RESULT, THE TAIL OF THE FUSELAGE SCRAPED THE RUNWAY" 11470 PRINT"AND THE AIRCRAFT SPUN OUT OF CONTROL." 11475 RETURN 11480 IF YY>10500 GOTO 11505 11485 PRINT"YOU FAILED TO STAY WITHIN THE RUNWAY BOUNDARIES." 11490 PRINT"AS A RESULT, YOU VEERED OFF THE RUNWAY AND COLLIDED WITH" 11495 PRINT" THE RUNWAY LIGHTS." 11500 RETURN 11505 PRINT" YOU RAN OUT OF RUNWAY. AS A RESULT, YOU ROLLED INTO THE" 11510 PRINT" MARSHLANDS LOCATED";FIX(YY)-10500;"FEET PAST THE END OF THE RUNWAY." 11515 IF F(3)=1 THEN RETURN 11520 PRINT:PRINT:PRINT" YOU FORGOT TO LOWER THE FLAPS." 11525 PRINT" AS A RESULT, THE AIRCRAFT COULD NOT DEVELOP SUFFICIENT LIFT." 11530 RETURN 11535 REM:TIME DELAY PAD 11540 FOR I=1 TO TQ 11545 NEXT I 11550 RETURN 11555 REM:CONVERT RTC TO TIME OF DAY IN SECONDS, ABSOLUTELY 11560 J=7 11565 FOR I=0 TO 2 11570 TC$(I)=MID$(TV$,J,2) 11575 J=J-3 11580 TC(I)=VAL(TC$(I)) 11585 TD=(3600*TC(2))+(60*TC(1))+TC(0) 11590 NEXT I 11595 RETURN 11600 REM:PLOTS VARIABLE ON REVERSE BACKGROUND 11605 COLOR 0,7:LOCATE (YP+1),(XP+2) 11610 PRINT USING F$;V1; 11615 COLOR 7,0 11620 RETURN 12000 REM:DEPARTURE ROUTINE 12010 IF F(7)=1 GOTO 12025 ELSE F(7)=1 12015 GOSUB 10340 12020 F(2)=0 12025 IF WH<>11 GOTO 12040 ELSE ZS=ZS+5 12030 IF BR<>11 GOTO 12040 ELSE ZS=ZS+5 12035 IF TR=4 AND AL>1800 GOTO 24 ELSE GOTO 12090 12040 IF AL<1200 GOTO 12090 12042 LOCATE 13,1:PRINT"******** FLIGHT ABORTED **********" 12044 PRINT:PRINT 12046 PRINT"YOU FAILED TO PERFORM CRUCIAL TRIM MANOUVERS FOLLOWING LIFTOFF." 12048 PRINT" THE PROPER TRIM SEQUENCE, WHICH MUST BE COMPLETED BELOW 1200 FEET, IS AS FOLLOWS:" 12050 PRINT" 1-RAISE LANDING GEAR" 12054 PRINT" 3-REDUCE THRUST" 12055 PRINT" 2-RETRACT FLAPS" 12056 PRINT 12058 PRINT"--------------- END OF PROGRAM --------------" 12060 END 12090 GOSUB 11130 12092 GOSUB 11150 12094 GOSUB 11170 12099 GOTO 10310 13000 REM:END OF LISTING 65399 '** DONE - PRESS ENTER TO RETURN TO MENU **