Source Code
![]() |
These source-code files were obtained by digitally photographing
a Solarium 55 (Apollo 6) program listing from the American Computer Museum in
Bozeman, Montana. Photography was by Ron Burkey, with assistance from
museum curator George Keremedjiev and Montana
State University curator Kim Scott. The listing originally belonged to Eldon C. Hall,
who donated it to the museum. Volunteers then manually typed in the
source code or else modified similar pre-existing Colossus 249
(Apollo 9) source files to incorporate changes, although this transcription was
principally done by Jim Lawton and corrected by Ron Burkey.
Notations on the program listing read, in part:YUL SYSTEM FOR AGC4: REVISION 0 OF PROGRAM SOLRUM55 BY NASA 1021108-021 DEC. 4, 1966Note that the date is the date of the printout, not the date of the program revision. Due to statements by Jay Sampson, the original contractor from AC Electronics who created Solarium 54 (Apollo 4) from the earlier Corona (AS-202 mission) program, it is believed that Solarium 54 and Solarium 55 (Apollo 6) are actually identical programs. The change in numbering, from 54 to 55, is believed to be for some administrative purpose. Thus, it is believed that the source-code represented here is equally appropriate for both Apollo 4 and Apollo 6 missions. |
017916,000002: ## Copyright: Public domain.
017917,000003: ## Filename: KEYRUPT_UPRUPT_FRESH_START.agc
017918,000004: ## Purpose: Part of the source code for Solarium build 55. This
017919,000005: ## is for the Command Module's (CM) Apollo Guidance
017920,000006: ## Computer (AGC), for Apollo 6.
017921,000007: ## Assembler: yaYUL --block1
017922,000008: ## Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
017923,000009: ## Website: www.ibiblio.org/apollo/index.html
017924,000010: ## Page Scans: www.ibiblio.org/apollo/ScansForConversion/Solarium055/
017925,000011: ## Mod history: 2009-09-15 JL Created.
017926,000012: ## 2016-08-17 RSB Corrected a duplicated symbol TFAIL2 on p. 479.
017927,000013: ## 2016-12-28 RSB Proofed comment text using octopus/ProoferComments,
017928,000014: ## and fixed errors found.
017929,000015:
![]() |
Page 477 |
017931,000017:
017932,000018: 04,7363 BANK 4
017933,000019: 04,7363 73220 KEYRUPT1 MASK LOW5 # C(IN0) IN A
017934,000020: 04,7364 50642 TS RUPTREG4
017935,000021: 04,7365 02736 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65
017936,000022: 04,7366 32166 CAF PRIO33
017937,000023: 04,7367 02052 TC NOVAC
017938,000024: 04,7370 14006 CADR CHARIN
017939,000025: 04,7371 30642 NOKEYBUF XCH RUPTREG4
017940,000026: 04,7372 20601 INDEX LOCCTR
017941,000027: 04,7373 50115 TS MPAC # LEAVE 5 BIT KEY CDE IN MPAC FOR CHARIN
017942,000028: 04,7374 02264 TC RESUME
017943,000029:
![]() |
Page 478 |
017945,000031:
017946,000032: 04,7375 50030 UPRUPTB TS BANKRUPT
017947,000033: 04,7376 02677 TC READTIME +1 # TIME IS SNATCHED IN RUPT FOR NOUN 65
017948,000034: 04,7377 35501 CAF ZERO
017949,000035: 04,7400 30041 XCH UPLINK # ZERO UPLINK
017950,000036: 04,7401 50600 TS KEYTEMP1
017951,000037: 04,7402 10717 CCS DSPTAB +7 # TURN ON UPACT LIGHT
017952,000038: 04,7403 07405 TC +2 # UPACT = BIT 11 OF DSPTAB +7
017953,000039: 04,7404 37510 CAF B12-1 # SAFETY PLAY
017954,000040: 04,7405 64516 AD ONE
017955,000041: 04,7406 50571 TS KEYTEMP2 # MAG OF DSPTAB +7 INTO KEYTEMP2
017956,000042: 04,7407 74504 MASK BIT11
017957,000043: 04,7410 10000 CCS A
017958,000044: 04,7411 07421 TC UPRPT1 # BIT 11 ALREADY ONE
017959,000045: 04,7412 30571 XCH KEYTEMP2 # BIT 11 = 0
017960,000046: 04,7413 64504 AD BIT11
017961,000047: 04,7414 40000 CS A # STORE NEGATIVELY
017962,000048: 04,7415 30717 XCH DSPTAB +7
017963,000049: 04,7416 10000 CCS A
017964,000050: 04,7417 07511 TC INCNOUTU # PREVIOUS CONTENTS WAS +
017965,000051: 04,7420 30000 NOOP # SAFETY PLAY
017966,000052: 04,7421 33220 UPRPT1 CAF LOW5 # TEST FOR TRIPLE CHAR REDUNDANCY
017967,000053: 04,7422 70600 MASK KEYTEMP1 # LOW5 OF WORD
017968,000054: 04,7423 30600 XCH KEYTEMP1 # LOW5 INTO KEYTEMP1
017969,000055: 04,7424 30021 XCH SR # WHOLE WORD INTO SR
017970,000056: 04,7425 50571 TS KEYTEMP2 # ORIGINAL SR INTO KEYTEMP2
017971,000057: 04,7426 07472 TC SRGHT5
017972,000058: 04,7427 73220 MASK LOW5 # MID 5
017973,000059: 04,7430 67507 AD HI10
017974,000060: 04,7431 07501 TC UPTEST
017975,000061: 04,7432 07472 TC SRGHT5
017976,000062: 04,7433 73220 MASK LOW5 # HIGH 5
017977,000063: 04,7434 40000 COM
017978,000064: 04,7435 07501 TC UPTEST
017979,000065: 04,7436 07466 UPOK TC RESTORSR # CODE IS GOOD
017980,000066: 04,7437 47443 CS ELRCODE # IF CODE = ERROR LIGHT RESET, PUT +0
017981,000067: 04,7440 60600 AD KEYTEMP1 # INTO UPLOCK (BIT2 OF STATE)
017982,000068: 04,7441 10000 CCS A # IF CODE NOT= ELR, PASS CODE ONLY IF
017983,000069: 04,7442 07451 TC TSTUPLOK # UPLOCK=0 (BIT 2 OF STATE)
017984,000070: 04,7443 00022 ELRCODE OCT 22
017985,000071: 04,7444 07451 TC TSTUPLOK
017986,000072: 04,7445 44515 CS BIT2 # 0 INTO UPLOCK (BIT 2 OF STATE)
017987,000073: 04,7446 70645 MASK UPLOCK
017988,000074: 04,7447 50645 TS UPLOCK
017989,000075: 04,7450 07455 TC ACCEPTUP
017990,000076: 04,7451 34515 TSTUPLOK CAF BIT2
017991,000077: 04,7452 70645 MASK UPLOCK
017992,000078: 04,7453 10000 CCS A
017993,000079: 04,7454 02264 TC RESUME # UPLOCK = 1 (BIT2 OF STATE)
017994,000080: 04,7455 30600 ACCEPTUP XCH KEYTEMP1 # UPLOCK = 0 (BIT2 OF STATE)
017995,000081: 04,7456 07364 TC KEYRUPT1 +1
017996,000082:
![]() |
Page 479 |
017998,000084:
017999,000085: 04,7457 07466 TMFAIL2 TC RESTORSR # CODE IS BAD
018000,000086: 04,7460 44515 CS BIT2 # LOCK OUT FURTHER UPLINK ACTIVITY (BY
018001,000087: 04,7461 70645 MASK UPLOCK # PUTTING 1 INTO UPLOCK, BIT 2 OF STATE)
018002,000088: 04,7462 64515 AD BIT2 # UNTIL ERROR LIGHT RESET IS SENT UP
018003,000089: 04,7463 50645 TS UPLOCK # UPLINK.
018004,000090: 04,7464 02571 TMFAIL1 TC TMALM
018005,000091: 04,7465 02264 TC RESUME
018006,000092:
018007,000093: 04,7466 30571 RESTORSR XCH KEYTEMP2
018008,000094: 04,7467 60000 DOUBLE
018009,000095: 04,7470 50021 TS SR
018010,000096: 04,7471 00001 TC Q
018011,000097:
018012,000098: 04,7472 2571 TMALM EQUALS TMFAIL # TM FAIL LIGHT ON (IN DOWNRUPT).
018013,000099:
018014,000100: 04,7472 40021 SRGHT5 CS SR
018015,000101: 04,7473 40021 CS SR
018016,000102: 04,7474 40021 CS SR
018017,000103: 04,7475 40021 CS SR
018018,000104: 04,7476 40021 CS SR
018019,000105: 04,7477 40000 CS A
018020,000106: 04,7500 00001 TC Q # DELIVERS WORD UNCOMPLEMENTED
018021,000107:
018022,000108: 04,7501 60600 UPTEST AD KEYTEMP1
018023,000109: 04,7502 10000 CCS A
018024,000110: 04,7503 07457 TC TMFAIL2
018025,000111: 04,7504 03062 TC CCSHOLE
018026,000112: 04,7505 07457 TC TMFAIL2
018027,000113: 04,7506 00001 TC Q
018028,000114:
018029,000115: 04,7507 77740 HI10 OCT 77740
018030,000116: 04,7510 2075 UPBANK EQUALS EXECBANK # IN SAME BANK AS EXEC.
018031,000117:
018032,000118: 04,7510 03777 B12-1 OCT 3777
018033,000119:
018034,000120: 04,7511 30707 INCNOUTU XCH NOUT
018035,000121: 04,7512 64516 AD ONE
018036,000122: 04,7513 50707 TS NOUT
018037,000123: 04,7514 20001 INDEX Q
018038,000124: 04,7515 00001 UPLAST TC 1
018039,000125:
018040,000126: # UPACT IS TURNED OFF BY VBRELDSP, ALSO BY ERROR LIGHT RESET.
018041,000127:
![]() |
Page 480 |
018043,000129:
018044,000130: # THE RECEPTION OF A BAD CODE BY UPLINK LOCKS OUT FURTHER UPLINK ACTIVITY
018045,000131: # BY PLACING A 1 INTO UPLOCK (BIT2 OF STATE). BIT9 (AND BIT11) OF TMKEYBUF
018046,000132: # IS SET TO 1 TO SEND AN INDICATION OF THIS SITUATION DOWN THE DOWNLINK.
018047,000133: # THE UPLINK INTERLOCK IS ALLOWED WHEN AN ERROR LIGHT RESET CODE IS SENT
018048,000134: # UP THE UPLINK, OR WHEN A FRESH START IS PERFORMED.
End of include-file KEYRUPT_UPRUPT_FRESH_START.agc. Parent file is MAIN.agc