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,1971Note 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