home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / QFP4.ZIP / QFP4UTIL.BAS < prev    next >
Encoding:
BASIC Source File  |  1988-05-01  |  19.1 KB  |  210 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 '        * Utility Ver 1.2              *
  11. 10 '       ********************************
  12. 11 GOTO 9000
  13. 50 N=FRE(ZZZ):N=VAL(N$):NOQT=0:IF LEFT$(N$,1)= "Q" OR LEFT$(N$,1) = "q" THEN 70 ELSE IF LEFT$(N$,1)= "S" OR LEFT$(N$,1) = "s" THEN 8000 ELSE RETURN
  14. 70 GOSUB 100:COLOR 0,7:LOCATE 15,24:PRINT"  DO  YOU  WISH  TO  QUIT?  (Y/N)  ",:COLOR 7,0
  15. 72 X$=INKEY$:IF X$="" THEN 72 ELSE IF X$="Y" OR X$="y" THEN 9900 ELSE NOQT=1:RETURN
  16. 80 DRV%=DRV%+1:IF DRV%>AR(0) THEN DRV%=1
  17. 82 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
  18. 85 XDRV%=DRV%:DRV%=1:GOSUB 82:DRV%=XDRV%:RETURN
  19. 90 ACH=11:GOTO 100
  20. 98 ACH=23
  21. 100 CALL AD!(ACK$,ARD,ANO,AAH,AAL,ABH,ABL,ACH,ACL,ADH,ADL):IF OTHER=1 THEN OTHER=0:RETURN
  22. 105 ARD=225:ANO=16:AAH=6:AAL=0:ABH=0:ACH=10:ACL=1:ADH=23:ADL=80:RETURN
  23. 150 GOSUB 100:COLOR 0,7:LOCATE 12,32:PRINT" L O A D I N G ":RETURN
  24. 152 LOCATE 17,32:PRINT" P R O G R A M "
  25. 154 LOCATE RW,33:PRINT" P L E A S E ":LOCATE RW+2,31:PRINT" S T A N D - B Y ":RETURN
  26. 275 LOCATE 22,28:PRINT"S-SUBMENU" TAB(44) "Q-QUIT":RETURN
  27. 390 ACH=0:ADH=6:GOSUB 100:COLOR 0,7:LOCATE 1,1:PRINT TOPTITLE$;:COLOR 7,0:RETURN
  28. 600 GOSUB 90:COLOR 0,7:LOCATE 15,24:PRINT" ARE YOU SURE THAT YOU WANT TO ";:RETURN
  29. 650 LD%=FIX(LAT/1000):LM=FN RT((LAT-(LD%*1000))/10):GD%=FIX(LONG/1000):GM=FN RT((LONG-(GD%*1000))/10):RETURN
  30. 660 ACH=0:ADH=6:GOSUB 100:LOCATE 1,1:PRINT"  ":PRINT TAB(14) "IDENT       LATITUDE       LONGITUDE       VARIATION":L=LEN(NA$):IF L=2 THEN CW=16 ELSE IF L=5 THEN CW=14 ELSE CW=15
  31. 661 IF Z6030=1 THEN 665 ELSE LOCATE 4,CW:PRINT NA$ TAB(25);:IF LD%=0 AND LM>=0 THEN PRINT "N"; ELSE IF LD%=0 AND LM<0 THEN PRINT"S"; ELSE IF LD%>0 THEN PRINT"N"; ELSE PRINT"S";
  32. 662 PRINT USING"###";ABS(LD%);:PRINT" ";:PRINT USING"###.#";ABS(LM);:PRINT TAB(40);
  33. 663 IF GD%=0 AND GM>=0 THEN PRINT "W"; ELSE IF GD%=0 AND GM<0 THEN PRINT"E"; ELSE IF GD%>0 THEN PRINT"W"; ELSE PRINT"E";
  34. 664 PRINT USING"####";ABS(GD%);:PRINT" ";:PRINT USING"###.#";ABS(GM);:PRINT TAB(59);:PRINT USING"+##";VAR:RETURN
  35. 665 LOCATE 4,1:PRINT SPACE$(78):LOCATE 4,CW:PRINT NA$ TAB(25);:IF LX%=0 AND LY>=0 THEN PRINT "N"; ELSE IF LX%=0 AND LY<0 THEN PRINT"S"; ELSE IF LX%>0 THEN PRINT"N"; ELSE PRINT"S";
  36. 666 PRINT USING"###";ABS(LX%);:PRINT" ";:PRINT USING"###.#";ABS(LY);:PRINT TAB(40);
  37. 667 IF GX%=0 AND GY>=0 THEN PRINT "W"; ELSE IF GX%=0 AND GY<0 THEN PRINT"E"; ELSE IF GX%>0 THEN PRINT"W"; ELSE PRINT"E";
  38. 668 PRINT USING"####";ABS(GX%);:PRINT" ";:PRINT USING"###.#";ABS(GY);:PRINT TAB(59);:PRINT USING"+##";VX:RETURN
  39. 670 INPUT" DD MM.M : ",N$:IF N$="" THEN X$="":RETURN
  40. 672 Y672=INSTR(N$," "):IF Y672=0 THEN X$=N$:Y$="":RETURN ELSE X$=LEFT$(N$,Y672-1):Y$=RIGHT$(N$,LEN(N$)-Y672):RETURN
  41. 690 GOSUB 90:LOCATE 14,24:PRINT"A RECORD BY THE NAME OF ";:GOSUB 697:LOCATE 15,24:PRINT"WAS NOT FOUND IN THE DISK FILES.":RETURN
  42. 695 ACH=16:GOSUB 100:LOCATE 17,24:PRINT"YOU WILL BE ASKED TO INPUT THE":LOCATE 18,24:PRINT"APPROPRIATE INFORMATION, WHICH WILL":LOCATE 19,24:PRINT"THEN BE ENTERED INTO YOUR FILES.":LOCATE 21,29:ROW%=21:GOSUB 275:RETURN
  43. 697 COLOR 0,7:PRINT" " TY$(X%) " " NA$(X%) " ";:COLOR 7,0:RETURN
  44. 700 LOCATE 20,24:PRINT"D-NEXT DRIVE  S-SUBMENU  Q-QUIT":RETURN
  45. 710 LOCATE 22,32:PRINT"(DRIVE " DRIVE$ ")":RETURN
  46. 720 GOSUB 100:LOCATE 10,29:PRINT"UTILITY FILE PROGRAM":RETURN
  47. 725 GOSUB 100:LOCATE 11,32:PRINT"FLIGHT  PLANNING":RETURN
  48. 730 LOCATE 15,1:COLOR 15,0:PRINT TAB(38-(INT(LEN(NA$)/2))) NA$:COLOR 7,0:RETURN
  49. 740 GOSUB 90:LOCATE 12,30:PRINT"*" DBF$ " *":RETURN
  50. 750 GOSUB 90:LOCATE 11,29:PRINT"*";UIF$;" *":RETURN
  51. 760 PRINT"<RETURN> - RETURN TO THE LAST MENU":GOSUB 275:RETURN
  52. 780 GOSUB 90:BEEP:LOCATE 13,24:PRINT"A RECORD STORED UNDER THE NAME:":GOSUB 730:LOCATE 17,24:PRINT"COULD NOT BE FOUND!":RETURN
  53. 790 GOSUB 90:RW=14:COLOR 15,0:GOSUB 154:RETURN
  54. 792 LOCATE 19,26:PRINT"THE PROGRAM IS SEARCHING FOR":LOCATE 21,26:PRINT"THE APPROPRIATE INFORMATION.":COLOR 7,0:RETURN
  55. 794 LOCATE 19,26:PRINT"THE PROGRAM IS SAVING THE":LOCATE 21,26:PRINT"INFORMATION IN THE DISK FILES.":COLOR 7,0:RETURN
  56. 799 ERNO=799:OPEN TITLE$ FOR OUTPUT AS #1:YTERR%=0:WRITE #1,YTERR%:CLOSE #1
  57. 800 ERNO=800:ERASE S1$,S2$,T1$,T2$:DIM S1$(33),S2$(33),T1$(34),T2$(34):OPEN TITLE$ FOR INPUT AS #1: INPUT #1,YT%:IF YT%>33 THEN YT%=33
  58. 805 IF YT%=0 THEN CLOSE #1:RETURN
  59. 810 FOR X%=1 TO YT%:INPUT #1,S1$(X%),S2$(X%): NEXT X%: CLOSE #1:RETURN
  60. 855 GOSUB 390:IF YT%=0 THEN 857 ELSE SCT%=YT%:IF YT%>19 THEN 860 ELSE GOSUB 880:RETURN
  61. 857 LOCATE 3,5:PRINT"N O N E":RETURN
  62. 860 RW%=2:FOR X%=1 TO 5:RW%=RW%+1:LOCATE RW%,1:PRINT X% S2$(X%):NEXT X%
  63. 863 CLM%=16:XX1%=6:XX2%=6:GOSUB 866:CLM%=32:XX1%=13:GOSUB 866:CLM%=48:XX1%=20:GOSUB 866:IF SCT%+1=X% THEN RETURN ELSE CLM%=64:XX1%=27:GOSUB 866:RETURN
  64. 866 RW%=1:FOR X%=XX1% TO (XX1%+XX2%):IF S2$(X%)="" THEN RETURN ELSE LOCATE RW%,CLM%:IF X%<10 THEN PRINT " ";
  65. 869 GOSUB 895:RW%=RW%+1:NEXT X%:RETURN
  66. 871 RW%=RW%+1:NEXT X%:RETURN
  67. 880 RW%=1:IF YT%<3 THEN XY%=YT% ELSE XY%=3
  68. 881 FOR X%=1 TO XY%:RW%=RW%+2:IF S2$(X%)="" THEN RETURN ELSE LOCATE RW%,1:PRINT X% S2$(X%):NEXT X%:IF YT%<=3 THEN RETURN
  69. 883 IF SCT%>11 THEN 886 ELSE CLM%=32:XX%=4:GOSUB 889:CLM%=64:XX%=8:GOSUB 889:RETURN
  70. 886 CLM%=16:XX%=4:GOSUB 889:CLM%=32:XX%=8:GOSUB 889:CLM%=48:XX%=12:GOSUB 889:IF SCT%+1=X% THEN RETURN ELSE CLM%=64:XX%=16:GOSUB 889:RETURN
  71. 889 RW%=1:FOR X%=XX% TO (XX%+3):IF S2$(X%)="" THEN RETURN ELSE LOCATE RW%,CLM%:IF X%<10 THEN PRINT " ";
  72. 892 GOSUB 895:RW%=RW%+2:NEXT X%:RETURN
  73. 895 IF LEN(S2$(X%))>12 THEN 897 ELSE PRINT X% S2$(X%):RETURN
  74. 897 N$=LEFT$(S2$(X%),10):N1$=RIGHT$(S2$(X%),2):N$=N$+N1$:PRINT X% N$:RETURN
  75. 900 ACH=0:ADH=6:GOSUB 100:IF CZ<1 THEN CZ=1 ELSE IF CZ>CTZ THEN CZ=1
  76. 910 CL=1:ZZ=CZ:FOR CT=1 TO 8:GOSUB 930:CL=CL+10:ZZ=ZZ+7:NEXT CT:RETURN
  77. 930 CR=1:FOR Z=ZZ TO (ZZ+6):IF IDENT$(Z)="" THEN RETURN ELSE LOCATE CR,CL:IF Z<10 THEN PRINT" ";
  78. 935 PRINT Z IDENT$(Z):CR=CR+1:NEXT Z:RETURN
  79. 960 GOSUB 90:BEEP:COLOR 7=0,7:LOCATE 16,24:PRINT" THERE IS NOTHING IN THE FILE! ":COLOR 7,0:RETURN
  80. 970 GOSUB 100:COLOR 0,7:LOCATE 10,1:PRINT MM$(9):COLOR 7,0:RETURN
  81. 980 COLOR 15,0:LOCATE 24,24:PRINT"(PUSH  ANY  KEY  TO  CONTINUE)";:COLOR 7,0:N$=INPUT$(1):RETURN
  82. 990 FOR PEP=1 TO 6:BEEP:FOR PP=1 TO 170:NEXT PP,PEP:RETURN
  83. 1000 CLS:CT=9:Z1130=0:GOSUB 9130
  84. 1110 GOSUB 720:LOCATE 12,33:PRINT"* SUBMENU *":LOCATE 14,24:PRINT"P - PROGRAMMED";DBF$:LOCATE 16,24:PRINT"A - ADDITIONAL";UIF$:LOCATE 18,24:PRINT"F - FLIGHT PLANNING PROGRAM":LOCATE 20,24:PRINT"D-NEXT DRIVE  M-MAIN MENU  Q-QUIT"
  85. 1120 IF Z10710=1 THEN Z10710=0:GOTO 1110
  86. 1125 GOSUB 710:TITLE$="\QFP4DIR\FPMST"
  87. 1130 IF Z1130=0 THEN GOSUB 800:TOPTITLE$=ROP$:GOSUB 855:Z1130=1
  88. 1140 GOSUB 98:COLOR 15,0:LOCATE 24,24:PRINT"PUSH  P, A, F, D, M, or Q:";:N$=INPUT$(1):COLOR 7,0:IF N$="" THEN 1140 ELSE IF N$="M" OR N$="m" THEN 9100 ELSE IF N$="Q" OR N$="q" THEN GOSUB 70:GOTO 1110
  89. 1150 IF N$="P" OR N$="p" THEN KIND=1:GOTO 1500 ELSE IF N$="A" OR N$="a" THEN KIND=2:GOTO 1500 ELSE IF N$="F" OR N$="f" THEN 9500 ELSE IF N$="D" OR N$="d" THEN GOSUB 80:GOSUB 800:GOSUB 855:GOTO 1120 ELSE 1140
  90. 1500 GOSUB 90:LOCATE 13,24:PRINT"PLEASE CHOOSE THE TYPE OF FILES":LOCATE 14,24:PRINT"YOU WANT TO WORK WITH.":LOCATE 16,24:PRINT"A-AIRPORTS" TAB(38) "V-VOR/RADIO AIDS"
  91. 1510 IF KIND=2 THEN LOCATE 18,30:PRINT"X-INTERSECTIONS":GOSUB 700:GOSUB 710:GOTO 1700 ELSE GOSUB 700:GOSUB 710:GOTO 1600
  92. 1600 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  A, V, D, S, or Q:  ",N$:COLOR 7,0:IF N$="" THEN 1110 ELSE GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 1500
  93. 1610 IF N$="A" OR N$="a" THEN TYPE=1 ELSE IF N$="V" OR N$="v" THEN TYPE=2 ELSE IF N$="D" OR N$="d" THEN GOSUB 80:GOSUB 800:GOSUB 855:GOSUB 710:GOTO 1600 ELSE 1600
  94. 1620 GOTO 2000
  95. 1700 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  A, V, X, D, S, or Q:  ",N$:COLOR 7,0:IF N$="" THEN 1110 ELSE GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 1500
  96. 1710 IF N$="D" OR N$="d" THEN GOSUB 80:GOSUB 800:GOSUB 855:GOSUB 710:GOTO 1700
  97. 1720 IF N$="A" OR N$="A" THEN TYPE=1:INFO$="ADDARPT" ELSE IF N$="V" OR N$="v" THEN TYPE=2:INFO$="ADDVOR" ELSE IF N$="X" OR N$="x" THEN TYPE=3:INFO$="XINTER" ELSE 1700
  98. 1730 GOTO 3000
  99. 2000 ERNO=2000:GOSUB 740:LOCATE 15,24:PRINT"INPUT THE IDENTIFIER (NAME) OF":LOCATE 16,24:PRINT"THE RECORD YOU WANT TO VIEW.":LOCATE 19,24:GOSUB 760
  100. 2010 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  IDENT, <RET>, S, or Q:  ",N$:COLOR 7,0::IF N$="" THEN GOSUB 800:GOSUB 855:GOTO 1500
  101. 2020 IF LEN(N$)<>3 THEN 2030 ELSE FOR C=1 TO 3:CN1=ASC(MID$(N$,C,1)):IF CN1<65 OR CN1>90 THEN 2010 ELSE NEXT C:NA$=N$:GOTO 2200
  102. 2030 GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 2000 ELSE 2010
  103. 2200 IF TYPE=2 THEN 2210 ELSE INFO$="ARPTS":IF NA$>="AAP" AND NA$=<"YUM" THEN 2225 ELSE 2900
  104. 2210 IF NA$>="ABB" AND NA$=<"DYR" THEN INFO$="VOR1" ELSE IF NA$>="EAR" AND NA$<="LDN" THEN INFO$="VOR2" ELSE IF NA$>="LEB" AND NA$<="PXV" THEN INFO$="VOR3" ELSE IF NA$>="PYE" AND NA$<="ZZV" THEN INFO$="VOR4" ELSE 2900
  105. 2225 INFO$="\QFP4DIR\QFP"+INFO$:GOSUB 790:GOSUB 792:GOSUB 85:OPEN INFO$ AS #1 LEN=16:FIELD #1, 3 AS XIDENT$, 5 AS XLAT$, 6 AS XLONG$, 2 AS XVAR$:LIML%=1:LIMU%=256
  106. 2230 IF LIML%>LIMU% THEN CLOSE #1:GOSUB 82:GOTO 2900
  107. 2240 LIMX%=INT((LIML%+LIMU%)/2):GET #1,LIMX%:IF NA$<XIDENT$ THEN LIMU%=LIMX%-1:GOTO 2230 ELSE IF NA$>XIDENT$ THEN LIML%=LIMX%+1:GOTO 2230
  108. 2250 LAT=CVS(XLAT$):LONG=CVS(XLONG$):GOSUB 650:VAR=VAL(XVAR$)-30:CLOSE #1:GOSUB 82:GOTO 4000
  109. 2900 GOSUB 780:GOSUB 980:GOTO 1110
  110. 3000 ERNO=3000:CTZ=0:GOSUB 790:GOSUB 792
  111. 3010 INFO$="\QFP4DIR\"+INFO$
  112. 3015 OPEN INFO$ FOR INPUT AS #1
  113. 3020 FOR C=1 TO 336:IF EOF(1) THEN 3030 ELSE INPUT #1,IDENT$(C),LAT(C),LONG(C),VAR(C):IF IDENT$(C)="" THEN 3030 ELSE CTZ=CTZ+1:NEXT C
  114. 3030 CLOSE #1:CZ=1:GOSUB 900
  115. 3100 GOSUB 750:LOCATE 13,24:PRINT"TO DISPLAY A CHECKPOINT, INPUT THE":LOCATE 14,24:PRINT"IDENTIFIER (NAME) OR THE NUMBER.":LOCATE 16,24:PRINT"TO VIEW THE NEXT SET OF POINTS,"
  116. 3110 LOCATE 17,24:PRINT"PUSH <RETURN> OR 'F' FOR FORWARD.":LOCATE 19,24:PRINT"TO REVIEW THE LAST DISPLAYED SET":LOCATE 20,24:PRINT"OF POINTS, INPUT 'B' FOR BACKWARDS.":GOSUB 275
  117. 3120 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  IDENT, #, <RET>, F, B, S, or Q:  ",N$:COLOR 7,0:IF N$="F" OR N$="f" OR N$="" THEN CZ=CZ+56:GOSUB 900:GOTO 3120 ELSE IF N$="B" OR N$="B" THEN CZ=CZ-56:GOSUB 900:GOTO 3120
  118. 3130 N=VAL(N$):IF N>=1 AND N<=CTZ THEN 3900 ELSE NA$=N$:L=LEN(NA$):IF TYPE=1 AND (L>=3 AND L<=4) THEN 3150 ELSE IF TYPE=2 AND (L>=2 AND L<=3) THEN 3150 ELSE IF TYPE=3 AND L=5 THEN 3150
  119. 3140 GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 3100 ELSE 3120
  120. 3150 IF TYPE>1 THEN 3160 ELSE FOR C=1 TO L:CN1=ASC(MID$(NA$,C,1)):IF CN1<48 OR (CN1>57 AND CN1<65) OR CN1>90 THEN 3120 ELSE NEXT C:GOTO 3200
  121. 3160 FOR C=1 TO L:CN1=ASC(MID$(NA$,C,1)):IF CN1<65 OR CN1>90 THEN 3120 ELSE NEXT C
  122. 3200 FOR C=1 TO CTZ:IF IDENT$(C)=NA$ THEN CNN=C:LAT=LAT(C):LONG=LONG(C):GOSUB 650:VAR=VAR(C)-49:GOTO 4000 ELSE NEXT C
  123. 3210 GOSUB 780:LOCATE 19,24:PRINT"DO YOU WANT TO ENTER THIS RECORD":LOCATE 20,24:PRINT"AND STORE IT IN THE DISK FILES?":GOSUB 275
  124. 3220 GOSUB 98:LOCATE 24,29:INPUT;"INPUT  (Y/N), S or Q:  ",N$:GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 3120 ELSE IF N$="Y" OR N$="y" THEN CNN=C:Z3220=1:GOTO 6000 ELSE IF N$="N" OR N$="n" THEN 3100 ELSE 3220
  125. 3900 CNN=N:LAT=LAT(CNN):LONG=LONG(CNN):GOSUB 650:VAR=VAR(CNN)-49:NA$=IDENT$(CNN)
  126. 4000 GOSUB 660:GOSUB 90:LOCATE 14,24:PRINT"C - CHANGE ANY OF THE DISPLAYED":LOCATE 15,28:PRINT"INFORMATION.":LOCATE 17,24:PRINT"E - ERASE THE RECORD FROM THE":LOCATE 18,28:PRINT"DISK FILE."
  127. 4010 LOCATE 20,24:PRINT"<RETURN> - RETURN TO THE LAST MENU":GOSUB 275
  128. 4020 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  C, E, <RET>, S, or Q:  ",N$:COLOR 7,0:IF N$="" THEN 4100 ELSE GOSUB 50:IF NOQT=1 THEN GOSUB 720:GOTO 4000
  129. 4030 IF N$="C" OR N$="c" THEN 6000 ELSE IF N$="E" OR N$="e" THEN 5000 ELSE 4020
  130. 4100 IF KIND=2 THEN GOSUB 90:GOSUB 900:GOTO 3100 ELSE 2000
  131. 5000 GOSUB 720:GOSUB 730:LOCATE 17,24:PRINT"IS THIS THE RECORD THAT YOU WANT":LOCATE 18,24:PRINT"TO ERASE FROM THE DISK FILES?":GOSUB 275
  132. 5010 GOSUB 98:COLOR 15,0:LOCATE 24,29:INPUT;"INPUT  (Y/N), S or Q:  ",N$:COLOR 7,0:GOSUB 50:IF NOQT=1 THEN 5000 ELSE IF N$="N" OR N$="n" THEN 8000 ELSE IF N$="Y" OR N$="y" THEN 5020 ELSE 5010
  133. 5020 GOSUB 600:LOCATE 16,24:PRINT" DELETE THIS INFORMATION FROM  ":LOCATE 17,24:PRINT" THE DISK FILES?               ":COLOR 7,0:GOSUB 275
  134. 5030 GOSUB 98:COLOR 15,0:LOCATE 24,24:INPUT;"INPUT  (Y/N), S, or Q:  ",N$:COLOR 7,0:GOSUB 50:IF NOQT=1 THEN 5000 ELSE IF N$="N" OR N$="n" THEN 8000 ELSE IF N$="Y" OR N$="y" THEN 5040 ELSE 5030
  135. 5040 GOSUB 790:GOSUB 794:ON KIND GOTO 5500,5200
  136. 5200 FOR C=CNN TO CTZ:CP=C+1:IDENT$(C)=IDENT$(CP):LAT(C)=LAT(CP):LONG(C)=LONG(CP):VAR(C)=VAR(CP):NEXT C:CTZ=CTZ-1
  137. 5300 OPEN INFO$ FOR OUTPUT AS #1:FOR C=1 TO CTZ:WRITE #1,IDENT$(C),LAT(C),LONG(C),VAR(C):IF IDENT$(C)="" THEN 5310 ELSE NEXT C
  138. 5310 CLOSE #1:GOTO 8000
  139. 5500 GOSUB 85:OPEN INFO$ AS #1 LEN=16:FIELD #1, 3 AS XIDENT$, 5 AS XLAT$, 6 AS XLONG$, 2 AS XVAR$
  140. 5510 LSET XIDENT$=NA$:LSET XLAT$=MKS$(0):LSET XLONG$=MKS$(0):VARX$=STR$(30):LSET XVAR$=RIGHT$(VARX$,LEN(VARX$)-1)
  141. 5520 PUT#1,LIMX%:CLOSE #1:GOSUB 82:GOTO 8000
  142. 6000 GOSUB 720:LOCATE 14,20:PRINT"ENTER THE LATITUDE, THEN THE LONGITUDE.":LOCATE 15,20:PRINT"SEPARATE THE DEGREES & MINUTES WITH A SPACE."
  143. 6010 LOCATE 17,20:PRINT"LATITUDE  (+N/-S) ";:GOSUB 670:IF X$="" THEN 4000 ELSE LX%=VAL(X$):LY=VAL(Y$):IF ABS(LX%)>89 THEN 6000 ELSE IF LY>59.9 THEN 6000 ELSE IF LX%<>0 AND LY<0 THEN 6000 ELSE IF LX%=0 AND LY=0 THEN 6000
  144. 6020 ACH=18:GOSUB 100:LOCATE 19,20:PRINT"LONGITUDE (+W/-E) ";:GOSUB 670:IF X$="" THEN 4000 ELSE GX%=VAL(X$):GY=VAL(Y$):IF ABS(GX%)>179 THEN 6020 ELSE IF GY>59.9 THEN 6020 ELSE IF GX%<>0 AND GY<0 THEN 6020 ELSE IF GX%=0 AND GY=0 THEN 6020
  145. 6030 ACH=20:GOSUB 100:LOCATE 21,28:INPUT"VARIATION  (+W/-E) : ",N$:IF N$="" THEN 4000 ELSE VX=VAL(N$):IF ABS(VX)>49 THEN 6030 ELSE Z6030=1:GOSUB 660:Z6030=0
  146. 6040 GOSUB 98:COLOR 15,0:LOCATE 24,29:INPUT;"IS THIS CORRECT? (Y/N):  ",N$:COLOR 7,0:IF N$="Y" OR N$="y" THEN 6050 ELSE IF N$="N" OR N$="N" THEN 6000 ELSE 6040
  147. 6050 GOSUB 600:PRINT"   ":LOCATE 16,24:PRINT" SAVE THIS INFORMATION";:IF Z3220=1 THEN PRINT"?           " ELSE PRINT" AND WRITE  ":LOCATE 17,24:PRINT" OVER THE DATA IN THE DISK FILES? "
  148. 6055 COLOR 7,0:GOSUB 275
  149. 6060 GOSUB 98:COLOR 15,0:LOCATE 24,28:INPUT;"INPUT  (Y/N), S, or Q:  ",N$:COLOR 7,0:GOSUB 50:IF NOQT=1 THEN 6050 ELSE IF N$="N" OR N$="n" THEN 8000 ELSE IF N$="Y" OR N$="y" THEN 6070 ELSE 6060
  150. 6070 VAR=VX:GOSUB 790:GOSUB 794:IF LD%<0 THEN 6075 ELSE LAT=LX%*1000+LY*10:GOTO 6080
  151. 6075 LAT=LX%*1000-LY*10
  152. 6080 IF GX%<0 THEN 6085 ELSE LONG=GX%*1000+GY*10:GOTO 6100
  153. 6085 LONG=GX%*1000-GY*10
  154. 6100 ON KIND GOTO 6510,6200
  155. 6200 IF Z3220=1 THEN CTZ=CTZ+1:IDENT$(CNN)=NA$
  156. 6210 LAT(CNN)=LAT:LONG(CNN)=LONG:VAR(CNN)=VAR+49:GOTO 5300
  157. 6500 LAT=LD%*1000+LM*10:LONG=GD%*1000+GM*10
  158. 6510 GOSUB 85:OPEN INFO$ AS #1 LEN=16:FIELD #1, 3 AS XIDENT$, 5 AS XLAT$, 6 AS XLONG$, 2 AS XVAR$
  159. 6520 C=LIMX%:LSET XIDENT$=NA$:LSET XLAT$=MKS$(LAT):LSET XLONG$=MKS$(LONG):VARX$=STR$(VAR+30):VARLEN=LEN(VARX$):IF VARLEN=2 THEN VARX$=RIGHT$(VARX$,1) ELSE VARX$=RIGHT$(VARX$,2)
  160. 6530 LSET XVAR$=VARX$:GOTO 5520
  161. 8000 ERASE IDENT$,LAT,LONG,VAR:DIM IDENT$(336),LAT(336),LONG(336),VAR(336):GOTO 1000
  162. 9000 CLEAR:COLOR 7,0: ON ERROR GOTO 10000
  163. 9001 KEY OFF:WIDTH 80: ' ****** REMOVE THIS LINE LATTER *******
  164. 9005 DIM S1$(33),S2$(33),T1$(34),T2$(34),AR(5),IDENT$(336),LAT(336),LONG(336),VAR(336)
  165. 9010 DEFINT A,C,Z:DEF FN RT(X)=(INT(X*10+.5))/10:DEF FN RM(X)=(INT(X/100!+.5))/10!
  166. 9015 ROP$="RECORD OF PLANS":FC$=" *******QFP-4****** ":DBF$=" DATA BASE FILE":UIF$=" USER INPUT FILES"
  167. 9020 DEF FN RT(X)=(INT(X*10+.5))/10:DEF FN R(X)=INT(X+.5):DASH$=STRING$(79,45)
  168. 9025 DIM MM$(11):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 "
  169. 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 "
  170. 9050 ERNO=9050:AD$=SPACE$(209):FILE$="\QFP4DIR\QFP4DATA"
  171. 9060 OPEN FILE$ FOR INPUT AS #1
  172. 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
  173. 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:AD!=VARPTR(AD$):AD!=PEEK(AD!+1)+(PEEK(AD!+2)*256)
  174. 9080 ANO=33:AAH=14:ADL=AR(1):OTHER=1:GOSUB 100:ANO=33:AAH=25:OTHER=1:GOSUB 100:DRIVE$=CHR$(AR(1)+65)+":":GOSUB 105:DRV%=1:GOTO 1000
  175. 9100 CLS:AMAIN=0
  176. 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)
  177. 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)
  178. 9130 LOCATE 8,1:PRINT DASH$;"-";:LOCATE 25,1:PRINT DASH$;:IF CT=9 THEN CT=0:RETURN
  179. 9400 GOSUB 150:LOCATE 15,30:PRINT" M A I N   M E N U ":RW=20:GOSUB 152
  180. 9410 F$="\QFP4DIR\QFP4MAIN"
  181. 9420 DRV%=1:GOSUB 82:RUN F$
  182. 9500 ACH=9:GOSUB 100:GOSUB 150:LOCATE 15,25:PRINT" F L I G H T   P L N N I N G ":RW=20:GOSUB 152
  183. 9510 F$="\QFP4DIR\QFPFPLAN"
  184. 9520 DRV%=1:GOSUB 82:RUN F$
  185. 9900 CLS:COLOR 7,0:KEY ON:END '***  CHANGE TO *** CLS:COLOR 7,0:CLEAR:SYSTEM ***********************************
  186. 10000 IF ERR=53 AND ERNO=9050 THEN 10190
  187. 10005 IF ERR=53 THEN 10200
  188. 10010 IF ERR=62 THEN 10500
  189. 10020 IF ERR=61 THEN 10300
  190. 10030 IF ERR=67 OR ERR=75 OR ERR=76 THEN 10700
  191. 10040 IF ERR>53 THEN 10100
  192. 10099 GOTO 20000 ' ************** CHANGE LINE TO:  GOTO 9000  **************
  193. 10100 IF ERNO=9050 THEN 10190 ELSE GOSUB 100:COLOR 0,7:LOCATE 12,26:PRINT" THERE IS A PROBLEM WITH YOUR ":LOCATE 14,28:PRINT" DISK OR THE DISK DRIVE. "
  194. 10110 LOCATE 17,26:PRINT" PLEASE CORRECT THE SITUATION ":LOCATE 19,30:PRINT" BEFORE YOU CONTINUE. ":COLOR 7,0:GOSUB 990:GOSUB 980:DRV%=R(1):GOSUB 82
  195. 10120 IF ERR=57 THEN RESUME 9000
  196. 10125 IF ERNO=800 THEN DRV%=1:GOSUB 82:RESUME 1110
  197. 10190 CLS:PRINT"FATAL DISK ERROR!!":PRINT:PRINT"PROGRAM HALTED!!!!":GOSUB 990:END  ' ********** CHANGE TO *** COLOR 7,0:CLEAR:SYSTEM **************************
  198. 10199 GOTO 9000
  199. 10200 IF ERNO=3000 THEN GOSUB 960:GOSUB 980:RESUME 1110
  200. 10210 IF ERNO=800 THEN RESUME 799
  201. 10299 GOTO 20000 ' ************** CHANGE LINE TO:  GOTO 9000  **************
  202. 10300 GOSUB 100:COLOR 0,7:LOCATE 12,26:PRINT" THE PROBLEM IS THAT YOUR DISK ":LOCATE 14,28:PRINT" IS COMPLETELY FILLED UP. "
  203. 10310 LOCATE 17,26:PRINT" PLEASE CHECK THE MANUAL FOR ":LOCATE 19,30:PRINT" A POSSIBLE SOLUTION. ":COLOR 7,0:GOSUB 990:GOSUB 980:GOSUB 80:GOTO 9000
  204. 10500 IF ERNO=800 THEN RESUME 805
  205. 10599 GOTO 20000 ' ************** CHANGE LINE TO:  GOTO 9000  **************
  206. 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, "
  207. 10710 LOCATE 20,26:PRINT" OR IT HAS TOO MANY FILES. ":COLOR 7,0:GOSUB 990:GOSUB 980:DRV%=1:GOSUB 82:IF ERNO=799 THEN Z10710=1:RESUME 800 ELSE GOTO 9000
  208. 20000  COLOR 7,0:PRINT J$;J$;J$;J$;:CLS:PRINT "ERR LINE :";ERL;"  ERROR NO ";ERR:KEY ON:RESUME 20010 : ' ************ REMOVE THIS LINE ***************
  209. 20010 STOP:END ' ************* REMOVE THIS LINE ***************
  210.