Source Code
This is a reconstruction of the AGC program Luminary 99 Rev 0. It was the third release
of the Lunar Module flight software targeted for use in Apollo 11, after Luminary 96 and 97.
A bug (which had been around since at least Apollo 10, Luminary 69) was
discovered in Rev 0 shortly before the Apollo 11 flight, resulting in a last minute
revision into Rev 1,
which is what actually flew rather than
the Rev 0 presented here. A hardcopy of Rev 0 is known to
exist — it belonged to AGC developer Allan Klumpp for many years — but
unfortunately the Virtual AGC Project has not had access to that hardcopy. Thus
the code you see here had been reconstructed (we believe accurately) rather than
transcribed. The first step of the reconstruction of the Rev 0 source code was
the transcription of the Rev 1 source code from a hardcopy in the MIT Museum collection.
The process of reverting the active portion of the source code (i.e., other than
program comments) from Rev 1 to Rev 0 was very minor, consisting
only of moving the position of the STARTSB1 label in
FRESH START AND RESTART. Allan had previously given
us the checksums of the memory banks of Rev 0, and we have verified the program presented here has checksums
identical to all banks of Allan's listing of Rev 0. The notations on Allan's Rev 0 program listing read,
in part:GAP: ASSEMBLE REVISION 099 OF AGC PROGRAM LUMINARY BY NASA 2021112-051 A single program comment is known to differ between Rev 0 and Rev 1, but these are harder to reconstruct and verify than changes to the active portion of the code. Thus it is possible that there are additional differences between the program comments in Rev 0 and Rev 1 that are unknown to us, and therefore are not reflected in the code presented here. |
056038,000002: ## Copyright: Public domain.
056039,000003: ## Filename: AGC_BLOCK_TWO_SELF-CHECK.agc
056040,000004: ## Purpose: Part of the reconstructed source code for LMY99 Rev 0,
056041,000005: ## otherwise known as Luminary Rev 99, the third release
056042,000006: ## of the Apollo Guidance Computer (AGC) software for Apollo 11.
056043,000007: ## It differs from LMY99 Rev 1 (the flown version) only in the
056044,000008: ## placement of a single label. The corrections shown here have
056045,000009: ## been verified to have the same bank checksums as AGC developer
056046,000010: ## Allan Klumpp's copy of Luminary Rev 99, and so are believed
056047,000011: ## to be accurate. This file is intended to be a faithful
056048,000012: ## recreation, except that the code format has been changed to
056049,000013: ## conform to the requirements of the yaYUL assembler rather than
056050,000014: ## the original YUL assembler.
056051,000015: ##
056052,000016: ## Assembler: yaYUL
056053,000017: ## Contact: Onno Hommes <ohommes@cmu.edu>.
056054,000018: ## Website: www.ibiblio.org/apollo.
056055,000019: ## Pages: 1284-1293
056056,000020: ## Mod history: 2009-05-27 OH Transcribed from page images.
056057,000021: ## 2016-12-17 RSB Proofed text comments with octopus/ProoferComments
056058,000022: ## and corrected the errors found.
056059,000023: ## 2017-01-28 RSB WTIH -> WITH.
056060,000024: ## 2017-08-01 MAS Created from LMY99 Rev 1.
056061,000025:
056062,000026: ## This source code has been transcribed or otherwise adapted from
056063,000027: ## digitized images of a hardcopy from the MIT Museum. The digitization
056064,000028: ## was performed by Paul Fjeld, and arranged for by Deborah Douglas of
056065,000029: ## the Museum. Many thanks to both. The images (with suitable reduction
056066,000030: ## in storage size and consequent reduction in image quality as well) are
056067,000031: ## available online at www.ibiblio.org/apollo. If for some reason you
056068,000032: ## find that the images are illegible, contact me at info@sandroid.org
056069,000033: ## about getting access to the (much) higher-quality images which Paul
056070,000034: ## actually created.
056071,000035: ##
056072,000036: ## The code has been modified to match LMY99 Revision 0, otherwise
056073,000037: ## known as Luminary Revision 99, the Apollo 11 software release preceeding
056074,000038: ## the listing from which it was transcribed. It has been verified to
056075,000039: ## contain the same bank checksums as AGC developer Allan Klumpp's listing
056076,000040: ## of Luminary Revision 99 (for which we do not have scans).
056077,000041: ##
056078,000042: ## Notations on Allan Klumpp's listing read, in part:
056079,000043: ##
056080,000044: ## ASSEMBLE REVISION 099 OF AGC PROGRAM LUMINARY BY NASA 2021112-51
056081,000045:
Page 1284 |
056083,000047: # PROGRAM DESCRIPTION DATE 20 DECEMBER 1967
056084,000048: # PROGRAM NAME - SELF-CHECK LOG SECTION AGC BLOCK TWO SELF-CHECK
056085,000049: # MOD NO - 1 ASSEMBLY SUBROUTINE UTILITYM REV 25
056086,000050: # MOD BY - GAUNTT
056087,000051:
056088,000052: # FUNCTIONAL DESCRIPTION
056089,000053: # PROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS
056090,000054: # PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN
056091,000055: # STARTING VERB.
056092,000056:
056093,000057: # THE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.
056094,000058:
056095,000059: # THE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK, ONE AT A TIME.
056096,000060:
056097,000061: # IN ALL THERE ARE 7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE
056098,000062: # FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3.
056099,000063:
056100,000064: # THE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS
056101,000065: # A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN
056102,000066: # OCTAL, TO LOAD INTO SMODE.
056103,000067: # +-4 ERASABLE MEMORY
056104,000068: # +-5 FIXED MEMORY
056105,000069: # +-1,2,3,6,7,10 EVERYTHING IN OPTIONS 4 AND 5.
056106,000070: # -0 SAME AS +-10 UNTIL AN ERROR IS DETECTED.
056107,000071: # +0 NO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.
056108,000072:
056109,000073: # WARNINGS
056110,000074: # USE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS.
056111,000075: # SMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP.
056112,000076:
056113,000077: # CALLING SEQUENCE
056114,000078: # TO CALL SELF-CHECK KEY IN
056115,000079: # V 21 N 27 E OPTION NUMBER E
056116,000080: # TO CALL SHOW-BANKSUM KEY IN
056117,000081: # V 91 E DISPLAYS FIRST BANK
056118,000082: # V 33 E PROCEED, DISPLAYS NEXT BANK
056119,000083:
056120,000084: # EXIT MODES, NORMAL AND ALARM
056121,000085: # SELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT
056122,000086: # COMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION.
056123,000087:
056124,000088: # THE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.
056125,000089:
056126,000090: # SHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP
056127,000091:
056128,000092: # OUTPUT
Page 1285 |
056130,000094: # SELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND
056131,000095: # TURNS ON THE ALARM LIGHT. THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E. FOR FURTHER
056132,000096: # INFORMATION HE MAY KEY IN V 05 N 08 E, THE DSKY DISPLAY IN R1 WILL BE ADDRESS+1 OF WHERE THE ERROR WAS DETECTED,
056133,000097: # IN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN
056134,000098: # INITIATED FRESH START (SLAP1).
056135,000099:
056136,000100: # SHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2
056137,000101: # THE BANK NUMBER, AND IN R3 THE BUGGER WORD.
056138,000102:
056139,000103: # ERASABLE INITIALIZATION REQUIRED
056140,000104: # ACCOMPLISHED BY FRESH START
056141,000105: # SMODE SET TO +0
056142,000106:
056143,000107: # DEBRIS
056144,000108: # ALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.
056145,000109: # EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT
056146,000110: # E MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART).
056147,000111:
056148,000112: 25,3770 BANK 25
056149,000113: 43,2000 SETLOC SELFCHEC
056150,000114: 43,2000 BANK
056151,000115:
056152,000116: 43,3232 COUNT* $$/SELF
056153,000117: 43,3232 4753 SBIT1 EQUALS BIT1
056154,000118: 43,3232 4752 SBIT2 EQUALS BIT2
056155,000119: 43,3232 4751 SBIT3 EQUALS BIT3
056156,000120: 43,3232 4750 SBIT4 EQUALS BIT4
056157,000121: 43,3232 4747 SBIT5 EQUALS BIT5
056158,000122: 43,3232 4746 SBIT6 EQUALS BIT6
056159,000123: 43,3232 4745 SBIT7 EQUALS BIT7
056160,000124: 43,3232 4744 SBIT8 EQUALS BIT8
056161,000125: 43,3232 4743 SBIT9 EQUALS BIT9
056162,000126: 43,3232 4742 SBIT10 EQUALS BIT10
056163,000127: 43,3232 4741 SBIT11 EQUALS BIT11
056164,000128: 43,3232 4740 SBIT12 EQUALS BIT12
056165,000129: 43,3232 4737 SBIT13 EQUALS BIT13
056166,000130: 43,3232 4736 SBIT14 EQUALS BIT14
056167,000131: 43,3232 4735 SBIT15 EQUALS BIT15
056168,000132:
056169,000133: 43,3232 4755 S+ZERO EQUALS ZERO
056170,000134: 43,3232 4753 S+1 EQUALS BIT1
056171,000135: 43,3232 4752 S+2 EQUALS BIT2
056172,000136: 43,3232 6245 S+3 EQUALS THREE
056173,000137: 43,3232 4751 S+4 EQUALS FOUR
056174,000138: 43,3232 4756 S+5 EQUALS FIVE
056175,000139: 43,3232 6242 S+6 EQUALS SIX
Page 1286 |
056177,000141: 43,3232 4757 S+7 EQUALS SEVEN
056178,000142: 43,3232 4357 S8BITS EQUALS LOW8 # 00377
056179,000143: 43,3232 4771 CNTRCON = OCT50 # USED IN CNTRCHK
056180,000144: 43,3232 00061 ERASCON1 OCTAL 00061 # USED IN ERASCHK
056181,000145: 43,3233 01373 ERASCON2 OCTAL 01373 # USED IN ERASCHK
056182,000146: 43,3234 5007 ERASCON6 = OCT1400 # USED IN ERASCHK
056183,000147: 43,3234 01461 ERASCON3 OCTAL 01461 # USED IN ERASCHK
056184,000148: 43,3235 01773 ERASCON4 OCTAL 01773 # USED IN ERASCHK
056185,000149: 43,3236 5012 S10BITS EQUALS LOW10 # 01777, USED IN ERASCHK
056186,000150: 43,3236 5020 SBNK03 EQUALS PRIO6 # 06000, USED IN ROPECHK
056187,000151: 43,3236 4350 -MAXADRS = HI5 # FOR ROPECHK
056188,000152: 43,3236 00060 SIXTY OCTAL 00060
056189,000153: 43,3237 60017 SUPRCON OCTAL 60017 # USED IN ROPECHK
056190,000154: 43,3240 17777 S13BITS OCTAL 17777
056191,000155: 43,3241 25252 CONC+S1 OCTAL 25252 # USED IN CYCLSHFT
056192,000156: 43,3242 52400 CONC+S2 OCTAL 52400 # USED IN CYCLSHFT
056193,000157: 43,3243 76777 ERASCON5 OCTAL 76777
056194,000158: 43,3244 5660 S-7 = OCT77770
056195,000159: 43,3244 6112 S-4 EQUALS NEG4
056196,000160: 43,3244 7745 S-3 EQUALS NEG3
056197,000161: 43,3244 7746 S-2 EQUALS NEG2
056198,000162: 43,3244 7747 S-1 EQUALS NEGONE
056199,000163: 43,3244 4754 S-ZERO EQUALS NEG0
056200,000164:
056201,000165: 43,3244 E3,1400 EBANK= LST1
056202,000166: 43,3244 01371 ADRS1 ADRES SKEEP1
056203,000167: 43,3245 03336 SELFADRS ADRES SELFCHK # SELFCHK RETURN ADDRESS. SHOULD BE PUT
056204,000168: # IN SELFRET WHEN GOING FROM SELFCHK TO
056205,000169: # SHOWSUM AND PUT IN SKEEP1 WHEN GOING
056206,000170: # FROM SHOWSUM TO SELF-CHECK.
056207,000171:
056208,000172: 43,3246 31360 PRERRORS CA ERESTORE # IS IT NECESSARY TO RESTORE ERASABLE
056209,000173: 43,3247 00006 EXTEND
056210,000174: 43,3250 13257 BZF ERRORS # NO
056211,000175: 43,3251 00006 EXTEND
056212,000176: 43,3252 31376 DCA SKEEP5
056213,000177: 43,3253 51377 INDEX SKEEP7
056214,000178: 43,3254 52001 DXCH 0000 # RESTORE THE TWO ERASABLE REGISTERS
056215,000179: 43,3255 34755 CA S+ZERO
056216,000180: 43,3256 55360 TS ERESTORE
056217,000181: 43,3257 00004 ERRORS INHINT
056218,000182: 43,3260 30002 CA Q
056219,000183: 43,3261 55357 TS SFAIL # SAVE Q FOR FAILURE LOCATION
056220,000184: 43,3262 55363 TS ALMCADR # FOR DISPLAY WITH BBANK AND ERCOUNT
056221,000185: 43,3263 25365 INCR ERCOUNT # KEEP TRACK OF NUMBER OF MALFUNCTIONS.
056222,000186: 43,3264 05571 TCALARM2 TC ALARM2
056223,000187: 43,3265 01102 OCT 01102 # SELF-CHECK MALFUNCTION INDICATOR
056224,000188: 43,3266 11362 CCS SMODE
056225,000189: 43,3267 34755 SIDLOOP CA S+ZERO
056226,000190: 43,3270 55362 TS SMODE
Page 1287 |
056228,000192: 43,3271 03336 TC SELFCHK # GO TO IDLE LOOP
056229,000193: 43,3272 01357 TC SFAIL # CONTINUE WITH SELF-CHECK
056230,000194:
056231,000195: 43,3273 10000 -1CHK CCS A
056232,000196: 43,3274 13246 TCF PRERRORS
056233,000197: 43,3275 13246 TCF PRERRORS
056234,000198: 43,3276 10000 CCS A
056235,000199: 43,3277 13246 TCF PRERRORS
056236,000200: 43,3300 00002 TC Q
056237,000201:
056238,000202: 43,3301 00006 SMODECHK EXTEND
056239,000203: 43,3302 23371 QXCH SKEEP1
056240,000204: 43,3303 03332 TC CHECKNJ # CHECK FOR NEW JOB
056241,000205: 43,3304 11362 CCS SMODE
056242,000206: 43,3305 03312 TC SOPTIONS
056243,000207: 43,3306 03303 TC SMODECHK +2 # TO BACKUP IDLE LOOP
056244,000208: 43,3307 03312 TC SOPTIONS
056245,000209: 43,3310 25366 INCR SCOUNT
056246,000210: 43,3311 01371 TC SKEEP1 # CONTINUE WITH SELF-CHECK
056247,000211:
056248,000212: 43,3312 65660 SOPTIONS AD S-7
056249,000213: 43,3313 00006 EXTEND
056250,000214: 43,3314 63316 BZMF +2 # FOR OPTIONS BELOW NINE.
056251,000215: 43,3315 03267 BNKOPTN TC SIDLOOP # ILLEGAL OPTION. GO TO IDLE LOOP.
056252,000216: 43,3316 25366 INCR SCOUNT # FOR OPTIONS BELOW NINE.
056253,000217: 43,3317 64757 AD S+7
056254,000218:
056255,000219: 43,3320 50000 INDEX A
056256,000220: 43,3321 03322 TC SOPTION1
056257,000221: 43,3322 01371 SOPTION1 TC SKEEP1 # WAS TC+TCF
056258,000222: 43,3323 01371 SOPTION2 TC SKEEP1 # WAS IN:OUT1
056259,000223: 43,3324 01371 SOPTION3 TC SKEEP1 # WAS COUNTCHK
056260,000224: 43,3325 03337 SOPTION4 TC ERASCHK
056261,000225: 43,3326 03520 SOPTION5 TC ROPECHK
056262,000226: 43,3327 01371 SOPTION6 TC SKEEP1
056263,000227: 43,3330 01371 SOPTION7 TC SKEEP1
056264,000228: 43,3331 01371 SOPTON10 TC SKEEP1 # CONTINUE WITH SELF-CHECK
056265,000229:
056266,000230: 43,3332 00006 CHECKNJ EXTEND
056267,000231: 43,3333 23361 QXCH SELFRET # SAVE RETURN ADDRESS WHILE TESTING NEWJOB
056268,000232: 43,3334 04635 TC POSTJUMP # TO SEE IF ANY JOBS HAVE BECOME ACTIVE.
056269,000233: 43,3335 03214 CADR ADVAN
056270,000234:
056271,000235: 43,3336 03301 SELFCHK TC SMODECHK # ** CHARLEY, COME IN HERE
056272,000236:
056273,000237: # SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.
056274,000238: # SKEEP6 HOLDS B(X+1).
056275,000239: # SKEEP5 HOLDS B(X).
056276,000240: # SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ.
056277,000241: # SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).
Page 1288 |
056279,000243: # SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB.
056280,000244: # ERASCHK TAKES APPROXMATELY 7 SECONDS
056281,000245:
056282,000246: 43,3337 34753 ERASCHK CA S+1
056283,000247: 43,3340 55372 TS SKEEP2
056284,000248: 43,3341 34755 0EBANK CA S+ZERO
056285,000249: 43,3342 54003 TS EBANK
056286,000250: 43,3343 33234 CA ERASCON3 # 01461
056287,000251: 43,3344 55377 TS SKEEP7 # STARTING ADDRESS
056288,000252: 43,3345 35012 CA S10BITS # 01777
056289,000253: 43,3346 55373 TS SKEEP3 # LAST ADDRESS CHECKED
056290,000254: 43,3347 03367 TC ERASLOOP
056291,000255:
056292,000256: 43,3350 35007 E134567B CA ERASCON6 # 01400
056293,000257: 43,3351 55377 TS SKEEP7 # STARTING ADDRESS
056294,000258: 43,3352 35012 CA S10BITS # 01777
056295,000259: 43,3353 55373 TS SKEEP3 # LAST ADDRESS CHECKED
056296,000260: 43,3354 03367 TC ERASLOOP
056297,000261:
056298,000262: 43,3355 35007 2EBANK CA ERASCON6 # 01400
056299,000263: 43,3356 55377 TS SKEEP7 # STARTING ADDRESS
056300,000264: 43,3357 33235 CA ERASCON4 # 01773
056301,000265: 43,3360 55373 TS SKEEP3 # LAST ADDRESS CHECKED
056302,000266: 43,3361 03367 TC ERASLOOP
056303,000267:
056304,000268: 43,3362 55372 NOEBANK TS SKEEP2 # +0
056305,000269: 43,3363 33232 CA ERASCON1 # 00061
056306,000270: 43,3364 55377 TS SKEEP7 # STARTING ADDRESS
056307,000271: 43,3365 33233 CA ERASCON2 # 01373
056308,000272: 43,3366 55373 TS SKEEP3 # LAST ADDRESS CHECKED
056309,000273:
056310,000274: 43,3367 00004 ERASLOOP INHINT
056311,000275: 43,3370 30003 CA EBANK # STORES C(EBANK)
056312,000276: 43,3371 55374 TS SKEEP4
056313,000277: 43,3372 00006 EXTEND
056314,000278: 43,3373 51377 NDX SKEEP7
056315,000279: 43,3374 30001 DCA 0000
056316,000280: 43,3375 53376 DXCH SKEEP5 # STORES C(X) AND C(X+1) IN SKEEP6 AND 5.
056317,000281: 43,3376 31377 CA SKEEP7
056318,000282: 43,3377 55360 TS ERESTORE # IF RESTART, RESTORE C(X) AND C(X+1)
056319,000283: 43,3400 54001 TS L
056320,000284: 43,3401 24001 INCR L
056321,000285: 43,3402 50000 NDX A
056322,000286: 43,3403 52001 DXCH 0000 # PUTS OWN ADDRESS IN X AND X +1
056323,000287: 43,3404 51377 NDX SKEEP7
056324,000288: 43,3405 40001 CS 0001 # CS X+1
056325,000289: 43,3406 51377 NDX SKEEP7
056326,000290: 43,3407 60000 AD 0000 # AD X
056327,000291: 43,3410 03273 TC -1CHK
056328,000292: 43,3411 31360 CA ERESTORE # HAS ERASABLE BEEN RESTORED
056329,000293: 43,3412 00006 EXTEND
Page 1289 |
056331,000295: 43,3413 13437 BZF ELOOPFIN # YES, EXIT ERASLOOP.
056332,000296: 43,3414 00006 EXTEND
056333,000297: 43,3415 51377 NDX SKEEP7
056334,000298: 43,3416 40001 DCS 0000 # COMPLEMENT OF ADDRESS OF X AND X+1
056335,000299: 43,3417 51377 NDX SKEEP7
056336,000300: 43,3420 52001 DXCH 0000 # PUT COMPLEMENT OF ADDRESS OF X AND X+1
056337,000301: 43,3421 51377 NDX SKEEP7
056338,000302: 43,3422 40000 CS 0000 # CS X
056339,000303: 43,3423 51377 NDX SKEEP7
056340,000304: 43,3424 60001 AD 0001 # AD X+1
056341,000305: 43,3425 03273 TC -1CHK
056342,000306: 43,3426 31360 CA ERESTORE # HAS ERASABLE BEEN RESTORED
056343,000307: 43,3427 00006 EXTEND
056344,000308: 43,3430 13437 BZF ELOOPFIN # YES, EXIT ERASLOOP.
056345,000309: 43,3431 00006 EXTEND
056346,000310: 43,3432 31376 DCA SKEEP5
056347,000311: 43,3433 51377 NDX SKEEP7
056348,000312: 43,3434 52001 DXCH 0000 # PUT B(X) AND B(X+1) BACK INTO X AND X+1
056349,000313: 43,3435 34755 CA S+ZERO
056350,000314: 43,3436 55360 TS ERESTORE # IF RESTART, DO NOT RESTORE C(X), C(X+1)
056351,000315: 43,3437 00003 ELOOPFIN RELINT
056352,000316: 43,3440 03332 TC CHECKNJ # CHECK FOR NEW JOB
056353,000317: 43,3441 31374 CA SKEEP4 # REPLACES B(EBANK)
056354,000318: 43,3442 54003 TS EBANK
056355,000319: 43,3443 25377 INCR SKEEP7
056356,000320: 43,3444 41377 CS SKEEP7
056357,000321: 43,3445 61373 AD SKEEP3
056358,000322: 43,3446 00006 EXTEND
056359,000323: 43,3447 13451 BZF +2
056360,000324: 43,3450 03367 TC ERASLOOP # GO TO NEXT ADDRESS IN SAME BANK
056361,000325: 43,3451 11372 CCS SKEEP2
056362,000326: 43,3452 03362 TC NOEBANK
056363,000327: 43,3453 25372 INCR SKEEP2 # PUT +1 IN SKEEP2.
056364,000328: 43,3454 30003 CA EBANK
056365,000329: 43,3455 64743 AD SBIT9
056366,000330: 43,3456 54003 TS EBANK
056367,000331: 43,3457 63243 AD ERASCON5 # 76777, CHECK FOR BANK E2
056368,000332: 43,3460 00006 EXTEND
056369,000333: 43,3461 13355 BZF 2EBANK
056370,000334: 43,3462 10003 CCS EBANK
056371,000335: 43,3463 03350 TC E134567B # GO TO EBANKS 1,3,4,5,6, AND 7
056372,000336: 43,3464 35007 CA ERASCON6 # END OF ERASCHK
056373,000337: 43,3465 54003 TS EBANK
056374,000338:
056375,000339: # CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.
056376,000340: # INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS
056377,000341:
056378,000342: 43,3466 34771 CNTRCHK CA CNTRCON # 00050
056379,000343: 43,3467 55372 CNTRLOOP TS SKEEP2
056380,000344: 43,3470 64750 AD SBIT4 # +10 OCTAL
056381,000345: 43,3471 50000 INDEX A
056382,000346: 43,3472 40000 CS 0000
Page 1290 |
056384,000348: 43,3473 11372 CCS SKEEP2
056385,000349: 43,3474 03467 TC CNTRLOOP
056386,000350:
056387,000351: # CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS
056388,000352:
056389,000353: 43,3475 33241 CYCLSHFT CA CONC+S1 # 25252
056390,000354: 43,3476 54020 TS CYR # C(CYR) = 12525
056391,000355: 43,3477 54022 TS CYL # C(CYL) = 52524
056392,000356: 43,3500 54021 TS SR # C(SR) = 12525
056393,000357: 43,3501 54023 TS EDOP # C(EDOP) = 00125
056394,000358: 43,3502 60020 AD CYR # 37777 C(CYR) = 45252
056395,000359: 43,3503 60022 AD CYL # 00-12524 C(CYL) = 25251
056396,000360: 43,3504 60021 AD SR # 00-25251 C(SR) = 05252
056397,000361: 43,3505 60023 AD EDOP # 00-25376 C(EDOP) = +0
056398,000362: 43,3506 63242 AD CONC+S2 # C(CONC+S2) = 52400
056399,000363: 43,3507 03273 TC -1CHK
056400,000364: 43,3510 60020 AD CYR # 45252
056401,000365: 43,3511 60022 AD CYL # 72523
056402,000366: 43,3512 60021 AD SR # 77775
056403,000367: 43,3513 60023 AD EDOP # 77775
056404,000368: 43,3514 64753 AD S+1 # 77776
056405,000369: 43,3515 03273 TC -1CHK
056406,000370:
056407,000371: 43,3516 25367 INCR SCOUNT +1
056408,000372: 43,3517 03301 TC SMODECHK
056409,000373:
056410,000374: # SKEEP1 HOLDS SUM
056411,000375: # SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES
056412,000376: # SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY
056413,000377: # SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)
056414,000378: # (04000 TO 07777 IN FXFX BANKS)
056415,000379: # SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY
056416,000380: # SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER
056417,000381: # SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS
056418,000382: # SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION
056419,000383: # SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS
056420,000384:
056421,000385: 43,3520 34754 ROPECHK CA S-ZERO # *
056422,000386: 43,3521 55376 TS SKEEP6 # * -0 FOR ROPECHK.
056423,000387: 43,3522 34755 STSHOSUM CA S+ZERO # * SHOULD BE ROPECHK
056424,000388:
056425,000389: 43,3523 55374 TS SKEEP4 # BANK NUMBER
056426,000390: 43,3524 34753 CA S+1
056427,000391: 43,3525 55377 COMMFX TS SKEEP7
056428,000392: 43,3526 34755 CA S+ZERO
056429,000393: 43,3527 55371 TS SKEEP1
056430,000394: 43,3530 55373 TS SKEEP3
056431,000395: 43,3531 34753 CA S+1
056432,000396: 43,3532 55375 TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
056433,000397: 43,3533 31374 COMADRS CA SKEEP4
056434,000398: 43,3534 54001 TS L # TO SET SUPER BANK
056435,000399: 43,3535 74350 MASK HI5
Page 1291 |
056437,000401: 43,3536 61373 AD SKEEP3
056438,000402: 43,3537 04651 TC SUPDACAL # SUPER DATA CALL
056439,000403: 43,3540 03563 TC ADSUM
056440,000404: 43,3541 64741 AD SBIT11 # 02000
056441,000405: 43,3542 03574 TC ADRSCHK
056442,000406:
056443,000407: 43,3543 40000 FXFX CS A
056444,000408: 43,3544 55377 TS SKEEP7
056445,000409: 43,3545 00006 EXTEND
056446,000410: 43,3546 13551 BZF +3
056447,000411: 43,3547 34740 CA SBIT12 # 04000, STARTING ADDRESS OF BANK 02
056448,000412: 43,3550 03552 TC +2
056449,000413: 43,3551 35020 CA SBNK03 # 06000, STARTING ADDRESS OF BANK 03
056450,000414: 43,3552 55373 TS SKEEP3
056451,000415: 43,3553 34755 CA S+ZERO
056452,000416: 43,3554 55371 TS SKEEP1
056453,000417: 43,3555 34753 CA S+1
056454,000418: 43,3556 55375 TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
056455,000419: 43,3557 51373 FXADRS INDEX SKEEP3
056456,000420: 43,3560 30000 CA 0000
056457,000421: 43,3561 03563 TC ADSUM
056458,000422: 43,3562 03574 TC ADRSCHK
056459,000423:
056460,000424: 43,3563 55372 ADSUM TS SKEEP2
056461,000425: 43,3564 61371 AD SKEEP1
056462,000426: 43,3565 55371 TS SKEEP1
056463,000427: 43,3566 34755 CAF S+ZERO
056464,000428: 43,3567 61371 AD SKEEP1
056465,000429: 43,3570 55371 TS SKEEP1
056466,000430: 43,3571 41372 CS SKEEP2
056467,000431: 43,3572 61373 AD SKEEP3
056468,000432: 43,3573 00002 TC Q
056469,000433:
056470,000434: 43,3574 22000 ADRSCHK LXCH A
056471,000435: 43,3575 31373 CA SKEEP3
056472,000436: 43,3576 75012 MASK LOW10 # RELATIVE ADDRESS
056473,000437: 43,3577 64350 AD -MAXADRS # SUBTRACT MAX RELATIVE ADDRESS = 1777.
056474,000438: 43,3600 00006 EXTEND
056475,000439: 43,3601 13670 BZF SOPTION # CHECKSUM FINISHED IF LAST ADDRESS.
056476,000440: 43,3602 11375 CCS SKEEP5 # IS CHECKSUM FINISHED
056477,000441: 43,3603 03606 TC +3 # NO
056478,000442: 43,3604 03606 TC +2 # NO
056479,000443: 43,3605 03670 TC SOPTION # GO TO ROPECHK SHOWSUM OPTION
056480,000444: 43,3606 10001 CCS L # -0 MEANS A TC SELF WORD.
056481,000445: 43,3607 03616 TC CONTINU
056482,000446: 43,3610 03616 TC CONTINU
056483,000447: 43,3611 03616 TC CONTINU
056484,000448: 43,3612 11375 CCS SKEEP5
056485,000449: 43,3613 03617 TC CONTINU +1
056486,000450: 43,3614 37747 CA S-1
Page 1292 |
056488,000452: 43,3615 03617 TC CONTINU +1 # AD IN THE BUGGER WORD
056489,000453: 43,3616 34753 CONTINU CA S+1 # MAKE SURE TWO CONSECUTIVE TC SELF WORDS
056490,000454: 43,3617 55375 TS SKEEP5
056491,000455: 43,3620 11376 CCS SKEEP6 # *
056492,000456: 43,3621 10067 CCS NEWJOB # * +1, SHOWSUM
056493,000457: 43,3622 05122 TC CHANG1 # *
056494,000458: 43,3623 03625 TC +2 # *
056495,000459: 43,3624 03332 TC CHECKNJ # -0 IN SKEEP6 FOR ROPECHK
056496,000460:
056497,000461: 43,3625 25373 ADRS+1 INCR SKEEP3
056498,000462: 43,3626 11377 CCS SKEEP7
056499,000463: 43,3627 03533 TC COMADRS
056500,000464: 43,3630 03533 TC COMADRS
056501,000465: 43,3631 03557 TC FXADRS
056502,000466: 43,3632 03557 TC FXADRS
056503,000467:
056504,000468: 43,3633 41374 NXTBNK CS SKEEP4
056505,000469: 43,3634 63723 AD LSTBNKCH # LAST BANK TO BE CHECKED
056506,000470: 43,3635 00006 EXTEND
056507,000471: 43,3636 13131 BZF ENDSUMS # END OF SUMMING OF BANKS.
056508,000472: 43,3637 31374 CA SKEEP4
056509,000473: 43,3640 64741 AD SBIT11
056510,000474: 43,3641 55374 TS SKEEP4 # 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY
056511,000475: 43,3642 03646 TC CHKSUPR
056512,000476: 43,3643 34735 17TO20 CA SBIT15
056513,000477: 43,3644 27374 ADS SKEEP4 # SET FOR BANK 20
056514,000478: 43,3645 03662 TC GONXTBNK
056515,000479: 43,3646 74350 CHKSUPR MASK HI5
056516,000480: 43,3647 00006 EXTEND
056517,000481: 43,3650 13660 BZF NXTSUPR # INCREMENT SUPER BANK
056518,000482: 43,3651 63240 27TO30 AD S13BITS
056519,000483: 43,3652 00006 EXTEND
056520,000484: 43,3653 13655 BZF +2 # BANK SET FOR 30
056521,000485: 43,3654 03662 TC GONXTBNK
056522,000486: 43,3655 33236 CA SIXTY # FIRST SUPER BANK
056523,000487: 43,3656 27374 ADS SKEEP4
056524,000488: 43,3657 03662 TC GONXTBNK
056525,000489: 43,3660 63237 NXTSUPR AD SUPRCON # SET BNK 30 + INCR SUPR BNK AND CANCEL
056526,000490: 43,3661 27374 ADS SKEEP4 # ERC BIT OF THE 37 TO 40 ADVANCE.
056527,000491: 43,3662 11377 GONXTBNK CCS SKEEP7
056528,000492: 43,3663 03525 TC COMMFX
056529,000493: 43,3664 34753 CA S+1
056530,000494: 43,3665 03543 TC FXFX
056531,000495: 43,3666 34745 CA SBIT7 # HAS TO BE LARGER THAN NO OF FXSW BANKS.
056532,000496: 43,3667 03525 TC COMMFX
056533,000497:
056534,000498: 43,3670 31374 SOPTION CA SKEEP4
056535,000499: 43,3671 74350 MASK HI5 # = BANK BITS
056536,000500: 43,3672 04331 TC LEFT5
056537,000501: 43,3673 54001 TS L # BANK NUMBER BEFORE SUPER BANK
Page 1293 |
056539,000503: 43,3674 31374 CA SKEEP4
056540,000504: 43,3675 74357 MASK S8BITS # = SUPER BANK BITS
056541,000505: 43,3676 00006 EXTEND
056542,000506: 43,3677 13705 BZF SOPT # BEFORE SUPER BANK
056543,000507: 43,3700 54021 TS SR # SUPER BANK NECESSARY
056544,000508: 43,3701 30001 CA L
056545,000509: 43,3702 74757 MASK SEVEN
056546,000510: 43,3703 60021 AD SR
056547,000511: 43,3704 54001 TS L # BANK NUMBER WITH SUPER BANK
056548,000512: 43,3705 31376 SOPT CA SKEEP6 # *
056549,000513: 43,3706 00006 EXTEND # *
056550,000514: 43,3707 13711 BZF +2 # * ON -0 CONTINUE WITH ROPE CHECK.
056551,000515: 43,3710 03113 TC SDISPLAY # * ON +1 GO TO DISPLAY OF SUM.
056552,000516: 43,3711 11371 CCS SKEEP1 # FORCE SUM TO ABSOLUTE VALUE.
056553,000517: 43,3712 03714 TC +2
056554,000518: 43,3713 03715 TC +2
056555,000519: 43,3714 64753 AD S+1
056556,000520: 43,3715 55371 TS SKEEP1
056557,000521: 43,3716 40001 BNKCHK CS L # = - BANK NUMBER
056558,000522: 43,3717 61371 AD SKEEP1
056559,000523: 43,3720 67747 AD S-1
056560,000524: 43,3721 03273 TC -1CHK # CHECK SUM
056561,000525: 43,3722 03633 TC NXTBNK
056562,000526:
056563,000527: 43,3723 0067 EBANK= NEWJOB
056564,000528: 43,3723 66100 LSTBNKCH BBCON* # * CONSTANT, LAST BANK.
056565,000529:
End of include-file AGC_BLOCK_TWO_SELF-CHECK.agc. Parent file is MAIN.agc