Source Code

061549,000001: # Copyright: Public domain. 061550,000002: # Filename: IMU_MODE_SWITCHING_ROUTINES.agc 061551,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. 061552,000004: # It is part of the source code for the Command Module's (CM) 061553,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 061554,000006: # Assembler: yaYUL 061555,000007: # Contact: Ron Burkey <info@sandroid.org>. 061556,000008: # Website: www.ibiblio.org/apollo. 061557,000009: # Pages: 1420-1448 061558,000010: # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting from 061559,000011: # the Colossus249/ file of the same name, 061560,000012: # using Comanche055 page images. 061561,000013: 061562,000014: # This source code has been transcribed or otherwise adapted from digitized 061563,000015: # images of a hardcopy from the MIT Museum. The digitization was performed 061564,000016: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many 061565,000017: # thanks to both. The images (with suitable reduction in storage size and 061566,000018: # consequent reduction in image quality as well) are available online at 061567,000019: # www.ibiblio.org/apollo. If for some reason you find that the images are 061568,000020: # illegible, contact me at info@sandroid.org about getting access to the 061569,000021: # (much) higher-quality images which Paul actually created. 061570,000022: 061571,000023: # Notations on the hardcopy document read, in part: 061572,000024: 061573,000025: # Assemble revision 055 of AGC program Comanche by NASA 061574,000026: # 2021113-051. 10:28 APR. 1, 1969 061575,000027: 061576,000028: # This AGC program shall also be referred to as 061577,000029: # Colossus 2A 061578,000030: 061579,000031: # Page 1420 061580,000032: 5521 BLOCK 02 061581,000033: 4000 SETLOC FFTAG3 061582,000034: 4000 BANK 061583,000035: 061584,000036: 5521 E3,1471 EBANK= COMMAND 061585,000037: 061586,000038: # FIXED-FIXED ROUTINES 061587,000039: 061588,000040: 5521 COUNT 02/IMODE 061589,000041: 061590,000042: 5521 35021 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS. 061591,000043: 5522 54032 TS CDUX 061592,000044: 5523 54033 TS CDUY 061593,000045: 5524 54034 TS CDUZ 061594,000046: 5525 00002 TC Q 061595,000047: 061596,000048: 5526 5007 SPSCODE = BIT9 061597,000049: 061598,000050: # Page 1421 061599,000051: # IMU ZEROING ROUTINE. 061600,000052: 061601,000053: 11,3776 BANK 11 061602,000054: 07,2000 SETLOC MODESW 061603,000055: 07,2000 BANK 061604,000056: 061605,000057: 07,2577 COUNT 07/IMODE 061606,000058: 061607,000059: 07,2577 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS. 061608,000060: 07,2600 41036 CS DSPTAB +11D # DON'T ZERO CDUS IS IMU IN GIMBAL LOCK AND 061609,000061: 07,2601 75033 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION) 061610,000062: 07,2602 10000 CCS A 061611,000063: 07,2603 12607 TCF IMUZEROA 061612,000064: 061613,000065: 07,2604 05650 TC ALARM # IF SO. 061614,000066: 07,2605 00206 OCT 00206 061615,000067: 061616,000068: 07,2606 13542 TCF CAGETSTJ +4 # IMMEDIATE FAILURE. 061617,000069: 061618,000070: 07,2607 03536 IMUZEROA TC CAGETSTJ 061619,000071: 061620,000072: # DO ALL THE WORK. 061621,000073: 061622,000074: 07,2610 41321 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 061623,000075: 07,2611 75035 MASK SUPER011 # BIT5 FOR GROUND 061624,000076: 07,2612 27321 ADS IMODES33 061625,000077: 061626,000078: 07,2613 41320 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE 061627,000079: 07,2614 75771 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN). 061628,000080: 07,2615 27320 ADS IMODES30 061629,000081: 061630,000082: 07,2616 45033 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR 061631,000083: 07,2617 00006 EXTEND # COUNTER DISABLED. 061632,000084: 07,2620 03012 WAND CHAN12 061633,000085: 061634,000086: 07,2621 03151 TC NOATTOFF # TURN OFF NO ATT LAMP. 061635,000087: 061636,000088: 07,2622 35013 CAF BIT5 061637,000089: 07,2623 00006 EXTEND 061638,000090: 07,2624 05012 WOR CHAN12 061639,000091: 061640,000092: 07,2625 05521 TC ZEROICDU 061641,000093: 07,2626 35012 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO 061642,000094: 07,2627 05245 TC WAITLIST # RECEIVE ITS PULSE TRAIN. 061643,000095: 07,2630 E3,1474 EBANK= CDUIND 061644,000096: 07,2630 02642 16063 2CADR IMUZERO2 061645,000097: 061646,000098: 07,2632 41320 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT. 061647,000099: 07,2633 75007 MASK BIT9 061648,000100: 07,2634 10000 CCS A 061649,000101: 07,2635 12640 TCF MODEEXIT 061650,000102: # Page 1422 061651,000103: 07,2636 05650 TC ALARM 061652,000104: 07,2637 00210 OCT 210 061653,000105: 061654,000106: 07,2640 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT. 061655,000107: 07,2641 14675 TCF SWRETURN 061656,000108: 061657,000109: 07,2642 03524 IMUZERO2 TC CAGETEST 061658,000110: 07,2643 05521 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ 061659,000111: 061660,000112: 07,2644 45013 CS BIT5 # REMOVE ZERO DISCRETE. 061661,000113: 07,2645 00006 EXTEND 061662,000114: 07,2646 03012 WAND CHAN12 061663,000115: 061664,000116: 07,2647 35005 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS 061665,000117: 07,2650 05272 TC VARDELAY 061666,000118: 061667,000119: 07,2651 03524 IMUZERO3 TC CAGETEST 061668,000120: 07,2652 45771 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT. 061669,000121: 07,2653 71320 MASK IMODES30 061670,000122: 07,2654 55320 TS IMODES30 061671,000123: 061672,000124: 07,2655 45035 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES 061673,000125: 07,2656 71321 MASK IMODES33 # BIT5 FOR GROUND 061674,000126: 07,2657 55321 TS IMODES33 061675,000127: 061676,000128: 07,2660 04740 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE 061677,000129: 07,2661 14665 CADR SETISSW # PRESENT. 061678,000130: 061679,000131: 07,2662 13514 TCF ENDIMU 061680,000132: 061681,000133: # Page 1423 061682,000134: # IMU COARSE ALIGN MODE. 061683,000135: 061684,000136: 07,2663 00004 IMUCOARS INHINT 061685,000137: 07,2664 03536 TC CAGETSTJ 061686,000138: 07,2665 03027 TC SETCOARS 061687,000139: 061688,000140: 07,2666 36211 CAF SIX 061689,000141: 07,2667 05245 TC WAITLIST 061690,000142: 07,2670 E3,1474 EBANK= CDUIND 061691,000143: 07,2670 02673 16063 2CADR COARS 061692,000144: 061693,000145: 07,2672 12640 TCF MODEEXIT 061694,000146: 061695,000147: 07,2673 03524 COARS TC CAGETEST 061696,000148: 07,2674 35012 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 061697,000149: 07,2675 00006 EXTEND 061698,000150: 07,2676 05012 WOR CHAN12 061699,000151: 061700,000152: 07,2677 35016 CAF TWO # SET CDU INDICATOR 061701,000153: 07,2700 55474 COARS1 TS CDUIND 061702,000154: 061703,000155: 07,2701 51474 INDEX CDUIND # COMPUTE THETAD -- THETAA IN 1'S 061704,000156: 07,2702 31155 CA THETAD # COMPLEMENT FORM 061705,000157: 07,2703 00006 EXTEND 061706,000158: 07,2704 51474 INDEX CDUIND 061707,000159: 07,2705 20032 MSU CDUX 061708,000160: 07,2706 00006 EXTEND 061709,000161: 07,2707 75003 MP BIT13 # SHIFT RIGHT 2 061710,000162: 07,2710 56001 XCH L # ROUND 061711,000163: 07,2711 60000 DOUBLE 061712,000164: 07,2712 54061 TS ITEMP1 061713,000165: 07,2713 12715 TCF +2 061714,000166: 07,2714 26001 ADS L 061715,000167: 061716,000168: 07,2715 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED 061717,000169: 07,2716 23471 LXCH COMMAND 061718,000170: 07,2717 11474 CCS CDUIND 061719,000171: 07,2720 02700 TC COARS1 061720,000172: 061721,000173: 07,2721 35016 CAF TWO # MINIMUM OF 4 MS WAIT 061722,000174: 07,2722 05272 TC VARDELAY 061723,000175: 061724,000176: # Page 1424 061725,000177: 07,2723 03524 COARS2 TC CAGETEST # DON'T CONTINUE IF CAGED. 061726,000178: 07,2724 54061 TS ITEMP1 # SET TO +0. 061727,000179: 07,2725 35016 CAF TWO # SET CDU INDICATOR. 061728,000180: 07,2726 55474 +3 TS CDUIND 061729,000181: 061730,000182: 07,2727 51474 INDEX CDUIND 061731,000183: 07,2730 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED 061732,000184: 07,2731 02735 TC COMPOS # GREATER THAN MAX ALLOWED 061733,000185: 07,2732 02744 TC NEXTCDU +1 061734,000186: 07,2733 03002 TC COMNEG 061735,000187: 07,2734 02744 TC NEXTCDU +1 061736,000188: 061737,000189: 07,2735 63624 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED 061738,000190: 07,2736 00006 EXTEND # MINUS ONE 061739,000191: 07,2737 63012 BZMF COMZERO 061740,000192: 07,2740 51474 INDEX CDUIND 061741,000193: 07,2741 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES 061742,000194: 07,2742 43625 CS -COMMAX- # ALLOWED 061743,000195: 061744,000196: 07,2743 24061 NEXTCDU INCR ITEMP1 061745,000197: 07,2744 65020 AD NEG0 061746,000198: 07,2745 51474 INDEX CDUIND 061747,000199: 07,2746 54050 TS CDUXCMD # SET UP COMMAND REGISTER. 061748,000200: 061749,000201: 07,2747 11474 CCS CDUIND 061750,000202: 07,2750 02726 TC COARS2 +3 061751,000203: 061752,000204: 07,2751 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT. 061753,000205: 07,2752 13016 TCF SENDPULS 061754,000206: 061755,000207: 07,2753 05267 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE. 061756,000208: 07,2754 00226 DEC 150 B-14 061757,000209: 061758,000210: 07,2755 35016 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT 061759,000211: 07,2756 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD. 061760,000212: 07,2757 50000 INDEX A 061761,000213: 07,2760 30032 CA CDUX 061762,000214: 07,2761 00006 EXTEND 061763,000215: 07,2762 50061 INDEX ITEMP1 061764,000216: 07,2763 21155 MSU THETAD 061765,000217: 07,2764 10000 CCS A 061766,000218: 07,2765 12773 TCF COARSERR 061767,000219: 07,2766 12770 TCF CORSCHK2 061768,000220: 07,2767 12773 TCF COARSERR 061769,000221: 061770,000222: # Page 1425 061771,000223: 07,2770 10061 CORSCHK2 CCS ITEMP1 061772,000224: 07,2771 12756 TCF CHKCORS 061773,000225: 07,2772 13514 TCF ENDIMU # END OF COARSE ALIGNMENT 061774,000226: 061775,000227: 07,2773 63001 COARSERR AD COARSTOL # 2 DEGREES. 061776,000228: 07,2774 00006 EXTEND 061777,000229: 07,2775 62770 BZMF CORSCHK2 061778,000230: 061779,000231: 07,2776 05650 TC ALARM # COARSE ALIGN ERROR. 061780,000232: 07,2777 00211 OCT 211 061781,000233: 061782,000234: 07,3000 13522 TCF IMUBAD 061783,000235: 061784,000236: 07,3001 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS 061785,000237: 061786,000238: 07,3002 63624 COMNEG AD -COMMAX 061787,000239: 07,3003 00006 EXTEND 061788,000240: 07,3004 63012 BZMF COMZERO 061789,000241: 07,3005 40000 COM 061790,000242: 07,3006 51474 INDEX CDUIND 061791,000243: 07,3007 55471 TS COMMAND 061792,000244: 07,3010 33625 CA -COMMAX- 061793,000245: 07,3011 02743 TC NEXTCDU 061794,000246: 061795,000247: 07,3012 35021 COMZERO CAF ZERO 061796,000248: 07,3013 51474 INDEX CDUIND 061797,000249: 07,3014 57471 XCH COMMAND 061798,000250: 07,3015 02743 TC NEXTCDU 061799,000251: 061800,000252: 07,3016 37707 SENDPULS CAF 13,14,15 061801,000253: 07,3017 00006 EXTEND 061802,000254: 07,3020 05014 WOR CHAN14 061803,000255: 07,3021 33626 CAF 600MS 061804,000256: 07,3022 12722 TCF COARS2 -1 # THEN TO VARDELAY 061805,000257: 061806,000258: 07,3023 35012 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 061807,000259: 07,3024 00006 EXTEND 061808,000260: 07,3025 05012 WOR CHAN12 061809,000261: 07,3026 05324 TC TASKOVER 061810,000262: 061811,000263: # Page 1426 061812,000264: 07,3027 35014 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN 061813,000265: 07,3030 00006 EXTEND 061814,000266: 07,3031 02012 RAND CHAN12 061815,000267: 07,3032 10000 CCS A 061816,000268: 07,3033 00002 TC Q 061817,000269: 061818,000270: 07,3034 45012 CS BIT6 # CLEAR ISS ERROR COUNTERS 061819,000271: 07,3035 00006 EXTEND 061820,000272: 07,3036 03012 WAND CHAN12 061821,000273: 061822,000274: 07,3037 45006 CS BIT10 # KNOCK DOWN GYRO ACTIVITY 061823,000275: 07,3040 00006 EXTEND 061824,000276: 07,3041 03014 WAND CHAN14 061825,000277: 07,3042 45021 CS ZERO 061826,000278: 07,3043 54047 TS GYROCMD 061827,000279: 061828,000280: 07,3044 35014 CAF BIT4 # PUT ISS IN COARSE ALIGN 061829,000281: 07,3045 00006 EXTEND 061830,000282: 07,3046 05012 WOR CHAN12 061831,000283: 061832,000284: 07,3047 41036 CS DSPTAB +11D # TURN ON NO ATT LAMP 061833,000285: 07,3050 73072 MASK OCT40010 061834,000286: 07,3051 27036 ADS DSPTAB +11D 061835,000287: 061836,000288: 07,3052 41321 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 061837,000289: 07,3053 75012 MASK BIT6 061838,000290: 07,3054 27321 ADS IMODES33 061839,000291: 061840,000292: 07,3055 41320 CS IMODES30 # DISABLE IMUFAIL 061841,000293: 07,3056 75014 MASK BIT4 061842,000294: 07,3057 27320 ADS IMODES30 061843,000295: 061844,000296: 07,3060 45013 RNDREFDR CS BIT5 # KNOCK DOWN TRACK FLAG 061845,000297: 07,3061 70075 MASK FLAGWRD1 061846,000298: 07,3062 54075 TS FLAGWRD1 061847,000299: 061848,000300: 07,3063 45001 CS BIT15 # KNOCK DOWN DRIFT FLAG 061849,000301: 07,3064 70076 MASK FLAGWRD2 061850,000302: 07,3065 54076 TS FLAGWRD2 061851,000303: 061852,000304: 07,3066 45003 CS BIT13 # KNOCK DOWN REFSMMAT FLAG 061853,000305: 07,3067 70077 MASK FLAGWRD3 061854,000306: 07,3070 54077 TS FLAGWRD3 061855,000307: 061856,000308: 07,3071 00002 TC Q 061857,000309: 061858,000310: 07,3072 40010 OCT40010 OCT 40010 061859,000311: 061860,000312: # Page 1427 061861,000313: # IMU FINE ALIGN MODE SWITCH. 061862,000314: 061863,000315: 07,3073 00004 IMUFINE INHINT 061864,000316: 07,3074 03536 TC CAGETSTJ # SEE IF IMU BEING CAGED. 061865,000317: 061866,000318: 07,3075 45027 CS BITS4-5 # RESET ZERO AND COARSE 061867,000319: 07,3076 00006 EXTEND 061868,000320: 07,3077 03012 WAND CHAN12 061869,000321: 061870,000322: 07,3100 45012 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED 061871,000323: 07,3101 71321 MASK IMODES33 061872,000324: 07,3102 55321 TS IMODES33 061873,000325: 061874,000326: 07,3103 03151 TC NOATTOFF 061875,000327: 061876,000328: 07,3104 35006 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE 061877,000329: 07,3105 05245 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE 061878,000330: 07,3106 E3,1474 EBANK= CDUIND 061879,000331: 07,3106 03117 16063 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN 061880,000332: 061881,000333: 07,3110 35042 CAF 2SECS 061882,000334: 07,3111 05245 TC WAITLIST 061883,000335: 07,3112 E3,1474 EBANK= CDUIND 061884,000336: 07,3112 03115 16063 2CADR IMUFINED 061885,000337: 061886,000338: 07,3114 12640 TCF MODEEXIT 061887,000339: 061888,000340: 07,3115 03524 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU. 061889,000341: 07,3116 13514 TCF ENDIMU 061890,000342: 061891,000343: # Page 1428 061892,000344: 07,3117 03531 IFAILOK TC CAGETSTQ # ENABLE IMU FAIL UNLESS IMU BEING CAGED. 061893,000345: 07,3120 15324 TCF TASKOVER # IT IS. 061894,000346: 061895,000347: 07,3121 35014 CAF BIT4 # DON'T RESET IMU FAIL INHIBIT IF SOMEONE 061896,000348: 07,3122 00006 EXTEND # HAS GONE INTO COARSE ALIGN. 061897,000349: 07,3123 02012 RAND CHAN12 061898,000350: 07,3124 10000 CCS A 061899,000351: 07,3125 15324 TCF TASKOVER 061900,000352: 061901,000353: 07,3126 41320 CS IMODES30 # RESET IMUFAIL. 061902,000354: 07,3127 75003 MASK BIT13 061903,000355: 07,3130 27320 ADS IMODES30 061904,000356: 07,3131 45014 CS BIT4 061905,000357: 07,3132 71320 PFAILOK2 MASK IMODES30 061906,000358: 07,3133 55320 TS IMODES30 061907,000359: 07,3134 04740 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOW 061908,000360: 07,3135 14665 CADR SETISSW # THAT THE INHIBIT WAS BEEN REMOVED. 061909,000361: 07,3136 15324 TCF TASKOVER 061910,000362: 061911,000363: 07,3137 03531 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM. 061912,000364: 07,3140 15324 TCF TASKOVER 061913,000365: 061914,000366: 07,3141 41320 CS IMODES30 # RESET IMU AND PIPA FAIL BITS. 061915,000367: 07,3142 75006 MASK BIT10 061916,000368: 07,3143 27320 ADS IMODES30 061917,000369: 061918,000370: 07,3144 41321 CS IMODES33 061919,000371: 07,3145 75003 MASK BIT13 061920,000372: 07,3146 27321 ADS IMODES33 061921,000373: 061922,000374: 07,3147 45013 CS BIT5 061923,000375: 07,3150 13132 TCF PFAILOK2 061924,000376: 061925,000377: 07,3151 43072 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP. 061926,000378: 07,3152 71036 MASK DSPTAB +11D 061927,000379: 07,3153 65001 AD BIT15 061928,000380: 07,3154 55036 TS DSPTAB +11D 061929,000381: 07,3155 00002 TC Q 061930,000382: 061931,000383: # Page 1429 061932,000384: # ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE. 061933,000385: 061934,000386: 07,3156 45021 PIPUSE CS ZERO 061935,000387: 07,3157 54037 TS PIPAX 061936,000388: 07,3160 54040 TS PIPAY 061937,000389: 07,3161 54041 TS PIPAZ 061938,000390: 061939,000391: 07,3162 03531 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED 061940,000392: 07,3163 14675 TCF SWRETURN 061941,000393: 061942,000394: 07,3164 00004 INHINT 061943,000395: 07,3165 45017 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL 061944,000396: 07,3166 71320 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING. 061945,000397: 07,3167 55320 TS IMODES30 061946,000398: 061947,000399: 07,3170 04740 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW. 061948,000400: 07,3171 14665 CADR SETISSW # (OR GO OFF ON PIPFREE). 061949,000401: 061950,000402: 07,3172 12640 TCF MODEEXIT 061951,000403: 061952,000404: 07,3173 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DON'T LIGHT 061953,000405: 07,3174 41320 CS IMODES30 # ISS WARNING. 061954,000406: 07,3175 75017 MASK BIT1 061955,000407: 07,3176 27320 ADS IMODES30 061956,000408: 061957,000409: 07,3177 75006 MASK BIT10 # IF PIP FAIL ON, DO PROG ALARM AND RESET 061958,000410: 07,3200 10000 CCS A # ISS WARNING. 061959,000411: 07,3201 12640 TCF MODEEXIT 061960,000412: 061961,000413: 07,3202 05650 TC ALARM 061962,000414: 07,3203 00212 OCT 212 061963,000415: 061964,000416: 07,3204 00004 INHINT 061965,000417: 061966,000418: 07,3205 13170 TCF PIPFREE2 061967,000419: 061968,000420: # Page 1430 061969,000421: # THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS 061970,000422: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE 061971,000423: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT AT TEH INPUT COMMAND REGISTERS. 061972,000424: 061973,000425: 07,3206 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY. 061974,000426: 061975,000427: 07,3206 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR. 061976,000428: 07,3207 03536 TC CAGETSTJ # DON'T PROCEED IF IMU BEING CAGED. 061977,000429: 061978,000430: 07,3210 11304 CCS LGYRO # SEE IF GYROS BUSY. 061979,000431: 07,3211 03252 TC GYROBUSY # SLEEP. 061980,000432: 061981,000433: 07,3212 54156 TS MPAC +2 061982,000434: 07,3213 35012 CAF BIT6 # ENABLE THE POWER SUPPLY. 061983,000435: 07,3214 00006 EXTEND 061984,000436: 07,3215 05014 WOR CHAN14 061985,000437: 061986,000438: 07,3216 35015 CAF FOUR 061987,000439: 07,3217 05245 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER 061988,000440: 07,3220 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB). 061989,000441: 07,3220 03270 16063 2CADR STRTGYRO 061990,000442: 061991,000443: 07,3222 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR 061992,000444: 07,3223 56003 XCH EBANK # RESTORATION ON RETURN. 061993,000445: 07,3224 56161 XCH MPAC +5 061994,000446: 07,3225 55304 TS LGYRO # RESERVES GYROS. 061995,000447: 07,3226 74373 MASK LOW8 061996,000448: 07,3227 54061 TS ITEMP1 061997,000449: 061998,000450: 07,3230 35016 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS. 061999,000451: 07,3231 54157 GYROAGRE TS MPAC +3 062000,000452: 07,3232 60000 DOUBLE 062001,000453: 07,3233 60061 AD ITEMP1 062002,000454: 07,3234 54160 TS MPAC +4 062003,000455: 07,3235 00006 EXTEND 062004,000456: 07,3236 50000 INDEX A 062005,000457: 07,3237 31401 DCA 1400 062006,000458: 07,3240 52155 DXCH MPAC 062007,000459: 07,3241 07226 TC TPAGREE 062008,000460: 07,3242 52155 DXCH MPAC 062009,000461: 07,3243 50160 INDEX MPAC +4 062010,000462: 07,3244 53401 DXCH 1400 062011,000463: 062012,000464: 07,3245 10157 CCS MPAC +3 062013,000465: 07,3246 13231 TCF GYROAGRE 062014,000466: 062015,000467: 07,3247 30161 CA MPAC +5 # RESTORE CALLER'S EBANK. 062016,000468: 07,3250 54003 TS EBANK 062017,000469: 07,3251 12640 TCF MODEEXIT 062018,000470: 062019,000471: # Page 1431 062020,000472: # ROUTINES TO ALLOW TORQUING ONLY ONE JOB AT A TIME. 062021,000473: 062022,000474: 07,3252 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR. 062023,000475: 07,3253 30134 DCA BUF2 062024,000476: 07,3254 52155 DXCH MPAC 062025,000477: 07,3255 33267 REGSLEEP CAF LGWAKE 062026,000478: 07,3256 15175 TCF JOBSLEEP 062027,000479: 062028,000480: 07,3257 11304 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY. 062029,000481: 07,3260 13255 TCF REGSLEEP # IF SO, SLEEP SOME MORE. 062030,000482: 062031,000483: 07,3261 54156 TS MPAC +2 062032,000484: 07,3262 00006 EXTEND 062033,000485: 07,3263 30155 DCA MPAC 062034,000486: 07,3264 52134 DXCH BUF2 # RESTORE SWRETURN INFO. 062035,000487: 07,3265 35017 CAF ONE 062036,000488: 07,3266 13217 TCF GWAKE2 062037,000489: 062038,000490: 07,3267 17257 LGWAKE CADR GWAKE 062039,000491: 062040,000492: # Page 1432 062041,000493: # GYRO-TORQUING WAITLIST TASKS. 062042,000494: 062043,000495: 07,3270 43511 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO. 062044,000496: 07,3271 00006 EXTEND 062045,000497: 07,3272 03014 WAND CHAN14 062046,000498: 062047,000499: 07,3273 03524 TC CAGETEST 062048,000500: 062049,000501: 07,3274 31304 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14. 062050,000502: 07,3275 00006 EXTEND 062051,000503: 07,3276 75014 MP BIT4 062052,000504: 07,3277 50000 INDEX A 062053,000505: 07,3300 13301 TCF +1 062054,000506: 07,3301 03316 TC GSELECT # =0. DO Y GYRO. 062055,000507: 07,3302 00202 OCT 00202 062056,000508: 062057,000509: 07,3303 03316 TC GSELECT # =1. DO Z GYRO. 062058,000510: 07,3304 00302 OCT 00302 062059,000511: 062060,000512: 07,3305 03314 TC GSELECT -2 # =2. DO X GYRO. 062061,000513: 07,3306 00100 OCT 00100 062062,000514: 062063,000515: 07,3307 35021 CAF ZERO # =3. DONE 062064,000516: 07,3310 55304 TS LGYRO 062065,000517: 07,3311 33267 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB. 062066,000518: 07,3312 05201 TC JOBWAKE 062067,000519: 062068,000520: 07,3313 13115 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY. 062069,000521: # Page 1433 062070,000522: 07,3314 45015 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X. 062071,000523: 07,3315 27304 ADS LGYRO 062072,000524: 062073,000525: 07,3316 50002 GSELECT INDEX Q # SELECT GYRO. 062074,000526: 07,3317 30000 CAF 0 # PACKED WORD CONTAINS GYRO SELECT BITS 062075,000527: 07,3320 54064 TS ITEMP4 # AND INCREMENT TO LGYRO. 062076,000528: 07,3321 75023 MASK SEVEN 062077,000529: 07,3322 65003 AD BIT13 062078,000530: 07,3323 27304 ADS LGYRO 062079,000531: 07,3324 54003 TS EBANK 062080,000532: 07,3325 74373 MASK LOW8 062081,000533: 07,3326 54061 TS ITEMP1 062082,000534: 062083,000535: 07,3327 45023 CS SEVEN 062084,000536: 07,3330 70064 MASK ITEMP4 062085,000537: 07,3331 54064 TS ITEMP4 062086,000538: 062087,000539: 07,3332 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING. 062088,000540: 07,3333 50061 INDEX ITEMP1 062089,000541: 07,3334 31401 DCA 1400 062090,000542: 07,3335 52071 DXCH RUPTREG1 062091,000543: 062092,000544: 07,3336 10070 CCS RUPTREG1 062093,000545: 07,3337 13352 TCF MAJ+ 062094,000546: 07,3340 13342 TCF +2 062095,000547: 07,3341 13472 TCF MAJ- 062096,000548: 062097,000549: 07,3342 10071 CCS RUPTREG2 062098,000550: 07,3343 13347 TCF MIN+ 062099,000551: 07,3344 13274 TCF STRTGYR2 062100,000552: 07,3345 13467 TCF MIN- 062101,000553: 07,3346 13274 TCF STRTGYR2 062102,000554: 062103,000555: # Page 1434 062104,000556: 07,3347 63403 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST 062105,000557: 07,3350 00006 EXTEND # 16 GYRO PULSES. 062106,000558: 07,3351 63274 BZMF STRTGYR2 062107,000559: 062108,000560: 07,3352 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT. 062109,000561: 07,3353 33513 DCA GYROFRAC 062110,000562: 07,3354 20071 DAS RUPTREG1 062111,000563: 062112,000564: 07,3355 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO. 062113,000565: 07,3356 00006 EXTEND 062114,000566: 07,3357 05014 WOR CHAN14 062115,000567: 062116,000568: 07,3360 36043 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS 062117,000569: 07,3361 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG 062118,000570: 07,3362 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION 062119,000571: 07,3363 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE 062120,000572: 07,3364 75010 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF 062121,000573: 07,3365 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND. 062122,000574: 07,3366 30070 CA RUPTREG1 062123,000575: 07,3367 00006 EXTEND 062124,000576: 07,3370 75007 MP BIT9 062125,000577: 07,3371 54070 TS RUPTREG1 062126,000578: 07,3372 30001 CA L 062127,000579: 07,3373 00006 EXTEND 062128,000580: 07,3374 75002 MP BIT14 062129,000581: 07,3375 26062 ADS ITEMP2 # INITIAL COMMAND. 062130,000582: 062131,000583: 07,3376 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED 062132,000584: 07,3377 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES). 062133,000585: 07,3400 67716 AD MINUS1 062134,000586: 07,3401 10000 CCS A 062135,000587: 07,3402 13426 TCF LONGGYRO 062136,000588: 07,3403 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD 062137,000589: 07,3404 13410 TCF +4 062138,000590: 062139,000591: 07,3405 35002 CAF BIT14 062140,000592: 07,3406 26062 ADS ITEMP2 062141,000593: 07,3407 35021 CAF ZERO 062142,000594: 062143,000595: 07,3410 50061 +4 INDEX ITEMP1 062144,000596: 07,3411 53401 DXCH 1400 062145,000597: # Page 1435 062146,000598: 07,3412 30062 CA ITEMP2 # ENTIRE COMMAND. 062147,000599: 07,3413 54047 LASTSEG TS GYROCMD 062148,000600: 07,3414 00006 EXTEND 062149,000601: 07,3415 75006 MP BIT10 # WAITLIST DT 062150,000602: 07,3416 66214 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES. 062151,000603: 07,3417 05245 TC WAITLIST 062152,000604: 07,3420 E3,1474 EBANK= CDUIND 062153,000605: 07,3420 03270 16063 2CADR STRTGYRO 062154,000606: 062155,000607: 07,3422 35006 GYROEXIT CAF BIT10 062156,000608: 07,3423 00006 EXTEND 062157,000609: 07,3424 05014 WOR CHAN14 062158,000610: 07,3425 15324 TCF TASKOVER 062159,000611: 062160,000612: 07,3426 50061 LONGGYRO INDEX ITEMP1 062161,000613: 07,3427 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF 062162,000614: 07,3430 35002 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192. 062163,000615: 07,3431 60062 AD ITEMP2 062164,000616: 07,3432 54047 TS GYROCMD 062165,000617: 062166,000618: 07,3433 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS 062167,000619: 07,3434 75006 MP BIT10 # ALMOST OUT. 062168,000620: 07,3435 67714 AD NEG3 062169,000621: 07,3436 05245 TC WAITLIST 062170,000622: 07,3437 E3,1474 EBANK= CDUIND 062171,000623: 07,3437 03442 16063 2CADR 8192AUG 062172,000624: 062173,000625: 07,3441 13422 TCF GYROEXIT 062174,000626: 062175,000627: 07,3442 03524 8192AUG TC CAGETEST 062176,000628: 062177,000629: 07,3443 35014 CAF BIT4 062178,000630: 07,3444 00006 EXTEND 062179,000631: 07,3445 02012 RAND CHAN12 062180,000632: 07,3446 10000 CCS A 062181,000633: 07,3447 13522 TCF IMUBAD 062182,000634: 07,3450 31304 CA LGYRO # ADD 8192 PULSES TO GYROCMD 062183,000635: 07,3451 54003 TS EBANK 062184,000636: 07,3452 74373 MASK LOW8 062185,000637: 07,3453 54061 TS ITEMP1 062186,000638: 062187,000639: 07,3454 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG. 062188,000640: 07,3455 11400 CCS 1400 062189,000641: 07,3456 13462 TCF AUG2 # MORE TO COME. 062190,000642: 062191,000643: 07,3457 35002 CAF BIT14 062192,000644: 07,3460 26047 ADS GYROCMD 062193,000645: 07,3461 13414 TCF LASTSEG +1 062194,000646: 062195,000647: # Page 1436 062196,000648: 07,3462 50061 AUG2 INDEX ITEMP1 062197,000649: 07,3463 55400 TS 1400 062198,000650: 07,3464 35002 CAF BIT14 062199,000651: 07,3465 26047 ADS GYROCMD 062200,000652: 07,3466 13433 TCF AUG3 # COMPUTE DT. 062201,000653: 062202,000654: # Page 1437 062203,000655: 07,3467 63403 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT. 062204,000656: 07,3470 00006 EXTEND 062205,000657: 07,3471 63274 BZMF STRTGYR2 062206,000658: 062207,000659: 07,3472 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT. 062208,000660: 07,3473 43513 DCS GYROFRAC 062209,000661: 07,3474 20071 DAS RUPTREG1 062210,000662: 062211,000663: 07,3475 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO. 062212,000664: 07,3476 65007 AD BIT9 062213,000665: 07,3477 00006 EXTEND 062214,000666: 07,3500 05014 WOR CHAN14 062215,000667: 062216,000668: 07,3501 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE. 062217,000669: 07,3502 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE 062218,000670: 07,3503 40071 CS RUPTREG2 # POSITIVE -- BIT9 OF CHAN 14 DETERMINES 062219,000671: 07,3504 76043 MASK LOW7 # THE SIGN OF THE COMMAND. 062220,000672: 07,3505 40000 COM 062221,000673: 07,3506 56071 XCH RUPTREG2 062222,000674: 07,3507 40000 COM 062223,000675: 07,3510 13363 TCF GMERGE 062224,000676: 062225,000677: 07,3511 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS. 062226,000678: 062227,000679: 07,3512 00000 00034 GYROFRAC 2DEC .215 B-21 062228,000680: 062229,000681: # Page 1438 062230,000682: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE. 062231,000683: 062232,000684: 07,3514 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURRED OR IF 062233,000685: 07,3515 00011 READ DSALMOUT # ISS WARNING IS ON. 062234,000686: 07,3516 75017 MASK BIT1 062235,000687: 07,3517 10000 CCS A 062236,000688: 07,3520 13522 TCF IMUBAD 062237,000689: 062238,000690: 07,3521 13550 IMUGOOD TCF GOODEND # WITH C(A) = 0. 062239,000691: 062240,000692: 07,3522 35021 IMUBAD CAF ZERO 062241,000693: 07,3523 13545 TCF BADEND 062242,000694: 062243,000695: 07,3524 35012 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE 062244,000696: 07,3525 71320 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED. 062245,000697: 07,3526 10000 CCS A 062246,000698: 07,3527 13522 TCF IMUBAD # DIRECTLY. 062247,000699: 07,3530 00002 TC Q # WITH C(A) = +0. 062248,000700: 062249,000701: 07,3531 41320 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED. 062250,000702: 07,3532 75012 MASK BIT6 062251,000703: 07,3533 10000 CCS A 062252,000704: 07,3534 24002 INCR Q 062253,000705: 07,3535 00002 TC Q 062254,000706: 062255,000707: 07,3536 41320 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION. 062256,000708: 07,3537 75012 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED. 062257,000709: 07,3540 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION 062258,000710: 07,3541 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY 062259,000711: 07,3542 45021 CS ZERO # TO SWRETURN. 062260,000712: 07,3543 55322 TS IMUCADR 062261,000713: 07,3544 12640 TCF MODEEXIT 062262,000714: 062263,000715: # Page 1439 062264,000716: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION 062265,000717: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS. 062266,000718: 062267,000719: 07,3545 54071 BADEND TS RUPTREG2 # DEVICE INDEX. 062268,000720: 07,3546 45021 CS ZERO # FOR FAILURE. 062269,000721: 07,3547 13552 TCF GOODEND +2 062270,000722: 062271,000723: 07,3550 54071 GOODEND TS RUPTREG2 062272,000724: 07,3551 45017 CS ONE # FOR SUCCESS. 062273,000725: 062274,000726: 07,3552 54072 TS RUPTREG3 062275,000727: 07,3553 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP. 062276,000728: 07,3554 11322 CCS MODECADR 062277,000729: 07,3555 13557 TCF +2 # YES -- WAKE IT UP. 062278,000730: 07,3556 13567 TCF ENDMODE # IF 0, PROGRAM NOT IN YET. 062279,000731: 062280,000732: 07,3557 35021 CAF ZERO # WAKE SLEEPING PROGRAM. 062281,000733: 07,3560 50071 INDEX RUPTREG2 062282,000734: 07,3561 57322 XCH MODECADR 062283,000735: 07,3562 05201 TC JOBWAKE 062284,000736: 062285,000737: 07,3563 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL. 062286,000738: 07,3564 50064 INDEX LOCCTR 062287,000739: 07,3565 26164 ADS LOC 062288,000740: 062289,000741: 07,3566 15324 TCF TASKOVER 062290,000742: 062291,000743: 07,3567 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT 062292,000744: 07,3570 50071 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND 062293,000745: 07,3571 55322 TS MODECADR # SUCCESSFUL. 062294,000746: 07,3572 15324 TCF TASKOVER 062295,000747: 062296,000748: # Page 1440 062297,000749: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION. 062298,000750: 062299,000751: # PROGRAM DESCRIPTION DATE -- 21 FEB 1967 062300,000752: # LOG SECTION IMU MODE SWITCHING 062301,000753: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82 062302,000754: 062303,000755: # FUNCTIONAL DESCRIPTION -- 062304,000756: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED 062305,000757: # I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINES 062306,000758: # MODEECADR ARE MADE AND ACTED UPON. 062307,000759: # 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO 062308,000760: # SLEEP. 062309,000761: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP 062310,000762: # CALL AND RETURNS TO CALLING ROUTINE AT L+3. 062311,000763: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR 062312,000764: # AND RETURNS TO CALLING ROUTINE AT L+2. 062313,000765: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF 062314,000766: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM 062315,000767: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS. 062316,000768: 062317,000769: # CALLING SEQUENCE -- 062318,000770: # L TC BANKCALL 062319,000771: # L+1 CADR (ONE OF 5 STALL ADDRESSES. I.E., IMUSTALL, OPTSTALL, RADSTALL, 062320,000772: # AOTSTALL, OR ATTSTALL) 062321,000773: 062322,000774: # NORMAL-EXIT MODE -- 062323,000775: # TCF JOBSLEEP OR TCF MODEXIT 062324,000776: 062325,000777: # ALARM OR ABORT EXIT MODE -- 062326,000778: # TC ABORT 062327,000779: 062328,000780: # OUTPUT -- 062329,000781: # MODECADR=CADR IF JOBSLEEP 062330,000782: # MODECADR=+0 IF I/O COMPLETE 062331,000783: # BUF2=L+3 IF I/O COMPLETE AND GOOD. 062332,000784: # BUF2=L+2 IF I/O COMPLETE BUT FAILED. 062333,000785: 062334,000786: # ERASABLE INITIALIZATION -- 062335,000787: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2) 062336,000788: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE. 062337,000789: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS. 062338,000790: 062339,000791: # DEBRIS -- 062340,000792: # RUPTREG2 AND CALLING ROUTINE MODECADR. 062341,000793: 062342,000794: 07,3573 35017 AOTSTALL CAF ONE # AOT. 062343,000795: 07,3574 03600 TC STALL 062344,000796: 062345,000797: 07,3575 35016 RADSTALL CAF TWO 062346,000798: 07,3576 13600 TCF STALL 062347,000799: 062348,000800: # Page 1441 062349,000801: 07,3577 07,3573 OPTSTALL EQUALS AOTSTALL 062350,000802: 062351,000803: 07,3577 35021 IMUSTALL CAF ZERO # IMU. 062352,000804: 062353,000805: 07,3600 00004 STALL INHINT 062354,000806: 07,3601 54071 TS RUPTREG2 # SAVE DEVICE INDEX. 062355,000807: 07,3602 50000 INDEX A # SEE IF OPERATION COMPLETE. 062356,000808: 07,3603 11322 CCS MODECADR 062357,000809: 07,3604 13622 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0. 062358,000810: 07,3605 13616 TCF MODESLP # OPERATION INCOMPLETE. 062359,000811: 07,3606 13612 TCF MODEGOOD # COMPLETE AND GOOD IF = -1. 062360,000812: 062361,000813: 07,3607 50071 MG2 INDEX RUPTREG2 # COMPLETE FAILED IF -0. RESET TO +0. 062362,000814: 07,3610 55322 TS MODECADR # RETURN TO CALLER. 062363,000815: 07,3611 12640 TCF MODEEXIT 062364,000816: 062365,000817: 07,3612 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1. 062366,000818: 07,3613 13622 TCF MODABORT 062367,000819: 062368,000820: 07,3614 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND 062369,000821: 07,3615 13607 TCF MG2 # RETURN IMMEDIATELY, SETTIN CADR = +0. 062370,000822: 062371,000823: 07,3616 04711 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY. 062372,000824: 07,3617 50071 INDEX RUPTREG2 062373,000825: 07,3620 55322 TS MODECADR 062374,000826: 07,3621 15175 TCF JOBSLEEP 062375,000827: 062376,000828: 07,3622 05721 MODABORT TC P00DOO # TWO PROGRAMS USING THE SAME DEVICE. 062377,000829: 07,3623 01210 OCT 1210 062378,000830: 062379,000831: # Page 1442 062380,000832: # CONSTANTS FOR MODE SWITCHING ROUTINES 062381,000833: 062382,000834: 07,3624 5771 BITS3&4 = OCT14 062383,000835: 07,3624 5033 BITS4&6 = OCT50 062384,000836: 07,3624 5027 BITS4-5 EQUALS BITS4&5 062385,000837: 07,3624 5010 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7. 062386,000838: 07,3624 77500 -COMMAX DEC -191 B-14 062387,000839: 07,3625 77477 -COMMAX- DEC -192 B-14 062388,000840: 07,3626 00074 600MS DEC 60 B-14 062389,000841: 07,3627 07,3073 IMUFIN20 = IMUFINE 062390,000842: 07,3627 31325 GOMANUR CA ATTCADR # IS KALCMANU FREE 062391,000843: 07,3630 00006 EXTEND 062392,000844: 07,3631 13634 BZF +3 062393,000845: 07,3632 05721 TC P00DOO # NO 062394,000846: 07,3633 01210 OCT 1210 # 2 TRYING TO USE SAME DEVICE 062395,000847: 062396,000848: 07,3634 00006 +3 EXTEND 062397,000849: 07,3635 30134 DCA BUF2 062398,000850: 07,3636 53326 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3 062399,000851: 062400,000852: 07,3637 30006 CA BBANK 062401,000853: 07,3640 75023 MASK SEVEN 062402,000854: 07,3641 27326 ADS ATTCADR +1 062403,000855: 062404,000856: 07,3642 30167 CA PRIORITY 062405,000857: 07,3643 77674 MASK PRIO37 062406,000858: 07,3644 55327 TS ATTPRIO # SAVE USER'S PRIO 062407,000859: 062408,000860: 07,3645 33651 CAF KALEBCON # SET EBANK FOR KALCMAN3 062409,000861: 07,3646 54003 TS EBANK 062410,000862: 07,3647 04701 TC POSTJUMP 062411,000863: 07,3650 44000 CADR KALCMAN3 062412,000864: 07,3651 03261 KALEBCON ECADR BCDU 062413,000865: 062414,000866: # Page 1443 062415,000867: # PROGRAM DESCRIPTION 062416,000868: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY) 062417,000869: # MOD NO -- 1 062418,000870: # MOD BY -- N.BRODEUR 062419,000871: 062420,000872: # FUNCTIONAL DESCRIPTION 062421,000873: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN 062422,000874: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE 062423,000875: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE 062424,000876: # CMC. CALLED THROUGH BANKCALL 062425,000877: 062426,000878: # CALLING SEQUENCE -- 062427,000879: # L TC BANKCALL 062428,000880: # L+1 CADR R02BOTH 062429,000881: 062430,000882: # SUBROUTINES CALLED 062431,000883: # VARALARM 062432,000884: # FLAGUP 062433,000885: 062434,000886: # NORMAL EXIT MODES 062435,000887: # AT L+2 OF CALLING SEQUENCE 062436,000888: 062437,000889: # ALARM OR ABORT EXIT MODES 062438,000890: # GOTOP00H, WITH ALARM 062439,000891: 062440,000892: # ERASABLE INITIALIZATION REQUIRED 062441,000893: # NONE 062442,000894: 062443,000895: # DEBRIS 062444,000896: # CENTRALS -- A,Q,L 062445,000897: 062446,000898: 34,3763 BANK 34 062447,000899: 07,2000 SETLOC R02 062448,000900: 07,2000 BANK 062449,000901: 07,3652 COUNT 04/R02 # COUNT* 062450,000902: 062451,000903: 07,3652 00063 DEC51 DEC 51 B-14 062452,000904: 07,3653 35003 R02BOTH CAF BIT13 062453,000905: 07,3654 70077 MASK STATE +3 # REFSMFLG 062454,000906: 07,3655 10000 CCS A 062455,000907: 07,3656 03667 TC R02ZERO # ZERO IMUS 062456,000908: 062457,000909: 07,3657 31320 CA IMODES30 062458,000910: 07,3660 75007 MASK BIT9 # IS ISS INITIALIZED 062459,000911: 07,3661 00006 EXTEND 062460,000912: 07,3662 13664 BZF +2 062461,000913: 07,3663 45014 CS BIT4 # SEND IMU ALARM CODE 210 062462,000914: 07,3664 63672 AD OCT220 # SEND REFSMM ALARM 062463,000915: 07,3665 05764 TC VARALARM 062464,000916: 062465,000917: 07,3666 04106 TC GOTOP00H 062466,000918: 062467,000919: # Page 1444 062468,000920: 07,3667 05546 R02ZERO TC UPFLAG 062469,000921: 07,3670 00007 ADRES IMUSE 062470,000922: 07,3671 14675 TCF SWRETURN 062471,000923: 07,3672 00220 OCT220 OCT 220 062472,000924: 062473,000925: # Page 1445 062474,000926: # PROGRAM DESCRIPTION: P06 10 FEB 67 062475,000927: 062476,000928: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION. 062477,000929: 062478,000930: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU 062479,000931: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE 062480,000932: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON. 062481,000933: 062482,000934: # CALLING SEQUENCE: 062483,000935: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E. 062484,000936: 062485,000937: # SUBROUTINES CALLED: 062486,000938: # GOPERF1 062487,000939: # BANKCALL 062488,000940: # FLAGDOWN 062489,000941: 062490,000942: # Page 1446 062491,000943: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2. 062492,000944: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATIBILITY 062493,000945: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING. 062494,000946: 062495,000947: 26,2000 SETLOC P05P06 062496,000948: 26,2000 BANK 062497,000949: 062498,000950: 26,3660 1150 EBANK= TIME2SAV 062499,000951: 26,3660 COUNT* $$/P06 062500,000952: 062501,000953: 26,3660 05546 P06 TC UPFLAG # SET NODOV37 BIT 062502,000954: 26,3661 00054 ADRES NODOFLAG 062503,000955: 062504,000956: 26,3662 00004 PRESTAND INHINT 062505,000957: 26,3663 00006 EXTEND 062506,000958: 26,3664 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2 062507,000959: 26,3665 53151 DXCH TIME2SAV 062508,000960: 26,3666 03717 TC SCALPREP 062509,000961: 26,3667 03662 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE 062510,000962: 26,3670 52155 DXCH MPAC # T1,T2 AND SCALER OK 062511,000963: 26,3671 53153 DXCH SCALSAVE # STORE SCALER 062512,000964: 26,3672 00004 INHINT 062513,000965: 26,3673 04662 TC BANKCALL 062514,000966: 26,3674 17060 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN 062515,000967: 062516,000968: 26,3675 05560 TC DOWNFLAG 062517,000969: 26,3676 00007 ADRES IMUSE # IMUSE DOWN 062518,000970: 26,3677 05560 TC DOWNFLAG 062519,000971: 26,3700 00010 ADRES RNDVZFLG # RNDVZFLG DOWN 062520,000972: 062521,000973: 26,3701 35005 CAF BIT11 062522,000974: 26,3702 00006 EXTEND 062523,000975: 26,3703 05013 WOR CHAN13 # SET STANDBY ENABLE BIT 062524,000976: 062525,000977: 26,3704 05412 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY 062526,000978: 26,3705 07024 OCT 07024 # RECOVERS 062527,000979: 26,3706 20000 OCT 20000 062528,000980: 26,3707 1152 EBANK= SCALSAVE 062529,000981: 26,3707 03737 54062 2CADR POSTAND 062530,000982: 062531,000983: 26,3711 35036 CAF OCT62 062532,000984: 26,3712 04662 TC BANKCALL 062533,000985: 26,3713 21045 CADR GOPERF1 062534,000986: 26,3714 13711 TCF -3 062535,000987: 26,3715 13711 TCF -4 062536,000988: 26,3716 13711 TCF -5 062537,000989: 062538,000990: 26,3717 5036 OCT62 EQUALS .5SEC # DEC 50 = OCT 62 062539,000991: 062540,000992: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A 062541,000993: # Page 1447. 062542,000994: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER 062543,000995: # DATA ARE NOT COMPATIBLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE 062544,000996: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES 062545,000997: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE 062546,000998: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM 062547,000999: # T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF 062548,001000: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5 062549,001001: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER 062550,001002: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1. 062551,001003: 062552,001004: 26,3717 00006 SCALPREP EXTEND 062553,001005: 26,3720 22156 QXCH MPAC +2 062554,001006: 26,3721 04554 TC FINETIME +1 062555,001007: 26,3722 00003 RELINT 062556,001008: 26,3723 52155 DXCH MPAC 062557,001009: 26,3724 35013 CA BIT5 # ADD 5 MS TO THE SCALER READING. 062558,001010: 26,3725 54001 TS L 062559,001011: 26,3726 35021 CA ZERO 062560,001012: 26,3727 20155 DAS MPAC 062561,001013: 26,3730 44362 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO 062562,001014: 26,3731 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1. 062563,001015: 26,3732 56155 XCH MPAC +1 062564,001016: 26,3733 74362 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST 062565,001017: # INTERVAL AFTER THE T1 INCREMENT 062566,001018: # (NOW = 00000, SINCE BIT 5 ADDED). 062567,001019: 26,3734 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT 062568,001020: 26,3735 24156 INCR MPAC +2 # NO 062569,001021: 26,3736 00156 TC MPAC +2 # YES 062570,001022: 062571,001023: # POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE 062572,001024: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE 062573,001025: # INSPECTED TO INSURE COMPATIBILITY BETWEEN THE SCALER READING AND THE 062574,001026: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER 062575,001027: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF 062576,001028: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER. 062577,001029: 062578,001030: 26,3737 COUNT* $$/P05 062579,001031: 062580,001032: 26,3737 45005 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY 062581,001033: 26,3740 00006 EXTEND 062582,001034: 26,3741 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT 062583,001035: 26,3742 00004 INHINT 062584,001036: 26,3743 35021 CA ZERO 062585,001037: 26,3744 54001 TS L 062586,001038: 26,3745 52025 DXCH TIME2 # CLEAR TIME1 TIME2 062587,001039: 26,3746 03717 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1 062588,001040: 26,3747 03742 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE 062589,001041: 26,3750 00006 EXTEND # T1,T2 AND SCALER OK 062590,001042: 26,3751 41153 DCS SCALSAVE 062591,001043: 26,3752 20155 DAS MPAC # FORM DP DIFFERENCE OF POST-STANDBY SCALER 062592,001044: # Page 1448 062593,001045: 26,3753 35006 CAF BIT10 # MINUS PRE-STANDBY SCALER AND SHIFT RIGHT 062594,001046: 26,3754 07256 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2. 062595,001047: 26,3755 35021 CAF ZERO 062596,001048: 26,3756 54156 TS MPAC +2 # NEEDED FOR TP AGREE 062597,001049: 26,3757 07226 TC TPAGREE # MAKE DP DIFF AGREE 062598,001050: 26,3760 10154 CCS MPAC 062599,001051: 26,3761 03766 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW 062600,001052: 26,3762 03766 TC POSTCOM # BETWEEN PRE AND POST STANDBY. 062601,001053: 26,3763 03764 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD 062602,001054: 26,3764 35006 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT. 062603,001055: 26,3765 26154 ADS MPAC 062604,001056: 26,3766 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER. 062605,001057: 26,3767 31151 DCA TIME2SAV # PRE-STANDBY TIME1 TIME2 062606,001058: 26,3770 20155 DAS MPAC 062607,001059: 26,3771 07226 TC TPAGREE # FORCE SIGN AGREEMENT 062608,001060: 26,3772 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2. 062609,001061: 26,3773 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH 062610,001062: 26,3774 05560 TC DOWNFLAG # CLEAR NODOFLAG 062611,001063: 26,3775 00054 ADRES NODOFLAG 062612,001064: 062613,001065: 26,3776 04106 TC GOTOP00H 062614,001066: 062615,001067: 062616,001068: End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc