10 ' NAVPROG7.BAS (c) 1982 Alan Bose 22-Jan-82 Rev 8/21/84 20 ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr. 30 CLEAR:ON ERROR GOTO 2520:WIDTH 255:DEFINT I-J 40 BL$=CHR$(7):E$=CHR$(27):ER$=E$+"E":PG$=E$+"p":QG$=E$+"q":G$=E$+"F" 50 NG$=E$+"G":Y$=E$+"Y":L$=E$+"l":J$=E$+"j":K$=E$+"k":J1$=E$+"J":U=57.29577950000004# 60 DEF FNC$(C1,C2)=Y$+CHR$(C1+31)+CHR$(C2+31) 70 DEF FNS5(X)=SIN(X/U):DEF FNS6(X)=INT(X*10+.5)/10 80 DEF FNS7(X)=ATN(X/SQR(1-X*X))*U 90 DEF FNS8(X)=SIN(ABS(A/2)/U)*COS(X/U)/SIN(Q2/2) 100 PRINT ER$E$"x1"FNC$(1,34)"NAVPROGseven"FNC$(25,1)ER$E$"H" 110 OPEN "R",1,"B:AIRPORTS.RND",255 120 PRINT FNC$(25,1)ER$ 130 PRINT FNC$(5,1)L$"Aircraft identification? N"J$; 140 PRINT STRING$(7,95)K$;:LINE INPUT X$:PRINT J1$:IF X$="" THEN RUN"MENU" 150 GOSUB 2830:IF X$="I" THEN CLOSE:RUN"AIRCRAFT" 160 F$="N"+X$ 170 OPEN"I",2,"B:"+F$:LINE INPUT#2,AT$:INPUT#2,RU:INPUT#2,T9:INPUT#2,G9 180 INPUT#2,D9:INPUT#2,NA:INPUT#2,NS:INPUT#2,NF:INPUT#2,NB:INPUT#2,PH:CLOSE#2 190 RC=(NA/T9)*60:CF=(G9/T9)*60:CS=(D9/T9)*60 200 PRINT FNC$(5,1)J1$FNC$(24,40-((LEN(AT$)+LEN(F$))/2))F$" "AT$ 210 OPEN"I",2,"B:FLIGHT.SEQ" 220 FOR J=1 TO 10:INPUT#2,ID$(J):ID$(J)=ID$(J)+SPACE$(5-LEN(ID$(J))) 230 INPUT #2,PI(J):N=J 240 NEXT J:CLOSE#2 250 DIM C(N),T(N),V$(N),V(N),Y(N),P$(N),P1(N),P2(N),Q(N),G(N),W(N),S(N),E(N) 260 DIM F(N),F1(N),J(N),K(N),I$(N),FR(N),K8(N),FC$(N),EL(N),AL%(N) 270 'data box 280 PRINT FNC$(2,1)J1$:PRINT G$FNC$(3,6)"f"; 290 FOR J=7 TO 74:PRINT"a";:NEXT J:PRINT"c":PRINT FNC$(4+N,6)"e"; 300 FOR J=7 TO 74:PRINT"a";:NEXT J:PRINT"d" 310 PRINT FNC$(3,12)"s"FNC$(3,15)"s"FNC$(3,23)"s"FNC$(3,44)"s"; 320 PRINT FNC$(3,52)"s"FNC$(3,61)"s"FNC$(3,69)"s" 330 PRINT FNC$(4+N,12)"u"FNC$(4+N,15)"u"FNC$(4+N,23)"u"FNC$(4+N,44)"u"; 340 PRINT FNC$(4+N,52)"u"FNC$(4+N,61)"u"FNC$(4+N,69)"u" 350 FOR I=1 TO N 360 PRINT FNC$(3+I,6)"`"FNC$(3+I,12)"`"FNC$(3+I,15)"`"FNC$(3+I,23)"`"; 370 PRINT FNC$(3+I,44)"`"FNC$(3+I,52)"`"FNC$(3+I,61)"`"FNC$(3+I,69)"`"; 380 PRINT FNC$(3+I,75)"`":NEXT I 390 PRINT NG$FNC$(2,7)"Ident Fac Freq"SPC(11)"Name"SPC(11)"Lat"SPC(5)"Long"; 400 PRINT SPC(5)"Var Elev" 410 FOR I=1 TO N:REC=(PI(I)\5)+1:SS=PI(I) MOD 5:GET#1,REC:RO=I+3:GOSUB 430 420 NEXT I:ERASE ID$,PI:GOTO 640 430 'decode & display 440 FIELD #1,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS FR$,20 AS NM$,2 AS D1$, 4 AS M1$,2 AS D$,4 AS M$,4 AS V$,1 AS V1$,2 AS EL$ 450 F5=CVS(FR$):D6=CVI(D1$):M6=CVS(M1$) 460 D5=CVI(D$):M5=CVS(M$):V5=CVS(V$):E5=CVI(EL$):IF ID$=ID$(I) THEN 500 470 PRINT BL$FNC$(N+6,1)"Aborted. Checkpoint "ID$(I)" missing or moved" 480 PRINT"Delete this route, re-enter checkpoint if missing, re-enter route." 490 PRINT:PRINT"Press any key to continue...";:X$=INPUT$(1):GOTO 2450 500 I$(I)=ID$:FC$(I)=FAC$:FR(I)=F5:P$(I)=NM$:M1=M6/60:P2(I)=D6+M1:M=M5/60 510 P1(I)=D5+M:V(I)=V5:V$(I)=V1$:EL(I)=E5:IF V$(I)="E" THEN V(I)=-V(I) 520 PRINT FNC$(RO,1)I;FNC$(RO,7)ID$FNC$(RO,13)FAC$;FNC$(RO,16); 530 IF F5=0 THEN PRINT SPC(7);:GOTO 580 540 IF F5>136 THEN PRINT USING"####";F5;:GOTO 580 550 IF F5*10\1=F5*10/1 THEN PRINT USING"####.#";F5;:GOTO 580 560 IF F5*100\1=F5*100/1 THEN PRINT USING"####.##";F5;:GOTO 580 570 PRINT USING"###.###";F5; 580 PRINT FNC$(RO,24)NM$FNC$(RO,45);USING"##";D6; 590 PRINT FNC$(RO,48);USING"##.#";M6; 600 PRINT FNC$(RO,53);USING"###";D5; 610 PRINT FNC$(RO,57);USING"##.#";ABS(M5); 620 PRINT FNC$(RO,62);USING"###.#";V5; 630 PRINT FNC$(RO,68)V1$FNC$(RO,70)USING"#####";E5:RETURN 640 PRINT FNC$(N+6,1)J1$"Route of flight correct? (Y or N) "; 650 X$=INPUT$(1):PRINT X$:IF X$=CHR$(13) THEN X$="Y" 660 GOSUB 2830:IF X$<>"N" AND X$<>"Y" THEN PRINT BL$:GOTO 640 670 IF X$="N" THEN KILL"B:FLIGHT.SEQ":RUN"MENU" 680 R1=0:CLOSE 690 PRINT FNC$(N+6,1)J1$"Flight Service Station you'll close with? "J$; 700 PRINT STRING$(17,95)K$;:LINE INPUT X$:IF X$<>"" THEN GOSUB 2830:FS$=X$ 710 FOR I=1 TO N 720 PRINT FNC$(N+6,1)J1$; 730 IF I=1 OR I=N THEN PRINT"Enter SURFACE wind at ";:GOTO 750 740 PRINT"Enter winds ALOFT at "; 750 PRINT I$(I)" "P$(I)" (deg,kts) ";:INPUT W(I),S(I):IF S(I)=0 THEN 830 760 IF W(I)>360 THEN PRINT BL$:PRINT"360 degrees maximum":GOTO 730 770 IF S(I)<50 THEN 810 ELSE PRINT BL$:PRINT"Wind > 50 knots? (Y or N) "; 780 X$=INPUT$(1):IF X$=CHR$(13) THEN X$="Y":GOSUB 2830 790 IF X$<>"Y" AND X$<>"N" THEN PRINT BL$;:GOTO 770 800 IF X$="N" THEN 720 810 IF W(I)<=180 THEN W(I)=W(I)+180:GOTO 830 820 W(I)=W(I)-180 830 NEXT I 840 PRINT FNC$(N+6,1)J1$"Enter usable fuel on board <"NB"> "J$; 850 PRINT STRING$(3,95)" gal"K$; 860 LINE INPUT X$:UF=VAL(X$):IF X$="" THEN UF=NB 870 IF UF=0 THEN PRINT BL$;:GOTO 840 880 NB=UF:K8(0)=UF-RU:F=K8(0) 890 PRINT FNC$(N+6,1)J1$;:INPUT"Enter ZULU departure time (hhmm)";HR 900 IF HR>2400 THEN PRINT BL$:PRINT"2400 hours maximum":GOTO 890 910 L0=INT(HR/100):L1=(HR/100-L0)*100/60 920 IF L1>1 THEN PRINT BL$:PRINT"60 minutes/hour":GOTO 890 930 CD=0:CK=0:CT=0:MT=0:OC=0:PRINT FNC$(N+6,1)J1$"Calculating..." 940 FOR I=1 TO N-1:PRINT E$"x4"FNC$(I+4,2); 950 'distance 960 A=P1(I)-P1(I+1):B1=P2(I)-P2(I+1):P#=COS(P2(I)/U)*COS(P2(I+1)/U) 970 Q=P#*COS(ABS(A)/U)+COS(ABS(B1)/U)-P#:IF Q<=0 THEN PRINT BL$:GOTO 2470 980 Q2=ATN(SQR(1-Q*Q)/Q):Q=Q2*U*60 990 C(I)=FNS6(Q):IF C(I)>900 AND ABS(A)>30 THEN PRINT BL$:GOTO 2490 1000 IF C(I)=0 THEN T(I)=0:Y(I)=0:E(I)=0:G(I)=0:R=0:GOTO 1650 1010 'true course 1020 S=FNS8((P2(I)+P2(I+1))/2):IF S>=1 THEN S=90-S ELSE S=FNS7(S) 1030 IF A>0 AND B1=0 THEN T=90:GOTO 1080 1040 IF A<0 AND B1=0 THEN T=270:GOTO 1080 1050 IF A>0 AND B1<0 THEN T=S:GOTO 1080 1060 IF A>=0 AND B1>0 THEN T=180-S:GOTO 1080 1070 IF A<0 AND B1>0 THEN T=180+S ELSE T=360-S 1080 T(I)=FNS6(T) 1090 'magnetic course 1100 V1=(V(I)+V(I+1))/2:V2=FNS6(V1):Y(I)=T(I)+V2:IF Y(I)<0 THEN Y(I)=360+Y(I) 1110 IF Y(I)>360 THEN Y(I)=Y(I)-360 1120 IF I>1 THEN 1380 1130 PRINT E$"y4"FNC$(N+6,1)J1$"Initial magnetic course is"Y(I)"degrees." 1140 PRINT "Enter cruise altitude "; 1150 IF Y(I)<180 THEN PRINT"(Odd thousands) "; ELSE PRINT"(Even thousands) "; 1160 PRINT "<"NA"> "J$STRING$(5,95)K$; 1170 LINE INPUT X$:CA=VAL(X$):IF X$="" THEN CA=NA 1180 FOR J=1 TO N:IF EL(J)+1000<=CA THEN 1220 1190 PRINT BL$FNC$(N+6,1)J1$"Low altitude...less than 1000 ft terrain"; 1200 PRINT " clearance at "P$(J):PRINT TAB(55)"Elev:"EL(J) 1210 PRINT "Press any key to continue...";:X$=INPUT$(1):GOTO 1130 1220 NEXT J:NA=CA:PRINT FNC$(N+6,1)J1$; 1230 PRINT"Enter cruise TAS <"NS"> "J$STRING$(3,95)" kts"K$; 1240 LINE INPUT X$:TA=VAL(X$):IF X$="" THEN TA=NS 1250 IF TA>30 AND TA<250 THEN 1300 1260 PRINT BL$:PRINT"Is"TA"knots the correct TAS? (Y or N) "; 1270 X$=INPUT$(1):PRINT X$:IF X$=CHR$(13) THEN X$="Y" 1280 GOSUB 2830 1290 IF X$<>"Y" AND X$<>"N" THEN PRINT BL$:GOTO 1260 ELSE IF X$="N" THEN 1230 1300 NS=TA:PRINT FNC$(N+6,1)J1$"Enter cruise fuel consumption <"NF"> "J$; 1310 PRINT STRING$(4,95)" gal"K$;:LINE INPUT X$:F3=VAL(X$):IF X$="" THEN F3=NF 1320 IF F3>3 AND F3<50 THEN 1370 1330 PRINT BL$:PRINT"Is"F3"gal/hr the correct fuel rate? (Y or N) "; 1340 X$=INPUT$(1):PRINT X$:IF X$=CHR$(13) THEN X$="Y" 1350 GOSUB 2830 1360 IF X$<>"Y" AND X$<>"N" THEN PRINT BL$:GOTO 1330 ELSE IF X$="N" THEN 1300 1370 NF=F3:PRINT FNC$(N+6,1)J1$"Calculating..." 1380 'cruise grndspd 1390 G0=I:A4=TA:GOSUB 2580 1400 'climb?..climb grndspd 1410 IF I=1 THEN AT=CA-EL(1) 1420 AL%(I)=CA-AT:IF AT<=0 THEN 1530 1430 G0=0:A4=CS:GOSUB 2580:TT=AT/RC:IF TT360 THEN 1580 1570 IF Q(I)>T(I) AND Q(I)T(I)-180 THEN 1610 1590 E(I)=Y(I)-B:IF B<=Y(I) THEN 1620 1600 E(I)=360-E(I):GOTO 1620 1610 E(I)=Y(I)+B:IF E(I)>360 THEN E(I)=E(I)-360 1620 E(I)=FNS6(E(I)) 1630 'time enroute 1640 R=C(I)/G(I) 1650 F(I)=INT(R):F1(I)=FNS6((R-F(I))*60) 1660 'ETA 1670 R1=R1+R:O3=INT(R1):O4=(R1-O3):L3=INT(L1+O4):L2=INT((L1+O4-L3)*600+.5)/10 1680 J(I)=L2:IF C(I)=0 THEN J(I)=0 1690 OC=OC+C(I) 1700 NEXT I:PRINT E$"y4" 1710 'short flight...max alt? 1720 IF N=2 THEN I=1:G0=N:A4=TA:GOSUB 2580:GN=G(N) ELSE GN=G(N-1) 1730 AL=CA-EL(N):DS=GN*3.333:DC=N-1:NR=DS/((GN/60)*6076.12):IF OC>D9*3 THEN 1800 1740 OC=OC*6076.12:PR=(RC/60)/((G(0)/60)*6076.12) 1750 X=((OC*NR)+EL(N)-EL(1))/(PR+NR):Y=(PR*X)+EL(1):IF CA<=Y THEN 1800 1760 PRINT BL$FNC$(N+6,1)"Unable to calculate flight profile to"CA"feet." 1770 PRINT:PRINT"You can climb to"INT(Y)"feet before begining descent." 1780 PRINT"Select new cruise altitude and appropriate TAS & fuel consumption." 1790 PRINT:PRINT"Press any key to continue...";:X$=INPUT$(1):GOTO 930 1800 'descent profile 1810 DP=AL/1000*5:NC=0 1820 NC=NC+C(DC):IF DP2 OR L2<>0 THEN IF L0>23 THEN L0=L0-24:GOTO 1880 1890 O4=INT(O4*60+.5) 1900 'print 1910 PRINT ER$;:O=0:GOSUB 3610 1920 PRINT TAB(22)"IDENT"TAB(36)"DIST"TAB(44)"TC"TAB(51)"MH"TAB(57)"GS"; 1930 PRINT TAB(63)"ETE"TAB(70)"ETA"TAB(75)"FUEL" 1940 PRINT TAB(5)"CHECKPOINT"TAB(29)"FREQ"TAB(36)"nm"TAB(43)"deg"TAB(50)"deg"; 1950 PRINT TAB(56)"kts"TAB(62)"h:mm"TAB(69)":mm"TAB(75)"gal" 1960 PRINT STRING$(78,45) 1970 FOR I=1 TO N:PRINT P$(I)TAB(22)I$(I); 1980 IF FR(I)=0 THEN 2030 1990 IF FR(I)>136 THEN PRINT USING"####";FR(I);:GOTO 2030 2000 IF FR(I)*10\1=FR(I)*10/1 THEN PRINT USING"####.#";FR(I);:GOTO 2030 2010 IF FR(I)*100\1=FR(I)*100/1 THEN PRINT USING"####.##";FR(I);:GOTO 2030 2020 PRINT USING"###.###";FR(I); 2030 IF I=N THEN PRINT J1$:GOTO 2150 2040 PRINT TAB(34);USING "####.#";C(I); 2050 PRINT TAB(42);USING "###.#";T(I); 2060 PRINT TAB(49);USING "###.#";E(I); 2070 PRINT TAB(56);USING "###";G(I); 2080 PRINT TAB(61);USING "##";F(I); 2090 PRINT ":";USING "##";F1(I); 2100 PRINT TAB(69)":";USING "##";J(I); 2110 PRINT TAB(74);USING "##.#";K(I); 2120 IF K8(I)<=F3*.5 THEN PRINT "<<":GOTO 2140 2130 IF K8(I)0 THEN 2330 2320 PRINT BL$PG$" INSUFFICIENT FUEL TO COMPLETE TRIP! "QG$:GOTO 2350 2330 IF K8(I-1)>=F3*.5 THEN 2350 2340 PRINT BL$PG$" FUEL RESERVES LESS THAN VFR MINIMUMS! "QG$ 2350 PRINT FNC$(N+12,1)J1$"Hard copy printout? (Y or N) ";:X$=INPUT$(1) 2360 PRINT L$;:IF X$=CHR$(13) THEN X$="Y" 2370 GOSUB 2830:IF X$="Y" THEN HC=1 2380 IF X$="N" THEN 2410 2390 IF X$<>"Y" THEN PRINT BL$;:GOTO 2350 2400 O9=O:GOSUB 2870 2410 PRINT FNC$(N+12,1)J1$"Alternate winds aloft, cruise altitude? (Y or N)"; 2420 PRINT" ";:X$=INPUT$(1):PRINT L$:IF X$=CHR$(13) THEN X$="Y" 2430 GOSUB 2830:IF X$="Y" THEN O9=0:R1=0:PRINT FNC$(N+5,1)J1$:GOTO 710 2440 IF X$<>"N" THEN PRINT BL$;:GOTO 2410 2450 CLOSE:IF HC=1 THEN RUN"RNAVREF" ELSE KILL"B:FLIGHT.SEQ":RUN"MENU" 2460 'error trap 2470 PRINT FNC$(N+6,1)E$"y4"BL$"Distance "P$(I)" to "P$(I+1)" excessive."; 2480 PRINT"Press any key to continue...":X$=INPUT$(1):GOTO 200 2490 PRINT FNC$(N+6,1)E$"y4"BL$"Distance "P$(I)" to "P$(I+1)" excessive." 2500 PRINT "Possible course errors due to rhumb line." 2510 PRINT "Press any key to continue...":X$=INPUT$(1):GOTO 2450 2520 IF NOT(ERR=53 AND ERL=170) THEN 2550 2530 PRINT"No data on file for "F$:PRINT"Re-enter N-number or `I' to input"; 2540 PRINT" data":RESUME 130 2550 IF ERR=53 AND ERL=210 THEN PRINT BL$"No flight on file.":RUN"MENU" 2560 IF ERR=62 AND ERL=220 THEN N=J-1:J=11:RESUME 240 2570 ON ERROR GOTO 0 2580 'avg wind & grndspd 2590 IF S(I)=0 AND S(I+1)=0 THEN R2=0:Q(I)=T(I):GOTO 2750 2600 IF W(I)W(I+1) THEN W4=W(I) ELSE W4=W(I+1) 2620 S3=S(I+1):S4=S(I) 2630 IF W3=W(I) THEN S3=S(I):S4=S(I+1) 2640 IF S3<>0 AND S4=0 THEN R2=S3/2:Q(I)=W3:GOTO 2750 2650 IF S3=0 AND S4<>0 THEN R2=S4/2:Q(I)=W4:GOTO 2750 2660 X=W4-W3:S1=S3*S3:S2=S4*S4 2670 IF X=0 THEN R2=(S3+S4)/2:Q(I)=W3:GOTO 2750 2680 IF X=180 THEN R2=0:Q(I)=T(I):GOTO 2750 2690 IF X>180 THEN X=360-X 2700 R=SQR(S1+S2-2*S3*S4*COS(X/U)):Q=(S2+R*R-S1)/(2*S4*R) 2710 R2=SQR((S2+(R/2)*(R/2))-2*S4*(R/2)*Q):X1=(S2+R2*R2-(R/2)*(R/2))/(2*S4*R2) 2720 X1=ATN(SQR(1-X1*X1)/X1)*U:IF X>180 THEN Q(I)=W4+X1:GOTO 2740 2730 Q(I)=W4-X1:GOTO 2750 2740 IF Q(I)>360 THEN Q(I)=Q(I)-360 2750 W=ABS(T(I)-Q(I)):IF W<=180 THEN 2770 2760 IF Q(I)=1 THEN B=90 ELSE B=FNS7(B) 2780 G=180-(W+B):M=FNS5(W):IF M=0 THEN R=A4+R2:GOTO 2800 2790 T=FNS5(G):IF T=0 THEN R=A4-R2 ELSE R=(A4*T)/M 2800 G(G0)=R:RETURN 2810 'fuel used 2820 KU=FNS6(R*FU):K8(I)=K8(I-1)-KU:RETURN 2830 'map lc 2840 FOR L=1 TO LEN(X$):U$=MID$(X$,L,1) 2850 IF ASC(U$)>96 AND ASC(U$)<123 THEN MID$(X$,L,1)=CHR$(ASC(U$)-32) 2860 NEXT L:RETURN 2870 O=0:GOSUB 3610:LPRINT F$" "AT$TAB(31)" NAVPROGseven"TAB(59)TM$" "D5$ 2880 LPRINT STRING$(78,61) 2890 LPRINT TAB(22)"IDENT"TAB(36)"DIST"TAB(42)"MC/TC"TAB(50)"MH"TAB(56)"GS"; 2900 LPRINT TAB(62)"ETE"TAB(69)"ETA"TAB(75)"FUEL" 2910 LPRINT TAB(5)"CHECKPOINT"TAB(22)"ID/fac"TAB(29)"FREQ"TAB(34)"rem/leg"; 2920 LPRINT TAB(43)"deg"TAB(50)"deg"TAB(56)"kts"TAB(62)"h:mm"TAB(69)":mm"; 2930 LPRINT TAB(75)"gal":LPRINT STRING$(78,45):FOR I=1 TO N 2940 LPRINT P$(I)TAB(22)I$(I); 2950 IF FR(I)=0 THEN 3000 2960 IF FR(I)>136 THEN LPRINT USING"####";FR(I);:GOTO 3000 2970 IF FR(I)*10\1=FR(I)*10/1 THEN LPRINT USING"####.#";FR(I);:GOTO 3000 2980 IF FR(I)*100\1=FR(I)*100/1 THEN LPRINT USING"####.##";FR(I);:GOTO 3000 2990 LPRINT USING"###.###";FR(I); 3000 IF I=N THEN 3170 3010 LPRINT TAB(34)USING "####.#";O9; 3020 LPRINT TAB(42)USING"###.#";Y(I); 3030 LPRINT TAB(49)USING "###.#";E(I); 3040 LPRINT TAB(56)USING "###";G(I); 3050 LPRINT TAB(73)USING "###.#";K8(I-1); 3060 IF K8(I)<=F3*.5 THEN LPRINT "<<":GOTO 3080 3070 IF K8(I)AL%(I-1) THEN LPRINT TAB(5)"Alt:"AL%(I); 3100 LPRINT TAB(22)FC$(I)TAB(34)USING"####.#";C(I); 3110 LPRINT TAB(42)USING"###.#";T(I); 3120 LPRINT TAB(61)USING "##";F(I); 3130 LPRINT ":"USING "##";F1(I); 3140 LPRINT TAB(69)":"USING "##";J(I); 3150 LPRINT TAB(74)USING "##.#";K(I) 3160 O=O+C(I):O1=O1+1:O9=O9-C(I):IF I<>N THEN 3190 3170 LPRINT TAB(34)"CLOSE FLIGHT PLAN WITH "FS$" FSS" 3180 LPRINT TAB(5)"Elev:"EL(N)TAB(21)FC$(N):LPRINT STRING$(78,61):GOTO 3200 3190 LPRINT 3200 NEXT I:I=N 3210 LPRINT:LPRINT"Total dist ="O"nm"TAB(30)"Time Off ="TAB(55)"Time On =" 3220 LPRINT:LPRINT "Total time ="O3"hrs:"O4"mins"TAB(30)"Depart at"HR"GMT"; 3230 LPRINT TAB(55)"Final ETA ="INT((L0*100)+L2)"GMT":LPRINT 3240 F=UF-K8(N-1):F=FNS6(F) 3250 LPRINT "Avg. fuel usage ="F"gal"TAB(30)"Fuel rate ="F3"gal/hr"; 3260 LPRINT TAB(55)"Fuel on board ="UF"gal" 3270 LPRINT TAB(40)"("FNS6(CF)"climb)" 3280 X8=INT(ABS(K8(I-1)/F3)):X9=INT((ABS(K8(I-1)/F3)-X8)*60) 3290 IF K8(I-1)<=0 THEN K8(I-1)=0:X8=0:X9=0 3300 LPRINT "Reserve ="FNS6(K8(I-1))"gal ="X8":"X9;TAB(30)"Cruise Alt ="CA; 3310 LPRINT "ft"TAB(55)"TAS ="TA"("USING"###";CS; 3320 LPRINT " climb)"TAB(55)"CAS ="; 3330 LPRINT INT(TA-(1.75*(CA/1000)))"("INT(CS-(1.75*(CA/2000)))"climb)" 3340 LPRINT "Fuel to climb ="CK"gal"TAB(30)"Dist to climb ="FNS6(CD)"nm"; 3350 LPRINT TAB(55)"Time to climb ="INT(CT*60)"min":LPRINT 3360 LPRINT "Cost "CHR$(64)USING"$$##.##";PH; 3370 LPRINT "/hr = "USING"$$##.##";PH*R1 3380 IF MT<>2 THEN 3400 3390 LPRINT "WARNING! STANDARD CLIMB WILL NOT CLEAR TERRAIN DURING CLIMBOUT" 3400 IF MT<>1 THEN 3420 3410 LPRINT "CAUTION: MARGINAL TERRAIN CLEARANCE DURING CLIMBOUT" 3420 IF K8(I-1)<>0 THEN 3440 3430 LPRINT BL$PG$" INSUFFICIENT FUEL TO COMPLETE TRIP! "QG$:GOTO 3460 3440 IF K8(I-1)>=F3*.5 THEN 3460 3450 LPRINT BL$PG$" FUEL RESERVES LESS THAN VFR MINIMUMS! "QG$ 3460 IF DW<>2 THEN 3480 3470 LPRINT "WARNING! NOMINAL DESCENT WILL NOT CLEAR TERRAIN!":GOTO 3520 3480 LPRINT:LPRINT"Nominal descent: "INT(DS)"ft/min, "; 3490 LPRINT INT(DP)"nm from "I$(DC+1)" "P$(DC+1) 3500 IF DW<>1 THEN 3520 3510 LPRINT "WARNING! MARGINAL TERRAIN CLEARANCE DURING DESCENT/APPROACH." 3520 LPRINT "Check charts for minimum terrain and obstruction "; 3530 LPRINT "clearance altitudes." 3540 LPRINT:LPRINT " --- WINDS ---" 3550 FOR J=1 TO N:LPRINT I$(J), 3560 IF W(J)>180 THEN W(J)=W(J)-180 ELSE W(J)=W(J)+180 3570 IF S(J)>0 THEN LPRINT W(J)"degrees at"S(J)"knots." ELSE LPRINT 3580 NEXT J 3590 LPRINT CHR$(12):RETURN 3600 ' date and time subroutines 3610 D5$="" ' :A=-2508:CALL A:FOR A=-2605 TO -2597:D5$=D5$+CHR$(PEEK(A)):NEXT A 3620 TM$="" ' :FOR A=-2596 TO -2589:TM$=TM$+CHR$(PEEK(A)):NEXT A 3630 RETURN