Source Code

These source-code files derive from a printout of Luminary 210 (Apollo 15-17 Lunar Module guidance computer program), from the personal library of original AGC developer Don Eyles, digitally photographed at archive.org, financially sponsored by Jim Lawton, and transcribed to source code by a team of volunteers. This colorized, syntax-highlighted form was created by assembling that transcribed source code. Note that the full page images are available on the Virtual AGC project page at archive.org, while reduced-size images are presented at the VirtualAGC project website. Report or fix any transcription errors at the Virtual AGC project code repository.

Notations on the program listing read, in part:

	GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY 
	BY NASA 2021112-161 17:11 MAR. 19,1971
Note that the date is the date of the printout, not the date of the program revision.

060814,000002:                                                                                                  ## Copyright:   Public domain.
060815,000003:                                                                                                  ## Filename:    DAPIDLER_PROGRAM.agc
060816,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
060817,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
060818,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
060819,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
060820,000008:                                                                                                  ##              that the code format has been changed to conform to the
060821,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
060822,000010:                                                                                                  ##              original YUL assembler.
060823,000011:                                                                                                  ## Reference:   pp. 1407-1418
060824,000012:                                                                                                  ## Assembler:   yaYUL
060825,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
060826,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
060827,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
060828,000016:                                                                                                  ##              2016-12-07 RRB  Transcribed from Luminary210.
060829,000017:                                                                                                  ##              2016-12-08 HG   Fix operand AGCINDIC -> AGSINDIC
060830,000018:                                                                                                  ##              2016-12-11 HG   fix operand MOREIDLE -> NONEEDLE
060831,000019:                                                                                                  ##              2016-12-26 RSB  Comment-text proofed using ProoferComments
060832,000020:                                                                                                  ##                              and corrected errors found.
060833,000021: 

Page 1407

060835,000023:                                                                                                  #  THE DAPIDLER PROGRAM IS STARTED BY FRESH START AND RESTART.  THE DAPIDLER PROGRAM IS DONE 10 TIMES
060836,000024:                                                                                                  #  PER SECOND UNTIL THE ASTRONAUT DESIRES THE DAP TO WAKE UP, AND THE IMU AND CDUS ARE READY FOR USE BY THE DAP.
060837,000025:                                                                                                  #  THE NECESSARY INITIALIZATION OF THE DAP IS DONE BY THE DAPIDLER PROGRAM.
060838,000026: 
060839,000027: 16,2000                                           BANK     16                                    
060840,000028: 16,2000                                           SETLOC   DAPS1                                 
060841,000029: 16,2000                                           BANK                                           
060842,000030: 
060843,000031: 16,2000  E6,1536                                  EBANK=   AOSQ                                  
060844,000032: 
060845,000033: 16,2000                                           COUNT*   $$/DAPID                              
060846,000034:                                                                                                  #        CHEKBITS IS CALLED EVERY 0.1 SEC AT THE BEGINNING OF THE DAP PASS, WHETHER THE AUTOPILOT IS ACTIVE OR IDLING.
060847,000035:                                                                                                  #  IT CHECKS FOR THE FOLLOWING
060848,000036:                                                                                                  #                A. IS THE PGNCS MODE SELECT SWITCH TURNED TO "OFF"?
060849,000037:                                                                                                  #                B. IS THE IMU UNAVAILABLE AS AN ATTITUDE REFERENCE?
060850,000038:                                                                                                  #                C. HAS THE INDICATION GONE FROM AGS TO PGNCS SINCE LAST CHECKED
060851,000039:                                                                                                  #        IF EITHER A OR B HOLD, THE FDAI ERROR NEEDLES MUST NOT BE UPDATED (TOAVOID CONFLICT OVER USE OF THE DACS WITH
060852,000040:                                                                                                  #  V43 OR COARSE ALIGN) AND THE DAP MUST IDLE.  A BIT IS SET TO CAUSE  NEEDLER TO INITIALIZE ITSELF WHEN IT IS NEXT
060853,000041:                                                                                                  #  CALLED AND CONTROL IS TRANSFERRED TO A SHORT IDLING ROUTINE.  OTHERWISE, THE NEEDLES ARE UPDATED AND CONDITION
060854,000042:                                                                                                  #  "C" IS TESTED.
060855,000043: 
060856,000044:                                                                                                  #        IF C HOLDS, THE DAP IS REINITIALIZED.  OTHERWISE, THE DAP SHOULD BE ACTIVE AND CONTROL IS TRANSFERRED BACK TO
060857,000045:                                                                                                  #  THE CALLER OF CHEKBITS.
060858,000046: 
060859,000047: 16,2000           00006        CHEKBITS           EXTEND                                         
060860,000048: 16,2001           00031                           READ     CHAN31                                #  IF BOTH BIT13 AND BIT14 ARE ONE, THEN
060861,000049: 16,2002           40000                           COM                                            #  THE MODE SELECT SWITCH IS IN THE OFF
060862,000050: 16,2003           74346                           MASK     BIT13-14                              #  POSITION, AND SO THE DAP SHOULD BE OFF,
060863,000051: 16,2004           00006                           EXTEND                                         #  WITH NO ATTITUDE ERROR DISPLAY.
060864,000052: 16,2005           12012                           BZF      NONEEDLE                              
060865,000053: 
060866,000054: 16,2006           41300                           CS       IMODES33                              #  IF IMU NOT USABLE, DAP SHOULD IDLE WITH
060867,000055: 16,2007           74737                           MASK     BIT6                                  #   NO FDAI NEEDLE DISPLAY.
060868,000056: 16,2010           10000                           CCS      A                                     
060869,000057: 16,2011           12212                           TCF      JUMPDSP                               
060870,000058: 16,2012           41774        NONEEDLE           CS       RCSFLAGS                              #  SET FLAG TO INITIALIZE NEEDLE DISPLAY.
060871,000059: 16,2013           74742                           MASK     BIT3                                  
060872,000060: 16,2014           27774                           ADS      RCSFLAGS                              
060873,000061: 16,2015           12164                           TCF      SHUTDOWN                              
060874,000062: 
060875,000063: 16,2016           34733        CHEKMORE           CAF      BIT10                                 #  BIT 10 OF 30 IS PGNCS CONTROL OF S/C
060876,000064: 16,2017           00006                           EXTEND                                         
060877,000065: 16,2020           02030                           RAND     CHAN30                                #  BITS IN 30 ARE INVERTED
060878,000066: 16,2021           10000                           CCS      A                                     
060879,000067: 16,2022           12033                           TCF      AGSINDIC                              #  AGS: GO SET NPGNCSFL BUT CONTROL ANYHOW.
060880,000068: 16,2023           40106                           CS       FLGWRD10                              
060881,000069: 16,2024           74744                           MASK     NPGNCSBT                              
060882,000070: 16,2025           10000                           CCS      A                                     
060883,000071: 16,2026           00002                           RETURN                                         #  PGNCS BOTH LAST TIME & THIS: GO CONTROL.
060884,000072: 

Page 1408

060886,000074: 16,2027           44744                           CS       NPGNCSBT                              #  PGNCS THIS TIME BUT AGS LAST: CLEAR
060887,000075: 16,2030           70106                           MASK     FLGWRD10                              #    NPGNCSFL AND GO INITIALIZE DAP.
060888,000076: 16,2031           54106                           TS       FLGWRD10                              
060889,000077: 16,2032           12043                           TCF      STARTDP1                              
060890,000078: 
060891,000079: 16,2033           40106        AGSINDIC           CS       FLGWRD10                              
060892,000080: 16,2034           74744                           MASK     NPGNCSBT                              
060893,000081: 16,2035           26106                           ADS      FLGWRD10                              
060894,000082: 16,2036           00002                           RETURN                                         
060895,000083: 

Page 1409

060897,000085: 
060898,000086:                                                                                                  #  DAPIDLER ENTRY.
060899,000087: 
060900,000088: 16,2037           22016        DAPIDLER           LXCH     BANKRUPT                              #  INTERRUPT LEAD INS (CONTINUED)
060901,000089: 16,2040           00006                           EXTEND                                         
060902,000090: 16,2041           22012                           QXCH     QRUPT                                 
060903,000091: 
060904,000092: 16,2042           02000        CHECKUP            TC       CHEKBITS                              #  CHECK TO SEE IF LM DAP IS TO GO ON AND
060905,000093:                                                                                                  #        DO ERROR DISPLAY.
060906,000094: 
060907,000095: 16,2043           30111        STARTDP1           CAE      DAPBOOLS                              #  IF 1/ACCS HAS NOT BEEN COMPLETED, IDLE.
060908,000096: 16,2044           74742                           MASK     ACCSOKAY                              #        NOTE:   ONLY FRESH START AND RESTART
060909,000097: 16,2045           00006                           EXTEND                                         #                KNOCK THIS BIT DOWN.
060910,000098: 16,2046           12160                           BZF      MOREIDLE                              
060911,000099: 
060912,000100: 16,2047           04665        STARTDAP           TC       IBNKCALL                              #  ZERO ATTITUDE ERROR AND DESIRED RATES.
060913,000101: 16,2050           40154                           FCADR    ZATTEROR                              
060914,000102: 16,2051           34746                           CAF      ZERO                                  #  ********** INITIALIZE: **********
060915,000103: 16,2052           55524                           TS       TJP                                   
060916,000104: 16,2053           55525                           TS       TJU                                   
060917,000105: 16,2054           55526                           TS       TJV                                   
060918,000106: 16,2055           55421                           TS       OMEGAP                                #  RATES IN BODY (PILOT) COORDINATES.
060919,000107: 16,2056           55422                           TS       OMEGAQ                                
060920,000108: 16,2057           55423                           TS       OMEGAR                                
060921,000109: 16,2060           55430                           TS       TRAPEDP                               
060922,000110: 16,2061           55431                           TS       TRAPEDQ                               
060923,000111: 16,2062           55432                           TS       TRAPEDR                               
060924,000112: 16,2063           55536                           TS       AOSQ                                  #  OFFSET ACCELERATION ESTIMATES.
060925,000113: 16,2064           55537                           TS       AOSQ       +1                         
060926,000114: 16,2065           55540                           TS       AOSR                                  
060927,000115: 16,2066           55541                           TS       AOSR       +1                         
060928,000116: 16,2067           55424                           TS       ALPHAQ                                #  COPIES OF OFFSET ESTIMATES FOR DOWNLIST.
060929,000117: 16,2070           55425                           TS       ALPHAR                                
060930,000118: 16,2071           55501                           TS       NEGUQ                                 
060931,000119: 16,2072           55503                           TS       NEGUR                                 
060932,000120: 16,2073           55544                           TS       AOSQTERM                              #  QRAXIS RATE DERIVATION TERMS AND KALMAN
060933,000121: 16,2074           55545                           TS       AOSRTERM                              #  FILTER INITIALIZATION TERMS.
060934,000122: 16,2075           55510                           TS       QACCDOT                               #  DESCENT ACCELERATION DERIVATIVE EST.
060935,000123: 16,2076           55512                           TS       RACCDOT                               
060936,000124: 16,2077           55502                           TS       ALLOWGTS                              #  AOSTASK FLAG FOR QRAXIS RCS CONTROL USE.
060937,000125: 16,2100           55630                           TS       COTROLER                              #  DO TRYGTS ON FIRST PASS (WILL GO TO RCS)
060938,000126: 16,2101           55632                           TS       INGTS                                 #  RECOGNIZE FIRST GTS PASS AS SUCH.
060939,000127: 16,2102           55631                           TS       QGIMTIMR                              #  STOP GIMBAL DRIVES.  (PROBABLY WOULD BE
060940,000128: 16,2103           55633                           TS       RGIMTIMR                              #        GOOD ENOUGH JUST TO INACTIVATE TIMERS)
060941,000129: 16,2104           55460                           TS       OLDPMIN                               #  MINIMUM IMPULSE MODE ERASABLES
060942,000130: 16,2105           55461                           TS       OLDQRMIN                              
060943,000131: 16,2106           55766                           TS       PJETCTR                               #  INITIALIZE DOCKED JET INHIBITION
060944,000132: 16,2107           55767                           TS       UJETCTR                               #  COUNTERS
060945,000133: 16,2110           55770                           TS       VJETCTR                               
060946,000134: 16,2111     4740               CALLGMBL           EQUALS   BIT5                                  #  RCSFLAGS INITIALIZATION.
060947,000135: 16,2111           42206                           CS       MANFLAG                               

Page 1410

060949,000137: 16,2112           71774                           MASK     RCSFLAGS                              #  NEGUQ(R) HAVE BEEN GENERATED.
060950,000138: 16,2113           55774                           TS       RCSFLAGS                              
060951,000139: 
060952,000140:                                                                                                  #  SET UP "OLD" MEASURED CDU ANGLES:
060953,000141: 
060954,000142: 16,2114           00006                           EXTEND                                         
060955,000143: 16,2115           30033                           DCA      CDUX                                  #  OLDXFORP AND OLDYFORP
060956,000144: 16,2116           53441                           DXCH     OLDXFORP                              
060957,000145: 16,2117           30034                           CA       CDUZ                                  
060958,000146: 16,2120           55442                           TS       OLDZFORQ                              
060959,000147: 16,2121           41774                           CS       RCSFLAGS                              
060960,000148: 16,2122           74731                           MASK     BIT12                                 
060961,000149: 16,2123           27774                           ADS      RCSFLAGS                              #  BIT 12 SET TO 1.
060962,000150: 16,2124           34742                           CA       FOUR                                  
060963,000151: 16,2125           55534                           TS       SKIPU                                 
060964,000152: 16,2126           55535                           TS       SKIPV                                 
060965,000153: 16,2127           34724                           CA       POSMAX                                
060966,000154: 16,2130           54031                           TS       TIME6                                 
060967,000155: 16,2131           55466                           TS       T6NEXT                                
060968,000156: 16,2132           55470                           TS       T6FURTHA                              
060969,000157: 16,2133           34746                           CA       ZERO                                  
060970,000158: 16,2134           55467                           TS       T6NEXT     +1                         
060971,000159: 16,2135           55471                           TS       T6FURTHA   +1                         
060972,000160: 16,2136           55465                           TS       NXT6ADR                               
060973,000161: 16,2137           55472                           TS       NEXTP                                 
060974,000162: 16,2140           55473                           TS       NEXTU                                 
060975,000163: 16,2141           55474                           TS       NEXTV                                 
060976,000164: 16,2142           44354                           CS       TEN                                   
060977,000165: 16,2143           55756                           TS       DAPZRUPT                              #  JASK NOT IN PROGRESS, INITIALIZE NEG.
060978,000166: 16,2144           34743                           CA       TWO                                   
060979,000167: 16,2145           55433                           TS       NPTRAPS                               
060980,000168: 16,2146           55434                           TS       NQTRAPS                               
060981,000169: 16,2147           55435                           TS       NRTRAPS                               
060982,000170: 16,2150           00006                           EXTEND                                         
060983,000171: 16,2151           32211                           DCA      PAXADIDL                              
060984,000172: 16,2152           53263                           DXCH     T5ADR                                 
060985,000173: 16,2153           37750        SETTIME5           CAF      MS100                                 
060986,000174: 16,2154           54030                           TS       TIME5                                 
060987,000175: 16,2155           15272                           TCF      RESUME                                
060988,000176: 16,2156  E6,1536                                  EBANK=   AOSQ                                  
060989,000177: 16,2156           02037 34106  IDLERADR           2CADR    DAPIDLER                              
060990,000178: 
060991,000179: 16,2160           04665        MOREIDLE           TC       IBNKCALL                              #  CALCULATE Q,R-AXES ATTITUDE ERRORS.
060992,000180: 16,2161           36655                           CADR     QERRCALC                              
060993,000181: 
060994,000182: 16,2162           04665                           TC       IBNKCALL                              
060995,000183: 16,2163           35447                           CADR     CALCPERR                              #  CALCULATE P AXIS ATTITUDE ERRORS.
060996,000184: 
060997,000185: 16,2164           00006        SHUTDOWN           EXTEND                                         
060998,000186: 16,2165           32157                           DCA      IDLERADR                              

Page 1411

061000,000188: 16,2166           53263                           DXCH     T5ADR                                 
061001,000189: 
061002,000190: 16,2167           34746                           CAF      ZERO                                  #  KILL ANY POSSIBLE JET REQUESTS
061003,000191: 16,2170           55472                           TS       NEXTP                                 
061004,000192: 16,2171           55473                           TS       NEXTU                                 
061005,000193: 16,2172           55474                           TS       NEXTV                                 
061006,000194: 16,2173           00006                           EXTEND                                         #  COMMAND JETS OFF.
061007,000195: 16,2174           01005                           WRITE    CHAN5                                 
061008,000196: 16,2175           00006                           EXTEND                                         
061009,000197: 16,2176           01006                           WRITE    CHAN6                                 
061010,000198: 16,2177           42207                           CS       BGIM23                                #  TURN TRIM GIMBAL OFF
061011,000199: 16,2200           00006                           EXTEND                                         
061012,000200: 16,2201           03012                           WAND     CHAN12                                
061013,000201: 16,2202           44743                           CS       CONTRLBT                              
061014,000202: 16,2203           70106                           MASK     FLGWRD10                              #  CLEAR FLAG TO CAUSE THE NO CONTROL DSKY
061015,000203: 16,2204           54106                           TS       FLGWRD10                              #   LIGHT TO BE LIT BY T4RUPT.
061016,000204: 16,2205           12153                           TCF      SETTIME5                              #  RETURN IN 100 MSEC.
061017,000205: 
061018,000206: 16,2206           03021        MANFLAG            OCT      03021                                 
061019,000207: 16,2207           07400        BGIM23             OCTAL    07400                                 
061020,000208: 16,2210  E6,1421                                  EBANK=   OMEGAP                                
061021,000209: 16,2210           02217 34106  PAXADIDL           2CADR    PAXIS                                 
061022,000210: 
061023,000211: 16,2212     7750               MS100              =        OCT37766                              
061024,000212: 16,2212     0061               COSMG              =        ITEMP1                                
061025,000213: 16,2212           00006        JUMPDSP            EXTEND                                         #  TRANSFER TO BANK 20
061026,000214: 16,2213           32216                           DCA      DSPCADR                               #  FOR ATTITUDE ERROR DISPLAYS
061027,000215: 16,2214           52006                           DTCB                                           
061028,000216: 
061029,000217: 16,2215  E6,1760                                  EBANK=   AK                                    
061030,000218: 16,2215           02227 40106  DSPCADR            2CADR    ALTDSPLY                              
061031,000219: 

Page 1412

061033,000221: 20,2227                                           BANK     20                                    
061034,000222: 20,2000                                           SETLOC   DAPS3                                 
061035,000223: 20,2000                                           BANK                                           
061036,000224: 20,2227                                           COUNT*   $$/NEEDL                              
061037,000225: 
061038,000226:                                                                                                  #  PROGRAM:      ALTDSPLY
061039,000227:                                                                                                  #  MOD 0.        6 DEC 1967
061040,000228:                                                                                                  #  AUTHOR:       CRAIG WORK, DON KEENE, MIT IL
061041,000229:                                                                                                  #  MOD 3 BY DON KEENE AUG 1, 1968 MOVED PROGRAM TO BANK 20
061042,000230: 
061043,000231:                                                                                                  #  PROGRAM DESCRIPTION:
061044,000232:                                                                                                  #  ALTDSPLY REVERSES THE DSPLYALT BIT OF RCSFLAGS EACH TIME IT IS CALLED, WHICH IS PRESUMABLY EVERY 100 MS.
061045,000233:                                                                                                  #  IF THE REVERSED BIT IS ONE, NEEDLER IS CALLED TO DISPLAY ATTITUDE ERRORS.  IF THE BIT IS ZERO, THE ATTITUDE ERR-
061046,000234:                                                                                                  #  ORS ARE CALCULATED AS 1) ESTIMATED RATES (FOLLOWING) IF NEED2FLG = 1, OTHERWISE AS 2) DAP FOLLOWING ERRORS FOR
061047,000235:                                                                                                  #  NEEDLFLG = 0 AND 3) TOTAL ATTITUDE ERRORS FOR NEEDLFLG = 1.
061048,000236: 
061049,000237:                                                                                                  #  WARNING:      ALTDSPLY MAY ONLY BE CALLED WITH INTERRUPT INHIBITED.
061050,000238: 
061051,000239:                                                                                                  #  WARNING:      EBANK MUST BE SET TO 6 WHEN USING THIS ROUTINE.
061052,000240: 
061053,000241:                                                                                                  #  INPUT:        RCSFLAGS AND    1) IF NEEDLFLG = 0, INPUT PERROR, QERROR, RERROR.
061054,000242:                                                                                                  #                                2) IF NEEDLFLG = 1, INPUT CPHI,CTHETA,CPSI,CDUX,CDUY,CDUZ,M11,M21,M32,M22,M32.  (GPMATRIX)
061055,000243:                                                                                                  #                        3) IF NEED2FLG = 1, INPUT OMEGAP, OMEGAQ, AND OMEGAR.
061056,000244: 
061057,000245:                                                                                                  #  OUTPUTS:      RCSFLAGS WITH DSPLYALT REVERSED,AK,AK1,AK2,+ NEEDLER OUTPUTS.
061058,000246: 
061059,000247:                                                                                                  #  ENTRY:        TCF     ALTDSPLY
061060,000248: 
061061,000249:                                                                                                  #  EXIT:         TCF     CHEKMORE
061062,000250: 
061063,000251:                                                                                                  #  ALARM OR ABORT EXITS:  NONE
061064,000252: 
061065,000253:                                                                                                  #  SUBPROGRAMS CALLED:  NEEDLER, OVERSUB2
061066,000254: 
061067,000255:                                                                                                  #  DEBRIS:       A, L, AND NEEDLER DEBRIS.
061068,000256: 
061069,000257: 20,2227           31774        ALTDSPLY           CA       RCSFLAGS                              #  INVERT THE DISPLAY ALTERNATION BIT.
061070,000258: 20,2230           54001                           TS       L                                     
061071,000259: 20,2231           34741                           CA       DSPLYALT                              
061072,000260: 20,2232           00006                           EXTEND                                         
061073,000261: 20,2233           06001                           RXOR     LCHAN                                 
061074,000262: 20,2234           55774                           TS       RCSFLAGS                              
061075,000263: 
061076,000264: 20,2235           74741                           MASK     DSPLYALT                              
061077,000265: 20,2236           10000                           CCS      A                                     #  IS ALTERNATION FLAG ZERO?

Page 1413

061079,000267: 20,2237           12336                           TCF      NEEDLER                               
061080,000268: 
061081,000269: 20,2240           40074                           CS       FLAGWRD0                              #  CHECK FOR RATE DISPLAY TO ERROR NEEDLES
061082,000270: 20,2241           74726                           MASK     NEED2BIT                              #  VIA EXTENDED VERB 60
061083,000271: 20,2242           00006                           EXTEND                                         
061084,000272: 20,2243           12257                           BZF      DISPRATE                              
061085,000273: 
061086,000274: 20,2244           30074                           CAE      FLAGWRD0                              #  NEEDLFLG WILL INDICATE TOTAL OR DAP AT-
061087,000275: 20,2245           74741                           MASK     NEEDLBIT                              #  TITUDE ERROR DISPLAY REQUEST.
061088,000276: 20,2246           10000                           CCS      A                                     
061089,000277: 20,2247           12266                           TCF      DSPLYTOT                              #  TOTAL ERROR IS NEEDED IN AK,AK +1,AK +2
061090,000278: 
061091,000279: 20,2250           41450                           CS       QERROR                                #  YES. DISPLAY ATT ERRORS ON THE ,-BALL.
061092,000280: 20,2251           55761                           TS       AK         +1                         #  ERROR COMPLEMENTS ARE INPUT TO NEEDLER.
061093,000281: 20,2252           41452                           CS       RERROR                                
061094,000282: 20,2253           55762                           TS       AK         +2                         
061095,000283: 20,2254           41464                           CS       PERROR                                
061096,000284: 20,2255           57760                           XCH      AK                                    
061097,000285: 
061098,000286: 20,2256           12456                           TCF      RETNMORE                              #  DISPLAY THESE THE NEXT TIME THROUGH
061099,000287: 
061100,000288: 20,2257           41422        DISPRATE           CS       OMEGAQ                                #  LOAD ESTIMATED RATES (FOLLOWING)
061101,000289: 20,2260           55761                           TS       AK         +1                         
061102,000290: 20,2261           41423                           CS       OMEGAR                                
061103,000291: 20,2262           55762                           TS       AK         +2                         
061104,000292: 20,2263           41421                           CS       OMEGAP                                
061105,000293: 20,2264           57760                           XCH      AK                                    
061106,000294: 20,2265           12456                           TCF      RETNMORE                              
061107,000295: 
061108,000296:                                                                                                  #  CALCULATE GIMBAL ANGLE TOTAL ERRORS, RESOLVE INTO PILOT AXES, STORE TOTAL ERRORS FOR NEEDLER.  Q-AXIS FIRST.
061109,000297: 
061110,000298: 20,2266           00006        DSPLYTOT           EXTEND                                         
061111,000299: 20,2267           22061                           QXCH     ITEMP1                                #  SAVE Q FOR CHEKBITS RETURN.
061112,000300: 
061113,000301: 20,2270           30322                           CA       CTHETA                                #  DESIRED ATTITUDE, Y-AXIS, 2'S COMP.
061114,000302: 20,2271           00006                           EXTEND                                         #  SUBTRACT CURRENT ATTITUDE.
061115,000303: 20,2272           20033                           MSU      CDUY                                  #  DIFFERENCE SCALED AT PI, 1'S COMP.
061116,000304: 20,2273           55760                           TS       AK                                    #  SAVE FOR R-ERROR CALCULATION.
061117,000305: 20,2274           00006                           EXTEND                                         
061118,000306: 20,2275           71415                           MP       M21                                   #  (CHTETA-CDUY)*M21 SCALED AT PI RADIANS.
061119,000307: 20,2276           57761                           XCH      AK         +1                         #  STORE FIRST TERM OF Q ERROR.
061120,000308: 20,2277           30323                           CA       CPSI                                  #  DESIRED ATTITUDE, Z-AXIS, 2'S COMP.
061121,000309: 20,2300           00006                           EXTEND                                         #  SUBTRACT CURRENT ATTITUDE.
061122,000310: 20,2301           20034                           MSU      CDUZ                                  #  DIFFERENCE SCALED AT PI, 1'S COMP.
061123,000311: 20,2302           55762                           TS       AK         +2                         #  SAVE Z-AXIS TERM FOR R ERROR CALCULATION
061124,000312: 20,2303           00006                           EXTEND                                         
061125,000313: 20,2304           71417                           MP       M22                                   #  (CPSI-CDUZ)*M22, SCALED AT PI RADIANS.
061126,000314: 20,2305           61761                           AD       AK         +1                         #  Q ERROR COMPLETE         , AT PI RAD.
061127,000315: 20,2306           02451                           TC       OVERSUB2                              #  PIN NEEDLES IN CASE OF OVERFLOW.
061128,000316: 20,2307           55761                           TS       AK         +1                         
061129,000317: 

Page 1414

061131,000319:                                                                                                  #  R ERROR CALCULATION NEXT.
061132,000320: 
061133,000321: 20,2310           31760                           CA       AK                                    #  Y-AXIS DIFFERENCE STORED BY Q-AXIS CALC.
061134,000322: 20,2311           00006                           EXTEND                                         
061135,000323: 20,2312           71416                           MP       M31                                   #  (CTHETA-CDUY)*M31, SCALED AT PI RADIANS.
061136,000324: 20,2313           57762                           XCH      AK         +2                         #  FIRST TERM OF R ERROR.
061137,000325:                                                                                                  #  Z-AXIS DIFFERENCE, STORED BY A CALC. IS
061138,000326: 20,2314           00006                           EXTEND                                         #  RECOVERED BY THE EXCHANGE.
061139,000327: 20,2315           71420                           MP       M32                                   #  (CPSI-CDUZ)*M32, SCALED AT PI RADIANS.
061140,000328: 20,2316           61762                           AD       AK         +2                         #  R ERROR COMPLETE         , AT PI RAD.
061141,000329: 20,2317           02451                           TC       OVERSUB2                              #  PIN NEEDLES IN CASE OF OVERFLOW.
061142,000330: 20,2320           55762                           TS       AK         +2                         
061143,000331: 
061144,000332:                                                                                                  #  NOW CALCULATE P ERROR.  (NOTE THAT M13 = 1, SCALED AT 1, SO THE MULTIPLICATION IS BY-PASSED.)
061145,000333: 
061146,000334: 20,2321           31760                           CA       AK                                    #  Y-AXIS DIFFERENCE STORED BY Q AXIS CALC.
061147,000335: 20,2322           00006                           EXTEND                                         
061148,000336: 20,2323           71414                           MP       M11                                   #  (CTHETA-CDUY)*M11 SCALED AT PI RADIANS.
061149,000337: 20,2324           57760                           XCH      AK                                    #  FIRST TERM OF P ERROR IN AK, AT PI RAD.
061150,000338: 20,2325           30321                           CAE      CPHI                                  #  DESIRED ATTITUDE, X-AXIS, 2'S COMP.
061151,000339: 20,2326           00006                           EXTEND                                         #  SUBTRACT CURRENT X ATTITUDE.
061152,000340: 20,2327           20032                           MSU      CDUX                                  #  X-AXIS DIFFERENCE, 1'S COMP, AT PI RAD.
061153,000341: 
061154,000342:                                                                                                  #  M13 = 1, SO BYPASS THE MULTIPLICATION.
061155,000343:                                                                                                  #                EXTEND
061156,000344:                                                                                                  #                MP      M13             (CPHI-CDUX)*M13 SCALED AT PI RADIANS.
061157,000345: 
061158,000346: 20,2330           61760                           AD       AK                                    #  P ERROR COMPLETE      , SCALED AT PI RAD
061159,000347: 20,2331           02451                           TC       OVERSUB2                              #  PIN NEEDLES IN CASE OF OVERFLOW.
061160,000348: 20,2332           55760                           TS       AK                                    
061161,000349: 
061162,000350: 20,2333           00006                           EXTEND                                         
061163,000351: 20,2334           22061                           QXCH     ITEMP1                                #  RESTORE Q FOR CHEKBITS RETURN.
061164,000352: 
061165,000353: 20,2335           12456                           TCF      RETNMORE                              #  DISPLAY THESE THE NEXT TIME THROUGH
061166,000354: 

Page 1415

061168,000356:                                                                                                  #  FDAI ATTITUDE ERROR DISPLAY SUBROUTINE
061169,000357: 
061170,000358:                                                                                                  #  PROGRAM DESCRIPTION:          D. KEENE        5/24/67
061171,000359:                                                                                                  #  MOD 1 BY CRAIG WORK, 12 DEC 67
061172,000360:                                                                                                  #  MOD 2 BY CRAIG WORK, 6 APRIL 68 CONVERTS ATTITUDE ERROR DISPLAY SCALING FROM 16 7/8 DEG. TO 42 3/16 DEGREES.
061173,000361: 
061174,000362:                                                                                                  #        THIS SUBROUTINE IS USED TO DISPLAY ATTITUDE ERRORS ON THE FDAI VIA THE DIGITAL TO ANALOG CONVERTERS (DACS)
061175,000363:                                                                                                  #  IN THE CDUS.  CARE IS TAKEN TO METER OUT THE APPROPRIATE NUMBER OF PULSES TO THE IMU ERROR COUNTERS AND PREVENT
061176,000364:                                                                                                  #  OVERFLOW, TO CONTROL THE RELAY SEQUENCING, AND TO AVOID INTERFERENCE WITH THE COARSE ALIGN LOOP WHICH ALSO USES
061177,000365:                                                                                                  #  THE DACS.
061178,000366: 
061179,000367:                                                                                                  #  CALLING SEQUENCE:
061180,000368:                                                                                                  #        DURING THE INITIALIZATION SECTION OF THE USER'S PROGRAM, BIT3 OF RCSFLAGS SHOULD BE SET TO INITIATE THE
061181,000369:                                                                                                  #  TURN-ON SEQUENCE WITHIN THE NEEDLES PROGRAM:
061182,000370:                                                                                                  #                CS      RCSFLAGS        IN EBANK6
061183,000371:                                                                                                  #                MASK    BIT3
061184,000372:                                                                                                  #                ADS     RCSFLAGS
061185,000373:                                                                                                  #  THEREAFTER, THE ATTITUDE ERRORS GENERATED BY THE USER SHOULD BE TRANSFERED TO THE FOLLOWING LOCATIONS IN EBANK6:
061186,000374:                                                                                                  #                AK      SCALED 180 DEGREES      NOTE:   THESE LOCATIONS ARE SUBJECT
061187,000375:                                                                                                  #                AK1     SCALED 180 DEGREES              TO CHANGE
061188,000376:                                                                                                  #                AK2     SCALED 180 DEGREES
061189,000377:                                                                                                  #  FULL SCALED DEFLECTION OF THE NEEDLES CORRESPONDS TO 5 1/16 DEGREES, WHILE 384 BITS IN THE IMU ERROR COUNTER
061190,000378:                                                                                                  #  CORRESPONDS TO 42 3/16 DEGREES.  (DAC MAXIMUM CAPACITY IS 384 BITS.)  46 BITS EFFECTIVELY PIN THE NEEDLES.
061191,000379: 
061192,000380:                                                                                                  #  FOR RATE DISPLAY, FULL SCALE NEEDLE DEFLECTION IS 1 17/64 DEG/SEC, AND A FULL COUNTER IS ABOUT 10.5 DEG/SEC.
061193,000381:                                                                                                  #  A CALL TO NEEDLER WILL THEN UPDATE THE DISPLAY:
061194,000382:                                                                                                  #                INHINT
061195,000383:                                                                                                  #                TC      IBNKCALL        NOTE:  EBANK SHOULD BE SET TO E6
061196,000384:                                                                                                  #                CADR    NEEDLER
061197,000385:                                                                                                  #                RELINT
061198,000386:                                                                                                  #        THIS PROCESS SHOULD BE REPEATED EACH TIME THE ERRORS ARE UPDATED.  AT LEAST 3 PASSES THRU THE PROGRAM ARE
061199,000387:                                                                                                  #  REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.
061200,000388:                                                                                                  #  NOTE:  EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50 MS TO ASSURE PROPER RELAY SEQUENCING.
061201,000389: 
061202,000390:                                                                                                  #  ERASABLE USED:
061203,000391:                                                                                                  #                                AK              CDUXCMD
061204,000392:                                                                                                  #                                AK1             CDUYCMD
061205,000393:                                                                                                  #                                AK2             CDUZCMD
061206,000394:                                                                                                  #                                EDRIVEX         A,L,Q
061207,000395:                                                                                                  #                                EDRIVEY         T5TEMP

Page 1416

061209,000397:                                                                                                  #                                EDRIVEZ         DINDX
061210,000398: 
061211,000399:                                                                                                  #  SWITCHES:                     RCSFLAGS  BITS 3,2
061212,000400: 
061213,000401:                                                                                                  #  I/O CHANNELS:                 CHAN12  BIT 4 (COARSE ALIGN - READ ONLY)
061214,000402:                                                                                                  #                                CHAN12  BIT 6 (IMU ERROR COUNTER ENABLE)
061215,000403:                                                                                                  #                                CHAN14  BIT 13,14,15 (DAC ACTIVITY)
061216,000404: 
061217,000405:                                                                                                  #  SIGN CONVENTION<      AK = THETAC - THETA
061218,000406:                                                                                                  #                WHERE   THETAC = COMMAND ANGLE
061219,000407:                                                                                                  #                        THETA = PRESENT ANGLE
061220,000408: 
061221,000409: 20,2336           31774        NEEDLER            CA       RCSFLAGS                              
061222,000410: 20,2337           76263                           MASK     SIX                                   
061223,000411: 20,2340           00006                           EXTEND                                         
061224,000412: 20,2341           12376                           BZF      NEEDLES3                              
061225,000413: 20,2342           74742                           MASK     BIT3                                  
061226,000414: 20,2343           00006                           EXTEND                                         
061227,000415: 20,2344           12367                           BZF      NEEDLER2                              #  BIT3 = 0, BIT2 = 1
061228,000416: 
061229,000417: 20,2345           44737                           CS       BIT6                                  #  FIRST PASS BIT3 = 1
061230,000418: 20,2346           00006                           EXTEND                                         #  DISABLE IMU ERROR COUNTER TO ZERO DACS
061231,000419: 20,2347           03012                           WAND     CHAN12                                #  MUST WAIT AT LEAST 60 MS BEFORE
061232,000420: 20,2350           44746        NEEDLE11           CS       ZERO                                  #  ENABLING COUNTERS.
061233,000421: 20,2351           55760                           TS       AK                                    #  ZERO THE INPUTS ON FIRST PASS
061234,000422: 20,2352           55761                           TS       AK1                                   
061235,000423: 20,2353           55762                           TS       AK2                                   
061236,000424: 20,2354           55763                           TS       EDRIVEX                               #  ZERO THE DISPLAY REGISTERS
061237,000425: 20,2355           55764                           TS       EDRIVEY                               
061238,000426: 20,2356           55765                           TS       EDRIVEZ                               
061239,000427: 20,2357           54050                           TS       CDUXCMD                               #  ZERO THE OUT COUNTERS
061240,000428: 20,2360           54051                           TS       CDUYCMD                               
061241,000429: 20,2361           54052                           TS       CDUZCMD                               
061242,000430: 20,2362           46263                           CS       SIX                                   #  RESET RCSFLAGS FOR PASS2
061243,000431: 20,2363           71774                           MASK     RCSFLAGS                              
061244,000432: 20,2364           64743                           AD       BIT2                                  
061245,000433: 20,2365           55774                           TS       RCSFLAGS                              
061246,000434: 20,2366           12456                           TCF      RETNMORE                              
061247,000435: 
061248,000436: 20,2367           34737        NEEDLER2           CAF      BIT6                                  #  ENABLE IMU ERROR COUNTERS
061249,000437: 20,2370           00006                           EXTEND                                         
061250,000438: 20,2371           05012                           WOR      CHAN12                                
061251,000439: 20,2372           46263                           CS       SIX                                   #  RESET RCSFLAGS TO DISPLAY ATTITUDE
061252,000440: 20,2373           71774                           MASK     RCSFLAGS                              #  ERRORS    WAIT AT LEAST 4 MS FOR
061253,000441: 20,2374           55774                           TS       RCSFLAGS                              #  RELAY CLOSURE
061254,000442: 20,2375           12456                           TCF      RETNMORE                              
061255,000443: 
061256,000444: 20,2376           34737        NEEDLES3           CAF      BIT6                                  #  CHECK TO SEE IF IMU ERROR COUNTER

Page 1417

061258,000446: 20,2377           00006                           EXTEND                                         #  IS ENABLED
061259,000447: 20,2400           02012                           RAND     CHAN12                                
061260,000448: 20,2401           10000                           CCS      A                                     #  IF NOT, RE-INITIALIZE NEEDLER.
061261,000449: 20,2402           12407                           TCF      NEEDLES                               
061262,000450: 
061263,000451: 20,2403           41774                           CS       RCSFLAGS                              #  SET UP INITIALIZATION FLAG IN RCSFLAGS.
061264,000452: 20,2404           74742                           MASK     BIT3                                  
061265,000453: 20,2405           27774                           ADS      RCSFLAGS                              
061266,000454: 20,2406           12456                           TCF      RETNMORE                              
061267,000455: 
061268,000456: 20,2407           34743        NEEDLES            CAF      TWO                                   
061269,000457: 20,2410           54063        DACLOOP            TS       DINDX                                 
061270,000458: 20,2411           42450                           CS       ONETENTH                              #  RESCALE INPUTS TO + OR - 1800 DEGREES.
061271,000459: 20,2412           00006                           EXTEND                                         
061272,000460: 20,2413           50063                           INDEX    DINDX                                 
061273,000461: 20,2414           71760                           MP       AK                                    
061274,000462: 20,2415           54001                           TS       L                                     
061275,000463: 20,2416           10000                           CCS      A                                     
061276,000464: 20,2417           32446                           CA       DACLIMIT                              
061277,000465: 20,2420           12422                           TCF      +2                                    
061278,000466: 20,2421           42446                           CS       DACLIMIT                              
061279,000467: 20,2422           60001                           AD       L                                     
061280,000468: 20,2423           54061                           TS       T5TEMP                                #  OVFLO CHK
061281,000469: 20,2424           12430                           TCF      +4                                    
061282,000470: 20,2425           50000                           INDEX    A                                     #  ON OVERFLOW LIMIT OUTPUT TO +-384
061283,000471: 20,2426           32446                           CAF      DACLIMIT                              
061284,000472: 20,2427           54001                           TS       L                                     
061285,000473: 20,2430           50063                           INDEX    DINDX                                 
061286,000474: 20,2431           41763                           CS       EDRIVEX                               #  CURRENT VALUE OF DAC
061287,000475: 20,2432           60001                           AD       L                                     
061288,000476: 20,2433           50063                           INDEX    DINDX                                 
061289,000477: 20,2434           26050                           ADS      CDUXCMD                               
061290,000478: 20,2435           50063                           INDEX    DINDX                                 
061291,000479: 20,2436           23763                           LXCH     EDRIVEX                               
061292,000480: 20,2437           10063                           CCS      DINDX                                 
061293,000481: 20,2440           12410                           TCF      DACLOOP                               
061294,000482: 20,2441           37761                           CAF      13,14,15                              
061295,000483: 20,2442           00006                           EXTEND                                         
061296,000484: 20,2443           05014                           WOR      CHAN14                                #  SET DAC ACTIVITY BITS
061297,000485: 20,2444           12456                           TCF      RETNMORE                              
061298,000486: 
061299,000487: 20,2445           77177                           DEC      -384       B-14                       
061300,000488: 20,2446           37200        DACLIMIT           DEC      16000      B-14                       
061301,000489: 20,2447           00600                           DEC      384        B-14                       
061302,000490: 
061303,000491: 20,2450           03146        ONETENTH           OCT      03146                                 #  DECIMAL +0.1, SCALED AT 1.
061304,000492: 20,2451     4741               DSPLYALT           EQUALS   BIT4                                  #  100 MS ALTERNATION BIT IN RCSFLAGS
061305,000493: 
061306,000494: 20,2451           54007        OVERSUB2           TS       7                                     #  RETURNS A UNCHANGED OR LIMITED TO

Page 1418

061308,000496: 20,2452           00002                           TC       Q                                     #  POSMAX OR NEGMAX IF A HAS OVERFLOW
061309,000497: 20,2453           50000                           INDEX    A                                     
061310,000498: 20,2454           44725                           CS       LIMITS                                #  DUPLICATE CODING IN BANK 16
061311,000499: 20,2455           00002                           TC       Q                                     
061312,000500: 
061313,000501: 20,2456           00006        RETNMORE           EXTEND                                         #  RETURN TO CHEKMORE
061314,000502: 20,2457           32462                           DCA      MORECADR                              
061315,000503: 20,2460           52006                           DTCB                                           
061316,000504: 
061317,000505: 20,2461  E6,1536                                  EBANK=   AOSQ                                  
061318,000506: 20,2461           02016 34106  MORECADR           2CADR    CHEKMORE                              
061319,000507: 
061320,000508: 
061321,000509: 
061322,000510: 

End of include-file DAPIDLER_PROGRAM.agc.  Parent file is MAIN.agc