Source Code
![]() |
These source-code files derive from a printout of Luminary 116 (the Apollo 12
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Ron Burkey, and transcribed to source code by a
team of volunteers. This colorized, syntax-highlighted form was created
by assembling that transcribed source code. Note that the full page images
are available on the
Virtual AGC project page at archive.org, while reduced-size images
are presented at the VirtualAGC project website. Report or fix any
transcription errors at
the Virtual AGC project code repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 116 OF AGC PROGRAM LUMINARY BY NASA 2021112-071 19:09 AUG. 11,1969Note that the date is the date of the printout, not the date of the program revision. |
055229,000002: ## Copyright: Public domain.
055230,000003: ## Filename: IMU_MODE_SWITCHING_ROUTINES.agc
055231,000004: ## Purpose: A section of Luminary revision 116.
055232,000005: ## It is part of the source code for the Lunar Module's (LM)
055233,000006: ## Apollo Guidance Computer (AGC) for Apollo 12.
055234,000007: ## This file is intended to be a faithful transcription, except
055235,000008: ## that the code format has been changed to conform to the
055236,000009: ## requirements of the yaYUL assembler rather than the
055237,000010: ## original YUL assembler.
055238,000011: ## Reference: pp. 1299-1327
055239,000012: ## Assembler: yaYUL
055240,000013: ## Contact: Ron Burkey <info@sandroid.org>.
055241,000014: ## Website: www.ibiblio.org/apollo/index.html
055242,000015: ## Mod history: 2017-01-22 MAS Created from Luminary 99.
055243,000016: ## 2017-01-28 RSB Comment-text fixes identified for Luminary 69.
055244,000017: ## 2017-02-07 RRB Updated for Luminary 116.
055245,000018: ## 2017-03-13 RSB Proofed comment text via 3-way diff vs
055246,000019: ## Luminary 99 and 131.
055247,000020: ## 2017-03-15 RSB Comment-text fixes identified in 6-way
055248,000021: ## side-by-side diff of Sunburst 120 and Luminary
055249,000022: ## 69/99/116/131/210.
055250,000023: ## 2017-03-19 HG Fix value OCT 1210 --> OCT 31210
055251,000024:
![]() |
Page 1299 |
055253,000026: 5457 BLOCK 02
055254,000027: 4000 SETLOC FFTAG3
055255,000028: 4000 BANK
055256,000029:
055257,000030: 5457 E3,1471 EBANK= COMMAND
055258,000031:
055259,000032: # FIXED-FIXED ROUTINES.
055260,000033:
055261,000034: 5457 COUNT* $$/IMODE
055262,000035: 5457 34755 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS.
055263,000036: 5460 54032 TS CDUX
055264,000037: 5461 54033 TS CDUY
055265,000038: 5462 54034 TS CDUZ
055266,000039: 5463 00002 TC Q
055267,000040:
055268,000041: 5464 4743 SPSCODE = BIT9
055269,000042:
![]() |
Page 1300 |
055271,000044: # IMU ZEROING ROUTINE.
055272,000045:
055273,000046: 11,3774 BANK 11
055274,000047: 07,2000 SETLOC MODESW
055275,000048: 07,2000 BANK
055276,000049:
055277,000050: 07,2706 COUNT* $$/IMODE
055278,000051: 07,2706 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS.
055279,000052: 07,2707 41035 CS DSPTAB +11D # DONT ZERO CDUS IF IMU IN GIMBAL LOCK AND
055280,000053: 07,2710 74771 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION)
055281,000054: 07,2711 10000 CCS A
055282,000055: 07,2712 12716 TCF IMUZEROA
055283,000056:
055284,000057: 07,2713 05567 TC ALARM # IF SO.
055285,000058: 07,2714 00206 OCT 00206
055286,000059:
055287,000060: 07,2715 13651 TCF CAGETSTJ +4 # IMMEDIATE FAILURE.
055288,000061:
055289,000062: 07,2716 03645 IMUZEROA TC CAGETSTJ
055290,000063: # DELETE
055291,000064: 07,2717 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
055292,000065: 07,2720 74773 MASK SUPER011 # BIT5 FOR GROUND
055293,000066: 07,2721 27300 ADS IMODES33
055294,000067:
055295,000068: 07,2722 41277 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE
055296,000069: 07,2723 75741 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN).
055297,000070: 07,2724 27277 ADS IMODES30
055298,000071:
055299,000072: 07,2725 44771 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR
055300,000073: 07,2726 00006 EXTEND # COUNTER DISABLED.
055301,000074: 07,2727 03012 WAND CHAN12
055302,000075:
055303,000076: 07,2730 03260 TC NOATTOFF # TURN OFF NO ATT LAMP.
055304,000077:
055305,000078: 07,2731 34747 CAF BIT5
055306,000079: 07,2732 00006 EXTEND
055307,000080: 07,2733 05012 WOR CHAN12
055308,000081:
055309,000082: 07,2734 05457 TC ZEROICDU
055310,000083: 07,2735 34746 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO
055311,000084: 07,2736 05203 TC WAITLIST # RECEIVE ITS PULSE TRAIN.
055312,000085: 07,2737 E3,1474 EBANK= CDUIND
055313,000086: 07,2737 02751 16103 2CADR IMUZERO2
055314,000087:
055315,000088: 07,2741 41277 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT.
055316,000089: 07,2742 74743 MASK BIT9
055317,000090: 07,2743 10000 CCS A
055318,000091: 07,2744 12747 TCF MODEEXIT
![]() |
Page 1301 |
055320,000093: 07,2745 05567 TC ALARM
055321,000094: 07,2746 00210 OCT 210
055322,000095:
055323,000096: 07,2747 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT.
055324,000097: 07,2750 14631 TCF SWRETURN
055325,000098:
055326,000099: 07,2751 03633 IMUZERO2 TC CAGETEST
055327,000100: 07,2752 05457 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ
055328,000101:
055329,000102: 07,2753 44747 CS BIT5 # REMOVE ZERO DISCRETE.
055330,000103: 07,2754 00006 EXTEND
055331,000104: 07,2755 03012 WAND CHAN12
055332,000105:
055333,000106: 07,2756 34741 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS
055334,000107: 07,2757 05224 TC VARDELAY
055335,000108:
055336,000109: 07,2760 03633 IMUZERO3 TC CAGETEST
055337,000110: 07,2761 45741 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT.
055338,000111: 07,2762 71277 MASK IMODES30
055339,000112: 07,2763 55277 TS IMODES30
055340,000113:
055341,000114: 07,2764 44773 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES
055342,000115: 07,2765 71300 MASK IMODES33 # BIT5 FOR GROUND
055343,000116: 07,2766 55300 TS IMODES33
055344,000117:
055345,000118: 07,2767 04674 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE
055346,000119: 07,2770 14703 CADR SETISSW # PRESENT.
055347,000120:
055348,000121: 07,2771 13623 TCF ENDIMU
055349,000122:
![]() |
Page 1302 |
055351,000124: # IMU COARSE ALIGN MODE.
055352,000125:
055353,000126: 07,2772 00004 IMUCOARS INHINT
055354,000127: 07,2773 03645 TC CAGETSTJ
055355,000128: 07,2774 03136 TC SETCOARS
055356,000129:
055357,000130: 07,2775 36245 CAF SIX
055358,000131: 07,2776 05203 TC WAITLIST
055359,000132: 07,2777 E3,1474 EBANK= CDUIND
055360,000133: 07,2777 03002 16103 2CADR COARS
055361,000134:
055362,000135: 07,3001 12747 TCF MODEEXIT
055363,000136:
055364,000137: 07,3002 03633 COARS TC CAGETEST
055365,000138: 07,3003 34746 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
055366,000139: 07,3004 00006 EXTEND
055367,000140: 07,3005 05012 WOR CHAN12
055368,000141:
055369,000142: 07,3006 34752 CAF TWO # SET CDU INDICATOR
055370,000143: 07,3007 55474 COARS1 TS CDUIND
055371,000144:
055372,000145: 07,3010 51474 INDEX CDUIND # COMPUTE THETAD - THETAA IN 1:S
055373,000146: 07,3011 30321 CA THETAD # COMPLEMENT FORM
055374,000147: 07,3012 00006 EXTEND
055375,000148: 07,3013 51474 INDEX CDUIND
055376,000149: 07,3014 20032 MSU CDUX
055377,000150: 07,3015 00006 EXTEND
055378,000151: 07,3016 74737 MP BIT13 # SHIFT RIGHT 2
055379,000152: 07,3017 56001 XCH L # ROUND
055380,000153: 07,3020 60000 DOUBLE
055381,000154: 07,3021 54061 TS ITEMP1
055382,000155: 07,3022 13024 TCF +2
055383,000156: 07,3023 26001 ADS L
055384,000157:
055385,000158: 07,3024 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED
055386,000159: 07,3025 23471 LXCH COMMAND
055387,000160: 07,3026 11474 CCS CDUIND
055388,000161: 07,3027 03007 TC COARS1
055389,000162:
055390,000163: 07,3030 34752 CAF TWO # MINIMUM OF 4 MS WAIT
055391,000164: 07,3031 05224 TC VARDELAY
055392,000165:
![]() |
Page 1303 |
055394,000167: 07,3032 03633 COARS2 TC CAGETEST # DONT CONTINUE IF CAGED.
055395,000168: 07,3033 54061 TS ITEMP1 # SETS TO +0.
055396,000169: 07,3034 34752 CAF TWO # SET CDU INDICATOR
055397,000170: 07,3035 55474 +3 TS CDUIND
055398,000171:
055399,000172: 07,3036 51474 INDEX CDUIND
055400,000173: 07,3037 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED
055401,000174: 07,3040 03044 TC COMPOS # GREATER THAN MAX ALLOWED
055402,000175: 07,3041 03053 TC NEXTCDU +1
055403,000176: 07,3042 03111 TC COMNEG
055404,000177: 07,3043 03053 TC NEXTCDU +1
055405,000178:
055406,000179: 07,3044 63737 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED
055407,000180: 07,3045 00006 EXTEND # MINUS ONE
055408,000181: 07,3046 63121 BZMF COMZERO
055409,000182: 07,3047 51474 INDEX CDUIND
055410,000183: 07,3050 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES
055411,000184: 07,3051 43740 CS -COMMAX- # ALLOWED
055412,000185:
055413,000186: 07,3052 24061 NEXTCDU INCR ITEMP1
055414,000187: 07,3053 64754 AD NEG0
055415,000188: 07,3054 51474 INDEX CDUIND
055416,000189: 07,3055 54050 TS CDUXCMD # SET UP COMMAND REGISTER.
055417,000190:
055418,000191: 07,3056 11474 CCS CDUIND
055419,000192: 07,3057 03035 TC COARS2 +3
055420,000193:
055421,000194: 07,3060 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT.
055422,000195: 07,3061 13125 TCF SENDPULS
055423,000196:
055424,000197: 07,3062 05221 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE.
055425,000198: 07,3063 00226 DEC 150 B-14
055426,000199:
055427,000200: 07,3064 34752 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT
055428,000201: 07,3065 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD.
055429,000202: 07,3066 50000 INDEX A
055430,000203: 07,3067 30032 CA CDUX
055431,000204: 07,3070 00006 EXTEND
055432,000205: 07,3071 50061 INDEX ITEMP1
055433,000206: 07,3072 20321 MSU THETAD
055434,000207: 07,3073 10000 CCS A
055435,000208: 07,3074 13102 TCF COARSERR
055436,000209: 07,3075 13077 TCF CORSCHK2
055437,000210: 07,3076 13102 TCF COARSERR
055438,000211:
![]() |
Page 1304 |
055440,000213: 07,3077 10061 CORSCHK2 CCS ITEMP1
055441,000214: 07,3100 13065 TCF CHKCORS
055442,000215: 07,3101 13623 TCF ENDIMU # END OF COARSE ALIGNMENT.
055443,000216:
055444,000217: 07,3102 63110 COARSERR AD COARSTOL # 2 DEGREES.
055445,000218: 07,3103 00006 EXTEND
055446,000219: 07,3104 63077 BZMF CORSCHK2
055447,000220:
055448,000221: 07,3105 05567 TC ALARM # COARSE ALIGN ERROR.
055449,000222: 07,3106 00211 OCT 211
055450,000223:
055451,000224: 07,3107 13631 TCF IMUBAD
055452,000225:
055453,000226: 07,3110 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS
055454,000227:
055455,000228: 07,3111 63737 COMNEG AD -COMMAX
055456,000229: 07,3112 00006 EXTEND
055457,000230: 07,3113 63121 BZMF COMZERO
055458,000231: 07,3114 40000 COM
055459,000232: 07,3115 51474 INDEX CDUIND
055460,000233: 07,3116 55471 TS COMMAND
055461,000234: 07,3117 33740 CA -COMMAX-
055462,000235: 07,3120 03052 TC NEXTCDU
055463,000236:
055464,000237: 07,3121 34755 COMZERO CAF ZERO
055465,000238: 07,3122 51474 INDEX CDUIND
055466,000239: 07,3123 57471 XCH COMMAND
055467,000240: 07,3124 03052 TC NEXTCDU
055468,000241:
055469,000242: 07,3125 37743 SENDPULS CAF 13,14,15
055470,000243: 07,3126 00006 EXTEND
055471,000244: 07,3127 05014 WOR CHAN14
055472,000245: 07,3130 33741 CAF 600MS
055473,000246: 07,3131 13031 TCF COARS2 -1 # THEN TO VARDELAY
055474,000247:
055475,000248: 07,3132 34746 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
055476,000249: 07,3133 00006 EXTEND
055477,000250: 07,3134 05012 WOR CHAN12
055478,000251: 07,3135 05261 TC TASKOVER
055479,000252:
![]() |
Page 1305 |
055481,000254: 07,3136 34750 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN
055482,000255: 07,3137 00006 EXTEND
055483,000256: 07,3140 02012 RAND CHAN12
055484,000257: 07,3141 10000 CCS A
055485,000258: 07,3142 00002 TC Q
055486,000259:
055487,000260: 07,3143 44746 CS BIT6 # CLEAR ISS ERROR COUNTERS
055488,000261: 07,3144 00006 EXTEND
055489,000262: 07,3145 03012 WAND CHAN12
055490,000263:
055491,000264: 07,3146 44742 CS BIT10 # KNOCK DOWN GYRO ACTIVITY
055492,000265: 07,3147 00006 EXTEND
055493,000266: 07,3150 03014 WAND CHAN14
055494,000267: 07,3151 44755 CS ZERO
055495,000268: 07,3152 54047 TS GYROCMD
055496,000269:
055497,000270: 07,3153 34750 CAF BIT4 # PUT ISS IN COARSE ALIGN
055498,000271: 07,3154 00006 EXTEND
055499,000272: 07,3155 05012 WOR CHAN12
055500,000273:
055501,000274: 07,3156 41035 CS DSPTAB +11D # TURN ON NO ATT LAMP
055502,000275: 07,3157 73201 MASK OCT40010
055503,000276: 07,3160 27035 ADS DSPTAB +11D
055504,000277:
055505,000278: 07,3161 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
055506,000279: 07,3162 74746 MASK BIT6
055507,000280: 07,3163 27300 ADS IMODES33
055508,000281:
055509,000282: 07,3164 41277 CS IMODES30 # DISABLE IMUFAIL
055510,000283: 07,3165 74750 MASK BIT4
055511,000284: 07,3166 27277 ADS IMODES30
055512,000285:
055513,000286: 07,3167 44747 RNDREFDR CS TRACKBIT # CLEAR TRACK FLAG
055514,000287: 07,3170 70075 MASK FLAGWRD1
055515,000288: 07,3171 54075 TS FLAGWRD1
055516,000289:
055517,000290: 07,3172 44735 CS DRFTBIT # CLEAR DRIFT FLAG
055518,000291: 07,3173 70076 MASK FLAGWRD2
055519,000292: 07,3174 54076 TS FLAGWRD2
055520,000293:
055521,000294: 07,3175 44737 CS REFSMBIT # CLEAR REFSMMAT FLAG
055522,000295: 07,3176 70077 MASK FLAGWRD3
055523,000296: 07,3177 54077 TS FLAGWRD3
055524,000297:
055525,000298: 07,3200 00002 TC Q
055526,000299:
055527,000300: 07,3201 40010 OCT40010 OCT 40010
055528,000301:
![]() |
Page 1306 |
055530,000303: # IMU FINE ALIGN MODE SWITCH.
055531,000304:
055532,000305: 07,3202 00004 IMUFINE INHINT
055533,000306: 07,3203 03645 TC CAGETSTJ # SEE IF IMU BEING CAGED.
055534,000307:
055535,000308: 07,3204 43736 CS BITS4-5 # RESET ZERO AND COARSE
055536,000309: 07,3205 00006 EXTEND
055537,000310: 07,3206 03012 WAND CHAN12
055538,000311:
055539,000312: 07,3207 44746 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED
055540,000313: 07,3210 71300 MASK IMODES33
055541,000314: 07,3211 55300 TS IMODES33
055542,000315:
055543,000316: 07,3212 03260 TC NOATTOFF
055544,000317:
055545,000318: 07,3213 34742 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE
055546,000319: 07,3214 05203 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE
055547,000320: 07,3215 E3,1474 EBANK= CDUIND
055548,000321: 07,3215 03226 16103 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN
055549,000322:
055550,000323: 07,3217 35000 CAF 2SECS
055551,000324: 07,3220 05203 TC WAITLIST
055552,000325: 07,3221 E3,1474 EBANK= CDUIND
055553,000326: 07,3221 03224 16103 2CADR IMUFINED
055554,000327:
055555,000328: 07,3223 12747 TCF MODEEXIT
055556,000329:
055557,000330: 07,3224 03633 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU.
055558,000331: 07,3225 13623 TCF ENDIMU
055559,000332:
![]() |
Page 1307 |
055561,000334: 07,3226 03640 IFAILOK TC CAGETSTQ # ENABLE IMU FIAL UNLESS IMU BEING CAGED.
055562,000335: 07,3227 15261 TCF TASKOVER # IT IS.
055563,000336:
055564,000337: 07,3230 34750 CAF BIT4 # DONT RESET IMU FAIL INHIBIT IF SOMEONE
055565,000338: 07,3231 00006 EXTEND # HAS GONE INTO COARSE ALIGN.
055566,000339: 07,3232 02012 RAND CHAN12
055567,000340: 07,3233 10000 CCS A
055568,000341: 07,3234 15261 TCF TASKOVER
055569,000342:
055570,000343: 07,3235 41277 CS IMODES30 # RESET IMUFAIL.
055571,000344: 07,3236 74737 MASK BIT13
055572,000345: 07,3237 27277 ADS IMODES30
055573,000346: 07,3240 44750 CS BIT4
055574,000347: 07,3241 71277 PFAILOK2 MASK IMODES30
055575,000348: 07,3242 55277 TS IMODES30
055576,000349: 07,3243 04674 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOW
055577,000350: 07,3244 14703 CADR SETISSW # THAT THE INHIBIT HAS BEEN REMOVED.
055578,000351: 07,3245 15261 TCF TASKOVER
055579,000352:
055580,000353: 07,3246 03640 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM.
055581,000354: 07,3247 15261 TCF TASKOVER
055582,000355:
055583,000356: 07,3250 41277 CS IMODES30 # RESET IMU AND PIPA FAIL BITS.
055584,000357: 07,3251 74742 MASK BIT10
055585,000358: 07,3252 27277 ADS IMODES30
055586,000359:
055587,000360: 07,3253 41300 CS IMODES33
055588,000361: 07,3254 74737 MASK BIT13
055589,000362: 07,3255 27300 ADS IMODES33
055590,000363:
055591,000364: 07,3256 44747 CS BIT5
055592,000365: 07,3257 13241 TCF PFAILOK2
055593,000366:
055594,000367: 07,3260 43201 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP.
055595,000368: 07,3261 71035 MASK DSPTAB +11D
055596,000369: 07,3262 64735 AD BIT15
055597,000370: 07,3263 55035 TS DSPTAB +11D
055598,000371: 07,3264 00002 TC Q
055599,000372:
![]() |
Page 1308 |
055601,000374: # ROUITNES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.
055602,000375:
055603,000376: 07,3265 44755 PIPUSE CS ZERO
055604,000377: 07,3266 54037 TS PIPAX
055605,000378: 07,3267 54040 TS PIPAY
055606,000379: 07,3270 54041 TS PIPAZ
055607,000380:
055608,000381: 07,3271 03640 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED
055609,000382: 07,3272 14631 TCF SWRETURN
055610,000383:
055611,000384: 07,3273 00004 INHINT
055612,000385: 07,3274 44753 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL
055613,000386: 07,3275 71277 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING.
055614,000387: 07,3276 55277 TS IMODES30
055615,000388:
055616,000389: 07,3277 04674 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW.
055617,000390: 07,3300 14703 CADR SETISSW # (OR GO OFF ON PIPFREE).
055618,000391:
055619,000392: 07,3301 12747 TCF MODEEXIT
055620,000393:
055621,000394: 07,3302 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DONT LIGHT
055622,000395: 07,3303 41277 CS IMODES30 # ISS WARNING.
055623,000396: 07,3304 74753 MASK BIT1
055624,000397: 07,3305 27277 ADS IMODES30
055625,000398:
055626,000399: 07,3306 74742 MASK BIT10 # IF PIP FAIL ON, DO PROG ALSRM AND RESET
055627,000400: 07,3307 10000 CCS A # ISS WARNING.
055628,000401: 07,3310 12747 TCF MODEEXIT
055629,000402:
055630,000403: 07,3311 05567 TC ALARM
055631,000404: 07,3312 00212 OCT 212
055632,000405:
055633,000406: 07,3313 00004 INHINT
055634,000407:
055635,000408: 07,3314 13277 TCF PIPFREE2
055636,000409:
![]() |
Page 1309 |
055638,000411: # THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS
055639,000412: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE
055640,000413: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.
055641,000414:
055642,000415: 07,3315 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY.
055643,000416:
055644,000417: 07,3315 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR.
055645,000418: 07,3316 03645 TC CAGETSTJ # DONT PROCEED IF IMU BEING CAGED.
055646,000419:
055647,000420: 07,3317 11311 CCS LGYRO # SEE IF GYROS BUSY.
055648,000421: 07,3320 03361 TC GYROBUSY # SLEEP.
055649,000422:
055650,000423: 07,3321 54156 TS MPAC +2
055651,000424: 07,3322 34746 CAF BIT6 # ENABLE THE POWER SUPPLY.
055652,000425: 07,3323 00006 EXTEND
055653,000426: 07,3324 05014 WOR CHAN14
055654,000427:
055655,000428: 07,3325 34751 CAF FOUR
055656,000429: 07,3326 05203 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER
055657,000430: 07,3327 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB).
055658,000431: 07,3327 03377 16103 2CADR STRTGYRO
055659,000432:
055660,000433: 07,3331 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR
055661,000434: 07,3332 56003 XCH EBANK # RESTORATION ON RETURN.
055662,000435: 07,3333 56161 XCH MPAC +5
055663,000436: 07,3334 55311 TS LGYRO # RESERVES GYROS.
055664,000437: 07,3335 74357 MASK LOW8
055665,000438: 07,3336 54061 TS ITEMP1
055666,000439:
055667,000440: 07,3337 34752 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS.
055668,000441: 07,3340 54157 GYROAGRE TS MPAC +3
055669,000442: 07,3341 60000 DOUBLE
055670,000443: 07,3342 60061 AD ITEMP1
055671,000444: 07,3343 54160 TS MPAC +4
055672,000445: 07,3344 00006 EXTEND
055673,000446: 07,3345 50000 INDEX A
055674,000447: 07,3346 31401 DCA 1400
055675,000448: 07,3347 52155 DXCH MPAC
055676,000449: 07,3350 07262 TC TPAGREE
055677,000450: 07,3351 52155 DXCH MPAC
055678,000451: 07,3352 50160 INDEX MPAC +4
055679,000452: 07,3353 53401 DXCH 1400
055680,000453:
055681,000454: 07,3354 10157 CCS MPAC +3
055682,000455: 07,3355 13340 TCF GYROAGRE
055683,000456:
055684,000457: 07,3356 30161 CA MPAC +5 # RESTORE CALLER'S EBANK.
055685,000458: 07,3357 54003 TS EBANK
055686,000459: 07,3360 12747 TCF MODEEXIT
055687,000460:
![]() |
Page 1310 |
055689,000462: # ROUTINES TO ALLOW TORQUING BY ONLY ONE JOB AT A TIME.
055690,000463:
055691,000464: 07,3361 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR.
055692,000465: 07,3362 30134 DCA BUF2
055693,000466: 07,3363 52155 DXCH MPAC
055694,000467: 07,3364 33376 REGSLEEP CAF LGWAKE
055695,000468: 07,3365 15133 TCF JOBSLEEP
055696,000469:
055697,000470: 07,3366 11311 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY.
055698,000471: 07,3367 13364 TCF REGSLEEP # IF SO, SLEEP SOME MORE.
055699,000472:
055700,000473: 07,3370 54156 TS MPAC +2
055701,000474: 07,3371 00006 EXTEND
055702,000475: 07,3372 30155 DCA MPAC
055703,000476: 07,3373 52134 DXCH BUF2 # RESTORE SWRETURN INFO.
055704,000477: 07,3374 34753 CAF ONE
055705,000478: 07,3375 13326 TCF GWAKE2
055706,000479:
055707,000480: 07,3376 17366 LGWAKE CADR GWAKE
055708,000481:
![]() |
Page 1311 |
055710,000483: # GYRO-TORQUING WAITLIST TASKS.
055711,000484:
055712,000485: 07,3377 43620 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO.
055713,000486: 07,3400 00006 EXTEND
055714,000487: 07,3401 03014 WAND CHAN14
055715,000488:
055716,000489: 07,3402 03633 TC CAGETEST
055717,000490:
055718,000491: 07,3403 31311 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14.
055719,000492: 07,3404 00006 EXTEND
055720,000493: 07,3405 74750 MP BIT4
055721,000494: 07,3406 50000 INDEX A
055722,000495: 07,3407 13410 TCF +1
055723,000496: 07,3410 03425 TC GSELECT # =0. DO Y GYRO.
055724,000497: 07,3411 00202 OCT 00202
055725,000498:
055726,000499: 07,3412 03425 TC GSELECT # =1. DO Z GYRO.
055727,000500: 07,3413 00302 OCT 00302
055728,000501:
055729,000502: 07,3414 03423 TC GSELECT -2 # =2. DO X GYRO.
055730,000503: 07,3415 00100 OCT 00100
055731,000504:
055732,000505: 07,3416 34755 CAF ZERO # =3. DONE
055733,000506: 07,3417 55311 TS LGYRO
055734,000507: 07,3420 33376 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB.
055735,000508: 07,3421 05137 TC JOBWAKE
055736,000509:
055737,000510: 07,3422 13224 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY
![]() |
Page 1312 |
055739,000512: 07,3423 44751 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X.
055740,000513: 07,3424 27311 ADS LGYRO
055741,000514:
055742,000515: 07,3425 50002 GSELECT INDEX Q # SELECT GYRO.
055743,000516: 07,3426 30000 CAF 0 # PACKED WORD CONTAINS GYRO SELECT BITS
055744,000517: 07,3427 54064 TS ITEMP4 # AND INCREMENT TO LGYRO.
055745,000518: 07,3430 74757 MASK SEVEN
055746,000519: 07,3431 64737 AD BIT13
055747,000520: 07,3432 27311 ADS LGYRO
055748,000521: 07,3433 54003 TS EBANK
055749,000522: 07,3434 74357 MASK LOW8
055750,000523: 07,3435 54061 TS ITEMP1
055751,000524:
055752,000525: 07,3436 44757 CS SEVEN
055753,000526: 07,3437 70064 MASK ITEMP4
055754,000527: 07,3440 54064 TS ITEMP4
055755,000528:
055756,000529: 07,3441 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING.
055757,000530: 07,3442 50061 INDEX ITEMP1
055758,000531: 07,3443 31401 DCA 1400
055759,000532: 07,3444 52071 DXCH RUPTREG1
055760,000533:
055761,000534: 07,3445 10070 CCS RUPTREG1
055762,000535: 07,3446 13461 TCF MAJ+
055763,000536: 07,3447 13451 TCF +2
055764,000537: 07,3450 13601 TCF MAJ-
055765,000538:
055766,000539: 07,3451 10071 CCS RUPTREG2
055767,000540: 07,3452 13456 TCF MIN+
055768,000541: 07,3453 13403 TCF STRTGYR2
055769,000542: 07,3454 13576 TCF MIN-
055770,000543: 07,3455 13403 TCF STRTGYR2
055771,000544:
![]() |
Page 1313 |
055773,000546: 07,3456 63512 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST
055774,000547: 07,3457 00006 EXTEND # 16 GYRO PULSES.
055775,000548: 07,3460 63403 BZMF STRTGYR2
055776,000549:
055777,000550: 07,3461 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT.
055778,000551: 07,3462 33622 DCA GYROFRAC
055779,000552: 07,3463 20071 DAS RUPTREG1
055780,000553:
055781,000554: 07,3464 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO.
055782,000555: 07,3465 00006 EXTEND
055783,000556: 07,3466 05014 WOR CHAN14
055784,000557:
055785,000558: 07,3467 36077 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS
055786,000559: 07,3470 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG
055787,000560: 07,3471 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION
055788,000561: 07,3472 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE
055789,000562: 07,3473 74744 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF
055790,000563: 07,3474 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND.
055791,000564: 07,3475 30070 CA RUPTREG1
055792,000565: 07,3476 00006 EXTEND
055793,000566: 07,3477 74743 MP BIT9
055794,000567: 07,3500 54070 TS RUPTREG1
055795,000568: 07,3501 30001 CA L
055796,000569: 07,3502 00006 EXTEND
055797,000570: 07,3503 74736 MP BIT14
055798,000571: 07,3504 26062 ADS ITEMP2 # INITIAL COMMAND.
055799,000572:
055800,000573: 07,3505 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED
055801,000574: 07,3506 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES).
055802,000575: 07,3507 67752 AD MINUS1
055803,000576: 07,3510 10000 CCS A
055804,000577: 07,3511 13535 TCF LONGGYRO
055805,000578: 07,3512 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD
055806,000579: 07,3513 13517 TCF +4
055807,000580:
055808,000581: 07,3514 34736 CAF BIT14
055809,000582: 07,3515 26062 ADS ITEMP2
055810,000583: 07,3516 34755 CAF ZERO
055811,000584:
055812,000585: 07,3517 50061 +4 INDEX ITEMP1
055813,000586: 07,3520 53401 DXCH 1400
![]() |
Page 1314 |
055815,000588: 07,3521 30062 CA ITEMP2 # ENTIRE COMMAND.
055816,000589: 07,3522 54047 LASTSEG TS GYROCMD
055817,000590: 07,3523 00006 EXTEND
055818,000591: 07,3524 74742 MP BIT10 # WAITLIST DT
055819,000592: 07,3525 66250 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES.
055820,000593: 07,3526 05203 TC WAITLIST
055821,000594: 07,3527 E3,1474 EBANK= CDUIND
055822,000595: 07,3527 03377 16103 2CADR STRTGYRO
055823,000596:
055824,000597: 07,3531 34742 GYROEXIT CAF BIT10
055825,000598: 07,3532 00006 EXTEND
055826,000599: 07,3533 05014 WOR CHAN14
055827,000600: 07,3534 15261 TCF TASKOVER
055828,000601:
055829,000602: 07,3535 50061 LONGGYRO INDEX ITEMP1
055830,000603: 07,3536 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF
055831,000604: 07,3537 34736 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192.
055832,000605: 07,3540 60062 AD ITEMP2
055833,000606: 07,3541 54047 TS GYROCMD
055834,000607:
055835,000608: 07,3542 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS
055836,000609: 07,3543 74742 MP BIT10 # ALMOST OUT.
055837,000610: 07,3544 67750 AD NEG3
055838,000611: 07,3545 05203 TC WAITLIST
055839,000612: 07,3546 E3,1474 EBANK= CDUIND
055840,000613: 07,3546 03551 16103 2CADR 8192AUG
055841,000614:
055842,000615: 07,3550 13531 TCF GYROEXIT
055843,000616:
055844,000617: 07,3551 03633 8192AUG TC CAGETEST
055845,000618:
055846,000619: 07,3552 34750 CAF BIT4
055847,000620: 07,3553 00006 EXTEND
055848,000621: 07,3554 02012 RAND CHAN12
055849,000622: 07,3555 10000 CCS A
055850,000623: 07,3556 13631 TCF IMUBAD
055851,000624: 07,3557 31311 CA LGYRO # ADD 8192 PULSES TO GYROCMD
055852,000625: 07,3560 54003 TS EBANK
055853,000626: 07,3561 74357 MASK LOW8
055854,000627: 07,3562 54061 TS ITEMP1
055855,000628:
055856,000629: 07,3563 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG.
055857,000630: 07,3564 11400 CCS 1400
055858,000631: 07,3565 13571 TCF AUG2 # MORE TO COME.
055859,000632:
055860,000633: 07,3566 34736 CAF BIT14
055861,000634: 07,3567 26047 ADS GYROCMD
055862,000635: 07,3570 13523 TCF LASTSEG +1
055863,000636:
![]() |
Page 1315 |
055865,000638: 07,3571 50061 AUG2 INDEX ITEMP1
055866,000639: 07,3572 55400 TS 1400
055867,000640: 07,3573 34736 CAF BIT14
055868,000641: 07,3574 26047 ADS GYROCMD
055869,000642: 07,3575 13542 TCF AUG3 # COMPUTE DT.
055870,000643:
![]() |
Page 1316 |
055872,000645: 07,3576 63512 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT.
055873,000646: 07,3577 00006 EXTEND
055874,000647: 07,3600 63403 BZMF STRTGYR2
055875,000648:
055876,000649: 07,3601 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT.
055877,000650: 07,3602 43622 DCS GYROFRAC
055878,000651: 07,3603 20071 DAS RUPTREG1
055879,000652:
055880,000653: 07,3604 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO.
055881,000654: 07,3605 64743 AD BIT9
055882,000655: 07,3606 00006 EXTEND
055883,000656: 07,3607 05014 WOR CHAN14
055884,000657:
055885,000658: 07,3610 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE.
055886,000659: 07,3611 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE
055887,000660: 07,3612 40071 CS RUPTREG2 # POSITIVE - BIT9 OF CHAN 14 DETERMINES
055888,000661: 07,3613 76077 MASK LOW7 # THE SIGN OF THE COMMAND.
055889,000662: 07,3614 40000 COM
055890,000663: 07,3615 56071 XCH RUPTREG2
055891,000664: 07,3616 40000 COM
055892,000665: 07,3617 13472 TCF GMERGE
055893,000666:
055894,000667: 07,3620 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS.
055895,000668:
055896,000669: 07,3621 00000 00034 GYROFRAC 2DEC .215 B-21
055897,000670:
![]() |
Page 1317 |
055899,000672: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.
055900,000673:
055901,000674: 07,3623 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURED OR IF
055902,000675: 07,3624 00011 READ DSALMOUT # ISS WARNING IS ON.
055903,000676: 07,3625 74753 MASK BIT1
055904,000677: 07,3626 10000 CCS A
055905,000678: 07,3627 13631 TCF IMUBAD
055906,000679:
055907,000680: 07,3630 13657 IMUGOOD TCF GOODEND # WITH C(A) = 0.
055908,000681:
055909,000682: 07,3631 34755 IMUBAD CAF ZERO
055910,000683: 07,3632 13654 TCF BADEND
055911,000684:
055912,000685: 07,3633 34746 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE
055913,000686: 07,3634 71277 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED.
055914,000687: 07,3635 10000 CCS A
055915,000688: 07,3636 13631 TCF IMUBAD # DIRECTLY.
055916,000689: 07,3637 00002 TC Q # WITH C(A) = +0.
055917,000690:
055918,000691: 07,3640 41277 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED.
055919,000692: 07,3641 74746 MASK BIT6
055920,000693: 07,3642 10000 CCS A
055921,000694: 07,3643 24002 INCR Q
055922,000695: 07,3644 00002 TC Q
055923,000696:
055924,000697: 07,3645 41277 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION
055925,000698: 07,3646 74746 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED,
055926,000699: 07,3647 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION
055927,000700: 07,3650 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY
055928,000701:
055929,000702: 07,3651 44755 CS ZERO # TO SWRETURN.
055930,000703: 07,3652 55301 TS IMUCADR
055931,000704: 07,3653 12747 TCF MODEEXIT
055932,000705:
![]() |
Page 1318 |
055934,000707: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION
055935,000708: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.
055936,000709:
055937,000710: 07,3654 54071 BADEND TS RUPTREG2 # DEVICE INDEX.
055938,000711: 07,3655 44755 CS ZERO # FOR FAILURE.
055939,000712: 07,3656 13661 TCF GOODEND +2
055940,000713:
055941,000714: 07,3657 54071 GOODEND TS RUPTREG2
055942,000715: 07,3660 44753 CS ONE # FOR SUCCESS.
055943,000716:
055944,000717: 07,3661 54072 TS RUPTREG3
055945,000718: 07,3662 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP.
055946,000719: 07,3663 11301 CCS MODECADR
055947,000720: 07,3664 13670 TCF +4 # YES - WAKE IT UP.
055948,000721: 07,3665 13700 TCF ENDMODE # IF 0, PROGRAM NOT IN YET.
055949,000722:
055950,000723: 07,3666 00006 EXTEND
055951,000724: 07,3667 13701 BZF ENDMODE +1 # BZF = TCF IF MODECADR = -0.
055952,000725:
055953,000726: 07,3670 34755 CAF ZERO # WAKE SLEEPING PROGRAM.
055954,000727: 07,3671 50071 INDEX RUPTREG2
055955,000728: 07,3672 57301 XCH MODECADR
055956,000729: 07,3673 05137 TC JOBWAKE
055957,000730:
055958,000731: 07,3674 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL.
055959,000732: 07,3675 50064 INDEX LOCCTR
055960,000733: 07,3676 26164 ADS LOC
055961,000734:
055962,000735: 07,3677 15261 TCF TASKOVER
055963,000736:
055964,000737: 07,3700 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT
055965,000738: 07,3701 50071 +1 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND
055966,000739: 07,3702 55301 TS MODECADR # SUCCESSFUL.
055967,000740: 07,3703 15261 TCF TASKOVER
055968,000741:
![]() |
Page 1319 |
055970,000743: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.
055971,000744:
055972,000745: # PROGRAM DESCRIPTION DATE - 21 FEB 1967
055973,000746: # LOG SECTION IMU MODE SWITCHING
055974,000747: # MOD BY- R.MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82
055975,000748:
055976,000749: # FUNCTIONAL DESCRIPTION-
055977,000750: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED
055978,000751: # I/O FUNCTION IS COMPLETE.THE FOLLOWING CHECKS ON THE CALLING ROUTINE:S
055979,000752: # MODECADR ARE MADE AND ACTED UPON.
055980,000753: # 1) +0 INDICATES INCOMPLETE I/O OPERATION.CALLING ROUTINE IS PUT TO
055981,000754: # SLEEP.
055982,000755: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP
055983,000756: # CALL AND RETURNS TO CALLING ROUTINE AT L+3
055984,000757: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR
055985,000758: # AND RETURNS TO CALLING ROUTINE AT L+2.
055986,000759: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF
055987,000760: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM
055988,000761: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS.
055989,000762:
055990,000763: # CALLING SEQUENCE-
055991,000764: # L TC BANKCALL
055992,000765: # L+1 CADR (ONE OF 5 STALL ADDRESSES I.E. IMUSTALL,OPTSTALL,RADSTALL,
055993,000766: # AOTSTALL,OR ATTSTALL)
055994,000767:
055995,000768: # NORMAL-EXIT MODE-
055996,000769: # TCF JOBSLEEP OR TCF MODEXIT
055997,000770:
055998,000771: # ALARM OR ABORT EXIT MODE-
055999,000772: # TC ABORT
056000,000773:
056001,000774: # OUTPUT-
056002,000775: # MODECADR=CADR IF JOBSLEEP
056003,000776: # MODECADR=+0 IF I/O COMPLETE
056004,000777: # BUF2=L+3 IF I/O COMPLETE AND GOOD.
056005,000778: # BUF2=L+2 IF I/O COMPLETE BUT FAILED.
056006,000779:
056007,000780: # ERASABLE INITIALIZATION-
056008,000781: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2)
056009,000782: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE.
056010,000783: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS.
056011,000784:
056012,000785: # DEBRIS-
056013,000786: # RUPTREG2 AND CALLING ROUTINE MODECADR.
056014,000787:
![]() |
[yaYUL WORKAROUND] OH 2009 - kept by RRB for Luminary 116 - 2017 |
056016,000789: 07,3704 30,2000 SBANK= LOWSUPER
056017,000790:
056018,000791: 07,3704 34753 AOTSTALL CAF ONE # AOT.
056019,000792: 07,3705 03711 TC STALL
056020,000793:
056021,000794: 07,3706 34752 RADSTALL CAF TWO
056022,000795: 07,3707 13711 TCF STALL
056023,000796:
![]() |
Page 1320 |
056025,000798: 07,3710 07,3704 OPTSTALL EQUALS AOTSTALL
056026,000799:
056027,000800: 07,3710 34755 IMUSTALL CAF ZERO # IMU.
056028,000801:
056029,000802: 07,3711 00004 STALL INHINT
056030,000803: 07,3712 54071 TS RUPTREG2 # SAVE DEVICE INDEX.
056031,000804: 07,3713 50000 INDEX A # SEE IF OPERATION COMPLETE.
056032,000805: 07,3714 11301 CCS MODECADR
056033,000806: 07,3715 13733 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0.
056034,000807: 07,3716 13727 TCF MODESLP # OPERATION INCOMPLETE.
056035,000808: 07,3717 13723 TCF MODEGOOD # COMPLETE AND GOOD IF = -1.
056036,000809:
056037,000810: 07,3720 50071 MG2 INDEX RUPTREG2 # COMPLETE AND FAILED IF -0. RESET TO +0.
056038,000811: 07,3721 55301 TS MODECADR # RETURN TO CALLER.
056039,000812: 07,3722 12747 TCF MODEEXIT
056040,000813:
056041,000814: 07,3723 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1.
056042,000815: 07,3724 13733 TCF MODABORT
056043,000816:
056044,000817: 07,3725 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND
056045,000818: 07,3726 13720 TCF MG2 # RETURN IMMEDIATELY, SETTING CADR = +0.
056046,000819:
056047,000820: 07,3727 04645 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY.
056048,000821: 07,3730 50071 INDEX RUPTREG2
056049,000822: 07,3731 55301 TS MODECADR
056050,000823: 07,3732 15133 TCF JOBSLEEP
056051,000824:
056052,000825: 07,3733 52134 MODABORT DXCH BUF2
056053,000826: 07,3734 05706 TC BAILOUT1 # TWO PROGRAMS USING THE SAME DEVICE.
056054,000827: 07,3735 31210 OCT 31210
056055,000828:
![]() |
Page 1321 |
056057,000830: # CONSTANTS FOR MODE SWITCHING ROUTINES
056058,000831:
056059,000832: 07,3736 5741 BITS3&4 = OCT14
056060,000833: 07,3736 4771 BITS4&6 = OCT50
056061,000834: 07,3736 00030 BITS4-5 OCT 00030
056062,000835: 07,3737 4744 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7.
056063,000836: 07,3737 77500 -COMMAX DEC -191 B-14
056064,000837: 07,3740 77477 -COMMAX- DEC -192 B-14
056065,000838: 07,3741 00074 600MS DEC 60 B-14
056066,000839: 07,3742 07,3202 IMUFIN20 = IMUFINE
056067,000840: 07,3742 31304 GOMANUR CA ATTCADR # IS KALCMANU FREE
056068,000841: 07,3743 00006 EXTEND
056069,000842: 07,3744 13746 BZF +2
056070,000843: 07,3745 03733 TC MODABORT
056071,000844: 07,3746 00006 +2 EXTEND
056072,000845: 07,3747 30134 DCA BUF2
056073,000846: 07,3750 53305 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3
056074,000847:
056075,000848: 07,3751 30006 CA BBANK
056076,000849: 07,3752 74757 MASK SEVEN
056077,000850: 07,3753 27305 ADS ATTCADR +1
056078,000851:
056079,000852: 07,3754 30167 CA PRIORITY
056080,000853: 07,3755 77730 MASK PRIO37
056081,000854: 07,3756 55306 TS ATTPRIO # SAVE USERS PRIO
056082,000855:
056083,000856: 07,3757 33763 CAF KALEBCON # SET EBANK FOR KALCMAN3
056084,000857: 07,3760 54003 TS EBANK
056085,000858: 07,3761 04635 TC POSTJUMP
056086,000859: 07,3762 44004 CADR KALCMAN3
056087,000860: 07,3763 03276 KALEBCON ECADR BCDU
056088,000861:
![]() |
Page 1322 |
056090,000863: # PROGRAM DESCRIPTION
056091,000864: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY)
056092,000865: # MOD NO - 1
056093,000866: # MOD BY - N.BRODEUR
056094,000867: # FUNCTIONAL DESCRIPTION
056095,000868:
056096,000869: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN
056097,000870: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE
056098,000871: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE
056099,000872: # CMC. CALLED THROUGH BANKCALL
056100,000873: # CALLING SEQUENCE-
056101,000874:
056102,000875: # L TC BANKCALL
056103,000876: # L+1 CADR R02BOTH
056104,000877: # SUBROUTINES CALLED
056105,000878:
056106,000879: # VARALARM
056107,000880: # FLAGUP
056108,000881: # NORMAL EXIT MODES
056109,000882:
056110,000883: # AT L+2 OF CALLING SEQUENCE
056111,000884: # ALARM OR ABORT EXIT MODES
056112,000885: # GOTOPOOH, WITH ALARM
056113,000886: # ERASABLE INITIALIZATION REQUIRED
056114,000887:
056115,000888: # NONE
056116,000889:
056117,000890: # DEBRIS
056118,000891: # CENTRALS-A,Q,L
056119,000892:
056120,000893: 34,3650 BANK 34
056121,000894: 04,2000 SETLOC R02
056122,000895: 04,2000 BANK
056123,000896: 04,3235 COUNT* $$/R02
056124,000897: 04,3235 00063 DEC51 DEC 51 B-14
056125,000898: 04,3236 34737 R02BOTH CAF REFSMBIT
056126,000899: 04,3237 70077 MASK FLAGWRD3
056127,000900: 04,3240 10000 CCS A
056128,000901: 04,3241 03252 TC R02ZERO # ZERO IMUS
056129,000902:
056130,000903: 04,3242 31277 CA IMODES30
056131,000904: 04,3243 74743 MASK BIT9 # IS ISS INITIALIZED
056132,000905: 04,3244 00006 EXTEND
056133,000906: 04,3245 13247 BZF +2
056134,000907: 04,3246 44750 CS BIT4 # SEND IMU ALARM CODE 210
056135,000908: 04,3247 63255 AD OCT220 # SEND REFSMM ALARM
056136,000909: 04,3250 05734 TC VARALARM
056137,000910:
056138,000911: 04,3251 06001 TC GOTOPOOH
056139,000912:
056140,000913: 04,3252 05504 R02ZERO TC UPFLAG
![]() |
Page 1323 |
056142,000915: 04,3253 00007 ADRES IMUSE
056143,000916: 04,3254 14631 TCF SWRETURN
056144,000917: 04,3255 00220 OCT220 OCT 220
056145,000918:
![]() |
Page 1324 |
056147,000920: # PROGRAM DESCRIPTION P06 10 FEB 67
056148,000921:
056149,000922: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION.
056150,000923:
056151,000924: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU
056152,000925: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE
056153,000926: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON.
056154,000927:
056155,000928: # CALLING SEQUENCE:
056156,000929: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E.
056157,000930:
056158,000931: # SUBROUTINES CALLED:
056159,000932: # GOPERF1
056160,000933: # BANKCALL
056161,000934: # FLAGDOWN
056162,000935:
![]() |
Page 1325 |
056164,000937: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2
056165,000938: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATABILITY
056166,000939: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING.
056167,000940:
056168,000941: 37,2000 SETLOC P05P06
056169,000942: 37,2000 BANK
056170,000943:
056171,000944: 37,3652 0314 EBANK= TIME2SAV
056172,000945: 37,3652 COUNT* $$/P06
056173,000946:
056174,000947: 37,3652 05504 P06 TC UPFLAG # SET NODOV37 BIT
056175,000948: 37,3653 00054 ADRES NODOFLAG
056176,000949:
056177,000950: 37,3654 00004 PRESTAND INHINT
056178,000951: 37,3655 00006 EXTEND
056179,000952: 37,3656 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2
056180,000953: 37,3657 52315 DXCH TIME2SAV
056181,000954: 37,3660 03711 TC SCALPREP
056182,000955: 37,3661 03654 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE
056183,000956: 37,3662 52155 DXCH MPAC # T1,T2 AND SCALER OK
056184,000957: 37,3663 52317 DXCH SCALSAVE # STORE SCALER
056185,000958: 37,3664 00004 INHINT
056186,000959: 37,3665 04616 TC BANKCALL
056187,000960: 37,3666 17167 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN
056188,000961:
056189,000962: 37,3667 05516 TC DOWNFLAG
056190,000963: 37,3670 00007 ADRES IMUSE # IMUSE DOWN
056191,000964: 37,3671 05516 TC DOWNFLAG
056192,000965: 37,3672 00010 ADRES RNDVZFLG # RNDVZFLG DOWN
056193,000966:
056194,000967: 37,3673 34741 CAF BIT11
056195,000968: 37,3674 00006 EXTEND
056196,000969: 37,3675 05013 WOR CHAN13 # SET STANDBY ENABLE BIT
056197,000970:
056198,000971: 37,3676 05353 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY
056199,000972: 37,3677 07024 OCT 07024 # RECOVERS
056200,000973: 37,3700 20000 OCT 20000
056201,000974: 37,3701 0316 EBANK= SCALSAVE
056202,000975: 37,3701 03731 76060 2CADR POSTAND
056203,000976:
056204,000977: 37,3703 34774 CAF OCT62
056205,000978: 37,3704 04616 TC BANKCALL
056206,000979: 37,3705 20624 CADR GOPERF1
056207,000980: 37,3706 13703 TCF -3
056208,000981: 37,3707 13703 TCF -4
056209,000982: 37,3710 13703 TCF -5
056210,000983:
056211,000984: 37,3711 4774 OCT62 EQUALS .5SEC # DEC 50 = OCT 62
056212,000985:
056213,000986: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A
![]() |
Page 1326 |
056215,000988: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER
056216,000989: # DATA ARE NOT COMPATABLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE
056217,000990: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES
056218,000991: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE
056219,000992: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM
056220,000993: # T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF
056221,000994: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5
056222,000995: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER
056223,000996: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1.
056224,000997:
056225,000998: 37,3711 00006 SCALPREP EXTEND
056226,000999: 37,3712 22156 QXCH MPAC +2
056227,001000: 37,3713 04103 TC FINETIME +1
056228,001001: 37,3714 00003 RELINT
056229,001002: 37,3715 52155 DXCH MPAC
056230,001003: 37,3716 34747 CA BIT5 # ADD 5 MS TO THE SCALER READING.
056231,001004: 37,3717 54001 TS L
056232,001005: 37,3720 34755 CA ZERO
056233,001006: 37,3721 20155 DAS MPAC
056234,001007: 37,3722 44346 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO
056235,001008: 37,3723 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1.
056236,001009: 37,3724 56155 XCH MPAC +1
056237,001010: 37,3725 74346 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST
056238,001011: # INTERVAL AFTER THE T1 INCREMENT
056239,001012: # (NOW = 00000, SINCE BIT 5 ADDED).
056240,001013: 37,3726 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT
056241,001014: 37,3727 24156 INCR MPAC +2 # NO
056242,001015: 37,3730 00156 TC MPAC +2 # YES
056243,001016:
056244,001017: # POSTAND RECOVERS TIME AFTER STANDBY.THE SCALER IS SNAPSHOTTED AND THE
056245,001018: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE
056246,001019: # INSPECTED TO INSURE COMPATABILITY BETWEEN THE SCALER READING AND THE
056247,001020: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER
056248,001021: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF
056249,001022: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER.
056250,001023:
056251,001024: 37,3731 COUNT* $$/P05
056252,001025:
056253,001026: 37,3731 44741 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY.
056254,001027: 37,3732 00006 EXTEND
056255,001028: 37,3733 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT
056256,001029: 37,3734 00004 INHINT
056257,001030: 37,3735 34755 CA ZERO
056258,001031: 37,3736 54001 TS L
056259,001032: 37,3737 52025 DXCH TIME2 # CLEAR TIME1TIME2
056260,001033: 37,3740 03711 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1
056261,001034: 37,3741 03734 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE
056262,001035: 37,3742 00006 EXTEND # T1,T2 AND SCALER OK
056263,001036: 37,3743 40317 DCS SCALSAVE
056264,001037: 37,3744 20155 DAS MPAC # FORM DP DIFFERENCE OF POSTSTANDBY SCALER
![]() |
Page 1327 |
056266,001039: 37,3745 34742 CAF BIT10 # MINUS PRESTANDBY SCALER AND SHIFT RIGHT
056267,001040: 37,3746 07312 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2.
056268,001041: 37,3747 34755 CAF ZERO
056269,001042: 37,3750 54156 TS MPAC +2 # NEEDED FOR TP AGREE
056270,001043: 37,3751 07262 TC TPAGREE # MAKE DP DIFF AGREE
056271,001044: 37,3752 10154 CCS MPAC
056272,001045: 37,3753 03760 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW
056273,001046: 37,3754 03760 TC POSTCOM # BETWEEN PRE AND POST STANDBY.
056274,001047: 37,3755 03756 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD
056275,001048: 37,3756 34742 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT.
056276,001049: 37,3757 26154 ADS MPAC
056277,001050: 37,3760 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER.
056278,001051: 37,3761 30315 DCA TIME2SAV # PRESTANDBY TIME1TIME2
056279,001052: 37,3762 20155 DAS MPAC
056280,001053: 37,3763 07262 TC TPAGREE # FORCE SIGN AGREEMENT
056281,001054: 37,3764 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2.
056282,001055: 37,3765 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH
056283,001056: 37,3766 05516 TC DOWNFLAG # CLEAR NODOFLAG
056284,001057: 37,3767 00054 ADRES NODOFLAG
056285,001058:
056286,001059: 37,3770 06001 TC GOTOPOOH
056287,001060:
End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc