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