# Copyright:	Public domain.
# Filename:	IMU_PERFORMANCE_TESTS.s
# Purpose:	A section of Luminary 1C, revision 131.
#		It is part of the source code for the Lunar Module's (LM)
#		Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
#		This file is intended to be a faithful transcription, except
#		that the code format has been changed to conform to the
#		requirements of the yaYUL assembler rather than the 
#		original YUL assembler.
# Reference:	pp. 389-396 of 1729.pdf.
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo/index.html
# Mod history:	05/11/03 RSB.	Began transcribing.
#		05/14/05 RSB.	Corrected website reference above.

# Page 389
# PROGRAM --	IMU PERFORMANCE TESTS 4
# DATA --	NOV 15, 1966
# BY --		GEORGE SCHMIDT IL7-146 EXT 1126
# MCD NO-ZERO
#
# FUNCITONAL DESCRIPTION
#
# THIS SECTION CONSISTSOF THE FILTER FOR THE GYRO DRIFT TESTS.  NO COMPASS
# IS DONE IN LEM.  FOR A DESCRIPTION OF THE FILTER SEE E-1973.  THIS
# SECTION IS ENTERED FROM IMU 2.  IT RETURNS THERE AT END OF TEST.
#
# EARTHR,OGC ZERO,ERTHRVSE
#
# NORMAL EXIT
#
# LENGTHOT GOES TO ZERO -- RETURN TO IMU PERF TESTS 2 CONTROL
#
# ALARMS
#
# 1600	OVERFLOW IN DRIFT TEST
# 1601	BAD IMU MODING IN ANY ROUTINE THAT USES IMUSTALL
#	OUTPUT
#
# FLASHING DISPLAY OF RESULTS -- CONTROLLED IN IMU PERF TESTS 2
#
# DEBRIS
#
# ALL CENTRALS -- ALL OF EBANK XSM

# Page 390
		BANK	33
		SETLOC	IMU4
		BANK
		COUNT*	$$/P07
		
		EBANK=	XSM
		
ESTIMS		INHINT
		CAE	1SECXT
		TC	TWIDDLE
		EBANK=	XSM
		ADRES	ALLOOP
		CAF	ZERO		# ZERO THE PIPAS
		TS	PIPAX
		TS	PIPAY
		TS	PIPAZ
		RELINT
		CA	77DECML
		TS	ZERONDX
		CA	ALXXXZ
		TC	ZEROING
		TC	INTPRET
		SLOAD
			SCHZEROS
		STOVL	GCOMPSW -1
			INTVAL +2
		STOVL	ALX1S
			SCHZEROS
		STORE	DELVX
		STORE	GCOMP
		SLOAD
			TORQNDX
		DCOMP	BMN
			VERTSKIP
		CALL	
			ERTHRVSE
VERTSKIP	EXIT
		TC	SLEEPIE +1
		
# Page 391
ALLOOP		CA	OVFLOWCK
		EXTEND
		BZF	+2
		TC	TASKOVER
		CCS	ALTIM
		CA	A		# SHOULD NEVER HIT THIS LOCATION
		TS	ALTIMS
		CS	A
		TS	ALTIM
		CS	ONE
		AD	GEOCOMPS
		EXTEND
		BZF	+4
		CA	LENGTHOT
		EXTEND
		BZMF	+5
		CAE	1SECXT
		TC	TWIDDLE
		EBANK=	XSM
		ADRES	ALLOOP
		CAF	ZERO
		XCH	PIPAX
		TS	DELVX
		CAF	ZERO
		XCH	PIPAY
		TS	DELVY
		CAF	ZERO
		XCH	PIPAZ
		TS	DELVZ
SPECSTS		CAF	PRIO20
		TC	FINDVAC
		EBANK=	XSM
		2CADR	ALFLT		# START THE JOB
		
		TC	TASKOVER
		
# Page 392
ALFLT		CCS	GEOCOMPS
		TC	+2
		TC	NORMLOP
		TC	BANKCALL
		CADR	1/PIPA
NORMLOP		TC	INTPRET
		DLOAD
			INTVAL
		STOVL	S1
			DELVX
		VXM	VSL1
			XSM
		DLOAD	DCOMP
			MPAC +3
		STODL	DPIPAY
			MPAC +5
		STORE	DPIPAZ
		
		SETPD	AXT,1
			0
			8D
		SLOAD	DCOMP
			GEOCOMPS
		BMN	
			PERFERAS
ALCGKK		SLOAD	BMN
			ALTIMS
			ALFLT3
ALKCG		AXT,2	LXA,1		# LOADS SLOPES AND TIME CONSTANTS AT RQST
			12D
			ALX1S
ALKCG2		DLOAD*	INCR,1
			ALFDK +144D,1
		DEC	-2
		STORE	ALDK +10D,2
		TIX,2	SXA,1
			ALKCG2
			ALX1S
			
ALFLT3		AXT,1
			8D
DELMLP		DLOAD*	DMP
			DPIPAY +8D,1
			PIPASC
		SLR	BDSU*
			9D
			INTY +8D,1
		STORE	INTY +8D,1
		PDDL	DMP*
			VELSC
# Page 393
			VLAUN +8D,1
		SL2R
		DSU	STADR
		STORE	DELM +8D,1
		STORE	DELM +10D,1
		TIX,1	AXT,2
			DELMLP
			4
ALILP		DLOAD*	DMPR*
			ALK +4,2
			ALDK +4,2
		STORE	ALK +4,2
		TIX,2	AXT,2
			ALILP
			8D
ALKLP		LXC,1	SXA,1
			CMPX1
			CMPX1
		DLOAD*	DMPR*
			ALK +1,1
			DELM +8D,2
		DAD*
			INTY +8D,2
		STORE	INTY +8D,2
		DLOAD*	DAD*
			ALK +12D,2
			ALDK +12D,2
		STORE	ALK +12D,2
		DMPR*	DAD*
			DELM +8D,2
			INTY +16D,2
		STORE	INTY +16D,2
		DLOAD*	DMP*
			ALSK +1,1
			DELM +8D,2
		SL1R	DAD*
			VLAUN +8D,2
		STORE	VLAUN +8D,2
		TIX,2	AXT,1
			ALKLP
			8D
			
LOOSE		DLOAD*	PDDL*
			ACCWD +8D,1
			VLAUN +8D,1
		PDDL*	VDEF
			POSNV +8D,1
		MXV	VSL1
			TRANSM1
# Page 394
		DLOAD
			MPAC
		STORE	POSNV +8D,1
		DLOAD
			MPAC +3
		STORE	VLAUN +8D,1
		DLOAD
			MPAC +5
		STORE	ACCWD +8D,1
		TIX,1
			LOOSE
			
		AXT,2	AXT,1		# EVALUATE SINES AND COSINES
			6
			2
BOOP		DLOAD*	DMPR
			ANGX +2,1
			GEORGEJ
		SR2R
		PUSH	SIN
		SL3R	XAD,1
			X1
		STORE	16D,2
		DLOAD
		COS
		STORE	22D,2		# COSINES
		TIX,2
			BOOP
			
PERFERAS	EXIT
		CA	EBANK7
		TS	EBANK
		EBANK=	ATIGINC
		TC	ATIGINC		# GOTO ERASABLE TO CALCULATE (garbled) TO RETN
		
# CAUTION
#
# THE ERASABLE PROGRAM THAT DOES THE CALCULATIONS MUST BE LOADED
# BEFORE ANY ATTEMPT IS MAKE TO RUN THE IMU PERFORMANCE TEST

		EBANK=	AZIMUTH
		CCS	LENGTHOT
		TC	SLEEPIE
		CCS	TORQNDX
		TCF	+2
		TC	SETUPER1
		CA	CDUX
		TS	LOSVEC +1	# FOR TROUBLESHOOTING VD POSNS 2.
		
# Page 395
SETUPER1	TC	INTPRET
		DLOAD	PDDL		# ANGLES FROM DRIFT TEST ONLY
			ANGZ
			ANGY
		PDDL	VDEF
			ANGX
		VCOMP	VXSC
			GEORGEJ
		MXV	VSR1
			XSM
		STORE	OGC
		EXIT
		
		CA	OGCPL
		TC	BANKCALL
		CADR	IMUPULSE
		TC	IMUSLLLG
GEOSTRT4	CCS	TORQNDX		# ONLY POSITIVE IF IN VERTICAL DRIFT TEST
		TC	VALMIS
		TC	INTPRET
		CALL
			ERTHRVSE
		EXIT
		TC	TORQUE
		
SLEEPIE		TS	LENGTHOT	# TEST NOT OVER-DECREMENT LENGTHOT
		CCS	TORQNDX		# ARE WE DOING VERTDRIFT
		TC	EARTHR*
		TC	ENDOFJOB
		
SOMEERRR	CA	EBANK5
		TS	EBANK
		CA	ONE
		TS	OVFLOWCK	# STOP ALLOOP FROM CALLING ITSELF
		TC	ALARM
		OCT	1600
		TC	ENDTEST1
SOMERR2		CAF	OCT1601
		TC	VARALARM
		TC	DOWNFLAG
		ADRES	IMUSE
		TC	ENDOFJOB
		
OCT1601		OCT	01601
DEC585		OCT	06200		# 3200 B+14 ORDER IS IMPORTANT
SCHZEROS	2DEC	.00000000
# Page 396
		2DEC	.00000000
		OCT	00000
ONEDPP		OCT	00000		# ORDER IS IMPORTANT
		OCT	00001
		
INTVAL		OCT	4
		OCT	2
		DEC	144
		DEC	-1
SOUPLY		2DEC	.93505870	# INITIAL GAINS FOR PIP OUTPUTS
		2DEC	.26266423	# INITIAL GAINS/4 FOR ERECTION ANGLES
		
77DECML		DEC	77
ALXXXZ		GENADR	ALX1S -1
PIPASC		2DEC	.13055869
VELSC		2DEC	-.52223476	# 512/980.402
ALSK		2DEC	.17329931	# SSWAY VEL GAIN X 980.402/4096
		2DEC	-.00835370	# SSWAY ACCEL GAIN X 980.402/4096
		
GEORGEJ		2DEC	.63661977
GEORGEK		2DEC	.59737013

