Source Code
These source-code files were transcribed from a printout in Don Eyles's personal
collection, scanned by archive.org, and financially sponsored by Linden Sims.
A team of volunteers performed the transcription and proof-reading. The scanned
page images are available at
the Virtual AGC Project website, as well as higher-quality (but much larger)
images at
the Virtual AGC Project's collection in the Internet Archive. Report any problems by creating
"issues" at
the Virtual AGC Project's GitHub Repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 56 OF AGC PROGRAM ZERLINA BY ZOROASTER 9:12 OCT. 21,1970Note that the date is the date of the printout, not the date of the program revision. |
014544,000002: ## Copyright: Public domain.
014545,000003: ## Filename: LEM_GEOMETRY.agc
014546,000004: ## Purpose: A log section of Zerlina 56, the final revision of
014547,000005: ## Don Eyles's offline development program for the variable
014548,000006: ## guidance period servicer. It also includes a new P66 with LPD
014549,000007: ## (Landing Point Designator) capability, based on an idea of John
014550,000008: ## Young's. Neither of these advanced features were actually flown,
014551,000009: ## but Zerlina was also the birthplace of other big improvements to
014552,000010: ## Luminary including the terrain model and new (Luminary 1E)
014553,000011: ## analog display programs. Zerlina was branched off of Luminary 145,
014554,000012: ## and revision 56 includes all changes up to and including Luminary
014555,000013: ## 183. It is therefore quite close to the Apollo 14 program,
014556,000014: ## Luminary 178, where not modified with new features.
014557,000015: ## Reference: pp. 325-330
014558,000016: ## Assembler: yaYUL
014559,000017: ## Contact: Ron Burkey <info@sandroid.org>.
014560,000018: ## Website: www.ibiblio.org/apollo/index.html
014561,000019: ## Mod history: 2017-07-28 MAS Created from Luminary 210.
014562,000020: ## 2017-08-21 RSB Transcribed.
014563,000021: ## 2021-05-30 ABS Marker comment for page 332 -> 325
014564,000022:
Page 325 |
014566,000024: 23,2041 BANK 23
014567,000025: 13,2000 SETLOC LEMGEOM
014568,000026: 13,2000 BANK
014569,000027:
014570,000028: 13,2070 30,2000 SBANK= LOWSUPER
014571,000029: 13,2070 E5,1642 EBANK= XSM
014572,000030:
014573,000031: # THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM,CSM BY ADDING
014574,000032: # THE CONIC R,V AND THE DEVIATIONSR,V. THE STATE VECTORS ARE CONVERTED TO
014575,000033: # METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPRIATELY IN RN,VN OR
014576,000034: # R-OTHER , V-OTHER FOR DOWNLINK. THE ROUTINES NAMES ARE SWITCHED IN THE
014577,000035: # OTHER VEHICLES COMPUTER.
014578,000036:
014579,000037: # INPUT
014580,000038: # STATE VECTOR IN TEMPORARY STORAGE AREA
014581,000039: # IF STATE VECTOR IS SCALED POS B27 AND VEL B5
014582,000040: # SET X2 TO +2
014583,000041: # IF STATE VECTOR IS SCALED POS B29 AND VEL B7
014584,000042: # SET X2 TO 0
014585,000043:
014586,000044: # OUTPUT
014587,000045: # R(T) IN RN, V(T) IN VN, T IN PIPTIME
014588,000046: # OR
014589,000047: # R(T) IN R-OTHER, V(T) IN V-OTHER (T IS DEFINED BY T-OTHER)
014590,000048:
014591,000049: 13,2070 COUNT* $$/GEOM
014592,000050: 13,2070 43414 SVDWN2 BOF RVQ # SW=1=AVETOMID DOING W-MATRIX INTEG.
014593,000051: 13,2071 04756 AVEMIDSW
014594,000052: 13,2072 26073 +1
014595,000053: 13,2073 53775 VLOAD VSL*
014596,000054: 13,2074 01521 TDELTAV
014597,000055: 13,2075 57605 0 -7,2
014598,000056: 13,2076 53655 VAD VSL*
014599,000057: 13,2077 01535 RCV
014600,000058: 13,2100 57576 0,2
014601,000059: 13,2101 25220 STOVL RN
014602,000060: 13,2102 01527 TNUV
014603,000061: 13,2103 53257 VSL* VAD
014604,000062: 13,2104 57602 0 -4,2
014605,000063: 13,2105 01543 VCV
014606,000064: 13,2106 77657 VSL*
014607,000065: 13,2107 57576 0,2
014608,000066: 13,2110 15226 STODL VN
014609,000067: 13,2111 01517 TET
014610,000068: 13,2112 01234 STORE PIPTIME
014611,000069: 13,2113 77616 RVQ
014612,000070:
Page 326 |
014614,000072: 13,2114 53775 SVDWN1 VLOAD VSL*
014615,000073: 13,2115 01521 TDELTAV
014616,000074: 13,2116 57605 0 -7,2
014617,000075: 13,2117 53655 VAD VSL*
014618,000076: 13,2120 01535 RCV
014619,000077: 13,2121 57576 0,2
014620,000078: 13,2122 25716 STOVL R-OTHER
014621,000079: 13,2123 01527 TNUV
014622,000080: 13,2124 53257 VSL* VAD
014623,000081: 13,2125 57602 0 -4,2
014624,000082: 13,2126 01543 VCV
014625,000083: 13,2127 77657 VSL*
014626,000084: 13,2130 57576 0,2
014627,000085: 13,2131 01724 STORE V-OTHER
014628,000086: 13,2132 77616 RVQ
014629,000087:
Page 327 |
014631,000089: # THE FOLLOWING ROUTINE TAKES A HALF UNIT TARGET VECTOR REFERRED TO NAV BASE COORDINATES AND FINDS BOTH
014632,000090: # GIMBAL ORIENTATIONS AT WHICH THE RR MIGHT SIGHT THE TARGET. THE GIMBAL ANGLES CORRESPONDING TO THE PRESENT MODE
014633,000091: # ARE LEFT IN MODEA AND THOSE WHICH WOULD BE USED AFTER A REMODE IN MODEB. THIS ROUTINE ASSUMES MODE 1 IS TRUNNION
014634,000092: # ANGLE LESS THAN 90 DEGS IN ABS VALUE WITH ARBITRARY SHAFT, WITH A CORRESPONDING DEFINITION FOR MODE 2. MODE
014635,000093: # SELECTION AND LIMIT CHECKING ARE DONE ELSEWHERE.
014636,000094:
014637,000095: # THE MODE 1 CONFIGURATION IS CALCULATED FROM THE VECTOR AND THEN MODE 2 IS FOUND USING THE RELATIONS
014638,000096:
014639,000097: # S(2) = 180 + S(1)
014640,000098: # T(2) = 180 - T(1)
014641,000099:
014642,000100: # THE VECTOR ARRIVES IN MPAC WHERE TRG*SMNG OR *SMNB* WILL HAVE LEFT IT.
014643,000101:
014644,000102: 13,2133 00041 RRANGLES STORE 32D
014645,000103: 13,2134 57545 DLOAD DCOMP # SINCE WE WILL FIND THE MODE 1 SHAFT
014646,000104: 13,2135 00043 34D # ANGLE LATER, WE CAN FIND THE MODE 1
014647,000105: 13,2136 67401 SETPD ASIN # TRUNNION BY SIMPLY TAKING THE ARCSIN OF
014648,000106: 13,2137 00001 0 # THE Y COMPONENT, THE ASIN GIVING AN
014649,000107: 13,2140 44206 PUSH BDSU # ANSWER WHOSE ABS VAL IS LESS THAN 90 DEG
014650,000108: 13,2141 24005 LODPHALF
014651,000109: 13,2142 14005 STODL 4 # MODE 2 TRUNNION TO 4.
014652,000110:
014653,000111: 13,2143 24007 LO6ZEROS
014654,000112: 13,2144 24043 STOVL 34D # UNIT THE PROJECTION OF THE VECTOR
014655,000113: 13,2145 00041 32D # IN THE X-Z PLANE
014656,000114: 13,2146 41056 UNIT BOVB # IF OVERFLOW,TARGET VECTOR IS ALONG Y
014657,000115: 13,2147 52412 LUNDESCH # CALL FOR MANEUVER UNLESS ON LUNAR SURF
014658,000116: 13,2150 14041 STODL 32D # PROJECTION VECTOR.
014659,000117: 13,2151 00041 32D
014660,000118: 13,2152 44142 SR1 STQ
014661,000119: 13,2153 00051 S2
014662,000120: 13,2154 14023 STODL SINTH # USE ARCTRIG SINCE SHAFT COULD BE ARB.
014663,000121: 13,2155 00045 36D
014664,000122: 13,2156 77742 SR1
014665,000123: 13,2157 34021 STCALL COSTH
014666,000124: 13,2160 47316 ARCTRIG
014667,000125:
Page 328 |
014669,000127: 13,2161 43206 PUSH DAD # MODE 1 SHAFT TO 2.
014670,000128: 13,2162 24005 LODPHALF
014671,000129: 13,2163 24007 STOVL 6
014672,000130: 13,2164 00005 4
014673,000131: 13,2165 77634 RTB # FIND MODE 2 CDU ANGLES.
014674,000132: 13,2166 21617 2V1STO2S
014675,000133: 13,2167 25111 STOVL MODEB
014676,000134: 13,2170 00001 0
014677,000135: 13,2171 77634 RTB # MODE 1 ANGLES TO MODE A.
014678,000136: 13,2172 21617 2V1STO2S
014679,000137: 13,2173 01107 STORE MODEA
014680,000138: 13,2174 77776 EXIT
014681,000139:
014682,000140: 13,2175 40110 CS RADMODES # SWAP MODEA AND MODEB IF RR IN MODE 2.
014683,000141: 13,2176 74740 MASK ANTENBIT
014684,000142: 13,2177 10000 CCS A
014685,000143: 13,2200 12204 TCF +4
014686,000144:
014687,000145: 13,2201 53107 DXCH MODEA
014688,000146: 13,2202 53111 DXCH MODEB
014689,000147: 13,2203 53107 DXCH MODEA
014690,000148:
014691,000149: 13,2204 06051 TC INTPRET
014692,000150: 13,2205 77650 GOTO
014693,000151: 13,2206 00051 S2
014694,000152:
Page 329 |
014696,000154: # GIVEN RR TRUNNION AND SHAFT (T,S) IN TANGNB,+1,FIND THE ASSOCIATED
014697,000155: # LINE OF SIGHT IN NAV BASE AXES. THE HALF UNIT VECTOR, .5(SIN(S)COS(T),
014698,000156: # -SIN(T),COS(S)COS(T)) IS LEFT IN MPAC AND 32D.
014699,000157:
014700,000158: 23,2000 SETLOC INFLIGHT
014701,000159: 23,2000 BANK
014702,000160:
014703,000161: 23,2041 COUNT* $$/GEOM
014704,000162:
014705,000163: 23,2041 47135 RRNB SLOAD RTB
014706,000164: 23,2042 03753 TANGNB
014707,000165: 23,2043 21560 CDULOGIC
014708,000166: 23,2044 41401 SETPD PUSH # TRUNNION ANGLE TO 0
014709,000167: 23,2045 00001 0
014710,000168: 23,2046 57556 SIN DCOMP
014711,000169: 23,2047 14043 STODL 34D # Y COMPONENT
014712,000170:
014713,000171: 23,2050 41546 COS PUSH # .5 COS(T) TO 0
014714,000172: 23,2051 47135 SLOAD RTB
014715,000173: 23,2052 03754 TANGNB +1
014716,000174: 23,2053 21560 CDULOGIC
014717,000175: 23,2054 71406 RRNB1 PUSH COS # SHAFT ANGLE TO 2
014718,000176: 23,2055 72405 DMP SL1
014719,000177: 23,2056 00001 0
014720,000178: 23,2057 14045 STODL 36D # Z COMPONENT
014721,000179:
014722,000180: 23,2060 41356 SIN DMP
014723,000181: 23,2061 77752 SL1
014724,000182: 23,2062 24041 STOVL 32D
014725,000183: 23,2063 00041 32D
014726,000184: 23,2064 77616 RVQ
014727,000185:
014728,000186: # THIS ENTRY TO RRNB REQUIRES THE TRUNNION AND SHAFT ANGLES IN MPAC AND MPAC +1 RESPECTIVELY
014729,000187:
014730,000188: 23,2065 14025 RRNBMPAC STODL 20D # SAVE SHAFT CDU IN 21.
014731,000189: 23,2066 00155 MPAC # SET MODE TO DP. (THE PRECEEDING STORE
014732,000190: # MAY BE DP, TP OR VECTOR.)
014733,000191: 23,2067 40234 RTB SETPD
014734,000192: 23,2070 21560 CDULOGIC
014735,000193: 23,2071 00001 0
014736,000194: 23,2072 73406 PUSH SIN # TRUNNION ANGLE TO 0
014737,000195: 23,2073 77676 DCOMP
014738,000196: 23,2074 14043 STODL 34D # Y COMPONENT
014739,000197: 23,2075 41546 COS PUSH # .5COS(T) TO 0
014740,000198: 23,2076 47135 SLOAD RTB # PICK UP CDU'S.
014741,000199: 23,2077 00026 21D
014742,000200: 23,2100 21560 CDULOGIC
014743,000201: 23,2101 77650 GOTO
014744,000202: 23,2102 46054 RRNB1
Page 330 Note: This page is empty in the printout of the assembly listing. |
End of include-file LEM_GEOMETRY.agc. Parent file is MAIN.agc