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