home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
hamradio
/
bearing.bas
< prev
next >
Wrap
BASIC Source File
|
1994-07-13
|
2KB
|
83 lines
10 ' Compute Bearings
20 ' For The Tandy Model 100
30 ' adapted from a public domain program
40 ' by Paul Macdonald v1.2 01/27/85
50 ' Epson Geneva version in pcs-19 dl6
60 ' adapted for CP/M by Jim Lill 3 July 87
70 ' also made small format changes
80 CLS$=CHR$(26) : ' change this for your terminal
90 PRINT CLS$
100 PRINT "Compute Bearings Program"
110 PRINT "------------------------":PRINT
120 R=3953*12*5280*.0000254
130 PI=4*ATN(1)
140 K=1
150 KK=2
160 FOR J=K TO KK
170 Z$="Destination"
180 IF J=1 THEN Z$="Source" ELSE PRINT
190 PRINT"";Z$;" Latitude (Degs, Mins, N or S)";
200 INPUT A(J),X,S$
210 A(J)=PI*((A(J)+X/60)/180)
220 IF A(J)=0 THEN 270
230 S$=LEFT$(S$,1)
240 IF S$="N" OR S$="n" THEN 270
250 IF S$="S" OR S$="s" THEN A(J)=-A(J):GOTO 270
260 GOTO 190
270 PRINT Z$;" Longitude (Degs, Mins, E or W)";
280 INPUT B(J),X,S$
290 B(J)=PI*((B(J)+X/60)/180)
300 IF B(J)=0 OR B(J)=PI THEN 350
310 S$=LEFT$(S$,1)
320 IF S$="E" OR S$="e" THEN 350
330 IF S$="W" OR S$="w" THEN B(J)=-B(J):GOTO 350
340 GOTO 270
350 NEXT J
360 C=COS(A(2))
370 X=C*COS(B(2))
380 C=C*SIN(B(2))
390 D=SIN(A(2))
400 H=SIN(A(1))
410 G=COS(B(1))
420 J=SIN(B(1))
430 K=COS(A(1))
440 W=(G*X)+(J*C)
450 E=(H*W)-(K*D)
460 F=(G*C)-(J*X)
470 G=(K*W)+(H*D)
480 IF ABS(ABS(G)-1)<.00001 THEN 510
490 W=1-G*G
500 IF W>0 THEN H=ATN(G/SQR(W)):GOTO 520
510 H=G*PI/2
520 IF ABS(ABS(G)-1)<=.00001 OR W<=0 THEN PRINT"Any Angle OK ";:GOTO 630
530 IF E>0 THEN X=ATN(F/E):GOTO 590
540 X=PI/2
550 IF F<=0 THEN X=-X
560 IF E>=0 THEN 590
570 X=(ATN(F/E))-PI
580 IF F>=0 THEN X=X+2*PI
590 D=180*(PI-X)/PI
600 C=INT(D+.5)
610 IF C=360 THEN C=0
620 PRINT:PRINT "Heading: "C" Degrees ";
630 PRINT"and "
640 D=R*(.5*PI-H)
650 C=INT(D+.5)
660 PRINT"Range: "C" Kilometers or"
670 PRINT C*.6215" Miles."
680 PRINT:PRINT
690 INPUT"New Source (Y/N)";Y$(1)
700 INPUT"New Destination (Y/N)";Y$(2)
710 IF Y$(1)<>"Y" AND Y$(2)<>"Y" THEN GOTO 730
720 GOTO 740
730 IF Y$(1)<>"y" AND Y$(2)<>"y" THEN 810
740 K=1
750 KK=2
760 IF Y$(1)<>"Y" AND Y$(1)<>"y" THEN K=2
770 IF Y$(2)<>"Y" AND Y$(2)<>"y" THEN KK=1
780 PRINT CLS$:PRINT "Compute Bearings Program"
790 PRINT "------------------------":PRINT
800 GOTO 160
810 PRINT CLS$:PRINT:PRINT "Program Terminated on Request."
820 END