Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Impressum P20-P25.agc   Sprache: Apollo

 

# Copyright: Public domain.
# Filename: P20-P25.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: Onno Hommes <ohommes@cmu.edu>.
# Website: www.ibiblio.org/apollo.
# Pages: 0492-0613
# Mod history: 2009-05-26 OH Transcribed from page images.
# 2009-06-05 RSB Corrected a typos.
# 2009-06-06 RSB Added a missing instruction, and a block
# of 3 missing instructions.
# 2009-06-07 RSB Fixed a misprint.
# 2009-06-07 RSB Changed the construct "2DEC E-6 B12"
# (which isn't legal in yaYUL) to
# "2DEC 1.0 E-6 B12".
# 2011-05-07 JL Removed workarounds.

# 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 492
# RENDEZVOUS NAVIGATION PROGRAM 20
#
# PROGRAM DESCRIPTION
#
#  MOD NO -- 2
#  BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
#  THE PURPOSE OF THIS PROGRAM IS TO CONTROL THE RENDEZVOUS RADAR FROM
#  STARTUP THROUGH ACQUISITION AND LOCKON TO THE CSM AND TO UPDATE EITHER
#  THE LM OR CSM STATE VECTOR (AS SPECIFIED BY THE ASTRONAUT BY DSKY ENTRY)
#  ON THE BASIS OF THE RR TRACKING DATA.
#
# CALLING SEQUENCE --
#
#  ASTRONAUT REQUEST THROUGH DSKY V37E20E
#
# SUBROUTINES CALLED
#
# R02BOTH (IMU STATUS CHECK) FLAGUP
# GOFLASH (PINBALL-DISPLAY) FLAGDOWN
# R23LEM (MANUAL ACQUISITION) BANKCALL
# LS201 (LOS DETERMINATION) TASKOVER
# LS202 (RANGE LIMIT TEST)
# R61LEM (PREFERRED TRACKING ATTITUDE)
# R21LEM (RR DESIGNATE) ENDOFJOB
# R22LEM (DATA READ) GOPERF1
# R31LEM (RENDEZVOUS PARAMETER DISPLAY)
# PRIOLARM (PRIORITY DISPLAY)
#
# NORMAL EXIT MODES --
#
#  P20 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING
# PROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E
#
# ALARM OR ABORT EXIT MODES --
#
#  RANGE GREATER THAN 400 NM DISPLAY
#
# OUTPUT
#
#  TRKMKCNT = NO OF RENDEZVOUS TRACKING MARKS TAKEN (COUNTER)
#
# ERASABLE INITIALIZATION REQUIRED
#
# FLAGS SET + RESET
#
# SRCHOPT, RNDVZFLG, ACMODFLG, VEHUPFLG, UPDATFLG, TRACKFLG
#
# DEBRIS
#
# CENTRALS -- A,Q,L

  SBANK= LOWSUPER # FOR LOW 2CADR'S.

  BANK 33
  SETLOC P20S
  BANK

  EBANK= LOSCOUNT
  COUNT* $$/P20
PROG22  = PROG20
PROG20  TC 2PHSCHNG
  OCT 4
  OCT 05022
  OCT 26000  # PRIORITY 26
  TC LUNSFCHK # CHECK IF ON LUNAR SURFACE
# Page 493
  TC ORBCHGO  # YES
  TC PROG20A -2 # NO -- CONTINUE WITH P20
ORBCHGO  TC UPFLAG  # SET VEHUPFLG -- CSM STATE
  ADRES VEHUPFLG # VECTOR TO BE UPDATED
  CAF ONE  # SET R2 FOR OPTION CSM WILL NOT
  TS OPTION2  # CHANGE PRESENT ORBIT
  CAF OCT00012
  TC BANKCALL # DISPLAY ASSUMED CSM ORBIT OPTION
  CADR GOPERF4
  TC GOTOPOOH # TERMINATE
  TC ORBCHG1  # PROCEED VALUE OF ASSUMED OPTION OK
  TC -5  # R2 LOADED THRU DSKY
ORBCHG1  CS P22ONE
  AD OPTION2
  EXTEND
  BZF PROG20A
  CAF V06N33*
  TC BANKCALL # FLASH VERB-NOUN TO REQUEST ESTIMATED
  CADR GOFLASH  # TIME OF LAUNCH
  TC GOTOPOOH # TERMINATE
  TC ORBCHG2  # PROCEED VALUES OK
  TC -5  # TIME LOADED THRU DSKY
ORBCHG2  TC INTPRET
  GOTO
   ORBCHG3
   BANK 32
  SETLOC P20S4
  BANK
  COUNT* $$/P20

ORBCHG3  CALL
   INTSTALL
  DLOAD
   TIG
  STORE LNCHTM
  STORE TDEC1  # ESTIMATED LAUNCH TIME
  CLEAR CLEAR
   VINTFLAG # LM INTEGRATION
   INTYPFLG # PRECISION -- ENCKE
  CLEAR CLEAR
   DIM0FLAG # NO W-MATRIX
   D6OR9FLG
  CALL
   INTEGRV  # PLANETARY INERTIAL ORIENTATION
  CALL
   GRP2PC
  VLOAD
   RATT1
  STODL RSUBL  # SAVE LM POSITION
   TAT
# Page 494
  STCALL TDEC1
   INTSTALL
  SET CLEAR
   VINTFLAG # CSM INTEGRATION
   INTYPFLG
  CLEAR BOFF
   DIM0FLAG
   RENDWFLG # W MATRIX VALID
   NOWMATX  # NO
  SET SET  # YES -- SET FOR W MATRIX
   DIM0FLAG
   D6OR9FLG
NOWMATX  CALL
   INTEGRV  # CSM INTEGRATION
  CALL
   GRP2PC
  VLOAD
   VATT1
  STOVL VSUBC  # SAVE CSM POSITION
   RATT1
  STORE RSUBC  # SAVE CSM POSITION
  VXV UNIT  # COMPUTE NORMAL TO CSM ORBITAL PLANE
   VSUBC  # NSUB1=UNIT(R(CM) CROSS V(CM))
  STOVL 20D  # SAVE NSUB1
   RSUBL  # COMPUTE ESTIMATED ORBITAL
  VXV UNIT  # PLANE CHANGE
   20D  # UCSM = UNIT(R(LM) CROSS NSUB1)
  STOVL UCSM
   RSUBC  # COMPUTE ANGLE BETWEEN UCSM
  UNIT DOT  # AND RSUBC
   UCSM  # COS A = UCSM DOT UNIT (R(CM))
  SL1
  STORE CSTH  # SAVE DOE TIME-THETA SUBROUTINE
  DSQ BDSU  # COMPUTE SINE A
   ONEB-2
  SQRT
  STOVL SNTH  # SAVE FOR TIME-THETA SUBROUTINE
   RSUBC  # POSITION OF CSM AT EST. LAUNCH
  STOVL RVEC  # TIME FOR TIME-THETHA B-27
   VSUBC  # VELOCITY OF CSM AT EST. LAUNCH.
  VCOMP
  STORE VVEC  # TIME FOR TIME THETA  B-5
  CLEAR CALL
   RVSW
   TIMETHET
  VCOMP
  STORE NEWVEL  # TERMINAL VELOCITY OF CSM
  DLOAD
   T
  STOVL TRANSTM  # TRANSFER TIME
# Page 495
   NEWVEL
  ABVAL
  STOVL 20D
   0D
  STORE NEWPOS  # TERMINAL POSITION OF CSM
  VXV UNIT  # COMPUTE NORMAL TO SCM ORBITAL PLANE
   RSUBL  # NSUB2 = UNIT(NEWPOS CROSS R(LM))
  VXV UNIT  # ROTATE TERMINAL VEL INTO DESIRED
   NEWPOS  # ORBITAL PLANE
  VXSC VSL1  # VSUBC = ABVAL(NEWVEL) $ UNIT (NSUB2
   20D
  STCALL NCSMVEL  # NEW CSM VELOCITY
   GRP2PC
  CALL
   INTSTALL
  DLOAD BDSU
   TRANSTM  # LAUNCH TIME -- TRANSFER TIME
   LNCHTM
  STOVL TET
   NEWPOS
  STORE RCV
  STOVL RRECT
   NCSMVEL
  STCALL VRECT
   MINIRECT
  AXT,2 CALL
   2
   ATOPCSM
  CALL
   INTWAKE0
  EXIT
  TC BANKCALL
  CADR PROG20A

  BANK 24
  SETLOC P20S
  BANK
  COUNT* $$/P20

  TC DOWNFLAG # RESET VEHUPFLG -- LM STATE VECTOR
  ADRES VEHUPFLG # TO BE UPDATED
PROG20A  TC BANKCALL
  CADR R02BOTH
  TC UPFLAG
  ADRES UPDATFLG # SET UPDATE FLAG
  TC UPFLAG
  ADRES TRACKFLG # SET TRACK FLAG
  TC UPFLAG
  ADRES RNDVZFLG # SET RENDEZVOUS FLAG
  TC DOWNFLAG
  ADRES SRCHOPTN # INSURE SEARCH OPTION OFF
# Page 496
  TC DOWNFLAG # ALSO MANUAL ACQUISITION FLAG RESET
  ADRES ACMODFLG
  TC DOWNFLAG # TURN OFF R04FLAG TO ENSURE GETTING
  ADRES R04FLAG  # ALARM 521 IF CAN'T READ RADAR
  TC DOWNFLAG # ENSURE R25 GIMBAL MONITOR IS ENABLED
  ADRES NORRMON  # (RESET NORRMON FLAG)
  TC DOWNFLAG # RESET LOS BEING COMPUTED FLAG
  ADRES LOSCMFLG
  TC CLRADMOD
P20LEM1  TC PHASCHNG
  OCT 04022
  CAF ZERO  # ZERO MARK COUNTER
  TS MARKCTR
  TC INTPRET  # LOS DETERMINATION ROUTINE
  RTB
   LOADTIME
  STCALL TDEC1
   LPS20.1
  CALL
   LPS20.2  # TEST RANGE R/UTINE
  EXIT
  INDEX MPAC
  TC +1
  TC P20LEMA  # NORMAL RETURN WITHIN 400 N M
526ALARM CAF ALRM526  # ERROR EXIT -- RANGE > 400 N. MI.
  TC BANKCALL
  CADR PRIOLARM
  TC GOTOV56  # TERMINATE EXITS P20 VIA V56 CODING
  TC -4  # PROC (ILLEGAL)
  TC P20LEM1  # ENTER RECYCLE
  TC ENDOFJOB

P20LEMA  TC PHASCHNG
  OCT 04022
  TC LUNSFCHK # CHECK LUNAR SURFACE FLAG (P22 FLAG)
  TC P20LEMB
  TC BANKCALL
  CADR R61LEM  # PREFERRED TRACKING ATTITUDE ROUTINE
P20LEMB  TC PHASCHNG
  OCT 05022  # RESTART AT PRIORITY 10 TO ALLOW V37
  OCT 10000  # REQUESTED PROGRAM TO RUN FIRST
  CAF PRIO26  # RESTORE PRIORITY 26
  TC PRIOCHNG
  CA FLAGWRD1 # IS THE TRACK FLAG SET
  MASK TRACKBIT
  EXTEND
  BZF P20LEMWT # BRANCH -- NO -- WAIT FOR IT TO BE SET
P20LEMB7 CAF BIT2  # IS RR AUTO MODE DISCRETE PRESENT
  EXTEND
# Page 497
  RAND CHAN33
  EXTEND
  BZF P20LEMB3 # YES -- DO AUTOMATIC ACQUISITION (R21)

P20LEMB5 CS OCT24  # RADAR NOT IN AUTO CHECK IF
  AD MODREG  # MAJOR MODE IS 20
  EXTEND
  BZF P20LEMB6 # BRANCH -- YES -- OKAY TO DO PLEASE PERFORM

  AD NEG2  # ALSO CHECK FOR P22
  EXTEND
  BZF P20LEMB6 # BRANCH -- YES OK TO DO PLEASE PERFORM
  CAF ALRM514  # TRACK FLAG SET -- FLASH PRIORITY ALARM 514 --
  TC BANKCALL # RADAR GOES OUT OF AUTO MODE WHILE IN USE
  CADR PRIOLARM
  TC GOTOV56  # TERMINATE EXITS VIA V56
  TC P20LEMB  # PROCEED AND ENTER BOTH GO BACK
  TC P20LEMB  # TO CHECK AUTO MODE AGAIN
  TC ENDOFJOB
P20LEMB6 CAF OCT201  # REQUEST RR AUTO MODE SELECTION
  TC BANKCALL
  CADR GOPERF1
  TC GOTOV56  # TERMINATE EXITS P20 VIA V56 CODING
  TC P20LEMB  # PROCEED CHECKS AUTO MODE DISCRETE AGAIN
  TC LUNSFCHK # ENTER INDICATES MANUAL ACQUISITION (R23)
  TC P20LEMB2 # YES -- R23 NOT ALLOWED -- TURN ON OPR ERROR
  TC R23LEM  # NO -- DO MANUAL ACQUISITION

P20LEMB1 TC UPFLAG  # RETURN FROM R23 -- LOCKON ACHIEVED
  ADRES ACMODFLG # SET MANUAL FLAG AND GO BACK TO CHECK
  TC P20LEMB  # RR AUTO MODE

P20LEMB2 TC FALTON  # TURNS ON OPERATOR ERROR LIGHT ON DSKY
  TC P20LEMB  # AND GOES BACK TO CHECK AUTO MODE

P20LEMB3 CS RADMODES # ARE RR CDUS BEING ZEROED
  MASK RCDU0BIT
  EXTEND
  BZF P20LEMB4 # BRANCH -- YES -- WAIT
  CAF BIT13-14 # IS SEARCH OR MANUAL ACQUISITION FLAG SET
  MASK FLAGWRD2
  EXTEND
  BZF P20LEMC3 # ZERO MEANS AUTOMATIC RR ACQUISITION
  TC DOWNFLAG # RESET TO AUTO MODE
  ADRES SRCHOPTN
# Page 498
  TC DOWNFLAG
  ADRES ACMODFLG
  TC P20LEMWT # WAIT 2.5 SECONDS THEN GO TO RR DATA READ

P20LEMB4 CAF 250DEC
  TC BANKCALL # WAIT 2.5 SECONDS WHILE RR CDUS ARE BEING
  CADR DELAYJOB # ZEROED -- THEN GO BACK AND CHECK AGAIN
  TC P20LEMB3

P20LEMC3 TC INTPRET
  RTB
   LOADTIME
  STCALL TDEC1
   UPPSV
P20LEMC4 EXIT
P20LEMC  TC PHASCHNG
  OCT 04022
  CAE FLAGWRD0 # IS THE RENDEZVOUS FLAG SET
  MASK RNDVZBIT
  EXTEND
  BZF ENDOFJOB # NO -- EXIT P20
  CAE FLAGWRD1 # IS TRACK FLAG SET (BIT 5 FLAGWORD 1)
  MASK TRACKBIT
  EXTEND
  BZF P20LEMD  # BRANCH -- TRACK FLAG NOT ON -- WAIT 15 SECONDS
P20LEMF  TC R21LEM

P20LEMWT CAF 250DEC
  TC TWIDDLE  # USE INSTEAD OF WAITLIST SINCE SAME BANK
  ADRES P20LEMC1 # WAIT 2.5 SECONDS
  CAE FLAGWRD1 # IS TRACK FLAG SET
  MASK TRACKBIT
  EXTEND
  BZF ENDOFJOB # NO -- EXIT WITHOUT DOING 2.7 PHASE CHANGE
P20LMWT1 TC PHASCHNG
  OCT 40072
  TC ENDOFJOB

P20LEMC1 CAE FLAGWRD0 # IS RENDEZVOUS FLAG SET
  MASK RNDVZBIT
  EXTEND
  BZF TASKOVER # NO -- EXIT P20/R22
  CAE FLAGWRD1 # IS TRACK FLAG SET
  MASK TRACKBIT
  EXTEND
  BZF P20LEMC2 # NO -- DON'T SCHEDULE R22 JOB
# Page 499
  CAF PRIO26  # YES -- SCHEDULE R22 JOB (RR DATA READ)
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR R22LEM42

  TC TASKOVER

P20LEMC2 TC FIXDELAY # TRACK FLAG NOT SET, WAIT 15 SECONDS
  DEC 1500  # AND CHECK AGAIN

  TC P20LEMC1

P20LEMD  CAF 1500DEC
  TC TWIDDLE  # WAITLIST FOR 15 SECONDS
  ADRES P20LEMD1
  TC ENDOFJOB

P20LEMD1 CAE FLAGWRD1 # IS TRACK FLAG SET
  MASK  TRACKBIT
  CCS A
  TCF P20LEMD2 # YES -- SCHEDULE DESIGNATE JOB
  TC FIXDELAY # NO -- WAIT 15 SECONDS
  DEC 1500
  TC P20LEMD1

P20LEMD2 CAF PRIO26  # SCHEDULE JOB TO DO R21
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR P20LEMC3 # START AT PERM.  MEMORY INTEGRATION

  TC TASKOVER

250DEC  DEC 250
ALRM526  OCT 00526
OCT201  OCT 00201
ALRM514  OCT 514
MAXTRIES DEC 60
OCT00012 OCT 00012
P22ONE  OCT 00001
ONEB-2  2DEC 1.0 B-2

V06N33*  VN 0633
UPPSV  STQ CALL  # UPDATES PERMANENT STATE VECTORS
   LS21X  #  TO PRESENT TIME
   INTSTALL
  CALL
# Page 500
   SETIFLGS
  BOF SET  # IF W-MATRIX INVALID, DON'T INTEGRATE IT
   RENDWFLG
   UPPSV1
   DIM0FLAG # SET DIM0FLAG TO INTEGRATE W-MATRIX
  BON SET
   SURFFLAG # IF ON LUNAR SURFACE W IS 6X6
   UPPSV5
   D6OR9FLG # OTHERWISE 9X9
UPPSV5  BOF
   VEHUPFLG
   UPPSV3
UPPSV1  SET
   VINTFLAG
  CALL
   INTEGRV
  CALL   # GROUP 2 PHASE CHANGE
   GRP2PC  # TO PROTECT INTEGRATION
  CALL
   INTSTALL
  DLOAD CLEAR  # GET TETCSM TO STORE IN TDEC FOR LM INT.
   TETCSM
   VINTFLAG
UPPSV4  CALL   # INTEGRATE OTHER VEHICLE
   SETIFLGS # WITHOUT W-MATRIX
  STCALL TDEC1
   INTEGRV
  BOFF VLOAD
   SURFFLAG
   P20LEMC4
   RCVLEM
  VSR2
  STOVL LMPOS
   VCVLEM
  VSR2
  STORE LMVEL
  GOTO
   LS21X

UPPSV3  CLEAR CALL
   VINTFLAG
   INTEGRV
  CALL
   GRP2PC
  CALL
   INTSTALL
  SET DLOAD
   VINTFLAG
   TETLEM  # GET TETLEM TO STORE IN TDEC FOR CSM INT.
# Page 501
  GOTO
   UPPSV4
  EBANK= LOSCOUNT
  COUNT* $$/P22

# Page 502
# PROGRAM DESCRIPTION
#
# PREFERRED TRACKING ATTITUDE PROGRAM P25
# MOD NO -- 3
#  BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
# THE PURPOSE OF THIS PROGRAM IS TO COMPUTE THE PREFERRED TRACKING
#  ATTITUDE OF THE LM TO CONTINUOUSLY POINT THE LM TRTACKING BEACON AT THE
# CSM AND TO PERFORM THE MANEUVER TO THE PREFERRED TRACKING ATTITUDE AND
#  CONTINUOUSLY MAINTAIN THIS ATTITUDE WITHIN PRESCRIBED LIMITS.
#
# CALLING SEQUENCE --
#
# ASTRONAUT REQUEST THROUGH DSKY V37E25E
#
# SUBROUTINES CALLED --
#
# BANKCALL FLAGUP
# R02BOTH (IMU STATUS CHECK) ENDOFJOB
# R61LEM (PREF TRK ATT ROUT) WAITLIST
# TASKOVER FINDVAC
#
# NORMAL EXIT MODES --
#
#  P25 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING
# PROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E
#
# ALARM OR ABORT EXIT MODES --
#
# NONE
#
# OUTPUT
#
# ERASABLE INITIALIZATION REQUIRED
#
# FLAGS SET + RESET
#
# TRACKFLG, P25FLAG
#
# DEBRIS
#
# NONE

  EBANK= LOSCOUNT
  COUNT* $$/P25
PROG25  TC 2PHSCHNG
  OCT 4  # MAKE GROUP 4 INACTIVE (VERB 37)
  OCT 05022
  OCT 26000  # PRIORITY 26

  TC BANKCALL
  CADR R02BOTH  # IMU STATUS CHECK
  TC UPFLAG
  ADRES TRACKFLG # SET TRACK FLAG
  TC UPFLAG
  ADRES P25FLAG  # SET P25FLAG
P25LEM1  TC PHASCHNG
  OCT 04022
  CAF P25FLBIT
  MASK STATE  # IS P25FLAG SET
  EXTEND
  BZF ENDOFJOB
  CAF TRACKBIT # IS TRACKFLAG SET?
  MASK STATE +1
  EXTEND
# Page 503
  BZF P25LMWT1 # NO -- SKIP PHASE CHANGE AND WAIT 1 MINUTE
  CAF SEVEN  # CALL R65 -- FINE PREFERRED
  TS R65CNTR
  TC BANKCALL # TRACKING ATTITUDE ROUTINE
  CADR R65LEM
  TC P25LEM1  # THEN GO CHECK FLAGS
P25LEMWT TC PHASCHNG
  OCT 00112
P25LMWT1 CAF 60SCNDS
  TC TWIDDLE  # WAIT ONE MINUTE THEN CHECK AGAIN
  ADRES P25LEM2
  TC ENDOFJOB
P25LEM2  CAF PRIO14
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR P25LEM1

  TC TASKOVER
60SCNDS  DEC 6000

# Page 504
# DATA READ ROUTINE 22 (LEM)
# PROGRAM DESCRIPTION
#
# MOD NO -- 2
# BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
# TO PROCESS AUTOMATIC RR MARK DATA TO UPDATE THE STATE VECTOR OF EITHER
#  LM OR CSM AS DEFINED IN THE RENDEZVOUS NAVIGATION PROGRAM (P20)
#
# CALLING SEQUENCE --
#
# TC BANKCALL
# CADR R22LEM
#
# SUBROUTINES CALLED --
#
# LSR22.1 GOFLASH WAITLIST
# LSR22.2 PRIOLARM BANKCALL
# LSR22.3 R61LEM
#
# NORMAL EXIT MODES --
#
# R22 WILL CONTINUE TO RECYCLE, UPDATING STATE VECTORS WITH RADAR DATA
# UNTIL P20 CEASES TO OPERATE (RENDEZVOUS FLAG SET TO ZERO) AT WHICH TIME
# R22 WILL TERMINATE SELF.
#
# ALARM OR ABORT EXIT MODES --
#
# PRIORITY ALARM
# PRIORITY ALARM 525 LOS NOT WITHIN 3 DEGREE LIMIT
#
# OUTPUT
#
# SEE OUTPUT FROM LSR22.3
#
# ERASABLE INITIALIZATION REQUIRED
#
# SEE LSR22.1, LSR22.2, LSR22.3
#
# FLAGS SET + RESET
#
# NOANGFLG
#
# DEBRIS
#
# SEE LSR22.1, LSR22.2, LSR22.3

  EBANK= LRS22.1X
  COUNT* $$/R22
R22LEM  TC PHASCHNG
  OCT 04022
  CAF RNDVZBIT # IS RENDEZVOUS FLAG SET?
  MASK STATE
  EXTEND
  BZF ENDOFJOB # NO -- EXIT R22 AND P20
  CAF TRACKBIT # IS TRACKFLAG SET?
  MASK STATE +1
  EXTEND
  BZF R22WAIT  # NO WAIT
R22LEM12 CAF BIT14  # IS RR AUTO TRACK ENABLE DISCRETE STILL
  EXTEND   # ON (A MONITOR REPOSITION BY R25 CLEARS IT)
  RAND CHAN12
  EXTEND
  BZF P20LEMA  # NO -- RETURN TO P20
  CAF BIT2  # YES
  EXTEND   # IS RR AUTO MODE DISCRETE PRESENT
  RAND CHAN33
# Page 505
  EXTEND
  BZF +2  # YES CONTINUE
  TC P20LEMB5 # NO -- SET IT
  CS RADMODES # ARE RR CDUS BEING ZEROED
  MASK RCDU0BIT
  EXTEND
  BZF R22LEM42 # CDUS BEING ZEROED
  TC PHASCHNG # IF A RESTART OCCURS, AND EXTRA RADAR
  OCT 00152  # READING IS TAKEN, SO BAD DATA ISN'T USED
  TC BANKCALL # YES READ DATA + CALCULATE LOS
  CADR LRS22.1  # DATA READ SUBROUTINE
  INDEX MPAC
  TC +1
  TC R22LEM2  # NORMAL RETURN (GOOD DATA)
  TC P20LEMC  # COULD NOT READ RADAR -- TRY TO REDESIGNATE
  CAF ALRM525  # RR LOS NOT WITHIN 3 DEGREES (ALARM)
  TC BANKCALL
  CADR PRIOLARM
  TC GOTOV56  # TERMINATE EXITS P20 VIA V56 CODING
  TC R22LEM1  # PROC (DISPLAY DELTA THETA)
  TC -5  # ENTER (ILLEGAL OPTION)
  TC ENDOFJOB

R22LEM1  TC PHASCHNG
  OCT 04022
  CAF V06N05  # DISPLAY DELTA THETA
  TC BANKCALL
  CADR PRIODSP
  TC GOTOV56  # TERMINATE EXITS P20 VIA V56 CODING
  TC R22LEM2  # PROC (OK CONTINUE)
  TC P20LEMC  # ENTER (RECYCLE)
R22LEM2  TC PHASCHNG
  OCT 04022
  TC LUNSFCHK # CHECK IF ON LUNAR SURFACE (P22FLAG SET)
  TC R22LEM3  # YES -- BYPASS FLAG CHECKS AND LRS22.2
  CA FLAGWRD1 # IS TRACK FLAG SET
  MASK TRACKBIT
  EXTEND
  BZF R22WAIT  # NO -- WAIT
  TC BANKCALL # YES
  CADR LRS22.2  # CHECKS RR BORESIGHT WITHIN 30 DEG OF +Z
  INDEX MPAC
  TC +1
  TC R22LEM3  # NORMAL RETURN (LOS WITHIN 30 OF Z-AXIS)
  TC BANKCALL
  CADR R61LEM
  TC R22WAIT  # NOT WITHIN 30 DEG OF Z-AXIS
R22LEM3  CS FLAGWRD1 # SHOULD WE BYPASS STATE VECTOR UPDATE
  MASK NOUPFBIT # (IS NO UPDATE FLAG SET?)
# Page 506
  EXTEND
  BZF R22LEM42 # BRANCH -- YES
  CA FLAGWRD1 # IS UPDATE FLAG SET
  MASK UPDATBIT
  EXTEND
  BZF R22LEM42 # UPDATE FLAG NOT SET
  CAF PRIO26  # INSURE HIGH PRIO IN RESTART
  TS PHSPRDT2

  TC INTPRET
  GOTO
   LSR22.3
R22LEM93 EXIT   # NORMAL EXIT FROM LSR22.3
  TC PHASCHNG # PHASE CHANGE TO PROTECT AGAINST
  OCT 04022  # CONFLICT WITH GRP2PC ERASEABLE
  TCF R22LEM44
R22LEM96 EXIT
  CAF ZERO  # SET N49FLAG = ZERO TO INDICATE
  TS N49FLAG  # V06 N49 DISPLAY HASN'T BEEN ANSWERED
  TC PHASCHNG
  OCT 04022  # TO PROTECT DISPLAY
  CAF PRIO27  # PROTECT DISPLAY
  TC NOVAC
  EBANK= N49FLAG
  2CADR N49DSP

  TC INTPRET
  SLOAD
   N49FLAG
  BZE BMN  # LOOP TO CHECK IF FLAG
   -3  # SETTING CHANGED -- BRANCH -- NO
   R22LEM7  # PROCEED
  EXIT   # DISPLAY ANSERED BY RECYCLE
  TC LUNSFCHK # ARE WE ON LUNAR SURFACE
  TC R22WAIT  # YES -- 15 SECOND DELAY
  CA ZERO  # NO -- SET R65COUNTER = 0, DO FINE
  TC R22LEM45 # TRACKING TAKE ANOTHER RADAR READING
R22LEM7  CALL   # PROCEED
   GRP2PC  # PHASE CHANGE AND
  GOTO   # GO TO INCOPORATE DATA.
   ASTOK
R22LEM44 INCR MARKCTR  # INCREMENT COUNT OF MARKS INCORPORATED.
  TC LUNSFCHK # ARE WE ON LUNAR SURFACE
  TC R22LEM46 # YES -- WAIT 2 SECONDS
  CA FIVE  # NOT ON LUNAR SURFACE
  TC R22LEM45 # R65COUNTER = 5
R22LEM42 TC LUNSFCHK # CHECK IF ON LUNAR SURFACE (P22FLAG SET)
  TC R22LEM46 # YES -- WAIT 2 SECONDS
  CA TWO  # NO -- SET R65COUNTER = 2
R22LEM45 TS R65CNTR
# Page 507
  TC BANKCALL
  CADR R65LEM  # FINE PREFERRED TRACKING ATTITUDE
  TC R22LEM
R22WAIT  CAF 1500DEC
  TC P20LEMWT +1

R22LEM46 CAF 2SECS
  TC BANKCALL # WAIT 2 SECONDS AND TAKE ANOTHER MARK
  CADR DELAYJOB
  TC R22LEM

N49DSP  CAF V06N49NB
  TC BANKCALL # EXCESSIVE STATE VECTOR UPDATE -- FLASH
  CADR PRIODSP  # VERB 06 NOUN 49 R1=DELTA R, R2=DELTA V
  TC GOTOV56  # TERMINATE -- EXIT R22 AND P20
  CS ONE  # PROCEED -- N49FLAG = -1
  TS N49FLAG  # RECYCLE -- N49FLAG = + VALUE
  TC ENDOFJOB
R22RSTRT TC PHASCHNG # IF A RESTART OCCURS WHILE READING RADAR
  OCT 00152  # COME HERE TO TAKE A RANGE-RATE READING
  TC BANKCALL # WHICH ISN'T USED TO PREVENT TAKING A BAD
  CADR RRRDOT  # READING AND TRYING TO INCORPORATE THE
  TC BANKCALL # BAD DATA
  CADR RADSTALL # WAIT FOR READ COMPLETE
  TC P20LEMC  # COULD NOT READ RADAR -- TRY TO REDISGNATE
  TC R22LEM  # READ SUCCESSFUL -- CONTINUE AT R22

ALRM525  OCT 00525
V06N05  VN 00605
V06N49NB VN 00649
1500DEC  DEC 1500

# LUNSFCHECK -- CLOSED SUBROUTINE TO CHECK IF ON LUNAR SURFACE (P22FLAG)
# RETURNS TO CALLER +1 IF P22FLAG SET
# TO CALLER +2 IF P22FLAG NOT SET

  COUNT*  $$/P22
LUNSFCHK CS FLAGWRD8 # CHECK IF ON LUNAR SURFACE
  MASK SURFFBIT # IS SURFFLAG SET?
  CCS A  # BRANCH -- P22FLAG SET
  INCR Q  # NOT SET
  TC Q  # RETURN

# Page 508
# RR DESIGNATE ROUTINE (R21LEM)
# PROGRAM DESCRIPTION
#
#  MOD NO -- 2
# BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
#  TO POINT THE RENDEZVOUS RADAR AT THE CSM UNTIL AUTOMATIC ACQUISITION
#  OF THE CSM IS ACCOMPLISHED BY THE RADAR.  ROUTINE IS CALLED BY P20.
#
# CALLING SEQUENCE --
#
# TC BANKCALL
# CADR R21LEM
#
# SUBROUTINES CALLED --
#
# FINDVAC FLAGUP ENDOFJOB PRIOLARM
# NOVAC INTPRET LPS20.1 PHASCHNG
# WAITLIST JOBSLEEP JOBWAKE FLAGDOWN
# TASKOVER BANKCALL RADSTALL RRDESSM
#
# NORMAL EXIT MODES
#
# WHEN LOCK-ON IS ACHIEVED, BRANCH WILL BE TO P20 WHERE R22 (DATA READ
# WILL BE SELECTED OR A NEED FOR A MANEUVER (BRANCH TO P20LEMA)
#
# ALARM OR ABORT EXIT MODES --
#
# PRIORITY ALARM 503 WHEN LOCK-ON HASN'T BEEN ACHIEVED AFTER 30SECS --
# THIS REQUIRES ASTRONAUT INTERFACE: SELECTION OF SEARCH OPTION OF
# ACQUISITION
#
# OUTPUT
#
# SEE LPS20.1, RRDESSM
#
# ERASABLE INITIALIZATION REQUIRED
#
# RRTARGET, RADMODES ARE USED BY LPS20.1 AND RRDESSM
#
# FLAGS SET + RESET
#
# LOSCMFLG LOKONSW
#
# DEBRIS
#
# SEE LPS20.1, RRSESSM

  EBANK= LOSCOUNT
  COUNT* $$/R21
R21LEM  CS BIT14  # REMOVE RR SELF TRACK ENABLE
  EXTEND
  WAND CHAN12
  TC LUNSFCHK
  TC R21LEM5
  CAF ZERO  # COMMAND ANTENNA TO MODE CENTER
  TS TANG  # IF NOT ON SURFACE -- MODE 1 -- (T=0,S=0)
  TS TANG +1
  TC R21LEM6
R21LEM5  CAF BIT12
  MASK RADMODES
  CCS A
  TC R21LEM10
  CAF BIT15
  TS TANG
  CS HALF
  TS TANG +1

# Page 509
R21LEM6  TC DOWNFLAG
  ADRES LOKONSW
  TC BANKCALL
  CADR RRDESNB
  TC +1
  TC BANKCALL
  CADR RADSTALL
  TC R21-503  # BAD RETURN FROM DESIGNATE -- ISSUE ALARM
R21LEM10 TC UPFLAG
  ADRES LOSCMFLG # EVERY FOURTH PASS THRU DODES
  CAF MAXTRIES # ALLOW 60 PASSES (APPROX 45 SECONDS)
  TS DESCOUNT # TO DESIGNATE AND LOCK ON
R21LEM2  CAF THREE
  TS LOSCOUNT
R21LEM1  TC INTPRET
  RTB DAD
   LOADTIME
   HALFSEC  # EXTRAPOLATE TO PRESENT TIME + .5 SEC.
  STCALL TDEC1  # LOS DETERMINATION ROUTINE
   LPS20.1
  EXIT
R21LEM3  TC UPFLAG  # SET LOKONSW TO RADAR -- ON DESIRED
  ADRES LOKONSW
  TC DOWNFLAG
  ADRES NORRMON
  TC INTPRET
  CALL   # INPUT (RRTARGET UPDATED BY LPS20.1)
   RRDESSM  # DESIGNATE ROUTINE
  EXIT
  TC R21LEM4  # LOS NOT IN MODE 2 COVERAGE
     # ON LUNAR SURFACE
  TC P20LEMA  # VEHICLE MANEUVER REQUIRED.
  TC BANKCALL # NO VEHICLE MANEUVER REQUIRED
  CADR RADSTALL # WAIT FOR DESIGNATE COMPLETE -- LOCKON OR
  TC +2  # BAD END -- LOCKON NOT ACHIEVED IN 60 TRIES
  TC R21END  # EXIT ROUTINE RETURN TO P20 (LOCK-ON)
R21-503  CAF ALRM503  # ISSUE ALARM 503
  TC BANKCALL
  CADR PRIOLARM
  TC GOTOV56  # TERMINATE EXITS P20 VIA V56 CODING
  TC R21SRCH  # PROC
  TC P20LEMC3
  TC ENDOFJOB
R21END  TC DOWNFLAG
  ADRES LOSCMFLG # RESET LOSCMFLG
  TC R21DISP  # PUT UP VERIFY MAIN LOBE LOCKON DISPLAY
R21SRCH  TC PHASCHNG
  OCT 04022
  TC R24LEM  # SEARCH ROUTINE
ALRM503  OCT 00503
# Page 510
ALRM527  OCT 527

R21LEM4  CAF MAXTRIES # SET UP COUNTER FOR
  TS REPOSCNT # 60 PASSES (APPROX 600 SECS.)
  TC UPFLAG
  ADRES FSPASFLG # SET FIRST PASS FLAG
  TC DOWNFLAG # RESET LOS BEING
  ADRES LOSCMFLG # COMPUTED FLAG
  TC INTPRET
R21LEM12 RTB
   LOADTIME
  DAD
   TENSEC  # TIME T = T + 10 SECS.
  STORE REPOSTM  # SAVE FOR LONGCALL AND UPPSV
  STCALL TDEC1
   LPS20.1  # COMPUTE LOS AT TIME T
  CALL
   RRDESSM
  EXIT
  TC R21LEM13 # LOS NOT IN MODE 2 COVERAGE
  TC ENDOFJOB # VEHICLE MANEUVER REQUIRED
  TC KILLTASK
  CADR BEGDES
  TC INTPRET
  BOF
   FSPASFLG # FIRST PASS THRU REPOSITION
   R21LEMB  # NO -- GO TO CONTINUOUS DESIGNATE
  CLRGO
   FSPASFLG # YES -- RESET FIRST PASS FLAG
   R21LEM7 +1
R21LEM13 CCS REPOSCNT # HAVE WE TRIED 60 TIMES?
  TC R21LEM7  # NO -- ADD 10 SECS.  RECOMPUTE LOS
  TC R21LEM11 # YES -- PUT OUT ALARM 530
R21LEM7  TS REPOSCNT
  TC INTPRET
  DLOAD GOTO
   REPOSTM
   R21LEM12 +2
R21LEMB  DLOAD
   REPOSTM
  STCALL TDEC1
   UPPSV
  EXIT
  TC UPFLAG  # SET RADMODES BIT 15 FOR
  ADRES CDESFLAG # CONTINUOUS DESIGNATION
  TC DOWNFLAG
  ADRES LOKONSW
  TC UPFLAG
  ADRES NORRMON
# Page 511
  TC BANKCALL
  CADR RRDESNB
  TC +1
  TC INTPRET
  RTB BDSU
   LOADTIME # COMPUTE DELTA TIME
   REPOSTM  # FOR LONGCALL
  STORE DELTATM
  EXIT
  EXTEND
  DCA DELTATM
  TC LONGCALL
  EBANK= LOSCOUNT
  2CADR R21LEM9

  TC ENDOFJOB
R21LEM9  TC KILLTASK
  CADR STDESIG
  TC CLRADMOD
  CAF PRIO26
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR R21LEM10

  TC TASKOVER
R21LEM11 CAF ALRM530  # ALARM 530 -- LOS NOT IN COVERAGE
  TC BANKCALL # AFTER TRYING TO DESIGNATE FOR
  CADR PRIOLARM # 600 SECS.
  TC GOTOV56
  TC GOTOV56
  TC GOTOV56
  TC ENDOFJOB
ALRM530  OCT 00530
TENSEC  2DEC 1000 B-28

HALFSEC  2DEC 50

R21DISP  TC PHASCHNG
  OCT 04022
  CAF V06N72PV # FLASH V 50 N 72 -- PLEASE PERFORM RR
  TC BANKCALL # MAIN LOBE LOCKON VERIFICATION
  CADR GOPERF2R
  TC GOTOV56  # TERMINATE EXITS VIA V 56
  TC P20LEMWT # PROCEED CONTINUES TO R22
  TC  -5  # ENTER ILLEGAL
  CAF BIT7
  TC LINUS  # SET BITS TO MAKE THIS A PRIORITY DISPLAY
  TC ENDOFJOB

# Page 512
V06N72PV VN 00672

# Page 513
# MANUAL ACQUISITION ROUTINE R23LEM
# PROGRAM DESCRIPTION
#
# MOD NO -- 2
# BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
# TO ACQUIRE THE CSM BY MANUAL OPERATION OF THE RENDEZVOUS RADAR
#
# CALLING SEQUENCE --
#
# TC R23LEM
#
# SUBROUTINES CALLED
#
# BANKCALL R61LEM
# SETMINDB GOPERF1
#
# NORMAL EXIT MODES --
#
# IN RESPONSE TO THE GOPERF1, SELECTION OF ENTER WILL RECYCLE R23
# SELECTION OF PROC WILL CONTINUE R23
# SELECTION OF TERM WILL TERMINATE R23 + P20
#
# ALARM OR ABORT EXIT MODES --
#
# SEE NORMAL EXIT MODES ABOVE
#
# OUTPUT
#
# N.A.
#
# ERASABLE INITIALIZATION REQUIRED --
#
# ACMODFLG MUST BE SET TO 1 (MANUAL MODE)

  EBANK= GENRET
  COUNT* $$/R23
R23LEM  TC UPFLAG  # SET NO ANGLE MONITOR FLAG
  ADRES NORRMON
  INHINT
  TC IBNKCALL # SELECT MINIMUM DEADBAND
  CADR SETMINDB
  RELINT
R23LEM1  CAF BIT14  # ENABLE TRACKER
  EXTEND
  WOR CHAN12
  CAF OCT205
  TC BANKCALL
  CADR GOPERF1
  TC R23LEM2  # TERMINATE
  TC R23LEM11 # PROCEDE
  TC R23LEM3  # ENTER -- DO ANOTHER MANEUVER
R23LEM11 INHINT
  TC RRLIMCHK # YES -- CHECK IF ANTENNA IS WITHIN LIMITS
  ADRES CDUT
  TC OUTOFLIM # NOT WITHIN LIMITS
  TC IBNKCALL # RESTORE DEADBAND TO
  CADR RESTORDB # ASTRONAUT SELECTED VALUE
  RELINT
  TC DOWNFLAG # CLEAR NO ANGLE MONITOR FLAG
  ADRES NORRMON
  TC P20LEMB1 # RADAR IS LOCKED ON CONTINUE IN P20
OUTOFLIM RELINT
# Page 514
  CAF OCT501PV
  TC BANKCALL # ISSUE ALARM -- RR ANTENNA NOT WITHIN
  CADR PRIOLARM # LIMITS
  TC R23LEM2  # TERMINATE -- EXIT R23 TO R00 (GO TO POOH)
  TC OUTOFLIM +1 # PROCEED ILLEGAL
  TC R23LEM3  # RECYCLE -- TO ANOTHER MANEUVER
  TC ENDOFJOB
R23LEM2  TC DOWNFLAG # CLEAR NO ANGLE MONITOR FLAG
  ADRES NORRMON
  TC GOTOV56  # AND EXIT VIA V56
R23LEM3  TC BANKCALL
  CADR R61LEM
  TC R23LEM1

OCT501PV OCT 501
OCT205  OCT 205

# Page 515
# SEARCH ROUTINE R24LEM
# PROGRAM DESCRIPTION
#
# MOD NO -- 2
# BY P. VOLANTE
#
# FUNCTIONAL DESCRIPTION
#
# TO ACQUIRE THE CSM BY A SEARCH PATTERN WHEN THE RENDEZVOUS RADAR HAS
# FAILED TO ACQUIRE TEH CSM IN THE AUTOMATIC TRACKING MODE AND TO ALLOW
#  THE ASTRONAUT TO CONFIRM THAT REACQUISITION HAS NOT BEEN IN SIDELOBE.
#
# CALLING SEQUENCE
#
# CAF PRIONN
# TC FINDVAC
# EBANK= DATAGOOD
# 2CADR R24LEM
#
# SUBROUTINES CALLED
#
# FLAGUP FLAGDOWN BANKCALL
# R61LEM GOFLASHR FINDVAC
# ENDOFJOB NOVAC LSR24.1
#
# NORMAL EXIT MODES --
#
# ASTRONAUT RESPONSE TO DISPLAY OF OMEGA AND DATAGOOD.  HE CAN EITHER
#  REJECT BY TERMINATING (SEARCH OPTION AND RESELECTING P20) OR ACCEPT BY
# PROCEEDING (EXIT ROUTINE AND RETURN TO AUTO MODE IN P20)
#
# ALARM OR ABORT EXIT MODES --
#
# SEE NORMAL EXIT MODES ABOVE
#
# OUTPUT --
#
# SEE OUTPUT FROM LSR24.1 + R61LEM
#
# ERASABLE INITIALIZATION REQUIRED
#
# SET INPUT FOR LSR24.1
#
# FLAGS SET + RESET
#
# SRCHOPT, ACMODFLG

  EBANK= DATAGOOD
  COUNT* $$/R24
R24LEM  TC UPFLAG
  ADRES SRCHOPTN # SET SRCHOPT FLAG
  TC DOWNFLAG # RESET LOS BEING COMPUTED FLAG TO MAKE
  ADRES LOSCMFLG # SURE DODES DOESN'T GO TO R21
R24LEM1  CAF ZERO
  TS DATAGOOD # ZERO OUT DATA INDICATOR
  TS OMEGAD  # ZERO OMEGA DISPLAY REGS
  TS OMEGAD +1 # ZERO OMEGA DISPLAY REGS
R24LEM2  TC PHASCHNG
  OCT 04022
  CAF V16N80
  TC BANKCALL
  CADR PRIODSPR
  TC GOTOV56
  TC R24END  # PROCEED EXIT R24 TO P20LEM1

  TC R24LEM3  # RECYCLE -- CALL R61 TO MANEUVER S/C
# Page 516
  TC BANKCALL
  CADR LRS24.1
R24END  TC KILLTASK
  CADR CALLDGCH
  TC CLRADMOD # CLEAR BITS 10 & 15 OF RADMODES.
  TCF P20LEM1  # AND GO TO 400 MI. RANGE CHECK IN P20

  BLOCK 3
  SETLOC FFTAG6
  BANK
  COUNT* $$/R24

CLRADMOD CS BIT10+15
  INHINT
  MASK RADMODES
  TS RADMODES
  CS BIT2  # DISABLE RR ERROR COUNTERS
  EXTEND
  WAND CHAN12  # USER WILL RELINT

  TC Q

BIT10+15 OCT 41000
  BANK 24
  SETLOC P20S
  BANK
  COUNT* $$/R24

R24LEM3  TC PHASCHNG
  OCT 04022
  TC KILLTASK
  CADR CALLDGCH # KILL WAITLIST FOR NEXT POINT IN PATTERN
  TC CLRADMOD # CLEAR BITS 10 + 15 OF RADMODES TO KILL
  RELINT   # HALF SECOND DESIGNATE LOOP
  CAF .5SEC
  TC BANKCALL # WAIT FOR DESIGNATE LOOP TO DIE
  CADR DELAYJOB
  TC LUNSFCHK # CHECK IF ON LUNAR SURFACE
  TC R24LEM4  # YES -- DON'T DO ATTITUDE MANEUVER
  TC BANKCALL # CALL R61 TO DO PREFERRED TRACKING
  CADR R61LEM  # ATTITUDE MANEUVER
R24LEM4  CAF ZERO  # ZERO OUT RADCADR (WHICH WAS SET BY
  TS RADCADR  # ENDRADAR WHEN DESIGNATE STOPPED) SO THAT
     # RRDESSM WILL RETURN TO CALLER
  TC R24LEM2  # AND GO BACK TO PUT UP V16 N80 DISPLAY

V16N80  VN 01680

# Page 517
# PREFERRED TRACKING ATTITUDE ROUTINE R61LEM
# PROGRAM DESCRIPTION
#
# MOD NO: 3 DATE: 4-11-67
# MOD BY: P. VOLANTE, SDC
#
# FUNCTIONAL DESCRIPTION --
#
# TO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE LM TO ENABLE RR
# TRACKING OF THE CSM AND TO PERFORM THE MANEUVER TO THE PREFERRED
# ATTITUDE.
#
# CALLING SEQUENCE --
#
# TC BANKCALL
# CADR R61LEM
#
# SUBROUTINES CALLED
#
# LPS20.1 VECPOINT
# KALCMAN3
#
# NORMAL EXIT MODES --
#
# NORMAL RETURN IS TO CALLER + 1
#
# ALARM OR ABORT EXIT MODES --
#
# TERMINATE P20 + R61 BY BRANCHING TO P20END IF BOTH TRACKFLAG +
# RENDEZVOUS FLAG ARE NOT SET.
#
# OUTPUT --
#
# SEE OUTPUT FOR LPS20.1 + ATTITUDE MANEUVER ROUTINE (R60)
#
# ERASABLE INITIALIZATION REQUIRED
#
# GENRET USED TO SAVE Q FOR RETURN
#
# FLAGS SET + RESET
#
# 3AXISFLG
#
# DEBRIS
#
#  SEE SUBROUTINES

  SETLOC R61
  BANK
  EBANK= LOSCOUNT
  COUNT* $$/R61
R61LEM  TC MAKECADR
  TS GENRET
  TC UPFLAG  # SET R61 FLAG
  ADRES R61FLAG
  TC R61C+L01
R65LEM  TC MAKECADR
  TS GENRET
  TC DOWNFLAG # RESET R61 FLAG
  ADRES R61FLAG
R61C+L01 CAF TRACKBIT # TRACKFLAG
  MASK STATE +1
  EXTEND
  BZF R65WAIT  # NOT SET
R61C+L03 TC INTPRET
  VLOAD
# Page 518
   HIUNITZ
  STORE SCAXIS  # TRACK AXIS UNIT VECTOR
R61LEM1  RTB DAD
   LOADTIME # EXTRAPOLATE FORWARD TO CENTER
   3SECONDS # SIX SECOND PERIOD.
  STCALL TDEC1
   LPS20.1  # LOS DETERMINATION + VEH ATTITUDE
  VLOAD
   RRTARGET
  STORE POINTVSM
  RTB CALL  # GET DESIRED CDU'S FOR VECPNT1
   READCDUD
   VECPNT1  # COMPUTES FINAL ANGLES FROM PRESENT CDUDS
  STORE CPHI  # STORE FINAL ANGLES -- CPHI, CTHETA, CPSI
  EXIT
  TC PHASCHNG
  OCT 04022
  CAF TRACKBIT # IS TRACK FLAG SET
  MASK FLAGWRD1
  EXTEND
  BZF R65WAIT
  TC BANKCALL
  CADR G+N,AUTO # CHECK FOR AUTO MODE
  CCS A
  TC R61C+L04 # NOT IN AUTO
  TC INTPRET
  VLOAD CALL
   RRTARGET
   CDU*SMNB
  DLOAD DSU  # GET PHI -- ARCCOS OF Z-COMPONENT OF LOS
   MPAC +5
   COS15DEG
R61LEM2  BMN EXIT  # BRANCH -- PHI > 15 DEGREES
   R61C+L05 # PHI GRE 10DEG
  EBANK= CDUXD
  CAF EBANK6
  TS EBANK
  INHINT
  EXTEND
  DCA CPHI
  DXCH CDUXD
  CA CPSI
  TS CDUZD
  RELINT
  EBANK= LOSCOUNT
  CAF EBANK7
  TS EBANK
  TC R61C+L06
R61C+L05 EXIT
  INHINT
# Page 519
  TC IBNKCALL
  FCADR ZATTEROR
  TC IBNKCALL
  FCADR SETMINDB # REDUCE ATTITUDE ERROR
  TC DOWNFLAG
  ADRES 3AXISFLG
  TC UPFLAG
  ADRES PDSPFLAG # SET PRIORITY DISPLAY FLAG
  TC BANKCALL
  CADR R60LEM
  INHINT
  TC IBNKCALL
  FCADR RESTORDB
  TC PHASCHNG
  OCT 04022
  TC DOWNFLAG
  ADRES PDSPFLAG # RESET PRIORITY DISPLAY FLAG
R61C+L06 CA FLAGWRD1
  MASK R61FLBIT
  CCS A
  TC R61C+L4
  CCS R65CNTR
  TC +2
  TC R61C+L4  # R65CNTR = 0 - EXIT ROUTINE
  TS R65CNTR
  CAF 06SEC
  TC TWIDDLE
  ADRES R61C+L2
  TC ENDOFJOB
R61C+L2  CAF PRIO26
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR R61C+L01

  TC TASKOVER
R61C+L04 TC BANKCALL # TO CONVERT ANGLES TO FDAI
  CADR BALLANGS
  TC R61C+L06
R61C+L4  CAE GENRET
  TCF BANKJUMP # EXIT R61
R61C+L1  CAF BIT7+9PV # IS RENDEZVOUS OR P25FLAG SET
  MASK STATE
  EXTEND
  BZF ENDOFJOB # NO -- EXIT ROUTINE AND PROGRAM.
  TC R61C+L06 # YES EXIT ROUTINE
R65WAIT  TC POSTJUMP
  CADR P20LEMWT

BIT7+9PV OCT 00500
# Page 520
COS15DEG 2DEC 0.96593 B-1

06SEC  DEC 600
PHI  EQUALS 20D
READCDUD INHINT   # READS DESIRED CDU'S AND STORES IN
  CAF EBANK6  # MPAC TP EXITS WITH MODE SET TO TP
  XCH EBANK
  TS RUPTREG1
  EBANK= CDUXD
  CA CDUXD
  TS MPAC
  EXTEND
  DCA CDUYD
  DXCH MPAC +1
  CA RUPTREG1
  TS EBANK
  RELINT
  TCF TMODE
  BLOCK 02
  SETLOC RADARFF
  BANK

  EBANK= LOSCOUNT
  COUNT* $$/RRSUB

# Page 521
# THE FOLLOWING SUBROUTINE RETURNS TO CALLER +2 IF THE ABSOLUTE VALUE OF VALUE OF C(A) IS GREATER THAN THE
# NEGATIVE OF THE NUMBER AT CALLER +1.  OTHERWISE IT RETURNS TO CALLER +3.  MAY BE CALLED IN RUPT OR UNDER EXEC.

MAGSUB  EXTEND
  BZMF +2
  TCF +2
  COM

  INDEX Q
  AD 0
  EXTEND
  BZMF Q+2  # ABS(A) <= CONST GO TO L+3
  TCF Q+1  # ABS(A) > CONST GO TO L+2

# Page 522
# PROGRAM NAME: RRLIMCHK
#
# FUNCTIONAL DESCRIPTION:
#
# RRLIMCHK CHECKS RR DESIRED GIMBAL ANGLES TO SEE IF THEY ARE WITHIN
#  THE LIMITS OF THE CURRENT MODE.  INITIALLY THE DESIRED TRUNNION AND
# SHAFT ANGLES ARE STORED IN ITEMP1 AND ITEMP2.  THE CURRENT RR
#  ANTENNAE MODE (RADMODES BIT 12) IS CHECKED WHICH IS = 0 FOR
# MODE 1 AND =1 FOR MODE 2.
#
# MODE 1 -- THE TRUNNION ANGLE IS CHECKED AT MAGSUB TO SEE IF IT IS
# BETWEEN -55 AND +55 DEGREES.  IF NOT, RETURN TO L +2.  IF WITHIN LIMITS,
# THE SHAFT ANGLE IS CHECKED TO SEE IF IT IS BETWEEN -70 AND +59 DEGREES.
# IF NOT, RETURN TO L +2.  IF IN LIMITS, RETURN TO L +3.
#
# MODE 2 -- THE SHAFT ANGLE IS CHECKED AT MAGSUB TO SEE IF IT IS
# BETWEEN -139 AND -25 DEGREES.  IF NOT, RETURN TO L +2.  IF WITHIN
# LIMITS, THE TRUNNION ANGLE IS CHECKED TO SEE IF IT IS BETWEEN +125
#  AND -125 (+235) DEGREES.  IF NOT, RETURN TO L +2.  IF IN LIMITS, RETURN
# TO L +3.
#
# CALLING SEQUENCE:
#
# L  TC  RLIMCHK (WITH INTERRUPT INHIBITED)
# L  +1  ADRES  T,S  (DESIRED TRUNNION ANGLE ADDRESS)
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RADMODES, MODEA, MODEB (OR DESIRED TRUNNION AND SHAFT
# ANGLES ELSEWHERE IN CONSECUTIVE LOCATIONS -- UNSWITCHED ERASABLE OR
# CURRENT EBANK).
#
# SUBROUTINES CALLED: MAGSUB
#
# JOBS OR TASKS INITIATED:  NONE
#
# ALARMS:  NONE
#
# EXIT: L + 2 (EITHER OR BOTH ANGLES NOT WITHIN LIMITS OF CURRENT MODE)
# L + 3 (BOTH ANGLES WITHIN LIMITS OF CURRENT MODE)

RRLIMCHK EXTEND
  INDEX Q
  INDEX 0
  DCA 0
  INCR Q
  DXCH ITEMP1
  LXCH Q  # L(CALLER +2) TO L.

  CAF ANTENBIT # SEE WHICH MODE RR IS IN.
  MASK RADMODES
  CCS A
  TCF MODE2CHK

  CA ITEMP1  # MODE 1 IS DEFINED AS
# Page 523
  TC MAGSUB  #  1. ABS(T) L 55 DEGS.
  DEC -.30555  #  2. ABS(S + 5.5 DEGS) L 64.5 DEGS
  TC L  # (SHAFT LIMITS AT +59, -70 DEGS)

  CAF 5.5DEGS
  AD ITEMP2
  TC MAGSUB
  DEC -.35833  # 64.5 DEGS
  TC L
  TC RRLIMOK  # IN LIMITS.

MODE2CHK CAF 82DEGS  # MODE 2 IS DEFINED AS
  AD ITEMP2  # 1. ABS(T) G 125 DEGS.
  TC MAGSUB  # 2. ABS(S + 82 DEGS) L 57 DEGS
  DEC -.31667  # (SHAFT LIMITS AT -25, -139 DEGS)
  TC L

  CA ITEMP1
  TC MAGSUB
  DEC -.69444  # 125 DEGS

RRLIMOK  INDEX L
  TC L  # ( = TC 1 )

5.5DEGS  DEC .03056
82DEGS  DEC .45556

# Page 524
# PROGRAM NAME: SETTRKF
#
# FUNCTIONAL DESCRIPTION:
#
#  SETTRKF UPDATES THE TRACKER FAIL LAMP ON THE DSKY.
# INITIALLY THE LAMP TEST FLAG (IMODES33 BIT 1) IS CHECKED.
#  IF A LAMP TEST IS IN PROGRESS, THE PROGRAM EXITS TO L +1.
# IF NO LAMP TEST THE FOLLOWING IS CHECKED SEQUENTIALLY:
# 1) RR CDU'S BEING ZEROED, RR CDU OK, AND RR NOT IN
#    AUTO MODE (RADMODES BITS 13, 7, 2).
# 2) LR VEL DATA FAIL AND NO LR POS DATA (RADMODES BITS
#    8,5)
# 3) NO RR DATA (RADMODES BIT 4)
# THE ABSENCE OF ALL THREE SIMULTANEOUSLY IN (1), THE PRESENCE OF BOTH
# IN (2), AND THE PRESENCE OF (3) RESULTS IN EITHER THE TRACKER FAIL
# LAMP (DSPTAB +11D BIT 8) BEING TURNED OFF OR IS LEFT OFF.  THEREFORE, THE
# TRACKER FAIL LAMP IS TURN ON IF:
# A) RR CDU FAILED WITH RR IN AUTO MODE AND RR CDU'S NOT BEING ZEROED
# B) N SAMPLES OF LR DATA COULD NOT BE TAKEN IN 2N TRIES WITH
#    EITHER THE ALT OR VEL INFORMATION
# C) N SAMPLES OF RR DATA COULD NOT BE OBTAINED FROM 2N TRIES
#    WITH EITHER THE AL
#
# CALLING SEQUENCE:
#
# L TC SETTRKF
#
# ERASABLE INITIALIZATION REQUIRED:  IMODES33, RADMODES, DSPTAB +11D
#
# SUBROUTINES CALLED:  NONE
#
# JOBS OR TASKS INITIATED:  NONE
#
# ALARMS:  TRACKER FAIL LAMP
#
# EXIT:  L +1 (ALWAYS)

SETTRKF  CAF BIT1  # NO ACTION IF DURING LAMP TEST
  MASK IMODES33
  CCS A
  TC Q

RRTRKF  CA BIT8
  TS L

  CAF 13,7,2  # SEE IF CDU FAILED.
  MASK RADMODES
  EXTEND
  BZF TRKFLON  # CONDITION 3 ABOVE.

RRCHECK  CAF RRDATABT # SEE IF RR DATA FAILED.
  MASK RADMODES
# Page 525
  CCS A
TRKFLON  CA L
  AD DSPTAB +11D # HALF ADD DESIRED AND PRESENT STATES.
  MASK L
  EXTEND
  BZF TCQ  # NO CHANGE.

FLIP  CA DSPTAB +11D # CAN'T USE LXCH DSPTAB +11D (RESTART PROB)
  EXTEND
  RXOR LCHAN
  MASK POSMAX
  AD BIT15
  TS DSPTAB +11D
  TC Q

13,7,2  OCT 10102
ENDRMODF EQUALS

# Page 526
# PROGRAM NAME:  RRTURNON
#
# FUNCTIONAL DESCRIPTION:
#
# RRTURNON IS THE TURN-ON SEQUENCE WHICH, ALONG WTIH
# RRZEROSB, ZEROES THE CDU'S AND DETERMINES THE RR MODE.
# INITIALLY, CONTROL IS TRANSFERRED TO RRZEROSB FOR THE
# ACTUAL TURN-ON SEQUENCE.  UPON RETURN THE PROGRAM
# WAITS 1 SECOND BEFORE REMOVING THE TURN-ON FLAG
# (RADMODES BIT1) SO THE REPOSITION ROUTINE WON'T
# INITIATE PROGRAM ALARM 00501.  A CHECK IS THEN MADE
# TO SEE IF A PROGRAM IS USING THE RR (STATE BIT 7).  IF
# SO, THE PROGRAM EXITS TO ENDRADAR SO THAT THE RR CDU
# FAIL FLAG (RADMODES BIT 7) CAN BE CHECKED BEFORE
# RETURNING TO THE WAITING PROGRAM.  IF NOT, THE PROGRAM EXITS
# TO TASKOVER.
#
# CALLING SEQUENCE:  WAITLIST TASK FROM RRAUTCHK IF THE RR POWER-ON AUTO
# BIT (CHAN 33 BIT 2) CHANGES TO 0 AND NO PROGRAM WAS USING
# THE RR (STATE BIT 7).
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RADMODES, STATE
#
# SUBROUTINES CALLED:  RRZEROSB, FIXDELAY, TASKOVER, ENDRADAR
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE (SEE RRZEROSB)
#
# EXIT:  TASKOVER, ENDRADAR (WAITING PROGRAM)

  BANK 24
  SETLOC P20S1
  BANK

  EBANK= LOSCOUNT
  COUNT* $$/RSUB
RRTURNON TC RRZEROSB
  TC FIXDELAY # WAIT 1 SEC BEFORE REMOVING TURN ON FLAG
  DEC 100  # SO A MONITOR REPOSITION WON'T ALARM.
  CS TURNONBT
  MASK RADMODES
  TS RADMODES
  TCF TASKOVER
# Page 527
# PROGRAM NAME:  RRZEROSB
#
# FUNCTIONAL DESCRIPTION:
#
# RRZEROSB IS A CLOSED SUBROUTINE TO ZERO THE RR CDU'S,
# DETERMINE THE RR MODE, AND TURN ON THE TRACKER FAIL
# LAMP IF REQUIRED.  INITIALLY THE RR CDU ZERO BIT (CHAN 12
# BIT 1) IS SET.  FOLLOWING A 20 MILLISECOND WAIT, THE LGC
# RR CDU COUNTERS (OPTY, OPTX) ARE SET = 0 AFTER
#  WHICH THE RR CDU ZERO DISCRETE (CHAN 12 BIT 1) IS
# REMOVED.  A 4 SECOND WAIT IS SET TO ALL THE RR CDU'S
# TO REPEAT THE ACTUAL TRUNNION AND SHAFT ANGLES.  THE
# RR CDU ZERO FLAG (RADMODES BIT 13) IS REMOVED.  THE
# CONTENTS OF OPTY IS THEN CHECKED TO SEE IF THE TRUNNION
# ANGLE IS LESS THAN 90 DEGREES.  IF NOT, BIT 12 OF
# RADMODES IS SET = 1 TO INDICATE RR ANTENNA MODE 2.
# IF LESS THAN 90 DEGREES, BIT 12 OF RADMODES IS SET = 0 TO
# INDICATE RR ANTENNA MODE 1.  SETTRKF IS THEN CALLED TO
# SEE IF THE TRACKER FAIL LAMP SHOULD BE TURNED ON.
#
# CALLING SEQUENCE:  L  TC  RRZEROSB  (FROM RRTURNON AND RRZERO)
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RADMODES (BIT 13 SET), DSPTAB +11D
#
# SUBROUTINES CALLED:  FIXDELAY, MAGSUB, SETTRKF
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  TRAKCER FAIL
#
# EXIT:  L +1 (ALWAYS)

RRZEROSB EXTEND
  QXCH RRRET
  CAF BIT1  # BIT 13 OF RADMODES MUST BE SET BEFORE
  EXTEND   # COMING HERE.
  WOR CHAN12  # TURN ON ZERO RR CDU
  TC FIXDELAY
  DEC 2

  CAF ZERO
  TS CDUT
  TS CDUS
  CS ONE  # REMOVE ZEROING BIT.
  EXTEND
  WAND CHAN12
  TC FIXDELAY
  DEC 1000  # RESET FAIL INHIBIT IN 10 SECS. -- D.281

  CS RCDU0BIT # REMOVE ZEROING IN PROCESS BIT
# Page 528
  MASK RADMODES
  TS RADMODES

  CA CDUT
  TC MAGSUB
  DEC -.5
  TCF +3  # IF MODE 2.

  CAF ZERO
  TCF +2
  CAF ANTENBIT
  XCH RADMODES
  MASK -BIT12
  ADS RADMODES

  TC SETTRKF  # TRACKER LAMP MIGHT GO ON NOW.

  TC RRRET  # DONE.

-BIT12  EQUALS -1/8  # IN SPROOT

# Page 529
# PROGRAM NAME:  DORREPOS
#
# FUNCTIONAL DESCRIPTION:
#
# DORREPOS IS A SEQUENCE OF TASKS TO DRIVE THE RENDEZVOUS RADAR
# TO A SAFE POSITION.  INIITALLY SETRRECR IS CALLED WHERE THE RR
# ERROR COUNTERS (CHAN 12 BIT 2) ARE ENABLED AND LASTYCMD
# AND LASTXCMD SET = 0 TO INDICATE THE DIFFERENCE BETWEEN THE
# DESIRED STATE AND PRESENT STATE OF THE COMMANDS.  THE RR
# TURN-ON FLAG (RADMODES BIT 1) IS CHECKED AND IF NOT PRESENT,
# PROGRAM ALARM 00501 IS REQUESTED BEFORE CONTINUING.  IN EITHER
# CASE, FOLLOWING A 20 MILLISECOND WAIT THE PROGRAM CHECKS THE CURRENT
# RR ANTENNA MODE (RADMODES BIT 12).  RRTONLY IS THEN CALLED
# TO DRIVE THE TRUNNION ANGLE TO 0 DEGREES IF IN MODE 1 AND TO 180
# DEGREES IF IN MODE 2.  UPON RETURN, THE CURRENT RR ANTENNA
# MODE (RADMODES BIT 12) IS AGAIN CHECKED.  RRSONLY IS THEN
# CALLED TO DRIVE THE SHAFT ANGLE TO 0 DEGREES IF IN MODE 1 AND TO
# -90 DEGREES IF IN MODE 2.  IF DURING RRTONLY OR RRSONLY A
# REMODE HAS BEEN REQUESTED (RADMODES BIT 14), AND ALWAYS
# FOLLOWING COMPLETION OF RRSONLY, CONTROL IS TRANFERRED TO
# REPOSRPT.  HERE THE REPOSITION FLAG (RADMODES BIT 11) IS
# REMOVED.  A CHECK IS THEN MADE ON THE DESIGNATE FLAG (RADMODES
# BIT 10).  IF PRESENT, CONTROL IS TRANSFERRED TO BEGDES.  IF NOT PRESENT
# INDICATING NO FURTHER ANTENNA CONTROL REQUIRED, THE RR ERROR
# COUNTER BIT (CHAN 12 BIT 2) IS REMOVED AND THE ROUTINE EXITS TO
# TASKOVER.
#
# CALLING SEQUENCE:
#
# WAITLIST CALL FROM RRGIMON IF TRUNNION AND SHAFT CDU ANGLES
# NOT WITHIN LIMITS OF CURRENT MODE.
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RADMODES
#
# SUBROUTINES CALLED
#
# RRTONLY, RRSONLY, BEGDES (EXIT)
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT:  TASKOVER, BEGDES

DORREPOS TC SETRRECR # SET UP RR CDU ERROR COUNTERS.

# ALARM 501 DELETED IN DANCE 279 PER PCR 97.

  TC FIXDELAY
  DEC 2

  CAF ANTENBIT # MANEUVER TRUNNION ANGLE TO NOMINAL POS.
# Page 530
  MASK RADMODES
  CCS A
  CAF BIT15  # 0 FOR MODE 1 AND 180 FOR MODE 2.
  TC RRTONLY

  CAF ANTENBIT # NOT PUT SHAFT IN RIGHT POSITION
  MASK RADMODES
  CCS A
  CS HALF  # -90 FOR MODE 2.
  TC RRSONLY

REPOSRPT CS REPOSBIT # RETURNS HERE FROM RR1AXIS IN REMODE
     # REQUESTED DURING REPOSITION.
  MASK RADMODES # REMOVE REPOSITION BIT.
  TS RADMODES
  MASK DESIGBIT # SEE IF SOMEONE IS WAITING TO DESIGNATE.
  CCS A
  TCF BEGDES
  CS BIT2  # IF NO FURTHER ANTENNA CONTROL REQUIRED,
  EXTEND   # REMOVE ERROR COUNTER ENABLE.
  WAND CHAN12
  TCF TASKOVER

SETRRECR CAF BIT2  # SET UP RR ERROR COUNTERS
  EXTEND
  RAND CHAN12
  CCS A  # DO NOT CLEAR LAST COMMAND IF
  TC Q  # ERROR COUNTERS ARE ENABLED

  TS LASTYCMD
  TS LASTXCMD
  CAF BIT2
  EXTEND
  WOR CHAN12  # ENABLE RR CDU ERROR COUNTERS.
  TC Q
# Page 531
# PROGRAM NAME:  REMODE
#
# FUNCTIONAL DESCRIPTION
#
# REMODE IS THE GENERAL REMODING SUBROUTINE.  IT DRIVES THE
# TRUNNION ANGLE TO 0 DEGREES IF THE CURRENT MODE IS MODE 1,
# 180 DEGREES FOR MODE 2, THEN DRIVES THE SHAFT ANGLE TO -45
# DEGREES, AND FINALLY DRIVES THE TRUNNION ANGLE TO -130 DEGREES,
# TO PLACE THE RR IN MODE 2, -50 DEGREES FOR MODE 1, BEFORE
# INITIATING 2-AXIS CONTROL.  ALL REMODING IS DONE WITH SINGLE
# AXIS ROTATIONS (RR1AXIS).  INITIALLY THE RR ANTENNA MODE FLAG
# (RADMODES BIT 12) IS CHECKED.  CONTROL IS THEN TRANSFERRED TO
# RRTONLY TO DRIVE THR TRUNNION ANGLE TO 0 DEGREES IF IN MODE 1
# OR 180 DEGREES IF IN MODE 2.  RRSONLY IS THEN CALLED TO DRIVE
# THE SHAFT ANGLE TO -45 DEGREES. THE RR ANTENNA MODE FLAG
# (RADMODES BIT 12) IS CHECKED AGAIN.  CONTROL IS AGAIN
# TRANSFERRED TO RRTONLY TO DRIVE THE TRUNNION ANGLE TO -130
# DEGREES TO PLACE THE RR IN MODE 2 IF CURRENTLY IN MODE 1 OR TO
# -50 DEGREES IF IN MODE 2 TO PLACE THE RR IN MODE 1.  RMODINV
# IS THEN CALLED TO SET RADMODES BIT 12 TO INDICATE THE NEW
# RR ANTENNA MODE.  THE REMODE FLAG (RADMODES BIT 14)
# IS REMOVED TO INDICATE THAT REMODING IS COMPLETE.  THE PROGRAM
# THEN EXITS TO STDESIG TO BEGIN 2-AXIS CONTROL.
#
# CALLIN SEQUENCE:
#
# FROM BEGDES WHEN REMODE FLAG (RADMODES BIT 14) IS SET.
# THIS FLAG MAY BE SET IN RRDESSM AND RRDESNB IF RRLIMCHK
# DETERMINES THAT THE DESIRED ANGLES ARE WITHIN THE LIMITS OF THE
# OTHER MODE.
#
# ERASABLE INIITIALIZATION REQUIRED:
#
# RADMODES
#
# SUBROUTINES CALLED:
#
# RRTONLY, RRSONL, RMODINV (ACTUALLY PART OF)
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT:  STDESIG

REMODE  CAF ANTENBIT # DRIVE TRUNNION TO 0 (180)
  MASK RADMODES # (ERROR COUNTER ALREADY ENABLED)
  CCS A
  CAF BIT15
  TC RRTONLY

  CAF -45DEGSR
  TC RRSONLY
# Page 532
  CS RADMODES
  MASK ANTENBIT
  CCS A
  CAF -80DEGSR # GO TO T = -130 (-50).
  AD -50DEGSR
  TC RRTONLY

  CS RADMODES
  MASK ANTENBIT
  CCS A
  CAF BIT15  # GO TO T = -180 (+0).
  TC RRTONLY

  CS RADMODES  # GO TO S = -90 (+0).
  MASK ANTENBIT
  CCS A
  CS HALF
  TC RRSONLY

  TC RMODINV

  CS REMODBIT # END OF REMODE.
  MASK RADMODES
  TS RADMODES

  CAF DESIGBIT # WAS REMODE CALLED DURING DESIGNATE?
  MASK RADMODES # (BIT10 RADMODES = 1)
  EXTEND
  BZF RGOODEND # NO -- RETURN TO CALLER WAITING IN RADSTALL
  TC STDESIG  # YES -- RETURN TO DESIGNATE
-45DEGSR = 13,14,15
-50DEGSR DEC -.27778
-80DEGSR DEC -.44444

RMODINV  LXCH RADMODES # INVERT THE MODE STATUS.
  CAF ANTENBIT
  EXTEND
  RXOR LCHAN
  TS RADMODES
  TC Q

# Page 533
# PROGRAM NAMES: RRTONLY, RRSONLY
#
# FUNCTIONAL DESCRIPTION:
#
#  RRTONLY AND RRSONLY ARE SUBROUTINES FOR DOING SINGLE AXIS
# RR MANEUVERS FOR REMODE AND REPOSITION.  IT DRIVES TO
# WITHIN 1 DEGREE.  INITIALLY, AT RR1AX2, THE REMODE AND REPOSITION
# FLAGS (RADMODES BITS 14, 11) ARE CHECKED.  IF BOTH EXIST,
# THE PROGRAM EXITS TO REPOSRPT (SEE DORREPOS).  THIS INDICATES
# THAT SOMEONE POSSIBLY REQUESTED A DESIGNATE (RADMODES BIT 10)
# WHICH REQUIRES A REMODE (RADMODES BIT 14) AND THAT A
# REPOSITION IS IN PROGRESS (RADMODES BIT 11).  IF NONE
#  OR ONLY ONE OF THE FLAGS EXIST, REMODE OR REPOSITION, MAGSUB
# IS CALLED TO SEE IF THE APPROPRIATE ANGLE IS WITHIN 1 DEGREE.  IF YES,
# CONTROL RETURNS TO THE CALLING ROUTINE.  IF NOT, CONTROL IS
# TRANSFERRED TO RROUT FOR SINGLE AXIS MANEUVERS WITH THE OTHER
# ANGLE SET = 0.  FOLLOWING A .5 SECOND WAIT, THE ABOVE PROCEDURE IS
# REPEATED.
#
# CALLING SEQUENCE: L-1 CAF *ANGLE* (DESIRED ANGLE SCALED PI)
# L TC RRTONLY (TRUNNION ONLY)
# RRSONLY (SHAFT ONLY)
# RRTONLY IS CALLED BY PREPOS29;
# RRTONLY AND RRSONLY ARE CALLED BY DORREPOS AND REMODE
#
# ERASABLE INITIALIZATION REQUIRED:
#
# C(A) = DESIRED ANGLE, RADMODES
#
# SUBROUTINES CALLED:
#
# FIXDELAY, REPOSRPT, MAGSUB, RROUT
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT: REPOSRPT (REMODE AND REPOSITION FLAGS PRESENT -- RADMODES
# BITS 14, 11)
# L+1 (ANGLE WITHIN ONE DEGREE OR RR OUT OF AUTO MODE)

RRTONLY  TS RDES  # DESIRED TRUNNION ANGLE.
  CAF ZERO
  TCF RR1AXIS

RRSONLY  TS RDES  # SHAFT COMMANDS ARE UNRESOLVED SINCE THIS
  CAF ONE  # ROUTINE ENTERED ONLY WHEN T = 0 OR 180.

RR1AXIS  TS RRINDEX
  EXTEND
  QXCH RRRET
  TCF RR1AX2

# Page 534
NXTRR1AX TC FIXDELAY
  DEC 50  # 2 SAMPLES PER SECOND.

RR1AX2  CS RADMODES # IF SOMEONE REQUESTS A DESIGNATE WHICH
  MASK PRIO22  # REQUIRES A REMODE AND A REPOSITION IS IN
  EXTEND   # PROGRESS, INTERRUPT IT AND START THE
  BZF REPOSRPT # REMODE IMMEDIATELY.

  CA RDES
  EXTEND
  INDEX RRINDEX
  MSU CDUT
  TS ITEMP1  # SAVE ERROR SIGNAL.
  EXTEND
  MP RRSPGAIN # TRIES TO NULL .7 OF ERROR OVER NEXT .5
  TS L
  CA RADMODES
  MASK AUTOMBIT
  XCH ITEMP1  # STORE RR-OUT-OF-AUTO-MODE BIT.
  TC MAGSUB  # SEE IF WITHIN ONE DEGREE.
  DEC -.00555  # SCALED IN HALF-REVS.

  CCS ITEMP1  # NO.  IF RR OUT OF AUTO MODE, EXIT.
  TC RRRET  # RETURN TO CALLER.

  CCS RRINDEX  # COMMAND FOR OTHER AXIS IS ZERO.
  TCF +2  # SETTING A TO 0.
  XCH L
  DXCH TANG

  TC RROUT

  TCF NXTRR1AX # COME BACK IN .5 SECONDS.

RRSPGAIN DEC .59062  # NULL .7 ERROR IN .5 SEC.

# Page 535
# PROGRAM NAME:  RROUT
#
# FUNCTIONAL DESCRIPTION:
#
# RROUT RECEIVES RR GYRO COMMANDS IN TANG, TANG +1 IN RR
# ERROR COUNTER SCALING.  RROUT THEN LIMITS THEM AND
# GENERATES COMMANDS TO THE CDU TO ADJUST THE ERROR COUNTERS
# TO THE DESIRED VALUES.  INITIALLY MAGSUB CHECKS THE MAGNITUDE OF
# THE COMMAND (SHAFT ON 1ST PASS) TO SEE IF IT IS GREATER THAN
# 384 PULSES.  IF NOT, CONTROL IS TRANFERRED TO RROUTLIM TO
# LIMIT THE COMMAND TO +384 OR -384 PULSES.  THE DIFFERENCE IS
# THEN CALCULATED BETWEEN THE DESIRED STATE AND TEH PRESENT STATE OF
# THE ERROR COUNTER AS RECORDED IN LASTYCMD AND LASTXCMD.
# THE RESULT IS STORED IN OPTXCMD (1ST PASS) AND OPTYCMD (2ND
# PASS).  FOLLOWING THE SECOND PASS, FOR THE TRUNNION COMMAND, THE
# OCDUT AND OCDUS ERROR COUNTER DRIVE BITS (CHAN 14 BITS 12, 11)
# ARE SET.  THIS PROGRAM THEN EXITS TO THE CALLING PROGRAM.
#
# CALLING SEQUENCE:
#
# L TC RROUT (WITH RUPT INHIBITED) RROUT IS CALLED BY
# RRTONLY, RRSONLY, AND DODES
#
# ERASABLE INITIALIZATION REQURIED:
#
# TANG, TANG +1 (DESIRED COMMANDS), LASTYCMD, LASTXCMD
# (1ST PASS = 0), RR ERROR COUNTER ENAGLE SET (CHAN 12 BIT 2).
#
# SUBROUTINES CALLED:
#
# MAGSUB
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT:  L+1 (ALWAYS)

RROUT  LXCH Q  # SAVE RETURN
  CAF ONE  # LOOP TWICE.
RROUT2  TS ITEMP2
  INDEX A
  CA TANG
  TS ITEMP1  # SAVE SIGN COMMAND FOR LIMITING.

  TC MAGSUB  # SEE IF WITHIN LIMITS.
-RRLIMIT DEC -384
  TCF RROUTLIM # LIMIT COMMAND TO MAG OF 384.

SETRRCTR CA ITEMP1  # COUNT OUT DIFFERENCE BETWEEN DESIRED
  INDEX ITEMP2  # STATE AND PRESENT STATE AS RECORDED IN
  XCH LASTYCMD # LASTYCMD AND LASTXCMD
  COM
# Page 536
  AD ITEMP1
  AD NEG0  # PREVENT +0 IN OUTCOUNTER
  INDEX ITEMP2
  TS CDUTCMD

  CCS ITEMP2  # PROCESS BOTH INPUTS.
  TCF RROUT2

  CAF PRIO6  # ENABLE COUNTERS.
  EXTEND
  WOR CHAN14  # PUT ON CDU DRIVES S AND T
  TC L  # RETURN.

RROUTLIM CCS ITEMP1  # LIMIT COMMAND TO ABS VAL OF 384.
  CS -RRLIMIT
  TCF +2
  CA -RRLIMIT
  TS ITEMP1
  TCF SETRRCTR +1

# Page 537
# ROUTINE TO ZERO THE RR CDUS AND DETERMINE THE ANTENNA MODE.

RRZERO  CAF BIT11+1  # SEE IF MONITOR REPOSITION OR NOT IN AUTO
  MASK RADMODES # IF SO, DON'T RE-ZERO CDUS.
  CCS A
  TCF RADNOOP  # (IMMEDIATE TASK TO RGOODEND).

  INHINT
  CS RCDU0BIT # SET FLAG TO SHOW ZEROING IN PROGRESS.
  MASK RADMODES
  AD RCDU0BIT
  TS RADMODES

  CAF ONE
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR RRZ2

  CS RADMODES # SEE IF IN AUTO MODE.
  MASK AUTOMBIT
  CCS A
  TCF ROADBACK
  TC ALARM  # AUTO DISCRETE NOT PRESENT -- TRYING
  OCT 510
ROADBACK RELINT
  TCF SWRETURN

RRZ2  TC RRZEROSB # COMMON TO TURNON AND RRZERO.
  TCF ENDRADAR

BIT11+1  OCT 02001

# Page 538
# PROGRAM NAME:  RRDESSM
#
# FUNCTIONAL DESCRIPTION:
#
#  THIS INTERPRETIVE ROUTINE WILL DESIGNATE, IF DESIRED ANGLES ARE
# WITHIN THE LIMITS OF EITHER MODE, TO A LINE-OF-SIGHT (LOS) VECTOR
# (HALF-UNIT) KNOWN WITH RESPECT TO THE STABLE MEMBER PRESENT
# ORIENTATION.  INITIALLY THE IMU CDU'S ARE READ AND CONTROL
# TRANSFERRED TO SMNB TO TRANSFORM THE LOS VECTOR FROM STABLE
# MEMBER TO NAVIGATION BASE COORDINATES (SEE STG MEMO 699)
# RRANGLES IS THEN CALLED TO CALCULATE THE RR GIMBAL ANGLES,
# TRUNNION AND SHAFT, FOR BOT THE PRESENT AND ALTERNATE MODE.
# RRLIMCHK IS CALLED TO SEE IF THE ANGLES CALCULATED FOR THE
# PRESENT MODE ARE WITHIN LIMITS.  IF WITHIN LIMITS, THE RETUREN
# LOCATION IS INCREMENTED, INASMUCH AS NO VEHICLE MANEUVER IS
# REQUIRED, BEFORE EXITING TO STARTDES.  IF NOT WITHIN THE LIMITS OF THE
# CURRENT MODE, TRYSWS IS CALLED.  FOLLOWING INVERTING OF THE RR
# ANTENNA MODE FLAG (RADMODES BIT 12), RRLIMCHK IS CALLED
# TO SEE IF THE ANGLES CALCULATED FOR THE ALTERNATE MODE ARE WITHIN
# LIMITS.  IF YES, THE RR ANTENNA MODE FLAG IS AGAIN INVERTED,
# THE REMODE FLAG (RADMODES BIT 14) SET, AND THE RETURN LOCATION
# INCREMENTED, TO INDICATE NO VEHICLE MANEUVER IS REQUIRED, BEFORE
# EXITING TO STARTDES.  IF THESE ANGLES ARE NOT WITHIN LIMITS
# OF THE ALTERNATE MODE, THE RR ANTENNA MODE FLAG (RADMODES
# BIT 12) IS INVERTED BEFORE RETURNING DIRECTLY TO THE CALLING PROGRAM
#  TO INDICATE THAT A VEHICLE MANEUVER IS REQUIRED.
#
# CALLING SEQUENCE:
#
# L STCALL RRTARGET (LOS HALF-UNIT VECTOR IN SM COORDINATES)
# L+1 RRDESM
# L+2 BASIC (VEHICLE MANEUVER REQUIRED)
# L+3 BASIC (NO VEHICLE MANEUVER REQUIRED)
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RRTARGET, RADMODES
#
# SUBROUTINES CALLED:
#
# READCDUS, SMNB, RRANGLES, RRLIMCHK, TRYSWS (ACTUALLY
# PART OF), RMODINV
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT:  L+2 (NEITHER SET OF ANGLES ARE WITHIN LIMITS OF RELATED MODE)
# STARTDES (DESIGNATE POSSIBLE AT PRESENT VEHICLES ATTITUDE -- RETURNS
# TO L+3 FROM STARTDES)

RRDESSM  STQ CLEAR
   DESRET
# Page 539
   RRNBSW
  CALL   # COMPUTES SINES AND COSINES, ORDER Y Z X
   CDUTRIG
  VLOAD CALL  # LOAD VECTOR AND CALL TRANSFORMATION
   RRTARGET
   *SMNB*

  CALL   # GET RR GIMBAL ANGLES IN PRESENT AND
   RRANGLES # ALTERNATE MODE.
  EXIT

  INHINT
  TC RRLIMCHK
  ADRES MODEA  # CONFIGURATION FOR CURRENT MODE.
  TC +3  # NOT IN CURRENT MODE
OKDESSM  INCR DESRET  # INCREMENT SAYS NO VEHICLE MANEUVER REQ.
  TC STARTDES # SHOW DESIGNATE REQUIRED
  CS FLAGWRD8
  MASK SURFFBIT # CHECK IF ON LUNAR SURFACE (SURFFLAG=P22F)
  EXTEND
  BZF NORDSTAL # BRANCH -- YES -- CANNOT DESIGNATE IN MODE 2
  TC TRYSWS

LUNDESCH CS FLAGWRD8 # OVERFLOW RETURN FROM RRANGLES
  MASK SURFFBIT # CHECK IF ON LUNAR SURFACE
  EXTEND
  BZF NORDSTAL # BRANCH -- YES -- RETURN TO CALLER -- ALARM 527
  CA STATE
  MASK RNDVZBIT
  CCS A  # TEST RNDVZFLG
  TC NODESSM  # NOT ON MOON -- CALL FOR ATTITUDE MANEUVER
  TCF ENDOFJOB # ... BUT NOT IN R29.

# Page 540
# PROGRAM NAME:  STARTDES
#
# FUNCTIONAL DESCRIPTION:
#
# STARTDES IS ENTERED WHEN WE ARE READY TO BEGIN DESIGNATION.
# BIT 14 OF RADMODES IS ALREADY SET IF A REMODE IS REQUIRED.
# AT THIS TIME, THE RR ANTENNA MAY BE IN A REPOSITON
# OPERATION.  IN THIS CASE, IF A REMODE IS REQUIRED IT MAY HAVE
# ALREADY BEGUN BUT IN ANY CASE THE REPOSITION WILL BE INTERRUPTED.
# OTHERWISE, THE REPOSITION WILL BE COMPLETED BEFORE 2-AXIS
# DESIGNATION BEGINS.  INITIALLY DESCOUNT IS SET = 60 TO INDICATE
# THAT 30 SECONDS WILL BE ALLOWED FOR THE RR DATA GOOD INBIT
# (CHAN 33 BIT 4) IF LOCK-ON IS DESIRED (STATE BIT 5).  BIT 10
# OF RADMODES IS SET TO SHOW THAT A DESIGNATE IS REQUIRED.
# THE REPOSITON FLAG (RADMODES BIT 11) IS CHECKED.  IF SET,
# THE PROGRAM EXITS TO L+3 OF THE CALLING PROGRAM (SEE RRDESSM
# AND RRDESNB).  THE PROGRAM WILL BEGIN DESIGNATING TO THE DESIRED
# ANGLES FOLLOWING THE REPOSITON OR REMODE IF ONE WAS
# REQUESTED.  IF THE REPOSITON FLAG IS NOT SET, SETRRECR IS CALLED
# WITH SETS THE RR ERROR COUNTER ENABLE BIT (CHAN 12 BIT 2)
#  AND SETS LASTYCMD AND LASTXCMD = 0 TO INDICATE THE
# DIFFERENCE BETWEEN THE PRESENT AND DESIRED STATE OF THE ERROR
# COUNTERS.  A 20 MILLISECOND WAITLIST CALL IS SET FOR BEGDES
# AFTER WHICH THE PROGRAM EXITS TO L+3 OF TEH CALLING PROGRAM.
#
# CALLING SEQUENCE:
#
# FROM RRDESSM AND RRDESNB WHEN ANGLES WITHIN LIMITS.
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RADMODES, (SEE DODES)
#
# SUBROUTINES CALLED
#
# SETRRECR, WAITLIST
#
# JOBS OR TASKS INITIATED:
#
# BEGDES
#
# ALARMS:  NONE
#
# EXIT: L+3 OF CALLING PROGRAM (SEE RRDESSM)
# L+2 OF CALLING PROGRAM (SEE RRDESNB)

STARTDES INCR DESRET
  CS RADMODES
  MASK DESIGBIT
  ADS RADMODES
  MASK REPOSBIT # SEE IF REPOSITIONING IN PROGRESS.
  CCS A
  TCF DESRETRN # ECTR ALREADY SET UP.

  TC SETRRECR # SET UP ERROR COUNTERS.
# Page 541
  CAF TWO
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR BEGDES

DESRETRN CA RADCADR  # FIRST PASS THRU DESIGNATE
  EXTEND
  BZF DESRTRN  # YES SET EXIT
  TC ENDOFJOB # NO
DESRTRN  RELINT
  INCR DESRET
  CA DESRET
  TCF BANKJUMP

NORDSTAL CAF ZERO  # ZERO RADCADR TO WIPE OUT ANYONE
  TS RADCADR  # WAITING IN RADSTALL SINCE WE ARE NOW
  TCF DESRTRN  # RETURNING TO P20 AND MAY DO NEW RADSTALL

# Page 542
# SEE IF RRDESSM CAN BE ACCOMPLISHED AFTER A REMODE.

TRYSWS  TC RMODINV  # (NOTE RUPT INHIBIT)
  TC RRLIMCHK # TRY DIFFERENT MODE.
  ADRES MODEB
  TCF NODESSM  # VEHICLE MANEUVER REQUIRED

  TC RMODINV  # RESET BIT12
  CAF REMODBIT # SET FLAG FOR REMODE.
  ADS RADMODES

  TCF OKDESSM

NODESSM  TC RMODINV  # RE-INVERT MODE AND RETURN
  INCR  DESRET  # TO CALLER +2
  TCF NORDSTAL

MAXTRYS  DEC 60

# Page 543
# DESIGNATE TO SPECIFIC RR GIMBAL ANGLES (INDEPENDENT OF VEHICLE MOTION).  ENTER WITH DESIRED ANGLES IN
# TANG AND TANG +1.

RRDESNB  TC MAKECADR
  TS DESRET

  TC DOWNFLAG # RESET FLAG TO PREVENT DODES FROM GOING
  ADRES LOSCMFLG # BACK TO R21
  CA MAXTRYS  # SET TIME LIMIT COUNTER
  TS DESCOUNT # FOR DESIGNATE
  INHINT   # SEE IF CURRENT MODE OK.
  TC RRLIMNB  # DO SPECIAL V41 LIMIT CHECK
  ADRES TANG
  TCF TRYSWN  # SEE IF IN OTHER MODE.

OKDESNB  RELINT
  EXTEND
  DCA TANG
  DXCH TANGNB
  TC INTPRET

  CALL   # GET LOS IN NB COORDS.
   RRNB
  STORE RRTARGET

  SET EXIT
   RRNBSW

  INHINT
  TCF STARTDES +1
TRYSWN  TC RMODINV  # SEE IF OTHER MODE WILL DO.
  TC RRLIMNB  # DO SPECIAL V41 LIMIT CHECK
  ADRES TANG
  TCF NODESNB  # NOT POSSIBLE.

  TC RMODINV
  CAF REMODBIT # CALL FOR REMODE.
  ADS RADMODES
  TCF OKDESNB

NODESNB  TC RMODINV  # REINVERT MODE BIT.
  TC ALARM  # BAD INPUT ANGLES.
  OCT 502
  TC CLRADMOD
  TC ENDOFJOB # AVOID 503 ALARM.

RRLIMNB  INDEX Q  # THIS ROUTINE IS IDENTICAL TO RRLIMCHK
  CAF 0  # EXCEPT THAT THE MODE 1 SHAFT LOWER
  INCR Q  # LIMIT IS -85 INSTEAD OF -70 DEGREES
  EXTEND
# Page 544
  INDEX A  # READ GIMBAL ANGLES INTO ITEMP STORAGE
  DCA 0
  DXCH ITEMP1
  LXCH Q  # L(CALLER +2) TO L

  CAF ANTENBIT # SEE WHICH MODE RR IS IN
  MASK RADMODES
  CCS A
  TCF MODE2CHK # MODE 2 CAN USE RRLIMCHK CODING
  CA ITEMP1
  TC MAGSUB  # MODE 1 IS DEFINED AS
  DEC -.30555  # 1  ABS(T) L 55 DEGS
  TC L  # 2  SHAFT LIMITS AT +59, -85 DEGS

  CA ITEMP2  # LOAD SHAFT ANGLE
  EXTEND
  BZMF NEGSHAFT # IF NEGATIVE SHAFT ANGLE, ADD 20.5 DEGS
  AD 5.5DEGS
SHAFTLIM TC MAGSUB
  DEC -.35833  # 64.5 DEGREES
  TC L  # NOT IN LIMITS
  TC RRLIMOK  # IN LIMITS
NEGSHAFT AD 20.5DEGS # MAKE NEGATIVE SHAFT LIMIT -85 DEGREES
  TCF SHAFTLIM

20.5DEGS DEC .11389

# Page 545
# PROGRAM NAME:  BEGDES
#
# FUNCTIONAL DESCRIPTION:
#
# BEGDES CHECKS VARIOUS DESIGNATE REQUESTS AND REQUESTS THE
# ACTUAL RR DESIGNATION.  INITIALLY A CHECK IS MADE TO SEE IF A
#  REMODE (RADMODES BIT 14) IS REQUESTED OR IN PROGRESS.  IF SO,
# CONTROL IS TRANFERRED TO STDESIG AFTER ROUTINE REMODE IS
# EXECUTED.  IF NO REMODE, STDESIG IS IMMEDIATELY CALLED WHERE
# FIRST THE REPOSITION FLAG (RADMODES BIT 11) IS CHECKED.  IF
# PRESENT, THE DESIGNATE FLAG (RADMODES BIT 10) IS REMOVED
# AFTER WHICH THE PROGRAM EXITS TO RDBADEND.  IF THE REPOSITION
# FLAG IS NOT PRESET, THE CONTINUOUS DESIGNATE FLAG (RADMODES
# BIT 15) IS CHECKED.  IF PRESENT, AN EXECUTIVE CALL IS IMMEDIATELY
# MADE FOR DODES AFTER WHICH A .5 SECOND WAIT IS INITIATED BEFORE
# REPEATING AT STDESIG.  IF THE RR SEARCH ROUTINE (LRS24.1) IS DESIGNATING
# TO A NEW POINT (NEWPTFLG SET) THE CURRENT DESIGNATE TASK IS TERMINATED.
# IF CONTINUOUS DESIGNATE IS NOT WANTED, THE DESIGNATE FLAG (RADMODES
# BIT 10) IS CHECKED.  IF NOT PRESENT, THE PROGRAM EXITS TO ENDRADAR TO
# CHECK RR CDU FAIL BEFORE RETURNING TO THE CALLING PROGRAM.  IF DESIGNATE
# IS STILL REQUIRED, DESCOUNT IS CHECKED TO SEE IF THE 30 SECONDS HAS
# EXPIRED BEFORE RECEIVING THE RR DATA GOOD (CHAN 33 BIT 4)
# SIGNAL.  IF OUT OF TIME, PROGRAM ALARM 00503 IS REQUESTED, THE
# RR AUTO TRACKER ENABLE AND RR ERROR COUNTER ENABLE
# (CHAN 12 BITS 14,2) BITS REMOVED, AND THE DESIGNATE FLAG
# (RADMODES BIT 10) REMOVED BEFORE EEXITING TO RDBADEND.  IF
# TIME HAS NOT EXPIRED, DESCOUNT IS DECREMENTED, THE
# EXECUTIVE CALL MADE FOR DODES, AND A .5 SECOND WAIT INITIATED
# BEFORE REPEATING THIS PROCEDURE AT STDESIG.
#
# CALLING SEQUENCE:
#
# WAITLIST CALL FROM STARTDES
# TCF BEGDES FROM DORREPOS
# TC STDESIG RETURNING, FROM REMODE
#
# ERASABLE INITIALIZATION REQUIRED:
#
# DESCOUNT, FINDVAC
#
# JOBS OR TASKS INITIATED:  DODES
#
# ALARMS:  PROGRAM ALARM 00503 (30 SECONDS HAVE EXPIRED) WITH NO RR DATA
# GOOD (CHAN 33 BIT 4) RECEIVED WHEN LOCK-ON (STATE BIT 5) WAS REQUESTED.
#
# EXIT:   TASKOVER (SEARCH PATTERN DESIGNATING TO NEW POINT)
#  ENDRADAR (NO DESIGNATE -- RADMODES BIT 10)
# RDBADEND (REPOSITION OR 30 SECONDS EXPIRED)

BEGDES  CS RADMODES
# Page 546
  MASK REMODBIT
  CCS A
  TC STDESIG
  TC REMODE
DESLOOP  TC FIXDELAY # 2 SAMPLES PER SECOND.
  DEC 50

STDESIG  CAF REPOSBIT
  MASK RADMODES # SEE IF GIMBAL LIMIT MONITOR HAS FOUND US
  CCS A  # OUT OF BOUNDS.  IF SO, THIS BIT SHOWS A
  TCF BADDES  # REPOSITION TO BE IN PROGRESS.

  CCS RADMODES # SEE IF CONTINUOUS DESIGNATE WANTED.
  TCF +3  # IF SO, DON'T CHECK BIT 10 TO SEE IF IN
  TCF +2  # LIMITS BUT GO RIGHT TO FINDVAC ENTRY.
  TCF MOREDES +1

  CS RADMODES # IF NON-CONTINUOUS, SEE IF END OF
  MASK DESIGBIT # PROBLEM (DATA GOOD IF LOCK-ON WANTED OR
  CCS A  # WITHIN LIMITS IF NOT).  IF SO, EXIT AFTER
  TCF ENDRADAR # CHECKING RR CDU FAIL.

STDESIG1 CCS DESCOUNT # SEE IF THE TIME LIMIT HAS EXPIRED
  TCF MOREDES

  CS B14+B2  # IF OUT OF TIME, REMOVE ECR ENABLE + TRKR
  EXTEND
  WAND CHAN12
BADDES  CS DESIGBIT # REMOVE DESIGNATE FLAG
  MASK RADMODES
  TS RADMODES
  TCF RDBADEND

MOREDES  TS DESCOUNT
  CAF PRIO26  # UPDATE GYRO TORQUE COMMANDS.
  TC FINDVAC
  EBANK= LOSCOUNT
  2CADR DODES

  TCF DESLOOP

B14+B2  OCT 20002

# Page 547
# PROGRAM NAME:  DODES
#
# FUNCTIONAL DESCRIPTION:
#
# DODES CALCULATES AND REQUESTS ISSUANCE OF RR GYRO TORQUE
# COMMANDS.  INITIALLY THE CURRENT RR CDU ANGLES ARE STORED AND
# THE LOS HALF-UNIT VECTOR TRANSFORMED FROM STABLE MEMBER TO
# NAVIGATION BASE COORDINATES VIA SMNB IF NECESSARY.  THE
# SHAFT AND TRUNNION COMMANDS ARE THEN CALCULATED AS FOLLOWS:
# + SHAFT = LOS . (COS(S), 0, -SIN(S))  (DOT PRODUCT)
# - TRUNNION = LOS . (SIN(T)SIN(S), COS(T), SIN(T)COS(S))
# THE SIGN OF THE SHAFT COMMAND IS THEN REVERSED IF IN MODE 2
# (RADMODES BIT 12) BECAUSE A RELAY IN THE RR REVERSES THE
# POLARITY OF THE COMMAND.  AT RRSCALUP EACH COMMAND IS
# SCALED AND IF EITHER, OR BOTH, OF THE COMMANDS IS GREATER THAN
# .5 DEGREES, MPAC +1 IS SET POSITIVE.  IF A CONTINUOUS DESIGNATE
# (RADMODES BIT 15) IS DESIRED AND THE SEARCH ROUTINE IS NOT OPERATING,
# THE RR AUTO TRACKER ENABLE BIT (CHAN 12 BIT 14) IS CLEARED AND RROUT
# CALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITION (RADMODES BIT 11)
# IS IN PROGRESS.  IF A CONTINUOUS DESIGNATE AND THE SEARCH ROUTINE IS
# OPERATING (SRCHOPT FLAT SET) THE TRACK ENABLE IS NOT CLEARED.  IF NO
# CONTINUOUS DESIGNATE AND BOTH COMMANDS ARE NOT LESS THAN .5 DEGREES AS
# INDICATED BY MPAC +1, THE RR AUTO TRACKER ENABLE BIT (CHAN 12 BIT 14) IS
#  CLEARED AND RROUT CALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITON
# (RADMODES BIT 11) IS IN PROGRESS.  IF BOTH COMMANDS ARE LESS THAN .5
# DEGREES AS INDICATED BY MPAC+1, THE RR AUTO TRACKER ENABLE BIT
# (CHAN 12 BIT 14) IS CLEARED AND RROUT CALLED TO PUT OUT THE
# COMMANDS PROVIDED NO REPOSITION (RADMODES BIT 11) IS IN
# PROGRESS.  IF BOTH COMMANDS ARE LESS THAN .5 DEGREES, THE
# LOCK-ON FLAG (STATE BIT 5) IS CHECKED.  IF NOT PRESETN, THE
# DESIGNATE FLAG (RADMODES BIT 10) IS CLEARED, AND ENDOFJOB
# CALLED.  IF LOCK-ON IS DESIRED, THE RR AUTO TRACKER (CHAN 12
# BIT 14) IS ENABLED FOLLOWED BY A CHECK OF THE RECEIPT OF THE
# RR DATA GOOD (CHAN 33 BIT 4) SIGNAL.  IF RR DATA GOOD
# PRESENT, THE DESIGNATE FLAG (RADMODES BIT 10) IS CLEARED,
#  THE RR ERROR COUNTER ENABLE BIT (CHAN 12 BIT 2) IS CLEARED,
# AND ENDOFJOB CALLED.  IF RR DATA GOOD IS NOT PRESENT, RROUT
# IS CALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITION
# (RADMODES BIT 11) IS IN PROGRESS AFTER WHICH THE JOB IS TERMINATED
# VIA ENDOFJOB.
#
# CALLING SEQUENCE:
#
# EXECUTIVE CALL EVERY .5 SECONDS FROM BEGDES.
#
# ERASABLE INITIALIZATION REQUIRED:
#
# RRTARGET (HALF-UNIT LOS VECTOR IN EITHER SM OR NB COORDINATES),
# LOKONSW (STATE BIT 5), RRNBSW (STATE BIT 6), RADMODES
#
# SUBROUTINES CALLED:
#
#  READCDUS, SMNB, CDULOGIC, MAGSUB, RROUT
# Page 548
#
# JOBS OR TASKS INITIATED:
#
# NONE
#
# ALARMS:  NONE
#
# EXIT:  ENDOFJOB (ALWAYS)

DODES  EXTEND
  DCA CDUT
  DXCH TANG

  TC INTPRET

  SETPD VLOAD
   0
   RRTARGET
  BON VXSC
   RRNBSW
   DONBRD  # TARGET IN NAV-BASE COORDINATES
   MLOSV  # MULTIPLY UNIT LOS BY MAGNITUDE
  VSL1 PDVL
   LOSVEL
  VXSC VAD  # ADD ONE SECOND RELATIVE VELOCITY TO LOS
   MCTOMS
  UNIT CALL
   CDUTRIG
  CALL
   *SMNB*

DONBRD  STODL 32D
   TANG +1
  RTB PUSH  # SHAFT COMMAND = V(32D).(COS(S), 0,
   CDULOGIC # -SIN(S)).
  SIN PDDL  # SIN(S) TO 0 AND COS(S) TO 2.
  COS PUSH
  DMP PDDL
   32D
   36D
  DMP BDSU
   0
  STADR
  STORE TANG +1  # SHAFT COMMAND

  SLOAD RTB
   TANG
   CDULOGIC
  PUSH COS  # COS(T) TO 4.
  PDDL SIN
  PUSH DMP  # SIN(T) TO 6.
   2
# Page 549
  SL1 PDDL  # DEFINE VECTOR U = [SIN(T)SIN(S)]
   4  # [   COS(T)   ]
  PDDL DMP  # [SIN(T)COS(S)]
   6
   0
  SL1 VDEF
  DOT EXIT  # DOT U WITH LOS TO GET TRUNNION COMMAND.
   32D

# Page 550
# AT THIS POINT WE HAVE A ROTATION VECTOR IN DISH AXES LYING IN THE TS PLANE.  CONVERT THIS TO A
# COMMANDED RATE AND ENABLE THE TRACKER IF WE ARE WITHIN .5 DEGREES OF THE TARGET.

  CS MPAC  # DOT WAS NEGATIVE OF DESREG ANGLE.
  EXTEND
  MP RDESGAIN # SCALING ON INPUT ANGLE WAS 4 RADIANS.
  TS TANG  # TRUNNION COMMAND.
  CS RADMODES # A RELAY IN THE RR REVERSES POLARITY OF
  MASK BIT12  # THE SHAFT COMMANDS IN MODE 2 SO THAT A
  EXTEND   # POSITIVE TORQUE APPLIED TO THE SHAFT
  BZF +3  # GYRO CAUSES A POSITIVE CHANGE IN THE
  CA TANG +1  # SHAFT ANGLE.  COMPENSATE FOR THIS SWITCH
  TCF +2  # BY CHANGING THE POLARITY OF OUR COMMAND.
 +3  CS TANG +1
  EXTEND
  MP RDESGAIN # SCALING ON INPUT ANGLE WAS 4 RADIANS.
  TS TANG +1  # SHAFT COMMAND FOR RROUT
  TC INTPRET

  DLOAD DMP
   2  # COS(S).
   4  # COS(T).
  SL1 PDDL  # Z COMPONENT OF URR.
  DCOMP PDDL  # Y COMPONENT = -SIN(T)
   0  # SIN(S).
  DMP SL1
   4  # COS(T).
  VDEF BON  # FORM URR IN NB AXES.
   RRNBSW  # BYPASS NBSM CONVERSION IN VERB 41
   +3
  CALL
   *NBSM*  # GET URR IN SM AXES.
  DOT EXIT
   RRTARGET # GET COSIN OF ANGLE BETWEEN RR AND LOS

  EXTEND
  DCS COS1/2DG
  DAS MPAC  # DIFFERENCE OF COSINES, SCALED B-2.
  CCS MPAC
  CA ZERO  # IF COS ERROR BIGGER, ERROR IS SMALLER
  TCF +2
  CA ONE
  TS MPAC +1  # ZERO IF RR IS POINTED OK, ONE IF NOT.
# Page 551
# SEE IF TRACKER SHOULD BE ENABLED OR DISABLED.

  CCS RADMODES # IF CONTINUOUS DESIGNATE WANTED, PUT OUT
  TCF SIGNLCHK # COMMANDS WITHOUT CHECKING MAGNITUDE OF
  TCF SIGNLCHK # ERROR SIGNALS
  TCF DORROUT
SIGNLCHK CCS MPAC +1  # SEE IF BOTH AXES WERE WITHIN .5 DEGS.
  TCF DGOODCHK
  CS STATE  # IF WITHIN LIMITS AND NO LOCK-ON WANTED,
  MASK LOKONBIT # PROBLEM IS FINISHED.
  CCS A
  TCF RRDESDUN

  CAF BIT14  # ENABLE THE TRACKER
  EXTEND
  WOR CHAN12

DGOODCHK CAF BIT4  # SEE IF DATA GOOD RECEIVED YET
  EXTEND
  RAND CHAN33
  CCS A
  TCF DORROUT

RRDESDUN CS BIT10  # WHEN PROBLEM DONE, REMOVE BIT 10 SO NEXT
  MASK RADMODES # WAITLIST TASK WE WILL GO TO RGOODEND.
  INHINT
  TS  RADMODES

  TC DOWNFLAG # RESET LOSCMFLG TO PREENT A
  ADRES  LOSCMFLG # RECOMPUTATION OF LOS AFTER DATA GOOD
  CS BIT2  # TURN OFF ENABLE RR ERROR COUNTER
  EXTEND
  WAND CHAN12
  TCF ENDOFJOB # WITH ECTR DISABLED.

DORROUT  CA FLAGWRD2 # IF BOTH LOSCMFLAG AND SEARCH FLAG ARE
  MASK BIT12,14 # ZERO, BYPASS VELOCITY ADJUSTMENT TO LOS
  EXTEND
  BZF NOTP20
  TC INTPRET
  VLOAD VXSC  # MULTIPLY UNIT LOS BY MAGNITUDE
   RRTARGET
   MLOSV
  VSL1 PUSH
  VLOAD VXSC  # ADD .5 SEC. OF VELOCITY
   LOSVEL  # TO LOS VECTOR
   MCTOMS
  VSR1 VAD
  UNIT
  STODL RRTARGET # STORE VELOCITY-CORRECTED LOS (UNIT)
# Page 552
   36D
  STORE MLOSV  # AND STORE MAGNITUDE
  EXIT
NOTP20  INHINT
  CS RADMODES # PUT OUT COMMAND UNLESS MONITOR
  MASK REPOSBIT # REPOSITION HAS TAKEN OVER
  CCS A
  TC RROUT

  CA FLAGWRD2
  MASK LOSCMBIT # IF LOSCMFLG NOT SET, DON'T TEST
  EXTEND   # LOS COUNTER
  BZF ENDOFJOB
  CCS LOSCOUNT # TEST LOS COUNTER TO SEE IF TIME TO GET
  TC DODESEND # A NEW LOS
  INHINT
  TC KILLTASK # YES -- KILL TASK WHICH SCHEDULES DODES
  CADR DESLOOP +2
  RELINT
  CCS NEWJOB
  TC CHANG1
  TC BANKCALL
  CADR R21LEM2

DODESEND TS LOSCOUNT
  TC ENDOFJOB

RDESGAIN DEC .53624  # TRIES TO NULL .5 ERROR IN .5 SEC.
BIT12,14 EQUALS PRIO24  # OCT 24000
COS1/2DG 2DEC .999961923 B-2 # COSINE OF 0.5 DEGREES.
MCTOMS  2DEC 100 B-13

# Page 553
# RADAR READ INITIALIZATION
#
# RADAR DATA READ BY A BANKCALL FOR THE APPROPRIATE LEAD-IN BELOW.

LRALT  TC INITREAD -1 # ONE SAMPLE PER READING.
ALLREAD  OCT 17

LRVELZ  TC INITREAD
  OCT 16

LRVELY  TC INITREAD
  OCT 15

LRVELX  TC INITREAD
  OCT 14

RRRDOT  TC INITREAD -1
  OCT 12

RRRANGE  TC INITREAD -1
  OCT 11

# LRVEL IS THE ENTRY TO THE LR VELOCITY READ ROUTINE WHEN 5 SAMPLES ARE
# WANTED.  ENTER WITH C(A)= 0,2,4 FOR LRVELZ,LRVELY,LRVELX RESP.

LRVEL  TS TIMEHOLD # STORE VBEAM INDEX HERE MOMENTARILY
  CAF FIVE  # SPECIFY FIVE SAMPLES
  INDEX TIMEHOLD
  TCF LRVELZ

# Page 554
 -1  CAF ONE  # ENTRY TO TAKE ONLY 1 SAMPLE
INITREAD INHINT

  TS TIMEHOLD # GET DT OF MIDPOINT OF NOMINAL SAMPLING
  EXTEND   # INTERVAL (ASSUMES NO BAD SAMPLES WILL BE
  MP BIT3  # ENCOUNTERED).
  DXCH TIMEHOLD

  CCS A
  TS NSAMP
  AD ONE
# INSERT FOLLOWING INSTRUCTION TO GET 2N TRIES FOR N SAMPLES.
# DOUBLE
  TS SAMPLIM

  CAF DGBITS  # READ CURRENT VALUE OF DATA GOOD BITS.
  EXTEND
  RAND CHAN33
  TS OLDATAGD

  CS ALLREAD
  EXTEND
  WAND CHAN13  # REMOVE ALL RADAR BITS

  INDEX Q
  CAF 0
  EXTEND
  WOR CHAN13  # SET NEW RADAR BITS

  EXTEND
  DCA TIME2
  DAS TIMEHOLD # TIME OF NOMINAL MIDPOINT

  CAF ZERO
  TS L
  DXCH SAMPLSUM
  TCF ROADBACK

DGBITS  OCT 230

# Page 555
# RADAR RUPT READER
#
# THIS ROUTINE STARTS FROM A RADARUPT.  IT READS THE DATA & LOTS MORE.

  SETLOC RADARUPT
  BANK

  COUNT* $$/RRUPT
RADAREAD EXTEND   # MUST SAVE SBANK BECAUSE OF RUPT EXITS
  ROR SUPERBNK # VIA TASKOVER (BADEND OR GOODEND).
  TS BANKRUPT
  EXTEND
  QXCH QRUPT

  CAF SEVEN
  EXTEND
  RAND CHAN13
  TS DNINDEX
  EXTEND   # IF RADAR SELECT BITS ZERO, DO NOT STORE
  BZF TRYCOUNT # DATA FOR DOWNLIST (ERASABLE PROBLEMS)
  CA RNRAD
  INDEX DNINDEX
  TS DNRRANGE -1
TRYCOUNT CCS SAMPLIM
  TCF PLENTY
  TCF NOMORE
  TC ALARM
  OCT 520
  TC RESUME

NOMORE  CA FLGWRD11 # IS LRBYPASS SET?
  MASK LRBYBIT
  EXTEND
  BZF BADRAD  # NO.  R12 IS ON -- BYPASS 521 ALARM.

  CS FLAGWRD3 # CHECK R04FLAG.
  MASK R04FLBIT # IF 1, R04 IS RUNNING.  DO NOT ALARM
  EXTEND
  BZF BADRAD

  TC ALARM  # P20 WANTS THE ALARM.
  OCT 521
BADRAD  CS ONE
  TS SAMPLIM
  TC RDBADEND -2
PLENTY  TS SAMPLIM
  CAF BIT3
  EXTEND
  RAND CHAN13  # TO FIND OUT WHICH RADAR
  EXTEND
# Page 556
  BZF RENDRAD

  TC R77CHECK # R77 QUITS HERE.
LRPOSCHK CA RADMODES # SEE IF LR IN DESIRED POSITION
  EXTEND
  RXOR CHAN33
  MASK BIT6
  EXTEND
  BZF VELCHK

  TC ALARM
  OCT 522
  TC BADRAD

VELCHK  CAF BIN3  # = 00003 OCT
  EXTEND
  RXOR CHAN13  # RESET ACTIVITY BIT
  MASK BIN3
  EXTEND
  BZF LRHEIGHT # TAKE A LR RANGE READING

  CAF POSMAX
  MASK RNRAD
  AD LVELBIAS
  TS L
  CAE RNRAD
  DOUBLE
  MASK BIT1
  DXCH ITEMP3

  CAF BIT8  # DATA GOOD ISN'T CHECKED UNTIL AFTER READ-
  TC DGCHECK  # ING DATA SO SOME RADAR TESTS WILL WORK
     # INDEPENDENT OF DATA GOOD.

  CCS NSAMP
  TC NOEND
GOODRAD  CS ONE
  TS SAMPLIM
  CS ITEMP1  # WHEN ENOUGH GOOD DATA HAS BEEN GATHERED,
  MASK RADMODES # RESET DATA FAIL FLAGS FOR SETTRKF.
  TS RADMODES
  TC RADLITES # LAMPS MAY GO OFF IF DATA JUST GOOD.
  TC RGOODEND -2

NOEND  TS NSAMP
RESAMPLE CCS SAMPLIM  # SEE IF ANY MORE TRIES SHOULD BE MADE.
  TCF +2
  TCF DATAFAIL # N SAMPLES NOT AVAILABLE.
  CAF BIT4  # RESET ACTIVITY BIT.
  EXTEND
# Page 557
  WOR CHAN13  # RESET ACTIVITY BIT
  TC RESUME


LRHEIGHT CAF BIT5
  TS ITEMP1  # (POSITION OF DATA GOOD BIT IN CHAN 33)

  CAF BIT9
  TC SCALECHK -1

RENDRAD  CAF REPOSBIT # MAKE SURE ANTENNA HAS NOT GONE OUT OF
  MASK RADMODES # LIMITS.
  CCS A
  TCF BADRAD

  CS RADMODES # BE SURE RR CDU HASN'T FAILED.
  MASK RCDUFBIT
  CCS A
  TCF BADRAD

  CAF BIT4  # SEE IF DATA HAS BEEN GOOD.
  TS ITEMP1  # (POSITION OF DATA GOOD BIT IN CHAN 33)

  CAF BIT1  # SEE IF RR RDOT.
  EXTEND
  RAND CHAN13
  TS Q  # FOR LATER TESTING.
  CCS A
  TCF +2
  TCF RADIN  # NO SCALE CHECK FOR RR RDOT.
  CAF BIT3
  TS L

SCALECHK EXTEND
  RAND CHAN33  # SCALE STATUS NOW
  XCH L
  MASK RADMODES # SCALE STATUS BEFORE
  EXTEND
  RXOR LCHAN  # SEE IF THEY DIFFER
  CCS A
  TC SCALCHNG # THEY DIFFER.

RADIN  CAF POSMAX
  MASK RNRAD
  TS ITEMP4

  CAE RNRAD
  DOUBLE
  MASK BIT1
  TS ITEMP3
# Page 558
  CCS Q  # SEE IF RR RDOT.
  TCF SCALADJ  # NO, BUT SCALE CHANGING MAY BE NEEDED.

  EXTEND   # IF RR RANGE RATE, THROW OUT BIAS
  DCS RDOTBIAS
DASAMPL  DAS ITEMP3
DGCHECK2 CA ITEMP1  # SEE THAT DATA HAS BEEN GOOD BEFORE AND
  TC DGCHECK +1 # AFTER TAKING SAMPLE.
  TC GOODRAD

SCALCHNG LXCH RADMODES
  AD BIT1
  EXTEND
  RXOR LCHAN
  TS RADMODES
  CAF DGBITS  # UPDATE LAST VALUE OF DATA GOOD BITS.
  EXTEND
  RAND CHAN33
  TS OLDATAGD
  TC UPFLAG  # SET RNGSCFLG
  ADRES RNGSCFLG # FOR LRS24.1
  TCF BADRAD

# R77 MUST IGNORE DATA FAILS SO AS NOT TO DISTURB THE ASTRONAUT.

R77CHECK CS FLAGWRD5
  MASK R77FLBIT
  CCS A
  TC Q  # NOT R77
  CS BITS5,8  # UPDATE LR DATA GOOD BITS IN RADMODES
  MASK RADMODES
  TS L
  CA BITS5,8
  EXTEND
  RAND CHAN33
  AD L
  TS RADMODES
  TC RGOODEND -2
BITS5,8  OCT 220

# Page 559
# THE FOLLOWING ROUTINE INCORPORATES RR RANGE AND LR ALT SCALE INFORMATION AND LEAVES DATA AT LO SCALE.

SCALADJ  CCS L  # L HAS SCALE INBIT FOR THIS RADAR.
  TCF +2  # ON HIGH SCALE.
  TCF DGCHECK2

  CA DNINDEX
  MASK  BIT3
  CCS A
  TCF LRSCK

  DXCH ITEMP3
  DDOUBL
  DDOUBL
  DDOUBL
  DXCH ITEMP3

  TCF DGCHECK2

LRSCK  CCS ITEMP3
  TCF +11
  CS ITEMP4
  AD HISCALIM
  EXTEND
  BZMF +5

  CS FLGWRD11
  MASK SCABBIT
  ADS FLGWRD11
  TCF +4

  CS SCABBIT
  MASK FLGWRD11
  TS FLGWRD11

  EXTEND
  DCA ITEMP3
  DDOUBL
  DDOUBL
  TCF DASAMPL

HISCALIM DEC 460  # 2481.7 FT ******************************
# Page 560
DGCHECK  TS ITEMP1  # UPDATE DATA GOOD BIT IN OLDATAGD AND
  EXTEND   # MAKE SURE IT WAS ON BEFORE AND AFTER THE
  RAND CHAN33  # SAMPLE WAS TAKEN BEFORE RETURNING.  IF
  TS L  # NOT, GOES TO RESAMPLE TO TRY AGAIN.  IF
  CS ITEMP1  # MAX NUMBER OF TRIES HAS BEEN REACHED,
  MASK OLDATAGD # THE BIT CORRESPONDING TO THE DATA GOOD
  AD L  # WHICH FAILED TO APPEAR IS IN ITEMP1 AND
  XCH OLDATAGD # CAN BE USED TO SET RADMODES WHICH VIA
  MASK ITEMP1  # SETTRKF SETS THE TRACKER FAIL LAMP.
  AD L
  CCS A  # SHOULD BOTH BE ZERO.
  TC RESAMPLE
  DXCH ITEMP3  # IF DATA GOOD BEFORE AND AFTER, ADD TO
  DAS SAMPLSUM # ACCUMULATION.
  TC Q

DATAFAIL CS ITEMP1  # IN THE ABOVE CASE, SET RADMODES BIT
  MASK RADMODES # SHOWING SOME RADAR DATA FAILED.
  AD ITEMP1
  TS RADMODES

  DXCH ITEMP3  # IF WE HAVE BEEN UNABLE TO GATHER N
  DXCH SAMPLSUM # SAMPLES, USE LAST ONE ONLY.
  TC RADLITES
  TCF NOMORE
# Page 561
# THIS ROUTINE CHANGES THE LR POSITION, AND CHECKS THAT IT GOT THERE.

  SETLOC P20S1
  BANK

  COUNT* $$/RSUB
LRPOS2  INHINT

  CS RADMODES
  MASK LRPOSBIT # SHOW DESIRED LR POSITION IS 2
  ADS RADMODES

  CAF BIT7
  EXTEND
  RAND CHAN33  # SEE IF ALREADY THERE.
  EXTEND
  BZF RADNOOP

  CAF BIT13
  EXTEND
  WOR CHAN12  # COMMAND TO POSITION 2
  CAF 6SECS  # START SCANNING FOR INBIT AFTER 7 SECS.
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR LRPOSCAN

  TC ROADBACK

LRPOSNXT TS SAMPLIM
  TC FIXDELAY # SCAN ONCE PER SECOND 15 TIMES MAX AFTER
  DEC 100  # INITIAL DELAY OF 7 SECONDS.

  CAF BIT7  # SEE IF LR POS2 IS ON
  EXTEND
  RAND CHAN33
  EXTEND
  BZF LASTLRDT # IF THERE, WAIT FINAL SECOND FOR BOUNCE.

  CCS SAMPLIM  # SEE IF MAX TIME UP.
  TCF LRPOSNXT

  CS BIT13  # IF TIME UP, DISABLE COMMAND AND ALARM.
  EXTEND
  WAND CHAN12
  TCF RDBADEND

RADNOOP  CAF ONE  # NO FURTHER ACTION REQUESTED.
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR RGOODEND
# Page 562
  TC ROADBACK

LASTLRDT CA 2SECS  # WAIT TWO SECONDS AFTER RECEIPT OF INBIT
  TC VARDELAY # TO WAIT FOR ANTENNA BOUNCE TO DIE OUT.

  CS BIT13  # REMOVE COMMAND
  EXTEND
  WAND CHAN12
  TCF RGOODEND

LRPOSCAN CAF FOURTEEN # SET UP FOR 15 SAMPLES.
  TCF LRPOSNXT
6SECS  DEC 600
# Page 563
# SEQUENCES TO TERMINATE RR OPERATIONS.

ENDRADAR CAF RCDUFBIT # PROLOG TO CHECK RR CDU FAIL BEFORE END.
  MASK RADMODES
  CCS A
  TCF RGOODEND
  TCF RDBADEND
 -2  CS ZERO  # RGOODEND WHEN NOT UNDER WAITLIST CONTROL
  TS RUPTAGN

RGOODEND CAF TWO
  TC POSTJUMP
  CADR GOODEND

 -2  CS ZERO  # RDBADEND WHEN NOT UNDER WIATLIST.
  TS RUPTAGN
RDBADEND CAF TWO
  TC POSTJUMP
  CADR BADEND

BIN3  EQUALS THREE

# Page 564
# PROGRAM NAME:  LPS20.1 VECTOR EXTRAPOLATION AND LOS COMPUTATION
# MOD. NO. 2 BY J.D. COYNE SDC DATE 12-7-66
#
# FUNCTIONAL DESCRPIPTION:
# 1) EXTRAPOLATE THE LEM AND CSM VECTORS IN ACCORDANCE WITH THE TIME REFERRED TO IN CALLER + 1.
# 2) COMPUTES THE LOS VECTOR TO THE CSM, CONVERTS IT TO STABLE MEMBER COORDINATES AND STORES IT IN RRTARGET.
# 3) COMPUTES THE MAGNITUDE OF TEH LOS VECTOR AND STORES IT IN MLOSV
#
# CALLING SEQUENCE: CALL
# LPS20.1
#
# SUBROUTINES CALLED:
# LEMPREC, CSMPREC
#
# NORMAL EXIT:  RETURN TO CALLER + 2.
#
# ERROR EXITS:  NONE
#
# ALARMS:  NONE
#
# OUTPUT:
# LOS VECTOR (HALF UNIT) IN SM COORDINATES STORED IN RRTARGET
# MAGNITUDE OF TEH LOS VECTOR (METERS SCALED B-29) STORED IN MSLOV
# RRNBSW CLEARED.
#
# INITIALIZED ERASABLE
# TDEC1 MUST CONTAIN THE TIME FOR EXTRAPOLATION
# SEE ORBITAL INTEGRATION ROUTINE
#
# DEBRIS:
# MPAC DESTROYED BY THE ROUTINE

  BANK 23
  SETLOC P20S
  BANK
# Page 565
  COUNT* $$/LPS20

LPS20.1  STQ BOFF
   LS21X
   LOSCMFLG # LOSCMFLG = 0 MEANS NOT CALLED BY R21
   LMINT  # SO CALL LEMCONIC TO GET LM STATE
  BON   # IF IN R21 AND ON LUNAR SURFACE
   SURFFLAG # DON'T CALL LEMCONIC
   CSMINT
LMINT  CALL
   LEMCONIC # EXTRAPOLATE LEM
  VLOAD
   RATT
  STOVL LMPOS  # SAVE LM POSITION B-29
   VATT
  STODL LMVEL  # SAVE LM VELOCITY B-7
   TAT
CSMINT  STCALL TDEC1
   CSMCONIC # EXTRAPOLATE CSM
  VLOAD VSU  # COMPUTE RELATIVE VELOCITY V(CSM) - V(LM)
   VATT
   LMVEL
  MXV VSL1
   REFSMMAT
  EXIT
  TC KILLTASK # KILL THE TASK WHICH CALLS DODES SINCE
  CADR DESLOOP +2 # STORING INTO ERASEABLES DODES USES
  TC INTPRET
  STOVL LOSVEL
   RATT
  VSU BOFF
   LMPOS
   RNDVZFLG
   NOTSHIFT
  BOVB
   TCDANZIG
  VSL
   9D
NOTSHIFT UNIT BOVB  # IF OVERFLOW, RANGE MUST BE GREATER
   526ALARM # THAN 400 N. M.
  MXV VSL1
   REFSMMAT # CONVERT TO STABLE MEMBER
  STODL RRTARGET
   36D  # SAVE MAGNITUDE OF LOS VECTOR FOR
  STORE MLOSV  # VELOCITY CORRECTION IN DESIGNATE
  CLRGO
   RRNBSW
   LS21X

# Page 566
# PROGRAM NAME:  LPS20.2  400 NM RANGE CHECK
# MOD. NO. 2 BY J.D. COYNE SDC DATE 12-7-66
#
# FUNCTIONAL DESCRIPTION:
# COMPARES THE MAGNITUDE OF THE LOS VECTOR TO 400 NM.
#
# CALLING SEQUENCE: CALL
# LPS20.2
#
# SUBROUTINES CALLED:  NONE
#
# NORMAL EXIT:  RETURN TO CALLER +1, MPAC EQ 0 (RANGE 400NM OR LESS.)
#
# ERROR EXITS:  RETURN TO CALLER +1, MPAC EQ 1 (RANGE GREATER THAN 400NM)
#
# ALARMS:  NONE
#
# OUTPUT:  NONE
#
# INITIALIZED ERASEABLE:
# PDL 36D MUST CONTAIN THE MAGNITUDE OF THE VECTOR
#
# DEBRIS:
# MPAC DESTROYED BY THIS ROUTINE

  SETLOC P20S1
  BANK
  COUNT* $$/LPS20

LPS20.2  DLOAD DSU
   MLOSV  # MAGNITUDE OF LOS
   FHNM  # OVER 400NM
  BPL
   TOFAR
  SLOAD RVQ
   ZERO/SP
TOFAR  SLOAD RVQ
   ONE/SP
ONE/SP  DEC 1
# Page 567
FHNM  2DEC 740800 B-20 # 400 NAUTICAL MILES IN METERS B-20

# Page 568
# PROGRAM NAME:  LRS22.1 (DATA READ SUBROUTINE 1)
# MOD. NO.: 1 BY: P. VOLANTE  SDC DATE:  11-15-66
#
# FUNCTIONAL DESCRIPTION:
# 1) READS RENDEZVOUS RADAR RANGE AND RANGE-RATE, TRUNNION AND SHAFT ANGLES, THREE CDU VALUES AND TIME.  CONVERTS THIS
# DATA AND LEAVES IT FOR THE MEASUREMENT INCORPORATION ROUTINE (LSR22.3).  CHECKS FOR THE RR DATA GOOD DISCRETE, FOR
# RR REPOSITION AND RR CDU FAIL
# 2) COMPARES RADAR LOS WITH LOS COMPUTED FROM STATE VECTORS TO SEE IF THEY ARE WITHIN THREE DEGREES
#
# CALLING SEQUENCE:  BANKCALL FOR LRS22.1
#
# SUBROUTINES CALLED:
# RRDOT LPS20.1
# RRRANGE BANKCALL
# RADSTALL CDULOGIC
# RRNB SMNB
#
# NORMAL EXIT:  RETURN TO CALLER+1 WITH MPAC SET TO +0
#
# ERROR EXITS:  RETURN TO CALLER+1 WITH ERROR CODE STORED IN MPAC AS FOLLOWS:
# 00001 -- ERROR EXIT 1 -- RR DATA NO GOOD (NO RR DATA GOOD DISCRETE OR RR CDU FAIL OR RR REPOSITION)
# 00002 -- ERROR EXIT 2 -- RR LOS NOT WITHIN THREE DEGREES OF LOS COMPUTED FROM STATE VECTORS
#
# ALARMS:  521 -- COULD NOT READ RADAR DATA (RR DATA GOOD DISCRETE NOT PRESENT BEFORE AND AFTER READING THE RADAR)
# (THIS ALARM IS ISSUED BY RADARREAD SUBROUTINE WHICH IS ENTERED FROM A RADARUPT)
#
# OUTPUT:  RRLOSVEC -- THE RR LINE-OF-SIGHT VECTOR (USED BY LRS22.2) -- A HALF-UNIT VECTOR
#  RM -- THE RR RANGE READING (TO THE CSM) DP, IN METERS SCALED BY B-29 (USED BY LRS22.2 AND LRS22.3)
#
# ALL OF THE FOLLOWING OUTPUTS ARE USED BY LRS22.3:
# RDOTM -- THE RR RANGE-RATE READING, DP, IN METERS PER CENTISECOND, SCALED BY B-7
# RRTRUN -- THE RR TRUNNION ANGLE, DP, IN REVOLUTIONS, SCALED B0
# RRSHAFT -- RR SHAFT ANGLE, DP, IN REVOLUTIONS, SCALED B0
# AIG,AMG,AOG -- THE CDU ANGLES, THREE SP WORDS
# MKTIME -- THE TIME OF THE RR READING, DP, IN CENTISECONDS
#
# ERASABLE INITIALIZATION REQUIRED:
# RNRAD, THE RADAR READ COUNTER FROM WHICH IS OBTAINED:
# Page 569
# 1) RR RANGE SCALED 9.38 FT. PER BIT ON THE LOW SCALE AND 75.04 FT. PER BIT ON THE HIGH SCALE
# 2) RR RANGE RATE, SCALED .6278 FT./SEC. PER BIT
# THE CDU ANGLES FROM CDUX, CDUY, CDUZ, AND TIME1 AND TIME2
#
# DEBRIS:  LRS22.1X, A, L, Q, PUSHLIST

  BANK 32
  SETLOC LRS22
  BANK
  COUNT* $$/LRS22

LRS22.1  TC MAKECADR
  TS LRS22.1X
  TC DOWNFLAG
  ADRES RNGSCFLG
  INHINT
  CAF BIT3
  EXTEND   # GET RR RANGE SCALE
  RAND CHAN33  # FROM CHANNEL 33 BIT 3
  TS L
  CS RRRSBIT
  MASK RADMODES
  AD L
  TS RADMODES
  RELINT
READRDOT TC BANKCALL
  CADR RRRDOT  # READ RANGE-RATE (ONE SAMPLE)
  TC BANKCALL
  CADR RADSTALL # WAIT FOR DATA READ COMPLETION
  TCF EREXIT1  # COULD NOT READ RADAR-ERROR EXIT 1

  INHINT   # NO INTERRUPTS WHILE READING TIME AND CDU
  DXCH TIMEHOLD # SET MARK TIME EQUAL TO THE MID-POINT
  DXCH MPAC +5  # TEMP BUFFER FOR DOWNLINK
  DXCH SAMPLSUM # SAVE RANGE-RATE READING
  DXCH RDOTMSAV
  EXTEND
  DCA CDUY  # SAVE ICDU ANGLES
  DXCH MPAC +3  # TEMP BUFFER FOR DOWNLINK
  CA CDUX
  TS MPAC +2  # TEMP BUFFER FOR DOWNLINK
  EXTEND
  DCA TIME2  # SAVE TIME
  DXCH MPAC  # SAVE TIME OF CDUY READINGS IN MPAC
  EXTEND
  DCA CDUT  # SAVE TRUNNION AND SHAFT ANGLES FOR RRNB
  DXCH TANG
# Page 570
  RELINT
  TC BANKCALL
  CADR RRRANGE  # READ RR RANGE (ONE SAMPLE)
  TC BANKCALL
  CADR RADSTALL # WAIT FOR READ COMPLETE
  TC CHEXERR  # CHECK FOR ERRORS DURING READ
  INHINT   # COPY CYCLE FOR MARK DATA ON DOWNLINK
  DXCH DNRRANGE # RANGE, RANGE RATE (RAW DATA)
  DXCH RANGRDOT
  DXCH MPAC +5
  DXCH MKTIME  # MARK TIME
  DXCH MPAC +3
  DXCH AIG  # CDUY, CDUZ
  EXTEND
  DCA TANG  # PRESERVE TANG
  DXCH TANGNB  # TRUNNION AND SHAFT ANGLES
  CA MPAC +2
  TS AOG  # CDUX
  TC INTPRET
  STODL 20D  # SAVE TIME OF CDU READINGS IN 20D
   RDOTMSAV # CONVERT RDOT UNITS AND SCALING
  SL DMPR  # START WITH READING SCALED B-28, -.6278
   14D  # FT./SECOND PER BIT
   RDOTCONV # END WITH METERS/CENTISECOND, B-7
  STORE RDOTM
  SLOAD RTB
   TANG  # GET TRUNNION ANGLE
   CDULOGIC # CONVERT TO DP ONES COMP. IN REVOLUTIOINS
  STORE RRTRUN  # AND SAVE FOR TMI ROUTINE (LSR22.3)
  SLOAD RTB
   TANG +1  # DITTO FOR SHAFT ANGLE
   CDULOGIC
  STODL RRSHAFT
   SAMPLSUM
  DMP SL2R  # CONVERT UNITS AND SCALING DP RANGE
   RANGCONV # PER BIT, END WITH METERS, SCALED -29
  STCALL RM
   RRNB  # COMPUTE RADAR LOS USING RRNB
  STODL RRBORSIT # AND SAVE
   20D
  STCALL TDEC1  # GET STATE VECTOR LOS AT TIME OF CDU READ
   LPS20.1
  EXIT
  CA AIG  # STORE IMU CDU ANGLES AT MARKTIME
  TS CDUSPOT  # IN CDUSPOT FOR TRG*SMNB
  CA AMG
  TS CDUSPOT +2
  CA AOG
  TS CDUSPOT +4
  TC INTPRET
# Page 571
  VLOAD CALL  # LOAD VECTOR AND CALL TRANSFORMATION
   RRTARGET
   TRG*SMNB # ROTATE LOS AT MARKTIME FROM SM TO NB.
  DOT   # DOT WITH RADAR LOS TO GET ANGLE
   RRBORSIT
  SL1 ACOS  # BETWEEN THEM
  STORE DSPTEM1  # STORE FOR POSSIBLE DISPLAY
  DSU BMN  # IS IT LESS THAN 3 DEGREES
   THREEDEG
   NORMEXIT # YES -- NORMAL EXIT

  EXIT   # ERROR EXIT 2
  CAF BIT2  # SET ERROR CODE
  TS MPAC
  TCF OUT22.1

NORMEXIT EXIT   # NORMAL EXIT -- SET MPAC EQUAL ZERO
  CAF ZERO
  TS MPAC
OUT22.1  CAE LRS22.1X # EXIT FROM LRS22.1
  TC BANKJUMP
CHEXERR  CAE FLAGWRD5
  MASK RNGSCBIT
  CCS A  # CHECK IF RANGE SCALE CHANGED
  TCF READRDOT # YES -- TAKE ANOTHER READING

EREXIT1  CA BIT1  # SET ERROR CODE
  TS MPAC
  TC OUT22.1
THREEDEG 2DEC .008333333 # THREE DEGREES, SCALED REVS, B0

RRLOSVEC EQUALS RRTARGET

# Page 572
# PROGRAM NAME -- LRS22.2 (DATA READ SUBROUTINE 2)
# MOD. NO.: 1 BY: P. VOLANTE  SDC DATE: 4-11-67
#
# FUNCTIONAL DESCRIPTION:
# (Yes, I know point #1 is missing.  It is missing from the program listing -- RSB 2003)
# 2)  CHECKS IF THE RR LOS (I.E., THE RADAR BORESIGHT VECTOR) IS WITHIN 30 DEGREES OF THE LM +Z AXIS
#
# CALLING SEQUENCE:  BANKCALL FOR LRS22.2
#
# SUBROUTINES CALLED:  G+N, AUTO, SETMAXDB
#
# NORMAL EXIT:  RETURN TO CALLER WITH MPAC SET TO +0 (VIA SWRETURN)
#
# ERROR EXIT:  RETURN TO CALLER WITH MPAC SET TO 00001 -- RADAR LOS NOT WITHIN 30 DEGREES OF LM +Z AXIS.
#
# ALARMS:  NONE
#
# ERASABLE INITIALIZATION REQUIRED:
# RRLOSVEC -- THE RR LINE-OF-SIGHT VECTOR -- A HALF UNIT VECTOR COMPUTED BY LRS22.1
# RM -- RR RANGE, METERS B-29, FROM LRS22.1
# BIT 14 CHANNEL 31 -- INDICATES AUTOPILOT IS IN AUTO MODE
#
# DEBRIS -- A,L,Q,MPAC -- PUSHLIST AND PUSHLOC ARE NOT CHANGED BY THIS ROUTINE

  SETLOC P20S
  BANK
LRS22.2  TC MAKECADR
  TS LRS22.1X
  TC INTPRET
     # CHECK IF RR LOS IS WITHIN 30 DEG OF
30DEGCHK DLOAD ACOS  # THE SPACECRAFT +Z AXIT
   RRBORSIT +4 # BY TAKING ARCCOS OF Z-COMP. OF THE RR
     # LOS VECTOR, A HALF UNIT VECTOR
     # IN NAV BASE AXES)
  DSU BMN
   30DEG
   OKEXIT  # NORMAL EXIT -- WITHIN 30 DEG.
  EXIT   # ERROR EXIT -- NOT WITHIN 30 DEG.
  CAF BIT1  # SETS ERROR CODE IN MPAC
  TS MPAC
  TCF OUT22.2
OKEXIT  EXIT   # NORMAL EXIT -- SET MPAC = ZERO

# Page 573
  CAF ZERO
  TS MPAC
OUT22.2  CAE LRS22.1X
  TC BANKJUMP

30DEG  2DEC .083333333 # THIRTY DEGREES, SCALED REVS, B0

# Page 574
# PROGRAM NAME -- LSR22.3 DATE -- 29 MAY 1967
# MOD. NO 3 LOG SECTION -- P20-P25
# MOD. BY -- DANFORTH ASSEMBLY LEMP20S REV 10
#
# FUNCTIONAL DESCRIPTION:
# THIS ROUTINE COMPUTES THE B-VECTORS ADN DELTA Q FOR EACH OF THE QUANTITIES MEASURED BY THE RENDEZVOUS
# RADAR.  (RANGE, RANGE RATE, SHAFT AND TRUNNION ANGLES).  THE ROUTINE CALLS THE INCORP1 AND INCORP2 ROUTINES
# WHICH COMPUTE THE DEVIATIONS AND CORRECT THE STATE VECTOR.
#
# CALLING SEQUENCE:
# THIS ROUTINE IS PART OF P20 RENDEZVOUS NAVIGATION FOR THE LM COMPUTER ONLY.  THE ROUTINE IS ENTERED FROM
#  R22 LEM ONLY AND RETURNS DIRECTLY TO R22LEM FOLLOWING SUCCESSFUL INCORPORATION OF MEASURED DATA.  IF THE
# COMPUTED STATE VECTOR DEVATIONS EXCEED THE MAXIMUM PERMITTED.  THE ROUTINE RETURNS TO R22LEM TO DISPLAY
# THE DEVIATIONS.  IF THE ASTRONAUT ACCEPTS THE DATA R22LEM RETURNS TO LSR22.3 TO INCORPORATE THE
# DEVIATIONS INTO THE STATE VECTOR.  IF THE ASTRONAUT REJECTS THE DEVIATIONS, NO MORE MEASUREMENTS ARE
# PROCESSED FOR THIS MARK, I.E.,  R22LEM GETS THE NEXT MARK.
#
# SUBROUTINES CALLED:
# WLINIT LGCUPDTE INTEGRV INCORP1 ARCTAN
# GETULC RADARANG INCORP2 NBSM INTSTALL
#
# OUTPUT:
# CORRECTED LM OR CSM STATE VECTOR (PERMANENT)
# NUMBER OF MARKS INCORPORATED IN MARKCTR
# MAGNITUDE OF POSITION DEVIATION (FOR DISPLAY) IN R22DISP METERS B-29
# MAGNITUDE OF VELOCITY DEVIATION (FOR DISPLAY) IN R22DISP +2 M/CSEC B-7
# UPDATED W-MATRIX
#
# ERASABLE INITIALIZATION REQUIRED:
# LM AND CSM STATE VECTORS
# W-MATRIX
# MARK TIME IN MKTIME
# RADAR RANGE IN RM METERS B-29
# RANGE RATE IN RDOTM METERS/CSES B-7
# SHAFT ANGLE IN RRSHAFT REVS. B0
# TRUNNION ANGLE IN RRTRUN REVS. B0
# GIMBAL ANGLES INNER IN AIG
# MIDDLE IN AMG
# OUTER IN ACG
# REFSMMAT
# RENDWFLG
# NOANGFLG
# VEHUPFLG
#
# DEBRIS:
# PUSHLIST -- ALL
# MX, MY, MZ (VECTORS)
# Page 575
# ULC, RXZ, SINTHETA, LGRET, RDRET, BVECTOR, W.IND, X78T

  BANK 13
  SETLOC P20S3
  BANK

  EBANK= LOSCOUNT
  COUNT* $$/LSR22
LSR22.3  CALL
   GRP2PC
  BON SET
   SURFFLAG # ARE WE ON LUNAR SURFACE
   LSR22.4  # YES
   DMENFLG
  BOFF CALL
   VEHUPFLG
   DOLEM
   INTSTALL
  CLEAR CALL  # LM PRECISION INTEGRATION
   VINTFLAG
   SETIFLGS
  CALL
   INTGRCAL
  CALL
   GRP2PC
  CALL
   INTSTALL
  CLEAR BOFF
   DIM0FLAG
   RENDWFLG
   NOTWCSM
  SET SET  # CSM WITH W-MATRIX INTEGRATION
   DIM0FLAG
   D6OR9FLG
NOTWCSM  SET CLEAR
   VINTFLAG
   INTYPFLG
  SET CALL
   STATEFLG
   INTGRCAL
  GOTO
   MARKTEST
DOLEM  CALL
   INTSTALL
  SET CALL
   VINTFLAG
   SETIFLGS
  CALL
   INTGRCAL
# Page 576
  CALL
   GRP2PC
  CALL
   INTSTALL
  CLEAR BOFF
   DIM0FLAG
   RENDWFLG
   NOTWLEM
  SET SET  # LM WITH W-MATRIX INTEGRATION
   DIM0FLAG
   D6OR9FLG
NOTWLEM  CLEAR CLEAR
   INTYPFLG
   VINTFLAG
  SET CALL
   STATEFLG
   INTGRCAL
MARKTEST BON CALL  # HAS W-MATRIX BEEN INVALIDATED
   RENDWFLG # HAS W-MATRIX BEEN INVALIDATED
   RANGEBQ
   WLINIT  # YES -- REINITIALIZE
RANGEBQ  BON EXIT  # DON'T CALL R65 IF ON SURFACE
   SURFFLAG
   RANGEBQ1
  CA ZERO
  TS R65CNTR
  TC BANKCALL
  CADR R65LEM
  TC INTPRET
RANGEBQ1 AXT,2 BON  # CLEAR X2
   0
   LMOONFLG # IS MOON SPHERE OF INFLUENCE
   SETX2  # YES.  STORE ZERO IN SCALSHFT REGISTER
  INCR,2
   2
SETX2  SXA,2 CALL
   SCALSHFT # 0 -- MOON.  2 -- EARTH.
   GRP2PC
  AXT,1 SXA,1  # STORE RANGE CODE (1) FOR R3 IN NOUN 49
   1
   WHCHREAD
  SLOAD SR  # GET SINGLE PRECISION RVARMIN (B-12)
   RVARMIN  # SHIFT TO TRIPLE PRECISION (B-40)
   28D
  RTB
   TPMODE  # AND SAVE IN 20D
  STORE 20D
  CALL   # BEGIN COMPUTING THE B-VECTORS, DELTAQ
   GETULC  # B-VECTORS FOR RANGE
  BON VCOMP  # B0, COMP. IF LM BEING CORRECTED
# Page 577
   VEHUPFLG
   +1
  STOVL BVECTOR
   ZEROVECS
  STORE BVECTOR +6 # B1
  STODL BVECTOR +12D # B2
   36D
  SRR* BDSU
   2,2  # SHIFT FROM EARTH/MOON SPHERE TO B-29
   RM  # RM - (MAGNITUDE RCSM-RLM)
  SLR*
   2,2  # SHIFT TO EARTH/MOON SPHERE
  STODL DELTAQ  # EARTH B-29.  MOON B-27
   36D  # RLC B-29/B-27
  NORM DSQ  # NORMALIZE AND SQUARE
   X1
  DMP SR*
   RANGEVAR # MULTIPLY BY RANGEVAR (B12) THEN
   0 -2,1  # UNNORMALIZE
  SR* SR*
   0,1
   0,2
  SR* RTB
   0,2
   TPMODE
  STORE VARIANCE # B-40
  DCOMP TAD
   20D  # B-40
  BMN TLOAD
   QOK
   20D  # B-40
  STORE VARIANCE
QOK  CALL
   LGCUPDTE

  SSP CALL
   WHCHREAD
  DEC 2  # STORE R-RATE CODE (2) FOR R3 IN NOUN 49
   GRP2PC
  CALL   # B-VECTOR, DELTAQ FOR RANGE RATE
   GETULC
  PDDL SR*  # GET RLC SCALED B-29/B-27
   36D  # AND SHIFT TO B-23
   0 -4,2
  STOVL 36D  # THEN STORE BACK IN 36D
  BON VCOMP  # B1, COMP. IF LM BEING CORRECTED
   VEHUPFLG
   +1
  VXSC
   36D  # B1 = RLC (B-24/B-22)
# Page 578
  STOVL BVECTOR +6
   NUVLEM
  VSR* VAD
   6,2  # SHIFT FOR EARTH/MOON SPHERE
   VCVLEM  # EARTH B-7. MOON B-5
  PDVL VSR*  # VL TO PD6
   NUVCSM
   6,2  # SHIFT FOR EARTH/MOON SPHERE
  VAD VSU
   VCVCSM
  PDVL DOT  # VC - VL = VLC TO PD6
   0
   6
  PUSH SRR*  # RDOT B-8/B-6 TO PD12
   2,2  # SHIFT FROM EARTH/MOON SPHERE TO B-8
  DSQ DMPR  # RDOT**2 B-16 X RATEVAR B12
   RATEVAR
  STORE VARIANCE
  SLOAD SR
   VVARMIN  # GET SINGLE PRECISION VVARMIN (B+12)
   16D  # SHIFT TO DP (B-4)
  STORE 24D  # AND SAVE IN 24D
  DSU BMN  # IS MIN. VARIANCE > COMPUTED VARIANCE
   VARIANCE
   VOK  # BRANCH -- NO
  DLOAD   # YES -- USE MINIMUM VARIANCE
   24D
  STORE  VARIANCE
VOK  DLOAD SR2  # RDOT (PD12) FROM B-8/B-6
  PDDL SLR*  # TO B-10/B-8
   RDOTM  # SHIFT TO EARTH/MOON SPHERE
   0 -1,2  # B-7 TO B-10/B-8
  DSU
  DMPR
   36D
  STOVL DELTAQ  # B-33
   0  # NOW GET B0
  VXV VXV  # (ULC X VLC) X ULC
  BON VCOMP  # B0, COMP. IF LM BEING CORRECTED
   VEHUPFLG
   +1
  VSR*
   0 -2,2  # SCALED B-5
  STOVL BVECTOR
   ZEROVECS
  STORE 20D  # ZERO OUT 20 TO 25 IN PUSHLIST
  STOVL BVECTOR +12D
   BVECTOR
  ABVAL NORM  # LOAD B0, GET MAGNITUDE AND NORMALIZE
   20D  # SHIFT COUNT IN 20D
# Page 579
  VLOAD ABVAL
   BVECTOR +6D # LOAD B1, GET MAGNITUDE AND NORMALIZE
  NORM DLOAD
   22D  # SHIFT COUNT IN 22D
   22D  # FIND WHICH SHIFT IS SMALLER
  DSU BMN  # BRANCH -- B0 HAS A SMALLER SHIFT COUNT
   20D
   VOK1
  LXA,1 GOTO
   22D  # LOAD X2 WITH THE SMALLER SHIFT COUNT
   VOK2
VOK1  LXA,1
   20D
VOK2  VLOAD VSL*  # THEN ADJUST B0, B1, DELTAQ AND VARIANCE
   BVECTOR  # WITH THI SSHIFT COUNT
   0,1
  STOVL BVECTOR
   BVECTOR +6
  VSL*
   0,1
  STODL BVECTOR +6
   DELTAQ
  SL*
   0,1
  STORE DELTAQ
  DLOAD SL*  # GET RLC AND ADJUST FOR SCALE SHIFT
   36D
   0 -1,1
  DSQ DMP  # MULTIPLY RLC**2 BY VARIANCE
   VARIANCE
  SL4 RTB  # SHIFT TO CONFORM TO BVECTORS AND DELTAQ
   TPMODE
  STCALL VARIANCE # AND STORE TP VARIANCE
   LGCUPDTE

  CALL
   GRP2PC
  BON EXIT  # ARE ANGLES TO BE DONE
   SURFFLAG
   RENDEND  # NO
  EBANK= AIG
MXMYMZ  CAF AIGBANK
  TS BBANK
  CA AIG  # YES, COMPUTE MX, MY, MZ
  TS CDUSPOT
  CA AMG
  TS CDUSPOT +2
  CA  AOG
  TS CDUSPOT +4 # GIMBAL ANGLES NOW IN CDUSPOT FOR TRG*NBSM
  TC INTPRET
# Page 580
  VLOAD CALL
   UNITX
   TRG*NBSM
  VXM VSL1
   REFSMMAT
  STOVL MX
   UNITY
  CALL
   *NBSM*
  VXM VSL1
   REFSMMAT
  STOVL MY
   UNITZ
  CALL
   *NBSM*
  VXM VSL1
   REFSMMAT
SHAFTBQ  STCALL MZ
   RADARANG
  SSP CALL  # STORE SHAFT CODE (3) FOR R3 IN NOUN 49
   WHCHREAD
  DEC 3
   GRP2PC
  VLOAD DOT  # COMPUTE DELTAQ,B VECTORS FOR SHAFT ANG.
   ULC
   MX
  SL1
  STOVL SINTH  # 18D
   ULC
  DOT SL1
   MZ
  STCALL COSTH  # 16D
   ARCTAN
  BDSU DMP
   RRSHAFT
   2PI/8
  SL3R PUSH
  DLOAD SL3
   X789
  SRR* BDSU  # SHIFT FROM -5/-3 TO B0
   0,2
  DMP SRR*
   RXZ
   0,1  # SHIFT TO EARTH/MOON SPHERE
  STOVL DELTAQ  # EARTH B-29.  MOON B-27
   ULC
  VXV VSL1
   MY
  UNIT
  BOFF VCOMP  # B0, COMP. IF CSM BEING CORRECTED
# Page 581
   VEHUPFLG
   +1
  STOVL BVECTOR
   ZEROVECS
  STORE BVECTOR +6
  STODL BVECTOR +12D
   RXZ
  SR* SRR*  # SHIFT FROM EARTH/MOON SPHERE TO B-25
   0 -2,1
   0,2
  STORE BVECTOR +12D
  SLOAD
   SHAFTVAR
  DAD DMP
   IMUVAR  # RAD**2 B12
   RXZ
  SRR* DMP
   0,1  # SHIFT TO EARTH/MOON SPHERE
   RXZ
  SR* SR*
   0 -2,1
   0,2
  SR* RTB
   0,2
   TPMODE  # STORE VARIANCE TRIPLE PRECISION
  STCALL VARIANCE # B-40
   LGCUPDTE

  CALL
   GRP2PC
TRUNBQ  CALL
   RADARANG
  SSP CALL  # STORE TRUNNION CODE (4) FOR R3 IN N49
   WHCHREAD
  DEC 4
   GRP2PC
  VLOAD VXV
   ULC
   MY
  VSL1 VXV
   ULC
  VSL1   # (ULC X MY) X ULC
  BOFF VCOMP  # B0, COMP. IF CSM BEING CORRECTED
   VEHUPFLG
   +1
  STOVL BVECTOR
   ZEROVECS
  STORE BVECTOR +6
  STODL BVECTOR +12D
   RXZ
# Page 582
  SR* SRR*  # SHIFT FROM EARTH/MOON SPHERE TO B-25
   0 -2,1
   0,2
  STORE BVECTOR +14D
  SLOAD
   TRUNVAR
  DAD DMP
   IMUVAR
   RXZ
  SRR* DMP
   0,1  # SHIFT TO EARTH/MOON SPHERE
   RXZ
  SR* SR*
   0 -2,1
   0,2
  SR* RTB
   0,2
   TPMODE  # STORE VARIANCE TRIPLE PRECISION
  STODL VARIANCE
   SINTHETA
  ASIN BDSU  # SIN THETA IN PD6
   RRTRUN
  DMP SL3R
   2PI/8
  PDDL SL3
   X789 +2
  SRR* BDSU  # SHIFT FROM -5/-3 TO B0
   0,2
  DMP SRR*
   RXZ
   0,1
  STCALL DELTAQ  # EARTH B-29.  MOON B-27
   LGCUPDTE
  CALL
   GRP2PC
RENDEND  GOTO
   R22LEM93

# FUNCTIONAL DESCRIPTION:
# LSR22.4 IS THE ENTRY TO PERFORM LUNAR SURFACE NAVIGATION FOR THE LM
# COMPUTER ONLY.  THIS ROUTINE COMPUTES THE BE-VECTORS AND DELTA Q FOR RANGE
# AND RANGE RATE MEASURED BY THE RENDEZVOUS RADAR
#
# SUBROUTINES CALLED:
# INTSTALL LGCUPDTE INCORP1 RP-TO-R
# INTEGRV GETULC INCORP2
#
# OUTPUT
# CORRECTED CSM STATE VECTOR (PERMANENT)
# NUMBER OF MARKS INCORPORATED IN MARKCTR
# Page 583
# MAGNITUDE OF POSITION DEVIATION (FOR DISPLAY) IN R22 DISP METERS B-29
#  MAGNITUDE OF VELOCITY DEVIATION (FOR DISPLAY) IN R22DISP +2 M/CSEC B-7
#  UPDATED W-MATRIX

# ERASABLE INITIALIZATION REQUIRED
# LM AND CSM STATE VECTORS
# W-MATRIX
# MARK TIME IN MKTIME
# RADAR RANGE IN RM METERS B-29
# RANGE RATE IN RDOTM METERS/CSEC B-7
# VEHUPFLG

LSR22.4  CALL
   INTSTALL
  SET CLEAR
   STATEFLG
   VINTFLAG # CALL TO GET LM POS + VEL IN REF COORD.
  CALL
   INTGRCAL
  CALL
   GRP2PC
  CLEAR CALL
   DMENFLG  # SET MATRIX SIZE TO 6X6 FOR INCORP
   INTSTALL
  DLOAD BHIZ  # IS THIS FIRST TIME THROUGH
   MARKCTR
   INITWMX6 # YES, INITIALIZE 6X6 W-MATRIX
  CLEAR SET
   D6OR9FLG
   DIM0FLAG
  SET CLEAR
   VINTFLAG
   INTYPFLG
  CALL
   INTGRCAL
  GOTO
   RANGEBQ

INITWMX6 CALL
   WLINIT  # INITIALIZE W-MATRIX
  SET CALL
   VINTFLAG
   SETIFLGS
  CALL
   INTGRCAL
  GOTO
   RANGEBQ

# THIS ROUTINE CLEARS RFINAL (DP) AND CALLS INTEGRV
# Page 584
INTGRCAL STQ DLOAD
   IGRET
   MKTIME
  STCALL TDEC1
   INTEGRV
  GOTO
   IGRET

# THIS ROUTINE INITIALIZES THE W-MATRIX BY ZEROING ALL W THEN SETTING
# DIAGONAL ELEMENTS TO INITIAL STORED VALUES.

  EBANK= W
WLINIT  EXIT
  CAF WBANK
  TS BBANK
  CAF WSIZE
  TS W.IND
  CAF ZERO
  INDEX W.IND
  TS W
  CCS W.IND
  TC -5
  CAF AIGBANK  # RESTORE EBANK 7
  TS BBANK
  TC INTPRET
  BON SLOAD  # IF ON LUNAR SURFACE, INITIALIZE WITH
   SURFFLAG # WSURFPOS AND WSURFVEL INSTEAD OF
   WLSRFPOS # WRENDPOS AND WRENDVEL
   WRENDPOS
  GOTO
   WPOSTORE
WLSRFPOS SLOAD
   WSURFPOS
WPOSTORE SR   # SHIFT TO B-19 SCALE
   5
  STORE W
  STORE W +8D
  STORE W +16D
  BON SLOAD
   SURFFLAG
   WLSRFVEL
   WRENDVEL
  GOTO
   WVELSTOR
WLSRFVEL SLOAD
   WSURFVEL
WVELSTOR STORE W +72D
  STORE W +80D
  STORE W +88D
  SLOAD
# Page 585
   WSHAFT
  STORE W +144D
  SLOAD
   WTRUN
  STORE W +152D
  SET SSP  # SET RENDWFLG -- W-MATRIX VALID
   RENDWFLG
   MARKCTR  # SET MARK COUNTER EQUAL ZERO
   0
  RVQ

  EBANK= W
WBANK  BBCON WLINIT
  EBANK= AIG
AIGBANK  BBCON LSR22.3

# GETULC
#
# THIS SUBROUTINE COMPUTES THE RELATIVE POSITION VECTOR BETWEEN THE CSM
# AND THE LM, LEAVING THE UNIT VECTOR IN THE PUSHLIST AND MPAC AND THE
# MAGNITUDE IN 36D.

GETULC  SETPD VLOAD
   0
   DELTALEM
  LXA,2
   SCALSHFT # LOAD X2 WITH SCALE SHIFT
  VSR* VAD
   9D,2  # SHIFT FOR EARTH/MOON SPHERE
   RCVLEM
  PDVL VSR*
   DELTACSM
   9D,2  # SHIFT FOR EARTH/MOON SPHERE
  VAD VSU
   RCVCSM
  RTB PUSH  # USE NORMUNIT TO PRESERVE ACCURACY
   NORMUNX1
  STODL ULC
   36D
  SL*   # ADJUST MAGNITUDE FROM NORMUNIT
   0,1
  STOVL 36D  # ULC IN PD0 AND MPAC,RLC IN 36D
   ULC
  RVQ

# RADARANG
#
# THIS SUBROUTINE COMPUTS SINTHETA = -ULC DOT MY
# RXZ = (SQRT (1-SINTHETA**2))RLC
# OUTPUT
# ULC IN ULC, PD0
# Page 586
# RLC IN PD36D
# SIN THETA IN SINTHETA AND PD6
# RXZ NORM IN RXZ (N IN X1)

RADARANG STQ CALL
   RDRET
   GETULC
  VCOMP DOT
   MY
  SL1R PUSH  # SIN THETA TO PD6
  STORE SINTHETA
  DSQ BDSU
   DP1/4TH  # 1-(SIN THETA)**2
  SQRT DMP
   36D
  SL1 NORM
   X1  # SET SHIFT COUNTER IN X1
  STORE RXZ
  GOTO   # EXIT
   RDRET
LGCUPDTE STQ CALL
   LGRET
   INCORP1
  VLOAD ABVAL
   DELTAX +6
  LXA,2 SRR*
   SCALSHFT # 0 -- MOON.  2 -- EARTH
   2,2  # SET VEL DISPLAY TO B-7
  STOVL R22DISP +2
   DELTAX
  ABVAL SRR*
   2,2  # SET POS DISPLAY TO B-29
  STORE R22DISP
  SLOAD SR
   RMAX
   10D
  DSU BMN
   R22DISP
   R22LEM96 # GO DISPLAY
  SLOAD DSU
   VMAX
   R22DISP +2 # VMAX MINUS VEL. DEVIATION
  BMN
   R22LEM96 # GO DISPLAY
ASTOK  CALL
   INCORP2
  GOTO
   LGRET
IMUVAR  2DEC E-6 B12  # RAD**2

WSIZE  DEC 161
# Page 587
2PI/8  2DEC 3.141592653 B-2

  EBANK= LOSCOUNT
# Page 588

# PROGRAM NAME LRS24.1 RR SEARCH ROUTINE
# MCD NO. 0 BY P. VOLANTE, SDC DATE 1-15-67
#
# FUNCTIONAL DESCRIPTION
#
# DRIVES THE RENDEZVOUS RADAR IN A HEXAGONAL SEARCH PATTERN ABOUT THE LOS TO THE CSM (COMPUTED FROM THE CSM AND LM
# STATE VECTORS) CHECKING FOR THE DATA GOOD DISCRETE AND MONITORING THE ANGLE BETWEEN THE RADAR BORESIGHT AND THE
# LM +Z AXIS.  IF THIS ANGLE EXCEEDS 30 DEGREES THE PREFERRED TRACKING ATTITUDE ROUTINE IS CALLED TO PERFORM AN
# ATTITUDE MANEUVER.
#
# CALLING SEQUENCE -- BANKCALL FOR LRS24.1
#
# SUBROUTINES CALLED
#
# LEMCONIC R61LEM
# CSMCONIC RRDESSM
# JOBDELAY FLAGDOWN
# WAITLIST FLAGUP
# RRNB BANKCALL
#
# EXIT -- TO ENDOFJOB WHEN THE SEARCH FLAG (SRCHOPT) IS NOT SET
#
# OUTPUT
#
# DATAGOOD (SP) -- FOR DISPLAY IN R1 -- 00000 INDICATES NO LOCKON
# 11111 INDICATES LOCKON ACHIEVED
# OMEGAD (SP)   -- FOR DISPLAY IN R2 -- ANGLE BETWEEN RR BORESIGNT VECTOR AND THE SPACECRAFT +Z AXIS
#
# ERASABLE INITIALIZATION REQUIRED:
#
# SEARCH FLAG MUST BE SET
# LM AND CSM STATE VECTORS AND REFSMMAT MATRIX
#
# DEBRIS
#
# RLMSRCH UXVECT
# VXRLM UYVECT
# LOSDESRD NSRCHPNT
# DATAGOOD OMEGAD
# MPAC PUSHLIST

  COUNT* $$/LRS24
LRS24.1  CAF ZERO
  TS NSRCHPNT # SET SEARCH PATTERN POINT COUNTER TO ZERO
CHKSRCH  CAF BIT14  # ISSUE AUTO TRACK ENABLE TO RADAR
  EXTEND
# Page 589
  WOR CHAN12
  CAF SRCHOBIT # CHECK IF SEARCH STILL REQUESTED
  MASK FLAGWRD2 # (SRCHOPT FLAG SET)
  EXTEND
  BZF ENDOFJOB # NO-TERMINATE JOB

  CAF 6SECONDS # SCHEDULE TASK TO DRIVE RADAR TO NEXT PT.
  INHINT
  TC WAITLIST # IN 6 SECONDS
  EBANK= LOSCOUNT
  2CADR CALLDGCH

  RELINT
  CS RADMODES # IS REMODE IN PROGRESS
  MASK REMODBIT
  EXTEND
  BZF ENDOFJOB # YES -- WAIT SIX SECONDS
  TC INTPRET

  RTB DAD  # COMPUTE LOS AT PRESENT TIME + 1.5 SEC.
   LOADTIME
   1.5SECS
LRS24.11 STCALL TDEC1
   LEMCONIC # EXTRAPOLATE LM STATE VECTOR
  VLOAD
   RATT
  STOVL RLMSRCH  # SAVE LEM POSITION
   VATT
  STODL SAVLEMV  # SAVE LEM VELOCITY
   TAT
  STCALL TDEC1  # EXTRAPOLATE CSM STATE VECTOR
   CSMCONIC # EXTRAPOLATE CSM STATE VECTOR
  VLOAD VSU  # LOS VECTOR = R(CSM) - R(LM)
   RATT
   RLMSRCH
  UNIT
  STOVL LOSDESRD # STORE DESIRED LOS
   VATT  # COMPUTE UNIT(V(CM) CROSS R(CM))
  UNIT VXV
   RATT
  UNIT
  STORE VXRCM
  VLOAD VSU
   VATT
   SAVLEMV
  MXV VSL1  # CONVERT FROM REFERENCE TO STABLE MEMBER
   REFSMMAT
  STORE SAVLEMV  # VLC = V(CSM) - V(LM)
  SLOAD BZE  # CHECK IF N=0
# Page 590
   NSRCHPNT
   DESGLOS  # YES -- DESIGNATE ALONG LOS
  DSU BZE  # IS N=1
   ONEOCT  # YES -- CALCULATE X AND Y AXES OF
   CALCXY  # SEARCH PATTERN COORDINATE SYSTEM
  VLOAD   # NO -- ROTATE X-Y AXES TO NEXT SEARCH POINT
   UXVECT
  STOVL UXVECTPR # SAVE ORIGINAL X AND Y VECTORS
   UYVECT  # UXPRIME = ORIGINAL UX
  STORE UYVECTPR # UYPRIME = ORIGINAL UY
  VXSC
   SIN60DEG # UX = (COS 60)UXPR + (SIN 60)UYPR
  STOVL UXVECT
   UXVECTPR
  VXSC VAD
   COS60DEG
   UXVECT
  UNIT
  STOVL UXVECT
   UXVECTPR # UY = (-SIN 60)UXPR + (COS 60)UYPR
  VXSC
   SIN60DEG
  STOVL UYVECT
   UYVECTPR
  VXSC VSU
   COS60DEG
   UYVECT
  UNIT
  STORE UYVECT
OFFCALC  VXSC VAD  # OFFSET VECTOR = K(UY)
   OFFSTFAC # LOS VECTOR + OFFSET VECTOR DEFINES
   LOSDESRD # DESIRED POINT IN SEARCH PATTERN
  UNIT MXV
   REFSMMAT # CONVERT TO STABLE MEMBER COORDINATES
  VSL1
CONTDESG STOVL RRTARGET
   SAVLEMV
  STORE LOSVEL
  EXIT
  INHINT
  TC KILLTASK # KILL ANY PRESENTLY WAITLISTED TASK
  CADR DESLOOP +2 # WHICH WOULD DESIGNATE TO THE LAST
     # POINT IN THE PATTERN
CONTDES2 CS CDESBIT
  MASK RADMODES # SET BIT 15 OF RADMODES TO INDICATE
  AD CDESBIT  # A CONTINUOUS DESIGNATE WANTED.
  TS RADMODES
  TC INTPRET

  CALL
# Page 591
   RRDESSM  # DESIGNATE RADAR TO RRTARGET VECTOR

  EXIT
  TC LIMALARM # LOS NOT IN MODE 2 COVERAGE (P22)
  TC LIMALARM # VEHICLE MANEUVER REQUIRED (P20)

     # COMPUTE OMEGA,ANGLE BETWEEN RR LOS AND
     # SPACECRAFT +Z AXIS
OMEGCALC EXTEND
  DCA CDUT
  DXCH TANGNB
  TC INTPRET
  CALL
   RRNB
  DLOAD ACOS  # OMEGA IS ARCCOSINE OF Z-COMPONENT OF
   36D  # VECTOR COMPUTED BY RRNB (LEFT AT 32D)
  STORE OMEGDISP # STORE FOR DISPLAY IN R2
  EXIT
  TC ENDOFJOB
# Page 592
# CALCULATE X AND Y VECTORS FOR SEARCH PATTERN COORDINATE SYSTEM.

CALCXY  VLOAD VXV
   VXRCM
   LOSDESRD
  UNIT
  STOVL UXVECT  # UX = (VLM X RLM) X LOS
   LOSDESRD
  VXV UNIT
   UXVECT
  STORE UYVECT  # UY = LOS X UX
  GOTO
   OFFCALC

DESGLOS  VLOAD MXV  # WHEN N= 0,DESIGNATE ALONG LOS
   LOSDESRD
   REFSMMAT # CONVERT LOS FROM REFERENCE TO SM COORDS
  VSL1 GOTO
   CONTDESG

CALLDGCH CAE FLAGWRD0 # IS RENDEZVOUS FLAG SET
  MASK RNDVZBIT
  EXTEND
  BZF TASKOVER # NO -- EXIT R24
  CAF PRIO25  # YES -- SCHEDULE JOB TO DRIVE RADAR TO NEXT
  TC FINDVAC  # PONT IN SEARCH PATTERN
  EBANK= RLMSRCH
  2CADR DATGDCHK

  TC TASKOVER

DATGDCHK CAF BIT4
  EXTEND   # CHECK IF DATA GOOD DISCRETE PRESENT
  RAND CHAN33
  EXTEND
  BZF STORE1S  # YES -- GO TO STORE 11111 FOR DISPLAY IN R1
  CS SIX
  AD NSRCHPNT # IS N GREATER THAN 6
  EXTEND
  BZF LRS24.1  # YES -- RESET N = 0 AND START AROUND AGAIN
  INCR NSRCHPNT # NO -- SET N = N+1 AND GO TO
  TCF CHKSRCH  # NEXT POINT IN PATTERN

STORE1S  CAF ALL1S  # STORE 11111 FOR DISPLAY IN R1
  TS DATAGOOD
# Page 593
  INHINT
  TC KILLTASK # DELETE DESIGNATE TASK FROM
  CADR DESLOOP +2 # WAITLIST USING KILLTASK
  TC ENDOFJOB

LIMALARM TC ALARM  # ISSUE ALARM 527 -- LOS NOT IN MODE2
  OCT 527  # COVERAGE IN P22 OR VEHICLE MANEUVER
  INHINT   # REQUIRED IN P20
  TC KILLTASK # KILL WAITLIST CALL FOR NEXT
  CADR CALLDGCH # POINT IN SEARCH PATTERN
  TC ENDOFJOB

ALL1S  DEC 11111
SIN60DEG 2DEC .86603
COS60DEG = DPHALF  # (2DEC .50)
UXVECTPR EQUALS 12D  # PREVIOUS
UYVECTPR EQUALS 18D
RLMUNIT  EQUALS 12D
OFFSTFAC 2DEC 0.05678  # TANGENT OF 3.25 DEGREES

ONEOCT  OCT 00001  # **** NOTE -- THESE TWO CONSTANTS MUST ****
3SECONDS 2DEC 300  # **** BE IN THIS ORDER BECAUSE         ****

     # **** ONEOCT NEEDS A LOWER ORDER  ****
     # **** WORD OF ZEROES ****
6SECONDS DEC 600
1.5SECS  2DEC 150

ZERO/SP  EQUALS HI6ZEROS

  BLOCK 02
  SETLOC FFTAG5
  BANK
  COUNT* $$/P20
GOTOV56  EXTEND   # P20 TERMINATES BY GOTOV56 INSTEAD OF
  DCA VB56CADR # GOTOPOOH
  TCF SUPDXCHZ
  EBANK= WHOCARES
VB56CADR 2CADR TRMTRACK

# Page 594
# PROGRAM NAME: R29  (RENDEZVOUS RADAR DESIGNATE DURING POWERED FLIGHT)
# MOD NO. 2 BY H. BLAIR-SMITH JULY 2, 1968
#
# FUNCTIONAL DESCRIPTION:
#
# DESIGNATES THE RENDEZVOUS RADAR TOWARD THE COMPUTES LOS TO THE CSM, WITH THE CHIEF OBJECTIVE OF OBTAINING RANGE
# AND RANGE RATE DATA AT 2-SECOND INTERVALS FOR TRANSMISSION TO THE GROUND.  WHEN THE RR IS WITHIN .5 DEGREE OF
# THE COMPUTED LOS, TRACKING IS ENABLED, AND DESIGNATION CONTINUES UNTIL THE DATA-GOOD DISCRETE IS RECEIVED.  AT
# THAT POINT, DESIGNATION CEASES AND A RADAR-READING ROUTINE TAKES OVER, PREPARING A CONSISTENT SET OF DATA FOR
# DOWN TELEMETRY.  THE SET INCLUDES RANGE, RANGE RATE, MARK TIME, TWO RR CDU ANGLES, THREE IMUCDU ANGLES, AND AN
# INDICATOR WHICH IS 1 WHEN THE SET IS CONSISTENT AND 0 OTHERWISE.  THE INDICATOR IS IN TRKMKCNT.
#
# CALLING SEQUENCE:  BEGUN EVERY 2 SECONDS AS AN INTEGRAL PART OF SERVICER
#
# SUBROUTINES CALLED:
#
# REMODE RRPONLY
# UNIT MPACVBUF
# QUICTRIG AX*SR*T
# SPSIN SPCOS
# SETRRECR RROUT
# RRRDOT RRRANGE
#
# EXIT:  TO NOR29NOW, IN SERVICER.
#
# OUTPUT:  (ALL FOR DOWNLINK)
#
# RM RDOTM (RAW)
# AIG AMG
# AOG TRKMKCNT TRKMKCNT = 00001 IF SET IS CONSISTENT,
# TANGNB TANGNB +1 OTHERWISE TRKMKCNT = 00000.
# MKTIME
# Page 595
#
# ERASABLE INITIALIZATION REQUIRED:
#
# NOR29FLG READRFLG (TO 1 AND 0 BY FRESH START) (RESET NOR29FLG TO LET SERVICER RUN R29)
# PIPTIME RADMODES (BIT 10) (BIT SET TO 0 BY FRESH START)
# R(CSM) V(CSM)
# R V (PIPTIME THRU V BY AVE G IN SERVICER)
#
# DEBRIS:
#
# RADMODES (BIT 10)
# LOSSM LOSVDT/4 (= RRTARGET & LOSVEL)
# SAVECDUT OLDESFLG (SAVECDUT = MLOSV)
# LOSCMFLG READRFLG
#
# ALARMS:  NONE.
#
# COMPONENT JOBS AND TASKS:
#
# INITIALIZING, IF RR IS FOUND TO BE IN MODE 1:  JOB R29REMOJ AND TASK REMODE:  ALWAYS: TASK PREPOS29.
# DESIGNATING:  TASK BEGDES29 & JOB R29DODES.
# RADAR READING:  TASK R29READ AND JOB R29RDJOB.  ALL JOBS ARE NOVAC TYPE.

  BANK 33
  SETLOC R29/SERV
  BANK

  COUNT* $$/r29

NR29&RDR EQUALS EBANK5

# Page 596
# SERVICER COMES TO R29 FROM "R29?" IF NOR29FLG, READRFLG, RRREMODE, RRCDUZRO, RRREPOS, AND DISPLAY-INERTIAL-DATA
# ARE ALL RESET, AND THE RR IS IN LGC MODE (OFTEN CONFUSINGLY CALLED AUTO MODE).

R29  CS RADMODES
  MASK DESIGBIT
  EXTEND
  BZF R29.LOS  # BRANCH IF DESIGNATION IS ALREADY ON.

  INHINT
  ADS RADMODES # SHOW THAT DESIGNATION IS NOW ON.
  CS BIT14
  EXTEND
  WAND CHAN12  # REMOVE RR TRACK ENABLE DISCRETE.
  CS LOSCMBIT
  MASK FLAGWRD2
  TS FLAGWRD2 # CLEAR LOSCMFLG TO SHOW DES. LOOP IS OFF.
  CS OLDESBIT
  MASK STATE
  TS STATE  # SHOW THAT DES. LOOP IS NOT REQUESTED.
  TC BANKCALL
  CADR SETRRECR # ENABLE RR ERROR COUNTERS.
  CA ANTENBIT
  MASK RADMODES
  CCS A  # TEST RR MODE BIT.
  TCF SETPRPOS # MODE 2.

  CA PRIO21  # MODE 1:  MUST REMODE.
  TC NOVAC
  EBANK= LOSCOUNT
  2CADR R29REM0J # NEEDS OWN JOB TO RADSTALL IN.

  CS DESIGBIT
  MASK RADMODES # CLEAR DESIGNATE FLAG IN RADMODES
  TS RADMODES # BEFORE CALLING REMODE
  CA REMODBIT
  ADS RADMODES # SHOW THAT REMODING IS ON.
  TCF NOR29NOW # CONTINUE SERVICER FUNCTIONS.

SETPRPOS CA ONE
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR PREPOS29 # TASK TO SET TRUNNION ANGLE TO 180 DEG.

  CA REPOSBIT
  ADS RADMODES # SHOW THAT REPOSITIONING IS ON.
  TCF NOR29NOW

# Page 597
# FORCE RENDEZVOUS RADAR INTO MODE 2.

R29REM0J CA ONE
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR REMODE  # REMODE MUST RUN AS A TASK.

  TC BANKCALL # WAIT FOR END OF REMODING
  CADR RADSTALL

  TCF ENDOFJOB # BAD EXIT CAN'T HAPPEN.
  TCF ENDOFJOB

# TASK TO PREPOSITION THE RR TRUNNION ANGLE TO -180 DEG.

  SETLOC R29S1
  BANK

PREPOS29 CA NEGMAX  # -180 DEG.
  TC RRTONLY  # DRIVE TRUNNION CDU.
  CS REPOSBIT # SHOW THAT REPOSITIONING IS OFF.
  MASK RADMODES
  TS RADMODES
  TCF TASKOVER

# COMPUTE THE LINE-OF-SIGHT AND LOS VELOCITY, AND PASS THEM TO THE R29DODES LOOP.

  SETLOC R29
  BANK

R29.LOS  EXTEND
  DCS PIPTIME
  DXCH MPAC
  EXTEND
  DCA TIME2
  DAS MPAC  # (MPAC) = T-PIPTIME, SCALED B-28.
  TS MODE  # SET MODE TO DOUBLE PRECISION.
  CA MPAC +1
  EXTEND
  MP BIT12
  DXCH MPAC  # T-PIPTIME NOW SCALED B-17.
  TC INTPRET
# Page 598
# LOSCMFLG = 0 MEANS THAT THE DESIGNATION IS READY FOR NEW DATA.  SETTING LOSCMFLG MAKES IT GO AWAY SO SETUP29D CAN
# START IT UP WHEN THE DATA IS IN PLACE.

  PDVL VSU  # PUSH DOWN T-PIPTIME
   V(CSM)
   V  # LOSVEL = V(CSM) - V
  PDDL VXSC  # SWAP LOSVEL FOR T-PIPTIME, MULTIPLY THEM
  VAD VSU  #  AND ADD THE RESULT TO R(CSM) - R TO GET
   R(CSM)  #  AN UP-TO-DATE LOS VECTOR IN SM AXES.
   R
  BOFSET EXIT  # (BOFSET DOES ITS THING INHINTED.)
   LOSCMFLG # IF DESIGNATE LOOP IS OFF, CHANGE LOSCM-
   SETUP29D # FLG TO ON AND GO TO SET UP NEW DATA.
  TCF NOR29NOW # IF DES. LOOP IS ON, LET IT USE OLD DATA.

SETUP29D STOVL LOSSM  # LINE-OF-SIGHT VECTOR, STABLE MEMBER AXES
   0
  VXSC
   .5SECB17
  STORE LOSVDT/4 # 1/2 SECOND'S WORTH OF LOS VELOCITY.
  CLEAR EXIT
   LOSCMFLG # LET R29DLOOP USE NEW DATA.

  CS STATE
  MASK OLDESBIT
  EXTEND
  BZF NOR29NOW # BRANCH IF R29 DES. LOOP IS REQUESTED.
  INHINT
  ADS STATE  # OTHERWISE REQUEST IT NOW.

  CCS PIPCTR  # SEE IF TASK SHOULD BE OFFSET ONE SECOND.
  CS SUPER110 # -96D +100D = 4.
  AD 1SEC  # 0 +100D = 100D.
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR BEGDES29 # START BEGDES29 TASK ASAP.

  TCF NOR29NOW # RELINT AND CONTINUE SERVICER FUNCTIONS.

.5SECB17 2DEC 50 B-17

# Page 599
# R29 DESIGNATE JOB AND TASK MACHINERY.  TASK RECURS EVERY .5 SEC UNTIL DESIGNATE IS CALLED OFF; IT MAY WAIT FOR A
# CENTISECOND OR TWO IF IT COMES UP WHILE SETUP29D IS SUPPLYING NEW DATA.

  BANK 24
  SETLOC P20S
  BANK

  COUNT* $$/R29

BEGDES29 CAF PRIO21
  TC NOVAC
  EBANK= LOSVDT/4
  2CADR R29DODES # START R29DODES JOB TWICE A SECOND.

R29DLOOP CAF .5SEC
  TC VARDELAY

  CS RADMODES
  MASK DESIGBIT
  CCS A
  TCF TASKOVER # QUIT IF DESIGNATION IS CALLED OFF.

  CS FLAGWRD2
  MASK LOSCMBIT
  EXTEND
  BZF +3  # BRANCH IF SETUP29D'S SUPPLYING NEW DATA.
  ADS FLAGWRD2 # SET LOSCMFLG:  SHOW THAT DES. LOOP IS ON.
  TCF BEGDES29

  CA ONE
  TCF R29DLOOP +1 # WAIT A CENTISECOND FOR NEW DATA.
# Page 600
# R29DODES:  RR DESIGNATION LOOP FOR R29
#
# THIS ROUTINE DOES MUCH THE SAME THING AS DODES, BUT A GREAT DEAL FASTER.  IT TAKES THE NON-UNITIZED LOS VECTOR
# IN STABLE MEMBER COORDINATES (LOSSM) AND A DELTA-LOS IN SM AXES (LOSVDT/4) WHICH IS 1/2 SEC TIMES LOS VELOCITY,
# AND DEVELOPS THE SHAFT AND TRUNNION COMMANDS USING SINGLE PRECISION AS MUCH AS POSSIBLE, AND INTERPRETIVE NOT AT
# ALL.  THE UNIT(LOSM + LOSVEL * 1 SEC) IS COMPUTED IN DP AND TRANSFORMED TO NAV BASE COORDINATES IN DOUBLE PRE-
# CISION (USING SP SINES AND COSINES OF CDU ANGLES), AND THE REST IS DONE IN SP.
#
# THE FUNCTIONAL DIFFERENCE IS THAT R29DODES ALWAYS CLEARS LOSCMFLG WHEN IT ENDS, AND IT STARTS UP THE R29READ
# TASK WHEN LOCK-ON IS ACHIEVED.

  BANK 32
  SETLOC F2DPS*32
  BANK

  COUNT* $$/R29
  EBANK= LOSVDT/4

R29DODES CA ONE
  TS TANG  # INDICATE 1ST PASS THRU VECTOR LOOP.
  CA FIVE

R29DVBEG CCS A  # COUNT DOWN BY TWO'S IN VECTOR LOOP.
  TS Q
  CCS TANG
  TCF R29DPAS1 # DO THIS ON 1ST PASS THRU LOOP.

  EXTEND   # (A "PASS" HERE MEANS 3 TIMES AROUND).
  INDEX Q
  DCA LOSVDT/4
  INDEX Q
  DAS LOSSM  # ADVANCE LOS VECTOR 1/2 SECOND.

R29DPAS1 EXTEND
  INDEX Q
  DCA LOSSM
  INDEX Q  # MOVE CURRENT LOS (1ST PASS) OR LOS PRO-
  DXCH MPAC +1  # JECTED 1/2 SEC AHEAD (2ND PASS).
  CCS TANG
  TCF R29DVEND # BUG OUT HERE IN 1ST PASS.

  EXTEND
  INDEX Q
  DCA LOSVDT/4
  INDEX Q
  DAS MPAC +1  # PROJECT LOS 1 SECOND AHEAD (2ND PASS).

R29DVEND CCS Q
  TCF R29DVBEG # BRANCH TO CONTINUE VECTOR LOOP.

# Page 601
# UNITIZE AND TRANSFORM TO NAV BASE AXES THE PRESENT LOS (1ST PASS) OR THE 1-SEC PROJECTED LOS (2ND PASS).

  DXCH MPAC +1
  DXCH MPAC
  CA R29FXLOC # = ADRES INTB15 + -34D
  TS FIXLOC
  TC USPRCADR # WITH FIXLOC ARMED FOR LENGTH AND LENGTH
  CADR UNIT  # SQUARED, BORROW UNITIZING ROUTINE.
  TC MPACVBUF # MOVE UNIT(LOS) TO AX*SR*T ARG AREA.

  CCS TANG
  TCF +2
  TCF GOTANGLS # GET CDU ANGLES ONLY AFTER 1ST PASS.
  INHINT   # ENSURE CONSISTENT CDU READINGS.
  EXTEND
  DCA CDUT
  DXCH SAVECDUT # TRUNNION AND SHAFT ANGLES.
  CA CDUY
  TS CDUSPOT
  CA CDUZ
  TS CDUSPOT +2
  CA CDUX
  TS CDUSPOT +4 # CDU ANGLES IN FUNNY ORDER FOR AX*SR*T.
  TC BANKCALL
  CADR QUICTRIG # GET SINES AND COSINES OF CDU ANGLES.

GOTANGLS CS THREE
  TC BANKCALL
  CADR AX*SR*T  # TRANSFORM UNIT LOS TO NB AXES (ULOSNB).

  CCS TANG
  TCF +2
  TCF R29DPAS2 # GO TO RR COMMAND COMP. AFTER 2ND PASS.

# Page 602
# COMPUTE COSINE OF THE ANGLE BETWEEN THE PRESENT LOS AND THE RR BORESIGHT VECTOR, AND SET THE SELFTRACK ENABLE IF
# THE COSINE IS APPROXIMATELY COS(.5 DEG) OR GREATER (I.E., SMALLER ANGLE).

  INHINT
  TS TANG  # INDICATE 2ND PASS THRU VECTOR LOOP.
  CA SAVECDUT
  TC SPCOS
  TS PUSHLOC  # PUSHLOC = COS T.
  CS SAVECDUT
  TC SPSIN
  TS MODE  # MODE = -SIN T.
  EXTEND
  MP VBUF +2  # FORM - SIN T ULOSNBY.
  DXCH MPAC
  CA SAVECDUT +1
  TC SPSIN
  TS SAVECDUT # SAVECDUT NOW = SIN S.
  EXTEND
  MP PUSHLOC
  EXTEND
  MP VBUF  # FORM SIN S COS T ULOSNBX.
  DAS MPAC
  CA SAVECDUT +1
  TC SPCOS
  TS SAVECDUT +1 # SAVECDUT +1 NOW = COS S.
  EXTEND
  MP PUSHLOC
  EXTEND
  MP VBUF +4  # FORM COS S COS T ULOSNBZ.
  DAS MPAC  # COS(ERROR) = ULOSNB . (SIN S COS T,
  EXTEND   # -SIN T, COS S COS T).
  DCA MPAC
TESTCOS  DAS MPAC  # (ULOSNB IN VBUF WAS A HALF-UNIT VECTOR).
  CCS A  # TEST FOR + OVERFLOW, NONE, OR MINUS.
  CA BIT14
  NOOP
  EXTEND
  WOR CHAN12  # IF PLUS OVERFLOW, SET SELFTRACK ENABLE.
  RELINT
  TCF R29DVBEG -1 # MAKE 2ND PASS THRU VECTOR LOOP.

# Page 603
# COMPUTE SHAFT AND TRUNNION COMMANDS TO NULL HAVE THE ERROR IN HALF A SECOND.

R29DPAS2 CA SAVECDUT +1
  EXTEND
  MP VBUF  # FORM COS S ULOSNB'X.
  DXCH TANG
  CS SAVECDUT
  EXTEND
  MP VBUF +4  # FORM - SIN S ULOSNB'Z.
  DAS TANG  # RAW SHAFT CMD = ULOSNB' . (COS S, 0,
  CS MODE  # - SIN S)
  EXTEND
  MP SAVECDUT
  EXTEND
  MP VBUF  # FORM SIN T SIN S ULOSNB'X.
  DXCH MPAC
  CA PUSHLOC
  EXTEND
  MP VBUF +2  # FORM COS T ULOSNB'Y.
  DAS MPAC
  CS MODE
  EXTEND
  MP SAVECDUT +1
  EXTEND
  MP VBUF +4  # FORM SIN T COS S ULOSNB'Z.
  DAS MPAC  # RAW TRUNNION CMD = ULOSNB'.
  CA MPAC  # (SIN S SIN T, COS T, SIN S COS T).
  EXTEND
  MP RR29GAIN
  XCH TANG  # STORE REFINED T CMD, GET RAW S CMD.
  EXTEND
  MP RR29GAIN
  TS TANG +1  # STORE REFINED S CMD.

# Page 604
# WHETHER OR NOT TRACKING WAS ENABLED THIS TIME, CHECK ON RR DATA-GOOD.  IF PRESENT, STOP DESIGNATING AND START
# READING DATA FROM THE RENDEZVOUS RADAR.

DGOOD?  CAF BIT4
  EXTEND
  RAND CHAN33  # GET RR DATA-GOOD BIT.
  INHINT   # (MAINLY FOR RROUT).
  EXTEND
  BZF R29LOKON # BRANCH IF DATA-GOOD IS PRESENT.

  TC BANKCALL
  CADR RROUT  # DATA-GOOD IS ABSENT, SO SEND COMMANDS.
  TCF END29DOD

R29LOKON CS DESIGBIT
  MASK RADMODES
  TS RADMODES # SHOW THAT DESIGNATION IS OVER.
  CS BIT2
  EXTEND
  WAND CHAN12  # DISABLE RR ERROR COUNTERS.
  CA READRBIT
  ADS FLAGWRD3 # SHOW THAT READING HAS BEEN REQUESTED.
  CCS PIPCTR  # SEE IF TASK SHOULD BE OFFSET 1 SEC.
  CS SUPER110 # -96D + 100D = 4.
  AD 1SEC  # 0 + 100D = 100D.
  TC WAITLIST
  EBANK= LOSCOUNT
  2CADR R29READ  # START READING TASK AND JOB.

END29DOD CS LOSCMBIT
  MASK FLAGWRD2
  TS FLAGWRD2 # ALWAYS CLEAR LOSCMFLG.
  TCF ENDOFJOB

R29FXLOC ADRES INTB15+ -34D
RR29GAIN DEC -.53624
LOSVDT/4 EQUALS LOSVEL
LOSSM  EQUALS RRTARGET
SAVECDUT EQUALS  MLOSV

# Page 605
# RR READING IS SET UP BY R29DODES WHEN IT DETECTS RR LOCK-ON

  BANK 24
  SETLOC P20S
  BANK

  COUNT* $$/R29

  EBANK= LOSCOUNT

R29READ  CAF PRIO26  # CALLED BY WAITLIST
  TC NOVAC
  EBANK= LOSCOUNT
  2CADR R29RDJOB # START JOB TO READ AND DOWNLINK FOR R29.

  CA 2SECS
  TC VARDELAY

  CA FLAGWRD3 # 2 SECONDS LATER, SEE IF READING IS STILL
  MASK READRBIT # ALLOWED (NO TRACKER FAIL ETC.)
  CCS A
  TCF R29READ  # IT'S OK:  CALL IT AGAIN.
  TCF TASKOVER # IT AIN'T:  WAIT FOR REDESIGNATE.

R29RDJOB CA FLAGWRD3 # CALLED VIA NOVAC.
  MASK NR29FBIT
  CCS A  # TEST "NOR29FLG".
  TCF ENDRRD29 # R29 IS NOW OVER, STOP AT ONCE.

  CA RADMODES
  MASK AUTOMBIT
  CCS A  # TEST RR-NOT-IN-AUTO-MODE BIT.
  TCF ENDRRD29 # ASTRO TOOK RR OUT OF AUTO MODE.

  TC BANKCALL
  CADR RRRDOT  # INITIATE READING OF RANGE RATE.
  TC BANKCALL
  CADR RADSTALL # GOT TO SLEEP UNTIL IT'S READY.
  TCF ENDRRD29 # BAD READ; REDESIGNATE.

# Page 606
# R29 RADAR READING CONTINUED.

  DXCH TIMEHOLD
  DXCH MPAC  # TIME OF RR READING, FOR DOWNLINK.
  INHINT   # BE SURE OF 5 CONSISTENT CDU ANGLES.
  EXTEND
  DCA CDUT
  DXCH MPAC +2  # RRCDU ANGLES AT RR READ, FOR DOWNLINK.
  EXTEND
  DCA CDUY
  DXCH MPAC +4  # MPAC'S 7 WORDS ARE BUFFERED FOR COPYCYCLE.
  CA CDUX
  TS MPAC +6  # IMUCDU ANGLES AT RR READ, FOR DOWNLINK.

R29RANGE TC BANKCALL
  CADR RRRANGE  # INITIATE READING OF RR RANGE.
  TC BANKCALL
  CADR RADSTALL # GO TO SLEEP UNTIL IT'S READY.
  TCF R29RRR?  # BAD READ OR SCALE CHANGE ... WHICH?

  INHINT
  DXCH DNRRANGE # COPYCYCLE TO LAY OUT NEW R29 DOWNLINK.
  DXCH RM
  DXCH MPAC
  DXCH MKTIME
  DXCH MPAC +2
  DXCH TANGNB
  DXCH MPAC +4
  DXCH AIG
  CA MPAC +6
  TS AOG
  CA ONE
  TS TRKMKCNT # SHOW THAT DOWNLINK DATA IS CONSISTENT.
  TCF ENDOFJOB

R29RRR?  CS FLAGWRD5
  MASK BIT10
  CCS A  # WAS IT A SCALE CHANGE (REAL OR PHONY)?
  TCF ENDRRD29 # NO, A BAD READ; REDESIGNATE.
  TC DOWNFLAG
  ADRES RNGSCFLG
  TCF R29RANGE # YES; CLEAR FLAG AND READ AGAIN.

ENDRRD29 CA ZERO  # TROUBLE MADE US COME HERE TO LEAVE THE
  TS TRKMKCNT # RR-READING MODE.  DISCREDIT DOWNTEL.
  TC DOWNFLAG
  ADRES READRFLG
  CS BIT14
  EXTEND
# Page 607
  WAND CHAN12  # REMOVE TRACK-ENABLE DISCRETE.
  TCF ENDOFJOB

# Page 608
# W-MATRIX MONITOR

  BANK 31
  SETLOC VB67
  BANK
  COUNT* $$/EXTVB

  EBANK= WWPOS

V67CALL  TC INTPRET
  CALL
   V67WW
  EXIT
  EXTEND   # SAVE THE PRESENT N99 VALUES FOR
  DCA WWPOS  # COMPARISON AFTER THE DISPLAY
  DXCH WWBIAS +2
  EXTEND
  DCA WWVEL
  DXCH WWBIAS +4
  EXTEND
  DCA WWBIAS
  DXCH WWBIAS +6
V06N99DS CAF V06N99
  TC BANKCALL
  CADR GOXDSPF
  TCF ENDEXT
  TCF V6N99PRO
  TCF V06N99DS
V6N99PRO ZL
  CA FIVE
N99LOOP  TS Q
  INDEX Q
  CS WWPOS
  INDEX Q
  AD WWPOS +6
  ADS L
  CCS Q  # THE SUM OF ALL DIFFERENCES MUST BE ZERO.
  TCF N99LOOP
  LXCH A
  EXTEND
  BZF V06N9933
  TC UPFLAG
  ADRES V67FLAG

V06N9933 TC INTPRET
  BON EXIT
   V67FLAG
   +2
  TCF ENDEXT
  DLOAD
# Page 609
   WWPOS
  SL4 SL1
  STODL 0D
   WWVEL
  STODL 2D
   WWBIAS
  SL   # SHIFT FROM NOUN SCALING (B-5) TO
   10D  # INTERNAL SCALING (B+5)
  STORE 4D
  BON LXA,1
   SURFFLAG
   V67SURF
   0D
  SXA,1 LXA,1
   WRENDPOS
   2D
  SXA,1 GOTO
   WRENDVEL
   V67CLRF
V67SURF  LXA,1 SXA,1
   0D
   WSURFPOS
  LXA,1 SXA,1
   2D
   WSURFVEL
V67CLRF  LXA,1 SXA,1
   4D
   WTRUN
  SXA,1
   WSHAFT
  CLEAR EXIT
   RENDWFLG
  TCF ENDEXT
V67WW  STQ BOV
   S2
   +1
  CLEAR CALL
   V67FLAG
   INTSTALL
  SSP DLOAD
   S1
  DEC 6
   ZEROVECS
  STORE WWPOS
  STORE WWVEL
  STORE WWBIAS
  AXT,1
  DEC 54
NXPOSVEL VLOAD* VSQ
   W +54D,1
# Page 610
  GOTO
   ADDPOS
V06N99  VN 0699

  SETLOC VB67A
  BANK
  COUNT* $$/EXTVB

ADDPOS  DAD
   WWPOS
  STORE WWPOS
  VLOAD* VSQ
   W +108D,1
  DAD
   WWVEL
  STORE WWVEL
  VLOAD* VSQ
   W +162D,1
  DAD
   WWBIAS
  STORE WWBIAS
  TIX,1 SQRT
   NXPOSVEL
  SR   # SHIFT FROM INTERNAL SCALING (B+5) TO
   10D  # NOUN SCALING (B-5)
  STODL WWBIAS
   WWVEL
  SQRT
  STODL WWVEL
   WWPOS
  SQRT
  STORE WWPOS
  BOV GOTO
   +2
   V67XXX
  DLOAD
   DPPOSMAX
  STORE WWPOS
  STORE WWVEL
  STORE WWBIAS
V67XXX  DLOAD DSU
   WWPOS
   FT99999
  BMN DLOAD
   +3
   FT99999
  STORE WWPOS
  LXA,1 SXA,1
   S2
   QPRET
# Page 611
  EXIT
  TC POSTJUMP
  CADR INTWAKE

FT99999  2DEC 30479 B-19

# Page 612
  BANK 25
  SETLOC RADARUPT
  BANK
  COUNT* $$/RRUPT

  EBANK= LOSCOUNT

R12LITES CA ONE
  MASK  IMODES33
  CCS A
  TCF ISWRETRN

  TC HLIGHT
  TC HLIGHT -3
  TCF ISWRETRN

RADLITES CA BIT1
  MASK IMODES33
  CCS A
  TC Q

  CS BIT5
  AD ITEMP1
  CCS A
  CS ONE
  TCF VLIGHT

  TCF RRTRKF

HLIGHT  TS ITEMP5  # ZERO ITEMP5 FOR H INDEX

  CA HLITE
  TS L

  CA FLGWRD11
  MASK SCABBIT
  CCS A
  TCF ONLITES
  CA LRALTBIT
BOTHLITS MASK RADMODES
  CCS A
  TCF ONLITES

  CA FLGWRD11
  INDEX ITEMP5
  MASK HFLSHBIT
  CCS A
  TCF RRTRKF
# Page 613
LITIT  EXTEND
  QXCH ITEMP6
  TC TRKFLON +1

  EXTEND
  QXCH ITEMP6
  TCF RRTRKF


ONLITES  INDEX ITEMP5
  CS HFLSHBIT
  MASK FLGWRD11
  TS FLGWRD11

  CA L
  TCF LITIT
VLIGHT  TS ITEMP5
  CA VLITE
  TS L
  CA BIT8
  TCF BOTHLITS

HLITE  EQUALS BIT5
VLITE  EQUALS BIT3

# *** END OF LEMP20S .127 ***

Messung V0.5 in Prozent
C=52 H=100 G=79

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.137Angebot  (Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-11) ¤

*Eine klare Vorstellung vom Zielzustand






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1128594
#Domains=1976912