Source Code

These source code files are an attempted reconstruction of Sundance revision 306, the Apollo 9 LM (Lunar Module) AGC (Apollo Guidance Computer) flight software, created from binary dumps of original core rope program modules, as follows:
  • B1 — Revision 292
  • B2 — Revision 302
  • B3 — Revision 302
  • B4 — Revision 302
  • B5 — Revision 292
  • B6 — Revision 306
These dumps were then modified using memos, checklists, observed address changes, and the Sundance GSOPs to get the entire program to match Sundance revision 306 as closely as possible. Without more information, it is not possible to say how close it actually is; however, this code should be quite close. It is capable of flying the whole Apollo 9 mission using the original checklists and padload. Since only binary dumps (rather than listings) of Sundance 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.

052560,000002:                                                                                                  ## Copyright:   Public domain.
052561,000003:                                                                                                  ## Filename:    KEYRUPT,_UPRUPT.agc
052562,000004:                                                                                                  ## Purpose:     A section of an attempt to reconstruct Sundance revision 306
052563,000005:                                                                                                  ##              as closely as possible with available information. Sundance
052564,000006:                                                                                                  ##              306 is the source code for the Lunar Module's (LM) Apollo
052565,000007:                                                                                                  ##              Guidance Computer (AGC) for Apollo 9. This program was created
052566,000008:                                                                                                  ##              using the mixed-revision SundanceXXX as a starting point, and
052567,000009:                                                                                                  ##              pulling back features from Luminary 69 believed to have been
052568,000010:                                                                                                  ##              added based on memos, checklists, observed address changes,
052569,000011:                                                                                                  ##              or the Sundance GSOPs.
052570,000012:                                                                                                  ## Assembler:   yaYUL
052571,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
052572,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
052573,000015:                                                                                                  ## Mod history: 2020-07-24 MAS  Created from SundanceXXX.
052574,000016:                                                                                                  ##              2021-05-30 ABS  UPCK -> UPOK
052575,000017: 
052576,000018: 
052577,000019: 
052578,000020: 14,3734                                           BANK     14                                    
052579,000021: 04,2000                                           SETLOC   KEYRUPT                               
052580,000022: 04,2000                                           BANK                                           
052581,000023: 04,3107                                           COUNT*   $$/KEYUP                              
052582,000024: 
052583,000025: 04,3107           54016        KEYRUPT1           TS       BANKRUPT                              
052584,000026: 04,3110           56002                           XCH      Q                                     
052585,000027: 04,3111           54012                           TS       QRUPT                                 
052586,000028: 04,3112           04412                           TC       LODSAMPT                              #  TIME IS SNATCHED IN RUPT FOR NOUN 65.
052587,000029: 04,3113           34360                           CAF      LOW5                                  
052588,000030: 04,3114           00006                           EXTEND                                         
052589,000031: 04,3115           02015                           RAND     MNKEYIN                               #  CHECK IF KEYS 5M-1M ON
052590,000032: 04,3116           54073        KEYCOM             TS       RUPTREG4                              
052591,000033: 04,3117           40101                           CS       FLAGWRD5                              
052592,000034: 04,3120           75010                           MASK     DSKYFBIT                              
052593,000035: 04,3121           26101                           ADS      FLAGWRD5                              
052594,000036: 
052595,000037: 04,3122           34367        ACCEPTUP           CAF      CHRPRIO                               #  (NOTE: RUPTREG4 = KEYTEMP1)
052596,000038: 04,3123           05142                           TC       NOVAC                                 
052597,000039: 04,3124     1000                                  EBANK=   DSPCOUNT                              
052598,000040: 04,3124           02212 60102                     2CADR    CHARIN                                
052599,000041: 
052600,000042: 04,3126           30073                           CA       RUPTREG4                              
052601,000043: 04,3127           50064                           INDEX    LOCCTR                                
052602,000044: 04,3130           54154                           TS       MPAC                                  #  LEAVE 5 BIT KEY CDE IN MPAC FOR CHARIN
052603,000045: 04,3131           05340                           TC       RESUME                                
052604,000046: 
052605,000047:                                                                                                  #  UPRUPT PROGRAM
052606,000048: 
052607,000049: 04,3132           54016        UPRUPT             TS       BANKRUPT                              
052608,000050: 04,3133           56002                           XCH      Q                                     
052609,000051: 04,3134           54012                           TS       QRUPT                                 
052610,000052: 04,3135           04412                           TC       LODSAMPT                              #  TIME IS SNATCHED IN RUPT FOR NOUN 65.
052611,000053: 04,3136           35030                           CAF      ZERO                                  
052612,000054: 04,3137           56045                           XCH      INLINK                                
052613,000055: 04,3140           54073                           TS       KEYTEMP1                              
052614,000056: 04,3141           35024                           CAF      BIT3                                  #  TURN ON UPACT LIGHT
052615,000057: 04,3142           00006                           EXTEND                                         #  (BIT 3 OF CHANNEL 11)
052616,000058: 04,3143           05011                           WOR      DSALMOUT                              
052617,000059: 04,3144           34360        UPRPT1             CAF      LOW5                                  #  TEST FOR TRIPLE CHAR REDUNDANCY
052618,000060: 04,3145           70073                           MASK     KEYTEMP1                              #  LOW5 OF WORD
052619,000061: 04,3146           56073                           XCH      KEYTEMP1                              #  LOW5 INTO KEYTEMP1
052620,000062: 04,3147           00006                           EXTEND                                         
052621,000063: 04,3150           75015                           MP       BIT10                                 #  SHIFT RIGHT 5
052622,000064: 04,3151           54734                           TS       KEYTEMP2                              
052623,000065: 04,3152           74360                           MASK     LOW5                                  #  MID 5
052624,000066: 04,3153           63207                           AD       HI10                                  
052625,000067: 04,3154           03204                           TC       UPTEST                                
052626,000068: 04,3155           35015                           CAF      BIT10                                 
052627,000069: 04,3156           00006                           EXTEND                                         
052628,000070: 04,3157           70734                           MP       KEYTEMP2                              #  SHIFT RIGHT 5
052629,000071: 04,3160           74360                           MASK     LOW5                                  #  HIGH 5
052630,000072: 04,3161           40000                           COM                                            
052631,000073: 04,3162           03204                           TC       UPTEST                                
052632,000074: 
052633,000075: 04,3163           43212        UPOK               CS       ELRCODE                               #  CODE IS GOOD. IF CODE = 'ERROR RESET',
052634,000076: 04,3164           60073                           AD       KEYTEMP1                              #  CLEAR UPLOCKFL(SET BIT4 OF FLAGWRD7 = 0)
052635,000077: 04,3165           00006                           EXTEND                                         #  IF CODE DOES NOT = 'ERROR RESET', ACCEPT
052636,000078: 04,3166           13174                           BZF      CLUPLOCK                              #  CODE ONLY IF UPLOCKFL IS CLEAR (=0).
052637,000079: 
052638,000080: 04,3167           35023                           CAF      UPLOCBIT                              #  TEST UPLOCKFL FOR 0 OR 1
052639,000081: 04,3170           70103                           MASK     FLAGWRD7                              
052640,000082: 04,3171           10000                           CCS      A                                     
052641,000083: 04,3172           05340                           TC       RESUME                                #  UPLOCKFL = 1
052642,000084: 04,3173           03122                           TC       ACCEPTUP                              #  UPLOCKFL = 0
052643,000085: 
052644,000086: 04,3174           45023        CLUPLOCK           CS       UPLOCBIT                              #  CLEAR UPLOCKFL (I.E., SET BIT 4 OF )
052645,000087: 04,3175           70103                           MASK     FLAGWRD7                              #  FLAGWRD7 = 0)
052646,000088: 04,3176           54103                           TS       FLAGWRD7                              
052647,000089: 04,3177           03122                           TC       ACCEPTUP                              
052648,000090: 
052649,000091:                                                                                                  #  CODE IS BAD
052650,000092: 04,3200           40103        TMFAIL2            CS       FLAGWRD7                              #  LOCK OUT FURTHER UPLINK ACTIVITY
052651,000093: 04,3201           75023                           MASK     UPLOCBIT                              #  (BY SETTING UPLOCKFL = 1) UNTIL
052652,000094: 04,3202           26103                           ADS      FLAGWRD7                              #  'ERROR RESET' IS SENT VIA UPLINK.
052653,000095: 04,3203           05340                           TC       RESUME                                
052654,000096: 04,3204           60073        UPTEST             AD       KEYTEMP1                              
052655,000097: 04,3205           10000                           CCS      A                                     
052656,000098: 04,3206           03200                           TC       TMFAIL2                               
052657,000099: 04,3207           77740        HI10               OCT      77740                                 
052658,000100: 04,3210           03200                           TC       TMFAIL2                               
052659,000101: 04,3211           00002                           TC       Q                                     
052660,000102: 
052661,000103: 04,3212           00022        ELRCODE            OCT      22                                    
052662,000104: 
052663,000105:                                                                                                  #  'UPLINK ACTIVITY LIGHT' IS TURNED OFF BY .....
052664,000106:                                                                                                  #        1.      VBRELDSP
052665,000107:                                                                                                  #        2.      ERROR RESET
052666,000108:                                                                                                  #        3.      UPDATE PROGRAM (P27) ENTERED BY V70,V71,V72,AND V73.
052667,000109:                                                                                                  #                                     -
052668,000110:                                                                                                  #  THE RECEPTION OF A BAD CODE (I.E  CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1.
052669,000111:                                                                                                  #  THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS.
052670,000112:                                                                                                  #  WHEN UPLINK ACTIVITY IS LOCKED OUT, IT CAN BE ALLOWED WHEN THE GROUND UPLINKS AND 'ERROR RESET' CODE.
052671,000113:                                                                                                  #  (IT IS RECOMMENDED THAT THE 'ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED
052672,000114:                                                                                                  #  BY 15 ZEROES.  THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL
052673,000115:                                                                                                  #  FAILURE)
052674,000116: 
052675,000117:                                                                                                  #  UPLINK ACTIVITY IS ALSO ALLOWED (UNLOCKED) DURING FRESH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0.

End of include-file KEYRUPT,_UPRUPT.agc.  Parent file is MAIN.agc