SERVICER.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: SERVICER.agc
## Purpose: A section of a reconstructed, mixed version of Sundance
## It is part of the reconstructed source code for the Lunar
## Module's (LM) Apollo Guidance Computer (AGC) for Apollo 9.
## No original listings of this program are available;
## instead, this file was created via disassembly of dumps
## of various revisions of Sundance core rope modules.
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2020-06-17 MAS Created from Luminary 69.
## 2021-05-30 ABS Aligned IAW to field boundary.
## Sundance 292
BANK 33
SETLOC SERVICES
BANK
EBANK= DVCNTR
# ************************************* PREREAD **************************************************************
COUNT* $$/SERV
PREREAD CAF SEVEN # 5.7 SPOT TO SKIP LASTBIAS AFTER
TC NEWPHASE # RESTART.
OCT 5
CAF PRIO21
TC NOVAC
EBANK= NBDX
2CADR LASTBIAS # DO LAST GYRO COMPENSATION IN FREE FALL
BIBIBIAS TC PIPASR +3 # CLEAR + READ PIPS LAST TIME IN FRE5+F133
# DO NOT DESTROY VALUE OF PIPTIME1
TC UPFLAG
ADRES V37FLAG # SET V37FLAG AND AVEGFLAG (BITS 5 AND 6
TC UPFLAG # OF FLAGWRD7)
ADRES AVEGFLAG
TC DOWNFLAG # RESET DRIFTFLAG
ADRES DRIFTFLG
CAF FOUR # INITIALIZE DV MONITOR
TS DVCNTR
TS PIPAGE
TS STOPDVC
CAF LRBYBIT
TS LRSTAT
CAF ENDJBCAD # POINT OUTROUTE TO END-OF-JOB.
TS OUTROUTE
CAF PRIO22
TC FINDVAC # TO FIRST ENTRY TO AVERAGE G.
EBANK= DVCNTR
2CADR NORMLIZE
CAF 2SECS # WAIT TWO SECONDS FOR READACCS
TC WAITLIST
EBANK= DVCNTR
2CADR READACCS
CS TWO # 5.2SPOT FOR REREADAC AND NORMLIZE
TC NEWPHASE
OCT 5
TCF TASKOVER
# ************************************* READACCS *************************************************************
READACCS CS FLAGWRD6
MASK MUNFLBIT
CCS A
TCF PIPSDONE -1
CS FLAGWRD7
MASK SWANDBIT
CCS A
TCF SWANDOFF
CAF TWELVE
TC WAITLIST
EBANK= UNIT/R/
2CADR LANDISP
TCF PIPSDONE -1
SWANDOFF TC IBNKCALL
CADR DISPRSET
TC PIPASR # READ THE PIPAS.
PIPSDONE CA FIVE
TC NEWPHASE
OCT 5
REDO5.5 CAF ONE
TS PIPAGE
CAF SEVEN # SET PIPCTR FOR 4X/SEC RATE.
TS PIPCTR
CS FLAGWRD7
MASK AVEGFBIT
CCS A
TC AVEGOUT # AVEGFLAG DOWN - SET UP FINAL EXIT
MAKEACCS CAF 2SECS
TC TWIDDLE
ADRES READACCS
CS LRSTAT
MASK LRBYBIT
EXTEND
BZF STRTSERV
CAF 1.95SECS
TC TWIDDLE
ADRES LRHTASK
STRTSERV CA PRIO20
TC FINDVAC
EBANK= DVCNTR
2CADR SERVICER # SET UP SERVICER JOB
TC PHASCHNG
OCT 40045
CA BIT9
EXTEND
WOR DSALMOUT # TURN ON TEST CONNECTOR OUTBIT
TCF TASKOVER
AVEGOUT EXTEND
DCA AVOUTCAD # SET UP FINAL SERVICER EXIT
DXCH AVGEXIT
TCF STRTSERV # END TASK WITHOUT CALLING READACCS
EBANK= DVCNTR
AVOUTCAD 2CADR AVGEND
# ************************************* SERVICER *************************************************************
SERVICER TC PHASCHNG # RESTART REREADAC + SERVICER
OCT 16035
OCT 20000
EBANK= DVCNTR
2CADR GETABVAL
CAF PRIO31 # INITIALIZE 1/PIPADT IN CASE RESTART HAS
TS 1/PIPADT # CAUSED LASTBIAS TO BE SKIPPED.
TC BANKCALL # PIPA COMPENSATION CALL
CADR 1/PIPA
GETABVAL TC INTPRET
VLOAD ABVAL
DELV
STORE ABDELV # ABDELV = CM/SEC*2(-14).
DMP
KPIP
STORE ABDVCONV # ABDVCONV = M/CS * 2(-5).
MASSMON BON AXT,1 # ARE WE ON THE SURFACE?
SURFFLAG
MOONSPOT # YES: BYPASS MASS MESS
0
DDV BON # NO: WHICH VEX SHOULD BE USED?
1SEC(7)
APSFLAG
+3
AXT,1
2
STODL /AF/ # /AF/ = MAGNITUDE DV/DT
ABDVCONV
VSR4 DDV*
APSVEX1,1
DMP DAD
MASS
MASS
STORE MASS1
MOONSPOT DLOAD VSR6
ABDVCONV
DAD
DVTOTAL
STORE DVTOTAL # UPDATE DVTOTAL FOR DISPLAY
RTB CALL
TMPTOSPT
CD*TR*G
AXC,1 CALL
XNBPIP
XNBNDX
AVERAGEG BON CALL
MUNFLAG
MUNRVG
CALCRVG
EXIT
GOSERV TC PHASCHNG
OCT 10035
COPYCYCL TC COPYCYC
TC DOWNFLAG # CLEAR STEERSW PRIOR TO DVMON.
ADRES STEERSW
CAF IDLEFBIT # IS THE IDLE FLAG SET?
MASK FLAGWRD7
CCS A
TCF USEJETS # IDLEFLAG = 1, HENCE SET AUXFLAG TO 0.
DVMON INHINT
CS DVTHRUSH
AD ABDELV
EXTEND
BZMF LOTHRUST
TC IBNKCALL
CADR NOULLAGE
CS FLAGWRD2 # SET STEERSW.
MASK STEERBIT
ADS FLAGWRD2
DVCNTSET CA STOPDVC # UPDATE MAXIMUM NOW THAT
TS DVCNTR # THRUXT HAS BEEN DETECTED.
CA FLAGWRD1
MASK GIMBFBIT
EXTEND
BZF USEJETS
CA FLAGWRD1 # BRANCH IF APSFLAG IS SET.
MASK APSFLBIT
CCS A
TCF USEJETS
CA BIT9 # CHECK GIMBAL FAIL BIT
EXTEND
RAND CHAN32
EXTEND
BZF USEJETS
USEGTS CS USEQRJTS
MASK DAPBOOLS
TS DAPBOOLS
TCF SERVOUT
LOTHRUST CCS DVCNTR
TCF DECCNTR
TC PHASCHNG
OCT 10035
TC POSTJUMP
CADR COMFAIL
DECCNTR TS DVCNTR
USEJETS INHINT
CS DAPBOOLS
MASK USEQRJTS
ADS DAPBOOLS
SERVOUT RELINT
TC BANKCALL
CADR 1/ACCS
CA PRIORITY
MASK LOW9
TS PUSHLOC
ZL
DXCH FIXLOC # FIXLOC AND OVFIND
TC PHASCHNG
OCT 10035
EXTEND # EXIT TO SELECTED ROUTINE WHETHER THERE
DCA AVGEXIT # IS THRUST OR NOT. THE STATE OF STEERSW
DXCH Z # WILL CONVEY THIS INFORMATION.
AVGEND CA PIPTIME +1 # FINAL AVERAGE G EXIT
TS 1/PIPADT # SET UP FREE FALL GYRO COMPENSATION.
TC UPFLAG # SET DRIFT FLAG.
ADRES DRIFTFLG
TC BANKCALL
CADR PIPFREE
CS BIT9
EXTEND
WAND DSALMOUT
TC 2PHSCHNG
OCT 5 # GROUP 5 OFF
OCT 05022 # GROUP 2 ON
OCT 20000
TC INTPRET
CALL
AVETOMID
BON BOFF
RNDVZFLG
AVG2.7
P25FLAG
GRP2OFF
EXIT
TC PHASCHNG
OCT 40112
AVERTRN CA OUTROUTE # RETURN TO DESIRED POINT.
TC BANKJUMP
GRP2OFF EXIT
TC PHASCHNG
OCT 00002
TCF AVERTRN
AVG2.7 EXIT
TC PHASCHNG
OCT 40072
TCF AVERTRN
OUTGOAVE = AVERTRN
DVCNTR1 = MASS1
SERVEXIT TC PHASCHNG
OCT 00035
+2 TCF ENDOFJOB
ENDJBCAD CADR SERVEXIT +2
# NORMLIZE AND COPYCYCL
NORMLIZE TC INTPRET
DLOAD
MASS
STOVL MASS1
UNITX
STORE UASTEER
BOFF VLOAD
MUNFLAG
NORMLIZ1
VN1
MXV VSL1
REFSMMAT
STOVL V
RN1
MXV VSL6
REFSMMAT
STCALL R
MUNGRAV
BON VLOAD
FLP70
ASCSPOT
V
VXV UNIT
R
STORE UHYP
ASCSPOT EXIT
TCF NORMLIZ2
NORMLIZ1 VLOAD CALL
RN1
CALCGRAV
EXIT
NORMLIZ2 TC COPYCYC
TC ENDOFJOB
COPYCYC EXTEND
QXCH COPEXIT
CAF OCT25
TC GENTRAN
ADRES RN1
ADRES RN
TC COPEXIT
COPEXIT = MPAC +3
# ******************* PIPA READER ********************
# MOD NO. 00 BY D. LICKLY DEC.9 1966
# FUNCTIONAL DESCRIPTION
# SUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT IT WILL BE RESTARTABLE.
# PIPA READINGS ARE STORED IN THE VECTOR DELV. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING,
# RESTARTS BEGIN AT REREADAC.
# AT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A
# VECTOR IN CDUTEMP. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS
# THE CDU READING IN 2S COMP IN THE ORDER CDUX,Y,Z. THE THRUST
# VECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.
# CALLING SEQUENCE AND EXIT
# CALL VIA TC, ISWCALL, ETC.
# EXIT IS VIA Q.
#
# INPUT
# INPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.
# OUTPUT
# HIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS.
# PIPTIME CONTAINS TIME OF PIPA READING.
# DEBRIS (ERASABLE LOCATIONS DESTROYED BY PROGRAM)
# TEMX TEMY TEMZ PIPAGE
PIPASR EXTEND
DCA TIME2
DXCH PIPTIME1 # CURRENT TIME POSITIVE VALUE
+3 CS ZERO # INITIALIZE THESE AT NEG. ZERO.
TS TEMX
TS TEMY
TS TEMZ
CA ZERO
TS DELVZ # OTHER DELVS OK INCLUDING LOW ORDER
TS DELVY
TS PIPAGE # SHOW PIPA READING IN PROGRESS
REPIP1 EXTEND
DCS PIPAX # X AND Y PIPS READ
DXCH TEMX
DXCH PIPAX # PIPAS SET TO NEG ZERO AS READ.
TS DELVX
LXCH DELVY
REPIP3 CS PIPAZ # REPEAT PROCESS FOR Z PIP
XCH TEMZ
XCH PIPAZ
DODELVZ TS DELVZ
REPIP4 CA CDUX # READ CDUS INTO HIGH ORDER CDUTEMPS
TS CDUTEMPX
CA CDUY
TS CDUTEMPY
CA CDUZ
TS CDUTEMPZ
CA DELVX
TS PIPATMPX
CA DELVY
TS PIPATMPY
CA DELVZ
TS PIPATMPZ
TC Q
REREADAC CCS PHASE5
TCF +2
TCF TASKOVER
CCS PIPAGE
TCF READACCS # PIP READING NOT STARTED. GO TO BEGINNING
CAF DONEADR # SET UP RETURN FROM PIPASR
TS Q
CCS DELVZ
TCF REPIP4 # Z DONE, GO DO CDUS
TCF +3 # Z NOT DONE, CHECK Y.
TCF REPIP4
TCF REPIP4
ZL
CCS DELVY
TCF +3
TCF CHKTEMX # Y NOT DONE, CHECK X.
TCF +1
LXCH PIPAZ # Y DONE, ZERO Z PIP.
CCS TEMZ
CS TEMZ # TEMZ NOT = -0, CONTAINS -PIPAZ VALUE.
TCF DODELVZ
TCF -2
LXCH DELVZ # TEMZ = -0, L HAS ZPIP VALUE.
TCF REPIP4
CHKTEMX CCS TEMX # HAS THIS CHANGED
CS TEMX # YES
TCF +3 # YES
TCF -2 # YES
TCF REPIP1 # NO
TS DELVX
CS TEMY
TS DELVY
CS ZERO # ZERO X AND Y PIPS
DXCH PIPAX # L STILL ZERO FROM ABOVE
TCF REPIP3
DONEADR GENADR PIPSDONE
TMPTOSPT CA CDUTEMPY # THIS SUBROUTINE, CALLED BY AN RTB FROM
TS CDUSPOTY # INTERPRETIVE, LOADS THE CDUS CORRESPON-
CA CDUTEMPZ # DING TO PIPTIME INTO THE CDUSPOT VECTOR.
TS CDUSPOTZ
CA CDUTEMPX
TS CDUSPOTX
TCF DANZIG
# LRHTASK IS A WAITLIST TASK SET BY READACCS DURING THE DESCENT BRAKING
# PHASE WHEN THE ALT TO THE LUNAR SURFACE IS LESS THAN 25,000 FT. THIS
# TASK CLEARS THE ALTITUDE MEASUREMENT MADE DISCRETE AND INITIATES THE
# LANDING RADAR MEASUREMENT JOB (LRHJOB) TO TAKE A ALTITUDE MEASUREMENT
# 50 MS PRIOR TO THE NEXT READACCS TASK.
LRHTASK CA READLBIT
MASK LRSTAT # IS READLR FLAG SET?
EXTEND
BZF TASKOVER # NO. BYPASS LR READ.
CS LRSTAT
MASK NOLRRBIT # IS LR READ INHIBITED?
EXTEND
BZF TASKOVER # YES. BYPASS LR READ.
CA PRIO32 # LR READ OK SET JOB TO DO IT
TC NOVAC # ABOUT 50 MS PRIOR TO PIPA READ
EBANK= HMEAS
2CADR LRHJOB
TC TASKOVER
# HIGATASK IS ENTERED APPROXIMATELY 6 SECS PRIOR TO HIGATE DURING THE
# DESCENT PHASE. HIGATASK SETS THE HIGATE FLAG (BIT11) AND THE LR INHIBIT
# FLAG (BIT10) IN LRSTAT. THE HIGATJOB IS SET UP TO REPOSITION THE LR
# ANTENNA FROM POSITION 1 TO POSITION 2. IF THE REPOSITIONING IS
# SUCCESSFUL THE ALT BEAM AND VELOCITY BEAMS ARE TRANSFORMED TO THE NEW
# ORIENTATION IN NB COORDINATES AND STORED IN ERASABLE.
HIGATASK INHINT
CS PRIO3 # SET HIGATE AND LR INHIBIT FLAGS
MASK LRSTAT
AD PRIO3
TS LRSTAT
CAF PRIO32
TC FINDVAC # SET LR POSITIONING JOB (POS2)
EBANK= HMEAS
2CADR HIGATJOB
RELINT
TCF CONTSERV # CONTINUE SERVICER
# MUNRETRN IS THE RETURN LOC FROM SPECIAL AVE G ROUTINE (MUNRVG)
MUNRETRN EXIT
CAF XORFLBIT # WERE WE BELOW 30000 FT LAST PASS?
MASK LRSTAT
EXTEND
BZF XORCHK # NO - TEST THIS PASS
CS LRSTAT
MASK LRBYBIT
EXTEND
BZF COPYCYC1 # BYPASS LR LOGIC IF BIT15 IS SET.
CA READLBIT # SEE IF ALT < 35000 FT LAST CYCLE
MASK LRSTAT
EXTEND
BZF 25KCHK # ALT WAS > 35000 FT LAST CYCLE CHK NOW
HITEST CAF PSTHIBIT # CHECK FOR HIGATE
MASK LRSTAT
EXTEND
BZF HIGATCHK # NOT AT HIGATE LAST CYCLE-CHK THIS CYCLE
POS2CHK CAF BIT7 # VERIFY LR IN POS2
EXTEND
RAND CHAN33
EXTEND
BZF UPDATCHK # IT IS-CHECK FOR LR UPDATE
CAF BIT13 # NOT IN POS2-MAYBE REPOSITIONING
EXTEND
RAND CHAN12
EXTEND
BZF LRPOSALM # LR NOT IN POS2 OR REPOSITIONING-BAD
TCF CONTSERV # LR BEING REPOSITIONED-CONTINUE SERV
HIGATCHK CS TTF/8 # IS TTF > CRITERION?
AD RPCRTIME
EXTEND
BZMF HIGATASK # IF UXBXP > QSW, THEN REPOSITION
POS1CHK CAF BIT6 # HIGATE NOT IN SIGHT-DO POS1 CHK
EXTEND
RAND 33
EXTEND
BZF UPDATCHK # LR IN POS1-CHECK FOR LR UPDATE
LRPOSALM TC ALARM # LR NOT IN PROPER POS-ALARM-BYPASS UPDATE
OCT 511 # AND CONTINUE SERVICER
CONTSERV INHINT
CS BITS4-7
MASK LRSTAT # CLEAR LR MEASUREMENT MADE DISCRETES.
TS LRSTAT
COPYCYC1 TC PHASCHNG
OCT 10035
TC INTPRET # INTPRET DOES A RELINT.
VLOAD VXM
V1S
REFSMMAT
VSL1
STORE VN1 # TEMP. REF. VELOCITY VECTOR*2(7)M/CS.
ABVAL
STOVL ABVEL
R1S
VXM VSR4
REFSMMAT
STORE RN1 # TEMP. REF. POSITION VECTOR*2(29)M.
UNIT
STORE UNITR
BOFF RTB
FLP70
+2
COPYCYC3
VLOAD UNIT
R1S
VXV VSL1
UHYP
STOVL UHZP # DOWNRANGE HALF-UNIT VECTOR FOR R10.
WM
VXV VSL2
R1S
STODL DELVS
36D
DSU
/LAND/
STORE HCALC # NEW HCALC*2(24)M.
DMP
ALTCONV
STOVL ALTBITS # ALTITUDE FOR R10 IN BIT UNITS.
V1S
VSQ DDV
36D
DMP SIGN
ARCONV1
HDOTDISP
COPYCYC2 EXIT # LEAVE ALTITUDE RATE COMPENSATION IN MPAC
CAF FIVE
TC GENTRAN
ADRES UNIT/R/
ADRES RUNIT
CA MPAC
TS DALTRATE
COPYCYC3 CAF ELEVEN
TC GENTRAN
ADRES R1S
ADRES R
TS PIPATMPX
TS PIPATMPY
TS PIPATMPZ
TCF COPYCYCL # COMPLETE THE COYPCYCL.
# ALTCHK COMPARES CURRENT ALTITUDE (IN HCALC) WITH A SPECIFIED ALTITUDE FROM A TABLE BEGINNING AT ALTCRIT.
# ITS CALLING SEQUENCE IS AS FOLLOWS:-
# L CAF N
# L+1 TC BANKCALL
# L+2 CADR ALTCHK
# L+3 RETURN HERE IF HCALC STILL > SPECIFIED CRITERION. C(L) = +0.
# L+4 RETURN HERE IF HCALC < OR = SPECIFIED CRITERION. C(A) = C(L) = +0
# ALTCHK MUST BE BANKCALLED EVEN FROM ITS OWN BANK. N IS THE LOCATION, RELATIVE TO THE TAG ALTCRIT,
# OF THE BEGINNING OF THE DP CONSTANT TO BE USED AS A CRITERION.
ALTCHK EXTEND
INDEX A
DCA ALTCRIT
DXCH MPAC +1
EXTEND
DCS HCALC
DAS MPAC +1
TC BRANCH +4
CAF ZERO # BETTER THAN A NOOP, PERHAPS
INCR BUF2
TCF SWRETURN
ALTCRIT = 25KFT
25KFT 2DEC 7620 B-24 # (0)
15KFT 2DEC 4572 B-24 # (2)
50FT 2DEC 15.24 B-24 # (4)
30KFT 2DEC 9144 B-24 # (6)
XORCHK CAF SIX # ARE WE BELOW 30000 FT?
TC BANKCALL
CADR ALTCHK
TCF CONTSERV # CONTINUE LR UPDATE
TC UPFLAG # YES: INHIBIT X-AXIS OVERRIDE
CADR XOVINFLG
TC UPFLAG
CADR XORFLG
TCF CONTSERV # CONTINUE LR UPDATE
25KCHK CAF ZERO # ARE WE BELOW 25000 FT?
TC BANKCALL
CADR ALTCHK
TCF CONTSERV
CAF READLBIT # SET READLR FLAG TO ENABLE LR READING.
SETLRSTT ADS LRSTAT
TCF CONTSERV
15KCHK CAF TWO # ARE WE BELOW 15000 FT?
TC BANKCALL
CADR ALTCHK
TCF CONTSERV
LXCH VSELECT
CAF READVBIT
TCF SETLRSTT
# *********************************************************************************************************
#
CALCGRAV UNIT PDVL # SAVE UNIT/R/ IN PUSHLIST (18)
ZEROVECS
STOVL UNITGOBL
AXC,1 PUSH
2
STORE UNITR
BON AXC,1
LMOONFLG
CALCGRV1
0
DOT PUSH
UNITW
DSQ BDSU
DP1/20
PDDL DDV
RESQ
34D # (RN)SQ
STORE 32D # TEMP FOR (RE/RN)SQ
DMP DMP
20J
VXSC PDDL
UNITR
DMP DMP
2J
32D
VXSC VAD
UNITW
STADR
STORE UNITGOBL
VAD PUSH # MPAC = UNIT GRAVITY VECTOR. (18)
CALCGRV1 DLOAD NORM # PERFORM A NORMALIZATION ON RMAGSQ IN
34D # ORDER TO BE ABLE TO SCALE THE MU FOR
X2 # MAXIMUM PRECISION.
BDDV* SLR*
-MUDT,1
0 -21D,2
VXSC STADR
STORE GDT1/2 # SCALED AT 2(+7) M/CS
RVQ
CALCRVG VLOAD VXM
DELV
REFSMMAT
VXSC VSL1
KPIP1
STORE DELVREF
VSR1 PUSH
VAD PUSH # (DV-OLDGDT)/2 TO PD SCALED AT 2(+7)M/CS
GDT/2
VAD PDDL # (18)
VN
PIPTIME1
DSU SL
PIPTIME
6D
VXSC
VAD STQ
RN
31D
STCALL RN1 # TEMP STORAGE OF RN SCALED 2(+29)M
CALCGRAV
VAD VAD
VAD
VN
STCALL VN1 # TEMP STORAGE OF VN SCALED 2(+7)M/CS
31D
KPIP1 2DEC .0128 # SCALES DELV TO UNITS OF 2(7) M/CS.
KPIP 2DEC .1024 # SCALES DELV TO UNITS OF 2(4) M/CS.
# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST BE PRESERVED *********
-MUDT 2DEC* -7.9720645 E+12 B-44*
-MUDT1 2DEC* -9.8055560 E+10 B-44*
UNUSEDF3 2DEC 12800
DP1/20 2DEC 0.05
RESQ 2DEC* 40.6809913 E12 B-58*
20J 2DEC 3.24692010 E-2
2J 2DEC 3.24692010 E-3
ALTCONV 2DEC 1.40206802 B-4 # CONVERTS M*2(-24) TO BIT UNITS *2(-28).
ARCONV1 2DEC 656.167979 B-10 # CONV. ALTRATE COMP. TO BIT UNITS<
1SEC(7) 2DEC 100 B-7
DPSVEX1 2DEC -3004.75757 E-2 B-6
APSVEX1 2DEC -3030.0259 E-2 B-6
200B17 = 2SEC(17)
#****************************************************************************************************************
# MUNRVG IS A SPECIAL AVERAGE G INTEGRATION ROUTINE USED BY THRUSTING
# PROGRAMS WHICH FUNCTION IN THE VICINITY OF AN ASSUMED SPHERICAL MOON.
# THE INPUT AND OUTPUT QUANTITIES ARE REFERENCED TO THE STABLE MEMBER
# COORDINATE SYSTEM.
MUNRVG VLOAD VXSC
DELV
KPIP2
PUSH VAD # 1ST PUSH: DELV IN UNITS OF 2(8) M/CS
GDT/2
PUSH VAD # 2ND PUSH: (DELV + GDT)/2, UNITS OF 2(7)
V # (12)
VXSC VAD
200B17
R
STCALL R1S # STORE R SCALED AT 2(+24)M.
MUNGRAV
VAD VAD
VAD # (0)
V
STORE V1S # STORE V SCALED AT 2(+7)M/CS.
ABVAL
STOVL ABVELINT # STORE SPEED FOR LR AND DISPLAYS.
UNIT/R/
DOT SL1
V1S
STODL HDOTDISP # HDOT = V. UNIT(R)*2(7)M/CS.
36D
DSU
/LAND/
STCALL HCALC # FOR NOW, DISPLAY WHETHER POS OR NEG
MUNRETRN
MUNGRAV UNIT # AT 36D HAVE ABVAL(R), AT 34D R.R
STODL UNIT/R/
34D
NORM BDDV
X2
-MUDT1
SLR* VXSC
0 -11D,2
UNIT/R/
STORE GDT1/2 # 1/2GDT SCALED AT 2(7) M/CS.
RVQ
KPIP2 2DEC .0064 # SCALES DELV TO UNITS OF 2(8) M/CS.
1.95SECS DEC 195
RPCRTIME DEC -6 E2 B-17
0.175 2DEC 0.175
0.155 2DEC 0.155
LRWH 2DEC 0.4545454545 B1
VSCAL3 2DEC -4.72441006 B-7 # 15.5 FT/SEC AT 2(7) M/CS
6.25 2DEC .01905 B-6 # 6.25 FT/SEC AT 2(6) M/CS
LRHMAX 2DEC 170688
2SEC(18) 2DEC 200 B-18
2SEC(28) 2OCT 00000 00310 # 2SEC AT 2(28)
HSCAL 2DEC -.3288792 # SCALES 1.079 FT/BIT TO 2(22)M.
# ***** THE SEQUENCE OF THE FOLLOWING CONSTANTS MUST BE PRESERVED ********
VZSCAL 2DEC +.5410829105 # SCALES .8668 FT/SEC/BIT TO 2(18) M/CS.
VYSCAL 2DEC +.7565672446 # SCALES 1.212 FT/SEC/BIT TO 2(18) M/CS.
VXSCAL 2DEC -.4020043770 # SCALES -.644 FT/SEC/BIT TO 2(18) M/CS.
LRWVZ 2DEC 0.7
LRWVY 2DEC 0.7
LRWVX 2DEC 0.4
BITS4-7 OCT 110
# LRSTAT BIT DEFINITIONS
LRBYBIT = BIT15 # LR UPDATE BYPASS FLAG
PSTHIBIT = BIT11 # PAST HIGATE FLAG
NOLRRBIT = BIT10 # LANDING RADAR REPOSITIONING FLAG
XORFLBIT = BIT9 # X-AXIS OVERRIDE LIMIT FLAG
VELDABIT = BIT7 # LR VELOCITY MEASUREMENT MADE FLAG
READLBIT = BIT6 # OK TO READ LR RANGE DATA FLAG
READVBIT = BIT5 # OK TO READ LR VELOCITY DATA FLAG
RNGEDBIT = BIT4 # LR ALTITUDE MEASUREMENT MADE FLAG
# THE FOLLOWING DEFINITIONS ALLOW LRSTAT AND
XOVINFLG = 11872D # X-AXIS OVERRIDE FLAG
LRBYPASS = 13561D # LANDING RADAR BYPASS FLAG
XORFLG = 13567D # X-AXIS OVERRIDE LIMIT FLAG
UPDATCHK CAF NOLRRBIT # SEE IF LR UPDATE INHIBITED.
MASK LRSTAT
CCS A
TCF CONTSERV # IT IS-NO LR UPDATE
CAF RNGEDBIT # NO INHIBIT - SEE ALT MEAS. THIS CYCLE.
MASK LRSTAT
EXTEND
BZF VMEASCHK # NO ALT MEAS THIS CYCLE-CHECK FOR VEL
POSUPDAT TC INTPRET
VLOAD VXM
HBEAMNB # RANGE VECTOR IN NB COORDINATES AT 2(22)M
XNBPIP # CONVERT TO SM COORDINATES AT 2(23)M
VSL1 SETPD
0
DOT DMP
UNIT/R/ # ALTITUDE AT 2(24)M
HMEAS
SL DMP
6D
HSCAL
DSU PUSH
HCALC
STODL DELTAH
HCALC
DMP DAD
0.175
50FT
PDDL ABS
DELTAH
BOVB DDV
TCDANZIG
EXIT
INCR LRLCTR
CCS OVFIND
TCF HFAIL # DELTA H TOO LARGE
CA FLAGWRD1
MASK HINHFBIT
CCS A
TCF VMEASCHK # UPDATE INHIBITED - TEST VELOCITY ANYWAY
TC INTPRET # DO POSITION UPDATE
DLOAD DDV
HCALC # RESCALE H TO 2(28)M
LRHMAX
BOVB BDSU
VMEASCHK
NEARONE
DMP DDV
DELTAH
LRWH
VXSC VAD
UNIT/R/
R1S
STORE GNUR
EXIT
TC PHASCHNG
OCT 10035
CA FIVE
TC GENTRAN
ADRES GNUR
ADRES R1S
RELINT
TC INTPRET
VLOAD CALL
R1S
MUNGRAV
EXIT
VMEASCHK TC PHASCHNG # RESTART AT NEXT LOCATION
OCT 10035
CAF VELDABIT # IS V READING AVAILABLE?
MASK LRSTAT
EXTEND
BZF VALTCHK # NO SEE IF V READING TO BE TAKEN
VELUPDAT CS VSELECT # PROCESS VELOCITY DATA
DOUBLE
TS L # -2 VSELECT IN L
AD L
AD L # -6 VSELECT IN A
INDEX FIXLOC
DXCH X1 # X1 = -6 VSELECT, X2 = -2 VSELECT
CA EBANK4
TS EBANK
EBANK= LRXCDU
CA PIPTEM # STORE DELV IN MPAC
ZL
DXCH MPAC
CA PIPTEM +1
ZL
DXCH MPAC +3
CA PIPTEM +2
ZL
DXCH MPAC +5
CA LRYCDU # STORE LRCDUS IN CDUSPOTS
TS CDUSPOT
CA LRZCDU
TS CDUSPOT +2
CA LRXCDU
TS CDUSPOT +4
CS ONE
TS MODE # CHANGE STORE MODE TO VECTOR
CA EBANK7
TS EBANK # RESTORE EBANK 7
EBANK= DVCNTR
CA FIXLOC
TS PUSHLOC # SET PD TO ZERO
TC INTPRET
PDVL* CALL
VZBEAMNB,1 # CONVERT VBEAM FROM NB TO SM
TRG*NBSM
PDVL
VXSC PDDL
KPIP1 # SCALE DELV TO 2(7) M/CS AND PUSH
LRVTIME # TIME OF DELV AT 2(28)CS
DSU DDV
PIPTIME # TU - T(N-1)
2SEC(28)
VXSC VSL1 # G(N-1)(TU - T(N-1))
GDT/2 # SCALED AT 2(7) M/CS
VAD VAD # PUSH UP FOR DELV
DELVREF
PDVL VXV
R
WM
VAD
DOT PDDL
0
VMEAS
SL DMP*
10D
VZSCAL,2
DSU PDDL
6
ABS DMP
0.155
DAD PDDL
6.25
6
ABS BDSU
EXIT
INCR LRMCTR
TC BRANCH
TCF VUPDAT
TCF VFAIL # DELTA V TOO LARGE ALARM
VFAIL CS LRSCTR # DELTA Q LARGE
EXTEND # IF S = 0, DO NOT TURN ON TRACKER FAIL
BZF NOLITE
AD LRMCTR # M-S
MASK NEG3 # TEST FOR M-S > 3
EXTEND # IF M-S > 3, THEN TWO OR MORE OF THE
BZF +1 # LAST FOUR V READINGS WERE BAD,
# TCF NOLITE # SO TURN ON VELOCITY FAIL LIGHT
# TC UPFLAG # AND SET BIT TO TURN ON TRACKER FAIL LITE
# ADRES VFLSHFLG
NOLITE CA LRMCTR # SET S = M
TS LRSCTR
CS FLAGWRD0
MASK VORIDBIT
EXTEND
BZF VUPDAT1
CCS VSELECT # TEST FOR Z COMPONENT
TCF VALTCHK # NOT Z, DO NOT SET VX INHIBIT
CAF TWO
TS VSELECT
TCF VALTCHK
VUPDAT CA FLAGWRD0
MASK VINHFBIT
CCS A
TCF VALTCHK # UPDATE INHIBITED
VUPDAT1 TC INTPRET
DLOAD DDV
ABVELINT
VSCAL3
BOVB DAD
VALTCHK
NEARONE
DMP* DMP
LRWVZ,2
VXSC
VAD
V1S # ADD WEIGHTED DELTA V TO VELOCITY
STORE GNUV
EXIT
TC PHASCHNG # DO NOT RE-UPDATE
OCT 10035
CA FIVE
TC GENTRAN # STORE NEW VELOCITY VECTOR
ADRES GNUV
ADRES V1S
ENDVDAT = VALTCHK
VALTCHK TC PHASCHNG # DO NOT REPEAT ABOVE
OCT 10035
CAF READVBIT # TEST READVEL TO SEE IF VELOCITY READING
MASK LRSTAT # IS DESIRED.
EXTEND
BZF 15KCHK # TES - READ VELOCITY
READV INHINT
CAF PRIO32 # SET UP JOB TO READ VELOCITY BEAMS.
TC NOVAC
EBANK= HMEAS
2CADR LRVJOB
TCF CONTSERV # CONTINUE WITH SERVICER
HFAIL CS LRRCTR
EXTEND
BZF NORLITE # IF R = 0, DO NOT TURN ON TRK FAIL
AD LRLCTR
MASK NEG3
EXTEND # IF L-R LT 4, DO NOT TURN ON TRK FAIL
BZF +1
# TCF NORLITE
# TC UPFLAG # AND SET BIT TO TURN ON TRACKER FAIL LITE
# ADRES HFLSHFLG
NORLITE CA LRLCTR
TS LRRCTR # SET R = L
TS LRMCTR
TCF VMEASCHK
# ********************************************************************************************************
# LRVJOB IS SET WHEN THE LEM IS BELOW 15000 FT DURING THE LANDING PHASE
# THIS JOB INITIALIZES THE LANDING RADAR READ ROUTINE FOR 5 VELOCITY
# SAMPLES AND GOES TO SLEEP WHILE THE SAMPLING IS DONE-ABOUT 500 MS.
# WITH A GOODEND RETURN THE DATA IS STORED IN VMEAS AND BIT7 OF LRSTAT
# IS SET. THE GIMBAL ANGLES ARE READ ABOUT MIDWAY IN THE SAMPLING .
LRVJOB INHINT
CA 24MS # SET TASK TO READ CDUS + PIPAS
TC WAITLIST
EBANK= LRVTIME
2CADR RDGIMS
CCS VSELECT # SEQUENCE LR VEL BEAM SELECTOR
TCF +2
CAF TWO # IF ZERO-RESET TO TWO
TS VSELECT
DOUBLE # 2XVSELECT USED FOR VBEAM INDEX IN LRVEL
TC BANKCALL # GO INITIALIZE LR VEL READ ROUTINE
CADR LRVEL
TC BANKCALL # PUT LRVJOB TO SLEEP ABOUT 500 MS
CADR RADSTALL
TC ENDOFJOB
EXTEND # GOOD RETURN-STOW AWAY VMEAS
DCA SAMPLSUM
DXCH VMEAS
CS LRSTAT # SET BIT TO INDICATE VELOCITY
MASK VELDABIT # MEASUREMENT MADE.
ADS LRSTAT
TC ENDOFJOB
# LRHJOB IS SET BY LRHTASK WHEN LEM IS BELOW 25000 FT. THIS JOB
# INITIALIZES THE LR READ ROUTINE FOR AN ALT MEASUREMENT AND GOES TO
# SLEEP WHILE THE SAMPLING IS DONE-ABOUT 95 MS. WITH A GOODEND RETURN
# THE ALT DATA IS STORED IN HMEAS AND BIT7 OF LRSTAT IS SET.
LRHJOB TC BANKCALL # INITIATE LR ALT MEASUREMENT
CADR LRALT
TC BANKCALL # LRHJOB TO SLEEP ABOUT 95MS
CADR RADSTALL
TC ENDOFJOB
EXTEND
DCA SAMPLSUM # GOOD RETURN-STORE AWAY LRH DATA
DXCH HMEAS # LRH DATA 1.079 FT/BIT
CS LRSTAT # SET BIT TO INDICATE RANGE
MASK RNGEDBIT # MEASUREMENT MADE.
ADS LRSTAT
TC ENDOFJOB # TERMINATE LRHJOB
# RDGIMS IS A TASK SET UP BY LRVJOB TO PICK UP THE IMU CDUS AND TIME
# AT ABOUT THE MIDPOINT OF THE LR VEL READ ROUTINE WHEN 5 VEL SAMPLES
# ARE SPECIFIED.
EBANK= LRVTIME
RDGIMS EXTEND
DCA TIME2 # PICK UP TIME2,TIME1
DXCH LRVTIME # AND SAVE IN LRVTIME
EXTEND
DCA CDUX # PICK UP CDUX AND CDUY
DXCH LRXCDU # AND SAVE IN LRXCDU AND LRYCDU
CA CDUZ
TS LRZCDU # SAVE CDUZ IN LRZCDU
CA PIPAX
TS PIPTEM # SAVE PIPAX IN PIPTEM
EXTEND
DCA PIPAY # PICK UP PIPAY AND PIPAZ
DXCH PIPTEM +1 # AND SAVE IN PIPTEM +1 AND PIPTEM +2
TC TASKOVER
# HIGATJOB IS SET APPROXIMATELY 6 SECONDS PRIOR TO HIGH GATE DURING
# THE DESCENT BURN PHASE OF LUNAR LANDING. THIS JOB INITIATES THE
# LANDING RADAR REPOSITIONING ROUTINE AND GOES TO SLEEP UNTIL THE
# LR ANTENNA MOVES FROM POSITION 1 TO POSITION 2. IF THE LR ANTENNA
# ACHIEVES POSITION 2 WITHIN 22 SECONDS THE ALTITUDE AND VELOCITY
# BEAM VECTORS ARE RECOMPUTED TO REFLECT THE NEW ORIENTATION WITH
# RESPECT TO THE NB. BIT10 OF LRSTAT IS CLEARED TO ALLOW LR
# MEASUREMENTS AND THE JOB TERMINATES.
HIGATJOB TC BANKCALL # START LRPOS2 JOB
CADR LRPOS2
TC BANKCALL # PUT HIGATJOB TO SLEEP UNTIL JOB IS DONE
CADR RADSTALL
TC ENDOFJOB # BAD END
TC SETPOS2 # LR IN POS2 - SET UP TRANSFORMATIONS
CS NOLRRBIT # RESET NOLRREAD FLAG TO ENABLE LR READING
MASK LRSTAT
TS LRSTAT
TC ENDOFJOB
SETPOS1 TC MAKECADR # MUST BE CALLED BY BANKCALL
TS LRADRET1 # SAVE RETURN CADR, SINCE BUF2 CLOBBERED
CA ZERO # INDEX FOR LRALPHA,LRBETA IN POS 1.
# TS LRLCTR # SET L,M,R, ANS S TO ZERO
# TS LRMCTR
# TS LRRCTR
# TS LRSCTR
TC SETPOS # CONTINUE WITH COMPUTATIONS
CA LRADRET1
TC BANKJUMP # RETURN TO CALLER
SETPOS2 CA TWO # INDEX FOR POS2
SETPOS EXTEND
INDEX A
DCA LRALPHA # LRALPHA IN A, LRBETA IN L
TS CDUSPOT +4 # ROTATION ABOUT X
LXCH CDUSPOT # ROTATION ABOUT Y
CA ZERO
TS CDUSPOT +2 # ZERO ROTATION ABOUT Z.
EXTEND
QXCH LRADRET # SAVE RETURN
TC INTPRET
VLOAD CALL
UNITY # CONVERT UNITY(ANTENNA) TO NB
TRG*SMNB
STOVL VYBEAMNB
UNITX # CONVERT UNITX(ANTENNA) TO NB
CALL
*SMNB*
STORE VXBEAMNB
VXV VSL1
VYBEAMNB
STODL VZBEAMNB # Z = X * Y
HANGLE
RTB PUSH
CDULOGIC
SIN PDDL
COS PDDL
ZEROVECS
PDDL VDEF
VCOMP CALL
*SMNB* # CONVERT TO NB
STORE HBEAMNB
EXIT
TC LRADRET
24MS DEC 24