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