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. |
028808,000002: ## Copyright: Public domain.
028809,000003: ## Filename: GROUND_TRACKING_DETERMINATION_PROGRAM_-_P21.agc
028810,000004: ## Purpose: A section of Luminary revision 210.
028811,000005: ## It is part of the source code for the Lunar Module's (LM)
028812,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
028813,000007: ## This file is intended to be a faithful transcription, except
028814,000008: ## that the code format has been changed to conform to the
028815,000009: ## requirements of the yaYUL assembler rather than the
028816,000010: ## original YUL assembler.
028817,000011: ## Reference: pp. 657-660
028818,000012: ## Assembler: yaYUL
028819,000013: ## Contact: Ron Burkey <info@sandroid.org>.
028820,000014: ## Website: www.ibiblio.org/apollo/index.html
028821,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
028822,000016: ## 2016-11-29 RRB Updated from Luminary210 source.
028823,000017: ## 2016-11-30 HG fix operand GOTOPOOH -> GOTOP00H
028824,000018: ## 2016-12-07 HG unfix and revert P00 -> POO
028825,000019: ## 2016-12-25 RSB Comment-text proofed using ProoferComments
028826,000020: ## and corrected errors found.
028827,000021:
![]() |
Page 657 |
028829,000023: # GROUND TRACKING DETERMINATION PROGRAM P21
028830,000024:
028831,000025: # PROGRAM DESCRIPTION
028832,000026: # MOD NO - 1
028833,000027: # MOD BY - N. M. NEVILLE
028834,000028: # FUNCTIONAL DECRIPTION -
028835,000029:
028836,000030: # TO PROVIDE THE ASTRONAUT DETAILS OF THE LM OR CSM GROUND TRACK WITHOUT
028837,000031: # THE NEED FOR GROUND COMMUNICATION (REQUESTED BY DSKY).
028838,000032: # CALLING SEQUENCE -
028839,000033:
028840,000034: # ASTRONAUT REQUEST THROUGH DSKY V37E21E
028841,000035: # SUBROUTINES CALLED -
028842,000036: # GOPERF4
028843,000037: # GOFLASH
028844,000038: # THISPREC
028845,000039: # OTHPREC
028846,000040: # LAT-LONG
028847,000041: # NORMAL EXIT MODES -
028848,000042:
028849,000043: # ASTRONAUT REQUEST TROUGH DSKY TO TERMINATE PROGRAM V34E
028850,000044: # ALARM OR ABORT EXIT MODES -
028851,000045:
028852,000046: # NONE
028853,000047: # OUTPUT -
028854,000048:
028855,000049: # OCTAL DISPLAY OF OPTION CODE AND VEHICLE WHOSE GROUND TRACK IS TO BE
028856,000050: # COMPUTED
028857,000051: # OPTION CODE 00002
028858,000052: # THIS 00001
028859,000053: # OTHER 00002
028860,000054: # DECIMAL DISPLAY OF TIME TO BE INTEGRATED TO HOURS, MINUTES, SECONDS
028861,000055: # DECIMAL DISPLAY OF LAT,LONG,ALT
028862,000056: # ERASABLE INITIALIZATION REQUIRED
028863,000057: # AX0 2DEC 4.652459653 E-5 RADIANS %68-69 CONSTANTS"
028864,000058: # -AY0 2DEC 2.147535898 E-5 RADIANS
028865,000059: # AZ0 2DEC .7753206164 REVOLUTIONS
028866,000060: # FOR LUNAR ORBITS 504LM VECTOR IS NEEDED
028867,000061: # 504LM 2DEC -2.700340600 E-5 RADIANS
![]() |
Should _2 and _4 be +2 and +4? Value has _ instead of -, I think this is a typo — RRB |
028869,000063: # 504LM _2 2DEC -7.514128400 E-4 RADIANS
028870,000064: # 504LM _4 2DEC _2.553198641 E-4 RADIANS
028871,000065:
028872,000066: # NONE
028873,000067: # DEBRIS
![]() |
Page 658 |
028875,000069:
028876,000070: # CENTRALS-A,Q,L
028877,000071: # OTHER-THOSE USED BY THE ABOVE LISTED SUBROUTINES
028878,000072: # SEE LEMPREC,LAT-LONG
028879,000073:
028880,000074: 35,2455 30,2000 SBANK= LOWSUPER # FOR LOW 2CADR'S.
028881,000075:
028882,000076: 33,2113 BANK 33
028883,000077: 24,2000 SETLOC P20S
028884,000078: 24,2000 BANK
028885,000079:
028886,000080: 24,3441 E7,1762 EBANK= P21TIME
028887,000081: 24,3441 COUNT* $$/P21
028888,000082: 24,3441 34744 PROG21 CAF ONE
028889,000083: 24,3442 55144 TS OPTION2 # ASSUMED VEHICLE IS LM, R2 = 00001
028890,000084: 24,3443 34743 CAF BIT2 # OPTION 2
028891,000085: 24,3444 04607 TC BANKCALL
028892,000086: 24,3445 20645 CADR GOPERF4
028893,000087: 24,3446 06001 TC GOTOPOOH # TERMINATE
028894,000088: 24,3447 03451 TC +2 # PROCEED VALUE OF ASSUMED VEHICLE OK
028895,000089: 24,3450 03443 TC -5 # R2 LOADED THROUGH DSKY
028896,000090: 24,3451 34746 CAF ZERO # INITIAL TIME = PRESENT TIME
028897,000091: 24,3452 55044 TS DSPTEM1
028898,000092: 24,3453 55045 TS DSPTEM1 +1
028899,000093: 24,3454 33631 P21PROG1 CAF V6N34 # LOAD DESIRED TIME OF LAT-LONG.
028900,000094: 24,3455 04607 TC BANKCALL
028901,000095: 24,3456 20471 CADR GOFLASH
028902,000096: 24,3457 06001 TC GOTOPOOH # TERM
028903,000097: 24,3460 03462 TC +2 # PROCEED VALUES OK
028904,000098: 24,3461 03454 TC -5 # TIME LOADED THROUGH DSKY
028905,000099: 24,3462 06060 TC INTPRET
028906,000100: 24,3463 53145 DLOAD BZE
028907,000101: 24,3464 01045 DSPTEM1
028908,000102: 24,3465 51623 P21PRTM
028909,000103: 24,3466 34041 P21PROG2 STCALL TDEC1 # INTEG TO TIME SPECIFIED IN TDEC1
028910,000104: 24,3467 27447 INTSTALL
028911,000105: 24,3470 43014 BON CLEAR
028912,000106: 24,3471 00304 P21FLAG
028913,000107: 24,3472 51510 P21CONT # ON---RECYCLE USING BASE VECTOR
028914,000108: 24,3473 01674 VINTFLAG # OFF--1ST PASS CALL BASE VECTOR
028915,000109: 24,3474 70535 SLOAD SR1
028916,000110: 24,3475 01145 OPTION2
028917,000111: 24,3476 43030 BHIZ SET
028918,000112: 24,3477 51501 +2 # ZERO--THIS VEHICLE (LM)
028919,000113: 24,3500 01474 VINTFLAG # ONE--OTHER VEHICLE (CM)
028920,000114: 24,3501 43014 CLEAR CLEAR
028921,000115: 24,3502 01676 DIM0FLAG
028922,000116: 24,3503 01673 INTYPFLG # PRECISION
028923,000117: 24,3504 77624 CALL
028924,000118: 24,3505 27172 INTEGRV # CALCULATE
028925,000119: 24,3506 77650 GOTO # -AND
![]() |
Page 659 |
028927,000121: 24,3507 51532 P21VSAVE # -SAVE BASE VECTOR
028928,000122: 24,3510 77775 P21CONT VLOAD
028929,000123: 24,3511 03676 P21BASER # RECYCLE -- INTEG FROM BASE VECTOR
028930,000124: 24,3512 25535 STOVL RCV # --POS
028931,000125: 24,3513 03704 P21BASEV
028932,000126: 24,3514 15543 STODL VCV # --VEL
028933,000127: 24,3515 03763 P21TIME
028934,000128: 24,3516 01517 STORE TET # --TIME
028935,000129: 24,3517 43014 CLEAR CLEAR
028936,000130: 24,3520 01676 DIM0FLAG
028937,000131: 24,3521 00263 MOONFLAG
028938,000132: 24,3522 53135 SLOAD BZE
028939,000133: 24,3523 01163 P21ORIG
028940,000134: 24,3524 51527 +3 # ZERO=EARTH
028941,000135: 24,3525 77614 SET # ---2=MOON
028942,000136: 24,3526 00063 MOONFLAG
028943,000137: 24,3527 45014 +3 CLEAR CALL
028944,000138: 24,3530 01673 INTYPFLG
028945,000139: 24,3531 27145 INTEGRVS
028946,000140: 24,3532 77745 P21VSAVE DLOAD # SAVE CURRENT BASE VECTOR
028947,000141: 24,3533 00015 TAT
028948,000142: 24,3534 27763 STOVL P21TIME # --TIME
028949,000143: 24,3535 00017 RATT1
028950,000144: 24,3536 27676 STOVL P21BASER # --POS B-29 OR B-27
028951,000145: 24,3537 00025 VATT1
028952,000146: 24,3540 03704 STORE P21BASEV # --VEL B-07 OR B-05
028953,000147: 24,3541 53646 ABVAL SL*
028954,000148: 24,3542 57576 0,2
028955,000149: 24,3543 27712 STOVL P21VEL # VEL/ FOR N91 DISP
028956,000150: 24,3544 00001 RATT
028957,000151: 24,3545 50256 UNIT DOT
028958,000152: 24,3546 00007 VATT # U(R).V
028959,000153: 24,3547 67471 DDV ASIN # U(R).U(V)
028960,000154: 24,3550 03712 P21VEL
028961,000155: 24,3551 03714 STORE P21GAM # SIN-1 U(R).U(V) , -90 TO &90
028962,000156: 24,3552 67334 SXA,2 SLOAD
028963,000157: 24,3553 01162 P21ORIG # 0 = EARTH
028964,000158: 24,3554 01145 OPTION2
028965,000159: 24,3555 46142 SR1 BHIZ
028966,000160: 24,3556 51561 +3
028967,000161: 24,3557 77650 GOTO
028968,000162: 24,3560 51564 +4
028969,000163: 24,3561 77614 +3 BON
028970,000164: 24,3562 04307 SURFFLAG
028971,000165: 24,3563 51566 P21DSP
028972,000166: 24,3564 77614 +4 SET
028973,000167: 24,3565 00064 P21FLAG
028974,000168: 24,3566 67214 P21DSP CLEAR SLOAD # GENERATE DISPLAY DATA
028975,000169: 24,3567 01663 LUNAFLAG
028976,000170: 24,3570 00050 X2
![]() |
Page 660 |
028978,000172: 24,3571 43054 BZE SET
028979,000173: 24,3572 51574 +2 # 0 = EARTH
028980,000174: 24,3573 01463 LUNAFLAG
028981,000175: 24,3574 77775 VLOAD
028982,000176: 24,3575 00001 RATT
028983,000177: 24,3576 16032 STODL ALPHAV
028984,000178: 24,3577 00015 TAT
028985,000179: 24,3600 45014 CLEAR CALL
028986,000180: 24,3601 00662 ERADFLAG
028987,000181: 24,3602 26406 LAT-LONG
028988,000182: 24,3603 77605 DMP # MPAC = ALT, METERS B-29
028989,000183: 24,3604 11633 K.01
028990,000184: 24,3605 03716 STORE P21ALT # ALT/100 FOR N91 DISP
028991,000185: 24,3606 77776 EXIT
028992,000186: 24,3607 33630 CAF V06N43 # DISPLAY LAT, LONG, ALT
028993,000187: 24,3610 04607 TC BANKCALL # LAT, LONG = 1/2 REVS B0
028994,000188: 24,3611 20471 CADR GOFLASH # ALT = KM B14
028995,000189: 24,3612 06001 TC GOTOPOOH # TERM
028996,000190: 24,3613 06001 TC GOTOPOOH
028997,000191: 24,3614 06060 TC INTPRET # V32E RECYCLE
028998,000192: 24,3615 43345 DLOAD DAD
028999,000193: 24,3616 03763 P21TIME
029000,000194: 24,3617 11627 600SEC # 600 SECONDS OR 10 MIN
029001,000195: 24,3620 01045 STORE DSPTEM1
029002,000196: 24,3621 77634 RTB
029003,000197: 24,3622 51454 P21PROG1
029004,000198: 24,3623 52034 P21PRTM RTB GOTO
029005,000199: 24,3624 21603 LOADTIME
029006,000200: 24,3625 51466 P21PROG2
029007,000201: 24,3626 00003 25140 600SEC 2DEC 60000 B-28 # 10 MIN
029008,000202:
029009,000203: 24,3630 01453 V06N43 VN 00643
029010,000204: 24,3631 01442 V6N34 VN 00634
029011,000205: 24,3632 00243 32703 K.01 2DEC .01
029012,000206:
End of include-file GROUND_TRACKING_DETERMINATION_PROGRAM_-_P21.agc. Parent file is MAIN.agc