Post Reply 
single tone during 41cx program execution, error?
08-20-2016, 11:22 PM
Post: #1
single tone during 41cx program execution, error?
Greetings,

I have a short program which is doing some elaborate parsing of an alpha extended memory file and I am getting a single tone repeatedly intermittently during one of the loops.

Before I transcribe the FOCAL, can anyone deduce an explanation? Is this an error signal? Program execution does not halt.

Interestingly subsequent/random executions of the program run off the end of the file and require me to ED it and move the file pointer to the beginning, so likely I am doing something very wrong.

Thanks!
Find all posts by this user
Quote this message in a reply
08-21-2016, 04:25 PM
Post: #2
RE: single tone during 41cx program execution, error?
(08-20-2016 11:22 PM)twdeckard Wrote:  I have a short program which is doing some elaborate parsing of an alpha extended memory file and I am getting a single tone repeatedly intermittently during one of the loops.

Is this the same tone as the one you get after entering 24 characters in Alpha?

(08-20-2016 11:22 PM)twdeckard Wrote:  Before I transcribe the FOCAL, can anyone deduce an explanation?

Obviously it's the other way round: post the program here and, important, mark the exact line where the tone occurs. This way an explanation may be possible.

Dieter
Find all posts by this user
Quote this message in a reply
08-21-2016, 10:24 PM
Post: #3
RE: single tone during 41cx program execution, error?
Dieter wins, by counting the tones I have deduced it is likely because the EM records are longer than the alpha register. This is as designed.
Find all posts by this user
Quote this message in a reply
08-22-2016, 09:51 PM
Post: #4
RE: single tone during 41cx program execution, error?
(08-21-2016 10:24 PM)twdeckard Wrote:  Dieter wins, by counting the tones I have deduced it is likely because the EM records are longer than the alpha register. This is as designed.

Hmmm... in a running program there usually is no warning tone.
Try this:

Code:
"ABCDE"
20
LBL 01
"├X"
DSE X
GTO 01
AVIEW
END

The 20 "X"es will push the initial "A" out of ALPHA, but there is no tone. On the other hand you will hear it if you enter "ABCDEXXXXXXX..." manually.

So I wonder if this is different with some X-Memory related commands. What about a program listing now?

Dieter
Find all posts by this user
Quote this message in a reply
08-23-2016, 03:38 PM
Post: #5
RE: single tone during 41cx program execution, error?
CF 26

Here's an (approximate) code listing Dieter but I don't think its worth the energy to crawl thru it. I'll be proud to post it when completed. The crime is committed early on and you are exactly correct -- its because I am reading an EM record longer than 24 characters into alpha. It took me a bit to puzzle it out because I have never heard the unit "beep" like this.

This is going to be software to compute the approximate location of a low earth orbiting satellite from its "two line element" and point an antenna at it. It is very approximately derived from a program called PLAN-13 and designed to mimic an Arduino package I developed that actually drives a motorized antenna mount.

Candidly this has no useful purpose other than I am have become very enamored with the Advantage ROM. Fascinated to see if I can reduce the coordinate transformations to the simplest set of matrix and vector operations. I am also trying to force myself to go thru the math as there is a practical goal to try to derive the TLE from an observation and it would be handy if the calculator could help.

Also the 'beeping' program in the calculator is quite a bit different :^) I alternate between thinking in the calculator and transcribing the results to a file that I can comment and preserve. I'm in the calculator right now.

The key is that the EM file is:

1 25544U 98067A 16236.07226056 .00002996 00000-0 50758-4 0 9991
2 25544 51.6434 84.2663 0001968 150.4193 345.4817 15.55080854 15392

Variables:

;; move down by 3 for vector scratchpad

00 OBJECT
01 EPYEAR 1:19-20
02 EPTIME 1:21-32
03 INCLIN 2:09-16
04 ECCENT 2:27-33
05 PERIGE 2:35-42
06 MEANAN 2:44-51
07 MMDOT1 1:34-43
08 MMDOT2 1:45-52
09 DECAYR 1:54-61
10 ORBITN
11 OBSLAT
12 OBSLON
13 LAMBDA
14 SATRNG
15 DOPPLR
16 SATLAT
17 SATLON
18 TEMP01
19 TEMP02
20 TEMP03
21 TEMP04

EXTENDED MEMORY FILES

ISS ALPHA TWO-LINE-ELEMENTS
SATREG ALPHA REGISTER MNEMONICS

SATTRK SATELLITE TRACKING PROGRAM HP41
DISTLE DISPLAY TLE STORED IN EXTENDED MEMORY
GETTLE READ ORBITAL PARAMETERS FROM TLE IN EXTENDED MEMORY
INPORB PROMPT USER FOR ORBITAL PARAMETERS
INPSTA PROMPT USER FOR STATION PARAMETERS
KEPLER COMPUTE LAMBDA
SATPOS COMPUTE SATELLITE LATITUDE AND LONGITUDE
AZELEV COMPUTE AZIMUTH AND ELEVATION
SATRNG COMPUTE RANGE TO SATELLITE
DOPPLR COMPUTE DOPPLER SHIFT
OUTPUT AZIMUTH AND ELEVATION
EVRY20 ACTIVATE TIMER ROUTINE TO COMPUTE AND DISPLAY EVERY TWENTY SECONDS
UPDATE COMPUTE SATPOS AND OUTPUT AZIMUTH AND ELEVATION
NEXT24 AZIMUTH AND ELEVATION OVER NEXT 24 HOURS
NEXT12 AZIMUTH AND ELEVATION OVER NEXT 12 HOURS
DISPLA PRINT OUT REGISTERS WITH MNEMONICS
DEORBI END PROGRAMd

LBL "SATTRK"
LBL "PLAN13"
LBL "DISTLE"
RTN
LBL "GETTLE"
1
0.0017018
XEQ "*GETEL"
XEQ "*PARSE"
2
0.019031
XEQ "*GETEL"
XEQ "*PARSE"
3
1.007015
XEQ "*GETEL"
XEQ "*PARSE"
4
1.016024
XEQ "*GETEL"
XEQ "*PARSE"
5
1.025032
XEQ "*GETEL"
>"."
-1
AROT ; LEADING DECIMAL PRESUMED
RDN
XEQ "*PARSE"
6
1.033041
XEQ "*GETEL"
XEQ "*PARSE"
7
1.042050
XEQ "*GETEL"
XEQ "*PARSE"
8
0.032042
XEQ "*GETEL"
XEQ "*PARSE"
9
0.043051
XEQ "*GETEL"
XEQ "*PARSE"
10
0.052060
XEQ "*GETEL"
XEQ "*PARSE"
RTN
LBL "*GETEL"
CLA
ARCL 00
SEEKPT
GETREC
RTN
LBL "*PARSE"
FRC
1000
*
ENTER
INT
X<>Y
FRC
1000
*
X<>Y
-
2
+
42
XEQ "SC"
ANUM
STO IND T
RTN
LBL "SC"
X<>Y
AROT
-1
AROT
RDN
ATOX
CLX
RDN
X<>Y
XTOA
X<>Y
CHS
AROT
CHS
X<>Y
RTN
XEQ "INPORB"
RTN
LBL "INPSTA"
RTN
LBL "KEPLER"
RTN
LBL "SATPOS"
RTN
LBL "AZELEM"
RTN
LBL "SATRNG"
RTN
LBL "DOPPLR"
RTN
LBL "OUTPUT"
RTN
LBL "NEXT24"
RTN
LBL "NEXT21"
RTN
LBL "DISPLA"
.02001
STO 22
LBL 46
RCL 22
INT
XEQ 47
ISG 22
GTO 46
RTN
LBL 47
"SATREG"
SEEKPTA
GETREC
+":"
RCL IND X
ATOX
ASTO Z
X<>Y
FIX 0
XEQ IND Y
AVIEW
RTN
LBL 48
ARCL X
RTN
LBL 49
FIX 0
ARCL X
RTN
LBL 50
FIX 1
ARCL X
RTN
LBL 51
FIX 2
ARCL X
RTN
LBL 52
SCI 2
ARCL X
RTN
LBL 53
CLK24
FIX 4
ATIME
RTN
LBL 54
FIX 4
HMS
ATIME
RTN



LBL "*RAAN"
"RAAN"
3.003
MATDIM BUILD A ROTATION MATRIX ABOUT Z
0 MSIJ (COLLAPSE TO SUBROUTINE LATER)
RCL 04 RAAN
ENTER RAAN,RAAN
SIN SIN(RAAN),RAAN
X<>Y RAAN, SIN(RAAN)
COS COS(RAAN),SIN(RAAN)
MSR+
X<>Y
MSR+
0 0, SIN(RAAN), COS(RAAN)
MSR+
RND SIN(RAAN), COS(RAAN)
CHS
MSR+
X<>Y
MSR+
0
MSR+
MSR+
MSR+
1
MS


LBL "*IN"
"IN"
3.003
MATDIM BUILD A ROTATION MATRIX ABOUT X
0 MSIJ DOH, SHOULD BE A GENERAL FUNCTION
1
MSR+
0
MSR+
MSR+
MSR+
RCL 03
ENTER
SIN
X<>Y
COS COS(I), SIN(I)
MSR+
X<>Y
MSR+
0
MSR+
RDN
CHS
MSR+
X<>Y
MS

LBL "*AP"
"AP"
3.003 ANOTHER ROTATION ABOUT Z
MATDIM
0 MSIJ
RCL 06
ENTER
SIN
X<>Y
COS
MSR+
X<>Y
MSR+
0
MSR+
RDN
CHS
MSR+
X<>Y
MSR+
0
MSR+
MSR+
MSR+
1
MS

LBL "CELEST" [RAAN]*[IN]*[AP]
3.003
"C"
MATDIM
"B"
MATDIM
"RAAN,IN,B"
XEQ M*M
"B,AP,C"
XEG M*M
"RAAN"
PURFL
"IN"
PURFL
"AP"
PURFL
"B"
PURFL
RTN
END

; BUILD A SET OF ROTX/ROTY/ROTZ matrices and redo this.







10 T$="PLAN13": REM OSCAR-13 POSITION, SUN + ECLIPSE PLANNER
20 REM
30 IS$="v2.0": REM Last modified 1990 Aug 12 by JRM
40 REM
50 REM (C)1990 J.R. Miller G3RUH
60 REM
70 REM Proceeds from the sale of this software go directly to the
80 REM Amateur Satellite Programme that helped fund AO-13.
90 REM If you take a copy PLEASE also send a small donation to:
100 REM AMSAT-UK, LONDON, E12 5EQ.
110
120 MODE 3: REM Screen 80 columns
130 PROCinit: REM Set up constants
140
150 INPUT "Enter start date (e.g. 1990, 12, 25) ";YR,MN,DY
160 INPUT "Enter number of days for printout ";ND
170 DS = FNday(YR,MN,DY): REM Start day No.
180 DF = DS + ND - 1: REM Finish day No.
190 FOR DN = DS TO DF
200 FOR HR = 0 TO 23
210 FOR MIN = 0 TO 45 STEP 15
220 TN = (HR+MIN/60)/24
230 PROCsatvec
240 PROCrangevec
250 PROCsunvec
260 IF EL > 0 THEN PROCprintdata
270 NEXT:NEXT:NEXT
280 END

1000 DEF PROCinit
1010 REM SATELLITE EPHEMERIS
1020 REM -------------------
1030 SAT$="OSCAR-13"
1040 YE = 1990 : REM Epoch Year year
1050 TE = 191.145409: REM Epoch time days
1060 IN = 56.9975 : REM Inclination deg
1070 RA = 146.4527 : REM R.A.A.N. deg
1080 EC = 0.6986 : REM Eccentricity -
1090 WP = 231.0027 : REM Arg perigee deg
1100 MA = 43.2637 : REM Mean anomaly deg
1110 MM = 2.09695848: REM Mean motion rev/d
1120 M2 = 1E-8 : REM Decay Rate rev/d/d
1130 RV = 1585 : REM Orbit number -
1140 ALON = 180 : REM Sat attitude, deg. 180 = nominal ) See bulletins
1150 ALAT = 0 : REM Sat attitude, deg. 0 = nominal ) for latest
1160
1170 REM Observer's location + North, + East, ASL(m)
1180 LOC$="G3RUH": LA = 52.21: LO = 0.06: HT = 79: REM Cambridge, UK
1190
1200 LA = RAD(LA): LO = RAD(LO): HT = HT/1000
1210 CL = COS(LA): SL = SIN(LA): CO = COS(LO): SO = SIN(LO)
1220 RE = 6378.137: FL = 1/298.257224: REM WGS-84 Earth ellipsoid
1230 RP = RE*(1-FL): XX = RE*RE: ZZ = RP*RP
1240 D = SQR(XX*CL*CL + ZZ*SL*SL)
1250 Rx = XX/D + HT: Rz = ZZ/D + HT
1260
1270 REM Observer's unit vectors UP EAST and NORTH in GEOCENTRIC coords.
1280 Ux =CL*CO: Ex =-SO: Nx =-SL*CO
1290 Uy =CL*SO: Ey = CO: Ny =-SL*SO
1300 Uz =SL : Ez = 0: Nz = CL
1310
1320 REM Observer's XYZ coords at Earth's surface
1330 Ox = Rx*Ux: Oy = Rx*Uy: Oz = Rz*Uz
1340
1350 REM Convert angles to radians etc.
1360 RA = RAD(RA): IN = RAD(IN): WP = RAD(WP)
1370 MA = RAD(MA): MM = MM*2*PI: M2 = M2*2*PI
1380
1390 YM = 365.25: REM Mean Year, days
1400 YT = 365.2421874: REM Tropical year, days
1410 WW = 2*PI/YT: REM Earth's rotation rate, rads/whole day
1420 WE = 2*PI + WW: REM ditto radians/day
1430 W0 = WE/86400: REM ditto radians/sec
1440
1450 VOx=-Oy*W0: VOy=Ox*W0: REM Observer's velocity, GEOCENTRIC coords. (VOz=0)
1460
1470 REM Convert satellite Epoch to Day No. and Fraction of day
1480 DE = FNday(YE,1,0)+INT(TE): TE = TE-INT(TE)
1490
1500 REM Average Precession rates
1510 GM = 3.986E5: REM Earth's Gravitational constant km^3/s^2
1520 J2 = 1.08263E-3: REM 2nd Zonal coeff, Earth's Gravity Field
1530 N0 = MM/86400: REM Mean motion rad/s
1540 A0 = (GM/N0/N0)^(1/3): REM Semi major axis km
1550 B0 = A0*SQR(1-EC*EC): REM Semi minor axis km
1560 SI = SIN(IN): CI = COS(IN)
1570 PC = RE*A0/(B0*B0): PC = 1.5*J2*PC*PC*MM: REM Precession const, rad/Day
1580 QD = -PC*CI: REM Node precession rate, rad/day
1590 WD = PC*(5*CI*CI-1)/2: REM Perigee precession rate, rad/day
1600 DC = -2*M2/MM/3: REM Drag coeff. (Angular momentum rate)/(Ang mom) s^-1
1610
1615 REM *** Please see end of listing for newer values; use old ones for test. ***
1617
1620 REM Sidereal and Solar data. Rarely needs changing. Valid to year ~2015
1630 YG = 2000: G0 = 98.9821: REM GHAA, Year YG, Jan 0.0
1640 MAS0 = 356.0507: MASD = 0.98560028: REM MA Sun and rate, deg, deg/day
1650 INS = RAD(23.4393): CNS = COS(INS): SNS = SIN(INS): REM Sun's inclination
1660 EQC1=0.03342: EQC2=0.00035: REM Sun's Equation of centre terms
1670
1680 REM Bring Sun data to Satellite Epoch
1690 TEG = (DE-FNday(YG,1,0)) + TE: REM Elapsed Time: Epoch - YG
1700 GHAE = RAD(G0) + TEG*WE: REM GHA Aries, epoch
1710 MRSE = RAD(G0) + TEG*WW + PI: REM Mean RA Sun at Sat epoch
1720 MASE = RAD(MAS0 + MASD*TEG): REM Mean MA Sun ..
1730
1740 REM Antenna unit vector in orbit plane coordinates.
1750 CO=COS(RAD(ALON)): SO=SIN(RAD(ALON))
1760 CL=COS(RAD(ALAT)): SL=SIN(RAD(ALAT))
1770 ax = -CL*CO: ay = -CL*SO: az = -SL
1780
1790 REM Miscellaneous
1800 @%=&507: REM 5 decimals, field 7
1810 OLDRN=-99999
1820 PRINT T$;" ";IS$;" SATELLITE PREDICTIONS"
1830 PRINT STRING$(35,"-")
1840 ENDPROC

2000 DEF PROCsatvec
2010 REM Calculate Satellite Position at DN,TN
2020 T = (DN - DE) + (TN-TE):REM Elapsed T since epoch, days
2030 DT = DC*T/2: KD = 1+4*DT:KDP= 1-7*DT: REM Linear drag terms
2040 M = MA + MM*T*(1-3*DT): REM Mean anomaly at YR,TN
2050 DR = INT(M/(2*PI)): REM Strip out whole no of revs
2060 M = M - DR*2*PI: REM M now in range 0 - 2pi
2070 RN = RV + DR: REM Current Orbit number
2080
2090 REM Solve M = EA - EC*SIN(EA) for EA given M, by Newton's Method
2100 EA = M: REM Initial solution
2110 REPEAT
2120 C = COS(EA): S = SIN(EA): DNOM=1-EC*C
2130 D = (EA-EC*S-M)/DNOM: REM Change to EA for better solution
2140 EA = EA - D: REM by this amount
2150 UNTIL ABS(D) < 1E-5: REM Until converged
2160
2170 A = A0*KD: B = B0*KD: RS = A*DNOM: REM Distances
2180
2190 REM Calc satellite position & velocity in plane of ellipse
2200 Sx = A*(C-EC): Vx=-A*S/DNOM*N0
2210 Sy = B*S: Vy= B*C/DNOM*N0
2220
2230 AP = WP + WD*T*KDP: CW = COS(AP): SW = SIN(AP)
2240 RAAN = RA + QD*T*KDP: CQ = COS(RAAN): SQ = SIN(RAAN)
2250
2260 REM Plane -> celestial coordinate transformation, [C] = [RAAN]*[IN]*[AP]
2270 CXx=CW*CQ-SW*CI*SQ: CXy=-SW*CQ-CW*CI*SQ: CXz= SI*SQ
2280 CYx=CW*SQ+SW*CI*CQ: CYy=-SW*SQ+CW*CI*CQ: CYz=-SI*CQ
2290 CZx=SW*SI: CZy= CW*SI: CZz= CI
2300
2310 REM Compute SATellite's position vector, ANTenna axis unit vector
2320 REM and VELocity in CELESTIAL coordinates. (Note: Sz=0, Vz=0)
2330 SATx=Sx*CXx+Sy*CXy: ANTx=ax*CXx+ay*CXy+az*CXz: VELx=Vx*CXx+Vy*CXy
2340 SATy=Sx*CYx+Sy*CYy: ANTy=ax*CYx+ay*CYy+az*CYz: VELy=Vx*CYx+Vy*CYy
2350 SATz=Sx*CZx+Sy*CZy: ANTz=ax*CZx+ay*CZy+az*CZz: VELz=Vx*CZx+Vy*CZy
2360
2370 REM Also express SAT,ANT and VEL in GEOCENTRIC coordinates:
2380 GHAA = GHAE + WE*T: REM GHA Aries at elapsed time T
2390 C = COS(-GHAA): S = SIN(-GHAA)
2400 Sx=SATx*C - SATy*S: Ax=ANTx*C - ANTy*S: Vx=VELx*C - VELy*S
2410 Sy=SATx*S + SATy*C: Ay=ANTx*S + ANTy*C: Vy=VELx*S + VELy*C
2420 Sz=SATz: Az=ANTz: Vz=VELz
2430 ENDPROC

3000 DEF PROCsunvec
3010 MAS = MASE + RAD(MASD*T): REM MA of Sun round its orbit
3020 TAS = MRSE + WW*T + EQC1*SIN(MAS) + EQC2*SIN(2*MAS)
3030 C = COS(TAS): S=SIN(TAS): REM Sin/Cos Sun's true anomaly
3040 SUNx=C: SUNy=S*CNS: SUNz=S*SNS: REM Sun unit vector - CELESTIAL coords
3050
3060 REM Find Solar angle, illumination, and eclipse status.
3070 SSA = -(ANTx*SUNx + ANTy*SUNy + ANTz*SUNz):REM Sin of Sun angle -a.h
3080 ILL = SQR(1-SSA*SSA): REM Illumination
3090 CUA = -(SATx*SUNx+SATy*SUNy+SATz*SUNz)/RS: REM Cos of umbral angle -h.s
3100 UMD = RS*SQR(1-CUA*CUA)/RE: REM Umbral dist, Earth radii
3110 IF CUA>=0 THEN ECL$=" +" ELSE ECL$=" -": REM + for shadow side
3120 IF UMD <= 1 AND CUA>=0 THEN ECL$=" ECL": REM - for sunny side
3130
3140 REM Obtain SUN unit vector in GEOCENTRIC coordinates
3150 C = COS(-GHAA): S = SIN(-GHAA)
3160 Hx=SUNx*C - SUNy*S
3170 Hy=SUNx*S + SUNy*C: REM If Sun more than 10 deg below horizon
3180 Hz=SUNz: REM satellite possibly visible
3190 IF (Hx*Ux+Hy*Uy+Hz*Uz < -0.17) AND (ECL$ <> " ECL") THEN ECL$=" vis"
3200
3210 REM Obtain Sun unit vector in ORBIT coordinates
3220 Hx = SUNx*CXx + SUNy*CYx + SUNz*CZx
3230 Hy = SUNx*CXy + SUNy*CYy + SUNz*CZy
3240 Hz = SUNx*CXz + SUNy*CYz + SUNz*CZz
3250 SEL = ASN(Hz): SAZ= FNatn(Hy,Hx)
3260 ENDPROC

4000 DEF PROCrangevec
4010 REM Compute and manipulate range/velocity/antenna vectors
4020 Rx = Sx-Ox: Ry = Sy-Oy: Rz = Sz-Oz: REM Rangevec = Satvec - Obsvec
4030 R = SQR(Rx*Rx+Ry*Ry+Rz*Rz): REM Range magnitude
4040 Rx=Rx/R: Ry=Ry/R: Rz=Rz/R: REM Normalise Range vector
4050 U = Rx*Ux+Ry*Uy+Rz*Uz: REM UP Component of unit range
4060 E = Rx*Ex+Ry*Ey: REM EAST do (Ez=0)
4070 N = Rx*Nx+Ry*Ny+Rz*Nz: REM NORTH do
4080 AZ = DEG(FNatn(E,N)): REM Azimuth
4090 EL = DEG(ASN(U)): REM Elevation
4100
4110 REM Resolve antenna vector along unit range vector, -r.a = Cos(SQ)
4120 SQ = DEG(ACS(-(Ax*Rx + Ay*Ry + Az*Rz))): REM Hi-gain ant SQuint
4130
4140 REM Calculate sub-satellite Lat/Lon
4150 SLON = DEG(FNatn(Sy,Sx)): REM Lon, + East
4160 SLAT = DEG(ASN(Sz/RS)): REM Lat, + North
4170
4180 REM Resolve Sat-Obs velocity vector along unit range vector. (VOz=0)
4190 RR = (Vx-VOx)*Rx + (Vy-VOy)*Ry + Vz*Rz: REM Range rate, km/s
4200 ENDPROC

4220 DEF FNatn(Y,X)
4230 IF X <> 0 THEN A=ATN(Y/X) ELSE A=PI/2*SGN(Y)
4240 IF X < 0 THEN A=A+PI
4250 IF A < 0 THEN A=A+2*PI
4260 =A

4280 DEF PROCmode
4290 M=INT(M*128/PI)
4300 REM Mode switching MA/256
4310 MD$="-"
4320 IF M >= 0 THEN MD$="B"
4330 IF M >= 100 THEN MD$="L"
4340 IF M >= 130 THEN MD$="S"
4350 IF M >= 135 THEN MD$="B"
4360 IF M >= 220 THEN MD$="-"
4370 ENDPROC

5000 DEF FNdate(D)
5010 REM Convert day-number to date; valid 1900 Mar 01 - 2100 Feb 28
5020 D=D+428: DW=(D+5)MOD7
5030 Y=INT((D-122.1)/YM): D=D-INT(Y*YM)
5040 MN=INT(D/30.61): D=D-INT(MN*30.6)
5050 MN=MN-1: IF MN>12 THEN MN=MN-12: Y=Y+1
5060 D$=STR$(Y)+" "+MID$("JanFebMarAprMayJunJulAugSepOctNovDec",3*MN-2,3)
5070 =D$+" "+STR$(D)+" ["+MID$("SunMonTueWedThuFriSat",3*DW+1,3)+"]"
5080
5090 DEF FNday(Y,M,D)
5100 REM Convert date to day-number
5110 IF M<=2 THEN Y=Y-1: M=M+12
5120 =INT(Y*YM) + INT((M+1)*30.6) + D-428

6000 DEF PROCprintdata
6010 REM Construct time as a string
6020 HR$=STR$(HR): MIN$=STR$(MIN)
6030 IF LEN(HR$) < 2 THEN HR$="0"+HR$
6040 IF LEN(MIN$) < 2 THEN MIN$="0"+MIN$
6050 TIM$=HR$+MIN$+" "
6060
6070 PROCmode: REM Get AO-13 mode. Now round-off data
6080 R=FNrn(R): EL=FNrn(EL): AZ=FNrn(AZ): SQ=FNrn(SQ): RR=FNrn(RR*10)/10
6090 HGT=FNrn(RS-RE): SLON=FNrn(SLON): SLAT=FNrn(SLAT)
6100 IF RN <> OLDRN THEN OLDRN=RN: PROCheader
6110 PRINT TIM$;STR$(M);" ";MD$,R,EL,AZ,SQ,RR,ECL$,HGT,SLAT,SLON
6120 ENDPROC
6130
6140 DEF PROCheader
6150 RAAN=FNrn(DEG(RAAN)): AP=FNrn(DEG(AP)): SAZ=FNrn(DEG(SAZ))
6160 SEL=FNrn(DEG(SEL)): ILL=FNrn(100*ILL)
6170 PRINT: PRINT
6180 PRINT SAT$;" - "LOC$;SPC(16);"AMSAT DAY ";STR$(DN-722100);SPC(12);FNdate(DN)
6190 PRINT "ORBIT: ";RN;" AP/RAAN: ";AP;"/";RAAN;" ALON/ALAT:";ALON;"/";ALAT;
6200 PRINT" SAZ/SEL: ";SAZ;"/";SEL;" ILL: ";ILL;"%"
6210 PRINT
6220 PRINT " UTC MA MODE RANGE EL AZ SQ RR ECL? ";
6230 PRINT "HGT SLAT SLON"
6240 PRINT STRING$(77,"-")
6250 ENDPROC
6260
6270 DEF FNrn(X) = INT(X+0.5)

*** Astronomical data for 2014 onwards

1620 REM Sidereal and Solar data. Valid to year ~2030
1630 YG = 2014: G0 = 99.5828: REM GHAA, Year YG, Jan 0.0
1640 MAS0 = 356.4105: MASD = 0.98560028: REM MA Sun and rate, deg, deg/day
1650 INS = RAD(23.4375): CNS = COS(INS): SNS = SIN(INS): REM Sun's inclination
1660 EQC1=0.03340: EQC2=0.00035: REM Sun's Equation of centre terms

***
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)