Source Code

060095,000001: # Copyright: Public domain. 060096,000002: # Filename: IMU_MODE_SWITCHING_ROUTINES.agc 060097,000003: # Purpose: Part of the source code for Colossus, build 249. 060098,000004: # It is part of the source code for the Command Module's (CM) 060099,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 060100,000006: # Assembler: yaYUL 060101,000007: # Reference: Starts on p. 1410 of 1701.pdf. 060102,000008: # Contact: Ron Burkey <info@sandroid.org>. 060103,000009: # Website: www.ibiblio.org/apollo. 060104,000010: # Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file. 060105,000011: 060106,000012: # The contents of the "Colossus249" files, in general, are transcribed 060107,000013: # from a scanned document obtained from MIT's website, 060108,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 060109,000015: # document read, in part: 060110,000016: 060111,000017: # Assemble revision 249 of AGC program Colossus by NASA 060112,000018: # 2021111-041. October 28, 1968. 060113,000019: 060114,000020: # This AGC program shall also be referred to as 060115,000021: # Colossus 1A 060116,000022: 060117,000023: # Prepared by 060118,000024: # Massachussets Institute of Technology 060119,000025: # 75 Cambridge Parkway 060120,000026: # Cambridge, Massachusetts 060121,000027: # under NASA contract NAS 9-4065. 060122,000028: 060123,000029: # Refer directly to the online document mentioned above for further information. 060124,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 060125,000031: 060126,000032: # In some cases, where the source code for Luminary 131 overlaps that of 060127,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131 060128,000034: # source file, and then is proofed to incorporate any changes. 060129,000035: 060130,000036: # Page 1410 060131,000037: 5410 BLOCK 02 060132,000038: 4000 SETLOC FFTAG3 060133,000039: 4000 BANK 060134,000040: 060135,000041: 5410 E3,1471 EBANK= COMMAND 060136,000042: 060137,000043: # FIXED-FIXED ROUTINES 060138,000044: 060139,000045: 5410 COUNT 02/IMODE 060140,000046: 060141,000047: 5410 34714 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS. 060142,000048: 5411 54032 TS CDUX 060143,000049: 5412 54033 TS CDUY 060144,000050: 5413 54034 TS CDUZ 060145,000051: 5414 00002 TC Q 060146,000052: 060147,000053: 5415 4702 SPSCODE = BIT9 060148,000054: 060149,000055: # Page 1411 060150,000056: # IMU ZEROING ROUTINES 060151,000057: 060152,000058: 11,3721 BANK 11 060153,000059: 07,2000 SETLOC MODESW 060154,000060: 07,2000 BANK 060155,000061: 060156,000062: 07,2516 COUNT 07/IMODE 060157,000063: 060158,000064: 07,2516 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS. 060159,000065: 07,2517 41036 CS DSPTAB +11D # DON'T ZERO CDUS IS IMU IN GIMBAL LOCK AND 060160,000066: 07,2520 74726 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION) 060161,000067: 07,2521 10000 CCS A 060162,000068: 07,2522 12526 TCF IMUZEROA 060163,000069: 060164,000070: 07,2523 05537 TC ALARM # IF SO. 060165,000071: 07,2524 00206 OCT 00206 060166,000072: 060167,000073: 07,2525 13461 TCF CAGETSTJ +4 # IMMEDIATE FAILURE. 060168,000074: 060169,000075: 07,2526 03455 IMUZEROA TC CAGETSTJ 060170,000076: 060171,000077: # DO ALL THE WORK. 060172,000078: 060173,000079: 07,2527 41321 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 060174,000080: 07,2530 74730 MASK SUPER011 # BIT5 FOR GROUND 060175,000081: 07,2531 27321 ADS IMODES33 060176,000082: 060177,000083: 07,2532 41320 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE 060178,000084: 07,2533 75656 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN). 060179,000085: 07,2534 27320 ADS IMODES30 060180,000086: 060181,000087: 07,2535 44726 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR 060182,000088: 07,2536 00006 EXTEND # COUNTER DISABLED. 060183,000089: 07,2537 03012 WAND CHAN12 060184,000090: 060185,000091: 07,2540 03070 TC NOATTOFF # TURN OFF NO ATT LAMP. 060186,000092: 060187,000093: 07,2541 34706 CAF BIT5 060188,000094: 07,2542 00006 EXTEND 060189,000095: 07,2543 05012 WOR CHAN12 060190,000096: 060191,000097: 07,2544 05410 TC ZEROICDU 060192,000098: 07,2545 34705 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO 060193,000099: 07,2546 05140 TC WAITLIST # RECEIVE ITS PULSE TRAIN. 060194,000100: 07,2547 E3,1474 EBANK= CDUIND 060195,000101: 07,2547 02561 16103 2CADR IMUZERO2 060196,000102: 060197,000103: 07,2551 41320 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT. 060198,000104: 07,2552 74702 MASK BIT9 060199,000105: 07,2553 10000 CCS A 060200,000106: 07,2554 12557 TCF MODEEXIT 060201,000107: # Page 1412 060202,000108: 07,2555 05537 TC ALARM 060203,000109: 07,2556 00210 OCT 210 060204,000110: 060205,000111: 07,2557 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT. 060206,000112: 07,2560 14570 TCF SWRETURN 060207,000113: 060208,000114: 07,2561 03443 IMUZERO2 TC CAGETEST 060209,000115: 07,2562 05410 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ 060210,000116: 060211,000117: 07,2563 44706 CS BIT5 # REMOVE ZERO DISCRETE. 060212,000118: 07,2564 00006 EXTEND 060213,000119: 07,2565 03012 WAND CHAN12 060214,000120: 060215,000121: 07,2566 34700 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS 060216,000122: 07,2567 05161 TC VARDELAY 060217,000123: 060218,000124: 07,2570 03443 IMUZERO3 TC CAGETEST 060219,000125: 07,2571 45656 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT. 060220,000126: 07,2572 71320 MASK IMODES30 060221,000127: 07,2573 55320 TS IMODES30 060222,000128: 060223,000129: 07,2574 44730 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES 060224,000130: 07,2575 71321 MASK IMODES33 # BIT5 FOR GROUND 060225,000131: 07,2576 55321 TS IMODES33 060226,000132: 060227,000133: 07,2577 04633 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE 060228,000134: 07,2600 14665 CADR SETISSW # PRESENT. 060229,000135: 060230,000136: 07,2601 13433 TCF ENDIMU 060231,000137: 060232,000138: # Page 1413 060233,000139: # IMU COARSE ALIGN MODE. 060234,000140: 060235,000141: 07,2602 00004 IMUCOARS INHINT 060236,000142: 07,2603 03455 TC CAGETSTJ 060237,000143: 07,2604 02746 TC SETCOARS 060238,000144: 060239,000145: 07,2605 36211 CAF SIX 060240,000146: 07,2606 05140 TC WAITLIST 060241,000147: 07,2607 E3,1474 EBANK= CDUIND 060242,000148: 07,2607 02612 16103 2CADR COARS 060243,000149: 060244,000150: 07,2611 12557 TCF MODEEXIT 060245,000151: 060246,000152: 07,2612 03443 COARS TC CAGETEST 060247,000153: 07,2613 34705 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 060248,000154: 07,2614 00006 EXTEND 060249,000155: 07,2615 05012 WOR CHAN12 060250,000156: 060251,000157: 07,2616 34711 CAF TWO # SET CDU INDICATOR 060252,000158: 07,2617 55474 COARS1 TS CDUIND 060253,000159: 060254,000160: 07,2620 51474 INDEX CDUIND # COMPUTE THETAD -- THETAA IN 1'S 060255,000161: 07,2621 31155 CA THETAD # COMPLEMENT FORM 060256,000162: 07,2622 00006 EXTEND 060257,000163: 07,2623 51474 INDEX CDUIND 060258,000164: 07,2624 20032 MSU CDUX 060259,000165: 07,2625 00006 EXTEND 060260,000166: 07,2626 74676 MP BIT13 # SHIFT RIGHT 2 060261,000167: 07,2627 56001 XCH L # ROUND 060262,000168: 07,2630 60000 DOUBLE 060263,000169: 07,2631 54061 TS ITEMP1 060264,000170: 07,2632 12634 TCF +2 060265,000171: 07,2633 26001 ADS L 060266,000172: 060267,000173: 07,2634 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED 060268,000174: 07,2635 23471 LXCH COMMAND 060269,000175: 07,2636 11474 CCS CDUIND 060270,000176: 07,2637 02617 TC COARS1 060271,000177: 060272,000178: 07,2640 34711 CAF TWO # MINIMUM OF 4 MS WAIT 060273,000179: 07,2641 05161 TC VARDELAY 060274,000180: 060275,000181: # Page 1414 060276,000182: 07,2642 03443 COARS2 TC CAGETEST # DON'T CONTINUE IF CAGED. 060277,000183: 07,2643 54061 TS ITEMP1 # SET TO +0. 060278,000184: 07,2644 34711 CAF TWO # SET CDU INDICATOR. 060279,000185: 07,2645 55474 +3 TS CDUIND 060280,000186: 060281,000187: 07,2646 51474 INDEX CDUIND 060282,000188: 07,2647 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED 060283,000189: 07,2650 02654 TC COMPOS 060284,000190: 07,2651 02663 TC NEXTCDU +1 060285,000191: 07,2652 02721 TC COMNEG 060286,000192: 07,2653 02663 TC NEXTCDU +1 060287,000193: 060288,000194: 07,2654 63544 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED 060289,000195: 07,2655 00006 EXTEND # MINUS ONE 060290,000196: 07,2656 62731 BZMF COMZERO 060291,000197: 07,2657 51474 INDEX CDUIND 060292,000198: 07,2660 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES 060293,000199: 07,2661 43545 CS -COMMAX- # ALLOWED 060294,000200: 060295,000201: 07,2662 24061 NEXTCDU INCR ITEMP1 060296,000202: 07,2663 64713 AD NEG0 060297,000203: 07,2664 51474 INDEX CDUIND 060298,000204: 07,2665 54050 TS CDUXCMD # SET UP COMMAND REGISTER. 060299,000205: 060300,000206: 07,2666 11474 CCS CDUIND 060301,000207: 07,2667 02645 TC COARS2 +3 060302,000208: 060303,000209: 07,2670 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT. 060304,000210: 07,2671 12735 TCF SENDPULS 060305,000211: 060306,000212: 07,2672 05156 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE. 060307,000213: 07,2673 00226 DEC 150 B-14 060308,000214: 060309,000215: 07,2674 34711 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT 060310,000216: 07,2675 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD. 060311,000217: 07,2676 50000 INDEX A 060312,000218: 07,2677 30032 CA CDUX 060313,000219: 07,2700 00006 EXTEND 060314,000220: 07,2701 50061 INDEX ITEMP1 060315,000221: 07,2702 21155 MSU THETAD 060316,000222: 07,2703 10000 CCS A 060317,000223: 07,2704 12712 TCF COARSERR 060318,000224: 07,2705 12707 TCF CORSCHK2 060319,000225: 07,2706 12712 TCF COARSERR 060320,000226: 060321,000227: # Page 1415 060322,000228: 07,2707 10061 CORSCHK2 CCS ITEMP1 060323,000229: 07,2710 12675 TCF CHKCORS 060324,000230: 07,2711 13433 TCF ENDIMU # END OF COARSE ALIGNMENT 060325,000231: 060326,000232: 07,2712 62720 COARSERR AD COARSTOL # 2 DEGREES. 060327,000233: 07,2713 00006 EXTEND 060328,000234: 07,2714 62707 BZMF CORSCHK2 060329,000235: 060330,000236: 07,2715 05537 TC ALARM # COARSE ALIGN ERROR. 060331,000237: 07,2716 00211 OCT 211 060332,000238: 060333,000239: 07,2717 13441 TCF IMUBAD 060334,000240: 060335,000241: 07,2720 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS 060336,000242: 060337,000243: 07,2721 63544 COMNEG AD -COMMAX 060338,000244: 07,2722 00006 EXTEND 060339,000245: 07,2723 62731 BZMF COMZERO 060340,000246: 07,2724 40000 COM 060341,000247: 07,2725 51474 INDEX CDUIND 060342,000248: 07,2726 55471 TS COMMAND 060343,000249: 07,2727 33545 CA -COMMAX- 060344,000250: 07,2730 02662 TC NEXTCDU 060345,000251: 060346,000252: 07,2731 34714 COMZERO CAF ZERO 060347,000253: 07,2732 51474 INDEX CDUIND 060348,000254: 07,2733 57471 XCH COMMAND 060349,000255: 07,2734 02662 TC NEXTCDU 060350,000256: 060351,000257: 07,2735 37707 SENDPULS CAF 13,14,15 060352,000258: 07,2736 00006 EXTEND 060353,000259: 07,2737 05014 WOR CHAN14 060354,000260: 07,2740 33546 CAF 600MS 060355,000261: 07,2741 12641 TCF COARS2 -1 # THEN TO VARDELAY 060356,000262: 060357,000263: 07,2742 34705 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS 060358,000264: 07,2743 00006 EXTEND 060359,000265: 07,2744 05012 WOR CHAN12 060360,000266: 07,2745 05213 TC TASKOVER 060361,000267: 060362,000268: # Page 1416 060363,000269: 07,2746 34707 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN 060364,000270: 07,2747 00006 EXTEND 060365,000271: 07,2750 02012 RAND CHAN12 060366,000272: 07,2751 10000 CCS A 060367,000273: 07,2752 00002 TC Q 060368,000274: 060369,000275: 07,2753 44705 CS BIT6 # CLEAR ISS ERROR COUNTERS 060370,000276: 07,2754 00006 EXTEND 060371,000277: 07,2755 03012 WAND CHAN12 060372,000278: 060373,000279: 07,2756 44701 CS BIT10 # KNOCK DOWN GYRO ACTIVITY 060374,000280: 07,2757 00006 EXTEND 060375,000281: 07,2760 03014 WAND CHAN14 060376,000282: 07,2761 44714 CS ZERO 060377,000283: 07,2762 54047 TS GYROCMD 060378,000284: 060379,000285: 07,2763 34707 CAF BIT4 # PUT ISS IN COARSE ALIGN 060380,000286: 07,2764 00006 EXTEND 060381,000287: 07,2765 05012 WOR CHAN12 060382,000288: 060383,000289: 07,2766 41036 CS DSPTAB +11D # TURN ON NO ATT LAMP 060384,000290: 07,2767 73011 MASK OCT40010 060385,000291: 07,2770 27036 ADS DSPTAB +11D 060386,000292: 060387,000293: 07,2771 41321 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES 060388,000294: 07,2772 74705 MASK BIT6 060389,000295: 07,2773 27321 ADS IMODES33 060390,000296: 060391,000297: 07,2774 41320 CS IMODES30 # DISABLE IMUFAIL 060392,000298: 07,2775 74707 MASK BIT4 060393,000299: 07,2776 27320 ADS IMODES30 060394,000300: 060395,000301: 07,2777 44706 RNDREFDR CS BIT5 # KNOCK DOWN TRACK FLAG 060396,000302: 07,3000 70075 MASK FLAGWRD1 060397,000303: 07,3001 54075 TS FLAGWRD1 060398,000304: 060399,000305: 07,3002 44674 CS BIT15 # KNOCK DOWN DRIFT FLAG 060400,000306: 07,3003 70076 MASK FLAGWRD2 060401,000307: 07,3004 54076 TS FLAGWRD2 060402,000308: 060403,000309: 07,3005 44676 CS BIT13 # KNOCK DOWN REFSMMAT FLAG 060404,000310: 07,3006 70077 MASK FLAGWRD3 060405,000311: 07,3007 54077 TS FLAGWRD3 060406,000312: 060407,000313: 07,3010 00002 TC Q 060408,000314: 060409,000315: 07,3011 40010 OCT40010 OCT 40010 060410,000316: 060411,000317: # Page 1417 060412,000318: # IMU FINE ALIGN MODE SWITCH. 060413,000319: 060414,000320: 07,3012 00004 IMUFINE INHINT 060415,000321: 07,3013 03455 TC CAGETSTJ # SEE IF IMU BEING CAGED. 060416,000322: 060417,000323: 07,3014 43543 CS BITS4-5 # RESET ZERO AND COARSE 060418,000324: 07,3015 00006 EXTEND 060419,000325: 07,3016 03012 WAND CHAN12 060420,000326: 060421,000327: 07,3017 44705 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED 060422,000328: 07,3020 71321 MASK IMODES33 060423,000329: 07,3021 55321 TS IMODES33 060424,000330: 060425,000331: 07,3022 03070 TC NOATTOFF 060426,000332: 060427,000333: 07,3023 34701 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE 060428,000334: 07,3024 05140 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE 060429,000335: 07,3025 E3,1474 EBANK= CDUIND 060430,000336: 07,3025 03036 16103 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN 060431,000337: 060432,000338: 07,3027 34735 CAF 2SECS 060433,000339: 07,3030 05140 TC WAITLIST 060434,000340: 07,3031 E3,1474 EBANK= CDUIND 060435,000341: 07,3031 03034 16103 2CADR IMUFINED 060436,000342: 060437,000343: 07,3033 12557 TCF MODEEXIT 060438,000344: 060439,000345: 07,3034 03443 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU. 060440,000346: 07,3035 13433 TCF ENDIMU 060441,000347: 060442,000348: # Page 1418 060443,000349: 07,3036 03450 IFAILOK TC CAGETSTQ # ENABLE IMU FAIL UNLESS IMU BEING CAGED. 060444,000350: 07,3037 15213 TCF TASKOVER # IT IS. 060445,000351: 060446,000352: 07,3040 34707 CAF BIT4 # DON'T RESET IMU FAIL INHIBIT IF SOMEONE 060447,000353: 07,3041 00006 EXTEND # HAS GONE INTO COARSE ALIGN. 060448,000354: 07,3042 02012 RAND CHAN12 060449,000355: 07,3043 10000 CCS A 060450,000356: 07,3044 15213 TCF TASKOVER 060451,000357: 060452,000358: 07,3045 41320 CS IMODES30 # RESET IMUFAIL. 060453,000359: 07,3046 74676 MASK BIT13 060454,000360: 07,3047 27320 ADS IMODES30 060455,000361: 07,3050 44707 CS BIT4 060456,000362: 07,3051 71320 PFAILOK2 MASK IMODES30 060457,000363: 07,3052 55320 TS IMODES30 060458,000364: 07,3053 04633 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOE 060459,000365: 07,3054 14665 CADR SETISSW # THAT THE INHIBIT WAS BEEN REMOVED. 060460,000366: 07,3055 15213 TCF TASKOVER 060461,000367: 060462,000368: 07,3056 03450 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM. 060463,000369: 07,3057 15213 TCF TASKOVER 060464,000370: 060465,000371: 07,3060 41320 CS IMODES30 # RESET IMU AND PIPA FAIL BITS. 060466,000372: 07,3061 74701 MASK BIT10 060467,000373: 07,3062 27320 ADS IMODES30 060468,000374: 060469,000375: 07,3063 41321 CS IMODES33 060470,000376: 07,3064 74676 MASK BIT13 060471,000377: 07,3065 27321 ADS IMODES33 060472,000378: 060473,000379: 07,3066 44706 CS BIT5 060474,000380: 07,3067 13051 TCF PFAILOK2 060475,000381: 060476,000382: 07,3070 43011 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP. 060477,000383: 07,3071 71036 MASK DSPTAB +11D 060478,000384: 07,3072 64674 AD BIT15 060479,000385: 07,3073 55036 TS DSPTAB +11D 060480,000386: 07,3074 00002 TC Q 060481,000387: 060482,000388: # Page 1419 060483,000389: # ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE. 060484,000390: 060485,000391: 07,3075 44714 PIPUSE CS ZERO 060486,000392: 07,3076 54037 TS PIPAX 060487,000393: 07,3077 54040 TS PIPAY 060488,000394: 07,3100 54041 TS PIPAZ 060489,000395: 060490,000396: 07,3101 03450 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED 060491,000397: 07,3102 14570 TCF SWRETURN 060492,000398: 060493,000399: 07,3103 00004 INHINT 060494,000400: 07,3104 44712 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL 060495,000401: 07,3105 71320 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING. 060496,000402: 07,3106 55320 TS IMODES30 060497,000403: 060498,000404: 07,3107 04633 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW. 060499,000405: 07,3110 14665 CADR SETISSW # (OR GO OFF ON PIPFREE). 060500,000406: 060501,000407: 07,3111 12557 TCF MODEEXIT 060502,000408: 060503,000409: 07,3112 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DON'T LIGHT 060504,000410: 07,3113 41320 CS IMODES30 # ISS WARNING. 060505,000411: 07,3114 74712 MASK BIT1 060506,000412: 07,3115 27320 ADS IMODES30 060507,000413: 060508,000414: 07,3116 74701 MASK BIT10 # IF PIP FAIL ON, DO PROG ALARM AND RESET 060509,000415: 07,3117 10000 CCS A # ISS WARNING. 060510,000416: 07,3120 12557 TCF MODEEXIT 060511,000417: 060512,000418: 07,3121 05537 TC ALARM 060513,000419: 07,3122 00212 OCT 212 060514,000420: 060515,000421: 07,3123 00004 INHINT 060516,000422: 060517,000423: 07,3124 13107 TCF PIPFREE2 060518,000424: 060519,000425: # Page 1420 060520,000426: # THE FOLLOWING ROUTINE TORQUES THE IRICS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIXE REGISTERS 060521,000427: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE 060522,000428: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT AT TEH INPUT COMMAND REGISTERS. 060523,000429: 060524,000430: 07,3125 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY. 060525,000431: 060526,000432: 07,3125 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR. 060527,000433: 07,3126 03455 TC CAGETSTJ # DON'T PROCEED IF IMU BEING CAGED. 060528,000434: 060529,000435: 07,3127 11304 CCS LGYRO # SEE IF GYROS BUSY. 060530,000436: 07,3130 03171 TC GYROBUSY # SLEEP. 060531,000437: 060532,000438: 07,3131 54156 TS MPAC +2 060533,000439: 07,3132 34705 CAF BIT6 # ENABLE THE POWER SUPPLY. 060534,000440: 07,3133 00006 EXTEND 060535,000441: 07,3134 05014 WOR CHAN14 060536,000442: 060537,000443: 07,3135 34710 CAF FOUR 060538,000444: 07,3136 05140 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER 060539,000445: 07,3137 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB). 060540,000446: 07,3137 03207 16103 2CADR STRTGYRO 060541,000447: 060542,000448: 07,3141 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR 060543,000449: 07,3142 56003 XCH EBANK # RESTORATION ON RETURN. 060544,000450: 07,3143 56161 XCH MPAC +5 060545,000451: 07,3144 55304 TS LGYRO # RESERVES GYROS. 060546,000452: 07,3145 74373 MASK LOW8 060547,000453: 07,3146 54061 TS ITEMP1 060548,000454: 060549,000455: 07,3147 34711 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS. 060550,000456: 07,3150 54157 GYROAGRE TS MPAC +3 060551,000457: 07,3151 60000 DOUBLE 060552,000458: 07,3152 60061 AD ITEMP1 060553,000459: 07,3153 54160 TS MPAC +4 060554,000460: 07,3154 00006 EXTEND 060555,000461: 07,3155 50000 INDEX A 060556,000462: 07,3156 31401 DCA 1400 060557,000463: 07,3157 52155 DXCH MPAC 060558,000464: 07,3160 07226 TC TPAGREE 060559,000465: 07,3161 52155 DXCH MPAC 060560,000466: 07,3162 50160 INDEX MPAC +4 060561,000467: 07,3163 53401 DXCH 1400 060562,000468: 060563,000469: 07,3164 10157 CCS MPAC +3 060564,000470: 07,3165 13150 TCF GYROAGRE 060565,000471: 060566,000472: 07,3166 30161 CA MPAC +5 # RESTORE CALLER'S EBANK. 060567,000473: 07,3167 54003 TS EBANK 060568,000474: 07,3170 12557 TCF MODEEXIT 060569,000475: 060570,000476: # Page 1421 060571,000477: # ROUTINES TO ALLOW TORQUING ONLY ONE JOB AT A TIME. 060572,000478: 060573,000479: 07,3171 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR. 060574,000480: 07,3172 30134 DCA BUF2 060575,000481: 07,3173 52155 DXCH MPAC 060576,000482: 07,3174 33206 REGSLEEP CAF LGWAKE 060577,000483: 07,3175 15070 TCF JOBSLEEP 060578,000484: 060579,000485: 07,3176 11304 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY. 060580,000486: 07,3177 13174 TCF REGSLEEP # IF SO, SLEEP SOME MORE. 060581,000487: 060582,000488: 07,3200 54156 TS MPAC +2 060583,000489: 07,3201 00006 EXTEND 060584,000490: 07,3202 30155 DCA MPAC 060585,000491: 07,3203 52134 DXCH BUF2 # RESTORE SWRETURN INFO. 060586,000492: 07,3204 34712 CAF ONE 060587,000493: 07,3205 13136 TCF GWAKE2 060588,000494: 060589,000495: 07,3206 17176 LGWAKE CADR GWAKE 060590,000496: 060591,000497: # Page 1422 060592,000498: # GYRO-TORQUING WAITLIST TASKS. 060593,000499: 060594,000500: 07,3207 43430 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO. 060595,000501: 07,3210 00006 EXTEND 060596,000502: 07,3211 03014 WAND CHAN14 060597,000503: 060598,000504: 07,3212 03443 TC CAGETEST 060599,000505: 060600,000506: 07,3213 31304 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14. 060601,000507: 07,3214 00006 EXTEND 060602,000508: 07,3215 74707 MP BIT4 060603,000509: 07,3216 50000 INDEX A 060604,000510: 07,3217 13220 TCF +1 060605,000511: 07,3220 03235 TC GSELECT # =0. DO Y GYRO. 060606,000512: 07,3221 00202 OCT 00202 060607,000513: 060608,000514: 07,3222 03235 TC GSELECT # =1. DO Z GYRO. 060609,000515: 07,3223 00302 OCT 00302 060610,000516: 060611,000517: 07,3224 03233 TC GSELECT -2 # =2. DO X GYRO. 060612,000518: 07,3225 00100 OCT 00100 060613,000519: 060614,000520: 07,3226 34714 CAF ZERO # =3. DONE 060615,000521: 07,3227 55304 TS LGYRO 060616,000522: 07,3230 33206 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB. 060617,000523: 07,3231 05074 TC JOBWAKE 060618,000524: 060619,000525: 07,3232 13034 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY. 060620,000526: # Page 1423 060621,000527: 07,3233 44710 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X. 060622,000528: 07,3234 27304 ADS LGYRO 060623,000529: 060624,000530: 07,3235 50002 GSELECT INDEX Q # SELECT GYRO. 060625,000531: # Was CAF --- RSB 2004 060626,000532: 07,3236 30000 CA 0 # PACKED WORD CONTAINS GYRO SELECT BITS 060627,000533: 07,3237 54064 TS ITEMP4 # AND INCREMENT TO LGYRO. 060628,000534: 07,3240 74716 MASK SEVEN 060629,000535: 07,3241 64676 AD BIT13 060630,000536: 07,3242 27304 ADS LGYRO 060631,000537: 07,3243 54003 TS EBANK 060632,000538: 07,3244 74373 MASK LOW8 060633,000539: 07,3245 54061 TS ITEMP1 060634,000540: 060635,000541: 07,3246 44716 CS SEVEN 060636,000542: 07,3247 70064 MASK ITEMP4 060637,000543: 07,3250 54064 TS ITEMP4 060638,000544: 060639,000545: 07,3251 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING. 060640,000546: 07,3252 50061 INDEX ITEMP1 060641,000547: 07,3253 31401 DCA 1400 060642,000548: 07,3254 52071 DXCH RUPTREG1 060643,000549: 060644,000550: 07,3255 10070 CCS RUPTREG1 060645,000551: 07,3256 13271 TCF MAJ+ 060646,000552: 07,3257 13261 TCF +2 060647,000553: 07,3260 13411 TCF MAJ- 060648,000554: 060649,000555: 07,3261 10071 CCS RUPTREG2 060650,000556: 07,3262 13266 TCF MIN+ 060651,000557: 07,3263 13213 TCF STRTGYR2 060652,000558: 07,3264 13406 TCF MIN- 060653,000559: 07,3265 13213 TCF STRTGYR2 060654,000560: 060655,000561: # Page 1424 060656,000562: 07,3266 63322 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST 060657,000563: 07,3267 00006 EXTEND # 16 GYRO PULSES. 060658,000564: 07,3270 63213 BZMF STRTGYR2 060659,000565: 060660,000566: 07,3271 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT. 060661,000567: 07,3272 33432 DCA GYROFRAC 060662,000568: 07,3273 20071 DAS RUPTREG1 060663,000569: 060664,000570: 07,3274 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO. 060665,000571: 07,3275 00006 EXTEND 060666,000572: 07,3276 05014 WOR CHAN14 060667,000573: 060668,000574: 07,3277 36043 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS 060669,000575: 07,3300 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG 060670,000576: 07,3301 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION 060671,000577: 07,3302 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE 060672,000578: 07,3303 74703 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF 060673,000579: 07,3304 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND. 060674,000580: 07,3305 30070 CA RUPTREG1 060675,000581: 07,3306 00006 EXTEND 060676,000582: 07,3307 74702 MP BIT9 060677,000583: 07,3310 54070 TS RUPTREG1 060678,000584: 07,3311 30001 CA L 060679,000585: 07,3312 00006 EXTEND 060680,000586: 07,3313 74675 MP BIT14 060681,000587: 07,3314 26062 ADS ITEMP2 # INITIAL COMMAND. 060682,000588: 060683,000589: 07,3315 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED 060684,000590: 07,3316 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES). 060685,000591: 07,3317 67716 AD MINUS1 060686,000592: 07,3320 10000 CCS A 060687,000593: 07,3321 13345 TCF LONGGYRO 060688,000594: 07,3322 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD 060689,000595: 07,3323 13327 TCF +4 060690,000596: 060691,000597: 07,3324 34675 CAF BIT14 060692,000598: 07,3325 26062 ADS ITEMP2 060693,000599: 07,3326 34714 CAF ZERO 060694,000600: 060695,000601: 07,3327 50061 +4 INDEX ITEMP1 060696,000602: 07,3330 53401 DXCH 1400 060697,000603: # Page 1425 060698,000604: 07,3331 30062 CA ITEMP2 # ENTIRE COMMAND. 060699,000605: 07,3332 54047 LASTSEG TS GYROCMD 060700,000606: 07,3333 00006 EXTEND 060701,000607: 07,3334 74701 MP BIT10 # WAITLIST DT 060702,000608: 07,3335 66214 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES. 060703,000609: 07,3336 05140 TC WAITLIST 060704,000610: 07,3337 E3,1474 EBANK= CDUIND 060705,000611: 07,3337 03207 16103 2CADR STRTGYRO 060706,000612: 060707,000613: 07,3341 34701 GYROEXIT CAF BIT10 060708,000614: 07,3342 00006 EXTEND 060709,000615: 07,3343 05014 WOR CHAN14 060710,000616: 07,3344 15213 TCF TASKOVER 060711,000617: 060712,000618: 07,3345 50061 LONGGYRO INDEX ITEMP1 060713,000619: 07,3346 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF 060714,000620: 07,3347 34675 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192. 060715,000621: 07,3350 60062 AD ITEMP2 060716,000622: 07,3351 54047 TS GYROCMD 060717,000623: 060718,000624: 07,3352 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS 060719,000625: 07,3353 74701 MP BIT10 # ALMOST OUT. 060720,000626: 07,3354 67714 AD NEG3 060721,000627: 07,3355 05140 TC WAITLIST 060722,000628: 07,3356 E3,1474 EBANK= CDUIND 060723,000629: 07,3356 03361 16103 2CADR 8192AUG 060724,000630: 060725,000631: 07,3360 13341 TCF GYROEXIT 060726,000632: 060727,000633: 07,3361 03443 8192AUG TC CAGETEST 060728,000634: 060729,000635: 07,3362 34707 CAF BIT4 060730,000636: 07,3363 00006 EXTEND 060731,000637: 07,3364 02012 RAND CHAN12 060732,000638: 07,3365 10000 CCS A 060733,000639: 07,3366 13441 TCF IMUBAD 060734,000640: 07,3367 31304 CA LGYRO # ADD 8192 PULSES TO GYROCMD 060735,000641: 07,3370 54003 TS EBANK 060736,000642: 07,3371 74373 MASK LOW8 060737,000643: 07,3372 54061 TS ITEMP1 060738,000644: 060739,000645: 07,3373 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG. 060740,000646: 07,3374 11400 CCS 1400 060741,000647: 07,3375 13401 TCF AUG2 # MORE TO COME. 060742,000648: 060743,000649: 07,3376 34675 CAF BIT14 060744,000650: 07,3377 26047 ADS GYROCMD 060745,000651: 07,3400 13333 TCF LASTSEG +1 060746,000652: 060747,000653: # Page 1426 060748,000654: 07,3401 50061 AUG2 INDEX ITEMP1 060749,000655: 07,3402 55400 TS 1400 060750,000656: 07,3403 34675 CAF BIT14 060751,000657: 07,3404 26047 ADS GYROCMD 060752,000658: 07,3405 13352 TCF AUG3 # COMPUTE DT. 060753,000659: 060754,000660: # Page 1427 060755,000661: 07,3406 63322 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT. 060756,000662: 07,3407 00006 EXTEND 060757,000663: 07,3410 63213 BZMF STRTGYR2 060758,000664: 060759,000665: 07,3411 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT. 060760,000666: 07,3412 43432 DCS GYROFRAC 060761,000667: 07,3413 20071 DAS RUPTREG1 060762,000668: 060763,000669: 07,3414 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO. 060764,000670: 07,3415 64702 AD BIT9 060765,000671: 07,3416 00006 EXTEND 060766,000672: 07,3417 05014 WOR CHAN14 060767,000673: 060768,000674: 07,3420 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE. 060769,000675: 07,3421 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE 060770,000676: 07,3422 40071 CS RUPTREG2 # POSITIVE -- BIT9 OF CHAN 14 DETERMINES 060771,000677: 07,3423 76043 MASK LOW7 # THE SIGN OF THE COMMAND. 060772,000678: 07,3424 40000 COM 060773,000679: 07,3425 56071 XCH RUPTREG2 060774,000680: 07,3426 40000 COM 060775,000681: 07,3427 13302 TCF GMERGE 060776,000682: 060777,000683: 07,3430 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS. 060778,000684: 060779,000685: 07,3431 00000 00034 GYROFRAC 2DEC .215 B-21 060780,000686: 060781,000687: # Page 1428 060782,000688: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE. 060783,000689: 060784,000690: 07,3433 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURRED OR IF 060785,000691: 07,3434 00011 READ DSALMOUT # ISS WARNING IS ON. 060786,000692: 07,3435 74712 MASK BIT1 060787,000693: 07,3436 10000 CCS A 060788,000694: 07,3437 13441 TCF IMUBAD 060789,000695: 060790,000696: 07,3440 13467 IMUGOOD TCF GOODEND # WITH C(A) = 0. 060791,000697: 060792,000698: 07,3441 34714 IMUBAD CAF ZERO 060793,000699: 07,3442 13464 TCF BADEND 060794,000700: 060795,000701: 07,3443 34705 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE 060796,000702: 07,3444 71320 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED. 060797,000703: 07,3445 10000 CCS A 060798,000704: 07,3446 13441 TCF IMUBAD # DIRECTLY. 060799,000705: 07,3447 00002 TC Q # WITH C(A) = +0. 060800,000706: 060801,000707: 07,3450 41320 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED. 060802,000708: 07,3451 74705 MASK BIT6 060803,000709: 07,3452 10000 CCS A 060804,000710: 07,3453 24002 INCR Q 060805,000711: 07,3454 00002 TC Q 060806,000712: 060807,000713: 07,3455 41320 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION. 060808,000714: 07,3456 74705 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED. 060809,000715: 07,3457 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION 060810,000716: 07,3460 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY 060811,000717: 07,3461 44714 CS ZERO # TO SWRETURN. 060812,000718: 07,3462 55322 TS IMUCADR 060813,000719: 07,3463 12557 TCF MODEEXIT 060814,000720: 060815,000721: # Page 1429 060816,000722: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION 060817,000723: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS. 060818,000724: 060819,000725: 07,3464 54071 BADEND TS RUPTREG2 # DEVICE INDEX. 060820,000726: 07,3465 44714 CS ZERO # FOR FAILURE. 060821,000727: 07,3466 13471 TCF GOODEND +2 060822,000728: 060823,000729: 07,3467 54071 GOODEND TS RUPTREG2 060824,000730: 07,3470 44712 CS ONE # FOR SUCCESS. 060825,000731: 060826,000732: 07,3471 54072 TS RUPTREG3 060827,000733: 07,3472 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP. 060828,000734: 07,3473 11322 CCS MODECADR 060829,000735: 07,3474 13476 TCF +2 # YES -- WAKE IT UP. 060830,000736: 07,3475 13506 TCF ENDMODE # IF 0, PROGRAM NOT IN YET. 060831,000737: 060832,000738: 07,3476 34714 CAF ZERO # WAKE SLEEPING PROGRAM. 060833,000739: 07,3477 50071 INDEX RUPTREG2 060834,000740: 07,3500 57322 XCH MODECADR 060835,000741: 07,3501 05074 TC JOBWAKE 060836,000742: 060837,000743: 07,3502 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL. 060838,000744: 07,3503 50064 INDEX LOCCTR 060839,000745: 07,3504 26164 ADS LOC 060840,000746: 060841,000747: 07,3505 15213 TCF TASKOVER 060842,000748: 060843,000749: 07,3506 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT 060844,000750: 07,3507 50071 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND 060845,000751: 07,3510 55322 TS MODECADR # SUCCESSFUL. 060846,000752: 07,3511 15213 TCF TASKOVER 060847,000753: 060848,000754: # Page 1430 060849,000755: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION. 060850,000756: 060851,000757: # PROGRAM DESCRIPTION DATE -- 21 FEB 1967 060852,000758: # LOG SECTION IMU MODE SWITCHING 060853,000759: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82 060854,000760: 060855,000761: # FUNCTIONAL DESCRIPTION -- 060856,000762: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED 060857,000763: # I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINES 060858,000764: # MODEECADR ARE MADE AND ACTED UPON. 060859,000765: # 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO 060860,000766: # SLEEP. 060861,000767: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP 060862,000768: # CALL AND RETURNS TO CALLING ROUTINE AT L+3. 060863,000769: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR 060864,000770: # AND RETURNS TO CALLING ROUTINE AT L+2. 060865,000771: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF 060866,000772: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM 060867,000773: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS. 060868,000774: 060869,000775: # CALLING SEQUENCE -- 060870,000776: # L TC BANKCALL 060871,000777: # L+1 CADR (ONE OF 5 STALL ADDRESSES. I.E., IMUSTALL, OPTSTALL, RADSTALL, 060872,000778: # AOTSTALL, OR ATTSTALL) 060873,000779: 060874,000780: # NORMAL-EXIT MODE -- 060875,000781: # TCF JOBSLEEP OR TCF MODEXIT 060876,000782: 060877,000783: # ALARM OR ABORT EXIT MODE -- 060878,000784: # TC ABORT 060879,000785: 060880,000786: # OUTPUT -- 060881,000787: # MODECADR=CADR IF JOBSLEEP 060882,000788: # MODECADR=+0 IF I/O COMPLETE 060883,000789: # BUF2=L+3 IF I/O COMPLETE AND GOOD. 060884,000790: # BUF2=L+2 IF I/O COMPLETE BUT FAILED. 060885,000791: 060886,000792: # ERASABLE INITIALIZATION -- 060887,000793: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2) 060888,000794: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE. 060889,000795: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS. 060890,000796: 060891,000797: # DEBRIS -- 060892,000798: # RUPTREG2 AND CALLING ROUTINE MODECADR. 060893,000799: 060894,000800: 07,3512 34712 AOTSTALL CAF ONE # AOT. 060895,000801: 07,3513 03517 TC STALL 060896,000802: 060897,000803: 07,3514 34711 RADSTALL CAF TWO 060898,000804: 07,3515 13517 TCF STALL 060899,000805: 060900,000806: # Page 1431 060901,000807: 07,3516 07,3512 OPTSTALL EQUALS AOTSTALL 060902,000808: 060903,000809: 07,3516 34714 IMUSTALL CAF ZERO # IMU. 060904,000810: 060905,000811: 07,3517 00004 STALL INHINT 060906,000812: 07,3520 54071 TS RUPTREG2 # SAVE DEVICE INDEX. 060907,000813: 07,3521 50000 INDEX A # SEE IF OPERATION COMPLETE. 060908,000814: 07,3522 11322 CCS MODECADR 060909,000815: 07,3523 13541 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0. 060910,000816: 07,3524 13535 TCF MODESLP # OPERATION INCOMPLETE. 060911,000817: 07,3525 13531 TCF MODEGOOD # COMPLETE AND GOOD IF = -1. 060912,000818: 060913,000819: 07,3526 50071 MG2 INDEX RUPTREG2 # COMPLETE FAILED IF -0. RESET TO +0. 060914,000820: 07,3527 55322 TS MODECADR # RETURN TO CALLER. 060915,000821: 07,3530 12557 TCF MODEEXIT 060916,000822: 060917,000823: 07,3531 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1. 060918,000824: 07,3532 13541 TCF MODABORT 060919,000825: 060920,000826: 07,3533 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND 060921,000827: 07,3534 13526 TCF MG2 # RETURN IMMEDIATELY, SETTIN CADR = +0. 060922,000828: 060923,000829: 07,3535 04604 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY. 060924,000830: 07,3536 50071 INDEX RUPTREG2 060925,000831: 07,3537 55322 TS MODECADR 060926,000832: 07,3540 15070 TCF JOBSLEEP 060927,000833: 060928,000834: 07,3541 05622 MODABORT TC P00DOO # TWO PROGRAMS USING THE SAME DEVICE. 060929,000835: 07,3542 01210 OCT 1210 060930,000836: 060931,000837: # Page 1432 060932,000838: # CONSTANTS FOR MODE SWITCHING ROUTINES 060933,000839: 060934,000840: 07,3543 5656 BITS3&4 = OCT14 060935,000841: 07,3543 4726 BITS4&6 = OCT50 060936,000842: 07,3543 00030 BITS4-5 OCT 00030 060937,000843: 07,3544 4703 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7. 060938,000844: 07,3544 77500 -COMMAX DEC -191 B-14 060939,000845: 07,3545 77477 -COMMAX- DEC -192 B-14 060940,000846: 07,3546 00074 600MS DEC 60 B-14 060941,000847: 07,3547 07,3012 IMUFIN20 = IMUFINE 060942,000848: 07,3547 31325 GOMANUR CA ATTCADR # IS KALCMANU FREE 060943,000849: 07,3550 00006 EXTEND 060944,000850: 07,3551 13554 BZF +3 060945,000851: 07,3552 05622 TC P00DOO # NO 060946,000852: 07,3553 01210 OCT 1210 # 2 TRYING TO USE SAME DEVICE 060947,000853: 060948,000854: 07,3554 00006 +3 EXTEND 060949,000855: 07,3555 30134 DCA BUF2 060950,000856: 07,3556 53326 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3 060951,000857: 060952,000858: 07,3557 30006 CA BBANK 060953,000859: 07,3560 74716 MASK SEVEN 060954,000860: 07,3561 27326 ADS ATTCADR +1 060955,000861: 060956,000862: 07,3562 30167 CA PRIORITY 060957,000863: 07,3563 77674 MASK PRIO37 060958,000864: 07,3564 55327 TS ATTPRIO # SAVE USER'S PRIO 060959,000865: 060960,000866: 07,3565 33571 CAF KALEBCON # SET EBANK FOR KALCMAN3 060961,000867: 07,3566 54003 TS EBANK 060962,000868: 07,3567 04574 TC POSTJUMP 060963,000869: 07,3570 44000 CADR KALCMAN3 060964,000870: 07,3571 03261 KALEBCON ECADR BCDU 060965,000871: 060966,000872: # Page 1433 060967,000873: # PROGRAM DESCRIPTION 060968,000874: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY) 060969,000875: # MOD NO -- 1 060970,000876: # MOD BY -- N.BRODEUR 060971,000877: 060972,000878: # FUNCTIONAL DESCRIPTION 060973,000879: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN 060974,000880: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE 060975,000881: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE 060976,000882: # CMC. CALLED THROUGH BANKCALL 060977,000883: 060978,000884: # CALLING SEQUENCE -- 060979,000885: # L TC BANKCALL 060980,000886: # L+1 CADR R02BOTH 060981,000887: 060982,000888: # SUBROUTINES CALLED 060983,000889: # VARALARM 060984,000890: # FLAGUP 060985,000891: 060986,000892: # NORMAL EXIT MODES 060987,000893: # AT L+2 OF CALLING SEQUENCE 060988,000894: 060989,000895: # ALARM OR ABORT EXIT MODES 060990,000896: # GOTOP00H, WITH ALARM 060991,000897: 060992,000898: # ERASABLE INITIALIZATION REQUIRED 060993,000899: # NONE 060994,000900: 060995,000901: # DEBRIS 060996,000902: # CENTRALS -- A,Q,L 060997,000903: 060998,000904: 34,3775 BANK 34 060999,000905: 07,2000 SETLOC R02 061000,000906: 07,2000 BANK 061001,000907: 07,3572 COUNT 04/R02 # COUNT* 061002,000908: 061003,000909: 07,3572 00063 DEC51 DEC 51 B-14 061004,000910: 07,3573 34676 R02BOTH CAF BIT13 061005,000911: 07,3574 70077 MASK STATE +3 # REFSMFLG 061006,000912: 07,3575 10000 CCS A 061007,000913: 07,3576 03607 TC R02ZERO # ZERO IMUS 061008,000914: 061009,000915: 07,3577 31320 CA IMODES30 061010,000916: 07,3600 74702 MASK BIT9 # IS ISS INITIALIZED 061011,000917: 07,3601 00006 EXTEND 061012,000918: 07,3602 13604 BZF +2 061013,000919: 07,3603 44707 CS BIT4 # SEND IMU ALARM CODE 210 061014,000920: 07,3604 63612 AD OCT220 # SEND REFSMM ALARM 061015,000921: 07,3605 05651 TC VARALARM 061016,000922: 061017,000923: 07,3606 04106 TC GOTOP00H 061018,000924: 061019,000925: # Page 1434 061020,000926: 07,3607 05435 R02ZERO TC UPFLAG 061021,000927: 07,3610 00007 ADRES IMUSE 061022,000928: 07,3611 14570 TCF SWRETURN 061023,000929: 07,3612 00220 OCT220 OCT 220 061024,000930: 061025,000931: # Page 1435 061026,000932: # PROGRAM DESCRIPTION: P06 10 FEB 67 061027,000933: 061028,000934: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION. 061029,000935: 061030,000936: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU 061031,000937: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE 061032,000938: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON. 061033,000939: 061034,000940: # CALLING SEQUENCE: 061035,000941: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E. 061036,000942: 061037,000943: # SUBROUTINES CALLED: 061038,000944: # GOPERF1 061039,000945: # BANKCALL 061040,000946: # FLAGDOWN 061041,000947: 061042,000948: # Page 1436 061043,000949: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2. 061044,000950: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATIBILITY 061045,000951: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING. 061046,000952: 061047,000953: 26,2000 SETLOC P05P06 061048,000954: 26,2000 BANK 061049,000955: 061050,000956: 26,3655 1150 EBANK= TIME2SAV 061051,000957: 26,3655 COUNT* $$/P06 061052,000958: 061053,000959: 26,3655 05435 P06 TC UPFLAG # SET NODOV37 BIT 061054,000960: 26,3656 00054 ADRES NODOFLAG 061055,000961: 061056,000962: 26,3657 00004 PRESTAND INHINT 061057,000963: 26,3660 00006 EXTEND 061058,000964: 26,3661 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2 061059,000965: 26,3662 53151 DXCH TIME2SAV 061060,000966: 26,3663 03714 TC SCALPREP 061061,000967: 26,3664 03657 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE 061062,000968: 26,3665 52155 DXCH MPAC # T1,T2 AND SCALER OK 061063,000969: 26,3666 53153 DXCH SCALSAVE # STORE SCALER 061064,000970: 26,3667 00004 INHINT 061065,000971: 26,3670 04555 TC BANKCALL 061066,000972: 26,3671 16777 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN 061067,000973: 061068,000974: 26,3672 05447 TC DOWNFLAG 061069,000975: 26,3673 00007 ADRES IMUSE # IMUSE DOWN 061070,000976: 26,3674 05447 TC DOWNFLAG 061071,000977: 26,3675 00010 ADRES RNDVZFLG # RNDVZFLG DOWN 061072,000978: 061073,000979: 26,3676 34700 CAF BIT11 061074,000980: 26,3677 00006 EXTEND 061075,000981: 26,3700 05013 WOR CHAN13 # SET STANDBY ENABLE BIT 061076,000982: 061077,000983: 26,3701 05301 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY 061078,000984: 26,3702 07024 OCT 07024 # RECOVERS 061079,000985: 26,3703 20000 OCT 20000 061080,000986: 26,3704 1152 EBANK= SCALSAVE 061081,000987: 26,3704 03734 54102 2CADR POSTAND 061082,000988: 061083,000989: 26,3706 34731 CAF OCT62 061084,000990: 26,3707 04555 TC BANKCALL 061085,000991: 26,3710 20751 CADR GOPERF1 061086,000992: 26,3711 13706 TCF -3 061087,000993: 26,3712 13706 TCF -4 061088,000994: 26,3713 13706 TCF -5 061089,000995: 061090,000996: 26,3714 4731 OCT62 EQUALS .5SEC # DEC 50 = OCT 62 061091,000997: 061092,000998: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A 061093,000999: # Page 1437. 061094,001000: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER 061095,001001: # DATA ARE NOT COMPATIBLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE 061096,001002: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES 061097,001003: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE 061098,001004: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM 061099,001005: # T1.0 ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF 061100,001006: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5 061101,001007: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER 061102,001008: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1. 061103,001009: 061104,001010: 26,3714 00006 SCALPREP EXTEND 061105,001011: 26,3715 22156 QXCH MPAC +2 061106,001012: 26,3716 04527 TC FINETIME +1 061107,001013: 26,3717 00003 RELINT 061108,001014: 26,3720 52155 DXCH MPAC 061109,001015: 26,3721 34706 CA BIT5 # ADD 5 MS TO THE SCALER READING. 061110,001016: 26,3722 54001 TS L 061111,001017: 26,3723 34714 CA ZERO 061112,001018: 26,3724 20155 DAS MPAC 061113,001019: 26,3725 44362 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO 061114,001020: 26,3726 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1. 061115,001021: 26,3727 56155 XCH MPAC +1 061116,001022: 26,3730 74362 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST 061117,001023: # INTERVAL AFTER THE T1 INCREMENT 061118,001024: # (NOW = 00000, SINCE BIT 5 ADDED). 061119,001025: 26,3731 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT 061120,001026: 26,3732 24156 INCR MPAC +2 # NO 061121,001027: 26,3733 00156 TC MPAC +2 # YES 061122,001028: 061123,001029: # POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE 061124,001030: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE 061125,001031: # INSPECTED TO INSURE COMPATIBILITY BETWEEN THE SCALER READING AND THE 061126,001032: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER 061127,001033: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF 061128,001034: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER. 061129,001035: 061130,001036: 26,3734 COUNT* $$/P05 061131,001037: 061132,001038: 26,3734 44700 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY 061133,001039: 26,3735 00006 EXTEND 061134,001040: 26,3736 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT 061135,001041: 26,3737 00004 INHINT 061136,001042: 26,3740 34714 CA ZERO 061137,001043: 26,3741 54001 TS L 061138,001044: 26,3742 52025 DXCH TIME2 # CLEAR TIME1 TIME2 061139,001045: 26,3743 03714 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1 061140,001046: 26,3744 03737 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE 061141,001047: 26,3745 00006 EXTEND # T1,T2 AND SCALER OK 061142,001048: 26,3746 41153 DCS SCALSAVE 061143,001049: 26,3747 20155 DAS MPAC # FORM DP DIFFERENCE OF POST-STANDBY SCALER 061144,001050: # Page 1438 061145,001051: 26,3750 34701 CAF BIT10 # MINUS PRE-STANDBY SCALER AND SHIFT RIGHT 061146,001052: 26,3751 07256 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2. 061147,001053: 26,3752 34714 CAF ZERO 061148,001054: 26,3753 54156 TS MPAC +2 # NEEDED FOR TP AGREE 061149,001055: 26,3754 07226 TC TPAGREE # MAKE DP DIFF AGREE 061150,001056: 26,3755 10154 CCS MPAC 061151,001057: 26,3756 03763 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW 061152,001058: 26,3757 03763 TC POSTCOM # BETWEEN PRE AND POST STANDBY. 061153,001059: 26,3760 03761 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD 061154,001060: 26,3761 34701 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT. 061155,001061: 26,3762 26154 ADS MPAC 061156,001062: 26,3763 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER. 061157,001063: 26,3764 31151 DCA TIME2SAV # PRE-STANDBY TIME1 TIME2 061158,001064: 26,3765 20155 DAS MPAC 061159,001065: 26,3766 07226 TC TPAGREE # FORCE SIGN AGREEMENT 061160,001066: 26,3767 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2. 061161,001067: 26,3770 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH 061162,001068: 26,3771 05447 TC DOWNFLAG # CLEAR NODOFLAG 061163,001069: 26,3772 00054 ADRES NODOFLAG 061164,001070: 061165,001071: 26,3773 04106 TC GOTOP00H 061166,001072: 061167,001073: 061168,001074: End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc