# Copyright: Public domain. # Filename: R30.agc # Purpose: Part of the source code for Luminary 1A build 099. # It is part of the source code for the Lunar Module's (LM) # Apollo Guidance Computer (AGC), for Apollo 11. # Assembler: yaYUL # Contact: Ron Burkey . # Website: www.ibiblio.org/apollo. # Pages: 712-722 # Mod history: 2009-05-19 RSB Adapted from the corresponding # Luminary131 file, using page # images from Luminary 1A. # 2009-06-07 RSB Removed a space between two components of # a 2OCT that isn't legal in yaYUL. # # This source code has been transcribed or otherwise adapted from # digitized images of a hardcopy from the MIT Museum. The digitization # was performed by Paul Fjeld, and arranged for by Deborah Douglas of # the Museum. Many thanks to both. The images (with suitable reduction # in storage size and consequent reduction in image quality as well) are # available online at www.ibiblio.org/apollo. If for some reason you # find that the images are illegible, contact me at info@sandroid.org # about getting access to the (much) higher-quality images which Paul # actually created. # # Notations on the hardcopy document read, in part: # # Assemble revision 001 of AGC program LMY99 by NASA 2021112-061 # 16:27 JULY 14, 1969 # Page 712 # SUBROUTINE NAME: V82CALL # MOD NO: 0 DATE: 16 FEB 67 # MOD BY: R. R. BAIRNSFATHER LOG SECTION: R30 # MOD NO: 1 MOD BY: R. R. BAIRNSFATHER DATE: 11 APR 67 SR30.1 CHANGED TO ALLOW MONITOR OPERN # MOD NO: 2 MOD BY: ALONSO DATE: 11 DEC 67 VB82 PROGRAM REWRITTEN # MOD NO: 3 MOD BY: ALONSO DATE: 26 MAR 68 PROG MOD TO HANDLE DIF EARTH/MOON SCALE # # NEW FUNCTIONAL DESCRIPTION: CALLED BY VERB 82 ENTER. PRIORITY 10. # USED THROUGHOUT. CALCULATE AND DISPLAY ORBITAL PARAMETERS # # 1. IF AVERAGE G IS OFF: # FLASH DISPLAY V04N06. R2 INDICATES WHICH SHIP'S STATE VECTOR IS # TO BE UPDATED. INITIAL CHOICE IS THIS SHIP (R2=1). ASTRONAUT # CAN CHANGE TO OTHER SHIP BY V22EXE, WHERE X NOT EQ 1. # SELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC). # CALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE # RPER (PERIGEE RADIUS), RAPO (APOGEE RADIUS), HPER (PERIGEE # HEIGHT ABOVE LAUNCH PAD OR LUNAR LANDING SITE), HARD (APOGEE # HEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO # INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE). # FLASH MONITOR V16N44 (HAPO, HPER, TFF).TFF IS -59M59S IF IT WAS # NOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND. # ASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E. # DISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS # ONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S. # # 2. IF AVERAGE G IS ON: # CALLS SR30.1 APPROX EVERY TWO SECS. STATE VECTOR IS ALWAYS # FOR THIS VEHICLE. V82 DOES NOT DISTURB STATE VECTOR. RESULTS # OF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF. # FLASH MONITOR V16N44 (HAPO, HPER, TFF). # ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE # ABOVE REMARKS. # # CALLING SEQUENCE: VERB 82 ENTER. # # SUBROUTINES CALLED: SR30.1, GOXDSPF # MAYBE - THISPREC , OTHPREC, LOADTIME, DELRSPL # NORMAL EXIT MODES: TC ENDEXT # # ALARMS: NONE # # OUTPUT: HAPOX (-29) M # HPERX (-29) M # RAPO (-29) M EARTH # (-27) M MOON # RPER (-29) M EARTH # (-27) M MOON # TFF (-28) CS CONTAINS NEGATIVE QUANTITY # -TPER (-28) CS CONTAINS NEGATIVE QUANTITY # Page 713 # # ERASABLE INITIALIZATION REQUIRED: STATE VECTOR. # # DEBRIS: QPRET, RONE, VONE,TFF/RTMU, HPERMIN, RPADTEM, V82EMFLG. # MAYBE: TSTART82, V82FLAGS, TDEC1. EBANK= HAPOX BANK 31 SETLOC R30LOC BANK COUNT* $$/R30 V82CALL TC INTPRET BON GOTO AVEGFLAG V82GON # IF AVERAGE G ON V82GOFF # IF AVERAGE G OFF V82GOFF EXIT # ALLOW ASTRONAUT TO SELECT VEHICLE CAF TWO # DESIRED FOR ORBITAL PARAMETERS TS OPTIONX # CALCULATION AND DISPLAY. CAF ONE TS OPTIONX +1 CAF OPTIONVN # V 04 N 06 TC BANKCALL CADR GOXDSPF TC ENDEXT # TERMINATE TC +2 # PROCEED TC -5 # DATA IN. OPTION1+1 = 1 FOR THIS VEHICLE. # UNEQ 1 FOR OTHER VEHICLE. CAF BIT4 # 80 MS TC WAITLIST EBANK= TFF 2CADR TICKTEST RELINT V82GOFLP CAF TFFBANK # MAJOR RECYCLE LOOP ENTRY TS EBANK CAF ZERO TS V82FLAGS # ZERO FLAGS FOR TICKTEST, INHIBITS # DECREMENTING OF TFF AND -TPER. CAF PRIO7 TC FINDVAC # V82GOFF1 WILL EXECUTE STATE VECTOR EBANK= TFF # UPDATE AND ORBIT CALCULATIONS FOR 2CADR V82GOFF1 # SELECTED VEHICLE ABOUT PROPER BODY. RELINT V82STALL CAF THREE # STALL IN THIS LOOP AND WITHOLD V 16 N 44 # Page 714 MASK V82FLAGS # UNTIL STATE VECTOR UPDATE SETS ONE OF CCS A # OUR FLAG BITS. TC FLAGGON # EXIT FROM STALL LOOP. CAF 1SEC TC BANKCALL CADR DELAYJOB TC V82STALL FLAGGON CAF V16N44 # MONITOR HAPO,HPER,TFF. TC BANKCALL CADR GOXDSPF TC B5OFF # TERM THIS TELLS TICKTEST TO KILL ITSELF TC B5OFF # PROCEED DITTO TC V82GOFLP # RECYCLE RECOMPUTE STATE VECT + DISPLAY OPTIONVN VN 412 V16N44 VN 1644 TFFBANK ECADR TFF V82GOFF1 TC INTPRET RTB LOADTIME STORE TDEC1 # TIME FOR STATE VECTOR UPDATE. STORE TSTART82 # TIME FOR INTERNAL USE. EXIT CS OPTIONX +1 # 1 FOR THIS VEHICLE, NOT 1 FOR OTHER. AD ONE EXTEND BZF THISSHIP OTHSHIP TC INTPRET CALL # CALL STATE VECTOR UPDATE FOR OTHER SHIP. OTHPREC BOTHSHIP VLOAD # MOVE RESULTS INTO TFFCONIC STORAGE AREAS RATT # TO BE CALLED BY SR30.1. STOVL RONE # RATT AT (-29)M FOR EARTH OR MOON VATT STORE VONE # VATT AT (-7)M/CS FOR EARTH OR MOON DLOAD* 1/RTMUE,2 # X2 IS 0 FOR EARTH CENTERED STATE VEC STORE TFF/RTMU # X2 IS 2 FOR MOON DLOAD* # AS LEFT BY THISPREC OR OTHPREC. MINPERE,2 STORE HPERMIN # TFFRTMU, HPERMIN AND RPADTEM ARE ALL SLOAD BHIZ # EARTH/MOON PARAMETERS AS SET HERE. X2 EARTHPAD GOTO MOONPAD # Page 715 THISSHIP TC INTPRET CALL # CALL STATE VECTOR UPDATE FOR THIS SHIP. THISPREC GOTO BOTHSHIP # THE FOLLOWING CONSTANTS ARE PAIRWISE INDEXED. DO NOT SEPARATE PAIRS. MINPERM 2DEC 10668 B-27 # 35 KFT MIN PERIGEE HEIGHT FOR MOON(-27)M MINPERE 2DEC 91440 B-29 # 300 KFT (-29)M FOR EARTH EARTHPAD DLOAD CLRGO # PAD 37-B RADIUS. SCALED AT (-29)M. RPAD V82EMFLG # INDICATE EARTH SCALING FOR SR30.1 BOTHPAD MOONPAD VLOAD ABVAL # COMPUTE MOON PAD RADIUS FROM RLS VECTOR. RLS # SCALED AT (-27)M. SET V82EMFLG # INDICATE MOON SCALING FOR SR30.1 BOTHPAD STCALL RPADTEM SR30.1 # CALCULATE ORBITAL PARAMETERS RTB DSU LOADTIME TSTART82 # PRESENT TIME - TIME V82GOFF1 BEGAN STORE TSTART82 # SAVE IT DLOAD BZE # SR30.1 SETS -TPER=0 IF HPER L/ -TPER # HPERMIN (300 OR 35) KFT. TICKTIFF # (-TPER = 0) TICKTPER DLOAD DAD # (-TPER NON ZERO) TFF WAS NOT COMPUTED. -TPER # BUT WAS SET TO 59M59S.DONT TICK TFF, DO TSTART82 # TICK -TPER. DISPLAY BOTH. STORE -TPER # -TPER CORRECTED FOR TIME SINCE V82GOFF1 EXIT # BEGAN. CAF BIT1 TS V82FLAGS # INFORMS TICKTEST TO INCREMENT ONLY -TPER TC ENDOFJOB TICKTIFF DLOAD DAD # (-TPER=0) TFF WAS COMPUTED.TICK TFF. TFF # DO NOT TICK -TPER.DISPLAY TFF, BUT NOT TSTART82 # -TPER. STORE TFF # TFF CORRECTED FOR TIME SINCE V82GOFF1 EXIT # BEGAN. CAF BIT2 TS V82FLAGS # INFORMS TICKTEST TO INCREMENT ONLY TFF. TC ENDOFJOB # Page 716 TICKTEST CAF BIT5 # THIS WAITLIST PROGRAM PERPETUATES ITSELF MASK EXTVBACT # ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0. CCS A TC DOTICK CAF PRIO25 TC NOVAC # TERMINATE V 82.CANT CALL ENDEXT IN RUPT. EBANK= EXTVBACT 2CADR ENDEXT TC TASKOVER DOTICK CAF 1SEC # RE-REQUEST TICKTEST. TC WAITLIST EBANK= TFF 2CADR TICKTEST CAF THREE MASK V82FLAGS INDEX A TC +1 TC TASKOVER # IF NO FLAGBITS SET DONT CHANGE TFF OR # -TPER, BUT CONTINUE LOOP. TC TPERTICK # ONLY BIT 1 SET. INCR -TPER BY 1 SEC. TFFTICK CAF 1SEC # ONLY BIT 2 SET. INCR TFF BY 1 SEC. TS L CAF ZERO DAS TFF TC TASKOVER TPERTICK CAF 1SEC TS L CAF ZERO DAS -TPER TC TASKOVER # Page 717 V82GON EXIT # AVERAGE G ON. USE CURRENT STATE VECTOR # FOR ORBITAL PARAMETER CALCULATIONS. CAF PRIO7 # LESS THAN LAMBERT TC FINDVAC # V82GON1 WILL PERFORM ORBIT CALCULATIONS EBANK= TFF # ABOUT PROPER BODY APPROX ONCE PER SEC. 2CADR V82GON1 RELINT CCS NEWJOB # WITHOLD V16 N44 UNTIL FIRST ORBIT CALC TC CHANG1 # IS DONE. NOTE: V82GON1 (PRIO7, FINDVAC # JOB) IS COMPLETED BEFORE V82GON (PRIO7, # NOVAC JOB). V82REDSP CAF V16N44 # MONITOR HAPO, HPER, TFF TC BANKCALL CADR GOXDSPF TC B5OFF # TERM THIS TELLS V82GON1 TO KILL ITSELF. TC B5OFF # PROC DITTO. TC V82REDSP # RECYCLE V82GON1 TC INTPRET # THIS EXEC PROGRAM PERPETUATES ITSELF # ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0. VLOAD GOTO # HOLDS OFF CCS NEWJOB BETWEEN RN AND RN # VN FETCH SO RN , VN ARE FROM SAME NEXTLINE # STATE VECTOR UPDATE. NEXTLINE STOVL RONE # RN AT (-29)M FOR EARTH OR MOON VN STORE VONE # VN AT (-7)M/CS FOR EARTH OR MOON BON GOTO MOONTHIS # FLAG INDICATES BODY ABOUT WHICH ORBITAL MOONGON # CALCULATIONS ARE TO BE PERFORMED. EARTHGON # IF SET - MOON , IF RESET - EARTH. MOONGON SET DLOAD V82EMFLG # INDICATE MOON SCALING FOR SR30.1 1/RTMUM # LUNAR PARAMETERS LOADED HERE FOR SR30.1 STODL TFF/RTMU MINPERM STOVL HPERMIN RLS # SCALED AT (-27)M. ABVAL GOTO V82GON2 EARTHGON CLEAR DLOAD V82EMFLG # INDICATE EARTH SCALING FOR SR30.1 1/RTMUE # EARTH PARAMETERS LOADED HERE FOR SR30.1 STODL TFF/RTMU MINPERE STODL HPERMIN RPAD V82GON2 STCALL RPADTEM # COMMON CODE FOR EARTH & MOON. SR30.1 # Page 718 EXIT V82GON3 CAF BIT5 MASK EXTVBACT # SEE IF ASTRONAUT HAS SIGNALLED TERMINATE EXTEND BZF ENDEXT # YES, TERMINATE VB 82 LOOP CAF 1SEC TC BANKCALL # WAIT ONE SECOND BEFORE REPEATING CADR DELAYJOB # ORBITAL PARAMETER COMPUTATION. TC V82GON1 SPLRET = V82GON3 # Page 719 # SUBROUTINE NAME: SR30.1 # MOD NO: 0 DATE: 16 FEB 67 # MOD BY: R. R. BAIRNSFATHER LOG SECTION: R32 # MOD NO: 1 MOD BY: R. R. BAIRNSFATHER DATE: 11 APR 67 SR30.1 CHANGED TO ALLOW MONITOR OPERN # MOD NO: 2 MOD BY: R. R. BAIRNSFATHER DATE: 14 APR 67 ADD OVFL CK FOR RAPO # MOD NO: 3 MOD BY ALONSO DATE: 11 DEC 67 SUBROUTINE REWRITTEN # MOD NO: 4 MOD BY ALONSO DATE: 26 MAR 68 PROG MOD TO HANDLE DIF EARTH/MOON SCALE # MOD NO: 5 MOD BY: R. R. BAIRNSFATHER DATE: 6 AUG 68 OVFL CK FOR HAPO & HPER. VOIDS MOD #2. # # NEW FUNCTIONAL DESCRIPTION: ORBITAL PARAMETERS DISPLAY FOR NOUNS 32 AND 44. # SR30.1 CALLS TFFCONMU AND TFFRP/RA TO CALCULATE RPER (PERIGEE RADIUS), # RAPO (APOGEE RADIUS), HPER (PERIGEE HEIGHT ABOVE LAUNCH PAD OR LUNAR # LANDING SITE), HAPO (APOGEE HEIGHT AS ABOVE), TPER (TIME TO PERIGEE), # TFF (TIME TO INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE). # IF HPER IS GREATER THAN OR EQUAL TO HPERMIN, CALCULATES TPER AND STORES # NEGATIVE IN -TPER. OTHERWISE STORES +0 IN -TPER. WHENEVER TPER IS # CALCULATED, TFF IS NOT COMPUTABLE AND DEFAULTS TO -59MIN 59SEC. IF HAPO # WOULD EXCEED 9999.9 NM, IT IS LIMITED TO THAT VALUE FOR DISPLAY. # # ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE # ABOVE REMARKS. # # CALLING SEQUENCE: CALL # SR30.1 # # SUBROUTINES CALLED: TFFCONMU, TFFRP/RA, CALCTPER, CALCTFF # # NORMAL EXIT MODE: CALLING LINE +1 (STILL IN INTERPRETIVE MODE) # # ALARMS: NONE # # OUTPUT: RAPO (-29) M EARTH APOGEE RADIUS EARTH CENTERED COORD. # (-27) M MOON MOON CENTERED COORD. # RPER (-29) M EARTH PERIGEE RADIUS EARTH CENTERED COORD. # (-27) M MOON MOON CENTERED COORD. # HAPOX (-29) M APOGEE ALTITUDE ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM. # HPERX (-29) M PERIGEE ALT. ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM. # TFF (-28) CS TIME TO 300KFT OR 35KFT ALTITUDE # -TPER (-28) CS TIME TO PERIGEE # # ERASABLE INITIALIZATION REQUIRED -- # TFF/RTMU (+17) EARTH RECIPROCAL OF PROPER GRAV CONSTANT FOR # (+14) MOON EARTH OR MOON = 1/SQRT(MU). # RONE (-29) M STATE VECTOR # VONE (-7) M/CS STATE VECTOR # RPADTEM (-29) M EARTH RADIUS OF LAUNCH PAD OR LUNAR LANDING # (-27) M MOON SITE. # HPERMIN (-29) M EARTH (300 OR 35) KFT MINIMUM PERIGEE ALTITUDE # (-27) M MOON ABOVE LAUNCH PAD OR LUNAR LANDING SITE. # V82EMFLG (INT SW BIT) RESET FOR EARTH, SET FOR MOON. # # DEBRIS: QPREG, PDL, S2 # Page 720 COUNT* $$/SR30S SR30.1 SETPD STQ # INITIALIZE PUSHDOWN LIST. 0 S2 # SR30.1 INPUT: RONE AT (-29)M EARTH/MOON # VONE AT (-7)M/CS # TFFCONMU, TFFRP/RA, CALCTPER, AND CALCTFF # CALLS REQUIRE: # EARTH CENTERED (NO RESCALING REQUIRED) # RONE SCALED TO B-29 M # VONE SCALED TO B-7 M/CS # MOON CENTERED (RESCALING REQUIRED) # RONE SCALED TO B-27 M # VONE SCALED TO B-5 M/CS BOFF VLOAD V82EMFLG # OFF FOR EARTH, ON FOR MOON. TFFCALLS RONE VSL2 STOVL RONE VONE VSL2 STORE VONE TFFCALLS CALL TFFCONMU CALL # TFFRP/RA COMPUTES RAPO,RPER. TFFRP/RA # RETURNS WITH RAPO IN D(MPAC). DSU RPADTEM BOFF SR2R # NEED HAPO AT (-29)M FOR DISPLAY. # IF MOON CENTERED, RESCALE FROM (-27)M. # IF EARTH CENTERED ALREADY AT (-29)M. V82EMFLG # OFF FOR EARTH, ON FOR MOON. +1 CALL # IF RAPO > MAXNM, SET RAPO =9999.9 NM. MAXCHK # OTHERWISE STORE (RAPO-RPADTEM) IN HAPO. STORHAPO STODL HAPOX RPER DSU RPADTEM # GIVES HPER AT (-29)M EARTH, (-27)M MOON. STORE MPAC +4 # SAVE THIS FOR COMPARISON TO HPERMIN. BOFF SR2R # NEED HPER AT (-29)M FOR DISPLAY. # IF MOON CENTERED, RESCALE FROM (-27)M. # IF EARTH CENTERED ALREADY AT (-29)M. V82EMFLG # OFF FOR EARTH, ON FOR MOON. +1 CALL # IF HPER > MAXNM, SET HPER = 9999.9 NM. MAXCHK # Page 721 STORHPER STODL HPERX # STORE (RPER - RPADTEM) INTO HPERX. MPAC +4 DSU BPL # HPERMIN AT (-29)M FOR EARTH, (-27)M MOON HPERMIN # IF HPER L/ HPERMIN (300 OR 35)KFT, DOTPER # THEN ZERO INTO -TPER. DLOAD GOTO # OTHERWISE CALCULATE TPER. HI6ZEROS SKIPTPER DOTPER DLOAD CALL RPER CALCTPER DCOMP # TPER IS PUT NEG INTO -TPER. SKIPTPER STODL -TPER HPERMIN # HPERMIN AT (-29)M FOR EARTH, (-27)M MOON DAD CALL RPADTEM # RPADTEM AT (-29)M FOR EARTH, (-27)M MOON CALCTFF # GIVES 59M59S FOR TFF IF HPER G/ DCOMP # HPERMIN + RPADTEM. (TPER WAS NON ZERO) STCALL TFF # OTHERWISE COMPUTES TFF. (GOTO) S2 MAXCHK DSU BPL # IF C(MPAC) > 9999.9 NM. MPAC = 9999.9 NM. MAXNM +3 # OTHERWISE C(MPAC) = B(MPAC). DAD RVQ MAXNM +3 DLOAD RVQ # (USED BY P30 - P37 ALSO) MAXNM MAXNM 2OCT 0106505603 # Page 722 (empty page)