home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 2.7 KB | 78 lines |
- 10 ' RNAVREF.BAS NAVPROGseven RNAV Cross-Reference 22-Jan-82 Rev 01/22/86
- 20 ' Version F.03.02 for the IBM PC
- 30 ' (c) Copyright 1982 Alan Bose
- 40 ' 1224 Allison Lane
- 50 ' Schaumburg, IL 60194
- 60 '
- 70 ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr.
- 75 ' HP-150 modifications (c) 1984 by Alan Bose
- 76 ' PC-DOS modifications (c) 1985 by Bruce Carson
- 80 '
- 90 CLEAR:ON ERROR GOTO 650:WIDTH 80:DEFINT I-J
- 92 PROGDISK$="A:":DATADISK$="B:"
- 94 OPEN "I",1,"NAVDISCS.DAT"
- 96 INPUT #1,PROGDISK$,DATADISK$:CLOSE
- 98 DIM P$(20),R(20)
- 100 BL$=CHR$(7):E$=CHR$(27):U=57.2958
- 110 PRINT"Checking RNAV references...";
- 120 DEF FNS5(X)=SIN(X/U):DEF FNS6(X)=INT(X*10+0.5)/10
- 130 DEF FNS7(X)=ATN(X/SQR(1-X*X))*U
- 140 DEF FNS8(X)=SIN(ABS(A/2)/U)*COS(X/U)/SIN(Q2/2)
- 150 '
- 160 OPEN"I",1,DATADISK$+"FLIGHT.SEQ"
- 170 FOR I=1 TO 20:LINE INPUT#1,P$(I):INPUT#1,R(I):N=I
- 180 NEXT I:CLOSE
- 190 '
- 200 OPEN"I",1,DATADISK$+"RNAVLIST.DAT":INPUT#1,KY
- 210 DIM LI$(KY),R1$(KY),R1(KY),R2$(KY),R2(KY)
- 220 FOR J=1 TO KY:LINE INPUT#1,LI$(J):LINE INPUT#1,R1$(J):INPUT#1,R1(J)
- 230 LINE INPUT#1,R2$(J):INPUT#1,R2(J):NEXT J:CLOSE
- 240 '
- 250 FOR I=1 TO N:FOR J=1 TO KY:IF P$(I)=LI$(J) THEN CP=1:LPT=1 ELSE 310
- 260 PI=R(I):K=0:GOSUB 350:PI=R1(J):K=1:GOSUB 350:IF R1$(J)="" THEN 280
- 270 L=1:M=0:GOSUB 450
- 280 IF R2$(J)="" THEN 310 ELSE PI=R2(J):K=2:GOSUB 350
- 290 IF R2$(J)="" THEN 310 ELSE L=2:M=0:GOSUB 450
- 300 IF R1$(J)="" OR R2$(J)="" THEN 310 ELSE L=1:M=2:GOSUB 450
- 310 CP=0:NEXT J,I:IF LPT=1 THEN LPRINT CHR$(12)
- 320 CLOSE:KILL DATADISK$+"FLIGHT.SEQ"
- 330 RUN PROGDISK$+"NAVMENU"
- 340 '
- 350 IF DE=0 THEN OPEN"R",1,DATADISK$+"AIRPORTS.RND",255:DE=1
- 360 REC=(PI\5)+1:SS=PI MOD 5:GET#1,REC
- 370 'decode
- 380 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$
- 390 ' FINISH FIELD
- 400 F5=CVS(FR$):D6=CVI(D1$):M6=CVS(M1$):D5=CVI(D$):M5=CVS(M$):V5=CVS(V$)
- 410 E5=CVI(EL$):I$(K)=ID$:FC$(K)=FAC$:FR(K)=F5:NM$(K)=NM$
- 420 M1=M6/60:P2(K)=D6+M1:M=M5/60:P1(K)=D5+M:V(K)=V5:V$(K)=V1$:EL(K)=E5
- 430 IF V$(K)="E" THEN V(K)=-V(K)
- 440 RETURN
- 450 'distance
- 460 A=P1(L)-P1(M):B1=P2(L)-P2(M):P#=COS(P2(L)/U)*COS(P2(M)/U)
- 470 Q=P#*COS(ABS(A)/U)+COS(ABS(B1)/U)-P#:Q2=ATN(SQR(1-Q*Q)/Q):Q=Q2*U*60
- 480 C=FNS6(Q):IF C=0 THEN T=0:Y=0:R=0:GOTO 640
- 490 'true bearing
- 500 S=FNS8((P2(L)+P2(M))/2):IF S>=1 THEN S=90-S ELSE S=FNS7(S)
- 510 IF A>0 AND B1=0 THEN T=90:GOTO 560
- 520 IF A<0 AND B1=0 THEN T=270:GOTO 560
- 530 IF A>0 AND B1<0 THEN T=S:GOTO 560
- 540 IF A>=0 AND B1>0 THEN T=180-S:GOTO 560
- 550 IF A<0 AND B1>0 THEN T=180+S ELSE T=360-S
- 560 T=FNS6(T)
- 570 'magnetic bearing
- 580 V1=(V(L)+V(M))/2:V2=FNS6(V1):Y=T+V2:IF Y<0 THEN Y=360-Y
- 590 IF Y>360 THEN Y=Y-360
- 600 'print
- 610 IF CP=1 THEN LPRINT:LPRINT"RNAV bearings for ";I$(0);" ";NM$(0):CP=0
- 620 IF M=0 THEN LPRINT"NAV"L": "I$(L);FR(L);C;"nm "Y"deg Mag (";T;"True )"
- 630 IF M=2 THEN LPRINT"NAV 1 to NAV 2 : ";C;"nm ";Y;"deg Mag (";T;"True )"
- 640 RETURN
- 650 'error trap
- 660 IF ERL=160 AND ERR=53 THEN RESUME 320
- 670 IF ERL=170 AND ERR=62 THEN J=21:RESUME 180
- 680 IF ERL=200 AND ERR=53 THEN RESUME 320
- 690 IF ERL=320 AND ERR=53 THEN RESUME NEXT
- 695 IF ERR=53 AND ERL=94 THEN CLOSE:RESUME 98
- 700 ON ERROR GOTO 0
-