Quellcodebibliothek Statistik Leitseite illegal    image not shown  

Quelle  P40-P47.agc   Sprache: Apollo

 

# Copyright: Public domain.
# Filename: P40-P47.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 684-736
# Mod history: 2009-05-11 RSB Adapted from the Colossus249/ file
# of the same name, using Comanche055 page
# images.
# 2009-05-20 RSB In S20.1, a DMP DDV was corrected to DMPR DDV.
# 2009-05-22 RSB In BESTTRIM, TC PACTOFF corrected to
# TS PACTOFF.
# 2009-05-23 RSB Prior to the 2CADR at T5IDLDAP, added an
# SBANK.
#
# 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 055 of AGC program Comanche by NASA
# 2021113-051.  10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A

# Page 684
# PROGRAM DESCRIPTION ** P40CSM **

  EBANK= DAPDATR1
  BANK 31
  SETLOC P40S
  BANK

  COUNT 24/P40

P40CSM  TC DOWNFLAG
  ADRES ENG2FLAG

  TC INTPRET
  SLOAD BOFF
   ECSTEER  # IS THIS AN EXTERNAL DELTA V BURN
   XDELVFLG
   P40S/C  # NO CSTEER = ECSTEER
  DLOAD   # YES CSTEER = ZERO
   HI6ZEROS
P40S/C  STODL CSTEER
   FENG  # SET UP THRUST FOR P40 20,000 LBS
P40S/F  STODL F  # P41 ENTERS HERE
   TIG  # ORIGINAL TIG MAY BE SLIPPED BY P40S/SV
  STORE NOMTIG  # SET ORIGINAL TIME OF IGNITION FOR S40.9

  EXIT
  TC BANKCALL
  CADR R02BOTH  # IMU STATUS CHECK

P40PVA  TC INTPRET
  CALL
   S40.1  # COMPUTE VGTIG,UT
  CALL
   S40.2,3  # COMPUTE PREFERRED ATTITUDE
  SET EXIT
   PFRATFLG
P40SXTY  TCR SETMINDB -1 # NARROW DEADBAND FOR MANEUVER (EBANK6)
  RELINT
  TC BANKCALL
  CADR R60CSM  # ATTITUDE MANEUVER
  CS ONE  # FOR UPDATEVG
  TS NBRCYCLS
  TC UPFLAG
  ADRES TIMRFLAG # ALLOW CLOCKTASK

  TC P41/P40
  TC P41/DSP  # P41

P40TTOG  CAF V06N40  # INITIALIZE FOR CLOCKTASK WHICH IS CALLED
# Page 685
  TS NVWORD1  # BELOW

  TC INTPRET
  VLOAD ABVAL  # FOR R2
   VGTIG
  STODL VGDISP
   HI6ZEROS
  STORE DVTOTAL
  EXIT

  EXTEND
  DCA STEERADS # SET FOR UPDATEVG AND TEST FOR STEERING
  DXCH AVEGEXIT # AFTER AVERAGE G

P40GMB  CAF P40CKLS2 # (4.1 PROTECTION)
  TC BANKCALL
  CADR GOPERF1
  TCF POST41  # V34
  TCF TST,TRIM # V33
TRIMONLY CS BIT1  # SET MRKRTEMP FOR GIMBAL TRIM (-1)
 +1 TS MRKRTMP  # ENTRY FROM TST,TRIM

  CAF ZERO  # SET CNTR +0 FOR RESTART LOGIC IN S40.6
  TS CNTR  # +0 SAYS NORMAL ENTRY
     # +1 (PRE40.6) SAYS RESTART ENTRY

  CAF ONE
  TC WAITLIST
  EBANK= DAPDATR1
  2CADR S40.6

  CCS MRKRTMP  # TEST TO FIND TIME TO WAIT FOR GIMBAL TEST
  CAF 18SEC  # PLUS, DELAY FOR 18 SECONDS
  TCF +2  # HOLE
  CAF 5SEC  # DELAY FOR TRIM ONLY TASK
  TC BANKCALL
  CADR DELAYJOB
  TC 2PHSCHNG
  OCT 40026  # 6.2 = PRE40.6(-0CS), CLOKTASK(100CS)
  OCT 00234  # 4.23 = P40S/SV (PRIO12)
P40S/RS  CAF ONE
  TC WAITLIST # P41/SDP
  EBANK= TIG
  2CADR CLOKTASK

  RELINT

P40S/SV  TCR E7SETTER # JOB, 4.23 PRETECTS, PREO12
  EBANK= TIG
# Page 686
  TC INTPRET
  DLOAD DSU
   TIG
   SEC29.96
  STORE TDEC1

  CALRB   # RETURN IN BASIC
   MIDTOAV1
  TCF +2
  TC P40SNEWM # INTEGRATION TIME GREATER THAN ALLOWED
P40SET  EXTEND
  DCA MPAC  # DELTA TIME TO PREREAD (INT.INIT.)
  DXCH P40TMP
  EXTEND
  DCS 5SECDP  # FOR TIGBLNK
  DAS P40TMP
  EXTEND
  DCA P40TMP
  TC LONGCALL
  EBANK= TIG
  2CADR TIGBLNK

  TC PHASCHNG
  OCT 20214  # 4.21 = TIGBLNK (P40TMP CS)

  TCF ENDOFJOB
P40BLNKR TC BANKCALL
  CADR CLEANDSP # REMOVE RESIDUE
  TCF ENDOFJOB
  EBANK= TIG
P40SNEWM EXTEND
  DCA PIPTIME1
  DXCH TIG  # SET NEW TIG FOR 06 40
  EXTEND
  DCA SEC29.96
  DAS TIG
  TCF P40SET  # FOR LONGCALL OF TIG-30 (OR -35)

  EBANK= DAPDATR1
POSTBURN CAF V16N40
  TC BANKCALL
  CADR REFLASH
  TCF POST41  # V34 GO FINISH
  TCF P40RCS  # PROCEED
  TCF POSTBURN # RECYCLE
P40RCS  EXTEND   # V99N40 ENTERS HERE ON A P40 BYPASS SPS
  DCA ACADN85
  DXCH AVEGEXIT
  CAF 2SECS  # WAIT FOR CALCN85 VIA AVEGEXIT
  TC BANKCALL
# Page 687
  CADR DELAYJOB

P40MINDB TCR SETMINDB -1
  RELINT
TIGNOW  TC PHASCHNG
  OCT 05024  # TYPE C GROUP 4 BELOW FOR NOUN 85
  OCT 20000  # PRIO 20
  CAF V16N85B
  TC BANKCALL
  CADR REFLASH
  TCF POST41  # FINISH P40/P41
  TCF POST41  # V03 PROCEED WITH REST OF THE CLEAN-UP
  TCF TIGNOW  # V32 NOT GSOP RESPONSE BUT REDISPLAY N85

POST41  EXTEND
  DCA SERVCADR
  DXCH AVEGEXIT
  TCF GOTOPOOH

MINDB  DEC 46
MAXDB  DEC 455
  EBANK= DAPDATR1
 -1 INHINT
SETMINDB CA CDUX  # ROUTINE FOR SETTING
  TS THETADX  # THE MINIMUM DEADBAND
  EXTEND   # IN AUTOPILOT
  DCA CDUY
  DXCH THETADY
  CA MINDB  # SHOULD BE CALLED UNDER
  TS ADB  # INTERRUPT INHIBITED
  CS BIT4  # EBANK = E6
  MASK DAPDATR1
  TS DAPDATR1
  TC Q

  EBANK= DAPDATR1
 -1 INHINT
SETMAXDB CA MAXDB  # ROUTINE FOR SETTING
  TS ADB  # THE MAXIMUM DEADBAND IN AUTOPILOT
  CS DAPDATR1
  MASK BIT4  # SHOULD BE CALLED UNDER
  ADS DAPDATR1 # INTERRUPT INHIBITED
  TC Q  # EBANK = E6

# Page 688
# PROGRAM DESCRIPTION ** P41CSM **

  SETLOC P40S2
  BANK

  EBANK= DAPDATR1
  COUNT 24/P41

P41CSM  TC UPFLAG
  ADRES ENG2FLAG # SET FOR RCS

  TC INTPRET
  DLOAD
   HI6ZEROS # FOR P41 CSTEER =0
  STORE CSTEER

  DLOAD BON
   FRCS2  # 2JET THRUST FOR S40.1
   NJETSFLG
   P40S/F  # NJETS = 1 2-JET
  DAD GOTO  # NJETS = 0 4-JET
   FRCS2
   P40S/F

  SETLOC P40S
  BANK

P41/P40  CS MODREG
  MASK ONE  # P41EXITS AT CALL LOC +1
  EXTEND
  BZF +2  # P41
  INCR Q  # P40 EXITS AT CALL LOC +2
  TC Q

TTG/0  CAF PRIO20  # TASK (4.4 PROTECTS IN P41)
  TC NOVAC
  EBANK= DAPDATR1
  2CADR TIGNOW

P40CLK  TC DOWNFLAG
  ADRES TIMRFLAG

  TCF TASKOVER

P41/DSP  CAF V06N85B  # SET UP FOR NONFLASH V 06 N85 BY CLOCKJOB
  TS NVWORD1

  TC INTPRET
# Page 689
  CALL   # COMPUTE
   P40CNV85 # VGTIG IN CTRL COORDS
  EXIT
  EXTEND   # DO CONTROL COORD CALCULATION AFTER AVEG
  DCA ACADN85
  DXCH AVEGEXIT
  TC 2PHSCHNG
  OCT 40036  # 6.3=CLOKTASK(100CS)
  OCT 234  # 4.23=P40S/SV(PRIO12)

  TCF P40S/RS
P41REDSP CAF V16N85B  # ENTER FROM P41 SIDE OF TIGAVEG
  TS NVWORD1  # REDISPLAY NONFLASHING
  CAF SEC29.96 +1
  TC WAITLIST
  EBANK= DAPDATR1
  2CADR TTG/0

  CS BIT3
  TCF TTGPHS
P40CNV85 STQ SETPD
   QTEMP1
   0
  VLOAD PUSH
   VGPREV  # EQUALS VGTIG (TARGETTING INPUT)
  CALL
   S41.1
  STCALL VGBODY
   QTEMP1

  EBANK= DAPDATR1
CALCN85  TC INTPRET
  CALL
   UPDATEVG # NEW VG, S40.8 (+MAYBE S40.9)
  CALL
   P40CNV85 # COMPUTE VGBODY
  EXIT
  TC SERVXT
FENG  2DEC 9.1188544 B-7 # SPS THRUST (20500LBS), SC.AT B+7 NEWT/E4

FRCS2  2DEC .087437837 B-7 # RCS ULLAGE (199.6COS10 LBS), SC.AT

     # B+7 NEWTONS/E+4
SEC24.96 DEC 2496
SEC29.96 2DEC 2996

18SEC  DEC 1800
P40CKLS2 OCT 204
40CST5  OCT 37730  # 40 CS FOR THE T5 CLOCK
OCT12  = TEN
# Page 690
V1683  VN 1683
V06N85B  VN 0685
V16N85B  VN 1685
V06N40  VN 0640
V16N40  VN 1640
OCT27/24 OCT 27
OCT53  OCT 53
OCT35  OCT 35
  EBANK= DAPDATR1
T5IDL24  2CADR T5IDLOC

3MDOT  DEC 86.6175796 B-16 # 3SEC MASS LOSS (63.8 LBS/SEC), SC.AT
     # B+16 KB/SEC (NOT, EMDOT IS PAD-LOADED,
     # BUT 3MDOT IS NOT A CRITICAL QUANTITY, SO
     # IT CAN REMAIN IN FIXED MEMORY)
TST,TRIM CAF BIT1  # SET UP FOR GIMB DRIVE TEST AND TRIM (+1)
  TCF TRIMONLY +1
TIGBLNK  CAF 5SEC  # CALL TIGAVEG IN FIVE SEC AT TIG-30
  TC WAITLIST
  EBANK= TIG
  2CADR TIGAVEG

  CAF ZERO  # DISABLE HERE, NOT IN P40BLNKR
  TS NVWORD1

  CAF PRIO14
  TC NOVAC
  EBANK= TIG
  2CADR P40BLNKR # DON'T PROTECT -- RESTARTS BLANK DSKY

  CS OCT37  # 4.37 = TIGAVEG (500CS)
P40TSK  TC NEWPHASE
  OCT 4
  TC TASKOVER

  EBANK= TIG
ACADN83  2CADR CALCN83

  EBANK= TIG
SERVCADR 2CADR SERVEXIT

  EBANK= DAPDATR1
ACADN85  2CADR CALCN85

# Page 691
# PROGRAM DESCRIPTION ** P47CSM **

  COUNT 24/P47

  EBANK= TIG
P47CSM  TC BANKCALL # IMU STATUS CHECK
  CADR R02BOTH
  TC INTPRET
  CALRB
   MIDTOAV2
  CA MPAC +1  # DELTA TIME TO RPEREAD (LESS THAN 100
  TS P40TMP  # CS, WITH A TPAGREE, INT.INIT.)
  TC WAITLIST
  EBANK= TIG
  2CADR TIGON  # TIGON IS REQUIRED TO MATHCHTAT AND AVEG

  TC PHASCHNG
  OCT  40574  # A, 4.57 = TIGON (P40TMP CS)
  TCF ENDOFJOB

  EBANK= P40TMP
TIGON  EXTEND
  DCA ACADN83
  DXCH AVEGEXIT
  CAF PRIO30  # FORCE ZEROING OF N83 BEFORE SERVICER
  TC NOVAC
  EBANK= TIG
  2CADR P47BODY

  CS BIT2  # 4.2 = PRECHECK (-0CS), P47BODY (PRIO30)
  TCF TTGPHS

  EBANK= TIG
CALCN83  TC INTPRET
  SETPD   # SET UP PUSHLIST FOR S41.1
   0
  VLOAD VAD
   DELVCTL
   DELVREF
  STORE DV47TEMP # FOR COPYCYCLE BELOW
  PUSH CALL
   S41.1
  STCALL DELVIMU
   S11.1  # CALC. VI, H, HDOT FOR NOUN 62
  EXIT
  TC PHASCHNG
  OCT 10035
# Page 692
  CAF FIVE
  TC GENTRAN
  ADRES DV47TEMP
  ADRES DELVCTL

  TC SERVXT
P47BODY  TC INTPRET
  VLOAD
   HI6ZEROS
  STORE DELVIMU  # CLEAR DISPLAY AND ACCUMULATOR STORAGE
  STORE DELVCTL  # UPON INITIATION OR ENTER RESPONSE
  EXIT
P47BOD  CAF PRIO15  # LOWER PRIO THAN CALCN83 (20)
  TC PRIOCHNG # TO PREVENT INTERRUPTION OF CALCN83
  TC PHASCHNG
  OCT 05024  # TYPE C GROUP 4 BELOW FOR NOUN 83
  OCT 15000  # PRIO 15
P47/DSP  CAF V1683
  TC BANKCALL
  CADR GOFLASH
  TC GOTOPOOH
  TC GOTOPOOH
  TCF P47BODY  # RECYCLE -- CLEAR ACCUMULATED VELOCITY

# Page 693
# ROUTINE ** TIG-30 ** DESCRIPTION

  EBANK= TIG
  COUNT 24/P40

TIGAVEG  TC P41/P40  # TASK (4.37 PROTECTS)
  TCF P41REDSP

  CAF V06N40  # UNBLANK DISPLAY
  TS NVWORD1

  CAF SEC24.96
  TC WAITLIST
  EBANK= TIG
  2CADR TIG-5

  CS SIX  # 4.6 = TIG-5 (2496CS), PRECHECK (-0CS)
TTGPHS  TC NEWPHASE # ENTRY FROM P41REDSP (P41) WITH A=-4, OR
  OCT 4  #       FROM TIGON    (P47) WITH A=-1

PRECHECK CCS PHASE5  # HAS SERVICER BEEN RESTARTED
  TCF TASKOVER # YES, DON'T START ANOTHER ONE
  TC POSTJUMP
  CADR PREREAD

# Page 694
# ROUTINE ** TIG-5 ** DESCRIPTION

  EBANK= TIG
TIG-5  CAF 5SEC
  TC WAITLIST
  EBANK= DAPDATR1
  2CADR TIG-0

  CS BIT9  # WILL CAUSE V99 FLASH
  TS NVWORD1

  TC 2PHSCHNG
  OCT 40074  # A, 4.7 = TIG-0 (500CS)
  OCT 00033  # A, 3.3 = S40.13 (PRIO20)

  CAF PRIO20
  TC FINDVAC
  EBANK= TGO
  2CADR S40.13

  TCF TASKOVER

# Page 695
# ROUTINES ** TIG-0 ** AND ** IGNITION ** DESCRIPTION

  EBANK= DAPDATR1 # TASK, 4.7 PHASE, OR 4.77 (-0CS) IN R40
TIG-0  CS FLAGWRD7 # SET IGN FLAG
  MASK BIT13
  ADS FLAGWRD7

  CAE FLAGWRD7 # CHECK ASTN FLAG FOR V99 RESPONSE
  MASK BIT12
  EXTEND
  BZF TASKOVER # WAIT FOR V99P

  CAF V06N40  # CLEAR THE V99 (IN CASE OF A RESTART
  TS NVWORD1  # DURING THE V99 SEQUENCE)

  TC PHASCHNG # V99P HAS COME ALREADY, DO IGNITION NOW
  OCT 00614  # A, 4.61 = IGNITION (-0CS) TBASE OLD

IGNITION CAE CDUX  # SAVE FOR ROLL DAP REFERENCE OGAD
  TS OGAD  # V99PJOB (CLOCKJOB) SETS UP IGNITION
  EXTEND   #  TASK (4.61 PROTECTION)
  DCA TIME2  # FOR RESTARTS
  DXCH TEVENT
  CS FLAGWRD5 # SET ENGONFLG
  MASK BIT7
  ADS FLAGWRD5
SPSON  CAF BIT13  # TURN ON SPS ENGINE
  EXTEND
  WOR DSALMOUT

IMPULCHK CAF BIT9  # CHECK FOR IMPULSIVE BURN
  MASK FLAGWRD2
  CCS A
  TCF IMPLBURN # IMPULSIVE
  CS FLAGWRD6 # NON-IMPULSIVE, SET STRULLSW FOR STEERULL
  MASK BIT13
  ADS FLAGWRD6

PREPTVC  CS OCT60000 # RESET T5 BITS
  MASK FLAGWRD6
  TS FLAGWRD6

  EXTEND   # KILL RCS
  DCA T5IDL24
  DXCH T5LOC

  CS THREE  # 4.3 = DOTVCON (40CS)
  TC NEWPHASE
  OCT 4

# Page 696
  TC FIXDELAY
  DEC 40  # 0.4 SECOND DELAY FOR THRUST BUILDUP

DOTVCON  CS BIT1  # SET TVCPHASE = TVCDAPON CALL (FRESHDAP)
  TS TVCPHASE
  CAF ZERO  # SET TVCEXECUTIVE PHASE
  TS TVCEXPHS
  CS OCT60000 # SET T5 BITS TO INDICATE TVC TAKEOVER ....
  MASK FLAGWRD6 # BITS 15,14 = 10
  AD BIT15
  TS FLAGWRD6

  CAF THREE  # 6.3 = CLOKTASK (100CS), DROPPING PRE40.6
  TS L  # WHICH IS HANDLED NOW BY REDOTVC
  COM
  DXCH -PHASE6

  EXTEND   # STORE RCS ATTITUDE ERRORS FOR USE IN
  DCS ERRORY  # INITIALIZING TVC ATTITUDE ERRORS
  DXCH ERRBTMP

  CS FIVE  # 4.5 = DOSTRULL (160 CS)
  TC NEWPHASE
  OCT 4

  CAF POSMAX  # SET TIME5 FOR STARTING RIGHT AWAY
  TS TIME5
  EXTEND
  DCA TVCON2C  # (TVCDAPON)
  DXCH T5LOC  # (KILLS RCS DAP)

  TC FIXDELAY # 0.4 + 1.6 = 2.0 SEC FOR ULLAGE-OFF AND
  DEC 160  #  STEERING (IF NON-IMPULSIVE)

DOSTRULL CAF BIT13  # CHECK STRULLSW FOR IMPULSIVE BURN
  MASK FLAGWRD6
  CCS A
  TCR STEERULL # NON-IMPULSIVE, STEERING AND ULLAGE OFF
  TCR ULAGEOFF # ULLAGE OFF (ONLY, OR AGAIN)

  EXTEND
  DCA NEG0  # KILL GROUP 4 (DP NEG0 = -0,+0)
  DXCH -PHASE4

ENDIGN  TCF TASKOVER

STEERULL CS FLAGWRD2 # SET STEERSW
  MASK BIT11
  ADS FLAGWRD2

# Page 697

ULAGEOFF CAF ZERO
  EXTEND
  WRITE CHAN5  # ZERO CHANNEL 5
  TC Q

IMPLBURN CS BIT13  # RESET STRULLSW (COULD BE AN IMPULSIVE
  MASK FLAGWRD6 # ENGINE FAIL)
  TS FLAGWRD6

  TCR E7SETTER

  EBANK= TIG
  EXTEND   # PREPARE FOR R1 OF V06N40 (CLOCKTASK)
  DCA TGO
  DXCH TIG
  EXTEND
  DCA TIME2
  DAS TIG

  TC 2PHSCHNG
  OCT 40153  # A, 3.15 = ENGINOFF (TGO+1) .... NOT GROUP
  OCT 07014  # C, DELTAT NEXT, TASK BELOW, IN
  DEC -0  # -0 CS
  EBANK= DAPDATR1
  2CADR IMPLCONT

  CAE TGO +1  # (TPAGREE IN S40.13, LESS THAN 600CS)
  TC WAITLIST
  EBANK= TGO
  2CADR ENGINOFF

IMPLCONT CS BIT9  # RESET IMPULSW, ENGINOFF IS NOW SET UP
  MASK FLAGWRD2
  TS FLAGWRD2

  TCR E6SETTER
  EBANK= DAPDATR1

  CAF ZERO  # SET UP V97VCNTR IN CASE ENGINOFF (MASS-=
  TS V97VCNTR # BACK) ARRIVES BEFORE TVCDAPON

  TCF PREPTVC

  EBANK= TGO  # E7 FORCED BY 3.15SPOT VARIABLE DELTA-T
ENGINOFF TCR E6SETTER # TASK, 3.15 PHASE (TGO+1 CS) GET E6
  EBANK= DAPDATR1
  CAE CSMMASS
  TS MASSTMP  # COPYCYCLE FOR MASSBACK
# Page 698
  TC 2PHSCHNG
  OCT 00003  # KILL GROUP 3 PROTECTION OF ENGINOFF, DO
  OCT 40634  # A, 4.63 = DOSPSOFF (-0CS)
DOSPSOFF TCR SPSOFF  # SHUTDOWN SPS, MASS UPDATES, ETC.
  CS OCT27/24 # (OCTAL 27)
  TC NEWPHASE
  OCT 4  # 4.27 = DOTVCRCS (250 CS)

  TC FIXDELAY # 2.5 SECOND DELAY FOR SPS TAILOFF
  DEC 250

DOTVCRCS TCR SETMAXDB # WIDE DEADBAND FOR CUTOFF TRANSIENT

  TC IBNKCALL # SET UP RCS DAP (KILLS TVCDAPS, SETS T5
  CADR RCSDAPON # BITS, WAITS 0.6SEC FOR TVCEXEC DIE)

  TC IBNKCALL # UPDATE WEIGHT/G AND MASS-PROPERTIES FOR
  CADR MASSPROP # RCS DAP STARTUP IN 0.6 SECONDS

  TCR TVCZAP  # WIPE OUT TVC, TURN OFF CLOKTASK

  TC PHASCHNG
  OCT 00354  # A, 4.35 = POSTBURN (NOVAC, PRIO12)
  CAF PRIO12  # SET UP POSTBURN V16N40 JOB
  TC NOVAC
  EBANK= DAPDATR1 # (SET MAXDB IN POST41)
  2CADR POSTBURN

  TCF TASKOVER

  EBANK= DAPDATR1
SPSOFF  EXTEND   # ESTABLISH SPSOFF TEVENT
  DCA TIME2
  DXCH TEVENT
  CS BIT7  # RESET ENGONFLG
  MASK FLAGWRD5
  TS FLAGWRD5 # (RESTARTS WILL SHUT DOWN SPS NOW)
  CS BIT13  # SHUT DOWN SPS ENGINE
  EXTEND
  WAND DSALMOUT

  CAF BIT14  # ISSUE SIV CUTOFF COMMAND
  EXTEND   # FOR POSSIBLE BACK-UP USE
  WOR CHAN12
MASSBACK CAE V97VCNTR # RESTORE PART OF PRE-DECREMENTED MASS
     # V97CNTR = VCNTR UNLESS V97 IS
     # ACTIVE.  ONLY V97CNTR IS THEN RIGHT.
  EXTEND   # VCNTR COUNTS 1/2-SECONDS IN TVC EXEC
  MP EMDOT  # MDOT, SC.AT B+3 KG/CS
  LXCH A
# Page 699
  EXTEND
  MP 1SEC  # DEC 100
  AD MASSTMP  # CORRECTION IS ACCURATE TO 5 CS OF FLOW
  TS CSMMASS  # (1.44 KG OR 0.4 BITS)

  CA TVCPHASE # CHECK IF OK FOR TRIM UPDATE
  AD ONE  # THESE CHECKS ARE ONLY NEEDED
  EXTEND   # FOR A LESS THAN 0.4 SEC BURN
  BZF BTRIMR  # NO.  INITIALIZATION NOT COMPLETE
  CS FLAGWRD6 # YES, CHECK IF TVC
  MASK OCT60000
  EXTEND
  BZMF BTRIMR  # NO, NOT TVC YET
BESTTRIM CAE DELPBAR  # UPDATE TRIMS WITH DELFILTER VALUES
  TS PACTOFF
  CAE DELYBAR
  TS YACTOFF
BTRIMR  TC Q
  EBANK= DAPDATR1
STEERADS 2CADR STEERING

.6SECT5  OCT 37703
5SECDP  DEC 0  # MAKE DP 5SEC
5SEC  DEC 500
OCT02202 OCT 02202  # BITS 2, 8, 11 FOR CHANNEL 12 TVC/OPTICS
  EBANK= DAPDATR1
TVCON2C  2CADR TVCDAPON

 -1 INHINT
TVCZAP  CS OCT02202 # DISABLE TVC AND OPT ERR CNTRLS, REENGAGE
  EXTEND   # OPTICS DAC
  WAND CHAN12
  CS BIT1  # ENABLE T4RUPT OPTICS MONITOR .... PERMIT
  TS OPTIND  # OPTICS-ZERO BUT NOT OPTICS-DRIVE
  CAF ZERO  # CLEAR NVWORD1 IN CASE CLOCKJOB WAITING
  TS NVWORD1
  CS BIT11  # CLEAR TIMRFLAG TO STOP CLOKTASK
  MASK FLAGWRD7
  TS FLAGWRD7
  TC Q
  EBANK= DAPDATR1
UPDATEVG STQ BON
   QTEMP1
   XDELVFLG
   CALL40.8

  SLOAD BMN
   NBRCYCLS
   SETUP.9
# Page 700

  VLOAD VAD
   DELVSUM
   DELVREF
  STORE DELVSUMP
  EXIT
  CA ONE
  AD NBRCYCLS
  TS NBRCYCLP

  TC PHASCHNG # TYPE B RESTART RESTART BELOW AND 5.3 REREADACCS
  OCT 10035

  CA NBRCYCLP
  TS NBRCYCLS
  TC INTPRET
  VLOAD
   DELVSUMP
  STORE DELVSUM

CALL40.8 CALL
   S40.8
  GOTO
   QTEMP1

SETUP.9  BON SLOAD
   FIRSTFLG
   SURELY.9
   NBRCYCLP
  NORM VXSC  # (NORM HANDLES ZERO PROPERLY)
   X1
   BDT
  VSR* VAD
   0 -14D,1
   VGTEMP
  VSU
   DELVSUM
  STORE VGPREV
SURELY.9 EXIT
  CAF PRIO10
  TC FINDVAC
  EBANK= DAPDATR1
  2CADR S40.9

  TC 2PHSCHNG
  OCT 00051  # A, 1.5 = REDO40.9, PRIO 10
  OCT 10035
  TC INTPRET
  VLOAD
   RN  # ACTIVE VEHICLE RADIUS VECTOR AT T1
  STOVL RINIT
# Page 701
   VN  # ACTIVE VEHICLE VELOCITY VECTOR AT T1
  STODL VINIT
   PIPTIME
  STORE TNIT
  BDSU
   TPASS4
  STOVL DELLT4
   HI6ZEROS
  STODL DELVSUM
   HI6ZEROS
  STORE NBRCYCLS
  GOTO
   CALL40.8
  EBANK= DAPDATR1
STEERING TC INTPRET
  CALL
   UPDATEVG
  EXIT
  CAF BIT9  # CHECK IMPULSW
  MASK FLAGWRD2
  CCS A
  TCF +3  # PRE-IGNITE, REQUEST ENG-OFF, OR POST-OFF
SERVXT  TC POSTJUMP
  CADR SERVEXIT
  CAF BIT13  # CHECK ENGINE-ON/-OFF
  EXTEND
  RAND DSALMOUT
  EXTEND
  BZF SERVXT  # ENGINE-OFF, SO PRE-IGNITE OR POST-OFF
  TCR E7SETTER
  EBANK= TIG
  INHINT
  EXTEND
  DCA TIG
  DXCH MPAC
  EXTEND
  DCS TIME2
  DAS MPAC
  TCR DPAGREE
  CAE MPAC +1  # (LESS THAN 6 (OR 4) SECONDS TO GO)
  CCS A  # PROTECT AGAINST NEG/ZRO W.L. CALL
  TCF +3
  TCF +2
  CAF ZERO
  AD ONE
  XCH L
  CA ZERO
  DXCH TGO
  CA TGO +1
  TC WAITLIST
# Page 702
  EBANK= TGO
  2CADR ENGINOFF

  TC 2PHSCHNG
  OCT 40153  # A, 3.15 = ENGINOFF (TGO+1) .... NOTE GROUP
  OCT 10035  # B, 5.3 = REREADAC, AND START BELOW
  TC DOWNFLAG # CLEAR IMPULSW, ENGINOFF IS NOW SET UP
  ADRES IMPULSW  # RESTARTS OK
  TCF SERVXT

# Page 703
# ROUTINE ** CLOKTASK ** DESCRIPTION

  EBANK= TIG
CLOKTASK CAF BIT11  # IS TIMRFLAG SET
  MASK FLAGWRD7
  CCS A
  TCF CLOCKON
  TC PHASCHNG
  OCT 00006  # KILL RESTART
  TC TASKOVER

CLOCKON  EXTEND
  DCA TIME2
  DXCH TTOGO
  EXTEND
  DCS TIG
  DAS TTOGO

SETCLOCK CAF 1SEC
  TC WAITLIST
  EBANK= TIG
  2CADR CLOKTASK

  CCS NVWORD1
  TCF +3
  TCF SETTB6

  TCF +1
  CS V06N85B  # CHECK FOR V06N85B (P41)
  AD NVWORD1
  EXTEND
  BZF SETUPDYN # V06N85, SO UPDATE N85 FOR DYNAMIC DISP

  CAF PRIO27
  TC NOVAC
  EBANK= DAPDATR1
  2CADR CLOCKJOB

SETTB6  CS TIME1  # SET GROUP6 TIMEBASE
  TS TBASE6
  TCF TASKOVER

SETUPDYN CAF PRIO27  # SET UP A JOB TO UPDATE N85 (FOR P41=V06)
  TC FINDVAC
  EBANK= DAPDATR1
  2CADR DYNDISP

  TCF SETTB6  # CLOSE OUT CLOCKTASK
# Page 704
DYNDISP  TC INTPRET  # UPDATE N85 FOR A DYNAMIC V06N85 IN P41.
  CALL   # PRIOR TO BLANKING AND AVEG (V16N85)
   P40CNV85
  EXIT
  TCF CKNVWRD1

# Page 705
# ROUTINE ** CLOCKJOB ** DESCRIPTION

  EBANK= DAPDATR1
CLOCKJOB CA CDUX
  TS CDUSPOTX
  CA CDUY
  TS CDUSPOTY
  CA CDUZ
  TS CDUSPOTZ
  TC BANKCALL
  CADR QUICTRIG
CKNVWRD1 INHINT
  CCS NVWORD1  # DETERMINE FUNCTION, INDICATED BY NVWORD1
  TCF NOFLASH
  TCF ENDOFJOB
  TCF ENGREQST # SPS ENGINE-ON-ENABLE V99 FLASH
FAILDSP  CAF V06N40  # SPS ENGINE-FAILED V97 FLASH
  TC BANKCALL
  CADR CLOCPLAY
  TCF V97T  # TERMINATE
  TCF V97P  # PROCEED
  TCF V97E  # ENTER

ENGREQST CAF V06N40
  TC BANKCALL
  CADR CLOCPLAY # LINUS MAKES IT A REDO, INHINT OK
  TCF V99T  # TERMINATE
  TCF V99P  # PROCEED
  TCF V99E  # ENTER

NOFLASH  CAE NVWORD1  # DISPLAY NVWORD1 NORMALLY
  TC BANKCALL
  CADR REGODSP

E7SETTER CAF EBANK7
  TS EBANK
  EBANK= TIG
  TC Q

E6SETTER CAF EBANK6  # SET UP EBANK6
  TS EBANK
  EBANK= DAPDATR1
  TC Q

  EBANK= DAPDATR1
V99E  TC 2PHSCHNG
  OCT 00006  # KILL PRE40.6/CLOKTASK PROTECTION
  OCT 05024  # C, PRIORITY NEXT, JOB BELOW
# Page 706
  OCT 27000
V99EJOB  TCR TVCZAP -1 # WIPE OUT TVC, CLOKTASK
  TCF P40RCS  # V16N85 POST-BURN OPERATIONS

  EBANK= DAPDATR1
V99T  TC 2PHSCHNG # (ENTRY FROM V97T FLOW TOO)
  OCT 00006  # KILL PRE40.6/CLOKTASK PROTECTION
  OCT 05024  # C, PRIORITY NEXT, JOB BELOW
  OCT 27000
V99TJOB  TCR TVCZAP -1 # WIPE OUT TVC, CLOKTASK
  TCF POST41  # AVEGEXIT, SETMAXDB, GOTOPOOH

V99P  INHINT
  CAE FLAGWRD7 # CHECK ASTN FLAG FOR PRIOR V99P
  MASK BIT12
  CCS A
  TCF V99P/TIG # YES, THIS MUST BE A RESTART ENTRY

ASTNV99P CAF BIT12  # SET ASTN FLAG
  ADS FLAGWRD7
  CAE FLAGWRD7 # CHECK IGN FLAG FOR TIG-0 ARRIVAL
  MASK BIT13
  EXTEND
  BZF V99P/TIG # NO, CLEAR THE V99 AND WAIT FOR TIG-0

ENDV99PI CAF BIT1  # TIG-0 HAS COME ALREADY
  TC WAITLIST # SET UP IGNITION HERE
  EBANK= DAPDATR1
  2CADR IGNITION

V99P/TIG CAF V06N40  # CLEAR THE V99 FLASH AND WAIT FOR TIG-0
  TS NVWORD1
ENDV99P  TCF ENDOFJOB

  EBANK= CSMMASS
V97T  TC 2PHSCHNG
  OCT 00006  # KILL GROUP 6 (CLOKTASK)
  OCT 40674  # A, 4.67 = V97TTASK (-0 CS), TBASE NOW
  CAF BIT1
  TC TWIDDLE
  ADRES V97TTASK # KEEP EBANK6 FOR MASSES, SPSOFF, ETC.
  TCF ENDOFJOB

  EBANK= CSMMASS
V97TTASK CAF ZERO  # DISABLE CLOCKJOB
  TS NVWORD1
  CAF 3MDOT  # 3 SECONDS OF MDOT (2-4 SEC ENGFAIL
  AD CSMMASS  # DETECTION) NOT LOST BECAUSE THRUST
  TS MASSTMP  # FAILED.  COPYCYCLE FOR MASSBACK
# Page 707
  TC PHASCHNG
  OCT 05014  # C, DELTAT NEXT, TASK BELOW, IN
  DEC -0  # -0 CS

  TCR SPSOFF  # SHUTDOWN SPS ENGINE, MASS UPDATE, ETC.
  TC PHASCHNG
  OCT 00714  # A, 4.71 = V97TRCS (250 CS), TBASE OLD
  TC FIXDELAY # DELAY 2.5 SECONDS FOR (POSSIBLE) TAIL-
  DEC 250  # OFF (FALSE THRUST-LOSS)

  EBANK= DAPDATR1
V97TRCS  TC IBNKCALL # RCS DAP IN 0.6SEC, SETTING T5 BITS TO
  CADR RCSDAPON # KILL TVCEXEC/TVCROLLDAP STARTS
  CAF PRIO27  # SET UP V99T FOR TVCZAP AND POST41 (SET-
  TC NOVAC  # MAXDB AND GOTOPOOH)
  EBANK= DAPDATR1 # EBANK6 FOR SETMAXDB IN POST41
  2CADR V99T

ENDV97T  TCF TASKOVER

  EBANK= V97VCNTR
V97P  TC PHASCHNG
  OCT 40734  # A, 4.73 = V97PTASK (-0 CS), TBASE NOW
  CAF BIT1
  TC TWIDDLE
  ADRES V97PTASK
  TCF ENDOFJOB

  EBANK= V97VCNTR
V97PTASK CAE V97VCNTR # GET MASS UPDATES (TVCEXEC) GOING AGAIN
  TS VCNTR  # (ERRORS IF FLASE THRUST-LOSS AND/OR
     # POOR SYNC OF MANUAL ENGINE-ON AND
     # THE VERB 97 PROCEED)
  CAF V06N40  # REDISPLAY V06N40
  TS NVWORD1
  TC UPFLAG  # SET IDLEFAIL TO ALLOW R41-BYPASS, IN
  ADRES IDLEFAIL # CASE OF UNFAVORABLE S40.8 SYNCH
  TC UPFLAG  # SET STEERSW TO RE-ENABLE STEERING
  ADRES STEERSW
  TC PHASCHNG
  OCT 00134  # A, 4.13 = R40ENABL (200 CS), TBASE OLD
  TC FIXDELAY # WAIT 2 SECONDS, THEN
  DEC 200

  EBANK= WHOCARES
R40ENABL TC DOWNFLAG # RE-ENABLE R40 BY CLEARING IDLEFAIL
  ADRES IDLEFAIL
  TC PHASCHNG
  OCT 00004  # KILL GROUP 4
# Page 708
ENDV97P  TCF TASKOVER

  EBANK= WHOCARES
V97E  TC PHASCHNG
  OCT 40534  # A, 4.53 = V97ETASK (-0 CS), TBASE NOW
  CAF BIT1
  TC WAITLIST
  EBANK= TIG
  2CADR V97ETASK

  TCF ENDOFJOB

  EBANK= TIG
V97ETASK CS OCT24  # FORCE R1 OF V06N40 TO READ  59X59
  TS TIG
  CAF V06N40  # REDISPLAY V06N40
  TS NVWORD1
  TCR E6SETTER # RETURN TO EBANK6 FOR REST OF V97ETASK
  EBANK= CSMMASS
  CAF 3MDOT  # 3 SECONDS OF MDOT (2-4 SEC ENGFAIL
  AD CSMMASS  # DETECTION) NOT LOST BECAUSE THRUST
  TS MASSTMP  # FAILED....COPYCYCLE FOR MASSBACK
  TC PHASCHNG
  OCT 00754  # A, 4.75 = SPSOFF97 (-0 CS), TBASE OLD
SPSOFF97 TCR SPSOFF
  TC PHASCHNG
  OCT 00114  # A, 4.11 = V97E40.6 (250 CS), TBASE OLD
  TC FIXDELAY # DELAY 2.5 SECONDS FOR (POSSIBLE) TAIL-
  DEC 250  # OFF (FALSE THRUST-LOSS)

  EBANK= DAPDATR1
V97E40.6 CAF BIT1
  TC WAITLIST
  EBANK= CNTR
  2CADR PRE40.6  # USE S40.6 RESTART ENTRY TO TRIM ENGINE

  TC IBNKCALL # RCS DAP IN 0.6SEC, SETTING T5 BITS TO
  CADR RCSDAPON # KILL TVCEXEC/TVCROLLDAP STARTS.
     # LEAVE NARROW DEADBAND FOR REIGNITE.

  TC 2PHSCHNG
  OCT 00026  # A, 6.2 = PRE40.6 (-0 CS), CLOKTASK (1 SEC)
  OCT 05014  # C, DELTAT NEXT, TASK BELOW, IN
  DEC -0  # -0 CS.

QUICKIGN CS PRIO14  # CLEAR ASTNFLAG AND SET IGNFLAG FOR
  MASK FLAGWRD7 # IMMEDIATE V99 RESPONSE.
  AD BIT13
  TS FLAGWRD7
  TC FIXDELAY # DELAY TO ALLOW TIME FOR PRE40.6
# Page 709
  DEC 30

V99FLASH CS BIT9  # CAUSE V99 TO FLASH
  TS NVWORD1
  TC 2PHSCHNG
  OCT 40774  # A, 4.77 = TIG-0 (-0 CS) TBASE FOR PREPTVC
  OCT 00033  # A, 3.3 = S40.13 (PRIO 20)
  CAF PRIO20  # SET UP TIMEBURN
  TC FINDVAC
  EBANK= TGO
  2CADR S40.13

ENDV97E  TCF TASKOVER # WAIT FOR CLOCKJOB (IMMEDIATE) REACTION
     #  TO FLASHING V99 RESPONSE.

# MOD N02 LOG SECTION P40-P47
# MOD BY ZELDIN
#
# FUNCTIONAL DESCRIPTION
# COMPUTE INITIAL THRUST DIRECTION(UT) AND INITIAL VALUE OF VG
# VECTOR(VGTIG).
#
# CALLING SEQUENCE
# L CALL
# L+1 S40.1
#
# NORMAL EXIT MODE
# AT L+2 OF CALLING SEQUENCE (GOTO L+2) NORMAL RETURN OR
# ERROR RETURN IF NOSOFLAG =1
#
# SUBROUTINES CALLED
# CSMPREC
# INITVEL
# CALCGRAV
# MIDGIM
#
# ALARM OR ABORT EXIT MODES
# L+2 OF CALLING SEQUENCE, UNSOLVABLE CONIC IF NOSOFLAG=1
#
# ERASABLE INITIALIZATION REQUIRED
# WEIGHT/G ANTICIPATED VEHICLE MASS SP B16 KGM
# XDELVFLG 1=DELTA-V MANEUVER, 0=AIMPT STEER
#   IF DELTA-V MANEUVER:
# DELVSIN SPECIFIED DELTA-V REQUIRED IN
# INERTIAL COORDS. OF ACTIVE VEHICLE
# AT TIME OF IGNITION VECTOR B7 M/CS
# DELVSAB MAG. OF DELVSIN DP B7 M/CS
# RTIG POSITION AT TIME OF IGNITION VECTOR B29 M
# VTIG VELOCITY AT TIME OF IGNITION VECTOR B7 M/CS.
# CSTEER = 0 DP
#   IF AIMPOINT STEERING:
#   IF AIMPT STEER
# TIG TIME OF IGNITION DP B28 CS
# RTARG POSITION TARGET TIME VECTOR B29 M
# CSTEER = ECSTEER (GR 0)  DP B1
# Page 710
# TPASS4 -- TIME OF ARRIVAL AT AIMPOINT
#
# OUTPUT
# UT 1/2 UNIT VECTOR ALIGNED WITH THRUST DIRETION IN REF COOR
# VGTIG INITIAL VALUE OF VELOCITY
# TO BE GAINED (INERT. COORD.) VECTOR B7 M/CS
# DELVLVC VGTIG IN LOC. VERT. COORDS. B7 M/CS
# F NOMINAL THRUST FOR ENG USED FOR S40.13 DP B7 M-NEWT
# BDT V REQUIRED AT TIG -V REQUIRED AT (TIG-2SEC)
# -GDT FOR S40.13 VECT B7 M/CS
# RTIG CALC IN S40.1B (AIMPT) FOR S40.2,3 VECTOR B29M
# POSITION AT TIME OF IGNITION
#
# DEBRIS QTEMP1
# MPAC, QPRET
# PUSHLIST
# RTX2,RTX1

  BANK 14
  SETLOC P40S1
  BANK

  COUNT 16/S40.1

S40.1  SET VLOAD
   FIRSTFLG
   LO6ZEROS
  STORE BDT
  STQ BOF
   QTEMP
   XDELVFLG
   S40.1B  # LAMBERT
  VLOAD ABVAL  # EXTERNAL DELTA-V
   DELVSIN
  STORE DELVSAB  # COMPUTE FOR P30/P40 INTERFACE
     # THUS PERMITTING MODULE-ONLY CHANGE
  SETPD VLOAD
   0
   VTIG
  STORE VINIT
  VXV UNIT
   RTIG
  STOVL UT  # UP IN UT
   RTIG
  STORE RINIT
  VSQ PDDL
   36D
  DMPR DDV
   THETACON
  DMP DMP
   DELVSAB
   WEIGHT/G
  DDV
# Page 711
   F
  STOVL 14D
   DELVSIN

  DOT VXSC
   UT
   UT
  VSL2 PUSH  # (DELTAV.UP)UP SCALED AT 2(+7) P.D.L. 0
  BVSU PDDL  # DELTA VP SCALED AT 2(+7) P.D.L. 6
   DELVSIN
   14D
  SIN PDVL
   6D
  VXV UNIT
   UT
  VXSC STADR
  STOVL VGTIG  # UNIT(VP X UP)SIN(THETAT/2) IN VGTIG.
  UNIT PDDL  # UNIT(DELTA VP) IN P.D.L. 6
   14D
  COS VXSC
  VAD VXSC
   VGTIG
   36D
  VSL2  VAD
  STADR
  STORE VGTIG  # VG IGNITION SCALED AT 2(+7) M/CS

  UNIT
  STOVL UT  # THRUST DIRECTION SCALED AT 2(+1)
   VGTIG
  PUSH SET
   AVFLAG
  CALL
   MIDGIM  # VGTIG IN LV COOR AT 2(+7)M/CS IN DELVLVC
  GOTO
   QTEMP
S40.1B  DLOAD DSU  # LAMBERT
   TIG
   TWODT
  STODL TDEC1
   TPASS4
  DSU
   TDEC1
  STCALL DELLT4
   AGAIN
  VLOAD
   VIPRIME
  STODL UT
   TIG
  STORE TDEC1
# Page 712
  BDSU
   TPASS4
  STCALL DELLT4
   AGAIN
  VLOAD PUSH
   DELVEET3
  STORE VGTIG
  SET CALL
   AVFLAG
   MIDGIM
  SETPD GOTO
   0
   CALCUT

THETACON 2DEC .31830989 B-8

  SETLOC P40S3
  BANK

  COUNT 24/S40.1

EP4(45)H 2DEC .125

EP4(10)H 2DEC .027777777

AGAIN  STQ CALL
   QTEMP1
   THISPREC
  SXA,2 SXA,1
   RTX2
   RTX1
  VLOAD
   RATT
  STORE RTIG
  STOVL RINIT
   VATT
  STORE VTIG
  STORE VINIT
  SETPD SLOAD
   0
   HI6ZEROS
  PDDL BON
   EP4(45)H
   NORMSW
   +3
  DLOAD
   EP4(10)H
  PUSH CALL
   INITVEL
  SETPD GOTO
# Page 713
   0
   QTEMP1
CALCUT  VLOAD CALL
   RTIG
   CALCGRAV # GDELTAT IN MPAC AT 2(+7) M/CS
  VSL1 V/SC
   200CS  # G AT 2(-5) M/CS. CS
  PDVL VSU
   VIPRIME
   UT
  V/SC VSU
   200CS
  VXSC VSL2
   CSTEER
  STOVL 12D  # B.C SCALED AT 2(-15) PDL 12D
   VGTIG
  UNIT PUSH  # UG PDL 0 SCALED AT 2(+1)

  DOT VXSC
   12D
   0
  VSL2 BVSU
   12D
  STODL 12D  # Q PDL SCALED AT 2(-5)
   F
  SRR DDV
   4
   WEIGHT/G
  DSQ PDVL  # F/MASS SQUARED PDL 6 AT 2(-10M/(CS.CS)
   12D
  VSQ
  BDSU SQRT
  VXSC VSL1
  VAD UNIT
   12D
  STCALL UT
   QTEMP
200CS  2DEC 200 B-12

# Page 714
# PROGRAM DESCRIPTION S40.2,3 DATE 15 NOV 66
# MOD NO 2 LOG SECTIONS P40-P47
# MOD BY ZELDIN
#
# FUNCTIONAL DESCRIPTION
#
# COMPUTE GIMBAL ANGLES IF THRUSTING OCCURRED WITH PRESENT IMU
# ORIENTATION, WINGS LEVEL SPACECRAFT, HEADS UP
# COMPUTE X AXIS OF ENGINE BELL
# COMPUTE PREFERRED IMU ORIENTATION (XSCREF)
# FOR THIS CALCULATION, ASSUME X AXIS OF SC ALONG UT INITIALLY,
# YSC=UNIT(XXR), ZSC=UNIT(XX(XXR)) AND ROTATE ENGINE BELL ALONG UT.
# NEW SC AXES WILL BE APPROX. WINGS LEVEL AND NEW SC AXES IN REF.
# COORDS. WILL BE PREFERRED IMU ORIENTATION.
# COMPUTE DESIRED THRUST DIRECTION IN SM COORDS.
#
# CALLING SEQUENCE
# L CALL
# L+1 S40.2,3
#
# NORMAL EXIT MODE
# AT L+2 OF CALLING SEQUENCE (GOTO L+2)
#
# SUBROUTINES CALLED
# CALCGA
#
# ALARM OR ABORT MODES
# NONE
#
# ERASABLE INITIALIZATION REQUIRED
# PACTOFF TOTAL PITCH TRIM ANGLE SP AT 1.0795111 REV.
# YACTOFF TOTAL YAW   TRIM ANGLE SP AT 1.0795111 REV.
# UT DESIRED THRUST DIRECTION VECT. B2 M/(CS.CS)
# RTIG POSITION AT TIME OF IGNITION VECT. B29 M
# ENG2FLAG ON=RCS  OFF=SPS
#
# OUTPUT
# SCAXIS UNIT VECT. ALIGNED WITH ENG BELL IN SC COOR. B1
# XSCREF UNIT VECTORS ALIGNED WTH PREFERRED IMU B1
# YSCREF
# ZSCREF
# GIMBAL ANGLES IN THETAD
# POINTVSM UNIT VECT ALONG DESIRED THRUST DIRECTION IN SM B1
#
# DEBRIS
# PUSHLIST, QPRET, MPAC
# QTEMP TEMP. ERASABLE

  BANK 24
  SETLOC P40S
  BANK
  COUNT* $$/S40.2
S40.2,3  VLOAD MXV
   UT
   REFSMMAT
  VSL1 STQ
   QTEMP
  STORE POINTVSM # THRUST IN SM AT 2
  SETPD BON
   0
# Page 715
   ENG2FLAG
   S40.2,3B
  DLOAD
   HI6ZEROS
  PUSH SLOAD  # ZERO PDL 0
   YACTOFF
  DMP SL1
   TRIMSCAL
  DAD PUSH
   YBIAS
  COS PDDL  # COS(Y +Y0) PDL 2
  SIN PUSH  # SIN(Y +Y0) PDL 4
  SLOAD
   PACTOFF
  DMP SL1
   TRIMSCAL
  DAD PUSH
   PBIAS
  COS PDDL  # COS(P +P0) PDL 6
  SIN PUSH  # SIN(P +P0) PDL 8D
  STODL ZSCREF  # SIN(P +P0)
   6
  DMP SL1
   4
  DCOMP PDDL  # -SIN(Y+Y0)COS(P+P0) PDL 10
   6
  DMP SL1
   2
  VDEF

  STODL XSCREF  # PD POINTER AT 6 NEW SC X AXIS SCALED AT
   ZSCREF
  DMP SL1
   4
  PDDL DMP
   ZSCREF
   2
  SL1 DCOMP
  VDEF

  STODL ZSCREF  # PD POINTER AT 4 NEW SC Z AXIS SCALED AT 2
  VDEF

  STODL YSCREF  # PD POINTER AT 0 NEW SC Y AXIS SCALED AT 2
   ZSCREF
  PDDL PDDL
   YSCREF
   XSCREF
  VDEF
# Page 716
  STOVL SCAXIS  # ENGINE BELL SCALED AT 2
   UT
  PDVL UNIT
   RTIG
  VXV VCOMP
   0
  UNIT PUSH
  CALL
   TSTRXUT
  VXV VCOMP
   0
  VSL1 PDVL  # 2 RF/SC IN PDL 12D
   XSCREF
  VXM VSL1
   0
  STOVL XSCREF  # X OF PREF. IMU,X OF SC IN REF COOR. AT 2
   YSCREF
  VXM VSL1
   0
  STOVL YSCREF  # Y OF PREF. IMU,Y OF SC IN REF COOR. AT 2
   ZSCREF
  VXM VSL1
   0
  STORE ZSCREF  # Z OF PREF. IMU,Z OF SC IN REF COOR. AT 2
  SETPD GOTO
   0
   QTEMP
S40.2,3B VLOAD
   UNITX
  STOVL SCAXIS
   UT
  STORE XSCREF
  VXV UNIT
   RTIG
  STCALL 6D
   TSTRXUT
  STORE YSCREF
  VXV VCOMP
   XSCREF
  VSL1
  STCALL ZSCREF  # ZNB AXIS IN REF COOR
   QTEMP
TSTRXUT  DLOAD BHIZ
   36D
   BADVCTOR
  VLOAD RVQ
   6D
BADVCTOR VLOAD UNIT
   RTIG
  PDVL UNIT
# Page 717
   VTIG
  VSR3 VAD
  VXV UNIT
   UT
  VCOMP
  STORE 6D
  RVQ
TRIMSCAL 2DEC 1.07975111 B-1

YBIAS  2DEC +.00263888889 # YAW MECH BIAS (+0.95 DEG, THRUST ON)

PBIAS  2DEC -.00597222222 # PITCH MECH BIAS (-2.15 DEG, THRUST ON)

     # REFERENCE, TRW 68.6520.3.3-40 27 FEB, 1968

# PROGRAM DESCRIPTION S41.1 DATE 8 DEC 66
# MOD NO 1 LOG SECTION P40-P47
# MOD BY ZELDIN
#
# FUNCTIONAL DESCRIPTION
#
# COMPUTE VELOCITY TO BE GAINED INITIALLY IN REF COORDS.
# TO CONTROL COORDS.
#
# CALLING SEQUENCE
#
# L CALL
# L+1 S41.1
#
# NORMAL EXIT MODE
#
# AT L +2 OF CALLING SEQUENCE
#
# SUBROUTINES CALLED:
#
# CALCSMSC
# CDUTRIG
#
# ALARM OR ABORT MODES
#
# NONE
#
# ERASABLE INITIALIZATION REQUIRED
#
# VG IN REF. COORD. PDL L POINTER AT L+5.  S41.1 WILL RETURN WITH
#  POINTER AT L (L MUST BE LESS THAN OR = TO 14D)
#
# OUTPUT
#
# MPAC CONTAINS VG IN CONTROL COORDS VECT. B7 M/CS
#
# DEBRIS:
#
# QTEMP TEMP ERASABLE
# QPRET

  COUNT 22/S41.1

  SETLOC P40S5
  BANK

S41.1  STQ CALL
   QTEMP
   CDUTRIG
  VLOAD
  MXV CALL
   REFSMMAT
   *SMNB*
# Page 718
  MXV VXSC
   QUADROT
   TENBNK14 # VG IN CONTROL COORD IN MPAC SCALED AT
  VSL5 GOTO  # VG IN CONTROL COORDS. IN MPAC AT 2(+7)
   QTEMP
TENBNK14 2DEC 10. B-4

# Page 719
# NAME S40.8 -- CROSS PRODUCT STEERING
# FUNCTION (1) UPDATES THE VELOCITY-TO-BE-GAINED VECTOR.
# (2) GENERATES ANGULAR RATE STEERING COMMANDS FOR AUTOPILOT.
# (3) ESTABLISHES ENGINE CUT-OFF SIGNALS AT APPROPRIATE TIMES.
# (4) INITIATES THRUST-FAIL ROUTINE, R40
# CALLING SEQ CALL S40.6
# INPUT VGPREV  LAST VALUE OF THE VELOCITY-TO-BE-GAINED VECTOR
# PRIOR TO UPDATING IN METERS/CS AT +7.
# DELVREF CHANGE IN VEHICLE VELOCITY SINCE LAST MEASUREMENT
# IN METERS/CS AT +7.
# BDT EFFECT OF RATE OF CHANGE OF REQUIRED VELOCITY AND
# GRAVITY DURING DT UPON VELOCITY-TO-BE-GAINED IN
# METERS/CS AT +7.
# CSTEER A SCALAR OF THE STEERING LAW, SC.AT B+1, USED FOR
# SPS AIMPOINT STEERING MANEUVERS.
# IDLEFAIL A FLAG TO INHIBIT (IDLE) THE THRUST-FAIL ROUTINE.
# STEERSW A SWITCH TO PRECLUDE NEEDLESS CONDUCT OF STEERING.
# REFSMMAT, DAPDATR1, PIPTIME
# EREPFRAC, ETDECAY, KPRIMEDT FOR TVC.
# OUTPUT TTOGO TIME REMAINING FOR ENGINE BURN IN CS AT +28.
# OMEGAC DP VECTOR RATE COMMAND, SC.AT 1/(2TVCDT) REVS/SEC.
# VG, VGPREV, VGDISP, TGO, TIG, SCALED AS NOTED IN CODING
# STEERSW, IMPULSW, NVWORD1
# REPFRAC, CNTR, VCNTR, VCNTRTMP FOR TVC (R40 INTERFACING)
# DEBRIS OMEGAXC, +1
# SUBROUTINES USED:  *SMNB*, ALARM

  SETLOC P40S1
  BANK
  EBANK= DAPDATR1
  COUNT 16/S40.8

S40.8  SETPD STQ
SPBIT1   00D
   QTEMP
  VLOAD BVSU  # CONSTRUCT DELVG, SC.AT B+7 M/CS
   DELVREF
   BDT
  VAD
   VGPREV
  STORE VG  # VELOCITY-TO-BE-GAINED, SC.AT B+7 M/CS

  ABVAL
  STORE VGDISP  # FOR DISPLAY PURPOSES
  EXIT
  TC PHASCHNG
  OCT 10035  # TYPE B RESTART RESTART BELOW AND 5.3 REREADAC

  TC INTPRET
  VLOAD
# Page 720
   VG
  STORE VGPREV
  BOFF VLOAD
   STEERSW  # SKIP TGO AND CROSS-PRODUCT
   QTEMP
   DELVREF
  ABVAL PUSH  # CHECK FOR LOTHRUST
  SLOAD DMP
   DVTHRESH # SC.AT B-2 M/CS
   DPB-9
  BDSU
  BMN EXIT
   LOTHRUST
  CAE DAPDATR1 # ENABLE TVCDAP CG TRACKING
  MASK BIT14
  CCS A
  CAF BIT1
  INDEX A  # LM-OFF, LM-ON VALUE
  CAE EREPFRAC
  TS REPFRAC

  TC INTPRET
TGOCALC  VLOAD BVSU  # GET DELVG
   DELVREF
   BDT
  UNIT
  DOT PUSH  # (00D)
   VG
  BPL DDV  # ANGLE SHOULD BE GREATER THAN PI/2
   INCRSVG  # DISPLAY ALARM IF NOT
   2VEXHUST
  DAD DMP  # (DOT PRODUCT UP FROM 00D)
   LODPHALF
  NORM SR1
   X1
  PDDL NORM
   36D  # (MAG DELVG)
   X2
  BDDV
  XSU,2 SL*
   X1
   0 -9D,2
  DMP PUSH  # (00D)
   -FOURDT
  SLOAD SR
   ETDECAY  # ETDECAY SC.AT B+14 CS
   14D
  BDSU STADR
  STORE TGO  # TIME TO GO IN CS. AT +28
  DAD
# Page 721
   PIPTIME
  STODL TIG
   TGO
  DSU BMN
   FOURSEC
   S40.81

XPRODUCT VLOAD VXSC
   BDT
   CSTEER
  VSL2 VSU
   DELVREF
  UNIT PDVL
   VG
  UNIT VXV
  MXV CALL
   REFSMMAT # (REFSMMAT/2)
   *SMNB*
  VXSC
   KPRIMEDT # (KPRIMEDT SCIAT PI/8 RAD)
OMEGACLC STORE OMEGAC
  GOTO
   QTEMP

  SETLOC DAPS7
  BANK
  COUNT 17/S40.8

TWODT  2DEC 200.0 B-28 # 2 SEC

-FOURDT  2DEC -800 B-18 # -4(200CS), SC.AT B+18CS (-4 FOR SCALING)

2VEXHUST 2DEC 63.020792 B-7 # 2(10338.0564 FPS), SC.AT B+7 M/CS

FOURSEC  2DEC 400.0 B-28 # 4 SEC

DPB-9  2DEC 1 B-9

  SETLOC DAPS6
  BANK

  COUNT 20/S40.8

S40.81  SET VLOAD  # TGO LESS THAN 4 SECONDS
   IMPULSW  # FOR ENGINE-OFF CALL
   HI6ZEROS
RATEZRO  STORE OMEGAC  # TVC TO ATTITUDE HOLD
  EXIT
  CAF POSMAX  # INHIBIT SWITCHOVER/TVC EG TRACKING
  TS CNTR
# Page 722
  TC INTPRET
  CLEAR GOTO
   STEERSW  # RESTARTS OK
   QTEMP
INCRSVG  EXIT   # ALARM INDICATING THAT THRUST IS POINTING
  TC ALARM  # IN WRONG DIRECTION.
  OCT 01407
  TC INTPRET
  GOTO
   QTEMP

LOTHRUST BON VLOAD  # THRUST FAILURE (LO-OR-NO) INDICATED
   IDLEFAIL # SET BY V97P.  ALLOWS 1 BYPASS IN CASE OF
   QTEMP  # UNFAVORABLE S40.8 SYNCH.
   HI6ZEROS # START OF ENGINE-FAIL (R40) OPERATIONS
  STORE OMEGAC  # PUT TVC IN ATTITUDE HOLD
  EXIT

  CS ZERO
  TS VCNTR  # KILL CSMMASS UPDATING
  TS VCNTRTMP # (TVCEXEC LOGIC REQUIRES THIS TOO)
  TS REPFRAC  # KILL TVCDAP CG TRIM TRACKING
  TS NVWORD1  # SET UP ENGINE-FAIL V97FLASH (CLOCKJOB)

  TC INTPRET
  CLEAR GOTO  # INHIBIT STEERING AND TGO CALC (MANUAL
   STEERSW  #  SHUTDOWN IF NOT SET UP AGAIN)
   QTEMP  # RESTARTS OK

# Page 723
# NAME S40.9 -- VTOGAIN (AIMPOINT MANEUVERS ONLY)
# FUNCTION (1) GENERATES REQUIRED VELOCITY AND VELOCITY-TO-BE-GAINED
# VECTORS FOR USE DURING AIMPOINT MANEUVERS.
# (2) UPDATES THE B VECTOR WHICH IS USED IN THE FINAL
# CALCULATION OF EXTRAPOLATING THE VELOCITY-TO-BE-GAINED.
# CALLING SEQ VIA FINDVEC AS NEW JOB.
# INPUT RNIT ACTIVE VEHICLE RADIUS VECTOR IN METERS AT +29.
# VNIT ACTIVE VEHICLE VELOCITY VECTOR IN METERS/CS AT +7.
# VRPREV LAST COMPUTED VELOCITY REQUIRED VECTOR IN
# METERS/CS AT +7.
# NONTIG TIME OF IGN.  USED IN TARGETTING ROUTINES B+28
# DELLT4 TRANSFER TIME FROM PIPTIME TO TARGET B+28
# TNIT TIME OF RNIT AND VNIT IN CS AT +28
# GDT/2 HALF OF VELOCITY GAINED IN DELTA T TIME DUE TO
# ACCELERATION OF GRAVITY IN METERS/CS AT +7.
# DELVREF CHANGE IN VELOCITY DURING LAST 2 SEC IN
# METERS/CS AT +7.
# NORMSW SET=CENTRAL ANGLE BETWEEN RTARG AND RTIG IS BETWEEN
# 165 TO 195 DEGREES.
# RESET=CENTRAL ANGLE OUTSIDE CONE DESCRIBED ABOVE.
# OUTPUT VGTEMP VELOCITY TO BE GAINED VECTOR IN METERS/CS AT +7.
# COGA INPUT OF INITIAL GUESS FOR LAMBERT FROM S40.1
# OR PREVIOUS PASS THRU S40.9.
# GOBL/2 OBLATENESS TERM IN AVG GRAV CALC: GOBL*RSQ/MU
# VRPREV/ VELOCITY REQUIRED VECTOR IN METERS/CS AT +7.
# BDT B VECTOR IN METERS/CS AT +7.
# SUBROUTINES USED -- INITVEL

  SETLOC P40S1
  BANK

  EBANK= NBRCYCLS
  COUNT 16/S40.9

S40.9  TC INTPRET
  SETPD DLOAD
   00D
   LO6ZEROS
  PDDL
   EP4(45)L
  BON DLOAD
   NORMSW
   +2
   EP4(10)L
  PUSH
  CLEAR CALL
   GUESSW
   HAVEGUES
  EXIT
  TC PHASCHNG # SAVE TIME BY NOT REDOING LAMBERT CALCS
  OCT 05021  # C, PRIORITY NEXT, JOB BELOW
# Page 724
  OCT 10000
  TC INTPRET
ENDLAMB  BON
   FIRSTFLG
   FIRSTTME
  VLOAD VSU
   VIPRIME
   VRPREV
  PDDL DSU
   TNIT
   TNITPREV
  SL BDDV
   17D
   200CSHI
  VXSC
  VSU VSL1
   GDT/2
  STORE BDT
FIRSTTME SLOAD DCOMP
   RTX2
  BMN
   MOONCASE
  VLOAD UNIT
   RN
  DLOAD DSU
   PIPTIME
   NOMTIG
  DMP DDV
   EARTHMU
   34D
  VXSC VAD
   GOBL/2
   VGTEMP  # NOTE: NO TEST IS MADE TO SUBTRACT GOBL
  STORE VGTEMP  # INSIDE 165-195 DEGREE CONE AREA.
MOONCASE EXIT
  TC PHASCHNG
  OCT 04021  # C, JOB BELOW

COPY40.9 TC INTPRET
  DLOAD
   TNIT
  STOVL TNITPREV
   VIPRIME
  STORE VRPREV
  CLEAR EXIT
   FIRSTFLG
 -2 CS ONE  # REDO40.9 (RESTART) ENTRY TO END S40.9
  TS NBRCYCLS
ENDS40.9 TC PHASCHNG
  OCT 00001
# Page 725
  TCF ENDOFJOB

REDO40.9 TC INTPRET  # S40.9 RESTARTS COME HERE TO GRACEFULLY
  VLOAD   # TERMINATE S40.9 SO THAT IT CAN BE
   LO6ZEROS # SET UP WITH LATEST R,V,T NEXT PASS
  STODL DELVSUM  # (TYPE C PHASE POINTS '04021' WILL
   LO6ZEROS # FORCE NORMAL S40.9 TERMINATIONS,
  STOVL NBRCYCLS # RATHER THAN LOSE TIME OF BRAND NEW
   VGPREV  # PASS -- QUICK OLD DATA BETTER THAN
  STORE VGTEMP  # NONE) NOW CAN GO THRU SETUP.9
  EXIT   # WITHOUT DISTURBING VGPREV.
  TCF ENDS40.9 -2 # STORE 0,0 COVERED NBRCYCLS,P -- FIX UP S

200CSHI  2DEC 200 B-12

EARTHMU  2DEC* -3.986032 E10 B-36*

EP4(45)L 2DEC .125

EP4(10)L 2DEC .027777777

# Page 726
# NAME:   S40.13 -- TIMEBURN
#
# FUNCTION (1) DETERMINE WHETHER A GIVEN COMBINATION OF VELOCITY-TO-
# BE-GAINED AND ENGINE CHOICE RESULT IN A BURN TIME SUFFICIENT
# TO ALLOW STEERING AT THE VEHICLE DURING THE BURN, AND
# (2) THE MAGNITUDE OF THE RESULTING BURN TIME -- IF IT IS SHORT --
# AND THE ASSOCIATED TIME OF THE ENGINE OFF SIGNAL.
#
# CALLING SEQUENCE VIA FINDVAC AS A NEW JOB
#
# INPUT VGTIG -- VELOCITY TO BE GAINED VECTOR (METERS/CS) AT +7
# WEIGHT/G -- MASS OF VEHICLE IN KGM AT TIG
# F -- ENGINE THRUST IN M.NEWTONS AT +7
# MDOT -- RATE OF DECREASE OF VEHICLE MASS DURING ENGINE BURN
# IN KILOGRAMS/CENTISECOND AT +3.  THIS SCALING MAY
# REQUIRE MODIFICATION FOR SATURN BURNS.
#
# OUTPUT IMPULSW ZERO FOR STEERING
# ONE FOR ATTITUDE HOLD
# TGO TIME TO BURN IN CENTISECONDS AT +14
# THE QUANTITY M.NEWTON SHALL BE USED TO EXPRESS WEIGHT IN TERMS OF
# (KILOGRAM*METER)/(CENTISECOND*CENTISECOND)
# (1) M.NEWTON = (10000) NEWTONS.

  EBANK= TGO
  COUNT 16/40.13

S40.13  TC INTPRET
  SETPD SET
   00D
   IMPULSW  # ASSUME NO STEERING UNTIL FOUND OTHERWISE
  VLOAD ABVAL
   VGTIG  # VELOCITY TO BE GAINED AT +7
  EXIT
  CAF BIT7  # TEST +X TRANSLATION
  EXTEND
  RXOR CHAN31
  MASK BIT7
  EXTEND
  BZF NOTADDUL
  TC  INTPRET
  PDDL DDV  # 00D = MAG OF VGTIG AT +7
   S40.135  # COMPENSATION FOR 2 JET ULLAGE AT +24
   WEIGHT/G # MASS IN KGMS AT +16
  BON SL1  # DOUBLE CORRECTION IF FOUR JETS
   NJETSFLG
   S40.130
S40.130  BDSU
  PDDL DDV  # 00D = MAG OF VGTIG CORRECTED FOR ULLAGE
   K1VAL  # M.NEWTON-CS AT +24
   WEIGHT/G
  BDSU BMN
   00D
   S40.131  # TGO LESS THAN 100 CS
  PDDL DMP  # 02D = TEMP1 AT +7
# Page 727
   EMDOT  # SPS FLOW RATE SC.AT B+3 KG/CS (SP, NOTE)
   3.5SEC  # 350 CS AT +14
  BDSU PDDL
   WEIGHT/G
   FANG
  DMP SR2
   5SECOND  # 500 CS AT +14
  DDV PUSH  # 04D = TEMP2
  BDSU BPL
   02D
   S40.133  # TGO GREATER THAN 600 CS
  DLOAD BDDV
  DMP DAD
   5SECOND  # 500 CS AT +14
   1SEC2D  # 100 CS AT +14
  GOTO
   S40.132
S40.131  DLOAD DMP  # TGO LESS THAN 100 CS
   WEIGHT/G
  DAD DDV
   K2VAL  # M.NEWTON CS AT +24
   K3VAL  # M.NEWTON AT +10
S40.132  EXIT
  EBANK= TGO
  TC TPAGREE
  CA MPAC
  XCH L
  CA ZERO
  DXCH TGO  # TGO IN CS AT +28
  TC S40.134
S40.133  CLEAR EXIT  # WILL STEER VEHICLE
   IMPULSW
S40.134  TC PHASCHNG # KILL GROUP 3
  OCT 3

  TCF ENDOFJOB

NOTADDUL TC INTPRET
  GOTO
   S40.130 +1 # DO NOT COMPENSATE FOR 7 SEC OF ULLAGE
  SETLOC DAPS7
  BANK

  COUNT 17/40.13

K1VAL  = EK1VAL  # DP PAD LOAD B+23 NEWTON-SEC/E+2
K2VAL  = EK2VAL  # DP PAD LOAD B+23 NEWTON-SEC/E+2
K3VAL  = EK3VAL  # DP PAD LOAD B+09 NEWTONS/E+4
1SEC2D  2DEC 100.0 B-14 # 100.0 CS AT +14
# Page 728
3.5SEC  2DEC 350.0 B-13 # 350 CS AT +13

5SECOND  2DEC 500.0 B-14 # 500.0 CS AT +14

S40.135  2DEC 69.6005183 B-23 # IMPULSE FROM 7.96 SECS OF 2-JET FIRING
     #  7.96 (199.6)COS(10) LB-SEC, SC.AT
     # B+23 NEWTON-SEC/E+2 (7 SEC ULLAGE
     # TO GO, PLUS 0.96 SEC FROM PIPTIME)

# Page 729
# NAME S40.6 GIMBAL DRIVE TEST AND/OR GIMBAL TRIM
# MOD NO 5 DATE 9 MARCH, 1967
# MOD BY ENGEL LOG SECTION P40-P47
#
# FUNCTIONAL DESCRIPTION
# GIMBAL DRIVE TEST....0,+2,-2,0 DEGREE ENGINE COMMANDS, AT 2 SECOND
# INTERVALS, FIRST IN PITCH, THEN IN YAW.  ASTRONAUT VERIFICATION
# OF GIMBAL MOTION ON GPI
# GIMBAL TRIM....AFTER A 4 SECOND DELAY, ENGINE COMMANDED TO
# PRE-COMPUTED TRIM POSITION.  ASTRONAUT VERIFICATION ON GPI.
# PRE40.6....RESTART ENTRY TO RE-DO S40.6, ONLY IF RCS IS ON --- IF TVC
# IS NOT ON --- PRIMARILY TO GET ACTUATORS TRIMMED FOR IGNITION.
# BYPASS 4 SEC DELAY.  SPEED IS CRITICAL NEAR IGNITION.
# IF TVC IS ON (TVCDAPON OR LATER) THEN REDOTVC WILL TAKE CARE
# OF RESTARTING ACTUATORS.
#
# CALLING SEQUENCE....
# WAITLIST, WITH 2CADR FOR S40.6 (OR PRE40.6), WITH EBANK= CNTR
#
# NORMAL EXIT MODE -- FIXDELAY, TASKOVER
#
# SUBROUTINES CALLED....
# OUTPUT (INTERNAL)
# FIXDELAY
#
# ALARM OR ABORT EXIT MODES --- NONE
#
# ERASABLE INITIALIZATION REQUIRED
# CNTR = +0, NORMALLY SET BY THE P40 CALL AT TST,TRIM.
# MRKRTMP....POSITIVE FOR GIMBAL DRIVE TEST AND GIMBAL TRIM (BOTH)
#    NEGATIVE FOR GIMBAL TRIM ONLY
# PACTOFF, YACTOFF SC.AT 85.41 ARCSEC/BIT (V48N48 P, YTRIM)
# "SC CONT" SWITCH AT "CMC" (A/P CONTROL SWITCH AT "GNC")
# ACTIVE SPS GIMBAL MOTOR POWER(S), PITCH, YAW
#
# OUTPUT
# TVCYAW, TVCPITCH (BITS RELEASED)
# TVC ENABLE AND OPTICS ERROR COUNTER ENABLE
#
# DEBRIS
# TBMPR60, CNTR

  BANK 17
  SETLOC DAPS6
  BANK

  EBANK= CNTR
  COUNT 20/S40.6

PRE40.6  CS FLAGWRD6 # RESTART ENTRY TO S40.6 (DO NOT PERMIT
  MASK OCT60000 # IF TVC, BITS 15,14 = 1,0)
  EXTEND
  BZMF +2
  TCF TASKOVER # TVC, REDOTVC WILL REESTABLISH INTERFACE

  CS BIT1  # RCS, SO DO S40.6, GIMTRIM ONLY
# Page 730
  TS MRKRTMP

  CAF BIT1  # FOR REVISED S40.6 TIMING FOR RESTARTS...
  TS CNTR  # TO INDICATE A RESTART ENTRY (CNTR 1S
     # NORMALLY +0, BY S40.6)

  EBANK= CNTR
S40.6  CS ZERO  # INHIBIT OPTICS ACTIVITY
  TS OPTIND

  CS BIT2  # DISENABLE OPTICS ERROR COUNTERS (ZERO,
  EXTEND   #  AND INHIBIT PULSE TRANSMISSION --
  WAND CHAN12  # NORMAL STATE)

  CAF OCT02200 # TVC ENABLE (SPS SERVO AMPS SEE DAC
  EXTEND   # VOLTAGES) AND DISENGAGE OPTICS/DAC
  WOR CHAN12

  TC FIXDELAY # 60MS PROCEDURAL DELAY (40MS MINIMUM) FOR
  DEC 6  # RELAY LATCHING

  CAF BIT2  # ENABLE OPTICS ERROR COUNTERS
  EXTEND
  WOR CHAN12

  TC FIXDELAY # 20MS PROCEDURAL DELAY (4MS MINIMUM) FOR
  DEC 2  # RELAY LATCHING

RSTRTST  CCS CNTR  # CHECK FOR RESTART ENTRY (PRE40.6)
  TCF GIMTRIM +2 # RESTART ENTRY....BYPASS 4 SECOND DELAY
     # TST,TRIM SETS +0 ON NORMAL ENTRY

  CAE MRKRTMP  # CHECK FOR TEST/TRIM OR TRIM ONLY
  TS CNTR  # MRKRTMP SAVES CNTR FOR RESTARTS
  EXTEND
  BZMF GIMTRIM  # (TRIM ONLY)

GDTSETUP CS ZERO  # GIMBAL DRIVE TEST SETUP, FOR PITCH
  TS CNTR

GIMDTEST CAF +2ACTDEG # GIMBAL DRIVE TEST, 1ST INCREMENT
  TC OUTPUT  # (LEAVES GIMBAL AT +2 DEG)
  CAF -4ACTDEG # 2ND INCREMENT (LEAVES GIMBAL AT -2)
  TC OUTPUT
  CAF +2ACTDEG # 3RD INCREMENT (LEAVES GIMBAL AT -0)
  TC OUTPUT

  CS CNTR  # CHECK FOR COMPLETION OF YAW TEST.
# Page 731
  CCS A
  TCF GIMTRIM  # COMPLETED, GO TO GIMBAL TRIM ROUTINE
  CS BIT1  # SET UP YAW TEST
  TS CNTR
  TCF GIMDTEST # FOR YAW TEST

OUTPUT  EXTEND   # OUTPUT THE INCREMENT....SAVE Q
  QXCH TEMPR60

  INDEX CNTR
  TS TVCPITCH

  INDEX CNTR
  CAF BIT11
  EXTEND
  WOR CHAN14

  TC FIXDELAY # WAIT 2SEC, WHILE ASTRONAUT VERIFIES
  DEC 200  #  GIMBAL MOTION ON GPI
  TC TEMPR60

GIMTRIM  TC FIXDELAY # WAIT 4 SECONDS BEFORE GIMBAL TRIM
  DEC 400

 +2 CS ZERO  # PICK UP TRIM VALUES AND OUTPUT THEM
  AD PACTOFF  # (AVOID +0) ENTRY POINT FROM RSTRTST
  TS TVCPITCH # ON A RESTART, TO AVOID 4SEC DELAY
  CS ZERO
  AD YACTOFF
  TS TVCYAW

  CAF PRIO6  # RELEASE THE COUNTERS, BITS 11,12
  EXTEND
  WOR CHAN14

ENDS40.6 TCF TASKOVER

OCT02200 OCT 02200  # BITS 8,11 FOR CHANNEL 12 TVC/OPTICS
-4ACTDEG DEC -168  # -2(+2ACTDEG), WHOLE BITS, NO ROUNDUP
+2ACTDEG DEC +84  # +2 DEG, SC.AT 85.41 ARCSEC/BIT (+84D)

# CALLED BY "DONOUN46" (VERB 48), OR DIRECTLY BY "FRESHDAP" (RCS DAP) VIA IBNKCALL

  COUNT 20/S41.2

S41.2  CA DAPDATR1
# Page 732
  MASK THREE
  AD A
  TS RATEINDX

  INHINT
  CAE DAPDATR1 # IS LEM ATTACHED (BITS 14,13 OF DAPDATR1
  MASK PRIO30  # =10)
  AD -BIT14  # (OCT57777)
  EXTEND
  BZF TOGETHER # YES

  CS BIT2  # NO, UNSET FLAG
  MASK FLAGWRD7
  TS FLAGWRD7

  TCF +4

TOGETHER CS FLAGWRD7 # ATTACHED, SET FLAG FOR INTEGRATION
  MASK BIT2
  ADS FLAGWRD7

  RELINT

  CA DAPDATR1
  MASK BIT4
  EXTEND
  BZMF +2  # DEC 46 MEANS NARROW DB
  CA DEC409
  AD DEC46  # DEC 455 MEANS WIDE DB
  TS ADB

  CA DAPDATR1
  MASK BIT7  # QUAD BD
  EXTEND
  BZMF +2
  CA ONE
  TS XTRANS
  CA DAPDATR1
  MASK BIT10  # QUAD AC
  EXTEND
  BZMF +2
  CS ONE
  ADS XTRANS

  INHINT
  EXTEND
  BZF +5  # CLEAR NJETSFLG (4 JETS, OR NO JETS)
  CS FLAGWRD1 # SET NJETSFLG (2 JETS, AC OR BD QUADS)
  MASK BIT15  # NJETSFLG = 1 FOR 2 JET ULLAGE (AC OR BD)
  ADS FLAGWRD1
# Page 733
  TCF +4
  CS BIT15  # KJETSFLG = 0 FOR 4 JET (OR 0 JET) ULLAGE
  MASK FLAGWRD1
  TS FLAGWRD1
  RELINT
  CA DAPDATR2
  MASK BIT13
  EXTEND
  BZMF +2
  TCF +2
  CS ONE
  COM
  TS ACORBD  # MINUS FOR A-C, PLUS FOR B-D

  CA DAPDATR2
  MASK BIT10
  CCS A
  TCF +4
  CA ONE
  TS RACFAIL
  TCF BDFAIL
  CA ZERO
  TS RACFAIL
  CA DAPDATR2
  MASK BIT4
  CCS A
  TCF BDFAIL
  CS ONE
  TS RACFAIL
BDFAIL  CA DAPDATR2
  MASK BIT7
  CCS A
  TCF +4
  CA ONE
  TS RBDFAIL
  TC Q
  CA ZERO
  TS RBDFAIL
  CA DAPDATR2
  MASK BIT1
  CCS A
  TC Q
  CS ONE
  TS RBDFAIL
  TC Q

# DAPFIG ENTRY VIA TC POSTJUMP AS JOB FROM "STABLISH" (VERB 46)

  BANK 42
  SETLOC EXTVBS
# Page 734
  BANK

DAPFIG  CS BIT9  # TURN OFF SIVB TAKEOVER
  EXTEND
  WAND CHAN12
  CAE DAPDATR1 # DETERMINE VEHICLE CONFIGURATION
  EXTEND
  MP BIT3  # RIGHT SHIFT 4 OCTAL DIGITS
  MASK THREE  # (IN CASE BIT 15 IS USED)
  INDEX A
  TCF +1  # BRANCH BASED ON CONFIG....

  TCF NODAPUP  # CM.......ACTIVATE NODAP
  TCF RCSDAPUP # CSM......ACTIVATE RCSDAP
  TCF RCSDAPUP # CSM/LEM..ACTIVATE RCSDAP
  TC POSTJUMP
  CADR SATSTKON
RCSDAPUP INHINT   # CALL TO ACTIVATE RCSDAP, AND RETURN
  TCR IBNKCALL
  CADR RCSDAPON
  RELINT
  TCF ENDFIG  # CAME IN VIA V46, GO OUT VIA GOPIN
NODAPUP  EXTEND   # T5 IDLE FOR NODAP (DON'T WORRY ABOUT T)
  DCA T5IDLDAP
  DXCH T5LOC
  TC DOWNFLAG # RESET T5-USAGE FLAGS FOR NODAP
  ADRES DAPBIT1  # BIT 15 FLAG 6 = 0
  TC DOWNFLAG
  ADRES DAPBIT2  # BIT 14 FLAG 6 = 0
  INHINT
  TC IBNKCALL # ZERO JET CHANNELS IN 14 MS AND THEN
  CADR ZEROJET  # LEAVE THE T6 CLOCK DISABLED.
  RELINT
  CAF BIT1  # KILL KALCMANU JOB
  TS HOLDFLAG
ENDFIG  TC POSTJUMP # CAME IN VIA V46, GO OUT VIA GOPIN
  CADR GOPIN
  SBANK= PINSUPER # Added by RSB 2009
  EBANK= PACTOFF
T5IDLDAP 2CADR T5IDLOC

  SBANK= LOWSUPER
  BANK 17
  SETLOC DAPS6
  BANK

DEC409  DEC 409
DEC46  DEC 46

# Page 735

# CALLED BY "DONOUN47" (VERB 48), OR DIRECTLY BY "FRESHDAP" (RCS DAP)
S40.14  CAE IXX  # RCS ENTRY
  EXTEND
  MP CONTONE
  TS J/M

  CA IAVG
  EXTEND
  MP CONTONE
  TS J/M1

  TS J/M2

  EXTEND
  DCA CONTTWO
  EXTEND
  DV IXX
  TS KMJ

  EXTEND
  DCA CONTTWO
  EXTEND
  DV IAVG
  TS KMJ1

  TS KMJ2

  TC Q

CONTONE  DEC .662034  # 2PI/M
CONTTWO  2DEC .00118

  COUNT  24/TVNG

  BANK 31
  SETLOC P40S
  BANK

POS-2.5  OCT 37405
  EBANK= DAPDATR1
RCSCADR  2CADR RCSUP

6SECT5  OCT 37704
  COUNT 21/RCSUP

  BANK 20

  SETLOC DAPS3
  BANK

# Page 736

RCSUP  LXCH BANKRUPT
  EXTEND
  QXCH QRUPT

  TCR RCSDAPON # ACTIVATE RCS DAP

  TCF RESUME

  EBANK= DAPDATR1
RCSADDR  2CADR RCSATT

0.6SECT5 OCT 37704

     # RCSDAPON ENTRY MUST BE UNDER INT-INHIBIT
RCSDAPON CAF 0.6SECT5 # 0.6 SEC ALLOWS TVCEXEC/ROLLDAP TO DIE
 +1 TS TIME5  # ENTRY FROM R00TOP00
  TS T5PHASE  # WILL CAUSE FRESHDAP (+1)

  CS RCSFLAGS # SET BIT3 TO REINITIALIZE FDAI ERROR
  MASK BIT3  # DISPLAY, IN CASE SC CONT SWITCH
  ADS RCSFLAGS # IN SCS NOT GNC (GUIDEMODE PRIMARY)

  EXTEND
  DCA RCSADDR  # (RCSATT)
  DXCH T5LOC

  CS OCT60000 # SEE BITS 15,14 TO 01 TO INDICATE
  MASK FLAGWRD6 # T5 TAKEOVER BY RCSDAP
  AD BIT14
  TS FLAGWRD6 # KILLS TVCEXEC AND ROLLDAP STARTS

  TC Q  # RETURN TO CALLER (TVCDAPOF OR RCSDAPUP)



Messung V0.5 in Prozent
C=63 H=100 G=83

¤ Dauer der Verarbeitung: 0.240 Sekunden  (vorverarbeitet am  2026-10-12) ¤

*© Formatika GbR, Deutschland






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.