Pre-launch Review
MEASUREMENT INCORPORATION
Scanned pages: 1252-1261
# Copyright: Public domain.# Filename: MEASUREMENT_INCORPORATION.agc# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.# It is part of the source code for the Command Module's (CM)# Apollo Guidance Computer (AGC), for Apollo 11.# Assembler: yaYUL# Contact: Ron Burkey <info@sandroid.org>.# Website: www.ibiblio.org/apollo.# Pages: 1252-1261# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the# same name, using Comanche055 page images.## 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 055 of AGC program Comanche by NASA# 2021113-051. 10:28 APR. 1, 1969## This AGC program shall also be referred to as# Colossus 2A
# Page 1252# INCORP1--PERFORMS THE SIX DIMENSIONAL STATE VECTOR DEVIATION FOR POSITI# ON AND VELOCITY OR THE NINE DIMENSIONAL DEVIATION OF POSITION,VELOCITY,A# ND RADAR OR LANDMARK BIAS.THE OUTPUT OF THE BVECTOR ROUTINE ALONG WITH T# HE ERROR TRANSITION MATRIX(W) ARE USED AS INPUT TO THE ROUTINE.THE DEVIA# TION IS OBTAINED BY COMPUTING AN ESTIMATED TRACKING MEASUREMENT FROM THE# CURRENT STATE VECTOR AND COMPARING IT WITH AN ACTUAL TRACKING MEASUREMEN# T AND APPLYING A STATISTICAL WEIGHTING VECTOR.# INPUT# DMENFLG = 0 6DIMENSIONAL BVECTOR 1= 9DIMENSIONAL# 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 1253 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 PAS 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 1254 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 1255 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 1256# 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 C=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 1257 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 1258 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 1259 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 1260 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 MEASINC2 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 NEWZCMP1 STADR STCALL NORMZI # LARGEST ABVAL NEWZCMP1
SETLOC MEASINC3 BANK# Page 1261NEWZCMP1 DLOAD SXA,1 NORMZI NORMZI # SAVE X1 NORM INCR,1 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