home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-02-11 | 6.5 KB | 178 lines |
- 1000 REM Program to locate television satellites for a given latitude
- 1010 REM and longitude. This program is useful for TVRO owners.
- 1020 REM Additional satellites can be placed in the data table.
- 1030 REM
- 1040 REM P.G. Wohlmut Copyright 1983 July 8, 1983
- 1050 REM Updated 1985 July 9, 1985
- 1060 REM
- 1070 REM Rev. 11. February 1987 by Andrew Poth - Program restructured for
- 1080 REM clarity. Eliminated degrees to deg-min-sec conversion in output,
- 1090 REM which had an algorithm error for negative values.
- 1100 REM Fixed program to work on equator and in southern hemisphere.
- 1110 REM Reformatted output for 80 column, 25 row display. Added KEY ON
- 1120 REM upon program termination to restore soft keys.
- 1130 LET PI=3.14159
- 1140 DIM CITY$(20),CIT$(20),LAT(20,3),LONG(20,3)
- 1150 KEY OFF
- 1160 RESTORE 8000 'This is where Earth station data is listed.
- 1170 CLS 'Top of Main Loop.
- 1180 LET ENDFLAG=0
- 1190 FOR I= 1 TO 20 'Read city names, lat. & long. into arrays.
- 1200 READ CITY$(I)
- 1210 IF CITY$(I)="end" THEN LET I=I-1: LET ENDFLAG=1: GOTO 1310
- 1220 PRINT USING "###";I,
- 1230 LET CT$=LEFT$(CITY$(I),LEN(CITY$(I))-2)
- 1240 LET ST$=RIGHT$(CITY$(I),2)
- 1250 IF ST$="\\" THEN LET ST$="" 'No state name; blank it out.
- 1260 LET CIT$(I)=CT$ + " " +ST$
- 1270 PRINT " ";CIT$(I)
- 1280 READ LAT(I,1),LAT(I,2),LAT(I,3)
- 1290 READ LONG(I,1),LONG(I,2),LONG(I,3)
- 1300 NEXT I
- 1310 IF I=0 THEN 1420
- 1320 PRINT
- 1330 LINE INPUT " Which city # (press <Retrn> for more) ?";Z$
- 1340 IF Z$="" AND ENDFLAG=0 THEN 1170
- 1350 IF Z$="" AND ENDFLAG=1 THEN 1420
- 1360 LET Z=VAL(Z$)
- 1370 IF Z<1 OR Z>I THEN 1330
- 1380 LET DT=LAT(Z,1) : LET MT=LAT(Z,2) : LET ST=LAT(Z,3)
- 1390 LET DG=LONG(Z,1) : LET MG=LONG(Z,2) : LET SG=LONG(Z,3)
- 1400 LET CT$=CIT$(Z)
- 1410 GOTO 1550
- 1420 BEEP
- 1430 CLS
- 1440 PRINT "END OF DATABASE - Input data manually for locations not listed."
- 1450 PRINT
- 1460 LINE INPUT "Your city name ? ";CT$
- 1470 PRINT
- 1480 PRINT "Enter POSITIVE integers (+deg,+min,+sec) for NORTH LATITUDES and"
- 1490 PRINT "for WEST LONGITUDES."
- 1500 PRINT "Enter NEGATIVE integers (-deg,-min,-sec) for SOUTH LATITUDES and"
- 1510 PRINT "for EAST LONGITUDES."
- 1520 PRINT
- 1530 INPUT "Your Latitude (deg,min,sec) ";DT,MT,ST
- 1540 INPUT "Your Longitude (deg,min,sec) ";DG,MG,SG
- 1550 CLS
- 1560 PRINT " Observer site: ";CT$
- 1570 LET LT$=" Lat. "
- 1580 LET LN$=" Long. "
- 1590 IF DT<0 OR MT<0 OR ST<0 THEN LET LT$=LT$ + "-" ELSE LET LT$=LT$ + "+"
- 1600 IF DG<0 OR MG<0 OR ST<0 THEN LET LN$=LN$ + "-" ELSE LET LN$=LN$ + "+"
- 1610 PRINT USING "# ##'##!";LT$,ABS(DT),ABS(MT),ABS(ST),CHR$(34);
- 1620 PRINT USING "## ##'##!";LN$,ABS(DG),ABS(MG),ABS(SG),CHR$(34)
- 1630 PRINT
- 1640 PRINT " : SATELLITE : AZIMUTH : ELEVATION :"
- 1650 PRINT " ======================================="
- 1660 LET SITELONG=DG+MG/60+SG/3600 : LET SITELAT=DT+MT/60+ST/3600
- 1670 LET SITELONG = SITELONG*PI/180 : LET SITELAT=SITELAT*PI/180
- 1680 RESTORE 9000 'This is where satellite data is listed.
- 1690 FOR I=1 TO 500
- 1700 READ SAT$
- 1710 IF SAT$="end" THEN 1880
- 1720 READ ANGLE
- 1730 LET SATLONG=ANGLE*PI/180
- 1740 REM *** Calculate azimuth & elevation of satellite at site.
- 1750 LET EL = ATN((COS(SATLONG-SITELONG)*COS(SITELAT)-0.15126)/SQR(1-(COS(SATLONG-SITELONG)*COS(SITELAT))^2))*180/PI
- 1760 LET A=TAN(SATLONG-SITELONG)
- 1770 LET B=SIN(SITELAT)
- 1780 IF B<>0 THEN GOTO 1820 'These lines handle cases for ground
- 1790 LET AZ=180+SGN(TAN(A))*90 'stations along the equator, i.e., the
- 1800 GOTO 1850 'denominator of equation goes to 0.
- 1810 'The following azimuth equation handles all other ground station sites:
- 1820 LET AZ=180+ATN(TAN(SATLONG-SITELONG)/SIN(SITELAT))*180/PI
- 1830 IF SITELAT<0 THEN LET AZ=AZ-180
- 1840 IF AZ<0 THEN LET AZ=AZ+360
- 1850 REM *** End of azimuth and elevation calculation.
- 1860 PRINT USING "\\:_ \ \: ####.# : ####.# :";" ",SAT$,AZ,EL
- 1870 NEXT I
- 1880 PRINT " ======================================="
- 1890 LOCATE 25,10:PRINT "Another location? ";
- 1900 LET Z$=INKEY$
- 1910 IF Z$="" THEN 1900 'Loop until a key is pressed.
- 1920 IF Z$="Y" OR Z$="y" THEN 1160
- 1930 LOCATE 25,10:PRINT "Press <Esc> to terminate";
- 1940 LET Z$=INKEY$
- 1950 IF Z$<>CHR$(27) THEN 1940
- 1960 CLS
- 1970 KEY ON
- 1980 END
- 8000 REM *** CITY NAME[STATE], LATITUDE (dms), LONGITUDE (dms) DATA ***
- 8010 REM Make last 2 characters of City Name = \\ to blank State field.
- 8020 DATA AlbuquerqueNM,35,0,0,106,40,0
- 8030 DATA AnchorageAK,61,10,0,150,0,0
- 8040 DATA AtlantaGA,33,30,0,84,20,0
- 8050 DATA BakersfieldCA,35,30,0,120,10,0
- 8060 DATA BaltimoreMD,39,15,0,76,40,0
- 8070 DATA BangorME,44,45,0,68,45,0
- 8080 DATA BirminghamAL,33,30,0,86,45,0
- 8090 DATA BismarckND,46,45,0,100,45,0
- 8100 DATA BostonMA,42,20,0,71,5,0
- 8110 DATA BuffaloNY,43,0,0,78,50,0
- 8120 DATA ButteMT,46,0,0,112,30,0
- 8130 DATA CharlestonSC,38,20,0,81,35,0
- 8140 DATA ChicagoIL,41,10,0,87,40,0
- 8150 DATA ClevelandOH,41,20,0,81,40,0
- 8160 DATA DallasTX,33,0,0,97,0,0
- 8170 DATA DenverCO,39,45,0,105,0,0
- 8180 DATA Des MoinesIA,41,30,0,93,40,0
- 8190 DATA DetroitMI,42,30,0,83,0,0
- 8200 DATA Earth Station WD-72\\,39,53,57,86,12,04
- 8210 DATA ElkoNV,40,50,0,115,40,0
- 8220 DATA EurekaCA,40,45,0,124,10,0
- 8230 DATA FairbanksAK,64,38,50,148,0,0
- 8240 DATA FlagstaffAZ,35,25,0,111,30,0
- 8250 DATA FresnoCA,36,55,0,119,45,0
- 8260 DATA HartfordCT,41,45,0,72,40,0
- 8270 DATA HonoluluHI,21,20,0,157,50,0
- 8280 DATA HoustonTX,29,50,0,95,10,0
- 8290 DATA IndianapolisIN,39,45,0,86,10,0
- 8300 DATA JacksonMS,32,15,0,90,10,0
- 8310 DATA JacksonvilleFL,30,15,0,81,40,0
- 8320 DATA Kansas CityMO,39,0,0,94,30,0
- 8330 DATA Las VegasNV,36,10,0,115,10,0
- 8340 DATA Little RockAR,34,45,0,92,15,0
- 8350 DATA Los AngelesCA,34,0,0,118,15,0
- 8360 DATA LouisvilleKY,38,10,0,85,45,0
- 8370 DATA MiamiFL,25,45,0,80,15,0
- 8380 DATA MilwaukeeWS,43,0,0,88,0,0
- 8390 DATA MinneapolisMN,45,0,0,93,15,0
- 8400 DATA NashvilleTN,36,15,0,86,45,0
- 8410 DATA New OrleansLA,30,0,0,90,0,0
- 8420 DATA New YorkNY,40,45,0,74,0,0
- 8430 DATA OmahaNE,41,15,0,96,0,0
- 8440 DATA OrlandoFL,28,35,0,81,30,0
- 8450 DATA PhiladelphiaPA,40,0,0,75,0,0
- 8460 DATA PhoenixAZ,33,30,0,112,5,0
- 8470 DATA PortlandOR,45,30,0,122,35,0
- 8480 DATA ProvidenceRI,41,45,0,71,15,0
- 8490 DATA RenoNV,39,30,0,119,45,0
- 8500 DATA SacramentoCA,38,40,0,121,30,0
- 8510 DATA Saint LouisMI,38,40,0,90,10,0
- 8520 DATA Salt Lake CityUT,40,50,0,112,0,0
- 8530 DATA San DiegoCA,33,0,0,117,10,0
- 8540 DATA SeattleWA,47,30,0,122,15,0
- 8550 DATA San FranciscoCA,37,40,0,122,30,0
- 8560 DATA San JoseCA,37,15,0,121,50,0
- 8570 DATA TampaFL,28,0,0,82,30,0
- 8580 DATA TucsonAZ,32,10,0,111,35,0
- 8590 DATA TulsaOK,36,10,0,96,0,0
- 8600 DATA WashingtonDC,38,55,0,77,5,0
- 8610 DATA Winston SalemNC,36,10,0,80,15,0
- 8620 DATA BogotaSA,4,36,0,74,5,0
- 8630 DATA Buenos AiresSA,-34,-36,0,58,26,0
- 8640 DATA OttawaCN,45,24,0,75,43,0
- 8650 DATA QuitoSA,0,-14,0,78,30,0
- 8660 DATA Rio de JaneiroSA,-22,-54,0,43,13,0
- 8670 DATA TacubayaMX,19,24,0,99,12,0
- 8680 DATA end
- 9000 REM *** GEOSYNCHRONOUS SATELLITE NAME & LONGITUDE DATA ***
- 9010 DATA Anik A3,114,Anik B,109,Anik D1,104.5,Aurora,143
- 9020 DATA Comstar D3,87,Comstar D4,127
- 9030 DATA Galaxy 1,134,Galaxy 3,93.5
- 9040 DATA Satcom F1R,139,Satcom F3,131,Satcom F4,83,Spacenet 1,120
- 9050 DATA Telstar 301,96
- 9060 DATA Westar 1/2,79,Westar 3,91,Westar 4,99,Westar 5,122.5
- 9070 DATA end
- 9999 END
-