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