# Copyright: Public domain. # Filename: CM_BODY_ATTITUDE.agc # Purpose: Part of the source code for Comanche, build 055. It # is part of the source code for the Command Module's # (CM) Apollo Guidance Computer (AGC), Apollo 11. # Assembler: yaYUL # Reference: pp. 883-889 # Contact: Ron Burkey <info@sandroid.org> # Website: http://www.ibiblio.org/apollo. # Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same # name and Comanche 055 page images. # # The contents of the "Comanche055" files, in general, are transcribed # from scanned documents. # # Assemble revision 055 of AGC program Comanche by NASA # 2021113-051. April 1, 1969. # # This AGC program shall also be referred to as Colossus 2A # # Prepared by # Massachusetts Institute of Technology # 75 Cambridge Parkway # Cambridge, Massachusetts # # under NASA contract NAS 9-4065. # # Refer directly to the online document mentioned above for further # information. Please report any errors to info@sandroid.org.
# Page 883 BANK35
SETLOC BODYATT BANK
COUNT37/CMBAT
# PDL 12D - 15D SAFE.
# VALUES OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING READACCS.
EBANK= RTINIT # LET INTERPRETER SET EB
CM/POSE TC INTPRET # COME HERE VIA AVEGEXIT.
SETPD VLOAD 0 VN# KVSCALE = (12800/ .3048) /2VS VXSC PDVL
-KVSCALE # KVSCALE = .81491944
UNITW # FULL UNIT VECTOR
VXV VXSC# VREL = V - WE*R
UNITR
KWE
VAD STADR STORE -VREL # SAVE FOR ENTRY GUIDANCE. REF COORDS
UNIT LXA,1 36D # ABVAL( -VREL) TO X1 STORE UXA/2# -UVREL REF COORDS
VXV VCOMP
UNITR # .5 UNIT REF COORDS
UNIT SSP # THE FOLLOWING IS TO PROVIDE A STABLE
S1 # UN FOR THE END OF THE TERMINAL PHASE.
SPVQUIT DEC .019405# 1000/ 2 VS
TIX,1 VLOAD # IF V-VQUIT POS, BRANCH.
CM/POSE2 # SAVE UYA IN OLDUYA
OLDUYA # OTHERWISE CONTINUE TO USE OLDUYA.
CM/POSE2 STORE UYA/2# REF COORDS
STORE OLDUYA # RESTORE, OR SAVE AS CASE MAY BE.
VXV VCOMP
UXA/2# FINISH OBTAINING TRAJECTORY TRIAD.
VSL1 STORE UZA/2# REF COORDS # Page 884
TLOAD # PICK UP CDUX, CDUY, CDUZ CORRESPONDING
AOG/PIP # TO PIPUP TIME IN 2S.C AND SAVE.
CM/TRIO STODL24D 25D # AIG/PIP
RTB PUSH# TO PDL0
CDULOGIC
COS STODL UBX/2# CI /2 # AIG/PIP FROM PDL 0
SIN DCOMP STODL UBX/2 +4# -SI /2 26D # AMG/PIP
RTB PUSH# TO PDL 0
CDULOGIC
SIN PDDL # XCH PDL 0. SAVE SM /2
COS PDDL # CM /2 TO PDL 2 0# SM /2
DCOMP VXSC
UBX/2
VSL1 # NOISE WONT OVFL. STODL UBY/2# =(-SMCI, NOISE, SMSI)/2 2# CM /2 REPLACES NOISE STODL UBY/2 +2# UBY/2=(-SMCI, CM, SMSI)/2 24D # AOG/PIP
RTB PUSH# TO PDL 4
CDULOGIC
SIN PDDL # XCH PDL 4. SAVE SO /2
COS VXSC# CO /2
UBY/2 STODL UBY/2# UBY/2=(-COSMCI, COCM, COSMSI)/4 4D # SO /2
DMP DCOMP
UBX/2 +4# -SI /2
DAD
UBY/2# INCREMENT BY (SOSI /4) STODL UBY/2 # SO /2 FROM PDL 4
DMP DAD
UBX/2# CI /2
UBY/2 +4 STOVL UBY/2 +4# YB/4 PLATFORM COORDS
# YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI )
UBY/2
VXM VSL2
REFSMMAT # .5 UNIT STODL UBY/2# YB/2 DONE REF COORDS # Page 885 # CM /2 FROM PDL 2 VXSC VSL1
UBX/2 STODL UBX/2# =( CMCI, NOISE, -CMSI)/2 STADR# SM /2 FROM PDL 0 STOVL UBX/2 +2# SM /2 REPLACES NOISE
UBX/2# XB/2 PLATFORM COORDS
# XB = ( CMCI , SM , -CMSI )
VXM VSL1
REFSMMAT # .5 UNIT STORE UBX/2# XB/2 DONE REF COORDS
VXV VSL1
UBY/2 STOVL UBZ/2# ZB/2 DONE REF COORDS
# EQUIVALENT TO # ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI)
UXA/2# -UVREL/2 = -UVA/2
VXV UNIT # GET UNIT(-UVREL*UBY)/2 = UL/2
UBY/2# YB/2 PUSH DOT # UL/2 TO PDL 0,5
UZA/2# UNA/2 STOVL COSTH # COS(ROLL)/4 0# UL/2
TLOAD EXIT# ANGLES IN MPAC IN THE ORDER # -( (ROLL, BETA, ALFA) /180)/2 6D # THESE VALUES CORRECT AT PIPUP TIME.
# Page 887 # BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES
EBANK= AOG
CM/ATUP CA EBAOG TSEBANK
CMTR1 INDEX FIXLOC CS10D # (GAMA/180)/2 XCH GAMA TS L
INHINT # MUST REMAIN INHINTED UNTIL UPDATE OF BODY # ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS # INDICATOR.
CS CM/FLAGS MASK BIT11 # GAMDIFSW=94D BIT11 INITLY=0 EXTEND# DONT CALC GAMA DOT UNTIL HAVE FORMD # ONE DIFFERENCE. BZF DOGAMDOT # IS OK, GO ON. ADS CM/FLAGS # KNOW BIT IS 0 TC NOGAMDOT # SET GAMDOT = 0
DOGAMDOT CS L AD GAMA # DEL GAMA/360= T GAMDOT/360 EXTEND MP TCDU # TCDU = .1 SEC, T = 2 SEC. TS GAMDOT # GAMA DOT TCDU / 180
EXTEND# IGNORE GAMDOT IF LEQ .5 DEG/SEC BZMF +2
COM AD FIVE EXTEND BZMF +3# SET GAMDOT=+0 AS TAG IF TOO SMALL.
NOGAMDOT CA ZERO # COME HERE INHINTED. TS GAMDOT # FOR NOW LEAVE IN 2S.C # UPDATE ANGLES BY CORRECTING EUILER ANG # FOR ACCRUED INCREMENT SINCE PIPUP # R = R EUIL + R(NOW) -R(PIPUP) CS MPAC # GET (R EUL/180) /2 DOUBLE# POSSIBLE OVERFLOW TC CORANGOV # CORRECT FOR OVFL IF ANY EXTEND
SU ROLL/PIP # GET INCR SINCE PIPUP AD ROLL/180# ONLY SINGLE OVFL POSSIBLE. TC CORANGOV # CORRECT FOR OVFL IF ANY # Page 888 TS TEMPROLL
CS MPAC +2# GET (ALFA EUL/180) /2 DOUBLE# SAME AS FOR ROLL. NEEDED FOR EXT ATM DAP TC CORANGOV # CORRECT FOR OVFL IF ANY EXTEND
SU ALFA/PIP AD ALFA/180 TC CORANGOV # CORRECT FOR OVFL IF ANY TS TEMPALFA
CS MPAC +1# GET (BETA EUL/180) /2
CMTR2 DOUBLE EXTEND
SU BETA/PIP AD BETA/180 XCH TEMPBETA # OVFL NOT EXPECTED.
CA EBANK3 TSEBANK
EBANK= PHSNAME5 EXTEND DCA REPOSADR # THIS ASSUMES THAT THE TC PHASCHNG DXCH PHSNAME5 # IS NOT CHANGED IN OCT 10035 # SERVICER.
CA EBAOG TSEBANK
EBANK= AOG
REDOPOSE EXTEND# RE-STARTS COME HERE DCA TEMPROLL DXCH ROLL/180 CA TEMPBETA TS BETA/180
RELINT
TC INTPRET # CANT TC DANZIG AFTER PHASCHNG.
CM/POSE3 VLOAD ABVAL # RETURN FROM CM/ATUP. (RESTART) VN# 2(-7) M/CS STORE VMAGI # FOR DISPLAY ON CALL.
GOTO
POSEXIT # ENDEXIT, STARTENT, OR SCALEPOP.
CORANGOV TS L TC Q INDEX A # Page 889 CA LIMITS ADS L TC Q # COSTS 2 MCT TO USE. SEE ANGOVCOR.
-KVSCALE 2DEC -.81491944# -12800/(2 VS .3048)
TCDU DEC .1# TCDU = .1 SEC.
EBANK= AOG
REPOSADR 2CADR REDOPOSE
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9Angebot
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.