home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / QFP4.ZIP / QFP4MAIN.BAS < prev    next >
Encoding:
BASIC Source File  |  1988-03-03  |  27.6 KB  |  354 lines

  1. 0  '       ********************************
  2. 1 '        *            QFP-4             *
  3. 2 '        *             BY               *
  4. 3 '        *       Michael M. Brogan      *
  5. 4 '        *       41801 Lakota Dr.       *
  6. 5 '        *       Parker CO 80134        *
  7. 6 '        *       Copyright 1987, 1988   *
  8. 7 '        *       All rights reserved    *
  9. 8 '        *     Share Ware see QFP4.BAS  *
  10. 9 '        *      Main menu  Ver 1.2      *
  11. 10 '       ********************************
  12. 11 GOTO 9000
  13. 70 DRV%=DRV%+1:IF DRV%>AR(0) THEN DRV%=1
  14. 72 ANO=33:AAH=14:ADL=AR(DRV%):OTHER=1:GOSUB 100:ANO=33:AAH=25:OTHER=1:GOSUB 100:DRIVE$=CHR$(AAL+65)+":":GOSUB 105:RETURN
  15. 75 XDRV%=DRV%:DRV%=1:GOSUB 72:DRV%=XDRV%:RETURN
  16. 80 N$=INKEY$:IF N$="" THEN 80
  17. 82 N=VAL(N$):IF LEFT$(N$,1)= "Q" OR LEFT$(N$,1) = "q" THEN 90 ELSE IF LEFT$(N$,1)= "M" OR LEFT$(N$,1) = "m" THEN 9200 ELSE RETURN
  18. 90 NOQT=0:GOSUB 100:COLOR 0,7:LOCATE 15,24:PRINT"  DO  YOU  WISH  TO  QUIT?  (Y/N)  ",:COLOR 15,0
  19. 92 X$=INKEY$:IF X$="" THEN 92 ELSE IF X$="Y" OR X$="y" THEN 9900 ELSE NOQT=1:RETURN
  20. 100 CALL AD!(ACK$,ARD,ANO,AAH,AAL,ABH,ABL,ACH,ACL,ADH,ADL):IF OTHER=1 THEN OTHER=0:RETURN
  21. 105 ARD=25:ANO=16:AAH=6:AAL=0:ABH=0:ACH=10:ACL=1:ADH=23:ADL=80:RETURN
  22. 200 LOCATE 23,32:PRINT "( PUSH RETURN )"
  23. 205 N$=INKEY$:IF N$="" THEN 205 ELSE IF N$="Q" OR N$="q" THEN GOSUB 90:GOSUB 100:GOTO 200 ELSE IF ASC(N$)=13 THEN RETURN ELSE GOTO 205
  24. 220 LOCATE LV,29:INPUT"PRESSURE ALTITUDE (PA): ",N$:RETURN
  25. 230 N26A$=" ":Y23=INSTR(N$,N26A$):IF LEN(N$)=0 THEN RETURN:N$=LEFT$(N$,Y23-1):RETURN
  26. 235 IF RIGHT$(N$,1)="F" OR RIGHT$(N$,1)="f" THEN X=Y:GOTO 240 ELSE RETURN
  27. 240 Y=(X-32)/1.8:N=Y:RETURN
  28. 250 TK=(IT+273.15)/(1+(.205*M*M))
  29. 255 VT=38.96*M*(TK^.5):VT=FNRT(VT):M=FNRO(M):RETURN
  30. 260 PA=N:LOCATE LV,29:INPUT"TRUE AIR TEMPERATURE (TAT/C): ",N$:Y=VAL(N$):GOSUB 235:RETURN
  31. 300 GOSUB 100:T1=0:T2=0:T3=0:LOCATE LV,26:PRINT"ENTER THE TIME AS INDICATED"
  32. 305 LOCATE LORO,29:INPUT "INPUT HOURS (HH): ",X$:T2=VAL(X$)
  33. 310 LOCATE LORO+1,29:INPUT "INPUT MINUTES (MM.M): ",X$: IF Z1=15 THEN RETURN
  34. 320 T1=T2+(VAL(X$)/60): GOSUB 350:IF T3 < 10 AND T3>=1 THEN T3$ = "0" + T3$
  35. 325 IF T3=0 THEN T3$="00":RETURN
  36. 330 IF T3<1 THEN T3$="00"+T3$
  37. 340 RETURN
  38. 350 T2=INT(T1):T3=(T1-T2)*60:T3=FNRT(T3):T3$=STR$(T3):T3$=RIGHT$(T3$,LEN(T3$)-1):RETURN
  39. 405 IF Y$="MT" THEN Y=X*SK*1000 ELSE IF Y$="KM" THEN Y=X*SK ELSE IF Y$="FT" THEN Y=X*SF ELSE IF Y$="N" THEN Y=X/NS ELSE Y=0
  40. 406 RETURN
  41. 408 IF Y$="S" THEN Y=X*NS ELSE IF Y$="KM" THEN Y=X*NK ELSE IF Y$="FT" THEN Y=X*NF ELSE IF Y$="MT" THEN Y=X*NK*1000 ELSE Y=0
  42. 409 RETURN
  43. 416 IF Y$="S" THEN Y=X/SK ELSE IF Y$="N" THEN Y=X/NK ELSE IF Y$="FT" THEN Y=X*KF ELSE IF Y$="MT" THEN Y=X*1000 ELSE Y=0
  44. 417 RETURN
  45. 424 IF Y$="S" THEN Y=X/SF ELSE IF Y$="N" THEN Y=X/NF ELSE IF Y$="KM" THEN Y=X/KF ELSE IF Y$="MT" THEN Y=X/KF*1000 ELSE Y=0
  46. 425 RETURN
  47. 432 IF Y$="P" THEN Y=X*AG ELSE IF Y$="KG" THEN Y=X*KA ELSE Y=0
  48. 433 RETURN
  49. 438 IF Y$="AV" THEN Y=X/AG ELSE IF Y$="KG" THEN Y=X*PK ELSE IF Y$="JP" THEN Y=X/JG ELSE Y=0
  50. 439 RETURN
  51. 446 IF Y$="P" THEN Y=X*JG ELSE IF Y$="KG" THEN Y=X*KJ ELSE Y=0
  52. 447 RETURN
  53. 452 IF Y$="P" THEN Y=X/PK ELSE IF Y$="JP" THEN Y=X/KJ ELSE IF Y$="AV" THEN Y=X/KA ELSE Y=0
  54. 453 RETURN
  55. 460 IF Y$="S" THEN Y=X/SK/1000 ELSE IF Y$="N" THEN Y=X/NK/1000 ELSE IF Y$="KM" THEN Y=X/1000 ELSE IF Y$="FT" THEN Y=X*KF/1000 ELSE Y=0
  56. 461 RETURN
  57. 540 LOCATE LV,27:PRINT"INPUT YOUR CHOICE TO FIND:";:RETURN
  58. 550 LOCATE 22,24:PRINT"IF AIRSPEED IS NOT IN KNOTS, ADD":LOCATE 23,24:PRINT"AN 'S' TO THE END OF THE NUMBER.";:RETURN
  59. 560 LOCATE 22,24:PRINT"IF THE TEMPERATURE IS NOT IN CENTIGRADE,":LOCATE 23,24:PRINT"ADD AN 'F' TO THE END OF THE NUMBER.":RETURN
  60. 580 LOCATE 21,29:PRINT"M - MAIN MENU":LOCATE 23,29:PRINT"Q - QUIT":RETURN
  61. 590 LD%=VAL(X$):LM=VAL(Y$):RETURN
  62. 595 GD%=VAL(X$):GM=VAL(Y$):RETURN
  63. 600 IF D=0 THEN D=1
  64. 605 X=B(0)/(D/60):Y=QA(0)/(D/60)
  65. 610 FOR J=1 TO 2:IF Y>0 THEN 630
  66. 615 IF X>0 THEN C(J)=180+(ABS(C(J))) ELSE IF X<0 THEN C(J)=180-(ABS(C(J)))
  67. 620 GOTO 650
  68. 630 IF X>0 THEN C(J)=360-(ABS(C(J)))
  69. 640 IF B(2)=B(1) AND QA(2)>QA(2) THEN C(J)=C(J)+180
  70. 650 C(J)=FN RT(ABS(C(J))):NEXT J:D=FN RT(D):RETURN
  71. 660 COLOR 7,0:LOCATE 24,70:PRINT"(";:COLOR 15,0::PRINT"D";:COLOR 7,0:PRINT"RIVE " DRIVE$ ")";:RETURN
  72. 670 INPUT"  DD MM.M : ",N$:GOTO 672
  73. 671 INPUT" DDD MM.M : ",N$
  74. 672 X$="":ADG=0:IF LEFT$(N$,1)="*" THEN GOTO 680 ELSE IF N$="" THEN RETURN
  75. 675 Y675=INSTR(N$," "):IF Y675=0 THEN X$=N$:Y$="":RETURN ELSE X$=LEFT$(N$,Y675-1):Y$=RIGHT$(N$,LEN(N$)-Y675):RETURN
  76. 680 IF LEN(N$)<4 OR LEN(N$)>5 THEN 685 ELSE NA$=RIGHT$(N$,3):FOR C%=1 TO 3:N%=ASC(MID$(NA$,C%,1)):IF N%<48 OR (N%>57 AND N%<65) OR N%>90 THEN 685 ELSE NEXT C%:ADG=1:RETURN
  77. 685 ADG=2:RETURN
  78. 690 GOSUB 100:COLOR 7,0:LOCATE 12,20:PRINT"ENTER THE LATITUDE, THEN THE LONGITUDE.":LOCATE 13,20:PRINT"SEPARATE THE DEGREES & MINUTES WITH A SPACE."
  79. 692 LOCATE 14,20:COLOR 0,7:PRINT" OR ";:COLOR 7,0:PRINT" ENTER AN  *  AND THE 3 LETTER ";:COLOR 15,0:PRINT"AIRPORT";:COLOR 7,0:LOCATE 15,20:PRINT"IDENTIFIER FOR THE LATITUDE.   (ex: *XYZ)":RETURN
  80. 695 LOCATE 19,20:PRINT"LONG START (+W/-E) ";:RETURN
  81. 697 LOCATE LORO+2,20:PRINT"LONG END   (+W/-E) ";:RETURN
  82. 700 N=FRE(1):IF X<=0 THEN X=X+360 ELSE IF X>360 THEN X=X-360
  83. 704 IF X<=0 OR X>360 THEN 700 ELSE X1=X+180:IF X1>360 THEN X1=X1-360:RETURN ELSE RETURN
  84. 710 GOSUB 100:LOCATE 13,29:INPUT"VARIATION (+W/-E): ",N$:GOSUB 82:VR=N:ACH=14:GOSUB 100:LOCATE 15,29:INPUT"TRUE  COURSE:      ",N$:GOSUB 82:IF N$="" THEN 9200 ELSE X=N:GOSUB 700:A(1)=X:A(2)=X1
  85. 714 ACH=16:GOSUB 100:LOCATE 17,29:INPUT"TRUE  AIRSPEED:    ",N$:GOSUB 82:IF N$="" THEN 9200
  86. 715 B=N:IF B<= 0 THEN 714
  87. 716 RETURN
  88. 750 X$=STR$(X):X$=RIGHT$(X$,LEN(X$)-1):IF X<10 THEN 756
  89. 752 IF X<100 THEN 758
  90. 754 RETURN
  91. 756 X$="00"+X$:RETURN
  92. 758 X$="0"+X$:RETURN
  93. 800 P$=STR$(T3):P$=RIGHT$(P$,LEN(P$)-1):P1$=STR$(INT(T3)):P1$=RIGHT$(P1$,LEN(P1$)-1):IF LEN(P1$)=2 THEN 810
  94. 802 IF LEN(P1$)=1 AND T3>=1 THEN P$="0"+P$:GOTO 810
  95. 804 IF T3=0 THEN P$="00.0":RETURN
  96. 806 IF LEN(P1$)>2 THEN RETURN
  97. 808 P$="00"+P$
  98. 810 P1$=RIGHT$(P$,2):IF LEFT$(P1$,1)="." THEN RETURN
  99. 812 P$=P$+".0":RETURN
  100. 830 LOCATE 12,29:PRINT"INPUT THE FOLLOWING":RETURN
  101. 850 ACH=11:GOSUB 100:COLOR 0,7:LOCATE 12,29:PRINT" L O A D I N G ":RETURN
  102. 860 LOCATE 17,29:PRINT" P R O G R A M ":LOCATE 20,30:PRINT" P L E A S E ":LOCATE 22,28:PRINT" S T A N D - B Y ":COLOR 7,0:RETURN
  103. 980 COLOR 15,0:LOCATE 24,24:PRINT"(PUSH  ANY  KEY  TO  CONTINUE)";:COLOR 7,0:N$=INPUT$(1):RETURN
  104. 990 FOR PP=1 TO 6:BEEP:FOR PEP=1 TO 170:NEXT PEP,PP:RETURN
  105. 1000 GOSUB 100:LV=12:GOSUB 220:IF N$="" THEN 9200
  106. 1010 GOSUB 82:IF N=0 AND N$<>"0" THEN 1000 ELSE GOSUB 560:LV=14:GOSUB 260:ACH=18:GOSUB 100:T1=15-(.001981*PA):T2=(T1+273.15)/288.15:P1=T2^5.2563
  107. 1020 D1=(Y+273.15)/288.15/P1:DA=145447!*(1-((1/D1)^.235)):DA=INT(DA+.5)
  108. 1030 LOCATE 14,58:PRINT SPACE$(15) :LOCATE 14,58:PRINT FNRT(Y):LOCATE 17,29:PRINT"DENSITY ALTITUDE (DA) = ";DA:GOSUB 200:GOTO 9200
  109. 1500 GOSUB 100:LOCATE 11,29:PRINT "TIME #1 IN HRS-MINS":LORO=13:Z1=15:GOSUB 305:C(1)=T2:C(2)=FNRT(VAL(X$)):C(5)=C(1)+(C(2)/60):LORO2=17:IF C(5)=0 THEN GOTO 9200
  110. 1520 LOCATE LORO2,29:PRINT "TIME #2 IN HRS-MINS":LORO=LORO2+2:GOSUB 305:Z1=0:C(3)=T2:C(4)=FNRT(VAL(X$)):C(6)=C(3)+(C(4)/60): IF C(6)=0 THEN 9200
  111. 1530 IF Z2 = 16 THEN Z2=0:GOTO 1560
  112. 1540 GOSUB 100:LV=13:GOSUB 540:LOCATE 16,29:PRINT "1 - ADD TIME (T1 + T2)":LOCATE 18,29:PRINT "2 - SUBTRACT (T1 - T2)";
  113. 1545 GOSUB 80:NN=N:ON N GOTO 1560,1570:GOTO 1545
  114. 1560 C(7)=C(1)+C(3):C(8)=C(2)+C(4):X$="+":GOTO 1590
  115. 1570 IF C(5)<C(6) THEN 1800
  116. 1580 C(7)=C(1)-C(3):C(8)=C(2)-C(4):X$="-"
  117. 1590 IF C(8)>=60 THEN C(7)=C(7)+1:C(8)=C(8)-60
  118. 1600 IF C(8)<0 THEN C(7)=C(7)-1:C(8)=C(8)+60
  119. 1610 IF C(8)>60 OR C(8)<0 THEN 1590
  120. 1620 GOSUB 100:T3=C(2):GOSUB 800:Y$=STR$(C(1)):LOCATE 13,29:PRINT SPC(5-(LEN(Y$)));C(1);"HR";:LOCATE 13,40:PRINT P$;" MN":T3=C(4):GOSUB 800:Y$=STR$(C(3)):LOCATE 14,29:PRINT X$;SPC(4-(LEN(Y$)));C(3);"HR":LOCATE 14,40:PRINT P$;" MN"
  121. 1630 LOCATE 15,29:FOR X=1 TO 19:PRINT "-";:NEXT:T3=FNRT(C(8)):GOSUB 800:Y$=STR$(C(7)):LOCATE 16,29:PRINT SPC(5-(LEN(Y$)));C(7);"HR";:LOCATE 16,40:PRINT P$;" MN":GOSUB 200
  122. 1640 GOSUB 100:LV=12:GOSUB 540:LOCATE 15,29:PRINT"1 - CHAIN ADDITION":LOCATE 17,29:PRINT"2 - NEW PROBLEM":GOSUB 580
  123. 1645 GOSUB 80: IF NOQT=1 THEN 1640
  124. 1650 ON N GOTO 1660,1500:GOTO 1645
  125. 1660 IF NN=2 THEN 1640
  126. 1670 C(1)=C(7):C(2)=C(8):Z2=16:LORO2=13:GOSUB 100:GOTO 1520
  127. 1800 GOSUB 100:PRINT B$;B$;B$;B$;:LOCATE 14,24:PRINT"FOR SUBTRACTION, TIME #1 MUST BE":LOCATE 17,24:PRINT"GREATER THAN OR EQUAL TO TIME #2!":COLOR 23,0:GOSUB 200:COLOR 7,0:GOTO 9200
  128. 2000 GOSUB 100:LV=11:GOSUB 540:LOCATE 14,29:PRINT"1 - TAS & MACH NO.":LOCATE 15,33:PRINT"(FROM CAS & PA)":LOCATE 17,29:PRINT"2 - TRUE AIRSPEED":LOCATE 18,33:PRINT"(FROM MACH NO.)":GOSUB 580
  129. 2060 GOSUB 80:IF ASC(N$)=13 THEN 9200
  130. 2070 IF NOQT=1 THEN 2060 ELSE ON N GOTO 2100,2200:GOTO 2060
  131. 2100 GOSUB 100:LV=11:GOSUB 220
  132. 2105 GOSUB 82:PA=N:IF PA<=0 THEN 2000
  133. 2110 GOSUB 550:LOCATE 13,29:INPUT"CALIBRATED AIRSPEED (CAS/KTS): ",N$:IF N$="" THEN 2000
  134. 2115 GOSUB 82:CA=N:IF CA<=0 THEN 2000
  135. 2120 IF RIGHT$(N$,1)="S" OR RIGHT$(N$,1)="s" THEN Y$="N":X=N:GOSUB 405:CA=Y
  136. 2130 GOSUB 560:LOCATE 15,29:INPUT"INDICATED TEMPERATURE (IT/C): ",N$:Y=VAL(N$):GOSUB 235:IT=Y:ACH=16:GOSUB 100:IF PA>35332! THEN 2160
  137. 2150 P1=((1-(PA*6.8753E-06))^5.2563)*2116.22:GOTO 2170
  138. 2160 P1=2116.2*(EXP(-1*(1.452+((PA-35332!)/20950))))
  139. 2170 P2=(((((CA*CA*.0023769/5201.614)+1)^3.5)-1)*2116.22)+P1
  140. 2180 M=((((P2/P1)^.2857)-1)*5)^.5:GOSUB 250:LOCATE 13,59:PRINT SPACE$(15);:LOCATE 13,59:PRINT FNRT(CA)
  141. 2190 LOCATE 15,59:PRINT SPACE$(15);:ACH=16:GOSUB 100:LOCATE 15,58:PRINT FNRT(IT):LOCATE 18,29:PRINT"TRUE AIRSPEED =";VT:LOCATE 20,29:PRINT"MACH NUMBER =";M:GOSUB 200:GOTO 2000
  142. 2200 GOSUB 100:LOCATE 13,29:INPUT"MACH NUMBER: ",N$:GOSUB 82:M=N:IF M<= 0 THEN 2000
  143. 2205 IF M<2 THEN 2240 ELSE IF M<10 THEN M=M/10 ELSE IF M<100 THEN M=M/100 ELSE IF M<1000 THEN M=M/1000 ELSE IF M<10000 THEN M=M/10000 ELSE IF M>999 THEN 2000
  144. 2235 LOCATE 13,41:PRINT SPACE$(20):LOCATE 13,41:PRINT M
  145. 2240 GOSUB 560:LV=15:GOSUB 260:TK=Y+273.15:GOSUB 255:LOCATE 15,58:PRINT SPACE$(15):LOCATE 15,58:PRINT FN RT(Y)
  146. 2250 ACH=18:GOSUB 100:LOCATE 18,29:PRINT"TRUE AIRSPEED (TAS/KTS): ";VT:GOSUB 200:GOTO 2000
  147. 2500 GOSUB 100:LV=11:GOSUB 540:LOCATE 14,29:PRINT "1 - FUEL REQUIRED":LOCATE 16,29:PRINT "2 - FUEL FLOW/HR":LOCATE 18,29:PRINT"3 - ENDURANCE":GOSUB 580
  148. 2540 N$=INKEY$:IF N$="" THEN 2540 ELSE GOSUB 82:IF NOQT=1 THEN 2500
  149. 2545 IF N=0 THEN 9200
  150. 2550 ON N GOTO 2600,2700,2800:GOTO 2540
  151. 2600 LV=12:LORO=14:Z1=0:GOSUB 300:IF T1=0 THEN GOTO 2500
  152. 2610 LOCATE 17,26:INPUT"INPUT FUEL FLOW/HR (FF/HR): ",X$:FB=VAL(X$):IF FB<=0 THEN 2500
  153. 2620 FR=T1*FB:FR=FNRT(FR):GOSUB 100:LOCATE 12,29:PRINT"TIME:";T2;" HR  ";T3$;" MN":LOCATE 14,29:PRINT"FUEL FLOW/HR:";FB:LOCATE 17,29:PRINT"TOTAL REQUIRED FUEL =";FR:GOSUB 200:GOTO 2500
  154. 2700 LV=12:LORO=14:Z1=0:GOSUB 300:IF T1=0 THEN 2500
  155. 2710 LOCATE 17,26:INPUT"INPUT TOTAL FUEL USED: ",X$:FR=VAL(X$):IF FR<=0 THEN 2500
  156. 2720 FB=FR/T1:FB=FNRT(FB):GOSUB 100:LOCATE 12,29:PRINT"TIME:";T2;" HR  ";T3$;" MN":LOCATE 14,29:PRINT"FUEL USED:";FR:LOCATE 17,29:PRINT"FUEL BURN/HR =";FB:GOSUB 200:GOTO 2500
  157. 2800 GOSUB 100:GOSUB 830:LOCATE 15,29:INPUT"FUEL ON BOARD: ",X$:FR=VAL(X$):IF FR<= 0 THEN 2500
  158. 2810 LOCATE 18,29:INPUT"BURN PER HOUR: ",X$:FB=VAL(X$):IF FB<=0 THEN 2500
  159. 2820 T1=FR/FB:GOSUB 350:IF T3<60 THEN 2840
  160. 2830 T3=T3-60:T3$=STR$(T3):T2=T2+1
  161. 2840 GOSUB 325:GOSUB 100:LOCATE 12,29:PRINT"FUEL ON BOARD:";FR:LOCATE 14,29:PRINT"BURN PER HOUR:";FB:LOCATE 17,29:PRINT"TIME =";T2;" HR  ";T3$;" MN":GOSUB 200:GOTO 2500
  162. 3000 GOSUB 100:LV=11:GOSUB 540:LOCATE 14,29:PRINT"1 - TIME":LOCATE 16,29:PRINT"2 - SPEED":LOCATE 18,29:PRINT"3 - DISTANCE":GOSUB 580
  163. 3040 N$=INKEY$:IF N$="" THEN 3040 ELSE GOSUB 82:IF NOQT=1 THEN 3000
  164. 3045 IF N=0 THEN 9200
  165. 3050 ON N GOTO 3400,3600,3200:GOTO 3040
  166. 3200 LV=12:LORO=14:Z1=0:GOSUB 300: IF T1=0 THEN 3000
  167. 3210 LOCATE 17,26:PRINT"INPUT ";GS$;:INPUT" : ",X$:G=VAL(X$):IF G<=0 THEN 3000
  168. 3220 D=T1*G:D=FNR(D):GOSUB 100:LOCATE 12,29:PRINT"TIME:";T2;" HR  ";T3$;" MN":LOCATE 14,29:PRINT GS$;": ";G:LOCATE 17,29:PRINT"DISTANCE = ";D:GOSUB 200:GOTO 3000
  169. 3400 GOSUB 100:GOSUB 830:LOCATE 15,33:INPUT"DISTANCE: ",X$:D = VAL(X$):IF D <= 0 THEN 3000
  170. 3410 LOCATE 18,33:PRINT GS$;:INPUT" : ",X$:G=VAL(X$):IF G<=0 THEN 3000
  171. 3420 T1 = D/G:T2=INT(T1):T3=(T1-T2)*60:IF T3 < 60 THEN 3440
  172. 3430 T3 = T3-60:T2=T2+1
  173. 3440 T3 = FN R(T3):X$ = STR$(T3):GOSUB 320:GOSUB 100:LOCATE 12,29:PRINT"DISTANCE: ";D:LOCATE 14,29:PRINT GS$;":";G:LOCATE 17,29:PRINT"TIME =" T2 " HR  " T3$ " MN":GOSUB 200:GOTO 3000
  174. 3600 LV=12:LORO=14:Z1=0:GOSUB 300:IF T1= 0 THEN 3000
  175. 3610 LOCATE 17,26:INPUT"DISTANCE: ",X$:D=VAL(X$):IF D<=0 THEN 3000
  176. 3620 G = D/T1:G = FNR(G):GOSUB 100:LOCATE 12,29:PRINT"TIME:";T2;" HR  ";T3$;" MN":LOCATE 14,29:PRINT"DISTANCE: ";D:LOCATE 17,29:PRINT GS$;" =";G:GOSUB 200:GOTO 3000
  177. 4000 CLS:COLOR 7,0:LOCATE 1,2:PRINT "S  - STATUTE MILES" TAB(29) "G  - GALLON" TAB(55) "AV - GALLON AV GAS":LOCATE 3,2:PRINT"N  - NAUTICAL MILE" TAB(29) "L  - LITER" TAB(55) "F  - FAHRENHEIT"
  178. 4020 LOCATE 5,2:PRINT "KM - KILOMETER" TAB(29) "P  - POUND" TAB(55) "C  - CENTIGRADE":LOCATE 7,2:PRINT"FT - FEET" TAB(29) "KG - KILOGRAM" TAB(55) "M  - MAIN MENU"
  179. 4030 LOCATE 9,2:PRINT"MT - METER" TAB(29) "JP - GALLON JET A" TAB(55) "Q  - QUIT":LOCATE 10,1:PRINT DASH$;"-";:LOCATE 25,1:PRINT DASH$;
  180. 4100 COLOR 0,7:LOCATE 12,1:PRINT MM$(0):COLOR 7,0:ACH=13:GOSUB 100:LOCATE 13,20:PRINT"ENTER THE NUMBER AND THE UNIT LETTER(S)":LOCATE 14,20:PRINT"OF THAT NUMBER.  NEXT, ENTER THE UNIT"
  181. 4105 LOCATE 15,20:PRINT"LETTER(S) YOU WANT TO CONVERT TO.  FOR":LOCATE 16,20:PRINT"MULTIPLE PROBLEMS, ENTER AN  *  TO USE":LOCATE 17,20:PRINT"THE PREVIOUS ANSWER AS AN INPUT.":SAME=0:SAME$=""
  182. 4130 ACH=18:GOSUB 100:COLOR 15,0:LOCATE 20,25:PRINT"ENTER NUMBER ";:COLOR 0,7:PRINT" AND ";:COLOR 15,0:INPUT" UNIT(S): ",N$:IF N$="" THEN 9100
  183. 4135 IF N$="*" THEN X=SAME:X$=SAME$:GOTO 4190 ELSE SAME=0:SAME$=""
  184. 4140 N1$=RIGHT$(N$,1):N1=ASC(N1$):IF N1<67 OR N1>86 THEN 4130
  185. 4150 X$=RIGHT$(N$,2):N2=ASC(X$):IF N2<65 OR N2>77 THEN X$=N1$
  186. 4160 N=FRE(N):Y=0:IF X$="M" THEN 9100
  187. 4170 IF X$="Q" THEN GOSUB 90:GOTO 4100
  188. 4180 X=VAL(N$)
  189. 4190 IF SAME=0 THEN IF X$="F" THEN 4340 ELSE IF X$="C" THEN 4340
  190. 4200 IF X=0 THEN 4130
  191. 4210 LOCATE 22,25:INPUT"ENTER THE UNIT(S) YOU WANT: ",Y$:IF N$="M" THEN 9100
  192. 4230 IF X$="S" THEN GOSUB 405 ELSE IF X$="N" THEN GOSUB 408 ELSE IF X$="KM" THEN GOSUB 416 ELSE IF X$="FT" THEN GOSUB 424 ELSE IF X$="MT" THEN 460 ELSE IF X$="G" AND Y$="L" THEN Y=X*GL ELSE IF X$="L" AND Y$="G" THEN Y=X/GL
  193. 4300 IF X$="AV" THEN GOSUB 432 ELSE IF X$="P" THEN GOSUB 438 ELSE IF X$="KG" THEN 452 ELSE IF X$="JP" THEN GOSUB 446
  194. 4340 IF X$="F" THEN Y$="C":GOSUB 240:GOTO 4370 ELSE IF X$="C" THEN Y$="F":Y=(X*1.8)+32:GOTO 4370
  195. 4360 IF Y=0 THEN 4130
  196. 4370 ACH=18:GOSUB 100:LOCATE 20,23:PRINT X X$ TAB(36) "EQUALS";:IF ABS(Y)<1 THEN Y=FN TM(Y)
  197. 4380 IF ABS(Y) <10 AND ABS(Y) >= 1 THEN Y=FN TT(Y) ELSE IF ABS(Y) <100 AND ABS(Y)>=10 THEN Y=FN TH(Y) ELSE IF ABS(Y) <1000 AND ABS(Y)>=100 THEN Y=FN RO(Y) ELSE IF ABS(Y) <10000 AND ABS(Y)>=1000 THEN Y=FN RH(Y) ELSE IF ABS(Y)>=10000 THEN Y=FN RT(Y)
  198. 4420 PRINT TAB(45) Y Y$:SAME=Y:SAME$=Y$:GOSUB 200:IF N$="M" THEN 9100 ELSE IF NOQT=1 THEN NOQT=0:GOTO 4100
  199. 4430 GOTO 4130
  200. 6000 ERNO=6000:LAST=0:LORO=21:NOARPT=0:NA$="":GOSUB 690
  201. 6007 ACH=16:GOSUB 100:GOSUB 660:COLOR 15,0:LOCATE 17,20:PRINT"LAT  START (+N/-S) ";:X$="":ADG=0:INPUT"  DD MM.M : ",N$:IF N$="D" OR N$="d" THEN GOSUB 70:GOTO 6007 ELSE IF N$="" THEN 9200
  202. 6010 GOSUB 672:GOSUB 590:IF ADG=1 THEN 6600 ELSE IF ADG=2 THEN 6007 ELSE IF X$="" THEN 9200
  203. 6012 L(5)=LD%:L(6)=LM:IF ABS(L(5))>89 THEN 6007 ELSE IF L(6)>59.9 THEN 6007 ELSE IF L(6)=0 AND L(5)=0 THEN 6007
  204. 6015 IF NOARPT=1 THEN LOCATE 17,64:PRINT NA$;
  205. 6020 ACH=18:GOSUB 100:GOSUB 660:COLOR 15,0:GOSUB 695:GOSUB 671:GOSUB 595:IF X$="" THEN 9200
  206. 6022 L(7)=GD%:L(8)=GM:IF ABS(L(7))>179 THEN 6020 ELSE IF L(8)>59.9 THEN 6020 ELSE IF L(7)=0 AND L(8)=0 THEN 6020 ELSE IF NOARPT=1 THEN GOTO 6920
  207. 6030 ACH=LORO-1:GOSUB 100:GOSUB 660:COLOR 15,0:LOCATE LORO,20:PRINT"LAT  END   (+N/-S) ";:GOSUB 670:GOSUB 590:IF ADG=1 THEN LAST=1:GOTO 6600 ELSE IF ADG=2 THEN 6030 ELSE IF X$="" THEN 9200
  208. 6032 L(2)=LD%:M(2)=LM:IF ABS(L(2))>89 THEN 6030 ELSE IF M(2)>59.9 THEN 6030 ELSE IF L(2)=0 AND M(2)=0 THEN 6030
  209. 6035 IF NOARPT=1 THEN LOCATE LORO,64:PRINT NA$;
  210. 6040 ACH=22:GOSUB 100:GOSUB 660:COLOR 15,0:GOSUB 697:GOSUB 671:GOSUB 595:IF X$="" THEN 9200
  211. 6042 G(2)=GD%:H(2)=GM:IF ABS(G(2))>179 THEN 6040 ELSE IF H(2)>59.5 THEN 6040 ELSE IF G(2)=0 AND H(2)=0 THEN 6040 ELSE IF NOARPT=1 THEN GOTO 6920
  212. 6050 IF NOARPT=1 THEN 6950 ELSE L(1)=L(5):M(1)=L(6):G(1)=L(7):H(1)=L(8)
  213. 6060 FOR J=1 TO 2:IF M(J)<0 THEN 6000 ELSE IF H(J)<0 THEN 6000 ELSE IF L(J)<0 THEN M(J)= -M(J)
  214. 6090 L(J)=(M(J)/60)+L(J):QA(J)=L(J):L(J)=L(J)*RD:IF G(J)<0 THEN H(J)= -H(J)
  215. 6100 G(J)=(H(J)/60)+G(J):B(J)=G(J):NEXT J
  216. 6110 G(0)=(B(1)-B(2))*RD:QA(0)=QA(2)-QA(1):B(0)=B(2)-B(1):IF QA(1)=QA(2) THEN QA(1)=QA(1)+RF
  217. 6115 IF (L(1)=L(2) AND M(1)=M(2)) AND (G(1)=G(2) AND H(1)=H(2)) THEN GOSUB 100:LOCATE 15,24:PRINT"STARTING AND ENDING POINTS ARE EQUAL":GOSUB 200:GOTO 6000
  218. 6120 GOSUB 100:LV=11:GOSUB 540:COLOR 7,0:LOCATE 14,29:PRINT"1 - GREAT CIRCLE":LOCATE 15,29:PRINT"2 - RHUMB LINE":LOCATE 16,29:PRINT"3 - CHANGE END POINT":LOCATE 17,29:PRINT"4 - NEW PROBLEM":GOSUB 580
  219. 6150 COLOR 15,0:LOCATE LV,53:INPUT" ",N$:IF N$="" THEN 6150 ELSE GOSUB 82:IF ASC(N$)=13 THEN 9200
  220. 6155 LAST=0:ON N GOTO 6170,6490,6165,6000:GOTO 6120
  221. 6160 GOTO 6120
  222. 6165 LAST=1:LORO=18:GOSUB 690:GOTO 6030
  223. 6170 IF (L(1)=L(2) AND M(1)=M(2)) AND (G(1)=G(2) AND H(1)=H(2)) THEN GOSUB 100:LOCATE 15,24:PRINT"STARTING AND ENDING POINTS ARE EQUAL":GOSUB 200:GOTO 6120
  224. 6175 D1=(SIN(L(1))*SIN(L(2)))+(COS(L(1))*COS(L(2))*COS(ABS(G(0)))):D2=FN IC(D1):D=D2*60*DG:IF Y6545=1 THEN RETURN
  225. 6177 IF Y6490=1 THEN RETURN
  226. 6180 FOR J=1 TO 2
  227. 6190 C(J)=(SIN(G(0))*COS(L(J)))/(SIN(D2))
  228. 6200 IF ABS (C(J))>=1 THEN L(J)=L(J)+.001:GOTO 6190
  229. 6210 C(J)=FN IS(C(J)):C(J)=C(J)*DG:NEXT J:GOSUB 600:X=C(2):GOSUB 750
  230. 6240 GOSUB 100:LOCATE 13,29:PRINT"DISTANCE =";D;" NM":LOCATE 15,29:PRINT"TRUE COURSE START = ";X$:X=C(1):GOSUB 750:LOCATE 17,29:PRINT"TRUE COURSE END = ";X$:GOSUB 200:GOTO 6120
  231. 6490 IF B(0)=0 THEN C(1)=0:Y6490=1:GOSUB 6170:Y6490=0:GOTO 6550
  232. 6495 SR=ABS(B(0))*60:TA=TAN((45+(QA(2))/2)*RD):TB=TAN((45+(QA(1))/2)*RD):TR=3436*(LOG(TA/TB))
  233. 6500 IF TR=0 THEN TR=T6+.000001#
  234. 6530 C(1)=(ATN(SR/TR))*DG:IF C(1)=0 THEN 6540
  235. 6532 C(0)=ABS(C(1)):IF C(0)>269 AND C(0)<271 OR C(0)>89 AND C(0)<91 THEN 6545
  236. 6535 D=ABS((QA(0)/(COS(C(1)*RD))))*60:GOTO 6550
  237. 6540 D=ABS(QA(0))*60:GOTO 6550
  238. 6545 Y6545=1:GOSUB 6170:D=D*1.002:Y6545=0:BEEP
  239. 6550 GOSUB 600:X=C(1):GOSUB 750:GOSUB 100:LOCATE 13,29:PRINT"DISTANCE =";D;" NM":LOCATE 16,29:PRINT"RHUMB LINE STEADY":LOCATE 18,29:PRINT"TRUE COURSE = ";X$:GOSUB 200:GOTO 6120
  240. 6600 INFO$="\QFP4DIR\QFPARPTS"
  241. 6610 GOSUB 75:OPEN INFO$ AS #1 LEN=16:FIELD #1, 3 AS XIDENT$, 5 AS XLAT$, 6 AS XLONG$, 2 AS XVAR$: LIML%=1:LIMU%=256
  242. 6620 IF LIML%>LIMU% THEN CLOSE #1:GOTO 6660
  243. 6630 LIMX%=INT((LIML%+LIMU%)/2):GET #1,LIMX%:IF NA$<XIDENT$ THEN LIMU%=LIMX%-1:GOTO 6620 ELSE IF NA$>XIDENT$ THEN LIML%=LIMX%+1:GOTO 6620
  244. 6640 LAT=CVS(XLAT$):LONG=CVS(XLONG$):IF LAT=0 AND LONG=0 THEN CLOSE #1:GOTO 6660
  245. 6650 LD%=FIX(LAT/1000):LM=FN RT((LAT-(LD%*1000))/10):GD%=FIX(LONG/1000):GM=FN RT((LONG-(GD%*1000))/10):CLOSE #1:GOSUB 72:GOTO 6700
  246. 6660 CTZ%=0:INFO$="\QFP4DIR\ADDARPT"
  247. 6665 GOSUB 72:OPEN INFO$ FOR INPUT AS #1
  248. 6670 IF EOF(1) THEN 6685 ELSE CTZ%=CTZ%+1:INPUT #1,IDENT$,LAT$,LONG$,VAR$:IF NA$=IDENT$ THEN LAT=VAL(LAT$):LD%=FIX(LAT/1000):LM=FN RT((LAT-(LD%*1000))/10):LONG=VAL(LONG$):GD%=FIX(LONG/1000):GM=FN RT((LONG-(GD%*1000))/10):CLOSE #1:GOTO 6700
  249. 6680 IF CTZ%<315 THEN 6670
  250. 6685 CLOSE #1:GOTO 6900
  251. 6700 IF LAST=1 THEN 6800 ELSE LOCATE 17,50:PRINT LD%;LM;TAB(64);NA$:GOSUB 695:LOCATE 19,41:PRINT "DD MM.M :";GD%;:T3=GM:GOSUB 800:PRINT P$:L(5)=LD%:L(6)=LM:L(7)=GD%:L(8)=GM:GOTO 6030
  252. 6800 LOCATE LORO,50:PRINT LD%;LM;TAB(64);NA$:GOSUB 697:LOCATE LORO+2,41:PRINT "DD MM.M :";GD%;:T3=GM:GOSUB 800:PRINT P$:L(2)=LD%:M(2)=LM:G(2)=GD%:H(2)=GM:LOCATE 24,24:PRINT"(PUSH ANY KEY TO CONTINUE.)";:NN$=INPUT$(1):GOTO 6050
  253. 6900 BEEP:COLOR 15,0:LOCATE 24,5:PRINT"THE AIRPORT YOU SELECTED (";NA$;"),WAS NOT FOUND IN ANY OF THE DISK FILES!     ";:FOR ZZ=1 TO 1500:NEXT ZZ
  254. 6905 BEEP:LOCATE 24,1:PRINT"THE INFORMATION YOU ENTER FOR ";:COLOR 7,0:PRINT NA$;:COLOR 15,0:PRINT" WILL AUTOMATICALLY BE SAVED.  (PUSH ANY KEY.)";:N$=INPUT$(1):NOARPT=1:IF LAST=1 THEN 6030 ELSE 6007
  255. 6920 ACH=23:GOSUB 100:LOCATE 24,1:INPUT;"ENTER THE VARIATION (+W/-E): ",N$:VARX%=INT(VAL(N$))
  256. 6925 LOCATE 24,78:PRINT"  ";:LOCATE 24,37:PRINT"ARE THESE NUMBERS CORRECT? (Y/N), M, or Q:";:N$=INPUT$(1):IF N$="N" OR N$="n" THEN 6930 ELSE IF N$="Y" OR N$="y" THEN 6950 ELSE GOSUB 82:IF NOQT=1 THEN GOSUB 690:GOTO 6930
  257. 6927 GOTO 6925
  258. 6930 IF LAST=1 THEN 6030 ELSE 6007
  259. 6950 IF LD%<0 THEN 6953 ELSE LAT=LD%*1000+LM*10:GOTO 6955
  260. 6953 LAT=LD%*1000-LM*10
  261. 6955 IF GD%<0 THEN 6977 ELSE LONG=GD%*1000+GM*10:GOTO 6958
  262. 6957 LONG=GD%*1000+LM*10
  263. 6958 VAR=VARX%+49
  264. 6960 ERNO=6960:OPEN INFO$ FOR APPEND AS #1:WRITE #1,NA$,LAT,LONG,VAR:CLOSE #1:RESET:NOARPT=0:IF LAST=1 THEN 6050 ELSE 6030
  265. 7000 IF A(1)>180 AND A(2) >M(2) THEN 7006
  266. 7002 IF A(1)<=180 AND A(2)<M(2) THEN 7006
  267. 7004 A(0)=ABS(A(1)-M(2)):RETURN
  268. 7006 A(0)=ABS(A(2)-M(1)):RETURN
  269. 7010 A=SQR(B*B+C*C-(2*B*C*COS(A(0)*RD))):IF A=0 THEN A=.001
  270. 7012 RETURN
  271. 7020 X=(B*B+A*A-C*C)/(2*A*B):M(0)=(FN IC(X))*DG:RETURN
  272. 7030 IF A(1)>180 THEN 7036
  273. 7032 IF M(1)>A(1) AND M(1)<A(2) THEN M(0)=-M(0)
  274. 7034 X=A(1)-M(0):GOTO 7040
  275. 7036 IF M(1)<A(1) AND M(1)>A(2) THEN M(0)=-M(0)
  276. 7038 X=A(1)+M(0)
  277. 7040 GOSUB 700:RETURN
  278. 7050 X=(C*SIN(A(0)*RD))/B:M(0)=(FN IS(X))*DG:A(0)=ABS(180-A(0)-M(0)):RETURN
  279. 7100 GOSUB 100:LV=12:GOSUB 540:LOCATE 15,29:PRINT"1 - MAGNETIC HEADING &":LOCATE 16,33:PRINT"GROUND SPEED":LOCATE 18,29:PRINT"2 - WINDS IN FLIGHT":GOSUB 580
  280. 7110 N$=INKEY$:IF N$="" THEN 7110 ELSE GOSUB 82:IF ASC(N$)=13 THEN 9200
  281. 7120 ON N GOTO 7300,7450:GOTO 7110
  282. 7300 GOSUB 710:ACH=18:GOSUB 100:LOCATE 19,29:INPUT"WIND  DIRECTION:   ",N$:GOSUB 82:X=N:GOSUB 700:W7=X+360:C8=A(1)+270:C9=A(1)+450
  283. 7330 ACH=20:GOSUB 100:LOCATE 21,29:INPUT"WIND  VELOCITY:    ",N$:GOSUB 82:C=N:IF C<0 THEN 7330
  284. 7335 M(1)=X:M(2)=X1:GOSUB 7000:GOSUB 7050:GOSUB 7010:GOSUB 7030:GOSUB 100:X=FN R(X):GOSUB 750:LOCATE 13,29:PRINT"TRUE HEADING = ";X$:X=X+VR:A=FN R(A):GOSUB 700:GOSUB 750:IF C>=B AND (W7>=C8 AND W7<=C9) THEN A=-A
  285. 7395 LOCATE 16,29:PRINT"MAG  HEADING = ";X$:LOCATE 18,29:PRINT"GROUND SPEED =";A:GOSUB 200:GOTO 7100
  286. 7450 GOSUB 710
  287. 7460 ACH=18:GOSUB 100:LOCATE 19,29:INPUT"MAGNETIC HEADING:  ",N$:GOSUB 82:IF N$="" THEN 9200 ELSE X=N:GOSUB 700:H(1)=X-VR:H(2)=X1-VR:C=B
  288. 7490 ACH=20:GOSUB 100:LOCATE 21,29:PRINT GS$;:INPUT":      ",N$:GOSUB 82:IF N$="" THEN 9200 ELSE B=N:IF B<=0 THEN 7490
  289. 7495 IF A(1)=H(1) AND C=B THEN A(2)=0:M(0)=0:A=0:GOTO 7545
  290. 7500 IF A(1)>=270 OR A(1) <=90 THEN 7515
  291. 7505 A(0)=ABS(A(1)-H(1)):GOTO 7520
  292. 7515 A(0)=ABS(A(2)-H(2))
  293. 7520 GOSUB 7010:GOSUB 7020:IF A(1)>270 AND H(1)<90 THEN H(1)=H(1)+360
  294. 7535 IF A(1)<90 AND H(1)>270 THEN H(1)=H(1)-360
  295. 7540 IF A(1)<H(1) THEN M(0)=-M(0)
  296. 7545 X=A(2)+M(0):GOSUB 700:X=FN R(X):GOSUB 750:GOSUB 100:LOCATE 14,29:PRINT"WIND DIRECTION = ";X$:A=FN R(A):LOCATE 17,29:PRINT"WIND VELOCITY = ";A:GOSUB 200:GOTO 7100
  297. 9000 CLEAR:COLOR 7,0: ON ERROR GOTO 10000
  298. 9005 DIM C(15),D(15),G(15),L(15),MM$(11),P$(15)
  299. 9015 DEFINT A:DEFDBL Q:DEF FN R(X)=INT(X+.5): DEF FN RT(X)=(INT(X*10+.5))/10: DEF FN RH(X)=(INT(X*100!+.5))/100!: DEF FN RO(X)=(INT(X*1000!+.5))/1000!: DEF FN RM(X)=(INT(X/100!+.5))/10!: DEF FN TH(X)=(INT(X*10000#+.5))/10000#
  300. 9020 DEF FN TT(X)=(INT(X*100000#+.5))/100000#:DEF FN TM(X)=(INT(X*1000000#+.5))/1000000#:DEF FN IC(X)=1.570796-ATN(X/SQR(1-X*X)): DEF FN IS(X)=ATN(X/SQR(1-X*X))
  301. 9025 MM$(0)=" 0 - Conversions ": MM$(1)=" 1 - Add/Subtract Time ": MM$(2)=" 2 - Fuel Problems ": MM$(3)=" 3 - Density Altitude ": MM$(4)=" 4 - TAS & MACH Number ": MM$(5)=" 5 - Weight & Balance "
  302. 9030 MM$(6)=" 6 - Latitude/Longitude ": MM$(7)=" 7 - Wind Problems ": MM$(8)=" 8 - Time-Speed-Distance ": MM$(9)=" 9 - Flight Planning ": MM$(10)=" M - Main Menu ": MM$(11)=" Q - Quit "
  303. 9040 SK=1.609344:SF=5280:AG=6:NS=1.15077945#:NK=1.8519997#:NF=6076.1155#:KF=3280.8399#:PK=.453592375#:GL=3.78532857#:JG=6.75:KJ=3.0617646#:KA=2.721552
  304. 9045 PI=ATN(1)*4:RD=PI/180:DG=180/PI:RF=.0000001
  305. 9050 GS$="GROUND SPEED":L$="LONGITUDE":FC$=" ******QFP4******** "  :B$=CHR$(7):DASH$=STRING$(79,45)
  306. 9055 ERNO=9055:AD$=SPACE$(209):FILE$="\QFP4DIR\QFP4DATA"
  307. 9060 OPEN FILE$ FOR INPUT AS #1
  308. 9070 FOR A!=1 TO 209:INPUT #1, AA!:MID$(AD$,A!,1)=CHR$(AA!):NEXT A!:FOR A!=0 TO 5:INPUT #1,AR(A!):NEXT A!:CLOSE #1
  309. 9075 AD$=AD$+"":DEF SEG:ACK$=SPACE$(80):ACK$=ACK$+"":ARD=255:ANO=16:AAH=6:AAL=0:ABH=0:ABL=0:ACH=10:ACL=1:ADH=23:ADL=80
  310. 9085 AD!=VARPTR(AD$):AD!=PEEK(AD!+1)+(PEEK(AD!+2)*256)
  311. 9090 ANO=33:AAH=14:ADL=AR(1):OTHER=1:GOSUB 100:AN0=33:AAH=25:OTHER=1:GOSUB 100:DRIVE$=CHR$(AR(1)+65)+":":DRV%=1
  312. 9100 CLS:AMAIN=0
  313. 9110 COLOR 0,7:LOCATE 1,1:PRINT FC$: COLOR 7,0: LOCATE 1,28:PRINT MM$(4) TAB(54) MM$(8):LOCATE 3,1:PRINT MM$(1) TAB(28) MM$(5) TAB(54) MM$(9)
  314. 9120 LOCATE 5,1:PRINT MM$(2) TAB(28) MM$(6) TAB(54) MM$(0):LOCATE 7,1:PRINT MM$(3) TAB(28) MM$(7) TAB(54) MM$(11)
  315. 9130 LOCATE 8,1:PRINT DASH$;"-";:LOCATE 25,1:PRINT DASH$;
  316. 9200 ERNO=0:GOSUB 100:COLOR 7,0:LOCATE 7,54:PRINT MM$(11) SPACE$(10):LOCATE 10,1:PRINT SPACE$(25):COLOR 0,7:LOCATE 10,1:PRINT MM$(10):COLOR 15,0:LOCATE 13,29:PRINT "Please enter option":LOCATE 15,29:PRINT"number you want: "
  317. 9205 GOSUB 660
  318. 9210 COLOR 0,7:LOCATE 7,72:PRINT TIME$:N$=INKEY$:IF N$ ="" THEN 9205
  319. 9215 IF N$="D" OR N$="d" THEN GOSUB 70:GOTO 9205
  320. 9220 X=ASC(N$):IF N$ = "Q" OR N$ = "q" THEN GOSUB 90:GOTO 9200
  321. 9223 IF X=48 THEN 9235
  322. 9225 IF X<48 OR X>57 THEN 9210
  323. 9230 COLOR 7,0:LOCATE 7,54:PRINT MM$(10) TAB(71) SPACE$(9):LOCATE 10,1:PRINT SPACE$(25):COLOR 0,7:LOCATE 10,1:PRINT MM$(VAL(N$))
  324. 9235 COLOR 15,0:N=X-47:NN=N:Z2=0:ON N GOTO 4000,1500,2500,1000,2000,9250,6000,7100,3000,9400
  325. 9250 ERNO=9250:GOSUB 850:LOCATE 15,21:PRINT" W E I G H T  &  B A L A N C E ":GOSUB 860
  326. 9255 DRV%=1:GOSUB 72:F$="\QFP4DIR\QFP4W&B"
  327. 9260 RUN F$
  328. 9270 FOR X=1 TO 1500: NEXT X:GOTO 9200
  329. 9400 ERNO=9400:GOSUB 850:LOCATE 15,21:PRINT" F L I G H T   P L A N N I N G ":GOSUB 860
  330. 9405 DRV%=1:GOSUB 72:F$="\QFP4DIR\QFPFPLAN"
  331. 9410 RUN F$
  332. 9420 FOR X=1 TO 1500: NEXT X:GOTO 9200
  333. 9900 CLS:COLOR 7,0:CLEAR:SYSTEM
  334. 10000 IF ERR=53 AND ERNO=9055 THEN 10190
  335. 10005 IF ERR=53 THEN 10200
  336. 10010 IF ERR=70 THEN 10600
  337. 10020 IF ERR=61 THEN 10300
  338. 10030 IF ERR=67 OR ERR=75 OR ERR=76 THEN 10700
  339. 10050 IF ERR>52 THEN 10100
  340. 10099 GOTO 9000
  341. 10100 CLOSE:IF ERNO=9055 THEN 10190 ELSE IF NODRV=1 THEN 10190 ELSE GOSUB 100:COLOR 0,7:LOCATE 12,24:PRINT" THERE IS A PROBLEM WITH YOUR ":LOCATE 14,26:PRINT" DISK OR THE DISK DRIVE! "
  342. 10110 LOCATE 17,24:PRINT" PLEASE CORRECT THE SITUATION ":LOCATE 19,28:PRINT" BEFORE YOU CONTINUE. ":COLOR 7,0:GOSUB 990:GOSUB 200:IF ERNO=6960 OR ERNO=9250 OR ERNO=9400 THEN 10120 ELSE RESUME 9200
  343. 10120 IF NODRV=0 THEN NODRV=1:DRV%=1:GOSUB 72:RESUME 9200
  344. 10190 CLS:PRINT"FATAL DISK ERROR!!":PRINT:PRINT"PROGRAM HALTED!!!!":GOSUB 990:COLOR 7,0:CLEAR:SYSTEM
  345. 10200 IF ERNO=6000 THEN RESUME 6900 ELSE GOSUB 100:COLOR 0,7:LOCATE 12,24:PRINT" THE PROGRAM YOU HAVE SELECTED ":LOCATE 14,24:PRINT" WAS NOT FOUND ON THE DISK. ":GOTO 10110
  346. 10300 GOSUB 100:COLOR 0,7:LOCATE 12,26:PRINT" THE PROBLEM IS THAT YOU DISK ":LOCATE 14,28:PRINT" IS COMPLETELY FILLED UP. "
  347. 10310 LOCATE 17,26:PRINT" PLEASE CHECK THE MANUAL FOR ":LOCATE 19,30:PRINT" A POSSIBLE SOLUTION. ":COLOR 7,0:GOSUB 990:GOSUB 980:DRV%=1:GOSUB 72:GOTO 9000
  348. 10600 GOSUB 100:COLOR 0,7:LOCATE 13,24:PRINT" THE DISK IS WRITE PROTECTED! ":COLOR 7,0:IF NODRV=1 THEN 10630
  349. 10610 COLOR 0,7:LOCATE 16,24:PRINT" YOU WILL HAVE ONE MORE ATTEMPT ":LOCATE 18,26:PRINT" AT SAVING THIS INFORMATION ":LOCATE 20,29:PRINT" BEFORE IT IS ERASED! ":COLOR 7,0
  350. 10620 NODRV=1:GOSUB 990:GOSUB 980:RESUME
  351. 10630 GOSUB 990:DRV%=1:GOSUB 72:GOTO 9000
  352. 10700 GOSUB 100:COLOR 0,7:LOCATE 13,22:PRINT" THERE IS A PROBLEM WITH THE DISK!! ":LOCATE 16,26:PRINT" THE DISK DOES NOT HAVE THE ":LOCATE 18,24:PRINT" SUB-DIRECTORY  \QFP4DIR  ON IT, "
  353. 10710 LOCATE 20,26:PRINT" OR IT HAS TOO MANY FILES. ":COLOR 7,0:GOSUB 990:GOSUB 980:DRV%=1:GOSUB 72:GOTO 9200
  354.