0 REM FLIGHT.BA -> 1-5-90 Flight planning software 1 REM by Thomas A. Steuver, Indianapolis, IN 2 CLS:MAXFILES=2:CLEAR3000:DEFSNGA-Z:SCREEN0,0:F1$="#####.#" 3 PRINT@48,"-> 100 FLIGHT PLANNER <-":PRINT@130,"by Thomas A. Steuver":PRINT@280,"Press ENTER to begin...";:LINEINPUTQ$ 10 CLS:PRINT@0,"FLIGHT PLANNER - MAIN MENU":PRINT@80,"1 --> Calculate Route of Flight":PRINT@120,"2 --> Edit Aircraft Information":PRINT@160,"3 --> Edit Airport Information":PRINT@200,"4 --> Exit Program" 15 PRINT@280,"Enter selection: ";:LINEINPUTQ$:IFQ$<"1"ORQ$>"4"THEN15 20 ONVAL(Q$)GOTO100,200,300,25 25 CLS:MENU 100 CLS:PRINT"Aircraft N#";:LINEINPUTN$ 101 ONERRORGOTO900:OPEN"RAM:PLANE.DO"FORINPUTAS1 102 IFER=1THENER=0:GOTO120 105 IFEOF(1)THEN110ELSEINPUT#1,AS,FB,N1$:IFN1$=N$THEN115ELSE105 110 CLOSE1:GOSUB500:CLS:PRINT"Aircraft N#";N$:GOTO120 115 CLOSE1 120 PRINT@80,"Departure Point: ";:LINEINPUTDP$:PRINT@120,"Destination Point: ";:LINEINPUTDS$ 125 PRINT@200,"Wind Direction: ";:LINEINPUTWD$:PRINT@240,"Wind Speed: ";:LINEINPUTWS$ 130 PN$=DP$:GOSUB510:L1=LT:G1=LG:V1=VR:PN$=DS$:GOSUB510:L2=LT:G2=LG:V2=VR 131 ONERRORGOTO2000 135 CLS:PRINT"From ";DP$;" to ";DS$ 136 BX=L1:GOSUB540:L1=BX:BX=L2:GOSUB540:L2=BX 137 BX=G1:GOSUB540:G1=BX:BX=G2:GOSUB540:G2=BX 140 GOSUB1000:GOSUB1020:GOSUB3000 145 PRINT@40,CHR$(27);"p";" TC MC MH GS DIST TIME FUEL ";CHR$(27);"q" 150 PRINT@80,INT(TC);TAB(5);INT(MC);TAB(10);INT(MH);TAB(15);INT(GS);TAB(20);D;TAB(27);STR$(TT);":";RIGHT$(STR$(TM),LEN(STR$(TM))-1) ;TAB(29)USINGF1$;FL 155 PRINT@160,CHR$(27);"p";" TAS WDr WSp";CHR$(27);"q" 160 PRINT@200,AS;TAB(7);WD$;TAB(13);WS$ 165 PRINT@280,"Print this data? (Y/N): ";:LINEINPUTQ$:IFQ$="Y"ORQ$="y"THEN170ELSE10 170 CLS:PRINT"Ready printer and press ENTER";:LINEINPUTQ$:CLS:PRINT"Printing..." 175 LPRINT"From ";DP$;" to ";DS$;" ";DATE$;" ";TIME$ 176 LPRINT"" 177 LPRINT" TC MC MH GS DIST TIME FUEL" 178 LPRINT"---------------------------------------" 179 LPRINTINT(TC);TAB(5);INT(MC);TAB(10);INT(MH);TAB(15);INT(GS);TAB(20);D;TAB(27);STR$(TT);":";RIGHT$(STR$(TM),LEN(STR$(TM))-1);TAB (29)USINGF1$;FL 180 LPRINT"" 181 LPRINT" TAS WDr WSp" 182 LPRINT"----------------" 183 LPRINTAS;TAB(7);WD$;TAB(13);WS$ 185 GOTO10 200 ONERRORGOTO2000 201 CLS:PRINT@240,"Enter ? for list.":PRINT@280,"Press ENTER to exit.";:PRINT@0,"Aircraft N#";:LINEINPUTN$:IFN$="?"THENGOSUB2010:GOTO201ELSEIFN$=""THEN10 205 ONERRORGOTO910:OPEN"RAM:PLANE.DO"FORINPUTAS1 210 IFER=1THENER=0:GOTO200 215 IFEOF(1)THEN220ELSEINPUT#1,AS,FB,N1$:IFN1$=N$THEN225ELSE215 220 CLOSE1:GOSUB500:GOTO200 225 CLOSE1:CLS:PRINT"N";N$:PRINT@65,"Change to:":PRINT@80,"Airspeed: ";AS:PRINT@120,"Fuel Burn/Hour: ";FB 230 PRINT@280,"Enter DEL to delete.";:PRINT@110,;:LINEINPUTAS$:IFAS$=""THEN235ELSEIFAS$="DEL"THEN265ELSEAS=VAL(AS$) 235 PRINT@280," ";:PRINT@150,;:LINEINPUTFB$:IFFB$=""THEN240ELSEFB=VAL(FB$) 240 IFAS$=""ANDFB$=""THEN200 245 CLS:PRINT"Saving changes...":OPEN"RAM:PLANE.DO"FORINPUTAS1:OPEN"RAM:TEMP.DO"FOROUTPUTAS2 250 IFEOF(1)THEN260ELSEINPUT#1,Q1,Q2,N1$:IFN1$=N$THENPRINT#2,AS,FB,N$ELSEPRINT#2,Q1,Q2,N1$ 255 GOTO250 260 CLOSE1:CLOSE2:KILL"PLANE.DO":NAME"TEMP.DO"AS"PLANE.DO":GOTO200 265 CLS:PRINT"N";N$;" -> DELETE":PRINT@280,"Are you sure? (Y/N): ";:LINEINPUTQ$:IFQ$="Y"ORQ$="y"THEN270ELSE200 270 CLS:PRINT"Deleting N";N$;"...":OPEN"RAM:PLANE.DO"FORINPUTAS1:OPEN"RAM:TEMP.DO"FOROUTPUTAS2 275 IFEOF(1)THEN260ELSEINPUT#1,Q1,Q2,N1$:IFN1$=N$THEN275ELSEPRINT#2,Q1,Q2,N1$ 280 GOTO275 300 ONERRORGOTO2000 301 CLS:PRINT@240,"Enter ? for list.":PRINT@280,"Press ENTER to exit.";:PRINT@0,"Point: ";:LINEINPUTPN$:IFPN$="?"THENGOSUB2060:GOTO300ELSEIFPN$=""THEN10 305 ONERRORGOTO905:OPEN"RAM:POINT.DO"FORINPUTAS1 310 IFER=1THENER=0:GOTO300 315 IFEOF(1)THEN320ELSEINPUT#1,LT,LG,VR,PT$:IFPT$=PN$THEN325ELSE315 320 CLOSE1:GOSUB530:GOTO300 325 CLOSE1:CLS:PRINT"Point ";PN$:PRINT@65,"Change to:":PRINT@80,"Latitude: ";LT:PRINT@120,"Longitude: ";LG:PRINT@160,"Variation: ";VR 330 PRINT@280,"Enter DEL to delete.";:PRINT@110,;:LINEINPUTLT$:IFLT$=""THEN335ELSEIFLT$="DEL"THEN365ELSELT=VAL(LT$) 335 PRINT@280," ";:PRINT@150,;:LINEINPUTLG$:IFLG$=""THEN336ELSELG=VAL(LG$) 336 PRINT@190,;:LINEINPUTVR$:IFVR$=""THEN340ELSEVR=VAL(VR$) 340 IFLT$=""ANDLG$=""ANDVR$=""THEN300 345 CLS:PRINT"Saving changes...":OPEN"RAM:POINT.DO"FORINPUTAS1:OPEN"RAM:TEMP.DO"FOROUTPUTAS2 350 IFEOF(1)THEN360ELSEINPUT#1,Q1,Q2,Q3,PT$:IFPT$=PN$THENPRINT#2,LT,LG,VR,PN$ELSEPRINT#2,Q1,Q2,Q3,PT$ 355 GOTO350 360 CLOSE1:CLOSE2:KILL"POINT.DO":NAME"TEMP.DO"AS"POINT.DO":GOTO300 365 CLS:PRINT"Point ";PN$;" -> DELETE":PRINT@280,"Are you sure? (Y/N): ";:LINEINPUTQ$:IFQ$="Y"ORQ$="y"THEN370ELSE300 370 CLS:PRINT"Deleting point ";PN$;"...":OPEN"RAM:POINT.DO"FORINPUTAS1:OPEN"RAM:TEMP.DO"FOROUTPUTAS2 375 IFEOF(1)THEN360ELSEINPUT#1,Q1,Q2,Q3,PT$:IFPT$=PN$THEN375ELSEPRINT#2,Q1,Q2,Q3,PT$ 380 GOTO375 500 PRINT@80,"Airspeed: ";:LINEINPUTAS$:AS=VAL(AS$):PRINT@120,"Fuel Burn/Hour: ";:LINEINPUTFB$:FB=VAL(FB$) 505 OPEN"RAM:PLANE.DO"FORAPPENDAS1:PRINT#1,AS,FB,N$:CLOSE1:RETURN 510 ONERRORGOTO905:OPEN"RAM:POINT.DO"FORINPUTAS1 511 IFER=1THENRETURN 515 IFEOF(1)THEN520ELSEINPUT#1,LT,LG,VR,PT$:IFPT$=PN$THEN525ELSE515 520 CLOSE1:GOSUB530:RETURN 525 CLOSE1:RETURN 530 CLS:PRINT"Point ";PN$:PRINT@80,"Latitude: ";:LINEINPUTLT$:LT=VAL(LT$):PRINT@120,"Longitude: ";:LINEINPUTLG$:LG=VAL(LG$) 535 PRINT@160,"Variation: ";:LINEINPUTVR$:VR=VAL(VR$):OPEN"RAM:POINT.DO"FORAPPENDAS1:PRINT#1,LT,LG,VR,PN$:CLOSE1:RETURN 540 BX=FIX(BX)+((BX-FIX(BX))*100/60):RETURN 900 CLOSE:GOSUB500:CLS:PRINT"Aircraft N#";N$:ER=1:RESUME 905 CLOSE:GOSUB530:ER=1:RESUME 910 CLOSE:GOSUB500:ER=1:RESUME 915 CLOSE:PRINT@40,"No planes listed.":ER=1:RESUME 920 CLOSE:PRINT@40,"No points listed.":ER=1:RESUME 1000 T=TAN((45+(L1*.5))*.01745329) 1001 Y=TAN((45+(L2*.5))*.01745329) 1002 IFL1>L2THENK=180 1003 IFL1360THENTC=TC-360 1007 IFTC<0THENTC=TC+360 1008 IFTC>360THENTC=TC-360 1009 U=COS(TC*.01745329) 1010 D=INT(60*(L2-L1)/U) 1013 MC=TC+VR:RETURN 1020 WD=VAL(WD$):WS=VAL(WS$):DR=3.1415926/180:WR=DR*WD:TR=DR*TC 1025 GS=WS*COS(WR-TR-3.1415926)+SQR((WS*COS(WR-TR-3.1415926))^2-(WS)^2+(AS)^2) 1030 XX=WS*SIN(WR-TR)/AS:TH=TR+ATN(XX/SQR(-XX*XX+1)):TH=(180/3.1415926)*TH 1035 IFTH>360THENTH=TH-360 1040 IFTH<0THENTH=TH+360 1045 MH=TH 1050 TI=D/GS:ZT=ZT+TI:TM=TI-INT(TI):TT=INT(TI):TM=INT(TM*60) 1055 FL=FB*TI 1900 RETURN 2000 PRINT"Error code ";ERR;" in line ";ERL:STOP 2010 CLS:PRINTCHR$(27);"p";" N# Airspeed Fuel Burn/Hour";CHR$(27);"q" 2015 ONERRORGOTO915:OPEN"RAM:PLANE.DO"FORINPUTAS1 2020 IFER=1THENER=0:GOTO2050 2025 IFEOF(1)THEN2030ELSEINPUT#1,AS,FB,N$:PRINTN$;TAB(10);AS;TAB(25);FB:GOTO2025 2030 CLOSE1 2050 PRINT"Press ENTER to return.";:LINEINPUTQ$:RETURN 2060 CLS:PRINTCHR$(27);"p";"POINT Latitude Longitude Variation";CHR$(27);"q" 2065 ONERRORGOTO920:OPEN"RAM:POINT.DO"FORINPUTAS1 2070 IFER=1THENER=0:GOTO2085 2075 IFEOF(1)THEN2080ELSEINPUT#1,LT,LG,VR,PT$:PRINTPT$;TAB(10);LT;TAB(21);LG;TAB(35);VR:GOTO2075 2080 CLOSE1 2085 PRINT"Press ENTER to return.";:LINEINPUTQ$:RETURN 3000 VL=TC:GOSUB3100:TC=VL 3005 VL=MC:GOSUB3100:MC=VL 3010 VL=MH:GOSUB3100:MH=VL 3015 VL=GS:GOSUB3100:GS=VL 3020 RETURN 3100 VL=INT(VL+.5):RETURN