Pre-launch Review
DAPIDLER PROGRAM
Scanned pages: 1410-1420
# Copyright: Public domain.# Filename: DAPIDLER_PROGRAM.agc# 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: Ron Burkey <info@sandroid.org>.# Website: www.ibiblio.org/apollo.# Pages: 1410-1420# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting# from the Luminary131/ file of the same# name, using Luminary099 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 001 of AGC program LMY99 by NASA 2021112-061# 16:27 JULY 14, 1969
# Page 1410# THE DAPIDLER PROGRAM IS STARTED BY FRESH START AND RESTART. THE DAPIDLER PROGRAM IS DONE 10 TIMES# PER SECOND UNTIL THE ASTRONAUT DESIRES THE DAP TO WAKE UP, AND THE IMU AND CDUS ARE READY FOR USE BY THE DAP.# THE NECESSARY INITIALIZATION OF THE DAP IS DONE BY THE DAPIDLER PROGRAM. BANK 16 SETLOC DAPS1 BANK
EBANK= AOSQ
COUNT* $$/DAPID
CHEKBITS EXTEND READ CHAN31 # IF BOTH BIT13 AND BIT14 ARE ONE, THEN COM # THE MODE SELECT SWITCH IS IN THE OFF MASK BIT13-14 # POSITION, AND SO THE DAP SHOULD BE OFF, EXTEND # WITH NO ATTITUDE ERROR DISPLAY. BZF MOREIDLE
CS IMODES33 MASK BIT6 CCS A TCF JUMPDSP CS RCSFLAGS # IMU NOT USABLE. SET UP INITIALIZATION MASK BIT3 # FLAG FOR ATT ERROR DISPLAY ROUTINE. ADS RCSFLAGS TCF SHUTDOWN
CHEKMORE CAF BIT10 # BIT 10 OF 30 IS PGNCS CONTROL OF S/C EXTEND RAND CHAN30 # BITS IN 30 ARE INVERTED CCS A TCF MOREIDLE
RETURN
# Page 1411# DAPIDLER ENTRY.
DAPIDLER LXCH BANKRUPT # INTERRUPT LEAD INS (CONTINUED) EXTEND QXCH QRUPT
CA RCSFLAGS MASK BIT13 CCS A # CHECK IF 1/ACCJOB HAS BEEN SET UP SINCE TCF CHECKUP # THE LAST FRESH START OR RESTART. CA BIT13 ADS RCSFLAGS # BIT 13 IS 1. CAF PRIO27 TC NOVAC # SET UP JOB TO DO A LITTLE INITIALIZATION EBANK= AOSQ # AND EXECUTE 1/ACCS. 2CADR 1/ACCSET # (WILL BRANCH TO MOREIDLE ON ACCSOKAY)
CHECKUP TC CHEKBITS # CHECK TO SEE IF LM DAP IS TO GO ON AND # DO ERROR DISPLAY.
CAE DAPBOOLS # IF 1/ACCS HAS NOT BEEN COMPLETED, IDLE. MASK ACCSOKAY # NOTE: ONLY FRESH START AND RESTART EXTEND # KNOCK THIS BIT DOWN. BZF MOREIDLE
STARTDAP TC IBNKCALL # ZERO ATTITUDE ERROR AND DESIRED RATES. FCADR ZATTEROR CAF ZERO # ********** INITIALIZE: ********** TS TJP TS TJU TS TJV TS OMEGAP # RATES IN BODY (PILOT) COORDINATES. TS OMEGAQ TS OMEGAR TS TRAPEDP TS TRAPEDQ TS TRAPEDR TS AOSQ # OFFSET ACCELERATION ESTIMATES. TS AOSQ +1 TS AOSR TS AOSR +1 TS ALPHAQ # COPIES OF OFFSET ESTIMATES FOR DOWNLIST. TS ALPHAR TS NEGUQ TS NEGUR TS AOSQTERM # QRAXIS RATE DERIVATION TERMS AND KALMAN TS AOSRTERM # FILTER INITIALIZATION TERMS. TS QACCDOT # DESCENT ACCELERATION DERIVATIVE EST. TS RACCDOT# Page 1412 TS ALLOWGTS # AOSTASK FLAG FOR QRAXIS RCS CONTROL USE. TS COTROLER # DO TRYGTS ON FIRST PASS (WILL GO TO RCS) TS INGTS # RECOGNIZE FIRST GTS PASS AS SUCH. TS QGIMTIMR # STOP GIMBAL DRIVES. (PROBABLY WOULD BE TS RGIMTIMR # GOOD ENOUGH JUST TO INACTIVATE TIMERS) TS OLDPMIN # MINIMUM IMPULSE MODE ERASABLES TS OLDQRMIN TS PJETCTR # INITIALIZE DOCKED JET INHIBITION TS UJETCTR # COUNTERS TS VJETCTRCALLGMBL EQUALS BIT5 # RCSFLAGS INITIALIZATION. CS MANFLAG MASK RCSFLAGS # NEGUQ(R) HAVE BEEN GENERATED. TS RCSFLAGS
# SET UP "OLD" MEASURED CDU ANGLES:
EXTEND DCA CDUX # OLDXFORP AND OLDYFORP DXCH OLDXFORP CA CDUZ TS OLDZFORQ CS RCSFLAGS MASK BIT12 ADS RCSFLAGS # BIT 12 SET TO 1. CA FOUR TS SKIPU TS SKIPV CA POSMAX TS TIME6 TS T6NEXT TS T6FURTHA CA ZERO TS T6NEXT +1 TS T6FURTHA +1 TS NXT6ADR TS NEXTP TS NEXTU TS NEXTV CS TEN TS DAPZRUPT # JASK NOT IN PROGRESS, INITIALIZE NEG. CA TWO TS NPTRAPS TS NQTRAPS TS NRTRAPS EXTEND DCA PAXADIDL DXCH T5ADRSETTIME5 CAF MS100 TS TIME5# Page 1413 TCF RESUME EBANK= AOSQIDLERADR 2CADR DAPIDLER
MOREIDLE TC IBNKCALL # CALCULATE Q,R-AXES ATTITUDE ERRORS. CADR QERRCALC
TC IBNKCALL CADR CALCPERR # CALCULATE P AXIS ATTITUDE ERRORS.
SHUTDOWN EXTEND DCA IDLERADR DXCH T5ADR
CAF ZERO # KILL ANY POSSIBLE JET REQUESTS TS NEXTP TS NEXTU TS NEXTV EXTEND # COMMAND JETS OFF. WRITE CHAN5 EXTEND WRITE CHAN6 CS BGIM23 # TURN TRIM GIMBAL OFF EXTEND WAND CHAN12 TCF SETTIME5 # RETURN IN 100 MSEC.
MANFLAG OCT 03021BGIM23 OCTAL 07400 EBANK= OMEGAPPAXADIDL 2CADR PAXIS
MS100 = OCT37766COSMG = ITEMP1JUMPDSP EXTEND # TRANSFER TO BANK 20 DCA DSPCADR # FOR ATTITUDE ERROR DISPLAYS DTCB
EBANK= AKDSPCADR 2CADR ALTDSPLY
# Page 1414 BANK 20 SETLOC DAPS3 BANK COUNT* $$/NEEDL
# PROGRAM: ALTDSPLY## MOD 0. 6 DEC 1967## AUTHOR: CRAIG WORK, DON KEENE, MIT IL## MOD 3 BY DON KEENE AUG 1, 1968 MOVED PROGRAM TO BANK 20## PROGRAM DESCRIPTION:## ALTDSPLY REVERSES THE DSPLYALT BIT OF RCSFLAGS EACH TIME IT IS CALLED, WHICH IS PRESUMABLY EVERY 100 MS.# IF THE REVERSED BIT IS ONE, NEEDLER IS CALLED TO DISPLAY ATTITUDE ERRORS. IF THE BIT IS ZERO, THE ATTITUDE ERR-# ORS ARE CALCULATED AS 1) DAP FOLLOWING ERRORS, IF NEEDLFLG = 0, AND 2) TOTAL ATTITUDE ERRORS FOR NEEDLFLG = 1.## WARNING: ALTDSPLY MAY ONLY BE CALLED WITH INTERRUPT INHIBITED.## WARNING: EBANK MUST BE SET TO 6 WHEN USING THIS ROUTINE.## INPUT: RCSFLAGS AND 1) IF NEEDLFLG=0, INPUT PERROR,QERROR,RERROR.# 2) IF NEEDLFLG=1, INPUT CPHI,CTHETA,CPSI,CDUX,CDUY,CDUZ,M11,M21,M32,M22,M32. (GPMATRIX)## OUTPUTS: RCSFLAGS WITH DSPLYALT REVERSED,AK,AK1,AK2,+ NEEDLER OUTPUTS.## ENTRY: TCF ALTDSPLY## EXIT: TCF CHEKMORE## ALARM OR ABORT EXITS: NONE## SUBPROGRAMS CALLED: NEEDLER, OVERSUB2## DEBRIS: A,L,AND NEEDLER DEBRIS.
ALTDSPLY CA RCSFLAGS # INVERT THE DISPLAY ALTERNATION BIT. TS L CA DSPLYALT EXTEND RXOR LCHAN TS RCSFLAGS
MASK DSPLYALT CCS A # IS ALTERNATION FLAG ZERO? TCF NEEDLER
CAE FLAGWRD0 # NEEDLFLG WILL INDICATE TOTAL OR DAP AT-# Page 1415 MASK NEEDLBIT # TITUDE ERROR DISPLAY REQUEST. CCS A TCF DSPLYTOT # TOTAL ERROR IS NEEDED IN AK,AK +1,AK +2
CS QERROR # YES. DISPLAY ATT ERRORS ON THE ,-BALL. TS AK +1 # ERROR COMPLEMENTS ARE INPUT TO NEEDLER. CS RERROR TS AK +2 CS PERROR XCH AK
TCF RETNMORE # DISPLAY THESE THE NEXT TIME THROUGH
# CALCULATE GIMBAL ANGLE TOTAL ERRORS, RESOLVE INTO PILOT AXES, STORE TOTAL ERRORS FOR NEEDLER. Q-AXIS FIRST.
DSPLYTOT EXTEND QXCH ITEMP1 # SAVE Q FOR CHEKBITS RETURN.
CA CTHETA # DESIRED ATTITUDE, Y-AXIS, 2'S COMP. EXTEND # SUBTRACT CURRENT ATTITUDE. MSU CDUY # DIFFERENCE SCALED AT PI, 1'S COMP. TS AK # SAVE FOR R-ERROR CALCULATION. EXTEND MP M21 # (CHTETA-CDUY)*M21 SCALED AT PI RADIANS. XCH AK +1 # STORE FIRST TERM OF Q ERROR. CA CPSI # DESIRED ATTITUDE,Z-AXIS, 2'S COMP. EXTEND # SUBTRACT CURRENT ATTITUDE. MSU CDUZ # DIFFERENCE SCALED AT PI, 1'S COMP. TS AK +2 # SAVE Z-AXIS TERM FOR R ERROR CALCULATION EXTEND MP M22 # (CPSI-CDUZ)*M22, SCALED AT PI RADIANS. AD AK +1 # Q ERROR COMPLETE , AT PI RAD. TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW TS AK +1
# R ERROR CALCULATION NEXT.
CA AK # Y-AXIS DIFFERENCE STORED BY Q-AXIS CALC. EXTEND MP M31 # (CTHETA-CDUY)*M31, SCALED AT PI RADIANS. XCH AK +2 # FIRST TERM OF R ERROR. # Z-AXIS DIFFERENCE, STORED BY A CALC. IS EXTEND # RECOVERED BY THE EXCHANGE. MP M32 # (CPSI-CDUZ)*M32, SCALED AT PI RADIANS. AD AK +2 # R ERROR COMPLETE , AT PI RAD. TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW. TS AK +2
# NOW CALCULATE P ERROR. (NOTE THAT M13 = 1, SCALED AT 1, SO THE MULTIPLICATION IS BY-PASSED.)# Page 1416 CA AK # Y-AXIS DIFFERENCE STORED BY Q AXIS CALC. EXTEND MP M11 # (CTHETA-CDUY)*M11 SCALED AT PI RADIANS. XCH AK # FIRST TERM OF P ERROR IN AK, AT PI RAD. CAE CPHI # DESIRED ATTITUDE, X-AXIS, 2'S COMP. EXTEND # SUBTRACT CURRENT X ATTITUDE. MSU CDUX # X-AXIS DIFFERENCE, 1'S COMP, AT PI RAD.
# M13 = 1, SO BYPASS THE MULTIPLICATION.# EXTEND# MP M13 (CPHI-CDUX)*M13 SCALED AT PI RADIANS.
AD AK # P ERROR COMPLETE , SCALED AT PI RAD TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW. TS AK
EXTEND QXCH ITEMP1 # RESTORE Q FOR CHEKBITS RETURN.
TCF RETNMORE # DISPLAY THESE THE NEXT TIME THROUGH
# Page 1417# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE## PROGRAM DESCRIPTION: D. KEENE 5/24/67## MOD 1 BY CRAIG WORK, 12 DEC 67## MOD 2 BY CRAIG WORK, 6 APRIL 68 CONVERTS ATTITUDE ERROR DISPLAY SCALING FROM 16 7/8 DEG. TO 42 3/16 DEGREES.## 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 TRANSFERRED 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 OF THE NEEDLES CORRESPONDS TO 5 1/16 DEGREES, WHILE 384 BITS IN THE IMU ERROR COUNTER# CORRESPONDS TO 42 3/16 DEGREES. (DAC MAXIMUM CAPACITY IS 384 BITS.) 46 BITS EFFECTIVELY PIN THE NEEDLES.## 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.## ERASABLES USED:# AK CDUXCMD# AK1 CDUYCMD# AK2 CDUZCMD# EDRIVEX A,L,Q# EDRIVEY T5TEMP# EDRIVEZ DINDX# Page 1418## SWITCHES: RCSFLAGS BITS 3,2## I/O CHANNELS: CHAN12 BIT 4 (COARSE ALIGN - READ ONLY)# 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 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 TCF RETNMORE
NEEDLER2 CAF BIT6 # ENABLE IMU ERROR COUNTERS EXTEND WOR CHAN12 CS SIX # RESET RCSFLAGS TO DISPLAY ATTITUDE MASK RCSFLAGS # ERRORS WAIT ATLEAST 4 MS FOR TS RCSFLAGS # RELAY CLOSURE TCF RETNMORE
NEEDLES3 CAF BIT6 # CHECK TO SEE IF IMU ERROR COUNTER EXTEND # IS ENABLED RAND CHAN12# Page 1419 CCS A # IF NOT, RE-INITIALIZE NEEDLER. TCF NEEDLES
CS RCSFLAGS # SET UP INITIALIZATION FLAG IN RCSFLAGS. MASK BIT3 ADS RCSFLAGS TCF RETNMORE
NEEDLES CAF TWODACLOOP TS DINDX CS ONETENTH # RESCALE INPUTS TO + OR - 1800 DEGREES. EXTEND INDEX DINDX 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 DINDX CS EDRIVEX # CURRENT VALUE OF DAC AD L INDEX DINDX ADS CDUXCMD INDEX DINDX LXCH EDRIVEX CCS DINDX TCF DACLOOP CAF 13,14,15 EXTEND WOR CHAN14 # SET DAC ACTIVITY BITS TCF RETNMORE
DEC -384DACLIMIT DEC 16000 DEC 384
ONETENTH OCT 03146 # DECIMAL +0.1, SCALED AT 1.DSPLYALT EQUALS BIT4 # 100 MS ALTERNATION BIT IN RCSFLAGS
OVERSUB2 TS 7 # RETURNS A UNCHANGED OR LIMITED TO TC Q # POSMAX OR NEGMAX IF A HAS OVERFLOW INDEX A# Page 1420 CS LIMITS # DUPLICATE CODING IN BANK 16 TC Q
RETNMORE EXTEND # RETURN TO CHEKMORE DCA MORECADR DTCB
EBANK= AOSQMORECADR 2CADR CHEKMORE