386 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			386 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# Copyright:	Public domain.
 | 
						|
# Filename:	PLANETARY_INERTIAL_ORIENTATION.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:	Jim Lawton <jim.lawton@gmail.com>
 | 
						|
# Website:	www.ibiblio.org/apollo.
 | 
						|
# Pages:	1140-1148
 | 
						|
# Mod history:	2009-05-28	JVL	Updated from page images.
 | 
						|
#
 | 
						|
# 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 1140
 | 
						|
# ..... RP-TO-R SUBROUTINE .....
 | 
						|
# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM,EITHER
 | 
						|
#  EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN THE BASIC REF. SYSTEM)
 | 
						|
#
 | 
						|
#  R=MT(T)*(RP+LPXRP)	 MT= M MATRIX TRANSPOSE
 | 
						|
#
 | 
						|
# CALLING SEQUENCE
 | 
						|
#  L	   CALL
 | 
						|
#  L+1		  RP-TO-R
 | 
						|
#
 | 
						|
# SUBROUTINES USED
 | 
						|
#  EARTHMX,MOONMX,EARTHL
 | 
						|
#
 | 
						|
#    ITEMS AVAILABLE FROM LAUNCH DATA
 | 
						|
#     504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED
 | 
						|
#     IN THE MOON-FIXED COORD. SYSTEM	RADIANS	 B0
 | 
						|
#	ITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)
 | 
						|
#
 | 
						|
# INPUT
 | 
						|
#  MPAC= 0 FOR EARTH,NON-ZERO FOR MOON
 | 
						|
#  0-5D= RP VECTOR
 | 
						|
#  6-7D= TIME
 | 
						|
#
 | 
						|
# OUTPUT
 | 
						|
#  MPAC= R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
 | 
						|
 | 
						|
		SETLOC	PLANTIN1
 | 
						|
		BANK
 | 
						|
 | 
						|
		COUNT*	$$/LUROT
 | 
						|
 | 
						|
RP-TO-R		STQ	BHIZ
 | 
						|
			RPREXIT
 | 
						|
			RPTORA
 | 
						|
		CALL			# COMPUTE M MATRIX FOR MOON
 | 
						|
			MOONMX		# LP=LM FOR MOON  RADIANS B0
 | 
						|
		VLOAD
 | 
						|
			504LM
 | 
						|
RPTORB		VXV	VAD
 | 
						|
			504RPR
 | 
						|
			504RPR
 | 
						|
		VXM	GOTO
 | 
						|
			MMATRIX		# MPAC=R=MT(T)*(RP+LPXRP)
 | 
						|
			RPRPXXXX	# RESET PUSHLOC TO 0 BEFORE EXITING
 | 
						|
RPTORA		CALL			# EARTH COMPUTATIONS
 | 
						|
			EARTHMX		# M MATRIX B-1
 | 
						|
		CALL
 | 
						|
			EARTHL		# L VECTOR RADIANS B0
 | 
						|
		MXV	VSL1		# LP=M(T)*L  RAD B-0
 | 
						|
			MMATRIX
 | 
						|
# Page 1141
 | 
						|
		GOTO
 | 
						|
			RPTORB
 | 
						|
		SETLOC	PLANTIN
 | 
						|
		BANK
 | 
						|
		COUNT*	$$/LUROT
 | 
						|
 | 
						|
# Page 1142
 | 
						|
# ..... R-TO-RP SUBROUTINE .....
 | 
						|
# SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP
 | 
						|
#  (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED
 | 
						|
#
 | 
						|
#  RP=M(T)*(R-LXR)
 | 
						|
#
 | 
						|
# CALLING SEQUENCE
 | 
						|
#  L	   CALL
 | 
						|
#  L+1		  R-TO-RP
 | 
						|
#
 | 
						|
# SUBROUTINES USED
 | 
						|
#  EARTHMX,MOONMX,EARTHL
 | 
						|
#
 | 
						|
# INPUT
 | 
						|
#  MPAC= 0 FOR EARTH, NON-ZERO FOR MOON
 | 
						|
#  0-5D= R VECTOR
 | 
						|
#  6-7D= TIME
 | 
						|
#
 | 
						|
#    ITEMS AVAILABLE FROM LAUNCH DATA
 | 
						|
#     504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED
 | 
						|
#     IN THE MOON-FIXED COORD. SYSTEM	RADIANS B0
 | 
						|
#	ITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)
 | 
						|
#
 | 
						|
# OUTPUT
 | 
						|
#  MPAC=RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
 | 
						|
 | 
						|
R-TO-RP		STQ	BHIZ
 | 
						|
			RPREXIT
 | 
						|
			RTORPA
 | 
						|
		CALL
 | 
						|
			MOONMX
 | 
						|
		VLOAD	VXM
 | 
						|
			504LM		# LP=LM
 | 
						|
			MMATRIX
 | 
						|
		VSL1			#  L=MT(T)*LP  RADIANS B0
 | 
						|
RTORPB		VXV	BVSU
 | 
						|
			504RPR
 | 
						|
			504RPR
 | 
						|
		MXV			# M(T)*(R-LXR) B-2
 | 
						|
			MMATRIX
 | 
						|
RPRPXXXX	VSL1	SETPD
 | 
						|
			0D
 | 
						|
		GOTO
 | 
						|
			RPREXIT
 | 
						|
RTORPA		CALL			# EARTH COMPUTATIONS
 | 
						|
			EARTHMX
 | 
						|
		CALL
 | 
						|
			EARTHL
 | 
						|
		GOTO			# MPAC=L=(-AX,-AY,0) RAD B-0
 | 
						|
			RTORPB
 | 
						|
 | 
						|
# Page 1143
 | 
						|
# ..... MOONMX SUBROUTINE .....
 | 
						|
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON
 | 
						|
#
 | 
						|
# CALLING SEQUENCE
 | 
						|
#  L	   CALL
 | 
						|
#  L+1		  MOONMX
 | 
						|
#
 | 
						|
# SUBROUTINES USED
 | 
						|
#  NEWANGLE
 | 
						|
#
 | 
						|
# INPUT
 | 
						|
#  6-7D= TIME
 | 
						|
#    ITEMS AVAILABLE FROM LAUNCH DATA
 | 
						|
#     BSUBO,BDOT
 | 
						|
#     TIMSUBO,NODIO,NODDOT,FSUBO,FDOT
 | 
						|
#     COSI= COS(I) B-1
 | 
						|
#     SINI= SIN(I) B-1
 | 
						|
#	I  IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE
 | 
						|
#	PLANE OF THE ECLIPTIC  (1 DEGREE  32.1 MINUTES)
 | 
						|
#
 | 
						|
# OUTPUT
 | 
						|
#  MMATRIX= 3X3 M MATRIX B-1   (STORED IN VAC AREA)
 | 
						|
 | 
						|
MOONMX		STQ	SETPD
 | 
						|
			EARTHMXX
 | 
						|
			8D
 | 
						|
		AXT,1			# B REQUIRES SL 0, SL 5 IN NEWANGLE
 | 
						|
			5
 | 
						|
		DLOAD	PDDL		# PD 10D	    8-9D=BSUBO
 | 
						|
			BSUBO		#		    10-11D= BDOT
 | 
						|
			BDOT
 | 
						|
		PUSH	CALL		# PD 12D
 | 
						|
			NEWANGLE	# EXIT WITH PD 8D AND MPAC= B  REVS B0
 | 
						|
		PUSH	COS		# PD 10D
 | 
						|
		STODL	COB		# PD 8D	   COS(B) B-1
 | 
						|
		SIN			#	   SIN(B) B-1
 | 
						|
		STODL	SOB		#           SETUP INPUT FOR NEWANGLE
 | 
						|
			FSUBO		# 		      8-9D=FSUBO
 | 
						|
		PDDL	PUSH		# PD 10D THEN 12D   10-11D=FDOT
 | 
						|
			FDOT
 | 
						|
		AXT,1	CALL		# F REQUIRES SL 1, SL 6 IN NEWANGLE
 | 
						|
			4
 | 
						|
			NEWANGLE	# EXIT WITH PD 8D AND MPAC= F REVS B0
 | 
						|
		STODL	AVECTR +2	# SAVE F TEMP
 | 
						|
			NODIO		#			8-9D=NODIO
 | 
						|
		PDDL	PUSH		# PD 10D THEN 12D     10-11D=NODDOT
 | 
						|
			NODDOT		#			MPAC=T
 | 
						|
		AXT,1	CALL		# NODE REQUIRES SL 0, SL 5 IN NEWANGLE
 | 
						|
			5
 | 
						|
			NEWANGLE	# EXIT WITH PD 8D AND MPAC= NODI REVS B0
 | 
						|
# Page 1144
 | 
						|
		PUSH	COS		# PD 10D   8-9D= NODI  REVS  B0
 | 
						|
		PUSH			# PD 12D 10-11D= COS(NODI)  B-1
 | 
						|
		STORE	AVECTR
 | 
						|
		DMP	SL1R
 | 
						|
			COB		#			  COS(NODI)    B-1
 | 
						|
		STODL	BVECTR +2	# PD 10D   20-25D=AVECTR= COB*SIN(NODI)
 | 
						|
		DMP	SL1R		#			  SOB*SIN(NODI)
 | 
						|
			SOB
 | 
						|
		STODL	BVECTR +4	# PD 8D
 | 
						|
		SIN	PUSH		# PD 10D		 -SIN(NODI)   B-1
 | 
						|
		DCOMP			#          26-31D=BVECTR= COB*COS(NODI)
 | 
						|
		STODL	BVECTR		# PD 8D			  SOB*COS(NODI)
 | 
						|
			AVECTR +2	# MOVE F FROM TEMP LOC. TO 504F
 | 
						|
		STODL	504F
 | 
						|
		DMP	SL1R
 | 
						|
			COB
 | 
						|
		GOTO
 | 
						|
			MOONMXA
 | 
						|
 | 
						|
		BANK	25
 | 
						|
		SETLOC	PLANTIN3
 | 
						|
		BANK
 | 
						|
		COUNT*	$$/LUROT
 | 
						|
 | 
						|
MOONMXA		STODL	AVECTR +2
 | 
						|
			SINNODI		# 8-9D=SIN(NODI)  B-1
 | 
						|
		DMP	SL1R
 | 
						|
			SOB
 | 
						|
		STODL	AVECTR +4	#			   0
 | 
						|
			HI6ZEROS	#	  8-13D= CVECTR= -SOB  B-1
 | 
						|
		PDDL	DCOMP		# PD 10D		  COB
 | 
						|
			SOB
 | 
						|
		PDDL	PDVL		# PD 12D THEN PD 14D
 | 
						|
			COB
 | 
						|
			BVECTR
 | 
						|
		VXSC	PDVL		# PD 20D	 BVECTR*SINI  B-2
 | 
						|
			SINI
 | 
						|
			CVECTR
 | 
						|
		VXSC	VAD		# PD 14D	 CVECTR*COSI  B-2
 | 
						|
			COSI
 | 
						|
		VSL1
 | 
						|
		STOVL	MMATRIX +12D	# PD 8D  M2=BVECTR*SINI+CVECTR*COSI  B-1
 | 
						|
		VXSC	PDVL		# PD 14D
 | 
						|
			SINI		#		 CVECTR*SINI  B-2
 | 
						|
			BVECTR
 | 
						|
		VXSC	VSU		# PD 8D		 BVECTR*COSI  B-2
 | 
						|
			COSI
 | 
						|
		VSL1	PDDL		# PD 14D
 | 
						|
			504F		# 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI B-1
 | 
						|
		COS	VXSC
 | 
						|
# Page 1145
 | 
						|
			DVECTR
 | 
						|
		PDDL	SIN		# PD 20D  14-19D= DVECTR*COSF  B-2
 | 
						|
			504F
 | 
						|
		VXSC	VSU		# PD 14D	  AVECTR*SINF  B-2
 | 
						|
			AVECTR
 | 
						|
		VSL1
 | 
						|
		STODL	MMATRIX +6	# M1= AVECTR*SINF-DVECTR*COSF  B-1
 | 
						|
			504F
 | 
						|
		SIN	VXSC		# PD 8D
 | 
						|
		PDDL	COS		# PD 14D  8-13D=DVECTR*SINF B-2
 | 
						|
			504F
 | 
						|
		VXSC	VAD		# PD 8D		AVECTR*COSF B-2
 | 
						|
			AVECTR
 | 
						|
		VSL1	VCOMP
 | 
						|
		STCALL	MMATRIX		# M0= -(AVECTR*COSF+DVECTR*SINF)  B-1
 | 
						|
			EARTHMXX
 | 
						|
# COMPUTE X=X0+(XDOT)(T+T0)
 | 
						|
# 8-9D= X0 (REVS B-0),PUSHLOC SET AT 12D
 | 
						|
# 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT
 | 
						|
#			  AND B+27 FOR FDOT
 | 
						|
#  X1=DIFFERENCE IN 23 AND SCALING OF XDOT,=0 FOR WEARTH,5 FOR NODDOT AND
 | 
						|
#					   BDOT AND 4 FOR FDOT
 | 
						|
# 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)
 | 
						|
 | 
						|
NEWANGLE	DLOAD	SR		# ENTER PD 12D
 | 
						|
			6D
 | 
						|
			14D
 | 
						|
		TAD	TLOAD		# CHANGE MODE TO TP
 | 
						|
			TIMSUBO
 | 
						|
			MPAC
 | 
						|
		STODL	TIMSUBM		# T+T0 CSEC B-42
 | 
						|
			TIMSUBM +1
 | 
						|
		DMP			# PD 10D  MULT BY XDOT IN 10-11D
 | 
						|
		SL*	DAD		# PD 8D	  ADD X0 IN 8-9D AFTER SHIFTING
 | 
						|
			5,1		#	  SUCH THAT SCALING IS B-0
 | 
						|
		PUSH	SLOAD		# PD 10D SAVE PARTIAL (X0+XDOT*T) IN 8-9D
 | 
						|
			TIMSUBM
 | 
						|
		SL	DMP
 | 
						|
			9D
 | 
						|
			10D		# XDOT
 | 
						|
		SL*	DAD		# PD 8D	  SHIFT SUCH THAT THIS PART OF X
 | 
						|
			10D,1		#	  IS SCALED REVS/CSEC B-0
 | 
						|
		BOV			# TURN OFF OVERFLOW IF SET BY SHIFT
 | 
						|
			+1		# INSTRUCTION BEFORE EXITING
 | 
						|
		RVQ			# MPAC=X= X0+(XDOT)(T+T0)  REVS B0
 | 
						|
 | 
						|
# Page 1146
 | 
						|
# ..... EARTHMX SUBROUTINE .....
 | 
						|
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH
 | 
						|
#
 | 
						|
# CALLING SEQUENCE
 | 
						|
#  L	   CALL
 | 
						|
#  L+1		  EARTHMX
 | 
						|
#
 | 
						|
# SUBROUTINE USED
 | 
						|
#  NEWANGLE
 | 
						|
#
 | 
						|
# INPUT
 | 
						|
#    INPUT AVAILABLE FROM LAUNCH DATA	  AZO  REVS B-0
 | 
						|
#					  TEPHEM  CSEC B-42
 | 
						|
#  6-7D= TIME CSEC B-28
 | 
						|
#
 | 
						|
# OUTPUT
 | 
						|
#  MMATRIX= 3X3 M MATRIX B-1   (STORED IN VAC AREA)
 | 
						|
 | 
						|
		BANK	26
 | 
						|
		SETLOC	PLANTIN1
 | 
						|
		BANK
 | 
						|
		COUNT*	$$/LUROT
 | 
						|
 | 
						|
EARTHMX		STQ	SETPD		# SET	8-9D=AZO
 | 
						|
			EARTHMXX
 | 
						|
			8D		# 10-11D=WEARTH
 | 
						|
		AXT,1			# FOR SL 5, AND SL 10  IN NEWANGLE
 | 
						|
			0
 | 
						|
		DLOAD	PDDL		#   LEAVING PD SET AT 12D FOR NEWANGLE
 | 
						|
			AZO
 | 
						|
			WEARTH
 | 
						|
		PUSH	CALL
 | 
						|
			NEWANGLE
 | 
						|
		SETPD	PUSH		# 18-19D=504AZ
 | 
						|
			18D		#		     COS(AZ) SIN(AZ) 0
 | 
						|
		COS	PDDL		# 20-37D=  MMATRIX= -SIN(AZ) COS(AZ) 0 B-1
 | 
						|
			504AZ		#		      0       0      1
 | 
						|
		SIN	PDDL
 | 
						|
			HI6ZEROS
 | 
						|
		PDDL	SIN
 | 
						|
			504AZ
 | 
						|
		DCOMP	PDDL
 | 
						|
			504AZ
 | 
						|
		COS	PDVL
 | 
						|
			HI6ZEROS
 | 
						|
		PDDL	PUSH
 | 
						|
			HIDPHALF
 | 
						|
		GOTO
 | 
						|
			EARTHMXX
 | 
						|
 | 
						|
# Page 1147
 | 
						|
# ..... EARTHL SUBROUTINE .....
 | 
						|
# SUBROUTINE TO COMPUTE L VECTOR FOR EARTH
 | 
						|
#
 | 
						|
# CALLING SEQUENCE
 | 
						|
#  L	   CALL
 | 
						|
#  L+1		  EARTHL
 | 
						|
#
 | 
						|
# INPUT
 | 
						|
#  AXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE
 | 
						|
#
 | 
						|
# OUTPUT
 | 
						|
#	    -AX
 | 
						|
#   MPAC=   -AY    RADIANS B-0
 | 
						|
#	      0
 | 
						|
 | 
						|
		BANK	06
 | 
						|
		SETLOC	EARTHLOC
 | 
						|
		BANK
 | 
						|
		COUNT*	$$/LUROT
 | 
						|
 | 
						|
EARTHL		DLOAD	DCOMP
 | 
						|
			AXO
 | 
						|
		STODL	504LPL
 | 
						|
			-AYO
 | 
						|
		STODL	504LPL +2
 | 
						|
			LO6ZEROS
 | 
						|
		STOVL	504LPL +4
 | 
						|
			504LPL
 | 
						|
		RVQ
 | 
						|
 | 
						|
# Page 1148
 | 
						|
# CONSTANTS AND ERASABLE ASSIGNMENTS
 | 
						|
1B1		=	DP1/2		# 1  SCALED B-1
 | 
						|
RPREXIT		=	S1		# R-TO-RP AND RP-TO-R SUBR EXIT
 | 
						|
EARTHMXX	=	S2		# EARTHMX,MOONMX SUBR. EXITS
 | 
						|
504RPR		=	0D		# 6 REGS  R OR RP VECTOR
 | 
						|
SINNODI		=	8D		# 2	  SIN(NODI)
 | 
						|
DVECTR		=	8D		# 6	  D VECTOR MOON
 | 
						|
CVECTR		=	8D		# 6	  C VECTR MOON
 | 
						|
504AZ		=	18D		# 2	 AZ
 | 
						|
TIMSUBM		=	14D		# 3	  TIME SUB M (MOON) T+T0 IN GETAZ
 | 
						|
504LPL		=	14D		# 6	  L OR LP VECTOR
 | 
						|
AVECTR		=	20D		# 6	  A VECTOR (MOON)
 | 
						|
BVECTR		=	26D		# 6	  B VECTOR (MOON)
 | 
						|
MMATRIX		=	20D		# 18	  M MATRIX
 | 
						|
COB		=	32D		# 2	  COS(B) B-1
 | 
						|
SOB		=	34D		# 2	  SIN(B) B-1
 | 
						|
504F		=	6D		# 2	  F (MOON)
 |