Pre-launch Review
MEASUREMENT INCORPORATION
Scanned pages: 1149-1158
# Copyright: Public domain.# Filename: MEASUREMENT_INCORPORATION.agc# Purpose: Part of the source code for Luminary 1A build 099.# It is part of the source code for the Lunar Module's (LM)# Apollo Guidance Computer (AGC), for Apollo 11.## Assembler: yaYUL# Contact: Jim Lawton <jim DOT lawton AT gmail DOT com># Website: www.ibiblio.org/apollo.# Pages: 1149-1158# Mod history: 2009-05-28 JL Updated from page images.# 2011-01-06 JL Fixed pseudo-label indentation.## This source code has been transcribed or otherwise adapted from digitized# images of a hardcopy from the MIT Museum. The digitization was performed# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many# thanks to both. The images (with suitable reduction in storage size and# consequent reduction in image quality as well) are available online at# www.ibiblio.org/apollo. If for some reason you find that the images are# illegible, contact me at info@sandroid.org about getting access to the# (much) higher-quality images which Paul actually created.## Notations on the hardcopy document read, in part:## Assemble revision 001 of AGC program LMY99 by NASA 2021112-061# 16:27 JULY 14, 1969
# Page 1149# INCORP1 -- PERFORMS THE SIX DIMENSIONAL STATE VECTOR DEVIATION FOR POSITION# AND VELOCITY OR THE NINE-DIMENSIONAL DEVIATION OF POSITION, VELOCITY, AND# RADAR OR LANDMARK BIAS. THE OUTPUT OF THE BVECTOR ROUTINE ALONG WITH THE# ERROR TRANSITION MATRIX (W) ARE USED AS INPU TO THE ROUTINE. THE DEVIATION# IS OBTAINED BY COMPUTING AN ESTIMATED TRACKING MEASUREMENT FROM THE# CURRENT STATE VECTOR AND COMPARING IT WITH AN ACTUAL TRACKING MEASUREMENT# AND APPLYING A STATISTICAL WEIGHTING VECTOR.## INPUT# DMENFLG = 0 (6-DIMENSIONAL BVECTOR), =1 (9-DIMENSIONAL)# W = ERROR TRANSITION MATRIX 6X6 OR 9X9# VARIANCE = VARIANCE (SCALAR)# DELTAQ = MEASURED DEVIATION (SCALAR)# BVECTOR = 6 OR 9 DIMENSIONAL BVECTOR## OUTPUT# DELTAX = STATE VECTOR DEVIATIONS 6 OR 9 DIMENSIONAL# ZI = VECTOR USED FOR THE INCORPORATION 6 OR 9 DIMENSIONAL# GAMMA = SCALAR# OMEGA = OMEGA WEIGHTING VECTOR 6 OR 9 DIMENSIONAL## CALLING SEQUENCE# L CALL INCORP1## NORMAL EXIT# L+1 OF CALLING SEQUENCE
BANK 37 SETLOC MEASINC BANK
COUNT* $$/INCOR
EBANK= W
INCORP1 STQ EGRESS AXT,1 SSP 54D S1 18D # IX1 = 54 S1= 18 AXT,2 SSP 18D S2 6 # IX2 = 18 S2=6Z123 VLOAD MXV* BVECTOR # BVECTOR (0) W +54D,1 STORE ZI +18D,2 VLOAD BVECTOR +6 # BVECTOR (1)# Page 1150 MXV* VAD* W +108D,1 ZI +18D,2 STORE ZI +18D,2 VLOAD BVECTOR +12D # BVECTOR (2) MXV* VAD* W +162D,1 ZI +18D,2 # B(0)*W+B(1)*(W+54)+B(2)*(W+108) FIRST PASS STORE ZI +18D,2 # ZI THEN Z2 THEN Z3 TIX,1 INCOR1INCOR1 TIX,2 BON Z123 # LOOP FOR Z1,Z2,Z3 DMENFLG INCOR1A VLOAD ZEROVECS STORE ZI +12DINCOR1A SETPD VLOAD 0 ZI VSQ RTB TPMODE PDVL VSQ ZI +6 RTB TAD TPMODE PDVL VSQ ZI +12D RTB TAD TPMODE TAD AXT,2 VARIANCE 0 STORE TRIPA # ZI*2 + Z2*2 + Z3*2 + VARIANCE TLOAD BOV VARIANCE # CLEAR OVFIND +1 STORE TEMPVAR # TEMP STORAGE FOR VARIANCE BZE INCOR1CINCOR1B SL2 BOV INCOR1C STORE TEMPVAR INCR,2 GOTO DEC 1 INCOR1BINCOR1C TLOAD ROUND TRIPA# Page 1151 DMP SQRT TEMPVAR SL* TAD 0,2 TRIPA NORM INCR,2 X2 DEC -2 SXA,2 AXT,2 NORMGAM # NORMALIZATION COUNT -2 FOR GAMMA 162D BDDV SETPD DP1/4TH 0 STORE GAMMA TLOAD NORM TRIPA X1 DLOAD PDDL # PD 0-1 = NORM (A) MPAC DELTAQ NORM S1 XSU,1 SR1 S1 DDV PUSH # PD 0-1 = DELTAQ/A GOTO NEWZCOMP -3 SSP S2 54DINCOR2 VLOAD VXM* # COMPUT OMEGA1,2,3 ZI W +162D,2 PUSH VLOAD ZI +6 VXM* VAD W +180D,2 PUSH VLOAD ZI +12D VXM* VAD W +198D,2 PUSH TIX,2 # PD 2-7=OMEGA1, 8-13=OMEGA2, 14-19=OMEGA3 INCOR2 VLOAD STADR STORE OMEGA +12D VLOAD STADR STORE OMEGA +6 VLOAD STADR STORE OMEGA# Page 1152 BON VLOAD DMENFLG INCOR2AB ZEROVECS STORE OMEGA +12DINCOR2AB AXT,2 SSP 18D S2 6INCOR3 VLOAD* OMEGA +18D,2 VXSC VSL* 0 # DELTAQ/A 0,1 STORE DELTAX +18D,2 TIX,2 VLOAD INCOR3 DELTAX +6 VSL3 STORE DELTAX +6 GOTO EGRESS
# Page 1153# INCORP2 - INCORPORATES THE COMPUTED STATE VECTOR DEVIATIONS INTO THE# ESTIMATED STATE VECTOR. THE STATE VECTOR UPDATED MAY BE FOR EITHER THE# LEM OR THE CSM. DETERMINED BY FLAG VEHUPFLG. (ZERO = LEM) (1 = CSM)## INPUT# PERMANENT STATE VECTOR FOR EITHER THE LEM OR CSM# VEHUPFLG = UPDATE VEHICLE 0=LEM 1=CSM# W = ERROR TRANSITION MATRIX# DELTAX = COMPUTED STATE VECTOR DEVIATIONS# DMENFLG = SIZE OF W MATRIX (ZERO=6X6) (1=9X9)# GAMMA = SCALAR FOR INCORPORATION# ZI = VECTOR USED IN INCORPORATION# OMEGA = WEIGHTING VECTOR## OUTPUT# UPDATED PERMANENT STATE VECTOR## CALLING SEQUENCE# L CALL INCORP2## NORMAL EXIT# L+1 OF CALLING SEQUENCE#
SETLOC MEASINC1 BANK
COUNT* $$/INCOR
INCORP2 STQ CALL EGRESS INTSTALL VLOAD VXSC # CALC. GAMMA * OMEGA1,2,3 OMEGA GAMMA STOVL OMEGAM1 OMEGA +6 VXSC GAMMA STOVL OMEGAM2 OMEGA +12D VXSC GAMMA STORE OMEGAM3 EXIT CAF 54DD # INITIAL IX 1 SETTING FOR W MATRIX TS WIXA TS WIXB CAF ZERO TS ZIXA # INITIAL IX 2 SETTING FOR Z COMPONENT TS ZIXBFAZA TC PHASCHNG# Page 1154 OCT 04022 TC UPFLAG ADRES REINTFLGFAZA1 CA WIXB # START FIRST PHASE OF INCORP2 TS WIXA # TO UPDATE 6 OR 9 DIM. W MATRIX IN TEMP CA ZIXB TS ZIXA TC INTPRET LXA,1 LXA,2 WIXA ZIXA SSP DLOAD* S1 6 ZI,2 DCOMP NORM # CALC UPPER 3X9 PARTITION OF W MATRIX S2 VXSC XCHX,2 OMEGAM1 S2 LXC,2 XAD,2 X2 NORMGAM VSL* XCHX,2 0,2 S2 VAD* W +54D,1 STORE HOLDW DLOAD* DCOMP # CALC MIDDLE 3X9 PARTITION OF W MATRIX ZI,2 NORM VXSC S2 OMEGAM2 XCHX,2 LXC,2 S2 X2 XAD,2 VSL* NORMGAM 0,2 XCHX,2 VAD* S2 W +108D,1 STORE HOLDW +6 BOFF DMENFLG # BRANCH IF 6 DIMENSIONAL FAZB DLOAD* DCOMP # CALC LOWER 3X9 PARTITION OF W MATRIX ZI,2 NORM VXSC# Page 1155 S2 OMEGAM3 XCHX,2 LXC,2 S2 X2 XAD,2 VSL* NORMGAM 0,2 XCHX,2 VAD* S2 W +162D,1 STORE HOLDW +12DFAZB CALL GRP2PC EXITFAZB1 CA WIXA # START 2ND PHASE OF INCORP2 TO TRANSFER AD 6DD # TEMP REG TO PERM W MATRIX TS WIXB CA ZIXA AD MINUS2 TS ZIXB TC INTPRET LXA,1 SSP WIXA S1 6 VLOAD HOLDW STORE W +54D,1 VLOAD HOLDW +6 STORE W +108D,1 BOFF VLOAD DMENFLG FAZB5 HOLDW +12D STORE W +162D,1FAZB2 TIX,1 GOTO +2 FAZC # DONE WITH W MATRIX. UPDATE STATE VECTOR RTB FAZAFAZB5 SLOAD DAD ZIXB 12DD BHIZ GOTO FAZC FAZB2FAZC CALL GRP2PC# Page 1156 VLOAD VAD # START 3RD PHASE OF INCORP2 X789 # 7TH, 8TH, 9TH COMPONENT OF STATE VECTOR DELTAX +12D # INCORPORATION FOR X789 STORE TX789 BON RTB VEHUPFLG DOCSM MOVEPLEMFAZAB BOVB AXT,2 TCDANZIG 0 BOFF AXT,2 MOONTHIS +2 2 VLOAD VSR* DELTAX # B27 IF MOON ORBIT, B29 IF EARTH 0 -7,2 VAD BOV TDELTAV FAZAB1 STOVL TDELTAV DELTAX +6 # B5 IF MOON ORBIT, B7 IF EARTH VSR* VAD 0 -4,2 TNUV BOV FAZAB2 STCALL TNUV FAZAB3FAZAB1 VLOAD VAD RCV DELTAX STORE RCVFAZAB2 VLOAD VAD VCV DELTAX +6 STORE VCV SXA,2 CALL PBODY RECTIFYFAZAB3 CALL GRP2PC BON RTB VEHUPFLG DOCSM1 MOVEALEM CALL SVDWN2 # STORE DOWNLINK STATE VECTORFAZAB4 CALL# Page 1157 GRP2PC # PHASE CHANGE BOFF VLOAD DMENFLG FAZAB5 # 6 DIMENSIONAL TX789 # 9 DIMENSIONAL STORE X789FAZAB5 LXA,1 SXA,1 EGRESS QPRET EXIT TC POSTJUMP # EXIT CADR INTWAKEDOCSM RTB GOTO MOVEPCSM FAZABDOCSM1 RTB CALL MOVEACSM SVDWN1 # STORE DOWNLINK STATE VECTOR GOTO FAZAB4ZEROD = ZEROVECS54DD DEC 546DD DEC -612DD DEC 12
SETLOC RENDEZ BANK COUNT* $$/INCOR
NEWZCOMP VLOAD ABVAL ZI STOVL NORMZI ZI +6 ABVAL PUSH DSU BMN NORMZI +3 DLOAD STADR STORE NORMZI VLOAD ABVAL ZI +12D PUSH DSU NORMZI BMN DLOAD +3 STADR STORE NORMZI # LARGEST ABVAL DLOAD SXA,1 NORMZI NORMZI # SAVE X1 NORM INCR,1# Page 1158 X1 DEC 2 VLOAD VSL* ZI 0,1 STOVL ZI ZI +6 VSL* 0,1 STOVL ZI +6 ZI +12D VSL* SXA,1 0,1 NORMZI +1 # SAVE SHIFT STORE ZI +12D LXA,1 XSU,1 NORMGAM NORMZI +1 XSU,1 NORMZI +1 SXA,1 LXC,1 NORMGAM NORMZI +1 XAD,1 SETPD NORMZI 2D GOTO INCOR2 -3NORMZI = 36D