home *** CD-ROM | disk | FTP | other *** search
- 10 ' AIRROUTE.BAS NAVPROGseven Route Program 22-Jan-82 Rev 2/10/83
- 20 '
- 30 ' (c) Copyright 1982 Alan Bose
- 40 ' President, Taildragger Flyers
- 50 ' Ross Field, Benton Harbor, MI
- 60 '
- 70 ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr.
- 80 '
- 90 CLEAR:WIDTH 255:ON ERROR GOTO 1080:DEFINT I-J
- 100 BL$=CHR$(7):E$=CHR$(27):ER$=E$+"E":PG$=E$+"p":QG$=E$+"q":G$=E$+"F"
- 110 NG$=E$+"G":Y$=E$+"Y":L$=E$+"l":J$=E$+"j":K$=E$+"k":J1$=E$+"J"
- 120 DEF FNC$(C1,C2)=Y$+CHR$(C1+31)+CHR$(C2+31)
- 130 PRINT FNC$(25,1)ER$E$"H"ER$"Standby one";:MX=32767:MN=0
- 140 '
- 150 OPEN "R",1,"B:AIRPORTS.RND",255:GOSUB 1110:PRINT"..."
- 160 OPEN "R",2,"B:AIRINDEX.RND",255:MD=(MD*5)-1:DIM ID$(MD):FOR J=0 TO MD
- 170 REC=(J\51)+1:SS=J MOD 51:IF LOC(2)<>REC THEN GET#2,REC
- 180 FIELD #2,SS*5 AS DU$,5 AS ID$:ID$(J)=ID$:NEXT J:CLOSE#2:IM=MD
- 190 '
- 200 PRINT ER$FNC$(1,25)"NAVPROGseven Route Preparation"
- 210 PRINT FNC$(13,19)"Enter number of checkpoints (10 max.) <MENU> "J$;
- 220 PRINT STRING$(2,95)K$;:LINE INPUT N$:N=VAL(N$)
- 230 IF N$="" THEN CLOSE:RUN"MENU"
- 240 IF N<2 OR N>10 THEN PRINT BL$"2 to 10 checkpoints only":GOTO 210
- 250 'data box
- 260 PRINT FNC$(2,1)J1$:PRINT G$FNC$(3,6)"f";
- 270 FOR J=7 TO 74:PRINT "a";:NEXT J:PRINT "c":PRINT FNC$(4+N,6)"e";
- 280 FOR J=7 TO 74:PRINT "a";:NEXT J:PRINT "d"
- 290 PRINT FNC$(3,12)"s"FNC$(3,15)"s"FNC$(3,23)"s"FNC$(3,44)"s";
- 300 PRINT FNC$(3,52)"s"FNC$(3,61)"s"FNC$(3,69)"s"
- 310 PRINT FNC$(4+N,12)"u"FNC$(4+N,15)"u"FNC$(4+N,23)"u";
- 320 PRINT FNC$(4+N,44)"u"FNC$(4+N,52)"u"FNC$(4+N,61)"u"FNC$(4+N,69)"u"
- 330 FOR I=1 TO N:PRINT FNC$(3+I,6)"`"FNC$(3+I,12)"`"FNC$(3+I,15)"`";
- 340 PRINT FNC$(3+I,23)"`"FNC$(3+I,44)"`"FNC$(3+I,52)"`";
- 350 PRINT FNC$(3+I,61)"`"FNC$(3+I,69)"`"FNC$(3+I,75)"`";:NEXT I
- 360 PRINT NG$:PRINT FNC$(2,7)"Ident Fac Freq"FNC$(2,32)"Name"
- 370 PRINT FNC$(2,47)"Lat"FNC$(2,55)"Long"FNC$(2,64)"Var"FNC$(2,70)"Elev"
- 380 '
- 390 FOR I=1 TO N
- 400 PRINT FNC$(N+6,1)"Enter checkpoint"I" <EXIT> "J$;
- 410 PRINT STRING$(5,95)K$;:LINE INPUT X$:IF X$="" THEN 200
- 420 IF LEN(X$)>5 THEN PRINT BL$"5 characters maximum":GOTO 400
- 430 IF LEN(X$)<2 THEN PRINT BL$"2 characters minimium":GOTO 400
- 440 GOSUB 1040:P$=X$+SPACE$(5-LEN(X$))
- 450 'search index for match & get
- 460 RO=I+4
- 470 FD=0
- 480 FOR J=0 TO IM:IF ID$(J)<>P$ THEN 530
- 490 IF FD=1 THEN RO=N+8:GET #1,REC:PRINT FNC$(N+8,1)J1$:GOSUB 610:RO=N+9:FD=2
- 500 PI=J
- 510 IF FD>1 THEN REC=(J\5)+1:SS=J MOD 5:GET#1,REC:GOSUB 610:FD=FD+1:RO=RO+1
- 520 IF FD=0 THEN FD=1:REC=(J\5)+1:SS=J MOD 5:GET#1,REC
- 530 NEXT J
- 540 IF FD<>0 THEN 560
- 550 PRINT BL$"Can't find "P$:PRINT"Return to menu and input data?":GOTO 400
- 560 IF FD=1 THEN 600
- 570 PRINT FNC$(RO+1,1)"Enter number of your choice <"PI"> "J$;
- 580 PRINT STRING$(3,95)K$;:LINE INPUT X$:IF X$="" THEN 600
- 590 PI=VAL(X$):REC=(PI\5)+1:SS=PI MOD 5:GET#1,REC
- 600 PRINT FNC$(N+6,1)J1$:RO=I+3:FD=0:GOSUB 610:NEXT I:GOTO 800
- 610 'decode & display
- 620 REF(I)=PI
- 630 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$
- 640 F5=CVS(FR$):D6=CVI(D1$):M6=CVS(M1$):D5=CVI(D$):M5=CVS(M$):V5=CVS(V$)
- 650 E5=CVI(EL$):I$(I)=ID$:FC$(I)=FAC$:FR(I)=F5:P$(I)=NM$
- 660 M1=M6/60:P2(I)=D6+M1:M=M5/60:P1(I)=D5+M:V(I)=V5:V$(I)=V1$:EL(I)=E5
- 670 PRINT FNC$(RO,1);:IF FD=0 THEN PRINT I; ELSE PRINT PI;
- 680 PRINT FNC$(RO,7)ID$FNC$(RO,13)FAC$;FNC$(RO,16);
- 690 IF F5=0 THEN PRINT SPC(7);:GOTO 740
- 700 IF F5>136 THEN PRINT USING"####";F5;:GOTO 740
- 710 IF F5*10\1=F5*10/1 THEN PRINT USING"####.#";F5;:GOTO 740
- 720 IF F5*100\1=F5*100/1 THEN PRINT USING"####.##";F5;:GOTO 740
- 730 PRINT USING"###.###";F5;
- 740 PRINT FNC$(RO,24);NM$;FNC$(RO,45);USING"##";D6;
- 750 PRINT FNC$(RO,48);USING"##.#";M6;
- 760 PRINT FNC$(RO,53);USING"###";D5;
- 770 PRINT FNC$(RO,57);USING"##.#";ABS(M5);
- 780 PRINT FNC$(RO,62);USING"###.#";V5;
- 790 PRINT FNC$(RO,68);V1$;FNC$(RO,70);USING"#####";E5:RETURN
- 800 '
- 810 PRINT FNC$(N+6,1)J1$"Route of flight correct? (Y or N) <Y> ";
- 820 X$=INPUT$(1):PRINT X$:IF X$=CHR$(13) THEN X$="Y"
- 830 GOSUB 1040:IF X$<>"N" AND X$<>"Y" THEN PRINT BL$:GOTO 810
- 840 IF X$="N" THEN 210 ELSE CLOSE
- 850 PRINT FNC$(N+6,1)J1$;
- 860 PRINT"Save route of flight for future use? (Y or N) <Y> ";
- 870 X$=INPUT$(1):PRINT X$:IF X$=CHR$(13) THEN X$="Y"
- 880 GOSUB 1040:IF X$<>"N" AND X$<>"Y" THEN PRINT BL$:GOTO 850
- 890 IF X$<>"N" THEN GOSUB 930
- 900 F$="B:FLIGHT.SEQ":GOSUB 1030
- 910 PRINT FNC$(N+6,1)J1$"Standby one...":RUN"NAVPROG7"
- 920 '
- 930 OPEN"I",1,"B:ROUTINGS.DAT"
- 940 PRINT FNC$(N+6,1)J1$"Standby one..."
- 950 RF$=LEFT$(I$(1),3)+"."+LEFT$(I$(N),3):INPUT#1,RN:DIM RT$(RN+1)
- 960 FOR J=1 TO RN:LINE INPUT #1,RT$(J):IF RT$(J)=RF$ THEN DR=1
- 970 NEXT J:CLOSE
- 980 RT$(RN+1)=RF$:IF ASC(RF$)<65 OR ASC(RF$)>90 THEN RF$="X"+RF$
- 990 F$="B:"+RF$:GOSUB 1030:IF DR=1 THEN RETURN
- 1000 OPEN"O",1,"B:ROUTINGS.DAT":PRINT#1,RN+1:FOR J=1 TO RN+1:PRINT#1,RT$(J)
- 1010 NEXT J:CLOSE:RETURN
- 1020 '
- 1030 OPEN"O",1,F$:FOR J=1 TO N:PRINT#1,I$(J):PRINT#1,REF(J):NEXT J:CLOSE:RETURN
- 1040 'map lc
- 1050 FOR L=1 TO LEN(X$):U$=MID$(X$,L,1)
- 1060 IF ASC(U$)>96 AND ASC(U$)<123 THEN MID$(X$,L,1)=CHR$(ASC(U$)-32)
- 1070 NEXT L:RETURN
- 1080 'error trap
- 1090 IF ERR=53 AND ERL=930 THEN RESUME 980
- 1100 ON ERROR GOTO 0
- 1110 MD=(MX+MN)\2:GET #1,MD:IF EOF(1) THEN MX=MD ELSE MN=MD
- 1120 IF MX>MN+1 THEN 1110 ELSE MD=MN:RETURN
- 100 ON ERROR GOTO 0
- 1110 MD=(MX+MN)\2:GET #1,MD:IF EOF(1