Raw File
KALCMANU_STEERING.agc
### FILE="Main.annotation"
## Copyright:	Public domain.
## Filename:	KALCMANU_STEERING.agc
## Purpose:	Part of the source code for Artemis (i.e., Colossus 3),
##		build 072.  This is for the Command Module's (CM) 
##		Apollo Guidance Computer (AGC), for 
##		Apollo 15-17.
## Assembler:	yaYUL
## Contact:	Sergio Navarro <sergionavarrog@gmail.com>
## Website:	www.ibiblio.org/apollo/index.html
## Page Scans:	www.ibiblio.org/apollo/ScansForConversion/Artemis072/
## Mod history:	2009-08-19 SN	Adapted from corresponding Comanche 055 file.
## 		2009-09-04 JL	Fix typos.
## 		2010-01-31 JL	Fixed build errors.
##		2010-02-20 RSB	Un-##'d this header.
##		2017-02-05 RSB	Proofed comment text by diff'ing vs Comanche 55
##				and corrected errors found.

## Page 418

# GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
#
# NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER

		SETLOC	KALCMON1
		BANK
		
		EBANK=	BCDU
		
		COUNT*	$$/KALC
NEWDELHI	CAF	R67BIT
		MASK	FLAGWRD8
		EXTEND
		BZF	NEWANGL -3	# NON-R67 SEQUENCE

		CAF	TRACKBIT
		MASK	FLAGWRD1
		EXTEND			# CHECK TRACKFLAG
		BZF	MYSTEND		# IF OFF DO MYSTEND

 -3		CS	HOLDFLAG
		EXTEND			# CHECK HOLDFLAG
		BZMF	NOGOM2		# IF POS, DO STOPRATE

NEWANGL		TC	INTPRET
 +1		AXC,1	AXC,2
			MIS		# COMPUTE THE NEW MATRIX FROM S/C TO
			DEL		# STABLE MEMBER AXES
		CALL
			MXM3
		VLOAD	STADR
		STOVL	MIS +12D	# CALCULATE NEW DESIRED CDU ANGLES
		STADR
		STOVL	MIS +6D
		STADR
		STORE	MIS
		AXC,1	CALL
			MIS
			DCMTOCDU	# PICK UP THE NEW CDU ANGLES FROM MATRIX
		RTB	
			V1STO2S
NWNGL17D	STORE	NCDU		# NEW CDU ANGLES (TAG IS USED BY EDIT)
		BONCLR	EXIT
			CALCMAN2
			MANUSTAT	# TO START MANEUVER
 -1		CAF	TWO		# 	   +0 OTHERWISE
INCRDCDU	TS	KSPNDX
		DOUBLE
		TS	KDPNDX
		INDEX	KSPNDX
## Page 419
		CA	NCDU		# NEW DESIRED CDU ANGLES
		EXTEND
		INDEX	KSPNDX
		MSU	BCDU		# INITIAL S/C ANGLE OR PREVIOUS DESIRED
		EXTEND			# CDU ANGLES
		MP	QUADROT
		INDEX	KDPNDX
		DXCH	DELCDUX		# ANGLE INCREMENTS TO BE ADDED TO
		INDEX	KSPNDX		# DCDU EVERY TENTH SEC
		CA	NCDU		# BY LEM DAP
		INDEX	KSPNDX
		XCH	BCDU
		INDEX	KDPNDX
		TS	CDUXD
		CCS	KSPNDX
		TCF	INCRDCDU	# LOOP FOR THREE AXES
		
		RELINT		

# COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER

TMANUCHK	TC	TIMECHK
		TC	POSTJUMP
		CADR	CONTMANU
		
		CAF	ONE		
MANUSTAL	TC	WAITLIST
		EBANK=	BCDU
		2CADR	MANUSTOP
		
		TCF	ENDOFJOB
		
		
TIMECHK		EXTEND
		DCS	TIME2
		DXCH	TTEMP
		EXTEND
		DCA	TM
		DAS	TTEMP
		CCS	TTEMP
		TC	Q
		TCF	+2
		TCF	2NDRETRN
		CCS	TTEMP +1
		TC	Q
		TCF	MANUOFF
		COM
MANUOFF		AD	1SEC
		EXTEND
		BZMF	2NDRETRN
		INCR	Q
## Page 420
2NDRETRN	INCR	Q
		TCF	Q+1
MYSTEND		TC	POSTJUMP
		CADR	FIXDB

		SETLOC	MANUSTUF
		BANK

		COUNT*	$$/KALC
MANUSTAT	EXIT			# INITIALIZATION ROUTINE FOR AUTO
		CAF	R67BIT		#                     MANEUVERS
		MASK	FLAGWRD8
		EXTEND
		BZF	+5
		EXTEND			# R67 RUNNING
		DCA	DPOSMAX
		DXCH	TM
		TCF	TMDON
		EXTEND			# NON-R67 PROGRAM
		DCA	TIME2
		DAS	TM		# TM+T0    MANEUVER COMPLETION TIME
		CS	1SEC
		TS	L
		CS	ZERO
		DAS	TM		# (TM+T0)-1
TMDON		INHINT
		CS	ONE		# ENABLE AUTOPILOT TO PERFORM
		TS	HOLDFLAG	# AUTOMATIC MANEUVERS
		CS	RATEINDX	# SEE IF MANEUVERING AT HIGH RATE
		AD	SIX
		EXTEND
		BZMF	HIGHGAIN
		TCF	+4
HIGHGAIN	CS	RCSFLAGS	# IF SO, SET HIGH RATE FLAG (BIT 15 OF
		MASK	BIT15		# RCSFLAGS)
		ADS	RCSFLAGS
		EXTEND
		DCA	BRATE		# X-AXIS MANEUVER RATE
		DXCH	WBODY
		EXTEND
		DCA	BRATE +2	# Y-AXIS MANEUVER RATE
		DXCH	WBODY1
		EXTEND
		DCA	BRATE +4	# Z-AXIS MANEUVER RATE
		DXCH	WBODY2
		CA	BIASTEMP +1	# INSERT ATTITUDE ERROR BIASES
		TS	BIAS		# INTO AUTOPILOT
		CA	BIASTEMP +3
		TS	BIAS1
		CA	BIASTEMP +5
## Page 421
		TS	BIAS2
		CA	TIME1
		AD	1SEC
		XCH	NEXTIME
		TC	POSTJUMP
		CADR	INCRDCDU -1
				
CONTMANU	INHINT			# CONTINUE WITH UPDATE PROCESS
		CS	TIME1		
		AD	NEXTIME
		CCS	A
		AD	ONE
		TCF	MANUCALL
		AD	NEGMAX
		COM
MANUCALL	TC	TWIDDLE
		ADRES	UPDTCALL
		RELINT
		CAF	1SEC		# INCREMENT TIME FOR NEXT UPDATE
		ADS	NEXTIME
		TCF	ENDOFJOB

UPDTCALL	CAF	R67BIT
		MASK	FLAGWRD8
		EXTEND
		BZF	+5

		CCS	R61CNTR
		TCF	+2
		TCF	DOREMIS
		TS	R61CNTR

		CAF	PRIO26
		TC	FINDVAC		# OF STEERING COMMANDS
		EBANK=	BCDU
		2CADR	NEWDELHI

		TC	TASKOVER

DOREMIS		CAF	PRIO26
		TC	FINDVAC
		EBANK=	BCDU
		2CADR	R67RSTRT	# MAKE SURE MIS DOES DEGRADE

		TC	TASKOVER
		
## Page 422
# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS

		SETLOC	KALCMON3
		BANK
	
		COUNT*	$$/KALC
MANUSTOP	TC	STOPYZ
		TC	IBNKCALL
		CADR	LOADYZ

ENDROLL		CA	CPHI
		TS	CDUXD		# SET CDUXD TO THE COMMANDED OUTER GIMBAL
		TC	STOPRATE
ENDMANU		CAF	PRIO14
		TC	FINDVAC
		EBANK=	R61CNTR
		2CADR	ENDMANUV
		
		TC	TASKOVER
		
		SETLOC	STOPRAT
		BANK
		COUNT*	$$/KALC
STOPRATE	CAF	ZERO
		TS	DELCDUX
		TS	DELCDUX	+1	# ZERO ROLL INCREMENTAL ANGLES
		TS	WBODY		# RATE
		TS	WBODY +1
		TS	BIAS		# BIAS
		
		CS	BIT15		# MAKE SURE HIGH RATE FLAG (BIT 15 OF
		MASK	RCSFLAGS	# RCSFLAGS) IS RESET.
		TS	RCSFLAGS
		
STOPYZ		CAF	ZERO
		TS	DELCDUY		# ZERO PITCH, YAW
		TS	DELCDUY	+1	# INCREMENTAL ANGLES
		TS	DELCDUZ
		TS	DELCDUZ	+1
		TS	WBODY1		# RATES
		TS	WBODY1 +1
		TS	WBODY2
		TS	WBODY2 +1
		TS	BIAS1		# BIASES
		TS	BIAS2
		TC	Q
		
		SETLOC MANUSTUF
		BANK

## Page 423
		COUNT*	$$/KALC
ZEROEROR	CA	CDUX		# PICK UP CDU ANGLES AND STORE IN
		TS	CDUXD		# CDU DESIRED
		CA	CDUY
		TS	CDUYD
		CA	CDUZ
		TS	CDUZD
		TC	Q

		SETLOC	KALCMON1
		BANK

		COUNT*	$$/KALC		
LOADCDUD	CA	CPHI		# STORE TERMINAL ANGLES INTO
		TS	CDUXD		# COMMAND ANGLES
LOADYZ		CA	CTHETA
		TS	CDUYD
		CA	CPSI
		TS	CDUZD
		TC	Q
back to top