Listing of file='CIRCLE.BAS;01' on disk='vmedia/source-sector.ccvf'
1 CLEAR 8500:DIM H$(256):PLOT 27,24,8,27,4:PRINT "LOA CLR.DSP":PLOT 27,27 2 QB$= "THIS PROGRAM ENABLES THE GREAT CIRCLE DISTANCE AND " 3 QC$= "BEARING BETWEEN TWO POINTS TO BE CALCULATED AS WELL " 4 QD$= "AS SATELLITE AZIMUTH,ELEVATION AND LOCATION. PRESS RETURN FOR INSTRUCTIONS: " 5 QA$= QB$+ QC$+ QD$ 6 QA= 1:QB= 40:QC= 7:QD= 47:QE= 148:QF= 29 7 QH= 128 8 U2= 1:U3= 1:PLOT 3,64,0 9 FOR U4= QDTO QCSTEP - 1 10 PLOT 3,64,0:FOR U5= 1TO QB:NEXT U5 11 PLOT 3,QH,U4,QF,2:PRINT MID$ (QA$,U2,U3) 12 IF U3> QETHEN FOR U6= 1TO U3- QE:PLOT 3,QH,U4+ QE,QF,2:NEXT U6 13 U3= U3+ 1:NEXT U4:U3= U3- 1:U2= U2+ 1 14 FOR U6= 1TO QE 15 PLOT 3,QH,QC,QF,2:PRINT MID$ (QA$,U2,U3) 16 IF U3> QETHEN PLOT 3,UU,QC+ QE- U6,QF,2 17 U2= U2+ 1 18 PLOT 3,64,0:FOR U5= 1TO QB:NEXT U5 19 NEXT U6:INPUT "";MS$ 20 UA= 0:KQ= 0:PLOT 12,15 21 P= 3.14159265:RH= .1512 22 PRINT "THIS PROGRAM PERMITS THE FOLLOWING TO BE CALCULATED:" 23 PRINT :PRINT :PRINT "(A) THE GREAT CIRCLE DISTANCE AND BEARINGS BETWEEN ANY PLACES ON EARTH. (ENTER 1)" 24 PRINT :PRINT "(B) THE AZIMUTH AND ELEVATION OF A GIVEN SATELLITE AT ANY PLACE ON EARTH. (ENTER 2)" 25 PRINT :PRINT "(C) THE POSITION OF AN EQUATORIAL SATELLITE VISIBLE AT A GIVEN ELEVATION.(ENTER 3)" 26 PRINT :PRINT "(D) THE LOCATION FILE MAY BE ALPHABETICALLY SORTED (ENTER 4)" 27 PRINT :PRINT "(E) DATA GIVING THE LOCATION OF 256 PLACES OR SATELLITES MAY BE STORED (ENTER 5),PRINTED OUT (ENTER 6)"; 28 PRINT " OR CHANGED (ENTER 7) FOR EASY REFERENCE." 29 PRINT :PRINT :INPUT "ENTER REQUIRED FUNCTION:";BS 30 PLOT 12,15:FILE "R",1,"C",1 31 CX= 0:ON BSGOTO 63,66,67,166,34,149,33,32 32 FILE "C",1:GOTO 20 33 CX= 1 34 PLOT 12,15:PRINT "LOCATION DATA STORAGE AND CHANGE PROGRAM" 35 PRINT :IF CX= 1THEN INPUT "ENTER RECORD NUMBER:";JJ 36 PRINT :INPUT "ENTER LOCATION NAME: ";A$ 37 PRINT :INPUT "ENTER TWO CHARACTER LOCATION CODE:";AB$ 38 IF CX= 1THEN 52 39 FOR JJ= 1TO 256 40 GET 1,JJ;SA$[2],SB$[22] 41 IF SA$= " "THEN 52 42 IF SA$= AB$THEN 44 43 NEXT JJ 44 FOR XV= 22TO 1STEP - 1 45 IF ASC (MID$ (SB$,XV,1))< > 32THEN 47 46 NEXT XV 47 KA$= LEFT$ (SB$,XV) 48 PRINT :PRINT "THERE IS ALREADY A LOCATION "KA$" WITH CODE "AB$ 49 PRINT :INPUT "DO YOU WISH TO UPDATE THIS LOCATION CODE? (Y/N):";FG$ 50 IF FG$= "Y"THEN 52 51 GOTO 32 52 PRINT :INPUT "ENTER LATITUDE( H,DG,MM,SS ): ";B$,C,D,E 53 PRINT :INPUT "ENTER LONGITUDE (H,DG,MM,SS): ";Y$,F,G,H 54 CA= (F+ G/ 60+ H/ 3600)* P/ 180 55 IF Y$= "W"THEN CA= CA* - 1 56 AA= (C+ D/ 60+ E/ 3600)* P/ 180 57 IF B$= "S"THEN AA= AA* - 1 58 PUT 1,JJ;AB$[2],A$[22],AA,CA 59 PRINT :PRINT "ENTER (8) TO RETURN TO MENU,(7) TO CHANGE STORED DATA,(6)TO " 60 PRINT :INPUT "PRINT OUT DATA, OR (5) TO ENTER NEW DATA.";BS:GOTO 31 61 PLOT 12,15:PRINT :IF KQ= 1THEN 66 62 IF UA= 1THEN 67 63 PRINT :INPUT "ENTER FIRST LOCATION CODE:";XR$ 64 IF UA= 0THEN PRINT :INPUT "ENTER SECOND LOCATION CODE:";XS$:GOTO 71 65 GOTO 69 66 KQ= 1:PRINT :INPUT "ENTER SATELLITE CODE:";XR$:IF UA= 0THEN 68 67 UA= 1 68 PRINT :INPUT "ENTER STATION CODE:";XS$:IF UA= 0THEN 71 69 PRINT :INPUT "ENTER SATELLITE ELEVATION (DEGREES):";AA 70 PRINT :INPUT "ENTER SATELLITE DIRECTION (EAST OR WEST):";EW$ 71 PRINT :PRINT "** CALCULATING **" 72 IF UA= 1THEN 77 73 FOR ZZ= 1TO 256 74 GET 1,ZZ;AB$[2],A$[22],AA,CA 75 IF AB$= XR$THEN 77 76 NEXT ZZ:GOTO 165 77 FOR ZY= 1TO 256 78 GET 1,ZY;CD$[2],I$[22],BB,CB 79 IF CD$= XS$THEN 81 80 NEXT ZY:GOTO 165 81 FOR XV= 22TO 1STEP - 1 82 IF ASC (MID$ (I$,XV,1))< > 32THEN 84 83 NEXT XV 84 I$= LEFT$ (I$,XV):IF UA= 1THEN 122 85 FOR XW= 22TO 1STEP - 1 86 IF ASC (MID$ (A$,XW,1))< > 32THEN 88 87 NEXT XW 88 A$= LEFT$ (A$,XW) 89 LS= SIN (CA- CB):LC= COS (CA- CB):LN= CB- CA 90 TH= COS (AA)* COS (BB)* LC+ SIN (AA)* SIN (BB) 91 TA= SQR (1/ (TH* TH)- 1) 92 TZ= ATN (TA):TP= TZ 93 IF TH< 0THEN TP= P- TZ 94 TX= TP* 180/ P 96 NM= 60* TX 97 KM= 1.852* NM 98 SM= KM/ 1.609344 99 IF LN= 0THEN 116 100 IF ABS (LN)= PTHEN 111 101 IF SIN (AA)= 1OR SIN (BB)= - 1THEN 121 102 IF SIN (AA)= - 1OR SIN (BB)= 1THEN 120 103 GQ= LS/ SIN (TP):XA= COS (BB)* GQ* - 1:XB= COS (AA)* GQ 104 YA= XA/ SQR (1- (XA* XA)):YB= XB/ SQR (1- (XB* XB)):ZA= ATN (YA) 105 ZB= ATN (YB):QA= ATN (LC* TAN (AA)):QB= ATN (LC* TAN (BB)) 106 IF QA> BBTHEN ZA= P- ZA 107 IF ZA< 0THEN ZA= ZA+ 2* P 108 IF QB> AATHEN ZB= P- ZB 109 IF ZB< 0THEN ZB= ZB+ 2* P 110 DZ= ZA* 180/ P:DY= ZB* 180/ P:GOTO 133 111 IF SGN (AA)= 1AND SGN (BB)= 1THEN 119 112 IF SGN (AA)= - 1AND SGN (BB)= - 1THEN 118 113 IF SGN (AA)= 1THEN 115 114 IF ABS (BB)> ABS (AA)THEN 118 115 IF ABS (AA)> ABS (BB)THEN 119 116 IF AA> BBTHEN 121 117 GOTO 120 118 DZ= 180:DY= 180:GOTO 133 119 DZ= 0:DY= 0:GOTO 133 120 DZ= 0:DY= 180:GOTO 133 121 DZ= 180:DY= 0:GOTO 133 122 AA= AA* P/ 180:CQ= RH* COS (AA)* COS (AA):DQ= SIN (AA)* COS (AA):FQ= (1/ (COS (AA)* COS (AA))):JQ= SQR (FQ- RH* RH):LQ= (CQ+ DQ* JQ)/ COS (BB) 123 IF LQ> 1THEN PLOT 28:PRINT "IMPOSSIBLE ALTITUDE":GOTO 144 124 CT= ATN (SQR ((1/ (LQ* LQ))- 1)):B$= "W" 125 IF LEFT$ (EW$,1)= "W"THEN CT= CT* - 1 126 CR= CT+ CB 127 IF CR> PTHEN CR= CR- 2* P 128 IF CR< - PTHEN CR= 2* P- CR 129 CS= ABS (CR* 180/ P):F= INT (CS):G= INT ((CS- F)* 60):H= INT ((((CS- F)* 60)- G)* 60) 130 IF SGN (CR)= 1THEN B$= "E" 131 PLOT 28 132 PRINT "THE SATELLITE LONGITUDE IS: "B$;F;G;H:GOTO 144 133 IF KQ= 0THEN 137 134 SW= ATN ((COS (TP)- RH)/ SIN (TP))* 180/ P 135 IF SW< 0THEN PLOT 28:PRINT "SATELLITE BELOW HORIZON":GOTO 144 136 PLOT 28:PRINT "THE ELEVATION OF "A$;" AT "I$;" IS "SW;" DEGREES":GOTO 143 137 PLOT 28:PRINT "THE GREAT CIRCLE DISTANCE BETWEEN" 138 PRINT :PRINT A$;" AND ";I$;" IS " 139 PRINT :PRINT NM" NAUTICAL MILES" 140 PRINT :PRINT SM;" STATUTE MILES" 141 PRINT :PRINT KM;" KILOMETRES " 142 PRINT :PRINT "THE BEARING OF ";I$;" AT ";A$;" IS ";DZ;" DEGREES" 143 PRINT :PRINT "THE BEARING OF ";A$;" AT ";I$;" IS ";DY;" DEGREES" 144 PRINT :PRINT "PRESS RETURN TO CALCULATE DATA FROM THE SAME STARTING POINT," 145 PRINT :INPUT "D FOR DIFFERENT START, OR E TO RETURN TO THE MENU:";VG$ 146 IF VG$= "E"THEN 32 147 IF VG$= "D"THEN 61 148 PRINT :PLOT 12,15:GOTO 64 149 LJ= 1:AU= 25 150 PLOT 12:PRINT "RECORD"TAB( 10)"CODE"TAB( 25)"NAME"TAB( 41)"LATITUDE LONGITUDE":PRINT 151 FOR LJ= LJTO AU 152 GET 1,LJ;SA$[2],A$[22],AA,CA 153 IF SA$= " "THEN 59 154 AR= ABS (AA* 180/ P):CR= ABS (CA* 180/ P):AR= AR+ 5^ - 6:CR= CR+ 5^ - 6 155 C= INT (AR):D= INT ((AR- C)* 60):E= INT ((((AR- C)* 60)- D)* 60) 156 F= INT (CR):G= INT ((CR- F)* 60):H= INT ((((CR- F)* 60)- G)* 60) 157 IF SGN (AA)= 1THEN B$= "N":GOTO 159 158 B$= "S" 159 IF SGN (CA)= 1THEN Y$= "E":GOTO 161 160 Y$= "W" 161 PRINT ""LJTAB( 11)""SA$TAB( 17)""A$TAB( 40)""B$;""C;D;E;TAB( 52)""Y$;""F;G;H 162 IF LJ= AUTHEN 164 163 NEXT LJ 164 PLOT 3,16,29:INPUT "PRESS RETURN TO SEE REST OF LIST";JC$:AU= AU+ 25:LJ= LJ+ 1:GOTO 150 165 PRINT :PRINT :PRINT "CAN'T FIND LOCATION CODE. CHECK LIST!!":FOR II= 1TO 1500:NEXT :GOTO 32 166 PLOT 12,27,11:GG= 0:FOR JJ= 1TO 256 167 GET 1,JJ;SB$[32] 168 IF LEFT$ (SB$,2)= " "THEN 171 169 PRINT JJ,MID$ (SB$,3,22):H$(JJ)= SB$ 170 NEXT JJ 171 AB= JJ- 2:PRINT "COMMENCING TO SORT":PRINT "CURRENT SORT INCREMENT:" 172 L= (2^ INT (LOG (AB+ 1)/ LOG (2)))- 1 173 L= INT (L/ 2):PRINT L:IF L< 1THEN 178 174 FOR I= 1TO L:FOR J= I+ LTO AB+ 1STEP L:K= J:T$= H$(K) 175 IF MID$ (H$(K- L),3,22)< = MID$ (T$,3,22)THEN 177 176 H$(K)= H$(K- L):K= K- L:IF K> LTHEN 175 177 H$(K)= T$:NEXT J,I:GOTO 173 178 PRINT "ENTERING DATA:":FOR BJ= 1TO JJ- 1 179 PRINT BJSPC( 1)MID$ (H$(BJ),3,22):PUT 1,BJ;H$(BJ)[32]:NEXT BJ 180 PRINT "FILE SORTING COMPLETE!":FOR XR= 1TO 500:NEXT XR:GOTO 32