home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / engprog / grtcirc.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-10-05  |  4.1 KB  |  111 lines

  1. 10   ' KEY OFF
  2. 20  COLOR 14,9,4:CLS
  3. 30  REM                                       |----------------------|
  4. 40  REM PROGRAM WRITTEN BY--------------------| R. THWING Sr. K4EDE  |
  5. 50  REM                                       |     P.O. BOX 40      |
  6. 60  REM FOR IBM PC COMPATIBILES               |     COLUMBUS, NC     |
  7. 70  REM                                       |        28722         |
  8. 80  REM                                       |    (704) 894-3202    |
  9. 90  REM                                       |----------------------|
  10. 100  REM
  11. 110  REM DELETE ALL COLOR STATEMENTS FOR MONOCHROME MONITOR
  12. 120  REM
  13. 130  REM PROGRAM IN PUBLIC DOMAIN
  14. 140  REM
  15. 150  REM ORIGINAL FORMULA FROM HP-67 CALCULATOR MANUAL PAGE 97
  16. 160  REM
  17. 170  REM <<<<<<<<<<<<<<<<<<<< PROGRAM BEGINS >>>>>>>>>>>>>>>>>>>>>>>>>>>
  18. 180  LOCATE 2,29:PRINT"GREAT CIRCLE DISTANCES"
  19. 190  LOCATE 4,25:PRINT"CALCULATES DIRECT AIR DISTANCES"
  20. 200  LOCATE 6,27:PRINT"BETWEEN TWO LAT/LON POINTS"
  21. 210  PRINT STRING$(79,"~")
  22. 220  LOCATE 10,20:PRINT"Provisions included for entering the LAT & LON"
  23. 230  LOCATE 12,20:PRINT"points in either degrees and minutes & seconds"
  24. 240  LOCATE 14,25:PRINT"or in degrees & decimals of degrees"
  25. 250  LOCATE 16,36:PRINT"N O T E"
  26. 260  LOCATE 18,20:PRINT"South latitudes & East longitudes are NEGATIVE"
  27. 270  LOCATE 22,35:COLOR 30:PRINT"[ENTER]";
  28. 280  GOSUB 760
  29. 290  IF ZZ$= CHR$(13) THEN 300 ELSE 270
  30. 300  COLOR 15,9,3:KEY OFF:CLS
  31. 310  PRINT:PRINT"  DO YOU WANT TO "
  32. 320  PRINT  "        USE TWO LAT/LON PLACES...........Q"
  33. 330  PRINT  "        USE TEST LAT/LON DATA............T"
  34. 335  PRINT  "        ONLY CONVERT TO DECIMAL DEGREES..C"
  35. 340  S$=INKEY$:IF S$="" THEN 340
  36. 350  IF S$="T" OR S$="t" THEN GOTO 470
  37. 360  IF S$="Q" OR S$="q" THEN GOTO 370
  38. 365  IF S$="C" OR S$="c" THEN GOTO 900
  39. 366  GOTO 310
  40. 370  PRINT:PRINT"IS YOUR LAT/LON DATA IN:"
  41. 380  PRINT"     DEGREES/MINUTES/SECONDS........M":'TO CONVERT TO DECIMALS
  42. 390  PRINT"     DEGREES & DECIMAL DEGREES......D"
  43. 400  DAT$= INKEY$:IF DAT$= "" THEN 400
  44. 405  IF DAT$= "M" OR DAT$= "m" THEN GOTO 890
  45. 406  IF DAT$= "D" OR DAT$= "d" THEN GOTO 420
  46. 410  GOTO 310
  47. 420  PRINT:INPUT"START LATITUDE ";LAT1:'IN DECIMAL DEGREES ETC.
  48. 430  INPUT"START LONGITUDE ";LON1:PRINT
  49. 440  INPUT"DESTINATION LATITUDE ";LAT2
  50. 450  INPUT"DESTINATION LONGITUDE ";LON2
  51. 460  GOTO 510
  52. 470  LAT1=37.05:'TEST LAT/LON TO GIVE ANSWER OF 1315.2 NM
  53. 480  LON1=12.3
  54. 490  LAT2=15.92
  55. 500  LON2=5.72
  56. 510  R=0.0174533:'CONSTANT TO CONVERT DEGREES TO RADIANS (NEEDED BY BASIC)
  57. 520  LAS=LAT1*R:LOS=LON1*R:LAD=LAT2*R:LOD=LON2*R:'CONVERT LATS & LONS TO RADIANS
  58. 530  X=(SIN(LAS)*SIN(LAD)+COS(LAS)*COS(LAD)*COS(LOD-LOS)):'PER HP-67 BOOK
  59. 540  'BOOK NOW CALLS FOR COS^-1 WHICH IS NOT RECOGNIZED BY BASIC
  60. 550  'COS^-1=ARCCOS(X)
  61. 560  Z=-ATN(X/SQR(-X*X+1))+1.5708:'USING FORMULA FOR ARCCOS
  62. 570  M=Z/R:'CONVERT BACK TO DEGREES
  63. 580  'NOW CONVERT DEGREES TO MILES BY MULTIPLYING BY 60 (MILES PER DEGREE)
  64. 590  CLS
  65. 600  N=M*60:PRINT:PRINT TAB(20);"THE FOLLOWING ARE GREAT CIRCLE DISTANCES "
  66. 610  PRINT TAB(20);"FROM ";LAT1;"&";LON1;" TO ";LAT2;"&";LON2:PRINT
  67. 620  COLOR 14:PRINT TAB(25);USING"#####.#";N;:COLOR 15:PRINT " NAUTICAL MILES"
  68. 630  SM=N*1.1508:'CONVERT TO STATUE MILES
  69. 640  COLOR 11:PRINT TAB(25);USING"#####.#";SM;:COLOR 15:PRINT" STATUE MILES"
  70. 650  KM=N*1.852:'CONVERT TO KILOMETERS
  71. 660  COLOR 10:PRINT TAB(25);USING"#####.#";KM;:COLOR 15:PRINT" KILOMETERS"
  72. 670  LOCATE 18,35:PRINT"WHAT NOW?"
  73. 680  LOCATE 20,35:PRINT"DO ANOTHER?.............1"
  74. 690  LOCATE 21,35:PRINT"RETURN TO BASIC?........2"
  75. 700  LOCATE 22,35:PRINT"RETURN TO MS-DOS........3"
  76. 705  LOCATE 23,35:PRINT"RETURN TO MAIN MENU.....4";
  77. 710  INPUT YC
  78. 720  IF YC= 1 THEN RUN 300
  79. 730  IF YC= 2 THEN COLOR 15,0,0:CLS:NEW
  80. 740  IF YC= 3 THEN COLOR 15,0,0:GOTO 800
  81. 745  IF YC= 4 THEN COLOR 15,0,0:RUN"MAINMENU"
  82. 750  GOTO 670
  83. 760  ZZ$=INKEY$:IF ZZ$= "" THEN 760
  84. 770  RETURN
  85. 780  AZ=INP(&H379):IF AZ <> 217 THEN LOCATE 20,32:COLOR 20,15:PRINT"PRINTER NOT READY":GOTO 780:REM CHECK PRINTER STATUS
  86. 790  LOCATE 20,32:COLOR 7,0:PRINT"                   ":RETURN:REM REMOVES PRINTER STATUS
  87. 800  COLOR 31,4:CLS:FOR I=1 TO 12:PRINT:NEXT I:PRINT TAB(33)"ARE YOU SURE Y/N"
  88. 810  PLAY"DC":PRINT
  89. 820  PRINT TAB(26)"A (Y)es ACTION CANCELS BASIC!"
  90. 830  X$= INKEY$:IF X$= "" THEN 830
  91. 840  COLOR 15,0,4 :CLS
  92. 850  IF X$= "Y" OR X$="y" THEN 880
  93. 860  IF X$= "N" OR X$="n" THEN 300
  94. 870  GOTO 800
  95. 880  COLOR 15,0,0:CLS:KEY ON:SYSTEM
  96. 890  CLS
  97. 900  INPUT"ENTER START LAT AS DEGREES,MINUTES,SECONDS ";LDS,LMS,LSS
  98. 910  LMS=LMS/60:LSS=LSS/3600:LAT1=LDS+LMS+LSS
  99. 915  PRINT"LAT1= ";LAT1
  100. 920  INPUT"ENTER START LON AS DEGREES,MINUTES,SECONDS ";ODS,OMS,OSS
  101. 930  OMS=OMS/60:OSS=OSS/3600:LON1=ODS+OMS+OSS
  102. 935  PRINT"LON1= ";LON1
  103. 940  INPUT "ENTER DEST LAT AS DEGREES,MINUTES,SECONDS ";LDS,LMS,LSS
  104. 950  LMS=LMS/60:LSS=LSS/3600:LAT2=LDS+LMS+LSS
  105. 955  PRINT"LAT2= ";LAT2
  106. 960  INPUT "ENTER DEST LON AS DEGREES,MINUTES,SECONDS ";ODS,OMS,OSS
  107. 970  OMS=OMS/60:OSS=OSS/3600:LON2=ODS+OMS+OSS
  108. 975  PRINT"LON2= ";LON2
  109. 976  IF S$= "C" OR S$= "c" THEN STOP
  110. 980  GOTO 510
  111.