Source Code
![]() |
These source-code files derive from a printout of Luminary 116 (the Apollo 12
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Ron Burkey, 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 116 OF AGC PROGRAM LUMINARY BY NASA 2021112-071 19:09 AUG. 11,1969Note that the date is the date of the printout, not the date of the program revision. |
015326,000002: ## Copyright: Public domain.
015327,000003: ## Filename: KALCMANU_STEERING.agc
015328,000004: ## Purpose: A section of Luminary revision 116.
015329,000005: ## It is part of the source code for the Lunar Module's (LM)
015330,000006: ## Apollo Guidance Computer (AGC) for Apollo 12.
015331,000007: ## This file is intended to be a faithful transcription, except
015332,000008: ## that the code format has been changed to conform to the
015333,000009: ## requirements of the yaYUL assembler rather than the
015334,000010: ## original YUL assembler.
015335,000011: ## Reference: pp. 366-370
015336,000012: ## Assembler: yaYUL
015337,000013: ## Contact: Ron Burkey <info@sandroid.org>.
015338,000014: ## Website: www.ibiblio.org/apollo/index.html
015339,000015: ## Mod history: 2017-01-22 MAS Created from Luminary 99.
015340,000016: ## 2017-03-07 RSB Transcribed, and then proofed comment-text using
015341,000017: ## 3-way diff vs Luminary 99 and Luminary 131.
015342,000018: ## (Admittedly, the former is more for detecting errors
015343,000019: ## in Luminary 99 than the other way around.)
015344,000020: ## 2017-03-17 RSB Comment-text fixes identified in diff'ing
015345,000021: ## Luminary 99 vs Comanche 55.
015346,000022:
![]() |
Page 366 |
015348,000024: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
015349,000025:
015350,000026: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
015351,000027:
015352,000028: 22,3003 E6,1707 EBANK= TTEMP
015353,000029:
015354,000030: 22,3003 04616 NEWDELHI TC BANKCALL # CHECK FOR AUTO STABILIZATION
015355,000031: 22,3004 54266 CADR ISITAUTO # ONLY
015356,000032: 22,3005 10000 CCS A
015357,000033: 22,3006 12730 TCF NOGO -2
015358,000034: 22,3007 06042 NEWANGL TC INTPRET
015359,000035: 22,3010 75160 AXC,1 AXC,2
015360,000036: 22,3011 03246 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
015361,000037: 22,3012 02230 KEL # STABLE MEMBER AXES
015362,000038: 22,3013 77624 CALL
015363,000039: 22,3014 44312 MXM3
015364,000040: 22,3015 45575 VLOAD STADR
015365,000041: 22,3016 50514 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
015366,000042: 22,3017 77626 STADR
015367,000043: 22,3020 50522 STOVL MIS +6D
015368,000044: 22,3021 77626 STADR
015369,000045: 22,3022 74530 STORE MIS
015370,000046: 22,3023 45160 AXC,1 CALL
015371,000047: 22,3024 03246 MIS
015372,000048: 22,3025 44654 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
015373,000049: 22,3026 77634 RTB
015374,000050: 22,3027 21621 V1STO2S
015375,000051: 22,3030 03304 STORE NCDU # NEW CDU ANGLES
015376,000052: 22,3031 77414 BONCLR EXIT
015377,000053: 22,3032 01215 CALCMAN2
015378,000054: 22,3033 45122 MANUSTAT # TO START MANEUVER
015379,000055: 22,3034 34752 CAF TWO # +0 OTHERWISE
015380,000056: 22,3035 55261 INCRDCDU TS SPNDX
015381,000057: 22,3036 51261 INDEX SPNDX
015382,000058: 22,3037 31676 CA BCDU # INITIAL CDU ANGLES
015383,000059: 22,3040 00006 EXTEND # OR PREVIOUS DESIRED CDU ANGLES
015384,000060: 22,3041 51261 INDEX SPNDX
015385,000061: 22,3042 21703 MSU NCDU
015386,000062: 22,3043 00006 EXTEND
015387,000063: 22,2000 SETLOC KALCMON1
015388,000064: 22,2000 BANK
015389,000065:
015390,000066: 22,3044 73121 MP DT/TAU
015391,000067: 22,3045 10000 CCS A # CONVERT TO 2S COMPLEMENT
015392,000068: 22,3046 64753 AD ONE
015393,000069: 22,3047 13051 TCF +2
015394,000070: 22,3050 40000 COM
015395,000071: 22,3051 51261 INDEX SPNDX
015396,000072: 22,3052 55640 TS DELDCDU # ANGLE INCREMENTS TO BE ADDED TO
015397,000073: 22,3053 51261 INDEX SPNDX # CDUXD, CDUYD, CDUZD EVERY TENTH SECOND
![]() |
Page 367 |
015399,000075: 22,3054 31703 CA NCDU # BY LEM DAP
015400,000076: 22,3055 51261 INDEX SPNDX
015401,000077: 22,3056 57676 XCH BCDU
015402,000078: 22,3057 51261 INDEX SPNDX
015403,000079: 22,3060 55635 TS CDUXD
015404,000080: 22,3061 11261 CCS SPNDX
015405,000081: 22,3062 13035 TCF INCRDCDU # LOOP FOR THREE AXES
015406,000082:
015407,000083: 22,3063 00003 RELINT
015408,000084:
015409,000085: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
015410,000086:
015411,000087: 22,3064 03075 TMANUCHK TC TIMECHK
015412,000088: 22,3065 13170 TCF CONTMANU
015413,000089: 22,3066 34753 CAF ONE
015414,000090: 22,3067 00004 MANUSTAL INHINT # END MAJOR PART OF MANEUVER WITHIN 1 SEC
015415,000091: 22,3070 05203 TC WAITLIST # UNDER WAITLIST CALL TO MANUSTOP
015416,000092: 22,3071 E6,1707 EBANK= TTEMP
015417,000093: 22,3071 03213 44066 2CADR MANUSTOP
015418,000094:
015419,000095: 22,3073 00003 RELINT
015420,000096: 22,3074 15155 TCF ENDOFJOB
015421,000097:
015422,000098: 22,3075 00006 TIMECHK EXTEND
015423,000099: 22,3076 40025 DCS TIME2
015424,000100: 22,3077 53710 DXCH TTEMP
015425,000101: 22,3100 00006 EXTEND
015426,000102: 22,3101 31734 DCA TM
015427,000103: 22,3102 21710 DAS TTEMP
015428,000104: 22,3103 11707 CCS TTEMP
015429,000105: 22,3104 00002 TC Q
015430,000106: 22,3105 13107 TCF +2
015431,000107: 22,3106 13117 TCF 2NDRETRN
015432,000108: 22,3107 11710 CCS TTEMP +1
015433,000109: 22,3110 00002 TC Q
015434,000110: 22,3111 13113 TCF MANUOFF
015435,000111: 22,3112 40000 COM
015436,000112: 22,3113 63166 MANUOFF AD ONESEK +1
015437,000113: 22,3114 00006 EXTEND
015438,000114: 22,3115 63117 BZMF 2NDRETRN
015439,000115: 22,3116 24002 INCR Q
015440,000116: 22,3117 24002 2NDRETRN INCR Q
015441,000117: 22,3120 00002 TC Q
015442,000118:
015443,000119: 22,3121 03146 DT/TAU DEC .1
015444,000120:
015445,000121: 22,3122 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE
015446,000122: 22,3123 00006 EXTEND # FOR AUTOMATIC MANEUVERS
015447,000123: 22,3124 30025 DCA TIME2
![]() |
Page 368 |
015449,000125: 22,3125 21734 DAS TM # TM+T0 MANEUVER COMPLETION TIME
015450,000126: 22,3126 00006 EXTEND
015451,000127: 22,3127 43166 DCS ONESEK
015452,000128: 22,3130 21734 DAS TM # (TM+T0)-1
015453,000129: 22,3131 00004 INHINT
015454,000130: 22,3132 34752 CAF TWO
015455,000131: 22,3133 55701 RATEBIAS TS KSPNDX
015456,000132: 22,3134 60000 DOUBLE
015457,000133: 22,3135 55702 TS KDPNDX
015458,000134: 22,3136 50000 INDEX A
015459,000135: 22,3137 31725 CA BRATE
015460,000136: 22,3140 51701 INDEX KSPNDX # STORE MANEUVER RATE IN
015461,000137: 22,3141 55643 TS OMEGAPD # OMEGAPD, OMEGAQD, OMEGARD
015462,000138: 22,3142 00006 EXTEND
015463,000139: 22,3143 63145 BZMF +2 # COMPUTE ATTITUDE ERROR
015464,000140: 22,3144 40000 COM # OFFSET = (WX)ABS(WX)/2AJX
015465,000141: 22,3145 00006 EXTEND # WHERE AJX= 2-JET ACCELERATION
015466,000142: 22,3146 73167 MP BIASCALE # = -1/16
015467,000143: 22,3147 00006 EXTEND
015468,000144: 22,3150 51702 INDEX KDPNDX
015469,000145: 22,3151 71725 MP BRATE
015470,000146: 22,3152 00006 EXTEND
015471,000147: 22,3153 51701 INDEX KSPNDX
015472,000148: 22,3154 11530 DV 1JACC # = AJX $ 90 DEG/SEC-SEC
015473,000149: 22,3155 51701 INDEX KSPNDX
015474,000150: 22,3156 55274 TS DELPEROR # $ 180 DEG
015475,000151: 22,3157 11701 CCS KSPNDX
015476,000152: 22,3160 13133 TCF RATEBIAS
015477,000153:
015478,000154: 22,3161 30025 CA TIME1
015479,000155: 22,3162 63166 AD ONESEK +1
015480,000156: 22,3163 57706 XCH NEXTIME
015481,000157: 22,3164 13034 TCF INCRDCDU -1
015482,000158:
015483,000159: 22,3165 00000 ONESEK DEC 0 B-14
015484,000160: 22,3166 00144 DEC 100 B-14
015485,000161:
015486,000162: 22,3167 75777 BIASCALE OCT 75777 # = -1/16
015487,000163:
015488,000164: 22,3170 40025 CONTMANU CS TIME1 # RESET FOR NEXT DCDU UPDATE
015489,000165: 22,3171 61706 AD NEXTIME
015490,000166: 22,3172 10000 CCS A
015491,000167: 22,3173 64753 AD ONE
015492,000168: 22,3174 13177 TCF MANUCALL
015493,000169: 22,3175 64735 AD NEGMAX
015494,000170: 22,3176 40000 COM
015495,000171: 22,3177 00004 MANUCALL INHINT # CALL FOR NEXT UPDATE VIA WAITLIST
015496,000172: 22,3200 05203 TC WAITLIST
015497,000173: 22,3201 E6,1707 EBANK= TTEMP
015498,000174: 22,3201 03206 44066 2CADR UPDTCALL
![]() |
Page 369 |
015500,000176: 22,3203 33166 CAF ONESEK +1 # INCREMENT TIME FOR NEXT UPDATE
015501,000177: 22,3204 27706 ADS NEXTIME
015502,000178: 22,3205 15155 TCF ENDOFJOB
015503,000179:
015504,000180: 22,3206 37717 UPDTCALL CAF PRIO26 # SATELLITE PROGRAM TO CALL FOR UPDATE
015505,000181: 22,3207 05105 TC FINDVAC # OF STEERING COMMANDS
015506,000182: 22,3210 E6,1707 EBANK= TTEMP
015507,000183: 22,3210 03003 44066 2CADR NEWDELHI
015508,000184:
015509,000185: 22,3212 05261 TC TASKOVER
015510,000186:
![]() |
Page 370 |
015512,000188: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
015513,000189:
015514,000190: 22,3213 34755 MANUSTOP CAF ZERO # ZERO MANEUVER RATES
015515,000191: 22,3214 55642 TS DELDCDU2
015516,000192: 22,3215 55645 TS OMEGARD
015517,000193: 22,3216 55276 TS DELREROR
015518,000194: 22,3217 55641 TS DELDCDU1
015519,000195: 22,3220 55644 TS OMEGAQD
015520,000196: 22,3221 55275 TS DELQEROR
015521,000197: 22,3222 30323 CA CPSI # SET DESIRED GIMBAL ANGLES TO
015522,000198: 22,3223 55637 TS CDUZD # DESIRED FINAL GIMBAL ANGLES
015523,000199: 22,3224 30322 CA CTHETA
015524,000200: 22,3225 55636 TS CDUYD
015525,000201: 22,3226 30321 ENDROLL CA CPHI # NO FINAL YAW
015526,000202: 22,3227 55635 TS CDUXD
015527,000203: 22,3230 34755 CAF ZERO
015528,000204: 22,3231 55643 TS OMEGAPD # I.E. MANEUVER DID NOT GO THRU
015529,000205: 22,3232 55640 TS DELDCDU # GIMBAL LOCK ORIGINALLY
015530,000206: 22,3233 55274 TS DELPEROR
015531,000207: 22,3234 31306 GOODMANU CA ATTPRIO # RESTORE USERS PRIO
015532,000208: 22,3235 54063 TS NEWPRIO
015533,000209:
015534,000210: 22,3236 34755 CA ZERO # ZERO ATTCADR
015535,000211: 22,3237 53305 DXCH ATTCADR
015536,000212:
015537,000213: 22,3240 05116 TC SPVAC # RETURN TO USER
015538,000214:
015539,000215: 22,3241 05261 TC TASKOVER
015540,000216:
015541,000217:
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc