Source Code
These source-code files are part of a reconstructed copy of Sunrise 69, the
final release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 1003133-18, 1003133-19, 1003133-20, and 1003733-071. Corresponding portions of code have been copied from Solarium 55 where applicable. Extensive use was also made of the AGC Information Series documents, which were specifically written about the Sunrise software. Since only binary dumps (rather than listings) of Sunrise are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
005140,000002: ## Copyright: Public domain.
005141,000003: ## Filename: MODE_SWITCHING_AND_MARK_ROUTINES.agc
005142,000004: ## Purpose: A section of Sunrise 69.
005143,000005: ## It is part of the reconstructed source code for the final
005144,000006: ## release of the Block I Command Module system test software. No
005145,000007: ## original listings of this program are available; instead, this
005146,000008: ## file was created via disassembly of dumps of Sunrise core rope
005147,000009: ## memory modules and comparison with the later Block I program
005148,000010: ## Solarium 55.
005149,000011: ## Assembler: yaYUL --block1
005150,000012: ## Contact: Ron Burkey <info@sandroid.org>.
005151,000013: ## Website: www.ibiblio.org/apollo/index.html
005152,000014: ## Mod history: 2023-06-19 MAS Created from Sunrise 45.
005153,000015:
005154,000016:
005155,000017: # THE FOLLOWING SET OF PROGRAMS ARE USED TO SELECTTHE VARIOUS MODES OF THE IMU AND OPTICS. THE FOLLOWING
005156,000018: # MODES ARE POSSIBLE:
005157,000019:
005158,000020: # IMUZERO ZEROS IMU CDUS.
005159,000021: # IMUCOARS COARSE ALIGNS IMU.
005160,000022: # IMURECOR RETURNS IMU FROM FINE ALIGN TO COARSE ALIGN
005161,000023: # IMUFINE PREPARES TO PULSE TORQUE THE GYROS.
005162,000024: # IMUATTC USE IMU FOR S/C ATTITUDE CONTROL.
005163,000025: # IMUREENT USE IMU FOR ROLL RE-ENTRY.
005164,000026: # IMULOCK LOCKS IMU CDUS.
005165,000027:
005166,000028: # IMUSTALL(*) IMU MODE IDLING AND ERROR CHECKING.
005167,000029:
005168,000030:
005169,000031:
005170,000032: # OPTZERO ZERO OPTICS CDUS.
005171,000033: # OPTCOARS DUMMY OPTICS COARSE-ALIGN MODE.
005172,000034: # OPTTRKON OPTICS TRACKER ON.
005173,000035:
005174,000036: # SCTMARK REQUEST N SCANNING TELESCOPE MARKS.
005175,000037: # SXTMARK REQUEST N SEXTANT MARKS.
005176,000038: # MKRELEAS(**)RELEASE MARK SYSTEM.
005177,000039:
005178,000040: # OPTSTALL(*) OPTICS MODE-IDLING AND ERROR CHECKING.
005179,000041:
005180,000042:
005181,000043:
005182,000044: # OPTICS AND IMU MODE ROUTINES MAY BE USED CONCURRENTLY.
005183,000045:
005184,000046: # IN ADDITION, A ROUTINE WHICH INCREMENTS ANY DESIRED 2S COMPLEMENT ANGLE BY AN INPUT AMOUNT IS
005185,000047: # INCLUDED (CDUINC).
005186,000048:
005187,000049:
005188,000050:
005189,000051: # CALLING SEQUENCE IS AS FOLLOWS:
005190,000052:
005191,000053: # L-1 CAF NO.MARKS (FOR SCTMARK AND SXTMARK ONLY).
005192,000054: # L TC BANKCALL
005193,000055: # L+1 CADR (SUBRO) ANY OF THE 14 MODE ROUTINES OR CDUINC.
005194,000056:
005195,000057:
005196,000058:
005197,000059: # (*) THE STALL ROUTINES ARE CALLED TO TERMINATE ANY MODE REQUEST. THE REQUESTING JOB IS STALLED UNTIL
005198,000060: # THE MODE-SWITCHING IS COMPLETE (WITH VAC-AREA PROTECTED) AND RETURN IS TO L+2 IF UNSUCCESSFUL AND L+3 IF THE
005199,000061: # DESIRED MODE WAS SUCCESSFULLY ACHIEVED.
005200,000062:
005201,000063: # (**) NO STALL ROUTINE NECESSARY IN CONJUNCTION WITH THIS REQUEST.
005202,000064:
005203,000065: 2467 BANK 1
005204,000066:
005205,000067: 2467 32472 KEYRUPT CAF MODEBANK
005206,000068: 2470 30015 XCH BANKREG
005207,000069: 2471 06000 TC KEYRUPTB
005208,000070:
005209,000071: 2472 12110 MODEBANK CADR KEYRUPTA
005210,000072:
005211,000073: # SPECIAL DP TIME COUNTER READING ROUTINE.
005212,000074:
005213,000075: 2473 20017 READTIME INHINT # ENTRY IF UNDER EXECUTIVE.
005214,000076: 2474 40035 CS TIME2 # ENTRY IF IN INTERRUPT.
005215,000077: 2475 50565 TS RUPTSTOR
005216,000078: 2476 40036 CS TIME1
005217,000079: 2477 50566 TS RUPTSTOR +1
005218,000080: 2500 10000 CCS A # IF MINOR PART ZERO, MAJOR PART COULD
005219,000081: 2501 00001 TC Q
005220,000082: 2502 10000 CCS A
005221,000083: 2503 00001 TC Q
005222,000084: 2504 40035 CS TIME2 # UP, SO READ IT AGIN.
005223,000085: 2505 50565 TS RUPTSTOR
005224,000086: 2506 00001 TC Q
005225,000087:
005226,000088: 2507 32515 READIN0 CAF OCT40037
005227,000089: 2510 70643 MASK IN0WORD
005228,000090: 2511 60004 AD IN0
005229,000091: 2512 50643 TS IN0WORD
005230,000092: 2513 00001 TC Q
005231,000093: 2514 00001 TC Q
005232,000094:
005233,000095: 2515 40037 OCT40037 OCT 40037
005234,000096:
005235,000097: # IMU ZEROING ROUTINE.
005236,000098:
005237,000099: 10,7054 BANK 10
005238,000100:
005239,000101: 10,7054 10704 IMUZERO CCS CDUIND
005240,000102: 10,7055 07073 TC MODABORT
005241,000103: 10,7056 07073 TC MODABORT
005242,000104: 10,7057 07073 TC MODABORT
005243,000105: 10,7060 44516 CS ONE # DISABLE CDU DRIVE
005244,000106: 10,7061 50704 TS CDUIND # BY SETTING CDUIND NEGATIVE.
005245,000107:
005246,000108: 10,7062 07273 TC SETKANDC # GO TO SUBROUTINE TO SWITCH C RELAYS
005247,000109: 10,7063 00051 OCT 00051 # = C(DESKSET)=COMP CONT+ZERO+FINE
005248,000110: 10,7064 40011 OCT 40011 # = C SETTING FOR FINE + ZERO
005249,000111: 10,7065 07266 TC ZLITON # TURN ON ENCODER ZEROING LAMP
005250,000112:
005251,000113: 10,7066 37716 CAF 40SECS # SET A WAITLIST CALL FOR 40 SECONDS
005252,000114: 10,7067 02124 TC WAITLIST # SO THOSE SHAFTS WILL HAVE TIME TO GET
005253,000115: 10,7070 21076 CADR IMUZEROD # THERE.
005254,000116: 10,7071 20016 MODEEXIT RELINT # GENERAL EXIT FROM MODE SWITCH PROGS
005255,000117: 10,7072 02544 TC SWRETURN # WHICH LEAVES VIA SWCALL EXIT
005256,000118:
005257,000119: 10,7073 02605 MODABORT TC ALARM
005258,000120: 10,7074 00301 OCT 00301
005259,000121: 10,7075 02115 TC ENDOFJOB
005260,000122:
005261,000123: 10,7076 07306 IMUZEROD TC ZEROICTR # GO AND ZERO X, Y, AND Z COUNTERS
005262,000124:
005263,000125: 10,7077 07711 TC KCHECK # SEE IF SYSTEM STILL FUNCTIONING OK.
005264,000126: 10,7100 07645 TC MOREZERO
005265,000127:
005266,000128: 10,7101 74505 CKCDUFAL MASK BIT10
005267,000129: 10,7102 10000 CCS A
005268,000130: 10,7103 07346 TC GOODEND
005269,000131: 10,7104 47111 CS CDUFBITS
005270,000132: 10,7105 70743 MASK DSPTAB +11D
005271,000133: 10,7106 67111 AD CDUFBITS
005272,000134: 10,7107 50743 TS DSPTAB +11D
005273,000135: 10,7110 07337 TC FAILEND
005274,000136:
005275,000137: 10,7111 40040 CDUFBITS OCT 40040
005276,000138: 10,7112 05670 30SECS DEC 30. E2
005277,000139:
005278,000140: # IMU COARSE ALIGN PROGRAM
005279,000141:
005280,000142: 10,7113 07273 IMUCOARS TC SETKANDC # SET DESIRED C AND K RELAY SETTINGS.
005281,000143: 10,7114 00042 OCT 00042 # COMPUTER CONTROL . COARSE ALIGN.
005282,000144: 10,7115 40002 OCT 40002 # C RELAY COARSE ALIGN.
005283,000145:
005284,000146: 10,7116 07236 TC SETZLIT # SERVICE THE ZERO ENCODER LAMP
005285,000147:
005286,000148: 10,7117 37155 CAF 200MS # SET WAITLIST CALL FOR 200 M.S. TO
005287,000149: 10,7120 02124 TC WAITLIST # ACCOMMODATE CONTACT BOUNCE + T4RUPT LAG
005288,000150: 10,7121 21134 CADR BEGINCOM
005289,000151: 10,7122 07071 TC MODEEXIT
005290,000152:
005291,000153:
005292,000154:
005293,000155: 10,7123 40047 RECOARSD CS CDUX # GOING BACK INTO COARSE ALIGN FROM FINE
005294,000156: 10,7124 40000 COM # ALIGN. PUT CDU COUNTER VALUES INTO
005295,000157: 10,7125 50705 TS THETAD # DESIRED ANGLE REGISTERS AND ENABLE THE
005296,000158: 10,7126 40050 CS CDUY # T4RUPT CDU DRIVE.
005297,000159: 10,7127 40000 COM
005298,000160: 10,7130 50706 TS THETAD +1
005299,000161: 10,7131 40051 CS CDUZ
005300,000162: 10,7132 40000 COM
005301,000163: 10,7133 50707 TS THETAD +2
005302,000164:
005303,000165: 10,7134 10747 BEGINCOM CCS WASKSET # VERIFY CORRECTNESS OF PRESENT MODE.
005304,000166: 10,7135 07141 TC STARTCRS
005305,000167: 10,7136 07316 TC ENDIMU
005306,000168: 10,7137 07141 TC STARTCRS
005307,000169: 10,7140 07316 TC ENDIMU
005308,000170:
005309,000171: 10,7141 35500 STARTCRS CAF ZERO # ENABLE CDU LOOP CLOSURE
005310,000172: 10,7142 50704 TS CDUIND
005311,000173:
005312,000174: 10,7143 37722 CAF 60SECS
005313,000175: 10,7144 02124 TC WAITLIST # CDU LOOPS TO SETTLE
005314,000176: 10,7145 21147 CADR COARSDON
005315,000177: 10,7146 02203 TC TASKOVER
005316,000178:
005317,000179: 10,7147 07316 COARSDON TC ENDIMU
005318,000180: 10,7150 40746 CS OLDERR
005319,000181: 10,7151 74505 MASK BIT10
005320,000182: 10,7152 10000 CCS A
005321,000183: 10,7153 07346 TC GOODEND
005322,000184: 10,7154 07337 TC FAILEND
005323,000185:
005324,000186: 10,7155 00024 200MS DEC 0.2 E2
005325,000187:
005326,000188:
005327,000189: # IMU FINE ALIGN PROGRAM
005328,000190:
005329,000191: 10,7156 07273 IMURECOR TC SETKANDC # GO INTO COARSE ALIGN FROM FINE ALIGN.
005330,000192: 10,7157 00042 OCT 00042 # (SEE REMARKS ON RECOARSD FOR FURTHER
005331,000193: 10,7160 40002 OCT 40002 # DETAILS).
005332,000194: 10,7161 37155 CAF 200MS # USUAL CONTACT CLOSURE AND SAMPLE TIME
005333,000195: 10,7162 02124 TC WAITLIST
005334,000196: 10,7163 21123 CADR RECOARSD
005335,000197: 10,7164 07173 TC DISEXIT # DISABLE GYRO ACTIVITY.
005336,000198:
005337,000199: 10,7165 07273 IMUFINE TC SETKANDC # SET UP C RELAY PATTERN AND DESIRED K
005338,000200: 10,7166 00050 OCT 00050 # DES K = COMPUTER CONTROL + FINE
005339,000201: 10,7167 40010 OCT 40010 # C = FINE ALIGN
005340,000202:
005341,000203: 10,7170 37204 CAF 90SECS # SET WAITLIST CALL FOR 90 SEC. TO ALLOW
005342,000204: 10,7171 02124 TC WAITLIST # GYROS TO RE-CENTER BEFORE IRIG PULSE
005343,000205: 10,7172 21176 CADR IMUFINED # TORQUING
005344,000206: 10,7173 44516 DISEXIT CS ONE # DISABLE T4 IMU (CDU OR GYRO) ACTIVITY.
005345,000207: 10,7174 50704 TS CDUIND
005346,000208: 10,7175 07071 TC MODEEXIT
005347,000209:
005348,000210: 10,7176 07316 IMUFINED TC ENDIMU
005349,000211:
005350,000212: 10,7177 37205 CAF B12+10 # NO IMU FAILS, PLEASE.
005351,000213: 10,7200 70746 MASK OLDERR
005352,000214: 10,7201 10000 CCS A
005353,000215: 10,7202 07337 TC FAILEND
005354,000216: 10,7203 07346 TC GOODEND
005355,000217:
005356,000218: 10,7204 21450 90SECS DEC 90. E2
005357,000219: 10,7205 05000 B12+10 OCT 05000
005358,000220:
005359,000221:
005360,000222: # CDU LOCK PROGRAM
005361,000223:
005362,000224: 10,7206 07273 IMULOCK TC SETKANDC # SET APPROPRIATE K AND C CONFIGS.
005363,000225: 10,7207 00044 OCT 00044
005364,000226: 10,7210 40004 OCT 40004
005365,000227:
005366,000228: 10,7211 37155 CAF 200MS
005367,000229: 10,7212 02124 TC WAITLIST # PLACE.
005368,000230: 10,7213 21215 CADR IMULOCKD
005369,000231: 10,7214 07173 TC DISEXIT
005370,000232:
005371,000233: 10,7215 07316 IMULOCKD TC ENDIMU
005372,000234: 10,7216 07346 TC GOODEND
005373,000235:
005374,000236:
005375,000237: # IMU RE-ENTRY AND ATTITUDE CONTROL PROGRAMS
005376,000238:
005377,000239: 10,7217 07273 IMUREENT TC SETKANDC
005378,000240: 10,7220 00140 OCT 00140
005379,000241: 10,7221 42000 OCT 42000
005380,000242: 10,7222 07226 TC ENABEXIT
005381,000243:
005382,000244:
005383,000245:
005384,000246: 10,7223 07273 IMUATTC TC SETKANDC
005385,000247: 10,7224 00060 OCT 00060
005386,000248: 10,7225 41000 OCT 41000
005387,000249:
005388,000250: 10,7226 37155 ENABEXIT CAF 200MS
005389,000251: 10,7227 02124 TC WAITLIST
005390,000252: 10,7230 21232 CADR ENABLE
005391,000253: 10,7231 07173 TC DISEXIT # DISABLE POSSIBLE GYRO ACTIVITY.
005392,000254:
005393,000255: 10,7232 07316 ENABLE TC ENDIMU
005394,000256:
005395,000257: 10,7233 35500 CAF ZERO # ENABLE CDU LOOPS
005396,000258: 10,7234 50704 TS CDUIND
005397,000259: 10,7235 07346 TC GOODEND
005398,000260: # NOTICE THAT NO INSPECTION OF CDU AND IMU
005399,000261: # ERROR SIGNALS IS MADE SINCE IN THESE
005400,000262: # MODES THE MAIN PROGRAM MUST CHECK THE
005401,000263: # STATUS OF THESE SIGNALS PERIODICALLY.
005402,000264:
005403,000265:
005404,000266: # SETZLIT SETS THE ZERO ENCODER LAMP ACCORDING TO THE DESIRED-MODE REGISTERS DESKSET AND DESOPSET.
005405,000267:
005406,000268: 10,7236 30001 SETZLIT XCH Q
005407,000269: 10,7237 50572 TS ITEMP1
005408,000270:
005409,000271: 10,7240 10751 CCS DESKSET
005410,000272: 10,7241 07245 TC +4 # COMPUTER COMMANDING-MAY BE ZEROING.
005411,000273: 10,7242 07251 TC OPTZTEST # NOT MANUAL ZERO.
005412,000274: 10,7243 07266 TURNONZ TC ZLITON # MANUAL ZEROING MODE.
005413,000275: 10,7244 00572 TC ITEMP1
005414,000276:
005415,000277: 10,7245 64516 +4 AD ONE
005416,000278: 10,7246 74516 MASK BIT1
005417,000279: 10,7247 10000 CCS A
005418,000280: 10,7250 07243 TC TURNONZ # COMPUTER COMMANDING ZERO-ENCODER
005419,000281:
005420,000282: 10,7251 10752 OPTZTEST CCS DESOPSET
005421,000283: 10,7252 07255 TC +3 # MAY BE COMMANDING OPTICS ZERO.
005422,000284: 10,7253 07261 TC ZLITOFF # NOT MANUAL ZERO-TURN LIGHT OFF.
005423,000285: 10,7254 07243 TC TURNONZ # MANUAL OPTICS
005424,000286:
005425,000287: 10,7255 64516 +3 AD ONE
005426,000288: 10,7256 74503 MASK BIT12
005427,000289: 10,7257 10000 CCS A
005428,000290: 10,7260 07243 TC TURNONZ
005429,000291:
005430,000292: 10,7261 45067 ZLITOFF CS ZLITBITS # TURN OFF ZERO ENCODER LAMP.
005431,000293: 10,7262 70743 MASK DSPTAB +11D
005432,000294: 10,7263 64500 AD BIT15
005433,000295: 10,7264 50743 TS DSPTAB +11D
005434,000296: 10,7265 00572 TC ITEMP1
005435,000297:
005436,000298: 10,7266 45067 ZLITON CS ZLITBITS # TURN ON ZERO-ENCODER LAMP.
005437,000299: 10,7267 70743 MASK DSPTAB +11D
005438,000300: 10,7270 65067 AD ZLITBITS
005439,000301: 10,7271 50743 TS DSPTAB +11D
005440,000302: 10,7272 00001 TC Q
005441,000303:
005442,000304: 10,7273 5067 ZLITBITS EQUALS OCT40020 # CS CYR IN DMP.
005443,000305:
005444,000306:
005445,000307: # SUBROUTINE USED BY MODE-SWITCHING PROGRAMS TO SET DESIRED K- AND C-RELAY SETTINGS.
005446,000308:
005447,000309: 10,7273 20017 SETKANDC INHINT # INHINT AND EXIT WITH INTERRUPT INHIBITED
005448,000310: 10,7274 20001 INDEX Q
005449,000311: 10,7275 30000 CAF 0
005450,000312: 10,7276 50751 TS DESKSET # DESIRED K-RELAY SETTING AS READ IN IN3.
005451,000313:
005452,000314: 10,7277 36433 CAF OFFMASK # SET C-RELAYS FOR ZERO ENCODER, COARSE
005453,000315: 10,7300 70743 MASK DSPTAB +11D # ALIGN, FINE ALIGN, LOCK CDU, ROLL
005454,000316: 10,7301 20001 INDEX Q # RE-ENTRY, AND ATTITUDE CONTROL LAMP.
005455,000317: 10,7302 60001 AD 1
005456,000318: 10,7303 50743 TS DSPTAB +11D
005457,000319:
005458,000320: 10,7304 20001 INDEX Q
005459,000321: 10,7305 00002 TC 2 # RETURN TO CALLER IN INHINT.
005460,000322:
005461,000323:
005462,000324: # SUBROUTINE TO ZERO IMU CDU COUNTERS.
005463,000325:
005464,000326: 10,7306 35500 ZEROICTR CAF ZERO # USED BY AUTOMATIC AND MANUAL ZEROING
005465,000327: 10,7307 50047 TS CDUX # ROUTINES.
005466,000328: 10,7310 50050 TS CDUY
005467,000329: 10,7311 50051 TS CDUZ
005468,000330: 10,7312 00001 TC Q
005469,000331:
005470,000332:
005471,000333: # WHEN A MODE-SWITCHING TASK IS DISPATCHED TO INDICATE THE END OF A MODE-SWITCH, ENDIMU (OR ENDOPT) IS
005472,000334: # CALLED TO WAKE UP ANY JOB IMUSTALL (OPTSTALL) MIGHT HAVE PUT TO SLEEP AND THEN CHECK WASKSET (WASOPSET) TO SEE
005473,000335: # THAT THE MODE-SWITCH WAS SUCCESSFUL.
005474,000336:
005475,000337: 10,7313 35502 ENDOPT CAF TWO
005476,000338: 10,7314 64476 AD POSMAX
005477,000339: 10,7315 50034 TS OVCTR # SKIP WITH C(A) = 1.
005478,000340:
005479,000341: 10,7316 35500 ENDIMU CAF ZERO
005480,000342: 10,7317 50601 TS RUPTREG2 # 0 FOR IMU, 1 FOR OPTICS.
005481,000343:
005482,000344: 10,7320 30001 XCH Q
005483,000345: 10,7321 50600 TS RUPTREG1
005484,000346:
005485,000347: 10,7322 20601 INDEX RUPTREG2
005486,000348: 10,7323 10753 CCS MODECADR # SEE IF IMUSTALL (OPTSTALL) PUT A JOB
005487,000349: 10,7324 07326 TC +2 # TO SLEEP.
005488,000350: 10,7325 07332 TC ENDMODE # +0 IF NOT.
005489,000351: 10,7326 34516 CAF ONE # SET PROPER MODECADR TO 1 TO INDICATE
005490,000352: 10,7327 20601 INDEX RUPTREG2 # A JOB WAS AWAKENED.
005491,000353: 10,7330 30753 XCH MODECADR
005492,000354: 10,7331 02051 TC JOBWAKE
005493,000355:
005494,000356: 10,7332 20601 ENDMODE INDEX RUPTREG2 # CHECK PROPER *WAS* REGISTER TO SEE IF
005495,000357: 10,7333 10747 CCS WASKSET # SWITCH WAS SUCCESSFUL.
005496,000358: 10,7334 00600 TC RUPTREG1 # YES - RETURN FOR MORE CHECKING IF OK.
005497,000359: 10,7335 07337 TC +2 # FAILED - STILL WAITING TO SWITCH.
005498,000360: 10,7336 00600 TC RUPTREG1 # MANUAL INHIBIT.
005499,000361:
005500,000362: 10,7337 20601 FAILEND INDEX RUPTREG2 # COMES HERE TO SIGNAL ERROR RETURN FROM
005501,000363: 10,7340 10753 CCS MODECADR # MODE STALL ROUTINES.
005502,000364: 10,7341 07343 TC +2 # JOB WAS WAKENED EARLIER - EXIT W/O INCR.
005503,000365: 10,7342 40000 COM # NO WAKE-UP - SET MODECADR TO -0 FOR FAIL
005504,000366: 10,7343 20601 LVENDMOD INDEX RUPTREG2
005505,000367: 10,7344 50753 TS MODECADR
005506,000368: 10,7345 02203 TC TASKOVER
005507,000369:
005508,000370: 10,7346 20601 GOODEND INDEX RUPTREG2 # COMES HERE TO SIGNAL A SUCCESSFUL SWITCH
005509,000371: 10,7347 10753 CCS MODECADR
005510,000372: 10,7350 07353 TC BUMPJOB # JOB WAS AWAKENED - INCREMENT LOC.
005511,000373: 10,7351 44516 CS ONE # NO WAKE - SET MODECADR TO -1 TO INDICATE
005512,000374: 10,7352 07343 TC LVENDMOD # SUCCESS.
005513,000375:
005514,000376: 10,7353 20574 BUMPJOB INDEX LOCCTR # ARRIVES WITH C(A) = 0. LOCCTR SET TO
005515,000377: 10,7354 30117 XCH LOC # AWAKENED JOB REGISTERS.
005516,000378: 10,7355 64335 AD MINUS1 # LOC IS NEGATIVE FOR BASIC JOBS.
005517,000379: 10,7356 20574 INDEX LOCCTR
005518,000380: 10,7357 30117 XCH LOC
005519,000381: 10,7360 07343 TC LVENDMOD # SET MODECADR TO +0 AND EXIT.
005520,000382:
005521,000383: # THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN ADDRWD BY THE
005522,000384: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S
005523,000385: # COMPLEMENT (+0 UNEQUAL TO -0) QUANTITY.
005524,000386:
005525,000387: 10,7361 20076 CDUINC INDEX BUF
005526,000388: 10,7362 10000 CCS 0 # THE 16TH BIT OF A WILL BE USED TO
005527,000389: 10,7363 64516 AD ONE # ACHIEVE THE REQUIRED 32,768 DISTINCT
005528,000390: 10,7364 07370 TC +4 # STATES.
005529,000391:
005530,000392: 10,7365 64516 AD ONE
005531,000393: 10,7366 64516 AD ONE # A MAY HAVE OVERFLOW PRESENT HERE.
005532,000394: 10,7367 40000 COM # DESIRED -1 IF DESIRED WAS NEGATIVE.
005533,000395:
005534,000396: 10,7370 60101 +4 AD TEM2 # AND MAYBE OVERFLOW SOME MORE.
005535,000397: 10,7371 10000 CCS A # BACK TO 2S COMPLEMENT.
005536,000398: 10,7372 64516 AD ONE # NOTE THAT CCS TREATS A AS A 16 BIT NO.
005537,000399: 10,7373 07375 TC +2
005538,000400: 10,7374 40000 COM
005539,000401: 10,7375 50001 TS Q # REVERTS -0 TO +0.
005540,000402: 10,7376 07402 TC +4 # NO OVERFLOW - PLANT NEW DESIRED.
005541,000403:
005542,000404: 10,7377 20000 INDEX A # OVERFLOW - SIMULATE UN-CORRECTED SIGN.
005543,000405: 10,7400 34500 CAF LIMITS +1 # 37777 FOR NEGATIVE - 40000 IF PLUS.
005544,000406: 10,7401 60001 AD Q # OVERFLOW-CORRECTED DIFFERENCE.
005545,000407:
005546,000408: 10,7402 20076 +4 INDEX BUF
005547,000409: 10,7403 50000 TS 0 # NEW ANGLE.
005548,000410:
005549,000411: 10,7404 02544 TC SWRETURN # RETURN TO CALLER.
005550,000412:
005551,000413:
005552,000414: 10,7405 07313 REJEND TC ENDOPT
005553,000415: 10,7406 07346 TC GOODEND
005554,000416: 10,7407 02115 TC ENDOFJOB
005555,000417:
005556,000418:
005557,000419: # WHEN A JOB WHICH REQUESTED A MODE SWITCH MUST IDLE UNTIL THE SWITCH IS COMPLETE, IT COMES TO IMUSTALL
005558,000420: # (OR OPTSTALL) TO WAIT FOR THE COMPLETION AND TO DO ERROR CHECKING. RETURN IS TO THE LOCATION IMMEDIATELY FOLLOW-
005559,000421: # ING THE CALLING SEQUENCE IF THE SWITCH WAS UNSUCCESSFUL, AND THE NEXT LOCATION IF IT WAS SUCCESSFUL. ANY
005560,000422: # IDLING IS DONE BY PUTTING THE JOB TO SLEEP, SO THAT A VAC AREA (IF USED) WOULD BE PRESERVED.
005561,000423:
005562,000424: 10,7410 34516 OPTSTALL CAF ONE # 0 FOR IMU AND 1 FOR OPTICS AS USUAL.
005563,000425: 10,7411 07413 TC +2
005564,000426:
005565,000427: 10,7412 35500 IMUSTALL CAF ZERO
005566,000428: 10,7413 20017 INHINT # ONE SUB-SYSTEM AT A TIME ONLY.
005567,000429: 10,7414 50601 TS RUPTREG2
005568,000430: 10,7415 20000 INDEX A
005569,000431: 10,7416 10753 CCS MODECADR # SEE IF MODE SWITCH IS COMPLETE.
005570,000432: 10,7417 07073 TC MODABORT # VERY ILL IF SOMEONE ALREADY WAITING.
005571,000433: 10,7420 07433 TC MODESLP # MODE SWITCH INCOMPLETE - PUT JOB TO REST
005572,000434: 10,7421 07425 TC MODEGOOD # -1 INDICATES A SUCCESSFULLY COMPLETED SW
005573,000435:
005574,000436: 10,7422 20601 MG2 INDEX RUPTREG2 # -0 MEANS FINISHED BUT FAILED.
005575,000437: 10,7423 50753 TS MODECADR # RESET TO +0.
005576,000438: 10,7424 07071 TC MODEEXIT # RELINT AND RETURN VIA SWCALL.
005577,000439:
005578,000440: 10,7425 10000 MODEGOOD CCS A # SEE THAT MODECADR WAS INDEED -1.
005579,000441: 10,7426 07073 TC MODABORT # VERY ILL IF SOMEONE ALREADY WAITING.
005580,000442: 10,7427 30070 XCH TEMQS # INCREMENT RETURN TO INDICATE SUCCESS.
005581,000443: 10,7430 64516 AD ONE
005582,000444: 10,7431 30070 XCH TEMQS # BRING +0 BACK
005583,000445: 10,7432 07422 TC MG2 # TO RESET MODECADR AND EXIT.
005584,000446:
005585,000447: 10,7433 02550 MODESLP TC MAKECADR # MAKE CADR FROM SWCALL RETUN ADDRESS.
005586,000448: 10,7434 30061 XCH ADDRWD
005587,000449: 10,7435 20601 INDEX RUPTREG2
005588,000450: 10,7436 50753 TS MODECADR
005589,000451: 10,7437 02120 TC JOBSLEEP
005590,000452:
005591,000453: 10,7440 ENDSTALL EQUALS
005592,000454:
005593,000455:
005594,000456: 10,7440 35500 IMUPULSE CAF ZERO
005595,000457: 10,7441 50116 TS MPAC +2
005596,000458: 10,7442 02550 TC MAKECADR
005597,000459: 10,7443 30061 XCH ADDRWD
005598,000460: 10,7444 50076 TS BUF
005599,000461:
005600,000462: 10,7445 35501 CAF FOUR
005601,000463: 10,7446 50077 PULSLOOP TS BUF +1
005602,000464: 10,7447 20000 INDEX A
005603,000465: 10,7450 30716 XCH GYROD +1
005604,000466: 10,7451 50115 TS MPAC +1
005605,000467: 10,7452 20077 INDEX BUF +1
005606,000468: 10,7453 30715 XCH GYROD
005607,000469: 10,7454 50114 TS MPAC
005608,000470:
005609,000471: 10,7455 02516 TC BANKCALL
005610,000472: 10,7456 07132 CADR TPAGREE
005611,000473:
005612,000474: 10,7457 10000 CCS A
005613,000475: 10,7460 07461 TC +1
005614,000476: 10,7461 35501 CAF FOUR
005615,000477: 10,7462 64340 AD MINUS2
005616,000478: 10,7463 60115 AD MPAC +1
005617,000479: 10,7464 60114 AD MPAC
005618,000480:
005619,000481: 10,7465 20077 INDEX BUF +1
005620,000482: 10,7466 50716 TS GYROD +1
005621,000483:
005622,000484: 10,7467 35500 CAF ZERO
005623,000485: 10,7470 60114 AD MPAC
005624,000486: 10,7471 20077 INDEX BUF +1
005625,000487: 10,7472 30715 XCH GYROD
005626,000488:
005627,000489: 10,7473 44516 CS ONE
005628,000490: 10,7474 60077 AD BUF +1
005629,000491: 10,7475 10000 CCS A
005630,000492: 10,7476 07446 TC PULSLOOP
005631,000493: 10,7477 01001 FULLDT DEC 5.13 E2
005632,000494: 10,7500 44473 CS THREE # INITIALIZE CDUIND TO START GYRO TASKS
005633,000495: 10,7501 50704 TS CDUIND # AT Y GYRO (ORDER IS YZX).
005634,000496:
005635,000497: 10,7502 20017 INHINT
005636,000498: 10,7503 34516 CAF ONE
005637,000499: 10,7504 02124 TC WAITLIST
005638,000500: 10,7505 21525 CADR DOGYRO
005639,000501: 10,7506 20016 RELINT
005640,000502:
005641,000503: 10,7507 30076 XCH BUF
005642,000504: 10,7510 02566 TC BANKJUMP
005643,000505:
005644,000506: # WAITLIST TASKS TO SEND OUT DP PULSE TRAINS TO THE GYROS.
005645,000507:
005646,000508: 10,7511 07635 TWEAKGY TC SETUPSUB # FINISHED WITH POSITIVE TRAINS TO A GYRO.
005647,000509: 10,7512 45502 CS TWO # SEND OUT 2- TO LEAVE GYRO IN - STATE.
005648,000510: 10,7513 06316 TC OUT2SUB
005649,000511:
005650,000512: 10,7514 40704 GYROADV CS CDUIND # ADVANCE TO THE NEXT GYRO IN ORDER YZX.
005651,000513: 10,7515 74717 MASK LOW7 # BIT14 IS 1 IF 2+ PULSES HAD BEEN SENT
005652,000514: 10,7516 20000 INDEX A # BEFORE A NEGATIVE COMMAND.
005653,000515: 10,7517 07516 TC -1
005654,000516: 10,7520 07176 TC IMUFINED
005655,000517: 10,7521 34475 CAF SIX
005656,000518: 10,7522 64340 AD NEG2 # (CAME HERE FROM TC WITH C(A)=4.)
005657,000519: 10,7523 40000 COM
005658,000520: 10,7524 50704 TS CDUIND
005659,000521:
005660,000522: 10,7525 07635 DOGYRO TC SETUPSUB # SERVICE GYRO WHOSE *NUMBER* IS IN CDUIND
005661,000523: 10,7526 20602 INDEX RUPTREG3
005662,000524: 10,7527 10711 CCS GYROD -4 # MAJOR PART IS POSMAX COUNT.
005663,000525: 10,7530 07541 TC DOPOSMAX # PUT OUT POSMAX.
005664,000526: 10,7531 07533 TC DOMINOR
005665,000527: 10,7532 07551 TC DONEGMAX
005666,000528:
005667,000529: 10,7533 20602 DOMINOR INDEX RUPTREG3 # SEND OUT REMAINDER OF COMMAND.
005668,000530: 10,7534 10712 CCS GYROD -3
005669,000531: 10,7535 07574 TC POSGOUT
005670,000532: 10,7536 07512 TC TWEAKGY +1 # FINISHED WITH LONG . PULSE TRAIN.
005671,000533: 10,7537 07604 TC NEGGOUT
005672,000534: 10,7540 07514 TC GYROADV # DONE WITH LONG - TRAIN OR ZERO INPUT.
005673,000535:
005674,000536: 10,7541 20602 DOPOSMAX INDEX RUPTREG3 # PUT AWAY DECREMENTED POSMAX COUNT.
005675,000537: 10,7542 50711 TS GYROD -4
005676,000538: 10,7543 34476 CAF POSMAX
005677,000539: 10,7544 06316 DOMAX TC OUT2SUB
005678,000540: 10,7545 37477 CAF FULLDT
005679,000541:
005680,000542: 10,7546 02124 GYROWAIT TC WAITLIST
005681,000543: 10,7547 21525 CADR DOGYRO
005682,000544: 10,7550 02203 TC TASKOVER
005683,000545:
005684,000546: 10,7551 40000 DONEGMAX COM
005685,000547: 10,7552 20602 INDEX RUPTREG3
005686,000548: 10,7553 50711 TS GYROD -4 # DECREMENTED POSMAX (NEGMAX) COUNT.
005687,000549: 10,7554 40704 CS CDUIND # SEE IF 2+ PULSES HAVE BEEN PUT OUT YET,
005688,000550: 10,7555 74517 MASK NEG1/2 # LEAVING WORD THAT THEY WILL BE OUT
005689,000551: 10,7556 64501 AD BIT14 # BY TASKOVER TIME.
005690,000552: 10,7557 40000 COM
005691,000553: 10,7560 30704 XCH CDUIND
005692,000554: 10,7561 74501 MASK BIT14
005693,000555: 10,7562 10000 CCS A
005694,000556: 10,7563 07565 TC +2
005695,000557: 10,7564 07572 TC NEGMAX2 # ALREADY OUT.
005696,000558:
005697,000559: 10,7565 35502 CAF TWO # NOT OUT YET - DO SO.
005698,000560: 10,7566 06316 TC OUT2SUB
005699,000561: 10,7567 35502 CAF TWO # WAIT FOR THEM TO GET OUT BEFORE DELIVER-
005700,000562: 10,7570 10000 CCS A # ING THE REAL COMMAND.
005701,000563: 10,7571 07570 TC -1
005702,000564:
005703,000565: 10,7572 44476 NEGMAX2 CS POSMAX
005704,000566: 10,7573 07544 TC DOMAX
005705,000567:
005706,000568: 10,7574 64516 POSGOUT AD ONE # FRACTIONAL POSITIVE COMMAND.
005707,000569: 10,7575 50034 TS OVCTR
005708,000570: 10,7576 06316 TC OUT2SUB # DELIVER COMMAND.
005709,000571: 10,7577 07623 TC GETDT # GET TIME TO END OF PULSE TRAIN.
005710,000572: 10,7600 30577 XCH LPRUPT # (ANSWER LEFT IN LPRUPT).
005711,000573: 10,7601 02124 TC WAITLIST
005712,000574: 10,7602 21511 CADR TWEAKGY # SUPPLY 2- PULSES AT END.
005713,000575: 10,7603 02203 TC TASKOVER
005714,000576:
005715,000577: 10,7604 64516 NEGGOUT AD ONE # FRACTIONAL NEGATIVE COMMAND.
005716,000578: 10,7605 50034 TS OVCTR
005717,000579: 10,7606 40704 CS CDUIND # SEE IF 2+ PULSES ALREADY OUT.
005718,000580: 10,7607 74501 MASK BIT14
005719,000581: 10,7610 10000 CCS A
005720,000582: 10,7611 07614 TC NEGGOUT2
005721,000583:
005722,000584: 10,7612 35502 CAF TWO
005723,000585: 10,7613 06316 TC OUT2SUB
005724,000586:
005725,000587: 10,7614 07623 NEGGOUT2 TC GETDT
005726,000588: 10,7615 40034 CS OVCTR # DELIVER COMMAND.
005727,000589: 10,7616 06316 TC OUT2SUB
005728,000590: 10,7617 30577 XCH LPRUPT # GET WAITLIST DT LEFT BY GETDT .
005729,000591: 10,7620 02124 TC WAITLIST
005730,000592: 10,7621 21514 CADR GYROADV
005731,000593: 10,7622 02203 TC TASKOVER
005732,000594:
005733,000595: # SUBROUTINES USED BY TASKS.
005734,000596:
005735,000597: 10,7623 30003 GETDT XCH LP # COMPUTE NUMBER OF 10 MS TICKS IT WILL
005736,000598: 10,7624 50577 TS LPRUPT # TAKE THE PULSE TRAIN WHOSE MAGNITUDE IS
005737,000599: 10,7625 34505 CAF BIT10 # IN OVCTR TO BE DELIVERED AT A RATE OF
005738,000600: 10,7626 25777 EXTEND # 3200 PPS.
005739,000601: 10,7627 40034 MP OVCTR
005740,000602: 10,7630 65502 AD TWO # INTERRUPT AND ROUND-OFF UNCERTAINTIES.
005741,000603: 10,7631 30577 XCH LPRUPT # LEAVE ANSWER IN LPRUPT.
005742,000604: 10,7632 25777 EXTEND
005743,000605: 10,7633 44516 MP ONE
005744,000606: 10,7634 00001 TC Q
005745,000607:
005746,000608:
005747,000609:
005748,000610: 10,7635 35500 SETUPSUB CAF ZERO # SETS UP MISCELLANEOUS REGISTERS.
005749,000611: 10,7636 50601 TS RUPTREG2 # USED BY OUT2SUB.
005750,000612: 10,7637 40704 CS CDUIND
005751,000613: 10,7640 74717 MASK LOW7 # KILL 2+ BIT.
005752,000614: 10,7641 50600 TS RUPTREG1
005753,000615: 10,7642 60000 DOUBLE
005754,000616: 10,7643 50602 TS RUPTREG3 # USED FOR INDEXING GYROD SET.
005755,000617: 10,7644 00001 TC Q
005756,000618:
005757,000619:
005758,000620: 10,7645 07274 MOREZERO TC SETKANDC +1 # CALL FOR 10 SECONDS OF FINE ALIGN TO
005759,000621: 10,7646 00050 OCT 00050 # ALLOW CDUS TO GO AT LEAST 90 DEGREES
005760,000622: 10,7647 40010 OCT 40010 # OF THE WAY HOME UNLESS THE PLATFORM IS
005761,000623: 10,7650 37720 CAF 10SECS # SITTING AT ANY FALSE NULLS.
005762,000624: 10,7651 02124 TC WAITLIST
005763,000625: 10,7652 21654 CADR ZEROATTC # WE WILL GO INTO ATTITUTE CONTROL NEXT.
005764,000626: 10,7653 02203 TC TASKOVER
005765,000627:
005766,000628: 10,7654 07711 ZEROATTC TC KCHECK # USUAL SYSTEM CHECK.
005767,000629: 10,7655 07274 TC SETKANDC +1 # COMMAND ATTITUDE CONTROL (WITHOUT ATTC
005768,000630: 10,7656 00060 OCT 00060 # LAMP LIT) SO THAT WE CAN DRIVE THE CDUS
005769,000631: 10,7657 41000 OCT 41000 # (LIGHT ON AFTER ALL) AWAY FROM FALSE NUL
005770,000632: 10,7660 37155 CAF 200MS
005771,000633: 10,7661 02124 TC WAITLIST
005772,000634: 10,7662 21664 CADR ZERODRVE # WAIT FOR MODE SWITCH BEFORE ENABLING CDU
005773,000635: 10,7663 02203 TC TASKOVER # DRIVE IN T4RUPT.
005774,000636:
005775,000637: 10,7664 07711 ZERODRVE TC KCHECK # VERIFY SWITCH TO ATTITUDE CONTROL.
005776,000638: 10,7665 07740 TC BLIVOT # WE WILL DRIVE THE CDUS TOWARD 45 DEGREES
005777,000639: 10,7666 50705 TS THETAD # FOR 2SECS (ABOUT 10 DEGREES OF MOVEMENT
005778,000640: 10,7667 50706 TS THETAD +1 # AT MOST). THIS WILL DRIVE ANY CDUS OFF
005779,000641: 10,7670 50707 TS THETAD +2 # FALSE NULLS WITHOUT MOVING THE PLATFORM
005780,000642: 10,7671 35500 CAF ZERO
005781,000643: 10,7672 50704 TS CDUIND # CDU LOOPS ARE NOW ENABLED.
005782,000644: 10,7673 37721 CAF 2SECS
005783,000645: 10,7674 02124 TC WAITLIST
005784,000646: 10,7675 21677 CADR REZFINE # GO BACK TO FINE ALIGN WHEN DONE.
005785,000647: 10,7676 02203 TC TASKOVER
005786,000648:
005787,000649: 10,7677 07711 REZFINE TC KCHECK # VERIFY MODE SWITCH AS USUAL.
005788,000650: 10,7700 07274 TC SETKANDC +1 # CALL FOR 20 SECONDS OF FINE ALIGN TO
005789,000651: 10,7701 00050 OCT 00050 # ALLOW ENOUGH TIME FOR THE CDUS TO FIND
005790,000652: 10,7702 40010 OCT 40010 # THE GIMBALS.
005791,000653: 10,7703 44516 CS ONE
005792,000654: 10,7704 50704 TS CDUIND # CDU LOOPS NOW DISABLED.
005793,000655: 10,7705 37717 CAF 20SECS
005794,000656: 10,7706 02124 TC WAITLIST
005795,000657: 10,7707 21176 CADR IMUFINED # CHECK FORPRESENCE OF IMU OR CDU FAILS.
005796,000658: 10,7710 07750 TC BLIVOT2
005797,000659:
005798,000660:
005799,000661:
005800,000662: 10,7711 10747 KCHECK CCS WASKSET # RETURN TO CALLER IF SYSTEM OK - SET UP
005801,000663: 10,7712 00001 TC Q # ERROR RETURN AT ENDIMU OTHERWISE.
005802,000664: 10,7713 07316 TC ENDIMU
005803,000665: 10,7714 00001 TC Q
005804,000666: 10,7715 07316 TC ENDIMU
005805,000667:
005806,000668: 10,7716 07640 40SECS DEC 40.00 E2 # TIME FOR IMUCDU ZERO ENCODER.
005807,000669: 10,7717 03720 20SECS DEC 20.00 E2
005808,000670: 10,7720 01750 10SECS DEC 10.00 E2
005809,000671: 10,7721 00310 2SECS DEC 2.00 E2
005810,000672: 10,7722 13560 60SECS DEC 60.00 E2 # TIME FOR IMUCDU COARSE ALIGN.
005811,000673:
005812,000674:
005813,000675: # MARK REQUESTING ROUTINES.
005814,000676:
005815,000677: 05,6000 SETLOC 12000
005816,000678:
005817,000679: 05,6000 06110 KEYRUPTB TC KEYRUPTA # STANDARD LOC, DONT MOVE
005818,000680:
005819,000681: 05,6001 06005 SXTMARK TC MARKCOM
005820,000682: 05,6002 10000 OCT 10000
005821,000683:
005822,000684: 05,6003 06005 SCTMARK TC MARKCOM
005823,000685: 05,6004 00000 OCT 00000
005824,000686:
005825,000687: 05,6005 20017 MARKCOM INHINT
005826,000688: 05,6006 50600 TS RUPTREG1 # NUMBER OF MARKS REQUESTED.
005827,000689:
005828,000690: 05,6007 20001 INDEX Q
005829,000691: 05,6010 30000 CAF 0
005830,000692: 05,6011 50601 TS RUPTREG2
005831,000693:
005832,000694: 05,6012 10755 CCS MARKSTAT # SEE IF MARK BUTTON ALREADY SNATCHED.
005833,000695: 05,6013 06015 TC +2 # YES - ALARM AND END THE STRAY JOB.
005834,000696: 05,6014 06020 TC MARKOK # +0 INDICATES AVAILABLE.
005835,000697:
005836,000698: 05,6015 02605 TC ALARM
005837,000699: 05,6016 00105 OCT 00105
005838,000700: 05,6017 02115 TC ENDOFJOB
005839,000701:
005840,000702: 05,6020 10214 MARKOK CCS VAC1USE # FIND A VAC AREA TO STORE THE MARKS IN.
005841,000703: 05,6021 06034 TC MKVACFND
005842,000704: 05,6022 10270 CCS VAC2USE
005843,000705: 05,6023 06034 TC MKVACFND
005844,000706: 05,6024 10344 CCS VAC3USE
005845,000707: 05,6025 06034 TC MKVACFND
005846,000708: 05,6026 10420 CCS VAC4USE
005847,000709: 05,6027 06034 TC MKVACFND
005848,000710: 05,6030 10474 CCS VAC5USE
005849,000711: 05,6031 06034 TC MKVACFND
005850,000712:
005851,000713: 05,6032 02652 TC ABORT # VAC AREAS ALL OCCUPIED - ABORT.
005852,000714: 05,6033 00104 OCT 00104
005853,000715:
005854,000716: 05,6034 65502 MKVACFND AD TWO # ADDRESS OF VAC.
005855,000717: 05,6035 50755 TS MARKSTAT
005856,000718: 05,6036 20000 INDEX A
005857,000719: 05,6037 50052 TS QPRET # USED TO SHOW NEXT AVAILABLE MARK SLOT.
005858,000720:
005859,000721: 05,6040 35500 CAF ZERO # SHOW VACAREA IS OCCUPIED.
005860,000722: 05,6041 20755 INDEX MARKSTAT
005861,000723: 05,6042 47777 TS 0 -1
005862,000724:
005863,000725: 05,6043 34502 CAF BIT13
005864,000726: 05,6044 25777 EXTEND
005865,000727: 05,6045 40601 MP RUPTREG2
005866,000728: 05,6046 30600 XCH RUPTREG1
005867,000729:
005868,000730: 05,6047 25777 EXTEND # PLACE DESIRED NUMBER OF MARKS IN 12 - 14
005869,000731: 05,6050 44503 MP BIT12
005870,000732: 05,6051 30003 XCH LP
005871,000733: 05,6052 60600 AD RUPTREG1
005872,000734: 05,6053 60755 AD MARKSTAT # JUST CONTAINS LOW 9 BITS OF VAC ADDRESS.
005873,000735: 05,6054 50755 TS MARKSTAT
005874,000736:
005875,000737: 05,6055 10752 CCS DESOPSET
005876,000738: 05,6056 06061 TC SETSXTON
005877,000739: 05,6057 06065 TC MARKEXIT
005878,000740: 05,6060 06065 TC MARKEXIT
005879,000741:
005880,000742: 05,6061 44502 SETSXTON CS BIT13
005881,000743: 05,6062 70752 MASK DESOPSET
005882,000744: 05,6063 60601 AD RUPTREG2
005883,000745: 05,6064 50752 TS DESOPSET
005884,000746:
005885,000747: 05,6065 36072 MARKEXIT CAF MARKPRIO
005886,000748: 05,6066 02043 TC NOVAC
005887,000749: 05,6067 12073 CADR MKPASTE
005888,000750: 05,6070 20016 RELINT
005889,000751: 05,6071 02544 TC SWRETURN
005890,000752:
005891,000753: 05,6072 27000 MARKPRIO OCT 27000
005892,000754:
005893,000755: 05,6073 36101 MKPASTE CAF VB51 # ASSUME USING PROGRAM HAS GRABBED DSP.
005894,000756: 05,6074 02670 TC NVSUB
005895,000757: 05,6075 03040 TC PRENVBSY
005896,000758: 05,6076 02516 TC BANKCALL
005897,000759: 05,6077 50002 CADR FLASHON
005898,000760: 05,6100 02115 TC ENDOFJOB
005899,000761:
005900,000762: 05,6101 05100 VB51 OCT 5100
005901,000763:
005902,000764: # MARK SYSTEM RELEASING ROUTINE.
005903,000765:
005904,000766: 05,6102 35500 MKRELEAS CAF ZERO # SHOW MARK SYSTEM NOW AVAILABLE.
005905,000767: 05,6103 30755 XCH MARKSTAT
005906,000768: 05,6104 10000 CCS A
005907,000769: 05,6105 20000 INDEX A
005908,000770: 05,6106 50000 TS 0
005909,000771:
005910,000772: 05,6107 02544 TC SWRETURN
005911,000773:
005912,000774:
005913,000775: # KEYRUPT LEAD-IN AND MARK/MARK ACCEPT PROGRAMS.
005914,000776:
005915,000777: 05,6110 50575 KEYRUPTA TS BANKRUPT
005916,000778: 05,6111 40053 MARK CS OPTY # PRECISION OPTICS DRIVE - GATHER DATA
005917,000779: 05,6112 50572 TS RUPTSTOR +5 # IMMEDIATELY AND THEN TRANSFER TO VAC.
005918,000780:
005919,000781: 05,6113 40052 CS OPTX # SHAFT OPTICS ENCODER.
005920,000782: 05,6114 50570 TS RUPTSTOR +3
005921,000783:
005922,000784: 05,6115 40050 CS CDUY # READ INNER-MIDDLE-OUTER IMUCDUS.
005923,000785: 05,6116 50567 TS RUPTSTOR +2
005924,000786:
005925,000787: 05,6117 40051 CS CDUZ
005926,000788: 05,6120 50571 TS RUPTSTOR +4
005927,000789:
005928,000790: 05,6121 40047 CS CDUX
005929,000791: 05,6122 50573 TS RUPTSTOR +6
005930,000792:
005931,000793: 05,6123 02474 TC READTIME +1 # SPECIAL DP TIME COUNTER-READING ROUTINE.
005932,000794:
005933,000795: 05,6124 10004 CCS IN0 # SEE IF KEYCODE OR MARK.
005934,000796: 05,6125 64516 AD ONE
005935,000797: 05,6126 06332 TC KEYCALL
005936,000798: 05,6127 06133 TC +4 # IN0 SHOULD NEVER CONTAIN -0.
005937,000799:
005938,000800: 05,6130 10000 CCS A
005939,000801: 05,6131 64516 AD ONE
005940,000802: 05,6132 06332 TC KEYCALL
005941,000803:
005942,000804: 05,6133 30007 XCH IN3 # NOW FIND OUT IF IT WAS A MARK-REJECT.
005943,000805: 05,6134 30007 XCH IN3
005944,000806: 05,6135 74503 MASK BIT12 # OPT ZERO/MARK REJECT BIT.
005945,000807: 05,6136 10000 CCS A
005946,000808: 05,6137 06240 TC MKACCEPT
005947,000809:
005948,000810: 05,6140 10755 CCS MARKSTAT # SEE IF MARKS BEING CALLED FOR.
005949,000811: 05,6141 06165 TC MARK2
005950,000812:
005951,000813: 05,6142 30570 XCH RUPTSTOR +3 # STORE IN OBTAINED MPAC COMPLEMENTED.
005952,000814: 05,6143 50600 TS RUPTREG1 # OPTICS ANGLES AND MINOR PART OF TIME.
005953,000815: 05,6144 30572 XCH RUPTSTOR +5 # -OPTX, -OPTY, AND -TIME1.
005954,000816: 05,6145 50601 TS RUPTREG2
005955,000817: 05,6146 30566 XCH RUPTSTOR +1
005956,000818: 05,6147 50602 TS RUPTREG3
005957,000819:
005958,000820: 05,6150 36330 CAF MKDSPRIO # CALL SPECIAL DISPLAY JOB
005959,000821: 05,6151 02043 TC NOVAC
005960,000822: 05,6152 12307 CADR MARKDISP
005961,000823:
005962,000824: 05,6153 30600 XCH RUPTREG1 # PLANT INFORMATION IN MPAC OF REGISTER
005963,000825: 05,6154 20574 INDEX LOCCTR # SET.
005964,000826: 05,6155 50114 TS MPAC
005965,000827: 05,6156 30601 XCH RUPTREG2
005966,000828: 05,6157 20574 INDEX LOCCTR
005967,000829: 05,6160 50115 TS MPAC +1
005968,000830: 05,6161 30602 XCH RUPTREG3
005969,000831: 05,6162 20574 INDEX LOCCTR
005970,000832: 05,6163 50116 TS MPAC +2
005971,000833:
005972,000834: 05,6164 02211 TC RESUME
005973,000835:
005974,000836:
005975,000837: 05,6165 50601 MARK2 TS RUPTREG2 # SEE IF ANY MORE MARKS CALLED FOR.
005976,000838: 05,6166 66171 AD BIT12BAR
005977,000839: 05,6167 10000 CCS A
005978,000840: 05,6170 06173 TC +3
005979,000841: 05,6171 73777 BIT12BAR OCT -4000
005980,000842: 05,6172 06210 TC BADMARK
005981,000843:
005982,000844: 05,6173 34502 CAF BIT13
005983,000845: 05,6174 70750 MASK WASOPSET
005984,000846: 05,6175 10000 CCS A
005985,000847: 05,6176 34504 CAF BIT11
005986,000848: 05,6177 60755 AD MARKSTAT
005987,000849: 05,6200 74504 MASK BIT11
005988,000850: 05,6201 10000 CCS A
005989,000851: 05,6202 06204 TC +2
005990,000852: 05,6203 06213 TC MARK3
005991,000853:
005992,000854: 05,6204 10750 CCS WASOPSET
005993,000855: 05,6205 06210 TC BADMARK
005994,000856: 05,6206 06210 TC BADMARK
005995,000857: 05,6207 06213 TC MARK3
005996,000858:
005997,000859: 05,6210 02605 BADMARK TC ALARM
005998,000860: 05,6211 00106 OCT 00106
005999,000861: 05,6212 02211 TC RESUME # NO FURTHER ACTION HERE.
006000,000862:
006001,000863: 05,6213 44505 MARK3 CS BIT10 # SET BIT 10 = 1 TO ENABLE MARK
006002,000864: 05,6214 70755 MASK MARKSTAT # REJECT.
006003,000865: 05,6215 64505 AD BIT10
006004,000866: 05,6216 50755 TS MARKSTAT
006005,000867:
006006,000868: 05,6217 74606 MASK LOW9 # SET UP REGISTER TRANSFER LOOP.
006007,000869: 05,6220 20000 INDEX A
006008,000870: 05,6221 40052 CS QPRET # PICK UP MARK SLOT-POINTER.
006009,000871: 05,6222 40000 COM
006010,000872: 05,6223 64475 AD SIX
006011,000873: 05,6224 50600 TS RUPTREG1
006012,000874: 05,6225 34475 CAF SIX # LOOP SEVEN TIMES.
006013,000875:
006014,000876: 05,6226 50601 READLOOP TS RUPTREG2
006015,000877: 05,6227 20000 INDEX A
006016,000878: 05,6230 40565 CS RUPTSTOR
006017,000879: 05,6231 20600 INDEX RUPTREG1
006018,000880: 05,6232 50000 TS 0
006019,000881: 05,6233 10600 CCS RUPTREG1 # ADDRESS NEXT LOCATION IN VAC.
006020,000882: 05,6234 50600 TS RUPTREG1
006021,000883: 05,6235 10601 CCS RUPTREG2
006022,000884: 05,6236 06226 TC READLOOP
006023,000885:
006024,000886: 05,6237 02211 TC RESUME # DONE.
006025,000887:
006026,000888:
006027,000889: 05,6240 10755 MKACCEPT CCS MARKSTAT # SEE IF MARKS BEING ACCEPTED.
006028,000890: 05,6241 06245 TC ACCEPT2
006029,000891: 05,6242 02605 TC ALARM # CURSE IF NOT.
006030,000892: 05,6243 00107 OCT 00107
006031,000893: 05,6244 02203 TC TASKOVER # (UNTIL MK ACCEPT BUTTON AVAILABLE).
006032,000894:
006033,000895: 05,6245 44505 ACCEPT2 CS BIT10 # SEE IF MARK HAD BEEN MADE SINCE LAST
006034,000896: 05,6246 70755 MASK MARKSTAT # MARK REJECT, AND SET BIT 10 TO ZERO TO
006035,000897: 05,6247 30755 XCH MARKSTAT # SHOW MARK REJECT.
006036,000898: 05,6250 74505 MASK BIT10
006037,000899: 05,6251 10000 CCS A
006038,000900: 05,6252 06256 TC ACCEPT3
006039,000901:
006040,000902: 05,6253 02605 TC ALARM # DONT ACCEPT TWO MARK REJECTS TOGETHER.
006041,000903: 05,6254 00110 OCT 00110
006042,000904: 05,6255 02203 TC TASKOVER # (UNTIL MK REJECT BUTTON AVAILABLE).
006043,000905:
006044,000906: 05,6256 34606 ACCEPT3 CAF LOW9 # DECREMENT POINTER TO REJECT MARK.
006045,000907: 05,6257 70755 MASK MARKSTAT
006046,000908: 05,6260 50572 TS ITEMP1
006047,000909: 05,6261 20000 INDEX A
006048,000910: 05,6262 30052 XCH QPRET
006049,000911: 05,6263 65361 AD SEVEN
006050,000912: 05,6264 20572 INDEX ITEMP1
006051,000913: 05,6265 50052 TS QPRET # NEW POINTER.
006052,000914:
006053,000915: 05,6266 44503 CS BIT12 # INCREMENT MARKS-TO-BE-ACCEPTED FIELD
006054,000916: 05,6267 60755 AD MARKSTAT # AND IF FIELD IS NOW NON-ZERO, CHANGE
006055,000917: 05,6270 50755 TS MARKSTAT # DSKY TO VERB 51 FLASHING TO INDICATE
006056,000918: 05,6271 76334 MASK HI4 # MORE MARKS REQUIRED.
006057,000919: 05,6272 10000 CCS A
006058,000920: 05,6273 02203 TC TASKOVER # (UNTIL BUTTON AVAIL.)
006059,000921: 05,6274 34606 CAF LOW9
006060,000922: 05,6275 70755 MASK MARKSTAT
006061,000923: 05,6276 50755 TS MARKSTAT
006062,000924:
006063,000925: 05,6277 36072 CAF MARKPRIO
006064,000926: 05,6300 02043 TC NOVAC
006065,000927: 05,6301 12304 CADR MKFLSHOF
006066,000928:
006067,000929: 05,6302 02563 TC POSTJUMP
006068,000930: 05,6303 21405 CADR REJEND
006069,000931:
006070,000932: 05,6304 02516 MKFLSHOF TC BANKCALL
006071,000933: 05,6305 50005 CADR FLASHOFF
006072,000934: 05,6306 02115 TC ENDOFJOB
006073,000935:
006074,000936: 05,6307 03025 MARKDISP TC GRABDSP # SPECIAL JOB TO DISPLAY UNCALLED-FOR MARK
006075,000937: 05,6310 03033 TC PREGBSY
006076,000938:
006077,000939: 05,6311 40114 REMKDSP CS MPAC # THE MPAC REGISTERS CONTIN -OPTX, -OPTY,
006078,000940: 05,6312 50627 TS DSPTEM1
006079,000941: 05,6313 40115 CS MPAC +1
006080,000942: 05,6314 50630 TS DSPTEM1 +1
006081,000943: 05,6315 40116 CS MPAC +2
006082,000944: 05,6316 50632 TS DSPTEM2
006083,000945: 05,6317 35500 CAF ZERO
006084,000946: 05,6320 50631 TS DSPTEM1 +2
006085,000947:
006086,000948: 05,6321 36327 CAF MKDSPCOD # NOUN-VERB FOR MARK DISPLAY.
006087,000949: 05,6322 02670 TC NVSUB
006088,000950: 05,6323 06325 TC MKDSPBSY # IF BUSY.
006089,000951:
006090,000952: 05,6324 07641 TC ENDMKDSP
006091,000953:
006092,000954: 05,6325 36331 MKDSPBSY CAF LREMKDSP # TAKE DATA OUT OF MPAC WHEN RE-AWAKENED.
006093,000955: 05,6326 03043 TC NVSUBUSY
006094,000956:
006095,000957: 05,6327 00656 MKDSPCOD OCT 00656
006096,000958: 05,6330 15000 MKDSPRIO OCT 15000
006097,000959: 05,6331 12311 LREMKDSP CADR REMKDSP
006098,000960:
006099,000961: 05,6332 02563 KEYCALL TC POSTJUMP # GO TO KEYBOARD/DISPLAY BANK WITH A
006100,000962: 05,6333 10001 CADR KEYRUPTC # GO THRU STANDARD LOC.
006101,000963:
006102,000964: 05,6334 74000 HI4 OCT 74000
006103,000965: 05,6335 37740 OCT37740 OCT 37740
006104,000966:
006105,000967: 05,6336 ENDMARK EQUALS
006106,000968:
006107,000969: 10,7723 BANK 10
006108,000970: 10,7723 44511 CDUFAIL2 CS BIT6 # TURN ON FAIL LIGHT ONLY IF IN FINE ALIGN
006109,000971: 10,7724 70747 MASK WASKSET
006110,000972: 10,7725 67730 AD -BIT4
006111,000973: 10,7726 10000 CCS A
006112,000974: 10,7727 06133 TC ERRSCAN3
006113,000975: 10,7730 77767 -BIT4 OCT -10
006114,000976: 10,7731 06133 TC ERRSCAN3
006115,000977: 10,7732 06165 TC CDUFAIL3 # TURN ON THE LIGHT.
006116,000978:
006117,000979: 10,7740 SETLOC 21740
006118,000980:
006119,000981: 10,7740 30705 BLIVOT XCH THETAD
006120,000982: 10,7741 51650 TS 1650
006121,000983: 10,7742 30706 XCH THETAD +1
006122,000984: 10,7743 51651 TS 1651
006123,000985: 10,7744 30707 XCH THETAD +2
006124,000986: 10,7745 51652 TS 1652
006125,000987: 10,7746 34521 CAF POS1/2
006126,000988: 10,7747 07666 TC ZERODRVE +2
006127,000989:
006128,000990: 10,7750 31650 BLIVOT2 XCH 1650
006129,000991: 10,7751 50705 TS THETAD
006130,000992: 10,7752 31651 XCH 1651
006131,000993: 10,7753 50706 TS THETAD +1
006132,000994: 10,7754 31652 XCH 1652
006133,000995: 10,7755 50707 TS THETAD +2
006134,000996: 10,7756 02203 TC TASKOVER
006135,000997:
006136,000998: 10,7757 40053 BLIVOT3 CS OPTY # IF THE DIFFERENCE OVERFLOWS, THE ERROR
006137,000999: 10,7760 60725 AD DESOPTX +1 # ERROR SIGNAL IS GREATER THAN 16383, SO
006138,001000: 10,7761 50001 TS Q # JUST THROW IN POSMAX WITH THE RIGHT
006139,001001: 10,7762 07765 TC +3 # SIGN AND CALL IT A DAY. OTHERWISE FOLL-
006140,001002:
006141,001003: 10,7763 20000 INDEX A # THE USUAL PROCEDURES.
006142,001004: 10,7764 44477 CS LIMITS
006143,001005: 10,7765 06217 TC OPTOUT
End of include-file MODE_SWITCHING_AND_MARK_ROUTINES.agc. Parent file is MAIN.agc