### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: PRELAUNCH_ALIGNMENT_PROGRAM.agc
## Purpose: A section of Sunrise 45.
## It is part of the reconstructed source code for the penultimate
## release of the Block I Command Module system test software. No
## original listings of this program are available; instead, this
## file was created via disassembly of dumps of Sunrise core rope
## memory modules and comparison with the later Block I program
## Solarium 55.
## Assembler: yaYUL --block1
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2022-12-09 MAS Initial reconstructed source.
## Names in this section are largely taken from AGC Information Series Issue 22,
## Prelaunch Alignment.
# THE PRELAUNCH ALIGNMENT PROGRAM CONSISTS OF TWO PARTS- VERTICAL ERECTION AND GYROCOMPASSING. IN THE FIRST CASE
# THE Z PIPA INPUTS ARE USED TO CONTROL THE Y GYRO IN SUCH A WAY THAT THESE INPUTS ARE NULLED. A SIMILAR SIT-
# UATION APPLIES TO THE Y PIPA INPUTS AND THE Z GYRO.IN THE GYROCOMPASSING CASE, THE Y PIPA INPUTS ARE USED IN
# EXACTLY THE SAME FASHION AS IN VERTICAL ERECTION. THE Z PIPA INPUTS ARE SPLIT BETWEEN THE Y GYRO TO HOLD THE
# VERTICAL AND THE X GYRO TO POINT THE Z AXIS ALONG SOME DESIRED AZIMUTH.
# WHILE PRELAUNCH IS ACTIVE IT STAYS IN THE EXECUTIVE AND USES THE SLEEP/WAKE FEATURES. BY THIS MEANS MOST
# ERASABLE USAGE IS CONFINED TO A VAC AREA. THE ASSIGNMENT IS AS FOLLOWS-
SINAZ = 2 # SIN OF AZIMUTH
COSAZ = 4 # COSINE OF AZIMUTH
FILTER = 6
DELZ = 8D
DELY = 10D
DELE = 12D
FILDELZ = DELE
DELS = 14D
FILDELY = DELS
INT = 16D
PREVTIME = 20D
THETAY = 24D
THETAZ = 26D
THETAX = 28D
THETASTH = 30D
THETAE = 32D
SINLAM = 34D # SIN OF LATITUDE
COSLAM = 36D # COSINE OF LATITUDE
BANK 23
TOP1 CAF QUARTER
TS AZIMUTH
CAF ZERO
TS AZIMUTH +1
TS PRELYGA
TS PRELZGA
TS PRELXGA
TS DRIFTY
TS DRIFTZ
TS DRIFTX
CAF LABLAT
TS LATITUDE
CAF LABLAT +1
TS LATITUDE +1
# ENTER AT TOP2 IF GIMBAL ANGLES, AZIMUTH, LATITUDE ALREADY KEYED IN
TOP2 TC BANKCALL # GO AND START CDU ZEROING
CADR IMUZERO
CAF SIXHNDRD # INITIALIZE FOR 5 MIN VERTICAL
TS GYROCSW
CAF PRELKG
TS KG
CAF ZERO # INITIALIZE ERASABLE MEMORY TO ZEROS
TS GYROD
TS GYROD +2
TS GYROD +4
TS KH
TC BANKCALL # INITIALIZATION COMPLETE SO STALL
CADR IMUSTALL
TC PRELEXIT
TC PHASCHNG # GO INTO COARSE ALIGN PHASE.
OCT 01100
TC PRELEXIT
TC PLSTCHK
REPL11 TC BANKCALL
CADR IMUCOARS
TC BANKCALL # NOTHING TO DO BUT SPEEP
CADR IMUSTALL
TC PRELEXIT
STARTPL2 TC PHASCHNG # START FINE ALIGN - INITIALIZATION PHASE.
OCT 01200
TC PRELEXIT
TC PLSTCHK
REPL12 TC BANKCALL
CADR IMUFINE
TC BANKCALL # SLEEP
CADR IMUSTALL
TC PRELEXIT
TC PHASCHNG
OCT 01300
TC PRELEXIT
TC PLSTCHK
PLREFINE TC INTPRET
RTB 1
SIN
ZEROVAC
LATITUDE
STORE SINLAM
COS 0
LATITUDE
STORE COSLAM
SMOVE 1
DSU
90DEGAZ
AZIMUTH
SIN 0
0
STORE SINAZ
COS 0
STORE COSAZ
RTB 0
LOADTIME
STORE PREVTIME
EXIT 0
CAF ZERO
TS PIPAY # SET ALL PIPAS TO ZERO
TS PIPAZ
INHINT
CAF PRELDT # SET WAITLIST TO WAKE JOB
TC WAITLIST
CADR PRELALTS
CAF WAKEPRAD
TC JOBSLEEP
# PRELAUNCH WAITLIST TASK - EXECUTED EVERY .5 SEC. IN LOOP.
PRELALTS CAF ZERO
XCH PIPAY
TS RUPTREG1
CAF ZERO
XCH PIPAZ
TS RUPTREG2
TC GETPHASE
OCT 0
TC NOPLWAIT
CAF PRELDT # SELF-SUSTAINING WAITLIST CALL
TC WAITLIST
CADR PRELALTS
NOPLWAIT CAF WAKEPRAD
TC JOBWAKE
CCS PHASDATA
TC +2
TC TASKOVER
XCH RUPTREG1
INDEX PHASDATA
TS MPAC
XCH RUPTREG2
INDEX PHASDATA
TS MPAC +1
TC TASKOVER # RESUME
PRAWAKE XCH MPAC
INDEX FIXLOC
TS DELY
XCH MPAC +1
INDEX FIXLOC
TS DELZ
TC INTPRET
SMOVE 0 # ZERO TO THEAT-SOUTH
ZEROPR
STORE THETASTH
NOLOD 0
STORE THETAE # ZERO TO THETA EAST
EXIT 0
TC GETPHASE # CHECK IF VERTICAL ERECTION (UNCONDIT.)
OCT 0
TC PRELEXIT
TS MPAC
TC PLSTCHK
INDEX MPAC
TC -12
TC NOGYROCM
TC TJL
DOGYROC TC INTPRET
ITC 0
GYROCOM
ITC 0
EARTHRAT
ENDOFPR EXIT 0
CCS WASKSET
TC +4
TC PRELEXIT
TC +2
TC PRELEXIT
CAF ZERO # INITIALIZE TORQUING REGISTERS AND RESET
INDEX FIXLOC
XCH THETAX
TC PLLIMIT
TS GYROD +1
CAF ZERO
INDEX FIXLOC
XCH THETAY
TC PLLIMIT
TS GYROD +3
CAF ZERO
INDEX FIXLOC
XCH THETAZ
TC PLLIMIT
TS GYROD +5
TC BANKCALL
CADR IMUPULSE
TC BANKCALL
CADR IMUSTALL
TC PRELEXIT
CAF WAKEPRAD
TC JOBSLEEP
PLLIMIT TS OVCTR
XCH Q
TS TEM2
CCS OVCTR
AD -320PLS
TC +2
AD -320PLS
CCS A
TC +5
TC TEM2
NOOP
XCH OVCTR
TC TEM2
CCS OVCTR
CS -320PLS
TC TEM2
CAF -320PLS
TC TEM2
-320PLS DEC -320
# VERTICAL ERECTION PROCEDURES.
NOGYROCM CCS GYROCSW # COUNT DOWN FOR 5 MIN OF VERTICAL ERECT.
TC MORE # IF MORE TO COME.
TC PHASCHNG # IF NOT, GO INTO GYROCOMP
OCT 01500
TC PRELEXIT
TC PLSTCHK
TC +2
MORE TS GYROCSW
TJL TC INTPRET
ITC 0
EARTHRAT
DSU 1
DMP DAD
DELY
FILDELY
VERECTC3
FILDELY
STORE FILDELY
AXC,1 1
AXC,2 ITC
2
0
VERECT
DSU 1
DMP DAD
DELZ
FILDELZ
VERECTC3
FILDELZ
STORE FILDELZ
AXC,1 2
NOLOD COMP
ITC
0
VERECT
ITC 0
ENDOFPR
# CALCULATION OF EARTH RATE
EARTHRAT RTB 0
LOADTIME
STORE S1
NOLOD 2
DSU TSLT
DMPR
PREVTIME
14D
LOMEGA
DMOVE 0
S1
STORE PREVTIME
DMP 1 # SIN(LAMBDE).DT.LENGTH OMEGA + THETA X
TSLT DAD
0
SINLAM
1
THETAX
STORE THETAX
DMP 1 # -COS(LAMBDA).DT.LENGTH OMEGA + THETA STH
TSLT BDSU
-
COSLAM
1
THETASTH
STORE THETASTH
DMP 1 # COS(AZIMUTH). SOUTH COMPONENT
TSLT
THETASTH # TO P.D. LIST
COSAZ
1
DMP 2 # Y COMPONENT = SIN(AZIMUTH).EAST COMP
TSLT DAD # + COS(AZIMUTH). SOUTH
DAD
THETAE # COMP
SINAZ
1
THETAY
STORE THETAY
DMP 1 # SIN(AZIMUTH). SOUTH COMPONENT
TSLT
SINAZ # TO P.D. LIST
THETASTH
1
DMP 2 # Z COMPONENT = COS(AZIMUTH.EAST COMP
TSLT DSU
DAD
COSAZ # -SIN(AZIMUTH).SOUTH COMP
THETAE
1
-
THETAZ
STORE THETAZ
SMOVE 1
TSRT DAD
DRIFTX
14D
THETAX
STORE THETAX
SMOVE 1
TSRT DAD
DRIFTY
14D
THETAY
STORE THETAY
SMOVE 1
TSRT DAD
DRIFTZ
14D
THETAZ
STORE THETAZ
ITCQ 0
# COMPUTATION OF GYROCOMPASS COMMAND
GYROCOM ITA 1
DMP TSLT
PRELTEMP
DELZ
COSAZ
1
DMP 1 # DELTA-V(EAST)= COS(AZ).DELTA-V(Z)
TSLT DAD
DELY
SINAZ
1
STORE DELE
AXC,1 2
AXC,2 NOLOD
COMP ITC
6
2
VERECT
DMP 1 # SIN(AZ).DELTA-V(Z)
TSLT
DELZ
SINAZ
1
DMP 1 # DELTA-V(SOUTH= COS(AZ.DELTA-V(Y)
TSLT DSU
DELY
COSAZ
1
STORE DELS
DMP 0
DELS # C1. DELTA-V(SOUTH) TO P.D. LIST
GYRCMC1
DMP 1 # FILTER = C1. DELTA-V(SOUTH)
DAD # +C2. FILTER
FILTER
GYRCMC2
STORE FILTER
DMP 1
TSLT DAD
FILTER
GYRCMC3
5
THETAX
STORE THETAX
DMP 1 # EAST-TORQUING ANGLE = C4.FILTER
TSLT
FILTER
GYRCMC4
2
STORE THETAE
ITCI 0
PRELTEMP
# VERTICAL ERECTION SUBROUTINE
#
# VERECT - VERTICAL ERECTION ENTERED IN INT. MODE WITH
# SUBROUTINE C(X1)= 2 FOR C(MPAC)= DEL-V Y
# = 0 C(MPAC)=-DEL-V Z
# = 6 FOR C(MPAC)=-DEL-V E
# FOR THESE THREE CASES OUTPUT WILL BE
# THETA-Z
# THETA-Y
# THETA-S RESPECTIVELY.
# LOOP CONSTANTS ARE DETERMINED BY
# C(X2)= 0 NO GYROCOMPASSING
# 2 GYROCOMPASSING
VERECT NOLOD 0
STORE S1
NOLOD 1
DAD*
INT,1 # COMPUTE INTEGRAL OF DEL-V = INT
STORE INT,1
DMOVE 1
DMP* TSLT
S1
VERECTC1,2
5
DMP* 1
DAD* DAD
INT,1 # THETA = THETA + C1 DEL-V + C2 INT
VERECTC2,2
THETAY,1
STORE THETAY,1
ITCQ 0
# PRELAUNCH MANUAL REQUEST PROCESSOR.
STARTPL CAF PLPRIO # ENTER EXECUTIVE REQUEST ON START-UP.
TC FINDVAC
CADR STARTPL2
TC SWRETURN
PLSTCHK CS EIGHT # PRELAUNCH COMES HERE WHENEVER A PHASE
AD MPAC # REFERENCE IS MADE TO SEE IF A MANUAL
CCS A # REQUEST HAS BEEN ENTERED THROUGH MASTER
TC Q # CONTROL. ALL SUCH PHASES ARE LESS THAN 8
PLPRIO OCT 24000
TC +1
INDEX MPAC # SEE WHICH MANUAL MODE REQUESTED.
TC +0
TC TOP1 # 1 - INITIALIZATION 1.
TC TOP2 # 2 - INITIALIZATION 2.
TC PLFINCHK
TC PLFINCHK
TC TOP1
TC TOP1
TC TOP1
PLFINCHK CCS WASKSET # SEE IF IN FINE ALIGN.
TC 3CHECK
TC PRELEXIT # SYSTEM IN BAD SHAPE.
TC DOPLCHNG # DO THE CHANGE ANYWAY.
TC PRELEXIT # SYSTEM IN BAD SHAPE.
3CHECK AD -CCSFINE
CCS A
TC TOP1
-CCSFINE OCT -47 # WASKSET IS 50 FOR FINE ALIGN.
TC TOP1
DOPLCHNG INDEX MPAC
TC -2
TC DOPL14
DOPL15 TC PHASCHNG # SET PHASE TO GYROCOMPASSING
OCT 01500
TC PRELEXIT
TC DOGYROC
DOPL14 TC PHASCHNG # SET PHASE TO UNCONDITIONAL VERT-
OCT 01400 # ICAL ERECTION
TC PRELEXIT
TC TJL
# PRELAUNCH GO-SEQUENCE PROCESSOR.
#
PRELGO CAF PLPRIO
TC FINDVAC
CADR PLRESTT
TC SWRETURN
PLRESTT TC GETPHASE
OCT 0
TC PRELEXIT
TS MPAC
TC PLSTCHK
CS MAXPHASE
AD MPAC
CCS A
TC PRELEXIT
MAXPHASE OCT 15
TC PLGOFAN
REPLLOOP CAF FINECODE
TS DESKSET
TC PLREFINE
PLGOFAN INDEX MPAC
TC -10
TC REPL11
TC REPL12
TC REPLLOOP
TC REPLLOOP
TC REPLLOOP
FINECODE OCT 50 # FINE ALIGN AND COMPUTER CONTROL.
# PRELAUNCH TERMINATION.
PRELEXIT CS ZERO # RETURN IMU TO MANUAL CONTROL.
TS CDUIND
TC MAJEXIT
OCT 0
# PRELAUNCH BANK STORED CONSTANTS
VERECTC1 2DEC 20. B-5 # VERTICAL LOOP CONSTANTS
2DEC 1 B-5
VERECTC2 2DEC .4
2DEC .001
VERECTC3 2DEC .1
GYRCMC1 2DEC .999999999
GYRCMC2 2DEC 0.0
GYRCMC3 2DEC -68 B-7
GYRCMC4 2DEC 4 B-3
LABLAT 2DEC .117678252 # LATITUDE OF IL-7
90DEGAZ 2DEC .25 # 90 DEG. FROM NORTH = EAST
PRELKG DEC .18
PRELDT DEC .5 E2 # HALF SECOND PRELAUNCH CYCLE
WAKEPRAD CADR PRAWAKE # WAKING ADDRESS FOR PRELAUNCH
ZEROPR OCT 0 # OUR OWN PERSONAL COPY OF ZERO
SIXHNDRD DEC 600
LOMEGA 2DEC .12169524 # EARTH RATE IN IRIG PULSES PER .01 SEC.