Pre-launch Review
RCS CSM DIGITAL AUTOPILOT
Scanned pages: 1002-1024
# Copyright: Public domain.# Filename: RCS-CSM_DIGITAL_AUTOPILOT.agc# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.# It is part of the source code for the Command Module's (CM)# Apollo Guidance Computer (AGC), for Apollo 11.# Assembler: yaYUL# Contact: Ron Burkey <info@sandroid.org>.# Website: www.ibiblio.org/apollo.# Pages: 1002-1024# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the# same name, using Comanche055 page images.## This source code has been transcribed or otherwise adapted from digitized# images of a hardcopy from the MIT Museum. The digitization was performed# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many# thanks to both. The images (with suitable reduction in storage size and# consequent reduction in image quality as well) are available online at# www.ibiblio.org/apollo. If for some reason you find that the images are# illegible, contact me at info@sandroid.org about getting access to the# (much) higher-quality images which Paul actually created.## Notations on the hardcopy document read, in part:## Assemble revision 055 of AGC program Comanche by NASA# 2021113-051. 10:28 APR. 1, 1969## This AGC program shall also be referred to as# Colossus 2A
# Page 1002# T5 INTERRUPT PROGRAM FOR THE RCS-CSM AUTOPILOT# START OF T5 INTERRUPT PROGRAM
BANK 20 SETLOC DAPS3 BANK
COUNT 21/DAPRC
EBANK= KMPACREDORCS LXCH BANKRUPT # RESTART OF AUTOPILOT COMES HERE CA T5PHASE # ON A T5 RUPT. EXTEND BZMF +2 # IF T5PHASE +0, -0, OR -, RESET TO - TCF +3 # IF T5PHASE +, LEAVE IT +. DO A FRESHDAP CS ONE TS T5PHASE EXTEND DCA RCSLOC DXCH T5LOC # HOOK UP T5RUPT TO AUTOPILOT TCF RCSATT +1 EBANK= KMPACRCSLOC 2CADR RCSATT
RCSATT LXCH BANKRUPT # SAVE BB EXTEND # SAVE Q QXCH QRUPT CAF BIT15 # BIT15 CHAN31 = 0 IF IMU POWER IS ON AND EXTEND # S/C CONT SW IS IN CMC (I.E. IF G/C AUTO RAND CHAN31 # PILOT IS FULLY ENABLED) EXTEND BZF SETT5 # IF G/C AUTOPILOT IS FULLY ENABLED, # GO TO SETT5
CS RCSFLAGS # IF G/C AUTOPILOT IS NOT FULLY ENABLED, MASK BIT14 ADS RCSFLAGS # SET NORATE FLAG, CAF POSMAX TS HOLDFLAG # SET HOLDFLAG +, CAF ZERO # ZERO ERRORX, ERRORY, AND ERRORZ, TS ERRORX TS ERRORY TS ERRORZ CAF BIT14 EXTEND RAND CHAN31 # AND CHECK FREE FUNCTION (BIT14 CHAN31). EXTEND# Page 1003 BZF SETT5 # IF IN FREE MODE, GO TO SETT5.
TS T5PHASE # IF NOT IN FREE MODE, CAF OCT37766 # SCHEDULE REINITIALIZATION (FRESHDAP) TS TIME5 # IN 100 MS VIA T5RUPT
TCR ZEROJET # ZERO JET CHANNELS IN 14 MS VIA ZEROJET
TCF KMATRIXDELTATT OCT 37770 # 80MS (TIME5)DELTATT2 OCT 37776 # 20MS (TIME5)ONESEK DEC 16284 # 1 SEC(TIME5)CHAN5 EQUALS 5CHAN6 EQUALS 6PRIO34A = PRIO34# CHECK PHASE OF T5 PROGRAM
# BECAUSE OF THE LENGTH OF THE T5 PROGRAM, IT HAS BEEN DIVIDED INTO# THREE PARTS, T5PHASE1, T5PHASE2, AND THE JET SELECTION LOGIC,# TO ALLOW FOR THE EXECUTION OF OTHER# INTERRUPTS. T5PHASE IS ALSO USED IN THE INITIALIZATION OF THE AUTOPILOT# VARIABLES AT TURN ON.# THE CODING OF T5PHASE IS...
# + = INITIALIZE T5 RCS-CSM AUTOPILOT# T5PHASE = +0 = PHASE2 OF THE T5 PROGRAM# - = RESTART DAP# -0 = PHASE1 OF THE T5 PROGRAM
SETT5 CCS T5PHASE TCF FRESHDAP # TURN ON AUTOPILOT TCF T5PHASE2 # BRANCH TO PHASE2 OF PROGRAM TCF REDAP # RESTART AUTOPILOT
TS T5PHASE # PHASE 1 RESET FOR PHASE 2 CA TIME5 TS T5TIME # USED IN COMPENSATING FOR DELAYS IN T5 CAF DELTATT2 # RESET FOR T5RUPT IN 20MS FOR PHASE2 TS TIME5 # OF PROGRAM
# Page 1004# IMU STATUS CHECK
CS IMODES33 # CHECK IMU STATUS MASK BIT6 # BIT6 = 0 IMU OK CCS A # BIT6 = 1 NO IMU TCF RATEFILTFREECHK CS RCSFLAGS # BIT14 INDICATES THAT RATES HAVE NOT BEEN MASK BIT14 # INITIALIZED ADS RCSFLAGS CAF BIT14 # NO ATTITUDE REFERENCE TS HOLDFLAG # STOP ANY AUTOMATIC STEERING AND PREPARE # TO PICK UP CDU ANGLES UPON RESUMPTION OF # ATTITUDE HOLD EXTEND RAND CHAN31 # CHECK FOR FREE MODE EXTEND BZF KRESUME1 # IN FREE MODE PROVIDE FREE CONTROL ONLY TCF REINIT # .....TILT...............................BITS4,5 OCT 30
RATEFILT CA RCSFLAGS # SEE IF RATEFILTER HAS BEEN INITIALIZED MASK BIT14 EXTEND # IF SO, PROCEED WITH RATE DERIVATION BZF +2 TCF KMATRIX # IF NOT, SKIP RATE DERIVATION
# RATE FILTER TIMING = 7.72 MS
# RATE FILTER EQUATIONS# DRHO = DELRHO - (.1)ADOT + (1 = GAIN1)DRHO# -1# ADOT = ADOT + GAIN2 DRHO + KMJ DFT# -1# - * - -# WHERE DELRHO = AMGB (CDU - CDU )# -1
CAF TWODRHOLOOP TS SPNDX DOUBLE TS DPNDX INDEX DPNDX CS DRHO # DRHO SCALED 180 DEGS EXTEND INDEX ATTKALMN # PICK UP DESIRED FILTER GAIN MP GAIN1 INDEX DPNDX DAS DRHO # (1 -.064)DRHO EXTEND# Page 1005 INDEX DPNDX DCS ADOT DXCH KMPAC # -(.1)ADOT CA QUARTER TC SMALLMP DXCH KMPAC INDEX DPNDX DAS DRHO CCS SPNDX TCF DRHOLOOP
CA CDUX # MEASURED BODY RATES-- XCH RHO EXTEND MSU RHO # - * - - COM # DELRHO = AMGB (CDU - CDU ) # -1 ZL DXCH DELTEMPX CA CDUY XCH RHO1 EXTEND MSU RHO1 COM TS T5TEMP # (CDUY - RHO1) SCALED 90 DEGS EXTEND MP AMGB1 DAS DELTEMPX # DELTEMPX = (CDUX-RHO) + AMGB1(CDUY-RHO1) # MUST BE DOUBLE PRECISION OR WILL LOSE # PULSES CA AMGB4 EXTEND MP T5TEMP DXCH DELTEMPY CA AMGB7 EXTEND MP T5TEMP DXCH DELTEMPZ CA CDUZ XCH RHO2 EXTEND MSU RHO2 COM TS T5TEMP # (CDUZ - RHO2) SCALED 90 DEGS EXTEND MP AMGB5 DAS DELTEMPY # DELTEMPY =AMGB4(CDUY-RHO1) # + AMGB5(CDUZ-RHO2) CA AMGB8 EXTEND
# Page 1006 MP T5TEMP DAS DELTEMPZ # DELTEMPZ = AMBG7(CDUY-RHO1) # + AMGB8(CDUZ-RHO2) CAF TWOADOTLOOP TS SPNDX DOUBLE TS DPNDX EXTEND INDEX DPNDX DCA DELTEMPX INDEX DPNDX DAS DRHO EXTEND INDEX DPNDX DCA DELTEMPX INDEX DPNDX DAS MERRORX INDEX DPNDX CA DRHO DOUBLE # N.B. DOUBLE # N.B. EXTEND INDEX ATTKALMN # PICK UP DESIRED FILTER GAINS MP GAIN2 INDEX DPNDX # ADOT + (.16)(.1)DRHO DAS ADOT # -1 INDEX SPNDX # S/C TORQUE TO INERTIA RATIO CA KMJ # SCALED (450)(1600)/(57.3)(16384)=1/1.3 EXTEND INDEX SPNDX MP DFT INDEX DPNDX DAS ADOT # KMJ(DFT) CCS SPNDX TCF ADOTLOOP # END CALCULATION OF VEHICLE RATESKMATRIX CA ATTSEC MASK LOW4 CCS A TCF TENTHSEK CAF PRIO34 # CALL FOR 1 SEC UPDATE OF TRANSFORMATION TC NOVAC # MATRIX FROM GIMBAL AXES TO BODY AXES EBANK= KMPAC 2CADR AMBGUPDT
CAF NINE
TENTHSEK TS ATTSEC
# Page 1007# WHEN AUTOMATIC MANEUVERS ARE BEING PERFORMED, THE FOLLOWING ANGLE ADDITION MUST BE MADE TO PROVIDE A SMOOTH# SEQUENCE OF ANGULAR COMMANDS TO THE AUTOPILOT--
# CDUXD = CDUXD + DELCDUX (DOUBLE PRECISION)# CDUYD = CDUYD + DELCDUY (DOUBLE PRECISION)# CDUZD = CDUZD + DELCDUZ (DOUBLE PRECISION)
# THE STEERING PROGRAMS-# 1) ATTITUDE MANEUVER ROUTINE# 2) LEM TRACKING
# SHOULD GENERATE THE DESIRED ANGLES (CDUXD, CDUYD, CDUZD) AS WELL AS THE INCREMENTAL ANGLES (DELCDUX, DELCDUY,# DELCDUZ) SO THAT THE GIMBAL ANGLE COMMANDS CAN BE INTERPOLATED BETWEEN UPDATES.
# HOLDFLAG CODING-
# + = GRAB PRESENT CDU ANGLES AND STORE IN THETADX, THETADY, THETADZ# AND PERFORM ATTITUDE HOLD ABOUT THESE ANGLES# ALSO IGNORE AUTOMATIC STEERING# SET = + BY# 1) INITIALIZATION PHASE OF AUTOPILOT# 2) OCCURANCE OF RHC COMMANDS# 3) FREE MODE# 4) SWITCH OVER TO ATTITUDE HOLD FROM AUTO# WHILE DOING AUTOMATIC STEERING (IN THIS CASE# HOLDFLAG IS NOT ACTUALLY SET TO +, BUT THE LOGIC# FUNCTIONS AS IF IT WERE.)# 5) S/C CONTROL SWITCH IS SCS# 6) IMU POWER OFF# +0 = IN ATTITUDE HOLD ABOUT A PREVIOUSLY ESTABLISHED REFERENCE# - = PERFORMING AUTOMATIC MANEUVER# -0 = NOT USED AT PRESENT
# NOTE THAT THIS FLAG MUST BE SET = - BY THE STEERING PROGRAM IF IT IS TO COMMAND THE AUTOPILOT.# SINCE ASTRONAUT ACTION MAY CHANGE THE HOLDFLAG SETTING, IT SHOULD BE MONITORED BY THE STEERING PROGRAM TO# DETERMINE IF THE AUTOMATIC SEQUENCE HAS BEEN INTERRUPTED AND IF SO, TAKE THE APPROPRIATE ACTION.
CS HOLDFLAG EXTEND BZMF DACNDLS # IF HOLDFLAG +0,-0,+, BYPASS AUTOMATIC # COMMANDSDCDUINCR CAF TWODELOOP TS SPNDX DOUBLE TS DPNDX EXTEND INDEX A DCA CDUXD# Page 1008 DXCH KMPAC EXTEND INDEX DPNDX DCA DELCDUX TC DPADD EXTEND DCA KMPAC INDEX SPNDX TS THETADX INDEX DPNDX DXCH CDUXD CCS SPNDX TCF DELOOP
# Page 1009# RCS-CSM AUTOPILOT ATTITUDE ERROR DISPLAY
# THREE TYPES OF ATTITUDE ERRORS MAY BE DISPLAYED ON THE FDAI-
# MODE 1) AUTOPILOT FOLLOWING ERRORS SELECTED BY V61E# GENERATED INTERNALLY BY THE AUTOPILOT
# MODE 2) TOTAL ATTITUDE ERRORS SELECTED BY V62E# WITH RESPECT TO THE CONTENTS OF N22
# MODE 3) TOTAL ASTRONAUT ATTITUDE ERRORS SELECTED BY V63E# WITH RESPECT TO THE CONTENTS OF N17
# MODE 1 IS PROVIDED AS A MONITOR OF THE RCS DAP AND ITS ABILITY TO TRACK AUTOMATIC STEERING COMMANDS. IN THIS# MODE THE ATTITUDE ERRORS WILL BE ZEROED WHEN THE CMC MODE SWITCH IS IN FREE
# MODE 2 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED# IN N22. THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES# AS A FLY-TO INDICATOR.
# MODE 3 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED# IN N17. THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES# AS A FLY-TO INDICATOR.
# V60 IS PROVIDED TO LOAD N17 WITH A SNAPSHOT OF THE CURRENT CDU ANGLES, THUS SYNCHRONIZING THE MODE 3 DISPLAY# WITH THE CURRENT S/C ATTITUDE. THIS VERB MAY BE USED AT ANY TIME.
# THESE DISPLAYS WILL BE AVAILABLE IN ANY MODE (AUTO, HOLD, FREE, G+N, OR SCS) ONCE THE RCS DAP HAS BEEN# INITIATED VIA V46E. MODE 1, HOWEVER, WILL BE MEANINGFUL ONLY IN G+N AUTO OR HOLD. THE CREW MAY PRESET (VIA# V25N17) AN ATTITUDE REFERENCE (DESIRED GIMBAL ANGLES) INTO N17 AT ANY TIME.
DACNDLS CS RCSFLAGS # ALTERNATE BETWEEN FDAIDSP1 AND FDAIDSP2 MASK BIT4 EXTEND BZF FDAIDSP2
FDAIDSP1 ADS RCSFLAGS TC NEEDLERKRESUME1 TCF RESUME # END PHASE 1
# Page 1010# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE
# PROGRAM DESCRIPTION: D. KEENE 5/24/67
# THIS SUBROUTINE IS USED TO DISPLAY ATTITUDE ERRORS ON THE FDAI VIA THE DIGITAL TO ANALOG CONVERTERS (DACS)# IN THE CDUS. CARE IS TAKEN TO METER OUT THE APPROPRIATE NUMBER OF PULSES TO THE IMU ERROR COUNTERS AND PREVENT# OVERFLOW, TO CONTROL THE RELAY SEQUENCING, AND TO AVOID INTERFERENCE WITH THE COARSE ALIGN LOOP WHICH ALSO USES# THE DACS.
# CALLING SEQUENCE:
# DURING THE INITIALIZATION SECTION OF THE USER'S PROGRAM, BIT3 OF RCSFLAGS SHOULD BE SET TO INITIATE THE# TURN-ON SEQUENCE WITHIN THE NEEDLES PROGRAM:
# CS RCSFLAGS # IN EBANK6# MASK BIT3# ADS RCSFLAGS
# THEREAFTER, THE ATTITUDE ERRORS GENERATED BY THE USER SHOULD BE TRANSFERED TO THE FOLLOWING LOCATIONS IN EBANK6:
# AK SCALED 180 DEGREES NOTE: THESE LOCATIONS ARE SUBJECT# AK1 SCALED 180 DEGREES TO CHANGE# AK2 SCALED 180 DEGREES
# FULL SCALED DEFLECTION CORRESPONDS TO 16 7/8 DEGREES OF ATTITUDE ERROR# (= 384 BITS IN IMU ERROR COUNTER)
# A CALL TO NEEDLER WILL THEN UPDATE THE DISPLAY:
# INHINT# TC IBNKCALL # NOTE: EBANK SHOULD BE SET TO E6# CADR NEEDLER# RELINT
# THIS PROCESS SHOULD BE REPEATED EACH TIME THE ERRORS ARE UPDATED. AT LEAST 3 PASSES THRU THE PROGRAM ARE# REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.# NOTE: EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50MS TO ASSURE PROPER RELAY SEQUENCING.
# ERASABLE USED:# AK CDUXCMD# AK1 CDUYCMD# AK2 CDUZCMD# EDRIVEX A,L,Q# EDRIVEY T5TEMP# EDRIVEZ SPNDX
# SWITCHES: RCSFLAGS BITS 3,2
# I/O CHANNELS: CHAN12 BIT 4 (COARSE ALIGN - READ ONLY)# Page 1011# CHAN12 BIT 6 (IMU ERROR COUNTER ENABLE)# CHAN14 BIT 13,14,15 (DAC ACTIVITY)
# SIGN CONVENTION< AK = THETAC - THETA# WHERE THETAC = COMMAND ANGLE# THETA = PRESENT ANGLE
NEEDLER CAF BIT4 # CHECK FOR COARSE ALIGN ENABLE EXTEND # IF IN COARSE ALIGN DO NOT USE IMU RAND CHAN12 # ERROR COUNTERS. DONT USE NEEDLES EXTEND BZF NEEDLER1 CS RCSFLAGS # SET BIT3 FOR INITIALIZATION PASS MASK BIT3 ADS RCSFLAGS TC Q
NEEDLER1 CA RCSFLAGS MASK SIX EXTEND BZF NEEDLES3 MASK BIT3 EXTEND BZF NEEDLER2 # BIT3 = 0, BIT2 = 1
CS BIT6 # FIRST PASS BIT3 = 1 EXTEND # DISABLE IMU ERROR COUNTER TO ZERO DACS WAND CHAN12 # MUST WAIT AT LEAST 60 MS BEFORENEEDLE11 CS ZERO # ENABLING COUNTERS. TS AK # ZERO THE INPUTS ON FIRST PASS TS AK1 TS AK2 TS EDRIVEX # ZERO THE DISPLAY REGISTERS TS EDRIVEY TS EDRIVEZ TS CDUXCMD # ZERO THE OUT COUNTERS TS CDUYCMD TS CDUZCMD CS SIX # RESET RCSFLAGS FOR PASS2 MASK RCSFLAGS AD BIT2 TS RCSFLAGS TC Q # END PASS1
NEEDLER2 CAF BIT6 # ENABLE IMU ERROR COUNTERS EXTEND WOR CHAN12 CS SIX # RESET RCSFLAGS TO DISPLAY ATTITUDE# Page 1012 MASK RCSFLAGS # ERRORS WAIT AT LEAST 4 MS FOR TS RCSFLAGS # RELAY CLOSURE TC Q
NEEDLES3 CAF BIT6 # CHECK TO SEE IF IMU ERROR COUNTER EXTEND # IS ENABLED RAND CHAN12 EXTEND # IF NOT RECYCLE NEEDLES BZF NEEDLER +5
NEEDLES CAF TWODACLOOP TS SPNDX CS QUARTER EXTEND INDEX SPNDX MP AK TS L CCS A CA DACLIMIT TCF +2 CS DACLIMIT AD L TS T5TEMP # OVFLO CHK TCF +4 INDEX A # ON OVERFLOW LIMIT OUTPUT TO +-384 CAF DACLIMIT TS L INDEX SPNDX CS EDRIVEX # CURRENT VALUE OF DAC AD L INDEX SPNDX ADS CDUXCMD INDEX SPNDX LXCH EDRIVEX CCS SPNDX TCF DACLOOP CAF 13,14,15 EXTEND WOR CHAN14 # SET DAC ACTIVITY BITS TC Q
REINIT CAF DELAY200 # ........TILT LOGIC TS TIME5 # REINITIALIZE DAP IN 200MS TS T5PHASE TCF RESUMEDELAY200 DEC 16364 # 200MS
DEC -384
# Page 1013DACLIMIT DEC 16000 DEC 384
# Page 1014# INITIALIZATION PROGRAM FOR RCS-CSM AUTOPILOT
# THE FOLLOWING QUANTITIES WILL BE ZEROED AND SHOULD APPEAR IN CONSECUTIVE LOCATIONS IN MEMORY AFTER WBODY
# WBODY (+1) DFT TAU2# WBODY1 (+1) DFT1 BIAS# WBODY2 (+1) DFT2 BIAS1# ADOT (+1) DRHO (+1) BIAS2# ADOT1 (+1) DRHO1 (+1) ERRORX# ADOT2 (+1) DRHO2 (+1) ERRORY# MERRORX (+1) ATTSEC ERRORZ# MERRORY (+1) TAU# MERRORZ (+1) TAU1FRESHDAP CAF ONE # RESET HOLDFLAG TO STOP AUTOMATIC TS HOLDFLAG # STEERING AND PREPARE TO PICK UP AN # ATTITUDE HOLD REFERENCE
REDAP TC IBNKCALL # DECODE DAPDATR1, DAPDATR2 FOR DEADBANDS CADR S41.2 # RATES, QUADFAILS, QUAD MANAGEMENT
TC IBNKCALL # DECODE IXX, IAVG, AND CONVERT CADR S40.14 # TO AUTOPILOT GAINS
CAF NO.T5VAR # NO. LOCATIONS TO BE ZEROED MINUS ONEZEROT5 TS SPNDX # ZERO ALL NECESSARY ERASABLE REGISTERS CAF ZERO INDEX SPNDX TS WBODY CCS SPNDX TCF ZEROT5 TCR ZEROJET
CS ZERO TS CHANTEMP # INITIALIZE MINIMUM IMPULSE CONTROL
TS CH31TEMP # INITIALIZE RHC POSITION MEMORY FOR # MANUAL RATE MODES
CAF =.24 TS SLOPE # INITIALIZE SWITCHING LOGIC SLOPE
CAF FOUR TS T5TIME # PHASE 0 RESETS FOR PHASE 2 INTERRUPT IN # 60 MS. PHASE 2 RESETS FOR PHASE 1 RUPT # IN (80MS - T5TIME(40MS)). THEREFORE # PHASE 1 (RATEFILTER) BEGINS CYCLING 100 # MS FROM NOW AND EVERY 100MS THEREAFTER.
CAF ELEVEN TS ATTKALMN # RESET TO PICK UP KALMAN FILTER GAINS # TO INITIALIZE THE S/C ANGULAR RATES# Page 1015 CA CDUX TS RHO CA CDUY TS RHO1 CA CDUZ TS RHO2 CAF ZERO # RESET AUTOPILOT TO BEGIN EXECUTING TS T5PHASE # PHASE2 OF PROGRAM
CS IMODES33 # CHECK IMU STATUS MASK BIT6 # IF BIT6 = 0 IMU IN FINE ALIGN CCS A # IF BIT6 = 1 IMU NOT READY TCF IMUAOK TS ATTKALMN # CANNOT USE IMU CAF RCSINITB # PROVIDE FREE CONTROL ONLY TCF RCSSWIT # DONT START UP RATE FILTER # SIGNAL NO RATE FILTER
IMUAOK CAF PRIO34 # START MATRIX INITIALIZATION TC NOVAC # BYPASS IF IMU NOT IN FINE ALIGN EBANK= KMPAC 2CADR AMBGUPDT
CAF RCSINIT # CLEAR BIT14 -ASSUME WE HAVE A GOOD IMURCSSWIT TS RCSFLAGS # CLEAR BIT1 -INITIALIZE T6 PROGRAM # SET BIT3 -INITIALIZE NEEDLES # CLEAR BIT4 -RESET FOR FDAIDSP1 CAF T5WAIT60 # NEXT T5RUPT 60 MS FROM NOW TO ALLOW IMU # ERROR COUNTER TO ZERO. # (MINIMUM DELAY = 15 MS) TS TIME5 # SINCE ATTKALMN IS +11, PROGRAM WILL THEN TC RESUME # PICK UP THE KALMAN FILTER GAINS. RATE # FILTER WILL BEGIN OPERATING ZOOMS FROM # NOW
# CONSTANTS USED IN INITIALIZATION PROGRAM
NO.T5VAR DEC 36=.24 DEC .24 # = SLOPE OF 0.6/SECRCSINIT OCT 00004RCSINITB OCT 20004T5WAIT60 DEC 16378 # = 6 CS EBANK= KMPACT6ADDR 2CADR T6START
ZEROJET CAF ELEVEN # ZERO BLAST2, BLAST1, BLAST, YWORD2, TS SPNDX # YWORD1, PWORD2, PWORD1, RWORD2, CAF ZERO # AND RWORD1.
# Page 1016 INDEX SPNDX TS RWORD1 CCS SPNDX TCF ZEROJET +1
CAF FOUR TS BLAST1 +1 CAF ELEVEN TS BLAST2 +1
CS BIT1 MASK RCSFLAGS TS RCSFLAGS # RESET BIT1 OF RCSFLAGS TO 0
EXTEND DCA T6ADDR DXCH T6LOC CAF =+14MS # ENABLE T6RUPT TO SHUT OFF JETS IN 14 MS. TS TIME6 CAF BIT15 EXTEND WOR CHAN13
TC Q
T5PHASE2 CCS ATTKALMN # IF (+) INITIALIZE RATE ESTIMATE TCF KALUPDT
TCF +2 # ONLY IF ATTKALMN POSITIVE TCF +1 CA DELTATT2 # RESET FOR PHASE3 IN 20 MS XCH TIME5 # (JET SELECTION LOGIC) ADS T5TIME # TO COMPENSATE FOR DELAYS IN T5RUPT
CA RCSFLAGS # IF A HIGH RATE AUTO MANEUVER IS IN MASK BIT15 # PROGRESS (BIT 15 OF RCSFLAGS SET), SET EXTEND # ATTKALMN TO -1 BZF NOHIAUTO # OTHERWISE SET ATTKALMN TO 0. CS ONENOHIAUTO TS ATTKALMN
# Page 1017# MANUAL ROTATION COMMANDS
CS OCT01760 # RESET FORCED FIRING BITS (BITS 10 TO 5 MASK RCSFLAGS # OF RCSFLAGS) TO ZERO TS RCSFLAGS
EXTEND READ CHAN31 TS L CA CH31TEMP EXTEND RXOR LCHAN MASK MANROT # = OCT00077 EXTEND BZMF NOCHANGE
LXCH A TS CH31TEMP # SAVE CONTENTS OF CHANNEL 31 IN CH31TEMP
CA L EXTEND MP BIT5 # PUT BITS 6-1 OF A IN BITS 10-5 OF L CA L ADS RCSFLAGS # SET FORCED FIRING BITS FOR AXES WITH # CHANGES IN COMMAND. BITS 10,9 FOR # ROLL, BITS 8,7 FOR YAW, BITS 6,5 FOR # PITCH
CS RCSFLAGS # SET RATE DAMPING FLAGS (BITS 13,12,AND MASK OCT16000 # 11 OF RCSFLAGS) ADS RCSFLAGS
NOCHANGE CS CH31TEMP MASK MANROT EXTEND BZMF AHFNOROT # IF NO MANUAL COMMANDS, GO TO AHFNOROT
TS HOLDFLAG # SET HOLDFLAG +
TC STICKCHK # WHEN THE RHC IS OUT OF DETENT, PMANNDX, # YMANNDX, AND RMANNDX ARE ALL SET, BY # MEANS OF STICKCHK, TO 0, 1, OR 2 FOR NO, # +, OR - ROTATION RESPECTIVELY AS # COMMANDED BY THE RHC.
# HOWEVER, IT IS WELL TO NOTE THAT AFTER # THE RHC IS RETURNED TO DETENT, THE # PROGRAM BRANCHES TO AHFNOROT AND AVOIDS # STICKCHK SO PMANNDX, YMANNDX, AND # RMANNDX ARE NOT RESET TO ZERO BUT RATHER # LEFT SET TO THEIR LAST OUT OF DETENT# Page 1018 # VALUES.
CS FLAGWRD1 # SET STIKFLAG TO INFORM STEERING MASK BIT14 # PROGRAMS (P20) THAT ASTRONAUT HAS ADS FLAGWRD1 # ASSUMED ROTATIONAL CONTROL OF SPACECRAFT
CAF BIT14 EXTEND RAND CHAN31 EXTEND BZMF FREEFUNC
CA RCSFLAGS # EXAMINE RCSFLAGS TO SEE IF RATE FILTER MASK BIT14 # HAS BEEN INITIALIZED CCS A # IF SO, PROCEED WITH MANUAL RATE COMMANDS TCF REINIT # .....TILT, RECYCLE TO INITIALIZE FILTER
CS FIVE # IF MANUAL MANEUVER IS AT HIGH RTE, SET AD RATEINDX # ATTKALMN TO -1. EXTEND # OTHERWISE, LEAVE ATTKALMN ALONE. BZMF +3 CS ONE TS ATTKALMN
CAF TWO # AUTO-HOLD MANUAL ROTATIONSETWBODY TS SPNDX DOUBLE TS DPNDX INDEX SPNDX # RMANNDX = 0 NO ROTATION CA RMANNDX # = 1 + ROTATION EXTEND # = 2 - ROTATION BZF NORATE # IF NO ROTATION COMMAND ON THIS AXIS, # GO TO NORATE.
AD RATEINDX # RATEINDX = 0 0.05 DEG/SEC TS Q # = 2 0.2 DEG/SEC INDEX Q # = 4 0.5 DEG/SEC CA MANTABLE -1 # = 6 2.0 DEG/SEC EXTEND MP BIT9 # MULTIPLY MANTABLE BY 2 TO THE -6 INDEX DPNDX # TO GET COMMANDED RATE. DXCH WBODY # SET WBODY TO COMMANDED RATE.
CA RCSFLAGS MASK OCT16000 # IS RATE DAMPING COMPLETED (BITS 13,12 AND EXTEND # 11 OF RCSFLAGS ALL ZERO.) IF SO, GO TO BZF MERUPDAT # MERUPDAT TO UPDATE CUMULATIVE ATTITUDE # ERROR.
# Page 1019ZEROER CA ZERO # ZEROER ZEROS MERRORS ZL INDEX DPNDX DXCH MERRORX TCF SPNDXCHK
NORATE ZL INDEX DPNDX DXCH WBODY # ZERO WBODY FOR THIS AXIS CA RCSFLAGS MASK OCT16000 EXTEND # IS RATE DAMPING COMPLETED BZF SPNDXCHK # YES, KEEP CURRENT MERRORX GO TO SPNDXCHK TCF ZEROER # NO,GO TO ZEROER
MERUPDAT INDEX Q # MERRORX=MERRORX+MEASURED CHANGE IN ANGLE CS MANTABLE -1 # -COMMANDED CHANGE IN ANGLE EXTEND # THE ADDITION OF MEASURED CHANGE IN ANGLE MP BIT7 # HAS ALREADY BEEN DONE IN THE RATE FILTER INDEX DPNDX # COMMANDED CHANGE IN ANGLE = WBODY TIMES DAS MERRORX # .1SEC = MANTABLE ENTRY TIMES 2 TO THE -8
SPNDXCHK INDEX DPNDX CA MERRORX INDEX SPNDX TS ERRORX # ERRORX = HIGH ORDER WORD OF MERRORX CCS SPNDX TCF SETWBODY TCF JETS
OCT01760 OCT 01760 # FORCED FIRING BITS MASK
OCT01400 OCT 01400 # ROLL FORCED FIRING MASK ORDER OFOCT00060 OCT 00060 # PITCH FORCED FIRING MASK DEFINITIONOCT00300 OCT 00300 # YAW FORCED FIRING MASK MUST BE # PRESERVED # FOR INDEXINGMANROT OCT 77OCT16000 OCT 16000 # RATE DAMPING FLAGS MASKMANTABLE DEC .0071111 DEC -.0071111 DEC .028444 DEC -0.028444 DEC .071111 DEC -.071111 DEC .284444 DEC -.284444=+14MS DEC 23FREEFUNC INDEX RMANNDX # ACCELERATION# Page 1020 CA FREETAU # COMMANDS TS TAU INDEX PMANNDX CA FREETAU # FREETAU 0 SEC TS TAU1 # +1 +0.10 SEC INDEX YMANNDX # +2 -0.10 SEC CA FREETAU # (+3) 0 SEC TS TAU2 TCF T6PROGM
FREETAU DEC 0 DEC 480 DEC -480 DEC 0
T6PROGM CAF ZERO # FOR MANUAL ROTATIONS TS ERRORX TS ERRORY TS ERRORZ TCF T6PROG
# Page 1021 DEC .2112 # FILTER GAIN FOR TRANSLATION, LEM ON DEC .8400 # FILTER GAIN FOR TRANSLATION 2(ZETA)WN DT DEC .2112 # FILTER GAIN FOR 2 DEGREES/SEC MANEUVERSGAIN1 DEC .0640 # KALMAN FILTER GAINS FOR INITIALIZATION DEC .3180 # OF ATTITUDE RATES DEC .3452 DEC .3774 DEC .4161 DEC .4634 DEC .5223 DEC .5970 DEC .6933 DEC .8151 DEC .9342
DEC .0174 # FILTER GAIN FOR TRANSLATION, LEM ON DEC .3600 # FILTER GAIN FOR TRANSLATION (WN)(WN)DT DEC .0174 # FILTER GAIN FOR 2 DEGREES/SEC MANEUVERSGAIN2 DEC .0016 # SCALED 10 DEC .0454 DEC .0545 DEC .0666 DEC .0832 DEC .1069 DEC .1422 DEC .1985 DEC .2955 DEC .4817 DEC .8683STICKCHK TS T5TEMP MASK THREE # INDICES FOR MANUAL ROTATION TS PMANNDX CA T5TEMP EXTEND # MAN RATE 0 0 RATE (DP) MP QUARTER # +1 +RATE (DP) TS T5TEMP # +2 -RATE (DP) MASK THREE # (+3) 0 RATE (DP) TS YMANNDX CA T5TEMP EXTEND MP QUARTER TS RMANNDX TC Q
KALUPDT TS ATTKALMN # INITIALIZATION OF ATTITUDE RATES USING # KALMAN FILTER TAKES 1.1 SEC
CA DELTATT # =1SEC - 80MS AD T5TIME # + DELAYS# Page 1022 TS TIME5 TCF +3 CAF DELTATT2 # SAFETY PLAY TO ASSURE TS TIME5 # A T5RUPT
KRESUME2 CS ZERO # RESET FOR PHASE1 TS T5PHASE # RESUME INTERRUPTED PROGRAM TCF RESUME
FDAIDSP2 CS BIT4 # RESET FOR FDAIDSP1 MASK RCSFLAGS TS RCSFLAGS
CS FLAGWRD0 # ON - DISPLAY ONE OF THE TOTAL ATTITUDE MASK BIT9 # ERRORS EXTEND BZF FDAITOTL EXTEND DCS ERRORX # OFF -DISPLAY AUTOPILOT FOLLOWING ERROR DXCH AK CS ERRORZ TS AK2 TCF RESUME # END PHASE 1
FDAITOTL CA FLAGWRD9 MASK BIT6 EXTEND BZF WRTN17 # IS N22ORN17 (BIT6 OF FLAGWRD9) = 0 # IF SO, GO TO WRTN17WRTN22 EXTEND # OTHERWISE, CONTINUE ON TO WRTN22 AND DCA CTHETA # GET SET TO COMPUTE TOTAL ATTITUDE DXCH WTEMP # ERROR WRT N22 BY PICKING UP THE THREE CA CPHI # COMPONENTS OF N22
GETAKS EXTEND # COMPUTE TOTAL ATTITUDE ERROR FOR MSU CDUX # DISPLAY ON FDAI ERROR NEEDLES TS AK CA WTEMP EXTEND MSU CDUY TS T5TEMP EXTEND MP AMGB1 ADS AK CA T5TEMP EXTEND MP AMGB4# Page 1023 TS AK1 CA T5TEMP EXTEND MP AMGB7 TS AK2 CA WTEMP +1 EXTEND MSU CDUZ TS T5TEMP EXTEND MP AMGB5 ADS AK1 CA T5TEMP EXTEND MP AMGB8 ADS AK2 TCF RESUME # END PHASE1 OF RCS DAP
WRTN17 EXTEND # GET SET TO COMPUTE TOTAL ASTRONAUT DCA CPHIX +1 # ATTITUDE ERROR WRT N17 BY PICKING UP DXCH WTEMP # THE THREE COMPONENTS OF N17 CA CPHIX TCF GETAKS
# Page 1024 (empty page)