Source Code
These source-code files are part of a reconstructed copy of Corona 261, the
final, flown release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) software for the AS-202 mission.
They have been created via disassembly of binary dumps of the original core rope memory modules actually flown on the mission, part numbers 1003733-171, 1003733-241, 1003733-191, 1003733-211, 1003733-221, and 1003733-241. The source code for the Apollo 4 and 6 software, Solarium 55, was used as a starting point, since it was directly derived from Corona and (at least in theory) only minimally modified. Since only binary dumps (rather than listings) of Corona 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. |
019791,000002: ## Copyright: Public domain.
019792,000003: ## Filename: KEYRUPT_UPRUPT_FRESH_START.agc
019793,000004: ## Purpose: A section of Corona revision 261.
019794,000005: ## It is part of the source code for the Apollo Guidance Computer
019795,000006: ## (AGC) for AS-202. No original listings of this software are
019796,000007: ## available; instead, this file was created via disassembly of
019797,000008: ## the core rope modules actually flown on the mission.
019798,000009: ## Assembler: yaYUL
019799,000010: ## Contact: Ron Burkey <info@sandroid.org>.
019800,000011: ## Website: www.ibiblio.org/apollo/index.html
019801,000012: ## Mod history: 2023-05-27 MAS Created from Solarium 55.
019802,000013: ## 2023-06-17 MAS Updated for Corona 261.
019803,000014:
019804,000015:
019805,000016: 04,7347 BANK 4
019806,000017: 04,7347 73226 KEYRUPT1 MASK LOW5 # C(IN0) IN A
019807,000018: 04,7350 50642 TS RUPTREG4
019808,000019: 04,7351 02737 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65
019809,000020: 04,7352 32166 CAF PRIO33
019810,000021: 04,7353 02052 TC NOVAC
019811,000022: 04,7354 14006 CADR CHARIN
019812,000023: 04,7355 45362 CS SEVEN
019813,000024: 04,7356 70612 MASK MODREG
019814,000025: 04,7357 10000 CCS A
019815,000026: 04,7360 07363 TC NOKEYBUF
019816,000027: 04,7361 60642 AD RUPTREG4
019817,000028: 04,7362 51210 TS TAVEGON
019818,000029: 04,7363 30642 NOKEYBUF XCH RUPTREG4
019819,000030: 04,7364 20601 INDEX LOCCTR
019820,000031: 04,7365 50115 TS MPAC # LEAVE 5 BIT KEY CDE IN MPAC FOR CHARIN
019821,000032: 04,7366 02264 TC RESUME
019822,000033:
019823,000034:
019824,000035: 04,7367 50030 UPRUPTB TS BANKRUPT
019825,000036: 04,7370 02700 TC READTIME +1 # TIME IS SNATCHED IN RUPT FOR NOUN 65
019826,000037: 04,7371 35501 CAF ZERO
019827,000038: 04,7372 30041 XCH UPLINK # ZERO UPLINK
019828,000039: 04,7373 50600 TS KEYTEMP1
019829,000040: 04,7374 10717 CCS DSPTAB +7 # TURN ON UPACT LIGHT
019830,000041: 04,7375 07377 TC +2 # UPACT = BIT 11 OF DSPTAB +7
019831,000042: 04,7376 37502 CAF B12-1 # SAFETY PLAY
019832,000043: 04,7377 64516 AD ONE
019833,000044: 04,7400 50571 TS KEYTEMP2 # MAG OF DSPTAB +7 INTO KEYTEMP2
019834,000045: 04,7401 74504 MASK BIT11
019835,000046: 04,7402 10000 CCS A
019836,000047: 04,7403 07413 TC UPRPT1 # BIT 11 ALREADY ONE
019837,000048: 04,7404 30571 XCH KEYTEMP2 # BIT 11 = 0
019838,000049: 04,7405 64504 AD BIT11
019839,000050: 04,7406 40000 CS A # STORE NEGATIVELY
019840,000051: 04,7407 30717 XCH DSPTAB +7
019841,000052: 04,7410 10000 CCS A
019842,000053: 04,7411 07503 TC INCNOUTU # PREVIOUS CONTENTS WAS +
019843,000054: 04,7412 30000 NOOP # SAFETY PLAY
019844,000055: 04,7413 33226 UPRPT1 CAF LOW5 # TEST FOR TRIPLE CHAR REDUNDANCY
019845,000056: 04,7414 70600 MASK KEYTEMP1 # LOW5 OF WORD
019846,000057: 04,7415 30600 XCH KEYTEMP1 # LOW5 INTO KEYTEMP1
019847,000058: 04,7416 30021 XCH SR # WHOLE WORD INTO SR
019848,000059: 04,7417 50571 TS KEYTEMP2 # ORIGINAL SR INTO KEYTEMP2
019849,000060: 04,7420 07464 TC SRGHT5
019850,000061: 04,7421 73226 MASK LOW5 # MID 5
019851,000062: 04,7422 67501 AD HI10
019852,000063: 04,7423 07473 TC UPTEST
019853,000064: 04,7424 07464 TC SRGHT5
019854,000065: 04,7425 73226 MASK LOW5 # HIGH 5
019855,000066: 04,7426 40000 COM
019856,000067: 04,7427 07473 TC UPTEST
019857,000068: 04,7430 07460 UPOK TC RESTORSR # CODE IS GOOD
019858,000069: 04,7431 47435 CS ELRCODE # IF CODE = ERROR LIGHT RESET, PUT +0
019859,000070: 04,7432 60600 AD KEYTEMP1 # INTO UPLOCK (BIT2 OF STATE)
019860,000071: 04,7433 10000 CCS A # IF CODE NOT= ELR, PASS CODE ONLY IF
019861,000072: 04,7434 07443 TC TSTUPLOK # UPLOCK=0 (BIT 2 OF STATE)
019862,000073: 04,7435 00022 ELRCODE OCT 22
019863,000074: 04,7436 07443 TC TSTUPLOK
019864,000075: 04,7437 44515 CS BIT2 # 0 INTO UPLOCK (BIT 2 OF STATE)
019865,000076: 04,7440 70645 MASK UPLOCK
019866,000077: 04,7441 50645 TS UPLOCK
019867,000078: 04,7442 07447 TC ACCEPTUP
019868,000079: 04,7443 34515 TSTUPLOK CAF BIT2
019869,000080: 04,7444 70645 MASK UPLOCK
019870,000081: 04,7445 10000 CCS A
019871,000082: 04,7446 02264 TC RESUME # UPLOCK = 1 (BIT2 OF STATE)
019872,000083: 04,7447 30600 ACCEPTUP XCH KEYTEMP1 # UPLOCK = 0 (BIT2 OF STATE)
019873,000084: 04,7450 07350 TC KEYRUPT1 +1
019874,000085:
019875,000086:
019876,000087: 04,7451 07460 TMFAIL2 TC RESTORSR # CODE IS BAD
019877,000088: 04,7452 44515 CS BIT2 # LOCK OUT FURTHER UPLINK ACTIVITY (BY
019878,000089: 04,7453 70645 MASK UPLOCK # PUTTING 1 INTO UPLOCK, BIT 2 OF STATE)
019879,000090: 04,7454 64515 AD BIT2 # UNTIL ERROR LIGHT RESET IS SENT UP
019880,000091: 04,7455 50645 TS UPLOCK # UPLINK.
019881,000092: 04,7456 02567 TMFAIL1 TC TMALM
019882,000093: 04,7457 02264 TC RESUME
019883,000094:
019884,000095: 04,7460 30571 RESTORSR XCH KEYTEMP2
019885,000096: 04,7461 60000 DOUBLE
019886,000097: 04,7462 50021 TS SR
019887,000098: 04,7463 00001 TC Q
019888,000099:
019889,000100: 04,7464 2567 TMALM EQUALS TMFAIL # TM FAIL LIGHT ON (IN DOWNRUPT).
019890,000101:
019891,000102: 04,7464 40021 SRGHT5 CS SR
019892,000103: 04,7465 40021 CS SR
019893,000104: 04,7466 40021 CS SR
019894,000105: 04,7467 40021 CS SR
019895,000106: 04,7470 40021 CS SR
019896,000107: 04,7471 40000 CS A
019897,000108: 04,7472 00001 TC Q # DELIVERS WORD UNCOMPLEMENTED
019898,000109:
019899,000110: 04,7473 60600 UPTEST AD KEYTEMP1
019900,000111: 04,7474 10000 CCS A
019901,000112: 04,7475 07451 TC TMFAIL2
019902,000113: 04,7476 03070 TC CCSHOLE
019903,000114: 04,7477 07451 TC TMFAIL2
019904,000115: 04,7500 00001 TC Q
019905,000116:
019906,000117: 04,7501 77740 HI10 OCT 77740
019907,000118: 04,7502 2075 UPBANK EQUALS EXECBANK # IN SAME BANK AS EXEC.
019908,000119:
019909,000120: 04,7502 03777 B12-1 OCT 3777
019910,000121:
019911,000122: 04,7503 30707 INCNOUTU XCH NOUT
019912,000123: 04,7504 64516 AD ONE
019913,000124: 04,7505 50707 TS NOUT
019914,000125: 04,7506 20001 INDEX Q
019915,000126: 04,7507 00001 UPLAST TC 1
019916,000127:
019917,000128: # UPACT IS TURNED OFF BY VBRELDSP, ALSO BY ERROR LIGHT RESET.
019918,000129:
019919,000130:
019920,000131: # THE RECEPTION OF A BAD CODE BY UPLINK LOCKS OUT FURTHER UPLINK ACTIVITY
019921,000132: # BY PLACING A 1 INTO UPLOCK (BIT2 OF STATE). BIT9 (AND BIT11) OF TMKEYBUF
019922,000133: # IS SET TO 1 TO SEND AN INDICATION OF THIS SITUATION DOWN THE DOWNLINK.
019923,000134: # THE UPLINK INTERLOCK IS ALLOWED WHEN AN ERROR LIGHT RESET CODE IS SENT
019924,000135: # UP THE UPLINK, OR WHEN A FRESH START IS PERFORMED.
End of include-file KEYRUPT_UPRUPT_FRESH_START.agc. Parent file is MAIN.agc