home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / basic / navprog7.lbr / AIRALPHA.BZS / AIRALPHA.BAS
Encoding:
BASIC Source File  |  1987-02-15  |  6.9 KB  |  152 lines

  1. 10 ' AIRALPHA.BAS   NAVPROGseven Aprt/Fac Sort   22-Jan-82   Rev 6/11/82
  2. 20 '
  3. 30 ' (c) Copyright 1982 Alan Bose
  4. 40 ' President, Taildragger Flyers
  5. 50 ' Ross Field, Benton Harbor, MI
  6. 60 '
  7. 70 ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr.
  8. 80 '
  9. 90 CLEAR:WIDTH 80:DEFINT I-J
  10. 100 BL$=CHR$(7):E$=CHR$(27):ER$=E$+"E":P$=E$+"p":Q$=E$+"q":Y$=E$+"Y"
  11. 110 L$=E$+"l":X1$=E$+"x1":J$=E$+"j":K$=E$+"k":J1$=E$+"J":CL$=CHR$(13)+CHR$(10)
  12. 120 DEF FNC$(C1,C2)=Y$+CHR$(C1+31)+CHR$(C2+31)
  13. 130 PRINT X1$FNC$(25,1)ER$FNC$(1,1)ER$
  14. 140 HD$="A I R P O R T / F A C I L I T Y   S O R T I N G"
  15. 150 PRINT FNC$(6,1)P$TAB(40-LEN(HD$)/2)HD$TAB(79)Q$
  16. 160 PRINT FNC$(10,23)"1  -  Identifier"
  17. 170 PRINT FNC$(12,23)"2  -  State/Identifier"
  18. 180 PRINT FNC$(14,23)"3  -  State/City"
  19. 190 PRINT FNC$(16,23)"4  -  State/Facility/Ident"
  20. 200 PRINT FNC$(18,23)"5  -  As filed (no sort)"
  21. 210 PRINT FNC$(21,23)"Select sort criteria  <MENU>  ";
  22. 220 C$=INPUT$(1):C=VAL(C$)
  23. 230 IF C$=CHR$(13) THEN PRINT ER$:RUN"MENU"
  24. 240 IF C<1 OR C>5 THEN PRINT CHR$(7);:GOTO 220
  25. 250 PRINT CHR$(27)"E"CHR$(27)"\Standby one";:MX=32767:MN=0
  26. 260 OPEN "R",2,"B:AIRPORTS.RND",255:GOSUB 1410:MD=MD*5:PRINT"..."
  27. 270 DIM ID$(MD+1),ST$(MD+1),REF(MD+1)
  28. 280 'build indices for ident, city, state, facilities and location on file
  29. 290 FOR J=1 TO MD:REC=((J-1)\5)+1:SS=(J-1) MOD 5
  30. 300 IF LOC(2)<>REC THEN GET #2,REC
  31. 310 FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS DU$,20 AS A$,2 AS D1$,
  32.  
  33. 4 AS M1$,2 AS D$,4 AS M$
  34. 320 ID$(J)=ID$:IF ASC(ID$)=0 THEN ID$(J)=SPACE$(5)
  35. 330 IF ID$(J)="" THEN ID$(J)=SPACE$(5)
  36. 340 REF(J)=J-1:I2=INSTR(A$,", ")+2:IF I2=2 THEN I2=INSTR(A$,",")+1
  37. 350 X$=MID$(A$,I2,2)
  38. 360 '
  39. 370 D6=CVI(D1$):M6=CVS(M1$):D5=CVI(D$):M5=CVS(M$):M1=M6/60:P2=D6+M1:M=M5/60
  40. 380 P1=D5+M:IF J=1 THEN N=P2:SO=P2:E=P1:W=P1
  41. 390 IF P2>N THEN N=P2:NI$=ID$:N$=A$
  42. 400 IF P2<SO AND P2<>0 THEN SO=P2:SI$=ID$:S$=A$
  43. 410 IF P1<E AND P2<>0 THEN E=P1:EI$=ID$:EJ$=A$
  44. 420 IF P1>W THEN W=P1:WI$=ID$:W$=A$
  45. 430 '
  46. 440 ON C GOTO 480,460,470,450,500
  47. 450 X$=X$+LEFT$(FAC$,2):GOTO 490
  48. 460 GOTO 490
  49. 470 X$=X$+LEFT$(A$,I2):GOTO 490
  50. 480 X$=LEFT$(ID$,1)
  51. 490 GOSUB 1030:ST$(J)=X$
  52. 500 NEXT J
  53. 510 IF C=5 THEN 610
  54. 520 PRINT ER$
  55. 530 M=MD
  56. 540 M=INT(M/2):IF M=0 THEN 610
  57. 550 J1=1:K1=MD-M
  58. 560 I1=J1
  59. 570 L1=I1+M:IF ST$(I1)+ID$(I1)<ST$(L1)+ID$(L1) THEN 600
  60. 580 SWAP ST$(I1),ST$(L1):SWAP ID$(I1),ID$(L1):SWAP REF(I1),REF(L1)
  61. 590 PRINT "~";:I1=I1-M:IF I1>=1 THEN 570
  62. 600 J1=J1+1:PRINT" ";:IF J1>K1 THEN 540 ELSE 560
  63. 610 ' Printout Airport/Facility Listing
  64. 620 PRINT ER$:PRINT"Output:  Enter P for printer, S for screen  ";
  65. 630 X$=INPUT$(1):GOSUB 1030:PRINT:IF X$="P" THEN GOSUB 1070:GOTO 1080
  66. 640 IF X$="S" THEN LS=0 ELSE PRINT BL$:GOTO 620
  67. 650 PRINT ER$E$"["FNC$(25,1);
  68. 660 PRINT "Screen in 'hold' mode; simultaneously press SCROLL and SHIFT";
  69. 670 PRINT " for more..."FNC$(1,1)"Sort criteria: ";
  70. 680 ON C GOTO 690,700,710,720,730
  71. 690 PRINT "Identifier";:GOTO 740
  72. 700 PRINT "State/Identifier";:GOTO 740
  73. 710 PRINT "State/City";:GOTO 740
  74. 720 PRINT "State/Facilities/Identifier";:GOTO 740
  75. 730 PRINT "As filed (no sort)";
  76. 740 GOSUB 1440:PRINT TAB(56)TM$" "D5$:PRINT:FOR J=1 TO MD
  77. 750 IF ID$(J)=SPACE$(5) THEN S=S+1:GOTO 970
  78. 760 REC=(REF(J)\5)+1:SS=REF(J) MOD 5:IF LREC<>REC THEN LREC=REC:GET#2,REC
  79. 770 FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS FR$,20 AS NM$,2 AS D1$,
  80.  
  81. 4 AS M1$,2 AS D$,4 AS M$,4 AS V$,1 AS V1$,2 AS EL$
  82. 780 IF C=5 AND J=1 THEN 810
  83. 790 IF C=5 OR LEFT$(ST$(J-1),2)=LEFT$(ST$(J),2) THEN 840
  84. 800 PRINT CL$CL$TAB(30)"****** "LEFT$(ST$(J),2);" ******"CL$
  85. 810 IF C=5 THEN PRINT "Ref";
  86. 820 PRINT TAB(5)"Ident Fac  Freq"TAB(32)"Name"TAB(47)"Lat";
  87. 830 PRINT TAB(56)"Long"TAB(65)"Var"TAB(71)"Elev"CL$
  88. 840 IF C=5 THEN PRINT USING"###";J-1; ELSE PRINT USING"###";J-S;
  89. 850 PRINT TAB(5)ID$TAB(11)FAC$TAB(15);
  90. 860 F5=CVS(FR$):IF F5=0 THEN 910
  91. 870 IF F5>136 THEN PRINT USING"####";F5;:GOTO 910
  92. 880 IF F5*10\1=F5*10/1 THEN PRINT USING"####.#";F5;:GOTO 910
  93. 890 IF F5*100\1=F5*100/1 THEN PRINT USING"####.##";F5;:GOTO 910
  94. 900 PRINT USING"###.###";F5;
  95. 910 PRINT TAB(23);NM$;:D6=CVI(D1$):PRINT TAB(45);USING"##";D6;
  96. 920 M6=CVS(M1$):PRINT TAB(48);USING"##.#";M6;
  97. 930 D5=CVI(D$):PRINT TAB(54);USING"###";D5;
  98. 940 M5=CVS(M$):PRINT TAB(58);USING"##.#";M5;
  99. 950 V5=CVS(V$):PRINT TAB(63);USING"###.#";V5;:PRINT V1$;
  100. 960 E5=CVI(EL$):PRINT TAB(69);USING"#####";E5
  101. 970 NEXT J
  102. 980 PRINT:PRINT:PRINT "Farthest North:  "NI$" "N$
  103. 990 PRINT "Farthest South:  "SI$" "S$:PRINT "Farthest East:   "EI$" "EJ$
  104. 1000 PRINT "Farthest West:   "WI$" "W$
  105. 1010 PRINT FNC$(25,25)L$"Press <RETURN> to continue...";
  106. 1020 LINE INPUT A$:PRINT CHR$(27)"\";:GOTO 90
  107. 1030 'map lc
  108. 1040 FOR L=1 TO LEN(X$):U$=MID$(X$,L,1)
  109. 1050 IF ASC(U$)>96 AND ASC(U$)<123 THEN MID$(X$,L,1)=CHR$(ASC(U$)-32)
  110. 1060 NEXT L:RETURN
  111. 1070 PRINT"Please align paper, then press <RETURN>";:LINE INPUT X$:RETURN
  112. 1080 LPRINT "Sort criteria: ";
  113. 1090 ON C GOTO 1100,1110,1120,1130,1140
  114. 1100 LPRINT "Identifier";:GOTO 1150
  115. 1110 LPRINT "State/Identifier";:GOTO 1150
  116. 1120 LPRINT "State/City";:GOTO 1150
  117. 1130 LPRINT "State/Facilities/Identifier";:GOTO 1150
  118. 1140 LPRINT "As filed (no sort)";
  119. 1150 GOSUB 1440:LPRINT TAB(56)TM$" "D5$;:LPRINT:FOR J=1 TO MD
  120. 1160 IF ID$(J)=SPACE$(5) THEN S=S+1:GOTO 1370
  121. 1170 REC=(REF(J)\5)+1:SS=REF(J) MOD 5:IF LREC<>REC THEN LREC=REC:GET#2,REC
  122. 1180 FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS FR$,20 AS NM$,2 AS D1$,
  123.  
  124. 4 AS M1$,2 AS D$,4 AS M$,4 AS V$,1 AS V1$,2 AS EL$
  125. 1190 IF C=5 AND J=1 THEN 1220
  126. 1200 IF C=5 OR LEFT$(ST$(J-1),2)=LEFT$(ST$(J),2) THEN 1250
  127. 1210 LPRINT CL$CL$TAB(30)"****** "LEFT$(ST$(J),2);" ******"CL$
  128. 1220 IF C=5 THEN LPRINT "Ref";
  129. 1230 LPRINT TAB(5)"Ident Fac  Freq"TAB(32)"Name"TAB(47)"Lat";
  130. 1240 LPRINT TAB(56)"Long"TAB(65)"Var"TAB(71)"Elev"CL$
  131. 1250 IF C=5 THEN LPRINT USING"###";J-1; ELSE LPRINT USING"###";J-S;
  132. 1260 LPRINT TAB(5)ID$TAB(11)FAC$TAB(15);:F5=CVS(FR$):IF F5=0 THEN 1310
  133. 1270 IF F5>136 THEN LPRINT USING"####";F5;:GOTO 1310
  134. 1280 IF F5*10\1=F5*10/1 THEN LPRINT USING"####.#";F5;:GOTO 1310
  135. 1290 IF F5*100\1=F5*100/1 THEN LPRINT USING"####.##";F5;:GOTO 1310
  136. 1300 LPRINT USING"###.###";F5;
  137. 1310 LPRINT TAB(23);NM$;:D6=CVI(D1$):LPRINT TAB(45);USING"##";D6;
  138. 1320 M6=CVS(M1$):LPRINT TAB(48);USING"##.#";M6;
  139. 1330 D5=CVI(D$):LPRINT TAB(54);USING"###";D5;
  140. 1340 M5=CVS(M$):LPRINT TAB(58);USING"##.#";M5;
  141. 1350 V5=CVS(V$):LPRINT TAB(63);USING"###.#";V5;:LPRINT V1$;
  142. 1360 E5=CVI(EL$):LPRINT TAB(69);USING"#####";E5
  143. 1370 NEXT J
  144. 1380 LPRINT:LPRINT:LPRINT "Farthest North: "NI$" "N$
  145. 1390 LPRINT "Farthest South: "SI$" "S$:LPRINT"Farthest East:  "EI$" "EJ$
  146. 1400 LPRINT "Farthest West:  "WI$" "W$:LPRINT CHR$(12):GOTO 1010
  147. 1410 MD=(MX+MN)\2:GET #2,MD:IF EOF(2) THEN MX=MD ELSE MN=MD
  148. 1420 IF MX>MN+1 THEN 1410 ELSE MD=MN:RETURN
  149. 1430 ' date and time subroutines
  150. 1440 D5$="" ' :A=-2508:CALL A:FOR A=-2605 TO -2597:D5$=D5$+CHR$(PEEK(A)):NEXT A
  151. 1450 TM$="" ' :FOR A=-2596 TO -2589:TM$=TM$+CHR$(PEEK(A)):NEXT A
  152. 1460 RETURN
  153.  A=-2605 TO -2597:D5$=D5$+CHR$(PEEK(A)):NEXT A
  154. 1450 TM$="" ' :FOR A=-2596 TO -2589:TM$=TM$+CHR$(PEEK(A)):NEXT A
  155. 1460 RE