Source Code

These source-code files derive from a printout of Luminary 210 (Apollo 15-17 Lunar Module guidance computer program), from the personal library of original AGC developer Don Eyles, digitally photographed at archive.org, financially sponsored by Jim Lawton, and transcribed to source code by a team of volunteers. This colorized, syntax-highlighted form was created by assembling that transcribed source code. Note that the full page images are available on the Virtual AGC project page at archive.org, while reduced-size images are presented at the VirtualAGC project website. Report or fix any transcription errors at the Virtual AGC project code repository.

Notations on the program listing read, in part:

	GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY 
	BY NASA 2021112-161 17:11 MAR. 19,1971
Note that the date is the date of the printout, not the date of the program revision.

060490,000002:                                                                                                  ## Copyright:   Public domain.
060491,000003:                                                                                                  ## Filename:    T6-RUPT_PROGRAMS.agc
060492,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
060493,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
060494,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
060495,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
060496,000008:                                                                                                  ##              that the code format has been changed to conform to the
060497,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
060498,000010:                                                                                                  ##              original YUL assembler.
060499,000011:                                                                                                  ## Reference:   pp. 1400-1402
060500,000012:                                                                                                  ## Assembler:   yaYUL
060501,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
060502,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
060503,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
060504,000016:                                                                                                  ##              2016-11-30 RRB  Updated from Luminary210 images.
060505,000017:                                                                                                  ##              2016-12-26 RSB  Comment-text proofed using ProoferComments
060506,000018:                                                                                                  ##                              and corrected errors found.
060507,000019:                                                                                                  ##              2017-08-29 MAS  Fixed a comment-text error found while transcribing
060508,000020:                                                                                                  ##                              Zerlina 56.
060509,000021: 

Page 1400

060511,000023:                                                                                                  #  PROGRAM NAMES:        (1) T6JOBCHK    MOD. NO. 5      OCTOBER 2, 1967
060512,000024:                                                                                                  #                        (2) DOT6RUPT
060513,000025:                                                                                                  #  MODIFICATION BY:      LOWELL G HULL (A.C.ELECTRONICS)
060514,000026: 
060515,000027:                                                                                                  #  THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
060516,000028:                                                                                                  #  SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
060517,000029:                                                                                                  #  ESTABLISHED AND MUST NOT BE TAMPERED WITH:
060518,000030:                                                                                                  #        1.      NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
060519,000031:                                                                                                  #        2.      NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
060520,000032:                                                                                                  #        3.      TO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED:
060521,000033:                                                                                                  #                A.      A POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6.
060522,000034:                                                                                                  #                B.      THE TIME6 CLOCK IS ENABLED.
060523,000035:                                                                                                  #                C.      TIME6 IS INTERROGATED AND IS:
060524,000036:                                                                                                  #                        I.      NEVER FOUND NEGATIVE (NON-ZERO) OR +0.
060525,000037:                                                                                                  #                        II.     SOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE.
060526,000038:                                                                                                  #                        III.    SOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED.
060527,000039:                                                                                                  #                        IV.     SOMETIMES FOUND NEGATIVE ZERO INDICATING THAT:
060528,000040:                                                                                                  #                                A.      A T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR
060529,000041:                                                                                                  #                                B.      A T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR
060530,000042:                                                                                                  #                                C.      A T6RUPT IS IN PROCESS NOW.
060531,000043:                                                                                                  #        4)      ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
060532,000044:                                                                                                  #                EVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
060533,000045: 
060534,000046:                                                                                                  #       (5.      PROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.)
060535,000047: 
060536,000048:                                                                                                  #  T6JOBCHK CALLING SEQUENCE:
060537,000049:                                                                                                  #                L       TC      T6JOBCHK
060538,000050:                                                                                                  #                L+1     (RETURN)
060539,000051: 
060540,000052:                                                                                                  #  DOT6RUPT CALLING SEQUENCE:
060541,000053:                                                                                                  #                        DXCH    ARUPT           T6RUPT LEAD IN AT LOCATION 4004.
060542,000054:                                                                                                  #                        EXTEND
060543,000055:                                                                                                  #                        DCA     T6ADR
060544,000056:                                                                                                  #                        DTCB
060545,000057: 
060546,000058:                                                                                                  #  SUBROUTINES CALLED:   DOT6RUPT CALLS T6JOBCHK.
060547,000059: 
060548,000060:                                                                                                  #  NORMAL EXIT MODES:    T6JOBCHK RETURNS TO L +1.
060549,000061:                                                                                                  #                        DOT6RUPT TRANSFERS CONTROL TO RESUME.
060550,000062: 
060551,000063:                                                                                                  #  ALARM/ABORT MODES:    NONE.
060552,000064: 
060553,000065:                                                                                                  #  INPUT:        TIME6           NXT6ADR         OUTPUT:         TIME6           NXT6ADR         CHANNEL 5
060554,000066:                                                                                                  #                T6NEXT          T6NEXT +1                       T6NEXT          T6NEXT +1       CHANNEL 6
060555,000067:                                                                                                  #                T6FURTHA        T6FURTHA +1                     T6FURTHA        T6FURTHA +1     BIT15/CH13
060556,000068: 
060557,000069:                                                                                                  #  DEBRIS:       T6JOBCHK CLOBBERS A.  DOT6RUPT CLOBBERS NOTHING.
060558,000070: 
060559,000071:    5747                                           BLOCK    02                                    

Page 1401

060561,000073: 17,2055                                           BANK     17                                    
060562,000074: 17,2000                                           SETLOC   DAPS2                                 
060563,000075: 17,2000                                           BANK                                           
060564,000076: 17,2055  E6,1466                                  EBANK=   T6NEXT                                
060565,000077: 17,2055                                           COUNT*   $$/DAPT6                              
060566,000078: 
060567,000079: 17,2055           10031        T6JOBCHK           CCS      TIME6                                 #  CHECK TIME6 FOR WAITING T6RUPT:
060568,000080: 17,2056           00002                           TC       Q                                     #  NONE: CLOCK COUTING DOWN.
060569,000081: 17,2057           05701                           TC       CCSHOLE                               
060570,000082: 17,2060           05701                           TC       CCSHOLE                               
060571,000083: 
060572,000084:                                                                                                  #  CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E. WHEN A T6RUPT MUST BE PROCESSED).
060573,000085: 
060574,000086: 17,2061           34724        T6JOB              CA       POSMAX                                
060575,000087: 17,2062           22007                           ZL                                             
060576,000088: 17,2063           53471                           DXCH     T6FURTHA                              
060577,000089: 17,2064           53467                           DXCH     T6NEXT                                
060578,000090: 17,2065           23465                           LXCH     NXT6ADR                               
060579,000091: 17,2066           54031                           TS       TIME6                                 
060580,000092: 
060581,000093: 17,2067           67746                           AD       PRIO37                                
060582,000094: 17,2070           54000                           TS       A                                     
060583,000095: 17,2071           12075                           TCF      ENABLET6                              
060584,000096: 17,2072           34724                           CA       POSMAX                                
060585,000097: 17,2073           54031                           TS       TIME6                                 
060586,000098: 17,2074           12115                           TCF      GOCH56                                
060587,000099: 17,2075           00006        ENABLET6           EXTEND                                         
060588,000100: 17,2076           23265                           QXCH     C13QSAV                               
060589,000101: 17,2077           22070                           LXCH     RUPTREG1                              
060590,000102: 17,2100           06040                           TC       C13STALL                              
060591,000103: 17,2101           00006                           EXTEND                                         
060592,000104: 17,2102           23265                           QXCH     C13QSAV                               
060593,000105: 17,2103           22070                           LXCH     RUPTREG1                              
060594,000106: 17,2104           34726                           CAF      BIT15                                 
060595,000107: 17,2105           00006                           EXTEND                                         
060596,000108: 17,2106           05013                           WOR      CHAN13                                
060597,000109: 17,2107           31466                           CA       T6NEXT                                
060598,000110: 17,2110           67746                           AD       PRIO37                                
060599,000111: 17,2111           54000                           TS       A                                     
060600,000112: 17,2112           12115                           TCF      GOCH56                                
060601,000113: 17,2113           34724                           CA       POSMAX                                
060602,000114: 17,2114           55466                           TS       T6NEXT                                
060603,000115: 17,2115           50001        GOCH56             INDEX    L                                     
060604,000116: 17,2116           15747                           TCF      WRITEP     -1                         
060605,000117: 
060606,000118:    5747                                           BLOCK    02                                    
060607,000119:    4000                                           SETLOC   FFTAG9                                
060608,000120:    4000                                           BANK                                           
060609,000121:    5747  E6,1634                                  EBANK=   CDUXD                                 
060610,000122:    5747                                           COUNT*   $$/DAPT6                              

Page 1402

060612,000124:    5747           31472                           CA       NEXTP                                 
060613,000125:    5750           00006        WRITEP             EXTEND                                         
060614,000126:    5751           01006                           WRITE    CHAN6                                 
060615,000127:    5752           00002                           TC       Q                                     
060616,000128: 
060617,000129:    5753           31473                           CA       NEXTU                                 
060618,000130:    5754           54001        WRITEU             TS       L                                     
060619,000131:    5755           45770                           CS       00314OCT                              
060620,000132:    5756           00006                           EXTEND                                         
060621,000133:    5757           02005                           RAND     CHAN5                                 
060622,000134:    5760           60001                           AD       L                                     
060623,000135:    5761           00006                           EXTEND                                         
060624,000136:    5762           01005                           WRITE    CHAN5                                 
060625,000137:    5763           00002                           TC       Q                                     
060626,000138: 
060627,000139:    5764           31474                           CA       NEXTV                                 
060628,000140:    5765           54001        WRITEV             TS       L                                     
060629,000141:    5766           35770                           CA       00314OCT                              
060630,000142:    5767           15756                           TCF      -9D                                   
060631,000143:    5770           00314        00314OCT           OCT      00314                                 
060632,000144: 
060633,000145: 17,2117                                           BANK     17                                    
060634,000146: 17,2000                                           SETLOC   DAPS2                                 
060635,000147: 17,2000                                           BANK                                           
060636,000148: 
060637,000149: 17,2117  E6,1466                                  EBANK=   T6NEXT                                
060638,000150: 17,2117                                           COUNT*   $$/DAPT6                              
060639,000151: 
060640,000152: 17,2117           22016        DOT6RUPT           LXCH     BANKRUPT                              #  (INTERRUPT LEAD INS CONTINUED)
060641,000153: 17,2120           00006                           EXTEND                                         
060642,000154: 17,2121           22012                           QXCH     QRUPT                                 
060643,000155: 
060644,000156: 17,2122           02055                           TC       T6JOBCHK                              #  CALL T6JOBCHK.
060645,000157: 
060646,000158: 17,2123           15272                           TCF      RESUME                                #  END TIME6 INTERRUPT PROCESSOR.

End of include-file T6-RUPT_PROGRAMS.agc.  Parent file is MAIN.agc