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.

060623,000002:                                                                                                  ## Copyright:   Public domain.
060624,000003:                                                                                                  ## Filename:    DAP_INTERFACE_SUBROUTINES.agc
060625,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
060626,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
060627,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
060628,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
060629,000008:                                                                                                  ##              that the code format has been changed to conform to the
060630,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
060631,000010:                                                                                                  ##              original YUL assembler.
060632,000011:                                                                                                  ## Reference:   pp. 1403-1406
060633,000012:                                                                                                  ## Assembler:   yaYUL
060634,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
060635,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
060636,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
060637,000016:                                                                                                  ##              2016-11-25 TB   Transcribed
060638,000017:                                                                                                  ##              2016-12-26 RSB  Comment-text proofed using ProoferComments
060639,000018:                                                                                                  ##                              and corrected errors found.
060640,000019:                                                                                                  ##              2017-03-15 RSB  Comment-text fixes identified in 5-way
060641,000020:                                                                                                  ##                              side-by-side diff of Luminary 69/99/116/131/210.
060642,000021: 

Page 1403

060644,000023: 20,2115                                           BANK     20                                    
060645,000024: 20,2000                                           SETLOC   DAPS3                                 
060646,000025: 20,2000                                           BANK                                           
060647,000026: 
060648,000027: 20,2115  E6,1634                                  EBANK=   CDUXD                                 
060649,000028: 20,2115                                           COUNT*   $$/DAPIF                              
060650,000029: 
060651,000030:                                                                                                  #  MOD 0         DATE    11/15/66        BY GEORGE W. CHERRY
060652,000031:                                                                                                  #  MOD 1                 1/23/67         MODIFICATION BY PETER ADLER
060653,000032: 
060654,000033:                                                                                                  #  FUNCTIONAL DESCRIPTION
060655,000034:                                                                                                  #        HEREIN ARE A COLLECTION OF SUBROUTINES WHICH ALLOW MISSION CONTROL PROGRAMS TO CONTROL THE MODE
060656,000035:                                                                                                  #        AND INTERFACE WITH THE DAP.
060657,000036: 
060658,000037:                                                                                                  #  CALLING SEQUENCES
060659,000038:                                                                                                  #        IN INTERRUPT OR WITH INTERRUPT INHIBITED
060660,000039:                                                                                                  #                TC      IBNKCALL
060661,000040:                                                                                                  #                FCADR   ROUTINE
060662,000041:                                                                                                  #        IN A JOB WITHOUT INTERRUPT INHIBITED
060663,000042:                                                                                                  #                INHINT
060664,000043:                                                                                                  #                TC      IBNKCALL
060665,000044:                                                                                                  #                FCADR   ROUTINE
060666,000045:                                                                                                  #                RELINT
060667,000046: 
060668,000047:                                                                                                  #  OUTPUT
060669,000048:                                                                                                  #        SEE INDIVIDUAL ROUTINES BELOW
060670,000049: 
060671,000050:                                                                                                  #  DEBRIS
060672,000051:                                                                                                  #        A,L, AND SOMETIMES MDUETEMP                             ODE NOT IN PULSES MODE
060673,000052: 

Page 1404

060675,000054:                                                                                                  #  SUBROUTINE NAMES:
060676,000055:                                                                                                  #        SETMAXDB, SETMINDB, RESTORDB, PFLITEDB
060677,000056:                                                                                                  #  MODIFIED:     30 JANUARY 1968 BY P S WEISSMAN TO CREATE RESTORDB.
060678,000057:                                                                                                  #  MODIFIED:     1 MARCH 1968 BY P S WEISSMAN TO SAVE EBANK AND CREATE PFLITEDB
060679,000058: 
060680,000059:                                                                                                  #  FUNCTIONAL DESCRIPTION:
060681,000060:                                                                                                  #        SETMAXDB - SET DEADBAND TO 5.0 DEGREES
060682,000061:                                                                                                  #        SETMINDB - SET DEADBAND TO 0.3 DEGREE
060683,000062:                                                                                                  #        RESTORDB - SET DEADBAND TO .3,1, OR 5 ACCORDING TO BITS 4 AND 5 OF DAPBOOLS
060684,000063:                                                                                                  #        PFLITEDB - SET DEADBAND TO 1.0 DEGREE AND ZERO THE COMMANDED ATTITUDE CHANGE AND COMMANDED RATE
060685,000064:                                                                                                  #        ALL ENTRIES SET UP A NOVAC JOB TO DO 1/ACCS SO THAT THE TJETLAW SWITCH CURVES ARE POSITIONED TO
060686,000065:                                                                                                  #        REFLECT THE NEW DEADBAND.  IT SHOULD BE NOTED THAT THE DEADBAND REFERS TO THE ATTITUDE IN THE P-,U-,AND V-AXES.
060687,000066: 
060688,000067:                                                                                                  #  SUBROUTINE CALLED:    NOVAC
060689,000068: 
060690,000069:                                                                                                  #  CALLING SEQUENCE:     SAME AS ABOVE
060691,000070:                                                                                                  #                        OR      TC RESTORDB +1    FROM ALLCOAST
060692,000071: 
060693,000072:                                                                                                  #  DEBRIS:               A, L, Q, RUPTREG1, (ITEMPS IN NOVAC)
060694,000073: 
060695,000074: 20,2115           30111        RESTORDB           CAE      DAPBOOLS                              #  DETERMINE CREW-SELECTED DEADBAND.
060696,000075: 20,2116           74740                           MASK     DBSLECT2                              #  CHECK FOR MAX DB (5 DEG)
060697,000076: 20,2117           00006                           EXTEND                                         
060698,000077: 20,2120           12122                           BZF      +2                                    
060699,000078: 20,2121           12130                           TCF      SETMAXDB                              #  BIT5 DAPBOOLS IS SET - CREW WANTS 5 DEG
060700,000079: 20,2122           30111                           CAE      DAPBOOLS                              
060701,000080: 20,2123           74741                           MASK     DBSELECT                              #  CHECK FOR 1 DEG DEADBAND SELECTION
060702,000081: 20,2124           00006                           EXTEND                                         
060703,000082: 20,2125           12141                           BZF      SETMINDB                              
060704,000083: 
060705,000084: 20,2126           32153                           CAF      POWERDB                               #  BIT4 DAPBOOLS IS SET - CREW WANTS 1 DEG
060706,000085: 20,2127           12131                           TCF      SETMAXDB   +1                         
060707,000086: 20,2130           32152        SETMAXDB           CAF      WIDEDB                                #  SET 5 DEGREE DEADBAND.
060708,000087: 20,2131           55343                 +1        TS       DB                                    
060709,000088: 
060710,000089: 20,2132           00006                           EXTEND                                         #  SET UP JOB TO RE-POSITION SWITCH CURVES.
060711,000090: 20,2133           22070                           QXCH     RUPTREG1                              
060712,000091: 20,2134           37736        CALLACCS           CAF      PRIO27                                
060713,000092: 20,2135           05063                           TC       NOVAC                                 
060714,000093: 20,2136  E6,1536                                  EBANK=   AOSQ                                  
060715,000094: 20,2136           03603 42106                     2CADR    1/ACCJOB                              
060716,000095: 
060717,000096: 20,2140           00070                           TC       RUPTREG1                              #  RETURN TO CALLER.
060718,000097: 
060719,000098: 20,2141           32151        SETMINDB           CAF      NARROWDB                              #  SET 0.3 DEGREE DEADBAND.
060720,000099: 20,2142           12131                           TCF      SETMAXDB   +1                         
060721,000100: 

Page 1405

060723,000102: 20,2143           00006        PFLITEDB           EXTEND                                         #  THE RETURN FROM CALLACCS IS TO RUPTREG1.
060724,000103: 20,2144           22070                           QXCH     RUPTREG1                              
060725,000104: 20,2145           02154                           TC       ZATTEROR                              #  ZERO THE ERRORS AND COMMANDED RATES.
060726,000105: 20,2146           32153                           CAF      POWERDB                               #  SET DB TO 1.0 DEG.
060727,000106: 20,2147           55343                           TS       DB                                    
060728,000107: 20,2150           12134                           TCF      CALLACCS                              #  SET UP 1/ACCS AND RETURN TO CALLER.
060729,000108: 20,2151           00155        NARROWDB           OCTAL    00155                                 #  0.3 DEGREE SCALED AT 45.
060730,000109: 20,2152           03434        WIDEDB             OCTAL    03434                                 #  5.0 DEGREES SCALED AT 45.
060731,000110: 20,2153           00554        POWERDB            DEC      .02222                                #  1.0 DEGREE SCALED AT 45.
060732,000111: 
060733,000112: 20,2154           35006        ZATTEROR           CAF      EBANK6                                
060734,000113: 20,2155           56003                           XCH      EBANK                                 
060735,000114: 20,2156           54001                           TS       L                                     #  SAVE CALLERS EBANK IN L.
060736,000115: 20,2157           30032                           CAE      CDUX                                  
060737,000116: 20,2160           55634                           TS       CDUXD                                 
060738,000117: 20,2161           30033                           CAE      CDUY                                  
060739,000118: 20,2162           55635                           TS       CDUYD                                 
060740,000119: 20,2163           30034                           CAE      CDUZ                                  
060741,000120: 20,2164           55636                           TS       CDUZD                                 
060742,000121: 20,2165           12171                           TCF      STOPRATE   +3                         
060743,000122: 
060744,000123: 20,2166           35006        STOPRATE           CAF      EBANK6                                
060745,000124: 20,2167           56003                           XCH      EBANK                                 
060746,000125: 20,2170           54001                           TS       L                                     #  SAVE CALLERS EBANK IN L.
060747,000126: 20,2171           34746                 +3        CAF      ZERO                                  
060748,000127: 20,2172           55642                           TS       OMEGAPD                               
060749,000128: 20,2173           55643                           TS       OMEGAQD                               
060750,000129: 20,2174           55644                           TS       OMEGARD                               
060751,000130: 20,2175           55637                           TS       DELCDUX                               
060752,000131: 20,2176           55640                           TS       DELCDUY                               
060753,000132: 20,2177           55641                           TS       DELCDUZ                               
060754,000133: 20,2200           55274                           TS       DELPEROR                              
060755,000134: 20,2201           55275                           TS       DELQEROR                              
060756,000135: 20,2202           55276                           TS       DELREROR                              
060757,000136: 20,2203           22003                           LXCH     EBANK                                 #  RESTORE CALLERS EBANK.
060758,000137: 20,2204           00002                           TC       Q                                     
060759,000138: 
060760,000139:                                                                                                  #  SUBROUTINE NAME:  ALLCOAST
060761,000140: 
060762,000141:                                                                                                  #  WILL BE CALLED BY FRESH STARTS AND ENGINE OFF ROUTINES.       .
060763,000142: 
060764,000143:                                                                                                  #  CALLING SEQUENCE: (SAME AS ABOVE)
060765,000144: 
060766,000145:                                                                                                  #  EXIT:  RETURN TO Q.
060767,000146: 
060768,000147:                                                                                                  #  SUBROUTINES CALLED:  STOPRATE, RESTORDB, NOVAC
060769,000148: 
060770,000149:                                                                                                  #  ZERO:  (FOR ALL AXES) AOS, ALPHA, AOSTERM, OMEGAD, DELCDU, DELEROR
060771,000150: 

Page 1406

060773,000152:                                                                                                  #  OUTPUT:  DRIFTBIT/DAPBOOLS, DB, JOB TO DO 1/ACCS
060774,000153: 
060775,000154:                                                                                                  #  DEBRIS:  A, L, Q, RUPTREG1, RUPTREG2, (ITEMPS IN NOVAC)
060776,000155: 
060777,000156: 20,2205           00006        ALLCOAST           EXTEND                                         #  SAVE Q FOR RETURN
060778,000157: 20,2206           22071                           QXCH     RUPTREG2                              
060779,000158: 20,2207           02166                           TC       STOPRATE                              #  CLEAR RATE INTERFACE.  RETURN WITH A=0
060780,000159: 20,2210           22003                           LXCH     EBANK                                 #    AND L=EBANK6.  SAVE CALLERS EBANK.
060781,000160: 20,2211           55536                           TS       AOSQ                                  
060782,000161: 20,2212           55537                           TS       AOSQ       +1                         
060783,000162: 20,2213           55540                           TS       AOSR                                  
060784,000163: 20,2214           55541                           TS       AOSR       +1                         
060785,000164: 20,2215           55424                           TS       ALPHAQ                                #  FOR DOWNLIST.
060786,000165: 20,2216           55425                           TS       ALPHAR                                
060787,000166: 20,2217           55544                           TS       AOSQTERM                              
060788,000167: 20,2220           55545                           TS       AOSRTERM                              
060789,000168: 20,2221           22003                           LXCH     EBANK                                 #  RESTORE EBANK  (EBANK6 NO LONGER NEEDED)
060790,000169: 
060791,000170: 20,2222           40111                           CS       DAPBOOLS                              #  SET UP DRIFTBIT
060792,000171: 20,2223           74735                           MASK     DRIFTBIT                              
060793,000172: 20,2224           26111                           ADS      DAPBOOLS                              
060794,000173: 20,2225           02116                           TC       RESTORDB   +1                         #  RESTORE DEADBANK TO CREW-SELECTED VALUE.
060795,000174: 
060796,000175: 20,2226           00071                           TC       RUPTREG2                              #  RETURN.
060797,000176: 
060798,000177: 
060799,000178: 

End of include-file DAP_INTERFACE_SUBROUTINES.agc.  Parent file is MAIN.agc