Source Code
These source-code files are part of a reconstructed copy of Sundial E, the
final release of the Block II Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 2003053-121, 2003053-151, and 2003972-211, belonging to the MIT Museum. Since only binary dumps (rather than listings) of Sundial are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
006555,000002: ## Copyright: Public domain.
006556,000003: ## Filename: IMU_MODE_SWITCHING_ROUTINES.agc
006557,000004: ## Purpose: A section of Sundial E.
006558,000005: ## It is part of the reconstructed source code for the final
006559,000006: ## release of the Block II Command Module system test software. No
006560,000007: ## original listings of this program are available; instead, this
006561,000008: ## file was created via disassembly of dumps of Sundial core rope
006562,000009: ## modules and comparison with other AGC programs.
006563,000010: ## Assembler: yaYUL
006564,000011: ## Contact: Ron Burkey <info@sandroid.org>.
006565,000012: ## Website: www.ibiblio.org/apollo/index.html
006566,000013: ## Mod history: 2023-06-22 MAS Created from Aurora 12.
006567,000014: ## 2023-06-30 MAS Updated for Sundial E.
006568,000015: ## 2023-07-03 MAS Relocated Sundial D patch to SXTMARK.
006569,000016:
006570,000017:
006571,000018: 4654 SETLOC ENDT4FF
006572,000019: 4654 E3,1451 EBANK= COMMAND
006573,000020:
006574,000021: # FIXED-FIXED ROUTINES.
006575,000022: 4654 37657 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS.
006576,000023: 4655 54032 TS CDUX
006577,000024: 4656 54033 TS CDUY
006578,000025: 4657 54034 TS CDUZ
006579,000026: 4660 00002 TC Q
006580,000027:
006581,000028: 4661 00620 4SECS DEC 400 B-14
006582,000029: 4662 00454 3SECS DEC 300 B-14
006583,000030: 4663 00310 2SECS DEC 200 B-14
006584,000031:
006585,000032: 4664 ENDIMODF EQUALS
006586,000033:
006587,000034: # IMU ZEROING ROUTINE.
006588,000035:
006589,000036: 13,2000 BANK 13
006590,000037:
006591,000038: 13,2000 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS.
006592,000039: 13,2001 13365 TCF IMUZERO1
006593,000040: 13,2002 70061 MASK STATE # PROGRAM IS USING THE IMU.
006594,000041: 13,2003 67643 AD IMUSEFLG
006595,000042: 13,2004 54061 TS STATE
006596,000043:
006597,000044: 13,2005 02664 TC CAGETSTQ # IF IMU COMING UP, TURN-ON PROGRAM WILL
006598,000045: 13,2006 12033 TCF MODEEXIT # DO ALL THE WORK.
006599,000046:
006600,000047: 13,2007 42755 CS BITS3&4 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE
006601,000048: 13,2010 70361 MASK IMODES30 # JUST CAME OUT OF COARSE ALIGN).
006602,000049: 13,2011 62755 AD BITS3&4
006603,000050: 13,2012 54361 TS IMODES30
006604,000051:
006605,000052: 13,2013 42756 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR
006606,000053: 13,2014 00006 EXTEND # COUNTER DISABLED.
006607,000054: 13,2015 03012 WAND 12
006608,000055:
006609,000056: 13,2016 37646 CAF BIT5
006610,000057: 13,2017 00006 EXTEND
006611,000058: 13,2020 05012 WOR 12
006612,000059:
006613,000060: 13,2021 37645 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO
006614,000061: 13,2022 04451 TC WAITLIST # RECEIVE ITS PULSE TRAIN.
006615,000062: 13,2023 02035 26003 2CADR IMUZERO2
006616,000063:
006617,000064: 13,2025 40361 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT.
006618,000065: 13,2026 77642 MASK BIT9
006619,000066: 13,2027 10000 CCS A
006620,000067: 13,2030 12033 TCF MODEEXIT
006621,000068:
006622,000069: 13,2031 05644 TC ALARM
006623,000070: 13,2032 00210 OCT 210
006624,000071:
006625,000072: 13,2033 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT.
006626,000073: 13,2034 14077 TCF SWRETURN
006627,000074:
006628,000075: 13,2035 02664 IMUZERO2 TC CAGETSTQ # POSSIBLY SWITCH TO TURN-ON PROGRAM.
006629,000076: 13,2036 14505 TCF TASKOVER
006630,000077:
006631,000078: 13,2037 04654 TC ZEROICDU # ZERO COUNTERS.
006632,000079: 13,2040 47646 CS BIT5 # REMOVE ZERO DISCRETE.
006633,000080: 13,2041 00006 EXTEND
006634,000081: 13,2042 03012 WAND 12
006635,000082:
006636,000083: 13,2043 34661 CAF 4SECS # WAIT FOR COUNTERS TO SYNCRONIZE.
006637,000084: 13,2044 04472 TC VARDELAY
006638,000085:
006639,000086: 13,2045 02664 IMUZERO3 TC CAGETSTQ
006640,000087: 13,2046 14505 TCF TASKOVER
006641,000088:
006642,000089: 13,2047 42755 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT.
006643,000090: 13,2050 70361 MASK IMODES30
006644,000091: 13,2051 54361 TS IMODES30
006645,000092:
006646,000093: 13,2052 04132 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE
006647,000094: 13,2053 25176 CADR SETISSW # PRESENT.
006648,000095:
006649,000096: 13,2054 12647 TCF ENDIMU
006650,000097:
006651,000098: # IMU COARSE ALIGN MODE.
006652,000099:
006653,000100: 13,2055 37647 IMUCOARS CAF BIT4 # SEND COARSE ALIGN ENABLE DISCRETE
006654,000101: 13,2056 00004 INHINT
006655,000102: 13,2057 00006 EXTEND
006656,000103: 13,2060 05012 WOR CHAN12
006657,000104:
006658,000105: 13,2061 47647 CS BIT4 # INHIBIT IMU FAIL.
006659,000106: 13,2062 70361 MASK IMODES30
006660,000107: 13,2063 67647 AD BIT4
006661,000108: 13,2064 54361 TS IMODES30
006662,000109:
006663,000110: 13,2065 36162 CAF SIX
006664,000111: 13,2066 04451 TC WAITLIST
006665,000112: 13,2067 02072 26003 2CADR COARS
006666,000113:
006667,000114: 13,2071 12033 TCF MODEEXIT
006668,000115:
006669,000116: 13,2072 02657 COARS TC CAGETEST
006670,000117: 13,2073 37645 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
006671,000118: 13,2074 00006 EXTEND
006672,000119: 13,2075 05012 WOR CHAN12
006673,000120:
006674,000121: 13,2076 37651 CAF TWO # SET CDU INDICATOR
006675,000122: 13,2077 55454 COARS1 TS CDUIND
006676,000123:
006677,000124: 13,2100 51454 INDEX CDUIND # COMPUTE THETAD - THETAA IN 1:S
006678,000125: 13,2101 30400 CA THETAD # COMPLEMENT FORM
006679,000126: 13,2102 00006 EXTEND
006680,000127: 13,2103 51454 INDEX CDUIND
006681,000128: 13,2104 20032 MSU CDUX
006682,000129: 13,2105 00006 EXTEND
006683,000130: 13,2106 77636 MP BIT13 # SHIFT RIGHT 2
006684,000131: 13,2107 56001 XCH L # ROUND
006685,000132: 13,2110 60000 DOUBLE
006686,000133: 13,2111 54065 TS ITEMP1
006687,000134: 13,2112 12114 TCF +2
006688,000135: 13,2113 26001 ADS L
006689,000136:
006690,000137: 13,2114 51454 INDEX CDUIND # DIFFERENCE TO BE COMPUTED
006691,000138: 13,2115 23451 LXCH COMMAND
006692,000139: 13,2116 11454 CCS CDUIND
006693,000140: 13,2117 02077 TC COARS1
006694,000141:
006695,000142: 13,2120 37651 CAF TWO # MINIMUM OF 4 MS WAIT
006696,000143: 13,2121 04472 TC VARDELAY
006697,000144:
006698,000145: 13,2122 02657 COARS2 TC CAGETEST # DONT CONTINUE IF CAGED.
006699,000146: 13,2123 54065 TS ITEMP1 # SETS TO +0.
006700,000147: 13,2124 37651 CAF TWO # SET CDU INDICATOR
006701,000148: 13,2125 55454 +3 TS CDUIND
006702,000149:
006703,000150: 13,2126 51454 INDEX CDUIND
006704,000151: 13,2127 11451 CCS COMMAND # NUMBER OF PULSES REQUIRED
006705,000152: 13,2130 02134 TC COMPOS # GREATER THAN MAX ALLOWED
006706,000153: 13,2131 02143 TC NEXTCDU +1
006707,000154: 13,2132 02206 TC COMNEG
006708,000155: 13,2133 02143 TC NEXTCDU +1
006709,000156:
006710,000157: 13,2134 62761 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED
006711,000158: 13,2135 00006 EXTEND # MINUS ONE
006712,000159: 13,2136 62216 BZMF COMZERO
006713,000160: 13,2137 51454 INDEX CDUIND
006714,000161: 13,2140 55451 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES
006715,000162: 13,2141 42762 CS -COMMAX- # ALLOWED
006716,000163:
006717,000164: 13,2142 24065 NEXTCDU INCR ITEMP1
006718,000165: 13,2143 51454 INDEX CDUIND
006719,000166: 13,2144 54050 TS CDUXCMD # SET UP COMMAND REGISTER.
006720,000167:
006721,000168: 13,2145 11454 CCS CDUIND
006722,000169: 13,2146 02125 TC COARS2 +3
006723,000170:
006724,000171: 13,2147 10065 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT.
006725,000172: 13,2150 12222 TCF SENDPULS
006726,000173:
006727,000174: 13,2151 04467 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE.
006728,000175: 13,2152 00226 DEC 150 B-14
006729,000176:
006730,000177: 13,2153 37651 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT
006731,000178: 13,2154 54065 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD.
006732,000179: 13,2155 50000 INDEX A
006733,000180: 13,2156 30032 CA CDUX
006734,000181: 13,2157 00006 EXTEND
006735,000182: 13,2160 50065 INDEX ITEMP1
006736,000183: 13,2161 20400 MSU THETAD
006737,000184: 13,2162 10000 CCS A
006738,000185: 13,2163 12177 TCF COARSERR
006739,000186: 13,2164 12166 TCF CORSCHK2
006740,000187: 13,2165 12177 TCF COARSERR
006741,000188:
006742,000189: 13,2166 10065 CORSCHK2 CCS ITEMP1
006743,000190: 13,2167 12154 TCF CHKCORS
006744,000191: 13,2170 55451 TS GCOMP # ZERO GYRO COMPENSATION REGISTERS IN
006745,000192: 13,2171 55452 TS GCOMP +1 # PREPARATION FOR COMPENSATION.
006746,000193: 13,2172 55453 TS GCOMP +2
006747,000194: 13,2173 55454 TS GCOMP +3
006748,000195: 13,2174 55455 TS GCOMP +4
006749,000196: 13,2175 55456 TS GCOMP +5
006750,000197:
006751,000198: 13,2176 12647 TCF ENDIMU # END OF COARSE ALIGNMENT.
006752,000199:
006753,000200: 13,2177 62205 COARSERR AD COARSTOL # 2 DEGREES.
006754,000201: 13,2200 00006 EXTEND
006755,000202: 13,2201 62166 BZMF CORSCHK2
006756,000203:
006757,000204: 13,2202 05644 TC ALARM # COARSE ALIGN ERROR.
006758,000205: 13,2203 00211 OCT 211
006759,000206:
006760,000207: 13,2204 12655 TCF IMUBAD
006761,000208:
006762,000209: 13,2205 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS.
006763,000210:
006764,000211: 13,2206 62761 COMNEG AD -COMMAX
006765,000212: 13,2207 00006 EXTEND
006766,000213: 13,2210 62216 BZMF COMZERO
006767,000214: 13,2211 40000 COM
006768,000215: 13,2212 51454 INDEX CDUIND
006769,000216: 13,2213 55451 TS COMMAND
006770,000217: 13,2214 32762 CA -COMMAX-
006771,000218: 13,2215 02142 TC NEXTCDU
006772,000219:
006773,000220: 13,2216 37657 COMZERO CAF ZERO
006774,000221: 13,2217 51454 INDEX CDUIND
006775,000222: 13,2220 57451 XCH COMMAND
006776,000223: 13,2221 02142 TC NEXTCDU
006777,000224:
006778,000225: 13,2222 32760 SENDPULS CAF 13,14,15
006779,000226: 13,2223 00006 EXTEND
006780,000227: 13,2224 05014 WOR CHAN14
006781,000228: 13,2225 32763 CAF 600MS
006782,000229: 13,2226 12121 TCF COARS2 -1 # AND THEN TO VARDELAY.
006783,000230:
006784,000231: # IMU FINE ALIGN MODE SWITCH.
006785,000232:
006786,000233: 13,2227 00004 IMUFINE INHINT
006787,000234: 13,2230 02671 TC CAGETSTJ # SEE IF IMU BEING CAGED.
006788,000235:
006789,000236: 13,2231 42757 CS BITS4-6 # RESET ZERO, COARSE, AND ECTR ENABLE.
006790,000237: 13,2232 00006 EXTEND
006791,000238: 13,2233 03012 WAND 12
006792,000239:
006793,000240: 13,2234 37641 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE
006794,000241: 13,2235 04451 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE
006795,000242: 13,2236 02247 26003 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN
006796,000243:
006797,000244: 13,2240 32764 CAF 90SEC # GYRO RE-CENTERING TIME.
006798,000245: 13,2241 04451 TC WAITLIST
006799,000246: 13,2242 02245 26003 2CADR IMUFINED
006800,000247:
006801,000248: 13,2244 12033 TCF MODEEXIT
006802,000249:
006803,000250: 13,2245 02657 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU.
006804,000251: 13,2246 12647 TCF ENDIMU
006805,000252:
006806,000253: 13,2247 02664 IFAILOK TC CAGETSTQ # ENABLE IMU FAIL UNLESS IMU BEING CAGED.
006807,000254: 13,2250 14505 TCF TASKOVER # IT IS.
006808,000255:
006809,000256: 13,2251 37647 CAF BIT4 # DONT RESET IMU FAIL INHIBIT IF SOMEONE
006810,000257: 13,2252 00006 EXTEND # HAS GONE INTO COARSE ALIGN.
006811,000258: 13,2253 02012 RAND 12
006812,000259: 13,2254 10000 CCS A
006813,000260: 13,2255 14505 TCF TASKOVER
006814,000261:
006815,000262: 13,2256 47636 CS BIT13 # RESET IMUFAIL.
006816,000263: 13,2257 70361 MASK IMODES30
006817,000264: 13,2260 67636 AD BIT13
006818,000265: 13,2261 54361 TS IMODES30
006819,000266:
006820,000267: 13,2262 47647 CS BIT4
006821,000268: 13,2263 70361 PFAILOK2 MASK IMODES30
006822,000269: 13,2264 54361 TS IMODES30
006823,000270: 13,2265 14505 TCF TASKOVER
006824,000271:
006825,000272: 13,2266 02664 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM.
006826,000273: 13,2267 14505 TCF TASKOVER
006827,000274:
006828,000275: 13,2270 47641 CS BIT10 # RESET IMU AND PIPA FAIL BITS.
006829,000276: 13,2271 70361 MASK IMODES30
006830,000277: 13,2272 67641 AD BIT10
006831,000278: 13,2273 54361 TS IMODES30
006832,000279:
006833,000280: 13,2274 47636 CS BIT13
006834,000281: 13,2275 70362 MASK IMODES33
006835,000282: 13,2276 67636 AD BIT13
006836,000283: 13,2277 54362 TS IMODES33
006837,000284:
006838,000285: 13,2300 47646 CS BIT5
006839,000286: 13,2301 12263 TCF PFAILOK2
006840,000287:
006841,000288: # ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.
006842,000289:
006843,000290: 13,2302 02664 PIPUSE TC CAGETSTQ # DONT ENABLE PIPA FAIL IF IMU BEING CAGED
006844,000291: 13,2303 14077 TCF SWRETURN
006845,000292:
006846,000293: 13,2304 00004 INHINT
006847,000294: 13,2305 37657 CAF ZERO # ZERO COUNTERS.
006848,000295: 13,2306 54037 TS PIPAX
006849,000296: 13,2307 54040 TS PIPAY
006850,000297: 13,2310 54041 TS PIPAZ
006851,000298:
006852,000299: 13,2311 47652 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL
006853,000300: 13,2312 70361 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING.
006854,000301: 13,2313 54361 TS IMODES30
006855,000302:
006856,000303: 13,2314 04132 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW.
006857,000304: 13,2315 25176 CADR SETISSW # (OR GO OFF ON PIPFREE).
006858,000305:
006859,000306: 13,2316 12033 TCF MODEEXIT
006860,000307:
006861,000308: 13,2317 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DONT LIGHT
006862,000309: 13,2320 47652 CS BIT1 # ISS WARNING.
006863,000310: 13,2321 70361 MASK IMODES30
006864,000311: 13,2322 67652 AD BIT1
006865,000312: 13,2323 54361 TS IMODES30
006866,000313:
006867,000314: 13,2324 77641 MASK BIT10 # IF PIP FAIL ON, DO PROG ALSRM AND RESET
006868,000315: 13,2325 10000 CCS A # ISS WARNING.
006869,000316: 13,2326 12033 TCF MODEEXIT
006870,000317:
006871,000318: 13,2327 05644 TC ALARM
006872,000319: 13,2330 00212 OCT 212
006873,000320:
006874,000321: 13,2331 00004 INHINT
006875,000322:
006876,000323: 13,2332 12314 TCF PIPFREE2
006877,000324:
006878,000325: # THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS
006879,000326: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE
006880,000327: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.
006881,000328:
006882,000329: 13,2333 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY.
006883,000330:
006884,000331: 13,2333 54145 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR.
006885,000332: 13,2334 02671 TC CAGETSTJ # DONT PROCEED IF IMU BEING CAGED.
006886,000333:
006887,000334: 13,2335 10351 CCS LGYRO # SEE IF GYROS BUSY.
006888,000335: 13,2336 02400 TC GYROBUSY # SLEEP.
006889,000336:
006890,000337: 13,2337 54142 TS MPAC +2
006891,000338: 13,2340 37645 CAF BIT6 # ENABLE THE POWER SUPPLY.
006892,000339: 13,2341 00006 EXTEND
006893,000340: 13,2342 05014 WOR 14
006894,000341:
006895,000342: 13,2343 37650 CAF FOUR
006896,000343: 13,2344 00004 GWAKE2 INHINT # (IF A JOB WAS PUT TO SLEEP, THE POWER
006897,000344: 13,2345 04451 TC WAITLIST # SUPPLY IS LEFT ON BY THE WAKING JOB).
006898,000345: 13,2346 02416 26003 2CADR STRTGYRO
006899,000346:
006900,000347: 13,2350 30145 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR
006901,000348: 13,2351 56003 XCH EBANK # RESTORATION ON RETURN.
006902,000349: 13,2352 56145 XCH MPAC +5
006903,000350: 13,2353 54351 TS LGYRO # RESERVES GYROS.
006904,000351: 13,2354 75466 MASK LOW8
006905,000352: 13,2355 54065 TS ITEMP1
006906,000353:
006907,000354: 13,2356 37651 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS.
006908,000355: 13,2357 54143 GYROAGRE TS MPAC +3
006909,000356: 13,2360 60000 DOUBLE
006910,000357: 13,2361 60065 AD ITEMP1
006911,000358: 13,2362 54144 TS MPAC +4
006912,000359: 13,2363 00006 EXTEND
006913,000360: 13,2364 50000 INDEX A
006914,000361: 13,2365 31401 DCA 1400
006915,000362: 13,2366 52141 DXCH MPAC
006916,000363: 13,2367 07230 TC TPAGREE
006917,000364: 13,2370 52141 DXCH MPAC
006918,000365: 13,2371 50144 INDEX MPAC +4
006919,000366: 13,2372 53401 DXCH 1400
006920,000367:
006921,000368: 13,2373 10143 CCS MPAC +3
006922,000369: 13,2374 12357 TCF GYROAGRE
006923,000370:
006924,000371: 13,2375 30145 CA MPAC +5 # RESTORE CALLER'S EBANK.
006925,000372: 13,2376 54003 TS EBANK
006926,000373: 13,2377 12033 TCF MODEEXIT
006927,000374:
006928,000375: # ROUTINES TO ALLOW TORQUING BY ONLY ONE JOB AT A TIME.
006929,000376:
006930,000377: 13,2400 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR.
006931,000378: 13,2401 30120 DCA BUF2
006932,000379: 13,2402 52141 DXCH MPAC
006933,000380: 13,2403 32415 REGSLEEP CAF LGWAKE
006934,000381: 13,2404 14331 TCF JOBSLEEP
006935,000382:
006936,000383: 13,2405 10351 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY.
006937,000384: 13,2406 12403 TCF REGSLEEP # IF SO, SLEEP SOME MORE.
006938,000385:
006939,000386: 13,2407 54142 TS MPAC +2
006940,000387: 13,2410 00006 EXTEND
006941,000388: 13,2411 30141 DCA MPAC
006942,000389: 13,2412 52120 DXCH BUF2 # RESTORE SWRETURN INFO.
006943,000390: 13,2413 37652 CAF ONE
006944,000391: 13,2414 12344 TCF GWAKE2
006945,000392:
006946,000393: 13,2415 26405 LGWAKE CADR GWAKE
006947,000394:
006948,000395: # GYRO-TORQUING WAITLIST TASKS.
006949,000396:
006950,000397: 13,2416 42644 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO.
006951,000398: 13,2417 00006 EXTEND
006952,000399: 13,2420 03014 WAND 14
006953,000400:
006954,000401: 13,2421 02657 TC CAGETEST
006955,000402:
006956,000403: 13,2422 30351 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14.
006957,000404: 13,2423 00006 EXTEND
006958,000405: 13,2424 77647 MP BIT4
006959,000406: 13,2425 50000 INDEX A
006960,000407: 13,2426 12427 TCF +1
006961,000408: 13,2427 02456 TC GSELECT # =0. DO Y GYRO.
006962,000409: 13,2430 00202 OCT 00202
006963,000410:
006964,000411: 13,2431 02456 TC GSELECT # =1. DO Z GYRO.
006965,000412: 13,2432 00302 OCT 00302
006966,000413:
006967,000414: 13,2433 02454 TC GSELECT -2 # =2. DO X GYRO.
006968,000415: 13,2434 00100 OCT 00100
006969,000416:
006970,000417: 13,2435 37657 CAF ZERO # =3. DONE
006971,000418: 13,2436 54351 TS LGYRO
006972,000419: 13,2437 32415 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB.
006973,000420: 13,2440 04335 TC JOBWAKE
006974,000421:
006975,000422: 13,2441 37651 CAF BIT2 # DONT RESET POWER SUPPLY IF BIT SET
006976,000423: 13,2442 70362 MASK IMODES33 # (ONLY DURING GYRO TORQUE SCALE FACTOR
006977,000424: 13,2443 10000 CCS A # TEST).
006978,000425: 13,2444 12453 TCF NORESET
006979,000426:
006980,000427: 13,2445 10071 CCS LOCCTR # IF A JOB WAS AWAKENED, DONT RESET GYRO
006981,000428: 13,2446 12453 TCF NORESET # ENABLE.
006982,000429:
006983,000430: 13,2447 12453 TCF NORESET
006984,000431:
006985,000432: 13,2450 47645 CS BIT6 # IF NO JOB AWAKENED, RESET GYRO ENABLE.
006986,000433: 13,2451 00006 EXTEND
006987,000434: 13,2452 03014 WAND 14
006988,000435:
006989,000436: 13,2453 12245 NORESET TCF IMUFINED
006990,000437:
006991,000438: 13,2454 47650 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X.
006992,000439: 13,2455 26351 ADS LGYRO
006993,000440:
006994,000441: 13,2456 50002 GSELECT INDEX Q # SELECT GYRO.
006995,000442: 13,2457 30000 CAF 0 # PACKED WORD CONTAINS GYRO SELECT BITS
006996,000443: 13,2460 54071 TS ITEMP4 # AND INCREMENT TO LGYRO.
006997,000444: 13,2461 77656 MASK SEVEN
006998,000445: 13,2462 67636 AD BIT13
006999,000446: 13,2463 26351 ADS LGYRO
007000,000447: 13,2464 54003 TS EBANK
007001,000448: 13,2465 75466 MASK LOW8
007002,000449: 13,2466 54065 TS ITEMP1
007003,000450:
007004,000451: 13,2467 47656 CS SEVEN
007005,000452: 13,2470 70071 MASK ITEMP4
007006,000453: 13,2471 54071 TS ITEMP4
007007,000454:
007008,000455: 13,2472 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING.
007009,000456: 13,2473 50065 INDEX ITEMP1
007010,000457: 13,2474 31401 DCA 1400
007011,000458: 13,2475 52075 DXCH RUPTREG1
007012,000459:
007013,000460: 13,2476 10074 CCS RUPTREG1
007014,000461: 13,2477 12512 TCF MAJ+
007015,000462: 13,2500 12502 TCF +2
007016,000463: 13,2501 12625 TCF MAJ-
007017,000464:
007018,000465: 13,2502 10075 CCS RUPTREG2
007019,000466: 13,2503 12507 TCF MIN+
007020,000467: 13,2504 12422 TCF STRTGYR2
007021,000468: 13,2505 12622 TCF MIN-
007022,000469: 13,2506 12422 TCF STRTGYR2
007023,000470:
007024,000471: 13,2507 62543 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST
007025,000472: 13,2510 00006 EXTEND # 16 GYRO PULSES.
007026,000473: 13,2511 62422 BZMF STRTGYR2
007027,000474:
007028,000475: 13,2512 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT.
007029,000476: 13,2513 32646 DCA GYROFRAC
007030,000477: 13,2514 20075 DAS RUPTREG1
007031,000478:
007032,000479: 13,2515 30071 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO.
007033,000480: 13,2516 00006 EXTEND
007034,000481: 13,2517 05014 WOR 14
007035,000482:
007036,000483: 13,2520 36027 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS
007037,000484: 13,2521 70075 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG
007038,000485: 13,2522 56075 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION
007039,000486: 13,2523 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE
007040,000487: 13,2524 77643 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF
007041,000488: 13,2525 54066 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND.
007042,000489: 13,2526 30074 CA RUPTREG1
007043,000490: 13,2527 00006 EXTEND
007044,000491: 13,2530 77642 MP BIT9
007045,000492: 13,2531 54074 TS RUPTREG1
007046,000493: 13,2532 30001 CA L
007047,000494: 13,2533 00006 EXTEND
007048,000495: 13,2534 77635 MP BIT14
007049,000496: 13,2535 26066 ADS ITEMP2 # INITIAL COMMAND.
007050,000497:
007051,000498: 13,2536 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED
007052,000499: 13,2537 30075 DCA RUPTREG1 # (MORE THAN 16383 PULSES).
007053,000500: 13,2540 67661 AD MINUS1
007054,000501: 13,2541 10000 CCS A
007055,000502: 13,2542 12566 TCF LONGGYRO
007056,000503: 13,2543 77600 -GYROMIN OCT -177 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD.
007057,000504:
007058,000505: 13,2544 12550 TCF +4
007059,000506:
007060,000507: 13,2545 37635 CAF BIT14
007061,000508: 13,2546 26066 ADS ITEMP2
007062,000509: 13,2547 37657 CAF ZERO
007063,000510:
007064,000511: 13,2550 50065 +4 INDEX ITEMP1
007065,000512: 13,2551 53401 DXCH 1400
007066,000513: 13,2552 30066 CA ITEMP2 # ENTIRE COMMAND.
007067,000514: 13,2553 54047 LASTSEG TS GYROCMD
007068,000515: 13,2554 00006 EXTEND
007069,000516: 13,2555 77641 MP BIT10 # WAITLIST DT
007070,000517: 13,2556 66165 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES.
007071,000518: 13,2557 04451 TC WAITLIST
007072,000519: 13,2560 02416 26003 2CADR STRTGYRO
007073,000520:
007074,000521: 13,2562 37641 GYROEXIT CAF BIT10 # TURN ON GYRO ACTIVITY TO START TRAIN.
007075,000522: 13,2563 00006 EXTEND
007076,000523: 13,2564 05014 WOR 14
007077,000524: 13,2565 14505 TCF TASKOVER
007078,000525:
007079,000526: 13,2566 50065 LONGGYRO INDEX ITEMP1
007080,000527: 13,2567 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF
007081,000528: 13,2570 37635 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192.
007082,000529: 13,2571 60066 AD ITEMP2
007083,000530: 13,2572 54047 TS GYROCMD
007084,000531:
007085,000532: 13,2573 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS
007086,000533: 13,2574 77641 MP BIT10 # ALMOST OUT.
007087,000534: 13,2575 67663 AD NEG3
007088,000535: 13,2576 04451 TC WAITLIST
007089,000536: 13,2577 02602 26003 2CADR 8192AUG
007090,000537:
007091,000538: 13,2601 12562 TCF GYROEXIT
007092,000539:
007093,000540: 13,2602 02657 8192AUG TC CAGETEST
007094,000541:
007095,000542: 13,2603 30351 CA LGYRO # ADD 8192 PULSES TO GYROCMD
007096,000543: 13,2604 54003 TS EBANK
007097,000544: 13,2605 75466 MASK LOW8
007098,000545: 13,2606 54065 TS ITEMP1
007099,000546:
007100,000547: 13,2607 50065 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG.
007101,000548: 13,2610 11400 CCS 1400
007102,000549: 13,2611 12615 TCF AUG2 # MORE TO COME.
007103,000550:
007104,000551: 13,2612 37635 CAF BIT14
007105,000552: 13,2613 26047 ADS GYROCMD
007106,000553: 13,2614 12554 TCF LASTSEG +1
007107,000554:
007108,000555: 13,2615 50065 AUG2 INDEX ITEMP1
007109,000556: 13,2616 55400 TS 1400
007110,000557: 13,2617 37635 CAF BIT14
007111,000558: 13,2620 26047 ADS GYROCMD
007112,000559: 13,2621 12573 TCF AUG3 # COMPUTE DT.
007113,000560:
007114,000561: 13,2622 62543 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT.
007115,000562: 13,2623 00006 EXTEND
007116,000563: 13,2624 62422 BZMF STRTGYR2
007117,000564:
007118,000565: 13,2625 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT.
007119,000566: 13,2626 42646 DCS GYROFRAC
007120,000567: 13,2627 20075 DAS RUPTREG1
007121,000568:
007122,000569: 13,2630 30071 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO.
007123,000570: 13,2631 67642 AD BIT9
007124,000571: 13,2632 00006 EXTEND
007125,000572: 13,2633 05014 WOR 14
007126,000573:
007127,000574: 13,2634 40074 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE.
007128,000575: 13,2635 54074 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE
007129,000576: 13,2636 40075 CS RUPTREG2 # POSITIVE - BIT9 OF CHAN 14 DETERMINES
007130,000577: 13,2637 76027 MASK LOW7 # THE SIGN OF THE COMMAND.
007131,000578: 13,2640 40000 COM
007132,000579: 13,2641 56075 XCH RUPTREG2
007133,000580: 13,2642 40000 COM
007134,000581: 13,2643 12523 TCF GMERGE
007135,000582:
007136,000583: 13,2644 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS.
007137,000584:
007138,000585: 13,2645 00000 00034 GYROFRAC 2DEC .215 B -21
007139,000586:
007140,000587: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.
007141,000588:
007142,000589: 13,2647 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURED OR IF
007143,000590: 13,2650 00011 READ 11 # ISS WARNING IS ON.
007144,000591: 13,2651 77652 MASK BIT1
007145,000592: 13,2652 10000 CCS A
007146,000593: 13,2653 12655 TCF IMUBAD
007147,000594:
007148,000595: 13,2654 12703 IMUGOOD TCF GOODEND # WITH C(A) = 0.
007149,000596:
007150,000597: 13,2655 37657 IMUBAD CAF ZERO
007151,000598: 13,2656 12700 TCF BADEND
007152,000599:
007153,000600: 13,2657 37645 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE
007154,000601: 13,2660 70361 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED.
007155,000602: 13,2661 10000 CCS A
007156,000603: 13,2662 12655 TCF IMUBAD # DIRECTLY.
007157,000604: 13,2663 00002 TC Q # WITH C(A) = +0.
007158,000605:
007159,000606: 13,2664 40361 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED.
007160,000607: 13,2665 77645 MASK BIT6
007161,000608: 13,2666 10000 CCS A
007162,000609: 13,2667 24002 INCR Q
007163,000610: 13,2670 00002 TC Q
007164,000611:
007165,000612: 13,2671 40361 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION
007166,000613: 13,2672 77645 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED,
007167,000614: 13,2673 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION
007168,000615: 13,2674 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY
007169,000616:
007170,000617: 13,2675 47657 CS ZERO # TO SWRETURN.
007171,000618: 13,2676 54363 TS IMUCADR
007172,000619: 13,2677 12033 TCF MODEEXIT
007173,000620:
007174,000621: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION
007175,000622: # OR AT BADEND FOR A N UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.
007176,000623:
007177,000624: 13,2700 54075 BADEND TS RUPTREG2 # DEVICE INDEX.
007178,000625: 13,2701 47657 CS ZERO # FOR FAILURE.
007179,000626: 13,2702 12705 TCF GOODEND +2
007180,000627:
007181,000628: 13,2703 54075 GOODEND TS RUPTREG2
007182,000629: 13,2704 47652 CS ONE # FOR SUCCESS.
007183,000630:
007184,000631: 13,2705 54076 TS RUPTREG3
007185,000632: 13,2706 50075 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP.
007186,000633: 13,2707 10363 CCS MODECADR
007187,000634: 13,2710 12712 TCF +2 # YES - WAKE IT UP.
007188,000635: 13,2711 12722 TCF ENDMODE # IF 0, PROGRAM NOT IN YET.
007189,000636:
007190,000637: 13,2712 37657 CAF ZERO # WAKE SLEEPING PROGRAM.
007191,000638: 13,2713 50075 INDEX RUPTREG2
007192,000639: 13,2714 56363 XCH MODECADR
007193,000640: 13,2715 04335 TC JOBWAKE
007194,000641:
007195,000642: 13,2716 40076 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL.
007196,000643: 13,2717 50071 INDEX LOCCTR
007197,000644: 13,2720 26150 ADS LOC
007198,000645:
007199,000646: 13,2721 14505 TCF TASKOVER
007200,000647:
007201,000648: 13,2722 30076 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT
007202,000649: 13,2723 50075 INDEX RUPTREG2 # UNSUCCESSFUL - -1 INDICATES COMPLETE AND
007203,000650: 13,2724 54363 TS MODECADR # SUCCESSFUL.
007204,000651: 13,2725 14505 TCF TASKOVER
007205,000652:
007206,000653: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.
007207,000654:
007208,000655: 13,2726 37652 AOTSTALL CAF ONE # AOT.
007209,000656: 13,2727 02731 TC STALL
007210,000657:
007211,000658: 13,2730 13,2726 OPTSTALL EQUALS AOTSTALL
007212,000659:
007213,000660: 13,2730 37657 IMUSTALL CAF ZERO # IMU.
007214,000661:
007215,000662: 13,2731 00004 STALL INHINT
007216,000663: 13,2732 54075 TS RUPTREG2 # SAVE DEVICE INDEX.
007217,000664: 13,2733 50000 INDEX A # SEE IF OPERATION COMPLETE.
007218,000665: 13,2734 10363 CCS MODECADR
007219,000666: 13,2735 12753 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0.
007220,000667: 13,2736 12747 TCF MODESLP # OPERATION INCOMPLETE.
007221,000668: 13,2737 12743 TCF MODEGOOD # COMPLETE AND GOOD IF = -1.
007222,000669:
007223,000670: 13,2740 50075 MG2 INDEX RUPTREG2 # COMPLETE AND FAILED IF -0. RESET TO +0.
007224,000671: 13,2741 54363 TS MODECADR # RETURN TO CALLER.
007225,000672: 13,2742 12033 TCF MODEEXIT
007226,000673:
007227,000674: 13,2743 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1.
007228,000675: 13,2744 12753 TCF MODABORT
007229,000676:
007230,000677: 13,2745 24117 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND
007231,000678: 13,2746 12740 TCF MG2 # RETURN IMMEDIATELY, SETTING CADR = +0.
007232,000679:
007233,000680: 13,2747 04113 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY.
007234,000681: 13,2750 50075 INDEX RUPTREG2
007235,000682: 13,2751 54363 TS MODECADR
007236,000683: 13,2752 14331 TCF JOBSLEEP
007237,000684:
007238,000685: 13,2753 05677 MODABORT TC ABORT # TWO PROGRAMS USING SAME DEVICE.
007239,000686: 13,2754 01210 OCT 1210
007240,000687:
007241,000688: # CONSTANTS FOR MODE SWITCHING ROUTINES
007242,000689:
007243,000690: 13,2755 00014 BITS3&4 OCT 14
007244,000691: 13,2756 00050 BITS4&6 OCT 00050
007245,000692: 13,2757 00070 BITS4-6 OCT 00070
007246,000693: 13,2760 7643 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7.
007247,000694: 13,2760 70000 13,14,15 OCT 70000
007248,000695:
007249,000696: 13,2761 77500 -COMMAX DEC -191 B-14
007250,000697: 13,2762 77477 -COMMAX- DEC -192 B-14
007251,000698: 13,2763 00074 600MS DEC 60 B-14
007252,000699: 13,2764 4662 3SECSM EQUALS 3SECS
007253,000700: 13,2764 21450 90SEC DEC 9000 B-14
007254,000701:
007255,000702: 13,2765 ENDIMODS EQUALS
End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc