home *** CD-ROM | disk | FTP | other *** search
/ World of Ham Radio 1997 / WOHR97_AmSoft_(1997-02-01).iso / basic / oscar.bas < prev    next >
BASIC Source File  |  1997-02-01  |  5KB  |  112 lines

  1. 10 CLS : REM DEVELOPED BY K1CD MODIFIED BY WB5MPU
  2. 20 DEFDBL H-I, P
  3. 30 O = 36.167: Q = 1.67988: X = .665452: Y = .746441
  4. 40 P = 103.23389#: I = .9877101182937622#: H = .8756536421393655#: GOTO 60
  5. 50 P = 114.94513#: I = .979587: H = .813027
  6. 60 A(7) = 3.141593: A(8) = 0
  7. 70 PRINT "CHOOSE DATA NEEDED: 1=QTH, 2=SATELLITE, 3=ORBIT, 4=NONE"
  8. 80 INPUT R: ON R GOTO 90, 130, 240, 290
  9. 90 INPUT "NORTH LATITUDE (DECIMAL DEGREES)"; O
  10. 100 INPUT "WEST LONGITUDE(DECIMAL DEGREES)"; Q
  11. 110 Q = Q * A(7) / 180: A(1) = O * A(7) / 180: GOSUB 750
  12. 120 X = A(1): Y = A(2): GOTO 70
  13. 130 INPUT "OSCAR 7 OR 8,OR 1 FOR OTHER "; F
  14. 140 IF F = 1 THEN 190
  15. 150 IF F = 7 THEN 50
  16. 160 IF F = 8 THEN 70
  17. 170 IF F < 7 THEN 70
  18. 180 IF F > 8 THEN 70
  19. 190 INPUT "PERIOD OF SATELLITE(DECIMAL MINUTES)"; P
  20. 200 INPUT "INCLINATION OF ORBIT(DEGREES)"; I
  21. 210 INPUT "HEIGHT OF ORBIT(STATUTE MILES)"; H
  22. 220 H = 3957 / (3957 + H): A(1) = I * A(7) / 180: GOSUB 750
  23. 230 I = A(1): GOTO 70
  24. 240 INPUT "REFERENCE ORBIT NUMBER"; N
  25. 250 INPUT "EQX LONGITUDE"; S
  26. 260 INPUT "EQX TIME(HR,MIN)"; T, R
  27. 270 INPUT "TIME INCREMENT OF READOUT IN MINUTES."; Z1
  28. 280 S = S * A(7) / 180: T = T + (R / 60)
  29. 290 CLS
  30. 300 GOSUB 1050
  31. 310 FOR E = 0 TO INT(P) STEP Z1: A(1) = 2 * A(7) * E / P: GOSUB 750
  32. 320 B = A(1): C = A(2)
  33. 330 K = B * I: A(1) = K: GOSUB 850
  34. 340 M = A(2): A(1) = M: GOSUB 750
  35. 350 L = A(2): A(1) = C / L: GOSUB 850
  36. 360 IF M < 0 THEN A(2) = -1 * (A(2) + A(7))
  37. 370 U = E / 229.183 + S + (A(7) / 2 - A(2))
  38. 380 IF U > (2 * A(7)) THEN U = U - 2 * A(7)
  39. 390 A(1) = U - Q: GOSUB 750
  40. 400 F = A(2): A(9) = A(1)
  41. 410 Z = (X * K) + (Y * L * F): A(1) = Z: GOSUB 850
  42. 420 D = A(7) / 2 - A(2): A(1) = D: GOSUB 750
  43. 430 G = A(1)
  44. 440 IF ABS(G) < ABS(Z - H) GOTO 470
  45. 450 A(1) = (Z - H) / G: GOSUB 920
  46. 460 V = A(1): GOTO 500
  47. 470 A(1) = G / (Z - H): GOSUB 920
  48. 480 IF A(1) < 0 THEN V = A(7) / (-2) - A(1): GOTO 500
  49. 490 V = A(7) / 2 - A(1)
  50. 500 A(1) = (K - (X * Z)) / (Y * G): GOSUB 850
  51. 510 W = A(7) / 2 - A(2)
  52. 520 IF A(9) > 0 THEN W = 2 * A(7) - W
  53. 530 A(1) = INT(T): A(2) = E + INT((T - A(1)) * 60)
  54. 540 IF A(2) < 60 GOTO 560
  55. 550 A(1) = A(1) + 1: A(2) = A(2) - 60: IF A(1) = 24 THEN A(1) = A(1) - 24: GOTO 540
  56. 560 A(3) = INT(W * 1800 / A(7) + .5) / 10: A(4) = INT(V * 1800 / A(7) + .5) / 10
  57. 570 A(5) = INT(M * 180 / A(7) + .5): A(6) = INT(U * 180 / A(7) + .5)
  58. 580 IF A(4) < -3 THEN 730
  59. 590 H1$ = STR$(A(1)): M1$ = STR$(A(2))
  60. 600 IF A(1) < 10 THEN H1$ = "0" + RIGHT$(H1$, 1)
  61. 610 H1$ = RIGHT$(H1$, 2)
  62. 620 IF A(2) < 10 THEN M1$ = "0" + RIGHT$(M1$, 1)
  63. 630 M1$ = RIGHT$(M1$, 2)
  64. 640 A$ = "##:": B$ = "##": C$ = "###.#": D$ = "###.#": E$ = "##": F$ = "###": G$ = "###"
  65. 650 PRINT USING E$; E;
  66. 660 PRINT TAB(4); H1$; ":";
  67. 670 PRINT TAB(7); M1$;
  68. 680 PRINT TAB(17); USING C$; A(3);
  69. 690 PRINT TAB(30); USING D$; A(4);
  70. 700 PRINT TAB(48); USING F$; A(5);
  71. 710 PRINT TAB(53); USING G$; A(6)
  72. 720 A(10) = A(10) + 1
  73. 730 NEXT E
  74. 740 END
  75. 750 IF ABS(A(1)) < (2 * A(7)) GOTO 780
  76. 760 A(1) = A(1) / (2 * A(7)): A(6) = 1: IF A(1) < 0 THEN A(6) = -L: A(1) = ABS(A(1))
  77. 770 A(1) = (A(1)) - INT(A(1)) * 2 * A(7) * A(6): A(6) = 1
  78. 780 A(4) = 1: A(2) = 1: A(3) = A(1): A(5) = A(1) * A(1)
  79. 790 FOR R = 2 TO 30
  80. 800 A(4) = -1 * A(4) * A(5) / ((2 * R - 2) * (2 * R - 3))
  81. 810 IF ABS(A(4)) < 1E-08 THEN RETURN
  82. 820 A(3) = -1 * A(3) * A(5) / ((2 * R - 2) * (2 * R - 1))
  83. 830 A(1) = A(1) + A(3): A(2) = A(2) + A(4): NEXT R
  84. 840 RETURN
  85. 850 A(8) = 0: A(6) = 1: IF ABS(A(1)) < .9 GOTO 920
  86. 860 IF (1) < 0 THEN A(6) = -1: A(1) = ABS(A(1))
  87. 870 A(1) = 1 - A(1) * A(1): IF A(1) <= 0 THEN A(1) = 0: A(8) = 1: GOTO 920
  88. 880 A(2) = A(1) * 3
  89. 890 A(3) = (A(1) / A(2) + A(2)) / 2
  90. 900 IF A(3) <> A(2) THEN A(2) = A(3): GOTO 890
  91. 910 A(1) = A(6) * A(3): A(8) = 1
  92. 920 A(2) = A(1): IF ABS(A(1)) < .02 GOTO 1000
  93. 930 A(3) = A(1): A(4) = A(1): A(5) = A(1) * A(1)
  94. 940 FOR R = 1 TO 50
  95. 950 A(3) = -1 * A(3) * A(5)
  96. 960 A(4) = A(4) * A(5) * (2 * R - 1) / (2 * R)
  97. 970 IF ABS(A(4)) < 9.999999E-10 GOTO 1000
  98. 980 A(1) = A(1) + A(3) / (2 * R + 1): A(2) = A(2) + A(4) / (2 * R + 1)
  99. 990 NEXT R
  100. 1000 IF A(8) = 0 THEN RETURN
  101. 1010 A(8) = 0
  102. 1020 IF A(6) < 0 THEN A(2) = A(7) / (-2) - A(2): A(6) = 1: RETURN
  103. 1030 A(2) = A(7) / 2 - A(2)
  104. 1040 RETURN
  105. 1050 A(1) = INT(O * 10 + .5) / 10: A(2) = INT(Q * 1800 / A(7) + .5) / 10
  106. 1060 A(3) = INT(S * 1800 / A(7) + .5) / 10: A(4) = INT(T)
  107. 1070 A(5) = INT((T - A(4)) * 60 + .5)
  108. 1080 PRINT "QTH"; A(1); "N.LAT"; A(2); "W.LONG", "SAT PD"; P; "MIN"
  109. 1090 PRINT "ORBIT"; N; "EQX"; A(3); "W.LON AT"; A(4); ":"; A(5)
  110. 1100 PRINT "# TIME"; TAB(17); "AZ-BERINGS-EL"; TAB(49); "LAT LON"
  111.  
  112.