Source Code

055798,000001: # Copyright: Public domain. 055799,000002: # Filename: IMU_MODE_SWITCHING_ROUTINES.agc 055800,000003: # Purpose: Part of the source code for Luminary 1A build 099. 055801,000004: # It is part of the source code for the Lunar Module's (LM) 055802,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 055803,000006: # Assembler: yaYUL 055804,000007: # Contact: Onno Hommes <ohommes@cmu.edu>. 055805,000008: # Website: www.ibiblio.org/apollo. 055806,000009: # Pages: 1309-1337 055807,000010: # Mod history: 2009-05-28 OH Transcribed from page images. 055808,000011: # 2009-06-05 RSB Fixed a typo. 055809,000012: 055810,000013: # This source code has been transcribed or otherwise adapted from 055811,000014: # digitized images of a hardcopy from the MIT Museum. The digitization 055812,000015: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 055813,000016: # the Museum. Many thanks to both. The images (with suitable reduction 055814,000017: # in storage size and consequent reduction in image quality as well) are 055815,000018: # available online at www.ibiblio.org/apollo. If for some reason you 055816,000019: # find that the images are illegible, contact me at info@sandroid.org 055817,000020: # about getting access to the (much) higher-quality images which Paul 055818,000021: # actually created. 055819,000022: 055820,000023: # Notations on the hardcopy document read, in part: 055821,000024: 055822,000025: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 055823,000026: # 16:27 JULY 14, 1969 055824,000027: 055825,000028: 055826,000029: # Page 1309 055827,000030: 5457 BLOCK 02 055828,000031: 4000 SETLOC FFTAG3 055829,000032: 4000 BANK 055830,000033: 055831,000034: 5457 E3,1471 EBANK= COMMAND 055832,000035: 055833,000036: # FIXED-FIXED ROUTINES 055834,000037: 055835,000038: 5457 COUNT* $$/IMODE 055836,000039: 5457 34755 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS. 055837,000040: 5460 54032 TS CDUX 055838,000041: 5461 54033 TS CDUY 055839,000042: 5462 54034 TS CDUZ 055840,000043: 5463 00002 TC Q 055841,000044: 055842,000045: 5464 4743 SPSCODE = BIT9 055843,000046: 055844,000047: # Page 1310 055845,000048: # IMU ZEROING ROUTINES 055846,000049: 055847,000050: 11,3776 BANK 11 055848,000051: 07,2000 SETLOC MODESW 055849,000052: 07,2000 BANK 055850,000053: 055851,000054: 07,2714 COUNT* $$/IMODE 055852,000055: 07,2714 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS. 055853,000056: 07,2715 41036 CS DSPTAB +11D # DON'T ZERO CDUS IS IMU IN GIMBAL LOCK AND 055854,000057: 07,2716 74771 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION) 055855,000058: 07,2717 10000 CCS A 055856,000059: 07,2720 12724 TCF IMUZEROA 055857,000060: 055858,000061: 07,2721 05567 TC ALARM # IF SO. 055859,000062: 07,2722 00206 OCT 00206 055860,000063: 055861,000064: 07,2723 13657 TCF CAGETSTJ +4 # IMMEDIATE FAILURE. 055862,000065: 055863,000066: 07,2724 03653 IMUZEROA TC CAGETSTJ 055864,000067: 055865,000068: 07,2725 41303 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 055866,000069: 07,2726 74773 MASK SUPER011 # BIT5 FOR GROUND 055867,000070: 07,2727 27303 ADS IMODES33 055868,000071: 055869,000072: 07,2730 41302 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE 055870,000073: 07,2731 75751 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN). 055871,000074: 07,2732 27302 ADS IMODES30 055872,000075: 055873,000076: 07,2733 44771 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR 055874,000077: 07,2734 00006 EXTEND # COUNTER DISABLED. 055875,000078: 07,2735 03012 WAND CHAN12 055876,000079: 055877,000080: 07,2736 03266 TC NOATTOFF # TURN OFF NO ATT LAMP. 055878,000081: 055879,000082: 07,2737 34747 CAF BIT5 055880,000083: 07,2740 00006 EXTEND 055881,000084: 07,2741 05012 WOR CHAN12 055882,000085: 055883,000086: 07,2742 05457 TC ZEROICDU 055884,000087: 07,2743 34746 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO 055885,000088: 07,2744 05203 TC WAITLIST # RECEIVE ITS PULSE TRAIN. 055886,000089: 07,2745 E3,1474 EBANK= CDUIND 055887,000090: 07,2745 02757 16103 2CADR IMUZERO2 055888,000091: 055889,000092: 07,2747 41302 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT. 055890,000093: 07,2750 74743 MASK BIT9 055891,000094: 07,2751 10000 CCS A 055892,000095: 07,2752 12755 TCF MODEEXIT 055893,000096: # Page 1311 055894,000097: 07,2753 05567 TC ALARM 055895,000098: 07,2754 00210 OCT 210 055896,000099: 055897,000100: 07,2755 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT. 055898,000101: 07,2756 14631 TCF SWRETURN 055899,000102: 055900,000103: 07,2757 03641 IMUZERO2 TC CAGETEST 055901,000104: 07,2760 05457 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ 055902,000105: 055903,000106: 07,2761 44747 CS BIT5 # REMOVE ZERO DISCRETE. 055904,000107: 07,2762 00006 EXTEND 055905,000108: 07,2763 03012 WAND CHAN12 055906,000109: 055907,000110: 07,2764 34741 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS 055908,000111: 07,2765 05224 TC VARDELAY 055909,000112: 055910,000113: 07,2766 03641 IMUZERO3 TC CAGETEST 055911,000114: 07,2767 45751 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT. 055912,000115: 07,2770 71302 MASK IMODES30 055913,000116: 07,2771 55302 TS IMODES30 055914,000117: 055915,000118: 07,2772 44773 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES 055916,000119: 07,2773 71303 MASK IMODES33 # BIT5 FOR GROUND 055917,000120: 07,2774 55303 TS IMODES33 055918,000121: 055919,000122: 07,2775 04674 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE 055920,000123: 07,2776 14703 CADR SETISSW # PRESENT. 055921,000124: 055922,000125: 07,2777 13631 TCF ENDIMU 055923,000126: 055924,000127: # Page 1312 055925,000128: # IMU COARSE ALIGN MODE. 055926,000129: 055927,000130: 07,3000 00004 IMUCOARS INHINT 055928,000131: 07,3001 03653 TC CAGETSTJ 055929,000132: 07,3002 03144 TC SETCOARS 055930,000133: 055931,000134: 07,3003 36242 CAF SIX 055932,000135: 07,3004 05203 TC WAITLIST 055933,000136: 07,3005 E3,1474 EBANK= CDUIND 055934,000137: 07,3005 03010 16103 2CADR COARS 055935,000138: 055936,000139: 07,3007 12755 TCF MODEEXIT 055937,000140: 055938,000141: 07,3010 03641 COARS TC CAGETEST 055939,000142: 07,3011 34746 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 055940,000143: 07,3012 00006 EXTEND 055941,000144: 07,3013 05012 WOR CHAN12 055942,000145: 055943,000146: 07,3014 34752 CAF TWO # SET CDU INDICATOR 055944,000147: 07,3015 55474 COARS1 TS CDUIND 055945,000148: 055946,000149: 07,3016 51474 INDEX CDUIND # COMPUTE THETAD -- THETAA IN 1'S 055947,000150: 07,3017 30321 CA THETAD # COMPLEMENT FORM 055948,000151: 07,3020 00006 EXTEND 055949,000152: 07,3021 51474 INDEX CDUIND 055950,000153: 07,3022 20032 MSU CDUX 055951,000154: 07,3023 00006 EXTEND 055952,000155: 07,3024 74737 MP BIT13 # SHIFT RIGHT 2 055953,000156: 07,3025 56001 XCH L # ROUND 055954,000157: 07,3026 60000 DOUBLE 055955,000158: 07,3027 54061 TS ITEMP1 055956,000159: 07,3030 13032 TCF +2 055957,000160: 07,3031 26001 ADS L 055958,000161: 055959,000162: 07,3032 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED 055960,000163: 07,3033 23471 LXCH COMMAND 055961,000164: 07,3034 11474 CCS CDUIND 055962,000165: 07,3035 03015 TC COARS1 055963,000166: 055964,000167: 07,3036 34752 CAF TWO # MINIMUM OF 4 MS WAIT 055965,000168: 07,3037 05224 TC VARDELAY 055966,000169: 055967,000170: # Page 1313 055968,000171: 07,3040 03641 COARS2 TC CAGETEST # DON'T CONTINUE IF CAGED. 055969,000172: 07,3041 54061 TS ITEMP1 # SET TO +0. 055970,000173: 07,3042 34752 CAF TWO # SET CDU INDICATOR. 055971,000174: 07,3043 55474 +3 TS CDUIND 055972,000175: 055973,000176: 07,3044 51474 INDEX CDUIND 055974,000177: 07,3045 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED 055975,000178: 07,3046 03052 TC COMPOS # GREATER THAN MAX ALLOWED 055976,000179: 07,3047 03061 TC NEXTCDU +1 055977,000180: 07,3050 03117 TC COMNEG 055978,000181: 07,3051 03061 TC NEXTCDU +1 055979,000182: 055980,000183: 07,3052 63745 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED 055981,000184: 07,3053 00006 EXTEND # MINUS ONE 055982,000185: 07,3054 63127 BZMF COMZERO 055983,000186: 07,3055 51474 INDEX CDUIND 055984,000187: 07,3056 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES 055985,000188: 07,3057 43746 CS -COMMAX- # ALLOWED 055986,000189: 055987,000190: 07,3060 24061 NEXTCDU INCR ITEMP1 055988,000191: 07,3061 64754 AD NEG0 055989,000192: 07,3062 51474 INDEX CDUIND 055990,000193: 07,3063 54050 TS CDUXCMD # SET UP COMMAND REGISTER. 055991,000194: 055992,000195: 07,3064 11474 CCS CDUIND 055993,000196: 07,3065 03043 TC COARS2 +3 055994,000197: 055995,000198: 07,3066 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT. 055996,000199: 07,3067 13133 TCF SENDPULS 055997,000200: 055998,000201: 07,3070 05221 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE. 055999,000202: 07,3071 00226 DEC 150 B-14 056000,000203: 056001,000204: 07,3072 34752 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT 056002,000205: 07,3073 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD. 056003,000206: 07,3074 50000 INDEX A 056004,000207: 07,3075 30032 CA CDUX 056005,000208: 07,3076 00006 EXTEND 056006,000209: 07,3077 50061 INDEX ITEMP1 056007,000210: 07,3100 20321 MSU THETAD 056008,000211: 07,3101 10000 CCS A 056009,000212: 07,3102 13110 TCF COARSERR 056010,000213: 07,3103 13105 TCF CORSCHK2 056011,000214: 07,3104 13110 TCF COARSERR 056012,000215: 056013,000216: # Page 1314 056014,000217: 07,3105 10061 CORSCHK2 CCS ITEMP1 056015,000218: 07,3106 13073 TCF CHKCORS 056016,000219: 07,3107 13631 TCF ENDIMU # END OF COARSE ALIGNMENT 056017,000220: 056018,000221: 07,3110 63116 COARSERR AD COARSTOL # 2 DEGREES. 056019,000222: 07,3111 00006 EXTEND 056020,000223: 07,3112 63105 BZMF CORSCHK2 056021,000224: 056022,000225: 07,3113 05567 TC ALARM # COARSE ALIGN ERROR. 056023,000226: 07,3114 00211 OCT 211 056024,000227: 056025,000228: 07,3115 13637 TCF IMUBAD 056026,000229: 056027,000230: 07,3116 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS 056028,000231: 056029,000232: 07,3117 63745 COMNEG AD -COMMAX 056030,000233: 07,3120 00006 EXTEND 056031,000234: 07,3121 63127 BZMF COMZERO 056032,000235: 07,3122 40000 COM 056033,000236: 07,3123 51474 INDEX CDUIND 056034,000237: 07,3124 55471 TS COMMAND 056035,000238: 07,3125 33746 CA -COMMAX- 056036,000239: 07,3126 03060 TC NEXTCDU 056037,000240: 056038,000241: 07,3127 34755 COMZERO CAF ZERO 056039,000242: 07,3130 51474 INDEX CDUIND 056040,000243: 07,3131 57471 XCH COMMAND 056041,000244: 07,3132 03060 TC NEXTCDU 056042,000245: 056043,000246: 07,3133 37740 SENDPULS CAF 13,14,15 056044,000247: 07,3134 00006 EXTEND 056045,000248: 07,3135 05014 WOR CHAN14 056046,000249: 07,3136 33747 CAF 600MS 056047,000250: 07,3137 13037 TCF COARS2 -1 # THEN TO VARDELAY 056048,000251: 056049,000252: 07,3140 34746 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 056050,000253: 07,3141 00006 EXTEND 056051,000254: 07,3142 05012 WOR CHAN12 056052,000255: 07,3143 05261 TC TASKOVER 056053,000256: 056054,000257: # Page 1315 056055,000258: 07,3144 34750 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN 056056,000259: 07,3145 00006 EXTEND 056057,000260: 07,3146 02012 RAND CHAN12 056058,000261: 07,3147 10000 CCS A 056059,000262: 07,3150 00002 TC Q 056060,000263: 056061,000264: 07,3151 44746 CS BIT6 # CLEAR ISS ERROR COUNTERS 056062,000265: 07,3152 00006 EXTEND 056063,000266: 07,3153 03012 WAND CHAN12 056064,000267: 056065,000268: 07,3154 44742 CS BIT10 # KNOCK DOWN GYRO ACTIVITY 056066,000269: 07,3155 00006 EXTEND 056067,000270: 07,3156 03014 WAND CHAN14 056068,000271: 07,3157 44755 CS ZERO 056069,000272: 07,3160 54047 TS GYROCMD 056070,000273: 056071,000274: 07,3161 34750 CAF BIT4 # PUT ISS IN COARSE ALIGN 056072,000275: 07,3162 00006 EXTEND 056073,000276: 07,3163 05012 WOR CHAN12 056074,000277: 056075,000278: 07,3164 41036 CS DSPTAB +11D # TURN ON NO ATT LAMP 056076,000279: 07,3165 73207 MASK OCT40010 056077,000280: 07,3166 27036 ADS DSPTAB +11D 056078,000281: 056079,000282: 07,3167 41303 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 056080,000283: 07,3170 74746 MASK BIT6 056081,000284: 07,3171 27303 ADS IMODES33 056082,000285: 056083,000286: 07,3172 41302 CS IMODES30 # DISABLE IMUFAIL 056084,000287: 07,3173 74750 MASK BIT4 056085,000288: 07,3174 27302 ADS IMODES30 056086,000289: 056087,000290: 07,3175 44747 RNDREFDR CS TRACKBIT # CLEAR TRACK FLAG 056088,000291: 07,3176 70075 MASK FLAGWRD1 056089,000292: 07,3177 54075 TS FLAGWRD1 056090,000293: 056091,000294: 07,3200 44735 CS DRFTBIT # CLEAR DRIFT FLAG 056092,000295: 07,3201 70076 MASK FLAGWRD2 056093,000296: 07,3202 54076 TS FLAGWRD2 056094,000297: 056095,000298: 07,3203 44737 CS REFSMBIT # CLEAR REFSMMAT FLAG 056096,000299: 07,3204 70077 MASK FLAGWRD3 056097,000300: 07,3205 54077 TS FLAGWRD3 056098,000301: 056099,000302: 07,3206 00002 TC Q 056100,000303: 056101,000304: 07,3207 40010 OCT40010 OCT 40010 056102,000305: 056103,000306: # Page 1316 056104,000307: # IMU FINE ALIGN MODE SWITCH. 056105,000308: 056106,000309: 07,3210 00004 IMUFINE INHINT 056107,000310: 07,3211 03653 TC CAGETSTJ # SEE IF IMU BEING CAGED. 056108,000311: 056109,000312: 07,3212 43744 CS BITS4-5 # RESET ZERO AND COARSE 056110,000313: 07,3213 00006 EXTEND 056111,000314: 07,3214 03012 WAND CHAN12 056112,000315: 056113,000316: 07,3215 44746 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED 056114,000317: 07,3216 71303 MASK IMODES33 056115,000318: 07,3217 55303 TS IMODES33 056116,000319: 056117,000320: 07,3220 03266 TC NOATTOFF 056118,000321: 056119,000322: 07,3221 34742 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE 056120,000323: 07,3222 05203 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE 056121,000324: 07,3223 E3,1474 EBANK= CDUIND 056122,000325: 07,3223 03234 16103 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN 056123,000326: 056124,000327: 07,3225 35000 CAF 2SECS 056125,000328: 07,3226 05203 TC WAITLIST 056126,000329: 07,3227 E3,1474 EBANK= CDUIND 056127,000330: 07,3227 03232 16103 2CADR IMUFINED 056128,000331: 056129,000332: 07,3231 12755 TCF MODEEXIT 056130,000333: 056131,000334: 07,3232 03641 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU. 056132,000335: 07,3233 13631 TCF ENDIMU 056133,000336: 056134,000337: # Page 1317 056135,000338: 07,3234 03646 IFAILOK TC CAGETSTQ # ENABLE IMU FAIL UNLESS IMU BEING CAGED. 056136,000339: 07,3235 15261 TCF TASKOVER # IT IS. 056137,000340: 056138,000341: 07,3236 34750 CAF BIT4 # DON'T RESET IMU FAIL INHIBIT IF SOMEONE 056139,000342: 07,3237 00006 EXTEND # HAS GONE INTO COARSE ALIGN. 056140,000343: 07,3240 02012 RAND CHAN12 056141,000344: 07,3241 10000 CCS A 056142,000345: 07,3242 15261 TCF TASKOVER 056143,000346: 056144,000347: 07,3243 41302 CS IMODES30 # RESET IMUFAIL. 056145,000348: 07,3244 74737 MASK BIT13 056146,000349: 07,3245 27302 ADS IMODES30 056147,000350: 07,3246 44750 CS BIT4 056148,000351: 07,3247 71302 PFAILOK2 MASK IMODES30 056149,000352: 07,3250 55302 TS IMODES30 056150,000353: 07,3251 04674 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOW 056151,000354: 07,3252 14703 CADR SETISSW # THAT THE INHIBIT WAS BEEN REMOVED. 056152,000355: 07,3253 15261 TCF TASKOVER 056153,000356: 056154,000357: 07,3254 03646 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM. 056155,000358: 07,3255 15261 TCF TASKOVER 056156,000359: 056157,000360: 07,3256 41302 CS IMODES30 # RESET IMU AND PIPA FAIL BITS. 056158,000361: 07,3257 74742 MASK BIT10 056159,000362: 07,3260 27302 ADS IMODES30 056160,000363: 056161,000364: 07,3261 41303 CS IMODES33 056162,000365: 07,3262 74737 MASK BIT13 056163,000366: 07,3263 27303 ADS IMODES33 056164,000367: 056165,000368: 07,3264 44747 CS BIT5 056166,000369: 07,3265 13247 TCF PFAILOK2 056167,000370: 056168,000371: 07,3266 43207 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP. 056169,000372: 07,3267 71036 MASK DSPTAB +11D 056170,000373: 07,3270 64735 AD BIT15 056171,000374: 07,3271 55036 TS DSPTAB +11D 056172,000375: 07,3272 00002 TC Q 056173,000376: 056174,000377: # Page 1318 056175,000378: # ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE. 056176,000379: 056177,000380: 07,3273 44755 PIPUSE CS ZERO 056178,000381: 07,3274 54037 TS PIPAX 056179,000382: 07,3275 54040 TS PIPAY 056180,000383: 07,3276 54041 TS PIPAZ 056181,000384: 056182,000385: 07,3277 03646 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED 056183,000386: 07,3300 14631 TCF SWRETURN 056184,000387: 056185,000388: 07,3301 00004 INHINT 056186,000389: 07,3302 44753 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL 056187,000390: 07,3303 71302 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING. 056188,000391: 07,3304 55302 TS IMODES30 056189,000392: 056190,000393: 07,3305 04674 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW. 056191,000394: 07,3306 14703 CADR SETISSW # (OR GO OFF ON PIPFREE). 056192,000395: 056193,000396: 07,3307 12755 TCF MODEEXIT 056194,000397: 056195,000398: 07,3310 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DON'T LIGHT 056196,000399: 07,3311 41302 CS IMODES30 # ISS WARNING. 056197,000400: 07,3312 74753 MASK BIT1 056198,000401: 07,3313 27302 ADS IMODES30 056199,000402: 056200,000403: 07,3314 74742 MASK BIT10 # IF PIP FAIL ON, DO PROG ALARM AND RESET 056201,000404: 07,3315 10000 CCS A # ISS WARNING. 056202,000405: 07,3316 12755 TCF MODEEXIT 056203,000406: 056204,000407: 07,3317 05567 TC ALARM 056205,000408: 07,3320 00212 OCT 212 056206,000409: 056207,000410: 07,3321 00004 INHINT 056208,000411: 056209,000412: 07,3322 13305 TCF PIPFREE2 056210,000413: 056211,000414: # Page 1319 056212,000415: # THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIXE REGISTERS 056213,000416: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE 056214,000417: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT AT THE INPUT COMMAND REGISTERS. 056215,000418: 056216,000419: 07,3323 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY. 056217,000420: 056218,000421: 07,3323 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR. 056219,000422: 07,3324 03653 TC CAGETSTJ # DON'T PROCEED IF IMU BEING CAGED. 056220,000423: 056221,000424: 07,3325 11314 CCS LGYRO # SEE IF GYROS BUSY. 056222,000425: 07,3326 03367 TC GYROBUSY # SLEEP. 056223,000426: 056224,000427: 07,3327 54156 TS MPAC +2 056225,000428: 07,3330 34746 CAF BIT6 # ENABLE THE POWER SUPPLY. 056226,000429: 07,3331 00006 EXTEND 056227,000430: 07,3332 05014 WOR CHAN14 056228,000431: 056229,000432: 07,3333 34751 CAF FOUR 056230,000433: 07,3334 05203 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER 056231,000434: 07,3335 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB). 056232,000435: 07,3335 03405 16103 2CADR STRTGYRO 056233,000436: 056234,000437: 07,3337 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR 056235,000438: 07,3340 56003 XCH EBANK # RESTORATION ON RETURN. 056236,000439: 07,3341 56161 XCH MPAC +5 056237,000440: 07,3342 55314 TS LGYRO # RESERVES GYROS. 056238,000441: 07,3343 74357 MASK LOW8 056239,000442: 07,3344 54061 TS ITEMP1 056240,000443: 056241,000444: 07,3345 34752 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS. 056242,000445: 07,3346 54157 GYROAGRE TS MPAC +3 056243,000446: 07,3347 60000 DOUBLE 056244,000447: 07,3350 60061 AD ITEMP1 056245,000448: 07,3351 54160 TS MPAC +4 056246,000449: 07,3352 00006 EXTEND 056247,000450: 07,3353 50000 INDEX A 056248,000451: 07,3354 31401 DCA 1400 056249,000452: 07,3355 52155 DXCH MPAC 056250,000453: 07,3356 07257 TC TPAGREE 056251,000454: 07,3357 52155 DXCH MPAC 056252,000455: 07,3360 50160 INDEX MPAC +4 056253,000456: 07,3361 53401 DXCH 1400 056254,000457: 056255,000458: 07,3362 10157 CCS MPAC +3 056256,000459: 07,3363 13346 TCF GYROAGRE 056257,000460: 056258,000461: 07,3364 30161 CA MPAC +5 # RESTORE CALLER'S EBANK. 056259,000462: 07,3365 54003 TS EBANK 056260,000463: 07,3366 12755 TCF MODEEXIT 056261,000464: 056262,000465: # Page 1320 056263,000466: # ROUTINES TO ALLOW TORQUING ONLY ONE JOB AT A TIME. 056264,000467: 056265,000468: 07,3367 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR. 056266,000469: 07,3370 30134 DCA BUF2 056267,000470: 07,3371 52155 DXCH MPAC 056268,000471: 07,3372 33404 REGSLEEP CAF LGWAKE 056269,000472: 07,3373 15133 TCF JOBSLEEP 056270,000473: 056271,000474: 07,3374 11314 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY. 056272,000475: 07,3375 13372 TCF REGSLEEP # IF SO, SLEEP SOME MORE. 056273,000476: 056274,000477: 07,3376 54156 TS MPAC +2 056275,000478: 07,3377 00006 EXTEND 056276,000479: 07,3400 30155 DCA MPAC 056277,000480: 07,3401 52134 DXCH BUF2 # RESTORE SWRETURN INFO. 056278,000481: 07,3402 34753 CAF ONE 056279,000482: 07,3403 13334 TCF GWAKE2 056280,000483: 056281,000484: 07,3404 17374 LGWAKE CADR GWAKE 056282,000485: 056283,000486: # Page 1321 056284,000487: # GYRO-TORQUING WAITLIST TASKS. 056285,000488: 056286,000489: 07,3405 43626 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO. 056287,000490: 07,3406 00006 EXTEND 056288,000491: 07,3407 03014 WAND CHAN14 056289,000492: 056290,000493: 07,3410 03641 TC CAGETEST 056291,000494: 056292,000495: 07,3411 31314 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14. 056293,000496: 07,3412 00006 EXTEND 056294,000497: 07,3413 74750 MP BIT4 056295,000498: 07,3414 50000 INDEX A 056296,000499: 07,3415 13416 TCF +1 056297,000500: 07,3416 03433 TC GSELECT # =0. DO Y GYRO. 056298,000501: 07,3417 00202 OCT 00202 056299,000502: 056300,000503: 07,3420 03433 TC GSELECT # =1. DO Z GYRO. 056301,000504: 07,3421 00302 OCT 00302 056302,000505: 056303,000506: 07,3422 03431 TC GSELECT -2 # =2. DO X GYRO. 056304,000507: 07,3423 00100 OCT 00100 056305,000508: 056306,000509: 07,3424 34755 CAF ZERO # =3. DONE 056307,000510: 07,3425 55314 TS LGYRO 056308,000511: 07,3426 33404 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB. 056309,000512: 07,3427 05137 TC JOBWAKE 056310,000513: 056311,000514: 07,3430 13232 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY. 056312,000515: # Page 1322 056313,000516: 07,3431 44751 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X. 056314,000517: 07,3432 27314 ADS LGYRO 056315,000518: 056316,000519: 07,3433 50002 GSELECT INDEX Q # SELECT GYRO. 056317,000520: # Was CAF --- RSB 2004, Also CAF in LMY99 OH 2009 056318,000521: 07,3434 30000 CA 0 # PACKED WORD CONTAINS GYRO SELECT BITS 056319,000522: 07,3435 54064 TS ITEMP4 # AND INCREMENT TO LGYRO. 056320,000523: 07,3436 74757 MASK SEVEN 056321,000524: 07,3437 64737 AD BIT13 056322,000525: 07,3440 27314 ADS LGYRO 056323,000526: 07,3441 54003 TS EBANK 056324,000527: 07,3442 74357 MASK LOW8 056325,000528: 07,3443 54061 TS ITEMP1 056326,000529: 056327,000530: 07,3444 44757 CS SEVEN 056328,000531: 07,3445 70064 MASK ITEMP4 056329,000532: 07,3446 54064 TS ITEMP4 056330,000533: 056331,000534: 07,3447 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING. 056332,000535: 07,3450 50061 INDEX ITEMP1 056333,000536: 07,3451 31401 DCA 1400 056334,000537: 07,3452 52071 DXCH RUPTREG1 056335,000538: 056336,000539: 07,3453 10070 CCS RUPTREG1 056337,000540: 07,3454 13467 TCF MAJ+ 056338,000541: 07,3455 13457 TCF +2 056339,000542: 07,3456 13607 TCF MAJ- 056340,000543: 056341,000544: 07,3457 10071 CCS RUPTREG2 056342,000545: 07,3460 13464 TCF MIN+ 056343,000546: 07,3461 13411 TCF STRTGYR2 056344,000547: 07,3462 13604 TCF MIN- 056345,000548: 07,3463 13411 TCF STRTGYR2 056346,000549: 056347,000550: # Page 1323 056348,000551: 07,3464 63520 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST 056349,000552: 07,3465 00006 EXTEND # 16 GYRO PULSES. 056350,000553: 07,3466 63411 BZMF STRTGYR2 056351,000554: 056352,000555: 07,3467 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT. 056353,000556: 07,3470 33630 DCA GYROFRAC 056354,000557: 07,3471 20071 DAS RUPTREG1 056355,000558: 056356,000559: 07,3472 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO. 056357,000560: 07,3473 00006 EXTEND 056358,000561: 07,3474 05014 WOR CHAN14 056359,000562: 056360,000563: 07,3475 36074 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS 056361,000564: 07,3476 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG 056362,000565: 07,3477 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION 056363,000566: 07,3500 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE 056364,000567: 07,3501 74744 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF 056365,000568: 07,3502 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND. 056366,000569: 07,3503 30070 CA RUPTREG1 056367,000570: 07,3504 00006 EXTEND 056368,000571: 07,3505 74743 MP BIT9 056369,000572: 07,3506 54070 TS RUPTREG1 056370,000573: 07,3507 30001 CA L 056371,000574: 07,3510 00006 EXTEND 056372,000575: 07,3511 74736 MP BIT14 056373,000576: 07,3512 26062 ADS ITEMP2 # INITIAL COMMAND. 056374,000577: 056375,000578: 07,3513 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED 056376,000579: 07,3514 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES). 056377,000580: 07,3515 67747 AD MINUS1 056378,000581: 07,3516 10000 CCS A 056379,000582: 07,3517 13543 TCF LONGGYRO 056380,000583: 07,3520 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD 056381,000584: 07,3521 13525 TCF +4 056382,000585: 056383,000586: 07,3522 34736 CAF BIT14 056384,000587: 07,3523 26062 ADS ITEMP2 056385,000588: 07,3524 34755 CAF ZERO 056386,000589: 056387,000590: 07,3525 50061 +4 INDEX ITEMP1 056388,000591: 07,3526 53401 DXCH 1400 056389,000592: # Page 1324 056390,000593: 07,3527 30062 CA ITEMP2 # ENTIRE COMMAND. 056391,000594: 07,3530 54047 LASTSEG TS GYROCMD 056392,000595: 07,3531 00006 EXTEND 056393,000596: 07,3532 74742 MP BIT10 # WAITLIST DT 056394,000597: 07,3533 66245 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES. 056395,000598: 07,3534 05203 TC WAITLIST 056396,000599: 07,3535 E3,1474 EBANK= CDUIND 056397,000600: 07,3535 03405 16103 2CADR STRTGYRO 056398,000601: 056399,000602: 07,3537 34742 GYROEXIT CAF BIT10 056400,000603: 07,3540 00006 EXTEND 056401,000604: 07,3541 05014 WOR CHAN14 056402,000605: 07,3542 15261 TCF TASKOVER 056403,000606: 056404,000607: 07,3543 50061 LONGGYRO INDEX ITEMP1 056405,000608: 07,3544 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF 056406,000609: 07,3545 34736 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192. 056407,000610: 07,3546 60062 AD ITEMP2 056408,000611: 07,3547 54047 TS GYROCMD 056409,000612: 056410,000613: 07,3550 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS 056411,000614: 07,3551 74742 MP BIT10 # ALMOST OUT. 056412,000615: 07,3552 67745 AD NEG3 056413,000616: 07,3553 05203 TC WAITLIST 056414,000617: 07,3554 E3,1474 EBANK= CDUIND 056415,000618: 07,3554 03557 16103 2CADR 8192AUG 056416,000619: 056417,000620: 07,3556 13537 TCF GYROEXIT 056418,000621: 056419,000622: 07,3557 03641 8192AUG TC CAGETEST 056420,000623: 056421,000624: 07,3560 34750 CAF BIT4 056422,000625: 07,3561 00006 EXTEND 056423,000626: 07,3562 02012 RAND CHAN12 056424,000627: 07,3563 10000 CCS A 056425,000628: 07,3564 13637 TCF IMUBAD 056426,000629: 07,3565 31314 CA LGYRO # ADD 8192 PULSES TO GYROCMD 056427,000630: 07,3566 54003 TS EBANK 056428,000631: 07,3567 74357 MASK LOW8 056429,000632: 07,3570 54061 TS ITEMP1 056430,000633: 056431,000634: 07,3571 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG. 056432,000635: 07,3572 11400 CCS 1400 056433,000636: 07,3573 13577 TCF AUG2 # MORE TO COME. 056434,000637: 056435,000638: 07,3574 34736 CAF BIT14 056436,000639: 07,3575 26047 ADS GYROCMD 056437,000640: 07,3576 13531 TCF LASTSEG +1 056438,000641: 056439,000642: # Page 1325 056440,000643: 07,3577 50061 AUG2 INDEX ITEMP1 056441,000644: 07,3600 55400 TS 1400 056442,000645: 07,3601 34736 CAF BIT14 056443,000646: 07,3602 26047 ADS GYROCMD 056444,000647: 07,3603 13550 TCF AUG3 # COMPUTE DT. 056445,000648: 056446,000649: # Page 1326 056447,000650: 07,3604 63520 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT. 056448,000651: 07,3605 00006 EXTEND 056449,000652: 07,3606 63411 BZMF STRTGYR2 056450,000653: 056451,000654: 07,3607 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT. 056452,000655: 07,3610 43630 DCS GYROFRAC 056453,000656: 07,3611 20071 DAS RUPTREG1 056454,000657: 056455,000658: 07,3612 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO. 056456,000659: 07,3613 64743 AD BIT9 056457,000660: 07,3614 00006 EXTEND 056458,000661: 07,3615 05014 WOR CHAN14 056459,000662: 056460,000663: 07,3616 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE. 056461,000664: 07,3617 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE 056462,000665: 07,3620 40071 CS RUPTREG2 # POSITIVE -- BIT9 OF CHAN 14 DETERMINES 056463,000666: 07,3621 76074 MASK LOW7 # THE SIGN OF THE COMMAND. 056464,000667: 07,3622 40000 COM 056465,000668: 07,3623 56071 XCH RUPTREG2 056466,000669: 07,3624 40000 COM 056467,000670: 07,3625 13500 TCF GMERGE 056468,000671: 056469,000672: 07,3626 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS. 056470,000673: 056471,000674: 07,3627 00000 00034 GYROFRAC 2DEC .215 B-21 056472,000675: 056473,000676: # Page 1327 056474,000677: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE. 056475,000678: 056476,000679: 07,3631 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURRED OR IF 056477,000680: 07,3632 00011 READ DSALMOUT # ISS WARNING IS ON. 056478,000681: 07,3633 74753 MASK BIT1 056479,000682: 07,3634 10000 CCS A 056480,000683: 07,3635 13637 TCF IMUBAD 056481,000684: 056482,000685: 07,3636 13665 IMUGOOD TCF GOODEND # WITH C(A) = 0. 056483,000686: 056484,000687: 07,3637 34755 IMUBAD CAF ZERO 056485,000688: 07,3640 13662 TCF BADEND 056486,000689: 056487,000690: 07,3641 34746 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE 056488,000691: 07,3642 71302 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED. 056489,000692: 07,3643 10000 CCS A 056490,000693: 07,3644 13637 TCF IMUBAD # DIRECTLY. 056491,000694: 07,3645 00002 TC Q # WITH C(A) = +0. 056492,000695: 056493,000696: 07,3646 41302 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED. 056494,000697: 07,3647 74746 MASK BIT6 056495,000698: 07,3650 10000 CCS A 056496,000699: 07,3651 24002 INCR Q 056497,000700: 07,3652 00002 TC Q 056498,000701: 056499,000702: 07,3653 41302 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION. 056500,000703: 07,3654 74746 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED. 056501,000704: 07,3655 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION 056502,000705: 07,3656 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY 056503,000706: 056504,000707: 07,3657 44755 CS ZERO # TO SWRETURN. 056505,000708: 07,3660 55304 TS IMUCADR 056506,000709: 07,3661 12755 TCF MODEEXIT 056507,000710: 056508,000711: # Page 1328 056509,000712: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION 056510,000713: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS. 056511,000714: 056512,000715: 07,3662 54071 BADEND TS RUPTREG2 # DEVICE INDEX. 056513,000716: 07,3663 44755 CS ZERO # FOR FAILURE. 056514,000717: 07,3664 13667 TCF GOODEND +2 056515,000718: 056516,000719: 07,3665 54071 GOODEND TS RUPTREG2 056517,000720: 07,3666 44753 CS ONE # FOR SUCCESS. 056518,000721: 056519,000722: 07,3667 54072 TS RUPTREG3 056520,000723: 07,3670 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP. 056521,000724: 07,3671 11304 CCS MODECADR 056522,000725: 07,3672 13676 TCF +4 # YES -- WAKE IT UP. 056523,000726: 07,3673 13706 TCF ENDMODE # IF 0, PROGRAM NOT IN YET. 056524,000727: 056525,000728: 07,3674 00006 EXTEND 056526,000729: 07,3675 13707 BZF ENDMODE +1 # BZF = TCF IF MODECADR = -0. 056527,000730: 056528,000731: 07,3676 34755 CAF ZERO # WAKE SLEEPING PROGRAM. 056529,000732: 07,3677 50071 INDEX RUPTREG2 056530,000733: 07,3700 57304 XCH MODECADR 056531,000734: 07,3701 05137 TC JOBWAKE 056532,000735: 056533,000736: 07,3702 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL. 056534,000737: 07,3703 50064 INDEX LOCCTR 056535,000738: 07,3704 26164 ADS LOC 056536,000739: 056537,000740: 07,3705 15261 TCF TASKOVER 056538,000741: 056539,000742: 07,3706 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT 056540,000743: 07,3707 50071 +1 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND 056541,000744: 07,3710 55304 TS MODECADR # SUCCESSFUL. 056542,000745: 07,3711 15261 TCF TASKOVER 056543,000746: 056544,000747: # Page 1329 056545,000748: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION. 056546,000749: 056547,000750: # PROGRAM DESCRIPTION DATE -- 21 FEB 1967 056548,000751: # LOG SECTION IMU MODE SWITCHING 056549,000752: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82 056550,000753: 056551,000754: # FUNCTIONAL DESCRIPTION -- 056552,000755: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED 056553,000756: # I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINES 056554,000757: # MODEECADR ARE MADE AND ACTED UPON. 056555,000758: # 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO 056556,000759: # SLEEP. 056557,000760: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP 056558,000761: # CALL AND RETURNS TO CALLING ROUTINE AT L+3. 056559,000762: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR 056560,000763: # AND RETURNS TO CALLING ROUTINE AT L+2. 056561,000764: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF 056562,000765: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM 056563,000766: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS. 056564,000767: 056565,000768: # CALLING SEQUENCE -- 056566,000769: # L TC BANKCALL 056567,000770: # L+1 CADR (ONE OF 5 STALL ADDRESSES. I.E., IMUSTALL, OPTSTALL, RADSTALL, 056568,000771: # AOTSTALL, OR ATTSTALL) 056569,000772: 056570,000773: # NORMAL-EXIT MODE -- 056571,000774: # TCF JOBSLEEP OR TCF MODEXIT 056572,000775: 056573,000776: # ALARM OR ABORT EXIT MODE -- 056574,000777: # TC ABORT 056575,000778: 056576,000779: # OUTPUT -- 056577,000780: # MODECADR=CADR IF JOBSLEEP 056578,000781: # MODECADR=+0 IF I/O COMPLETE 056579,000782: # BUF2=L+3 IF I/O COMPLETE AND GOOD. 056580,000783: # BUF2=L+2 IF I/O COMPLETE BUT FAILED. 056581,000784: 056582,000785: # ERASABLE INITIALIZATION -- 056583,000786: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2) 056584,000787: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE. 056585,000788: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS. 056586,000789: 056587,000790: # DEBRIS -- 056588,000791: # RUPTREG2 AND CALLING ROUTINE MODECADR. 056589,000792: 056590,000793: 07,3712 30,2000 SBANK= LOWSUPER # RSB 2004, Also not in LMY99 OH 2009 056591,000794: 056592,000795: 07,3712 34753 AOTSTALL CAF ONE # AOT. 056593,000796: 07,3713 03717 TC STALL 056594,000797: 056595,000798: 07,3714 34752 RADSTALL CAF TWO 056596,000799: 07,3715 13717 TCF STALL 056597,000800: 056598,000801: # Page 1330 056599,000802: 07,3716 07,3712 OPTSTALL EQUALS AOTSTALL 056600,000803: 056601,000804: 07,3716 34755 IMUSTALL CAF ZERO # IMU. 056602,000805: 056603,000806: 07,3717 00004 STALL INHINT 056604,000807: 07,3720 54071 TS RUPTREG2 # SAVE DEVICE INDEX. 056605,000808: 07,3721 50000 INDEX A # SEE IF OPERATION COMPLETE. 056606,000809: 07,3722 11304 CCS MODECADR 056607,000810: 07,3723 13741 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0. 056608,000811: 07,3724 13735 TCF MODESLP # OPERATION INCOMPLETE. 056609,000812: 07,3725 13731 TCF MODEGOOD # COMPLETE AND GOOD IF = -1. 056610,000813: 056611,000814: 07,3726 50071 MG2 INDEX RUPTREG2 # COMPLETE FAILED IF -0. RESET TO +0. 056612,000815: 07,3727 55304 TS MODECADR # RETURN TO CALLER. 056613,000816: 07,3730 12755 TCF MODEEXIT 056614,000817: 056615,000818: 07,3731 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1. 056616,000819: 07,3732 13741 TCF MODABORT 056617,000820: 056618,000821: 07,3733 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND 056619,000822: 07,3734 13726 TCF MG2 # RETURN IMMEDIATELY, SETTIN CADR = +0. 056620,000823: 056621,000824: 07,3735 04645 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY. 056622,000825: 07,3736 50071 INDEX RUPTREG2 056623,000826: 07,3737 55304 TS MODECADR 056624,000827: 07,3740 15133 TCF JOBSLEEP 056625,000828: 056626,000829: 07,3741 52134 MODABORT DXCH BUF2 056627,000830: 07,3742 05716 TC BAILOUT1 # TWO PROGRAMS USING THE SAME DEVICE. 056628,000831: 07,3743 01210 OCT 1210 056629,000832: 056630,000833: # Page 1331 056631,000834: # CONSTANTS FOR MODE SWITCHING ROUTINES 056632,000835: 056633,000836: 07,3744 5751 BITS3&4 = OCT14 056634,000837: 07,3744 4771 BITS4&6 = OCT50 056635,000838: 07,3744 00030 BITS4-5 OCT 00030 056636,000839: 07,3745 4744 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7. 056637,000840: 07,3745 77500 -COMMAX DEC -191 B-14 056638,000841: 07,3746 77477 -COMMAX- DEC -192 B-14 056639,000842: 07,3747 00074 600MS DEC 60 B-14 056640,000843: 07,3750 07,3210 IMUFIN20 = IMUFINE 056641,000844: 07,3750 31307 GOMANUR CA ATTCADR # IS KALCMANU FREE 056642,000845: 07,3751 00006 EXTEND 056643,000846: 07,3752 13755 BZF +3 056644,000847: 056645,000848: 07,3753 05652 TC P00DOO # NO 056646,000849: 07,3754 01210 OCT 1210 # 2 TRYING TO USE SAME DEVICE 056647,000850: 056648,000851: 07,3755 00006 +3 EXTEND 056649,000852: 07,3756 30134 DCA BUF2 056650,000853: 07,3757 53310 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3 056651,000854: 056652,000855: 07,3760 30006 CA BBANK 056653,000856: 07,3761 74757 MASK SEVEN 056654,000857: 07,3762 27310 ADS ATTCADR +1 056655,000858: 056656,000859: 07,3763 30167 CA PRIORITY 056657,000860: 07,3764 77725 MASK PRIO37 056658,000861: 07,3765 55311 TS ATTPRIO # SAVE USER'S PRIO 056659,000862: 056660,000863: 07,3766 33772 CAF KALEBCON # SET EBANK FOR KALCMAN3 056661,000864: 07,3767 54003 TS EBANK 056662,000865: 07,3770 04635 TC POSTJUMP 056663,000866: 07,3771 44004 CADR KALCMAN3 056664,000867: 07,3772 03276 KALEBCON ECADR BCDU 056665,000868: 056666,000869: # Page 1332 056667,000870: # PROGRAM DESCRIPTION 056668,000871: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY) 056669,000872: # MOD NO -- 1 056670,000873: # MOD BY -- N.BRODEUR 056671,000874: 056672,000875: # FUNCTIONAL DESCRIPTION 056673,000876: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN 056674,000877: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE 056675,000878: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE 056676,000879: # CMC. CALLED THROUGH BANKCALL 056677,000880: 056678,000881: # CALLING SEQUENCE -- 056679,000882: # L TC BANKCALL 056680,000883: # L+1 CADR R02BOTH 056681,000884: 056682,000885: # SUBROUTINES CALLED 056683,000886: # VARALARM 056684,000887: # FLAGUP 056685,000888: 056686,000889: # NORMAL EXIT MODES 056687,000890: # AT L+2 OF CALLING SEQUENCE 056688,000891: 056689,000892: # ALARM OR ABORT EXIT MODES 056690,000893: # GOTOP00H, WITH ALARM 056691,000894: 056692,000895: # ERASABLE INITIALIZATION REQUIRED 056693,000896: # NONE 056694,000897: 056695,000898: # DEBRIS 056696,000899: # CENTRALS -- A,Q,L 056697,000900: 056698,000901: 34,3775 BANK 34 056699,000902: 04,2000 SETLOC R02 056700,000903: 04,2000 BANK 056701,000904: 04,3253 COUNT* $$/R02 056702,000905: 04,3253 00063 DEC51 DEC 51 B-14 056703,000906: 04,3254 34737 R02BOTH CAF REFSMBIT 056704,000907: 04,3255 70077 MASK FLAGWRD3 056705,000908: 04,3256 10000 CCS A 056706,000909: 04,3257 03270 TC R02ZERO # ZERO IMUS 056707,000910: 056708,000911: 04,3260 31302 CA IMODES30 056709,000912: 04,3261 74743 MASK BIT9 # IS ISS INITIALIZED 056710,000913: 04,3262 00006 EXTEND 056711,000914: 04,3263 13265 BZF +2 056712,000915: 04,3264 44750 CS BIT4 # SEND IMU ALARM CODE 210 056713,000916: 04,3265 63273 AD OCT220 # SEND REFSMM ALARM 056714,000917: 04,3266 05744 TC VARALARM 056715,000918: 056716,000919: 04,3267 06001 TC GOTOP00H 056717,000920: 056718,000921: 04,3270 05504 R02ZERO TC UPFLAG 056719,000922: # Page 1333 056720,000923: 04,3271 00007 ADRES IMUSE 056721,000924: 04,3272 14631 TCF SWRETURN 056722,000925: 04,3273 00220 OCT220 OCT 220 056723,000926: 056724,000927: # Page 1334 056725,000928: # PROGRAM DESCRIPTION: P06 10 FEB 67 056726,000929: 056727,000930: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION. 056728,000931: 056729,000932: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU 056730,000933: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE 056731,000934: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON. 056732,000935: 056733,000936: # CALLING SEQUENCE: 056734,000937: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E. 056735,000938: 056736,000939: # SUBROUTINES CALLED: 056737,000940: # GOPERF1 056738,000941: # BANKCALL 056739,000942: # FLAGDOWN 056740,000943: 056741,000944: # Page 1335 056742,000945: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2. 056743,000946: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATIBILITY 056744,000947: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING. 056745,000948: 056746,000949: 37,2000 SETLOC P05P06 056747,000950: 37,2000 BANK 056748,000951: 056749,000952: 37,3655 0314 EBANK= TIME2SAV 056750,000953: 37,3655 COUNT* $$/P06 056751,000954: 056752,000955: 37,3655 05504 P06 TC UPFLAG # SET NODOV37 BIT 056753,000956: 37,3656 00054 ADRES NODOFLAG 056754,000957: 056755,000958: 37,3657 00004 PRESTAND INHINT 056756,000959: 37,3660 00006 EXTEND 056757,000960: 37,3661 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2 056758,000961: 37,3662 52315 DXCH TIME2SAV 056759,000962: 37,3663 03714 TC SCALPREP 056760,000963: 37,3664 03657 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE 056761,000964: 37,3665 52155 DXCH MPAC # T1,T2 AND SCALER OK 056762,000965: 37,3666 52317 DXCH SCALSAVE # STORE SCALER 056763,000966: 37,3667 00004 INHINT 056764,000967: 37,3670 04616 TC BANKCALL 056765,000968: 37,3671 17175 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN 056766,000969: 056767,000970: 37,3672 05516 TC DOWNFLAG 056768,000971: 37,3673 00007 ADRES IMUSE # IMUSE DOWN 056769,000972: 37,3674 05516 TC DOWNFLAG 056770,000973: 37,3675 00010 ADRES RNDVZFLG # RNDVZFLG DOWN 056771,000974: 056772,000975: 37,3676 34741 CAF BIT11 056773,000976: 37,3677 00006 EXTEND 056774,000977: 37,3700 05013 WOR CHAN13 # SET STANDBY ENABLE BIT 056775,000978: 056776,000979: 37,3701 05353 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY 056777,000980: 37,3702 07024 OCT 07024 # RECOVERS 056778,000981: 37,3703 20000 OCT 20000 056779,000982: 37,3704 0316 EBANK= SCALSAVE 056780,000983: 37,3704 03734 76060 2CADR POSTAND 056781,000984: 056782,000985: 37,3706 34774 CAF OCT62 056783,000986: 37,3707 04616 TC BANKCALL 056784,000987: 37,3710 20623 CADR GOPERF1 056785,000988: 37,3711 13706 TCF -3 056786,000989: 37,3712 13706 TCF -4 056787,000990: 37,3713 13706 TCF -5 056788,000991: 056789,000992: 37,3714 4774 OCT62 EQUALS .5SEC # DEC 50 = OCT 62 056790,000993: 056791,000994: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A 056792,000995: # Page 1336 056793,000996: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER 056794,000997: # DATA ARE NOT COMPATIBLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE 056795,000998: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES 056796,000999: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE 056797,001000: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM 056798,001001: # T1.0 ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF 056799,001002: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5 056800,001003: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER 056801,001004: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1. 056802,001005: 056803,001006: 37,3714 00006 SCALPREP EXTEND 056804,001007: 37,3715 22156 QXCH MPAC +2 056805,001008: 37,3716 04103 TC FINETIME +1 056806,001009: 37,3717 00003 RELINT 056807,001010: 37,3720 52155 DXCH MPAC 056808,001011: 37,3721 34747 CA BIT5 # ADD 5 MS TO THE SCALER READING. 056809,001012: 37,3722 54001 TS L 056810,001013: 37,3723 34755 CA ZERO 056811,001014: 37,3724 20155 DAS MPAC 056812,001015: 37,3725 44346 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO 056813,001016: 37,3726 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1. 056814,001017: 37,3727 56155 XCH MPAC +1 056815,001018: 37,3730 74346 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST 056816,001019: # INTERVAL AFTER THE T1 INCREMENT 056817,001020: # (NOW = 00000, SINCE BIT 5 ADDED). 056818,001021: 37,3731 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT 056819,001022: 37,3732 24156 INCR MPAC +2 # NO 056820,001023: 37,3733 00156 TC MPAC +2 # YES 056821,001024: 056822,001025: # POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE 056823,001026: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE 056824,001027: # INSPECTED TO INSURE COMPATIBILITY BETWEEN THE SCALER READING AND THE 056825,001028: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER 056826,001029: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF 056827,001030: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER. 056828,001031: 056829,001032: 37,3734 COUNT* $$/P05 056830,001033: 056831,001034: 37,3734 44741 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY 056832,001035: 37,3735 00006 EXTEND 056833,001036: 37,3736 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT 056834,001037: 37,3737 00004 INHINT 056835,001038: 37,3740 34755 CA ZERO 056836,001039: 37,3741 54001 TS L 056837,001040: 37,3742 52025 DXCH TIME2 # CLEAR TIME1 TIME2 056838,001041: 37,3743 03714 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1 056839,001042: 37,3744 03737 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE 056840,001043: 37,3745 00006 EXTEND # T1,T2 AND SCALER OK 056841,001044: 37,3746 40317 DCS SCALSAVE 056842,001045: 37,3747 20155 DAS MPAC # FORM DP DIFFERENCE OF POST-STANDBY SCALER 056843,001046: # Page 1337 056844,001047: 37,3750 34742 CAF BIT10 # MINUS PRE-STANDBY SCALER AND SHIFT RIGHT 056845,001048: 37,3751 07307 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2. 056846,001049: 37,3752 34755 CAF ZERO 056847,001050: 37,3753 54156 TS MPAC +2 # NEEDED FOR TP AGREE 056848,001051: 37,3754 07257 TC TPAGREE # MAKE DP DIFF AGREE 056849,001052: 37,3755 10154 CCS MPAC 056850,001053: 37,3756 03763 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW 056851,001054: 37,3757 03763 TC POSTCOM # BETWEEN PRE AND POST STANDBY. 056852,001055: 37,3760 03761 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD 056853,001056: 37,3761 34742 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT. 056854,001057: 37,3762 26154 ADS MPAC 056855,001058: 37,3763 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER. 056856,001059: 37,3764 30315 DCA TIME2SAV # PRE-STANDBY TIME1 TIME2 056857,001060: 37,3765 20155 DAS MPAC 056858,001061: 37,3766 07257 TC TPAGREE # FORCE SIGN AGREEMENT 056859,001062: 37,3767 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2. 056860,001063: 37,3770 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH 056861,001064: 37,3771 05516 TC DOWNFLAG # CLEAR NODOFLAG 056862,001065: 37,3772 00054 ADRES NODOFLAG 056863,001066: 056864,001067: 37,3773 06001 TC GOTOP00H 056865,001068: End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc