504 lines
8.6 KiB
Plaintext
504 lines
8.6 KiB
Plaintext
# 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 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 INPUT 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=6
|
|
Z123 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 PASS
|
|
STORE ZI +18D,2 # ZI THEN Z2 THEN Z3
|
|
TIX,1
|
|
INCOR1
|
|
INCOR1 TIX,2 BON
|
|
Z123 # LOOP FOR Z1,Z2,Z3
|
|
DMENFLG
|
|
INCOR1A
|
|
VLOAD
|
|
ZEROVECS
|
|
STORE ZI +12D
|
|
INCOR1A 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
|
|
INCOR1C
|
|
INCOR1B SL2 BOV
|
|
INCOR1C
|
|
STORE TEMPVAR
|
|
INCR,2 GOTO
|
|
DEC 1
|
|
INCOR1B
|
|
INCOR1C 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
|
|
54D
|
|
INCOR2 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 +12D
|
|
INCOR2AB AXT,2 SSP
|
|
18D
|
|
S2
|
|
6
|
|
INCOR3 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 ZIXB
|
|
FAZA TC PHASCHNG
|
|
# Page 1257
|
|
OCT 04022
|
|
TC UPFLAG
|
|
ADRES REINTFLG
|
|
FAZA1 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 +12D
|
|
FAZB CALL
|
|
GRP2PC
|
|
EXIT
|
|
FAZB1 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,1
|
|
FAZB2 TIX,1 GOTO
|
|
+2
|
|
FAZC # DONE WITH W MATRIX. UPDATE STATE VECTOR
|
|
RTB
|
|
FAZA
|
|
FAZB5 SLOAD DAD
|
|
ZIXB
|
|
12DD
|
|
BHIZ GOTO
|
|
FAZC
|
|
FAZB2
|
|
FAZC 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
|
|
MOVEPLEM
|
|
FAZAB 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
|
|
FAZAB3
|
|
FAZAB1 VLOAD VAD
|
|
RCV
|
|
DELTAX
|
|
STORE RCV
|
|
FAZAB2 VLOAD VAD
|
|
VCV
|
|
DELTAX +6
|
|
STORE VCV
|
|
SXA,2 CALL
|
|
PBODY
|
|
RECTIFY
|
|
FAZAB3 CALL
|
|
GRP2PC
|
|
BON RTB
|
|
VEHUPFLG
|
|
DOCSM1
|
|
MOVEALEM
|
|
CALL
|
|
SVDWN2 # STORE DOWNLINK STATE VECTOR
|
|
FAZAB4 CALL
|
|
# Page 1260
|
|
GRP2PC # PHASE CHANGE
|
|
BOFF VLOAD
|
|
DMENFLG
|
|
FAZAB5 # 6 DIMENSIONAL
|
|
TX789 # 9 DIMENSIONAL
|
|
STORE X789
|
|
FAZAB5 LXA,1 SXA,1
|
|
EGRESS
|
|
QPRET
|
|
EXIT
|
|
TC POSTJUMP # EXIT
|
|
CADR INTWAKE
|
|
DOCSM RTB GOTO
|
|
MOVEPCSM
|
|
FAZAB
|
|
DOCSM1 RTB CALL
|
|
MOVEACSM
|
|
SVDWN1 # STORE DOWNLINK STATE VECTOR
|
|
GOTO
|
|
FAZAB4
|
|
ZEROD = ZEROVECS
|
|
54DD DEC 54
|
|
6DD DEC -6
|
|
12DD 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 1261
|
|
NEWZCMP1 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 -3
|
|
NORMZI = 36D
|
|
|
|
|
|
|
|
|