Source Code

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