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.

016665,000002:                                                                                                  ## Copyright:   Public domain.
016666,000003:                                                                                                  ## Filename:    SYSTEM_TEST_STANDARD_LEAD_INS.agc
016667,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
016668,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
016669,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
016670,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
016671,000008:                                                                                                  ##              that the code format has been changed to conform to the
016672,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
016673,000010:                                                                                                  ##              original YUL assembler.
016674,000011:                                                                                                  ## Reference:   pp. 382-384
016675,000012:                                                                                                  ## Assembler:   yaYUL
016676,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
016677,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
016678,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
016679,000016:                                                                                                  ##              2016-11-25 HG   Transcribed
016680,000017:                                                                                                  ##              2016-12-23 RSB  Proofed comment text with octopus/ProoferComments
016681,000018:                                                                                                  ##                              and fixed all errors found.
016682,000019: 

Page 382

016684,000021: 22,3242  E5,1642                                  EBANK=   XSM                                   
016685,000022: 
016686,000023: 33,2113                                           BANK     33                                    
016687,000024: 04,2000                                           SETLOC   E/PROG                                
016688,000025: 04,2000                                           BANK                                           
016689,000026: 
016690,000027: 04,2617                                           COUNT*   $$/P07                                
016691,000028: 
016692,000029:                                                                                                  #           SPECIAL PROGRAMS TO EASE THE PANGS OF ERASABLE MEMORY PROGRAMS.
016693,000030: 
016694,000031:                                                                                                  #  E/BKCALL   FOR DOING BANKCALLS FROM AND RETURNING TO ERASABLE.
016695,000032: 
016696,000033:                                                                                                  #           THIS ROUTINE IS CALLABLE FROM ERASABLE OR FIXED.  LIKE BANKCALL, HOWEVER, SWITCHING BETWEEN S3 AND S4
016697,000034:                                                                                                  #  IS NOT POSSIBLE.
016698,000035: 
016699,000036:                                                                                                  #           THE CALLING SEQUENCE IS:
016700,000037: 
016701,000038:                                                                                                  #                                                   TC     BANKCALL
016702,000039:                                                                                                  #                                                   CADR   E/BKCALL
016703,000040:                                                                                                  #                                                   CADR   ROUTINE         WHERE YOU WANT TO GO IN FIXED.
016704,000041:                                                                                                  #                                                   RETURN HERE FROM DISPLAY TERMINATE, BAD STALL OR TC Q.
016705,000042:                                                                                                  #                                                   RETURN HERE FROM DISPLAY PROCEED OR GOOD RETURN FROM STALL.
016706,000043:                                                                                                  #                                                   RETURN HERE FROM DISPLAY ENTER OR RECYCLE.
016707,000044: 
016708,000045:                                                                                                  #           THIS ROUTINE REQUIRES TWO ERASABLES (EBUF2, +1) IN UNSWITCHED WHICH ARE UNSHARED BY INTERRUPTS AND
016709,000046:                                                                                                  #  OTHER EMEMORY PROGRAMS.
016710,000047: 
016711,000048:                                                                                                  #           A + L ARE PRESERVED THROUGH BANKCALL AND E/BKCALL.
016712,000049: 
016713,000050: 04,2617           52134        E/BKCALL           DXCH     BUF2                                  #  SAVE A,L AND GET DP RETURN.
016714,000051: 04,2620           53167                           DXCH     EBUF2                                 #  SAVE DP RETURN.
016715,000052: 04,2621           25166                           INCR     EBUF2                                 #  RETURN +1 BECAUSE DOUBLE CADR.
016716,000053: 04,2622           30006                           CA       BBANK                                 
016717,000054: 04,2623           75003                           MASK     LOW10                                 #  GET CURRENT EBANK.  (SBANK SOMEDAY)
016718,000055: 04,2624           27167                           ADS      EBUF2      +1                         #  FORM BBCON.  (WAS FBANK)
016719,000056: 04,2625           51166                           NDX      EBUF2                                 
016720,000057: 04,2626           27777                           CA       0          -1                         #  GET CADR OF ROUTINE.
016721,000058: 04,2627           04613                           TC       SWCALL                                #  GO TO ROUTINE, SETTING Q TO SWRETURN
016722,000059:                                                                                                  #  AND RESTORING A + L.
016723,000060: 04,2630           02634                           TC       +4                                    #  TX Q, V34, OR BAD STALL RETURN.
016724,000061: 04,2631           02633                           TC       +2                                    #  PROCEED OR GOOD STALL RETURN.
016725,000062: 04,2632           25166                           INCR     EBUF2                                 #  ENTER OR RECYCLE RETURN.
016726,000063: 04,2633           25166                           INCR     EBUF2                                 
016727,000064: 04,2634           53167        E/SWITCH           DXCH     EBUF2                                 
016728,000065: 04,2635           52006                           DTCB                                           
016729,000066: 

Page 383

016731,000068:                                                                                                  #  E/CALL          FOR CALLING A FIXED MEMORY INTERPRETIVE SUBROUTINE FROM ERASABLE AND RETURNING TO ERASABLE.
016732,000069: 
016733,000070:                                                                                                  #           THE CALLING SEQUENCE IS...
016734,000071: 
016735,000072:                                                                                                  #                                                   RTB
016736,000073:                                                                                                  #                                                          E/CALL
016737,000074:                                                                                                  #                                                   CADR   ROUTINE            THE INTERPRETIVE SUBROUTINE YOU WANT.
016738,000075:                                                                                                  #                                                                             RETURNS HERE IN INTERPRETIVE.
016739,000076: 
016740,000077: 04,2636           22164        E/CALL             LXCH     LOC                                   #  ADRES -1 OF CADR.
016741,000078: 04,2637           50001                           INDEX    L                                     
016742,000079: 04,2640           30001                           CA       L                                     #  CADR IN A.
016743,000080: 04,2641           24001                           INCR     L                                     
016744,000081: 04,2642           24001                           INCR     L                                     #  RETURN ADRES IN L.
016745,000082: 04,2643           53167                           DXCH     EBUF2                                 #  STORE CADR AND RETURN.
016746,000083: 04,2644           06060                           TC       INTPRET                               
016747,000084: 04,2645           77624                           CALL                                           
016748,000085: 04,2646           01166                                    EBUF2                                 #  INDIRECTLY EXECUTE ROUTINE.  IT MUST
016749,000086: 04,2647           77776                           EXIT                                           #  LEAVE VIA RVQ OR EQUIVALENT.
016750,000087: 04,2650           23167                           LXCH     EBUF2      +1                         #  PICK UP RETURN.
016751,000088: 04,2651           16062                           TCF      INTPRET    +2                         #  SET LOC AND RETURN TO CALLER.
016752,000089: 

Page 384

016754,000091:                                                                                                  #  E/JOBWAK        FOR WAKING UP ERASABLE MEMORY JOBS.
016755,000092: 
016756,000093:                                                                                                  #           THIS ROUTINE MUST BE CALLED IN INTERRUPT OR WITH INTERRUPTS INHIBITED.
016757,000094: 
016758,000095:                                                                                                  #           THE CALLING SEQUENCE IS:
016759,000096: 
016760,000097:                                                                                                  #                                                      INHINT
016761,000098:                                                                                                  #                                                        .
016762,000099:                                                                                                  #                                                        .
016763,000100:                                                                                                  #                                                      CA      WAKEADR         ADDRESS OF SLEEPING JOB
016764,000101:                                                                                                  #                                                      TC      IBNKCALL
016765,000102:                                                                                                  #                                                      CADR    E/JOBWAK
016766,000103:                                                                                                  #                                                        .                     RETURNS HERE
016767,000104:                                                                                                  #                                                        .
016768,000105:                                                                                                  #                                                        .
016769,000106:                                                                                                  #                                                      RELINT                  IF YOU DID AN INHINT.
016770,000107: 
016771,000108: 33,2113                                           BANK     33                                    
016772,000109: 04,2000                                           SETLOC   E/PROG                                
016773,000110: 04,2000                                           BANK                                           
016774,000111: 
016775,000112: 04,2652                                           COUNT*   $$/P07                                
016776,000113: 
016777,000114: 04,2652           05130        E/JOBWAK           TC       JOBWAKE                               #  ARRIVE IWTH ADRES IN A.
016778,000115: 04,2653           44732                           CS       BIT11                                 
016779,000116: 04,2654           50064                           NDX      LOCCTR                                
016780,000117: 04,2655           26164                           ADS      LOC                                   #  KNOCK FIXED MEMORY BIT OUT OF ADRES.
016781,000118: 04,2656           00072                           TC       RUPTREG3                              #  RETURN
016782,000119: 

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