# Copyright: Public domain. # Filename: P51-P53.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: Hartmuth Gutsche <hgutsche@xplornet.com>. # Website: www.ibiblio.org/apollo. # Pages: 926-983 # Mod history: 2009-05-31 HG Transcribed from page images. # 2009-06-07 RSB Corrected a typo. # # 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 926 # PROGRAM NAME -- PROG52 DATE -- JAN 9, 1967 # MOD NO -- 0 LOG SECTION -- P51-P53 # MODIFICATION BY -- LONSKE ASSEMBLY -- SUNDANCE REV 46 # # FUNCTIONAL DESCRIPTION -- # # ALIGNS THE IMU TO ONE OF THREE ORIENTATIONS SELECTED BY THE ASTRONAUT. THE PRESENT IMU ORIENTATION IS KNOWN # AND IS STORED IN REFSMMAT. THE THREE POSSIBLE ORIENTATIONS MAY BE: # # (A) PREFERRED ORIENTATION # # AN OPTIMUM ORIENTATION FOR A PREVIOUSLY CALCULATED MANEUVER. THIS ORIENTATION MUST BE CALCULATED AND # STORED BY A PREVIOUSLY SELECTED PROGRAM. # # (B) NOMINAL ORIENTATION # # X = UNIT ( R ) # -SM # # Y = UNIT (V X R) # SM # # Z = UNIT (X X Y ) # SM SM SM # # WHERE: # # R = THE GEOCENTRIC RADIUS VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT # - # # V = THE INERTIAL VELOCITY VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT # - # # (C) RERSMMAT ORIENTATION # # (D) LANDING SITE -- THIS IS NOT AVAILABLE IN SUNDANCE # # THIS SELECTION CORRECTS THE PRESENT IMU ORIENTATION. THE PRESENT ORIENTATION DIFFERS FROM THAT TO WHICH IT # WAS LAST ALIGNED ONLY DUE TO GYRO DRIFT (I.E., NEITHER GIMBAL LOCK NOR IMU POWER INTERRUPTION HAS OCCURRED # SINCE THE LAST ALIGNMENT). # # AFTER A IMU ORIENTATION HAS BEEN SELECTED ROUTINE S52.2 IS OPERATED TO COMPUTE THE GIMBAL ANGLES USING THE # NEW ORIENTATION AND THE PRESENT VEHICLE ATTITUDE. CAL52A THEN USES THESE ANGLES, STORED IN THETAD,+1,+2, TO # COARSE ALIGN THE IMU. THE STARS SELECTION ROUTINE, R56, IS THEN OPERATED. IF 2 STARS ARE NOT AVAILABLE AN ALARM # IS FLASHED TO NOTIFY THE ASTRONAUT. AT THIS POINT THE ASTRONAUT WILL MANEUVER THE VEHICLE AND SELECT 2 STARS # EITHER MANUALLY OR AUTOMATICALLY. AFTER 2 STARS HAVE BEEN SELECTED THE IMU IS FINE ALIGNED USING ROUTINE R51. IF # THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING (INDICATED BY RNDVZFLG) P20 IS DISPLAYED. OTHERWISE P00 IS # REQUESTED. # # CALLING SEQUENCE -- # # Page 927 # THE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY. # # SUBROUTINES CALLED -- # # 1. FLAGDOWN 7. S52.2 13. NEWMODEX # 2. R02BOTH 8. CAL53A 14. PRIOLARM # 3. GOPERF4 9. FLAGUP # 4. MATMOVE 10. R56 # 5. GOFLASH 11. R51 # 6. S52.3 12. GOPERF3 # # NORMAL EXIT MODES -- # # EXITS TO ENDOFJOB # # ALARM OR ABORT EXIT MODES -- # # NONE # # OUTPUT -- # # THE FOLLOWING MAY BE FLASHED ON THE DSKY # 1. IMU ORIENTATION CODE # 2. ALARM CODE 215 -- PREFERRED IMU ORIENTATION NOT SPECIFIED # 3. TIME OF NEXT IGNITION # 4. GIMBAL ANGLES # 5. ALARM CODE 405 -- TWO STARS NOT AVAILABLE # 6. PLEASE PERFORM P00 # THE MODE DISPLAY MAY BE CHANGED TO 20 # # ERASABLE INITIALIZATION REQUIRED -- # # PFRATFLG SHOULD BE SET IF A PREFERRED ORIENTATION HAS BEEN COMPUTED. IF IT HAS BEEN COMPUTED IT IS STORED IN # XSMD, YSMD, ZSMD. # # RNDVZFLG INDICATES WHETHER THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING. # # DEBRIS -- # # WORK AREA
# Page 931 # CHECK FOR GYRO TORQUE COARSE ALIGNMENT
COARSTYP CAF OCT13 TC BANKCALL # DISPLAY V 50N25 WITH COARSE ALIGN OPTION CADR GOPERF1 TCF GOTOPOOH # V34 -- TERMIN&OE TCF REGCOARS # V33 -- NORMAL COARSE TC INTPRET # V32 -- GYRO TORQUE COARSE
VLOAD MXV
XSMD # GET SM(DESIRED) WRT SM(PRESENT)
REFSMMAT
UNIT STOVL XDC
YSMD
MXV UNIT
REFSMMAT STOVL YDC
ZSMD
MXV UNIT
REFSMMAT
STCALL ZDC
GYCOARS
GOTO
P52OUT
OCT13 OCT13
# Page 932 # COMPUTE LANDING ORIENTATION FOR OPTION 4
P52LS SET CLEAR # GET LANDING SITE ORIENTATION
LUNAFLAG
ERADFLAG # TO PICK UP RLS
SETPD VLOAD 0
RLS # PICK UP LANDING SITE VEC IN MF
PDDL PUSH# RLS PD 0-5
TALIGN
STCALL TLAND # JAM ALIGN TIME IN TLAND FOR OPTION 4
RP-TO-R # TRANS RLS TO REF
VSR2 STODL ALPHAV # INPUT TO LAT-LONG
TALIGN CALL
N89DISP
VLOAD UNIT # COMPUTE LANDING SITE ORIENT (XSMD)
ALPHAV
STCALL XSMD
LSORIENT
GOTO
P52D # NOW GO COMPUTE GIMBAL ANGLES.
# Page 933 # SUBROUTINE TO CALCULATE AND DISPLAY THE LUNAR LANDING SITE
SETLOC P50S1 BANK EBANK= XSM
N89DISP STQ
QMAJ
STCALL GDT/2 +4# TEMP STORE TIME
LAT-LONG DLOAD SR1
LONG STODL LANDLONG
ALT STODL LANDALT
LAT STODL LANDLAT EXIT
LSDISP CAF V06N89* # DISPLAY LAT,LONG/2,ALT TC BANKCALL CADR GOFLASH TCF GOTOPOOH # V34 -- TERMINATE -- EXIT P57 TCF +2# V33 -- PROCEED -- ACCEPT LS DATA TCF LSDISP # V32 OR E -- LOOK AGAIN AND/OR LOAD NEW LS
TC INTPRET DLOAD SL1
LANDLONG STODL LONG
LANDALT STODL ALT
LANDLAT STODL LAT
GDT/2 +4# PICK UP TIME CALL# GET RLS BACK FROM LAT,LONG,ALT
LALOTORV # RLS B-29 IN MPAC AND ALPHAV
GOTO
QMAJ
V06N89* VN689
# Page 934 # NAME -- S50 ALIAS LOCSAM # BY # VINCENT # # FUNCTION -- COMPUTE INPUTS FOR PICAPAR AND PLANET # # DEFINE # # U = UNIT( SUN WRT EARTH ) # ES # # U = UNIT( MOON WRT EARTH ) # EM # # R = POSITION VECTOR OF LEM # L # # R = MEAN DISTANCE (384402KM) BETWEEN EARTH AND MOON # EM # # P = RATIO R /(DISTANCE SUN TO EARTH) > .00257125 # EM # # R = EQUATORIAL RADIUS (6378.166KM) OF EARTH # E # # LOCSAM COMPUTES IN EARTH INFLUENCE # # VSUN = U # ES # # VEARTH = -UNIT( R ) # L # # VMOON = UNIT(R .U - R ) # EM EM L # # CSUN = COS 90 # # CEARTH = COS(5 + ARCSIN(R /MAG(R ))) # E L # # CMOON = COS 5 # # INPUT -- TIME IN MPAC # # OUTPUT -- LISTED ABOVE # # SUBROUTINES -- LSPOS, LEMPREC # # DEBRIS -- VAC AREA, TSIGHT
# Page 937 # PROGRAM NAME -- R56 DATE: DEC 20 66 # MOD 1 LOG SECTION: P51-P53 # ASSEMBLY: SUNDISK REV4D # BY KEN VINCENT # # FUNCTION # THIS PROGRAM READS THE IMU-CDUS AND COMPUTES THE VEHICLE ORIENTATION # WITH RESPECT TO INERTIAL SPACE. IT THEN COMPUTES THE SHAFT AXIS (SAX) # WITH RESPECT TO REFERENCE INTERTIAL. EACH STAR IN THE CATALOG IS TESTED # TO DETERMIN IF IT IS OCCULTED BY EITHER EARTH, SUN OR MOON. IF A # STAR IS NOT OCCULTED THEN IT IS PAIRED WITH ALL STARS OF LOWER INDEX. # THE PAIRED STAR IS TESTED FOR OCCULTATION. PAIRS OF STARS THAT PASS # THE OCCULTATION TESTS ARE TESTED FOR GOOD SEPARATION. A PAIR OF STARS # HAVE GOOD SEPARATION IF THE ANGLE BETWEEN THEM IS LESS THAN 100 DEGREES # AND MORE THAN 50 DEGREES. THOSE PAIRS WITH GOOD SEPARATION # ARE THEN TESTED TO SEE IF THEY LIE IN CURRENT FIELD OF VIEW. (WITHIN # 50 DEGREES OF SAX). THE PAIR WITH MAX SEPARATION IS CHOSEN FROM # THOSE WITH GOOD SEPARATION, AND IN FIELD OF VIEW. # # CALLING SEQUENCE # L TC BANKCALL # L+1 CADR R56 # L+2 ERROR RETURN -- NO STARS IN FIELD OF VIEW # L+3 NORMAL RETURN # # OUTPUT # BESTI, BESTJ -- SINGLE PREC, INTEGERS, STAR NUMBERS TIMES 6 # VFLAG -- FLAG BIT SET IMPLIES NO STARS IN FIELD OF VIEW # # INITIALIZATION # 1) A CALL TO LOCSAM MUST BE MADE # # DEBRIS # WORKAREA # X,Y,ZNB # SINCDU, COSCDU # STARAD -- STAR +5
# ROUTINE NAME -- CHKSDATA DATE -- JAN 9, 1967 # MOD NO -- 0 LOG SECTION -- P51-P53 # MODIFICATION BY -- LONSKE ASSEMBLY -- # # FUNCTIONAL DESCRIPTION -- CHECKS THE VALIDITY OF A PAIR OF STAR SIGHTINGS. WHEN A PAIR OF STAR SIGHTINGS ARE MADE # BY THE ASTRONAUT THIS ROUTINE OPERATES AND CHECKS THE OBSERVED SIGHTINGS AGAINST STORED STAR VECTORS IN THE # COMPUTER TO INSURE A PROPER SIGHTING WAS MADE. THE FOLLOWING COMPUTATIONS ARE PERFORMED -- # OS1 = OBSERVED STAR 1 VECTOR # OS2 = OBSERVED STAR 2 VECTOR # SS1 = STORED STAR 1 VECTOR # SS2 = STORED STAR 2 VECTOR # A1 = ARCCOS(OS1 - OS2) # A2 = ARCCOS(SS1 - SS2) # A = ABS(2(A1 - A2)) # Page 946 # THE ANGULAR DIFFERENCE IS DISPLAYED FOR ASTRONAUT ACCEPTANCE. # # EXIT MODE -- 1. FREEFLAG SET IMPLIES ASTRONAUT WANTS TO PROCEED # 2. FREEFLAG RESET IMPLIES ASTRONAUT WANTS TO RECYCLE # # OUTPUT -- 1. VERB 6,NOUN 3 -- DISPLAYS ANGULAR DIFFERENCE BETWEEN 2 SETS OF STARS. # 2. STAR VECTORS FROM STAR CATALOG ARE LEFT IN 6D AND 12D. # # ERASABLE INITIALIZATION REQUIRED -- # 1. MARK VECTORS ARE STORED IN STARAD AND STARAD +6. # 2. CATALOG VECTORS ARE STORED IN 6D AND 12D. # # DEBRIS --
COUNT* $$/R54
CHKSDATA STQ SET
QMIN
FREEFLAG
CHKSAB AXC,1# SET X1 TO STORE EPHEMERIS DATA
STARAD
CHKSB VLOAD* DOT* # CAL. ANGLE THETA 0,1 6,1
SL1 ACOS STORE THETA
BOFF INVERT # BRANCH TO CHKSD IF THIS IS 2ND PASS
FREEFLAG
CHKSD
FREEFLAG # CLEAR FREEFLAG AXC,1DLOAD# SET X1 TO MARK ANGLES 6D
THETA STORE18D
GOTO
CHKSB # RETURN TO CAL. 2ND ANGLE
CHKSD DLOAD DSU
THETA 18D
ABS RTB # COMPUTE POS DIFF
SGNAGREE STORE NORMTEM1
SET EXIT
FREEFLAG CAF VB6N5 TC BANKCALL CADR GOFLASH TCF GOTOPOOH TC CHKSDA # PROCEED TC INTPRET
CLEAR GOTO
FREEFLAG
QMIN
CHKSDA TC INTPRET # Page 947
GOTO
QMIN
VB6N5 VN605
# NAME -- CAL53A # FUNCTION -- COMPUTE DESIRED GIMBAL ANGLES AND COARSE ALIGN IF NECESSARY # CALLING SEQUENCE -- CALL CAL53A # INPUT -- X,Y,ZSMD, CDUX,Y,Z # DESIRED GIMBAL ANGLES -- THETAD,+1,+2 # OUTPUT -- THE IMU COORDINATES AT STORED IN REFSMMAT # SUBROUTINES -- S52.2, IMUCOARSE, IMUFINE
# Page 949 # NAME -- P51 -- IMU ORIENTATION DETERMINATION # MOD. NO. 1 23 JAN 67 LOG SECTION -- P51-P53 # MOD BY STURLAUGSON ASSEMBLY SUNDANCE REV56 # # FUNCTIONAL DESCRIPTION # DETERMINES THE INERTIAL ORIENTATION OF THE IMU. THE PROGRAM IS SELECTED BY DSKY ENTRY. THE SIGHTING # (AOTMARK) ROUTINE IS CALLED TO COLLECT AND PROCESS MARKED-STAR DATA. AOTMARK (R53) RETURNS THE STAR NUMBER AND THE # STAR LOS VECTOR IN STARAD +6. TWO STARS ARE THUS SIGHTED. THE ANGLE BETWEEN THE TWO STARS IS THEN CHECKED AT # CHKSDATA (R54). REFSMMAT IS THEN COMPUTED AT AXISGEN. # # CALLING SEQUENCE # THE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY. # # SUBROUTINES CALLED # GOPERF3 # GOPERF1 # GODSPR # IMUCOARS # IMUFIN20 # AOTMARK (R53) # CHKSDATA (R54) # MKRELEAS # AXISGEN # MATMOVE # # ALARMS # NONE. # # ERASABLE INITIALIZATION # IMU ZERO FLAG SHOULD BE SET. # # OUTPUT # REFSMMAT # REFSMFLG # # DEBRIS # WORK AREA # STARAD # STARIND # BESTI # BESTJ
COUNT* $$/P51 # Page 950
P51 TC BANKCALL # IS ISS ON - IF NOT, IMUCHK WILL SEND CADR IMUCHK # ALARM CODE 210 AND EXIT VIA GOTOPOOH.
# Page 954 # NAME -- S52.3 # FUNCTION -- XSMD= UNIT R # YSMD= UNIT(V X R) # ZSMD= UNIT(XSMD X YSMD) # CALL -- DLOAD CALL # TALIGN # S52.3 # INPUT -- TIME OF ALIGNMENT IN MPAC # OUTPUT -- X,Y,ZSMD # SUBROUTINES -- CSMCONIC
COUNT* $$/S52.3
S52.3 STQ
QMAJ
STCALL TDEC1
LEMCONIC
VLOAD UNIT
RATT STOVL XSMD
VATT
VXV UNIT
RATT STOVL YSMD
XSMD
VXV UNIT
YSMD
STCALL ZSMD
QMAJ
# Page 955 # NAME -- R52 (AUTOMATIC OPTICS POSITIONING ROUTINE) # # FUNCTION -- POINT THE AOT APTICS AXIS BY MANEUVERING THE LEM TO A NAVIGATION # STAR SELECTED BY ALIGNMENT PROGRAMS OR DSKY INPUT # # CALLING -- CALL R52 # # INPUT -- BESTI AND BESTJ (STAR CODES TIMES 6) # # OUTPUT -- STAR CODE IN BITS 1-6, DETENT CODE IN BITS 7-9 # (NO CHECK IS MADE TO INSURE THE DETENT CODE TO BE VALID) # POINTVSM-1/2 UNIT NAV STAR VEC IN SM # SCAXIS-AOT OPTIC AXIS VEC IN NB X-Z PLANE # # SUBROUT -- R60LEM
COUNT* $$/R52
R52 STQ EXIT
SAVQR52 INDEX STARIND CA BESTI # PICK UP STARCODE DETERMINED BY R56 EXTEND MP1/6TH AD BIT8 # SET DETENT POSITION 2 TS STARCODE # SCALE AND STORE IN STARCODE
R52A CAF V01N70 TC BANKCALL CADR GOFLASH # DISPLAY STARCODE AND WAIT FOR RESPONSE TC GOTOPOOH # V34 -- TERMINATE TCF R52B # V33 -- PROCEED TO ORIENT LEM TCF R52A # ENTER -- SELECT NEW STARCODE -- RECYCLE
R52B TC DOWNFLAG ADRES3AXISFLG # BIT6 OF FLAGWRD5 ZERO TO ALLOW VECPOINT CA STARCODE # GRAB DETENT CODE MASK HIGH9 EXTEND MP BIT9 TS L # TEMP STORE DETENT
EXTEND BZMF GETAZEL # CODE 0, COAS CALIBRATION
AD NEG7 EXTEND BZF GETAZEL # CODE 7, COAS SIGHTING
EBANK= XYMARK CA EBANK7 TSEBANK # Page 956 INDEX L CA AOTAZ -1# PICK UP AZ CORRESPONDING TO DETENT TS L EBANK= XSM CA EBANK5 # CHANGE TO EBANK5 BUT DON'T DISTURB L TSEBANK CA BIT13 # SET ELV TO 45 DEG XCH L # SET C(A)=AZ, C(L)=45 DEG TCF AZEL # GO COMP OPTIC AXIS
GETAZEL CAF V06N87 # CODE 0 OR 7, GET AZ AND EL KEY IN TC BANKCALL CADR GOFLASH TC GOTOPOOH # V34 -- TERMINATE TCF +2# PROCEED -- CALC OPTIC AXIS TCF GETAZEL # ENTER -- RECYCLE
EXTEND DCA AZ # PICK UP AZ AND EL IN SP 2'S COMP
AZEL INDEX FIXLOC # JAM AZ AND EL IN 8 AND 9 OF VAC DXCH8D TC INTPRET CALL# GO COMPUTE OPTIC AXIS AND STORE IN
OANB # SCAXIS IN NB COORDS
RTB CALL
LOADTIME
PLANET
MXV UNIT
REFSMMAT STORE POINTVSM # STORE FOR VECPOINT
EXIT TC BANKCALL CADR R60LEM # GO TORQUE LEM OPTIC AXIS TO STAR LOS
CAF HIGH9 # IF COAS CALIBRATION CODE 0. RECYCLE MASK STARCODE EXTEND BZF R52A
TC INTPRET # RETURN FROM KALCMANU
GOTO
SAVQR52 # RETURN TO CALLER
1/6TH DEC .1666667
V01N70 VN0170
V06N87 VN687
# Page 957 # LUNAR SURFACE STAR ACQUISITION
BANK15 SETLOC P50S BANK COUNT* $$/R59
R59 CS FLAGWRD3 MASK REFSMBIT # IF REFSMMAT FLAG CLEAR BYPASS STAR ACQUIRE CCS A TCF R59OUT # NO REFSMMAT GO TO AOTMARK
R59A CS HIGH9 # GRAB STARCODE FOR INDEX MASK AOTCODE EXTEND MP REVCNT # JUST 6 XCH L INDEX STARIND TS BESTI INDEX FIXLOC TS X1 # CODE X 6 FOR CATLOG STAR INDEX EXTEND BZF R59OUT # BYPASS ACQUISITION IF NOT CATLOG STAR
COM AD DEC227 EXTEND BZMF R59OUT
TC INTPRET
VLOAD* MXV
CATLOG,1# GRAB STAR VECTOR
REFSMMAT # TRANSFORM TO SM
UNIT CALL
CDU*SMNB STORE STAR # TEMP STORE STAR VEC(NB) EXIT
CAF BIT1 # INITIALIZE AZ POSITION COD TO 1 (-60) TS POSCODE
EBANK= XYMARK
INCAZ CA EBANK7 TSEBANK
# Page 958 INDEX POSCODE CA AOTAZ -1# PICK UP AZ CORRESPONDING TO POSCODE TS L
EBANK= XSM CA EBANK5 TSEBANK
CA BIT13 # SET ELV TO 45 DEG XCH L # SET C(A)=AZ, C(L)=45 DEG TS QMIN # STORE QMIN=AZ FOR LATER INDEX FIXLOC DXCH8D # JAM AZ IN 8D, 45 DEG IN 9D FOR OANB
TC INTPRET CALL
OANB # GO CALC OPTIC AXIS WRT NB
VLOAD DOT
STAR # DOT STAR WITH OA
SCAXIS
SL1 ARCCOS STORE24D # TEMP STORE ARCCOS(STAR.OPTAXIS)
DSU BPL
DEG30 # SEE IF STAR IN AOT FIELD-OF-VIEW
NXAX # NOT IN FIELD -- TRY NEXT POSITION DLOAD DSU # SEE IF STAR AT FIELD CENTER 24D
DEG.5
BMN DLOAD# CALC SPIRAL AND CURSOR
ZSPCR # GO ZERO CURSOR AND SPIRAL 24D # GET SPIRAL
DMP SL4 3/4# 12 SCALED AT 16 STOVL24D # 12(ARCCOS(AO.STAR)) SCALED IN REVS
SCAXIS # OA
VXV UNIT
XUNIT PUSH VXV # OA X UNITX PD 0-5
SCAXIS
VCOMP
UNIT PDVL # UNIT(OA X (OA X UNITX)) PD 6-11
SCAXIS
VXV UNIT
STAR PUSH DOT # 1/2(OA X STAR) PD 12-17 0# DOT WITH 1/2(OA X UNITX) FOR YROT
SL1 ARCCOS STOVL26D # STORE THET SCALED IN REVS # Page 959
DOT # UP 12-17, UP 6-11 FOR C2
BPL DLOAD# IF THET NEG -- GET 360-THET
R59D
ABOUTONE
DSU 26D STORE26D # 360-THET SCALED IN REVS
R59D SLOAD SR1
QMIN # RESCALE AZ(N) TO REVS
DAD PUSH# PUSH YROT + AZ(N) REVS 26D
RTB 1STO2S STODL CURSOR # YROT IN 1/2 REVS 24D # LOAD SROT IN REVS
DAD # 12(SEP) + YROT
RTB 1STO2S STORE SPIRAL # SROT IN 1/2 REVS EXIT TCF79DISP # GO DISPLAY CURSOR-SPIRAL-POS CODE
ZSPCR EXIT CAF ZERO # STAR ALMOST OPTIC AXIS, ZERO CURSOR TS CURSOR # AND SPIRAL ANGLES TS SPIRAL TCF79DISP
NXAX EXIT INCR POSCODE CS POSCODE AD SEVEN EXTEND BZMF R59ALM # THIS STAR NOT AT ANY POSITION TCF INCAZ
R59ALM TC ALARM # THIS STAR CAN'T BE LOCATED IN AOT FIELD OCT404 CAF VB05N09 # DISPLAY ALARM TC BANKCALL CADR GOFLASH TCF GOTOPOOH # VB34 -- TERMINATE TCF R59OUT # VB33 -- PROCEED, GO WITHOUT ACQUIRE TCF R59 # VB32 -- RECYCLE AND TRY ANOTHER STAR
79DISP CAF V06N79 # DISPLAY CURSOR, SPIRAL AND POS CODE TC BANKCALL CADR GOFLASH TCF GOTOPOOH # V34 -- TERMINATE # Page 960 TCF R59E # V33 -- PROCEED TO MARK ROUTINE TCF R59 # V32 -- RECYCLE TO TOP OF R59 AGAIN
R59E CAF SEVEN # GET DETENT CODE CORRESPONDING TO POSCODE MASK POSCODE EXTEND MP BIT7 # DETEND CODE NOW IN L CS HIGH9 MASK AOTCODE # ISOLATE STAR NO BIT 1-6 AD L TS AOTCODE # STORE DETENT 7-9
R59OUT TC BANKCALL # GO TO AOTMARK FOR SIGHTING CADR AOTMARK TC BANKCALL CADR AOTSTALL # SLEEP TILL SIGHTING DONE TC CURTAINS # BADEND RETURN FROM AOTMARK TCF R59RET # RETURN TO 1 STAR OR 2STAR
# Page 961 # NAME -- PLANET # FUNCTION -- TO PROVIDE THE REFERENCE VECTOR FOR THE SIGHTED CELESTIAL # BODY. STARS ARE FETCHED FROM THE CATALOG, SUN, EARTH AND # MOON ARE COMPUTED BY LOCSAM, PLANET VECTORS ARE ENTERED # BY DSKY INPUT. # CALL -- CALL # PLANET # INPUT -- TIME IN MPAC # OUTPUT -- VECTOR IN MPAC # SUBROUTINES -- LOCSAM # DEBRIS -- VAC, STARAD - STARAD +17
SETLOC P50S BANK COUNT* $$/P51
PLANET STOVL TSIGHT
ZEROVEC STORE STARAD
STQ EXIT
GCTR CS HIGH9 MASK AOTCODE EXTEND MP REVCNT XCH L INDEX STARIND TS BESTI CCS A TCF NOTPLAN CAF VNPLANV TC BANKCALL CADR GOFLASH TC -3 TC +2 TC -5 TC INTPRET
VLOAD UNIT
STARAD
GOTO
GCTR
NOTPLAN CS A AD DEC227 EXTEND BZMF CALSAM1 INDEX STARIND CA BESTI INDEX FIXLOC TS X1 TC INTPRET # Page 962
VLOAD* GOTO
CATLOG,1
GCTR
CALSAM1 TC INTPRET
CALSAM DLOADCALL
TSIGHT
LOCSAM
LXC,1 VLOAD
STARIND
VEARTH STOVL0D
VSUN STOVL VEARTH 0D STORE VSUN DLOAD* LXC,1
BESTI,1
MPAC
VLOAD* GOTO
STARAD -228D,1
GCTR
DEC227 DEC227
VNPLANV VN0688
PIPSRINE = PIPASR +3# EBANK NOT 4 SO DON'T LOAD PIPTIME1
# Page 963 # GRAVITY VECTOR DETERMINATION ROUTINE # BY KEN VINCENT # # FOR DETAILED DESCRIPTION SEE 504GSOP 5.6.3.2.5. # # THIS PROGRAM FINDS THE DIRECTION OF THE MOON'S GRAVITY # WHILE THE LM IS IN THE MOON'S SURFACE. IT WILL BE USED # FOR LUNAR SURFACE ALIGNMENT. THE GRAVITY VECTOR IS # DETERMINED BY READING THE PIPAS WITH THE IMU AT TWO # PARTICULAR ORIENTATIONS. THE TWO READINGS ARE AVERAGED # AND UNITIZED AND TRANSFORMED TO NB COORDINATES. THE TWO # ORIENTATIONS WERE CHOSEN TO REDUCE BIAS ERRORS IN THE # READINGS. # # CALL -- # TC BANKCALL # CADR GVDETER # # INPUTS -- # PIPAS, CDUS # # OUTPUTS -- # STARSAV1 = UNIT GRAVITY # GSAV = DITTO # GRAVBIT = 1 # # SUBROUTINES -- # PIPASR, IMUCOARS, IMUFINE, IMUSTALL, 1/PIPA, DELAYJOB, CDUTRIG, # *NBSM*, *SNMB*, CALCGA, GOFLASH # # DEBRIS -- # VAC, SAC, STARAD, XSM, XNB, THETAD, DELV, COSCDU, SINCDU
# FIND GIMBAL ANGLES WHICH ROTATE SM 180 DEG ABOUT G VEC # # DEFINE G COOR SYS # _ # [ X ] [ UNIT G ] # * [ _ ] [ _ ] # M = [ Y ] = [ UNITEZSM * X ] # [ _ ] [ _ _ ] # [ Z ] [ UNIT( X * Y )] # # THEN ROTATED SM WRT PRESENT IS # # Page 964 # [ 1 0 0 ] # * *T [ ] * * * # XSM = M [ 0 -1 0 ] M = 2 (X X ) - 1/2 I # [ ] I J # [ 0 0 -1 ] # # ALSO NB WRT PRES SM IS # # * * * # XNB = NBSM I # # * * # GIMBAL ANGLES = CALCGA( XSM, XNB )
SETLOC P50S BANK COUNT* $$/P57
AXT,1 SSP # X1=18 18D # S1=6
S1 # X2, -2 6D
LXC,2
S1
GRAVEL VLOAD* CALL
XUNIT -6,2
*NBSM* # SIN AND COS COMPUTED IN LUNG STORE XNB +18D,1
VLOAD
STAR
LXC,2VXSC* # COMPLEMENT -- UNITX ARE BACKWARD --
X2
STAR +6,2# OUTER PRODUCT
VSL2 LXC,2
X2
VSU* INCR,2
XUNIT -6,2 2D STORE XSM +18D,1
TIX,1CALL
GRAVEL
CALCGA
VLOAD VSR1
GOUT
STCALL STARAD +12D
LUNG
VLOAD VSR1
GOUT
VAD UNIT
STARAD +12D STORE STARSAV1
DOT
GSAV
SL1 ACOS # Page 965 STORE DSPTEM1 EXIT TC DOWNFLAG # CLAR FREEFLAG IN CASE OF RECYCLE ADRES FREEFLAG
CA DISGRVER TC BANKCALL CADR GOFLASH TC GOTOPOOH TCF PROGRAV # VB33 -- PROCEED TC UPFLAG # VB32 -- RECYCLE -- STORE GRAV AND DO IT AGAIN ADRES FREEFLAG # AND SET FREEFLAG TO SHOW RECYCLE
PROGRAV TC PHASCHNG OCT04024
TC INTPRET
VLOAD
STARSAV1 STORE GSAV EXIT CAF FREEFBIT # IF FREEFLAG SET, RE-COMPUTE GRAVITY MASK FLAGWRD0 CCS A TCF GVDETER # SET TCF ATTCHK # EXIT FROM GVDETER
TC BANKCALL # DON'T NEED TO INHINT. THIS USED TO CADR PIPSRINE # INITIALIZE PIPAS. DON'T USE DATA TC INTPRET
GREED EXIT# = MASK 7776 IN BASIC SO DON'T CARE CAF2SECS TC TWIDDLE # SET UP 2 SEC TASK TO READ PIPAS ADRES GRABGRAV
ADDGRAV TC BANKCALL CADR1/PIPA INCR GCTR TC INTPRET
VLOAD VAD
DELV
GACC STORE GACC # ACCUMULATE G VECTOR SLOAD BMN
GCTR
GREED
VLOAD UNIT
GACC
STCALL STAR
CDUTRIG # TRANSFORM IN NB COOR AND STORE CALL# IN OUTPUT
*SMNB* STORE GOUT EXIT TC PHASCHNG OCT04024
# Page 970 # PERFORM STAR ACQUISITION AND STAR SIGHTINGS
2STARS CAF ZERO # INITIALIZE STARIND TCF +2# ZERO FOR 1ST STAR, ONE FOR 2ND STAR 1STAR CAF BIT1 TS STARIND
TC PHASCHNG OCT04024
TCF R59 # GO DO STAR ACQUIRE AND AOTMARK
R59RET CA STARIND # BACK FROM SURFACE MARKING EXTEND BZF ASTAR # 1ST STAR MARKED
TC PHASCHNG OCT04024
TC INTPRET DLOADCALL
TSIGHT # TIME OF 2ND MARK
PLANET
STCALL VEC2 # STORE 2ND CATALOG VEC (REF)
SURFLINE
ASTAR TC INTPRET
VLOAD
STARAD +6 STORE STARSAV1 # 1ST OBSERVED STAR (SM) DLOADCALL
TSIGHT # TIME OF 1ST MARK
PLANET STORE VEC1 # STORE 1ST CATALOG VEC (REF) EXIT TCF1STAR # GO GET 2ND STAR SIGHTING
# Page 971 # DO FINE OR COARSE ALIGNMENT OF IMU
SURFLINE SSP AXT,2
S2 6 12D
WRTDESIR VLOAD* MXV
VEC1 +12D,2# PICK UP VEC IN REF, TRANS TO DESIRED SH
XSMD
UNIT STORE STARAD +12D,2# VEC IN SM
VLOAD*
STARSAV1 +12D,2# PICK UP VEC IN PRESENT SM STORE18D,2
TIX,2 BON
WRTDESIR
INITALGN # IF INITIAL PASS (OPTION 0) BYPASS R54
INITBY
DOALIGN CALL
R54 # DO CHKSDATA
BOFF
FREEFLAG
P57POST # ASTRO DOES NOT LIKE DATA TEST RESULTS
INITBY CALL
AXISGEN # GET DESIRED ORIENT WRT PRES. XDC,YDC,ZDC CALL
CALCGTA # GET GYRO TORQ ANGLES, OGC,IGC,MGC EXIT CAF INITABIT # IF INITIAL PASS BYPASS NOUN 93 DISPLAY MASK FLAGWRD8 CCS A TCF5DEGTEST CAF DISPGYRO # DISPLAY GYRO TORQ ANGLES V 06N93 TC BANKCALL CADR GOFLASH TC GOTOPOOH # V34 -- TERMINATE TCF5DEGTEST # VB33 -- PROCEED TO COARSE OR FINE TCF P57POST +1# VB32 -- RECYCLE, MAYBE RE-ALIGN
5DEGTEST TC INTPRET # IF ANGLES GREATER THAN 5 DEGS, DO COARSE
VLOAD BOV
OGC
SURFSUP
SURFSUP STORE OGCT
V/SC BOV 5DEGREES
COATRIM
SSP GOTO
QMIN
SURFDISP # Page 972
JUSTTRIM # ANGLES LESS THAN 5 DEG, DO GYRO TORQ
SURFDISP EXIT TC PHASCHNG OCT04024
TC INTPRET AXC,1AXC,2
XSMD
REFSMMAT
SET CALL
REFSMFLG
MATMOVE EXIT CCS OPTION2 # IF OPTION ZERO DO FINISH TCF B2F8 TCF P57POST +1
B2F8 CAF INITABIT # IF INITIAL FLAG SET, RE-CYCLE. MASK FLAGWRD8 CCS A TCF P57JUMP # IT'S SET TC INTPRET CALL
REFMF # GO GET ATTITUDE VEC IN MF(YNBSAV,XNBSAV)
P57POST EXIT CAF OCT14 # DISPLAY V50N25 CHK CODE 14 TC BANKCALL CADR GOPERF1 TCF GOTOPOOH # VB34 -- TERMINATE TCF P57JUMP # VB33 -- PROCEED TO RE-ALIGN CS BIT2 # TEST TO SEE IF ALIGNED BY OPTION 2 AD OPTION2 EXTEND BZF +2# YES -- GO CALCULATE LANDING SITE TCF GOTOPOOH # NO -- EXIT P57 TC PHASCHNG # RESTART PLACE OCT04024 TC INTPRET
VLOAD CALL# USE GNB
GSAV
CDU*NBSM # GO TO SM COORDS
VXM SET # ON MOON SO SET LUNAFLAG
REFSMMAT # G(REF) = (REFSMMAT)T (NBSM)GNB
LUNAFLAG
PDVL ABVAL
RLS VXSCSTADR STORE ALPHAV # ALPHAV = RLSMAG * G(REF)
CLEAR RTB # Page 973
ERADFLAG
LOADTIME CALL
N89DISP # SUBROUTINE TO CALC LS AND GIVE RLS BACK STORE RN # RN=RLS B-29 = LM POSITION
VSL2 PDDL # R-TO-RP GETS RLS B-27 AT 0-50 IN PDLIST
GDT/2 +4# TIME TEMP STORED IN N89DISP PUSH# TIME AT 6-7 IN PDLIST
STCALL PIPTIME # PIPTIME = LM STATE TIME
R-TO-RP STORE RLS # RLS IN MOON-FIXED COORDS EXIT TCF GOTOPOOH # EXIT P57
TC INTPRET
RTB PDDL
LOADTIME # PUSH CURRENT TIME AND PICK UP KEY IN
DSPTEM1 # Page 976
BZE PDDL
P57C # IF KEY IN TIME ZERO - TALIGN=CURRENT TIME
DSU BPL # NOT ZERO SO EXCHANGE PD WITH DSPTEM1
DSPTEM1
P57C DLOADSTADR# IF KEYIN TIME GREATER THAN CURRENT TIME STORE TIG # STORE IT IN TIG
STCALL TALIGN
P57D
P57C DLOADSTADR STORE TALIGN
P57D STCALL TDEC1
LEMPREC # COMPUTE DESIRED IMU ORIENTATION STORE
VLOAD UNIT # IN X,Y,ZSMD
RATT
STCALL XSMD
LSORIENT EXIT
PACKOPTN CAF ZERO # PACK FLAG BITS FOR OPTION DISPLAY TS OPTION1 +1# JAM ZERO IN ALIGNMENT OPTION TS OPTION1 +2# INITIALIZE FLAG BIT CONFIGURATION CAF REFSMBIT MASK FLAGWRD3 # REFSMFLG CCS A CAF BIT7 # SET ADS OPTION1 +2# CLEAR -- JUST ZERO CAF ATTFLBIT MASK FLAGWRD6 # ATTFLG CCS A CAF BIT4 # SET ADS OPTION1 +2# CLEAR -- ZERO IN A CAF BIT4 TS OPTION1 # JAM 00010 IN OPTION1 FOR CHECK LIST
# Page 979 # COMPUTE LM ATTITUDE IN MOON FIXED COORDINATES USING REFSMMAT AND # STORE IN YNBSAV AND ZNBSAV.
REFMF STQ CALL
QMAJ
CDUTRIG # GET SIN AND COS OF CDUS
RTB SETPD
LOADTIME 0
STCALL TSIGHT
CALCSMSC # GET YNB IN SM
VLOAD VXM
YNB
REFSMMAT # YNB TO REF
UNIT PDDL
TSIGHT PUSHCALL
R-TO-RP STOVL YNBSAV # YNB TO MF
ZNB
VXM UNIT
REFSMMAT # ZNB TO REF
PDDL PUSH
TSIGHT CALL
R-TO-RP # ZNB TO MF STORE ZNBSAV
SETGO
ATTFLAG
QMAJ
# Page 980 # BRANCH TO ALIGNMENT OPTION
GETLMATT TC INTPRET CALL
REFMF # GO TRANSFORM TO MF IN YNBSAV, ZNBSAV EXIT
BYLMATT TC UPFLAG # SET INITIAL ALIGN FLAG ADRES INITALGN CAF BIT1 MASK OPTION2 # SEE IF OPTION 1 OR 3 CCS A TCF GVDETER # OPTION 1 OR 2, GET GRAVITY
ATTCHK TC PHASCHNG OCT04024
CAF ATTFLBIT # NOT 1 OR 3, CHECK ATTFLAG MASK FLAGWRD6 CCS A TCF P57OPT0 # GET ALIGNMENT VECS FOR OPTION 0
P57JUMP TC PHASCHNG OCT04024
TC DOWNFLAG # ATTFLG CLEAR -- RESET INTALIGN FLAG ADRES INITALGN CAF THREE MASK OPTION2 # BRANCH ON OPTION CODE INDEX A TCF +1 TCF P57OPT0 # OPTION IS 0 TCF P57OPT1 # OPTION IS 1 TCF P57OPT2 # OPTION IS 2 TCF P57OPT3 # OPTION IS 3
# Page 981 # OPTION 0, GET TWO ATTITUDE VECS
P57OPT0 TC INTPRET
VLOAD
YNBSAV # Y AND Z ATTITUDE WILL BE PUT IN REF STOVL VEC1
ZNBSAV
STCALL VEC2
CDUTRIG CALL
CALCSMSC # COMPUTE SC AXIS WRT PRESENT SM
VLOAD
YNB
SAMETYP STOVL STARSAV1 # Y SC AXIS WRT PRESENT SM
ZNB
STCALL STARSAV2 # Z SC AXIS WRT PRESENT SM
MFREF # TRANSFORM VEC1,2 FROM MF TO REF
GOTO
SURFLINE
# OPTION 1, GET LANDING SITE AND Z-ATTITUDE VEC
P57OPT1 TC INTPRET
VLOAD UNIT
RLS # LANDING SITE VEC STOVL VEC1
ZNBSAV # Z ATTITUDE VEC
STCALL VEC2
CDUTRIG CALL
CALCSMSC # GET ZNB AXIS WRT PRES SM FOR STARSAV2
VLOAD CALL
GSAV # TRANS GSAV FROM NB TO SM FOR STARSAV1
CDU*NBSM
GOTO
SAMETYP # NOW DO SAME AS OPTION 0
# Page 982 # OPTION 2, GET TWO STAR SIGHTINGS
P57OPT2 TCF2STARS # DO SIGHTING ON 2 STARS
# OPTION 3, GET LANDING SITE VEC AND ONE STAR SIGHTING
P57OPT3 TC INTPRET
VLOAD UNIT
RLS # LANDING SITE VEC STORE VEC1 STOVL VEC2 # DUMMY VEC2 FOR 2ND CATALOG STAR
GSAV # GRAVITY VEC NB CALL
CDU*NBSM # TRANS GSAV FROM NB TO SM FOR STARSAV1
STCALL STARSAV1
MFREF # STARSAV2 IS STORED AS 2ND OBSERVED STAR EXIT TCF1STAR # 1STAR GET VEC2, STARSAV2 GOES TO SURFLINE.
VB05N06 VN506
# Page 983 # CHECK IMODES30 TO VERIFY IMU IS ON
IMUCHK CS IMODES30 MASK BIT9 CCS A # IS IMU ON TCF +4# YES
TC ALARM # NO, SEND ALARM AND EXIT OCT210 TC GOTOPOOH
TC UPFLAG ADRES IMUSE # SET IMUSE FLAG
TC SWRETURN
BANK04 SETLOC AOTMARK2 BANK COUNT* $$/P57
LSORIENT STQ VLOAD
QMAJ
RRECTCSM
VXV VXV
VRECTCSM
XSMD
UNIT STORE ZSMD
VXV UNIT
XSMD
STCALL YSMD
QMAJ
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.78Bemerkung:
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.