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,1971Note 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