diff --git a/CM_BODY_ATTITUDE.s b/CM_BODY_ATTITUDE.s new file mode 100644 index 0000000..5839f61 --- /dev/null +++ b/CM_BODY_ATTITUDE.s @@ -0,0 +1,302 @@ +# Copyright: Public domain. +# Filename: CM_BODY_ATTITUDE.s +# 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 +# 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 +# Massachussets 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 + BANK 35 + + SETLOC BODYATT + BANK + + COUNT 37/CMBAT + +# PDL 12D - 15D SAFE. + +# VALUE 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 # SAME 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 2'S C AND SAVE. +CM/TRIO STODL 24D + 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 WON'T 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 + + DOT + UYA/2 + STCALL SINTH # -SIN(ROLL)/4 + ARCTRIG + STOVL 6D # -(ROLL/180) /2 + UBY/2 + DOT SL1 # -UVA.UBY = -SIN(BETA) + UXA/2 # -UVREL/2 + ARCSIN + STOVL 7D # -(BETA/180) /2 + UBX/2 # XB/2 + DOT # UL.UBX = -SIN(ALFA) + 0 # UL/2 + STOVL SINTH # -SIN(ALFA)/4 + DOT # UL/2 FROM PDL 0 + UBZ/2 + STCALL COSTH # COS(ALFA)/2 + ARCTRIG + STOVL 8D # -(ALFA/180) /2 + UNITR # UR/2 REF COORDS + DOT SL1 +# Page 886 + UZA/2 # MORE ACCURATE AT LARGE ARG. + ARCCOS + STORE 10D # (-GAMA/180)/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 + TS EBANK +CMTR1 INDEX FIXLOC + CS 10D # (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 # DON'T 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 2'S C + # UPDATE ANGLES BY CORRECTING EULER 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 + TS EBANK + + EBANK= PHSNAME5 + EXTEND + DCA REPOSADR # THIS ASSUMES THAT THE TC PHASCHNG + DXCH PHSNAME5 # IS NOT CHANGED IN OCT 10035 + # SERVICER. + + CA EBAOG + TS EBANK + + EBANK= AOG +REDOPOSE EXTEND # RE-STARTS COME HERE + DCA TEMPROLL + DXCH ROLL/180 + CA TEMPBETA + TS BETA/180 + + RELINT + + TC INTPRET # CAN'T 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 + diff --git a/FP8.s b/FP8.s new file mode 100644 index 0000000..c7ef351 --- /dev/null +++ b/FP8.s @@ -0,0 +1,4768 @@ +# Copyright: Public domain. +# Filename: FP8.s +# Purpose: This is the Apollo lunar module's firmware for the +# Abort Guidance System (AGS). This is Flight Program 8. +# Assembler: yaLEMAP +# Contact: Ron Burkey . +# Website: www.ibiblio.org/apollo/yaAGS.html +# Reference: http://www.ibiblio.org/apollo/Pultorak_files/FP8Listing.pdf. +# Mod history: 2005-01-15 RSB Began. +# 2005-01-17 RSB Data entry complete, but not debugged. +# 2005-01-18 RSB As of yesterday, this assembled with +# 86 fatal errors. These have all been +# repaired. Lots of other stuff fixed too. +# I know know that the addresses and +# opcodes at the ends of each page are +# correct. However, the checksums are +# still wrong, so the next step is to +# proceed with a binary comparison. +# 2005-01-18 RSB Fully debugged and ready to go. +# It has been completely proofed against +# the binary in the scanned assembly +# listing, and the checksums are correct. +# (Of course, it could always use more +# proofing if somebody wanted to do it. +# Particularly the program comments.) +# 2005-05-14 RSB Corrected website reference above. +# 2005-06-12 RSB Fixed comments on p. 117. +# +# The contents have been taken (by means of manual data entry) from +# an assembly listing of Flight Program 8 scanned by John Pultorak from +# a physical copy preserved by supplied by Davis Peticolas. (The WWW link +# for the scan is referenced above.) +# +# This file contains the entire source code for FP8. I have not split the +# source code into many smaller chunks as has been done for AGC source code. +# The page references are to the scanned PDF of the assembly listing, but +# the page markings on the physical copy match the PDF pages. In addition +# to the comments containing the page references, I've also added some +# blank lines for readability. So don't expect the line number in the +# scanned version to match the line numbers in an assembly listing created +# by processing this source file with the yaLEMAP cross-assembler. + +# Page 1 +# FLIGHT PROGRAM 8 -- LM AGS FP8 S03 4039 -- 12/18/70 +# LM ABORT ELECTRONICS ASSEMBLY +# +# SCRATCH PAD STORAGE + ORG 0000 +TS0 DEC 0 +TS1 DEC 0 +TS2 DEC 0 +TS3 DEC 0 +TS4 DEC 0 +TS5 DEC 0 +TS6 DEC 0 +TS7 DEC 0 +TS10 DEC 0 +TS11 DEC 0 +TS12 DEC 0 +TS13 DEC 0 +TS14 DEC 0 +TS15 DEC 0 +TS16 DEC 0 +TS17 DEC 0 +SREX3 DEC 0 +SREX2 DEC 0 +SREX1 DEC 0 +SREX DEC 0 +TVARBR DEC 0 # TEMP STORE FOR CK SUM. + TRA RETURN # SERV ROUT, STARTUP +# +# TAPE LOAD STARTUP CHECKSUM +# +SF OUT 6402 # DEDA INPUT SCALE FACTOR +OCTF INP 2040 # DEDA OCTAL INPUT +# +# THE NEXT 16 LOCATIONS ARE SHARED +# WITH A RR FILTER TEMPORARY MATRIX +# +U2X ALS 1 # B1 UNIT RADIAL VECTOR TO +U2Y TMI *+2 # B1 TRIAL RENDEZ PT. +U2Z TRA *-3 # B1 + +# Page 2 +D11 EQU U2X # RADAR TEMP. MATRIX (16 LOC) +VFX EQU U2X # BRAKING VEL VECTOR AT 13. +C2 DLY *+1 # B1 RENDEZ ANGLE SINE +V1X OUT 7012 # B1 HORIZ UNIT VECTOR +V1Y INP 6200 +V1Z CLZ SUM +DLSC CLA V2Z # DOWNLINK SHIFT COUNTER +W1X STO TVARBR # B1 U1 X V1 +D31 EQU W1X +W1Y CLZ WRDCNT +W1Z TSQ TVARBR +SI ADZ SUM # B0 E(SIN(E0)) +RD2DOT STO SUM # B7 DESIRED RADIAL ACCEL +YD2DOT CLA TVARBR # B7 DESIRED OUT-OF-PLANE ACCEL +TSEX SUB CLAFR # EXIT FROM NORTON +SIDELL TMI U1X # B1 SIN DELTA L +V6X CLZ SUM # B13 TEMP STORAGE FOR TPI QUANT +V6Y TMI *+3 +V6Z SUB 1B17 +DQSX EQU V6X # ACCUM VEL IN XDV +CODELL TMI EXIT40 # B1 COS DELTA L +WCX CLA 10B4 # B1 UNIT VECTOR NORMAL +WCY STO S12 # TO CSM ORBIT +WCZ OUT 6410 +TMPBR TRA SINITC # TEMP BRANCH STORE +U1X CLZ WRDCNT # B1 LEM UNIT RAD VECTGOR +U1Y ADD 1B17 +U1Z STO WRDCNT +BRANCH SUB 1B11 # GUIDANCE BRANCH +V2X TMI W1Z # B1 HORZ UNIT VECTOR AT +V2Y DLY W1Y # RENDEZ POINT +V2Z CLA 0206 +VGX EQU V2X # VEL TO GAIN VECTOR AT L3 +# +# END OF TAPE LOAD CHECKSUM PROGRAM +# +AT DEC 0B7 + +# Page 3 +EX DEC 0B2 # ATTITUDE ERRORS. +EY DEC 0 +EZ DEC 0 +X3 DEC 0B0 # XFR ORB PARAM. +TR3 EQU X3 # ADDRESS OF RESULT FOR MXM +DVXM1 DEC 0B1 # BODY DELTA VS +DVYM1 DEC 0 # PREVIOUS CYCLE. +DVZM1 DEC 0 +NI DEC 0B-9 # PREDICTION ANGULAR FREQUENCY +NE EQU NI # CSM PRED. ANGULAR FREQ. +TR8 EQU NI # RADAR TEMP. +VD2X DEC 0B2 # DELTA V EXP LS +VD2Y DEC 0 +VD2Z DEC 0 +CI DEC 0B0 # E(COS(E0)) +TR1 EQU CI # ADDR. OF 1ST MATRIX FOR MXM +DRX DEC 0B14 # LRM POS REMAINDERS +DRY DEC 0 +DRZ DEC 0 +THEP DEC 0 # PGNS THETA IN COUNTS. +DIGX DEC 0B7 # PREDICTED CHANGE IN +DIGY DEC 0 # INTEGRATED GRAVITY. +DIGZ DEC 0 +PSIP DEC 0 # PGNS PSI IN COUNTS. +GXDT DEC 0B7 # GRAVITY TIMES MAJOR +GYDT DEC 0 +GZDT DEC 0 +PHIP DEC 0 # PGNS PHI IN COUNTS. +DVSX DEC 0 +DVSY DEC 0 +DVSZ DEC 0 +SIGA DEC 0B1 # SIN FDAI GAMMA. +RRX DEC 0B23 # COMPUTED LM-CSM RANGE +RRY DEC 0 +RRZ DEC 0 +COGA DEC 0B1 # COS FDAI GAMMA. +A11 DEC 1.0B1 # XB DIRECTION COSINES. + +# Page 4 +A12 DEC 0 +A13 DEC 0 +TS8 DEC 0 +A31 DEC 0 # ZB DIRECTION COSINES +A32 DEC 0 +A33 DEC 1.0B1 +SUM DEC 0 # RUNNING MEMORY SUM +A21 DEC 0 # YB DIRECTION COSINES +A22 DEC 1.0B1 +A23 DEC 0 +X4 DEC 0B0 # XFR ORB PARAM. +VHSQ EQU X4 # 0B26 VH SQUARED +TR2 EQU X4 # ADDR. OF 2ND MATRIX FOR MXM +E1 DEC 0 # -6 OR -9 XB NORM ERROR +E3 DEC 0 # ZB NORMALITY ERROR. +E13 DEC 0 # XB,ZB ORTHOG ERROR. +DEL10 DEC 0 # TPI LOGIC FLAG +DA11 DEC 0B-5 # DIR COSINE REMAINDERS +DA12 DEC 0 +DA13 DEC 0 +WRDCNT DEC 0 # CKSUM WORD COUNT +DA31 DEC 0 +DA32 DEC 0 +DA33 DEC 0 +DEL44 DEC 0 # RADAR CODE WORD RESET FLAG +A11D DEC 0B1 # XD DIRECTION COSINES. +A12D DEC 0 +A13D DEC 0 + DEC 0 # ** UNUSED -- INDEXED BY A11D ** +A31D DEC 0B1 # ZD DIRECTION COSINES. +A32D DEC 0 +A33D DEC 0 +MU17 DEC 0B3 # RADAR FILTER ENTRY COUNTER +P DEC 0B23 # TRIAL SEMI-PARAMETER +ALPHA DEC 0B23 # XFR ORBIT SEMI-MAJOR AXIS +Q1 DEC 0B23 # XFR ORBIT PERILUNE +ESQ EQU Q1 + +# Page 5 +AI DEC 0B23 # PRED. SEMI-MAJOR AXIS +AE EQU AI # CSM PRED. SEMI-MAJOR AXIS +R5X DEC 0B23 # LM PRED POS AHEAD TDEL +R5Y DEC 0 +R5Z DEC 0 +AL DEC 0B23 # LM PRED. SEMI-MAJOR AXIS +REX DEC 0B23 # CSM EPOCH POSITION +REY DEC 0 +REZ DEC 0 +RT DEC 0B23 # CSM PRED POS. MAG. +R0X DEC 0B23 # PRED EPOCH POS VECTOR +R0Y DEC 0 +# SEE REAR OF LISTING FOR CHECKSUM +# Note that the CHECKSUM pseudo-op is not defined in the AGS +# programmer's manual. I have decided for the purposes of +# implementing yaLEMAT that the following syntax will be +# used. It means that the cross-assembler will compute a +# checksum of the address range 0207-1004 (octal), and will +# store it right here. + CHECKSUM RANGE 0207-1004 +R0Z DEFINE 0206 +R0 DEC 0B23 # PRED EPOCH POS. MAG. +C11 EQU P # RADAR TEMP. MATRIX +C12 EQU ALPHA +C13 EQU Q1 +C14 EQU AI +C21 EQU R5X +C22 EQU R5Y +C23 EQU R5Z +C24 EQU AL +C31 EQU REX +C32 EQU REY +C33 EQU REZ +C34 EQU RT +C41 EQU R0X +C42 EQU R0Y +C43 EQU R0Z +C44 EQU R0 +R DEC 0B23 # LM POS MAGNITUDE +Y DEC 0B23 # OUT OF PLANE POSITION +PP DEC 0B23 # P PRIME/EXIT FOR MXM +POUTFS DEC 7.684096E4B23 # MAX P DISPLAYABLE +POUT DEC 0 # DISPLAY POSITION. + +# Page 6 +DPOUT DEC 0 # DISPLAY POSITION INCREMENT. +2K3 DEC 1048576.B23 # QL SET ON O.F. +2K14 DEC 5.E4B23 # INITIAL P PERTURBATION +RIX DEC 0B23 # ELLIPSE PRED POS OUTPUT +RIY DEC 0 +RIZ DEC 0 +DELR1 EQU RIX # MEASURED MINUS COMPUTED RANGE +DELR3 EQU RIY # B23 +DELR2 EQU RIZ +25J DEC 0B23 # DEDA ALTITUDE UPDATE +7J DEC 6042736B23 # TERM IN AL(O.I.) +8J DEC 2940243B23 # TERM IN AL(O.I) LOWER LIMIT +10J DEC 6046910B23 # RETARGET VALUE FOR 7J +4K5 DEC 5735200B23 # NOMINAL BURNOUT ALTITUDE +2K19 DEC 5.E5B23 # DELTA P LIMITER +5J DEC 5.697785E6B23 # LANDING SITE RADIUS +16J DEC 60000B23 # ORBIT INSERTION ALTITUDE +21J DEC 25000B23 # PITCH STEERING ALT THRESHOLD +RRSX DEC 0B23 # CALCULATED RANGE AT TIME +RRSY DEC 0 # OF RADAR RANGE MEASUREMENT. +RRSZ DEC 0 +6K11 DEC 0.318310B0 # 1/PI +# +# INITIALIZE DATA FROM DOWNLINK ADDRESSES +# LOCATIONS 0240-0257 USED +1J1 DEC 0B23 # LM EPHEMERIS POS +1J2 DEC 0 +1J3 DEC 0 + DEC 0 +2J1 DEC 0 # CSM EPHEMERIS POS +2J2 DEC 0 +2J3 DEC 0 + DEC 0 + DEC 0 + DEC 0 + DEC 0 + DEC 0 + +# Page 7 +1J7 DEC 0B18 # LM EPOCH TIME +1J7LS DEC 0B1 + DEC 0 + DEC 0 +THETAR EQU 2J3+4 # RADAR ANTENNA TRUNNION ANGLE +BETAR EQU 2J3+5 # RADAR ANTENNA SHAFT ANGLE +RM EQU 1J7 # RADAR RAW RANGE INPUT +RMDOT EQU 1J7+1 # RADAR RANGE RATE INPUT +DEL46 EQU 1J7+2 # RADAR COMPOSITE WORD +1J4 DEC 0B13 # LM EPHEMERIS VEL +1J5 DEC 0 +1J6 DEC 0 +VPY DEC 0B13 # OUT-OF-PLANE VELOCITY +2J4 DEC 0 # CSM EPHEMERIS VEL +2J5 DEC 0 +2J6 DEC 0 +5K18 DEC -.1B-2 # RD3DOT LOWER LIMIT +VY0 DEC 0B13 # LM OUT-OF-PLANE VEL +VY0FS DEC 200B13 # MAX VY0 DISPLAYABLE +2J7 DEC 0 # CSM EPOCH TIME +2J7LS DEC 0 +7K1 DEC 30B18 # TIG TIME BIAS +1J DEC 0B18 # NOMINAL TPI TIME (CSI) +6K5 DEC -.73B0 # Y-POSITION FILTER WEIGHT +XI DEC 0B3 # Z-AXIS/LOCAL HORIZ ANGLE +A31BD DEC 0B1 # UNIT VECTOR (LM-CSM) +A32BD DEC 0 +A33BD DEC 0 +TLOS DEC 0B3 # DXFR LOS COMPUTED +THETAF EQU TLOS # LM-CSM CENTRAL ANG AT CSI/CDH +3K4 DEC .17365B1 # CENTRAL ANGLE LIMIT ON TPI +12J DEC -.299904B3 # PHASE ANGLE LIMIT FOR RETARGET +4J DEC 0B13 # TIME OF NODE PRIOR TO RENDEZ +6J DEC 2580.0B13 # DESIRED TRANSFER TIME +TDEL DEC 0B13 # TIME TIL NEXT MANEUVER +TR DEC 0B13 # TIME TIL RENDEZVOUS +3J DEC 0B13 # TARGET OFFSET TIME + +# Page 8 +6K12 DEC 9.38B4 # RAW RADAR AT 18 TO FT. AT 22 +DELRP DEC 0B23 # DIFF. ALT. AT TIG(CSI-CDH) +QA DEC 0B23 # LM APOFOCUS ALTITUDE +18J DEC 0B22 # MEASURED RADAR RANGE +RR DEC 0B22 # COMPUTED RANGE +READP DEC 0 +ENTERP DEC 0 +HOLDP DEC 0 +CLEARP DEC 0 +HMF DEC 0 +# START OF TELEMETRY LIST +RMF DEC 0 # READOUT MODE FLAG +DD DEC 0 # DEDA DATA +CMF DEC 0 # CLEAR MODE FLAG +A11T DEC 1.B1 # TM DIR COSINES +A12T DEC 0 +A13T DEC 0 +ADST DEC 0 # DEDA ADDRESS +A31T DEC 0 +A32T DEC 0 +A33T DEC 1.B1 +H DEC 0B23 # ALTITUDE +RX DEC 0B23 # LM POSITION +RY DEC 0 +RZ DEC 0 +QL DEC 0B23 # PRESENT LM PERICYNTHION +EONS10 EQU QL # ENG ON+S10 FOR TM +RCX DEC 0B23 # CSM PRESENT POSITION +RCY DEC 0 +RCZ DEC 0 +RF DEC 0B23 # PREDICTED BURNOUT ALT. +DVX DEC 0B1 # BODY DELTA VS +DVY DEC 0 # THIS CYCLE. +DVZ DEC 0 +TA2 DEC 0B1 # ABS TIME LS. +DAX DEC 0B-6 # DELTA ALPHAS +DAY DEC 0 + +# Page 9 +DAZ DEC 0 +TBO DEC 0B9 # TIME TO BURNOUT. +VX DEC 0B13 # LM VELOCITY +VY DEC 0 +VZ DEC 0 +MU8S12 DEC 0 # MU8/S12 +VCX DEC 0B13 # CSM PRESENT VELOCITY +VCY DEC 0 +VCZ DEC 0 +HDOT DEC 0B13 # ALTITUDE RATE +VG DEC 0B13 # VELOCITY TO GAIN +VF DEC 0B13 # TRANSFER BRAKING VELOCITY +TA0 DEC 0B18 # TIME FROM CSI TO CDH +TIG DEC 0B18 # ABSOLUTE TIME OF MANEUVER +A11BD DEC 0B1 # CMD XB POINTING DIR +A12BD DEC 0 +A13BD DEC 0 +TA1 DEC 0B18 # ABS TIME MS. +S0 DEC 0 # AGS FUNCTION SELECTOR +DISC1C DEC 0 # DISCRETE WD 1-TRUE STATE +Q1DEDA DEC 8388500B23 # TRANS ORBIT PERICYN ALT +DELH EQU Q1DEDA # DIFF. ALT. AFTER CDH(CSI-CDH) +QLTELE DEC 0B23 # QL FOR TELE AND DEDA +VD1X DEC 0B13 # 40MS VEL ACCUMULATION +VD1Y DEC 0 +VD1Z DEC 0 +# END OF TELEMETRY LIST +DEL6 DEC 0 # CALIBRATE I.C. FLAG +S10 DEC 0 # GUIDANCE MODE SELECTOR +S11 DEC 0 # AUTO RADAR SWITCH +S12 DEC 0 # TEST STATUS +S13 DEC 0 # STORE LUNAR AZIMUTH +S14 DEC 0 # NAVIGATION INITIALIZE +S15 DEC 0 # RADAR GIMBAL NULL +RDOTS EQU S15 # R. R. STORED AT RADAR INPUT +S16 DEC 0 # CDH APSIDAL SELECTION +S17 DEC 0 # RADAR FILTER INIT. SWITCH + +# Page 10 +VEX DEC 0B13 # CSM EPOCH VEL +VEY DEC 0 +VEZ DEC 0 +RFDOT DEC 0B13 # DESIRED ALT RATE +V0X DEC 0B13 # PRED EPOCH VEL VECTOR +V0Y DEC 0 +V0Z DEC 0 +I EQU V0X # MXM INDEX +J EQU V0Y # MXM INDEX +K EQU V0Z # MXM INDEX +VH DEC 0B13 # LM HORIZONTAL VEL +# VIX,VIY,VIZ ARE SHARED WITH RR FILTER +VIX DEC 0B13 # ELLIPSE PRED VEL OUTPUT +VIY DEC 0 +VIZ DEC 0 +V DEC 0B13 # LM TOTAL VELOCITY +TP DEC 0B13 # TRIAL XFR ORB. TIME. +T DEC 0B13 # TIME TO RENDEZ. +RB EQU T # RF SAVED FOR ORBIT INSERT. +TB DEC 0B13 # TA-TE. +PDOTM1 DEC 0B13 # DISPLAY POS RATE(-1) +RRDOT DEC 0B13 # RANGE RATE +1000D DEC 1000B17 # RANGE MARK COUNTER INCREMENT +TI DEC 0B13 # PREDICTION TIME/RR FILTER TEMP +DPDOUT DEC 0B13 # DISPLAY POS RATE INCREMENT +PDOUT DEC 0B13 # DSP POS RATE CONV TO FPS AT 13 +TCSM DEC 0B13 # CSM PERIOD (SEC) +4K25 DEC 3.402B13 # ENG CUTOFF COMP +2K18 DEC 15.B13 # PARTIAL DERIV PROTECTOR. +28J1 DEC 0B13 # DELTA V DOWNRANGE +28J2 DEC 0B13 # DELTA V CROSSRANGE +28J3 DEC 0B13 # DELTA V RADIAL +2K20 DEC 2.B13 # CONVERGENCE CHECK. +4K26 DEC 70.0B13 # VG THRESHOLD +DDF DEC 0 # DEDA DATA RECEIVED FLAG +6K4 DEC .1E3B10 # INITIAL VALUE OF P33 AND P44 +6K2 DEC .1E9B30 # INIT VALUE OF P11,P22 + +# Page 11 +V5X DEC 0B13 # TPI-PREDICTED V AT TPI TIME +V5Y DEC 0 +V5Z DEC 0 +TR4 EQU V5X # NO. OF COL IN MATRIX A +TR6 EQU V5Y # NO. OF ROWS IN MATRIX B +TR5 EQU V5Z # NO. OF ROWS IN MATRIX A +VHA DEC 0B13 +22J DEC 50B13 # PITCH STEERING ALT RATE THRESH +23J DEC 19.5B13 # RFDOT LOWER LIMIT +5K26 DEC 15B13 # PSEUDO ATT HOLD IN STEER +PART DEC 0B14 # PARTIAL DERIVATIVE +VDX DEC 0B13 # VD1 AT NAV UPDATE +VDY DEC 0 +VDZ DEC 0 +4K27 DEC -8000.0B13 # OVERFLOW PROTECTION FOR VD1X +VSMGX DEC 0B13 # VD1 CUTOFF +VSMGY DEC 0 +VSMGZ DEC 0 +RADOT DEC 0B13 # PRED. RDOT AT TIG +DELVGX DEC 0B13 # THRUST VEL TO GAIN +DELVGY DEC 0 +DELVGZ DEC 0 +17J DEC 0B13 # RANGE RATE INPUT +RD3DOT DEC 0B-2 # DESIRED RADIAL JERK +YD3DOT DEC 0B-2 # DESIRED OUT-OF-PLANE JERK +4K12 DEC 5B7 # ACCEL THRESH IN O.I. STEER +S507 DEC 0B3 # ACQ STEER SEL OF PT DIR +DAXREM DEC 0B-13 # INCRE. GYRO INPUT REMAINDERS +DAYREM DEC 0 +DAZREM DEC 0 +C1 DEC 0B1 # RENDEZ ANGLE COSINE. +WBX DEC 0B1 # UNIT VECTOR FOR +WBY DEC 0 # GUIDANCE STEERING +WBZ DEC 0 +6K14 DEC -15768B14 # RADAR RANGE RATE NULL +TE1 DEC 0B18 # CSM EPOCH TIME MS. +TL1 DEC 0B18 # LEM EPOCH TIME MS. + +# Page 12 +6K6 DEC -.001B-8 # Y-VELOCITY FILTER WEIGHT +5K20 DEC 0B-2 # RD3DOT LOWER LIMIT +TE2 DEC 0 # CSM EPOCH TIME LS. +TL2 DEC 0 # LEM EPOCH TIME LS. +2K11 DEC 6000B13 # VF IF OVERFLOW +4K6 DEC 80.B13 # RFDOT UPPER LIMIT +DAXA DEC 0B-6 # ALIGN INCREMENTS +DAYA DEC 0 +DAZA DEC 0 +DISC1 DEC 0 # DISCRETE WORD +1K18 DEC .003125B-8 # ACCEL SCALE FACTOR +1K20 DEC .003125B-8 +1K22 DEC .003125B-8 +1K14 DEC 0B-14 # X-AXIS MASS UNBAL COMP +1K19 DEC 0B1 # ACCEL BIAS +1K21 DEC 0B1 # COMPENSATION +1K23 DEC 0B1 +DSPSC DEC 0 # DISPLAY SHIFT COUNTER +1K1 DEC 0B-13 # GYRO BIAS +1K6 DEC 0 # COMPENSATIONS +1K11 DEC 0 +DDEL DEC 0B0 # LUNAR ALIGN CORRECTION +1K3 DEC 0B-7 # GYRO SCALE FACTOR +1K8 DEC 0 # COMPENSATIONS +1K13 DEC 0 +HRF DEC 0 # HIGH RATE FLAG +A31S DEC 0B1 # RADAR NULL DIR COS +A32S DEC 0 +A33S DEC 0 +4K4 DEC .004B-7 # FACTOR IN RFDOT(OI) +5K14 DEC 0B-2 # RD3DOT UPPER LIMIT +5K16 DEC .01B-2 # YD3DOT UPPER LIMIT +DLWN DEC 0 # DOWNLINK WORD COUNTER +DEL32 DEC 0 # DOWNLINK INITIALIZE FLAG +6K8 DEC .22B10 # RANGE RATE ERROR VARIANCE +# (ADDR OF 6K8 MUST END IN 4) +6K9 DEC .3029E-4B-4 # VARIANCE OF RADAR ANGULAR ERROR + +# Page 13 +6K10 DEC .625E7B28 # RANGE ERROR VARIANCE +DSPF1 DEC 0 # DISPLAY FLAG1. +ID1F DEC 0 # DOWNLINK ID RECEIVED +DEL31 DEC 0 # DOWNLINK INPUT COMPLETE +FLAGT DEC 0 # MEMORY TEST +FLAG1 DEC 0 # 20MS BRANCH CONTROL +DEL2 OCT 0 # STAGED FLAG. +DEL5 OCT 0 # ATTHLD LOCK FLAG. +PI DEC 3.14159266B3 +6K13 DEC -1.59286B1 # RADAR RANGE RATE TO FPS AT 13 +DVGXX DEC 0B13 # VEL TO GAIN IN EXT DELTA V +DVGXY DEC 0 +DVGXZ DEC 0 +DEL20 DEC 0 # LOGIC FLAG FOR ENG CONTROL +DEL21 OCT 0 # LUNAR SURFACE FLAG. +2J DEC 1.9970B7 # COTAN OF DESIRED LOS AT TPI +DEL42 OCT 0 # LUNAR ALINE COMPLETE FLAG +DEL45 EQU DEL42 # RR RANGE/RANGE RT. UPDATE FLAG +K55 OCT 377777 # S.F. FOR HDOT DISPLAY +MU3 DEC 0 # P-ITER COUNTER. +RD3DTL EQU MU3 # RD3DOT LOWER LIMIT +5K17 DEC -.01B-2 # YD3DOT LOWER LIMIT +MU6 DEC 0 # STAGING COUNTER +1K37 DEC 15.B17 # ACCEL CAL DURATION +MU8 DEC 0 # ULLAGE COUNTER +MU10 DEC 0 # GYRO CALIBRATE DURATION +1K9 DEC 5.0B17 # ULLAGE COUNTER LIMIT +1K30 DEC 150.B17 # GYRO CALIBRATE DURATION +2K17 DEC 5.B17 # NO OF P-ITERATIONS-3 +MU19 DEC 0 # MARK COUNTER +4K23 DEC 62.0B17 # STAGING TIME DELAY +S623 DEC 0B3 # EX SELECTION IN G. S +1K4 DEC .1B0 # DISPLAY INTERPOLATION +1K24 DEC .87E-3B1 # SINGULARITY THRESHOLD +1K26 DEC -.142857E3B8 # NEG INV OF ALIGN GAIN CONSTANT +1K27 DEC .435E-1B-4 # ALIGN CONSTANT +1K28 DEC 107.78396B7 # ALIGN CONSTANT + +# Page 14 +1K29 DEC .001B-4 # LUN ALIGN STOP CRITERION +1K33 DEC .08B-3 # CALIBRATE GAIN +1K34 DEC .00002B-15 # CALIBRATE GAIN +1K35 DEC .25B7 # ACCEL BIAS THRESHOLD +1K36 DEC -.66667E-3B0 # ACCEL CAL GAIN +2K1 DEC .173189E15B48 # GRAVITY CONST (LUNAR) +2K2 DEC .57740387E-14B-47 # 1/2K1 +6J1 DEC .3358E-8B-14 # LUNAR ROT RATE ABOUT X-REF +6J2 DEC -.53039E-7B-14 # LUNAR ROT RATE ABOUT Y-REF +6J3 DEC .3052E-8B-14 # LUNAR ROT RATE ABOUT Z-REF +B13SF DEC .10416666B0 # .01 MIN TO SEC AT 13 +SDVX DEC 0B1 # DV SUM FOR ACCEL CAL +SDVY DEC 0 # (ADDR OF SDVX MUST END IN 4) +SDVZ DEC 0 +MU7 DEC 0B17 # CALIBRATION COUNTER +7K2 DEC 2B17 # NOISEIN P-MATRIX DIAGONALS +B13VSF DEC .625B0 # .1 FPS TO FPS AT 13 +B3SF DEC .34971155B0 # .01 DEG TO RAD AT 3 +B23RSF DEC .10533045B0 # .1 NMI TO FT AT 23 +4K2 DEC -.50204E-4B-12 # FACTOR IN TB COMP +4K3 DEC .16803E-8B-25 # FACTOR IN TB COMP +B22RSF DEC .5266522B0 # .01 NMI TO FT AT 22 +BACCSF DEC 0.762939B0 # .001 FT/SEC2 TO FPS/20MS AT 1 +4K34 DEC 1.B7 # AT LOWER LIMIT +4K35 DEC .1B7 # ULLAGE THRESHOLD +4K10 DEC -317438.91B20 # TERM IN AL(O.I.) +SUMLIM DEC 0 # LAST CELL FOR CHECKSUM +WORDS DEC 28 +B18SF DEC .333333B0 # .1 MIN TO SEC AT 18 +4K21 DEC .26179938B2 # SC FACTOR FOR ATT ERR OUTPUT +M25B16 DEC -25.B16 # CYCLE COUNT TO SECONDS +DTB DEC 1.25B1 # 1 SEC + DEDA TIME BIAS +ID DEC 0 # CURRENT DOWNLIST ID CODE +DLWNL STO 1J1+15 # END OF DOWNLINK BUFFER +11J DEC -624599.84B20 # RETARGET VALUE FOR 4K10 +2K4 DEC -.173189E15B48 # (-2.)(2K1) B49 +KDT DEC 1.B1 # DELTA T/2 AT 1 + +# Page 15 +BM13SF DEC .96049535B0 # .01 DEG/HR TO RAD/20MS AT -13 +B23SF DEC .64B0 # 100 FT TO FT AT 23 +# THE FOLLOWING 16 PARAMETERS HAVE +# VARIABLE SCALING. INITIAL SCALING IS INDICATED. +P11 DEC .1E9B30 # VARIANCE OF X-POS ERROR +P12 DEC 0B30 # COVARIANCE OF X AND Y POS ERROR +P13 DEC 0B20 # COVAR OF X-POS AND X-VEL ERROR +P14 DEC 0B20 # COVAR OF X-POS AND Z-VEL ERROR +P21 DEC 0B30 # COVAR OF X AND Z POS ERROR +P22 DEC .1E9B30 # VARIANCE OF Z-POS ERROR +P23 DEC 0B20 # COVAR OF Z-POS AND X-VEL ERROR +P24 DEC 0B20 # COVAR OF Z-POS AND Z-VEL ERROR +P31 DEC 0B20 # COVAR OF X-POS AND X-VEL ERROR +P32 DEC 0B20 # COVAR OF Z-POS AND X-VEL ERROR +P33 DEC .1E3B10 # VARIANCE OF X-VEL ERROR +P34 DEC 0B10 # COVAR OF X-VEL AND Z-VEL ERROR +P41 DEC 0B20 # COVAR OF X-POS AND Z-VEL ERROR +P42 DEC 0B20 # COVAR OF Z-POS AND Z-VEL ERROR +P43 DEC 0B10 # COVAR OF X-VEL AND Z-VEL ERROR +P44 DEC .1E3B10 # VARIANCE OF Z-VEL ERROR +VRSH STQ SREX2 + LRS 0 + TRA SREX2 +TMID DEC 0 # TELEMETRY ID +SFLO OCT 000026 +PMAXP OCT 377777 # COUNTS AT 17 +ORBRET TRA DX10P # RETURN FROM NORTON IN O.I. +DEDASC DEC 0 # DEDA SHIFT COUNTER +# +# +EX36P STQ DEL10 +# SAVE QUANTITIES FOR LATER USE IN +# T/B COMPUTATIONS + STO V6Z + CLA TS12 + STO V6X + CLA TS13 + +# Page 16 + STO V6Y + CLA TI + SUB 4J + TRA DXFR14-2 +RREX CLA TS0 # VARIABLE ADDRESS LOAD, MULTIPLY +RREX1 MPY TS0 # AND STORE FOR MATRIX MULTIPLY + DVP 1B3 # ROUTINE (MXM) -- PERFORMS + ADZ TR8 # C(I,J)=C(I,J)+A(K,I)*B(J,K) +RREX2 STO TS0 + STO TR8 # C(I,J)=C(I,J)+A(K,I)*B(J,K) + CLA RREX + ADD TR4 # INCREMENT CLA + STO RREX + CLA RREX1 + ADD 1B17 # INCREMENTY MPY + STO RREX1 + AXT 2,1 # INCREMENT AND TEST INDEXES + CLA I,1 + ADD 1B17 + STO I,1 + SUB TR4,1 + TMI R1+1 + TIX *-5,1 + CLA TR6 # REARRANGE DIMENSIONS AND + STO TR4 # ADDRESSES ON EXIT TO SAVE + CLA TR3 # STEPS IN FILTER + STO TR1 + AXT 7,1 + TRA PP # EXIT MXM +DIAK1 OCT 377363 # TEST FOR DEDA ENTRY INTO 415 +DIAK2 OCT 377401 # TEST FOR DEDA ENTRY INTO 377 +6K8S DEC .22B10 # WORKING VALUE OF 6K8 +# (ADDR OF 6K8S MUST END IN 4) +6K9S DEC .3029E-4B-4 # WORKING VALUE OF 6K9 +6K10S DEC .625E7B28 # WORKING VALUE OF 6K10 +6K6S DEC 0 # WORKING VALUE OF 6K6 +# + +# Page 17 +# + ORG 1000 +CLADD DEC 0 # PICKUP DEDA DATA + TRA ROR +RND STQ SREX # DIRECTION COSINE ROUND + ADD 1B9 + LRS 9 + TRA SREX +TMCLA CLA 0324 # CLA FOR TELEM +TCLTH CLA 1005 +DLSTO STO 1J1-1 +IC1BR TRA IC1 # IC1 TRA. +BR1 TRA NAV1P +DEDABR TRA DEDAE # DEDA BRANCH TRA. +BR50 TRA EXEC2 # BRANCH 50 TRA. +# +# HARDWIRE ESCAPE POINTS +# +EXIT1 TRA EX1+1 +EXIT2 TRA UBCOMP +EXIT3 TRA ADDMS +EXIT4 TRA EX4+1 +EXIT5 TRA PGNSDE +EXIT6 TRA TME +EXIT7 TRA PGNSD1+5 +EXIT8 TRA EX8+1 +EXIT9 TRA TVTG +EXIT10 TSQ SOFT1 +EXIT11 TSQ SOFT1 # ASCENT ENG ON +EXIT12 TRA AHE1 +EXIT13 TRA EROUT+1 +EXIT14 TSQ SOFT2 +EXIT15 TRA LUNAL1 # GAIN CHANGE +EXIT16 TRA EX16+1 +EXIT17 TRA FDAI1 +EXIT18 TRA NOC +EXIT19 TRA DELAY + +# Page 18 +EXIT20 TRA DLDC +EXIT21 TRA TIMEA +EXIT22 TRA IDLE-1 +O25C OCT 377747 # TEST FOR TM RESET +EXIT23 CLZ VD1X + CLZ VD1Y + CLZ VD1Z + TRA NAV3 +EXIT24 TRA NAV2 +EXIT25 TRA NAV3 +SINITC CLA 4K27 + STO VD1X + STO VDX + TRA EXEC1+7 +EXIT26 TRA XDVS +EXIT27 TRA EX27+1 +EXIT28 TRA EX28+1 +STGCTR CLZ MU6 # STAGING DELAY COUNTER + ADD 1B17 + STO MU6 + TRA AHE +EXIT29 TRA EX29+1 +CLATAB CLA SFTAB-1 # CLA FOR DEDA SF TABLE +EXIT30 TRA EX30+1 +EXIT31 TRA ALTUP +EXIT32 TRA LMORB2 +EXIT33 TRA EX33P +EXIT34 TRA EX34P +EXIT35 TRA EX35 +EXIT36 TSQ EX36P +EXIT37 TRA EX35+1 +EXIT38 TRA Q5 +EXIT39 TRA EXECM +EXIT40 CLZ S0 # SOFT INITIALIZE + CLZ DEL5 + CLZ FLAGT + AXT 7,1 # ZERO S SWITCHES + +# Page 19 + CLZ S10,1 + TIX *-1,1 + TRA SINITC # CONTINUE INITIALIZE +EXIT41 TRA DSP1 +EXIT42 TRA DSP2CP +EXIT43 ADD O25C # CHECK FOR TM RESET + ABS + TMI TMIE1 # -- RESET TM AT 25 CYCLE + TRA EXEC1+4 # NOT 25TH CYCLE +IDAI OCT 077776 # AGS INITIALIZE DOWNLIST ID +IDRP OCT 077775 # REND./PRETHRUST DOWNLIST ID +EXIT44 TRA EX44+1 +EXIT45 TRA EX45+1 +EXIT46 TRA EX46+1 +EXIT47 TRA DEXIT +EXIT48 TRA CLEARM+1 +EXIT49 TRA SFTEST +EXIT50 TRA EX50+1 +EXIT51 TSQ DIAT +EXIT52 TRA EXEC+1 +EXIT53 TRA EXEC+1 +DLWNLC STO 1J1+15 # DLWNL PROTECTION +ADDMS AXT 2,1 + CLA TS10,1 + ABS + ADD MS + TIX *-3,1 + TRA EX3+1 +EX34P CLZ DEL10 + TMI EX33PP+1 + TRA EX34+1 +THEF CLA RF + LRS 1 # B24 + ADZ TS3 + LDQ TS4 + STO TS4 # =RF+RX B24 + STQ TS3 # =RZ B24 + +# Page 20 + TSQ ARCTAE + STO TS0 # THETAF B8 + SUB PI + TMI *+2 + SUB 2PIB3 + ADD PI + STO THETAF # THETAF B3 + CLA TS0 # B3 + SUB 2PIB3 + MPY M1B1 # B4 + DVP NI + ADD TI # B13 + TRA DXFR14-2 +TMIE1 TSQ TMIE2 # INITIALIZE TELEMETRY + CLA S12 + ADD MU8 + STO MU8S12 # SAVE MU8/S12 FOR TM + SUB 3B3 # TEST FOR SELF TEST FAILURE + TMI *+2 + OUT 6410 # SET FAILURE INDICATOR + TRA DELAY # END MAJOR CYCLE +# +# DEDA SCALE FACTOR LOCATOR TABLE +# SCALE FACTORS MUST REMAIN AT LOCS IN COMMENTS +# FORMAT OF TABLE IS, BIT 0=1 TABLE EXCEEDED, +# BITS 1-9 LAST ADDRESS OF DEDA SCALE FACTOR REGION +# BIT 10=1 FOR OCTAL REGION, BITS 11-17 ADDRESS OF +# SCALE FACTOR RELATIVE TO LOCATION 636 +SFTAB OCT 075200 # OCT LOC 026-172,OCT + OCT 125441 # OCT LOC 173-253,DEC,SF AT 677 + OCT 127427 # OCT LOC 254-257,DEC,SF AT 665 + OCT 134413 # OCT LOC 260-271,DEC,SF AT 651 + OCT 137027 # OCT LOC 272-276,DEC,SF AT 665 + OCT 142414 # OCT LOC 277-305,DEC,SF AT 652 + OCT 145405 # OCT LOC 306-313,DEC,SF AT 643 + OCT 146415 # OCT LOC 314-315,DEC,SF AT 653 + OCT 147420 # OCT LOC 316-317,DEC,SF AT 656 + +# Page 21 + OCT 157415 # OCT LOC 320-337,DEC,SF AT 653 + OCT 164441 # OCT LOC 340-351,DEC,SF AT 677 + OCT 174413 # OCT LOC 352-371,DEC,SF AT 651 + OCT 177427 # OCT LOC 372-377,DEC,SF AT 665 + OCT 200600 # OCT LOC 400-401,OCT + OCT 202415 # OCT LOC 402-405,DEC,SF AT 653 + OCT 207600 # OCT LOC 406-417,OCT + OCT 241413 # OCT LOC 420-503,DEC,SF AT 651 + OCT 257600 # OCT LOC 504-537,OCT + OCT 261421 # OCT LOC 540-543,DEC,SF AT 657 + OCT 263040 # OCT LOC 544-546,DEC,SF AT 676 + OCT 305600 # OCT LOC 547-613,OCT + OCT 311067 # OCT LOC 614-622,DEC,SF AT 725 + OCT 342200 # OCT LOC 623-704,OCT +# THE ABOVE 23-PLACE TABLE MUST BE FOLLOWED +# BY A WORD WITH BIT 0 SET +# +# ORBIT ALIGN COMPUTATIONS +# +ORBLIN AXT 6,1 + CLZ A11,1 + CLZ DA11,1 # ZERO REMAINDERS + TIX *-2,1 + CLA 1B1 + STO A11 + STO A33 + TRA COA21-2 +# +# MASS UNBALANCE COMPENSATION +# +UBCOMP MPR 1K14 # (DVX)(1K14) 1+(-14)=-13 + ADZ DAXREM + STO DAXREM +# +# 20MS MODE CHECK. +# +MODCK CLA S0 # CHECK FOR ALIGNMENT + +# Page 22 + SUB 3B3 # SUBMODES + TMI GYCOM-2 # -- IS INERT REF + SUB 1B3 + TMI ZNOC # IMU ALIGN + SUB 1B3 + TMI GYCOM-2 # -- IS LUNAR ALIGN + SUB 1B3 + TMI ORBLIN # ORBIT ALIGN + AXT 2,1 # CALIBRATE MODE +CALIB1 CLA DEL21 + TMI *+5 # -- LM IS ON LUNAR SURFACE + CLZ SDVX,1 # SUM BODY AXIS VEL + ADD DVX,1 # INCREMENTS SINCE START OF ACC. + STO SDVX,1 # BIAS CALCULATIONS + TRA CALIB2 + CLA A11,1 # LUNAR CAL., COMPENSATE COMP. + MPR 6J1,1 # OF VEH ROT. FOR LUNAR ROTATION + ADZ DAXREM # 1+(-14)=-13 + STO DAXREM # A11 DOT 6J1 + CLA A21,1 + MPR 6J1,1 + ADZ DAYREM + STO DAYREM # A21 DOT 6J1 + CLA A31,1 + MPR 6J1,1 + ADZ DAZREM + STO DAZREM # A31 DOT 6J1 +CALIB2 TIX CALIB1,1 + TRA GYCOM-2 +# +# DEDA MODE SELECTION +# +DEDAE CLZ CLEARP + TMI CLEARM # SET CLEAR + CLA CMF + TMI RPT # CLEAR MODE + CLA RMF + +# Page 23 + TMI HET # READOUT IN PROGRESS + CLA HMF + TMI RRT # HOLD IN PROGRESS +DEXIT AXT 3,1 # NORMAL EXIT + TRA *+4 +CLEARM STO CMF + INP DEDA + AXT 5,1 # CLEAR EXIT + CLZ READP,1 # RESET FLAGS + TIX *-1,1 + CLZ TMPBR # SET BRANCH FOR NEXT + STO BRANCH # GUIDANCE CYCLE + CLA 1B11 # INITIALIZE COUNTER + STO DEDASC + TRA DSP1 # TO DISPLAY +RPT CLZ READP # TEST FOR + TMI RME # READOUT MODE + CLZ ENTERP # OR ENTER MODE + TMI RME+1 # ENTRY. + TRA DEXIT # EXIT +HET CLZ HOLDP # READOUT TEST FOR + TMI *+2 # HOLD COMMANDED + TRA ADOUT # TO OUTPUT ROUTINE + STO HMF # SET HOLD MODE + CLZ RMF + TRA DEXIT +# +# DEDA SCALE FACTOR SELECTION +# +SFTEST SUB SFLO + TMI CLEARM+1 # -- IF OCT LOC BELOW 0026 + CLA CLATAB # INITIALIZE FIRST TABLE VALUE + STO VRSH+1 # STORE CLA INSTRUCTION + CLA VRSH+1 # INCREMENT CLA INSTRUCTION + ADD 1B17 # ADDRESS + STO VRSH+1 + TSQ VRSH + +# Page 24 + TMI CLEARM+1 # -- IF OCT LOC ABOVE 704 + LRS 8 # EXAMINE BITS 1-9 OF VALUE + SUB ADST # -- IF OCT LOC ABOVE VALUE, + TMI *-7 # CHECK NEXT VALUE IN TABLE + LLS 18 # RECOVER BITS 10-17 OF THIS VAL + TMI NOTDD # -- IF OCT REGION, NO SF REQ + LRS 10 # SCALE BITS 11-17 OF VAL + ADD TBRAKE # CONSTRUCT INSTRUCTION TO OBTAIN + STO VRSH+1 # SCALE FACTOR FOR THIS REGION + TSQ VRSH # OBTAIN SF FOR THIS REGION + STO SF # SET SCALE FACTOR + TRA DDIN # TO INPUT ROUTINE +DIAT AXT 1,1 # IMMEDIATE ACTION TEST + CLA ADST # IMMED. ACTION IF + ADD DIAK1,1 # ACCUMULATOR = 400000 + ABS + TMI *+4 + TIX DIAT+1,1 + STQ DDF + TRA DEXIT + TIX ATI,1 + LDQ *-2 # SET RETURN TO DEXIT + AXT 2,1 + CLA RRX,1 # SAVE RANGE FOR FILTER + STO RRSX,1 + CLA A31,1 # STORE DIRECTION COSINES + STO A31S,1 + TIX *-4,1 + CLA RRDOT + STO RDOTS + TRA EXIT +# +# DOWNLINK FORMATTING +# +DLDC AXT 2,1 + CLZ 0244,1 # LEM VEL + STO 1J4,1 + +# Page 25 + CLZ 0250,1 # CSM POS + STO 2J1,1 + CLZ 0254,1 # CSM VEL + STO 2J4,1 + TIX DLDC+1,1 + CLZ 0247 + LRS 14 + ADZ 0243 + STO 1J7 + STQ 1J7LS + STO 2J7 + STQ 2J7LS + TSQ CSMPV + TRA IC1+3 +# +# DELTA V ACCUMULATION AND THRUST VEL TO GAIN. +# +TVTG AXT 2,1 + CLA DVX,1 # 1 + LRS 1 # TO 2 + ADZ VD2X,1 + STO VD2X,1 + CLA DVXM1,1 + LRS 1 # TO 2 + ADZ VD2X,1 + STO VD2X,1 + LRS 11 # TO 13 + STO TS1 + ALS 11 + COM + ADZ VD2X,1 + STO VD2X,1 # REMAINDER AT 2 + CLA VD1X,1 # DV EXPENDED MS. + ADZ TS1 + STO VD1X,1 # VD1 AT 13 + COM + ADD VSMGX,1 # VSMG-VD1 + +# Page 26 + STO DELVGX,1 # THRUST VEL TO GAIN + CLZ EX,1 + TIX TVTG+1,1 + TRA EX9+1 +# +# SOFT 40MS COMPUTATIONS +# +SOFT1 CLA S0 # TEST MODE + SUB 3B3 + STO TS1 # SAVE + TMI IR # -- IS INTERT. REF. +ZERR CLA ZERO + OUT 6007 # ZERO ATTITUDE ERRORS + CLZ DEL5 # RESET ATT HOLD INIT FLAG + CLZ TS1 + TMI ENCOM1 # -- IS INERTIAL REF + SUB 1B3 + TMI SOFT3 + SUB 1B3 + TMI LUNAL +SOFT3 OUT 7040 # RESET ENG ON + OUT 6420 # SET ENG OFF + CLA ZERO # SET ENG TM FLAG PLUS + ADD S10 + STO EONS10 + TRA FDAI # TO ATTITUDE DISPLAY +ENCOM1 CLA DISC1 # FOLLUP ENG. COMMANDS + LLS 5 + TMI *+4 # -- DESCENT ENG ON + LLS 1 + TMI *+2 # -- ASCENT ENG ON + TRA SOFT3 # ENG OFF + OUT 7020 # RESET ENG OFF + OUT 6440 # SET ENG ON + CLA MS # SET ENG TM FLAG NG + TRA SOFT3+3 +IR CLA S11 # TEST FOR AUTO RADAR DATA + +# Page 27 + ALS 3 + TMI RADCK + STO DEL44 # SET/RESET CODE WORD FLAG +IR4 CLA DISC1 + ALS 3 + TMI IR1 # -- IS FOLLOWUP + ALS 1 + TMI IR2 # -- IS AUTOMATIC + STQ DEL20 + TRA AHE # TO ATT HOLD +IR1 CLA DISC1C + ALS 4 + TMI ZERR # PLUS IS AUTOMATIC + CLZ DEL5 + STQ DEL20 + TRA MODE +RSTE CLA S623 + ALS 3 + TMI *+3 + CLA WCX,1 + TRA *+2 + CLA WBX,1 + MPR A31,1 + COM + ADZ EX + STO EX + TIX RSTE,1 +RST1 TRA RST +IR2 ALS 4 + TMI IR3 # -- IS ABORT STAGE + CLA DEL21 # IF ON LUNAR SURFACE + TMI ZERR # OUTPUT ZERO ATT ERRORS + CLA DISC1 + ALS 7 + TMI MODE # -- IS ABORT + TSQ IR1+4 +IR3 CLA DEL21 + +# Page 28 + TMI AHE + CLA DISC1C + ALS 6 + TMI MODE + CLA MU6 + SUB 4K23 + TMI STGCTR # STAGING ATT HOLD +MODE CLA S0 # TEST STEERING MODE + SUB 1B3 + TMI AHE # ATT HOLD + AXT 2,1 + SUB 1B3 + TMI RSTE # RENDEZVOUS STEERING + CLZ DEL5 # ACQUISITION STEERING +MODE1 CLA WCX,1 + MPR A11,1 + ADZ EZ + STO EZ + CLA S507 # ORIENT LM Z-BODY ASIX + SUB 1B3 # IN DESIRED THRUST DIR. + TMI *+3 # OR ESTIMATED CSM DIR. + CLA A11BD,1 + STO A31BD,1 + CLA A31BD,1 + MPR A11,1 # XB + ADZ EY + STO EY + CLA A31BD,1 # ZBD + MPR A21,1 # YB + COM + ADZ EX + STO EX + TIX MODE1,1 + TRA EROUT +SOFT2 CLZ DEL20 # FIRST TIME FOLLOW + TMI ENCOM1 # PREVIOUS ENGINE STATE + CLA S0 # IF NOT GUIDANCE STEERING + +# Page 29 + ALS 3 # TURN ENGINE OFF + TMI *+2 + TRA SOFT3 + CLA MU8 # TEST FOR ULLAGE + SUB 1K9 + TMI SOFT3 + CLA 4K25 # TEST CEL TO BE + SUB DELVGX # GAINED GREATER THAN + TMI ENCOM1+6 # SHUTDOWN THRESHOLD + CLA 4K26 + SUB VG + TMI ENCOM1+6 + CLZ S0 # SET ATT HOLD + TRA SOFT3 +RADCK STQ DEL32 # REINITIALIZE DOWNLINK + CLA IDRP # SET DOWNLIST ID TO REND/PRETHRJ + STO ID + CLA DEL46 # IS CODE WORD RESET + ALS 1 + ABS + TMI IR+3 + ADD 1B12 # IS CODE WORD SET + ABS + TMI *+2 # YES IF NEGATIVE + TRA IR4 + CLZ DEL44 # HAS CODE WORD BEEN RESET + TMI *+2 # PRIOR TO BEING SET + TRA IR4 # NO + TOV *+1 + AXT 1,1 # IF SHAFT OR TRUNNION + CLA THETAR,1 # ANGLE IS GREATER + ALS 4 # THAN 11.2 DEG, THEN + TOV IR4 # DO NOT PROCESS + TIX *-3,1 + CLZ DEL45 # ALTERNATE RANGE, RATE + TMI IR6 + STQ DEL45 + +# Page 30 + CLZ RM # RANGE ENTRY + LRS 18 + CLZ DEL46 # TEST FOR HIGH SCALING + TMI *+2 + LRS 3 # LOW SCALE + LLS 17 + MPR 6K12 # COUNTS TO FEET AT 22 + STO 18J + TRA *+5 +IR6 CLZ RMDOT # RANGE RATE ENTRY + SUB 6K14 # NULL AT 17000 + DVP 6K13 # COUNTS TO FT/SEC AT B13 + STO 17J + TSQ DIAT+10 # SAVE REL RNG VECT, REL VEL + AXT 2,1 +IR5 CLA A21,1 # B1, ADJUST Z BODY FOR SHAFT + MPR THETAR # B1+B0=B1, AND TRUNNION ANGLES + DVP 6K11 # B1-B0=B1 + STO A31S,1 # B1 + CLA A11,1 # B1 + MPR BETAR # B1+B0=B1 + DVP 6K11 # B1-B0=B1 + SUZ A31S,1 # B1 + ADD A31,1 + STO TS14,1 # XB*BETAR/6K11-YB*THETAR/6K11+ZB + TIX IR5,1 + TSQ NORMV + AXT 2,1 + CLZ TS10,1 # MOVE NORMALIZED DIRECTION + STO A31S,1 # INTO ZB* + TIX *-2,1 + TRA 4711 # EXIT TO DEDA DISCRETE SAMPLING +LUNAL1 CLZ DAYA # CHANGE GAIN + LRS 2 # 1/4 + STO DAYA + CLZ DAZA + LRS 2 + +# Page 31 + STO DAZA + TRA SOFT3 +# +# START OF NAVIGATION +# +NAV1P CLA DEL21 + TMI NAV1 # -- IS ON LUNAR SURFACE + CLA VD1X # COMPUTE THRUST ACCEL + SUB VDX # 13 + ALS 5 # 1/2(VD1-VD) AT 7 + TRA 5166 # TO HARD NAV +XDVS AXT 2,1 + CLA DVSX,1 + ADD 1B12 + LRS 6 + ADZ DQSX,1 + STO DQSX,1 + CLA VD1X,1 + STO VDX,1 + TIX XDVS+1,1 + TRA NAV4 +ALTUP TSQ EXEC +# + AXT 2,1 + CLA REX,1 # SAVE REX FROM FILTER + STO VIX,1 # SCRATCH MATRIX C AREA + CLA 25J # ALTITUDE ENTRY TEST + SUB 1B17 + TMI FLTR # IF NO 25J ENTRY + CLA 25J + ADD 5J + STO R # R=5J+25J + MPY U1X,1 + LLS 1 + STO RX,1 # NEW R COMPONENTS +# +# RANGE AND RANGE RATE COMPUTATIONS + +# Page 32 +# +FLTR CLA RCX,1 # RELATIVE RANGE + SUB RX,1 + STO RRX,1 + STO TS4,1 + TIX ALTUP+2,1 + CLZ 25J + TSQ DPVMAG # DP COMP OF RR MAG + ALS 1 + STO RR # B22 RANGE VECTOR MAG + CLA 2K1 # 48 + LRS 5 # 53 + DVP R # 30 + DVP R # 7 + DVP R # -16 +DAD STO D11 # 2K1/R**3 B-16 + AXT 7,1 + CLZ C11,1 # ZERO PHI,M + CLZ C31,1 + TIX *-2,1 + CLZ RRDOT # ZEROED FOR SUM + AXT 2,1 +FLTRA CLA RRX,1 + DVP RR + STO A31BD,1 # B1 UNIT POINTING VECTOR + CLA VCX,1 # B13 + SUB VX,1 + STO TS4,1 # B13 RANGE RATE CSM-LM + MPR A31BD,1 + ALS 1 + ADZ RRDOT + STO RRDOT + CLA U1X,1 + MPR U1X,1 # B2 + MPR 3B3 + SUB 1B5 + MPR D11 + +# Page 33 + STO C31,1 # ADT,JDT AT B-7 + CLA 4B17 + STO TR4,1 # SET UP DIMENSION FOR MXM + TIX FLTRA,1 + LDQ 1B3 # COMMON SETUP OF PHI AND M + STQ C11 + STQ C22 + STQ C44 + CLA PAD # COMMON ADDR SETUP FOR + STO TR1 # PHI*P*PHI(T) AND M*P*M(T) + CLA CAD + STO TR2 + CLA DEL21 # BYPASS FILTER IF ON SURFACE TO + TMI FLTRX # AVOID CONFLICT WITH D44, SIDELL +# +PUPDAT CLZ MU17 # ZERO MU17 IF FILTER TIME + ADD 1B3 + TMI FLTRTM + STO MU17 +FLTRD CLA 17J + ABS + SUB 1B17 + TMI FLTRH # NO RATE CHECK RANGE +RATE CLZ 17J + SUB RDOTS + STO DELR1 # B13 + AXT 2,1 +FLTRE CLA RRDOT # B13 + MPR A31BD,1 # B14 + DVP M1B1 + ADD TS4,1 # B13 + MPY 1B2 # SCALE AT B15 + DVP RR # B22 + STO C11,1 # M11 AT B-7 + CLA A31BD,1 # B1 + LRS 2 + STO C12,1 # M14 AT B3 + +# Page 34 + TIX FLTRE,1 + LDQ C13 + CLA C12 + STQ C12 # M12 AT B-7 + STO C13 # M13 AT B3 + CLZ C22 # M22 (M21,M23,M24 ALREADY ZERO) + CLA 6K8S # B10 + STO 18J # N11,(N12=C42=0,N22=C44=1B3) + CLA 1B17 + TRA FLTRJ +# +# +FLTRH ADD 18J # CHECK RANGE + TMI FLTRX +RANGE AXT 2,1 +FLTRI CLA A31S,1 # ZB B1 + MPR 18J # B22 + SUB RRSX,1 + STO DELR1,1 # B23 + CLA RRX,1 + MPR RRX,1 # B46 + MPY 6K9S # B42 + LLS 12 # B30 + STO TS0,1 # B30 + CLA A31BD,1 # B1 + MPR A31BD,1 # B2 + MPR 6K10S + STO TS4,1 + TIX FLTRI,1 + ADZ TS2 + STO 18J # N11 AT B30 + CLA RRZ + MPY TS0 + DVP RRX # B30 + STO C42 # -N12 + CLZ TS0 + ADZ TS6 + +# Page 35 + STO C44 # N22 +# M IS ALREADY SET UP IN C11-C24 + CLA 6K5 # B0 + MPR DELR3 # B 23 + ADD RY # Y=Y+6K5*DELR3 B23 + STO RY + CLA 6K6S # B-8 + MPY DELR3 # B15 + LLS 2 # B13 + ADD VY + STO VY # VY=VY+6K6*DELR3 + CLA 6K6 + STO 6K6S # RESTORE GAIN AFTER 1ST PASS + CLA 1000D +FLTRJ ADZ MU19 # INCREMENT MARK COUNTER + STO MU19 + CLA 2B17 # DIMENSION FOR MXM (OTHER DIM. + STO TR6 # AND ADDR. ALREADY SET UP) + CLA DAD + TSQ MXM # RETURN WITH D=P(T)*M(T) + CLA C31AD + TSQ MXM # RETURN WITH Q IN C32-C34 + CLZ C42 + SUB C32 + STO C32 # QP12=QP21= -(Q12+N12) + STO C33 + MPY C32 + LLS 3 # (QP12)**2 AT B57(ZERO FOR RATE) +D31AD STO D31 + CLA C31 + ADZ 18J + LRS 17 + CLA C34 + ADZ C44 +C31AD STO C31 # QP11=Q22+N22 + STQ C34 # QP22=Q11+N11 + MPY C34 + +# Page 36 + LLS 3 # QP11*QP22 AT B57(B10 FOR RATE) + SUB D31 +CAD STO C11 # DETERMINANT OF (Q+N) MATRIX + CLA DAD + STO TR2 + CLA 2B17 + STO TR5 + CLA 4B17 + STO TR6 + CLA D31AD + TSQ MXM # RETURN WITH B(T)*C11 IN D31-D44 + CLA DELR1 # SETUP FOR TRICKY INDEXING + STO C14 + CLA DELR2 + STO C24 +# INDEX IS LOADED IN MXM + CLA D31,1 # AT B57,B47 (B20,B10 FOR RATE) + MPY 1B3 + DVP C11 + STO D31,1 # B(T) AT B3,B-7(B13,B3 FOR RATE) + MPY C14,1 # B(I,1)*DELR1 OR B(I,2)*DELR2 + LLS 3 # TO B23 OR B13 + ADZ C41,1 # LAST 4 TIMES THRU WILL ADD TO + STO C41,1 # VALUES COMPUTED 1ST 4 TIMES + TIX *-8,1 + CLA RX + SUZ C41 # B(1,1)*DELR1+B(1,2)*DELR2 + STO RX + CLA RZ + SUZ C42 # B(2,1)*DELR1+B(2,2)*DELR2 + STO RZ + CLA VX + SUZ C43 # B(3,1)*DELR1+B(3,2)*DELR2 + STO VX + CLA VZ + SUZ C44 # B(4,1)*DELR1+B(4,2)*DELR2 + STO VZ + +# Page 37 + CLA CAD + TSQ MXM # RETURN WITH B*M*P IN C11-C44 +# INDEX IS LOADED IN MXM + CLA P11,1 # P=P-B*M*P + SUZ C11,1 + STO P11,1 + CLA P31,1 + SUZ C31,1 + STO P31,1 + TIX *-6,1 + TRA FLTRX +FLTRTM CLA C33 # FINISH SETUP OF PHI + STO C42 # JDT + STQ C33 # 1B3 + CLA U1X + MPR U1Z + MPR 3B3 # B5 + MPZ D11 + STO C32 # CDT AT B-7 + STO C41 + CLA 1B9 # DT AT B13 + STO C13 + STO C24 # NOW HAVE PHI IN C11-C44 + CLA DAD + TSQ MXM # RETURN WITH D = P(T)*PHI(T) + CLA PAD + TSQ MXM # RETURN WITH P=D(T)*PHI(T), OR +# P(NEW = PHI*P(OLD)*PHI(T) + CLA P11 # ADD STATE NOISE TO DIAGONALS + ADD 7K2 + STO P11 + CLA P22 + ADD 7K2 + STO P22 + CLA P33 + ADD 7K2 + STO P33 + +# Page 38 + CLA P44 + ADD 7K2 + STO P44 + TSQ EXEC + TOV *+1 # RESET OVERFLOW + CLA SICO2+1 # ALS 2 + TSQ STEST # TEST FOR SCALING TOO LOW + CLA CDCC+2 # LRS 1 + TOV RSHFT # NEED RIGHT SHIFT IF OVERFLOW + CLA LRI+2 # ALS 3 + TSQ STEST # SEE IF SCALING DOWN IS POSSIBLE + CLA GYCOM+2 # ALS 1 +RSHFT STO VRSH+1 + AXT 2,1 + CLA 6K8S,1 + TSQ VRSH + TOV RVSAR # BYPASS RESCALING IF OVERFLOW IN +# EITHER 2ND STEST OR ALS 1 6K10, + STO 6K8S,1 # OTHERWISE SHIFT LEFT OR RIGHT 1 + TIX *-4,1 # 6K8,6K9,6K10 AND P MATRIX + AXT 7,1 + CLA P11,1 + TSQ VRSH + STO P11,1 + CLA P31,1 + TSQ VRSH + STO P31,1 + TIX *-6,1 +RVSAR CLZ S17 # IS FILTER INIT. REQUESTED + ALS 3 + TMI PINIT + TRA FLTRX +PINIT AXT 7,1 # INITIALIZE P MATRIX AND FILTER + CLZ P11,1 # CONSTANTS + CLZ P31,1 + CLA 6K8,1 + STO 6K8S,1 # THIS ALSO ZEROES 6K6S + +# Page 39 + TIX PINIT+1,1 + CLA 6K2 +PAD STO P11 + STO P22 + CLA 6K4 + STO P33 + STO P44 + CLZ MU19 # CLEAR MARK COUNTER + CLZ DEL45 # MAKE RANGE THE FIRST UPDATE +FLTRX TSQ EXEC + TRA LMORB +# +# MATRIX MULTIPLY SUBROUTINE +# PERFORMS C = A(T)*B(T) WHERE (T) INDICATES THE +# TRANSPOSE OPERATION, EITHER WITH TR1 = ST0 A11 +# WHERE A11=ADDRESS OF 1ST ELEMENT OF A, TR2 = STO +# B11, A = STO C11, TR4 = NO. OF COLUMNS IN A, +# TR5 = NO. OF ROWS IN A, TR6 = NO. OF ROWS IN B, +# THE RESULT MATRIX C WILL HAVE TR4 ROWS AND TR6 +# COLUMNS, ALL MATRICES ARE ASSUMED TO BE STORED +# BY ROWS IN SEQUENTIAL LOCATIONS BEGINNING WITH +# A11, A12, ..., A21, A22, ..., ETC. +MXM STQ PP # SAVE RETURN ADDRESS + STO TR3 # STORE ST0 C11 IN TR3 + SUB 1B17 + STO RREX2 # VARIABLE MATRIX ELEMENT STORE + CLZ I +R3 CLA TR2 + SUB 1B4 # FORM MPY FROM STO + STO RREX1 # VARIABLE MULTIPLY + CLZ J + CLA DLSC # (D24) + STO TI # TEMP. STORAGE TO SAVE D24 + TSQ EXEC + CLA TI + STO DLSC # RESTORE D24 +R2 CLA TR1 + +# Page 40 + ADD I + ADD STOCOM # FORM CLA FROM STO + STO RREX # VARIABLE CLA + CLA RREX2 + ADD 1B17 # INCREMENT STO INSTRUCTION + STO RREX2 + CLZ K + CLZ TR8 # TEMP. SUM +R1 TRA RREX + TIX *+2,1 + TRA R3 + TIX R1,1 + TRA R2 +# TEST FOR VARIABLE SCALING OF FILTER +STEST STO VRSH+1 + STQ SREX3 + CLA RR # B22 + MPR RR # 22+22=44 + MPY 6K9S + LLS 10 + TSQ VRSH + AXT 7,1 + CLA P11,1 + TSQ VRSH + CLA P31,1 + TSQ VRSH + TIX *-4,1 + TRA SREX3 +LMORB2 SUB 5J # QL-5J AT B23 + STO QLTELE # PERIC. ALT + CLZ TS7 # = VH SQ AT B26 + STO VHSQ # SAVE FOR ORB INS + TSQ EXEC +# +ORBLM AXT 2,1 + CLA VIX,1 # RESTORE REX INTO FILTER + STO REX,1 # SCRATCH MATRIX C AREA + +# Page 41 + CLA RX,1 + STO R0X,1 + CLA VX,1 + STO V0X,1 + TIX ORBLM+1,1 + TSQ ORBPM # COMPUTE LM ORBIT PARAMETERS + CLA AI + SUB 5J + ALS 1 # MPY BY 2 + SUB QLTELE + STO QA # LM APOFOCUS ALT. AT B23 + TSQ EXEC +# +# + CLZ Y + CLZ VY0 + AXT 2,1 +KINGK CLA RX,1 + STO RIX,1 # SAVE R FOR ORBIT INS. + MPR WCX,1 + ALS 1 + ADZ Y + STO Y # Y=(WCX)DOT(RX) + CLA VX,1 + STO VIX,1 # SAVE V FOR ORBIT INS. + MPR WCX,1 + ALS 1 + ADZ VY0 + STO VY0 # VY0=(WCX)DOT(VX) + CLA WCX,1 # SET UP FOR CROSS + COM # PRODUCT SUBROUTINE + STO TS10,1 # WC X U1 = U1 X -WC + CLA U1X,1 + STO TS4,1 + TIX KINGK,1 + TSQ CRSPRD + TSQ NORMV # V1 VECTOR TO TSB + +# Page 42 + TSQ CRSPRD + CLZ TS3 + CLZ TS4 + AXT 2,1 + CLZ TS10,1 + STO V1X,1 # V1 AT 1 + MPR A31,1 + ADD TS4 # TS4 = V1 DOT ZB AT B2 + STO TS4 + CLZ TS14,1 + ALS 1 + STO W1X,1 + CLA A31,1 + MPR U1X,1 + ADD TS3 + STO TS3 # TS3 = U1 DOT ZB AT B2 + TIX *-12,1 + TSQ ARCTAE + STO XI + TSQ EXEC # END OF LEM ORB PAR BRANCH +# +# GUIDANCE MODE CHECK +# +GM CLA S10 + ADD 5B3 + ABS + TMI DXFR1 # TPI SEARCH + ADD 1B2 + TMI *+5 + CLZ TDEL # TDEL=0 + CLA ORBRET # =TRA DX10P + STO TSEX # SET UP RETURN FROM NORTON + TRA NORTON+5 +# CSI,CDH,TPI EXECUTE, OR EXT DV + CLA TIG # COMPUTE TDEL FOR + SUB TA1 # CSI, CDH, OR TPI(S10=4) + ALS 5 + +# Page 43 + STO TDEL +DXFR1 CLA TDEL + LRS 5 + ADD TA1 + STO TIG + CLZ TDEL # TDEL = OR GTR 0 AFTER TR CALC + TMI *+2 + STO TDEL + ADD 6J + STO TR # TIME UNTIL RENDEZVOUS (TPI) + CLA TDEL +DXFR10 TSQ NORTON +DX10P STO RF # PRED. BURNOUT ALTITUDE + ADD 2K14 + STO P + CLZ RADOT + CLZ VPY +DXFRR5 CLZ RIX,1 # R5 STORE + STO R5X,1 + CLZ VIX,1 + STO TS14,1 + STO V5X,1 # V5 STORE + MPR WCX,1 + ALS 1 # TO 13 + ADZ VPY # VPY = V5 DOT WC + STO VPY + CLZ TS10,1 + STO U1X,1 # U1 STORE + MPR V5X,1 # RADOT = R5 DOT U1 + ALS 1 # TO 13 + ADZ RADOT + STO RADOT + CLA REX,1 # CSM POS AND VEL FOR + STO R0X,1 # ELLIPSE PREDICTOR + CLA VEX,1 # AND ORBIT PARAMETERS + STO V0X,1 + TIX DXFRR5,1 + +# Page 44 + TSQ NORMV + CLA TS13 + STO VHA + TSQ EXEC +ORBIT3 TSQ ORBPM # CSM ORBIT PARAMETERS + CLA TB + SUB TCSM + ADD TDEL # +TIME INC. TO DXFR + TMI *+2 + SUB TCSM + TSQ NORTON +DXFR13 CLZ TS3 + CLA RIX,1 + SUB R5X,1 + STO VIX,1 # RC-R5 + CLA WCX,1 + STO TS4,1 + CLA U1X,1 + STO TS10,1 + MPR VIX,1 # U1 DOT (RC-R5) + ADZ TS3 # SCALE BOTH RX AND RZ + STO TS3 # AT 24 FOR ARCTAE + TIX DXFR13+1,1 + TSQ CRSPRD + TSQ NORMV + CLZ TS4 +VRUP1 AXT 2,1 + CLA TS10,1 + STO V1X,1 # V1,NORM XPROD OF WC AND U1 + MPR VIX,1 + ADZ TS4 + STO TS4 # RZ AT 24 + TIX VRUP1+1,1 + CLA 1B1 + SUB S10 + TMI XDV-1 # EXT DELTA V + ADD 6B3 + +# Page 45 + TMI THEF # O.I., CSI, CDH + CLZ 28J1 # COMPUE TPI VELOCITY + CLZ 28J2 # IN LOCAL VERTICAL COORD. + CLZ 28J3 + AXT 2,1 +DXFRA CLA V1X,1 # B1 + MPR VGX,1 # B1+B13=B14 + ALS 1 # B13 + ADZ 28J1 + STO 28J1 + CLA W1X,1 # B1 + MPY VGX,1 # B1+B13=B14 + DVP M1B1 # B13 + ADZ 28J2 + STO 28J2 + CLA U1X,1 # B1 + MPY VGX,1 # B1+B13=B14 + DVP M1B1 # B13 + ADZ 28J3 + STO 28J3 + TIX DXFRA,1 + TSQ ARCTAE # TLOS=ARCTAN(RX,RZ) + STO TLOS # LINE OF SIGHT (DEDA) + CLA TR + SUB TDEL + STO T + CLA TB + SUB TCSM + ADD TR # TIME INC. TPI TO REND. + SUB 3J # TARGET OFFSET + STO TI + TSQ EXEC +DXFR14 CLA S10 + COM + TMI CSMT1 # TO ELLIPX +# +# ORBIT INSERTION SECTION + +# Page 46 +# + SUB VY0 # S10 EQUALS 0, ORBIT INSERTION + MPR VY0 + ADD VHSQ # VH SQ + TSQ SQRTE + STO VHA # B13 + CLA 4K5 # COMPUTE DESIRED BURNOUT + SUB RB # ALTITUDE RATE + MPY 4K4 + LLS 3 + STO RFDOT + SUB 4K6 # LIMIT RFDOT BETWEEN + TMI *+3 # 23J AND 4K6 + CLA 4K6 + TRA *+5 + CLA 23J + SUB RFDOT + TMI *+3 + CLA 23J + STO RFDOT + CLA DISC1 # IS ABORT OR ABORT STATE YES + ALS 7 + TMI *+3 # -- ABORT YES + ADD M1B1 + TMI ORBI2 # -- ABORT STATE NO + CLA THETAF + SUB 12J + TMI *+5 # -- CENTRAL ANGLE LESS THAN LIMIT + CLA 10J # SET NEW SLOPE AND OFFSET + STO 7J # VALUES FOR AL WHEN ABORT OR + CLA 11J # ABORT STAGE YES AND THE + STO 4K10 # CENTRAL ANGLE LARGE + CLA 1B1 # STOP PASSES OF NEW SLOPE/OFFSET + STO 12J # EQUALS 4 RAD AT B3 +ORBI2 CLA THETAF # CALCULATE AL + MPY 4K10 + ADD 7J + +# Page 47 + STO AL + CLA RB + STO RF + LRS 1 # CHECK FOR LOW LIMIT OF AL + ADD 8J + SUB AL + TMI CDH3+1 + ADD AL + TRA CDH3 # AL LOW LIMIT BJ+RB/2 +# +# TERMINAL FOR CSI, CDH, EXT DV + TSQ EXEC +XDV CLA TIG # TEST FOR ULLAGE TIME + SUB 7K1 + SUB TA1 # IF TIME FOR ULLAGE, THEN + TMI XDV2 # FREEZE COORDINATE FRAME +XDV1 AXT 2,1 + CLA 28J3 # RADIAL COMPONENT + MPR U1X,1 # 13+1=14 + STO DQSX,1 + CLA 28J2 # CROSSRANGE COMPONENT + MPR W1X,1 + ADZ DQSX,1 + STO DQSX,1 + CLA 28J1 # DOWNRANGE COMPONENT + MPR V1X,1 + SUZ DQSX,1 + ALS 1 # TO 13 + STO DVGXX,1 # VELOCITY TO GAIN + TIX XDV1+1,1 +XDV2 AXT 2,1 # LOAD NDX FOR STEER/XDV + CLA S10 # O.I. EXIT TO STEERING + SUB 1B3 + TMI STEER4+1 # GO TO STEERING +XDV3 CLA DVGXX,1 # INITIAL VG + SUB DQSX,1 # ACCUMULATED DELTA V + STO TS4,1 + +# Page 48 + STO VGX,1 # B13 + TIX XDV3,1 + TSQ DPVMAG + STO VG # VEL TO GAIN MAGNITUDE + TRA Q7 # GO TO STEERING +# +Q5 CLA RFDOT # GUIDANCE LAW + STO TS4 # SET FOR INDEXING + CLZ TS5 + CLA RADOT + STO TS10 + CLA VY0 + STO TS11 + AXT 1,1 + TOV *+1 + CLA RD3DOT,1 # -2 + MPR TBO # 9-2=7 + LRS 1 # TO 8 + STO TS1 # 1/2 AT 7 + CLA TS4,1 # RFDOT OR ZERO + SUB TS10,1 # RDOT OR VY0 + STO TS2 + MPY 1B3 # B16 + DVP TBO # 16-9=7 + SUZ TS1 # R OR YD2DOT + STO TS0 # TEST FOR OVERFLOW + CLZ TS2 # SIGN IF OVERFLOW + TSQ OVFLT + STO RD2DOT,1 + CLA SIXTH # -2 + MPR RD3DOT,1 # -4 + MPR TBO # 5 + LRS 1 # TO 6 + ADD RD2DOT,1 # +1/2 2DOT AT 6 + MPR TBO # 15 + ALS 1 # TO 14 + STO TS1 + +# Page 49 + CLA TS10,1 + LRS 1 # TO 14 + ADZ TS1 + MPR TBO # 23 + ADD R,1 + STO TS14,1 # RF OR YF + TIX Q5+8,1 + STO RF # 23 + STO RB # SAVE RF FOR ORBIT INSERT. + SUB 5J # -LUNAR RADIUS + SUB 16J # BURNOUT ALT ERROR + STO TS14 + LDQ 5K20 + CLA 4K12 + SUB AT + TMI *+3 # IF AT GT 4K12 + CLA DEL2 + TMI *+2 # IF AT LE 4K12 AND DEL2=1 + LDQ 5K18 + STQ RD3DTL # RD3DOT LOWER LIMIT + CLA TBO + MPR TBO + MPR TBO # TB CUBED + STO TS1 # 27 + AXT 1,1 +GDLAW3 TOV *+1 + CLA TS14,1 # BURNOUT ERROR + MPY 12B4 # 27 + LLS 2 # TO 25 + DVP TS1 # -2 + ADZ RD3DOT,1 # DESIRED ACCEL RATE + STO TS0 # TEST FOR OVERFLOW + CLA TS14,1 + TSQ OVFLT + STO RD3DOT,1 + TMI *+5 + SUB 5K14,1 # UPPER LIMIT TEST + +# Page 50 + TMI *+5 + CLA 5K14,1 # SET AT UPPER LIMIT + TRA LL3DOT+1 + SUB RD3DTL,1 # LOWER LIMIT TEST + TMI LL3DOT +GDLAW4 TIX GDLAW3,1 + CLA 2K1 # 48 + MPY 1B1 # B49 + DVP R # 49-23-26 + SUZ VHSQ # VH SQ + MPY 1B4 # B30 + DVP R # -ORBITAL RAD ACCEL AT 7 + ADZ RD2DOT + STO RD2DOT # CMD RAD ACCEL AT 7 + TSQ EXEC +# +# STEERING EQUATIONS. +# +STEER CLA 21J + SUB H + TMI STEER1 + CLA 22J + SUB HDOT + TMI STEER1 + CLA 1B3 # =1024B13 COMMAND X-AXIS VERT + STO VG + CLA PMAX # PSIP=1 + TRA *+9 +STEER1 AXT 1,1 + TOV *+1 + CLA RD2DOT,1 # PSIP AND PSIY COMPS + LDQ ZERO + DVP AT # PSIP OR Y AT ZERO + STO TS0 # TEST FOR OVERFLOW + CLA RD2DOT,1 # SIGN IF OVERFLOW + TSQ OVFLT + STO TS10,1 # PSIP OR PSIY AT 0 + +# Page 51 + TIX STEER1+1,1 + MPR TS10 + COM + ADD PMAX + STO TS14 # 1-(PSIP)SQ + TSQ SQRTE + STO TS15 + CLA TS11 + ABS + SUB TS15 + TMI STEER3 + CLA TS11 + TMI *+3 + CLA TS15 + TRA *+3 + CLA TS15 + COM + STO TS11 +STEER3 CLA TS11 + MPR TS11 + COM + ADZ TS14 + TSQ SQRTE + STO TS12 +STEER4 TRA XDV1 # COMPUTE DELTA V IN LOCAL VERT. + CLA TS10 + MPR U1X,1 + STO TS1 + CLA 28J1 +OUT1 TMI OUT # IF 28J1 NEGATIVE + CLA TS12 + MPR V1X,1 + ADZ TS1 + STO TS1 + CLA TS11 + MPR W1X,1 + ADZ TS1 + +# Page 52 + MPY VG + LLS 1 # TO 13 + STO VGX,1 # VELOCITY YET TO BE GAINED + TIX STEER4+1,1 +Q7 AXT 2,1 # COMPUTE VELOCITY TO BE + CLA VDX,1 # GAINED COMPONENTS + STO VSMGX,1 + TIX *-2,1 + AXT 2,1 + CLA VGX,1 + MPY A11,1 + LLS 1 # TO 13 + ADZ VSMGX # X-COMP OF TOTAL V TO BE GAINED + STO VSMGX + CLA VGX,1 + MPY A21,1 + LLS 1 # TO 13 + ADZ VSMGY + STO VSMGY # Y-COMP OF TOTAL V TO BE GAINED + CLA VGX,1 + MPY A31,1 + LLS 1 # TO 13 + ADZ VSMGZ + STO VSMGZ # Z-COMP OF TOTAL V TO BE GAINED + CLA MU8 # TEST IF ENG ON + SUB 1B17 + TMI *+4 # -- ENG OFF + CLA VG + SUB 5K26 + TMI *+5 + CLA VGX,1 + MPY 1B1 # B14 + DVP VG # RESULT AT B1 + STO A11BD,1 + TIX Q7+5,1 + TSQ EXEC +IDLE TRA TEST + +# Page 53 +OUT CLA TS12 + COM + TRA OUT1+2 +OVFLT TOV *+3 + CLA TS0 + TRA EXIT # EXIT WITH COMPUTED VALUE + TMI *+3 + CLA PMAX # POSITIVE LIMIT + TRA *+2 + CLA NMAX + TRA EXIT +# +# DISPLAY ROUTINE SOFT PORTION. +# +DSP1 TOV *+1 # CL. O.F. + CLZ DSPF1 # H,HDOT MODE. + TMI *+2 # -- IS INITIALIZE + TRA DSPLY # TO COUNTER CHECK. (HARD) + CLA H + STO POUT + CLA HDOT +# Q REGISTER DOES NOT NEED TO BE ZERO +# SINCE DVP K55 IS AT WORST A LEFT +# SHIFT OF 2 AND THE ALT RATE REGISTER +# IS ONLY 15 BITS LONG + DVP K55 + TRA DSPLY1 +DSP2CP CLA VY0 # OUT-OF-CSM PLANE VEL. + LRS 17 # SET SIGN OF Q AND USE + LLS 17 # UP TIME + STQ TS10 # SAVE SIGN + ABS + DVP VY0FS # =FULL-SCALE VALUE(200 FPS) + TOV *+2 + TRA *+2 + CLA PMAX + ADZ TS10 # VY0 IN SIGN-MAGNITUDE + +# Page 54 + TRA DSPLY3-1 # TO OUTPUT,(HARD) +# +# EXECUTIVE PART 2. (BRANCH 50) +# START EXEC2 +# +EXEC7 CLA IDRP + SUB ID # TEST FOR AGS INITIALIZE ID + TMI EXECM2 +EXEC2 CLA BR1 # SET NAV BRANCH + STO BRANCH + CLZ DDF # DEDA DATA FLAG. + TMI NEWDD +EXECM CLZ DEL31 # TEST FOR DOWNLINK DATA + TMI EXEC7 +EXECM1 CLA S0 + SUB 3B3 + TMI EXECA # S0-3(--IS INER. REF) + SUB 1B3 + TMI EXEC6 # S0-4(--IS IMU ALIGN) + SUB 1B3 + TMI TMIE1 # RESET TM + SUB 1B3 + TMI EXECA # S0-6(--IS ORB ALIGN) + ADD 7B3 # S0+1 + TMI INCMU7 # S0=7 +CAL CLA DEL21 # CALIBRATE MODE + TMI *+2 + TSQ EADICS # IMU DIR COSINES + TSQ ATTERR # COMPUTE ATTITUDE ERRORS + AXT 2,1 + CLA 1K33 # -3 + MPY EX,1 # 2 + LLS 12 # -3+2-12=-13 + ADZ DAXREM,1 + STO DAXREM,1 # -13 + CLA 1K34 # -15 + MPR EX,1 # 2 + +# Page 55 + ADZ 1K1,1 + STO 1K1,1 # GYRO BIAS AT -13 + TIX *-9,1 +INCMU7 CLZ MU7 # INCR. COUNTER + ADD 1B17 + STO MU7 + SUB 1K37 # ACCEL. CAL. DURATION + ABS + COM + TMI *+7 # + IS TIME FOR ACCEL CAL + AXT 2,1 + CLZ SDVX,1 + MPR 1K36 + ADZ 1K19,1 + STO 1K19,1 # NEW BIAS CORRECTION + TIX *-4,1 + CLA MU7 + SUB 1K30 + TMI EXECA + CLZ S0 # CAL COMPLETE, SET ATT HOLD +EXECA CLZ DAXA # ZERO ALIGNMENT INCREMENTS + CLZ DAYA + CLZ DAZA + TRA TMIE1 # RESET TM +NEWDD CLA STOCOM # EQU TO STORE + ADD ADST # DEDA ADDRESS + STO VRSH+1 # SET UP STORE INSTRUCTION + CLA DD # DEDA DATA + TSQ VRSH # STORE DATA + CLA BR1 # PROTECT BRANCH FROM DEDA + STO BRANCH + CLA DLWNLC # PROTECT DLWNL + STO DLWNL # FROM DEDA ENTRY + CLA ADST + SUB 1B9 # S0 ADDRESS + TMI EXECM + SUB 1B17 + +# Page 56 + TMI EXEC3 # NEW WD IS S0 + SUB 10B17 + TMI EXECM # NEW WD BTWN S0PS13 + SUB 1B17 + TMI LUNAZ # NEW WD IS S13 + SUB 1B17 + TMI *+2 # NEW WD IS S14 + TRA EXECM + CLA S14 # NEW WD IS S14 + SUB 2B3 + STO DEL32 # ENABLE DL IF S14=1 + TMI EXECM2+2 + COM + TMI EXECM1 # -- S14=3 +EXECM2 CLA IC1BR # SET IC1 BRANCH + STO BRANCH + CLA IDAI # AGS INITIALIZE ID + STO ID + TRA EXECM1 +EXEC3 CLA S0 + ADD 1B3 # NEG IF S0=7 + TMI MABEE + SUB 7B3 + TMI EXECA + CLA DEL21 # CALIBRATE I.C. + TMI MABEE + CLA 3B3 # IMU ALINE FOR 2SECS. + STO S0 + STQ DEL6 +MABEE AXT 6,1 + CLZ SDVX,1 # ZERO MU7 AND DV SJMS + CLA A11,1 + STO A11D,1 + TIX *-3,1 + TRA EXECA +EXEC6 CLZ DEL6 # IMU ALINE. + TMI *+2 # -- IS CALIBRATE + +# Page 57 + TRA *+2 + CLA 6B3 + STO S0 + TRA TMIE1 # RESET TM +FDAI1 CLA A21 + MPR COGA + STO TS1 + CLA A23 + MPR SIGA + TRA EX17+6 +LL3DOT CLA RD3DTL,1 + STO RD3DOT,1 + TRA GDLAW4 +NORTON STO TI + STQ TSEX # SUBR TO GO TO EXEC. + TSQ EXEC + TSQ ELPRD # ELPR AND COMPT + TSQ EXEC # LENGTH OF VECTOR + AXT 2,1 # RIX + CLA RIX,1 + STO TS14,1 + TIX *-2,1 + TSQ NORMV + AXT 2,1 + CLA TS13 # LENGTH OF RI + TRA TSEX +RRT CLZ READP # TEST FOR EXIT + STO RMF # FROM HOLD + TMI ADOUT # TO READ OUT + TRA DEXIT # EXIT +EX33P CLA S10 + SUB 3B3 + TMI CSICDH + CLA 3K4 + SUB C2 + TMI EX33+1 + CLZ DEL10 + +# Page 58 + TMI EX33PP +EX35 CLA 2K11 + STO VF + CLZ Q1 + SUB 5J + STO Q1DEDA + TRA Q7 # GO TO STEERING +EX33PP CLZ 4J +# RESTORE SAVED QUANTITIES FO T/B COMPUTATIONS +# IN HARD MEMORY. + CLZ V6X + STO TS12 + CLZ V6Y + STO TS13 + CLZ V6Z + STO TS14 + TRA EX36+1 +CSICDH TSQ EXEC + CLA RT + SUB RF + STO DELH + STO DELRP # LITTLE DELTA R AT 23 + CLZ RFDOT + AXT 2,1 + CLA VIX,1 + MPR U2X,1 + ALS 1 + ADZ RFDOT + STO RFDOT # RFDOT = U2 DOT VT B13 + TIX *-5,1 + CLA S10 + ADD 6B3 + TMI CDH # S10 = 2 +CSI CLA S16 + MPY 3PID4 # A=3/4(PI)(S16) AT B6 + STO TS1 + DVP AE + +# Page 59 + MPR DELH + STO TS2 # A(DELH/AE) B6 + CLA TS1 + MPR 1B1 + STO TS5 # A AT B7 + CLA 1J + SUB TIG + ALS 3 + MPR NE # NE(1J-TIG) AT B6 + ADD TS2 + MPR 6B3 # =1.5B1 3/2(NE)(1J-TIG)+ +# 3/2(A)(DELH/AE) + SUB TS5 + ADD 2J + STO TS7 # B AT AB7 + CLA RADOT + SUB RFDOT + MPY 1B4 + DVP VHA # 4(RADOT-REDOT)/VHA B6 + SUB TS2 + STO TS10 + CLA THETAF + LRS 3 + ADD TS10 + MPY 1B1 # ACC = C AT B7 + DVP TS7 # C/B B0 + STO TS11 + MPR AE + STO DELH # DELH B23 + CLA TS11 # C/B = DELH/AE B0 + MPR TS1 # A(DELH/AE) B6 + ADD TS2 + STO TS1 + CLA PI + MPR S16 + SUB TS1 + MPY 1B3 # TO B9 + +# Page 60 + DVP NE + STO TA0 + CLA RADOT + STO RFDOT +CDH2 CLA DELRP # LITTLE DELTA R + ADD DELH + MPR M1B1 # -.5B0 = -1B1 + ADD AE +CDH3 STO AL + CLA AL # CALCULATE 28J1 + SUB RF + ADD AL + MPY 2K1 + LRS 1 + DVP RF + LDQ ZERO + DVP AL + TSQ SQRTE + SUB VHA + STO 28J1 # 28J1 = VHF - VHA + TSQ EXEC + CLA RADOT + SUB RFDOT + STO 28J3 + STO TS4+1 + CLA S10 + COM + TMI XDV + CLA 28J1 + STO TS4 + CLA VY0 + STO TS4+2 + TSQ DPVMAG + STO VG + TRA GDLAW +CDH CLZ TA0 + ADD TIG + +# Page 61 + STO TIG # TIG = TIG + TAO + TRA CDH2 +# SEE REAR OF LISTING FOR CHECKSUM +# START OF HARDWIRED MEMORY +# CONSTANTS +# + CHECKSUM RANGE 1005-3776 + ORG 4000 +7B17 DEC 7.B17 # CONSTANTS FOR NORMALIZE +6B17 DEC 6.B17 +5B17 DEC 5.B17 +4B17 DEC 4.B17 +3B17 DEC 3.B17 +2B17 DEC 2.B17 +1B17 DEC 1.B17 +ZERO DEC 0 +2B3 EQU 1B2 +5B3 EQU 10B4 +6B3 EQU 12B4 +1B4 DEC 1.B4 +1B5 DEC 1.B5 +1B6 DEC 1.B6 +1B9 DEC 1.B9 +1B11 DEC 1.B11 +1B12 DEC 1.B12 +1B13 DEC 1.B13 +1B14 DEC 1.B14 +8B17 EQU 1B14 +SIXTH OCT 252525 +2PIB3 DEC 6.2831853B3 +1K25 EQU 2PIB3 +3PID4 DEC 2.3561945B3 +PID2 DEC 1.57079633B3 +PID4 DEC .78539816B3 +K173 DEC -.18488E-3B-6 +K172 DEC .83119E-2B-4 +K171 DEC -.16665554B-2 + +# Page 62 +K170 OCT 377777 # 1B0 +PMAX EQU K170 +K183 DEC -.0389929B-3 +K182 DEC .1462766B-1 +K181 DEC -.3211819B1 +K180 DEC .999215B2 +SHDUM LRS 0 +MS OCT 400000 +NMAX OCT 400001 +49B17 DEC 49.B17 +10B17 DEC 10.B17 +BCDL DEC 100000.B17 +TRNSFR TRA EROUT # EXIT FROM ATT ERROR COMPS +BACK TRA RETURN +TMOUT OUT 6100 +CLAFR CLA 4000 +CLATEN EQU SICO2 # CLA 0,1 +TRACOM EQU MS # LOOKS LIKE TRA 0 +STOCOM EQU 1B2 # LOOKS LIKE STO 0 +DUMCLA EQU 1B1 # LOOKS LIKE CLA 0 +# +# ** 20 MILLISECOND COMPUTATIONS +# +DELAY DLY *+1 + INP 2001 # INPUT PGNS ANGLES + STO THEP + INP 2002 + STO PHIP + INP 2004 + STO PSIP + INP 6010 # INPUT GYRO DATA + STO DAX + INP 6002 + STO DAY + INP 6004 + STO DAZ + INP 6020 # INPUT ACCELEROMETER DATA + +# Page 63 +1B2 STO TS0 # VALUE USED AS CONSTANT + INP 6040 + STO TS1 + INP 6100 + STO TS2 +EX1 TRA EXIT1 +# PROCESS ACCELEROMETER INPUTS + AXT 2,1 +DVS CLZ DVX,1 # SAVE PREVIOUS VALUE + STO DVXM1,1 + CLZ TS0,1 + SUB 1K7 # 11 + ALS 1 + MPR 1K18,1 # SCALE FACTOR + ALS 1 # SCALE AT 1 + ADD 1K19,1 # BIAS COMPENSATION + STO DVX,1 # AT 1 + TIX DVS,1 + TRA EXIT2 # TO MODE CHECK. +# PROCESS GYRO INPUTS + AXT 2,1 + TOV *+1 # RESET +GYCOM CLZ DAX,1 + SUB 1K7 + ALS 1 # RADIANS AT -6 + STO DAX,1 + MPR 1K3,1 # SCALE FACTOR COMP + ADD 1K1,1 # AT -13 + ADZ DAXREM,1 + STO DAXREM,1 + ADD 1B4 # ROUND + LRS 14 # TO +1 + ALS 7 # TO -6, QUANTIZED AT -16 + STO TS6 + ALS 7 +M1B1 COM # INSTRUCTION LOOKS LIKE -1B1 + ADZ DAXREM,1 + +# Page 64 + STO DAXREM,1 + CLZ TS6 + ADZ DAX,1 + ADD DAXA,1 + STO DAX,1 # -6 + ALS 3 # TO -9 + STO TS10,1 + ABS + ADD 1B6 # TEST FOR POSSIBLE OVERFL + TIX GYCOM,1 +EX3 TRA EXIT3 + TOV HRC + CLZ HRF + TMI LRI +# COMPUTE DIRECTION COSINE CHANGE +CDCC CLA TS10 # DAX AT -6 OR -9 + MPY TS11 # DAY + LRS 1 # 1/2DAX(DAY) AT -12 OR -18 + TSQ RND + ADD TS12 # DAZ + STO TS1 + CLA TS10 + MPY TS12 + LRS 1 # 1/2DAX(DAZ) AT -12 OR -18 + TSQ RND + SUZ E13 + STO TS7 + SUB TS11 + STO TS2 + CLA TS11 + MPR TS11 + LRS 1 + STO TS8 + CLA TS12 + MPR TS12 + LRS 1 # 1/2DAZ(DAZ) AT -12 OR -18 + ADD TS8 + +# Page 65 + TSQ RND + COM + ADZ E1 # NORMALITY CONSTRAINT + STO TS3 + CLZ TS7 + ADD TS11 + STO TS4 + CLA TS11 + MPY TS12 + LRS 1 # 1/2DAY(DAZ) AT -12 OR -18 + TSQ RND + SUB TS10 + STO TS5 + CLA TS10 + MPR TS10 + LRS 1 # 1/2DAX(DAX) AT -12 OR -18 + ADZ TS8 + TSQ RND + COM + ADZ E3 + STO TS6 +EX4 TRA EXIT4 + AXT 2,1 # COMPUTE EQUATIONS +DICOS CLA TS1 + MPR A21,1 # 1 + ADZ DA11,1 + STO DA11,1 # -5 OR -8 + CLA TS2 + MPR A31,1 + ADZ DA11,1 + STO DA11,1 # -5 OR -8 + CLA TS3 + MPR A11,1 + ADZ DA11,1 + STO DA11,1 # -5 OR -8 + CLA TS4 # ROW 3 + MPR A11,1 + +# Page 66 + ADZ DA31,1 + STO DA31,1 + CLA TS5 + MPR A21,1 + ADZ DA31,1 + STO DA31,1 + CLA TS6 + MPR A31,1 + ADZ DA31,1 + STO DA31,1 + TIX DICOS,1 +# INTEGRATE DIRECTION COSINES + AXT 6,1 +INTAS CLA HRF + TMI HRINT # -5 OR -8 TEST + CLA DA11,1 +RND1 ADD 1B9 # ROUND +SHFT1 LRS 9 # TO 1 + STO TS1 + ALS 9 + COM + ADZ DA11,1 + STO DA11,1 # SAVE REMAINDER + CLZ A11,1 + ADZ TS1 + STO A11,1 + TIX INTAS,1 + TSQ EXIT5 # DOWNLINK INPUT + TSQ EXIT6 # TELEMETRY OUTPUT +# COMPUTE ROW 2 +COA21 CLA A12 + MPR A33 # 2 + STO TS1 + CLA A13 + MPR A32 + SUZ TS1 + ALS 1 # TO 1 + +# Page 67 + STO A21 # A21 + CLA A13 + MPR A31 + STO TS1 + CLA A11 + MPR A33 + SUZ TS1 + ALS 1 + STO A22 # A22 + CLA A11 + MPR A32 + STO TS1 + CLA A12 + MPR A31 + SUZ TS1 + ALS 1 + STO A23 # A23,DIR COS UPDATE COMPLETE +EX8 TRA EXIT8 +# VELOCITY RESOLUTION +DVINT AXT 2,1 # RESOLVE BODY DVS TO + CLA A11,1 # INERTIAL FRAME AND + MPR DVX # ACCUMULATE. + STO TS1 # 2 + CLA A21,1 + MPR DVY + ADZ TS1 + STO TS1 + CLA A31,1 + MPR DVZ + ADZ TS1 # 2 + ADD 1B13 # ROUND + LRS 5 + ADZ DVSX,1 + STO DVSX,1 # 7 + TIX DVINT+1,1 + TSQ EXIT5 # DOWNLINK INPUT + TSQ EXIT6 # TELEMETRY OUTPUT + +# Page 68 +# + CLZ FLAG1 + TMI BRANCH # -- IS GUID/NAV CYCLE. + CLA MS + STO FLAG1 +EX9 TRA EXIT9 +# +# HARDWIRED 40 MS COMPUTATIONS +# DISCRETE INPUT AND STAGING RECOGNITION COMPS. +# + INP DISC1I # INPUT DISCRETE WD 1 + STO DISC1C + ADD 1B17 # OBTAIN TWO'S COMP OF INPUT WD + COM + STO DISC1 + CLA DEL2 # TEST FOR STAGING + TMI EXIT10 # -- IS STAGED + CLA DISC1C # TEST FOR ASCENT ENG ON + ALS 6 + TMI EXIT10 # -- IS OFF. + CLZ DEL21 # RESET LUNAR SURFACE FLAG + CLA MS + STO DEL2 # SET STAGED FLAG + TRA EXIT11 +# +# DIRECTION COSINE LOGIC +LRI AXT 6,1 + CLZ DA11,1 # REMAINDERS + ALS 3 # TO -8 + STO DA11,1 + TIX *-3,1 + CLA RND1 + STO RND+1 + CLA SHFT1 + STO RND+2 + TRA CDCC +# + +# Page 69 +HRC CLA HRF + TMI HRC1 + CLA RND2 # SET UP FOR HIGH RATE + STO RND+1 + CLA SHFT2 + STO RND+2 + STO HRF + AXT 6,1 + CLZ DA11,1 + LRS 3 # TO -5 + STO DA11,1 + TIX *-3,1 +HRC1 AXT 2,1 + CLA DAX,1 + STO TS10,1 # AT -6 + CLZ E1,1 + LRS 3 # TO -6 + STO E1,1 + TIX *-5,1 + TRA CDCC +# +HRINT CLA DA11,1 +RND2 ADD 1B12 # ROUND +SHFT2 LRS 6 # TO 1 + STO TS1 + ALS 6 + TRA INTAS+7 +# +# ATTITUDE HOLD. (40 MS) +AHE CLA DEL5 # ATTITUDE HOLD ENTRY + TMI AHE1 # IF MINUS -- DRIVE TO REF COSINES + CLA MS # FIRST CYCLE IN + STO DEL5 # ATTITUDE HOLD + AXT 6,1 # SET DESIRED ATTITUDE + CLA A11,1 + STO A11D,1 + TIX *-2,1 + +# +# Page 70 + TSQ EXIT12 # TO ACQUISITION RESET. +AHE1 LDQ TRNSFR # TRA EROUT INTO Q +ATTERR STQ SREX # ENTER HERE FROM CALIBRATE + AXT 2,1 # COMPUTE EX + CLA A31D,1 + MPR A21,1 # 1+1=+2 + COM + ADZ EX + STO EX # +2 + TIX *-5,1 +EYEZ AXT 2,1 # COMPUTE EY AND EZ + CLA A11D,1 + MPR A21,1 # 1+1=+2 + ADZ EZ + STO EZ + CLA A11D,1 + MPR A31,1 # 1+1=+2 + COM + ADZ EY + STO EY + TIX *-9,1 + TRA SREX +# +# LIMIT AND OUTPUT ATTITUDE ERRORS +EROUT TRA EXIT13 + AXT 2,1 + CLZ EX,1 + LDQ MS + TMI *+2 + TRA *+2 + STQ EX,1 + ABS + SUB 4K21 # +2 + TMI *+3 # LESS THAN MAX + CLA PMAX # SET MAX OUTPUT + TRA *+3 + ADD 4K21 + +# Page 71 + DVP 4K21 # SCALE FACTOR + ADZ EX,1 + STO EX,1 + TIX EROUT+2,1 + OUT EXO # AT 0 + CLA EY + OUT EYO # AT 0 + CLA EZ + OUT EZO # AT 0 + TRA EXIT14 +# +# RENDEZVOUS STEERING +RST CLZ DEL5 # CLEAR ATT HLD 1ST CYCLE FLAG + AXT 2,1 + CLA A11BD,1 + STO A11D,1 + TIX *-2,1 + CLA TRNSFR # TRA EROUT INTO SREX + STO SREX + TRA EYEZ +# +# LUNAR ALIGN COMPS +LUNAL CLA A31 + MPR A31 + COM + ADD 1B2 + TSQ SQRTE + STO TS1 + CLA SIDELL # COMPUTE COS DEL A + MPR DDEL + ADD CODELL + MPY TS1 # A32D AT 2 + LLS 1 + MPR A22 + STO TS2 + CLA CODELL # COMPUTE SIN DEL A + MPR DDEL + +# Page 72 + COM + ADD SIDELL + MPY TS1 # A33D AT 2 + LLS 1 + MPR A23 + ADZ TS2 + STO TS2 + CLA A31 + MPR A21 + ADZ TS2 + LDQ ZERO + DVP 1K26 + STO DAXA # -6 + CLA A31 + LDQ ZERO + DVP 1K28 # 1-7=-6 + STO TS1 + CLA DVZ + ADD DVZM1 + MPY 1K27 # 1-4=-3 + LLS 3 # TO -6 + SUZ TS1 + STO DAYA + CLA DVY + ADD DVYM1 + MPY 1K27 # 1-4=-3 + LLS 3 # TO -6 + STO TS1 + CLA A21 + LDQ ZERO + DVP 1K28 + SUZ TS1 + STO DAZA + AXT 2,1 + CLA DAXA,1 + ABS + LRS 2 # TO -4 + +# Page 73 + ADZ TS2 + STO TS2 + TIX *-5,1 + SUB 1K29 # TEST FOR LUNAR ALIGN COMPLETE + STO DEL42 # DEL42 NEG IS LUNAL COMPLETE + TRA EXIT15 +# +# FDAI COMPUTATIONS +FDAI CLA A32 # TOTAL ATTITUDE + COM # -A32 + TSQ FDAIL # LIMIT ROUTINE + OUT SIBEO # SIN BETA AT 0 + CLA A33 + MPR A33 + STO TS1 + CLA A31 + MPR A31 + ADZ TS1 + TSQ SQRTE + STO TS2 # COS BETA + TSQ FDAIL + OUT COBEO +EX16 TRA EXIT16 + CLA TS2 + SUB 1K24 + TMI EXIT17 # USE OLD VALUE OF SIGA AND COGA + LDQ ZERO + CLA A31 + LRS 1 + DVP TS2 + STO SIGA + TSQ FDAIL + OUT SIGAO + LDQ ZERO + CLA A33 + LRS 1 + DVP TS2 + +# Page 74 + STO COGA + TSQ FDAIL + OUT COGAO +EX17 TRA EXIT17 +# THE NEXT 5 CELLS ARE BYPASSED AND +# RE-WRITTEN IN SOFT MEMORY + CLA A23 # GAMMA OUTPUT + MPR SIGA + STO TS1 + CLA A21 + MPR COGA + SUZ TS1 + ALS 1 + TSQ FDAIL + OUT SIALO + CLA A13 + MPR SIGA + STO TS1 + CLA A11 + MPR COGA + SUZ TS1 + ALS 1 + TSQ FDAIL + OUT COALO +# +# DEDA DISCRETE SAMPLING +# + INP DISC2I + ADD 1B17 + COM + ALS 1 # IS TAPE LOAD REQUESTED + TMI GSESR # IF MINUS -- TRANSFER TO GSE SERV + ALS 3 + AXT 3,1 + TMI SPULSE + ALS 1 + TIX *-2,1 + +# Page 75 + TRA SPULSE+1 +# +# FDAI LIMITING SUBROUTINE +FDAIL STQ SREX + LDQ MS + TMI *+2 + LDQ ZERO + STQ TS1 # SET SIGN + ABS + ADD 1B11 # ROUND + ALS 1 + TMI *+2 # -- SET MAX VALUE + TRA *+2 + CLA PMAX + ADZ TS1 + TRA SREX +# +SPULSE STO READP,1 # SET DEDA FLAG + TRA EXIT18 +# +# COMPUTE NORMALITY AND ORTHOGONALITY CONSTRAINTS +NOC AXT 2,1 + CLA A11,1 + MPR A11,1 + ADZ E1 + STO E1 # AT 2 + CLA A31,1 + MPR A31,1 + ADZ E3 # AT 2 + STO E3 + CLA A11,1 + MPR A31,1 + ADZ E13 + STO E13 # AT 2 + TIX NOC+1,1 + ALS 10 # DIV BY 2, SCALE AT -9 + STO E13 + +# Page 76 + AXT 1,1 + CLA 1B2 + SUZ E1,1 # 1-E + ALS 10 # TO -9 + STO E1,1 + TIX *-4,1 + TRA EXIT19 +# +# EULER ANGLE DIRECTION COSINES SUBROUTINE +EADICS STQ SREX1 + CLA THEP + MPR 2PIB3 # RADIANS AT 3 + TSQ SICOE + CLZ TS1 + STO TS5 +12B4 CLZ TS0 # VALUE USED AS CONSTANT + STO TS6 + CLA PSIP + MPR 2PIB3 + TSQ SICOE + CLZ TS1 + STO A12D # 1 + CLZ TS0 + STO TS7 + CLA PHIP + MPR 2PIB3 + TSQ SICOE # INPUTS COMPLETE + CLA TS7 + MPR TS6 + ALS 1 + STO A11D # 1 + CLA TS7 + MPR TS5 + ALS 1 + COM + STO A13D # 1 + CLA TS1 + +# Page 77 + MPR A12D + ALS 1 + STO TS3 + MPR TS6 + STO TS4 +1B1 CLA TS0 # COSINE PHI + MPR TS5 + ADZ TS4 + ALS 1 + STO A31D # 1 + CLZ TS1 + MPZ TS7 + ALS 1 + COM + STO A32D # 1 + CLZ TS3 + MPZ TS5 + STO TS4 + CLZ TS0 + MPZ TS6 + SUZ TS4 + ALS 1 + STO A33D # DI-COS COMPLETE + TRA SREX1 # EXIT +# +# IMU ALIGN COMPUTATIONS +ZNOC CLZ E1 + CLZ E3 + CLZ E13 +IMUDC TSQ EADICS + AXT 6,1 + CLA A11D,1 # REPLACE DIR COSINES + STO A11,1 # WITH IMU DIR COSINES. + CLZ DA11,1 # ZERO REMAINDERS + TIX *-3,1 + TRA COA21-2 +# + +# Page 78 +# INITIALIZE BRANCHES. +# +IC1 CLZ S14 + SUB 2B3 + TMI EXIT20 # TO DL FORMATTIG + AXT 2,1 # LEM POS AND VEL DATA + CLZ 1J1,1 # LEM POS + STO R0X,1 + CLZ 1J4,1 # LEM VEL + STO V0X,1 + TIX *-4,1 + CLZ 1J7 # EPOCH TIME MS + STO TL1 + CLZ 1J7LS # EPOCH TIME LS + STO TL2 + TSQ ORBPM + CLZ DSPSC # CLEAR DISPLAY COUNTER + TSQ EXIT21 +# +IC2 AXT 1,1 + TSQ DPTSB # COMPUTE DBL PREC TA - TL + CLA DEL21 + TMI RVCOMP + TSQ ELPRD # TRNSFR TO ELLIPSE PRED + AXT 2,1 + CLZ RIX,1 + STO RX,1 + CLZ VIX,1 + STO VX,1 + TIX *-4,1 + TRA *+9 +RVCOMP AXT 2,1 + CLZ V0X,1 + STO VX,1 + MPY TI # 13+13=26 + LLS 3 + ADZ R0X,1 + +# Page 79 + STO RX,1 # AT 23 + TIX *-6,1 + TSQ EXEC # IC3 NEXT +# +IC3 TSQ GRAV # TO GRAVITY + AXT 2,1 + CLZ DVSX,1 + CLZ DRX,1 + CLA GXDT,1 + STO DIGX,1 + TIX *-4,1 + TRA EXIT22 +# +# CSM DL OR DEDA INPUTS TO EPOCH CELLS. +CSMPV AXT 2,1 + CLZ 2J1,1 # CSM POS + STO REX,1 + CLZ 2J4,1 # CSM VEL + STO VEX,1 + TIX *-4,1 + CLZ 2J7 # CSM EPOCH MS + STO TE1 + CLZ 2J7LS # CSM EPOCH LS + STO TE2 + CLZ TB + TRA EXIT +# +# NEXT 5 INSTRUCTIONS BYPASSED +# +NAV CLA DEL21 + TMI NAV1 # -- IS ON LUNAR SURFACE + CLA 0464 + SUB VDX + ALS 6 +# +# HARDWIRED NAVIGATION +# + +# Page 80 + STO AT # 1/2(VD1-VD) AT 7 + SUB 4K35 # ULLAGE THRESHOLD + TMI NAV2-2 # AT-4K35 + CLZ MU8 # INCR ULLAGE COUNTER. + ADD 1B17 + STO MU8 + TRA EXIT24 +NAV1 CLZ DIGX # LUNAR SURFACE NAV. + CLZ DIGY + CLZ DIGZ + CLA 1K9 # ULLAGE COUNT LIMIT + STO MU8 + TRA EXIT23 + CLZ MU8 # RESET ULLAGE COUNTER. + TRA EXIT24 +NAV2 CLZ TS1 # ACCEL DRIFT TEST. + AXT 2,1 + CLA DVSX,1 + ABS + ADZ TS1 + STO TS1 + TIX *-4,1 + SUB 1K35 + TMI EXIT25 # COAST PHASE + TRA EXIT26 +NAV3 CLZ DVSX + CLZ DVSY + CLZ DVSZ + TRA EXIT26 +NAV4 AXT 2,1 # VEL AND POS UPDATE. + CLZ DVSX,1 # SENSED VEL AT 7 + ADZ DIGX,1 # PREDICTED INTG GRAVITY. + STO DIGX,1 # 7 + ADD 1B12 # ROUND + LRS 6 + STO TS2 # DV AT 13 + ADD VX,1 + +# Page 81 + STO TS1 # NEW V AT 13 + MPR KDT # DT/2 AT 1. + STO TS4 + CLZ VX,1 # V(N-1) + MPR KDT + ADZ TS4 + ADZ DRX,1 + STO DRX,1 # 14 + ADD 1B9 # ROUND + LRS 9 + STO TS3 # DR AT 23 + ADZ RX,1 + STO RX,1 # NEW R AT 23 + CLZ TS2 # DV AT 13 + ALS 6 + COM + ADZ DIGX,1 + STO DIGX,1 # VEL REMAINDER AT 7 + CLZ TS3 # DR AT 23 + ALS 9 + COM + ADZ DRX,1 + STO DRX,1 # POS REMAINDER AT 14 + CLZ TS1 + STO VX,1 # NEW V AT 13 + TIX NAV4+1,1 + TSQ GRAV # TO GRAVITY COMP. +EX28 TRA EXIT28 + CLA 4K34 # LIMIT AT. + SUB AT + TMI *+3 + CLA 4K34 + STO AT + CLA MS # SET IC DISPLAY. + STO DSPF1 + TSQ TIMEA # TO TA UPDATE +# + +# Page 82 +# CSM ORBIT PARAMETERS +# +ORBPAR CLA S14 + SUB 3B3 + TMI *+4 + CLZ S14 + TSQ CSMPV +EX29 TRA EXIT29 + AXT 2,1 + CLA REX,1 + STO TS4,1 + STO R0X,1 + CLA VEX,1 + STO TS10,1 + STO V0X,1 + TIX *-6,1 + TSQ CRSPRD + TSQ NORMV + AXT 2,1 + CLZ TS10,1 + STO WCX,1 + TIX *-2,1 + TSQ ORBPM # COMPUTE CSM ORB PARAMS FROM EPD + CLA 2PIB3 + LDQ ZERO + LRS 1 + DVP NI # 4-(-9)=13 + STO TCSM +EX30 TRA EXIT30 + CLA TB + SUB TCSM + TMI BR2EX + CLA TCSM + LDQ ZERO + LRS 5 # TO +18 + STQ TS1 + ADZ TE1 + +# Page 83 + STO TE1 + CLZ TS1 + ADZ TE2 + STO TE2 + TMI *+2 # OVERFLOW + TRA BR2EX + SUB MS + STO TE2 + CLZ TE1 + ADD 1B17 + STO TE1 +BR2EX TSQ EXEC +# +# CSM PRESENT POS AND VEL. +# + AXT 0,1 + TSQ DPTSB # COMPUTE DBL PREC TA-TE + STO TB # +13 + TSQ ELPRD # TRANSFER TO ELLIPSE PRED + AXT 2,1 + CLZ RIX,1 + STO RCX,1 # 23 + CLZ VIX,1 + STO VCX,1 # 13 + TIX *-4,1 + TSQ EXEC +# + AXT 2,1 + CLA VX,1 # COMPUTE MAGNITUDE OF VEL VECTOR + STO TS4,1 + TIX *-2,1 + TSQ DPVMAG + STO V # 13 + TRA EXIT31 +# +# GRAVITY AND H, HDOT COMPUTATIONS. +# + +# Page 84 +GRAV STQ SREX3 + AXT 2,1 + CLA RX,1 + STO TS14,1 + TIX *-2,1 + TSQ NORMV # COMPUTE U1 AND R. + CLZ TS13 + STO R # 23 + SUB 5J # MEAN LUNAR RADIUS + STO H # ALTITUDE AT 23 +EX27 TRA EXIT27 + CLA 2K4 + LDQ ZERO + LRS 3 # 52 + DVP TS17 # R SQ AT 46 + STO TS7 # -GRAV VECT MAG AT 6 + AXT 2,1 +GRAV1 CLZ GXDT,1 + STO TS0 # G(N-1)DT + CLZ TS10,1 # UNIT VECTOR FR NORMV + STO U1X,1 # 1 + MPR TS7 # -MUDT/(R SQ) AT 6 + STO GXDT,1 # 7 +7B3 SUZ TS0 # G(N-1)DT + LRS 1 + ADD GXDT,1 # PREDICTED INTG GRAV IN A + ADZ DIGX,1 # VEL REMAINDER + STO DIGX,1 # INTG GRAV+VEL REM AT + CLA VX,1 # 13 + MPR U1X,1 # FORM V DOT U1. + ADZ TS13 + STO TS13 + TIX GRAV1,1 + ALS 1 + STO HDOT # ALT RATE AT 13. + TRA SREX3 +# + +# Page 85 +# LEM ORBIT PARAMETERS. +# +LMORB CLA HDOT # B13 + MPY HDOT + STO TS14 + STQ TS15 + CLA V # 13 + MPR V + SUB TS14 + STO TS7 # VH SQ AT 26 + TSQ SQRTE + STO VH # 13 + TOV *+1 # CL. O.F. + CLA R # 23 + MPR R + MPR 2K2 + MPY TS7 # 46-47+26=25 + LLS 2 + STO TS10 # PL AT 23 + LRS 1 + STO TS11 # SAVE PL AT 24 + STQ TS12 + DVP R + SUB 1B1 + ALS 4 # -3 + STO TS0 + MPZ TS0 + STO TS13 # (PL/R-1) SQ AT -6. + CLZ TS14 # HDOT SQ AT 26 + LDQ TS15 + LLS 8 # 1B + MPR 2K2 + MPR TS10 # PL + ADZ TS13 # EL SQ IN A AT -6. + TOV LMORB1+2 + TSQ SQRTE + LRS 4 # EL AT 1 + +# Page 86 + ADD 1B1 + STO TS1 # 1+EL AT 1. + CLZ TS11 # OL AT 24 + LDQ TS12 + DVP TS1 +LMORB1 STO QL # LM PERICYNTHION AT 23 + TRA EXIT32 + CLA 2K3 # SET QL=CONST + TRA LMORB1 +# +# CSM PREDICTION. +# +CSMT1 TSQ ELPRD # TO ELLIPSE PREDICTOR. + TSQ EXEC +# +# TRANSFER ORBIT VECTORS. +# + AXT 2,1 + CLA RIX,1 # CSM PRED POS + STO TS14,1 + TIX *-2,1 + TSQ NORMV # NORMALIZE RT + CLZ TS13 + STO RT # 23 + AXT 2,1 +XORBV1 CLA TS10,1 # C1X=BX + STO U2X,1 + CLA U1X,1 + STO TS4,1 + MPR U2X,1 + ADZ TS13 + STO TS13 + TIX XORBV1,1 + ALS 1 + STO C1 # U1 DOT U2 AT 1. + MPR C1 + COM + +# Page 87 + ADD 1B2 + TSQ SQRTE + STO C2 # 1 +EX33 TRA EXIT33 + TSQ CRSPRD # U1XU2 AT 2. + CLA TS14+1 + MPY WCY + TMI *+2 # -- IS REND ANG GREAT 180. + TRA *+4 + CLZ C2 + COM + STO C2 + AXT 2,1 # NORMALIZE W1 AND +XORBV2 CLZ TS14,1 + LDQ ZERO + DVP C2 + STO W1X,1 # 1 + CLA U1X,1 + MPR C1 + STO TS1 + CLA U2X,1 # 1 + LRS 1 + SUZ TS1 + LDQ ZERO + DVP C2 + STO V1X,1 # 1 + CLA U1X,1 # 1 + LRS 1 + STO TS1 # 2 + CLA U2X,1 + MPR C1 + SUZ TS1 + LDQ ZERO + DVP C2 + STO V2X,1 # 1 + TIX XORBV2,1 + CLZ MU3 # P-ITERATION INDEX. + +# Page 88 + TSQ EXEC +# +# P-ITERATOR +# +EX34 TRA EXIT34 + TOV *+1 # CL. O.F. + CLA P # ITERATION P AT 23 + SUB RF + LDQ ZERO + DVP RF + STO TS11 # X1 AT 0. + MPY TS11 + LLS 2 + STO TS1 # X1 SQ. AT -2 + CLA P + SUB RT + LDQ ZERO + DVP RT + STO TS12 # X2 AT .0 + MPR C1 + STO TS2 # 1 + CLA TS11 # X1 + LRS 1 + SUZ TS2 + LDQ ZERO + DVP C2 + STO X4 # AT 0. + CLA TS12 # X2 + LRS 1 + STO TS2 # 1 + CLA TS11 # X1 + MPR C1 + SUZ TS2 + LDQ ZERO + DVP C2 # 1 + STO X3 # AT 0. + MPY X3 + +# Page 89 + LLS 2 + ADZ TS1 # -2 + TOV EXIT35 # O.F. IF E TOO LARGE. + STO ESQ # E SQ AT -2. + LRS 2 + STO TS13 # E SQ AT 0. + COM + ADD PMAX + STO TS14 # (1-E SQ) AT 0. + TSQ SQRTE + STO TS15 # ROOT(1-E SQ) AT 0. + CLA X4 + SUB X3 + LRS 1 # 1 + ADD C2 + MPR TS15 + STO TS3 # SIN(DELTA E) AT 1. + CLA X3 + MPR X4 + COM + ADZ TS13 + LRS 1 # 1 + STO TS13 # E SQ-X3(X4) AT 1. + CLZ TS11 + ADZ TS12 # X1+X2 + LRS 1 # 1 + ADZ TS13 + ADD C1 + STO TS4 # COS(DELTA E) AT 1. + TSQ ARCTAE + STO TS16 # DELTA E AT 3. + CLA RT + MPR X4 + STO TS1 # 23 + CLA RF + MPR X3 + SUZ TS1 + +# Page 90 + MPY TS15 + LRS 3 # 26 + DVP P + ADZ TS16 + STO TS16 # DELTAE + X7-X8 AT 3. + CLA P + LDQ ZERO + DVP TS14 # 1-E SQ + STO ALPHA # 23 + MPR 2K2 # 1/2K1 AT -47 + TSQ SQRTE # (-47+23)/2=-12 + MPR ALPHA # 1/N AT 11 IN A. + MPZ TS16 # 11+3=14 + ALS 1 # NEW TP AT 13. + SUB TP + STO TS2 # DELTA TP + ADZ TP + STO TP # 13 + CLA T + SUB TP + STO TS0 # T-TP + CLZ MU3 # INCREMENT ITER COUNTER. + ADD 1B17 + STO MU3 + SUB 2B17 # ITERATION SCHEME. + TMI PITER2 # -- IS MU3=1. + SUB 1B17 + TMI PITER1 # -- IS MU3=2. + SUB 2K17 # MU3-NO. ITERATIONS IN A. + TMI *+6 # -- IS NOT DONE. + CLZ TS0 # DONE. T-TP + ABS + SUB 2K20 + TMI PITER3+5 # -- IS CONVERGED. + TRA EXIT35 + CLA TS2 # DELTA TP. + ABS + +# Page 91 + SUB 2K18 + TMI DELP # -- IS SKIP PARTIAL +PITER1 CLA P # COMPUTE PARTIAL T. + SUZ PP + STO TS1 # 23 + LDQ ZERO + LRS 4 # 27 + TOV *+1 # CL. O.F. + TRA *+2 + DLY INIT # TO TURN ON SEQUENCE + DVP TS2 # 27-13=14 + TOV *+2 + TRA *+7 + CLZ TS1 # DET SIGN OF PART + MPY TS2 # NUM X DENOM + TMI *+3 + CLA PMAX + TRA *+2 + CLA NMAX + STO PART # PARTIAL T AT 14 +DELP CLZ TS0 # T-TP + MPY PART + LLS 4 # 13+14-4=23 + STO TS3 # DELTA P + ABS + SUB 2K19 + TMI PITER3 + CLZ TS3 + TMI *+5 + CLA 2K19 + TRA *+5 +PITER2 CLA 2K14 + TRA *+2 + CLA 2K19 + COM + STO TS3 # DELTA P +PITER3 CLZ P + +# Page 92 + STO PP + ADZ TS3 + STO P # NEW P + TRA EXEC+1 + TSQ EXEC +# +# IMPULSE AND BRAKING VELOCITIES +# +TBRAKE CLA 2K1 # 48 + LDQ ZERO + LRS 1 + DVP P # 49-23=26 + TSQ SQRTE + STO TS1 # ROOT(MU/P) AT 13 + MPZ X3 + STO RFDOT # 13 + CLA TS1 + MPZ X4 + STO TS13 # 13 + CLZ TS1 + MPY P + STO TS1 # ROOT(PXMU) AT 36 + STQ TS2 + DVP RF + STO TS12 # 13 + CLZ TS1 + LDQ TS2 + DVP RT + STO TS14 # 13 +EX36 TRA EXIT36 + TOV *+1 # CL. O.F. + AXT 2,1 +IMPBK1 CLA TS13 # ROOT(MU/P)X(X4) AT 13 + MPZ U2X,1 # 1 + STO TS7 + CLA TS14 # ROOT(PXMU)/RT AT 13 + MPZ V2X,1 # 1 + +# Page 93 + ADZ TS7 + ALS 1 # 13 + SUB VIX,1 + STO VFX,1 # -BRAKING VEL AT 13 + CLA RFDOT # 13 + MPR U1X,1 # 1 + STO TS7 + CLA TS12 # ROOT(PXMU)/RF AT 13 + MPR V1X,1 # 1 + ADZ TS7 + ALS 1 # 13 + SUB V5X,1 + STO VGX,1 # VEL TO GAIN AT 13 + STO TS4,1 + TIX IMPBK1,1 + TOV EXIT35 # CHECK VG OR VF D.F. + TSQ DPVMAG + STO VG # 13 + CLZ ESQ # E SQ ER P ITER AT -2. + TSQ SQRTE + LRS 1 # E AT 0. + COM + ADD PMAX # 1-E AT 0. + MPR ALPHA + STO Q1 # Q OF TRANS ORB AT 23 + TSQ EXEC +# COMPLETE VF ON FOLLOWING CYCLE. + AXT 2,1 + CLA VFX,1 # 13 + STO TS4,1 + TIX *-2,1 + TSQ DPVMAG + TRA EXIT37 # VF IN A AT 8. +# +# GUIDANCE LAW COMPUTATIONS. +# +GDLAW TOV *+1 # TIME TO BURN COMP. + +# Page 94 + CLA VG # 13 + MPR 4K3 # AT -25 + ADD 4K2 # AT -12 + MPR VG + ADD 1B1 + MPY VG + LRS 2 # 16 + DVP AT # 16-7=9 + TOV *+2 + TRA *+2 + CLA PMAX + STO TBO # TIME TO BURN AT 9. + TRA EXIT38 +# +# COMPUTE LUNAR AZIMUTH +# +LUNAZ CLA A31 + MPR A31 # +2 + COM + ADD 1B2 + TSQ SQRTE + STO TS1 # +1 + LDQ ZERO + CLA A32 + LRS 1 # TO 2 + DVP TS1 + STO CODELL + LDQ ZERO + CLA A33 + LRS 1 # TO 2 + DVP TS1 + STO SIDELL # AT 1 + CLA MS + STO DEL21 + TRA EXIT39 +# +# POWER ON INITIALIZATION + +# Page 95 +# +INIT OUT 3050 # RESET CARRY INHIBIT + INP 6200 + INP DEDA + OUT 7057 # RESET DISCRETES + CLA BACK + STO TVARBR+1 + CLA CLAFR # PRIME HARDWIRED CORES + STO TVARBR + TSQ TVARBR + CLA TVARBR + SUB CLATEN + TMI *-3 + OUT 7010 # RESET FAILURE INDICATOR +# GSF SERVICE ROUTINE +GSESR INP 2040 + ALS 1 + TMI EXIT40 # INITIALIZE + INP 6200 + ADD 1B5 + STO TS7 + ADD STOCOM # SET UP VARIABLE STORE + STO TVARBR +WRDLP OUT 6402 # SET GSE 5 + INP 2040 + ALS 1 + TMI *+2 + TRA *-3 + OUT 7012 # RESET GSE 5 AND FAIL INDIC. + INP 2040 + ALS 1 + TMI *-3 # WAIT FOR NEXT WORD + ALS 1 + TMI *+5 + CLZ TS7 # END OF BLOCK + ADD TRACOM + STO TVARBR + +# Page 96 + TRA TVARBR + INP 6200 # INPUT WORD AND STORE + TSQ TVARBR + TRA WRDLP +RETURN STO TS0 # INCREMENT OF VARIABLE + CLZ TVARBR + ADD 1B17 + STO TVARBR + CLZ TS0 + TRA EXIT +# +# TIME UPDATE AND EXECUTIVE PART 1. +# +TIMEA CLZ TA1 # UPDATE ABS TIME. + ADD 1B17 # EQU TO 2 SECS. + STO TA1 + CLA 1B11 # I.C. DEDA COUNTER + STO DEDASC +EXEC STQ BRANCH # SET NEXT BRANCH. + CLZ DEDASC + ALS 1 + TMI *+3 # -- IS TIME TO DEDA. + STO DEDASC + TRA EXIT41 + CLZ BRANCH # SAVE BRANCH IN + STO TMPBR # TEMPORARY BRANCH + CLA DEDABR # DEDA START + STO BRANCH + TRA EXIT41 # TO SOFT DISPLAY +# +# DISPLAY SUBROUTINE +# +DSPLY CLZ DSPSC + ALS 1 + TOV *+2 # O.F. IS TIME TO DISPLAY + TRA DSPLY4 + CLZ PDOUT # INCREMENT DISPLAY VARIABLES. + +# Page 97 + ADD DPDOUT + STO PDOUT # 13 + CLZ POUT + ADD DPOUT + TRA DSPLY2-5 +DSPLY1 STO PDOUT # I.C. DISPLAY COMPS. + SUZ PDOTM1 + MPR 1K4 # .1 + STO DPDOUT # DELTA PDOT AT 13. + CLA PDOUT # 13 + STO PDOTM1 + MPY 1K4 # .1 + LRS 9 # 0.2 PDOT AT 23. + DVP POUTFS # =76840 FT B28 + STO DPOUT # DELTA P AT DISPLAY SCALE. + CLA POUT # 23 + LDQ ZERO + DVP POUTFS # =76840 FT B23 + TOV *+2 + TRA *+3 + CLZ DPOUT + CLA PMAX + STO POUT # OUTPUT P AT DISPLAY SCALE. +DSPLY2 CLA PDOUT # DISPLAY POSITION RATE. + ABS + STO TS10 + CLA PDOUT + TMI *+3 + CLA MS # 1 IS + + TRA *+2 + CLA ZERO # 0 IS - + ADZ TS10 # SIGN MAGNITUDE. + OUT 3040 # RESET + OUT 2440 # SELECT ALT RATE. + OUT 6010 # OUTPUT ALT RATE. + TRA EXIT42 # COMPUTE VY0 FOR OUTPUT + OUT 6020 # OUTPUT SAME. + +# Page 98 +DSPLY3 CLA POUT # DISPLAY POSITION + TMI *+2 + TRA *+2 + CLA ZERO # ALT NEG. + ALS 1 # SIGN BIT USED + OUT 3040 # RESET + OUT 2420 # SELECT ALT. + OUT 6010 # OUTPUT ALT. + CLA 1B5 +DSPLY4 STO DSPSC # RESET COUNTER. +# +# CYCLE COUNTING +# +EXEC1 CLZ MU10 # UPDATE MINOR CYCLE COUNT. + ADD 1B17 + STO MU10 + TRA EXIT43 + CLA MU10 # CHECK FOR END. + SUB 49B17 + TMI DELAY # -- IS NOT END. + CLZ MU10 + CLA BR50 # BR50 START. + STO BRANCH + TRA DELAY +# +# CROSS PRODUCT SUBROUTINE. AXB=C. +# +CRSPRD STQ SREX + CLA TS4+2 # AZ + MPR TS10+1 # BY + STO TS7 + CLA TS4+1 # AY + MPR TS10+2 # BZ + SUZ TS7 + STO TS14 # CX + CLA TS4 # AX + MPR TS10+2 # BZ + +# Page 99 + STO TS7 + CLA TS4+2 # AZ + MPR TS10 + SUZ TS7 + STO TS14+1 # CY + CLA TS4+1 # AY + MPR TS10 # BX + STO TS7 + CLA TS4 # AX + MPR TS10+1 # BY + SUZ TS7 + STO TS14+2 # CZ + TRA SREX +# +# NORMALIZE VECTOR SUBROUTINE. +# +NORMV STQ SREX2 + CLZ TS17 + AXT 2,1 + CLA TS14,1 # INPUT VECTOR + MPR TS14,1 + ADZ TS17 + STO TS17 + TIX *-4,1 + TSQ SQRTE + STO TS13 + AXT 2,1 + CLA TS14,1 + LDQ ZERO + LRS 1 + DVP TS13 + STO TS10,1 # UNIT VECTOR AT 1. + TIX *-5,1 + TRA SREX2 +# +# ORBIT PARAMETERS FROM EPOCH SUBROUTINE +# + +# Page 100 +ORBPM STQ SREX2 + CLZ TS11 + CLZ TS12 + CLZ TS13 + TOV *+1 + AXT 2,1 +ORBPM1 CLA R0X,1 # 23 + MPR V0X,1 # 13 + ADZ TS13 + STO TS13 # R0 DOT V0 AT 36 + CLA V0X,1 + MPR V0X,1 + ADZ TS12 + STO TS12 # V0 DOT V0 AT 26 + CLA R0X,1 + MPR R0X,1 + ADZ TS11 + STO TS11 # R0 DOT R0 AT 46 + TIX ORBPM1,1 +EX44 TRA EXIT44 + TSQ SQRTE + STO R0 # 23 + MPY TS12 # 23+26=49 + TOV *+1 + DVP 2K1 # 48 + COM + ADD PMAX # 2B1 + STO TS1 + CLA R0 + LDQ ZERO + LRS 1 + DVP TS1 +EX45 TRA EXIT45 + STO AI # ALPHA I AT 23 + CLA 2K1 + LDQ ZERO + LRS 1 # 49 + +# Page 101 + DVP AI # 49-23=26 + TSQ SQRTE + STO TS1 # ROOT(MU/ALPHA) AT 15 + LDQ ZERO + LRS 1 + DVP AI + STO NI # ANG FREQ AT -9. + CLA AI + SUB R0 + LDQ ZERO + DVP AI + STO CI # 0 + CLA AI + MPZ TS1 + STO TS1 # ROOT(ALPHA X MU) AT 36 + CLZ TS13 + LDQ ZERO + DVP TS1 + STO SI # 0 + TRA SREX2 +# +# ELLIPSE PREDICTOR SUBROUTINE. +# +ELPRD STQ SREX2 + CLZ TS7 # ITERATION COUNTER. + CLA TI # 13 + MPR NI # AT -9. + ALS 1 + STO TS10 # DEL M AT 3. +ELPRD1 STO TS11 # DEL E AT 3. + TSQ SICOE + CLA TS0 + MPR CI # AT 0. + STO TS13 # 1 + CLA TS1 # 1 + MPR SI # 0+1=1 + SUZ TS13 + +# Page 102 + ADD 1B1 + STO TS12 # X12 AT 1. + CLZ TS7 + SUB 2B17 # 2 ITERATIONS. + TMI ELPRD3 # -- IS NOT DONE. + CLA CI # 0 + LRS 1 # 1 + COM + ADD TS0 + MPY AI # 23+1=24 + DVP R0 # 23 + STO TS3 # F AT 1. + CLZ TS10 # 3 + SUZ TS11 + ALS 2 # 1 + ADD TS1 + LDQ ZERO + LRS 1 + DVP NI # AT -9. + STO TS7 # G AT 11. + CLA R0 + MPR TS12 + STO TS14 # 24 + CLA AI + MPR NI + MPY TS1 # 23-9+1=15 + DVP TS14 + COM + STO TS13 # F DOT AT -9. + CLA TS12 # X12 + SUB 1B1 + ADZ TS0 + LDQ ZERO + LRS 1 # 2 + DVP TS12 + STO TS17 # G DOT AT 1. + AXT 2,1 + +# Page 103 +ELPRD2 CLA R0X,1 # 23 + MPR TS3 # 1 + STO TS2 # 24 + CLA V0X,1 # 13 + MPR TS7 # 11+13=24 + ADZ TS2 + ALS 1 # 23 + STO RIX,1 # PRED POS AT 23 + CLA R0X,1 # 23 + MPR TS13 # -9 + STO TS2 # 14 + CLA V0X,1 # 13 + MPR TS17 # 1 + ADZ TS2 + ALS 1 + STO VIX,1 # PRED VEL AT 13 + TIX ELPRD2,1 + TRA SREX2 +ELPRD3 ADD 3B17 + STO TS7 + CLA TS10 # 3 + SUB TS11 + ALS 2 + STO TS13 # DEL(M)-DEL(E) AT 1. + CLA TS0 # 1 + LRS 1 # 2 + SUB 1B2 + MPR SI # 0+2=2 + ALS 1 + STO TS14 # 1 + CLA TS1 + MPR CI # 0+1=1 + ADZ TS14 + ADZ TS13 # X11 IN A AT 1. + LDQ ZERO + LRS 3 # 4 + DVP TS12 # DEL E CORRECTION AT 3. + +# Page 104 + ADZ TS11 # DEL 3 + TRA ELPRD1 +# +# DOUBLE PRECISION SQUARE SUBROUTINE +# +DPSQ STQ SREX + CLZ TS1 # A SQ MS + CLZ TS2 # A SQ LS + AXT 2,1 +DPSQ1 CLA TS4,1 + MPY TS4,1 + ADZ TS1 + TMI DPSQ3 # CHECK FOR O.F. + STO TS1 + STQ TS3 + CLZ TS2 + ADZ TS3 + STO TS2 + TMI *+2 # CHECK FOR O.F. + TRA DPSQ2 + SUB MS + STO TS2 + CLZ TS1 + ADD 1B17 + TMI DPSQ3 # CHECK FOR O.F. + STO TS1 +DPSQ2 TIX DPSQ1,1 + TRA SREX +DPSQ3 CLA PMAX # O.F. DETECTED. + STO TS1 + TRA SREX +# +# NORMALIZE SUBROUTINE. +# +NORM STQ SREX1 + TOV *+1 # CLEAR O.F. + LDQ TS2 # A SQ LS + +# Page 105 + AXT 7,1 # 8 SHIFTS(16 PLACES) POSSIBLE + CLA TS1 # A SQ MS + LLS 2 + TOV NORM1 + STO TS1 # NORMALIZED A. + TIX *-4,1 + CLA 8B17 + ADD SHDUM # LRS 0 + TRA SREX1 +NORM1 CLA 7B17,1 + TRA *-3 +# +# DOUBLE PRECISION VECTOR MAGNITUDE +# +DPVMAG STQ SREX2 # SAVE RET ADDRS. + TSQ DPSQ # TO DOUB PREC SQ. + TSQ NORM # TO NORMALIZE. + STO SREX3 # LRS(I/2) + CLZ TS1 # NORMALIZED SQ. + TSQ SQRTE + TRA SREX3 # RE-NORMALIZE A-REG. +# +# DOUBLE PRECISION TIME SUBTRACT +# +DPTSB STQ SREX + CLA TA1 # ABS TIME MS AT 18. + SUB TE1,1 # EPOCH TIME MS AT 18. + ALS 5 # 13 + STO TS1 + CLA TE2,1 # EPOCH TIME LS AT 1. + LRS 12 # 13 + STO TS2 + CLA TA2 # ABS TIME LS AT 1. + LRS 12 # 13 + SUZ TS2 + ADZ TS1 + STO TI # TIME DIFF AT 13. + +# Page 106 + TRA SREX +# +EXIT STQ SREX2 + TRA SREX2 +# +# SINE-COSINE SUBROUTINE ENTER WITH ANGLE IN +# RADIANS AT B3 IN ACC AND RETURN IN Q +# + ADD 2PIB3 +SICOE TMI *-1 # SET PLUS + STQ SREX + STO TS1 + SUB 2PIB3 # SET BETWEEN 0-2PI + TMI *+2 + STO TS1 + CLA PID2 # PI/2 + SUB TS1 + STO TS0 # PI/2-ALPHA + TMI SICO1 # -- IS GREATER THAN 90 + AXT 1,1 +SICO2 CLA TS0,1 + ALS 2 # TO 1 + STO TS0,1 + MPR TS0,1 + STO TS2 # ALPHA SQUARED AT 2 + MPR K173 # 2-6=-4 + ADD K172 + MPR TS2 # -2 + ADD K171 + MPR TS2 # 0 + ADD K170 + MPR TS0,1 # 1 + STO TS0,1 + TIX SICO2,1 + TRA SREX # EXIT +SICO1 ADD PID2 + STO TS1 # PI-ALPHA + +# Page 107 + TMI *+2 # -- IS GREATER THAN 180 + TRA SICO2-1 + ADD PID2 + COM + STO TS0 # ALPHA-3PI/2 + TMI SICO2-1 # -- IS BETWEEN 180 AND 270 + SUB PID2 + STO TS1 # ALPHA-2PI + TRA SICO2-1 +# +# ARCTANGENT SUBROUTINE ENTER WITH SINE AND +# COSINE AT 1 IN TS3 AND TS4 +# +ARCTAE STQ SREX # SET EXIT + CLA TS3 + ABS + STO TS1 + CLA TS4 + TOV *+1 + ABS + ADD TS1 # KCOS+KSIN + TOV *+3 # O.F. CHECK. + CLA TS4 + TRA *+7 + CLZ TS1 # O.F. RE-SCALE. + LRS 1 + STO TS1 # ABS SIN. + CLZ TS4 + LRS 1 + STO TS4 # COS + TMI ARCTA2 # -- IS 2ND OR 3RD QUAD + ADD TS1 + STO TS2 + CLA PID4 + STO TS5 # 1/4 PI + CLA TS1 + SUB TS4 # SIN-COS + +# Page 108 +ARCTA1 LDQ ZERO + LRS 1 + DVP TS2 + STO TS6 # =X AT 1 + MPY TS6 + STO TS7 # X SQUARED AT 2 + MPR K183 # -1 + ADD K182 + MPY TS7 # 1 + ADD K181 + MPY TS7 # 3 + LLS 1 # 2 + ADD K180 + MPR TS6 # 3 + ADD TS5 + STO TS1 + CLA TS3 + TMI *+3 + CLA TS1 + TRA SREX # EXIT + CLA 2PIB3 # PHI GREATER THAN 180 + SUB TS1 + TRA SREX +ARCTA2 CLA 3PID4 + STO TS5 # 3/4 PI + CLA TS4 + SUB TS1 + STO TS2 + CLA TS1 + ADD TS4 + TRA ARCTA1 +# +# SQUARE ROOT SUBROUTINE ENTER WITH +# SQUARE IN ACC AND RETURN IN Q +# +SQRTE STQ SREX + STO TS1 + +# Page 109 + COM # TEST FOR ZERO OR NEG + TMI *+3 + CLA ZERO # SET ROOT EQUAL ZERO + TRA SREX + CLZ TS2 # SET TS2=0 + TSQ NORM # TO NORMALIZE + STO SREX1 # SAVE SHIFT + CLA TS1 + LRS 1 # .5SQ + STO TS8 + STQ TS1 + LRS 2 # .125SQ + ADD TS8 # .625SQ + ADD KSR # .375+.625SQ=RN-1 + AXT 1,1 # 2 ITERATIONS +SQRT1 STO TS2 + LRS 1 # .5 RN-1 + STO TS0 +KSR LDQ TS1 # KSR=.375+DELTA + CLA TS8 + DVP TS2 + ADZ TS0 # .5SQ/RN-1+.5RN-1=RN + TIX SQRT1,1 + TRA SREX1 # TO SHIFT +# +# ANGLE BETWEEN VECTORS SUBROUTINE. +# +ABVEC STQ SREX1 + CLA TS10 # BX + MPR TS4+2 # AZ + LRS 1 + STO TS2 + CLA TS4 # AX + MPR TS10+2 # BZ + LRS 1 + SUZ TS2 + STO TS3 # SIN THETA + +# Page 110 + CLA TS4 # AX + MPR TS10 # BX + LRS 1 + STO TS2 + CLA TS4+2 # AZ + MPR TS10+2 # BZ + LRS 1 + ADZ TS2 + STO TS4 # COS THETA + TSQ ARCTAE + TRA SREX1 # THETA IN A AT 3. +# +# DEDA PROCESSING ENTRY +# +ADOUT CLA ADST # OUTPUT ADDRESS + ADD DUMCLA + STO CLADD # SET CLA OF DATA + LRS 9 + AXT 2,1 + LLS 3 # 3 BITS PER PASS + OUT DEDA + OUT SHOUT # SET SHIFT OUT + ALS 18 # TIME DELAY + TIX *-4,1 + TRA CLADD # GET DATA +ROR STO DD + TMI SNS # TEST SIGN + CLA ZERO # POSITIVE + +SOUT OUT DEDA # OUTPUT SIGN + OUT SHOUT + CLA OCTF # OCTAL OR DECIMAL OUTPUT + TMI OCTO +EX46 TRA EXIT46 + CLA DD # DECIMAL OUTPUT + MPR SF # SCALE FACTOR + ABS # MAGNITUDE + AXT 4,1 # OUTPUT 5 DIGITS + +# Page 111 + TOV *+1 + LDQ ZERO + DVP BCDL # DIVIDE BY 100K + STQ TS1 + CLZ TS1 # UNROUNDED QUOTIENT + ADD 1B17 # ROUND UP + TOV MAX # TEST FOR TOO LARGE +DOUT MPY 10B17 # EXTRACT DIGIT + OUT DEDA # OUTPUT + OUT SHOUT + STQ TS1 # REMAINDER + CLZ TS1 + TIX *-5,1 + TRA EXIT47 +OCTO LDQ DD # OCTAL OUTPUT + AXT 4,1 # OUTPUT 5 OCTAL DIGITS + LLS 3 # EXTRACT DIGIT + OUT DEDA # OUTPUT + OUT SHOUT + ALS 18 # TIME DELAY + TIX *-4,1 + TRA EXIT47 +RME STO RMF # READOUT ENTRY + OUT SHIN # ENTER ENTRY SET SHIFT IN + CLZ CMF # RESET CLEAR MODE + CLZ OCTF # OCTAL FLAG + CLZ DD # CLEAR DEDA DATA + CLA ZERO + AXT 2,1 # INPUT 3 DIGIT ADDRESS + ALS 3 + STO ADST + INP DEDA # INPUT DIGIT + OUT SHIN # SET SHIFT IN + LRS 13 + SUB 8B17 # TEST FOR ERROR + TMI *+2 + TRA EXIT48 # ERROR EXIT + +# Page 112 + ADD 8B17 + ADZ ADST # ASSEMBLE ADDRESS + TIX *-10,1 + STO ADST + INP DEDA + OUT SHIN + ALS 4 + STO TS2 # SIGN + CLA ADST + TRA EXIT49 # SCALE FACTOR SELECT +NOTDD CLA MS # SET OCTAL FLAG + STO OCTF + CLA RMF # EXIT IF READOUT + TMI EXIT47 + AXT 4,1 # INPUT 5 OCTAL DIGITS + INP DEDA + OUT SHIN + LRS 14 + ADZ DD # ASSEMBLE WORD + LLS 3 + STO DD + TIX *-6,1 + ADZ TS2 # ADD SIGN + TRA STDD +DDIN CLA RMF # DECIMAL DATA + TMI EXIT47 # EXIT IF READOUT + AXT 4,1 # READ 5 DIGITS + TRA *+5 + OUT SHIN + MPY 10B4 # MULTIPLY BY 10 + LLS 4 # SCALE + STO DD + INP DEDA + LRS 13 + ADZ DD # ASSEMBLE WORD + TIX *-7,1 +EX50 TRA EXIT50 + +# Page 113 + DVP SF # SCALE FACTOR +STDD STO DD + CLZ TS2 + TMI *+2 # COMPLEMENT IF MINUS + TRA EXIT51 # IMMEDIATE ACTION TEST + CLZ DD # COMPLEMENT + COM + TRA STDD +SNS CLA 1B17 # PICK UP NEGATIVE SIGN + TRA SOUT +MAX CLA PMAX # GET MAXIMUM NUMBER + TRA DOUT +# +# ABSOLUTE TIME INITIALIZE +# +ATI CLA MU10 # CYCLE COUNT + LDQ ZERO + DVP M25B16 # MINUS SEC AT 1 + ADD DTB # 1+TIME BIAS + ADD 1B1 # +1 SEC + STO TA2 # 2+BIAS-CYCLE COUNT + CLA DD # INPUT TIME + SUB 1B17 # T-2 SEC + STO TA1 # MOST SIG ABS TIME + TRA EXIT47 +# +# AGS TELEMETRY OUTPUT +# +TME STQ SREX + INP DISC1I + ALS 2 # TEST FOR STOP + TMI SREX # EXIT IF NOT + CLZ TMID + ADD 1B17 # INCREMENT IDENT NUMBER + STO TMID + ADD TMCLA # SET UP TO GET WORD + STO SREX-2 + +# Page 114 + SUB TMCLA # GET ID + ALS 12 + OUT TMIDO # OUTPUT IDENTIFICATION + CLA TMOUT # OUTPUT INSTRUCTION + STO SREX-1 + TRA SREX-2 +# +# TELEMETRY INITIALIZE +# +TMIE2 CLZ TMID # RESET TO FIRST WORD + AXT 2,1 + CLA A11,1 # SAVE DIRECTION COSINES + STO A11T,1 # FOR TELEMETRY + CLA A31,1 + STO A31T,1 + TIX *-4,1 + TRA EXIT +# +# PGNS DOWNLINK INPUT +# +PGNSDE STQ SREX + CLA DEL32 # DOWNLINK INITIALIZE FLAG + TMI *+2 + TRA SREX # EXIT + INP DISC1I + ALS 1 # TEST FOR STOP + TMI SREX # PULSE RECEIVED + INP DLREG # INPUT WORD + LRS 2 # DISCARD UNWANTED BITS + STO TS12 # SAVE INPUT + CLA ID1F # TEST FOR PRIOR ID + TMI PGNSD1 # NUMBER 1 FOUND + CLZ TS12 # TEST IF CURRENT + TMI SREX # WORD IS AN ID + SUB ID # TEST FOR PROPER ID + ABS + COM + +# Page 115 + TMI SREX + CLA K173 # IS IDAI OR IDRP + STO ID1F # SET FLAG + CLZ DLWN # ZERO WORD NUMBER +PBNSD2 CLA 1B5 + STO DLSC # SET SHIFT COUNT + TRA SREX # EXIT +PGNSD1 TRA EXIT7 + CLZ DLSC + ALS 1 # TEST FOR ID + TMI PBNSD2 # WORD EXPECTED + STO DLSC + CLZ DLWN + ADD 1B17 # INCREMENT WORD NUMBER + STO DLWN + ADD DLSTO # FORM STORE COMMAND + STO SREX-1 + SUB DLWNL # TEST FOR LAST WORD + TMI *+4 + CLZ ID1F # RESET ID1 FLAG + CLZ DEL32 # RESET INITIALIZE FLAG + STO DEL31 # SET DATA RECEIVED FLAG + CLZ TS12 + ALS 3 + TRA SREX-1 +# +# SELF-TEST ROUTINE +TEST CLA FLAGT + TMI CKSUM + CLA S12 + SUB 1B3 + TMI *+4 + SUB 1B2 + TMI *+3 # -- IS LESS THAN 3 + TRA EXIT52 + OUT 7010 +# LOGIC TEST + +# Page 116 + TOV *+1 # ACCUM. Q REG. OPER. + LDQ K170 # 377777 377777 + CLA SIXTH # 252525 377777 252525 + ALS 1 # 525252 +1K7 STQ TS0 + TSQ OVFLW # TEST FOR OVERFLOW + LRS 17 # 777777 525252 +10B4 SUB TS0 # 400000 525252 377777 + STQ TS0 + TOV ERROR # TEST RESET OF OVERFLOW + COM # 400000 + TMI *+2 + TRA ERROR +3B3 LDQ TS0 # 400000 525252 525252 + LLS 17 # 125252 000000 + STQ TS1 + TSQ OVFLW + SUB TS1 # 125252 000000 + SUB TS0 # 400000 525252 + ALS 1 # 000000 + TSQ OVFLW + LDQ 4B17 # 000000 000004 000004 + LLS 31 # 200000 000000 + TOV ERROR # NO OVERFLOW + LDQ MS # 200000 400000 400000 + STQ TS1 + LRS 16 # 000001 000000 + ADD TS1 # 400001 000000 400000 + STQ TS2 + ADD TS2 + TMI *+2 + TRA ERROR + ADD K170 # 000000 000000 377777 + TMI ERROR + TOV ERROR + COM # 000000 + TSQ ACCUM # 777777 + +# Page 117 + COM # 000001 + ABS # 000001 + AXT 7,1 + STO TS0,1 # STORE 8 NUMBERS IN + SUB 1B17 # SEQUENCE + TIX *-2,1 + CLA 1B17 # 000001 000001 + # 2005-06-12 RSB. In the comment field, the OPER + # entry was incorrectly shown as 777776. Since + # CLZ clears the operand, this is impossible. + CLZ TS4 # 777776 000000 + ALS 15 # 600000 + TOV ERROR + # 2005-06-12 RSB. Same, but was 777777. + MPZ TS5 # 000001 200000 000000 + # 2005-06-12 RSB. Same, but was 000001. + SUZ TS7 # 000000 200000 000000 + LLS 3 # 000004 000000 + # 2005-06-12 RSB. Same, but was 777774. + ADZ TS2 # 000000 000000 000000 + AXT 3,1 + ADD TS4,1 + TIX *-1,1 + AXT 7,1 + AXT 0,1 + # 2005-06-12 RSB. Same, but was 777775. + SUZ TS3,1 # 000003 000000 000000 + TIX ERROR,1 + AXT 2,1 + # 2005-06-12 RSB. Same, but was 777773. + ADZ TS1 # 777776 000000 000000 + TIX *+1,1 + TIX *+1,1 + # 2005-06-12 RSB. Same, but was 777772. + SUZ TS0,1 # 000004 000000 000000 + AXT 3,1 + ADZ TS0,1 + TIX *-1,1 + ADD MS # 400004 400000 + ABS # 377774 + ADD K170 # 777773 377777 + TSQ OVFLW + ABS # 000005 + LLS 0 + SUB 5B17 # 000000 000005 + TSQ ACCUM # 777777 + +# Page 118 + CLA TS0 # 000000 000000 + TRA *+3 + TSQ ACCUM # 777777 + TRA *+2 + TRA *-2 + STO TS0 + ADD 1B17 # 000000 000001 + CLA TS0 # 777777 777777 + SUB TS0 # 000000 777777 + TSQ ACCUM # 777777 + ALS 16 # 600000 + MPY TS0 # 000000 200000 777777 + STQ TS1 + ADD TS1 # 200000 200000 200000 + SUB 1B1 # 000000 200000 200000 + ADD SIXTH # 252525 200000 252525 + MPR 3B17 # 000002 377777 000003 + ADD TS0 # 000001 377777 777777 + DVP 2B17 # 377777 377777 000002 + TOV ERROR + STQ TS2 + SUB K170 # 000000 377777 377777 + SUB K170 # 400001 377777 377777 + ADD TS2 # 000000 377777 377777 + ADD SIXTH # 252525 377777 252525 + SUB 5B17 # 252520 377777 000005 + MPR SIXTH # 161612 161620 252525 + STQ TS2 + SUB TS2 # 777772 161620 161620 + LRS 17 # 777777 777772 + DVP 4B17 # 777777 777776 000004 + STQ TS2 + ADD TS2 # 777775 777776 777776 + ADD 3B17 # 000000 777776 000003 + SUB SIXTH # 525253 777776 252525 + STO TS3 + MPR TS3 # 161616 307071 525253 + +# Page 119 + DVP TS3 # 525251 525251 525253 + MPY SIXTH # 616160 743435 252525 + DVP SIXTH # 525251 525251 252525 + ADD 2B17 # 525253 525251 000002 + ADD TS3 # 252526 525253 + TSQ OVFLW + SUB TS3 # 525253 525253 + TSQ OVFLW + SUB SIXTH # 252526 252525 + TSQ OVFLW + COM + ADD SIXTH # 777777 252525 + LDQ TS6 # 777777 000000 000000 + ADD TS0 # 777776 000000 777777 + LRS 2 # 777777 600000 +1B3 DVP TS0 # 200000 177777 777777 + STQ TS0 + TSQ OVFLW + SUB TS0 # 000001 177777 + SUB 1B17 # 000000 000001 + TSQ ACCUM # 777777 + CLA 3B17 + DVP 2B17 + TSQ OVFLW # END OF LOGIC TEST +SETFG CLA MS + STO FLAGT # SET TEST FLAG + CLZ SUM + CLA TCLTH # INITIALIZE MEMORY + STO TVARBR # TEST + CLA CLATEN + STO SUMLIM + TRA EXIT52 +# MEMORY CHECKSUM ROUTINE +CKSUM TSQ MEMSUM # PERFORM SUMMATION + CLZ SUM # TEST SUM + TMI *+3 + SUB 1B17 + +# Page 120 + TMI COREX + CLA S12 # INCORRECT SUM + SUB 3B3 # SET TEST WORD BITS + TMI *+4 # AND TEST MODE FAILURE + CLA 7B3 # INDICATOR + STO S12 + TRA *+3 + CLA 1B1 + OUT 6410 + STO S12 + CLZ FLAGT # RESET FLAG + TRA EXIT52 +COREX CLA S12 # CORRECT SUM + SUB 1B17 + TMI *+2 + TRA *-5 + CLA 1B3 + TRA COREX-3 +MEMSUM STQ SREX # MEMORY SUMMATION SUBRT. + CLZ WRDCNT + TSQ TVARBR + ADZ SUM # FORM SUM + STO SUM + CLA TVARBR + SUB SUMLIM # TEST FOR LIMIT + TMI *+2 + TRA SREX + CLZ WRDCNT + ADD 1B17 + STO WRDCNT # INCREMENT WORD COUNTER + SUB WORDS + TMI MEMSUM+2 + TRA EXIT53 +ACCUM TMI ERROR # SUBROUTINE TO TEST FOR + SUB 1B17 + TMI EXIT +ERROR CLA 3B3 + +# Page 121 + STO S12 + TRA SETFG +OVFLW TOV EXIT # OVERFLOW TEST + TRA ERROR +# +# INPUT-OUTPUT ADDRESSES +# + CHECKSUM RANGE 4000-7776 +DLREG DEFINE 6200 +DISC1I DEFINE 2020 # DISCRETE INPUT WORD 1 +DISC2I DEFINE 2040 # DISCRETE INPUT WORD 2 +DEDA DEFINE 2200 +SIALO DEFINE 2001 # DEFINE OUTPUT REGISTERS +COALO DEFINE 2002 # FOR FDAI ANGLES +SIBEO DEFINE 2004 +COBEO DEFINE 2010 +SIGAO DEFINE 2020 +COGAO DEFINE 2040 +EXO DEFINE 6001 # DEFINE THE ATT ERROR +EYO DEFINE 6002 # OUTPUT REGISTERS +EZO DEFINE 6004 +TMIDO DEFINE 6200 +SHOUT DEFINE 2600 +SHIN DEFINE 2500 + END + diff --git a/LUNAR_LANDING_GUIDANCE_EQUATIONS.s b/LUNAR_LANDING_GUIDANCE_EQUATIONS.s new file mode 100644 index 0000000..6f332da --- /dev/null +++ b/LUNAR_LANDING_GUIDANCE_EQUATIONS.s @@ -0,0 +1,1474 @@ +# Copyright: Public domain. +# Filename: LUNAR_LANDING_GUIDANCE_EQUATIONS.s +# 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: HARTMUTH GUTSCHE . +# Website: www.ibiblio.org/apollo. +# Pages: 798-828 +# Mod history: 2009-05-23 HG Transcribed from page images. +# 2009-06-05 RSB Fixed a goofy thing that was apparently +# legal in GAP but not in yaYUL. Eliminated +# a couple of lines of code that shouldn't +# have survived from Luminary 131 to here. +# 2009-06-07 RSB Fixed a typo. +# +# 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-61 +# 16:27 JULY 14, 1969 + +# Page 798 + EBANK= E2DPS + COUNT* $$/F2DPS + +# ******************************************************** +# LUNAR LANDING FLIGHT SEQUENCE TABLES +# ******************************************************** + +# FLIGHT SEQUENCE TABLES ARE ARRANGED BY FUNCTION. THEY ARE REFERENCED USING AS AN INDEX THE REGISTER WCHPHASE: +# WCHPHASE = -1 ---> IGNALG +# WCHPHASE = 0 ---> BRAKQUAD +# WCHPHASE = 1 ---> APPRQUAD +# WCHPHASE = 2 ---> VERTICAL + +#********************************************************* + +# ROUTINES FOR STARTING NEW GUIDANCE PHASES: + + TCF TTFINCR # IGNALG +NEWPHASE TCF TTFINCR # BRAKQUAD + TCF STARTP64 # APPRQUAD + TCF P65START # VERTICAL + +# PRE-GUIDANCE COMPUTATIONS: + + TCF CALCRGVG # IGNALG +PREGUIDE TCF RGVGCALC # BRAKQUAD + TCF REDESIG # APPRQUAD + TCF RGVGCALC # VERTICAL + +# GUIDANCE EQUATIONS: + + TCF TTF/8CL # IGNALG +WHATGUID TCF TTF/8CL # BRAKQUAD + TCF TTF/8CL # APPRQUAD + TCF VERTGUID # VERTICAL + +# POST GUIDANCE EQUATION COMPUTATIONS: + + TCF CGCALC # IGNALG +AFTRGUID TCF CGCALC # BRAKQUAD + TCF CGCALC # APPRQUAD + TCF STEER? # VERTICAL + +# Page 799 +# WINDOW VECTOR COMPUTATIONS: + + TCF EXGSUB # IGNALG +WHATEXIT TCF EXBRAK # BRAKQUAD + TCF EXNORM # APPRQUAD + +# DISPLAY ROUTINES: + +WHATDISP TCF P63DISPS # BRAKQUAD + TCF P64DISPS # APPRQUAD + TCF VERTDISP # VERTICAL + +# ALARM ROUTINE FOR TTF COMPUTATION: + + TCF 1406P00 # IGNALG +WHATALM TCF 1406ALM # BRAKQUAD + TCF 1406ALM # APPRQUAD + +# INDICES FOR REFERENCING TARGET PARAMETERS + + OCT 0 # IGNALG +TARGTDEX OCT 0 # BRAKQUAD + OCT 34 # APPRQUAD + +#************************************************************************ +# ENTRY POINTS: ?GUIDSUB FOR THE IGNITION ALGORITHM, LUNLAND FOR SERVOUT +#************************************************************************ + +# IGNITION ALGORITHM ENTRY: DELIVERS N PASSES OF QUADRATIC GUIDANCE + +?GUIDSUB EXIT + CAF TWO # N = 3 + TS NGUIDSUB + TCF GUILDRET +2 + +GUIDSUB TS NGUIDSUB # ON SUCCEEDING PASSES SKIP TTFINCR + TCF CALCRGVG + +# NORMAL ENTRY: CONTROL COMES HERE FROM SERVOUT + +LUNLAND TC PHASCHNG + OCT 00035 # GROUP 5: RETAIN ONLY PIPA TASK + TC PHASCHNG + OCT 05023 # GROUP 3: PROTECT GUIDANCE WITH PRIO 21 + OCT 21000 # JUST HIGHER THAN SERVICER'S PRIORITY + +# Page 800 +#******************************************************************* +# GUILDENSTERN: AUTO-MODES MONITOR (R13) +#******************************************************************* + + COUNT* $$/R13 + +# HERE IS THE PHILOSOPHY OF GUILDENSTERN: ON EVERY APPEARANCE OR DISAPPEARANCE OF THE MANUAL THROTTLE +# DISCRETE TO SELECT P67 OR P66 RESPECTIVELY: ON EVERY APPEARANCE OF THE ATTITUDE-HOLD DISCRETE TO SELECT P66 +# UNLESS THE CURRENT PROGRAM IS P67 IN WHICH CASE THERE IS NO CHANGE + +GUILDEN EXTEND # IS UN-AUTO-THROTTLE DISCRETE PRESENT? +# STERN # RSB 2009: Not originally a comment. + READ CHAN30 + MASK BIT5 + CCS A + TCF STARTP67 # YES +P67NOW? TC CHECKMM # NO: ARE WE IN P67 NOW? + DEC 67 + TCF STABL? # NO +STARTP66 TC FASTCHNG # YES + TC NEWMODEX +DEC66 DEC 66 + EXTEND + DCA HDOTDISP # SET DESIRED ALTITUDE RATE = CURRENT + DXCH VDGVERT # ALTITUDE RATE. +STRTP66A TC INTPRET + SLOAD PUSH + PBIASZ + SLOAD PUSH + PBIASY + SLOAD VDEF + PBIASX + VXSC SET + BIASFACT + RODFLAG + STOVL VBIAS + TEMX + VCOMP + STOVL OLDPIPAX + ZEROVECS + STODL DELVROD + RODSCALE + STODL RODSCAL1 + PIPTIME + STORE LASTTPIP + EXIT + CAF ZERO + TS FCOLD + TS FWEIGHT + TS FWEIGHT +1 +VRTSTART TS WCHVERT +# Page 801 + CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67 + TS WCHPHOLD + TS WCHPHASE + TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE + CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE + TC DOWNFLAG # PERMIT X-AXIS OVERRIDE + ADRES XOVINFLG + TC DOWNFLAG + ADRES REDFLAG + TCF VERTGUID + +STARTP67 TC NEWMODEX # NO HARM IN "STARTING" P67 OVER AND OVER + DEC 67 # SO NO NEED FOR A FASTCHNG AND NO NEED + CAF ZERO # TO SEE IF ALREADY IN P67. + TS RODCOUNT + CAF TEN + TCF VRTSTART + +STABL? CAF BIT13 # IS UN-ATTITUDE-HOLD DISCRETE PRESENT? + EXTEND + RAND CHAN31 + CCS A + TCF GUILDRET # YES ALL'S WELL + +P66NOW? CS MODREG + AD DEC66 + EXTEND + BZF RESTART? + + CA RODCOUNT # NO. HAS THE ROD SWITCH BEEN "CLICKED"? + EXTEND + BZF GUILDRET # NO. CONTINUE WITH AUTOMATIC LANDING + TCF STARTP66 # YES. SWITCH INTO THE ROD MODE. + +RESTART? CA FLAGWRD1 # HAS THERE BEEN A RESTART? + MASK RODFLBIT + EXTEND + BZF STRTP66A # YES. REINITIALIZE BUT LEAVE VDGVERT AS + # IS. + + TCF VERTGUID # NO: CONTINUE WITH R.O.D. + +# ******************************************************************************* +# INITIALIZATION FOR THIS PASS +# ******************************************************************************* + + COUNT* $$/F2DPS + +GUILDRET CAF ZERO + TS RODCOUNT + +# Page 802 + +2 EXTEND + DCA TPIP + DXCH TPIPOLD + + TC FASTCHNG + + EXTEND + DCA PIPTIME1 + DXCH TPIP + + EXTEND + DCA TTF/8 + DXCH TTF/8TMP + + CCS FLPASS0 + TCF TTFINCR + +BRSPOT1 INDEX WCHPHASE + TCF NEWPHASE + +# ****************************************************************** +# ROUTINES TO START NEW PHASES +# ****************************************************************** + +P65START TC NEWMODEX + DEC 65 + CS TWO + TS WCHVERT + TC DOWNFLAG # PERMIT X-AXIS OVERRIDE + ADRES XOVINFLG + TCF TTFINCR + +STARTP64 TC NEWMODEX + DEC 64 + CA DELTTFAP # AUGMENT TTF/8 + ADS TTF/8TMP + CA BIT12 # ENABLE RUPT10 + EXTEND + WOR CHAN13 + TC DOWNFLAG # INITIALIZE REDESIGNATION FLAG + ADRES REDFLAG + + +# (CONTINUE TO TTFINCR) + +# ********************************************************************************* +# INCREMENT TTF/8, UPDATE LAND FOR LUNAR ROTATION, DO OTHER USEFUL THINGS +# ********************************************************************************* +# +# TTFINCR COMPUTATIONS ARE AS FOLLOWS -- +# Page 803 +# TTF/8 UPDATED FOR TIME SINCE LAST PASS: +# TTF/8 = TTF/8 + (TPIP - TPIPOLD)/8 +# LANDING SITE VECTOR UPDATED FOR LUNAR ROTATION: +# ____ ____ ____ __ +# LAND = /LAND/ UNIT(LAND - LAND(TPIP - TPIPOLD) * WM) +# SLANT RANGE TO LANDING SITE, FOR DISPLAY: +# ____ _ +# RANGEDSP = ABVAL(LAND - R) + +TTFINCR TC INTPRET + DLOAD DSU + TPIP + TPIPOLD + SLR PUSH # SHIFT SCALES DELTA TIME TO 2(17) CSECS + 11D + VXSC VXV + LAND + WM + BVSU RTB + LAND + NORMUNIT + VXSC VSL1 + /LAND/ + STODL LANDTEMP + EXIT + + DXCH MPAC + DAS TTF/8TMP # NOW HAVE INCREMENTED TTF/8 IN TTF/8TMP + + TC FASTCHNG + + EXTEND + DCA TTF/8TMP + DXCH TTF/8 + + EXTEND + DCA LANDTEMP + DXCH LAND + EXTEND + DCA LANDTEMP +2 + DXCH LAND +2 + EXTEND + DCA LANDTEMP +4 + DXCH LAND +4 + +# Page 804 + TC TDISPSET + TC FASTCHNG # SINCE REDESIG MAY CHANGE LANDTEMP + +BRSPOT2 INDEX WCHPHASE + TCF PREGUIDE + +# ********************************************************************* +# LANDING SITE PERTURBATION EQUATIONS +# ********************************************************************* + +REDESIG CA FLAGWRD6 # IS REDFLAG SET? + MASK REDFLBIT + EXTEND + BZF RGVGCALC # NO: SKIP REDESIGNATION LOGIC + + CA TREDES # YES: HAS TREDES REACHED ZERO? + EXTEND + BZF RGVGCALC # YES: SKIP REDESIGNATION LOGIC + + INHINT + CA ELINCR1 + TS ELINCR + CA AZINCR1 + TS AZINCR + TC FASTCHNG + + CA ZERO + TS ELINCR1 + TS AZINCR1 + TS ELINCR +1 + TS AZINCR +1 + + CA FIXLOC # SET PD TO 0 + TS PUSHLOC + + TC INTPRET + VLOAD VSU + LAND + R # ____ _ + RTB PUSH # PUSH DOWN UNIT (LAND - R) + NORMUNIT + VXV VSL1 + YNBPIP # ___ ____ _ + VXSC PDDL # PUSH DOWN - ELINCR(YNB * UNIT(LAND - R)) + ELINCR + AZINCR + VXSC VSU + YNBPIP + VAD PUSH # RESULTING VECTOR IS 1/2 REAL SIZE + +# Page 805 + + DLOAD DSU # MAKE SURE REDESIGNATION IS NOT + 0 # TOO CLOSE TO THE HORIZON. + DEPRCRIT + BMN DLOAD + REDES1 + DEPRCRIT + STORE 0 +REDES1 DLOAD DSU + LAND + R + DDV VXSC + 0 + VAD UNIT + R + VXSC VSL1 + /LAND/ + STORE LANDTEMP + EXIT # LOOKANGL WILL BE COMPUTED AT RGVGCALC + + TC FASTCHNG + + EXTEND + DCA LANDTEMP + DXCH LAND + EXTEND + DCA LANDTEMP +2 + DXCH LAND +2 + EXTEND + DCA LANDTEMP +4 + DXCH LAND +4 + + TCF RGVGCALC + +# ********************************************************************* +# COMPUTE STATE IN GUIDANCE COORDINATES +# ********************************************************************* +# +# RGVGCALC COMPUTATIONS ARE AS FOLLOWS:-- +# VELOCITY RELATIVE TO THE SURFACE +# _______ _ _ __ +# ANGTERM = V + R * WM +# STATE IN GUIDANCE COORDINTES: +# ___ * _ ____ +# RGU = CG (R - LAND) +# ___ * _ __ _ +# VGU = CG (V - WM * R) +# Page 806 actually starts one line earlier but that would separate the markers from their variables +# +# HORIZONTAL VELOCITY FOR DISPLAY +# +# VHORIZ = 8 ABVAL (0, VG , VG ) +# 2 1 +# DEPRESSION ANGLE FOR DISPLAY: +# _ ____ ______ +# LOOKANGL = ARCSIN(UNIT(R - LAND).XMBPIP) + +CALCRGVG TC INTPRET # IN IGNALG, COMPUTE V FROM INTEGRATION + VLOAD MXV # OUTPUT AND TRIM CORRECTION TERM + VATT1 # COMPUTED LAST PASS AND LEFT IN UNFC/2 + REFSMMAT + VSR1 VAD + UNFC/2 + STORE V + EXIT + +RGVGCALC TC INTPRET # ENTER HERE TO RECOMPUTE RG AND VG + VLOAD VXV + R + WM + VAD VSR2 # RESCALE TO UNITS OF 2(9) M/CS + V + STORE ANGTERM + MXV + CG # NO SHIFT SINCE ANGTERM IS DOUBLE SIZED + STORE VGU + PDDL VDEF # FORM (0,VG ,VG ) IN UNITS OF 2(10) M/CS + ZEROVECS # 2 1 + ABVAL SL3 + STOVL VHORIZ # VHORIZ FOR DISPLAY DURING P65. + R # _ ____ + VSU PUSH # PUSH DOWN R - LAND + LAND + MXV VSL1 + CG + STORE RGU + ABVAL + STOVL RANGEDSP + RTB DOT # NOW IN MPAC IS SINE(LOOKANGL)/4 + NORMUNIT + XNBPIP + EXIT + + CA FIXLOC # RESET PUSH DOWN POINTER + TS PUSHLOC + +# Page 807 + CA MPAC # COMPUTE LOOKANGLE ITSELF + DOUBLE + TC BANKCALL + CADR SPARCSIN -1 + AD 1/2DEG + EXTEND + MP 180DEGS + TS LOOKANGL # LOOKANGL FOR DISPLAY DURING P64 + +BRSPOT3 INDEX WCHPHASE + TCF WHATGUID + +# ************************************************************************** +# TTF/8 COMPUTATION +# ************************************************************************** + +TTF/8CL TC INTPRETX + DLOAD* + JDG2TTF,1 + STODL* TABLTTF +6 # A(3) = 8 JDG TO TABLTTF + ADG2TTF,1 # 2 + STODL TABLTTF +4 # A(2) = 6 ADG TO TABLTTF + VGU +4 # 2 + DMP DAD* + 3/4DP + VDG2TTF,1 + STODL* TABLTTF +2 # A(1) = (6 VGU + 18 VDG )/8 TO TABLTTF + RDG +4,1 # 2 2 + DSU DMP + RGU +4 + 3/8DP + STORE TABLTTF # A(0) = -24 (RGU - RDG )/64 TO TABLTTF + EXIT # 2 2 + + CA BIT8 + TS TABLTTF +10 # FRACTIONAL PRECISION FOR TTF TO TABLE + + EXTEND + DCA TTF/8 + DXCH MPAC # LOADS TTF/8 (INITIAL GUESS) INTO MPAC + CAF TWO # DEGREE - ONE + TS L + CAF TABLTTFL + TC ROOTPSRS # YIELDS TTF/8 IN MPAC + INDEX WCHPHASE + TCF WHATALM + + EXTEND # GOOD RETURN + DCA MPAC # FETCH TTF/8 KEEPING IT IN MPAC + DXCH TTF/8 # CORRECTED TTF/8 + +# Page 808 + TC TDISPSET + +# (CONTINUE TO QUADGUID) + +# ********************************************************************************* +# MAIN GUIDANCE EQUATION +# ********************************************************************************* +# +# AS PUBLISHED -- +# ___ __ ___ __ +# ___ ___ 6(VDG + VG) 12(RDG - RG) +# ACG = ADG + ----------- + ------------ +# TTF (TTF)(TTF) +# AS HERE PROGRAMMED -- +# ___ __ +# 3 (1/4(RDG - RG) ___ __) +# - (------------- + VDG + VG) +# ___ 4 ( TTF/8 ) ___ +# ACG = ---------------------------- + ADG +# TTF/8 + +QUADGUID CS TTF/8 + AD LEADTIME # LEADTIME IS A NEGATIVE NUMBER + AD POSMAX # SAFEGUARD THE COMPUTATIONS THAT FOLLOW + TS L # BY FORCING -TTF*LEADTIME > OR = ZERO + CS L + AD L + ZL + EXTEND + DV TTF/8 + TS BUF # - RATIO OF LAG-DIMINISHED TTF TO TTF + EXTEND + SQUARE + TS BUF +1 + AD BUF + XCH BUF +1 # RATIO SQUARED - RATIO + AD BUF +1 + TS MPAC # COEFFICIENT FOR VGU TERM + AD BUF +1 + INDEX FIXLOC + TS 26D # COEFFICIENT FOR RDG-RGU TERM + AD BUF +1 + INDEX FIXLOC + TS 28D # COEFFICIENT FOR VDG TERM + AD BUF + AD POSMAX +# Page 809 + AD BUF +1 + AD BUF +1 + INDEX FIXLOC + TS 30D # COEFFICIENT FOR ADG TERM + + CAF ZERO + TS MODE + + TC INTPRETX + VXSC PDDL + VGU + 28D + VXSC* PDVL* + VDG,1 + RDG,1 + VSU V/SC + RGU + TTF/8 + VSR2 VXSC + 26D + VAD VAD + V/SC VXSC + TTF/8 + 3/4DP + PDDL VXSC* + 30D + ADG,1 + VAD +AFCCALC1 VXM VSL1 # VERGUID COMES HERE + CG + PDVL V/SC + GDT/2 + GSCALE + BVSU STADR + STORE UNFC/2 # UNFC/2 NEED NOT BE UNITIZED + ABVAL +AFCCALC2 STODL /AFC/ # MAGNITUDE OF AFC FOR THROTTLE + UNFC/2 # VERTICAL COMPONENT + DSQ PDDL + UNFC/2 +2 # OUT-OF-PLANE + DSQ PDDL + HIGHESTF + DDV DSQ + MASS # 2 2 2 + DSU DSU # AMAXHORIZ = SQRT(ATOTAL - A - A ) + BPL DLOAD # 1 0 + AFCCALC3 + ZEROVECS +AFCCALC3 SQRT DAD + UNFC/2 +4 +# Page 810 + BPL BDSU + AFCCLEND + UNFC/2 +4 + STORE UNFC/2 +4 +AFCCLEND EXIT + TC FASTCHNG + + CA WCHPHASE # PREPARE FOR PHASE SWITCHING LOGIC + TS WCHPHOLD + INCR FLPASS0 # INCREMENT PASS COUNTER + +BRSPOT4 INDEX WCHPHASE + TCF AFTRGUID + +# *********************************************************************** +# ERECT GUIDANCE-STABLE MEMBER TRANSFORMATION MATRIX +# *********************************************************************** + +CGCALC CAF EBANK5 + TS EBANK + EBANK= TCGIBRAK + EXTEND + INDEX WCHPHASE + INDEX TARGTDEX + DCA TCGFBRAK + INCR BBANK + INCR BBANK + EBANK= TTF/8 + AD TTF/8 + XCH L + AD TTF/8 + CCS A + CCS L + TCF EXTLOGIC + TCF EXTLOGIC + NOOP + + TC INTPRETX + VLOAD UNIT + LAND + STODL CG + TTF/8 + DMP* VXSC + GAINBRAK,1 # NUMERO MYSTERIOSO + ANGTERM + VAD + LAND + VSU RTB + R + NORMUNIT +# Page 811 + VXV RTB + LAND + NORMUNIT + STOVL CG +6 # SECOND ROW + CG + VXV VSL1 + CG +6 + STORE CG +14 + EXIT + +# (CONTINUE TO EXTLOGIC) +# +# *********************************************************************** +# PREPARE TO EXIT +# *********************************************************************** +# +# DECIDE (1) HOW TO EXIT, AND (2) WHETHER TO SWITCH PHASES +# +EXTLOGIC INDEX WCHPHASE # WCHPHASE = 1 APPRQUAD + CA TENDBRAK # WCHPHASE = 0 BRAKQUAD + AD TTF/8 + +EXSPOT1 EXTEND + INDEX WCHPHASE + BZMF WHATEXIT + + TC FASTCHNG + + CA WCHPHOLD + AD ONE + TS WCHPHASE + CA ZERO + TS FLPASS0 # RESET FLPASS0 + + INDEX WCHPHOLD + TCF WHATEXIT + +# *********************************************************************** +# ROUTINES FOR EXITING FROM LANDING GUIDANCE +# *********************************************************************** +# +# 1. EXGSUB IS THE RETURN WHEN GUIDSUB IS CALLED BY THE IGNITION ALGORITHM. +# 2. EXBRAK IN THE EXIT USED DURING THE BRAKING PHASE. IN THIS CASE UNIT(R) IS THE WINDOW POINTING VECTOR. +# 3. EXNORM IS THE EXIT USED AT OTHER TIMES DURING THE BURN. +# (EXOVFLOW IS A SUBROUTINE OF EXBRAK AND EXNORM CALLED WHEN OVERFLOW OCCURRED ANYWHERE IN GUIDANCE.) + +EXGSUB TC INTPRET # COMPUTE TRIM VELOCITY CORRECTION TERM. +# Page 812 + VLOAD RTB + UNFC/2 + NORMUNIT + VXSC VXSC + ZOOMTIME + TRIMACCL + STORE UNFC/2 + EXIT + + CCS NGUIDSUB + TCF GUIDSUB + CCS NIGNLOOP + TCF +3 + TC ALARM + OCT 01412 + + +3 TC POSTJUMP + CADR DDUMCALC + +EXBRAK TC INTPRET + VLOAD + UNIT/R/ + STORE UNWC/2 + EXIT + TCF STEER? + +EXNORM TC INTPRET + VLOAD VSU + LAND + R + RTB + NORMUNIT + STORE UNWC/2 # UNIT(LAND - R) IS TENTATIVE CHOICE + VXV DOT + XNBPIP + CG +6 + EXIT # WITH PROJ IN MPAC 1/8 REAL SIZE + + CS MPAC # GET COEFFICIENT FOR CG +14 + AD PROJMAX + AD POSMAX + TS BUF + CS BUF + ADS BUF # RESULT IS 0 IF PROJMAX - PROJ NEGATIVE + + CS PROJMIN # GET COEFFICIENT FOR UNIT(LAND - R) + AD MPAC + AD POSMAX + TS BUF +1 + CS BUF +1 +# Page 813 + ADS BUF +1 # RESULT IS 0 IF PROJ - PROJMIN NEGATIVE + + CAF FOUR +UNWCLOOP MASK SIX + TS Q + CA EBANK5 + TS EBANK + EBANK= CG + CA BUF + EXTEND + INDEX Q + MP CG +14 + INCR BBANK + EBANK= UNWC/2 + INDEX Q + DXCH UNWC/2 + EXTEND + MP BUF +1 + INDEX Q + DAS UNWC/2 + CCS Q + TCF UNWCLOOP + + INCR BBANK + EBANK= PIF + +STEER? CA FLAGWRD2 # IF STEERSW DOWN NO OUTPUTS + MASK STEERBIT + EXTEND + BZF RATESTOP + +EXVERT CA OVFIND # IF OVERFLOW ANYWHERE IN GUIDANCE + EXTEND # DON'T CALL THROTTLE OR FINDCDUW + BZF +13 + +EXOVFLOW TC ALARM # SOUND THE ALARM NON-ABORTIVELY + OCT 01410 + +RATESTOP CAF BIT13 # ARE WE IN ATTITUDE-HOLD? + EXTEND + RAND CHAN31 + EXTEND + BZF DISPEXIT # YES + + TC BANKCALL # NO: DO A STOPRATE + CADR STOPRATE + + TCF DISPEXIT + +GDUMP1 TC THROTTLE +# Page 814 + TC INTPRET + CALL + FINDCDUW -2 + EXIT + +# (CONTINUE TO DISPEXIT) + +# *********************************************************************** +# GUIDANCE LOOP DISPLAYS +# *********************************************************************** + +DISPEXIT EXTEND # KILL GROUP 3: DISPLAYS WILL BE + DCA NEG0 # RESTORED BY NEXT GUIDANCE CYCLE. + DXCH -PHASE3 + + +3 CS FLAGWRD8 # IF FLUNDISP IS SET, NO DISPLAY THIS PASS + MASK FLUNDBIT + EXTEND + BZF ENDLLJOB # TO PICK UP THE TAG + + INDEX WCHPHOLD + TCF WHATDISP + +-2 TC PHASCHNG # KILL GROUP 5 + OCT 00035 + +P63DISPS CAF V06N63 +DISPCOMN TC BANKCALL + CADR REGODSPR + +ENDLLJOB TCF ENDOFJOB + +P64DISPS CA TREDES # HAS TREDES REACHED ZERO? + EXTEND + BZF RED-OVER # YES: CLEAR REDESIGNATION FLAG + + CS FLAGWRD6 # NO: IS REDFLAG SET? + MASK REDFLBIT + EXTEND + BZF REDES-OK # YES: DO STATIC DISPLAY + + CAF V06N64 # OTHERWISE USE FLASHING DISPLAY + TC BANKCALL + CADR REFLASHR + TCF GOTOP00H # TERMINATE + TCF P64CEED # PROCEED PERMIT REDESIGNATIONS + TCF P64DISPS # RECYCLE +# Page 815 + TCF ENDLLJOB + +P64CEED CAF ZERO + TS ELINCR1 + TS AZINCR1 + + TC UPFLAG # ENABLE REDESIGNATION LOGIC + ADRES REDFLAG + + TCF ENDOFJOB + +RED-OVER TC DOWNFLAG + ADRES REDFLAG +REDES-OK CAF V06N64 + TCF DISPCOMN + + +VERTDISP CAF V06N60 + TCF DISPCOMN + + +# ************************************************************************** +# GUIDANCE FOR P65 +# ************************************************************************** + +VERTGUID CCS WCHVERT + TCF P67VERT # POSITIVE NON-ZERO ---> P67 + TCF P66VERT # +0 +# +# THE P65 GUIDANCE EQUATION IS AS FOLLOWS -- +# ____ ___ +# V2FG - VGU +# ACG = ---------- +# TAUVERT + +P65VERT TC INTPRET + VLOAD VSU + V2FG + VGU + V/SC GOTO + TAUVERT + AFCCALC1 +# Page 816 +# ********************************************************** +# GUIDANCE FOR P66 +# ********************************************************** + +P66VERT TC POSTJUMP + CADR P66VERTA + +P67VERT TC PHASCHNG # TERMINATE GROUP 3. + OCT 00003 + + TC INTPRET + VLOAD GOTO + V + VHORCOMP + + SETLOC P66LOC + BANK + COUNT* $$/F2DPS + +RODTASK CAF PRIO22 + TC FINDVAC + EBANK= DVCNTR + 2CADR RODCOMP + + TCF TASKOVER + +P66VERTA TC PHASCHNG # TERMINATE GROUP 3. + OCT 00003 + + CAF 1SEC + TC TWIDDLE + ADRES RODTASK + +RODCOMP INHINT + CAF ZERO + XCH RODCOUNT + EXTEND + MP RODSCAL1 + DAS VDGVERT # UPDATE DESIRED ALTITUDE RATE. + + EXTEND # SET OLDPIPAX,Y,Z = PIPAX,Y,Z + DCA PIPAX + DXCH OLDPIPAX + DXCH RUPTREG1 # SET RUPTREG1,2,3 = OLDPIPAX,Y,Z + CA PIPAZ + XCH OLDPIPAZ + XCH RUPTREG3 + + EXTEND # SHAPSHOT TIME OF PIPA READING. + DCA TIME2 +# Page 817 + DXCH THISTPIP + + CA OLDPIPAX + AD PIPATMPX + TS MPAC # MPAC(X) = PIPAX + PIPATMPX + CA OLDPIPAY + AD PIPATMPY + TS MPAC +3 # MPAC(Y) = PIPAY + PIPATMPY + CA OLDPIPAZ + AD PIPATMPZ + TS MPAC +5 # MPAC(Z) = PIPAZ + PIPATMPZ + + CS OLDPIPAX + AD TEMX + AD RUPTREG1 + TS DELVROD + CS OLDPIPAY + AD TEMY + AD RUPTREG2 + TS DELVROD +2 + CS OLDPIPAZ + AD TEMZ + AD RUPTREG3 + TS DELVROD +4 + + CAF ZERO + TS MPAC +1 # ZERO LO-ORDER MPAC COMPONENTS + TS MPAC +4 + TS MPAC +6 + TS TEMX # ZERO TEMX, TEMY, AND TEMZ SO WE WILL + TS TEMY # KNOW WHEN READACCS CHANGES THEM. + TS TEMZ + CS ONE + TS MODE + TC INTPRET +ITRPNT1 VXSC PDDL # SCALE MPAC TO M/CS *2(-7) AND PUSH (6) + KPIP1 + THISTPIP + DSU + PIPTIME + STORE 30D # 30-31D CONTAINS TIME IN CS SINCE PIPTIME + DDV PDVL # (8) + 4SEC(28) + GDT/2 + VSU VXSC # (6) + VBIAS + VSL2 VAD + V + VAD STADR # (0) + STOVL 24D # STORE UPDATED VELOCITY IN 24-29D +# Page 818 + R + UNIT + STORE 14D + DOT SL1 + 24D + STODL HDOTDISP # UPDATE HDOTDISP RATE FOR NOUN 63. + 30D + SL DMP + 11D + HDOTDISP + DAD DSU + 36D + /LAND/ + STODL HCALC1 # UPDATE HCALC1 FOR NOUN 63. + HDOTDISP + BDSU DDV + VDGVERT + TAUROD + PDVL ABVAL # (2) + GDT/2 + DDV SR2 + GSCALE + STORE 20D + DAD # (0) + PDVL CALL # (2) + UNITX + CDU*NBSM + DOT + 14D + STORE 22D + BDDV STADR # (0) + STOVL /AFC/ + DELVROD + VXSC VAD + KPIP1 + VBIAS + ABVAL PDDL # (2) + THISTPIP + DSU PDDL # (4) + LASTTPIP + THISTPIP + STODL LASTTPIP # (2) + DDV BDDV # (0) + SHFTFACT + PDDL DMP # (2) + FWEIGHT + BIT1H + DDV DDV + MASS + SCALEFAC +# Page 819 + DAD PDDL # (4) + 0D + 20D + DDV DSU # (2) + 22D + DMP DAD + LAG/TAU + /AFC/ + PDDL DDV # (4) + MAXFORCE + MASS + PDDL DDV # (6) + MINFORCE + MASS + PUSH BDSU # (8) + 2D + BMN DLOAD # (6) + AFCSPOT + DLOAD PUSH # (6) + BDSU BPL + 2D + AFCSPOT + DLOAD # (4) +AFCSPOT DLOAD # (2), (4), OR (6) + SETPD # (2) + 2D + STODL /AFC/ # (0) +ITRPNT2 EXIT + DXCH MPAC # MPAC = MEASURED ACCELARATION. + TC BANKCALL + CADR THROTTLE +3 + TC INTPRET + VLOAD # PICK UP UPDATED VELOCITY VECTOR. + 24D +VHORCOMP VSL2 VAD + DELVS + VSR2 PDVL + R + UNIT VXSC + HDOTDISP + VSL1 BVSU + ABVAL + STORE VHORIZ + EXIT + TC BANKCALL # PUT UP V06N60 DISPLAY BUT AVOID PHASCHNG + CADR DISPEXIT +3 + +BIT1H OCT 00001 +SHFTFACT 2DEC 1 B-17 +# Page 820 +BIASFACT 2DEC 655.36 B-28 + +# ********************************************************************************* +# REDESIGNATOR TRAP +# ********************************************************************************* + + BANK 11 + SETLOC F2DPS*11 + BANK + + COUNT* $$/F2DPS + +PITFALL XCH BANKRUPT + EXTEND + QXCH QRUPT + + TC CHECKMM # IF NOT IN P64, NO REASON TO CONTINUE + DEC 64 + TCF RESUME + + EXTEND + READ CHAN31 + COM + MASK ALL4BITS + TS ELVIRA + CAF TWO + TS ZERLINA + CAF FIVE + TC TWIDDLE + ADRES REDESMON + TCF RESUME + +# REDESIGNATOR MONITOR (INITIATED BY PITFALL) + +PREMON1 TS ZERLINA +PREMON2 CAF SEVEN + TC VARDELAY +REDESMON EXTEND + READ 31 + COM + MASK ALL4BITS + XCH ELVIRA + TS L + CCS ELVIRA # DO ANY BITS APPEAR THIS PASS? + TCF PREMON2 # Y: CONTINUE MONITOR + + CCS L # N: ANY LAST PASS? + TCF COUNT'EM # Y: COUNT 'EM, RESET RUPT, TERMINATE +# Page 821 + CCS ZERLINA # N: HAS ZERLINA REACHED ZERO YET? + TCF PREMON1 # N: DIMINISH ZERLINA, CONTINUE +RESETRPT CAF BIT12 # Y: RESET RUPT. TERMINATE + EXTEND + WOR CHAN13 + TCF TASKOVER + +COUNT'EM CAF BIT13 # ARE WE IN ATTITUDE-HOLD? + EXTEND + RAND CHAN31 + EXTEND + BZF RESETRPT # YES: SKIP REDESIGNATION LOGIC. + + CA L # NO. + MASK -AZBIT + CCS A +-AZ CS AZEACH + ADS AZINCR1 + CA L + MASK +AZBIT + CCS A ++AZ CA AZEACH + ADS AZINCR1 + CA L + MASK -ELBIT + CCS A +-EL CS ELEACH + ADS ELINCR1 + CA L + MASK +ELBIT + CCS A ++EL CA ELEACH + ADS ELINCR1 + TCF RESETRPT + +# THESE EQUIVALENCES ARE BASED ON GSOP CHAPTER 4, REVISION 16 OF P64LM + ++ELBIT = BIT2 # -PITCH +-ELBIT = BIT1 # +PITCH ++AZBIT = BIT5 +-AZBIT = BIT6 + +# Page 822 +ALL4BITS OCT 00063 +AZEACH DEC .03491 # 2 DEGREES +ELEACH DEC .00873 # 1/2 DEGREE + +# **************************************************************** +# R.O.D. TRAP +# **************************************************************** + + BANK 20 + SETLOC RODTRAP + BANK + COUNT* $$/F2DPS # ************************ + +DESCBITS MASK BIT7 # COME HERE FROM MARKRUPT CODING WITH BIT + CCS A # 7 OR 6 OF CHANNEL 16 IN A; BIT 7 MEANS + CS TWO # - RATE INCREMENT, BIT 6 + INCREMENT. + AD ONE + ADS RODCOUNT + TCF RESUME # TRAP IS RESET WHEN SWITCH IS RELEASED + + BANK 31 + SETLOC F2DPS*31 + BANK + + COUNT* $$/F2DPS + +# *********************************************************************************** +# DOUBLE PRECISION ROOT FINDER SUBROUTINE (BY ALLAN KLUMPP) +# *********************************************************************************** +# +# N N-1 +# ROOTPSRS FINDS ONE ROOT OF THE POWER SERIES A X + A X + ... + A X + A +# N N-1 1 0 +# USING NETON'S METHOD STARTING WITH AN INITIAL GUESS FOR THE ROOT. THE ENTERING DATA MUST BE AS FOLLOWS: +# A SP LOC-3 ADRES FOR REFERENCING PWR COF TABL +# L SP N-1 N IS THE DEGREE OF THE POWER SERIES +# MPAC DP X INITIAL GUESS FOR ROOT +# +# LOC-2N DP A(0) +# ... +# LOC DP A(N) +# LOC+2 SP PRECROOT PREC RQD OF ROOT (AS FRACT OF 1ST GUESS) +# +# Page 823 +# THE DP RESULT IS LEFT IN MPAC UPON EXIT, AND A SP COUNT OF THE ITERATIONS TO CONVERGENCE IS LEFT IN MPAC+2. +# RETURN IS NORMALLY TO LOC(TC ROOTPSRS)+3. IF ROOTPSRS FAILS TO CONVERGE TO IN 8 PASSES, RETURN IS TO LOC+1 AND +# OUTPUTS ARE NOT TO BE TRUSTED. +# +# PRECAUTION: ROOTPSRS MAKES NO CHECKS FOR OVERFLOW OR FOR IMPROPER USAGE. IMPROPER USAGE COULD +# PRECLUDE CONVERGENCE OR REQUIRE EXCESSIVE ITERATIONS. AS A SPECIFIC EXAMPLE, ROOTPSRS FORMS A DERIVATIVE +# COEFFICIENT TABLE BY MULTIPLYINE EACH A(I) BY I, WHERE I RANGES FROM 1 TO N. IF AN ELEMENT OF THE DERIVATIVE +# COEFFICIENT TABLE = 1 OR >1 IN MAGNITUDE, ONLY THE EXCESS IS RETAINED. ROOTPSRS MAY CONVERGE ON THE COREECT +# ROOT NONETHELESS, BUT IT MAY TAKE AN EXCESSIVE NUMBER OF ITERATIONS. THEREFORE THE USER SHOULD RECOGNIZE: +# 1. USER'S RESPONSIBILITY TO ASSUR THAT I X A(I) < 1 IN MAGNITUDE FOR ALL I. +# 2. USER'S RESPONSIBILITY TO ASSURE OVERFLOW WILL NOT OCCUR IN EVALUTATING EITHER THE RESIDUAL OR THE DERIVATIVE +# POWER SERIES. THIS OVERFLOW WOULD BE PRODUCED BY SUBROUTINE POWRSERS, CALLED BY ROOTPSRS, AND MIGHT NOT +# PRECLUDE EVENTUAL CONVERGENCE. +# 3. AT PRESENT, ERASABLE LOCATIONS ARE RESERVED ONLY FOR N UP TO 5. AN N IN EXCESS OF 5 WILL PRODUCE CHAOS. +# ALL ERASABLES USED BY ROOTPSRS ARE UNSWITCHED LOCATED IN THE REGION FROM MPAC-33 OCT TO MPAC+7. +# 4. THE ITERATION COUNT RETURNED IN MPAC+2 MAY BE USED TO DETECT ABNORMAL PERFORMANCE. + + # STORE ENTERING DATA, INITIALIZE ERASABLES +ROOTPSRS EXTEND + QXCH RETROOT # RETURN ADRES + TS PWRPTR # PWR TABLE POINTER + DXCH MPAC +3 # PWR TABLE ADRES, N-1 + CA DERTABLL + TS DERPTR # DER TABL POINTER + TS MPAC +5 # DER TABL ADRES + CCS MPAC +4 # NO POWER SERIES DEGREE 1 OR LESS + TS MPAC +6 # N-2 + CA ZERO # MODE USED AS ITERATION COUNTER. MODE + TS MODE # MUST BE POS SO ABS WON'T COMP MPAC+3 ETC. + + # COMPUTE CRITERION TO STOP ITERATING + EXTEND + DCA MPAC # FETCH ROOT GUESS, KEEPING IT IN MPAC + DXCH ROOTPS # AND IN ROOTPS + INDEX MPAC +3 # PWR TABLE ADRES + CA 5 # PRECROOT TO A + TC SHORTMP # YIELDS DP PRODUCT IN MPAC + TC USPRCADR + CADR ABS # YIELDS ABVAL OF CRITERION ON DX IN MPAC + DXCH MPAC + DXCH DXCRIT # CRITERION + + # SET UP DER COF TABL +# Page 824 + EXTEND + INDEX PWRPTR + DCA 3 + DXCH MPAC # A(N) TO MPAC + + CA MPAC +4 # N-1 TO A + +DERCLOOP TS PWRCNT # LOOP COUNTER + AD ONE + TC DMPNSUB # YIELDS DERCOF = I X A(I) IN MPAC + EXTEND + INDEX PWRPTR + DCA 1 + DXCH MPAC # (I-1) TO MPAC, FETCHING DERCOF + INDEX DERPTR + DXCH 3 # DERCOF TO DER TABLE + CS TWO + ADS PWRPTR # DECREMENT PWR POINTER + CS TWO + ADS DERPTR # DECREMENT DER POINTER + CCS PWRCNT + TCF DERCLOOP + + # CONVERGE ON ROOT +ROOTLOOP EXTEND + DCA ROOTPS # FETCH CURRENT ROOT + DXCH MPAC # LEAVE IN MPAC + EXTEND + DCA MPAC +5 # LOAD A, L WITH DER TABL ADRES, N-2 + TC POWRSERS # YIELDS DERIVATIVE IN MPAC + + EXTEND + DCA ROOTPS + DXCH MPAC # CURRENT ROOT TO MPAC, FETCHING DERIVATIVE + DXCH BUF # LEAVE DERIVATIVE IN BUF AS DIVISOR + EXTEND + DCA MPAC +3 # LOAD A, L WITH PWR TABL ADRES, N-1 + TC POWRSERS # YIELDS RESIDUAL IN MPAC + + TC USPRCADR + CADR DDV/BDDV # YIELDS -DX IN MPAC + + EXTEND + DCS MPAC # FETCH DX, LEAVING -DX IN MPAC + DAS ROOTPS # CORRECTED ROOT NOW IN ROOTPS + + TC USPRCADR + CADR ABS # YIELDS ABS(DX) IN MPAC + EXTEND +# Page 825 + DCS DXCRIT + DAS MPAC # ABS(DX)-ABS(DXCRIT) IN MPAC + + CA MODE + MASK BIT4 # KLUMPP SAYS GIVE UP AFTER EIGHT PASSES + CCS A +BADROOT TC RETROOT + + INCR MODE # INCREMENT ITERATION COUNTER + CCS MPAC # TEST HI ORDER DX + TCF ROOTLOOP + TCF TESTLODX + TCF ROOTSTOR +TESTLODX CCS MPAC +1 # TEST LO ORDER DX + TCF ROOTLOOP + TCF ROOTSTOR + TCF ROOTSTOR +ROOTSTOR DXCH ROOTPS + DXCH MPAC + CA MODE + TS MPAC +2 # STORE SP ITERATION COUNT IN MPAC+2 + INDEX RETROOT + TCF 2 + +DERTABLL ADRES DERCOFN -3 + +# **************************************************************************** +# TRASHY LITTLE SUBROUTINES +# **************************************************************************** + +INTPRETX INDEX WCHPHASE # SET X1 ON THE WAY TO THE INTERPRETER + CS TARGTDEX + INDEX FIXLOC + TS X1 + TCF INTPRET + +TDISPSET CA TTF/8 + EXTEND + MP TSCALINV + DXCH TTFDISP + + CA EBANK5 # TREDES BECOMES ZERO TWO PASSES + TS EBANK # BEFORE TCGFAPPR IS REACHED + EBANK= TCGFAPPR + CA TCGFAPPR + INCR BBANK + INCR BBANK + EBANK= TTF/8 +# Page 826 + AD TTF/8 + EXTEND + MP TREDESCL + AD -DEC103 + AD NEGMAX + TS L + CS L + AD L + AD +DEC99 + AD POSMAX + TS TREDES + CS TREDES + ADS TREDES + TC Q + +1406P00 TC P00DOO + OCT 01406 +1406ALM TC ALARM + OCT 01406 + TCF RATESTOP + +# ********************************************************************* +# SPECIALIZED "PHASCHNG" SUBROUTINE +# ********************************************************************* + + EBANK= PHSNAME2 +FASTCHNG CA EBANK3 # SPECIALIZED 'PHASCHNG' ROUTINE + XCH EBANK + DXCH L + TS PHSNAME3 + LXCH EBANK + EBANK= E2DPS + TC A + +# ************************************************************************************* +# PARAMETER TABLE INDIRECT ADDRESSES +# ************************************************************************************* + +RDG = RBRFG +VDG = VBRFG +ADG = ABRFG +VDG2TTF = VBRFG* +ADG2TTF = ABRFG* +JDG2TTF = JBRFG* + +# ************************************************************************************* +# LUNAR LANDING CONSTANTS +# ************************************************************************************* + +# Page 827 +TABLTTFL ADRES TABLTTF +3 # ADDRESS FOR REFERENCING TTF TABLE +TTFSCALE = BIT12 +TSCALINV = BIT4 +-DEC103 DEC -103 ++DEC99 DEC +99 +TREDESCL DEC -.08 +180DEGS DEC +180 +1/2DEG DEC +.00278 +PROJMAX DEC .42262 B-3 # SIN(25')/8 TO COMPARE WITH PROJ +PROJMIN DEC .25882 B-3 # SIN(15')/8 TO COMPARE WITH PROJ +V06N63 VN 0663 # P63 +V06N64 VN 0664 # P64 +V06N60 VN 0660 # P65, P66, P67 + + BANK 22 + SETLOC LANDCNST + BANK + COUNT* $$/F2DPS + +HIGHESTF 2DEC 4.34546769 B-12 +GSCALE 2DEC 100 B-11 +3/8DP 2DEC .375 +3/4DP 2DEC .750 +DEPRCRIT 2DEC -.02 B-1 + +# Page 828 +# ************************************************************************** +# **************************************************************************