Source Code

054225,000001: # Copyright: Public domain. 054226,000002: # Filename: IMU_MODE_SWITCHING_ROUTINES.agc 054227,000003: # Purpose: A section of Luminary 1C, revision 131. 054228,000004: # It is part of the source code for the Lunar Module's (LM) 054229,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 054230,000006: # This file is intended to be a faithful transcription, except 054231,000007: # that the code format has been changed to conform to the 054232,000008: # requirements of the yaYUL assembler rather than the 054233,000009: # original YUL assembler. 054234,000010: # Reference: pp. 1306-1334 of 1729.pdf. 054235,000011: # Contact: Ron Burkey <info@sandroid.org>. 054236,000012: # Website: www.ibiblio.org/apollo/index.html 054237,000013: # Mod history: 06/05/03 RSB. Began transcribing. 054238,000014: # 05/14/05 RSB Corrected website reference above. 054239,000015: 054240,000016: # Page 1306 054241,000017: 5457 BLOCK 02 054242,000018: 4000 SETLOC FFTAG3 054243,000019: 4000 BANK 054244,000020: 054245,000021: 5457 E3,1471 EBANK= COMMAND 054246,000022: 054247,000023: # FIXED-FIXED ROUTINES 054248,000024: 054249,000025: 5457 COUNT* $$/IMODE 054250,000026: 5457 34755 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS. 054251,000027: 5460 54032 TS CDUX 054252,000028: 5461 54033 TS CDUY 054253,000029: 5462 54034 TS CDUZ 054254,000030: 5463 00002 TC Q 054255,000031: 054256,000032: 5464 4743 SPSCODE = BIT9 054257,000033: 054258,000034: # Page 1307 054259,000035: # IMU ZEROING ROUTINES 054260,000036: 054261,000037: 11,3774 BANK 11 054262,000038: 07,2000 SETLOC MODESW 054263,000039: 07,2000 BANK 054264,000040: 054265,000041: 07,2705 COUNT* $$/IMODE 054266,000042: 07,2705 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS. 054267,000043: 07,2706 41035 CS DSPTAB +11D # DON'T ZERO CDUS IS IMU IN GIMBAL LOCK AND 054268,000044: 07,2707 74771 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION) 054269,000045: 07,2710 10000 CCS A 054270,000046: 07,2711 12715 TCF IMUZEROA 054271,000047: 054272,000048: 07,2712 05567 TC ALARM # IF SO. 054273,000049: 07,2713 00206 OCT 00206 054274,000050: 054275,000051: 07,2714 13650 TCF CAGETSTJ +4 # IMMEDIATE FAILURE. 054276,000052: 054277,000053: 07,2715 03644 IMUZEROA TC CAGETSTJ 054278,000054: 054279,000055: 07,2716 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 054280,000056: 07,2717 74773 MASK SUPER011 # BIT5 FOR GROUND 054281,000057: 07,2720 27300 ADS IMODES33 054282,000058: 054283,000059: 07,2721 41277 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE 054284,000060: 07,2722 75741 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN). 054285,000061: 07,2723 27277 ADS IMODES30 054286,000062: 054287,000063: 07,2724 44771 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR 054288,000064: 07,2725 00006 EXTEND # COUNTER DISABLED. 054289,000065: 07,2726 03012 WAND CHAN12 054290,000066: 054291,000067: 07,2727 03257 TC NOATTOFF # TURN OFF NO ATT LAMP. 054292,000068: 054293,000069: 07,2730 34747 CAF BIT5 054294,000070: 07,2731 00006 EXTEND 054295,000071: 07,2732 05012 WOR CHAN12 054296,000072: 054297,000073: 07,2733 05457 TC ZEROICDU 054298,000074: 07,2734 34746 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO 054299,000075: 07,2735 05203 TC WAITLIST # RECEIVE ITS PULSE TRAIN. 054300,000076: 07,2736 E3,1474 EBANK= CDUIND 054301,000077: 07,2736 02750 16103 2CADR IMUZERO2 054302,000078: 054303,000079: 07,2740 41277 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT. 054304,000080: 07,2741 74743 MASK BIT9 054305,000081: 07,2742 10000 CCS A 054306,000082: 07,2743 12746 TCF MODEEXIT 054307,000083: # Page 1308 054308,000084: 07,2744 05567 TC ALARM 054309,000085: 07,2745 00210 OCT 210 054310,000086: 054311,000087: 07,2746 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT. 054312,000088: 07,2747 14631 TCF SWRETURN 054313,000089: 054314,000090: 07,2750 03632 IMUZERO2 TC CAGETEST 054315,000091: 07,2751 05457 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ 054316,000092: 054317,000093: 07,2752 44747 CS BIT5 # REMOVE ZERO DISCRETE. 054318,000094: 07,2753 00006 EXTEND 054319,000095: 07,2754 03012 WAND CHAN12 054320,000096: 054321,000097: 07,2755 34741 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS 054322,000098: 07,2756 05224 TC VARDELAY 054323,000099: 054324,000100: 07,2757 03632 IMUZERO3 TC CAGETEST 054325,000101: 07,2760 45741 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT. 054326,000102: 07,2761 71277 MASK IMODES30 054327,000103: 07,2762 55277 TS IMODES30 054328,000104: 054329,000105: 07,2763 44773 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES 054330,000106: 07,2764 71300 MASK IMODES33 # BIT5 FOR GROUND 054331,000107: 07,2765 55300 TS IMODES33 054332,000108: 054333,000109: 07,2766 04674 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE 054334,000110: 07,2767 14703 CADR SETISSW # PRESENT. 054335,000111: 054336,000112: 07,2770 13622 TCF ENDIMU 054337,000113: 054338,000114: # Page 1309 054339,000115: # IMU COARSE ALIGN MODE. 054340,000116: 054341,000117: 07,2771 00004 IMUCOARS INHINT 054342,000118: 07,2772 03644 TC CAGETSTJ 054343,000119: 07,2773 03135 TC SETCOARS 054344,000120: 054345,000121: 07,2774 36245 CAF SIX 054346,000122: 07,2775 05203 TC WAITLIST 054347,000123: 07,2776 E3,1474 EBANK= CDUIND 054348,000124: 07,2776 03001 16103 2CADR COARS 054349,000125: 054350,000126: 07,3000 12746 TCF MODEEXIT 054351,000127: 054352,000128: 07,3001 03632 COARS TC CAGETEST 054353,000129: 07,3002 34746 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 054354,000130: 07,3003 00006 EXTEND 054355,000131: 07,3004 05012 WOR CHAN12 054356,000132: 054357,000133: 07,3005 34752 CAF TWO # SET CDU INDICATOR 054358,000134: 07,3006 55474 COARS1 TS CDUIND 054359,000135: 054360,000136: 07,3007 51474 INDEX CDUIND # COMPUTE THETAD -- THETAA IN 1'S 054361,000137: 07,3010 30321 CA THETAD # COMPLEMENT FORM 054362,000138: 07,3011 00006 EXTEND 054363,000139: 07,3012 51474 INDEX CDUIND 054364,000140: 07,3013 20032 MSU CDUX 054365,000141: 07,3014 00006 EXTEND 054366,000142: 07,3015 74737 MP BIT13 # SHIFT RIGHT 2 054367,000143: 07,3016 56001 XCH L # ROUND 054368,000144: 07,3017 60000 DOUBLE 054369,000145: 07,3020 54061 TS ITEMP1 054370,000146: 07,3021 13023 TCF +2 054371,000147: 07,3022 26001 ADS L 054372,000148: 054373,000149: 07,3023 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED 054374,000150: 07,3024 23471 LXCH COMMAND 054375,000151: 07,3025 11474 CCS CDUIND 054376,000152: 07,3026 03006 TC COARS1 054377,000153: 054378,000154: 07,3027 34752 CAF TWO # MINIMUM OF 4 MS WAIT 054379,000155: 07,3030 05224 TC VARDELAY 054380,000156: 054381,000157: # Page 1310 054382,000158: 07,3031 03632 COARS2 TC CAGETEST # DON'T CONTINUE IF CAGED. 054383,000159: 07,3032 54061 TS ITEMP1 # SET TO +0. 054384,000160: 07,3033 34752 CAF TWO # SET CDU INDICATOR. 054385,000161: 07,3034 55474 +3 TS CDUIND 054386,000162: 054387,000163: 07,3035 51474 INDEX CDUIND 054388,000164: 07,3036 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED 054389,000165: 07,3037 03043 TC COMPOS 054390,000166: 07,3040 03052 TC NEXTCDU +1 054391,000167: 07,3041 03110 TC COMNEG 054392,000168: 07,3042 03052 TC NEXTCDU +1 054393,000169: 054394,000170: 07,3043 63736 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED 054395,000171: 07,3044 00006 EXTEND # MINUS ONE 054396,000172: 07,3045 63120 BZMF COMZERO 054397,000173: 07,3046 51474 INDEX CDUIND 054398,000174: 07,3047 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES 054399,000175: 07,3050 43737 CS -COMMAX- # ALLOWED 054400,000176: 054401,000177: 07,3051 24061 NEXTCDU INCR ITEMP1 054402,000178: 07,3052 64754 AD NEG0 054403,000179: 07,3053 51474 INDEX CDUIND 054404,000180: 07,3054 54050 TS CDUXCMD # SET UP COMMAND REGISTER. 054405,000181: 054406,000182: 07,3055 11474 CCS CDUIND 054407,000183: 07,3056 03034 TC COARS2 +3 054408,000184: 054409,000185: 07,3057 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT. 054410,000186: 07,3060 13124 TCF SENDPULS 054411,000187: 054412,000188: 07,3061 05221 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE. 054413,000189: 07,3062 00226 DEC 150 B-14 054414,000190: 054415,000191: 07,3063 34752 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT 054416,000192: 07,3064 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD. 054417,000193: 07,3065 50000 INDEX A 054418,000194: 07,3066 30032 CA CDUX 054419,000195: 07,3067 00006 EXTEND 054420,000196: 07,3070 50061 INDEX ITEMP1 054421,000197: 07,3071 20321 MSU THETAD 054422,000198: 07,3072 10000 CCS A 054423,000199: 07,3073 13101 TCF COARSERR 054424,000200: 07,3074 13076 TCF CORSCHK2 054425,000201: 07,3075 13101 TCF COARSERR 054426,000202: 054427,000203: # Page 1311 054428,000204: 07,3076 10061 CORSCHK2 CCS ITEMP1 054429,000205: 07,3077 13064 TCF CHKCORS 054430,000206: 07,3100 13622 TCF ENDIMU # END OF COARSE ALIGNMENT 054431,000207: 054432,000208: 07,3101 63107 COARSERR AD COARSTOL # 2 DEGREES. 054433,000209: 07,3102 00006 EXTEND 054434,000210: 07,3103 63076 BZMF CORSCHK2 054435,000211: 054436,000212: 07,3104 05567 TC ALARM # COARSE ALIGN ERROR. 054437,000213: 07,3105 00211 OCT 211 054438,000214: 054439,000215: 07,3106 13630 TCF IMUBAD 054440,000216: 054441,000217: 07,3107 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS 054442,000218: 054443,000219: 07,3110 63736 COMNEG AD -COMMAX 054444,000220: 07,3111 00006 EXTEND 054445,000221: 07,3112 63120 BZMF COMZERO 054446,000222: 07,3113 40000 COM 054447,000223: 07,3114 51474 INDEX CDUIND 054448,000224: 07,3115 55471 TS COMMAND 054449,000225: 07,3116 33737 CA -COMMAX- 054450,000226: 07,3117 03051 TC NEXTCDU 054451,000227: 054452,000228: 07,3120 34755 COMZERO CAF ZERO 054453,000229: 07,3121 51474 INDEX CDUIND 054454,000230: 07,3122 57471 XCH COMMAND 054455,000231: 07,3123 03051 TC NEXTCDU 054456,000232: 054457,000233: 07,3124 37743 SENDPULS CAF 13,14,15 054458,000234: 07,3125 00006 EXTEND 054459,000235: 07,3126 05014 WOR CHAN14 054460,000236: 07,3127 33740 CAF 600MS 054461,000237: 07,3130 13030 TCF COARS2 -1 # THEN TO VARDELAY 054462,000238: 054463,000239: 07,3131 34746 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 054464,000240: 07,3132 00006 EXTEND 054465,000241: 07,3133 05012 WOR CHAN12 054466,000242: 07,3134 05261 TC TASKOVER 054467,000243: 054468,000244: # Page 1312 054469,000245: 07,3135 34750 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN 054470,000246: 07,3136 00006 EXTEND 054471,000247: 07,3137 02012 RAND CHAN12 054472,000248: 07,3140 10000 CCS A 054473,000249: 07,3141 00002 TC Q 054474,000250: 054475,000251: 07,3142 44746 CS BIT6 # CLEAR ISS ERROR COUNTERS 054476,000252: 07,3143 00006 EXTEND 054477,000253: 07,3144 03012 WAND CHAN12 054478,000254: 054479,000255: 07,3145 44742 CS BIT10 # KNOCK DOWN GYRO ACTIVITY 054480,000256: 07,3146 00006 EXTEND 054481,000257: 07,3147 03014 WAND CHAN14 054482,000258: 07,3150 44755 CS ZERO 054483,000259: 07,3151 54047 TS GYROCMD 054484,000260: 054485,000261: 07,3152 34750 CAF BIT4 # PUT ISS IN COARSE ALIGN 054486,000262: 07,3153 00006 EXTEND 054487,000263: 07,3154 05012 WOR CHAN12 054488,000264: 054489,000265: 07,3155 41035 CS DSPTAB +11D # TURN ON NO ATT LAMP 054490,000266: 07,3156 73200 MASK OCT40010 054491,000267: 07,3157 27035 ADS DSPTAB +11D 054492,000268: 054493,000269: 07,3160 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 054494,000270: 07,3161 74746 MASK BIT6 054495,000271: 07,3162 27300 ADS IMODES33 054496,000272: 054497,000273: 07,3163 41277 CS IMODES30 # DISABLE IMUFAIL 054498,000274: 07,3164 74750 MASK BIT4 054499,000275: 07,3165 27277 ADS IMODES30 054500,000276: 054501,000277: 07,3166 44747 RNDREFDR CS TRACKBIT # CLEAR TRACK FLAG 054502,000278: 07,3167 70075 MASK FLAGWRD1 054503,000279: 07,3170 54075 TS FLAGWRD1 054504,000280: 054505,000281: 07,3171 44735 CS DRFTBIT # CLEAR DRIFT FLAG 054506,000282: 07,3172 70076 MASK FLAGWRD2 054507,000283: 07,3173 54076 TS FLAGWRD2 054508,000284: 054509,000285: 07,3174 44737 CS REFSMBIT # CLEAR REFSMMAT FLAG 054510,000286: 07,3175 70077 MASK FLAGWRD3 054511,000287: 07,3176 54077 TS FLAGWRD3 054512,000288: 054513,000289: 07,3177 00002 TC Q 054514,000290: 054515,000291: 07,3200 40010 OCT40010 OCT 40010 054516,000292: 054517,000293: # Page 1313 054518,000294: # IMU FINE ALIGN MODE SWITCH. 054519,000295: 054520,000296: 07,3201 00004 IMUFINE INHINT 054521,000297: 07,3202 03644 TC CAGETSTJ # SEE IF IMU BEING CAGED. 054522,000298: 054523,000299: 07,3203 43735 CS BITS4-5 # RESET ZERO AND COARSE 054524,000300: 07,3204 00006 EXTEND 054525,000301: 07,3205 03012 WAND CHAN12 054526,000302: 054527,000303: 07,3206 44746 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED 054528,000304: 07,3207 71300 MASK IMODES33 054529,000305: 07,3210 55300 TS IMODES33 054530,000306: 054531,000307: 07,3211 03257 TC NOATTOFF 054532,000308: 054533,000309: 07,3212 34742 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE 054534,000310: 07,3213 05203 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE 054535,000311: 07,3214 E3,1474 EBANK= CDUIND 054536,000312: 07,3214 03225 16103 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN 054537,000313: 054538,000314: 07,3216 35000 CAF 2SECS 054539,000315: 07,3217 05203 TC WAITLIST 054540,000316: 07,3220 E3,1474 EBANK= CDUIND 054541,000317: 07,3220 03223 16103 2CADR IMUFINED 054542,000318: 054543,000319: 07,3222 12746 TCF MODEEXIT 054544,000320: 054545,000321: 07,3223 03632 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU. 054546,000322: 07,3224 13622 TCF ENDIMU 054547,000323: 054548,000324: # Page 1314 054549,000325: 07,3225 03637 IFAILOK TC CAGETSTQ # ENABLE IMU FAIL UNLESS IMU BEING CAGED. 054550,000326: 07,3226 15261 TCF TASKOVER # IT IS. 054551,000327: 054552,000328: 07,3227 34750 CAF BIT4 # DON'T RESET IMU FAIL INHIBIT IF SOMEONE 054553,000329: 07,3230 00006 EXTEND # HAS GONE INTO COARSE ALIGN. 054554,000330: 07,3231 02012 RAND CHAN12 054555,000331: 07,3232 10000 CCS A 054556,000332: 07,3233 15261 TCF TASKOVER 054557,000333: 054558,000334: 07,3234 41277 CS IMODES30 # RESET IMUFAIL. 054559,000335: 07,3235 74737 MASK BIT13 054560,000336: 07,3236 27277 ADS IMODES30 054561,000337: 07,3237 44750 CS BIT4 054562,000338: 07,3240 71277 PFAILOK2 MASK IMODES30 054563,000339: 07,3241 55277 TS IMODES30 054564,000340: 07,3242 04674 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOE 054565,000341: 07,3243 14703 CADR SETISSW # THAT THE INHIBIT WAS BEEN REMOVED. 054566,000342: 07,3244 15261 TCF TASKOVER 054567,000343: 054568,000344: 07,3245 03637 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM. 054569,000345: 07,3246 15261 TCF TASKOVER 054570,000346: 054571,000347: 07,3247 41277 CS IMODES30 # RESET IMU AND PIPA FAIL BITS. 054572,000348: 07,3250 74742 MASK BIT10 054573,000349: 07,3251 27277 ADS IMODES30 054574,000350: 054575,000351: 07,3252 41300 CS IMODES33 054576,000352: 07,3253 74737 MASK BIT13 054577,000353: 07,3254 27300 ADS IMODES33 054578,000354: 054579,000355: 07,3255 44747 CS BIT5 054580,000356: 07,3256 13240 TCF PFAILOK2 054581,000357: 054582,000358: 07,3257 43200 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP. 054583,000359: 07,3260 71035 MASK DSPTAB +11D 054584,000360: 07,3261 64735 AD BIT15 054585,000361: 07,3262 55035 TS DSPTAB +11D 054586,000362: 07,3263 00002 TC Q 054587,000363: 054588,000364: # Page 1315 054589,000365: # ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE. 054590,000366: 054591,000367: 07,3264 44755 PIPUSE CS ZERO 054592,000368: 07,3265 54037 TS PIPAX 054593,000369: 07,3266 54040 TS PIPAY 054594,000370: 07,3267 54041 TS PIPAZ 054595,000371: 054596,000372: 07,3270 03637 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED 054597,000373: 07,3271 14631 TCF SWRETURN 054598,000374: 054599,000375: 07,3272 00004 INHINT 054600,000376: 07,3273 44753 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL 054601,000377: 07,3274 71277 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING. 054602,000378: 07,3275 55277 TS IMODES30 054603,000379: 054604,000380: 07,3276 04674 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW. 054605,000381: 07,3277 14703 CADR SETISSW # (OR GO OFF ON PIPFREE). 054606,000382: 054607,000383: 07,3300 12746 TCF MODEEXIT 054608,000384: 054609,000385: 07,3301 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DON'T LIGHT 054610,000386: 07,3302 41277 CS IMODES30 # ISS WARNING. 054611,000387: 07,3303 74753 MASK BIT1 054612,000388: 07,3304 27277 ADS IMODES30 054613,000389: 054614,000390: 07,3305 74742 MASK BIT10 # IF PIP FAIL ON, DO PROG ALARM AND RESET 054615,000391: 07,3306 10000 CCS A # ISS WARNING. 054616,000392: 07,3307 12746 TCF MODEEXIT 054617,000393: 054618,000394: 07,3310 05567 TC ALARM 054619,000395: 07,3311 00212 OCT 212 054620,000396: 054621,000397: 07,3312 00004 INHINT 054622,000398: 054623,000399: 07,3313 13276 TCF PIPFREE2 054624,000400: 054625,000401: # Page 1316 054626,000402: # THE FOLLOWING ROUTINE TORQUES THE IRICS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIXE REGISTERS 054627,000403: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE 054628,000404: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT AT TEH INPUT COMMAND REGISTERS. 054629,000405: 054630,000406: 07,3314 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY. 054631,000407: 054632,000408: 07,3314 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR. 054633,000409: 07,3315 03644 TC CAGETSTJ # DON'T PROCEED IF IMU BEING CAGED. 054634,000410: 054635,000411: 07,3316 11311 CCS LGYRO # SEE IF GYROS BUSY. 054636,000412: 07,3317 03360 TC GYROBUSY # SLEEP. 054637,000413: 054638,000414: 07,3320 54156 TS MPAC +2 054639,000415: 07,3321 34746 CAF BIT6 # ENABLE THE POWER SUPPLY. 054640,000416: 07,3322 00006 EXTEND 054641,000417: 07,3323 05014 WOR CHAN14 054642,000418: 054643,000419: 07,3324 34751 CAF FOUR 054644,000420: 07,3325 05203 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER 054645,000421: 07,3326 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB). 054646,000422: 07,3326 03376 16103 2CADR STRTGYRO 054647,000423: 054648,000424: 07,3330 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR 054649,000425: 07,3331 56003 XCH EBANK # RESTORATION ON RETURN. 054650,000426: 07,3332 56161 XCH MPAC +5 054651,000427: 07,3333 55311 TS LGYRO # RESERVES GYROS. 054652,000428: 07,3334 74357 MASK LOW8 054653,000429: 07,3335 54061 TS ITEMP1 054654,000430: 054655,000431: 07,3336 34752 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS. 054656,000432: 07,3337 54157 GYROAGRE TS MPAC +3 054657,000433: 07,3340 60000 DOUBLE 054658,000434: 07,3341 60061 AD ITEMP1 054659,000435: 07,3342 54160 TS MPAC +4 054660,000436: 07,3343 00006 EXTEND 054661,000437: 07,3344 50000 INDEX A 054662,000438: 07,3345 31401 DCA 1400 054663,000439: 07,3346 52155 DXCH MPAC 054664,000440: 07,3347 07262 TC TPAGREE 054665,000441: 07,3350 52155 DXCH MPAC 054666,000442: 07,3351 50160 INDEX MPAC +4 054667,000443: 07,3352 53401 DXCH 1400 054668,000444: 054669,000445: 07,3353 10157 CCS MPAC +3 054670,000446: 07,3354 13337 TCF GYROAGRE 054671,000447: 054672,000448: 07,3355 30161 CA MPAC +5 # RESTORE CALLER'S EBANK. 054673,000449: 07,3356 54003 TS EBANK 054674,000450: 07,3357 12746 TCF MODEEXIT 054675,000451: 054676,000452: # Page 1317 054677,000453: # ROUTINES TO ALLOW TORQUING ONLY ONE JOB AT A TIME. 054678,000454: 054679,000455: 07,3360 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR. 054680,000456: 07,3361 30134 DCA BUF2 054681,000457: 07,3362 52155 DXCH MPAC 054682,000458: 07,3363 33375 REGSLEEP CAF LGWAKE 054683,000459: 07,3364 15133 TCF JOBSLEEP 054684,000460: 054685,000461: 07,3365 11311 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY. 054686,000462: 07,3366 13363 TCF REGSLEEP # IF SO, SLEEP SOME MORE. 054687,000463: 054688,000464: 07,3367 54156 TS MPAC +2 054689,000465: 07,3370 00006 EXTEND 054690,000466: 07,3371 30155 DCA MPAC 054691,000467: 07,3372 52134 DXCH BUF2 # RESTORE SWRETURN INFO. 054692,000468: 07,3373 34753 CAF ONE 054693,000469: 07,3374 13325 TCF GWAKE2 054694,000470: 054695,000471: 07,3375 17365 LGWAKE CADR GWAKE 054696,000472: 054697,000473: # Page 1318 054698,000474: # GYRO-TORQUING WAITLIST TASKS. 054699,000475: 054700,000476: 07,3376 43617 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO. 054701,000477: 07,3377 00006 EXTEND 054702,000478: 07,3400 03014 WAND CHAN14 054703,000479: 054704,000480: 07,3401 03632 TC CAGETEST 054705,000481: 054706,000482: 07,3402 31311 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14. 054707,000483: 07,3403 00006 EXTEND 054708,000484: 07,3404 74750 MP BIT4 054709,000485: 07,3405 50000 INDEX A 054710,000486: 07,3406 13407 TCF +1 054711,000487: 07,3407 03424 TC GSELECT # =0. DO Y GYRO. 054712,000488: 07,3410 00202 OCT 00202 054713,000489: 054714,000490: 07,3411 03424 TC GSELECT # =1. DO Z GYRO. 054715,000491: 07,3412 00302 OCT 00302 054716,000492: 054717,000493: 07,3413 03422 TC GSELECT -2 # =2. DO X GYRO. 054718,000494: 07,3414 00100 OCT 00100 054719,000495: 054720,000496: 07,3415 34755 CAF ZERO # =3. DONE 054721,000497: 07,3416 55311 TS LGYRO 054722,000498: 07,3417 33375 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB. 054723,000499: 07,3420 05137 TC JOBWAKE 054724,000500: 054725,000501: 07,3421 13223 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY. 054726,000502: # Page 1319 054727,000503: 07,3422 44751 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X. 054728,000504: 07,3423 27311 ADS LGYRO 054729,000505: 054730,000506: 07,3424 50002 GSELECT INDEX Q # SELECT GYRO. 054731,000507: # Was CAF --- RSB 2004 054732,000508: 07,3425 30000 CA 0 # PACKED WORD CONTAINS GYRO SELECT BITS 054733,000509: 07,3426 54064 TS ITEMP4 # AND INCREMENT TO LGYRO. 054734,000510: 07,3427 74757 MASK SEVEN 054735,000511: 07,3430 64737 AD BIT13 054736,000512: 07,3431 27311 ADS LGYRO 054737,000513: 07,3432 54003 TS EBANK 054738,000514: 07,3433 74357 MASK LOW8 054739,000515: 07,3434 54061 TS ITEMP1 054740,000516: 054741,000517: 07,3435 44757 CS SEVEN 054742,000518: 07,3436 70064 MASK ITEMP4 054743,000519: 07,3437 54064 TS ITEMP4 054744,000520: 054745,000521: 07,3440 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING. 054746,000522: 07,3441 50061 INDEX ITEMP1 054747,000523: 07,3442 31401 DCA 1400 054748,000524: 07,3443 52071 DXCH RUPTREG1 054749,000525: 054750,000526: 07,3444 10070 CCS RUPTREG1 054751,000527: 07,3445 13460 TCF MAJ+ 054752,000528: 07,3446 13450 TCF +2 054753,000529: 07,3447 13600 TCF MAJ- 054754,000530: 054755,000531: 07,3450 10071 CCS RUPTREG2 054756,000532: 07,3451 13455 TCF MIN+ 054757,000533: 07,3452 13402 TCF STRTGYR2 054758,000534: 07,3453 13575 TCF MIN- 054759,000535: 07,3454 13402 TCF STRTGYR2 054760,000536: 054761,000537: # Page 1320 054762,000538: 07,3455 63511 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST 054763,000539: 07,3456 00006 EXTEND # 16 GYRO PULSES. 054764,000540: 07,3457 63402 BZMF STRTGYR2 054765,000541: 054766,000542: 07,3460 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT. 054767,000543: 07,3461 33621 DCA GYROFRAC 054768,000544: 07,3462 20071 DAS RUPTREG1 054769,000545: 054770,000546: 07,3463 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO. 054771,000547: 07,3464 00006 EXTEND 054772,000548: 07,3465 05014 WOR CHAN14 054773,000549: 054774,000550: 07,3466 36077 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS 054775,000551: 07,3467 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG 054776,000552: 07,3470 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION 054777,000553: 07,3471 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE 054778,000554: 07,3472 74744 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF 054779,000555: 07,3473 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND. 054780,000556: 07,3474 30070 CA RUPTREG1 054781,000557: 07,3475 00006 EXTEND 054782,000558: 07,3476 74743 MP BIT9 054783,000559: 07,3477 54070 TS RUPTREG1 054784,000560: 07,3500 30001 CA L 054785,000561: 07,3501 00006 EXTEND 054786,000562: 07,3502 74736 MP BIT14 054787,000563: 07,3503 26062 ADS ITEMP2 # INITIAL COMMAND. 054788,000564: 054789,000565: 07,3504 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED 054790,000566: 07,3505 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES). 054791,000567: 07,3506 67752 AD MINUS1 054792,000568: 07,3507 10000 CCS A 054793,000569: 07,3510 13534 TCF LONGGYRO 054794,000570: 07,3511 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD 054795,000571: 07,3512 13516 TCF +4 054796,000572: 054797,000573: 07,3513 34736 CAF BIT14 054798,000574: 07,3514 26062 ADS ITEMP2 054799,000575: 07,3515 34755 CAF ZERO 054800,000576: 054801,000577: 07,3516 50061 +4 INDEX ITEMP1 054802,000578: 07,3517 53401 DXCH 1400 054803,000579: # Page 1321 054804,000580: 07,3520 30062 CA ITEMP2 # ENTIRE COMMAND. 054805,000581: 07,3521 54047 LASTSEG TS GYROCMD 054806,000582: 07,3522 00006 EXTEND 054807,000583: 07,3523 74742 MP BIT10 # WAITLIST DT 054808,000584: 07,3524 66250 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES. 054809,000585: 07,3525 05203 TC WAITLIST 054810,000586: 07,3526 E3,1474 EBANK= CDUIND 054811,000587: 07,3526 03376 16103 2CADR STRTGYRO 054812,000588: 054813,000589: 07,3530 34742 GYROEXIT CAF BIT10 054814,000590: 07,3531 00006 EXTEND 054815,000591: 07,3532 05014 WOR CHAN14 054816,000592: 07,3533 15261 TCF TASKOVER 054817,000593: 054818,000594: 07,3534 50061 LONGGYRO INDEX ITEMP1 054819,000595: 07,3535 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF 054820,000596: 07,3536 34736 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192. 054821,000597: 07,3537 60062 AD ITEMP2 054822,000598: 07,3540 54047 TS GYROCMD 054823,000599: 054824,000600: 07,3541 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS 054825,000601: 07,3542 74742 MP BIT10 # ALMOST OUT. 054826,000602: 07,3543 67750 AD NEG3 054827,000603: 07,3544 05203 TC WAITLIST 054828,000604: 07,3545 E3,1474 EBANK= CDUIND 054829,000605: 07,3545 03550 16103 2CADR 8192AUG 054830,000606: 054831,000607: 07,3547 13530 TCF GYROEXIT 054832,000608: 054833,000609: 07,3550 03632 8192AUG TC CAGETEST 054834,000610: 054835,000611: 07,3551 34750 CAF BIT4 054836,000612: 07,3552 00006 EXTEND 054837,000613: 07,3553 02012 RAND CHAN12 054838,000614: 07,3554 10000 CCS A 054839,000615: 07,3555 13630 TCF IMUBAD 054840,000616: 07,3556 31311 CA LGYRO # ADD 8192 PULSES TO GYROCMD 054841,000617: 07,3557 54003 TS EBANK 054842,000618: 07,3560 74357 MASK LOW8 054843,000619: 07,3561 54061 TS ITEMP1 054844,000620: 054845,000621: 07,3562 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG. 054846,000622: 07,3563 11400 CCS 1400 054847,000623: 07,3564 13570 TCF AUG2 # MORE TO COME. 054848,000624: 054849,000625: 07,3565 34736 CAF BIT14 054850,000626: 07,3566 26047 ADS GYROCMD 054851,000627: 07,3567 13522 TCF LASTSEG +1 054852,000628: 054853,000629: # Page 1322 054854,000630: 07,3570 50061 AUG2 INDEX ITEMP1 054855,000631: 07,3571 55400 TS 1400 054856,000632: 07,3572 34736 CAF BIT14 054857,000633: 07,3573 26047 ADS GYROCMD 054858,000634: 07,3574 13541 TCF AUG3 # COMPUTE DT. 054859,000635: 054860,000636: # Page 1323 054861,000637: 07,3575 63511 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT. 054862,000638: 07,3576 00006 EXTEND 054863,000639: 07,3577 63402 BZMF STRTGYR2 054864,000640: 054865,000641: 07,3600 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT. 054866,000642: 07,3601 43621 DCS GYROFRAC 054867,000643: 07,3602 20071 DAS RUPTREG1 054868,000644: 054869,000645: 07,3603 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO. 054870,000646: 07,3604 64743 AD BIT9 054871,000647: 07,3605 00006 EXTEND 054872,000648: 07,3606 05014 WOR CHAN14 054873,000649: 054874,000650: 07,3607 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE. 054875,000651: 07,3610 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE 054876,000652: 07,3611 40071 CS RUPTREG2 # POSITIVE -- BIT9 OF CHAN 14 DETERMINES 054877,000653: 07,3612 76077 MASK LOW7 # THE SIGN OF THE COMMAND. 054878,000654: 07,3613 40000 COM 054879,000655: 07,3614 56071 XCH RUPTREG2 054880,000656: 07,3615 40000 COM 054881,000657: 07,3616 13471 TCF GMERGE 054882,000658: 054883,000659: 07,3617 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS. 054884,000660: 054885,000661: 07,3620 00000 00034 GYROFRAC 2DEC .215 B-21 054886,000662: 054887,000663: # Page 1324 054888,000664: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE. 054889,000665: 054890,000666: 07,3622 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURRED OR IF 054891,000667: 07,3623 00011 READ DSALMOUT # ISS WARNING IS ON. 054892,000668: 07,3624 74753 MASK BIT1 054893,000669: 07,3625 10000 CCS A 054894,000670: 07,3626 13630 TCF IMUBAD 054895,000671: 054896,000672: 07,3627 13656 IMUGOOD TCF GOODEND # WITH C(A) = 0. 054897,000673: 054898,000674: 07,3630 34755 IMUBAD CAF ZERO 054899,000675: 07,3631 13653 TCF BADEND 054900,000676: 054901,000677: 07,3632 34746 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE 054902,000678: 07,3633 71277 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED. 054903,000679: 07,3634 10000 CCS A 054904,000680: 07,3635 13630 TCF IMUBAD # DIRECTLY. 054905,000681: 07,3636 00002 TC Q # WITH C(A) = +0. 054906,000682: 054907,000683: 07,3637 41277 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED. 054908,000684: 07,3640 74746 MASK BIT6 054909,000685: 07,3641 10000 CCS A 054910,000686: 07,3642 24002 INCR Q 054911,000687: 07,3643 00002 TC Q 054912,000688: 054913,000689: 07,3644 41277 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION. 054914,000690: 07,3645 74746 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED. 054915,000691: 07,3646 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION 054916,000692: 07,3647 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY 054917,000693: 07,3650 44755 CS ZERO # TO SWRETURN. 054918,000694: 07,3651 55301 TS IMUCADR 054919,000695: 07,3652 12746 TCF MODEEXIT 054920,000696: 054921,000697: # Page 1325 054922,000698: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION 054923,000699: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS. 054924,000700: 054925,000701: 07,3653 54071 BADEND TS RUPTREG2 # DEVICE INDEX. 054926,000702: 07,3654 44755 CS ZERO # FOR FAILURE. 054927,000703: 07,3655 13660 TCF GOODEND +2 054928,000704: 054929,000705: 07,3656 54071 GOODEND TS RUPTREG2 054930,000706: 07,3657 44753 CS ONE # FOR SUCCESS. 054931,000707: 054932,000708: 07,3660 54072 TS RUPTREG3 054933,000709: 07,3661 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP. 054934,000710: 07,3662 11301 CCS MODECADR 054935,000711: 07,3663 13667 TCF +4 # YES -- WAKE IT UP. 054936,000712: 07,3664 13677 TCF ENDMODE # IF 0, PROGRAM NOT IN YET. 054937,000713: 054938,000714: 07,3665 00006 EXTEND 054939,000715: 07,3666 13700 BZF ENDMODE +1 # BZF = TCF IF MODECADR = -0. 054940,000716: 054941,000717: 07,3667 34755 CAF ZERO # WAKE SLEEPING PROGRAM. 054942,000718: 07,3670 50071 INDEX RUPTREG2 054943,000719: 07,3671 57301 XCH MODECADR 054944,000720: 07,3672 05137 TC JOBWAKE 054945,000721: 054946,000722: 07,3673 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL. 054947,000723: 07,3674 50064 INDEX LOCCTR 054948,000724: 07,3675 26164 ADS LOC 054949,000725: 054950,000726: 07,3676 15261 TCF TASKOVER 054951,000727: 054952,000728: 07,3677 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT 054953,000729: 07,3700 50071 +1 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND 054954,000730: 07,3701 55301 TS MODECADR # SUCCESSFUL. 054955,000731: 07,3702 15261 TCF TASKOVER 054956,000732: 054957,000733: # Page 1326 054958,000734: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION. 054959,000735: 054960,000736: # PROGRAM DESCRIPTION DATE -- 21 FEB 1967 054961,000737: # LOG SECTION IMU MODE SWITCHING 054962,000738: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82 054963,000739: 054964,000740: # FUNCTIONAL DESCRIPTION -- 054965,000741: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED 054966,000742: # I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINES 054967,000743: # MODEECADR ARE MADE AND ACTED UPON. 054968,000744: # 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO 054969,000745: # SLEEP. 054970,000746: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP 054971,000747: # CALL AND RETURNS TO CALLING ROUTINE AT L+3. 054972,000748: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR 054973,000749: # AND RETURNS TO CALLING ROUTINE AT L+2. 054974,000750: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF 054975,000751: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM 054976,000752: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS. 054977,000753: 054978,000754: # CALLING SEQUENCE -- 054979,000755: # L TC BANKCALL 054980,000756: # L+1 CADR (ONE OF 5 STALL ADDRESSES. I.E., IMUSTALL, OPTSTALL, RADSTALL, 054981,000757: # AOTSTALL, OR ATTSTALL) 054982,000758: 054983,000759: # NORMAL-EXIT MODE -- 054984,000760: # TCF JOBSLEEP OR TCF MODEXIT 054985,000761: 054986,000762: # ALARM OR ABORT EXIT MODE -- 054987,000763: # TC ABORT 054988,000764: 054989,000765: # OUTPUT -- 054990,000766: # MODECADR=CADR IF JOBSLEEP 054991,000767: # MODECADR=+0 IF I/O COMPLETE 054992,000768: # BUF2=L+3 IF I/O COMPLETE AND GOOD. 054993,000769: # BUF2=L+2 IF I/O COMPLETE BUT FAILED. 054994,000770: 054995,000771: # ERASABLE INITIALIZATION -- 054996,000772: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2) 054997,000773: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE. 054998,000774: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS. 054999,000775: 055000,000776: # DEBRIS -- 055001,000777: # RUPTREG2 AND CALLING ROUTINE MODECADR. 055002,000778: 055003,000779: 07,3703 30,2000 SBANK= LOWSUPER # RSB 2004 055004,000780: 055005,000781: 07,3703 34753 AOTSTALL CAF ONE # AOT. 055006,000782: 07,3704 03710 TC STALL 055007,000783: 055008,000784: 07,3705 34752 RADSTALL CAF TWO 055009,000785: 07,3706 13710 TCF STALL 055010,000786: 055011,000787: # Page 1327 055012,000788: 07,3707 07,3703 OPTSTALL EQUALS AOTSTALL 055013,000789: 055014,000790: 07,3707 34755 IMUSTALL CAF ZERO # IMU. 055015,000791: 055016,000792: 07,3710 00004 STALL INHINT 055017,000793: 07,3711 54071 TS RUPTREG2 # SAVE DEVICE INDEX. 055018,000794: 07,3712 50000 INDEX A # SEE IF OPERATION COMPLETE. 055019,000795: 07,3713 11301 CCS MODECADR 055020,000796: 07,3714 13732 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0. 055021,000797: 07,3715 13726 TCF MODESLP # OPERATION INCOMPLETE. 055022,000798: 07,3716 13722 TCF MODEGOOD # COMPLETE AND GOOD IF = -1. 055023,000799: 055024,000800: 07,3717 50071 MG2 INDEX RUPTREG2 # COMPLETE FAILED IF -0. RESET TO +0. 055025,000801: 07,3720 55301 TS MODECADR # RETURN TO CALLER. 055026,000802: 07,3721 12746 TCF MODEEXIT 055027,000803: 055028,000804: 07,3722 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1. 055029,000805: 07,3723 13732 TCF MODABORT 055030,000806: 055031,000807: 07,3724 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND 055032,000808: 07,3725 13717 TCF MG2 # RETURN IMMEDIATELY, SETTIN CADR = +0. 055033,000809: 055034,000810: 07,3726 04645 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY. 055035,000811: 07,3727 50071 INDEX RUPTREG2 055036,000812: 07,3730 55301 TS MODECADR 055037,000813: 07,3731 15133 TCF JOBSLEEP 055038,000814: 055039,000815: 07,3732 52134 MODABORT DXCH BUF2 055040,000816: 07,3733 05706 TC BAILOUT1 # TWO PROGRAMS USING THE SAME DEVICE. 055041,000817: 07,3734 31210 OCT 31210 055042,000818: 055043,000819: # Page 1328 055044,000820: # CONSTANTS FOR MODE SWITCHING ROUTINES 055045,000821: 055046,000822: 07,3735 5741 BITS3&4 = OCT14 055047,000823: 07,3735 4771 BITS4&6 = OCT50 055048,000824: 07,3735 00030 BITS4-5 OCT 00030 055049,000825: 07,3736 4744 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7. 055050,000826: 07,3736 77500 -COMMAX DEC -191 B-14 055051,000827: 07,3737 77477 -COMMAX- DEC -192 B-14 055052,000828: 07,3740 00074 600MS DEC 60 B-14 055053,000829: 07,3741 07,3201 IMUFIN20 = IMUFINE 055054,000830: 07,3741 31304 GOMANUR CA ATTCADR # IS KALCMANU FREE 055055,000831: 07,3742 00006 EXTEND 055056,000832: 07,3743 13745 BZF +2 055057,000833: 07,3744 03732 TC MODABORT # BAILOUT 055058,000834: 07,3745 00006 +2 EXTEND 055059,000835: 07,3746 30134 DCA BUF2 055060,000836: 07,3747 53305 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3 055061,000837: 055062,000838: 07,3750 30006 CA BBANK 055063,000839: 07,3751 74757 MASK SEVEN 055064,000840: 07,3752 27305 ADS ATTCADR +1 055065,000841: 055066,000842: 07,3753 30167 CA PRIORITY 055067,000843: 07,3754 77730 MASK PRIO37 055068,000844: 07,3755 55306 TS ATTPRIO # SAVE USER'S PRIO 055069,000845: 055070,000846: 07,3756 33762 CAF KALEBCON # SET EBANK FOR KALCMAN3 055071,000847: 07,3757 54003 TS EBANK 055072,000848: 07,3760 04635 TC POSTJUMP 055073,000849: 07,3761 44004 CADR KALCMAN3 055074,000850: 07,3762 03275 KALEBCON ECADR BCDU 055075,000851: 055076,000852: # Page 1329 055077,000853: # PROGRAM DESCRIPTION 055078,000854: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY) 055079,000855: # MOD NO -- 1 055080,000856: # MOD BY -- N.BRODEUR 055081,000857: 055082,000858: # FUNCTIONAL DESCRIPTION 055083,000859: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN 055084,000860: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE 055085,000861: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE 055086,000862: # CMC. CALLED THROUGH BANKCALL 055087,000863: 055088,000864: # CALLING SEQUENCE -- 055089,000865: # L TC BANKCALL 055090,000866: # L+1 CADR R02BOTH 055091,000867: 055092,000868: # SUBROUTINES CALLED 055093,000869: # VARALARM 055094,000870: # FLAGUP 055095,000871: 055096,000872: # NORMAL EXIT MODES 055097,000873: # AT L+2 OF CALLING SEQUENCE 055098,000874: 055099,000875: # ALARM OR ABORT EXIT MODES 055100,000876: # GOTOP00H, WITH ALARM 055101,000877: 055102,000878: # ERASABLE INITIALIZATION REQUIRED 055103,000879: # NONE 055104,000880: 055105,000881: # DEBRIS 055106,000882: # CENTRALS -- A,Q,L 055107,000883: 055108,000884: 34,3650 BANK 34 055109,000885: 04,2000 SETLOC R02 055110,000886: 04,2000 BANK 055111,000887: 04,3232 COUNT* $$/R02 055112,000888: 04,3232 00063 DEC51 DEC 51 B-14 055113,000889: 04,3233 34737 R02BOTH CAF REFSMBIT 055114,000890: 04,3234 70077 MASK FLAGWRD3 055115,000891: 04,3235 10000 CCS A 055116,000892: 04,3236 03247 TC R02ZERO # ZERO IMUS 055117,000893: 055118,000894: 04,3237 31277 CA IMODES30 055119,000895: 04,3240 74743 MASK BIT9 # IS ISS INITIALIZED 055120,000896: 04,3241 00006 EXTEND 055121,000897: 04,3242 13244 BZF +2 055122,000898: 04,3243 44750 CS BIT4 # SEND IMU ALARM CODE 210 055123,000899: 04,3244 63252 AD OCT220 # SEND REFSMM ALARM 055124,000900: 04,3245 05734 TC VARALARM 055125,000901: 055126,000902: 04,3246 06001 TC GOTOP00H 055127,000903: 055128,000904: 04,3247 05504 R02ZERO TC UPFLAG 055129,000905: # Page 1330 055130,000906: 04,3250 00007 ADRES IMUSE 055131,000907: 04,3251 14631 TCF SWRETURN 055132,000908: 04,3252 00220 OCT220 OCT 220 055133,000909: 055134,000910: # Page 1331 055135,000911: # PROGRAM DESCRIPTION: P06 10 FEB 67 055136,000912: 055137,000913: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION. 055138,000914: 055139,000915: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU 055140,000916: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE 055141,000917: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON. 055142,000918: 055143,000919: # CALLING SEQUENCE: 055144,000920: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E. 055145,000921: 055146,000922: # SUBROUTINES CALLED: 055147,000923: # GOPERF1 055148,000924: # BANKCALL 055149,000925: # FLAGDOWN 055150,000926: 055151,000927: # Page 1332 055152,000928: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2. 055153,000929: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATIBILITY 055154,000930: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING. 055155,000931: 055156,000932: 37,2000 SETLOC P05P06 055157,000933: 37,2000 BANK 055158,000934: 055159,000935: 37,3652 0314 EBANK= TIME2SAV 055160,000936: 37,3652 COUNT* $$/P06 055161,000937: 055162,000938: 37,3652 05504 P06 TC UPFLAG # SET NODOV37 BIT 055163,000939: 37,3653 00054 ADRES NODOFLAG 055164,000940: 055165,000941: 37,3654 00004 PRESTAND INHINT 055166,000942: 37,3655 00006 EXTEND 055167,000943: 37,3656 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2 055168,000944: 37,3657 52315 DXCH TIME2SAV 055169,000945: 37,3660 03711 TC SCALPREP 055170,000946: 37,3661 03654 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE 055171,000947: 37,3662 52155 DXCH MPAC # T1,T2 AND SCALER OK 055172,000948: 37,3663 52317 DXCH SCALSAVE # STORE SCALER 055173,000949: 37,3664 00004 INHINT 055174,000950: 37,3665 04616 TC BANKCALL 055175,000951: 37,3666 17166 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN 055176,000952: 055177,000953: 37,3667 05516 TC DOWNFLAG 055178,000954: 37,3670 00007 ADRES IMUSE # IMUSE DOWN 055179,000955: 37,3671 05516 TC DOWNFLAG 055180,000956: 37,3672 00010 ADRES RNDVZFLG # RNDVZFLG DOWN 055181,000957: 055182,000958: 37,3673 34741 CAF BIT11 055183,000959: 37,3674 00006 EXTEND 055184,000960: 37,3675 05013 WOR CHAN13 # SET STANDBY ENABLE BIT 055185,000961: 055186,000962: 37,3676 05353 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY 055187,000963: 37,3677 07024 OCT 07024 # RECOVERS 055188,000964: 37,3700 20000 OCT 20000 055189,000965: 37,3701 0316 EBANK= SCALSAVE 055190,000966: 37,3701 03731 76060 2CADR POSTAND 055191,000967: 055192,000968: 37,3703 34774 CAF OCT62 055193,000969: 37,3704 04616 TC BANKCALL 055194,000970: 37,3705 20624 CADR GOPERF1 055195,000971: 37,3706 13703 TCF -3 055196,000972: 37,3707 13703 TCF -4 055197,000973: 37,3710 13703 TCF -5 055198,000974: 055199,000975: 37,3711 4774 OCT62 EQUALS .5SEC # DEC 50 = OCT 62 055200,000976: 055201,000977: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A 055202,000978: # Page 1333. 055203,000979: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER 055204,000980: # DATA ARE NOT COMPATIBLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE 055205,000981: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES 055206,000982: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE 055207,000983: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM 055208,000984: # T1.0 ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF 055209,000985: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5 055210,000986: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER 055211,000987: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1. 055212,000988: 055213,000989: 37,3711 00006 SCALPREP EXTEND 055214,000990: 37,3712 22156 QXCH MPAC +2 055215,000991: 37,3713 04103 TC FINETIME +1 055216,000992: 37,3714 00003 RELINT 055217,000993: 37,3715 52155 DXCH MPAC 055218,000994: 37,3716 34747 CA BIT5 # ADD 5 MS TO THE SCALER READING. 055219,000995: 37,3717 54001 TS L 055220,000996: 37,3720 34755 CA ZERO 055221,000997: 37,3721 20155 DAS MPAC 055222,000998: 37,3722 44346 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO 055223,000999: 37,3723 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1. 055224,001000: 37,3724 56155 XCH MPAC +1 055225,001001: 37,3725 74346 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST 055226,001002: # INTERVAL AFTER THE T1 INCREMENT 055227,001003: # (NOW = 00000, SINCE BIT 5 ADDED). 055228,001004: 37,3726 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT 055229,001005: 37,3727 24156 INCR MPAC +2 # NO 055230,001006: 37,3730 00156 TC MPAC +2 # YES 055231,001007: 055232,001008: # POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE 055233,001009: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE 055234,001010: # INSPECTED TO INSURE COMPATIBILITY BETWEEN THE SCALER READING AND THE 055235,001011: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER 055236,001012: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF 055237,001013: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER. 055238,001014: 055239,001015: 37,3731 COUNT* $$/P05 055240,001016: 055241,001017: 37,3731 44741 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY 055242,001018: 37,3732 00006 EXTEND 055243,001019: 37,3733 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT 055244,001020: 37,3734 00004 INHINT 055245,001021: 37,3735 34755 CA ZERO 055246,001022: 37,3736 54001 TS L 055247,001023: 37,3737 52025 DXCH TIME2 # CLEAR TIME1 TIME2 055248,001024: 37,3740 03711 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1 055249,001025: 37,3741 03734 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE 055250,001026: 37,3742 00006 EXTEND # T1,T2 AND SCALER OK 055251,001027: 37,3743 40317 DCS SCALSAVE 055252,001028: 37,3744 20155 DAS MPAC # FORM DP DIFFERENCE OF POST-STANDBY SCALER 055253,001029: # Page 1334 055254,001030: 37,3745 34742 CAF BIT10 # MINUS PRE-STANDBY SCALER AND SHIFT RIGHT 055255,001031: 37,3746 07312 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2. 055256,001032: 37,3747 34755 CAF ZERO 055257,001033: 37,3750 54156 TS MPAC +2 # NEEDED FOR TP AGREE 055258,001034: 37,3751 07262 TC TPAGREE # MAKE DP DIFF AGREE 055259,001035: 37,3752 10154 CCS MPAC 055260,001036: 37,3753 03760 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW 055261,001037: 37,3754 03760 TC POSTCOM # BETWEEN PRE AND POST STANDBY. 055262,001038: 37,3755 03756 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD 055263,001039: 37,3756 34742 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT. 055264,001040: 37,3757 26154 ADS MPAC 055265,001041: 37,3760 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER. 055266,001042: 37,3761 30315 DCA TIME2SAV # PRE-STANDBY TIME1 TIME2 055267,001043: 37,3762 20155 DAS MPAC 055268,001044: 37,3763 07262 TC TPAGREE # FORCE SIGN AGREEMENT 055269,001045: 37,3764 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2. 055270,001046: 37,3765 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH 055271,001047: 37,3766 05516 TC DOWNFLAG # CLEAR NODOFLAG 055272,001048: 37,3767 00054 ADRES NODOFLAG 055273,001049: 055274,001050: 37,3770 06001 TC GOTOP00H 055275,001051: End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc