Reorganized files to separate Luminary099 source code from Comanche055 source code

This commit is contained in:
Clifford Richardson
2016-07-10 16:53:06 -07:00
parent 0cf2742583
commit 104c1c3430
126 changed files with 0 additions and 0 deletions

View File

@ -0,0 +1,511 @@
# Copyright: Public domain.
# Filename: AGC_BLOCK_TWO_SELF_CHECK.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: 1284-1293
# Mod history: 2009-05-27 OH Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1284
# PROGRAM DESCRIPTION DATE: 20 DECEMBER 1967
# PROGRAM NAME -- SELF-CHECK LOG SECTION: AGC BLOCK TWO SELF-CHECK
# MOD NO -- 1 ASSEMBLY SUBROUTINE UTILITYM REV 25
# MOD BY -- GAUNTT
#
# FUNCTIONAL DESCRIPTION
# PROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS
# PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN
# STARTING VERB.
#
# THE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.
#
# THE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK, ONE AT A TIME.
#
# IN ALL THERE ARE 7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE
# FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3.
#
# THE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS
# A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN
# OCTAL, TO LOAD INTO SMODE.
# +-4 ERASABLE MEMORY
# +-5 FIXED MEMORY
# +-1,2,3,6,7,10 EVERYTHING IN OPTIONS 4 AND 5.
# -0 SAME AS +-10 UNTIL AN ERROR IS DETECTED.
# +0 NO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.
#
# WARNINGS
# USE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS.
# SMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP.
#
# CALLING SEQUENCE
# TO CALL SELF-CHECK KEY IN
# V 21 N 27 E OPTION NUMBER E
# TO CALL SHOW-BANKSUM KEY IN
# V 91 E DISPLAYS FIRST BANK
# V 33 E PROCEED, DISPLAYS NEXT BANK
#
# EXIT MODES, NORMAL AND ALARM
# SELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT
# COMPUTER INTO BACKUP IDLE LOOP, - OPTIONS NUMBERS RESTART THE OPTION.
#
# THE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.
#
# SHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP.
#
# OUTPUT
# Page 1285
# SELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND
# TURNS ON THE ALARM LIGHT. THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E. FOR FURTHER
# INFORMATION HE MAY KEY IN V 05 N 08 E, THE DSKY DISPLAY IN R1 WILL BE ADDRESS+1 OF WHERE THE ERROR WAS DETECTED,
# IN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN
# INITIATED FRESH START (SLAP1).
#
# SHOW-BANKSUM STARTING WTIH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2
# THE BANK NUMBER, AND IN R3 THE BUGGER WORD.
#
# ERASABLE INITIALIZATION REQUIRED
# ACCOMPLISHED BY FRESH START
# SMODE SET TO +0
#
# DEBRIS
# ALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.
# EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT
# E MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART).
BANK 25
SETLOC SELFCHEC
BANK
COUNT* $$/SELF
SBIT1 EQUALS BIT1
SBIT2 EQUALS BIT2
SBIT3 EQUALS BIT3
SBIT4 EQUALS BIT4
SBIT5 EQUALS BIT5
SBIT6 EQUALS BIT6
SBIT7 EQUALS BIT7
SBIT8 EQUALS BIT8
SBIT9 EQUALS BIT9
SBIT10 EQUALS BIT10
SBIT11 EQUALS BIT11
SBIT12 EQUALS BIT12
SBIT13 EQUALS BIT13
SBIT14 EQUALS BIT14
SBIT15 EQUALS BIT15
S+ZERO EQUALS ZERO
S+1 EQUALS BIT1
S+2 EQUALS BIT2
S+3 EQUALS THREE
S+4 EQUALS FOUR
S+5 EQUALS FIVE
S+6 EQUALS SIX
# Page 1286
S+7 EQUALS SEVEN
S8BITS EQUALS LOW8 # 00377
CNTRCON = OCT50 # USED IN CNTRCHK
ERASCON1 OCTAL 00061 # USED IN ERASCHK
ERASCON2 OCTAL 01373 # USED IN ERASCHK
ERASCON6 = OCT1400 # USED IN ERASCHK
ERASCON3 OCTAL 01461 # USED IN ERASCHK
ERASCON4 OCTAL 01773 # USED IN ERASCHK
S10BITS EQUALS LOW10 # 01777, USED IN ERASCHK
SBNK03 EQUALS PRIO6 # 06000, USED IN ROPECHK
-MAXADRS = HI5 # FOR ROPECHK
SIXTY OCTAL 00060
SUPRCON OCTAL 60017 # USED IN ROPECHK
S13BITS OCTAL 17777
CONC+S1 OCTAL 25252 # USED IN CYCLSHFT
CONC+S2 OCTAL 52400 # USED IN CYCLSHFT
ERASCON5 OCTAL 76777
S-7 = OCT77770
S-4 EQUALS NEG4
S-3 EQUALS NEG3
S-2 EQUALS NEG2
S-1 EQUALS NEGONE
S-ZERO EQUALS NEG0
EBANK= LST1
ADRS1 ADRES SKEEP1
SELFADRS ADRES SELFCHK # SELFCHK RETURN ADDRESS. SHOULD BE PUT
# IN SELFRET WHEN GOING FROM SELFCHK TO
# SHOWSUM AND PUT IN SKEEP1 WHEN GOING
# FROM SHOWSUM TO SELF-CHECK.
PRERRORS CA ERESTORE # IS IT NECESSARY TO RESTORE ERASABLE
EXTEND
BZF ERRORS # NO
EXTEND
DCA SKEEP5
INDEX SKEEP7
DXCH 0000 # RESTORE THE TWO ERASABLE REGISTERS
CA S+ZERO
TS ERESTORE
ERRORS INHINT
CA Q
TS SFAIL # SAVE Q FOR FAILURE LOCATION
TS ALMCADR # FOR DISPLAY WITH BBANK AND ERCOUNT
INCR ERCOUNT # KEEP TRACK OF NUMBER OF MALFUNCTIONS.
TCALARM2 TC ALARM2
OCT 01102 # SELF-CHECK MALFUNCTION INDICATOR
CCS SMODE
SIDLOOP CA S+ZERO
TS SMODE
# Page 1287
TC SELFCHK # GO TO IDLE LOOP
TC SFAIL # CONTINUE WITH SELF-CHECK
-1CHK CCS A
TCF PRERRORS
TCF PRERRORS
CCS A
TCF PRERRORS
TC Q
SMODECHK EXTEND
QXCH SKEEP1
TC CHECKNJ # CHECK FOR NEW JOB
CCS SMODE
TC SOPTIONS
TC SMODECHK +2 # TO BACKUP IDLE LOOP
TC SOPTIONS
INCR SCOUNT
TC SKEEP1 # CONTINUE WITH SELF-CHECK
SOPTIONS AD S-7
EXTEND
BZMF +2 # FOR OPTIONS BELOW NINE.
BNKOPTN TC SIDLOOP # ILLEGAL OPTION. GO TO IDLE LOOP.
INCR SCOUNT # FOR OPTIONS BELOW NINE.
AD S+7
INDEX A
TC SOPTION1
SOPTION1 TC SKEEP1 # WAS TC+TCF
SOPTION2 TC SKEEP1 # WAS IN:OUT1
SOPTION3 TC SKEEP1
SOPTION4 TC ERASCHK
SOPTION5 TC ROPECHK
SOPTION6 TC SKEEP1
SOPTION7 TC SKEEP1
SOPTON10 TC SKEEP1 # CONTINUE WITH SELF-CHECK
CHECKNJ EXTEND
QXCH SELFRET # SAVE RETURN ADDRESS WHILE TESTING NEWJOB
TC POSTJUMP # TO SEE IF ANY JOBS HAVE BECOME ACTIVE.
CADR ADVAN
SELFCHK TC SMODECHK # ** CHARLEY, COME IN HERE
# SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.
# SKEEP6 HOLDS B(X+1).
# SKEEP5 HOLDS B(X).
# SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ
# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).
# Page 1288
# SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB.
#
# ERASCHK TAKES APPROXIMATELY 7 SECONDS.
ERASCHK CA S+1
TS SKEEP2
0EBANK CA S+ZERO
TS EBANK
CA ERASCON3 # 01461
TS SKEEP7 # STARTING ADDRESS
CA S10BITS # 01777
TS SKEEP3 # LAST ADDRESS CHECKED
TC ERASLOOP
E134567B CA ERASCON6 # 01400
TS SKEEP7 # STARTING ADDRESS
CA S10BITS # 01777
TS SKEEP3 # LAST ADDRESS CHECKED
TC ERASLOOP
2EBANK CA ERASCON6 # 01400
TS SKEEP7 # STARTING ADDRESS
CA ERASCON4 # 01773
TS SKEEP3 # LAST ADDRESS CHECKED
TC ERASLOOP
NOEBANK TS SKEEP2 # +0
CA ERASCON1 # 00061
TS SKEEP7 # STARTING ADDRESS
CA ERASCON2 # 01373
TS SKEEP3 # LAST ADDRESS CHECKED
ERASLOOP INHINT
CA EBANK # STORES C(EBANK)
TS SKEEP4
EXTEND
NDX SKEEP7
DCA 0000
DXCH SKEEP5 # STORES C(X) AND C(X+1) IN SKEEP6 AND 5.
CA SKEEP7
TS ERESTORE # IF RESTART, RESTORE C(X) AND C(X+1)
TS L
INCR L
NDX A
DXCH 0000 # PUTS OWN ADDRESS IN X AND X +1
NDX SKEEP7
CS 0001 # CS X+1
NDX SKEEP7
AD 0000 # AD X
TC -1CHK
CA ERESTORE # HAS ERASABLE BEEN RESTORED
EXTEND
# Page 1289
BZF ELOOPFIN # YES, EXIT ERASLOOP.
EXTEND
NDX SKEEP7
DCS 0000 # COMPLEMENT OF ADDRESS OF X AND X+1
NDX SKEEP7
DXCH 0000 # PUT COMPLEMENT OF ADDRESS OF X AND X+1
NDX SKEEP7
CS 0000 # CS X
NDX SKEEP7
AD 0001 # AD X+1
TC -1CHK
CA ERESTORE # HAS ERASABLE BEEN RESTORED
EXTEND
BZF ELOOPFIN # YES, EXIT ERASLOOP.
EXTEND
DCA SKEEP5
NDX SKEEP7
DXCH 0000 # PUT B(X) AND B(X+1) BACK INTO X AND X+1
CA S+ZERO
TS ERESTORE # IF RESTART, DO NOT RESTORE C(X), C(X+1)
ELOOPFIN RELINT
TC CHECKNJ # CHECK FOR NEW JOB
CA SKEEP4 # REPLACES B(EBANK)
TS EBANK
INCR SKEEP7
CS SKEEP7
AD SKEEP3
EXTEND
BZF +2
TC ERASLOOP # GO TO NEXT ADDRESS IN SAME BANK
CCS SKEEP2
TC NOEBANK
INCR SKEEP2 # PUT +1 IN SKEEP2.
CA EBANK
AD SBIT9
TS EBANK
AD ERASCON5 # 76777, CHECK FOR BANK E2
EXTEND
BZF 2EBANK
CCS EBANK
TC E134567B # GO TO EBANKS 1,3,4,5,6, AND 7
CA ERASCON6 # END OF ERASCHK
TS EBANK
# CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.
# INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS
CNTRCHK CA CNTRCON # 00050
CNTRLOOP TS SKEEP2
AD SBIT4 # +10 OCTAL
INDEX A
CS 0000
# Page 1290
CCS SKEEP2
TC CNTRLOOP
# CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS
CYCLSHFT CA CONC+S1 # 25252
TS CYR # C(CYR) = 12525
TS CYL # C(CYL) = 52524
TS SR # C(SR) = 12525
TS EDOP # C(EDOP) = 00125
AD CYR # 37777 C(CYR) = 45252
AD CYL # 00-12524 C(CYL) = 25251
AD SR # 00-25251 C(SR) = 05252
AD EDOP # 00-25376 C(EDOP) = +0
AD CONC+S2 # C(CONC+S2) = 52400
TC -1CHK
AD CYR # 45252
AD CYL # 72523
AD SR # 77775
AD EDOP # 77775
AD S+1 # 77776
TC -1CHK
INCR SCOUNT +1
TC SMODECHK
# SKEEP1 HOLDS SUM
# SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES
# SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY
# SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)
# (04000 TO 07777 IN FXFX BANKS)
# SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY
# SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER
# SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS
# SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION
# SKEEP7 CONTROLS WHEN ROUTINE IS IN COMMON FIXED OR FIXED FIXED BANKS
ROPECHK CA S-ZERO # *
TS SKEEP6 # * -0 FOR ROPECHK
STSHOSUM CA S+ZERO # * SHOULD BE ROPECHK
TS SKEEP4 # BANK NUMBER
CA S+1
COMMFX TS SKEEP7
CA S+ZERO
TS SKEEP1
TS SKEEP3
CA S+1
TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
COMADRS CA SKEEP4
TS L # TO SET SUPER BANK
MASK HI5
# Page 1291
AD SKEEP3
TC SUPDACAL # SUPER DATA CALL
TC ADSUM
AD SBIT11 # 02000
TC ADRSCHK
FXFX CS A
TS SKEEP7
EXTEND
BZF +3
CA SBIT12 # 04000, STARTING ADDRESS OF BANK 02
TC +2
CA SBNK03 # 06000, STARTING ADDRESS OF BANK 03
TS SKEEP3
CA S+ZERO
TS SKEEP1
CA S+1
TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
FXADRS INDEX SKEEP3
CA 0000
TC ADSUM
TC ADRSCHK
ADSUM TS SKEEP2
AD SKEEP1
TS SKEEP1
CAF S+ZERO
AD SKEEP1
TS SKEEP1
CS SKEEP2
AD SKEEP3
TC Q
ADRSCHK LXCH A
CA SKEEP3
MASK LOW10 # RELATIVE ADDRESS
AD -MAXADRS # SUBTRACT MAX RELATIVE ADDRESS = 1777.
EXTEND
BZF SOPTION # CHECKSUM FINISHED IF LAST ADDRESS.
CCS SKEEP5 # IS CHECKSUM FINISHED
TC +3 # NO
TC +2 # NO
TC SOPTION # GO TO ROPECHK SHOWSUM OPTION
CCS L # -0 MEANS A TC SELF WORD.
TC CONTINU
TC CONTINU
TC CONTINU
CCS SKEEP5
TC CONTINU +1
CA S-1
# Page 1292
TC CONTINU +1 # AD IN THE BUGGER WORD
CONTINU CA S+1 # MAKE SURE TWO CONSECUTIVE TC SELF WORDS
TS SKEEP5
CCS SKEEP6 # *
CCS NEWJOB # * +1, SHOWSUM
TC CHANG1 # *
TC +2 # *
TC CHECKNJ # -0 IN SKEEP6 FOR ROPECHK
ADRS+1 INCR SKEEP3
CCS SKEEP7
TC COMADRS
TC COMADRS
TC FXADRS
TC FXADRS
NXTBNK CS SKEEP4
AD LSTBNKCH # LAST BANK TO BE CHECKED
EXTEND
BZF ENDSUMS # END OF SUMMING OF BANKS.
CA SKEEP4
AD SBIT11
TS SKEEP4 # 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY
TC CHKSUPR
17TO20 CA SBIT15
ADS SKEEP4 # SET FOR BANK 20
TC GONXTBNK
CHKSUPR MASK HI5
EXTEND
BZF NXTSUPR # INCREMENT SUPER BANK
27TO30 AD S13BITS
EXTEND
BZF +2 # BANK SET FOR 30
TC GONXTBNK
CA SIXTY # FIRST SUPER BANK
ADS SKEEP4
TC GONXTBNK
NXTSUPR AD SUPRCON # SET BNK 30 + INCR SUPR BNK AND CANCEL
ADS SKEEP4 # ERC BIT OF TEH 37 TO 40 ADVANCE.
GONXTBNK CCS SKEEP7
TC COMMFX
CA S+1
TC FXFX
CA SBIT7 # HAS TO BE LARGER THAN NO OF FXSW BANKS.
TC COMMFX
SOPTION CA SKEEP4
MASK HI5 # = BANK BITS
TC LEFT5
TS L # BANK NUMBER BEFORE SUPER BANK
# Page 1293
CA SKEEP4
MASK S8BITS # = SUPER BANK BITS
EXTEND
BZF SOPT # BEFORE SUPER BANK
TS SR # SUPER BANK NECESSARY
CA L
MASK SEVEN
AD SR
TS L # BANK NUMBER WITH SUPER BANK
SOPT CA SKEEP6 # *
EXTEND # *
BZF +2 # * ON -0 CONTINUE WITH ROPE CHECK.
TC SDISPLAY # * ON +1 GO TO DISPLAY OF SUM.
CCS SKEEP1 # FORCE SUM TO ABSOLUTE VALUE.
TC +2
TC +2
AD S+1
TS SKEEP1
BNKCHK CS L # = - BANK NUMBER
AD SKEEP1
AD S-1
TC -1CHK # CHECK SUM
TC NXTBNK
EBANK= NEWJOB
LSTBNKCH BBCON* # * CONSTANT, LAST BANK.

View File

@ -0,0 +1,230 @@
# Copyright: Public domain.
# Filename: AGS_INITIALIZATION.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 206-210
# Mod history: 2009-05-19 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 206
# PROGRAM NAME: AGS INITIALIZATION (R47)
#
# WRITTEN BY: RHODE/KILROY/FOLLETT
#
# MOD NO.: 0
# DATE: 23 MARCH 1967
# MOD BY: KILROY
#
# MOD NO.: 1
# DATE: 28 OCTOBER 1967
# MOD BY: FOLLETT
#
# FUNCT. DESC.: (1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY (AEA) WITH THE LEM AND CSM STATE VECTORS
# (POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.
#
# (2) TO ZERO THE ICDU, LGC, AND AEA GIMBAL ANGLE COUNTER SIMULTANEOUSLY IN ORDER TO ESTABLISH A
# COMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL (EULER) ANGLES WHICH DEFINE LEM ATTITUDE
#
# (3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO. (IF AN AEA CLOCK ZERO IS
# REQUESTED DURING THIS PROGRAM
#
# LOG SECTION: AGS INITIALIZATION
#
# CALLING SEQ: PROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.
# R47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS
#
# SUBROUTINES
# CALLED:
#
# NORMAL EXIT: ENDEXT
#
# ALARM/ABORT: ALARM -- BAD REFSMMAT -- CODE:220
# OPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.
#
# ERASABLES
# USED: SAMPTIME (2) TIME OF :ENTER: KEYSTROKE
# AGSK (2) GROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:
# AGSBUFF (140) CONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)
# AGSWORD (1) PREVIOUS DOWNLIST SAVED HERE
EBANK= AGSBUFF
BANK 40
SETLOC R47
BANK
COUNT* $$/R47
AGSINIT CAF REFSMBIT
MASK FLAGWRD3 # CHECK REFSMFLG.
CCS A
# Page 207
TC REDSPTEM # REFSMMAT IS OK
TC ALARM # REFSMMAT IS BAD
OCT 220
TC ENDEXT
NEWAGS EXTEND
DCA SAMPTIME # TIME OF THE :ENTER: KEYSTROKE
DXCH AGSK # BECOMES NEW AEA CLOCK :ZERO:
REDSPTEM EXTEND
DCA AGSK
DXCH DSPTEMX
AGSDISPK CAF V06N16
TC BANKCALL # R1 = 00XXX. HRS., R2 = 000XX MIN.,
CADR GOMARKF # R3 = 0XX.XX SEC.
TC ENDEXT # TERMINATE RETURN
TC AGSVCALC # PROCEED RETURN
CS BIT6 # IS ENTER VIA A V32
AD MPAC
EXTEND
BZF NEWAGS # YES, USE KEYSTROKE TIME FOR NEW AGSK
EXTEND # NO, NEW AGSK LOADED VIA V25
DCA DSPTEMX # LOADED INTO DSPTEMX BY KEYING
TC REDSPTEM -1 # V25E FOLLOWED BY HRS.,MINS.,SECS.
# DISPLAY THE NEW K.
AGSVCALC TC INTPRET
SET
NODOFLAG # DON'T ALLOW V37
SET EXIT
XDSPFLAG
CAF V06N16
TC BANKCALL
CADR EXDSPRET
TC INTPRET # EXTRAPOLATE LEM AND CSM STATE VECTORS
RTB # TO THE PRESENT TIME
LOADTIME # LOAD MPAC WITH TIME2,TIME1
STCALL TDEC1 # CALCULATE LEM STATE VECTOR
LEMPREC
CALL # CALL ROUTINE TO CONVERT TO SM COORDS AND
SCALEVEC # PROVIDE PROPER SCALING
STODL AGSBUFF # (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)
TAT # TAT = TIME TO WHICH RATT1 AND VATT1 ARE
STCALL TDEC1 # COMPUTED (CSEC SINCE CLOCK START B-28).
CSMPREC # CALCULATE CSM STATE VECTOR FOR SAME TIME
CALL
SCALEVEC
# Page 208
STODL AGSBUFF +6
TAT
DSU DDV # CALCULATE AND STORE THE TIME
AGSK
TSCALE
STORE AGSBUFF +12D
EXIT
CAF LAGSLIST
TS DNLSTCOD
CAF 20SEC # DELAY FOR 20 SEC WHILE THE AGS
TC BANKCALL # DOWNLIST IS TRANSMITTED
CADR DELAYJOB
CA AGSWORD
TS DNLSTCOD # RETURN TO THE OLD DOWNLIST
CAF IMUSEBIT
MASK FLAGWRD0 # CHECK IMUSE FLAG.
CCS A
TC AGSEND # IMU IS BEING USED -- DO NOT ZERO
CKSTALL CCS IMUCADR # CHECK FOR IMU USAGE WHICH AVOIDS THE
TCF +3 # IMUSE BIT: I.E., IMU COMPENSATION.
TCF +6 # FREE. GO AHEAD WITH THE IMU ZERO.
TCF +1
+3 CAF TEN # WAIT .1 SEC AND TRY AGAIN.
TC BANKCALL
CADR DELAYJOB
TCF CKSTALL
+6 TC BANKCALL # IMU IS NOT IN USE
CADR IMUZERO # SET IMU ZERO DISCRETE FOR 320 MSECS.
TC BANKCALL # WAIT 3 SEC FOR COUNTERS TO INCREMENT
CADR IMUSTALL
TC AGSEND
AGSEND TC DOWNFLAG # ALLOW V37
ADRES NODOFLAG
CAF V50N16
TC BANKCALL
CADR GOMARK3
TCF ENDEXT
TCF ENDEXT
TC ENDEXT
SCALEVEC VLOAD MXV
VATT1
REFSMMAT
VXSC VSL2
VSCALE
# Page 209
VAD VAD # THIS SECTION ROUNDS THE VECTOR, AND
AGSRND1 # CORRECTS FOR THE FACT THAT THE AGS
AGSRND2 # IS A 2'S COMPLEMENT MACHINE WHILE THE
RTB # LGC IS A 1'S COMPLEMENT MACHINE.
VECSGNAG
STOVL VATT1
RATT1
MXV VXSC
REFSMMAT
RSCALE
VSL8 VAD # AGAIN THIS SECTION ROUNDS. TWO VECTORS
AGSRND1 # ARE ADDED TO DEFEAT ALSIGNAG IN THE
VAD RTB # CASE OF A HIGH-ORDER ZERO COUPLED WITH
AGSRND2 # A LOW ORDER NEGATIVE PART.
VECSGNAG
LXA,1
VATT1
SXA,1 LXA,1
MPAC +1
VATT1 +2
SXA,1 LXA,1
MPAC +4
VATT1 +4
SXA,1 RVQ
MPAC +6
LAGSLIST = ONE
V01N14 VN 0114
V50N00A VN 5000
V00N25 EQUALS OCT31
V06N16 VN 0616
V00N34 EQUALS 34DEC
V50N16 VN 5016
TSCALE 2DEC 100 B-10 # CSEC TO SEC SCALE FACTOR
20SEC DEC 2000
RSCALE 2DEC 3.280839 B-3 # METERS TO FEET SCALE FACTOR
VSCALE 2DEC 3.280839 E2 B-9 # METERS/CS TO FEET/SEC SCALE FACTOR
AGSRND1 2OCT 0000060000
2OCT 0000060000
2OCT 0000060000
AGSRND2 2OCT 0000037777
2OCT 0000037777
S
# Page 210
2OCT 0000037777
SBANK= LOWSUPER # FOR SUBSEQUENT LOW 2CADRS.

File diff suppressed because it is too large Load Diff

695
Luminary099/AOTMARK.s Normal file
View File

@ -0,0 +1,695 @@
# Copyright: Public domain.
# Filename: AOTMARK.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 244-261
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 244
BANK 12
SETLOC AOTMARK1
BANK
EBANK= XYMARK
COUNT* $$/MARK
AOTMARK INHINT
CCS MARKSTAT # SEE IF AOTMARK BUSY
TC +2 # MARK SYSTEM BUSY -- DO ALARM
TC EXTVBCHK
TC P00DOO
OCT 00105
EXTVBCHK CAF SIX # SEE IF EXT. VERB WORKING
MASK EXTVBACT
CCS A
TCF MKABORT # YES -- ABORT
CAF BIT2 # NO -- DISALLOW SOME EXTENDED VERB ACTION
ADS EXTVBACT # BIT2 RESET IN ENDMARK
MKVAC CCS VAC1USE # LOOK FOR A VAC AREAD -- DO ABORT IF
TCF MKVACFND # NONE AVAILABLE
CCS VAC2USE
TCF MKVACFND
CCS VAC3USE
TCF MKVACFND
CCS VAC4USE
TCF MKVACFND
CCS VAC5USE
TCF MKVACFND
DXCH BUF2
TC BAILOUT1 # ALL VAC AREAS OCCUPIED -- ABORT.
OCT 01207
MKVACFND AD TWO
TS MARKSTAT # STORE VAC ADR IN LOW 9 OF MARKSTAT
CAF ZERO
INDEX MARKSTAT
TS 0 -1 # ZERO IN VACUSE REG TO SHOW VAC OCCUPIED
CAF PRIO15
TC FINDVAC # SET UP JOB FOR GETDAT
EBANK= XYMARK
2CADR GETDAT
RELINT
TCF SWRETURN
# Page 245
MKABORT DXCH BUF2
TC BAILOUT1 # CONFLICT WITH EXTENDED VERB
OCT 01211
MKRELEAS CAF ZERO
XCH MARKSTAT # SET MARKSTAT TO ZERO
MASK LOW9 # PICK UP VAC AREA AOR
CCS A
INDEX A
TS 0 # SHOW MKVAC AREA AVAILABLE
CAF ONE
TC IBNKCALL
CADR GOODEND # GO WAKE UP CALLING JOB
# Page 246
KILLAOT CAF ZERO
TS EXTVBACT # TERMINATE AOTMARK -- ALLOW EXT VERB
TC GOTOP00H
GETDAT CS MARKSTAT # SET BIT12 TO DISCOURAGE MARKRUPT
MASK BIT12 # BIT12 RESET AT GETMARK
ADS MARKSTAT
CAF V01N71 # DISPLAY DETENT AND STAR CODE
TC BANKCALL
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF DODAT # V33 -- PROCEED -- USE THIS STAR FOR MARKS
ENTERDAT TCF GETDAT # ENTER -- REDISPLAY STAR CODE
DODAT CAF HIGH9 # PICK DETENT CODE FROM BITS7-9 OF AOTCODE
MASK AOTCODE # AND SEE IF CODE 1 TO 6
EXTEND
MP BIT9
TS XYMARK # STORE DETENT
EXTEND
BZMF GETDAT # COAS CALIBRATION CODE - NO GOOD HERE
AD NEG7 # SEE IF DETENT 7 FOR COAS
EXTEND
BZF CODE7
TCF CODE1TO6
CODE7 CAF V06N87* # CODE 7, COAS SIGHTING, GET OPTIC AXIS
TC BANKCALL # AZ AND EL OF SIGHTING DEVICE FROM ASTRO
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF +2 # PROCEED
TCF CODE7 # ON ENTER, RECYCLE
EXTEND
DCA AZ # PICK UP AZ AND EL IN SP 25 COMP
INDEX FIXLOC
DXCH 8D # STORE IN 8D AND 9D OF LOCAL VAC
CAF ZERO # BACKUP SYSTEM TO BE USED
TCF COASCODE # ZERO APPARENT ROTATION
CODE1TO6 INDEX XYMARK # INDEX AOT POSITION BY DET CODE
CA AOTEL -1
INDEX FIXLOC
TS 9D # STORE ELEVATION IN VAC+9D
INDEX XYMARK # INDEX DET CODE 1,2 OR 3
# Page 247
CA AOTAZ -1
INDEX FIXLOC
TS 8D # STORE AZIMUTH IN VAC +8D
CA AOTAZ +1 # COMPENSATION FOR APPARENT ROTATION OF
EXTEND # AOT FIELD OF VIEW IN LEFT AND RIGHT
INDEX FIXLOC # DETENTS IS STORED IN VAC +10D IN SP
MSU 8D # PRECISION ONE'S COMPLEMENT
COASCODE INDEX FIXLOC
TS 10D # ROT ANGLE
TC INTPRET # COMPUTE X AND Y PLANE VECTORS
# Page 248
# THE OPTAXIS SOBROUTINE COMPUTES THE X AND Y MARK PLANE VECS AND
# ROTATES THEM THRU THE APPARENT FIELD OF VIEW ROTATION UNIQUE TO AOT
# OPTAXIS USES OANB TO COMPUTE THE OPTIC AXIS
#
# INPUT -- AZIMUTH ANGLE IN SINGLE PREC AT CDU SCALE IN 8D OF JOB VAC
# ELEVATION ANGLE IN SINGLE PREC AT CDU SCALE IN 9D OF JOB VAC
# ROTATION ANGLE IN SINGLE PREC IS COMP SCALED BY PI IN 10D OF VAC
#
# OUTPUT -- OPTIC AXIS VEC IN NG COORDS IN SCAXIS
# X-MARK PLANE 1/4VEC IN NB COORDS AT 18D OF JOB VAC
# Y-MARK PLANE 1/4VEC IN NB COORDS AT 12D OF JOB VAC
OPTAXIS CALL # GO COMPUTE OA AN X AND Y PLANE VECS
OANB
SLOAD SR1 # LOAD APP ROTATION IN ONES COMP
10D # RESCALE BY 2PI
PUSH SIN # 1/2SIN(ROT) 0-1
PDDL COS
PUSH VXSC # 1/2COS(ROT) 2-3
18D
PDDL VXSC # 1/4COS(ROT)UYP 4-9
0
24D # 1/4SIN(ROT)UXP
BVSU STADR # UP 4-9
STODL 12D # YPNB=1/4(COS(ROT)UYP-SIN(ROT)UXP)
VXSC PDDL # UP 2-3 UP 0-1 FOR EXCHANGE
24D # 1/4COS(ROT)UXP PUSH 0-5
VXSC VAD # 1/4SIN(ROT)UYP
18D # UP 0-5
STADR
STOVL 18D # XPNB=1/4(COS(ROT)UXP+SIN(ROT)UYP)
LO6ZEROS # INITIALIZE AVE STAR VEC ACCUMULATOR
STORE STARAD +6
EXIT
TCF GETMKS
# Page 249
# THE OANB SUBROUTINE COMPUTES THE OPTIC AXIS OF THE SIGHTING INSTRUMENT
# FROM AZIMUTH AND ELEVATION INPUT FROM THE ASTRONAUT.
#
# INPUT -- AZIMUTH ANGLE IN SINGLE PREC 2'S COMP IN 8D OF JOB VAC
# ELEVATION ANGLE IN SINGLE PREC 2'S COMP IN 9D OF VAC
#
# OUTPUT -- OPTIC AXIS IN NB COORDS. IN SCAXIS
# X-PLANE 1/2VEC IN NB COORDS AT 24D OF VAC
# Y-PLANE 1/2VEC IN NB COORDS AT 18D OF VAC
BANK 05
SETLOC AOTMARK2
BANK
COUNT* $$/MARK
OANB SETPD STQ
0
GCTR # STORE RETURN
SLOAD RTB
9D # PICK UP SP ELV
CDULOGIC
PUSH COS
PDDL SIN # 1/2COS(ELV) PD 0-1
STADR
STODL SCAXIS # OAX=1/2SIN(ELV)
8D
RTB
CDULOGIC
PUSH COS
STORE 20D # STORE UYP(Y) 20-21
PDDL SIN # 1/2COS(AZ) PD 2-3
PUSH DCOMP # PUSH 1/2S IN (AZ) 4-5
STODL 22D # STORE UYP(Z) 22-23
LO6ZEROS
STODL 18D # STORE UYP(X) 18-19
DMP SL1
0
STODL SCAXIS +2 # OAY=1/2COS(ELV)SIN(AZ)
DMP SL1 # UP 2-3
STADR # UP 0-1
STOVL SCAXIS +4 # OAZ=1/2COS(ELV)COS(AZ)
18D # LOAD UYP VEC
VXV UNIT
SCAXIS # UXP VEC=UYP X OA
STORE 24D # STORE UXP
GOTO
GCTR
# Page 250
# SURFSTAR COMPUTES A STAR VECTOR IN SM COORDINAGES FOR LUNAR
# SURFACE ALIGNMENT AND EXITS TO AVEIT TO AVERAGE STAR VECTORS.
#
# GIVEN X-MARK PLANE 1/4 VEC IN NB AT 18D OF LOCAL VAC
# Y-MARK PLANE 1/4 VEC IN NB AT 12D OF LOCAL VAC
# CURSOR SP 2COMP AT POSITION 1 OF INDEXED MARKVAC
# SPIRAL SP 2COMP AT POSITION 3 OF INDEXED MARKVAC
# CDUY,Z,X AT POSITIONS 0,2,4 OF INDEXED MARKVAC
BANK 15
SETLOC P50S
BANK
COUNT* $$/R59
SURFSTAR VLOAD*
0,1 # PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STORE CDUSPOT
SLOAD* RTB
1,1 # PICK UP YROT
CDULOGIC
STORE 24D # STORE CURSOR FOR SPIRAL COMP (REVS)
BZE
YZCHK # IF YROT ZERO -- SEE IF SROT ZERO
JUSTZY PUSH COS
PDDL SIN # 1/2COS(YROT) 0-1
VXSC PDDL # UP 0-1 1/8SIN(YROT)UXP 0-5
18D
VXSC VSU # UP 0-5
12D # UYP
UNIT VXV
SCAXIS
UNIT PUSH
SLOAD* RTB
3,1 # PICK UP SPIRAL
CDULOGIC
STORE 26D # STORE SPIRAL (REVS)
DSU DAD
24D
ABOUTONE
DMP
DP1/12
STORE 26D # SEP=(360 + SPIRAL -CURSOR)/12
SIN VXSC # UP 0-5
VSL1 PDDL # 1/2SIN(SEP)(UPP X OA) 0-5
26D
COS VXSC
SCAXIS
VSL1 VAD # UP 0-5
JUSTOA UNIT CALL
TRG*NBSM
STCALL 24D # STAR VEC IN SM
AVEIT # GO AVERAGE
# Page 251
ABOUTONE 2DEC .99999999
DP1/12 EQUALS DEG30 # .08333333
BANK 7
SETLOC AOTMARK1
BANK
COUNT* $$/MARK
YZCHK SLOAD* BZE # YROT ZERO AND IF SROT ZERO FORCE STAR
3,1 # ALONG OPTIC AXIS
YSZERO
DLOAD GOTO
24D
JUSTZY # SROT NOT ZERO -- CONTINUE NORMALLY
YSZERO VLOAD GOTO
SCAXIS
JUSTOA
# Page 252
# THE GETMKS ROUTINE INITIALIZES THE SIGHTING MARK PROCEDURE
GETMKS CAF ZERO # INITIALIZE MARK ID REGISTER AND MARK CNT
TS XYMARK
TS MARKCNTR
CAF LOW9 # ZERO BITS10 TO 15 RETAINING MKVAC ADR
MASK MARKSTAT
TS MARKSTAT
CAF MKVB54* # DISPLAY VB54 INITIALLY
PASTIT TC BANKCALL
CADR GOMARK4
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF MARKCHEX # VB33 -- PROCEED, GOT MARKS, COMPUTE LOS
TCF GETDAT # ENTER -- RECYCLE TO V01N71
MARKCHEX CS MARKSTAT # SET BIT12 TO DISCOURAGE MARKRUPT
MASK BIT12
ADS MARKSTAT
MASK LOW9
TS XYMARK # JAM MARK VAC ADR IN XYMARK FOR AVESTAR
CAF ZERO
TS MKDEX # SET MKDEX ZERO FOR LOS VEC CNTR
CA MARKSTAT
MASK PRIO3 # SEE IF LAST MK PART COMPLETE
TS L
CAF PRIO3 # BITS10 AND 11
EXTEND
RXOR LCHAN
EXTEND
BZF AVESTAR # LAST PAIR COMPLETE -- TO COMPUTE LOS
CNTCHK CCS MARKCNTR # NO PAIR SHOWING -- SEE IF PAIR IN HOLD
TCF +2 # PAIR BURIED -- DECREMENT COUNTER
TCF MKALARM # NO PAIR -- ALARM
TS MARKCNTR # STORE DECREMENTED COUNTER
AVESTAR CAF BIT12 # INITIALIZE MKDEX FOR STAR LOS COUNTER
ADS MKDEX # MKDEX WAS INITIALIZED ZERO IN MARKCHEX
CS MARKCNTR
EXTEND
MP SIX # GET C(L) = -6 MARKCNTR
CS XYMARK
AD L # ADD -- MARK VAC ADR SET IN MARKCHEX
INDEX FIXLOC
TS X1 # JAM -- CDU ADR OF X-MARK IN X1
CA FIXLOC # SET PD POINTER TO ZERO
TS PUSHLOC
TC INTPRET
# Page 253
BON VLOAD*
SURFFLAG # IF ON SURFACE COMPUTE VEC AT SURFSTAR
SURFSTAR
1,1 # PUT Y-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STOVL CDUSPOT
12D # LOAD Y-PLANE VECTOR IN NG
CALL
TRG*NBSM # CONVERT IT TO STABLE MEMBER
PUSH VLOAD*
0,1 # PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STOVL CDUSPOT
18D # LOAD X-PLANE VECTOR IN NB
CALL
TRG*NBSM # CONVERT IT TO STABLE-MEMBER
VXV UNIT # UNIT(XPSM * YPSM)
STADR
STORE 24D
AVEIT SLOAD PDVL # N(NUMBER OF VECS) IN 0-1
MKDEX
24D # LOAD CURRENT VECTOR
VSR3 V/SC
0
STODL 24D # VEC/N
0
DSU DDV
DP1/8 # (N-1)/N
VXSC VAD
STARAD +6 # ADD VEC TO PREVIOUSLY AVERAGED VECTOR
24D # (N-1)/N AVESTVEC + VEC/N
STORE STARAD +6 # AVERAGE STAR VECTOR
STORE STARSAV2
EXIT
CCS MARKCNTR # SEE IF ANOTHER MARK PAIR IN MKVAC
TCF AVESTAR -1 # THERE IS -- GO GET IT -- DECREMENT COUNTER
ENDMARKS CAF FIVE # NO MORE MARKS -- TERMINATE AOTMARK
INHINT
TC WAITLIST
EBANK= XYMARK
2CADR MKRELEAS
TC ENDMARK
MKALARM TC ALARM # NOT A PAIR TO PROCESS -- DO GETMKS
OCT 111
TCF GETMKS
V01N71 VN 171
V06N87* VN 687
# Page 254
# MARKRUPT IS ENTERED FROM INTERRUPT LEAD-INS AND PROCESSES CHANNEL 16
# CAUSED BY X,Y MARK OR MARK REJECT OR BY THE RATE OF DESCENT SWITCH
MARKRUPT TS BANKRUPT
CA CDUY # STORE CDUS AND TIME NOW -- THEN SEE IF
TS ITEMP3 # WE NEED THEM
CA CDUZ
TS ITEMP4
CA CDUX
TS ITEMP5
EXTEND
DCA TIME2
DXCH ITEMP1
XCH Q
TS QRUPT
CAF OCT34 # SEE IF X OR Y MARK OR MKREJECT
EXTEND
RAND NAVKEYIN
CCS A
TCF +2 # ITS A LIVE ONE -- SEE IF ITS WANTED
TCF SOMEKEY # ITS SOME OTHER KEY
CAF BIT12 # ARE WE ASKING FOR A MARK
MASK MARKSTAT
CCS A
TC RESUME # DON'T WANT MARK OR MKREJECT -- DO NOTHING
CCS MARKSTAT # ARE MARKS BEING ACCEPTED
TCF FINDKEY # THEY ARE -- WHICH ONE IS IT
TC ALARM # MARKS NOT BEING ACCEPTED -- DO ALARM
OCT 112
TC RESUME
FINDKEY CAF BIT5 # SEE IF MARK REJECT.
EXTEND
RAND NAVKEYIN
CCS A
TCF MKREJ # IT'S A MARK REJECT
CAF BIT4 # SEE IF Y MARK
EXTEND
RAND NAVKEYIN
CCS A
TCF YMKRUPT # IT'S A Y MARK
CAF BIT3 # SEE IF X MARK
EXTEND
RAND NAVKEYIN
# Page 255
CCS A
TCF XMKRUPT # IT'S A X MARK
SOMEKEY CAF OCT140 # NOT MARK OR MKREJECT -- SEE IF DESCENT BITS
EXTEND
RAND NAVKEYIN
EXTEND
BZF +3 # IF NO BITS
TC POSTJUMP # IF DESCENT BITS
CADR DESCBITS
TC ALARM # NO INBITS IN CHANNEL 16.
OCT 113
TC RESUME
XMKRUPT CAF ZERO
TS RUPTREG1 # SET X MARK STORE INDEX TO ZERO
CAF BIT10
TCF +4
YMKRUPT CAF ONE
TS RUPTREG1 # SET Y MARK STORE INDEX TO ONE
CAF BIT11
TS XYMARK # SET MARK IDENTIFICATION
TC MARKTYPE # SEE IF SURFACE MARK
TCF SURFSTOR # SURFACE MARK -- JUST STORE CDUS
CAF BIT14 # GOT A MARK -- SEE IF MARK PARI MADE
MASK MARKSTAT
EXTEND
BZF VERIFYMK # NOT A PAIR, NORMAL PROCEDURE
CS MARKCNTR # GO A PAIR, SEE IF ANOTHER CAN BE MADE
AD FOUR # IF SO, INCREMENT POINTER, CLEAR BITS 10,11
EXTEND
BZMF 5MKALARM # HAVE FIVE MARK PAIRS -- DON'T ALLOW MARK
INCR MARKCNTR # OK FOR ANOTHER PAIR, INCR POINTER
CS PRIO23 # CLEAR BITS 10,11,14 FOR NEXT PAIR
MASK MARKSTAT
TS MARKSTAT
VERIFYMK CA XYMARK
MASK MARKSTAT
CCS A
TCF +2 # THIS MARK NOT DESIRED
TCF VACSTOR # MARK DESIRED -- STORE CDUS
TC ALARM
OCT 114
TC RESUME # RESUME -- DISPLAY UNCHANGED -- WAIT FOR ACTION
# Page 256
5MKALARM TC ALARM # ATTEMPTING TO MAKE MORE THAN 5 MK PAIRS
OCT 107
TC MARKTYPE # SEE IF SURFACE MARK
TCF DSPV6N79 # IT IS
TC RESUME # DON'T CHANGE DISPLAY -- DO NOTHING
# Page 257
MKREJ TC MARKTYPE # SEE IF SURFACE
TCF SURFREJ # SURFACE -- JUST CHECK MARK COUNTER
CAF PRIO3 # INFLIGHT -- SEE IF MARKS MADE
MASK MARKSTAT
CCS A
TCF REJECT # MARKS MADE -- REJECT ONE
REJALM TC ALARM # NO MARK TO REJECT -- BAD PROCEDURE -- ALARM
OCT 115
TC RESUME # DESIRED ACTION DISPLAYED
REJECT CS PRIO30 # ZERO BIT14, SHOW REJ., SEE IF MARK SINCE
MASK MARKSTAT # LAST REJECT
AD BIT13
XCH MARKSTAT
MASK BIT13
CCS A
TCF REJECT2 # ANOTHER REJECT SET BIT 10+11 TO ZERO
CS XYMARK # MARK MADE SINCE REJECT -- REJECT MARK IN 1D
RENEWMK MASK MARKSTAT
TS MARKSTAT
TCF REMARK # GO REQUEST NEW MARK ACTION
REJECT2 CS PRIO3 # ON SECOND REJECT -- DISPLAY VB53 AGAIN
TCF RENEWMK
SURFREJ CCS MARKCNTR # IF MARK DECREMENT COUNTER
TCF +2
TCF REJALM # NO MARKS TO REJECT -- ALARM
TS MARKCNTR
TC RESUME
# Page 258
# MARKTYPE TESTS TO SEE IF LEM ON LUNAR SURFACE. IF IT IS RETURN TO LOC+1
MARKTYPE CS FLAGWRD8 # SURFFLAG ******** TEMPORARY ******
MASK BIT8
CCS A
INCR Q # IF SURFACE MARK RETURN TO LOC +1
TC Q # IF INFLIGHT MARK RETURN TO LOC +2
SURFSTOR CAF ZERO # FOR SURFACE MARK ZERO MARK KIND INDEX
TS RUPTREG1
CS MARKSTAT # SET BITS10,11 TO SHOW SURFACE MARK
MASK PRIO3 # FOR MARKCHEX
ADS MARKSTAT
VACSTOR CAF LOW9
MASK MARKSTAT # STORE MARK VAC ADR IN RUPTREG2
TS RUPTREG2
EXTEND
DCA ITEMP1 # PICK UP MARKTIME
DXCH TSIGHT # STORE LAST MARK TIME
CA MARKCNTR # 6 X MARKCNTR FOR STORE INDEX
EXTEND
MP SIX
XCH L # GET INDEX FROM LOW ORDER PART
AD RUPTREG2 # SET CDU STORE INDEX TO MARKVAC
ADS RUPTREG1 # INCREMENT VAC PICKUP BY MARK FOR FLIGHT
TS MKDEX # STORE HERE IN CASE OF SURFACE MARK
CA ITEMP3
INDEX RUPTREG1
TS 0 # STORE CDUY
CA ITEMP4
INDEX RUPTREG1
TS 2 # STORE CDUZ
CA ITEMP5
INDEX RUPTREG1
TS 4 # STORE CDUX
TC MARKTYPE # IF SURFACE MARK -- JUST DO SURFJOB
TCF SURFJOB
CAF BIT13 # CLEAR BIT13 TO SHOW MARK MADE
AD XYMARK # SET MARK ID IN MARKSTAT
COM
MASK MARKSTAT
AD XYMARK
TS MARKSTAT
MASK PRIO3 # SEE IF X, Y MARK MADE
TS L
# Page 259
CA PRIO3
EXTEND
RXOR LCHAN
CCS A
TCF REMARK # NOT PAIR YET, DISPLAY MARK ACTION
CS MARKSTAT # MARK PAIR COMPLETE -- SET BIT14
MASK BIT14
ADS MARKSTAT
TCF REMARK # GO DISPLAY V54
# Page 260
REMARK CAF PRIO3 # BITS 10 AND 11
MASK MARKSTAT
EXTEND
MP BIT6 # SHIFT MARK IDS TO BE 0 TO 3 FOR INDEX
TS MKDEX # STORE VERB INDEX
SURFJOB CAF PRIO15
TC NOVAC # ENTER JOB TO CHANGE DISPLAY TO
EBANK= XYMARK # REQUEST NEXT ACTION
2CADR CHANGEVB
TC RESUME
CHANGEVB TC MARKTYPE
TCF DSPV6N79 # SURFACE -- DISPLAY V 06 N 79
INDEX MKDEX # INFLIGHT -- PICK UP MARK VB INDEX
CAF MKVB54
TC PASTIT # PASTE UP NEXT MK VERB DISPLAY
# THE FOUR MKVBS ARE INDEXED -- THEIR ORDER CANNOT BE CHANGED
MKVB54 VN 5471 # MAKE X OR Y MARK
MKVB53 VN 5371 # MAKE Y MARK
MKVB52 VN 5271 # MAKE X MARK
MKVB54* VN 5471 # MAKE X OR Y MARK
DP1/8 2DEC .125
OCT34 OCT 34
V06N71 VN 671
V06N79* VN 679
# Page 261
# ROUTINE TO REQUEST CURSOR AND SPIRAL MEASUREMENTS
COUNT* $$/R59
DSPV6N79 CAF V06N79* # CURSOR -- SPIRAL DISPLAY
TC BANKCALL
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF SURFEND # V33 -- PROCEED, END MARKING
CAF BIT6 # IF V32(OCT40) IN MPAC DO RECYCLE
MASK MPAC # OTHERWISE IT IS LOAD VB ENTER SO
CCS A # RE-DISPLAY V06N79
TCF SURFAGAN # VB32 -- RECYCLE
TCF DSPV6N79 # ENTER
SURFEND CS BIT14 # SET BIT14 TO SHOW MARK END
MASK MARKSTAT
AD BIT14
TS MARKSTAT
SURFAGAN CA CURSOR
INDEX MKDEX # HOLDS VAC AREA POINTER FOR SURF MARKING
TS 1 # STORE CURSOR SP 2COMP
CA SPIRAL
INDEX MKDEX
TS 3 # STORE SPIRAL
CS MARKSTAT # IF BIT 14 SET -- END MARKING
MASK BIT14
EXTEND
BZF MARKCHEX
CA MARKCNTR # THIS IS RECYCLE -- SEE IF 5 MARKS ALREADY
AD ONE
COM
AD FIVE
EXTEND
BZMF 5MKALARM # CAN'T RECYCLE -- TOO MANY MARKS -- ALARM
INCR MARKCNTR # OF FOR RECYCLE -- INCR COUNTER
TCF GETMKS +3 # GO DISPLAY MARK VB

View File

@ -0,0 +1,647 @@
# Copyright: Public domain.
# Filename: ASCENT_GUIDNCE.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 843-856
# Mod history: 2009-05-23 HG Transcribed from page images.
# 2009-06-05 RSB Fixed a couple of typos.
# 2009-06-07 RSB Corrected a typo.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 843
BANK 34
SETLOC ASCFILT
BANK
EBANK= DVCNTR
COUNT* $$/ASENT
ATMAG TC PHASCHNG
OCT 00035
TC INTPRET
BON
FLRCS
ASCENT
DLOAD DSU
ABDVCONV
MINABDV
BMN CLEAR
ASCTERM4
SURFFLAG
CLEAR SLOAD
RENDWFLG
BIT3H
DDV EXIT
ABDVCONV
DXCH MPAC
DXCH 1/DV3
DXCH 1/DV2
DXCH 1/DV1
DXCH 1/DV0
TC INTPRET
DLOAD DAD
1/DV0
1/DV1
DAD DAD
1/DV2
1/DV3
DMP DMP
VE
2SEC(9)
SL3 PDDL
TBUP
SR1 DAD
DSU
6SEC(18)
STODL TBUP
VE
SR1 DDV
TBUP
STCALL AT
# Page 844
ASCENT
BIT3H OCT 4
# Page 845
BANK 30
SETLOC ASENT
BANK
COUNT* $$/ASENT
ASCENT VLOAD ABVAL
R
STOVL /R/MAG
ZAXIS1
DOT SL1
V # Z.V = ZDOT*2(-8).
STOVL ZDOT # ZDOT*2(-7)
ZAXIS1
VXV VSL1
UNIT/R/ # Z X UR = LAXIS*2(-2)
STORE LAXIS # LAXIS*2(-1)
DOT SL1
V # L.V = YDOT*2(-8).
STCALL YDOT # YDOT * 2(-7)
YCOMP
VLOAD
GDT1/2 # LOAD GDT1/2*2(-7) M/CS.
V/SC DOT
2SEC(18)
UNIT/R/ # G.UR*2(9) = GR*2(9).
PDVL VXV # STORE IN PDL(0)
UNIT/R/ # LOAD UNIT/R/ *2(-1)
V # UR*2(-1) X V*2(-7) = H/R*2(-8).
VSQ DDV # H(2)/R(2)*2(-16).
/R/MAG # H(2)/R(3)*2(9).
SL1 DAD
STADR
STODL GEFF # GEFF*2(10)m/CS/CS.
ZDOTD
DSU
ZDOT
STORE DZDOT # DZDOT = (ZDOTD - ZDOT) * 2(7) M/CS.
VXSC PDDL
ZAXIS1
YDOTD
DSU
YDOT
STORE DYDOT # DYDOT = (YDOTD - YDOT) *2(7) M/CS.
VXSC PDDL
LAXIS
RDOTD
# Page 846
DSU
RDOT
STORE DRDOT # DRDOT = (RDOTD - RDOT) * 2(7) M/CS.
VXSC VAD
UNIT/R/
VAD VSL1
STADR
STORE VGVECT # VG = (DRDOT)R + (DVDOT)L + (DZDOT)Z.
DLOAD DMP # LOAD TGO
TGO # TGO GEFF
GEFF
VXSC VSL1
UNIT/R/ # TGO GEFF UR
BVSU
VGVECT # COMPENSATED FOR GEFF
STORE VGVECT # STORE FOR DOWNLINK
MXV VSL1 # GET VGBODY FOR N85 DISPLAY
XNBPIP
STOVL VGBODY
VGVECT
ABVAL BOFF # MAGNITUDE OF VGVECT
FLRCS # IF FLRCS=0,D0 NORMAL GUIDANCE
MAINENG
DDV # USE TGO=VG/AT WITH RCS
AT/RCS
STCALL TGO # THIS WILL BE USED ON NEXT CYCLE
ASCTERM2
MAINENG DDV PUSH # VG/VE IN PDL(0) (2)
VE
DMP BDSU # 1 - KT VG/VE
KT1
NEARONE
DMP DMP # TBUP VG(1-KT VG/VE)/VE (0)
TBUP # = TGO
DSU # COMPENSATE FOR TAILOFF
TTO
STORE TGO
SR DCOMP
11D
STODL TTOGO # TGO *2(-28) CS
TGO
BON DSU
IDLEFLAG
T2TEST
4SEC(17) # ( TGO - 4 )*2(-17) CS.
BMN
ENGOFF
T2TEST DLOAD
TGO
DSU BMN # IF TGO - T2 NEG., GO TO CMPONENT
# Page 847
T2A
CMPONENT
DLOAD DSU
TBUP
TGO
DDV CALL # 1- TGO/TBUP
TBUP
LOGSUB
SL PUSH # -L IN PDL(0) (2)
5
BDDV BDSU # -TGO/L*2(-17)
TGO
TBUP # TBUP + TGO/L = D12*2(-17)
PUSH BON # STORE IN PDL(2) (4)
FLPC # IF FLPC = 1, GO TO CONST
NORATES
DLOAD DSU
TGO
T3
BPL SET # FLPC=1
RATES
FLPC
NORATES DLOAD
HI6ZEROS
STORE PRATE # B = 0
STORE YRATE # D = 0
GOTO
CONST # GO TO CONST
RATES DLOAD DSU
TGO
02D # TGO - D12 = D21*2(-17)
PUSH SL1 # IN PDL(4) (6)
BDSU SL3 # (1/2TGO - D21)*2(-13) = E * 2(-13)
TGO # (8)
PDDL DMP # IN PDL(6)
TGO
RDOT # RDOT TGO * 2(-24)
DAD DSU # R + RDOT TGO
/R/MAG # R + RDOT TGO - RCO
RCO # MPAC = -DR *2(-24).
PDDL DMP # -DR IN PDL(8) (10)
DRDOT
04D # D21 DRDOT*2(-24)
DAD SL2 # (D21 DRDOT-DR)*2(-22) (8)
DDV DDV
06D # (D21 DRDOT-DR)/E*2(-9)
TGO
STORE PRATE # B * 2(8)
BMN DLOAD # B>0 NOT PERMITTED
CHKBMAG
#Page 848
HI6ZEROS
STCALL PRATE
PROK
CHKBMAG SR4 DDV # B*2(4)
TBUP # (B / TAU) * 2(21)
DSU BPL
PRLIMIT # ( B / TAU ) = 2(21) MAX.
PROK
DLOAD DMP
PRLIMIT
TBUP # B MAX. * 2(4)
SL4 # BMAX*2(8)
STORE PRATE
PROK DLOAD
TGO
DMP DAD # YDOT TGO
YDOT
Y # Y + YDOT TGO
DSU PDDL # Y + YDOT TGO - YCO
YCO # MPAC = - DY*(-24.) IN PDL(8) (10)
DYDOT
DMP DAD # D21 DYDOT - DY (8)
04D
SL2 DDV # (D21 DYDOT - DY)/E*2(-9)
DDV SETPD # (D21 DYDOT - DY)/E TGO*2(8)
TGO # = D*2(8)
04
STORE YRATE
CONST DLOAD DMP # LOAD B*2(8)
PRATE # B D12*2(-9)
02D
PDDL DDV # D12 B IN PDL(4) (6)
DRDOT # LOAD DRDOT*2(-7)
00D # -DRDOT/L*2(-7)
SR2 DSU # (-DRDOT/L-D12 B)=A*2(-9) (4)
STADR
STODL PCONS
YRATE # D*2(8)
DMP PDDL # D12 D,EXCH WITH -L IN PDL(0) (2,2)
BDDV SR2 # -DYDOT/L*2(-9)
DYDOT
DSU # (-DYDOT/L-D12 D)=C*2(-9)
00D
STORE YCONS
CMPONENT SETPD DLOAD
00D
100CS
DMP
PRATE # B(T-T0)*2(-9)
DAD DDV # (A+B(T-T0))*2(-9)
# Page 849
PCONS # (A+B(T-T0))/TBUP*2(8)
TBUP
SL1 DSU
GEFF # ATR*2(9)
STODL ATR
100CS
DMP DAD
YRATE
YCONS # (C+D(T-T0))*2(-9)
DDV SL1
TBUP
STORE ATY # ATY*2(9)
VXSC PDDL # ATY UY*2(8) (6)
LAXIS
ATR
VXSC VAD
UNIT/R/
VSL1 PUSH # AH*2(9) IN PDL(0) (6)
ABVAL PDDL # AH(2) IN PDL(34)
AT # AHMAG IN PDL(6) (8)
DSQ DSU # (AT(2)-AH(2))*2(18)
34D # =ATP2*2(18)
PDDL PUSH # (12)
AT
DSQ DSU # (AT(2)KR(2)-AH(2))*2(18) (10)
34D # =ATP3*2(18)
BMN DLOAD # IF ATP3 NEG,GO TO NO-ATP
NO-ATP # LOAD ATP2, IF ATP3 POS
8D
SQRT GOTO # ATP*2(9)
AIMER
NO-ATP DLOAD BDDV # KR AT/AH = KH (8)
6D
VXSC # KH AG*2(9)
00D
STODL 00D # STORE NEW AH IN PDL(0)
HI6ZEROS
AIMER SIGN
DZDOT
STORE ATP
VXSC
ZAXIS1 # ATP ZAXIS *2(8).
VSL1 VAD # AT*2(0)
00D
STORE UNFC/2 # WILL BE OVERWRITTEN IF IN VERT. RISE.
SETPD BON
00D
FLPI
P12RET
BON
# Page 850
FLVR
CHECKALT
MAINLINE VLOAD VCOMP
UNIT/R/
STODL UNWC/2
TXO
DSU BPL
PIPTIME
ASCTERM
BON
ROTFLAG
ANG1CHEK
CLRXFLAG CLEAR CLEAR
NOR29FLG # START r29 IN ASCENT PHASE.
XOVINFLG # ALLOW X-AXIS OVERRIDE
ASCTERM EXIT
CA FLAGWRD9
MASK FLRCSBIT
CCS A
TCF ASCTERM3
TC INTPRET
CALL
FINDCDUW -2
ASCTERM1 EXIT
+1 CA FLAGWRD9 # INSURE THAT THE NOUN 63 DISPLAY IS
MASK FLRCSBIT # BYPASSED IF WE ARE IN THE RCS TRIMMING
CCS A # MODE OF OPERATION
TCF ASCTERM3
CA FLAGWRD8 # BYPASS DISPLAYS IF ENGINE FAILURE IS
MASK FLUNDBIT # INDICATED.
CCS A
TCF ASCTERM3
CAF V06N63*
TC BANKCALL
CADR GODSPR
TCF ASCTERM3
ASCTERM2 EXIT
ASCTERM3 TCF ENDOFJOB
ASCTERM4 EXIT
INHINT
TC IBNKCALL # NO GUIDANCE THIS CYCLE -- HENCE ZERO
CADR ZATTEROR # THE DAP COMMANDED ERRORSss.
TCF ASCTERM1 +1
CHECKALT DLOAD DSU
/R/MAG
/LAND/
DSU BMN # IF H LT 25K CHECK Z AXIS ORIENTATION
25KFT
CHECKYAW
# Page 851
EXITVR CLEAR BON
FLVR
ROTFLAG
MAINLINE
DLOAD DAD
PIPTIME
10SECS
STCALL TXO
MAINLINE
EXITVR1 CLRGO
ROTFLAG
EXITVR
SETLOC ASENT1
BANK
COUNT* $$/ASENT
ANG1CHEK VLOAD DOT
UNFC/2
XNBPIP
DSU BPL
COSTHET1
OFFROT
VLOAD DOT
XNBPIP
UNIT/R/
DSU BMN
COSTHET2
KEEPVR1
OFFROT CLRGO
ROTFLAG
CLRXFLAG
BANK 7
SETLOC ASENT2
BANK
COUNT* $$/ASENT
SETXFLAG = CHECKYAW
CHECKYAW SET
XOVINFLG # PROHIBIT X-AXIS OVERRRIDE
DLOAD VXSC
ATY
LAXIS
PDDL VXSC
ATP
ZAXIS1
VAD UNIT
PUSH DOT
# Page 852
YNBPIP
ABS DSU
SIN5DEG
BPL DLOAD
KEEPVR
RDOT
DSU BPL
40FPS
EXITVR1
GOTO
KEEPVR
BANK 5
SETLOC ASENT3
BANK
COUNT* $$/ASENT
SIN5DEG 2DEC 0.08716 B-2
40FPS 2DEC 0.12192 B-7
BANK 14
SETLOC ASENT4
BANK
COUNT* $$/ASENT
KEEPVR VLOAD STADR # RECALL LOSVEC FROM PUSHLIST
STORE UNWC/2
KEEPVR1 VLOAD
UNIT/R/
STCALL UNFC/2
ASCTERM
ENGOFF RTB
LOADTIME
DSU DAD
PIPTIME
TTOGO
DCOMP EXIT
TC TPAGREE # FORCH SIGN AGREEMENT ON MPAC, MPAC +1.
CAF EBANK7
TS EBANK
EBANK= TGO
INHINT
CCS MPAC +1
TCF +3 # C(A) = DT - 1 BIT
TCF +2 # C(A) = 0
CAF ZERO # C(A) = 0
AD BIT1 # C(A) = 1 BIT OR DT.
# Page 853
TS ENGOFFDT
TC TWIDDLE
ADRES ENGOFF1
TC PHASCHNG
OCT 47014
-GENADR ENGOFFDT
EBANK= TGO
2CADR ENGOFF1
TC INTPRET
SET GOTO
IDLEFLAG # DISABLE DELTA-V MONITOR
T2TEST
ENGOFF1 TC IBNKCALL # SHUT OFF THE ENGINE.
CADR ENGINOF2
CAF PRIO17 # SET UP A JOB FOR THE ASCENT GUIDANCE
TC FINDVAC # POSTBURN LOGIC.
EBANK= WHICH
2CADR CUTOFF
TC PHASCHNG
OCT 07024
OCT 17000
EBANK= TGO
2CADR CUTOFF
TCF TASKOVER
CUTOFF TC UPFLAG # SET FLRCS FLAG.
ADRES FLRCS
-5 CAF V16N63
TC BANKCALL
CADR GOFLASH
TCF +3
TCF CUTOFF1
TCF -5
+3 TC POSTJUMP
CADR TERMASC
CUTOFF1 INHINT
TC IBNKCALL # ZERO ATTITUDE ERRORS BEFORE REDUCINT DB.
CADR ZATTEROR
TC IBNKCALL
CADR SETMINDB
TC POSTJUMP
CADR CUTOFF2
# Page 854
V16N63 VN 1663
BANK 30
SETLOC ASENT5
BANK
COUNT* $$/ASENT
CUTOFF2 TC PHASCHNG
OCT 04024
CAF V16N85C
TC BANKCALL
CADR GOFLASH
TCF TERMASC
TCF +2 # PROCEED
TCF CUTOFF2
TERMASC TC PHASCHNG
OCT 04024
INHINT # RESTORE DEADBAND DESIRED BY ASTRONAUT.
TC IBNKCALL
CADR RESTORDB
TC DOWNFLAG # DISALLOW ABORTS AT THIS TIME.
ADRES LETABORT
TCF GOTOP00H
V16N85C VN 1685
BANK 27
SETLOC ASENT1
BANK
COUNT* $$/ASENT
YCOMP VLOAD DOT
UNIT/R/
QAXIS
SL2 DMP
RCO
STORE Y
RVQ
BANK 30
SETLOC ASENT
BANK
# Page 855
100CS EQUALS 2SEC(18)
T2A EQUALS 2SEC(17)
4SEC(17) 2DEC 400 B-17
2SEC(17) 2DEC 200 B-17
T3 2DEC 1000 B-17
6SEC(18) 2DEC 600 B-18
BIT4H OCT 10
2SEC(9) 2DEC 200 B-9
V06N63* VN 0663
V06N76 VN 0676
V06N33A VN 0633
BANK 33
SETLOC ASENT6
BANK
COUNT* $$/ASENT
KT1 2DEC 0.5000
PRLIMIT 2DEC -.0639 # (B/TBUP)MIN=-.1FT.SEC(-3)
MINABDV 2DEC .0356 B-5 # 10 PERCENT BIGGER THAN GRAVITY
1/DV0 = MASS1
# Page 856
# THE LOGARITHM SUBROUTINE
BANK 24
SETLOC FLOGSUB
BANK
# INPUT ..... X IN MPAC
# OUTPUT ..... -LOG(X) IN MPAC
LOGSUB NORM BDSU
MPAC +6
NEARONE
EXIT
TC POLY
DEC 6
2DEC .0000000060
2DEC -.0312514377
2DEC -.0155686771
2DEC -.0112502068
2DEC -.0018545108
2DEC -.0286607906
2DEC .0385598563
2DEC -.0419361902
CAF ZERO
TS MPAC +2
EXTEND
DCA CLOG2/32
DXCH MPAC
DXCH BUF +1
CA MPAC +6
TC SHORTMP
DXCH MPAC +1
DXCH MPAC
DXCH BUF +1
DAS MPAC
TC INTPRET
DCOMP RVQ
CLOG2/32 2DEC .0216608494

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,558 @@
# Copyright: Public domain.
# Filename: CONTROLLED_CONSTANTS.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: Jim Lawton <jim.lawton@gmail.com>
# Website: www.ibiblio.org/apollo.
# Pages: 038-053
# Mod history: 2009-05-16 JVL Transcribed from page images.
#
# 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 38
# DPS AND APS ENGINE PARAMETERS
SETLOC P40S
BANK
COUNT* $$/P40
# *** THE ORDER OF THE FOLLOWING SIX CONSTANTS MUST NOT BE CHANGED ***
FDPS 2DEC 4.3670 B-7 # 9817.5 LBS FORCE IN NEWTONS
MDOTDPS 2DEC 0.1480 B-3 # 32.62 LBS/SEC IN KGS/CS
DTDECAY 2DEC -38
FAPS 2DEC 1.5569 B-7 # 3500 LBS FORCE IN NEWTONS
MDOTAPS 2DEC 0.05135 B-3 # 11.32 LBS/SEC IN KGS/CS
ATDECAY 2DEC -10
# ********************************************************************
FRCS4 2DEC 0.17792 B-7 # 400 LBS FORCE IN NEWTONS
FRCS2 2DEC 0.08896 B-7 # 200 LBS FORCE IN NEWTONS
SETLOC P40S1
BANK
COUNT* $$/P40
# *** APS IMPULSE DATA FOR P42 ***************************************
K1VAL 2DEC 124.55 B-23 # 2800 LB-SEC
K2VAL 2DEC 31.138 B-24 # 700 LB-SEC
K3VAL 2DEC 1.5569 B-10 # FAPS (3500 LBS THRUST)
# ********************************************************************
S40.136 2DEC .4671 B-9 # .4671 M NEWTONS (DPS)
S40.136_ 2DEC .4671 B+1 # S40.136 SHIFTED LEFT 10.
SETLOC ASENT1
BANK
COUNT* $$/P70
(1/DV)A 2DEC 15.20 B-7 # 2 SECONDS WORTH OF INITIAL ASCENT
# Page 39
# STAGE ACCELERATION -- INVERTED (M/CS)
# 1) PREDICATED ON A LIFTOFF MASS OF
# 4869.9 KG (SNA-8-D-027 7/11/68)
# 2) PREDICATED ON A CONTRIBUTION TO VEH-
# ICLE ACCELERATION FROM RCS THRUSTERS
# EQUIV. TO 1 JET ON CONTINUOUSLY.
K(1/DV) 2DEC 436.70 B-9 # DPS ENGINE THRUST IN NEWTONS / 100 CS.
(AT)A 2DEC 3.2883 E-4 B9 # INITIAL ASC. STG. ACCELERATION ** M/CS.
# ASSUMPTIONS SAME AS FOR (1/DV)A.
(TBUP)A 2DEC 91902 B-17 # ESTIMATED BURN-UP TIME OF THE ASCENT STG.
# ASSUMPTIONS SAME AS FOR (1/DV)A WITH THE
# ADDITIONAL ASSUMPTION THAT NET MASS-FLOW
# RATE = 5.299 KG/SEC = 5.135 (APS) +
# .164 (1 RCS JET).
SETLOC ASENT
BANK
COUNT* $$/ASENT
AT/RCS 2DEC .0000785 B+10 # 4 JETS IN A DRY LEM
SETLOC SERVICES
BANK
COUNT* $$/SERV
# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST NOT BE CHANGED *******
APSVEX DEC -3030 E-2 B-5 # 9942 FT/SEC IN M/CS.
DPSVEX DEC* -2.95588868 E+1 B-05* # VE (DPS) +2.95588868E+ 3
# ************************************************************************
SETLOC F2DPS*31
BANK
COUNT* $$/F2DPS
TRIMACCL 2DEC* +3.50132708 E-5 B+08* # A (T) +3.50132708E- 1
# Page 40
# THROTTLING AND THRUST DETECTION PARAMETERS
SETLOC P40S
BANK
COUNT* $$/P40
THRESH1 DEC 24
THRESH3 DEC 12
HIRTHROT = BIT13
SETLOC FFTAG5
BANK
COUNT* $$/P40
THRESH2 DEC 308
SETLOC FTHROT
BANK
COUNT* $$/THROT
FMAXODD DEC +3841 # FSAT +4.81454413 E+4
FMAXPOS DEC +3467 # FMAX +4.34546769 E+4
THROTLAG DEC +20 # TAU (TH) +1.99999999 E-1
SCALEFAC 2DEC* +7.97959872 E+2 B-16* # BITPERF +7.97959872 E-2
SETLOC F2DPS*32
BANK
COUNT* $$/F2DPS
DPSTHRSH DEC 36 # (THRESH1 + THRESH3 FOR P63)
# Page 41
# LM HARDWARE-RELATED PARAMETERS
SETLOC RADARUPT
BANK
COUNT* $$/RRUPT
LVELBIAS DEC -12288 # LANDING RADAR BIAS FOR 153.6 KC.
RDOTBIAS 2DEC 17000 # BIAS COUNT FOR RR RANGE RATE.
SETLOC LRS22
BANK
COUNT* $$/LRS22
RDOTCONV 2DEC -.0019135344 B7 # CONVERTS RR RDOT READING TO M/CS AT 2(7)
RANGCONV 2DEC 2.859024 B-3 # CONVERTS RR RANGE READING TO M. AT 2(-29
SETLOC SERVICES
BANK
COUNT* $$/SERV
HBEAMANT 2DEC -.4687018041 # RANGE BEAM IN LR ANTENNA COORDINATES.
2DEC 0
2DEC -.1741224271
HSCAL 2DEC -.3288792 # SCALES 1.079 FT/BIT TO 2(22)M.
# ***** THE SEQUENCE OF THE FOLLOWING CONSTANTS MUST BE PRESERVED *********
VZSCAL 2DEC +.5410829105 # SCALES .8668 FT/SEC/BIT TO 2(18) M/CS.
VYSCAL 2DEC +.7565672446 # SCALES 1.212 FT/SEC/BIT TO 2(18) M/CS.
VXSCAL 2DEC -.4020043770 # SCALES -.644 FT/SEC/BIT TO 2(18) M/CS.
# *************************************************************************
KPIP DEC .0512 # SCALES DELV TO UNITS OF 2(5) M/CS.
KPIP1 2DEC .0128 # SCALES DELV TO UNITS OF 2(7) M/CS.
KPIP2 2DEC .0064 # SCALES DELV TO UNITS OF 2(8) M/CS.
# Page 42
ALTCONV 2DEC 1.399078846 B-4 # CONVERTS M*2(-24) TO BIT UNITS *2(-28).
ARCONV1 2DEC 656.167979 B-10 # CONV. ALTRATE COMP. TO BIT UNITS<
SETLOC R10
BANK
COUNT* $$/R10
ARCONV OCT 24402 # 656.1679798B-10 CONV ALTRATE TO BIT UNIT
ARTOA DEC .1066098 B-1 # .25/2.345 B-1 4X/SEC CYCLE RATE.
ARTOA2 DEC .0021322 B8 # (.5)/(2.345)(100)
VELCONV OCT 22316 # 588.914 B-10 CONV VEL. TO BIT UNITS.
KPIP1(5) DEC .0512 # SCALES DELV TO M/CS*2(-5).
MAXVBITS OCT 00547 # MAX. DISPLAYED VELOCITY 199.9989 FT/SEC.
SETLOC DAPS3
BANK
COUNT* $$/DAPAO
TORKJET1 DEC .03757 # 550 / .2 SCALED AT (+16) 64 / 180
# Page 43
# PARAMETERS RELATING TO MASS, INERTIA, AND VEHICLE DIMENSIONS
SETLOC FRANDRES
BANK
COUNT* $$/START
FULLAPS DEC 5050 B-16 # NOMINAL FULL ASCENT MASS -- 2(16) KG.
SETLOC LOADDAP1
BANK
COUNT* $$/R03
MINLMD DEC -2850 B-16 # MIN. DESCENT STAGE MASS -- 2(16) KG.
MINMINLM DEC -2200 B-16 # MIN ASCENT STAGE MASS -- 2(16) KG.
MINCSM = BIT11 # MIN CSM MASS (OK FOR 1/ACCS) = 9050 LB
SETLOC DAPS3
BANK
COUNT* $$/DAPAD
LOASCENT DEC 2200 B-16 # MIN ASCENT LEM MASS -- 2(16) KG.
HIDESCNT DEC 15300 B-16 # MAX DESCENT LEM MASS -- 2(16) KG.
LODESCNT DEC 1750 B-16 # MIN DESCENT STAGE (ALONE) -- 2(16) KG.
# Page 44
# PHYSICAL CONSTANTS ( TIME - INVARIANT )
SETLOC IMU2
BANK
COUNT* $$/P07
OMEG/MS 2DEC .24339048
SETLOC R30LOC
BANK
COUNT* $$/R30
# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST BE PRESERVED ***********
1/RTMUM 2DEC* .45162595 E-4 B14*
1/RTMUE 2DEC* .50087529 E-5 B17*
# **************************************************************************
SETLOC P40S1
BANK
COUNT* $$/S40.9
EARTHMU 2DEC* -3.986032 E10 B-36* # M(3)/CS(2)
SETLOC ASENT1
BANK
COUNT* $$/P12
MUM(-37) 2DEC* 4.9027780 E8 B-37*
MOONRATE 2DEC* .26616994890062991 E-7 B+19* # RAD/CS.
SETLOC SERVICES
BANK
COUNT* $$/SERV
# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST BE PRESERVED ***********
-MUDT 2DEC* -7.9720645 E+12 B-44*
-MUDT1 2DEC* -9.8055560 E+10 B-44*
# **************************************************************************
-MUDTMUN 2DEC* -9.8055560 E+10 B-38*
RESQ 2DEC* 40.6809913 E12 B-58*
# Page 45
20J 2DEC 3.24692010 E-2
2J 2DEC 3.24692010 E-3
SETLOC P50S1
BANK
COUNT* $$/LOSAM
RSUBEM 2DEC 384402000 B-29
RSUBM 2DEC 1738090 B-29
RSUBE 2DEC 6378166 B-29
ROE 2DEC .00257125
SETLOC CONICS1
BANK
COUNT* $$/LT-LG
ERAD 2DEC 6373338 B-29 # PAD RADIUS
504RM 2DEC 1738090 B-29 # METERS B-29 (EQUATORIAL MOON RADIUS)
SETLOC CONICS1
BANK
COUNT* $$/CONIC
# *** THE ORDER OF THE FOLLOWING CONSTANTS MUST BE PRESERVED **************
MUTABLE 2DEC* 3.986032 E10 B-36* # MUE
2DEC* .25087606 E-10 B+34* # 1/MUE
2DEC* 1.99650495 E5 B-18* # SQRT(MUE)
2DEC* .50087529 E-5 B+17* # 1/SQRT(MUE)
2DEC* 4.902778 E8 B-30* # MUM
2DEC* .203966 E-8 B+28* # 1/MUM
2DEC* 2.21422176 E4 B-15* # SQRT(MUM)
2DEC* .45162595 E-4 B+14* # 1/SQRT(MUM)
# *************************************************************************
# Page 46
SETLOC INTINIT
BANK
COUNT* $$/INTIN
OMEGMOON 2DEC* 2.66169947 E-8 B+23*
SETLOC ORBITAL2
BANK
COUNT* $$/ORBIT
# *** THE ORDER OF THE FOLLOWING CONSTANTS MUST NOT BE CHANGED ************
2DEC* 1.32715445 E16 B-54*
MUM 2DEC* 4.9027780 E8 B-30*
MUEARTH 2DEC* 3.986032 E10 B-36*
2DEC 0
J4REQ/J3 2DEC* .4991607391 E7 B-26*
2DEC -176236.02 B-25
2J3RE/J2 2DEC* -.1355426363 E5 B-27*
2DEC* .3067493316 E18 B-60*
J2REQSQ 2DEC* 1.75501139 E21 B-72*
3J22R2MU 2DEC* 9.20479048 E16 B-58*
# *************************************************************************
SETLOC TOF-FF1
BANK
COUNT* $$/TFF
1/RTMU 2DEC* .5005750271 E-5 B17* # MODIFIED EARTH MU
SETLOC SBAND
BANK
COUNT* $$/R05
REMDIST 2DEC 384402000 B-29 # MEAN DISTANCE BETWEEN EARTH AND MOON.
# Page 47
# PHYSICAL CONSTANTS (TIME - VARIANT)
SETLOC STARTAB
BANK
COUNT* $$/STARS
2DEC +.8342971408 B-1 # STAR 37 X
2DEC -.2392481515 B-1 # STAR 37 Y
2DEC -.4966976975 B-1 # STAR 37 Z
2DEC +.8139832631 B-1 # STAR 36 X
2DEC -.5557243189 B-1 # STAR 36 Y
2DEC +.1691204557 B-1 # STAR 36 Z
2DEC +.4541086270 B-1 # STAR 35 X
2DEC -.5392368197 B-1 # STAR 35 Y
2DEC +.7092312789 B-1 # STAR 35 Z
2DEC +.3201817378 B-1 # STAR 34 X
2DEC -.4436021946 B-1 # STAR 34 Y
2DEC -.8370786986 B-1 # STAR 34 Z
2DEC +.5520184464 B-1 # STAR 33 X
2DEC -.7933187400 B-1 # STAR 33 Y
2DEC -.2567508745 B-1 # STAR 33 Z
2DEC +.4537196908 B-1 # STAR 32 X
2DEC -.8779508801 B-1 # STAR 32 Y
2DEC +.1527766153 B-1 # STAR 32 Z
2DEC +.2069525789 B-1 # STAR 31 X
2DEC -.8719885748 B-1 # STAR 31 Y
2DEC -.4436288486 B-1 # STAR 31 Z
2DEC +.1217293692 B-1 # STAR 30 X
2DEC -.7702732847 B-1 # STAR 30 Y
# Page 48
2DEC +.6259880410 B-1 # STAR 30 Z
2DEC -.1124304773 B-1 # STAR 29 X
2DEC -.9694934200 B-1 # STAR 29 Y
2DEC +.2178116072 B-1 # STAR 29 Z
2DEC -.1146237858 B-1 # STAR 28 X
2DEC -.3399692557 B-1 # STAR 28 Y
2DEC -.9334250333 B-1 # STAR 28 Z
2DEC -.3516499609 B-1 # STAR 27 X
2DEC -.8240752703 B-1 # STAR 27 Y
2DEC -.4441196390 B-1 # STAR 27 Z
2DEC -.5326876930 B-1 # STAR 26 X
2DEC -.7160644554 B-1 # STAR 26 Y
2DEC +.4511047742 B-1 # STAR 26 Z
2DEC -.7861763936 B-1 # STAR 25 X
2DEC -.5217996305 B-1 # STAR 25 Y
2DEC +.3311371675 B-1 # STAR 25 Z
2DEC -.6898393233 B-1 # STAR 24 X
2DEC -.4182330640 B-1 # STAR 24 Y
2DEC -.5909338474 B-1 # STAR 24 Z
2DEC -.5812035376 B-1 # STAR 23 X
2DEC -.2909171294 B-1 # STAR 23 Y
2DEC +.7599800468 B-1 # STAR 23 Z
2DEC -.9170097662 B-1 # STAR 22 X
2DEC -.3502146628 B-1 # STAR 22 Y
2DEC -.1908999176 B-1 # STAR 22 Z
# Page 49
2DEC -.4523440203 B-1 # STAR 21 X
2DEC -.0493710140 B-1 # STAR 21 Y
2DEC -.8904759346 B-1 # STAR 21 Z
2DEC -.9525211695 B-1 # STAR 20 X
2DEC -.0593434796 B-1 # STAR 20 Y
2DEC -.2986331746 B-1 # STAR 20 Z
2DEC -.9656605484 B-1 # STAR 19 X
2DEC +.0525933156 B-1 # STAR 19 Y
2DEC +.2544280809 B-1 # STAR 19 Z
2DEC -.8608205219 B-1 # STAR 18 X
2DEC +.4636213989 B-1 # STAR 18 Y
2DEC +.2098647835 B-1 # STAR 18 Z
2DEC -.7742591356 B-1 # STAR 17 X
2DEC +.6152504197 B-1 # STAR 17 Y
2DEC -.1482892839 B-1 # STAR 17 Z
2DEC -.4657947941 B-1 # STAR 16 X
2DEC +.4774785033 B-1 # STAR 16 Y
2DEC +.7450164351 B-1 # STAR 16 Z
2DEC -.3612508532 B-1 # STAR 15 X
2DEC +.5747270840 B-1 # STAR 15 Y
2DEC -.7342932655 B-1 # STAR 15 Z
2DEC -.4118589524 B-1 # STAR 14 X
2DEC +.9065485360 B-1 # STAR 14 Y
2DEC +.0924226975 B-1 # STAR 14 Z
2DEC -.1820751783 B-1 # STAR 13 X
# Page 50
2DEC +.9404899869 B-1 # STAR 13 Y
2DEC -.2869271926 B-1 # STAR 13 Z
2DEC -.0614937230 B-1 # STAR 12 X
2DEC +.6031563286 B-1 # STAR 12 Y
2DEC -.7952489957 B-1 # STAR 12 Z
2DEC +.1371725575 B-1 # STAR 11 X
2DEC +.6813721061 B-1 # STAR 11 Y
2DEC +.7189685267 B-1 # STAR 11 Z
2DEC +.2011399589 B-1 # STAR 10 X
2DEC +.9690337941 B-1 # STAR 10 Y
2DEC -.1432348512 B-1 # STAR 10 Z
2DEC +.3507315038 B-1 # STAR 9 X
2DEC +.8926333307 B-1 # STAR 9 Y
2DEC +.2831839492 B-1 # STAR 9 Z
2DEC +.4105636020 B-1 # STAR 8 X
2DEC +.4988110001 B-1 # STAR 8 Y
2DEC +.7632988371 B-1 # STAR 8 Z
2DEC +.7032235469 B-1 # STAR 7 X
2DEC +.7075846047 B-1 # STAR 7 Y
2DEC +.0692868685 B-1 # STAR 7 Z
2DEC +.5450107404 B-1 # STAR 6 X
2DEC +.5314955466 B-1 # STAR 6 Y
2DEC -.6484410356 B-1 # STAR 6 Z
2DEC +.0130968840 B-1 # STAR 5 X
2DEC +.0078062795 B-1 # STAR 5 Y
# Page 51
2DEC +.9998837600 B-1 # STAR 5 Z
2DEC +.4917678276 B-1 # STAR 4 X
2DEC +.2204887125 B-1 # STAR 4 Y
2DEC -.8423473935 B-1 # STAR 4 Z
2DEC +.4775639450 B-1 # STAR 3 X
2DEC +.1166004340 B-1 # STAR 3 Y
2DEC +.8708254803 B-1 # STAR 3 Z
2DEC +.9342640400 B-1 # STAR 2 X
2DEC +.1735073142 B-1 # STAR 2 Y
2DEC -.3115219339 B-1 # STAR 2 Z
2DEC +.8748658918 B-1 # STAR 1 X
2DEC +.0260879174 B-1 # STAR 1 Y
2DEC +.4836621670 B-1 # STAR 1 Z
CATLOG DEC 6970
# *******************************************************************************
SETLOC EPHEM1
BANK
COUNT* $$/EPHEM
KONMAT 2DEC 1.0 B-1 # ********************
2DEC 0 # *
2DEC 0 # *
2DEC 0 # *
2DEC .91745 B-1 # K1 COS(OBL) *
2DEC -.03571 B-1 # K2 SIN(OBL)SIN(IM) *
2DEC 0 # *
2DEC .39784 B-1 # K3 SIN(OBL) *
# Page 52
2DEC .082354 B-1 # K4 COS(OBL)SIN(IM) *
CSTODAY 2DEC 8640000 B-33 # * NOTE: *
RCB-13 OCT 00002 # * TABLES CONTAIN *
OCT 00000 # * CONSTANTS FOR *
RATESP 2DEC .03660098 B+4 # LOMR * 1969 - 1970 *
2DEC .00273779 B+4 # LOSR
2DEC -.00014719 B+4 # LONR
2DEC .815282336 # LOMO
2DEC .274674910 # LOSO
2DEC .986209499 # LONO
VAL67 2DEC* .01726666666 B+1* # AMOD
2DEC .530784445 # AARG
2DEC .036291712 B+1 # 1/27
2DEC .003505277 B+1 # BMOD
2DEC .585365625 # BARG
2DEC .03125 B+1 # 1/32
2DEC .005325277 B+1 # CMOD
2DEC -.01106341036 # CARG
2DEC .002737925 B+1 # 1/365
# ********************************************************************************
SETLOC PLANTIN2
BANK
COUNT* $$/LUROT
COSI 2DEC .99964173 B-1 # COS (5521.5 SEC.) B-1
SINI 2DEC .02676579 B-1 # SIN (5521.5 SEC.) B-1
NODDOT 2DEC -.457335121 E-2 # REV/CSEC B+28 = -1.07047011 E-8 RAD/SEC
FDOT 2DEC .570863327 # REV/CSEC B+27 = 2.67240410 E-6 RAD/SEC
# Page 53
BDOT 2DEC -3.07500686 E-8 # REV/CSEC B+28 = -7.19757301 E-14 RAD/SEC
NODIO 2DEC .986209434 # REVS B-D = 6.19653663041 RAD
FSUBO 2DEC .829090536 # REVS B-D = 5.20932947829 RAD
BSUBO 2DEC .0651201393 # REVS B-D = 0.40916190299 RAD
WEARTH 2DEC .973561595 # REV/CSEC B+23 = 7.29211494 E-5 RAD/SEC

View File

@ -0,0 +1,481 @@
# Copyright: Public domain.
# Filename: DAPIDLER_PROGRAM.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1410-1420
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1410
# THE DAPIDLER PROGRAM IS STARTED BY FRESH START AND RESTART. THE DAPIDLER PROGRAM IS DONE 10 TIMES
# PER SECOND UNTIL THE ASTRONAUT DESIRES THE DAP TO WAKE UP, AND THE IMU AND CDUS ARE READY FOR USE BY THE DAP.
# THE NECESSARY INITIALIZATION OF THE DAP IS DONE BY THE DAPIDLER PROGRAM.
BANK 16
SETLOC DAPS1
BANK
EBANK= AOSQ
COUNT* $$/DAPID
CHEKBITS EXTEND
READ CHAN31 # IF BOTH BIT13 AND BIT14 ARE ONE, THEN
COM # THE MODE SELECT SWITCH IS IN THE OFF
MASK BIT13-14 # POSITION, AND SO THE DAP SHOULD BE OFF,
EXTEND # WITH NO ATTITUDE ERROR DISPLAY.
BZF MOREIDLE
CS IMODES33
MASK BIT6
CCS A
TCF JUMPDSP
CS RCSFLAGS # IMU NOT USABLE. SET UP INITIALIZATION
MASK BIT3 # FLAG FOR ATT ERROR DISPLAY ROUTINE.
ADS RCSFLAGS
TCF SHUTDOWN
CHEKMORE CAF BIT10 # BIT 10 OF 30 IS PGNCS CONTROL OF S/C
EXTEND
RAND CHAN30 # BITS IN 30 ARE INVERTED
CCS A
TCF MOREIDLE
RETURN
# Page 1411
# DAPIDLER ENTRY.
DAPIDLER LXCH BANKRUPT # INTERRUPT LEAD INS (CONTINUED)
EXTEND
QXCH QRUPT
CA RCSFLAGS
MASK BIT13
CCS A # CHECK IF 1/ACCJOB HAS BEEN SET UP SINCE
TCF CHECKUP # THE LAST FRESH START OR RESTART.
CA BIT13
ADS RCSFLAGS # BIT 13 IS 1.
CAF PRIO27
TC NOVAC # SET UP JOB TO DO A LITTLE INITIALIZATION
EBANK= AOSQ # AND EXECUTE 1/ACCS.
2CADR 1/ACCSET # (WILL BRANCH TO MOREIDLE ON ACCSOKAY)
CHECKUP TC CHEKBITS # CHECK TO SEE IF LM DAP IS TO GO ON AND
# DO ERROR DISPLAY.
CAE DAPBOOLS # IF 1/ACCS HAS NOT BEEN COMPLETED, IDLE.
MASK ACCSOKAY # NOTE: ONLY FRESH START AND RESTART
EXTEND # KNOCK THIS BIT DOWN.
BZF MOREIDLE
STARTDAP TC IBNKCALL # ZERO ATTITUDE ERROR AND DESIRED RATES.
FCADR ZATTEROR
CAF ZERO # ************ INITIALIZE: *************
TS TJP
TS TJU
TS TJV
TS OMEGAP # RATES IN BODY (PILOT) COORDINATES.
TS OMEGAQ
TS OMEGAR
TS TRAPEDP
TS TRAPEDQ
TS TRAPEDR
TS AOSQ # OFFSET ACCELERATION ESTIMATES.
TS AOSQ +1
TS AOSR
TS AOSR +1
TS ALPHAQ # COPIES OF OFFSET ESTIMATES FOR DOWNLIST.
TS ALPHAR
TS NEGUQ
TS NEGUR
TS AOSQTERM # QRAXIS RATE DERIVATION TERMS AND KALMAN
TS AOSRTERM # FILTER INITIALIZATION TERMS.
TS QACCDOT # DESCENT ACCELERATION DERIVATIVE EST.
TS RACCDOT
# Page 1412
TS ALLOWGTS # AOSTASK FLAG FOR QRAXIS RCS CONTROL USE.
TS COTROLER # DO TRYGTS ON FIRST PASS (WILL GO TO RCS)
TS INGTS # RECOGNIZE FIRST GTS PASS AS SUCH.
TS QGIMTIMR # STOP GIMBAL DRIVES. (PROBABLY WOULD BE
TS RGIMTIMR # GOOD ENOUGH JUST TO INACTIVATE TIMERS)
TS OLDPMIN # MINIMUM IMPULSE MODE ERASABLES
TS OLDQRMIN
TS PJETCTR # INITIALIZE DOCKED JET INHIBITION
TS UJETCTR # COUNTERS
TS VJETCTR
CALLGMBL EQUALS BIT5 # RCSFLAGS INITIALIZATION.
CS MANFLAG
MASK RCSFLAGS # NEGUQ(R) HAVE BEEN GENERATED.
TS RCSFLAGS
# SET UP "OLD" MEASURED CDU ANGLES:
EXTEND
DCA CDUX # OLDXFORP AND OLDYFORP
DXCH OLDXFORP
CA CDUZ
TS OLDZFORQ
CS RCSFLAGS
MASK BIT12
ADS RCSFLAGS # BIT 12 SET TO 1.
CA FOUR
TS SKIPU
TS SKIPV
CA POSMAX
TS TIME6
TS T6NEXT
TS T6FURTHA
CA ZERO
TS T6NEXT +1
TS T6FURTHA +1
TS NXT6ADR
TS NEXTP
TS NEXTU
TS NEXTV
CS TEN
TS DAPZRUPT # JASK NOT IN PROGRESS, INITIALIZE NEG.
CA TWO
TS NPTRAPS
TS NQTRAPS
TS NRTRAPS
EXTEND
DCA PAXADIDL
DXCH T5ADR
SETTIME5 CAF MS100
TS TIME5
# Page 1413
TCF RESUME
EBANK= AOSQ
IDLERADR 2CADR DAPIDLER
MOREIDLE TC IBNKCALL # CALCULATE Q,R-AXES ATTITUDE ERRORS.
CADR QERRCALC
TC IBNKCALL
CADR CALCPERR # CALCULATE P AXIS ATTITUDE ERRORS.
SHUTDOWN EXTEND
DCA IDLERADR
DXCH T5ADR
CAF ZERO # KILL ANY POSSIBLE JET REQUESTS
TS NEXTP
TS NEXTU
TS NEXTV
EXTEND # COMMAND JETS OFF.
WRITE CHAN5
EXTEND
WRITE CHAN6
CS BGIM23 # TURN TRIM GIMBAL OFF
EXTEND
WAND CHAN12
TCF SETTIME5 # RETURN IN 100 MSEC.
MANFLAG OCT 03021
BGIM23 OCTAL 07400
EBANK= OMEGAP
PAXADIDL 2CADR PAXIS
MS100 = OCT37766
COSMG = ITEMP1
JUMPDSP EXTEND # TRANSFER TO BANK 20
DCA DSPCADR # FOR ATTITUDE ERROR DISPLAYS
DTCB
EBANK= AK
DSPCADR 2CADR ALTDSPLY
# Page 1414
BANK 20
SETLOC DAPS3
BANK
COUNT* $$/NEEDL
# PROGRAM: ALTDSPLY
# MOD 0. 6 DEC 1967
# AUTHOR: CRAIG WORK, DON KEENE, MIT IL
# MOD 3 BY DON KEENE AUG 1, 1968 -- MOVED PROGRAM TO BANK 20
#
# PROGRAM DESCRIPTION:
# ALTDSPLY REVERSES THE DSPLYALT BIT OF RCSFLAGS EACH TIME IT IS CALLED, WHICH IS PRESUMABLY EVERY 100 MS.
# IF THE REVERSED BIT IS ONE, NEEDLER IS CALLED TO DISPLAY ATTITUDE ERRORS. IF THE BIT IS ZERO, THE ATTITUDE ERR-
# ORS ARE CALCULATED AS 1) DAP FOLLOWING ERRORS, IF NEEDLFLG = 0, AND 2) TOTAL ATTITUDE ERRORS FOR NEEDLFLG = 1.
#
#
# WARNING: ALTDSPLY MAY ONLY BE CALLED WITH INTERRUPT INHIBITED
#
# WARNING: EBANK MUST BE SET TO 6 WHEN USING THIS ROUTINE.
#
# INPUT: RCSFLAGS AND 1) IF NEEDLFLG = 0, INPUT PERROR, QERROR, RERROR.
# 2) IF NEEDLFLG = 1, INPUT CPHI,CTHETA,CPSI,CDUX,CDUY,CDUZ,M11,M21,M32,M22,M32. (GPMATRIX)
#
#
# OUTPUTS: RCSFLAGS WITH DSPLYALT REVERSED, AK, AK1, AK2, + NEEDLER OUTPUTS.
#
# ENTRY: TCF ALTDSPLY
#
# EXIT: TCF CHEKMORE
#
# ALARM OR ABORT EXITS: NONE
#
# SUBPROGRAMS CALLED: NEEDLER, OVERSUB2
#
# DEBRIS: A, L, AND NEEDLER DEBRIS.
ALTDSPLY CA RCSFLAGS # INVERT THE DISPLAY ALTERNATION BIT.
TS L
CA DSPLYALT
EXTEND
RXOR LCHAN
TS RCSFLAGS
MASK DSPLYALT
CCS A # IS ALTERNATION FLAG ZERO?
TCF NEEDLER
CAE FLAGWRD0 # NEEDLFLG WILL INDICATE TOTAL OR DAP AT-
# Page 1415
MASK NEEDLBIT # TITUDE ERROR DISPLAY REQUEST.
CCS A
TCF DSPLYTOT # TOTAL ERROR IS NEEDED IN AK, AK +1, AK +2
CS QERROR # YES. DISPLAY ATT ERRORS ON THE -BALL.
TS AK +1 # ERROR COMPLEMENTS ARE INPUT TO NEEDLER.
CS RERROR
TS AK +2
CS PERROR
XCH AK
TCF RETNMORE # DISPLAY THESE THE NEXT TIME THROUGH
# CALCULATE GIMBAL ANGLE TOTAL ERRORS, RESOLVE INTO PILOT AXES, STORE TOTAL ERRORS FOR NEEDLER. Q-AXIS FIRST.
DSPLYTOT EXTEND
QXCH ITEMP1 # SAVE Q FOR CHEKBITS RETURN.
CA CTHETA # DESIRED ATTITUDE, Y-AXIS, 2'S COMP.
EXTEND # SUBTRACT CURRENT ATTITUDE.
MSU CDUY # DIFFERENCE SCALED AT PI, 1'S COMP.
TS AK # SAVE FOR R-ERROR CALCULATION.
EXTEND
MP M21 # (CTHETA-CDUY)*M21 SCALED AT PI RADIANS.
XCH AK +1 # STORE FIRST TERM OF Q ERROR.
CA CPSI # DESIRED ATTITUDE, Z-AXIS, 2'S COMP.
EXTEND # SUBTRACT CURRENT ATTITUDE.
MSU CDUZ # DIFFERENCE SCALED AT PI, 1'S COMP.
TS AK +2 # SAVE Z-AXIS TERM FOR R ERROR CALCULATION
EXTEND
MP M22 # (CPSI-CDUZ)*M22, SCALED AT PI RADIANS.
AD AK +1 # Q ERROR COMPLETE , AT PI RAD.
TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW
TS AK +1
# R ERROR CALCULATION NEXT.
CA AK # Y-AXIS DIFFERENCE STORED BY Q-AXIS CALC.
EXTEND
MP M31 # (CTHETA-CDUY)*M31, SCALED AT PI RADIANS.
XCH AK +2 # FIRST TERM OF R ERROR.
# Z-AXIS DIFFERENCE, STORED BY A CALC. IS
EXTEND # RECOVERED BY THE EXCHANGE.
MP M32 # (CPSI-CDUZ)*M32, SCALED AT PI RADIANS.
AD AK +2 # R ERROR COMPLETE , AT PI RAD.
TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW.
TS AK +2
# NOW CALCULATE P ERROR. (NOTE THAT M13 = 1, SCALED AT 1, SO THE MULTIPLICATION IS BY-PASSED.)
# Page 1416
CA AK # Y-AXIS DIFFERENCE STORED BY Q AXIS CALC.
EXTEND
MP M11 # (CTHETA-CDUY)*M11 SCALED AT PI RADIANS.
XCH AK # FIRST TERM OF P ERROR IN AK, AT PI RAD.
CAE CPHI # DESIRED ATTITUDE, X-AXIS, 2'S COMP.
EXTEND # SUBTRACT CURRENT X ATTITUDE.
MSU CDUX # X-AXIS DIFFERENCE, 1'S COMP, AT PI RAD.
# M13 = 1, SO BYPASS THE MULTIPLICATION.
# EXTEND
# MP M13 # (CPHI-CDUX)*M13 SCALED AT PI RADIANS.
AD AK # P ERROR COMPLETE , SCALED AT PI RAD
TC OVERSUB2 # PIN NEEDLES IN CASE OF OVERFLOW.
TS AK
EXTEND
QXCH ITEMP1 # RESTORE Q FOR CHEKBITS RETURN.
TCF RETNMORE # DISPLAY THESE THE NEXT TIME THROUGH
# Page 1417
# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE
#
# PROGRAM DESCRIPTION: D. KEENE 5/24/67
# MOD 1 BY CRAIG WORK, 12 DEC 67
# MOD 2 BY CRAIG WORK, 6 APRIL 68, CONVERTS ATTITUDE ERROR DISPLAY SCALING FROM 16 7/8 DEG. TO 42 3/16 DEGREES.
#
# THIS SUBROUTINE IS USED TO DISPLAY ATTITUDE ERRORS ON THE FDAI VIA THE DIGITAL TO ANALOG CONVERTERS (DACS)
# IN THE CDUS. CARE IS TAKEN TO METER OUT THE APPROPRIATE NUMBER OF PULSES TO THE IMU ERROR COUNTERS AND PREVENT
# OVERFLOW, TO CONTROL THE RELAY SEQUENCING, AND TO AVOID INTERFERENCE WITH THE COARSE ALIGN LOOP WHICH ALSO USES
# THE DACS.
#
# CALLING SEQUENCE:
# DURING THE INITIALIZATION SECTION OF THE USER'S PROGRAM, BIT3 OF RCSFLAGS SHOULD BE SET TO INITIATE THE
# TURN-ON SEQUENCE WITHIN THE NEEDLES PROGRAM:
# CS RCSFLAGS # IN EBANK6
# MASK BIT3
# ADS RCSFLAGS
# THEREAFTER, THE ATTITUDE ERRORS GENERATED BY THE USER SHOULD BE TRANSFERRED TO THE FOLLOWING LOCATIONS IN EBANK6:
# AK SCALED 180 DEGREES NOTE: THESE LOCATIONS ARE SUBJECT
# AK1 SCALED 180 DEGREES TO CHANGE
# AK2 SCALED 180 DEGREES
# FULL SCALED DEFLECTION OF THE NEEDLES CORRESPONDS TO 5 1/16 DEGREES, WHILE 384 BITS IN THE IMU ERROR COUNTER
# CORRESPONDS TO 42 3/16 DEGREES. (DAC MAXIMUM CAPACITY IS 384 BITS.) 46 BITS EFFECTIVELY PIN THE NEEDLES.
#
# A CALL TO NEEDLER WILL THE UPDATE THE DISPLAY:
# INHINT
# TC IBNKCALL # NOTE: EBANK SHOULD BE SET TO E6
# CADR NEEDLER
# RELINT
# THIS PROCESS SHOULD BE REPEATED EACH TIME THE ERRORS ARE UPDATED. AT LEAST 3 PASSES THRU THE PROGRAM ARE
# REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.
# NOTE: EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50 MS. TO ASSURE PROPER RELAY SEQUENCING.
#
# ERASABLES USED:
# AK CDUXCMD
# AK1 CDUYCMD
# AK2 CDUZCMD
# EDRIVEX A,L,Q
# EDRIVEY T5TEMP
# EDRIVEZ DINDX
# Page 1418
#
# SWITCHES: RCSFLAGS BITS 3,2
#
# I/O CHANNELS: CHAN12 BIT 4 (COARSE ALIGN -- READ ONLY)
# CHAN12 BIT 6 (IMU ERROR COUNTER ENABLE)
# CHAN14 BIT 13,14,15 (DAC ACTIVITY)
#
# SIGN CONVENTION: AK = THETAC - THETA
# WHERE THETAC = COMMAND ANGLE
# THETA = PRESENT ANGLE
NEEDLER CA RCSFLAGS
MASK SIX
EXTEND
BZF NEEDLES3
MASK BIT3
EXTEND
BZF NEEDLER2 # BIT3 = 0, BIT2 = 1
CS BIT6 # FIRST PASS BIT3 = 1
EXTEND # DISABLE IMU ERROR COUNTER TO ZERO DACS
WAND CHAN12 # MUST WAIT AT LEAST 60 MS BEFORE
NEEDLE11 CS ZERO # ENABLING COUNTERS.
TS AK # ZERO THE INPUTS ON FIRST PASS
TS AK1
TS AK2
TS EDRIVEX # ZERO THE DISPLAY REGISTERS
TS EDRIVEY
TS EDRIVEZ
TS CDUXCMD # ZERO THE OUT COUNTERS
TS CDUYCMD
TS CDUZCMD
CS SIX # RESET RCSFLAGS FOR PASS2
MASK RCSFLAGS
AD BIT2
TS RCSFLAGS
TCF RETNMORE
NEEDLER2 CAF BIT6 # ENABLE IMU ERROR COUNTERS
EXTEND
WOR CHAN12
CS SIX # RESET RCSFLAGS TO DISPLAY ATTITUDE
MASK RCSFLAGS # ERRORS. WAIT AT LEAST 4 MS FOR
TS RCSFLAGS # RELAY CLOSURE.
TCF RETNMORE
NEEDLES3 CAF BIT6 # CHECK TO SEE IF IMU ERROR COUNTER
EXTEND # IS ENABLED
RAND CHAN12
# Page 1419
CCS A # IF NOT, RE-INITIALIZE NEEDLER.
TCF NEEDLES
CS RCSFLAGS # SET UP INITIALIZATION FLAG IN RCSFLAGS.
MASK BIT3
ADS RCSFLAGS
TCF RETNMORE
NEEDLES CAF TWO
DACLOOP TS DINDX
CS ONETENTH # RESCALE INPUTS TO + OR - 1800 DEGREES.
EXTEND
INDEX DINDX
MP AK
TS L
CCS A
CA DACLIMIT
TCF +2
CS DACLIMIT
AD L
TS T5TEMP # OVFLO CHK
TCF +4
INDEX A # ON OVERFLOW LIMIT OUTPUT TO +-384
CAF DACLIMIT
TS L
INDEX DINDX
CS EDRIVEX # CURRENT VALUE OF DAC
AD L
INDEX DINDX
ADS CDUXCMD
INDEX DINDX
LXCH EDRIVEX
CCS DINDX
TCF DACLOOP
CAF 13,14,15
EXTEND
WOR CHAN14 # SET DAC ACTIVITY BITS
TCF RETNMORE
DEC -384
DACLIMIT DEC 16000
DEC 384
ONETENTH OCT 03146 # DECIMAL +0.1, SCALED AT 1.
DSPLYALT EQUALS BIT4 # 100 MS ALTERNATION BIT IN RCSFLAGS
OVERSUB2 TS 7 # RETURNS A UNCHANGED OR LIMITED TO
TC Q # POSMAX OR NEGMAX IF A HAS OVERFLOW
INDEX A
# Page 1420
CS LIMITS # DUPLICATE CODING IN BANK 16
TC Q
RETNMORE EXTEND # RETURN TO CHEKMORE
DCA MORECADR
DTCB
EBANK= AOSQ
MORECADR 2CADR CHEKMORE

View File

@ -0,0 +1,176 @@
# Copyright: Public domain.
# Filename: DAP_INTERFACE_SUBROUTINES.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1406-1409
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1406
BANK 20
SETLOC DAPS3
BANK
EBANK= CDUXD
COUNT* $$/DAPIF
# MOD 0 DATE 11/15/66 BY GEORGE W. CHERRY
# MOD 1 1/23/67 MODIFICATION BY PETER ADLER
#
# FUNCTIONAL DESCRIPTION
# HEREIN IS A COLLECTION OF SUBROUTINES WHICH ALLOW MISSION CONTROL PROGRAMS TO CONTROL THE MODE
# AND INTERFACE WITH THE DAP.
#
# CALLING SEQUENCES
# IN INTERRUPT OR WITH INTERRUPT INHIBITED
# TC IBNKCALL
# FCADR ROUTINE
# IN A JOB WITHOUT INTERRUPT INHIBITED
# INHINT
# TC IBNKCALL
# FCADR ROUTINE
# RELINT
#
# OUTPUT
# SEE INDIVIDUAL ROUTINES BELOW
#
# DEBRIS
# A, L, AND SOMETIMES MDUETEMP ODE NOT IN PULSES MODE
# Page 1407
# SUBROUTINE NAMES:
# SETMAXDB, SETMINDB, RESTORDB, PFLITEDB
# MODIFIED: 30 JANUARY 1968 BY P. S. WEISSMAN TO CREATE RESTORDB.
# MODIFIED: 1 MARCH 1968 BY P. S. WEISSMAN TO SAVE EBANK AND CREATE PFLITEDB
#
# FUNCTIONAL DESCRIPTION:
# SETMAXDB -- SET DEADBAND TO 5.0 DEGREES
# SETMINDB -- SET DEADBAND TO 0.3 DEGREE
# RESTORDB -- SET DEADBAND TO MAX OR MIN ACCORDING TO SETTINGS OF DBSELECT BIT OF DAPBOOLS
# PFLITEDB -- SET DEADBAND TO 1.0 DEGREE AND ZERO THE COMMANDED ATTITUDE CHANGE AND COMMANDED RATE
#
# ALL ENTRIES SET UP A NOVAC JOB TO DO 1/ACCS SO THAT THE TJETLAW SWITCH CURVES ARE POSITIONED TO
# REFLECT TEH NEW DEADBAND. IT SHOULD BE NOTED THAT THE DEADBAND REFERS TO THE ATTITUDE IN THE P-, U-, AND V-AXES.
#
# SUBROUTINE CALLED: NOVAC
#
# CALLING SEQUENCE: SAME AS ABOVE
# OR TC RESTORDB +1 FROM ALLCOAST
#
# DEBRIS: A, L, Q, RUPTREG1, (ITEMPS IN NOVAC)
RESTORDB CAE DAPBOOLS # DETERMINE CREW-SELECTED DEADBAND.
MASK DBSELECT
EXTEND
BZF SETMINDB
SETMAXDB CAF WIDEDB # SET 5 DEGREE DEADBAND.
+1 TS DB
EXTEND # SET UP JOB TO RE-POSITION SWITCH CURVES.
QXCH RUPTREG1
CALLACCS CAF PRIO27
TC NOVAC
EBANK= AOSQ
2CADR 1/ACCJOB
TC RUPTREG1 # RETURN TO CALLER.
SETMINDB CAF NARROWDB # SET 0.3 DEGREE DEADBAND.
TCF SETMAXDB +1
PFLITEDB EXTEND # THE RETURN FROM CALLACCS IS TO RUPTREG1.
QXCH RUPTREG1
TC ZATTEROR # ZERO THE ERRORS AND COMMANDED RATES.
CAF POWERDB # SET DB TO 1.0 DEG.
TS DB
TCF CALLACCS # SET UP 1/ACCS AND RETURN TO CALLER.
NARROWDB OCTAL 00155 # 0.3 DEGREE SCALED AT 45.
# Page 1408
WIDEDB OCTAL 03434 # 5.0 DEGREES SCALED AT 45.
POWERDB DEC .02222 # 1.0 DEGREE SCALED AT 45.
ZATTEROR CAF EBANK6
XCH EBANK
TS L # SAVE CALLERS EBANK IN L.
CAE CDUX
TS CDUXD
CAE CDUY
TS CDUYD
CAE CDUZ
TS CDUZD
TCF STOPRATE +3
STOPRATE CAF EBANK6
XCH EBANK
TS L # SAVE CALLERS EBANK IN L.
+3 CAF ZERO
TS OMEGAPD
TS OMEGAQD
TS OMEGARD
TS DELCDUX
TS DELCDUY
TS DELCDUZ
TS DELPEROR
TS DELQEROR
TS DELREROR
LXCH EBANK # RESTORE CALLERS EBANK.
TC Q
# SUBROUTINE NAME: ALLCOAST
# WILL BE CALLED BY FRESH STARTS AND ENGINE OFF ROUTINES.
#
# CALLING SEQUENCE: (SAME AS ABOVE)
#
# EXIT: RETURN TO Q.
#
# SUBROUTINES CALLED: STOPRATE, RESTORDB, NOVAC
#
# ZERO: (FOR ALL AXES) AOS, ALPHA, AOSTERM, OMEGAD, DELCDU, DELEROR
#
# OUTPUT: DRIFTBIT/DAPBOOLS, OE, JOB TO DO 1/ACCS
#
# DEBRIS: A, L, Q, RUPTREG1, RUPTREG2, (ITEMPS IN NOVAC)
ALLCOAST EXTEND # SAVE Q FOR RETURN
QXCH RUPTREG2
# Page 1409
TC STOPRATE # CLEAR RATE INTERFACE. RETURN WITH A=0
LXCH EBANK # AND L=EBANK6. SAVE CALLER'S EBANK.
TS AOSQ
TS AOSQ +1
TS AOSR
TS AOSR +1
TS ALPHAQ # FOR DOWNLIST.
TS ALPHAR
TS AOSQTERM
TS AOSRTERM
LXCH EBANK # RESTORE EBANK (EBANK6 NO LONGER NEEDED)
CS DAPBOOLS # SET UP DRIFTBIT
MASK DRIFTBIT
ADS DAPBOOLS
TC RESTORDB +1 # RESTORE DEADBANK TO CREW-SELECTED VALUE.
TC RUPTREG2 # RETURN.

View File

@ -0,0 +1,455 @@
# Copyright: Public domain.
# Filename: DOWN_TELEMETRY_PROGRAM.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 988-997
# Mod history: 2009-05-24 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 988
# PROGRAM NAME -- DOWN TELEMETRY PROGRAM
# MOD NO. -- 0 TO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE
# PURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.
# THIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS. REFER TO DOWNLINK
# LISTS LOG SECTION FOR MORE DETAILS. HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING
# OF DOWN TELEMETRY DATA.
# MOD BY -- KILROY, SMITH, DEWITT
# DATE -- 02 OCT 67
# AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN
# LOG SECTION -- DOWN-TELEMETRY PROGRAM
#
# FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END
# PULSE FROM THE DOWNLINK TELEMETRY CONVERTER. THIS PULSE OCCURS
# AT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS
# EXECUTED AT THESE RATES. THIS ROUTINE SELECTS THE APPROPRIATE
# AGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT
# CHANNELS 34 AND 35. THE INFORMATION IS THEN GATED OUT FROM THE
# LGC IN SERIAL FASHION.
#
# THIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST. SINCE DOWNRUPTS
# OCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN
# CHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE
# OF SENDING 200 AGC WORDS EVERY 2 SECONDS.
#
# CALLING SEQUENCE -- NONE
# PROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A
# RESULT OF A DOWNRUPT. CONTROL IS RETURNED VIA TCF RESUME WHICH
# IN EFFECT IS A RESUME.
#
# SUBROUTINES CALLED -- NONE
#
# NORMAL EXIT MODE -- TCF RESUME
#
# ALARM OR ABORT EXIT MODE -- NONE
#
# RESTART PROTECTION:
# ON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY
# DNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR). THIS HAS THE
# EFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN
# THE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT
# DOWNLIST.
#
# ALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.
#
# DOWNLINK LIST SELECTION:
# THE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:
# 1. FRESH START
# 2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.
# 3. UPDATE PROGRAM (P27)
# 4. NON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62
# TRANSITION (COLOSSUS) ETC.).
#
# DOWNLINK LIST RULES AND LIMITATIONS:
# READ SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP.
#
# OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC
# COMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.
#
# ERASABLE INITIALIZATION REQUIRED -- NONE
# `DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.
#
# DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) --
# LDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ.
# Page 989 (empty page)
# Page 990
# DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE
# RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.
#
# NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:
# 1. DOWNLISTS. DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE
# DOWN-TELEMETRY PROGRAM. THIS IS DONE FOR EASE OF CODING, FASTER
# EXECUTION.
# 2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF
# SUBLISTS.
# 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER
# DOWNLINK LISTS. ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE
# CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.
# 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE
# SAVED IN A BUFFER DURING ONE DOWNRUPT.
# 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END
# OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD
# IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.
# 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS
# CREATED FOR THE DOWNLIST PROGRAM.
# A. 1DNADR 1-WORD DOWNLIST ADDRESS.
# SAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT
# HALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.
# B. 2DNADR - 6DNADR N-WORD DOWNLIST ADDRESS, N = 2 - 6.
# SAME AS 1DNADR, BUT WTIH THE 4 UNUSED BITS OF THE ECADR FORMAT
# FILLED IN WITH 0001-0101. USED TO POINT TO A LIST OF N DOUBLE-
# PRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.
# C. DNCHAN DOWNLIST CHANNEL ADDRESS.
# SAME AS 1DNADR, BUT WITH PREFIX BITS 0111. USED TO POINT TO
# A PAIR OF CHANNELS FOR DOWN TELEMETRY.
# D. DNPTR DOWN-TELEMETRY SUBLIST POINTER.
# SAME AS CAF BUT TAGGED AS A CONSTANT. USED IN CONTROL LIST TO POINT TO A SUBLIST.
# CAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST.
# 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN
# A `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).
# 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.
#
# DOWNLIST LIST RESTRICTIONS:
# (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE
# DONE)
# 1. SNAPSHOT DOWNLIST:
# (A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400.
# (B) CAN CONTAIN ONLY 1DNADR'S
# 2. ALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE
# EQUIVALENT OF THE FOLLOWING ECADRS (I.E., 1DNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777.
# (NOTE: THE TERM `EQUIVALENT' MEANT THAT THE 1DNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
# 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
# Page 991
# 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE
# CONTROL SECTION OF THE DOWNLIST.
# 5. `DNCHAN 0' CANNOT BE USED.
# 6. `DNPTR 0' CANNOT BE USED.
# 7. DNPTR CANNOT APPEAR IN A SUBLIST.
#
# EBANK SETTINGS
# IN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS
# `GARBAGE' INTO BITS15-12 OF EBANK. HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME
# SIGNIFICANT SOMEDAY IN THE FUTURE. IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)
# THAT BITS 15-12 OF EBANK ARE ZERO.
#
# INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE.
# 1. ADRES OF DOWNLINK LIST INTO DNLSTADR
# 2. NEGONE INTO SUBLIST
# 3. NEGONE INTO DNECADR
BANK 22
SETLOC DOWNTELM
BANK
EBANK= DNTMBUFF
COUNT* $$/DPROG
DODOWNTM TS BANKRUPT
EXTEND
QXCH QRUPT # SAVE Q
TCF WOTEST
WO1 EXTEND # SET WORD ORDER BIT TO 1 ONLY IF IT
WOR CHAN13 # ALREADY ISN'T
TC DNTMGOTO # GOTO APPROPRIATE PHASE OF PROGRAM
DNPHASE1 CA NEGONE # INITIALIZE ALL CONTROL WORDS
TS SUBLIST # WORDS TO MINUS ONE
TS DNECADR
CA LDNPHAS2 # SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS
TS DNTMGOTO # GO TO DNPHASE2
TCF NEWLIST
DNPHASE2 CCS DNECADR # SENDING OF DATA IN PROGRESS
DODNADR TC FETCH2WD # YES -- THEN FETCH THE NEXT 2 SP WORDS
MINTIME2 -1DNADR TIME2 # NEGATIVE OF TIME2 1DNADR
TCF +1 # (ECADR OF 3776 + 74001 = 77777)
CCS SUBLIST # IS THE SUBLIST IN CONTROL
TCF NEXTINSL # YES
# Page 992
DNADRDCR OCT 74001 # DNADR COUNT AND ECADR DECREMENTER
CHKLIST CA CTLIST
EXTEND
BZMF NEWLIST # IT WILL BE NEGATIVE AT END OF LIST
TCF NEXTINCL
NEWLIST INDEX DNLSTCOD
CA DNTABLE # INITIALIZE CTLIST WITH
TS CTLIST # STARTING ADDRESS OF NEW LIST
CS DNLSTCOD
TCF SENDID +3
NEXTINCL INDEX CTLIST
CA 0
CCS A
INCR CTLIST # SET POINTER TO PICK UP NEXT CTLIST WORD
TCF +4 # ON NEXT ENTRY TO PROG. (A SHOULD NOT =0)
XCH CTLIST # SET CTLIST TO NEGATIVE AND PLACE(CODING)
COM # UNCOMPLEMENTED DNADR INTO A. (FOR LA)
XCH CTLIST # (ST IN )
+4 INCR A # (CTLIST)
TS DNECADR # SAVE DNADR
AD MINTIME2 # TEST FOR TIME2 (NEG. OF ECADR)
CCS A
TCF SETWO +1 # DON'T SET WORD ORDER CODE
MINB1314 OCT 47777 # MINUS BIT 13 AND 14 (CAN'T GET HERE)
TCF SETWO +1 # DON'T SET WORD ORDER CODE
SETWO TC WOZERO # GO SET WORD ORDER CODE TO ZERO.
+1 CA DNECADR # RELOAD A WITH THE DNADR.
+2 AD MINB1314 # IS THIS A REGULAR DNADR?
EXTEND
BZMF FETCH2WD # YES. (A MUST NEVER BE ZERO)
AD MINB12 # NO. IS IT A POINTER (DNPTR) OR A
EXTEND # CHANNEL(DNCHAN)
BZMF DODNPTR # IT'S A POINTER. (A MUST NEVER BE ZERO)
DODNCHAN TC 6 # (EXECUTED AS EXTEND) IT'S A CHANNEL
INDEX DNECADR
INDEX 0 -4000 # (EXECUTED AS READ)
TS L
TC 6 # (EXECUTED AS EXTEND)
INDEX DNECADR
INDEX 0 -4001 # (EXECUTED AS READ)
TS DNECADR # SET DNECADR
CA NEGONE # TO MINUS
XCH DNECADR # WHILE PRESERVING A.
TCF DNTMEXIT # GO SEND CHANNELS
WOZERO CS BIT7
EXTEND
WAND CHAN13 # SET WORD ORDER CODE TO ZERO
# Page 993
TC Q # RETURN TO CALLER
DODNPTR INDEX DNECADR # DNECADR CONTAINS ADRES OF SUBLIST
0 0 # CLEAR AND ADD LIST ENTRY INTO A.
CCS A # IS THIS A SNAPSHOT SUBLIST
CA DNECADR # NO, IT IS A REGULAR SUBLIST.
TCF DOSUBLST # A MUST NOT BE ZERO.
XCH DNECADR # YES. IT IS A SNAPSHOT SUBLIST.
TS SUBLIST # C(DNECADR) INTO SUBLIST
CAF ZERO # A INTO A
XCH TMINDEX # (NOTE: TMINDEX = DNECADR)
# THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.
# THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.
# THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED
# TO MINIMIZE TIME. THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.
# THESE RULES ARE ......
# 1. ONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST
# 2. THE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.
SNAPLOOP TS EBANK # SET EBANK
MASK LOW8 # ISOLATE RELATIVE ADDRESS
EXTEND
INDEX A
EBANK= 1401
DCA 1401 # PICK UP 2 SNAPSHOT WORDS.
EBANK= DNTMBUFF
INDEX TMINDEX
DXCH DNTMBUFF # STORE 2 SNAPSHOT WORDS IN BUFFER
INCR TMINDEX # SET BUFFER INDEX FOR NEXT 2 WORDS.
INCR TMINDEX
SNAPAGN INCR SUBLIST # SET POINTER TO NEXT 2 WORDS OF SNAPSHOT
INDEX SUBLIST
0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
CCS A # TEST FOR LAST TWO WORDS OF SNAPSHOT.
TCF SNAPLOOP # NOT LAST TWO.
LDNPHAS2 GENADR DNPHASE2
TS SUBLIST # YES, LAST. SAVE A.
CA NEGONE # SET DNECADR AND
TS DNECADR # SUBLIST POINTERS
XCH SUBLIST # TO NEGATIVE VALUES
TS EBANK
MASK LOW8
EXTEND
INDEX A
EBANK= 1401
DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT.
# Page 994
EBANK= DNTMBUFF
SNAPEND TCF DNTMEXIT # NOW TO SEND THEM.
FETCH2WD CA DNECADR
TS EBANK # SET EBANK
MASK LOW8 # ISOLATE RELATIVE ADDRESS
TS L
CA DNADRDCR # DECREMENT COUNT AND ECADR
ADS DNECADR
EXTEND
INDEX L
EBANK= 1400
DCA 1400 # PICK UP 2 DATA WORDS
EBANK= DNTMBUFF
TCF DNTMEXIT # NOW GO SEND THEM.
DOSUBLST TS SUBLIST # SET SUBLIST POINTER
NEXTINSL INDEX SUBLIST
0 0 # = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)
CCS A # IS IT THE END OF THE SUBLIST
INCR SUBLIST # NO --
TCF +4
TS SUBLIST # SAVE A.
CA NEGONE # SET SUBLIST TO MINUS
XCH SUBLIST # RETRIEVE A.
+4 INCR A
TS DNECADR # SAVE DNADR
TCF SETWO +2 # GO USE COMMON CODING (PROLEMS WOULD
# OCCUR IF THE PROGRAM ENCOUNTERED A
# DNPTR NOW)
DNTMEXIT EXTEND # DOWN-TELEMETRY EXIT
WRITE DNTM1 # TO SEND A + L TO CHANNELS 34 + 35
CA L # RESPECTIVELY
TMEXITL EXTEND
WRITE DNTM2
TMRESUME TCF RESUME # EXIT TELEMTRY PROGRAM VIA RESUME.
MINB12 EQUALS -1/8
DNECADR EQUALS TMINDEX
CTLIST EQUALS LDATALST
SUBLIST EQUALS DNQ
# Page 995
# SUBROUTINE NAME -- DNDUMP
#
# FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL ERASABLE STORAGE 'N' TIMES. (N=1 TO 4). BANKS ARE SENT ONE AT A TIME
# EACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH
# EBANK. EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.)
#
# CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.
# AFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP
# WILL BEGIN.
#
# ONCE INITITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY
# BY THE FOLLOWING:
#
# 1. A FRESH START
# 2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT). NOTE THAT DUMPCNT
# CAN BE ALTERED BY A V21N01.
# 3. AND INVOLUNTARILY BY A RESTART.
#
# NORMAL EXIT MODE -- TCF DNPHASE1
#
# ALARM OR ABORT MODE -- NONE
#
# *SUBROUTINES CALLED -- NONE
#
# ERASABLE INITIALIZATION REQUIRED --
# DUMPCNT OCT 20000 IF 4 COMPLETE ERASABLE DUMPS ARE DESIRED
# DUMPCNT OCT 10000 IF 2 COMPLETE ERASABLE DUMPS ARE DESIRED
# DUMPCNT OCT 04000 IF 1 COMPLETE ERASABLE DUMP IS DESIRED
#
# DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS
#
# TIMING -- TIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC
# TIME (IN SECS) = ( 4 )*( 8 )*( 256 + 4 ) / 100
# THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS
#
# STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM --
# (REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)
#
# DOWNLIST W
# WORD TAKEN FROM CONTENTS OF EXAMPLE O COMMENTS
# 1 ERASID 0177X 0 DOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)
# 2 LOWIDCOD 77340 1 DOWNLINK SYNCH BITS. (SAME ONE USED IN ALL OTHER DOWNLISTS)
# 3 DUMPLOC 13400 1 (SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD
# 4 TIME1 14120 1 TIME IN CENTISECONDS
# 5 FIRST WORD OF EBANK X 03400 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)
# 6 2ND WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)
# 7 3RD WORD OF EBANK X 00142 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)
# .
# .
# .
# 260D 256TH WORD OF EBANK X 03777 1 IN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)
#
# NOTE -- DUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.
# THE BIT STRUCTURE OF DUMPLOC IS FOLLOW --
# X = NOT USED
# X ABC EEE RRRRRRRR ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT
# COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS)
# EEE = EBANK BITS
# RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK
# Page 996
DNDUMPI CA ZERO # INITIALIZE DOWNLINK
TS DUMPLOC # ERASABLE DUMP
+2 TC SENDID # GO SEND ID AND SYNCH BITS
CA LDNDUMP1 # SET DNTMGOTO
TS DNTMGOTO # TO LOCATION FOR NEXT PASS
CA TIME1 # PLACE TIME1
XCH L # INTO L
CA DUMPLOC # AND ECADR OF THIS EBANK INTO A
TCF DNTMEXIT # SEND DUMPLOC AND TIME1
LDNDUMP ADRES DNDUMP
LDNDUMP1 ADRES DNDUMP1
DNDUMP CA TWO # INCREMENT ECADR IN DUMPLOC
ADS DUMPLOC # TO NEXT DP WORD TO BE
MASK LOW8 # DUMPED AND SAVE IT.
CCS A # IS THIS THE BEGINNING OF A NEW EBANK
TCF DNDUMP2 # NO -- THEN CONTINUE DUMPING
CA DUMPLOC # YES -- IS THIS THE END OF THE
MASK DUMPCNT # N TH (N = 1 TO 4) COMPLETE ERASABLE
MASK PRIO34 # DUMP (BIT14 FOR 4, BIT13 FOR 2 OR BIT12
CCS A # FOR 1 COMPLETE ERASABLE DUMP(S)).
TCF DNPHASE1 # YES -- START SENDING INTERRUPTED DOWNLIST
# AGAIN
TCF DNDUMPI +2 # NO -- GO BACK AND INITIALIZE NEXT BANK
DNDUMP1 CA LDNDUMP # SET DNTMGOTO
TS DNTMGOTO # FOR WORDS 3 TO 256D OF CURRENT EBANK
DNDUMP2 CA DUMPLOC
TS EBANK # SET EBANK
MASK LOW8 # ISOLATE RELATIVE ADDRESS.
TS Q # (NOTE: MASK INSTRUCTION IS USED TO PICK
CA NEG0 # UP ERASABLE REGISTERS SO THAT EDITING
TS L # REGISTERS 20-23 WILL NOT BE ALTERED.)
INDEX Q
EBANK= 1400 # PICK UP LOW ORDER REGISTER OF PAIR
MASK 1401 # OF ERASABLE REGISTERS.
XCH L
INDEX Q # PICK UP HIGH ORDER REGISTER OF PAIR
MASK 1400 # OF ERASABLE REGISTERS.
EBANK= DNTMBUFF
TCF DNTMEXIT # GO SEND THEM
SENDID EXTEND # ** ENTRANCE USED BY ERASABLE DUMP PROG. **
QXCH DNTMGOTO # SET DNTMGOTO SO NEXT TIME PROG WILL GO
CAF ERASID # TO LOCATION FOLLOWING `TC SENDID'
TS L # ** ENTRANCE USED BY REGULAR DOWNLINK PG **
# Page 997
TC WOZERO # GO SET WORD ORDER CODE TO ZERO
CAF LOWIDCOD # PLACE SPECIAL ID CODE INTO L
XCH L # AND ID BACK INTO A
TCF DNTMEXIT # SEND DOWNLIST ID CODE(S).
WOTEST CA BIT7 # AT THE BEGINNING OF THE LIST THE WORD
EXTEND # ORDER BIT WILL BE SET BACK TO ZERO
RAND CHAN13
CCS A
TC DNTMGOTO
CA BIT7
TCF WO1

View File

@ -0,0 +1,743 @@
# Copyright: Public domain.
# Filename: FINDCDUW--GUIDAP_INTERFACE.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 908-925
# Mod history: 2009-05-28 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 908
# PROGRAM NAME: FINDCDUW
# MOD NUMBER: 1 68-07-15
# MOD AUTHOR: KLUMPP
#
# OBJECTS OF MOD: 1. TO SUPPLY COMMANDED GIMBAL ANGLES FOR NOUN 22.
# 2. TO MAINTAIN CORRECT AND CURRENT THRUST
# DIRECTION DATA IN ALL MODES. THIS IS DONE BY
# FETCHING FOR THE THRUST DIRECTION FILTER THE
# CDUD'S IN PNGCS-AUTO, THE CDU'S IN ALL OTHER
# MODES.
# 3. TO SUBSTITUDE A STOPRATE FOR THE NORMAL
# AUTOPILOT COMMANDS WHENEVER
# 1) NOT IN PNGCS-AUTO, OR
# 2) ENGINE IS OFF.
#
# FUNCTIONAL DESCRIPTION:
#
# FINDCDUW PROVIDES THE INTERFACES BETWEEN THE VARIOUS POWERED FLITE GUIDANCE PROGRAMS
# AND THE DIGITAL AUTOPILOT. THE INPUTS TO FINDCDUW ARE THE THRUST COMMAND VECTOR
# AND THE WINDOW COMMAND VECTOR, AND THE OUTPUTS ARE THE GIMBAL ANGLE
# INCRMENTS, THE COMMANDED ATTITUDE ANGLE RATES, AND THE COMMANDED
# ATTITUDE LAG ANGLES (WHICH ACCOUNT FOR THE ANGLES BY WHICH THE BODY WILL
# LAG BEHIND A RAMP COMMAND IN ATTITUDE ANGLE DUE TO THE FINITE ANGULAR
# ACCELERATIONS AVAILABLE).
#
# FINDCDUW ALIGNS THE ESTIMATED THRUST VECTOR FROM THE THRUST DIRECTION
# FILTER WITH THE THRUST COMMAND VECTOR, AND, WHEN XDVINHIB SET,
# ALIGNS THE +Z HALF OF THE LM ZX PLANE WITH THE WINDOW COMMAND VECTOR.
#
# Page 909
# SPECIFICATIONS:
#
# INITIALIZATION: A SINGLE INTERPRETIVE CALL TO INITCDUW IS REQUIRED
# BEFORE EACH GUIDED MANEUVER USING FINDCDUW.
#
# CALL: INTERPRETIVE CALL TO FINDCDUW WITH THE THRUST COMMAND
# VECTOR IN MPAC. INTERPRETIVE CALL TO FINDCDUW -2 WITH
# THE THRUST COMMAND VECTOR IN UNFC/2 AND NOT IN MPAC.
#
# RETURNS: NORMAL INTERPRETIVE IN ALL CASES
# 1. NORMALLY ALL AUTOPILOT CMDS ARE ISSUED.
# 2. IF NOT PNGCS AUTO, DO STOPRATE AND RETURN
# WITHOUT ISSUING AUTOPILOT CMDS.
# 3. IF ENGINE OFF, DO STOPRATE AND RETURN WITHOUT
# ISSUING AUTOPILOT CMDS.
#
# ALARMS: 00401 IF INPUTS DETERMINE AN ATTITUDE IN GIMBAL LOCK.
# FINDCDUW DRIVES CDUXD AND CDUYD TO THE RQD VALUES,
# BUT DRIVES CDUZD ONLY TO THE GIMBAL LOCK CONE.
#
# 00402 IF UNFC/2 OR UNWC/2 PRODUCE OVERFLOW WHEN
# UNITIZED USING NORMUNIT. FINDCDUW ISSUES
# STOPRATE AS ONLY INPUT TO AUTOPILOT.
#
# INPUTS: UNFC/2 THRUST COMMAND VECTOR, NEED NOT BE SEMI-UNIT.
# UNWC/2 WINDOW COMMAND VECTOR, NEED NOT BE SEMI-UNIT.
# OGABIAS POSSIBLE BIAS FOR OUTER GIMBAL ANGLE (ZEROED IN INITCDUW), UNITS OF PI.
# XOVINHIB FLAG DENOTING X AXIS OVERRIDE INHIBITED.
# CSMDOCKD FLAG DENOTING CSM DOCKED.
# STEERSW FLAG DENOTING INSUFF THRUST FOR THRUST DIR FLTR.
#
# OUTPUTS: DELCDUX,Y,Z
# OMEGAPD,+1,+2
# DELPEROR,+1,+2
# CPHI,+1,+2 FOR NOUN22
#
# DEBRIS: FINDCDUW DESTROYS SINCDUX,Y,Z AND COSCDUX,Y,Z BY
# WRITING INTO THESE LOCATIONS THE SINES AND COSINES
# OF THE CDUD'S IN PNGCS-AUTO, OF THE CDU'S OTHERWISE.
# Page 910
# INITIALIZATION FOR FINDCDUW
BANK 30
SETLOC FCDUW
BANK
EBANK= ECDUW
COUNT* $$/FCDUW
INITCDUW VLOAD
UNITX
STORE UNFV/2
STORE UNWC/2
RVQ
# FINDCDUW PRELIMINARIES
VLOAD # FINDCDUW -2: ENTRY WHEN UNFC/2 PRE-STORD
UNFC/2 # INPUT VECTORS NEED NOT BE SEMI-UNIT
FINDCDUW BOV SETPD # FINDCDUW: ENTRY WHEN UNFC/2 IN MPAC
FINDCDUW # INTERPRETER NOW INITIALIZED
22 # LOCS 0 THRU 21 FOR DIRECTION COSINE MAT
STQ EXIT
QCDUWUSR # SAVE RETURN ADDRESS
# MORE HAUSKEEPING
CA ECDUWL
XCH EBANK # SET EBANK
TS ECDUWUSR # SAVE USER'S EBANK
CA DAPBOOLS
MASK CSMDOCKD # CSMDOCKD MUST NOT BE BIT15
CCS A
CA ONE # INDEX IF CSM DOCKED
TS NDXCDUW
CA XOVINHIB # XOVINHIB MUST NOT BE BIT15
TS FLPAUTNO # SET TO POS-NON-ZERO FLAG PNGCS AUTO NOT
MASK DAPBOOLS
TS FLAGOODW # FLAG0ODW = ANY PNZ NUMBER IF XOV INHIBTD
# Page 911
# FETCH BASIC DATA
INHINT # RELINT AT PAUTNO (TC INTPRET)
CA CDUX # FETCH CDUX,CDUY,CDUZ IN ALL CASES, BUT
TS CDUSPOTX # REPLACE BELOW IF PNGCS AUTO
CA CDUY
TS CDUSPOTY
CA CDUZ
TS CDUSPOTZ
CA BIT10 # PNGCS CONTROL BIT
EXTEND
RAND CHAN30
CCS A
TCF PAUTNO # NOT PNGCS (BITS INVERTED)
CA BIT14 # AUTO MODE BIT
EXTEND
RAND CHAN31
CCS A
TCF PAUTNO # NOT AUTO (BITS INVERTED)
TS FLPAUTNO # RESET FLAG PNGCS AUTO NOT
CA CDUXD # PNGCS AUTO: FETCH CDUXD,CDUYD,CDUZD
TS CDUSPOTX
CA CDUYD
TS CDUSPOTY
CA CDUZD
TS CDUSPOTZ
# Page 912
# FETCH INPUTS
PAUTNO TC INTPRET # ENTERING THRUST CMD STILL IN MPAC
RTB
NORMUNIT
STOVL UNX/2 # SEMI-UNIT THRUST CMD AS INITIAL UNX/2
UNWC/2
RTB RTB
NORMUNIT
QUICTRIG # ALWAYS RQD TO OBTAIN TRIGS OF CDUD'S
STOVL UNZ/2 # SEMI-UNIT WINDOW CMD AS INITIAL UNZ/2
DELV
BOVB UNIT
NOATTCNT # AT LEAST ONE ENTERING CMD VCT ZERO
BOV CALL
AFTRFLTR # IF UNIT DELV OVERFLOWS SKIP FILTER
*SMNB* # YIELDS UNIT(DELV) IN VEH COORDS FOR FLTR
# THRUST DIRECTION FILTER
EXIT
CA UNFVY/2 # FOR RESTARTS, UNFV/2 ALWAYS INTACT, MPAC
LXCH MPAC +3 # RENEWD AFTER RETURN FROM CALLER,
TC FLTRSUB # TWO FILTER UPDATES MAY BE DONE.
TS UNFVY/2 # UNFV/2 NEED NOT BE EXACTLY SEMI-UNIT.
CA UNFVZ/2
LXCH MPAC +5
TC FLTRSUB
TS UNFVZ/2
TC INTPRET # COMPLETES FILTER
# Page 913
# FIND A SUITABLE WINDOW POINTING VECTOR
AFTRFLTR SLOAD BHIZ # IF XOV NOT INHIBITED, GO FETCH ZNB
FLAGOODW
FETCHZNB
VLOAD CALL
UNZ/2
UNWCTEST
FETCHZNB VLOAD
ZNBPIP
STCALL UNZ/2
UNWCTEST
VLOAD VCOMP # Z AND -X CAN'T BOTH PARALLEL UNFC/2
XNBPIP
STORE UNZ/2
# COMPUTE THE REQUIRED DIRECTION COSINE MATRIX
DCMCL VLOAD VXV
UNZ/2
UNX/2
UNIT PUSH # UNY/2 FIRST ITERATION
VXV VSL1
UNX/2
STORE UNZ/2 # -UNZ/2 FIRST ITERATION
VXSC PDVL # EXCHANGE -UNFVZ/2 UNZ/2 FOR UNY/2
UNFVZ/2 # MUST BE SMALL
VXSC BVSU # YIELDS -UNFVY/2 UNY/2-UNFVZ/2 UNZ/2
UNFVY/2 # MUST BE SMALL
VSL1 VAD
UNX/2
UNIT # TOTALLY ELIMINATES THRUST POINTING ERROR
STORE UNX/2 # UNX/2
VXV VSL1
UNZ/2 # -UNZ/2 WAS STORED HERE REMEMBER
STORE UNY/2 # UNY/2
VCOMP VXV
UNX/2
VSL1
STORE UNZ/2 # UNZ/2
# Page 914
# COMPUTES THE REQUIRED GIMBAL ANGLES
CALL
NB2CDUSP # YIELDS THE RQD GIMBAL ANGLES, 2'S, PI
EXIT
# LIMIT THE MIDDLE GIMBAL ANGLE & COMPUTE THE UNLIMITED GIMBAL ANGLE CHGS
CA MPAC +2 # LIMIT THE MGA
TS L # CAN'T LXCH: NEED UNLIMITED MGA FOR ALARM
CA CDUZDLIM
TC LIMITSUB # YIELDS LIMITED MGA. 1 BIT ERROR POSSIBLE
XCH MPAC +2 # BECAUSE USING 2'S COMP. WHO CARES?
EXTEND
MSU MPAC +2 # THIS BETTER YIELD ZERO
EXTEND
BZF +2
TCF ALARMMGA
MGARET INHINT # RELINT AT TC INTPRET AFTER TCQCDUW
ZL
CA TWO
DELGMBLP TS TEM2
CA L # TO PREVENT FALSE STARTS ABOUT X, ZERO
EXTEND # FLAGOODW IF DELGMBZ OR Y TOO BIG.
SQUARE
AD HI5 # WITHIN 1 BIT OF -(45 DEG SQUARED)
EXTEND
BZMF +3
CA ZERO
TS FLAGOODW
INDEX TEM2
CA MPAC
INDEX TEM2
TS CPHI # OUTPUTS TO NOUN22
EXTEND
INDEX TEM2
MSU CDUXD # NO MATTER THAT THESE SLIGHLTY DIFFERENT
COM # FROM WHEN WE INITIALLY FETCHED THEM
INDEX TEM2
TS -DELGMB # -UNLIMITED GIMBAL ANGLE CHGS, 1'S, PI
TS L # FOR PRECEDING TEST ON NEXT LOOP PASS
CCS TEM2
TCF DELGMBLP
# Page 915
# BRANCHES TO NOATTCNT
CCS FLPAUTNO
TCF NOATTCNT +2 # NO PNGCS AUTO
CA FLAGWRD5
MASK ENGONBIT
EXTEND
BZF NOATTCNT +2 # ENGINE NOT ON
# Page 916
# LIMIT THE ATTITUDE ANGLE CHANGES
#
# THIS SECTION LIMITS THE ATTITUDE ANGLE CHANGES ABOUT A SET OF ORTHOGONAL VEHICLE AXES X,YPRIME,ZPRIME,
# THESE AXES COINCIDE WITH THE COMMANDED VEHICLE AXES IF AND ONLY IF CDUXD IS ZERO. THE PRIME SYSTEM IS
# THE COMMANDED VEHICLE SYSTEM ROTATED ABOUT THE X AXIS TO BRING THE Z AXIS INTO ALIGNMENT WITH THE MIDDLE GIMBAL
# AXIS. ATTITUDE ANGLE CHANGES IN THE PRIME SYSTEM ARE RELATED TO SMALL GIMBAL ANGLE CHANGES BY:
#
# [ -DELATTX ] [ 1 SIN(CDUZD) 0 ] [ -DELGMBX ]
# [ ] [ ] [ ]
# [ -DELATTYPRIME ] = [ 0 COS(CDUZD) 0 ] [ -DELGMBY ]
# [ ] [ ] [ ]
# [ -DELATTZPRIME ] [ 0 0 1 ] [ -DELGMBZ ]
LXCH -DELGMB +2 # SAME AS -DELATTZPRIME UNLIMITED
INDEX NDXCDUW
CA DAZMAX
TC LIMITSUB
TS -DELGMB +2 # -DELGMBZ
CA -DELGMB +1
EXTEND
MP COSCDUZ # YIELDS -DELATTYPRIME/2 UNLIMITED
TS L
INDEX NDXCDUW
CA DAY/2MAX
TC LIMITSUB
EXTEND
DV COSCDUZ
XCH -DELGMB +1 # -DELGMBY, FETCHING UNLIMITED VALUE
EXTEND
MP SINCDUZ
DDOUBL
COM
EXTEND # YIELDS +DELATTX UNLIMITD, MAG < 180 DEG.
MSU -DELGMB # BASED ON UNLIMITED DELGMBV.
TS L # ONE BIT ERROR IF OPERANDS IN MSU
INDEX NDXCDUW # OF MIXED SIGNS. WHO CARES?
CA DAXMAX
TC LIMITSUB
TS -DELGMB # SAVE LIMITED +DELATTX
CCS FLAGOODW
CS -DELGMB # FETCH IT BACK CHGING SIGN IF WINDOW GOOD
TS -DELGMB # OTHERWISE USE ZERO FOR -DELATTX
CS -DELGMB +1
EXTEND
MP SINCDUZ
DDOUBL # YIELDS -CNTRIB TO -DELATTX FROM -DELGMBY
ADS -DELGMB # -DELGMBX. NO OVERFLOW SINCE LIMITED TO
# 20DEG(1+SIN(70DEG)/COS(70DEG)) < 180DEG
# Page 917
# COMPUTE COMMANDED ATTITUDE RATES
#
# [ OMEGAPD ] [ -2 -4 SINCDUZ +0 ] [ -DELGMBZ ]
# [ ] [ ] [ ]
# [ OMEGAQD ] = [ +0 -8 COSCDUZ COSCDUX -4 SINCDUX ] [ -DELGMBY ]
# [ ] [ ] [ ]
# [ OMEGARD ] [ +0 +8 COSCDUZ SINCDUX -4 COSCDUX ] [ -DELGMBZ ]
#
# ATTITUDE ANGLE RATES IN UNITS OF PI/4 RAD/SEC = K TRIG FCNS IN UNITS OF 2 X GIMBAL ANGLE RATES IN UNITS OF
# PI/2 RAD/SEC. THE CONSTANTS ARE BASED ON DELGMB BEING THE GIMBAL ANGLE CHANGES IN UNITS OF PI RADIANS,
# AND 2 SECONDS BEING THE COMPUTATION PERIOD (THE PERIOD BETWEEN SUCCESSIVE PASSES THRU FINDCDUW).
CS -DELGMB
TS OMEGAPD
CS -DELGMB +1
EXTEND
MP SINCDUZ
DDOUBL
ADS OMEGAPD
ADS OMEGAPD
CS -DELGMB +1
EXTEND
MP COSCDUX
DDOUBL
EXTEND
MP COSCDUZ
TS OMEGAQD
CS -DELGMB +2
EXTEND
MP SINCDUX
ADS OMEGAQD
ADS OMEGAQD
ADS OMEGAQD
CA -DELGMB +1
EXTEND
MP SINCDUX
DDOUBL
EXTEND
MP COSCDUZ
TS OMEGARD
CS -DELGMB +2
EXTEND
MP COSCDUX
ADS OMEGARD
ADS OMEGARD
ADS OMEGARD
# Page 918
# FINAL TRANSFER
CA TWO
CDUWXFR TS TEM2
INDEX TEM2
CA -DELGMB
EXTEND
MP DT/DELT # RATIO OF DAP INTERVAL TO CDUW INTERVAL
TC ONESTO2S
INDEX TEM2
TS DELCDUX # ANGLE INTERFACE
INDEX TEM2
CCS OMEGAPD
AD ONE
TCF +2
AD ONE
EXTEND # WE NOW HAVE ABS(OMEGAPD,QD,RD)
INDEX TEM2
MP OMEGAPD
EXTEND
MP BIT11 # 1/16
EXTEND
INDEX TEM2 # 2
DV 1JACC # UNITS PI/4 RAD/SEC
TS L
CA DELERLIM
TC LIMITSUB
INDEX TEM2
TS DELPEROR # LAG ANGLE = OMEGA ABS(OMEGA)/2 ACCEL
CCS TEM2
TCF CDUWXFR
# HAUSKEEPING AND RETURN
TCQCDUW CA ECDUWUSR
TS EBANK # RETURN USER'S EBANK
TC INTPRET
SETPD GOTO
0
QCDUWUSR # NORMAL AND ABNORMAL RETURN TO USER
# Page 919
# THRUST VECTOR FILTER SUBROUTINE
FLTRSUB EXTEND
QXCH TEM2
TS TEM3 # SAVE ORIGINAL OFFSET
COM # ONE MCT, NO WDS, CAN BE SAVED IF NEG OF
AD L # ORIG OFFSET ARRIVES IN A, BUT IT'S
EXTEND # NOT WORTH THE INCREASED OBSCURITY.
INDEX NDXCDUW
MP GAINFLTR
TS L # INCR TO OFFSET, UNLIMITED
CA DUNFVLIM # SAME LIMIT FOR Y AND Z
TC LIMITSUB # YIELDS INCR TO OFFSET, LIMITED
AD TEM3 # ORIGINAL OFFSET
TS L # TOTAL OFFSET, UNLIMITED
CA UNFVLIM # SAME LIMIT FOR Y AND Z
TC LIMITSUB # YIELDS TOTAL OFFSET, LIMITED
TC TEM2
# SUBR TO TEST THE ANGLE BETWEEN THE PROPOSED WINDOW AND THRUST CMD VCTS
UNWCTEST DOT DSQ
UNX/2
DSU BMN
DOTSWFMX
DCMCL
SSP RVQ # RVQ FOR ALT CHOICE IF DOT MAGN TOO LARGE
FLAGOODW # ZEROING WINDOW GOOD FLAG
0
# Page 920
# NB2CDUSP RETURNS THE 2'S COMPLEMENT, PI, SP CDU ANGLES X,Y,Z IN MPAC,+1,+2 GIVEN THE MATRIX WHOSE ROW VECTORS
# ARE THE SEMI-UNIT NAV BASE VECTORS X,Y,X EXPRESSED IN STABLE MEMBER COORDINATES, LOCATED AT 0 IN THE PUSH LIST.
# NB2CDUSP USES THE ARCTRGSP WHICH HAS A MAXIMUM ERROR OF +-4 BITS.
NB2CDUSP DLOAD DSQ
2
BDSU BPL
DP1/4TH
+3
DLOAD
ZEROVECS # IN CASE SIN WAS SLIGHTLY > 1/2
SQRT EXIT # YIELDS COS(CDUZ) IN UNITS OF 2
EXTEND
DCA MPAC
DDOUBL
TS TEM5
TCF +3
CA POSMAX # OVERFLOW. FETCH POSMAX, MPAC ALWAYS POS
TS TEM5 # COS(CDUZ) IN TEM5, UNITS 1
INDEX FIXLOC
CA 2
LXCH MPAC
TC ARCTRGSP
TS MPAC +2 # CDUZ
CA ZERO
TC DVBYCOSM
CA FOUR
TC DVBYCOSM
CS TEM1
TC ARCTRGSP
TS MPAC +1 # CDUY
CA BIT4
TC DVBYCOSM
CA 16OCT
TC DVBYCOSM
CS TEM1
TC ARCTRGSP
TS MPAC # CDUX
TC INTPRET
RVQ
16OCT OCT 16
# Page 921
# THE ELEMENTS OF THE NAV BASE MATRIX WHICH WE MUST DIVIDE BY COS(MGA)
# ALREADY CONTAIN COS(MGA)/2 AS A FACTOR. THEREFORE THE QUOTIENT SHOULD
# ORDINARILY NEVER EXCEED 1/2 IN MAGNITUDE. BUT IF THE MGA IS NEAR PI/2
# THEN COS(MGA) IS NEAR ZERO, AND THERE MAY BE SOME CHAFF IN THE OTHER
# ELEMENTS OF THE MATRIX WHICH WOULD PRODUCE CHAOS UNDER DIVISION.
# BEFORE DIVIDING WE MAKE SURE COS(MGA) IS AT LEAST ONE BIT LARGER
# THAN THE MAGNITUDE OF THE HIGH ORDER PART OF THE OPERAND.
#
# IF ONE OR MORE DIVIDES CANNOT BE PERFORMED, THIS MEANS THAT THE
# REQUIRED MGA IS VERY NEARLY +-PI/2 AND THEREFORE THE OTHER GIMBAL
# ANGLES ARE INDETERMINATE. THE INNER AND OUTER GIMBAL ANGLES RETURNED
# IN THIS CASE WILL BE RANDOM MULTIPLES OF PI/2.
DVBYCOSM AD FIXLOC
TS ADDRWD # ADRES OF OPERAND
INDEX ADDRWD # FETCH NEG ABS OF OPERAND, AD TEM5, AND
CA 0 # SKIP DIVIDE IF RESULT NEG OR ZERO
EXTEND
BZMF +2
COM
AD TEM5 # C(A) ZERO OR NEG, C(TEM5) ZERO OR POS
EXTEND
BZMF TSL&TCQ # DIFFERENCE ALWAYS SMALL IF BRANCH
EXTEND # TEM5 EXCEEDS ABS HIGH ORDER PART OF
INDEX ADDRWD # OPERAND BY AT LEAST ONE BIT.
DCA 0 # THEREFORE IT EXCEEDS THE DP OPERAND
EXTEND # AND DIVISION WILL ALWAYS SUCCEED.
DV TEM5
TSL&TCQ TS L
LXCH TEM1
TC Q
# Page 922
# ARCTRGSP RETURNS THE 2'S COMPLEMENT, PI, SP ANGLE IN THE A REGISTER GIVEN ITS SINE IN A AND ITS COSINE IN L IN
# UNITS OF 2. THE RESULT IS AN UNAMBIGUOUS ANGLE ANYWHERE IN THE CIRCLE, WITH A MAXIMUM ERROR OF +-4 BITS.
# THE ERROR IS PRODUCED BY THE SUBROUTINE SPARCSIN WHICH IS USED ONLY IN THE REGION +-45 DEGREES.
ARCTRGSP EXTEND
BZF SINZERO # TO AVOID DIVIDING BY ZERO
EXTEND
QXCH TEM4
TS TEM2
CA L
TS TEM3
CA ZERO
EXTEND
DV TEM2
EXTEND
BZF USECOS
CCS TEM3 # SIN IS SMALLER OR EQUAL
CA ZERO
TCF +4
CS TEM2 # IF COS NEG, REVERSE SIGN OF SIN,
TS TEM2 # ANGLE = PI-ARCSIN(SIN)
CA NEGMAX # PICK UP PI, 2'S COMPLEMENT
TS TEM3 # WE NO LONGER NEED COS
CA TEM2
TC SPARCSIN -1
TC ONESTO2S
EXTEND
MSU TEM3
1TO2&TCQ TC ONESTO2S
TC TEM4
USECOS CS TEM3 # COS IS SMALLER
TC SPARCSIN -1 # ANGLE = SIGN(SIN)(FI/2-ARCSIN(COS))
AD HALF
TS TEM3 # WE NO LONGER NEED COS
CCS TEM2
CA TEM3
TCF 1TO2&TCQ
CS TEM3
TCF 1TO2&TCQ
SINZERO CCS L
CA ZERO
TC Q
CA NEGMAX # PI, 2'S COMP
TC Q
# Page 923
# SPARCSIN TAKES AN ARGUMENT SCALED UNITY IN A AND RETURNS AN ANGLE SCALED
# 180 DEGREES IN A. IT HAS BEEN UNIT TESTED IN THE REGION +-.94 (+-70
# DEGREES) AND THE MAXIMUM ERROR IS +-5 BITS WITH AN AVERAGE TIME OF
# 450 MICROSECONDS. SPARCSIN -1 TAKES THE ARGUMENT SCALED TWO. (BOB CRISP)
DOUBLE
SPARCSIN TS SR
TCF +4
INDEX A
CS LIMITS
TS SR
EXTEND
MP A
TS TEM1
EXTEND
MP DPL9
AD DPL7
EXTEND
MP TEM1
AD DPL5
EXTEND
MP TEM1
AD DPL3
EXTEND
MP TEM1
AD DPL1
EXTEND
MP SR
TC Q
DPL1 DEC 10502
DPL3 DEC 432
DPL5 DEC 7300
DPL7 DEC -11803
DPL9 DEC 8397
# Page 924
# LIMITSUB LIMITS THE MAGNITUDE OF THE POSITIVE OR NEGATIVE VARIABLE
# ARRIVING IN L TO THE POSITIVE LIMIT ARRIVING IN A.
# THE SIGNED LIMITED VARIABLE IS RETURNED IN A.
#
# VERSION COUTESY HUGH BLAIR-SMITH
LIMITSUB TS TEM1
CA ZERO
EXTEND
DV TEM1
CCS A
LXCH TEM1
TCF +2
TCF +3
CA L
TC Q
CS TEM1
TC Q
# SUBROUTINE TO CONVERT 1'S COMP SP TO 2'S COMP
ONESTO2S CCS A
AD ONE
TC Q
CS A
TC Q
# NO ATTITUDE CONTROL
NOATTCNT TC ALARM
OCT 00402 # NO ATTITUDE CONTROL
+2 INHINT # COME HERE FOR NOATTCNT WITHOUT ALARM
TC IBNKCALL # RELINT AT TC INTPRET AFTER TCQCDUW
FCADR STOPRATE
TCF TCQCDUW # RETURN TO USER SKIPPING AUTOPILOT CMDS
# MIDDLE GIMBAL ANGLE ALARM
ALARMMGA TC ALARM
OCT 00401
TCF MGARET
# Page 925
#******************************************************************
# CONSTANTS
#******************************************************************
# ADDRESS CONSTANTS
ECDUWL ECADR ECDUW
# THRUST DIRECTION FILTER CONSTANTS
GAINFLTR DEC .2 # GAIN FILTER SANS CSM
DEC .1 # GAIN FILTER WITH CSM
DUNFVLIM DEC .007 B-1 # 7 MR MAX CHG IN F DIR IN VEH IN 2 SECS.
# THIS DOES NOT ALLOW FOR S/C ROT RATE.
UNFVLIM DEC .129 B-1 # 129 MR MAX THRUST OFFSET. 105 MR TRAVEL
# +10MR DEFL+5MR MECH MOUNT+9MR ABLATION.
# CONSTANT RELATED TO GIMBAL ANGLE COMPUTATIONS
DOTSWFMX DEC .93302 B-4 # LIM COLNRTY OF UNWC/2 & UNFC/2 TO 85 DEG
# LOWER PART COMES FROM NEXT CONSTANT
DAXMAX DEC .11111111111 # DELATTX LIM TO 20 DEG IN 2 SECS, 1'S, PI
DEC .0111111111 # 2 DEG WHEN CSM DOCKED
DAY/2MAX DEC .05555555555 # LIKEWISE FOR DELATTY
DEC .0055555555
DAZMAX = DAXMAX # LIKEWISE FOR DELATTZ
CDUZDLIM DEC .3888888888 # 70 DEG LIMIT FOR MGA, 1'S, PI
# CONSTANTS FOR DATA TRANSFER
DT/DELT DEC .05 # .1 SEC/2 SEC WHICH IS THE AUTOPILOT
# CONTROL SAMPLE PERIOD/COMPUTATION PERIOD
DELERLIM = DAY/2MAX # 0 DEG LIMIT FOR LAG ANGLES, 1'S, PI
# *** END OF FLY .132 ***

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
# Copyright: Public domain.
# Filename: XXXXXXXX.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: XXXX-XXXX
# Mod history: 2009-05-XX XXX Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969

View File

@ -0,0 +1,362 @@
# Copyright: Public domain.
# Filename: IMU_PERFORMANCE_TESTS_4.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 382-389
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 382
# PROGRAM -- IMU PERFORMANCE TESTS 4
# DATE -- NOV 15, 1966
# BY -- GEORGE SCHMIDT IL7-146 EXT 1126
# MOD NO-ZERO
#
# FUNCITONAL DESCRIPTION
#
# THIS SECTION CONSISTS OF THE FILTER FOR THE GYRO DRIFT TESTS. NO COMPASS
# IS DONE IN LEM. FOR A DESCRIPTION OF THE FILTER SEE E-1973. THIS
# SECTION IS ENTERED FROM IMU 2. IT RETURNS THERE AT END OF TEST.
#
# EARTHR,OGC ZERO,ERTHRVSE
#
# NORMAL EXIT
#
# LENGTHOT GOES TO ZERO -- RETURN TO IMU PERF TESTS 2 CONTROL
#
# ALARMS
#
# 1600 OVERFLOW IN DRIFT TEST
# 1601 BAD IMU MODING IN ANY ROUTINE THAT USES IMUSTALL
# OUTPUT
#
# FLASHING DISPLAY OF RESULTS -- CONTROLLED IN IMU PERF TESTS 2
#
# DEBRIS
#
# ALL CENTRALS -- ALL OF EBANK XSM
# Page 383
BANK 33
SETLOC IMU4
BANK
COUNT* $$/P07
EBANK= XSM
ESTIMS INHINT
CAE 1SECXT
TC TWIDDLE
EBANK= XSM
ADRES ALLOOP
CAF ZERO # ZERO THE PIPAS
TS PIPAX
TS PIPAY
TS PIPAZ
RELINT
CA 77DECML
TS ZERONDX
CA ALXXXZ
TC ZEROING
TC INTPRET
SLOAD
SCHZEROS
STOVL GCOMPSW -1
INTVAL +2
STOVL ALX1S
SCHZEROS
STORE DELVX
STORE GCOMP
SLOAD
TORQNDX
DCOMP BMN
VERTSKIP
CALL
ERTHRVSE
VERTSKIP EXIT
TC SLEEPIE +1
# Page 384
ALLOOP CA OVFLOWCK
EXTEND
BZF +2
TC TASKOVER
CCS ALTIM
CA A # SHOULD NEVER HIT THIS LOCATION
TS ALTIMS
CS A
TS ALTIM
CS ONE
AD GEOCOMPS
EXTEND
BZF +4
CA LENGTHOT
EXTEND
BZMF +5
CAE 1SECXT
TC TWIDDLE
EBANK= XSM
ADRES ALLOOP
CAF ZERO
XCH PIPAX
TS DELVX
CAF ZERO
XCH PIPAY
TS DELVY
CAF ZERO
XCH PIPAZ
TS DELVZ
SPECSTS CAF PRIO20
TC FINDVAC
EBANK= XSM
2CADR ALFLT # START THE JOB
TC TASKOVER
# Page 385
ALFLT CCS GEOCOMPS
TC +2
TC NORMLOP
TC BANKCALL
CADR 1/PIPA
NORMLOP TC INTPRET
DLOAD
INTVAL
STOVL S1
DELVX
VXM VSL1
XSM
DLOAD DCOMP
MPAC +3
STODL DPIPAY
MPAC +5
STORE DPIPAZ
SETPD AXT,1
0
8D
SLOAD DCOMP
GEOCOMPS
BMN
PERFERAS
ALCGKK SLOAD BMN
ALTIMS
ALFLT3
ALKCG AXT,2 LXA,1 # LOADS SLOPES AND TIME CONSTANTS AT RQST
12D
ALX1S
ALKCG2 DLOAD* INCR,1
ALFDK +144D,1
DEC -2
STORE ALDK +10D,2
TIX,2 SXA,1
ALKCG2
ALX1S
ALFLT3 AXT,1
8D
DELMLP DLOAD* DMP
DPIPAY +8D,1
PIPASC
SLR BDSU*
9D
INTY +8D,1
STORE INTY +8D,1
PDDL DMP*
VELSC
# Page 386
VLAUN +8D,1
SL2R
DSU STADR
STORE DELM +8D,1
STORE DELM +10D,1
TIX,1 AXT,2
DELMLP
4
ALILP DLOAD* DMPR*
ALK +4,2
ALDK +4,2
STORE ALK +4,2
TIX,2 AXT,2
ALILP
8D
ALKLP LXC,1 SXA,1
CMPX1
CMPX1
DLOAD* DMPR*
ALK +1,1
DELM +8D,2
DAD*
INTY +8D,2
STORE INTY +8D,2
DLOAD* DAD*
ALK +12D,2
ALDK +12D,2
STORE ALK +12D,2
DMPR* DAD*
DELM +8D,2
INTY +16D,2
STORE INTY +16D,2
DLOAD* DMP*
ALSK +1,1
DELM +8D,2
SL1R DAD*
VLAUN +8D,2
STORE VLAUN +8D,2
TIX,2 AXT,1
ALKLP
8D
LOOSE DLOAD* PDDL*
ACCWD +8D,1
VLAUN +8D,1
PDDL* VDEF
POSNV +8D,1
MXV VSL1
TRANSM1
# Page 387
DLOAD
MPAC
STORE POSNV +8D,1
DLOAD
MPAC +3
STORE VLAUN +8D,1
DLOAD
MPAC +5
STORE ACCWD +8D,1
TIX,1
LOOSE
AXT,2 AXT,1 # EVALUATE SINES AND COSINES
6
2
BOOP DLOAD* DMPR
ANGX +2,1
GEORGEJ
SR2R
PUSH SIN
SL3R XAD,1
X1
STORE 16D,2
DLOAD
COS
STORE 22D,2 # COSINES
TIX,2
BOOP
PERFERAS EXIT
CA EBANK7
TS EBANK
EBANK= ATIGINC
TC ATIGINC # GOTO ERASABLE TO CALCULATE ONLY TO RETN
# CAUTION
#
# THE ERASABLE PROGRAM THAT DOES THE CALCULATIONS MUST BE LOADED
# BEFORE ANY ATTEMPT IS MAKE TO RUN THE IMU PERFORMANCE TEST
EBANK= AZIMUTH
CCS LENGTHOT
TC SLEEPIE
CCS TORQNDX
TCF +2
TC SETUPER1
CA CDUX
TS LOSVEC +1 # FOR TROUBLESHOOTING VD POSNS 2$4
# Page 388
SETUPER1 TC INTPRET
DLOAD PDDL # ANGLES FROM DRIFT TEST ONLY
ANGZ
ANGY
PDDL VDEF
ANGX
VCOMP VXSC
GEORGEJ
MXV VSR1
XSM
STORE OGC
EXIT
CA OGCPL
TC BANKCALL
CADR IMUPULSE
TC IMUSLLLG
GEOSTRT4 CCS TORQNDX # ONLY POSITIVE IF IN VERTICAL DRIFT TEST
TC VALMIS
TC INTPRET
CALL
ERTHRVSE
EXIT
TC TORQUE
SLEEPIE TS LENGTHOT # TEST NOT OVER-DECREMENT LENGTHOT
CCS TORQNDX # ARE WE DOING VERTDRIFT
TC EARTHR*
TC ENDOFJOB
SOMEERRR CA EBANK5
TS EBANK
CA ONE
TS OVFLOWCK # STOP ALLOOP FROM CALLING ITSELF
TC ALARM
OCT 1600
TC ENDTEST1
SOMERR2 CAF OCT1601
TC VARALARM
TC DOWNFLAG
ADRES IMUSE
TC ENDOFJOB
OCT1601 OCT 01601
DEC585 OCT 06200 # 3200 B+14 ORDER IS IMPORTANT
SCHZEROS 2DEC .00000000
# Page 389
2DEC .00000000
OCT 00000
ONEDPP OCT 00000 # ORDER IS IMPORTANT
OCT 00001
INTVAL OCT 4
OCT 2
DEC 144
DEC -1
SOUPLY 2DEC .93505870 # INITIAL GAINS FOR PIP OUTPUTS
2DEC .26266423 # INITIAL GAINS/4 FOR ERECTION ANGLES
77DECML DEC 77
ALXXXZ GENADR ALX1S -1
PIPASC 2DEC .13055869
VELSC 2DEC -.52223476 # 512/980.402
ALSK 2DEC .17329931 # SSWAY VEL GAIN X 980.402/4096
2DEC -.00835370 # SSWAY ACCEL GAIN X 980.402/4096
GEORGEJ 2DEC .63661977
GEORGEK 2DEC .59737013

View File

@ -0,0 +1,421 @@
# Copyright: Public domain.
# Filename: IMU_PERFORMANCE_TEST_2.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 373-381
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 373
# NAME -- IMU PERFORMANCE TESTS 2
#
# DATE -- MARCH 20, 1967
#
# BY -- SYSTEM TEST GROUP 864-6900 EXT. 1274
#
# MODNO. -- ZERO
#
# FUNCTIONAL DESCRIPTION
#
# POSITIONING ROUTINES FOR THE IMU PERFORMANCE TESTS AS WELL AS SOME OF
# THE TESTS THEMSELVES. FOR A DESCRIPTION OF THESE SUBROUTINES AND THE
# OPERATING PROCEDURES (TYPICALLY) SEE STG MEMO 685. THEORETICAL REF. E-1973
BANK 33
SETLOC IMU2
BANK
EBANK= POSITON
COUNT* $$/P07
REDO TC NEWMODEX
MM 07
GEOIMUTT TC IMUZERR
IMUBACK CA ZERO
TS NDXCTR
TS TORQNDX
TS TORQNDX +1
TS OVFLOWCK
NBPOSPL CA DEC17
TS ZERONDX
CA XNBADR
TC ZEROING
CA HALF
TS XNB
GUESS TC INTPRET
LATAZCHK DLOAD SL2
LATITUDE
STODL DSPTEM1 +1
AZIMUTH
RTB EXIT
1STO2S
XCH MPAC
TS DSPTEM1
CAF VN0641
TC BANKCALL
CADR GOFLASH
TC ENDTEST1
TC +2
TC -5
# Page 374
TC INTPRET
SLOAD RTB
DSPTEM1
CDULOGIC
STORE AZIMUTH
SLOAD SR2
DSPTEM1 +1
STORE LATITUDE
COS DCOMP
SL1
STODL WANGI
LATITUDE
SIN SL1
STODL WANGO
AZIMUTH
PUSH SIN
STORE YNB +2
STODL ZNB +4
COS
STORE YNB +4
DCOMP
POSGMBL STCALL ZNB +2
CALCGA
EXIT
TC BANKCALL
CADR IMUCOARS
CAF BIT14 # IF BIT14 SET, GIMBAL LOCK
MASK FLAGWRD3
EXTEND
BZF +2
INCR NDXCTR # +1 IF IN GIMBAL LOCK, OTHERWISE 0
TC DOWNFLAG
ADRES GLOKFAIL # RESET GIMBAL LOCK FLAG
TC IMUSLLLG
CCS NDXCTR # IF ONE GO AND DO A PIPA TEST ONLY
TC PIPACHK # ALIGN AND MEASURE VERTICAL PIPA RATE
TC FINIMUDD
EXTEND
DCA PERFDLAY
TC LONGCALL # DELAY WHILE SUSPENSION STABILIZES
EBANK= POSITON
2CADR GOESTIMS
CA ESTICADR
TC JOBSLEEP
GOESTIMS CA ESTICADR
TC JOBWAKE
TC TASKOVER
ESTICADR CADR ESTIMS
TORQUE CA ZERO
# Page 375
TS DSPTEM2
CA DRIFTI
TS DSPTEM2 +1
INDEX POSITON
TS SOUTHDR -1
TC SHOW
PIPACHK INDEX NDXCTR # PIPA TEST
TC +1
TC EARTHR*
CA DEC17 # ALLOW PIP COUNTER TO OVERFLOW 17 TIMES
TS DATAPL +4 # IN THE ALLOTTED TIME INTERVAL
CA DEC58
TS LENGTHOT
CA ONE
TS RESULTCT
CA ZERO
INDEX PIPINDEX
TS PIPAX
TS DATAPL
TC CHECKG
INHINT
CAF TWO
TC TWIDDLE
EBANK= XSM
ADRES PIPATASK
TC ENDOFJOB
PIPATASK EXTEND
DIM LENGTHOT
CA LENGTHOT
EXTEND
BZMF STARTPIP
CAF BIT10
TC TWIDDLE
EBANK= XSM
ADRES PIPATASK
STARTPIP CAF PRIO20
TC FINDVAC
EBANK= XSM
2CADR PIPJOBB
TC TASKOVER
PIPJOBB INDEX NDXCTR
TC +1
TC EARTHR*
CA LENGTHOT
# Page 376
EXTEND
BZMF +2
TC ENDOFJOB
CA FIVE
TS RESULTCT
TC CHECKG
CCS DATAPL +1
TC +4
TC CCSHOLE
CS DATAPL +4
TS DATAPL +4
EXTEND
DCS DATAPL
DAS DATAPL +4
TC INTPRET
DLOAD DSU
DATAPL +6
DATAPL +2
BPL CALL
AINGOTN
OVERFFIX
AINGOTN PDDL DDV
DATAPL +4
DMPR RTB
DEC585 # DEC585 HAS BEEN REDEFINED FOR LEM
SGNAGREE
STORE DSPTEM2
EXIT
CCS NDXCTR
TC COAALIGN # TAKE PLATFORM OUT OF GIMBAL LOCK
TC SHOW
VERTDRFT CA 3990DEC # ABOUT 1 HOUR VERTICAL DRIFT TEST
TS LENGTHOT
INDEX POSITON
CS SOUTHDR -2
TS DRIFTT
CCS PIPINDEX # OFFSET PLATFORM TO MISS PIP DEAD-ZONES
TCF PON4 # Z-UP IN POS 4
PON2 CS BIT5 # X-UP
ADS ERCOMP +2
CA BIT5
ADS ERCOMP +4
TCF PON
PON4 CS BIT5
ADS ERCOMP +2
CA BIT5
ADS ERCOMP
PON TC EARTHR*
# Page 377
CA ZERO # ALLOW ONLY SOUTH GYRO EARTH RATE COMPENS
TS ERVECTOR
TS ERVECTOR +1
GUESS1 CAF POSMAX
TS TORQNDX
TS TORQNDX +1
CA CDUX
TS LOSVEC
TC ESTIMS
VALMIS CA DRIFTO
TS DSPTEM2 +1
CA ZERO
TS DSPTEM2
TC SHOW
ENDTEST1 TC DOWNFLAG
ADRES IMUSE
CS ZERO
TC NEWMODEA
TC ENDEXT
# Page 378
OVERFFIX DAD DAD
DPPOSMAX
ONEDPP
RVQ
COAALIGN EXTEND # COARSE ALIGN SUBROUTINE
QXCH ZERONDX
CA ZERO
TS THETAD
TS THETAD +1
TS THETAD +2
TC BANKCALL
CADR IMUCOARS
ALIGNCOA TC BANKCALL
CADR IMUSTALL
TC SOMERR2
TC ZERONDX
IMUSLLLG EXTEND
QXCH ZERONDX
TC ALIGNCOA
FINIMUDD EXTEND
QXCH ZERONDX
TC BANKCALL
CADR IMUFINE
TC ALIGNCOA
IMUZERR EXTEND
QXCH ZERONDX
TC BANKCALL
CADR IMUZERO
TC ALIGNCOA
CHECKG EXTEND # PIP PULSE CATCHING ROUTINE
QXCH QPLACE
TC +6
CHECKG1 RELINT
CA NEWJOB
EXTEND
BZMF +6
TC CHANG1
INHINT
INDEX PIPINDEX
CS PIPAX
TS ZERONDX
INHINT
# Page 379
INDEX PIPINDEX
CA PIPAX
AD ZERONDX
EXTEND
BZF CHECKG1
INDEX PIPINDEX
CA PIPAX
INDEX RESULTCT
TS DATAPL
TC FINETIME
INDEX RESULTCT
TS DATAPL +1
INDEX RESULTCT
LXCH DATAPL +2
RELINT
ENDCHKG TC QPLACE
ZEROING TS L
TCF +2
ZEROING1 TS ZERONDX
CAF ZERO
INDEX L
TS 0
INCR L
CCS ZERONDX
TCF ZEROING1
TC Q
# Page 380
ERTHRVSE DLOAD PDDL
SCHZEROS # PD24 = (SIN -COS 0)(OMEG/MS)
LATITUDE
COS DCOMP
PDDL SIN
LATITUDE
VDEF VXSC
OMEG/MS
STORE ERVECTOR
RTB
LOADTIME
STOVL TMARK
SCHZEROS
STORE ERCOMP
RVQ
EARTHR ITA RTB
S2
LOADTIME
STORE TEMPTIME
DSU BPL
TMARK
ERTHR
CALL
OVERFFIX
ERTHR SL VXSC
9D
ERVECTOR
MXV VAD
XSM
ERCOMP
STODL ERCOMP
TEMPTIME
STORE TMARK
AXT,1 RTB
ECADR ERCOMP
PULSEIMU
GOTO
S2
EARTHR* EXTEND
QXCH QPLACES
TC INTPRET
CALL
EARTHR
EXIT
TC IMUSLLLG
TC QPLACES
SHOW EXTEND
# Page 381
QXCH QPLACE
SHOW1 CA POSITON
TS DSPTEM2 +2
CA VB06N98
TC BANKCALL
CADR GOFLASH
TC ENDTEST1 # V34
TC QPLACE # V33
TCF SHOW1
3990DEC DEC 3990
VB06N98 VN 0698
VN0641 VN 0641
DEC17 = ND1
DEC58 DEC 58
OGCPL ECADR OGC
1SECX = 1SEC
XNBADR GENADR XNB
XSMADR GENADR XSM
BLOCK 2
COUNT* $$/P07
FINETIME INHINT # RETURNS WITH INTERRUPT INHIBITED
EXTEND
READ LOSCALAR
TS L
EXTEND
RXOR LOSCALAR
EXTEND
BZF +4
EXTEND
READ LOSCALAR
TS L
+4 CS POSMAX
AD L
EXTEND
BZF FINETIME +1
EXTEND
READ HISCALAR
TC Q

View File

@ -0,0 +1,224 @@
# Copyright: Public domain.
# Filename: INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.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: 0054-0060
# Mod history: 2009-05-14 OH Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 54
# *** CHANNEL DESCRIPTION WORDS ARE ALLOCATED IN ERASABLE ASSIGNMENTS ***
# CHANNEL 1 IDENTICAL TO COMPUTER REGISTER L (0001)
# CHANNEL 2 IDENTICAL TO COMPUTER REGISTER Q (0002)
# CHANNEL 3 HISCALAR: INPUT CHANNEL; MOST SIGNIFICANT 14 BITS FROM 33 STAGE BINARY COUNTER. SCALE
# FACTOR IS B23 IN CSEC, SO MAX VALUE ABOUT 23.3 HOURS AND LEAST SIGNIFICANT BIT 5.12 SECS.
# CHANNEL 4 LOSCALAR: INPUT CHANNEL; NEXT MOST SIGNIFICANT 14 BITS FROM THE 33 STAGE BINARY COUNTER
# ASSOCIATED WITH CHANNEL 3. SCALE FACTOR IS B9 IN CSEC. SO MAX VAL IS 5.12 SEC AND LEAST
# SIGNIFICANT BIT IS 1/3200 SEC. SCALE FACTOR OF D.P. WORD WITH CHANNEL 3 IS B23 CSEC.
# CHANNEL 5 PYJETS: OUTPUT CHANNEL; PITCH RCS JET CONTROL. (REACTION CONTROL SYSTEM) USES BITS 1-8.
# CHANNEL 6 ROLLJETS: OUTPUT CHANNEL; ROLL RCS JET CONTROL. (REACTION CONTROL SYSTEM) USES BIT 1-8.
# CHANNEL 7 SUPERBNK: OUTPUT CHANNEL; NOT RESET BY RESTART; FIXED EXTENSION BITS USED TO SELECT THE
# APPROPRIATE FIXED MEMORY BANK IF FBANK IS 30 OCTAL OR MORE. USES BITS 5-7.
# CHANNEL 10 OUT0: OUTPUT CHANNEL; REGISTER USED TO TRANSMIT LATCHING-RELAY DRIVING INFORMATION FOR
# THE DISPLAY SYSTEM. BITS 15-12 ARE SET TO THE ROW NUMBER (1-14 OCTAL) OF THE RELAY TO BE
# CHANGED AND BITS 11-1 CONTAIN THE REQUIRED SETTINGS FOR THE RELAYS IN THE ROW.
# CHANNEL 11 DSALMOUT: OUTPUT CHANNEL; REGISTER WHOSE BITS ARE USED FOR ENGINE ON-OFF CONTROL AND TO
# DRIVE INDIVIDUAL INDICATORS OF THE DISPLAY SYSTEM. BITS 1-7 ARE A RELAYS.
#
# BIT 1 ISS WARNING
# BIT 2 LIGHT COMPUTER ACTIVITY LAMP
# BIT 3 LIGHT UPLINK ACTIVITY LAMP
# BIT 4 LIGHT TEMP CAUTION LAMP
# BIT 5 LIGHT KEYBOARD RELEASE LAMP
# BIT 6 FLASH VERB AND NOUN LAMPS
# BIT 7 LIGHT OPERATOR ERROR LAMP
# Page 55
# BIT 8 SPARE
# BIT 9 TEST CONNECTOR OUTBIT
# BIT 10 CAUTION RESET
# BIT 11 SPARE
# BIT 12 SPARE
# BIT 13 ENGINE ON
# BIT 14 ENGINE OFF
# BIT 15 SPARE
# CHANNEL 12 CHAN12: OUTPUT CHANNEL; BITS USED TO DRIVE NAVIGATION AND SPACECRAFT HARDWARE.
#
# BIT 1 ZERO RR CDU; CDU'S GIVE RRADAR INFORMATION FOR LM
# BIT 2 ENABLE CDU RADAR ERROR COUNTERS
# BIT 3 NOT USED
# BIT 4 COARSE ALIGN ENABLE OF IMU
# BIT 5 ZERO IMU CDU'S
# BIT 6 ENABLE IMU ERROR COUNTER, CDU ERROR COUNTER.
# BIT 7 SPARE
# BIT 8 DISPLAY INERTIAL DATA
# BIT 9 -PITCH GIMBAL TRIM (BELL MOTION) DESCENT ENGINE
# BIT 10 +PITCH GIMBAL TRIM (BELL MOTION) DESCENT ENGINE
# BIT 11 -ROLL GIMBAL TRIM (BELL MOTION) DESCENT ENGINE
# BIT 12 +ROLL GIMBAL TRIM (BELL MOTION) DESCENT ENGINE
# BIT 13 LR POSITION 2 COMMAND
# BIT 14 ENABLE RENDEZVOUS RADAR LOCK-ON; AUTO ANGLE TRACK'G
# BIT 15 ISS TURN ON DELAY COMPLETE
# Page 56
# CHANNEL 13 CHAN13: OUTPUT CHANNEL.
#
# BIT 1 RADAR C PROPER SETTING OF THE A,B,C MATRIX
# BIT 2 RADAR B SELECTS CERTAIN RADAR
# BIT 3 RADAR A PARAMETERS TO BE READ.
# BIT 4 RADAR ACTIVITY
# BIT 5 NOT USED (CONNECTS AN ALTERNATE INPUT TO UPLINK)
# BIT 6 BLOCK INPUTS TO UPLINK CELL
# BIT 7 DOWNLINK TELEMETRY WORD ORDER CODE BIT
# BIT 8 RHC COUNTER ENABLE (READ HAND CONTROLLER ANGLES)
# BIT 9 START RHC READ INTO COUNTERS IS BIT 8 SET
# BIT 10 TEST ALARMS, TEST DSKY LIGHTS
# BIT 11 ENABLE STANDBY
# BIT 12 RESET TRAP 31-A ALWAYS APPEAR TO BE SET TO 0
# BIT 13 RESET TRAP 31-B ALWAYS APPEAR TO BE SET TO 0
# BIT 14 RESET TRAP 32 ALWAYS APPEAR TO BE SET TO 0
# BIT 15 ENABLE T6 RUPT
# CHANNEL 14 CHAN14: OUTPUT CHANNEL; USED TO CONTROL COMPUTER COUNTER CELLS (CDU, GYRO, SPACECRAFT FUNC).
#
# BIT 1 OUTLINK ACTIVITY (NOT USED)
# BIT 2 ALTITUDE RATE OR ALTITUDE SELECTOR
# BIT 3 ALTITUDE METER ACTIVITY
# BIT 4 THRUST DRIVE ACTIVITY FOR DESCENT ENGINE
# BIT 5 SPARE
# BIT 6 GYRO ENABLE POWER FOR PULSES
# BIT 7 GYRO SELECT B PAIR OF BITS IDENTIFIES AXIS OF
# BIT 8 GYRO SELECT A GYRO SYSTEM TO BE TORQUED.
# BIT 9 GYRO TORQUING COMMAND IN NEGATIVE DIRECTION.
# Page 57
# BIT 10 GYRO ACTIVITY
# BIT 11 DRIVE CDU S
# BIT 12 DRIVE CDU T
# BIT 13 DRIVE CDU Z
# BIT 14 DRIVE CDU Y
# BIT 15 DRIVE CDU X
# CHANNEL 15 MNKEYIN: INPUT CHANNEL; KEY CODE INPUT FROM KEYBOARD OF DSKY, SENSED BY PROGRAM WHEN
# PROGRAM INTERRUPT #5 IS RECEIVED. USED BITS 5-1
# CHANNEL 16 NAVKEYIN: INPUT CHANNEL; OPTICS MARK INFORMATION AND NAVIGATION PANEL DSKY (CM) OR THRUST
# CONTROL (LM) SENSED BY PROGRAM THEN PROGRAM INTERRUPT #6 IS RECEIVED. USES BITS 3-7 ONLY.
#
# BIT 1 NOT ASSIGNED
# BIT 2 NOT ASSIGNED
# BIT 3 OPTICS X-AXIS MARK SIGNAL FOR ALIGN OPTICAL TSCOPE
# BIT 4 OPTICS Y-AXIS MARK SIGNAL FOR AOT
# BIT 5 OPTICS MARK REJECT SIGNAL
# BIT 6 DESCENT+ ; CREW DESIRED SLOWING RATE OF DESCENT
# BIT 7 DESCENT- ; CREW DESIRED SPEEDING UP RATE OF D'CENT
# NOTE: ALL BITS IN CHANNELS 30-33 ARE INVERTED AS SENSED BY THE PROGRAM, SO THAT A VALUE OF ZERO MEANS
# THAT THE INDICATED SIGNAL IS PRESENT.
# CHANNEL 30 INPUT CHANNEL
#
# BIT 1 ABORT WITH DESCENT STAGE
# BIT 2 UNUSED
# BIT 3 ENGINE ARMED SIGNAL
# BIT 4 ABORT WITH ASCENT ENGINE STAGE
# BIT 5 AUTO THROTTLE; COMPUTER CONTROL OF DESCENT ENGINE
# Page 58
# BIT 6 DISPLAY INERTIAL DATA
# BIT 7 RR CDU FAIL
# BIT 8 SPARE
# BIT 9 IMU OPERATE WITH NO MALFUNCTION
# BIT 10 LM COMPUTER (NOT AGS) HAS CONTROL OF LM.
# BIT 11 IMU CAGE COMMAND TO DRIVE IMU GIMBAL ANGLES TO 0.
# BIT 12 IMU CDU FAIL (MALFUNCTION OF IMU CDU,S)
# BIT 13 IMU FAIL (MALFUCTION OF IMU STABILIZATION LOOPS)
# BIT 14 ISS TURN ON REQUESTED
# BIT 15 TEMPERATURE OF STABLE MEMBER WITHIN DESIGN LIMITS
# CHANNEL 31 INPUT CHANNEL; BITS ASSOCIATED WITH THE ATTITUDE CONTROLLER, TRANSLATIONAL CONTROLLER,
# AND SPACECRAFT ATTITUDE CONTROL; USED BY RCS DAP.
#
# BIT 1 ROTATION (BY RHC) COMMANDED IN POSITIVE PITCH DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.
# ALSO POSITIVE ELEVATION CHANGE FOR LANDING POINT DESIGNATOR
# BIT 2 AS BIT 1 EXCEPT NEGATIVE PITCH AND ELEVATION.
# BIT 3 ROTATION (BY RHC) COMMANDED IN POSITIVE YAW DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.
# BIT 4 AS BIT 3 EXCEPT NEGATIVE YAW
# BIT 5 ROTATION (BY RHC) COMMANDED IN POSITIVE ROLL DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.
# ALSO POSITIVE AZIMUTH CHANGE FOR LANDING POINT DESIGNATOR.
# BIT 6 AS BIT 5 EXCEPT NEGATIVE ROLL AND AZIMUTH
# BIT 7 TRANSLATION IN +X DIRECTION COMMANDED BY THC
# BIT 8 TRANSLATION IN -X DIRECTION COMMANDED BY THC
# BIT 9 TRANSLATION IN +Y DIRECTION COMMANDED BY THC
# BIT 10 TRANSLATION IN -Y DIRECTION COMMANDED BY THC
# BIT 11 TRANSLATION IN +Z DIRECTION COMMANDED BY THC
# BIT 12 TRANSLATION IN -Z DIRECTION COMMANDED BY THC
# Page 59
# BIT 13 ATTITUDE HOLD MODE ON SCS MODE CONTROL SWITCH
# BIT 14 AUTO STABILIZATION OF ATTITUDE ON SCS MODE SWITCH
# BIT 15 ATTITUDE CONTROL OUT OF DETENT (RHC NOT IN NEUTRAL)
# CHANNEL 32 INPUT CHANNEL.
#
# BIT 1 THRUSTERS 2 & 4 DISABLED BY CREW
# BIT 2 THRUSTERS 5 & 8 DISABLED BY CREW
# BIT 3 THRUSTERS 1 & 3 DISABLED BY CREW
# BIT 4 THRUSTERS 6 & 7 DISABLED BY CREW
# BIT 5 THRUSTERS 14 & 16 DISABLED BY CREW
# BIT 6 THRUSTERS 13 & 15 DISABLED BY CREW
# BIT 7 THRUSTERS 9 & 12 DISABLED BY CREW
# BIT 8 THRUSTERS 10 & 11 DISABLED BY CREW
# BIT 9 DESCENT ENGINE DISABLED BY CREW
# BIT 10 APPARENT DESCENT ENGINE GIMBAL FAILURE
# BIT 14 INDICATES PROCEED KEY IS DEPRESSED
# CHANNEL 33 CHAN33: INPUT CHANNEL; FOR HARDWARE STATUS AND COMMAND INFORMATION. BITS 15-11 ARE FLIP-
# FLOP BITS RESET BY A CHANNEL "WRITE" COMMAND THAT ARE RESET BY A RESTART & BY T4RUPT LOOP.
#
# BIT 1 SPARE
# BIT 2 RR AUTO-POWER ON
# BIT 3 RR RANGE LOW SCALE
# BIT 4 RR DATA GOOD
# BIT 5 LR RANGE DATA GOOD
# BIT 6 LR POS1
# BIT 7 LR POS2
# Page 60
# BIT 8 LR VEL DATA GOOD
# BIT 9 LR RANGE LOW SCALE
# BIT 10 BLOCK UPLINK INPUT
# BIT 11 UPLINK TOO FAST
# BIT 12 DOWNLINK TOO FAST
# BIT 13 PIPA FAIL
# BIT 14 WARNING OF REPEATED ALARMS: RESTART, COUNTER FAIL, VOLTAGE FAIL, AND SCALAR DOUBLE.
# BIT 15 LGC OSCILLATOR STOPPED
# CHANNEL 34 DNT M1: OUTPUT CHANNEL; DOWNLINK 1: FIRST OF TWO WORDS SERIALIZATION.
# CHANNEL 35 DNT M2: OUTPUT CHANNEL; DOWNLINK 2: SECOND OF TWO WORDS SERIALIZATION.

View File

@ -0,0 +1,81 @@
# Copyright: Public domain.
# Filename: INTERPRETIVE_CONSTANT.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1100-1101
# Mod history: 2009-05-25 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1100
SETLOC INTPRET1
BANK
COUNT* $$/ICONS
DP1/4TH 2DEC .25
UNITZ 2DEC 0
UNITY 2DEC 0
UNITX 2DEC .5
ZEROVECS 2DEC 0
2DEC 0
2DEC 0
DPHALF = UNITX
DPPOSMAX OCT 37777
OCT 37777
# Page 1101
# INTERPRETIVE CONSTANTS IN THE OTHER HALF-MEMORY
SETLOC INTPRET2
BANK
COUNT* $$/ICONS
ZUNIT 2DEC 0
YUNIT 2DEC 0
XUNIT 2DEC .5
ZEROVEC 2DEC 0
2DEC 0
2DEC 0
OCT 77777 # -0, -6, -12 MUST REMAIN IN THIS ORDER
DFC-6 DEC -6
DFC-12 DEC -12
LODPMAX 2OCT 3777737777 # THESE TWO CONSTANTS MUST REMAIN
LODPMAX1 2OCT 3777737777 # ADJACENT AND THE SAME FOR INTEGRATION
ZERODP = ZEROVEC
HALFDP = XUNIT

101
Luminary099/KALMAN_FILTER.s Normal file
View File

@ -0,0 +1,101 @@
# Copyright: Public domain.
# Filename: KALMAN_FILTER.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1470-1471
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1470
EBANK= NO.UJETS
BANK 16
SETLOC DAPS1
BANK
COUNT* $$/DAP
RATELOOP CA TWO
TS DAPTEMP6
DOUBLE
TS Q
INDEX DAPTEMP6
CCS TJP
TCF +2
TCF LOOPRATE
AD -100MST6
EXTEND
BZMF SMALLTJU
INDEX DAPTEMP6
CCS TJP
CA -100MST6
TCF +2
CS -100MST6
INDEX DAPTEMP6
ADS TJP
INDEX DAPTEMP6
CCS TJP
CS -100MS # 0.1 AT 1
TCF +2
CA -100MS
LOOPRATE EXTEND
INDEX DAPTEMP6
MP NO.PJETS
CA L
INDEX DAPTEMP6
TS DAPTEMP1 # SIGNED TORQUE AT 1 JET-SEC FOR FILTER
EXTEND
MP BIT10 # RESCALE TO 32; ONE BIT ABOUT 2 JET-MSEC
EXTEND
BZMF NEGTORK
STORTORK INDEX Q # INCREMENT DOWNLIST REGISTER.
ADS DOWNTORK # NOTE: NOT INITIALIZED; OVERFLOWS.
CCS DAPTEMP6
TCF RATELOOP +1
TCF ROTORQUE
SMALLTJU CA ZERO
INDEX DAPTEMP6
XCH TJP
EXTEND
# Page 1471
MP ELEVEN # 10.24 PLUS
CA L
TCF LOOPRATE
ROTORQUE CA DAPTEMP2
AD DAPTEMP3
EXTEND
MP 1JACCR
TS JETRATER
CS DAPTEMP3
AD DAPTEMP2
EXTEND
MP 1JACCQ
TS JETRATEQ
TCF BACKP
-100MST6 DEC -160
NEGTORK COM
INCR Q
TCF STORTORK

View File

@ -0,0 +1,169 @@
# Copyright: Public domain.
# Filename: LAMBERT_AIMPOINT_GUIDANCE.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 651-653
# Mod history: 2009-05-18 RSB Transcribed from Luminary 099
# page images.
# 2009-06-05 RSB Corrected 4 typos.
# 2009-06-07 RSB Fixed a typo.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 651
# GENERAL LAMBERT AIMPOINT GUIDANCE **
# WRITTEN BY RAMA M AIYAWAR
# PROGRAM P-31 DESCRIPTION **
#
# 1. TO ACCEPT TARGETING PARAMETERS OBTAINED FROM A SOURCE EXTERNAL
# TO THE LEM AND COMPUTE THERE FROM THE REQUIRED-VELOCITY AND
# OTHER INITIAL CONDITIONS REQUIRED BY LM FOR DESIRED MANEUVER.
# THE TARGETING PARAMETERS ARE TIG (TIME OF IGNITION), TARGET
# VECTOR (RTARG), AND THE TIME FROM TIG UNTIL THE TARGET IS
# REACHED (DELLT4), DESIRED TIME OF FLIGHT FROM RINIT TO RTARG.
# ASSUMPTIONS **
#
# 1. THE TARGET PARAMETERS MAY HAVE BEEN LOADED PRIOR TO THE
# EXECUTION OF THIS PROGRAM.
# 2. THIS PROGRAM IS APPLICABLE IN EITHER EARTH OR LUNAR ORBIT.
# 3. THIS PROGRAM IS DESIGNED FOR ONE-MAN OPERATION, AND SHOULD
# BE SELECTED BY THE ASTRONAUT BY DSKY ENTRY V37 E31.
# SUBROUTINES USED **
#
# MANUPARM, TTG/N35, R02BOTH, MIDGIM, DISPMGA, FLAGDOWN, BANKCALL,
# GOTOPOOH, ENDOFJOB, PHASCHNG, GOFLASHR, GOFLASH.
#
# MANUPARM CALCULATES APOGEE, PERIGEE ALTITUDES AND DELTAV DESIRED
# FOR THE MANEUVER.
#
# TTG/N35 CLOCKTASK - UPDATES CLOCK.
#
# MIDGIM CALCULATES MIDDLE GIMBAL ANGLE FOR DISPLAY.
#
# R02BOTH IMU - STATUS CHECK ROUTINE.
# DISPLAYS USED IN P-31LM **
#
# V06N33 DISPLAY SOTRED TIG (IN HRS. MINS. SECS.)
# V06N42 DISPLAY APOGEE, PERIGEE, DELTAV.
# V16N35 DISPLAY TIME FROM TIG.
# V06N45 TIME FROM IGNITION AND MIDDLE GIMBAL ANGLE.
# ERASABLE INITIALIZATION REQUIRED **
#
# TIG TIME OF IGNITION DP (B+28) CS.
#
# DELLT4 DESIRED TIME OF FLIGHT DP (B+28) CS
# FROM RINIT TO RTARG.
#
# RTARG RADIUS VECTOR OF TARGET POSITION VECTOR
# RADIUS VECTOR SCALED TO (B+29)METERS IF EARTH ORBIT
# Page 652
# RADIUS VECTOR SCALED TO (B+27)METERS IF MOON ORBIT
# OUTPUT **
#
# HAPO APOGEE ALTITUDE
# HPER PERIGEE ALTITUDE
# VGDISP MAG. OF DELTAV FOR DISPLAY, SCALING B+7 M/CS EARTH
# MAG. OF DELTAV FOR DISPLAY, SCALING B+5 M/CS MOON
# MIDGIM MIDDLE GIMBAL ANGLE
# XDELVFLG RESETS XDELVFLG FOR LAMBERT VG COMPUTATIONS
# ALARMS OR ABORTS NONE **
# RESTARTS ARE VIA GROUP 4 **
SETLOC GLM
BANK
EBANK= SUBEXIT
COUNT* $$/P31
P31 TC P20FLGON
CAF V06N33 # T16
TC VNP00H
TC INTPRET
CLEAR DLOAD
UPDATFLG
TIG
STCALL TDEC1 # INTEGRATE STATE VECTORS TO TIG
LEMPREC
VLOAD SETPD
RATT
0D
STORE RTIG
STOVL RINIT
VATT
STORE VTIG
STODL VINIT
P30ZERO
PUSH PDDL # E4 AND NUMIT = 0
DELLT4
DAD SXA,1
TIG
RTX1
STORE TPASS4
SXA,2 CALL
RTX2
INITVEL
VLOAD PUSH
# Page 653
DELVEET3
STORE DELVSIN
ABVAL CLEAR
XDELVFLG
STCALL VGDISP
GET.LVC
VLOAD PDVL
RTIG
VIPRIME
CALL
PERIAPO1
CALL
SHIFTR1
CALL # LIMIT DISPLAY TO 9999.9 N. MI.
MAXCHK
STODL HPER
4D
CALL
SHIFTR1
CALL # LIMIT DISPLAY TO 9999.9 N. MI.
MAXCHK
STORE HAPO
EXIT
CAF V06N81 # DELVLVC
TC VNP00H
CAF V06N42 # HAPO, HPER, VGDISP
TC VNP00H
TC INTPRET
REVN1645 SET CALL # TRKMKCNT, TTOGO, +MGA
FINALFLG
VN1645
GOTO
REVN1645
# *** END OF LEMP30S .103 ***

View File

@ -0,0 +1,536 @@
# Copyright: Public domain.
# Filename: LANDING_ANALOG_DISPLAYS.agc
# Purpose: Part of the source code for Luminary, build 099. It
# is part of the source code for the Lunar Module's
# (LM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 898-907
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 05/06/09 FB Transcription Batch 4 Assignment.
#
# The contents of the "Luminary099" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 001 of AGC program Luminary099 by NASA
# 2021112-061. July 14, 1969.
#
# Prepared by
# Massachussets Institute of Technology
# 75 Cambridge Parkway
# Cambridge, Massachusetts
#
# under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information. Please report any errors to info@sandroid.org.
# Page 898
BANK 21
SETLOC R10
BANK
EBANK= UNIT/R/
COUNT* $$/R10
LANDISP LXCH PIPCTR1 # UPDATE TBASE2 AND PIPCTR SIMULTANEOUSLY.
CS TIME1
DXCH TBASE2
CS FLAGWRD7 # IS LANDING ANALOG DISPLAYS FLAG SET?
MASK SWANDBIT
CCS A
TCF DISPRSET # NO.
CA IMODES33 # BIT 7 = 0 (DO ALTRATE), =1 (DO ALT.)
MASK BIT7
CCS A
TCF ALTOUT
ALTROUT TC DISINDAT # CHECK MODE SELECT SWITCH AND DIDFLG.
CS IMODES33
MASK BIT7
ADS IMODES33 # ALTERNATE ALTITUDE RATE WITH ALTITUDE.
CAF BIT2 # RATE COMMAND IS EXECUTED BEFORE RANGE.
EXTEND
WOR CHAN14 # ALTRATE (BIT2 = 1), ALTITUDE (BIT2 = 0).
ARCOMP CA RUNIT # COMPUTE ALTRATE = RUNIT.VVECT M/CS *(-6).
EXTEND
MP VVECT # MULTIPLY X-COMPONENTS.
XCH RUPTREG1 # SAVE SINGLE PRECISION RESULT M/CS*2(-6)
CA RUNIT +1 # MULTIPLY Y-COMPONENTS.
EXTEND
MP VVECT +1
ADS RUPTREG1 # ACCUMULATE PARTIAL PRODUCTS.
CA RUNIT +2 # MULTIPLY Z-COMPONENTS.
EXTEND
MP VVECT +2
ADS RUPTREG1 # ALTITUDE RATE IN M/CS *2(-6).
CA ARCONV # CONVERT ALTRATE TO BIT UNITS (.5FPS/BIT)
EXTEND
MP RUPTREG1
DDOUBL
DDOUBL
XCH RUPTREG1 # ALTITUDE RATE IN BIT UNITS*2(-14).
CA DALTRATE # ALTITUDE RATE COMPENSATION FACTOR.
EXTEND
MP DT
AD RUPTREG1
TS ALTRATE # ALTITUDE RATE IN BIT UNITS*2(-14).
CS ALTRATE
# Page 899
EXTEND # CHECK POLARITY OF ALTITUDE RATE.
BZMF +2
TCF DATAOUT # NEGATIVE -- SEND POS. PULSES TO ALTM REG.
CA ALTRATE # POSITIVE OR ZERO -- SET SIGN BIT = 1 AND
AD BIT15 # SEND TO ALTM REGISTER. *DO NOT SEND +0*
DATAOUT TS ALTM # ACTIVATE THE LANDING ANALOG DISPLAYS
CAF BIT3
EXTEND
WOR CHAN14 # BIT3 DRIVES THE ALT/ALTRATE METER.
TCF TASKOVER # EXIT
ALTOUT TC DISINDAT # CHECK MODE SELECT SWITCH AND DIDFLG.
CS BIT7
MASK IMODES33
TS IMODES33 # ALTERNATE ALTITUDE RATE WITH ALTITUDE.
CS BIT2
EXTEND
WAND CHAN14
CCS ALTBITS # = -1 IF OLD ALT. DATA TO BE EXTRAPOLATED.
TCF +4
TCF +3
TCF OLDDATA
TS ALTBITS # SET ALTBITS FROM -0 TO +0.
CS ONE
DXCH ALTBITS # SET ALTBITS = -1 FOR SWITCH USE NEXT PASS.
DXCH ALTSAVE
CA BIT10 # NEW ALTITUDE EXTRAPOLATION WITH ALTRATE.
XCH Q
LXCH 7 # ZL
CA DT
EXTEND
DV Q # RESCALE DT*2(-14) TO *2(-9) TIME IN CS.
EXTEND
MP ARTOA2 # .0021322 *2(+8)
TCF OLDDATA +1 # RATE APPLIES FOR DT CS.
ZDATA2 DXCH ALTSAVE
TCF NEWDATA
OLDDATA CA ARTOA # RATE APPLIES FOR .5 SEC. (4X/SEC. CYCLE)
EXTEND
MP ALTRATE # EXTRAPOLATE WITH ALTITUDE RATE.
DDOUBL
AD ALTSAVE +1
TS ALTSAVE +1
CAF ZERO
ADS ALTSAVE
CAF POSMAX # FORCE SIGN AGREEMENT ASSUMING A
AD ONE # NON-NEGATIVE ALTSAVE.
AD ALTSAVE +1 # IF ALTSAVE IS NEGATIVE, ZERO ALTSAVE
TS ALTSAVE +1 # AND ALTSAVE +1 AT ZERODATA.
# Page 900
CAF ZERO
AD POSMAX
AD ALTSAVE
TS ALTSAVE # POSSIBLY SKIP TO NEWDATA.
TCF ZERODATA
NEWDATA CCS ALTSAVE +1
TCF +4
TCF +3
CAF ZERO # SET NEGATIVE ALTSAVE +1 TO +0.
TS ALTSAVE +1
CCS ALTSAVE # PROVIDE A 15 BIT UNSIGNED OUTPUT.
CAF BIT15 # THE HI-ORDER PART IS +1 OR +0.
AD ALTSAVE +1
TCF DATAOUT # DISPATCH UNSIGNED BITS TO ALTM REG.
DISINDAT EXTEND
QXCH LADQSAVE # SAVE RETURN TO ALTROUT +1 OR ALTOUT +1
CAF BIT6
EXTEND # WISHETH THE ASTRONAUT THE ANALOG
RAND CHAN30 # DISPLAYS? I.E.,
CCS A # IS THE MODE SELECT SWITCH IN PGNCS?
TCF DISPRSET # NO. ASTRONAUT REQUESTS NO INERTIAL DATA
CS FLAGWRD1 # YES. CHECK STATUS OF DIDFLAG.
MASK DIDFLBIT
EXTEND
BZF SPEEDRUN # SET. PERFORM DATA DISPLAY SEQUENCE.
CS FLAGWRD1 # RESET. PERFORM INITIALIZATION FUNCTIONS.
MASK DIDFLBIT
ADS FLAGWRD1 # SET DIDFLAG.
CS BIT7
MASK IMODES33 # TO DISPLAY ALTRATE FIRST AND ALT. SECOND
TS IMODES33
CS FLAGWRD0 # ARE WE IN DESCENT TRAJECTORY?
MASK R10FLBIT
EXTEND
BZF TASKOVER # NO
CAF BIT8 # YES.
EXTEND
WOR CHAN12 # SET DISPLAY INERTIAL DATA OUTBIT.
CAF ZERO
TS TRAKLATV # LATERAL VELOCITY MONITOR FLAG
TS TRAKFWDV # FORWARD VELOCITY MONITOR FLAG
TS LATVMETR # LATVEL MONITOR METER
TS FORVMETR # FORVEL MONITOR METER
CAF BIT4
TC TWIDDLE
ADRES INTLZE
TCF TASKOVER
INTLZE CAF BIT2
EXTEND
WOR CHAN12 # ENABLE RR ERROR COUNTER.
# Page 901
CS IMODES33
MASK BIT8
ADS IMODES33 # SET INERTIAL DATA FLAG.
TCF TASKOVER
SPEEDRUN CS PIPTIME +1 # UPDATE THE VELOCITY VECTOR
AD TIME1 # COMPUTE T - TN
AD HALF # CORRECT FOR POSSIBLE OVERFLOW OF TIME1.
AD HALF
XCH DT # SAVE FOR LATER USE
CA 1SEC
TS ITEMP5 # INITIALIZE FOR DIVISION LATER
EXTEND
DCA GDT/2 # COMPUTE THE X-COMPONENT OF VELOCITY.
DDOUBL
DDOUBL
EXTEND
MP DT
EXTEND
DV ITEMP5
XCH VVECT # VVECT = G(T-TN) M/CS *2(-5)
EXTEND
DCA V # M/CS *2(-7)
DDOUBL # RESCALE TO 2(-5)
DDOUBL
ADS VVECT # VVECT = VN + G(T-TN) M/CS *2(-5)
CA PIPAX # DELV CM/SEC *2(-14)
AD PIPATMPX # IN CASE PIPAX HAS BEEN ZEROED
EXTEND
MP KPIP1(5) # DELV M/CS *2(-5)
ADS VVECT # VVECT = VN + DELV + GN(T-TN) M/CS *2(-5)
EXTEND
DCA GDT/2 +2 # COMPUTE THE Y-COMPONENT OF VELOCITY.
DDOUBL
DDOUBL
EXTEND
MP DT
EXTEND
DV ITEMP5
XCH VVECT +1
EXTEND
DCA V +2
DDOUBL
DDOUBL
ADS VVECT +1
CA PIPAY
AD PIPATMPY
EXTEND
MP KPIP1(5)
ADS VVECT +1
# Page 902
EXTEND
DCA GDT/2 +4 # COMPUTE THE Z-COMPONENT OF VELOCITY.
DDOUBL
DDOUBL
EXTEND
MP DT
EXTEND
DV ITEMP5
XCH VVECT +2
EXTEND
DCA V +4
DDOUBL
DDOUBL
ADS VVECT +2
CA PIPAZ
AD PIPATMPZ
EXTEND
MP KPIP1(5)
ADS VVECT +2
CAF BIT3 # PAUSE 40 MS TO LET OTHER RUPTS IN.
TC VARDELAY
CS FLAGWRD0 # ARE WE IN DESCENT TRAJECTORY?
MASK R10FLBIT
CCS A
TCF +2 # YES.
TC LADQSAVE # NO.
CA DELVS # HI X OF VELOCITY CORRECTION TERM.
AD VVECT # HI X OF UPDATED VELOCITY VECTOR.
TS ITEMP1 # = VX - DVX M/CS *2(-5).
CA DELVS +2 # Y
AD VVECT +1 # Y
TS ITEMP2 # = VY - DVY M/CS *2(-5)
CA DELVS +4 # Z
AD VVECT +2 # Z
TS ITEMP3 # = VZ - DVZ M/CS *2(-5)
CA ITEMP1 # COMPUTE VHY, VELOCITY DIRECTED ALONG THE
EXTEND # Y-COORDINATE.
MP UHYP # HI X OF CROSS-RANGE HALF-UNIT VECTOR
XCH RUPTREG1
CA ITEMP2
EXTEND
MP UHYP +2 # Y
ADS RUPTREG1 # ACCUMULATE PARTIAL PRODUCTS.
CA ITEMP3
EXTEND
MP UHYP +4 # Z
ADS RUPTREG1
# Page 903
CA RUPTREG1
DOUBLE
XCH VHY # VHY=VMP.UHYP M/CS*2(-5).
CA ITEMP1 # NO COMPUTE VHZ, VELOCITY DIRECTED ALONG
EXTEND # THE Z-COORDINATE.
MP UHZP # HI X OF DOWN-RANGE HALF-UNIT VECTOR.
XCH RUPTREG1
CA ITEMP2
EXTEND
MP UHZP +2 # Y
ADS RUPTREG1 # ACCUMULATE PARTIAL PRODUCTS.
CA ITEMP3
EXTEND
MP UHZP +4 # Z
ADS RUPTREG1
CA RUPTREG1
DOUBLE
XCH VHZ # VHZ = VMP.UHZP M/CS*2(-5).
GET22/32 CAF EBANK6 # GET SIN(AOG),COS(AOG) FROM GPMATRIX.
TS EBANK
EBANK= M22
CA M22
TS ITEMP3
CA M32
TS ITEMP4
CAF EBANK7
TS EBANK
EBANK= UNIT/R/
LATFWDV CA ITEMP4 # COMPUTE LATERAL AND FORWARD VELOCITIES.
EXTEND
MP VHY
XCH RUPTREG1
CA ITEMP3
EXTEND
MP VHZ
ADS RUPTREG1 # = VHY(COS)AOG+VHZ(SIN)AOG M/CS *2(-5)
CA VELCONV # CONVERT LATERAL VELOCITY TO BIT UNITS.
EXTEND
MP RUPTREG1
DDOUBL
XCH LATVEL # LATERAL VELOCITY IN BIT UNITS *2(-14).
CA ITEMP4 # COMPUTE FORWARD VELOCITY.
EXTEND
MP VHZ
XCH RUPTREG1
CA ITEMP3
EXTEND
MP VHY
CS A
ADS RUPTREG1 # =VHZ(COS)AOG-VHY(SIN)AOG M/CS *2(-5).
# Page 904
CA VELCONV # CONVERT FORWARD VELOCITY TO BIT UNITS.
EXTEND
MP RUPTREG1
DDOUBL
XCH FORVEL # FORWARD VELOCITY IN BIT UNITS *2(-14).
CS MAXVBITS # ACC.=-199.9989 FT./SEC.
TS ITEMP6 # -547 BIT UNITS (OCTAL) AT 0.5571 FPS/BIT
CAF ONE # LOOP TWICE.
VMONITOR TS ITEMP5 # FORWARD AND LATERAL VELOCITY LANDING
INDEX ITEMP5 # ANALOG DISPLAYS MONITOR.
CCS LATVEL
TCF +4
TCF LVLIMITS
TCF +8D
TCF LVLIMITS
INDEX ITEMP5
CS LATVEL
AD MAXVBITS # +199.9989 FT.SEC.
EXTEND
BZMF CHKLASTY
TCF LVLIMITS
INDEX ITEMP5
CA LATVEL
AD MAXVBITS
EXTEND
BZMF +2
TCF LVLIMITS
CHKLASTY INDEX ITEMP5
CCS LATVMETR
TCF +4
TCF LASTOK
TCF +7
TCF LASTOK
INDEX ITEMP5
CA LATVEL
EXTEND
BZMF LASTPOSY +5
TCF +5
INDEX ITEMP5
CS LATVEL
EXTEND
BZMF LASTNEGY +4
LASTOK INDEX ITEMP5
CCS TRAKLATV
TCF LASTPOSY
TCF +2
TCF LASTNEGY
INDEX ITEMP5
# Page 905
CA LATVEL
EXTEND
BZMF NEGVMAXY
TCF POSVMAXY
LASTPOSY INDEX ITEMP5
CA LATVEL
EXTEND
BZMF +2
TCF POSVMAXY
CS MAXVBITS
TCF ZEROLSTY
POSVMAXY INDEX ITEMP5
CS LATVMETR
AD MAXVBITS
INDEX ITEMP5
XCH RUPTREG3
CAF ONE
TCF ZEROLSTY +3
LASTNEGY INDEX ITEMP5
CA LATVEL
EXTEND
BZMF NEGVMAXY
CA MAXVBITS
TCF ZEROLSTY
NEGVMAXY INDEX ITEMP5
CA LATVMETR
AD MAXVBITS
COM
INDEX ITEMP5
XCH RUPTREG3
CS ONE
TCF ZEROLSTY +3
LVLIMITS INDEX ITEMP5
CCS TRAKLATV
TCF LATVPOS
TCF +2
TCF LATVNEG
INDEX ITEMP5
CS LATVMETR
EXTEND
BZMF +2
TCF NEGLMLV
INDEX ITEMP5
CS LATVEL
EXTEND
BZMF LVMINLM
AD ITEMP6
INDEX ITEMP5
AD LATVMETR
EXTEND
# Page 906
BZMF LVMINLM
INDEX ITEMP5
AD LATVEL
EXTEND
INDEX ITEMP5
SU LATVMETR
TCF ZEROLSTY
LATVPOS INDEX ITEMP5
CS LATVEL
EXTEND
BZMF LVMINLM
TCF +5
LATVNEG INDEX ITEMP5
CA LATVEL
EXTEND
BZMF LVMINLM
INDEX ITEMP5
CS LATVMETR
TCF ZEROLSTY
NEGLMLV INDEX ITEMP5
CA LATVEL
EXTEND
BZMF LVMINLM
CA MAXVBITS
INDEX ITEMP5
AD LATVMETR
COM
INDEX ITEMP5
AD LATVEL
EXTEND
BZMF LVMINLM
EXTEND
INDEX ITEMP5
SU LATVEL
INDEX ITEMP5
AD LATVMETR
COM
TCF ZEROLSTY
LVMINLM INDEX ITEMP5
CS LATVMETR
INDEX ITEMP5
AD LATVEL
ZEROLSTY INDEX ITEMP5
XCH RUPTREG3
CAF ZERO
INDEX ITEMP5
TS TRAKLATV
INDEX ITEMP5
CA RUPTREG3
AD NEG0 # AVOIDS +0 DINC HARDWARE MALFUNCTION
# Page 907
INDEX ITEMP5
TS CDUTCMD
INDEX ITEMP5
CA RUPTREG3
INDEX ITEMP5
ADS LATVMETR
CCS ITEMP5 # FIRST MONITOR FORWARD THEN LATERAL VEL.
TCF VMONITOR
CAF BITSET # DRIVE THE X-POINTER DISPLAY.
EXTEND
WOR CHAN14
TC LADQSAVE # GO TO ALTROUT +1 OR TO ALTOUT +1
ZERODATA CAF ZERO # ZERO ALTSAVE AND ALTSAVE +1
TS L # NO NEGATIVE ALTITUDES ALLOWED.
TCF ZDATA2
# ****************************************************************************
DISPRSET CS FLAGWRD0 # ARE WE IN DESCENT TRAJECTORY?
MASK R10FLBIT
EXTEND
BZF ABORTON # NO.
CAF BIT8 # YES.
MASK IMODES33 # CHECK IF INERTIAL DATA JUST DISPLAYED.
CCS A
CAF BIT2 # YES. DISABLE RR ERROR COUNTER
AD BIT8 # NO. REMOVE DISPLAY INERTIAL DATA
COM
EXTEND
WAND CHAN12
ABORTON CS BITS8/7 # RESET INERTIAL DATA, INTERLEAVE FLAGS.
MASK IMODES33
TS IMODES33
CS DIDFLBIT
MASK FLAGWRD1
TS FLAGWRD1 # RESET DIDFLAG.
TCF TASKOVER
# ******************************************************************************
BITS8/7 OCT 00300 # INERTIAL DATA AND INTERLEAVE FLAGS.
BITSET = PRIO6
# ******************************************************************************

209
Luminary099/LEM_GEOMETRY.s Normal file
View File

@ -0,0 +1,209 @@
# Copyright: Public domain.
# Filename: LEM_GEOMETRY.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 320-325
# Mod history: 2009-05-16 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 320
BANK 23
SETLOC LEMGEOM
BANK
SBANK= LOWSUPER
EBANK= XSM
# THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM,CSM BY ADDING
# THE CONIC R,V AND THE DEVIATIONS R,V. THE STATE VECTORS ARE CONVERTED TO
# METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPRIATELY IN RN,VN OR
# R-OTHER,V-OTHER FOR DOWNLINK. THE ROUTINES' NAMES ARE SWITCHED IN THE
# OTHER VEHICLE'S COMPUTER.
#
# INPUT
# STATE VECTOR IN TEMPORARY STORAGE AREA
# IF STATE VECTOR IS SCALED POS B27 AND VEL B5
# SET X2 TO +2
# IF STATE VECTOR IS SCALED POS B29 AND VEL B7
# SET X2 TO 0
#
# OUTPUT
# R(T) IN RN, V(T) IN VN, T IN PIPTIME
# OR
# R(T) IN R-OTHER, V(T) IN V-OTHER (T IS DEFINED BY T-OTHER)
COUNT* $$/GEOM
SVDWN2 BOF RVQ # SW=1=AVETOMID DOING W-MATRIX INTEG.
AVEMIDSW
+1
VLOAD VSL*
TDELTAV
0 -7,2
VAD VSL*
RCV
0,2
STOVL RN
TNUV
VSL* VAD
0 -4,2
VCV
VSL*
0,2
STODL VN
TET
STORE PIPTIME
RVQ
# Page 321
SVDWN1 VLOAD VSL*
TDELTAV
0 -7,2
VAD VSL*
RCV
0,2
STOVL R-OTHER
TNUV
VSL* VAD
0 -4,2
VCV
VSL*
0,2
STORE V-OTHER
RVQ
# Page 322
# THE FOLLOWING ROUTINE TAKES A HALF UNIT TARGET VECTOR REFERRED TO NAV BASE COORDINATES AND FINDS BOTH
# GIMBAL ORIENTATIONS AT WHICH THE RR MIGHT SIGHT THE TARGET. THE GIMBAL ANGLES CORRESPONDING TO THE PRESENT MODE
# ARE LEFT IN MODEA AND THOSE WHICH WOULD BE USED AFTER A REMODE IN MODEB. THIS ROUTINE ASSUMES MODE 1 IS TRUNNION
# ANGLE LESS THAN 90 DEGS IN ABS VALUE WITH ARBITRARY SHAFT, WITH A CORRESPONDING DEFINITION FOR MODE 2. MODE
# SELECTION AND LIMIT CHECKING ARE DONE ELSEWHERE.
#
# THE MODE 1 CONFIGURATION IS CALCULATED FROM THE VECTOR AND THEN MODE 2 IS FOUND USING THE RELATIONS
#
# S(2) = 180 + S(1)
# T(2) = 180 - T(1)
#
# THE VECTOR ARRIVES IN MPAC WHERE TRG*SMNG OR *SMNB* WILL HAVE LEFT IT.
RRANGLES STORE 32D
DLOAD DCOMP # SINCE WE WILL FIND THE MODE 1 SHAFT
34D # ANGLE LATER, WE CAN FIND THE MODE 1
SETPD ASIN # TRUNNION BY SIMPLY TAKING THE ARCSIN OF
0 # THE Y COMPONENT, THE ASIN GIVIN AN
PUSH BDSU # ANSWER WHOSE ABS VAL IS LESS THAN 90 DEG.
LODPHALF
STODL 4 # MODE 2 TRUNNION TO 4.
LO6ZEROS
STOVL 34D # UNIT THE PROJECTION OF THE VECTOR
32D # IN THE X-Z PLANE
UNIT BOVB # IF OVERFLOW, TARGET VECTOR IS ALONG Y
LUNDESCH # CALL FOR MANEUVER UNLESS ON LUNAR SURF
STODL 32D # PROJECTION VECTOR.
32D
SR1 STQ
S2
STODL SINTH # USE ARCTRIG SINCE SHAFT COULD BE ARB.
36D
SR1
STCALL COSTH
ARCTRIG
# Page 323
PUSH DAD # MODE 1 SHAFT TO 2.
LODPHALF
STOVL 6
4
RTB # FIND MODE 2 CDU ANGLES.
2V1STO2S
STOVL MODEB
0
RTB # MODE 1 ANGLES TO MODE A.
2V1STO2S
STORE MODEA
EXIT
CS RADMODES # SWAP MODEA AND MODEB IF RR IN MODE 2.
MASK ANTENBIT
CCS A
TCF +4
DXCH MODEA
DXCH MODEB
DXCH MODEA
TC INTPRET
GOTO
S2
# Page 324
# GIVEN RR TRUNNION AND SHAFT (T,S) IN TANGNB,+1, FIND THE ASSOCIATED
# LINE OF SIGHT IN NAV BASE AXES. THE HALF UNIT VECTOR, .5(SIN(S)COS(T),
# -SIN(T),COS(S)COS(T)) IS LEFT IN MPAC AND 32D.
SETLOC INFLIGHT
BANK
COUNT* $$/GEOM
RRNB SLOAD RTB
TANGNB
CDULOGIC
SETPD PUSH # TRUNNION ANGLE TO 0
0
SIN DCOMP
STODL 34D # Y COMPONENT
COS PUSH # .5 COS(T) TO 0
SLOAD RTB
TANGNB +1
CDULOGIC
RRNB1 PUSH COS # SHAFT ANGLE TO 2
DMP SL1
0
STODL 36D # Z COMPONENT
SIN DMP
SL1
STOVL 32D
32D
RVQ
# THIS ENTRY TO RRNB REQUIRES THE TRUNNION AND SHAFT ANGLES IN MPAC AND MPAC +1 RESPECTIVELY
RRNBMPAC STODL 20D # SAVE SHAFT CDU IN 21.
MPAC # SET MODE TO DP. (THE PRECEEDING STORE
# MAY BE DP, TP OR VECTOR.)
RTB SETPD
CDULOGIC
0
PUSH SIN # TRUNNION ANGLE TO 0
DCOMP
STODL 34D # Y COMPONENT
COS PUSH # .5COS(T) TO 0
SLOAD RTB # PICK UP CDU'S.
21D
CDULOGIC
GOTO
RRNB1
# Page 325
# (This page has nothing on it.)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

245
Luminary099/P12.s Normal file
View File

@ -0,0 +1,245 @@
# Copyright: Public domain.
# Filename: P12.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 838-842
# Mod history: 2009-05-23 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 838
BANK 24
SETLOC P12
BANK
EBANK= DVCNTR
COUNT* $$/P12
P12LM TC PHASCHNG
OCT 04024
TC BANKCALL
CADR R02BOTH # CHECK THE STATUS OF THE IMU.
TC UPFLAG
ADRES MUNFLAG
TC UPFLAG # INSURE 4-JET TRANSLATION CAPABILITY.
ADRES ACC4-2FL
TC UPFLAG # PREVENT R10 FROM ISSUING CROSS-POINTER
ADRES R10FLAG # OUTPUTS.
TC CLRADMOD # INITIALIZE RADMODES FOR R29
TC DOWNFLAG # CLEAR RENDEVOUS FLAG FOR P22
ADRES RNDVZFLG
CAF THRESH2 # INITIALIZE DVMON
TS DVTHRUSH
CAF FOUR
TS DVCNTR
CA ZERO
TS TRKMKCNT # SHOW THAT R29 DOWNLINK DATA IS NOT READY.
CAF V06N33A
TC BANKCALL # FLASH TIG
CADR GOFLASH
TCF GOTOP00H
TCF +2 # PROCEED
TCF -5 # ENTER
TC PHASCHNG
OCT 04024
TC INTPRET
CALL # INITIALZE WM AND /LAND/
GUIDINIT
SET CALL
FLPI
P12INIT
# Page 839
P12LMB DLOAD
(TGO)A # SET TGO TO AN INITIAL NOMINAL VALUE.
STODL TGO
TIG
STCALL TDEC1
LEMPREC # ROTATE THE STATE VECTORS TO THE
VLOAD MXV # IGNITION TIME.
VATT
REFSMMAT
VSL1
STOVL V1S # COMPUTE V1S = VEL(TIG)*2(-7) M/CS.
RATT
MXV VSL6
REFSMMAT
STCALL R # COMPUTE R = POS(TIG)*2(-24) M.
MUNGRAV # COMPUTE GDT1/2(TIG)*2(-T)M/CS.
VLOAD UNIT
R
STCALL UNIT/R/ # COMPUTE UNIT/R/ FOR YCOMP.
YCOMP
SR DCOMP
5D
STODL XRANGE # INITIALIZE XRANGE FOR NOUN 76
VINJNOM
STODL ZDOTD
RDOTDNOM
STORE RDOTD
EXIT
TC PHASCHNG
OCT 04024
NEWLOAD CAF V06N76 # FLASH CROSS-RANGE, AND APOLUNE VALUES.
TC BANKCALL
CADR GOFLASH
TCF GOTOP00H
TCF +2 # PROCEED
TCF NEWLOAD # ENTER NEW DATA.
CAF P12ADRES
TS WHICH
TC PHASCHNG
OCT 04024
TC INTPRET
DLOAD SL
XRANGE
5D
DAD
# Page 840
Y
STOVL YCO
UNIT/R/
VXSC VAD
49FPS
V1S
STORE V # V(TIPOVER) = V(IGN) + 57FPS (UNIT/R/)
DOT SL1
UNIT/R/
STOVL RDOT # RDOT = 2(-7)
UNIT/R/
VXV UNIT
QAXIS
STORE ZAXIS1
SETGO
FLVR
ASCENT
P12RET DLOAD
ATP # ATP(2)*2(18)
DSQ PDDL
ATY # ATY(2)*2(18)
DSQ DAD
BZE SQRT
YAWDUN
SL1 BDDV
ATY
ARCSIN
YAWDUN STOVL YAW
UNFC/2
UNIT DOT
UNIT/R/
SL1 ARCCOS
DCOMP
STORE PITCH
EXIT
TC PHASCHNG
OCT 04024
TC DOWNFLAG
ADRES FLPI
INHINT
TC IBNKCALL
CADR PFLITEDB
RELINT
TC POSTJUMP
CADR BURNBABY
P12INIT DLOAD # INITIALIZE ENGINE DATA. USED FOR P12 AND
# Page 841
(1/DV)A # P71.
STORE 1/DV3
STORE 1/DV2
STODL 1/DV1
(AT)A
STODL AT
(TBUP)A
STODL TBUP
ATDECAY
DCOMP SL
11D
STORE TTO
SLOAD DCOMP
APSVEX
SR2
STORE VE
BOFF RVQ
FLAP
COMMINIT
COMMINIT DLOAD DAD # INITIALIZE TARGET DATA. USED BY P12, P70
HINJECT # AND P71 IF IT DOES NOT FOLLOW P70.
/LAND/
STODL RCO
HI6ZEROS
STORE TXO
STORE YCO
STORE RDOTD
STOVL YDOTD
VRECTCSM
VXV MXV
RRECTCSM
REFSMMAT
UNIT
STORE QAXIS
RVQ
P12ADRES REMADR P12TABLE
SETLOC P12A
BANK
COUNT* $$/P12
GUIDINIT STQ SETPD
TEMPR60
0D
VLOAD PUSH
UNITZ
RTB PUSH
LOADTIME
CALL
RP-TO-R
# Page 842
MXV VXSC
REFSMMAT
MOONRATE
STOVL WM
RLS
ABVAL SL3
STCALL /LAND/
TEMPR60
49FPS 2DEC .149352 B-6 # EXPECTED RDOT AT TIPOVER
VINJNOM 2DEC 16.7924 B-7 # 5509.5 FPS(APO=30NM WITH RDOT=19.5FPS)
RDOTDNOM 2DEC .059436 B-7 # 19.5 FPS

193
Luminary099/P30_P37.s Normal file
View File

@ -0,0 +1,193 @@
# Copyright: Public domain.
# Filename: P30_P37.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 614-617
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-05 RSB Removed 4 lines of code that shouldn't
# have survived from Luminary 131.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 614
# PROGRAM DESCRIPTION P30 DATE 3-6-67
#
# MOD.1 BY RAMA AIYAWAR
#
# FUNCTIONAL DESCRIPTIONS
# ACCEPT ASTRONAUT INPUTS OF TIG,DELV(LV)
# CALL IMU STATUS CHECK ROUTINE (R02)
# DISPLAY TIME TO GO, APOGEE, PERIGEE, DELV(MAG), MGA AT IGN
# REQUEST BURN PROGRAM
#
# CALLING SEQUENCE VIA JOB FROM V37
#
# EXIT VIA V37 CALL OR TO GOTOP00H (V34E)
#
# SUBROUTINE CALLS -- FLAGUP, PHASCHNG, BANKCALL, ENDOFJOB, GOFLASH, GOFLASHR
# GOPERF3R, INTPRET, BLANKET, GOTOP00H, R02BOTH, S30.1,
# TIG/N35, MIDGIM, DISPMGA
#
# ERASABLE INITIALIZATION -- STATE VECTOR
#
# OUTPUT -- RINIT, VINIT, +MGA, VTIG, RTIG, DELVSIN, DELVSAB, DELVSLV, HAPO,
# HPER, TTOGO
#
# DEBRIS -- A, L, MPAC, PUSHLIST
BANK 32
SETLOC P30S
BANK
EBANK= +MGA
COUNT* $$/P30
P30 TC UPFLAG # SET UPDATE FLAG
ADRES UPDATFLG
TC UPFLAG # SET TRACK FLAG
ADRES TRACKFLG
P30N33 CAF V06N33 # T OF IGN
TC VNP00H # RETURN ON PROCEED, P00H ON TERMINATE
CAF V06N81 # DISPLAY DELTA V (LV)
TC VNP00H # REDISPLAY ON RECYCLE
TC DOWNFLAG # RESET UPDATE FLAG
ADRES UPDATFLG
TC INTPRET
CALL
S30.1
SET EXIT
UPDATFLG
PARAM30 CAF V06N42 # DISPLAY APOGEE,PERIGEE,DELTA V
TC VNP00H
# Page 615
TC INTPRET
SETGO
XDELVFLG # FOR P40'S: EXTERNAL DELTA-V GUIDANCE.
REVN1645 # TRKMKCNT, T60, +MGA DISPLAY
V06N33 VN 0633
V06N42 VN 0642
# Page 616
# PROGRAM DESCRPTION S30.1 DATE 9NOV66
# MOD NO 1 LOG SECTION P30,P37
# MOD BY RAMA AIYAWAR **
#
# FUNCTIONAL DESCRIPTION
# BASED ON STORED TARGET PARAMETERS (R OF IGNITION (RTIG), V OF
# IGNITION (VTIG), TIME OF IGNITION (TIG)), COMPUTE PERIGEE ALTITUDE
# APOGEE ALTITUDE AND DELTAV REQUIRED (DELVSIN).
#
# CALLING SEQUENCE
# L CALL
# L+1 s30.1
#
# NORMAL EXIT MODE
# AT L+2 OR CALLING SEQUENCE (GOTO L+2)
#
# SUBROUTINES CALLED
# LEMPREC
# PERIAPO
#
# ALARM OR ABORT EXIT MODES
# NONE
#
# ERASABLE INITIALIZATION REQUIRED
# TIG TIME OF IGNITION DP B28CS
# DELVSLV SPECIFIED DELTA-V IN LOCAL VERT.
# COORDS. OF ACTIVE VEHICLE AT
# TIME OF IGNITION VECTOR B+7 METERS/CS
#
# OUTPUT
# RTIG POSITION AT TIG VECTOR B+29 METERS
# VTIG VELOCITY AT TIG VECTOR B+29 METERS/CS
# PDL 4D APOGEE ALTITUDE DP B+29 M, B+27 METERS.
# HAPO APOGEE ALTITUDE DP B+29 METERS
# PDL 8D PERIGEE ALTITUDE DP B+29 M, B+27 METERS.
# HPER PERIGEE ALTITUDE DP B+29 METERS
# DELVSIN SPECIFIED DELTA-V IN INTERTIAL
# COORD. OF ACTIVE VEHICLE AT
# TIME OF IGNITION VECTOR B+7 METERS/CS
# DELVSAB MAG. OF DELVSIN VECTOR B+7 METERS/CS
#
# DEBRIS QTEMP TEMP.ERASABLE
# QPRET, MPAC
# PUSHLIST
SETLOC P30S1
BANK
COUNT* $$/S30S
S30.1 STQ DLOAD
QTEMP
TIG # TIME IGNITION SCALED AT 2(+28)CS
STCALL TDEC1
LEMPREC # ENCKE ROUTINE FOR LEM
VLOAD SXA,2
# Page 617
RATT
RTX2
STORE RTIG # RADIUS VECTOR AT IGNITION TIME
UNIT VCOMP
STOVL DELVSIN # ZRF/LV IN DELVSIN SCALED AT 2
VATT # VELOCITY VECTOR AT TIG, SCALED 2(7) M/CS
STORE VTIG
VXV UNIT
RTIG
SETPD SXA,1
0
RTX1
PUSH VXV # YRF/LV PDL 0 SCALED AT 2
DELVSIN
VSL1 PDVL
PDVL PDVL # YRF/LV PDL 6 SCALED AT 2
DELVSIN # ZRF/LV PDL 12D SCALED AT 2
DELVSLV
VXM VSL1
0
STORE DELVSIN # DELTAV IN INERT. COOR. SCALED TO B+7M/CS
ABVAL
STOVL DELVSAB # DELTA V MAG.
RTIG # (FOR PERIAPO)
PDVL VAD # VREQUIRED = VTIG + DELVSIN (FOR PERIAPO)
VTIG
DELVSIN
CALL
PERIAPO1
CALL
SHIFTR1 # RESCALE IF NEEDED
CALL # LIMIT DISPLAY TO 9999.9 N. MI.
MAXCHK
STODL HPER # PERIGEE ALT 2(29) METERS FOR DISPLAY
4D
CALL
SHIFTR1 # RESCALE IF NEEDED
CALL # LIMIT DISPLAY TO 9999.9 N. MI.
MAXCHK
STCALL HAPO # APOGEE ALT 2(29) METERS FOR DISPLAY
QTEMP

File diff suppressed because it is too large Load Diff

434
Luminary099/P70-P71.s Normal file
View File

@ -0,0 +1,434 @@
# Copyright: Public domain.
# Filename: P70-P71.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 829-837
# Mod history: 2009-05-23 HG Transcribed from page images.
# 2009-06-05 RSB Fixed a typo.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 829
BANK 21
SETLOC R11
BANK
EBANK= DVCNTR
COUNT* $$/R11
R10,R11 CS FLAGWRD7 # IS SERVICER STILL RUNNING?
MASK AVEGFBIT
CCS A
TCF TASKOVER # LET AVGEND TAKE CARE OF GROUP 2.
CCS PIPCTR
TCF +2
TCF LRHTASK # LAST PASS. CALL LRHTASK.
+2 TS PIPCTR1
PIPCTR1 = LADQSAVE
PIPCTR = PHSPRDT2
CAF OCT31
TC TWIDDLE
ADRES R10,R11
R10,R11A CS IMODES33 # IF LAMP TEST, DO NTO CHANGE LR LITES
MASK BIT1
EXTEND
BZF 10,11
FLASHH? MASK FLGWRD11 # C(A) = 1 - HFLASH BIT
EXTEND
BZF FLASHV? # H FLASH OFF, SO LEAVE ALONE
CA HLITE
TS L
TC FLIP # FLIP H LITE
FLASHV? CA VFLSHBIT # VLASHBIT MUST BE BIT 2.
MASK FLGWRD11
EXTEND
BZF 10,11 # V FLASH OFF
CA VLITE
TS L
TC FLIP # FLIP V LITE
10,11 CA FLAGWRD9 # IS THE LETABORT FLAG SET ?
MASK LETABBIT
EXTEND
BZF LANDISP # NO. PROCEED TO R10.
P71NOW? CS MODREG # YES. ARE WE IN P71 NOW?
# Page 830
AD 1DEC71
EXTEND
BZF LANDISP # YES. PROCEED TO R10.
EXTEND # NO. IS AN ABORT STAGE COMMANDED?
READ CHAN30
COM
TS L
MASK BIT4
CCS A
TCF P71A # YES.
P70NOW? CS MODREG # NO. ARE WE IN P70 NOW?
AD 1DEC70
EXTEND
BZF LANDISP # YES. PROCEED TO R10.
CA L # NO. IS AN ABORT COMMANDED?
MASK BIT1
CCS A
TCF P70A # YES.
TCF LANDISP # NO. PROCEED TO R10.
COUNT* $$/P70
P70 TC LEGAL?
P70A CS ZERO
TCF +3
P71 TC LEGAL?
P71A CAF TWO
+3 TS Q
INHINT
EXTEND
DCA CNTABTAD
DTCB
EBANK= DVCNTR
CNTABTAD 2CADR CONTABRT
1DEC70 DEC 70
1DEC71 DEC 71
BANK 05
SETLOC ABORTS1
BANK
COUNT* $$/P70
CONTABRT CAF ABRTJADR
TS BRUPT
RESUME
# Page 831
ABRTJADR TCF ABRTJASK
ABRTJASK CAF OCTAL27
AD Q
TS L
COM
DXCH -PHASE4
INDEX Q
CAF MODE70
TS MODREG
TS DISPDEX # INSURE DISPDEX IS POSITIVE.
CCS Q # SET APSFLAG IF P71.
CS FLGWRD10 # SET APSFLAG PRIOR TO THE ENEMA.
MASK APSFLBIT
ADS FLGWRD10
CS DAPBITS # DAPBITS = OCT 640 = BITS 6, 8, 9
MASK DAPBOOLS # (TURN OFF ULLAGE, DRIFT, AND XOVINHIB
TS DAPBOOLS
CS FLAGWRD5 # SET ENGONFLG.
MASK ENGONBIT
ADS FLAGWRD5
CS PRIO30 # INSURE THAT THE ENGINE IS ON, IF ARMED.
EXTEND
RAND DSALMOUT
AD BIT13
EXTEND
WRITE DSALMOUT
CAF LRBYBIT # TERMINATE R12.
TS FLGWRD11
CS FLAGWRD0 # SET R10FLAG TO SUPPRESS OUTPUTS TO THE
MASK R10FLBIT # CROSS-POINTER DISPLAY.
ADS FLAGWRD0 # THE FOLLOWING ENEMA WILL REMOVE THE
# DISPLAY INERTIAL DATA OUTBIT.
TC CLRADMOD # INSURE RADMODES PROPERLY SET FOR R29.
EXTEND # LOAD TEVENT FOR THE DOWNLINK.
DCA TIME2
DXCH TEVENT
EXTEND
DCA SVEXITAD
DXCH AVGEXIT
# Page 832
EXTEND
DCA NEG0
DXCH -PHASE1
EXTEND
DCA NEG0
DXCH -PHASE3
EXTEND
DCA NEG0
DXCH -PHASE6
CAF THREE # SET UP 4.3SPOT FOR GOABORT
TS L
COM
DXCH -PHASE4
# the 3 in OCT37774 could be something else, garbled
CAF OCT37774 # SET T5RUPT TO CALL DAPIDLER IN
TS TIME5 # 40 MILLISECONDS.
TC POSTJUMP
CADR ENEMA
EBANK= DVCNTR
SVEXITAD 2CADR SERVEXIT
MODE70 DEC 70
OCTAL27 OCT 27
MODE71 DEC 71
DAPBITS OCT 00640
BANK 32
SETLOC ABORTS
BANK
COUNT* $$/P70
GOABORT TC INTPRET
CALL
INITCDUW
EXIT
CAF FOUR
TS DVCNTR
CAF WHICHADR
TS WHICH
TC DOWNFLAG
ADRES FLRCS
# Page 833
TC DOWNFLAG
ADRES FLUNDISP
TC DOWNFLAG
ADRES IDLEFLAG
TC UPFLAG # INSURE 4-JET TRANSLATION CAPABILIITY.
ADRES ACC4-2FL
TC CHECKMM
70DEC DEC 70
TCF P71RET
P70INIT TC INTPRET
CALL
TGOCOMP
DLOAD SL
MDOTDPS
4D
BDDV
MASS
STODL TBUP
MASS
DDV SR1
K(1/DV)
STORE 1/DV1
STORE 1/DV2
STORE 1/DV3
BDDV
K(AT)
STODL AT
DTDECAY
DCOMP SL
11D
STORE TTO
SLOAD DCOMP
DPSVEX
SR2
STORE VE # INITIALIZE DPS EXHAUST VELOCITY
SET CALL
FLAP
COMMINIT
AXC,1 GOTO # RETURN HERE IN P70, SET X1 FOR DPS COEFF.
0D
BOTHPOLY
INJTARG AXC,1 # RETURN HERE IN P71, SET X1 FOR APS COEFF.
8D
BOTHPOLY DLOAD* DMP # TGO D
ABTCOF,1
TGO
# Page 834
DAD* DMP
ABTCOF +2,1 # TGO(C+TGO )
TGO
DAD* DMP
ABTCOF +4,1 # TGO(B+TGO d))
TGO
DAD*
ABTCOF +6,1 # A+TGO(B+TGO(C+TGO D))
STORE ZDOTD # STORE TENTATIVELY IN ZDOTD
DSU BPL # CHECK AGAINST MINIMUM
VMIN
UPRATE # IF BIG ENOUGH, LEAVE ZDOTD AS IS .
DLOAD
VMIN
STORE ZDOTD # IF TOO SMALL, REPLCAE WITH MINIMUM.
UPRATE DLOAD
ABTRDOT
STCALL RDOTD # INITIALZE RDOTD.
YCOMP # COMPUTE Y
ABS DSU
YLIM # /Y/-DYMAX
BMN SIGN # IF <0, XR<.5DEG, LEAVE YCO AT 0
YOK # IF >0, FIX SIGN OF DEFICIT. THIS IS YCO.
Y
STORE YCO
YOK DLOAD DSU
YCO
Y # COMPUTE XRANGE IN CASE ASTRONAUT WANTS
SR
5D
STORE XRANGE # TO LOOK.
UPTHROT SET EXIT
FLVR
TC UPFLAG # SET ROTFLAG
ADRES ROTFLAG
TC THROTUP
TC PHASCHNG
OCT 04024
-3 TC BANKCALL # VERIFY THAT THE PANEL SWITCHES
CADR P40AUTO # ARE PROPERLY SET.
TC THROTUP
UPTHROT1 EXTEND # SET SERVICER TO CALL ASCENT GUIDANCE.
DCA ATMAGAD
DXCH AVGEXIT
# Page 835
GRP4OFF TC PHASCHNG # TERMINATE USE OF GROUP 4.
OCT 00004
TCF ENDOFJOB
P71RET TC DOWNFLAG
ADRES LETABORT
CAF THRESH2 # SET DVMON THRESHOLD TO THE ASCENT VALUE.
TS DVTHRUSH
TC INTPRET
BON CALL
FLAP
OLDTIME
TGOCOMP # IF FLAP=0, TGO=T-TIG
SSP GOTO
QPRET
CADR INJTARG
P12INIT # WILL EXIT P12INIT TO INJTARG
OLDTIME DLOAD SL1 # IF FLAP=1,GTO=2 TGO
TGO
STCALL TGO1
P12INIT
EXIT
TC PHASCHNG
OCT 04024
EXTEND
DCA TGO1
DXCH TGO
TCF UPTHROT1 -3
TGO1 = VGBODY
# *************************************************************************
BANK 21
SETLOC R11
BANK
COUNT* $$/P70
LEGAL? CS MMNUMBER # IS THE DESIRED PGM ALREADY IN PROGRESS?
AD MODREG
EXTEND
BZF ABORTALM
CS FLAGWRD9 # ARE THE ABORTS ENABLED?
MASK LETABBIT
CCS A
# Page 836
TCF ABORTALM
CA FLAGWRD7 # IS SERVICER ON THE AIR?
MASK AVEGFBIT
CCS A
TC Q # YES. ALL IS WELL.
ABORTALM TC FALTON
TC RELDSP
TC POSTJUMP
CADR PINBRNCH
BANK 32
SETLOC ABORTS
BANK
COUNT* $$/P70
# **********************************************************************
TGOCOMP RTB DSU
LOADTIME
TIG
SL
11D
STORE TGO
RVQ
# ************************************************************************
THROTUP CAF BIT13
TS THRUST
CAF BIT4
EXTEND
WOR CHAN14
TC Q
# ************************************************************************
10SECS 2DEC 1000
HINJECT 2DEC 18288 B-24 # 60,000 FEET EXPRESSED IN METERS.
(TGO)A 2DEC 37000 B-17
K(AT) 2DEC .02 # SCALING CONSTANT
WHICHADR REMADR ABRTABLE
# ************************************************************************
# Page 837
EBANK= DVCNTR
ATMAGAD 2CADR ATMAG
ORBMANAD ADRES ORBMANUV

View File

@ -0,0 +1,860 @@
# Copyright: Public domain.
# Filename: Q_R-AXIS_RCS_AUTOPILOT.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1442-1459
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-07 RSB Corrected "DEC 96.0" to "DEC 96", since
# the former is not compatible with yaYUL.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1442
BANK 17
SETLOC DAPS2
BANK
EBANK= CDUXD
COUNT* $$/DAPQR
CALLQERR CA BIT13 # CALCULATE Q,R ERRORS UNLESS THESE AXES
EXTEND # ARE IN MANUAL RATE COMMAND.
RAND CHAN31
CCS A
TCF +5 # IN AUTO COMPUTE Q,R ERRORS
CS DAPBOOLS # IN MANUAL RATE COMMAND?
MASK OURRCBIT
EXTEND
BZF Q,RORGTS # IF SO BYPASS CALCULATION OF ERROS.
TC QERRCALC
Q,RORGTS CCS COTROLER # CHOOSE CONTROL SYSTEM FOR THIS DAP PASS:
TCF GOTOGTS # GTS (ALTERNATES WITH RCS WHEN DOCKED)
TCF TRYGTS # GTS IF ALLOWED, OTHERWISE RCS
RCS CAF ZERO # RCS (TRYGTS MAY BRANCH TO HERE)
TS COTROLER
DXCH EDOTQ
TC ROT-TOUV
DXCH OMEGAU
# X - TRANSLATION
#
# INPUT: BITS 7,8 OF CH31 (TRANSLATION CONTROLLER)
# ULLAGER
# APSFLAG, DRIFTBIT
# ACC40R2X, ACRBTRAN
#
# OUTPUT: NEXTU, NEXTV CODES OF TRANSLATION FOR AFTER ROTATION
# SENSETYP TELL ROTATION DIRECTION AND DESIRE
#
# X-TRANS POLICIES ARE EITHER 4 JETS OR A DIAGONAL PAIR. IN 2-JET TRANSLATION THE SYSTEM IS SPECIFIED. A FAILURE
# WILL OVERRIDE THIS SPECIFICATION. AN ALARM RESULTS WHEN NO POLICY IS AVAILABLE BECAUSE OF FAILURES.
SENSEGET CA BIT7 # INPUT BITS OVERRIDE THE INTERNAL BITS
EXTEND # SENSETYP WILL NOT OPPOSE ANYTRANS
RAND CHAN31
EXTEND
BZF +X0RULGE
# Page 1443
CA BIT8
EXTEND
RAND CHAN31
EXTEND
BZF -XTRANS
CA ULLAGER
MASK DAPBOOLS
CCS A
TCF +X0RULGE
TS NEXTU # STORE NULL TRANSLATION POLICIES
TS NEXTV
CS DAPBOOLS # BURNING OR DRIFTING?
MASK DRIFTBIT
EXTEND
BZF TSENSE
CA FLGWRD10 # DPS (INCLUDING DOCKED) OR APS?
MASK APSFLBIT
CCS A
CAF TWO # FAVOR +X JETS DURING AN APS BURN.
TSENSE TS SENSETYP
TCF QRCONTRL
+X0RULGE CAF ONE
-XTRANS AD FOUR
TS ROTINDEX
AD NEG3
TS SENSETYP # FAVOR APPROPRIATE JETS DURING TRANS.
CA DAPBOOLS
MASK ACC4OR2X
CCS A
TCF TRANS4
CA DAPBOOLS
MASK AORBTRAN
CCS A
CA ONE # THREE FOR B
AD TWO # TWO FOR A SYSTEM 2 JET X TRANS
TSNUMBRT TS NUMBERT
TC SELCTSUB
CCS POLYTEMP
TCF +3
TC ALARM
OCT 02002
CA 00314OCT
MASK POLYTEMP
TSNEXTS TS NEXTU
# Page 1444
CS 00314OCT
MASK POLYTEMP
TS NEXTV
# Q,R-AXES RCS CONTROL MODE SELECTION
# SWITCHES INDICATION WHEN SET
# BIT13/CHAN31 AUTO, GO TO ATTSTEER
# PULSES MINIMUM IMPULSE MODE
# (OTHERWISE) RATE COMMAND/ATTITUDE HOLD MODE
QRCONTRL CA BIT13 # CHECK MODE SELECT SWITCH.
EXTEND
RAND CHAN31 # BITS INVERTED
CCS A
TCF ATTSTEER
CHKBIT10 CAF PULSES # PULSES = 1 FOR MIN IMP USE OF RHC
MASK DAPBOOLS
EXTEND
BZF CHEKSTIK # IN ATT-HOLD/RATE-COMMAND IF BIT10=0
# MINIMUM IMPULSE MODE
INHINT
TC IBNKCALL
CADR ZATTEROR
CA ZERO
TS QERROR
TS RERROR # FOR DISPLAYS
RELINT
EXTEND
READ CHAN31
TS TEMP31 # IS EQUAL TO DAPTEMP1
CCS OLDQRMIN
TCF CHECKIN
FIREQR CA TEMP31
MASK BIT1
EXTEND
BZF +QMIN
CA TEMP31
MASK BIT2
EXTEND
BZF -QMIN
CA TEMP31
MASK BIT5
# Page 1445
EXTEND
BZF +RMIN
CA TEMP31
MASK BIT6
EXTEND
BZF -RMIN
TCF XTRANS
CHECKIN CS TEMP31
MASK OCT63
TS OLDQRMIN
TCF XTRANS
+QMIN CA 14MS
TS TJU
CS 14MS
TCF MINQR
-QMIN CS 14MS
TS TJU
CA 14MS
TCF MINQR
+RMIN CA 14MS
TCF +2
-RMIN CS 14MS
TS TJU
MINQR TS TJV
CA MINADR
TS RETJADR
CA ONE
TS OLDQRMIN
MINRTN TS AXISCTR
CA DAPBOOLS
MASK CSMDOCKD
EXTEND
BZF MIMRET
INDEX AXISCTR # IF DOCKED, USE 60MS MINIMUM IMPULSE
CCS TJU
CA 60MS
TCF +2
CS 60MS
INDEX AXISCTR
TS TJU
MIMRET CA DAPBOOLS
MASK AORBTRAN
CCS A
CA ONE
AD TWO
TS NUMBERT
# Page 1446
TCF AFTERTJ
60MS DEC 96 # RSB 2009 -- was 96.0.
MINADR GENADR MINRTN
OCT63 OCT 63
14MS = +TJMINT6
TRANS4 CA FOUR
TCF TSNUMBRT
# RATE COMMAND MODE:
#
# DESCRIPTION (SAME AS P-AXIS)
CHEKSTIK TS INGTS # NOT IN GTS WHEN IN ATT HOLD
CS ONE # 1/ACCS WILL DO THE NULLING DRIVES
TS COTROLER # COME BACK TO RCS NEXT TIME
CA BIT15
MASK CH31TEMP
EXTEND
BZF RHCACTIV # BRANCH IF OUT OF DETENT.
CA OURRCBIT # ***********
MASK DAPBOOLS # *IN DETENT* CHECK FOR MANUAL CONTROL
EXTEND # *********** LAST TIME.
BZF STILLRCS
CS BIT9
MASK RCSFLAGS
TS RCSFLAGS # BIT 9 IS 0.
TCF DAMPING
40CYCL OCT 50
1/10S OCT 1
LINRAT DEC 46
# ===========================================================
DAMPING CA ZERO
TS SAVEHAND
TS SAVEHAND +1
RHCACTIV CCS SAVEHAND # ******************
TCF +3 # Q,R MANUAL CONTROL WC = A*(B+|D|)*D
TCF +2 # ******************
TCF +1
DOUBLE # WHERE
DOUBLE #
AD LINRAT # WC = COMMANDED ROTATIONAL RATE
EXTEND # A = QUADRATIC SENSITIVITY FACTOR
MP SAVEHAND # B = LINEAR/QUADRATIC SENSITIVITY
CA L # |D| = ABS. VALUE OF DEFLECTION
EXTEND # D = HAND CONTROLLER DEFLECTION
MP STIKSENS
XCH QLAST # COMMAND Q RATE, SCALED 45 DEG/SEC
COM
# Page 1447
AD QLAST
TS DAPTEMP3
CCS SAVEHAND +1
TCF +3
TCF +2
TCF +1
DOUBLE
DOUBLE
AD LINRAT
EXTEND
MP SAVEHAND +1
CA L
EXTEND
MP STIKSENS
XCH RLAST
COM
AD RLAST
TS DAPTEMP4
CS QLAST # INTERVAL.
AD OMEGAQ
TS QRATEDIF
CS RLAST
AD OMEGAR
TS RRATEDIF
ENTERQR DXCH QRATEDIF # TRANSFORM RATES FROM Q,R TO U,V AXES
TC ROT-TOUV
DXCH URATEDIF
CCS DAPTEMP3 # CHECK IF Q COMMAND CHANGE EXCEEDS
TC +3 # BREAKOUT LEVEL. IF NOT, CHECK R.
TC +2
TC +1
AD -RATEDB
EXTEND
BZMF +2
TCF ENTERUV -2 # BREAKOUT LEVEL EXCEEDED. DIRECT RATE.
CCS DAPTEMP4 # R COMMAND BREAKOUT CHECK.
TC +3
TC +2
TC +1
AD -RATEDB
EXTEND
BZMF +2
TCF ENTERUV -2 # BREAKOUT LEVEL EXCEEDED. DIRECT RATE.
CA RCSFLAGS # BREAKOUT LEVEL NOT EXCEEDED. CHECK FOR
MASK QRBIT # DIRECT RATE CONTROL LAST TIME.
EXTEND
BZF +2
TCF ENTERUV # CONTINUE DIRECT RATE CONTROL.
TCF STILLRCS # PSEUDO-AUTO CONTROL.
CA 40CYCL
# Page 1448
TS TCQR
ENTERUV INHINT # DIRECT RATE CONTROL
TC IBNKCALL
FCADR ZATTEROR
RELINT
CA ZERO
TS DYERROR
TS DYERROR +1
TS DZERROR
TS DZERROR +1
CCS URATEDIF
TCF +3
TCF +2
TCF +1
AD TARGETDB # IF TARGET DB IS EXCEEDED, CONTINUE
EXTEND # DIRECT RATE CONTROL.
BZMF VDB
CCS VRATEDIF
TCF +3
TCF +2
TCF +1
AD TARGETDB
EXTEND
BZMF +2
TCF QRTIME
CA ZERO
TS VRATEDIF
TCF QRTIME
VDB CCS VRATEDIF
TC +3
TC +2
TC +1
AD TARGETDB # IF TARGET DB IS EXCEEDED, CONTINUE
EXTEND # DIRECT RATE CONTROL. IF NOT, FIRE AND
BZMF TOPSEUDO # SWITCH TO PSEUDO-AUTO CONTROL ON NEXT
CA ZERO # PASS.
TS URATEDIF
QRTIME CA TCQR # DIRECT RATE TIME CHECK.
EXTEND
BZMF +5 # BRANCH IF TIME EXCEEDS 4 SEC.
CS RCSFLAGS
MASK QRBIT
ADS RCSFLAGS # BIT 11 IS 1.
TC +4
TOPSEUDO CS QRBIT
MASK RCSFLAGS
TS RCSFLAGS # BIT 11 IS 0.
CA HANDADR
TS RETJADR
CA ONE
# Page 1449
BACKHAND TS AXISCTR
CA FOUR
TS NUMBERT
INDEX AXISCTR
INDEX SKIPU
TCF +1
CA FOUR
INDEX AXISCTR
TS SKIPU
TCF LOOPER
INDEX AXISCTR
CCS URATEDIF # INDEX AXIS QUANTITY
CA ZERO # 0 -U 1/JETACC-AOSU
TCF +2 # 1 +U 1/JETACC+AOSU
CA ONE # 16 -V 1/JETACC-AOSV
INDEX AXISCTR # 17 +V 1/JETACC+AOSV
AD AXISDIFF # JETACC = 2 JET ACCELERATION (1 FOR FAIL)
INDEX A
CS 1/ANET2 +1
EXTEND
INDEX AXISCTR # UPRATEDIF IS SCALED AT PI/4 RAD/SEC
MP URATEDIF # JET TIME IN A, SCALED 32 SEC
TS Q
DAS A
AD Q
TS A # OVERFLOW SKIP
TCF +2
CA Q # RIGHT SIGN AND BIGGER THAN 150MS
SETTIME INDEX AXISCTR
TS TJU # SCALED AT 10.67 WHICH IS CLOSE TO 10.24
TCF AFTERTJ
ZEROTJ CA ZERO
TCF SETTIME
HANDADR GENADR BACKHAND
# GTS WILL BE TRIED IF
# 1. USEQRJTS = 0,
# 2. ALLOWGTS POS,
# 3. JETS ARE OFF (Q,R-AXES)
TRYGTS CAF USEQRJTS # IS JET USE MANDATORY. (AS LONG AS
MASK DAPBOOLS # USEQRJTS BIT IS NOT BIT 15, CCS IS SAFE.)
CCS A
TCF RCS
CCS ALLOWGTS # NO. DOES AOSTASK OK CONTROL FOR GTS?
# Page 1450
TCF +2
TCF RCS
EXTEND
READ CHAN5
CCS A
TCF CHKINGTS
GOTOGTS EXTEND
DCA GTSCADR
DTCB
CHKINGTS CCS INGTS # WAS THE TRIM GIMBAL CONTROLLING
TCF +2 # YES. SET UP A DAMPED NULLING DRIVE.
TCF RCS # NO. NULLING WAS SET UP BEFORE. DO RCS.
INHINT
TC IBNKCALL
CADR TIMEGMBL
RELINT
CAF ZERO
TS INGTS
TCF RCS
EBANK= CDUXD
GTSCADR 2CADR GTS
# Page 1451
# SUBROUTINE TO COMPUTE Q,R-AXES ATTITUDE ERRORS FOR USE IN THE RCS AND GTS CONTROL LAWS AND THE DISPLAYS.
QERRCALC CAE CDUY # Q-ERROR CALCULATION
EXTEND
MSU CDUYD # CDU ANGLE -- ANGLE DESIRED (Y-AXIS)
TS DAPTEMP1 # SAVE FOR RERRCALC
EXTEND
MP M21 # (CDUY-CDUYD)*M21 SCALED AT PI RADIANS
TS E
CAE CDUZ # SECOND TERM CALCULATION:
EXTEND
MSU CDUZD # CDU ANGLE -ANGLE DESIRED (Z-AXIS)
TS DAPTEMP2 # SAVE FOR RERRCALC
EXTEND
MP M22 # (CDUZ-CDUZD)*M22 SCALED AT PI RADIANS
AD DELQEROR # KALCMANU INERFACE ERROR
AD E
XCH QERROR # SAVE Q-ERROR FOR EIGHT-BALL DISPLAY.
RERRCALC CAE DAPTEMP1 # R-ERROR CALCULATION:
EXTEND # CDU ANGLE -ANGLE DESIRED (Y-AXIS)
MP M31 # (CDUY-CDUYD)*M31 SCALED AT PI RADIANS
TS E
CAE DAPTEMP2 # SECOND TERM CALCULATION:
EXTEND # CDU ANGLE -ANGLE DESIRED (Z-AXIS)
MP M32 # (CDUZ-CDUZD)*M32 SCALED AT PI RADIANS
AD DELREROR # KALCMANU INERFACE ERROR
AD E
XCH RERROR # SAVE R-ERROR FOR EIGHT-BALL DISPLAY.
TC Q
# Page 1452
# "ATTSTEER" IS THE ENTRY POINT FOR Q,R-AXES (U,V-AXES) ATTITUDE CONTROL USING THE REACTION CONTROL SYSTEM
ATTSTEER EQUALS STILLRCS # "STILLRCS" IS THE RCS EXIT FROM TRYGTS.
STILLRCS CA RERROR
LXCH A
CA QERROR
TC ROT-TOUV
DXCH UERROR
# PREPARES CALL TO TJETLAW (OR SPSRCS(DOCKED))
# PREFORMS SKIP LOGIC ON U OR Y AXIS IF NEEDED.
TJLAW CA TJLAWADR
TS RETJADR
CA ONE
TS AXISCTR
INDEX AXISCTR
INDEX SKIPU
TCF +1
CA FOUR
INDEX AXISCTR
TS SKIPU
TCF LOOPER
INDEX AXISCTR
CA UERROR
TS E
INDEX AXISCTR
CA OMEGAU
TS EDOT
CA DAPBOOLS
MASK CSMDOCKD
CCS A
TCF +3
TC TJETLAW
TCF AFTERTJ
+3 CS DAPBOOLS # DOCKED. IF GIMBAL USABLE DO GTS CONTROL
MASK USEQRJTS # ON THE NEXT PASS.
CCS A # USEQRJTS BIT MUST NOT BE BIT 15.
TS COTROLER # GIMBAL USABLE. STORE POSITIVE VALUE.
INHINT
TC IBNKCALL
CADR SPSRCS # DETERMINE RCS CONTROL
RELINT
CAF FOUR # ALWAYS CALL FOR 2-JET CONTROL ABOUT U,V.
TS NUMBERT # FALL THROUGH TO JET SLECTION, ETC.
# Q,R-JET-SELECTION-LOGIC
#
# INPUT: AXISCTR 0,1 FOR U,V
# SNUFFBIT ZERO TJETU,V AND TRANS. ONLY IF SET IN A DPS BURN
# Page 1453
# TJU,TJV JET TIME SCALED 10.24 SEC.
# NUMBERT INDICATES NUMBER OF JETS AND TYPE OF POLICY
# RETJADR WHERE TO RETURN TO
#
# OUTPUT: NO.U(V)JETS RATE DERIVATION FEEDBACK
# CHANNEL 5
# SKIPU,SKIPV FOR LESS THAN 150MS FIRING
#
# NOTES: IN CASE OF FAILURE IN DESIRED ROTATION POLICY, "ALL" UNFAILED
# JETS OF THE DESIRED POLICY ARE SELECTED. SINCE THERE ARE ONLY
# TWO JETS, THIS MEANS THE OTHER ONE OR NONE. THE ALARM IS SENT
# IF NONE CAN BE FOUND.
#
# TIMES LESS THAN 14 MSEC ARE TAKEN TO CALL FOR A SINGLE-JET
# MINIMUM IMPULSE, WITH THE JET CHOSEN SEMI-RANDOMLY.
AFTERTJ CA FLAGWRD5 # IF SNUFFBIT SET DURING A DPS BURN GO TO
MASK SNUFFBIT # XTRANS; THAT IS, INHIBIT CONTROL.
EXTEND
BZF DOROTAT
CS FLGWRD10
MASK APSFLBIT
EXTEND
BZF DOROTAT
CA DAPBOOLS
MASK DRIFTBIT
EXTEND
BZF XTRANS
DOROTAT CAF TWO
TS L
INDEX AXISCTR
CCS TJU
TCF +5
TCF NOROTAT
TCF +2
TCF NOROTAT
ZL
AD ONE
TS ABSTJ
CA AXISCTR
AD L
TS ROTINDEX # 0 1 2 3 = -U -V +U +V
CA ABSTJ
AD -150MS
EXTEND
BZMF DOSKIP
# Page 1454
TC SELCTSUB
INDEX AXISCTR
CA INDEXES
TS L
CA POLYTEMP
INHINT
INDEX L
TC WRITEP
RELINT
TCF FEEDBACK
NOROTAT INDEX AXISCTR
CA INDEXES
INHINT
INDEX A
TC WRITEP -1
RELINT
LOOPER CCS AXISCTR
TC RETJADR
TCF CLOSEOUT
DOSKIP CS ABSTJ
AD +TJMINT6 # 14MS
EXTEND
BZMF NOTMIN
ADS ABSTJ
INDEX AXISCTR
CCS TJU
CA +TJMINT6
TCF +2
CS +TJMINT6
INDEX AXISCTR
TS TJU
CCS SENSETYP # ENSURE MIN-IMPULSE NOT AGAINST TRANS
TCF NOTMIN -1
EXTEND
READ LOSCALAR
MASK ONE
TS NUMBERT
NOTMIN TC SELCTSUB
INDEX AXISCTR
CA INDEXES
INHINT
# Page 1455
TS T6FURTHA +1
CA POLYTEMP
INDEX T6FURTHA +1
TC WRITEP
CA ABSTJ
TS T6FURTHA
TC JTLST # IN QR BANK BY NOW
RELINT
CA ZERO
INDEX AXISCTR
TS SKIPU
FEEDBACK CS THREE
AD NUMBERT
EXTEND
BZMF +3
CA TWO
TCF +2
CA ONE
INDEX AXISCTR
TS NO.UJETS
TCF LOOPER
XTRANS CA ZERO
TS TJU
TS TJV
CA FOUR
INHINT
XCH SKIPU
EXTEND
BZF +2
TC WRITEU -1
CA FOUR
XCH SKIPV
RELINT
EXTEND
BZF CLOSEOUT
INHINT
TC WRITEV -1
RELINT
TCF CLOSEOUT
INDEXES DEC 4
DEC 13
+TJMINT6 DEC 22
# Page 1456
-150MS DEC -240
BIT8,9 OCT 00600
SCLNORM OCT 266
TJLAWADR GENADR TJLAW +3 # RETURN ADDRESS FOR RCS ATTITUDE CONTROL
# THE JET LIST:
# THIS IS A WAITLIST FOR T6RUPTS.
#
# CALLED BY:
# CA TJ # TIME WHEN NEXT JETS WILL BE WRITTEN
# TS T6FURTHA
# CA INDEX # AXIS TO BE WRITTEN AT TJ (FROM NOW)
# TS T6FURTHA +1
# TC JTLST
#
# EXAMPLE -- U-AXIS AUTOPILOT WILL WRITE ITS ROTATION CODE OF
# JETS INTO CHANNEL 5. IF IT DESIRES TO TURN OFF THIS POLICY WITHIN
# 150MS AND THEN FIRE NEXTU, A CALL TO JTLST IS MADE WITH T6FURTHA
# CONTAINING THE TIME TO TURN OFF THE POLICY, T6FURTHA +1 THE INDEX
# OF THE U-AXIS(4), AND NEXTU WILL CONTAIN THE "U-TRANS" POLICY OR ZERO.
#
# THE LIST IS EXACTLY 3 LONG. (THIS LEADS UP TO SKIP LOGIC AND 150MS LIMIT)
# THE INPUT IS THE LAST MEMBER OF THE LIST.
#
# RETURNS BY:
# + TC Q
#
# DEFINITIONS: (OUTPUT)
# TIME6 TIME OF NEXT RUPT
# T6NEXT DELTA TIME TO NEXT RUPT
# T6FURTHA DELTA TIME FROM 2ND TO LAST RUPT
# NXT6ADR AXIS INDEX 0 -- P-AXIS
# T6NEXT +1 AXIS INDEX 4 -- U-AXIS
# T6FURTHA +1 AXIS INDEX 13 -- V-AXIS
JTLST CS T6FURTHA
AD TIME6
EXTEND
BZMF MIDORLST # TIME6 -- TI IS IN A
LXCH NXT6ADR
DXCH T6NEXT
DXCH T6FURTHA
TS TIME6
LXCH NXT6ADR
TURNON CA BIT15
EXTEND
WOR CHAN13
TC Q
# Page 1457
MIDORLST AD T6NEXT
EXTEND
BZMF LASTCHG # TIME6 + T6NEXT - T IS IN A
LXCH T6NEXT +1
DXCH T6FURTHA
EXTEND
SU TIME6
DXCH T6NEXT
TC Q
LASTCHG CS A
AD NEG0
TS T6FURTHA
TC Q
# ROT-TOUV IS ENTERED WITH THE Q-COMPONENT OF THE QUANTITY TO BE TRANSFORMED IN A AND THE R-COMPONENT IN L.
# ROT-TOUV TRANSFORMS THE QUANTITY INTO THE NON-ORTHOGONAL U-V AXIS SYSTEM. IN THE U-V SYSTEM NO CROSS-COUPLING IS
# PRODUCED FROM RCS JET FIRINGS. AT THE COMPLETION OF ROT-TOUV, THE U-COMPONENT OF THE TRANSFORMED QUANTITY IS IN
# A AND THE V-COMPONENT IS IN L.
ROT-TOUV LXCH ROTEMP2 # (R) IS PUT INTO ROTEMP2
EXTEND
MP COEFFQ
XCH ROTEMP2 # (R) GOES TO A AND COEFFQ.(Q) TO ROTEMP2
EXTEND
MP COEFFR
TS L # COEFFR.(R) IS PUT INTO L
AD ROTEMP2
TS ROTEMP1 # COEFFQ.(Q)+COEFFR.(R) IS PUT IN ROTEMP1
TCF +4
INDEX A # COEFFQ.(Q) + COEFFR.(R) HAS OVERFLOWED
CS LIMITS # AND IS LIMITED TO POSMAX OR NEGMAX
TS ROTEMP1
CS ROTEMP2
AD L # -COEFFQ.(Q) + COEFFR.(R) IS NOW IN A
TS 7
TCF +3
INDEX A # -COEFFQ.(Q) + COEFFR.(R) HAS OVERFLOWED
CS LIMITS # AND IS LIMITED TO POSMAX OR NEGMAX
LXCH ROTEMP1 # COEFFQ.(Q) + COEFFR.(R) IS PUT INTO L
TC Q
SELCTSUB INDEX ROTINDEX
CA ALLJETS
INDEX NUMBERT
MASK TYPEPOLY
TS POLYTEMP
# Page 1458
MASK CH5MASK
CCS A
TCF +2
TC Q
CA THREE
FAILOOP TS NUMBERT
INDEX ROTINDEX
CA ALLJETS
INDEX NUMBERT
MASK TYPEPOLY
TS POLYTEMP
MASK CH5MASK
EXTEND
BZF FAILOOP -2
CCS NUMBERT
TCF FAILOOP
INDEX AXISCTR
TS TJU
TC ALARM
OCT 02004
TCF NOROTAT
ALLJETS OCT 00110 # -U 6 13
OCT 00022 # -V 2 9
OCT 00204 # +U 5 14
OCT 00041 # +V 1 10
TYPEPOLY OCT 00125 # -X 1 5 9 13
OCT 00252 # +X 2 6 10 14
OCT 00146 # A 2 5 10 13
OCT 00231 # B 1 6 9 14
OCT 00377 # ALL 1 2 5 6 9 10 13 14
# THE FOLLOWING SETS THE INTERRUPT FLIP-FLOP AS SOON AS POSSIBLE, WHICH PERMITS A RETURN TO THE INTERRUPTED JOB.
CLOSEOUT CA ADRRUPT
TC MAKERUPT
ADRRUPT ADRES ENDJASK
ENDJASK DXCH DAPARUPT
DXCH ARUPT
DXCH DAPBQRPT
XCH BRUPT
LXCH Q
CAF NEGMAX # NEGATIVE DAPZRUPT SIGNALS JASK IS OVER.
DXCH DAPZRUPT
DXCH ZRUPT
TCF NOQRSM
# Page 1459
BLOCK 3
SETLOC FFTAG6
BANK
COUNT* $$/DAP
MAKERUPT EXTEND
EDRUPT MAKERUPT

156
Luminary099/R63.s Normal file
View File

@ -0,0 +1,156 @@
# Copyright: Public domain.
# Filename: R63.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 338-341
# Mod history: 2009-05-16 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 338
# SUBROUTINE NAME: V89CALL
# MOD NO: 0 DATE: 9 JAN 1968
# MOD BY: DIGITAL DEVEL GROUP LOG SECTION: R63
#
# FUNCTIONAL DESCRIPTION:
#
# CALLED BY VERB 89 ENTER DURING P00. PRIO 10 USED. CALCULATES AND
# DISPLAYS FINAL FDAI BALL ANGLES TO POINT LM +X OR +Z AXIS AT CSM.
#
# 1. KEY IN V 89 E ONLY IF IN PROG 00. IF NOT IN P00, OPERATOR ERROR AND
# EXIT R63, OTHERWISE CONTINUE.
#
# 2. IF IN P00, DO IMU STATUS CHECK ROUTINE (R02BOTH). IF IMU ON AND ITS
# ORIENTATION KNOWN TO LGC, CONTINUE.
#
# 3. FLASH DISPLAY V 04 N 06. R2 INDICATES WHICH SPACECRAFT AXIS IS TO
# BE POINTED AT CSM. INITIAL CHOICE IS PREFERRED (+Z) AXIS (R2=1).
# ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT =1) BY V 22 E 2 E. CONTINUE
# AFTER KEYING IN PROCEED.
#
# 4. BOTH VEHICLE STATE VECTORS UPDATED BY CONIC EQS.
#
# 5. HALF MAGNITUDE UNIT LOS VECTOR (IN STABLE MEMBER COORDINATES) AND
# HALF MAGNITUDE UNIT SPACECRAFT AXIS VECTOR (IN BODY COORDINATES)
# PREPARED FOR VECPOINT.
#
# 6. GIMBAL ANGLES FROM VECPOINT TRANSFORMED INTO FDAI BALL ANGLES BY
# BALLANGS. FLASH DISPLAY V 06 N 18 AND AWAIT RESPONSE.
#
# 7 RECYCLE -- RETURN TO STEP 4.
# TERMINATE -- EXIT R63
# PROCEED -- RESET 3AXISFLAG AND CALL R60LEM FOR ATTITUDE MANEUVER.
#
# CALLING SEQUENCE: V 89 E.
#
# SUBROUTINES CALLED: CHECKP00H, R02BOTH, GOXDSPF, CSMCONIC, LEMCONIC,
# VECPOINT, BALLANGS, R60LEM.
#
# NORMAL EXIT MODES: TC ENDEXT
#
# ALARMS: 1. OPERATOR ERROR IF NOT IN P00.
# 2. PROGRAM ALARM IF IMU IS OFF.
# 3. PROGRAM ALARM IF IMU ORIENTATION IS UNKNOWN.
#
# OUTPUT: NONE
#
# ERASABLE INITIALIZATION REQUIRED: NONE
#
# DEBRIS: OPTION1, +1, TDEC1, PCINTVSM, SCAXIS, CPHI, CTHETA, CPSI,
# Page 339
# 3AXISFLAG.
EBANK= RONE
BANK 32
SETLOC BAWLANGS
BANK
COUNT* $$/R63
V89CALL TC BANKCALL # IMU STATUS CHECK. RETURNS IF ORIENTATION
CADR R02BOTH # KNOWN. ALARMS IF NOT.
CAF THREE # ALLOW ASTRONAUT TO SELECT DESIRED
TS OPTIONX # TRACKING ATTITUDE AXIS.
CAF ONE
TS OPTIONX +1
CAF VB04N12 # V 04 N 12.
TC BANKCALL
CADR GOFLASH
TC ENDEXT # TERMINATE
TC +2 # PROCEED
TC -5 # DATA IN. OPTION1+1 = 1 FOR Z AXIS
V89RECL TC INTPRET # 2 FOR X AXIS
RTB DAD
LOADTIME # READ PRESENT TIME
DP1MIN
STORE TSTART82 # SAVE TIME FOR LEMCONIC CALL
STCALL TDEC1 # STORE TIME FOR CSMCONIC CALL
CSMCONIC # CSM STATE VECTOR UPDATE
VLOAD # CSMCONIC LEFT R VECTOR IN RATT
RATT
STODL RONE # SAVE FOR LINE OF SIGHT (LOS) COMPUTATION
TSTART82
STCALL TDEC1 # STORE TIME FOR LEMCONIC CALL
LEMCONIC # LEM STATE VECTOR UPDATE
VLOAD VSU # CSM POSITION -- LEM POSITION -- LOS
RONE # LOS VECTOR LEFT IN MPAC
RATT
MXV RTB # (REFSMAT X LOS). TRANSFORMS LOS FROM
REFSMMAT # REFERENCE COORD TO STAB MEMB COORD.
NORMUNIT
STORE POINTVSM # STORE LOS FOR VECPOINT CALCULATION
EXIT
CS OPTIONX +1 # 1 FOR Z AXIS. 2 FOR X AXIS.
AD ONE
EXTEND
BZF ALINEZ
ALINEX TC INTPRET # X AXIS ALIGNMENT
VLOAD
UNITX # READ (.5, 0, 0)
# Page 340
V89CALL1 STCALL SCAXIS # STORE SELECTED ALIGNMENT AXIS
VECPOINT # PUTS DESIRED GIM ANG (OG,IG,MG) IN TMPAC
STORE CPHI # STOR GIMBAL ANGLES FOR BALLANGS CALL
EXIT
TC BANKCALL
CADR BALLANGS # PUTS DESIRED BALL ANGLE IN FDAIX,Y,Z
CAF VB06N18 # V 06 N 18
TC BANKCALL # NOUN 18 REFERS TO FDAIX,Y,Z
CADR GOFLASH
TC ENDEXT # TERMINATE
TC +2 # PROCEED
TC V89RECL # RECYCLE
TC DOWNFLAG # RESET 3 AXIS FLAG
ADRES 3AXISFLG # RESET BIT6 FLAG WORD 5
TC BANKCALL # PERFORMS LEM MANEUVER TO ALIGN SELECTED
CADR R60LEM # SPACECRAFT AXIS TO CSM.
TCF ENDEXT # TERMINATE R63
ALINEZ TC INTPRET # Z AXIS ALIGNMENT
VLOAD GOTO
UNITZ # READ (0, 0, .5)
V89CALL1
VB04N12 VN 412
VB06N18 VN 0618
# Page 341
DP1MIN 2DEC 6000

View File

@ -0,0 +1,103 @@
# Copyright: Public domain.
# Filename: RADAR_LEADIN_ROUTINES.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 490-491
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 490
BANK 25
SETLOC RRLEADIN
BANK
EBANK= RSTACK
# RADAR SAMPLING LOOP.
COUNT* $$/RLEAD
RADSAMP CCS RSAMPDT # TIMES NORMAL ONCE PER SECOND SAMLING
TCF +2
TCF TASKOVER # +0 INSERTED MANUALLY TERMINATES TEST.
TC WAITLIST
EBANK= RSTACK
2CADR RADSAMP
CAF PRIO25
TC NOVAC
EBANK= RSTACK
2CADR DORSAMP
CAF BIT14 # FOR CYCLIC SAMPLING, RTSTDEX=
EXTEND # RTSTLOC/2 + RTSTBASE
MP RTSTLOC
AD RTSTBASE # 0 FOR RR, 2 FOR LR.
TS RTSTDEX
TCF TASKOVER
# DO THE ACTUAL RADAR SAMPLE.
DORSAMP TC VARADAR # SELECTS VARIABLE RADAR CHANNEL.
TC BANKCALL
CADR RADSTALL
INCR RFAILCNT # ADVANCE FAIL COUNTER BUT ACCEPT BAD DATA
DORSAMP2 INHINT
CA FLAGWRD5 # DON'T UPDATE RSTACK IF IN R77.
MASK R77FLBIT
CCS A
TCF +4
DXCH SAMPLSUM
INDEX RTSTLOC
DXCH RSTACK
CS RTSTLOC # CYCLE RTSTLOC.
AD RTSTMAX
EXTEND
# Page 491
BZF +3
CA RTSTLOC
AD TWO # STORAGE IS DP
TS RTSTLOC
TCF ENDOFJOB # CONTINUOUS SAMPLING AND 2N TRIES -- GONE.
# VARIABLE RADAR DATA CALLER FOR ONE MEASUREMENT ONLY.
VARADAR CAF ONE # WILL BE SENT TO RADAR ROUTINE IN A BY
TS BUF2 # SWCALL
INDEX RTSTDEX
CAF RDRLOCS
TCF SWCALL # NOT TOUCHING Q.
RDRLOCS CADR RRRANGE # = 0
CADR RRRDOT # = 1
CADR LRVELX # = 2
CADR LRVELY # = 3
CADR LRVELZ # = 4
CADR LRALT # = 5

View File

@ -0,0 +1,173 @@
# Copyright: Public domain.
# Filename: RCS_FAILURE_MONITOR.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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 190-192
# Mod history: 2009-05-19 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 190
# PROGRAM DESCRIPTION:
#
# AUTHOR: J. S. MILLER
#
# MODIFIED 6 MARCH 1968 BY P. S. WEISSMAN TO SET UP JOB FOR 1/ACCS WHEN THE MASKS ARE CHANGED.
#
# THIS ROUTINE IS ATTACHED TO T4RUPT, AND IS ENTERED EVERY 480 MS. ITS FUNCTION IS TO EXAMINE THE LOW 8 BITS
# OF CHANNEL 32 TO SEE IF ANY ISOLATION-VALVE CLOSURE BITS HAVE APPEARED OR DISAPPEARED (THE CREW IS WARNED OF JET
# FAILURES BY LAMPS LIT BY THE GRUMMAN FAILURE-DETECTION CIRCUITRY; THEY MAY RESPOND BY OPERATING SWITCHES WHICH
# ISOLATE PAIRS OF JETS FROM THE PROPELLANT TANKS AND SET BITS IN CHANNEL 32). iN THE EVENT THAT CHANNEL 32 BITS
# DIFFER FROM `PVALVEST', THE RECORD OF ACTIONS TAKEN BY THIS ROUTINE, THE APPROPRIATE BITS IN `CH5MASK' &
# `CH6MASK', USED BY THE DAP JET-SELECTION LOGIC, ARE UPDATED, AS IS `PVALVEST'. TO SPEED UP & SHORTEN THE
# ROUTINE, NO MORE THAN ONE CHANGE IS ACCEPTED PER ENTRY. THE HIGHEST-NUMBERED BIT IN CHANNEL 32 WHICH REQUIRES
# ACTION IS THE ONE PROCESSED.
#
# THE CODING IN THE FAILURE MONITOR HAS BEEN WRITTEN SO AS TO HAVE ALMOST COMPLETE RESTART PROTECTION. FOR
# EXAMPLE, NO ASSUMPTION IS MADE WHEN SETTING A `CH5MASK' BIT TO 1 THAT THE PREVIOUS STATE IS 0, ALTHOUGH IT OF
# COURSE SHOULD BE. ONE CASE WHICH MAY BE SEEN TO EVADE PROTECTION IS THE OCCURRENCE OF A RESTART AFTER UPDATING
# ONE OR BOTH DAP MASK-WORDS BUT BEFORE UPDATING `PVALVEST', COUPLED WITH A CHANGE IN THE VALVE-BIT BACK TO ITS
# FORMER STATE. THE CONSEQUENCE OF THIS IS THAT THE NEXT ENTRY WOULD NOT SEE THE CHANGE INCOMPLETELY INCORP-
# ORATED BY THE LAST PASS (BECAUSE IT WENT AWAY AT JUST THE RIGHT TIME), BUT THE DAP MASK-WORDS WILL BE INCORRECT.
# THIS COMBINATION OF EVENTS SEEMS QUITE REMOTE, BUT NOT IMPOSSIBLE UNLESS THE CREW OPERATES THE SWITCHES AT HALF-
# SECOND INTERVALS OR LONGER. IN ANY EVENT, A DISAGREEMENT BETWEEN REALITY AND THE DAP MASKS WILL BE CUREED IF
# THE MISINTERPRETED SWITCH IS REVERSED AND THEN RESTORED TO ITS CORRECT POSITION (SLOWLY).
#
# CALLING SEQUENCE:
#
# TCF RCSMONIT # (IN INTERRUPT MODE, EVERY 480 MS.)
#
# EXIT: TCF RCSMONEX (ALL PATHS EXIT VIA SUCH AN INSTRUCTION)
RCSMONEX EQUALS RESUME
# ERASABLE INITIALIZATION REQUIRED:
#
# VIA FRESH START: PVALVEST = +0 (ALL JETS ENABLED)
# CH5MASK,CH6MASK = +0 (ALL JETS OK)
#
# OUTPUT: CH5MASK & CH6MASK UPDATED (1'S WHERE JETS NOT TO BE USED, IN CHANNEL 5 & 6 FORMAT)
# PVALTEST UPDATED (1'S WHEN VALVE CLOSURES HAVE BEEN TRANSLATED INTO CH5MASK & CH6MASK; CHAN 32 FORMAT)
# JOB TO DO 1/ACCS.
#
# DEBRIS: A, L, AND Q AND DEBRIS OF NOVAC.
#
# SUBROUTINE CALLED: NOVAC.
EBANK= CH5MASK
BANK 23
SETLOC RCSMONT
BANK
# Page 191
COUNT* $$/T4RCS
RCSMONIT EQUALS RCSMON
RCSMON CS ZERO
EXTEND
RXOR CHAN32 # PICK UP + INVERT INVERTED CHANNEL 32.
MASK LOW8 # KEEP JET-FAIL BITS ONLY.
TS Q
CS PVALVEST # _ _
MASK Q # FORM PC + PC.
TS L # (P = PREVIOUS ISOLATION VALVE STATE,
CS Q # C = CURRENT VALVE STATE (CH32)).
MASK PVALVEST
ADS L # RESULT NZ INDICATES ACTION REQUIRED.
EXTEND
BZF RCSMONEX # QUIT IF NO ACTION REQUIRED.
EXTEND
MP BIT7 # MOVE BITS 8-1 OF A TO 14-7 OF L.
XCH L # ZERO TO L IN THE PROCESS.
-3 INCR L
DOUBLE # BOUND TO GET OVERFLOW IN THIS LOOP,
OVSK # SINCE WE ASSURED INITIAL NZ IN A.
TCF -3
INDEX L
CA BIT8 -1 # SAVE THE RELEVANT BIT (8-1).
TS Q
MASK PVALVEST # LOOK AT PREVIOUS VALVE STATE BIT.
CCS A
TCF VOPENED # THE VALVE HAS JUST BEEN OPENED.
CS CH5MASK # THE VALVE HAS JUST BEEN CLOSED.
INDEX L
MASK 5FAILTAB
ADS CH5MASK # SET INHIBIT BIT FOR CHANNEL 5 JET.
CS CH6MASK
INDEX L
MASK 6FAILTAB
ADS CH6MASK # SET INGIBIT BIT FOR CHANNEL 6 JET
CA Q
ADS PVALVEST # RECORD ACTION TAKEN.
TCF 1/ACCFIX # SET UP 1/ACCJOB AND EXIT.
# Page 192
VOPENED INDEX L # A VALVE HAS JUST BEEN OPENED.
CS 5FAILTAB
MASK CH5MASK
TS CH5MASK # REMOVE INHIBIT BIT FOR CHANNEL 5 JET.
INDEX L
CS 6FAILTAB
MASK CH6MASK
TS CH6MASK # REMOVE INHIBIT BIT FOR CHANNEL 6 JET.
CS Q
MASK PVALVEST
TS PVALVEST # RECORD ACTION TAKEN.
1/ACCFIX CAF PRIO27 # SET UP 1/ACCS SO THAT THE SWITCH CURVES
TC NOVAC # FOR TJETLAW CAN BE MODIFIED IF CH5MASK
EBANK= AOSQ # HAS BEEN ALTERED.
2CADR 1/ACCJOB
TCF RCSMONEX # EXIT.
5FAILTAB EQUALS -1 # CH 5 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00040 # 8
OCT 00020 # 7
OCT 00100 # 6
OCT 00200 # 5
OCT 00010 # 4
OCT 00001 # 3
OCT 00004 # 2
OCT 00002 # 1
6FAILTAB EQUALS -1 # CH 6 JET BIT CORRESPONDING TO CH 32 BIT:
OCT 00010 # 8
OCT 00020 # 7
OCT 00004 # 6
OCT 00200 # 5
OCT 00001 # 4
OCT 00002 # 3
OCT 00040 # 2
OCT 00100 # 1

236
Luminary099/RTB_OP_CODES.s Normal file
View File

@ -0,0 +1,236 @@
# Copyright: Public domain.
# Filename: RTB_OP_CODES.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1397-1401
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1397
BANK 22
SETLOC RTBCODES
BANK
EBANK= XNB
COUNT* $$/RTB
# LOAD TIME2, TIME1 INTO MPAC:
LOADTIME EXTEND
DCA TIME2
TCF SLOAD2
# CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
# DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
CDULOGIC CCS MPAC
CAF ZERO
TCF +3
NOOP
CS HALF
TS MPAC +1
CAF ZERO
XCH MPAC
EXTEND
MP HALF
DAS MPAC
TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION
# FORCE TP SIGN AGREEMENT IN MPAC:
SGNAGREE TC TPAGREE
TCF DANZIG
# CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
# SCALED IN HALF-REVOLUTIONS.
1STO2S TC 1TO2SUB
CAF ZERO
TS MPAC +1
TCF NEWMODE
# DO 1STO2S ON A VECTOR OF ANGLES:
V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
DXCH MPAC +5
DXCH MPAC
TC 1TO2SUB
# Page 1398
TS MPAC +2
DXCH MPAC +3
DXCH MPAC
TC 1TO2SUB
TS MPAC +1
CA MPAC +5
TS MPAC
TPMODE CAF ONE # MODE IS TP.
TCF NEWMODE
# V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.
2V1STO2S TC 1TO2SUB
DXCH MPAC +3
DXCH MPAC
TC 1TO2SUB
TS L
CA MPAC +3
TCF SLOAD2
# SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:
1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
DDOUBL
CCS A
AD ONE
TCF +2
COM # THIS WAS REVERSE OF MSU.
TS MPAC # AND SKIP ON OVERFLOW.
TC Q
INDEX A # OVERFLOW UNCORRECT AND IN MSU.
CAF LIMITS
ADS MPAC
TC Q
# THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL.
# QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL.
# (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
CDUINC TS TEM2 # 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT
INDEX BUF
CCS 0 # CHANGE 2S COMPL. ANGLE(IN BUF)INTO 1S
AD ONE
TCF +4
AD ONE
# Page 1399
AD ONE # OVEFLOW HERE IF 2S COMPL. IS 180 DEG.
COM
AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
CCS A # BACK TO 2S COMPL.
AD ONE
TCF +2
COM
TS TEM2 # STORE 14BIT QUANTITY WITH PRESENT SIGN
TCF +4
INDEX A # SIGN.
CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000
AD TEM2
INDEX BUF
TS 0 # STORE NEW ANGLE IN 2S COMPLEMENT.
TC Q
# Page 1400
# RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
CA X1
TC BANKCALL
CADR IMUPULSE
TCF DANZIG
# Page 1401
# THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).
# FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.
#
# ENTRY MAY BE BY EITHER OF THE FOLLOWING:
# 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:
# ENTRY: BOVB
# SIGNMPAC
# 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:
# ENTRY: RTB
# SIGNMPAC
# IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.
SIGNMPAC EXTEND
DCA DPOSMAX
DXCH MPAC
CCS A
DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS
TCF SLOAD2 +2
TCF +1
EXTEND
DCS DPOSMAX
TCF SLOAD2
# RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW
# UP WHEN THE VECTOR BEING UNITIZED IS VERY SMALL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO. IF NORMUNIT
# IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNED IN 36D WILL BE TOO LARGE
# BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED ATE 34D WILL BE TOO BIG BY A FACTOR OF 2(26).
NORMUNX1 CAF ONE
TCF NORMUNIT +1
NORMUNIT CAF ZERO
AD FIXLOC
TS MPAC +2
TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS
CADR VECAGREE
CCS MPAC
TCF NOSHIFT
TCF +2
TCF NOSHIFT
CCS MPAC +3
TCF NOSHIFT
TCF +2
TCF NOSHIFT
CCS MPAC +5
TCF NOSHIFT
TCF +2
TCF NOSHIFT
# Page 1402
CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13
EXTEND
MP BIT14
DAS MPAC # DAS GAINS A LITTLE ACCURACY
CA MPAC +4
EXTEND
MP BIT14
DAS MPAC +3
CA MPAC +6
EXTEND
MP BIT14
DAS MPAC +5
CAF THIRTEEN
INDEX MPAC +2
TS 37D
OFFTUNIT TC POSTJUMP
CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT
NOSHIFT CAF ZERO
TCF OFFTUNIT -2
# RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC.
VECSGNAG TC BANKCALL
CADR VECAGREE
TC DANZIG
# *** END OF SKIPPER .087 ***

View File

@ -0,0 +1,201 @@
# Copyright: Public domain.
# Filename: S-BAND_ANTENNA_FOR_LM.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 486-489
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-07 RSB Corrected a misprint.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 486
# SUBROUTINE NAME: R05 -- S-BAND ANTENNA FOR LM
#
# MOD0 BY T. JAMES
# MOD1 BY P. SHAKIR
#
# FUNCTIONAL DESCRIPTION
#
# THE S-BAND ANTENNA ROUTINE, R05, COMPUTES AND DISPLAYS THE PITCH AND
# YAW ANTENNA GIMBAL ANGLES REQUIRED TO POINT THE LM STEERABLE ANTENNA
# TOWARD THE CENTER OF THE EARTH. THIS ROUTINE IS SELECTED BY THE ASTRO-
# NAUT VIA DSKY ENTRY DURING COASTING FLIGHT OR WHEN THE LM IS ON THE MOON
# SURFACE. THE EARTH OR MOON REFERENCE COORDINATE SYSTEM IS USED DEPENDING
# ON WHETHER THE LM IS ABOUT TO ENTER OR HAS ALREADY ENTERED THE MOON
# SPHERE OF INFLUENCE, RESPECTIVELY.
#
# TO CALL SUBROUTINE, ASTRONAUT KEYS IN V 64 E
#
# SUBROUTINES CALLED ---
# R02BOTH
# INTPRET
# LOADTIME
# LEMCONIC
# LUNPOS
# CDUTRIG
# *SMNB*
# BANKCALL
# B50OFF
# ENDOFJOB
# BLANKRET
#
# RETURNS WITH
# PITCH ANGLE IN PITCHANG REV. B0
# YAW ANGLE IN YAWANG REV. B0
#
# ERASABLES USED
# PITCHANG
# YAWANG
# RLM
# VAC AREA
BANK 41
SETLOC SBAND
BANK
EBANK= WHOCARES
COUNT* $$/R05
SBANDANT TC BANKCALL
# Page 487
CADR R02BOTH # CHECK IF IMU IS ON AND ALIGNED
TC INTPRET
SETPD RTB
0D
LOADTIME # PICK UP CURRENT TIME
STCALL TDEC1 # ADVANCE INTEGRATION TO TIME IN TDEC1
LEMCONIC # USING CONIC INTEGRATION
SLOAD BHIZ
X2 # X2 =0 EARTH SPHERE, X2 =2 MOON SPHERE
CONV4
VLOAD
RATT
STODL RLM
TAT
CONV3 CALL
LUNPOS # UNIT POSITION VECTOR FROM EARTH TO MOON
VLOAD VXSC
VMOON
REMDIST # MEAN DISTANCE FROM EARTH TO MOON
VSL1 VAD
RLM
GOTO
CONV5
CONV4 VLOAD
RATT # UE = -UNIT(RATT) EARTH SPHERE
CONV5 SETPD UNIT # UE = -UNIT((REM)(UEM) + RL) MOON SPHERE
0D # SET PL POINTER TO 0
VCOMP CALL
CDUTRIG # COMPUTE SINES AND COSINES OF CDU ANGLES
MXV VSL1 # TRANSFORM REF. COORDINATE SYSTEM TO
REFSMMAT # STABLE MEMBER B-1 X B-1 X B+1 = B-1
PUSH DLOAD # 8D
HI6ZEROS
STORE PITCHANG
STOVL YAWANG # ZERO OUT ANGLES
CALL
*SMNB*
STODL RLM # PRE-MULTIPLY RLM BY (NBSA) MATRIX(B0)
RLM +2
PUSH DSU
RLM
DMP
1OVSQRT2
STODL RLM +2
DAD DMP
RLM
1OVSQRT2
STOVL RLM # R B-1
RLM
UNIT PDVL
# Page 488
RLM
VPROJ VSL2 # PROJECTION OF R ONTO LM XZ PLANE.
HIUNITY
BVSU BOV # CLEAR OVERFLOW INDICATOR IF ON
RLM
COVCNV
COVCNV UNIT BOV # EXIT ON OVERFLOW
SBANDEX
PUSH VXV # URP VECTOR B-1
HIUNITZ
VSL1 VCOMP # UZ X URP = -(URP X UZ)
STORE RLM # X VEC B-1
DOT PDVL # SGN(X.UY) UNSCALED
HIUNITY
RLM
ABVAL SIGN
ASIN # ASIN((SGN(X.UY))ABV(X)) REV B0
STOVL PITCHANG
URP
DOT BPL
HIUNITZ
NOADJUST # YES, -90 TO +90
DLOAD DSU
HIDPHALF
PITCHANG
STORE PITCHANG
NOADJUST VLOAD VXV
UR # Z = (UR X URP)
URP
VSL1
STODL RLM # Z VEC B-1
PITCHANG
SIN VXSC
HIUNITZ
PDDL COS
PITCHANG
VXSC VSU
HIUNITX # (UX COS ALPHA) - (UZ SIN ALPHA)
DOT PDVL # YAW.Z
RLM
RLM
ABVAL SIGN
ASIN
STORE YAWANG
SBANDEX EXIT
CA EXTVBACT
MASK BIT5 # IS BIT5 STILL ON
EXTEND
BZF ENDEXT # NO
CAF PRIO5
# Page 489
TC PRIOCHNG
CAF V06N51 # DISPLAY ANGLES
TC BANKCALL
CADR GOMARKFR
TC B5OFF # TERMINATE
TC B5OFF # PROCEED
TC ENDOFJOB # RECYCLE
CAF BIT3 # IMMEDIATE RETURN
TC BLANKET # BLANK R3
CAF PRIO4
TC PRIOCHNG
TC SBANDANT +2 # YES, CONTINUE DISPLAYING ANGLES.
V06N51 VN 0651
1OVSQRT2 2DEC .7071067815 # 1/SQRT(2)
UR EQUALS 0D
URP EQUALS 6D
SBANK= LOWSUPER
# END OF LNYAIDE .001 ***

1715
Luminary099/SERVICER.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,196 @@
# Copyright: Public domain.
# Filename: SPS_BACK-UP_RCS_CONTROL.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1507-1510
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1507
# PROGRAM NAME: SPSRCS
# AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS)
# MODIFIED: TO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968
# MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969
#
# FUNCTIONAL DESCRIPTION:
# THE PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
# PLANE LOGIC.
#
# 1. JET SENSE TEST (SPSRCS)
# IF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE
# IF JETS ARE FIRING POSITIVELY, SET OLDSENSE POSITIVE AND CONTINUE
# IF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
#
# 2. RATE DEAD BAND TEST
# IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE
# JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
# IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE, LEAVE
# JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
#
# 3. OUTER RATE LIMIT TEST (SPSSTART)
# IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
# TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
#
# 4. COAST ZONE TEST
# IF STATE (E,EDOT) IS BELOW LINE E + 4 X EDOT > -1.4 DEG AND EDOT IS LESS THAN 1.30 DEG/SEC SET JET TIME
# POSITIVE AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
# IF STATE IS ABOVE LINE E + 4 X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE
# AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
#
# 5. INHIBITION LOGIC
# IF OLDSENSE IS NON-ZERO:
# A) RETURN IF JET TIME AS THE SAME SIGN AS OLDSENSE
# B) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO
# C) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN
# OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
# IF OLDSENSE IS ZERO:
# A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
# B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
# *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P AND UV AXES,
# RESPECTIVELY, IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
# Page 1508
# EACH DAP PASS.
#
# THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
# AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
# P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.
#
# CALLING SEQUENCE:
# INHINT
# TC IBNKCALL
# CADR SPSRCE
#
# EXIT:
# TC Q
#
# ALARM/ABORT MODE: NONE
#
# SUBROUTINES CALLED: NONE
#
# INPUT: E, EDOT
# TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
#
# OUTPUT: TJP, TJV, TJU
BANK 21
SETLOC DAPS4
BANK
COUNT* $$/DAPBU
EBANK= TJU
RATELIM2 OCT 00632 # 1.125 DEG/SEC
POSTHRST CA HALF
NDX AXISCTR
TS TJU
CCS OLDSENSE
TCF POSCHECK # JETS FIRING POSITIVELY
TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
CS TJU
CCS A
TC Q # RETURN
TCF +2
TCF +1 # JETS COMMANDED OFF. SET CTR AND RETURN
SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
CA UTIME # SET JET TIME TO ZER, AND RETURN
# Page 1509
INDEX AXISCTR
TS UJETCTR
ZAPTJ CA ZERO
INDEX AXISCTR
TS TJU
TC Q
POSCHECK INDEX AXISCTR
CA TJU
TCF NEGCHECK +2
CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
CCS UJETCTR
TCF +2
TC Q # CTR IS NOT POSITIVE. RETURN
TCF ZAPTJ # CTR IS POSITIVE. INHIBIT FIRINGS
TC Q # CTR IS NOT POSITIVE. RETURN
OCT 00004
UTIME OCT 00012
OCT 00012
OLDSENSE EQUALS DAPTREG1
NEGFIRE CS ONE # JETS FIRING NEGATIVELY
TS OLDSENSE
CA EDOT
TCF +4
PLUSFIRE CA ONE
TS OLDSENSE
CS EDOT # RATE DEAD BAND TEST
LXCH A
CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
CCS A
CA RATEDB1
AD L
EXTEND
BZMF SPSSTART
TCF POSTHRST +3
SPSRCS INDEX AXISCTR # JET SENSE TEST
CCS TJU
TCF PLUSFIRE # JETS FIRING POSITIVELY
TCF +2
TCF NEGFIRE # JETS FIRING NEGATIVELY
TS OLDSENSE # JETS OFF
SPSSTART CA EDOT # OUTER RATE LIMIT TEST
EXTEND
MP RATELIM1
CCS A
TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
TCF +2
TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
CA EDOT # COAST ZONE TEST
# Page 1510
AD E
EXTEND
MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
EXTEND
BZF TJZERO
EXTEND
BZMF +7
CA EDOT
AD RATELIM2
EXTEND
BZMF TJZERO
NEGTHRST CS HALF
TCF POSTHRST +1
+7 CS RATELIM2
AD EDOT
EXTEND
BZMF POSTHRST
TJZERO CA ZERO
TCF POSTHRST +1
RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC
# *** END OF LMDAP .015 ***

View File

@ -0,0 +1,163 @@
# Copyright: Public domain.
# Filename: T6-RUPT_PROGRAMS.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1403-1405
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1403
# PROGRAM NAMES: (1) T6JOBCHK MOD. NO. 5 OCTOBER 2, 1967
# (2) DOT6RUPT
# MODIFICATION BY: LOWELL G. HULL (A.C.ELECTRONICS)
#
# THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
# SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
# ESTABLISHED AND MUST NOT BE TAMPERED WITH:
# 1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
# 2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
# 3. TO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED:
# A. A POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6.
# B. THE TIME6 CLOCK IS ENABLED.
# C. TIME6 IS INTERROGATED AND IS:
# I. NEVER FOUND NEGATIVE (NON-ZERO) OR +0.
# II. SOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE.
# III. SOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED.
# IV. SOMETIMES FOUND NEGATIVE ZERO INDICATING THAT:
# A. A T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR
# B. A T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR
# C. A T6RUPT IS IN PROCESS NOW.
# 4. ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
# EVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
# (5. PROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.)
#
# T6JOBCHK CALLING SEQUENCE:
# L TC T6JOBCHK
# L+1 (RETURN)
#
# DOT6RUPT CALLING SEQUENCE:
# DXCH ARUPT # T6RUPT LEAD IN AT LOCATION 4004.
# EXTEND
# DCA T6ADR
# DTCB
#
# SUBROUTINES CALLED: DOT6RUPT CALLS T6JOBCHK.
#
# NORMAL EXIT MODES: T6JOBCHK RETURNS TO L +1.
# DOT6RUPT TRANSFERS CONTROL TO RESUME.
#
# ALARM/ABORT MODES: NONE.
#
# INPUT: TIME6 NXT6ADR OUTPUT: TIME6 NXT6ADR CHANNEL 5
# T6NEXT T6NEXT +1 T6NEXT T6NEXT +1 CHANNEL 6
# T6FURTHA T6FURTHA +1 T6FURTHA T6FURTHA +1 BIT15/CH13
#
# DEBRIS: T6JOBCHK CLOBBERS A. DOT6RUPT CLOBBERS NOTHING.
BLOCK 02
# Page 1404
BANK 17
SETLOC DAPS2
BANK
EBANK= T6NEXT
COUNT* $$/DAPT6
T6JOBCHK CCS TIME6 # CHECK TIME6 FOR WAITING T6RUPT:
TC Q # NONE: CLOCK COUNTING DOWN.
TC CCSHOLE
TC T6JOBCHK +3
# CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E., WHEN A T6RUPT MUST BE PROCESSED).
T6JOB CAF POSMAX # DISABLE CLOCK: NEEDED SINCE RUPT OCCURS
EXTEND # 1 DINC AFTER T6 = 77777. FOR 625 MUSECS
WAND CHAN13 # MUST NOT HAVE T6 = +0 WITH ENABLE SET
CA POSMAX
ZL
DXCH T6FURTHA
DXCH T6NEXT
LXCH NXT6ADR
TS TIME6
AD PRIO37
TS A
TCF ENABLET6
CA POSMAX
TS TIME6
TCF GOCH56
ENABLET6 CA BIT15
EXTEND
WOR CHAN13
CA T6NEXT
AD PRIO37
TS A
TCF GOCH56
CA POSMAX
TS T6NEXT
GOCH56 INDEX L
TCF WRITEP -1
BLOCK 02
SETLOC FFTAG9
BANK
EBANK= CDUXD
COUNT* $$/DAPT6
CA NEXTP
WRITEP EXTEND
WRITE CHAN6
# Page 1405
TC Q
CA NEXTU
WRITEU TS L
CS 00314OCT
EXTEND
RAND CHAN5
AD L
EXTEND
WRITE CHAN5
TC Q
CA NEXTV
WRITEV TS L
CA 00314OCT
TCF -9D
00314OCT OCT 00314
BANK 17
SETLOC DAPS2
BANK
EBANK= T6NEXT
COUNT* $$/DAPT6
DOT6RUPT LXCH BANKRUPT # (INTERRUPT LEAD INS CONTINUED)
EXTEND
QXCH QRUPT
TC T6JOBCHK # CALL T6JOBCHK.
TCF RESUME # END TIME6 INTERRUPT PROCESSOR.

View File

@ -0,0 +1,335 @@
# Copyright: Public domain.
# Filename: THE_LUNAR_LANDING.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: Hartmuth Gutsche<hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 785-792
# Mod history: 2009-05-20 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 785
BANK 32
SETLOC F2DPS*32
BANK
EBANK= E2DPS
# *************************************
# P63: THE LUNAR LANDING, BRAKING PHASE
# *************************************
COUNT* $$/P63
P63LM TC PHASCHNG
OCT 04024
TC BANKCALL # DO IMU STATUS CHECK ROUTINE R02
CADR R02BOTH
CAF P63ADRES # INITIALIZE WHICH FOR BURNBABY
TS WHICH
CAF DPSTHRSH # INITIALIZE DVMON
TS DVTHRUSH
CAF FOUR
TS DVCNTR
CS ONE # INITIALIZE WCHPHASE AND FLPASS0
TS WCHPHASE
CA ZERO
TS FLPASS0
CS BIT14
EXTEND
WAND CHAN12 # REMOVE TRACK-ENABLE DISCRETE.
FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
CLEAR CLEAR
NOTHROTL
REDFLAG
CLEAR SET
LRBYPASS
MUNFLAG
CLEAR CLEAR
P25FLAG # TERMINATE P25 IF IT IS RUNNING.
RNDVZFLG # TERMINATE P20 IF IT IS RUNNING.
# ********************************
IGNALG SETPD VLOAD # FIRST SET UP INPUTS FOR RP-TO-R:
# Page 786
0 # AT 0D LANDING SITE IN MOON FIXED FRAME
RLS # AT 6D ESTIMATED TIME OF LANDING
PDDL PUSH # MPAC NON-ZERO TO INDICATE LUNAR CASE
TLAND
STCALL TPIP # ALSO SET TPIP FOR FIRST GUIDANCE PASS
RP-TO-R
VSL4 MXV
REFSMMAT
STCALL LAND
GUIDINIT # GUIDINIT INITIALIZES WM AND /LAND/
DLOAD DSU
TLAND
GUIDDURN
STCALL TDEC1 # INTEGRATE STATE FORWARD TO THAT TIME
LEMPREC
SSP VLOAD
NIGNLOOP
40D
UNITX
STOVL CG
UNITY
STOVL CG +6
UNITZ
STODL CG +14
99999CON
STOVL DELTAH # INITIALIZE DELTAH FOR V16N68 DISPLAY
ZEROVECS
STODL UNFC/2 # INITIALIZE TRIM VELOCITY CORRECTION TERM
HI6ZEROS
STORE TTF/8
IGNALOOP DLOAD
TAT
STOVL PIPTIME1
RATT1
VSL4 MXV
REFSMMAT
STCALL R
MUNGRAV
STCALL GDT/2
?GUIDSUB # WHICH DELIVERS N PASSES OF GUIDANCE
# DDUMCALC IS PROGRAMMED AS FOLLOWS:
# 2 ___
# (RIGNZ - RGU )/16 + 16(RGU )KIGNY/B8 + (RGU - RIGNX)KIGNX/B4 + (ABVAL(VGU) - VIGN)KIGNV/B4
# 2 1 0
# DDUM = -------------------------------------------------------------------------------------------
# 10
# 2 (VGU - 16 VGU KIGNX/B4)
# 2 0
# Page 787 new page is actually one line earlier but this would put the indices on a seperate line
# disconnected from their respective variables
# THE NUMERATOR IS SCALED IN METERS AT 2(28). THE DENOMINATOR IS A VELOCITY IN UNITS OF 2(10) M/CS.
# THE QUOTIENT IS THUS A TIME IN UNITS OF 2(18) CENTISECONDS. THE FINAL SHIFT RESCALES TO UNITS OF 2(28) CS.
# THERE IS NO DAMPING FACTOR. THE CONSTANTS KIGNX/B4, KIGNY/B8 AND KIGNV/B4 ARE ALL NEGATIVE IN SIGN.
DDUMCALC TS NIGNLOOP
TC INTPRET
DLOAD DMPR # FORM DENOMINATOR FIRST
VGU
KIGNX/B4
SL4R BDSU
VGU +4
PDDL DSU
RIGNZ
RGU +4
SR4R PDDL
RGU +2
DSQ DMPR
KIGNY/B8
SL4R PDDL
RGU
DSU DMPR
RIGNX
KIGNX/B4
PDVL ABVAL
VGU
DSU DMPR
VIGN
KIGNV/B4
DAD DAD
DAD DDV
SRR
10D
PUSH DAD
PIPTIME1
STODL TDEC1 # STORE NEW GUESS FOR NEXT INTEGRATION
ABS DSU
DDUMCRIT
BMN CALL
DDUMGOOD
INTSTALL
SET SET
INTYPFLG
MOONFLAG
DLOAD
PIPTIME1
STOVL TET # HOPEFULLY ?GUIDSUB DID NOT
RATT1 # CLOBBER RATT1 AND VATT1
# Page 788
STOVL RCV
VATT1
STCALL VCV
INTEGRVS
GOTO
IGNALOOP
DDUMGOOD SLOAD SR
ZOOMTIME
14D
BDSU
TDEC1
STOVL TIG # COMPUTE DISTANCE LANDING SITE WILL BE
V # OUT OF LM'S ORBITAL PLANE AT IGNITION:
VXV UNIT # SIGN IS + IF LANDING SITE IS TO THE
R # RIGHT, NORTH; - IF TO THE LEFT, SOUTH.
DOT SL1
LAND
R60INIT STOVL OUTOFPLN # INITIALIZATION FOR CALCMANU
UNFC/2
STORE R60VSAVE # STORE UNFC/2 TEMPORARILY IN R60SAVE
EXIT
# *******************************************
IGNALGRT TC PHASCHNG # PREVENT REPEATING IGNALG
OCT 04024
ASTNCLOK CS ASTNDEX
TC BANKCALL
CADR STCLOK2
TCF ENDOFJOB # RETURN IN NEW JOB AND IN EBANK FIVE
ASTNRET TC INTPRET
SSP RTB # GO PICK UP DISPLAY AT END OF R51:
QMAJ # "PROCEED" WILL DO A FINE ALIGNMENT
FCADR P63SPOT2 # "ENTER" WILL RETURN TO P63SPOT2
R51P63
P63SPOT2 VLOAD UNIT # INITIALIZE KALCMANU FOR BURN ATTITUDE
R60VSAVE
STOVL POINTVSM
UNITX
STORE SCAXIS
EXIT
CAF EBANK7
TS EBANK
INHINT
TC IBNKCALL
CADR PFLITEDB
# Page 789
RELINT
TC BANKCALL
CADR R60LEM
TC PHASCHNG # PREVENT RECALLING R60
OCT 04024
P63SPOT3 CA BIT6 # IS THE LR ANTENNA IN POSITION 1 YET
EXTEND
RAND CHAN33
EXTEND
BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
TC BANKCALL # SILLY THING AROUND
CADR GOPERF1
TCF GOTOP00H # TERMINATE
TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
P63SPOT4 TC BANKCALL # ENTER INITIALIZE LANDING RADAR
CADR SETPOS1
TC POSTJUMP # OFF TO SEE THE WIZARD ...
CADR BURNBABY
# ---------------------------------
# CONSTANTS FOR P63LM AND IGNALG
P63ADRES GENADR P63TABLE
ASTNDEX = MD1 # OCT 25: INDEX FOR CLOKTASK
CODE500 OCT 00500
99999CON 2DEC 30479.7 B-24
GUIDDURN 2DEC +66440 # GUIDDURN +6.64400314 E+2
DDUMCRIT 2DEC +8 B-28 # CRITERION FOR IGNALG CONVERGENCE
# Page 790
# --------------------------------
# Page 791
# *************************
# P68: LANDING CONFIRMATION
# *************************
BANK 31
SETLOC F2DPS*31
BANK
COUNT* $$/P6567
LANDJUNK TC PHASCHNG
OCT 04024
INHINT
TC BANKCALL # ZERO ATTITUDE ERROR
CADR ZATTEROR
TC BANKCALL # SET 5 DEGREE DEADBAND
CADR SETMAXDB
TC INTPRET # TO INTERPRETIVE AS TIME IS NOT CRITICAL
SET CLEAR
SURFFLAG
LETABORT
SET VLOAD
APSFLAG
RN
STODL ALPHAV
PIPTIME
SET CALL
LUNAFLAG
LAT-LONG
SETPD VLOAD # COMPUTE RLS AND STORE IT AWAY
0
RN
VSL2 PDDL
PIPTIME
PUSH CALL
R-TO-RP
STORE RLS
EXIT
CAF V06N43* # ASTRONAUT: NOW LOOK WHERE TO ENDED UP
TC BANKCALL
CADR GOFLASH
TCF GOTOP00H # TERMINATE
TCF +2 # PROCEED
TCF -5 # RECYCLE
TC INTPRET
# Page 792
VLOAD # INITIALIZE GSAV AND (USING REFMF)
UNITX # YNBSAV, ZNBSAV AND ATTFLAG FOR P57
STCALL GSAV
REFMF
EXIT
TCF GOTOP00H # ASTRONAUT: PLEASE SELECT P57
V06N43* VN 0643

View File

@ -0,0 +1,224 @@
# Copyright: Public domain.
# Filename: THROTTLE_CONTROL_ROUTINES.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: HARTMUTH GUTSCHE <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 793-797
# Mod history: 2009-05-20 HG Transcribed from page images.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 793
BANK 31
SETLOC FTHROT
BANK
EBANK= PIF
COUNT* $$/THROT
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# HERE FC, DESIRED THRUST, AND FP, PRESENT THRUST, UNWEIGHTED, ARE COMPUTED.
THROTTLE CA ABDELV # COMPUTE PRESENT ACCELERATION IN UNITS OF
EXTEND # 2(-4) M/CS/CS, SAVING SERVICER TROUBLE
MP /AF/CNST
+3 EXTEND
QXCH RTNHOLD
AFDUMP TC MASSMULT
DXCH FP # FP = PRESENT THRUST
EXTEND
DCA /AFC/
TC MASSMULT
TS FC # FC = THRUST DESIRED BY GUIDANCE
DXCH FCODD # FCODD = WHAT IT IS GOING TO GET
# IF IT HAS BEEN LESS THAN 3 SECONDS SINCE THE LAST THROTTLING, AUGMENT FP USING THE FWEIGHT CALCULATED THEN.
CS TTHROT # THIS CODING ASSUMES A FLATOUT WITHIN
AD TIME1 # 80 SECONDS BEFORE FIRST THROTTLE CALL
MASK POSMAX
COM
AD 3SECS
EXTEND
BZMF WHERETO # BRANCH IF (TIME1-TTHROT +1) > 3 SECONDS
EXTEND
DCA FWEIGHT
DAS FP
# THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%. THE MANUAL THROTTLE, NOMINALLY SET AT
# MINIMUM BY ASTRONAUT OR MISSION CONTROL PROGRAMS, PROVIDES THE LOWER BOUND. A STOP IN THE THROTTLE HARDWARE
# PROVIDES THE UPPER.
WHERETO CA EBANK5 # INITIALIZE L*WCR*T AND H*GHCR*T FROM
TS EBANK # PAD LOADED ERASABLES IN W-MATRIX
#Page 794
EBANK= LOWCRIT
EXTEND
DCA LOWCRIT
DXCH L*WCR*T
CA EBANK7
TS EBANK
EBANK= PIF
CS ZERO # INITIALIZE PIFPSET
TS PIFPSET
CS H*GHCR*T
AD FCOLD
EXTEND
BZMF LOWFCOLD # BRANCH IF FCOLD < OR = HIGHCRIT
CS L*WCR*T
AD FCODD
EXTEND
BZMF FCOMPSET # BRANCH IF FC < OR = LOWCRIT
CA FP # SEE NOTE 1
TCF FLATOUT1
FCOMPSET CS FMAXODD # SEE NOTE 2
AD FP
TCF FLATOUT2
LOWFCOLD CS H*GHCR*T
AD FCODD
EXTEND
BZMF DOPIF # BRANCH IF FC < OR = HIGHCRIT
CA FMAXPOS # NO: THROTTLE-UP
FLATOUT1 DXCH FCODD
CA FEXTRA
FLATOUT2 TS PIFPSET
# NOTE 1 FC IS SET EQUAL TO FP SO PIF WILL BE ZERO. THIS IS DESIRABLE
# AS THERE IS ACTUALLY NO THROTTLE CHANGE.
#
# NOTE2 HERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION
# (BELOW 55%) THE QUANTITY -(FMAXODD-FP) IS COMPUTED AND PUT
# INTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE
# NUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE
# NUMBER CORRESPONDING TO ACTUAL THRUST (FP). THUS THE TOTAL
# THROTTLE COMMAND PIF = FC - FP - (FMAXODD - FP) = FC - FMAXODD.
DOPIF TC FASTCHNG
EXTEND
DCA FCODD
TS FCOLD
DXCH PIF
EXTEND
#Page 795
DCS FP
DAS PIF # PIF = FC - FP, NEVER EQUALS +0
DOIT CA PIF
AD PIFPSET # ADD IN PIFPSET, WITHOUT CHANGING PIF
TS PSEUDO55
TS THRUST
CAF BIT4
EXTEND
WOR CHAN14
CA TIME1
TS TTHROT
# SINCE /AF/ IS NOT AN INSTANTANEOUS ACELERATION, BUT RATHER AN "AVERAGE" OF THE ACCELERATION LEVELS DURING
# THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE
# ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY
#
# PIF(PPROCESS + TL) PIF /PIF/
# FWEIGHT = ------------------ + -------------
# PGUID 2 PGUID FRATE
#
# WHERE PROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND
# FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND). PGUID IS EITHER 1 OR 2 SECONDS. THE "TL" IN THE
# FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG. HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS.
CA THISTPIP +1 # INITIALIZE FWEIGHT COMP AS IF FOR P66
TS BUF
CS MODREG # ARE WE IN FACT IN P66?
AD DEC66
EXTEND
BZF FWCOMP # YES
CA PIPTIME +1 # NO: INITIALIZE FOR TWO SECOND PERIOD
TS BUF
CAF 4SECS
TCF FWCOMP +1
FWCOMP CAF 2SECS
+1 TS Q
EXTEND
MP BIT6
LXCH BUF +1
CS BUF # TIME OF LAST PIPA READING.
AD TIME1
AD THROTLAG # COMPENSATE FOR ENGINE RESPONSE LAG
MASK LOW8 # MAKE SURE SMALL AND POSITIVE
ZL
EXTEND
#Page 796
DV Q
EXTEND
MP PIF
DOUBLE
DXCH FWEIGHT
CCS PIF
AD ONE
TCF +2
AD ONE
EXTEND
MP PIF
EXTEND
DV BUF +1
ZL
DAS FWEIGHT
THDUMP TC RTNHOLD
# FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE.
FLATOUT CAF BIT13 # 4096 PULSES
WHATOUT TS PIFPSET # USE PIFPSET SO FWEIGHT WILL BE ZERO
CS ZERO
TS FCOLD
TS PIF
EXTEND
QXCH RTNHOLD
TCF DOIT
# MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS.
MASSMULT EXTEND
QXCH BUF
DXCH MPAC
TC DMP
ADRES MASS
TC DMP # LEAVES PROPERLY SCALED FORCE IN MPAC
ADRES SCALEFAC
TC TPAGREE
CA MPAC
EXTEND
BZF +3
CAF POSMAX
TC BUF
DXCH MPAC +1
TC BUF
#Page 797
# CONSTANTS --
FEXTRA = BIT13 # FEXT +5.13309020 E+4
/AF/CNST DEC .13107
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

519
Luminary099/TJET_LAW.s Normal file
View File

@ -0,0 +1,519 @@
# Copyright: Public domain.
# Filename: TJET_LAW.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1460-1469
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-06 RSB Eliminated a stray instruction that had crept
# in somehow.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1460
# PROGRAM DESCRIPTION
# DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN
# CODED BY: P. S. WEISSMAN, 28 FEBRURARY 1968
#
# TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR
# ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:
# -1 INDICATES THE P-AXIS
# +0 INDICATES THE U-AXIS
# +1 INDICATES THE V-AXIS
# THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER
# UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE
# COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY
# ACCESSED BY INDEXING.
#
# THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST
# PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU, OR TJV). THE NUMBER OF JETS THAT
# TJETLAW ASSUMES WILL BE USED AS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS
# ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES
# (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.
#
# IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE
# ERROR AND/OR ERROR RATE ARE LARGE.
#
# CALLING SEQUENCE:
# TC TJETLAW # (MUST BE IN JASK)
# OR
# INHINT # (MUST BE IN JASK)
# TC IBNKCALL
# CADR TJETLAW
# RELINT
#
# EXIT: RETURN TO Q.
#
# INPUT:
# FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V.
# FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V).
#
# OUTPUT:
# TJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).
#
# DEBRIS:
# A, L, Q, E, EDOT, DAPTEMP1-6, DAPTEMP1-4.
#
# ALARM: NONE
BANK 17
SETLOC DAPS2
BANK
EBANK= TJP
# Page 1461
COUNT* $$/DAPTJ
TJETLAW EXTEND # SAVE Q FOR RETURN.
QXCH HOLDQ
# SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT
INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BET P AND U
CAF AXISDIFF # AXISDIFF(0)=0
TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U
CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES
EXTEND # THAT ALLOW USE OF SAME CODING AS FOR
BZMF NEGEDOT # POSITIVE EDOT.
CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE
TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS.
CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS
TCF SETSENSE # INITIALIZED POSITIVE.
NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING
TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS:
CS EDOT # 1. COMPLEMENT E AND EDOT.
TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE
CAF BIT1 # (REVERSED LATER IF NECESSARY).
ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT
TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED.
CS SENSOR
SETSENSE TS ROTSENSE
# TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):
# IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4
CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS
EXTEND
MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS
CCS A # ZERO, RESCALE AND TEST EDOT.
TCF RUFLAW2
TCF SCALEE
TCF RUFLAW1
SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE
EXTEND # IT TO PI/4 AND SAVE IT.
MP L
TS E
# TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)
# IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.
CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE
# Page 1462
EXTEND # FOR THIS AXIS=
MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS
EXTEND # ZERO, THEN RESCALE AND USE FINELAW.
BZF SCALEDOT
TCF RUFLAW3
# *** FINELAW STARTS HERE ***
SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND.
CAE EDOT # COMPUTE (EDOT)(EDOT)
EXTEND
SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.
EXTEND
MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE TO EDOTSQ
TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2).
ERRTEST CCS E # DOES BIG ERROR (THREE DEG BEYOND THE
AD -3DEG # DEADBAND) REQUIRE MAXIMUM JETS?
TCF +2
AD -3DEG
EXTEND
INDEX ADRSDIF1
SU FIREDB
EXTEND
BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED?
MAXJETS CAF TWO # IF YES: INCRMENT ADDRESS LOCATOR AND
ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4.
CAF FOUR # (ALWAYS DO THIS FOR P-AXIS)
TCF TJCALC
SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS.
TCF TJCALC # YES. USE MIN-JET PARAMETERS
TCF MAXJETS # NO. GET THE MAX-JET PARAMETERS.
TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.
# BEGINNING OF TJET CALCULATIONS:
CS EDOTSQ # SCALED AT PI(2)/2(8).
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.
INDEX ADRSDIF1
AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN.
EXTEND
SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN.
TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.
EXTEND
BZMF ZON1,2,3
ZONE4,5 INDEX ADRSDIF1
CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE
# Page 1463
EXTEND # ACC = MAX(AMIN, AOS-).
MP EDOTSQ # SCALED AT PI/2(8).
AD E # SCALED AT PI/4
INDEX ADRSDIF1
AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT.
EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.
BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET.
# IF FUNCTION POSITIVE, IN ZONE 4.
# ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD
# A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR
# B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT
# THEN THE THRUSTERS ARE KEPT ON.
ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO
CS TJETU # WITH SENSE OPPOSITE TO EDOT,
EXTEND # (I.E., ARE JETS ON AND FIRING TOWARD
MP ROTSENSE # THE DESIRABLE STATE).
EXTEND
BZMF COASTTJ # NO. COAST.
JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT?
TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST.
CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA
INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE
AD AXISDIST # PHASE PLANE?
EXTEND
BZMF COASTTJ # NO. SET TJET = 0.
TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1
CAE FIREFCT # AFTER COMPUTING THE REQUIRED
TCF ZONE1 # PARAMETERS.
DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM
CS FIREDB # THIS POINT IN THE PHASE PLANE?
DOUBLE
AD FIREFCT
EXTEND
BZMF +3
COASTTJ CAF ZERO # NO. SET TJET = 0.
TCF RETURNTJ
TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2
TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES.
ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L.
CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2
TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP
TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE
CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE.
# Page 1464
ADS ADRSDIF2
+4 CAE L
EXTEND
INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON
MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE
DDOUBL # ABASED.
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
INDEX ADRSDIF2
CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD.
EXTEND
MP EDOT # SCALED AT PI/2(5)
TS TTOAXIS # SCALED AT 4 SEC.
# TEST WHETHER TJET GREATER THAN 50 MSEC.
EXTEND
MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) ).
AD NEG2
EXTEND
BZMF FORMULA1
# TEST WHETHER TJET GREATER THAN 150 MSEC.
CAE TTOAXIS
EXTEND
MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) )
AD -.0112A8
EXTEND
BZMF FORMULA2
# IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS
# IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).
FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC.
# RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.
RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET
MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR.
INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE.
TS TJETU
EXTEND
INDEX AXISCTR
MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS
CAE L
EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED
BZMF +3 # A MAX-JET CALCULATION.
CAF FOUR
# Page 1465
TS NUMBERT
TC HOLDQ # RETURN VIA SAVED Q.
# TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC.
FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4.
AD TTOAXIS # SCALED AT 4 SECONDS.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP H AND DIVIDE BY DENOMINATOR.
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM
# TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC.
FORMULA2 EXTEND
DCA .00375A8 # .00375 SEC(2) SCALED AT 8.
DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT
# BE PRESERVED.
CAE TTOAXIS # SCALED AT 4 SEC.
AD .1AT4 # 0.1 SEC SCALED AT 4.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF RETURNTJ # END SUBROUTINE.
# SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.
# REACHED BY TC FROM 3 POINTS IN TJETLAW.
Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET
TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN.
CAE EDOT # SCALED AT PI/2(5) RAD/SEC.
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD.
TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS.
AD -TJMAX
EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC.
BZMF +2
TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET.
RETURN # YES. GO ON TO FIND TJET
ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3.
# IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL
# LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT
# Page 1466
# OR ULLAGE, FLAT = 0
CAE FIREFCT # SCALED AT PI/4 RAD.
AD FLAT
EXTEND
BZMF ZONE1 # NOT IN SPECIAL ZONES.
# FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST.
ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS
AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT
EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL.
BZMF ZONE3
ZONE2 CAE TTOAXIS # FIRE TO AXIS.
TCF RETURNTJ
ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO.
CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE.
TCF RETURNTJ # TJET = +0.
TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.
TCF RETURNTJ # TJET = +0.
ZONE1 EXTEND
INDEX ADRSDIF1
SU AXISDIST # SCALED AT PI/4 RAD.
EXTEND
INDEX ADRSDIF2
MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD.
DDOUBL
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
# TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:
# 2 2
# IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS )
CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS.
AD -TJMAX # -.150 SECOND SCALED AT 4.
EXTEND
SQUARE
EXTEND
SU HH # HIGH WORD OF H SCALED AT 8 SEC(2).
EXTEND
BZMF FULLTIME # YES. NEED NOT CALCULATE TJET.
# TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.
CAE HH
AD NEG2
EXTEND
BZMF FORMULA3
# Page 1467
# TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC.
CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION.
DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.
AD .0375AT4 # .0375 SEC SCALED AT 4.
TCF RETURNTJ # END COMPUTATION.
# TJET - H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC.
FORMULA3 CS -.025AT2 # STORE +.25 SEC SCALED AT 2 FOR DIVISION
DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.
# IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.
# MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.
CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM.
EXTEND
BZMF COASTTJ # YES, SET TIME TO ZERO.
AD TJMIN # NO, RESTORE COMPUTED TIME.
TCF RETURNTJ # END COMPUTATION.
# Page 1468
# *** ROUGHLAW ***
#
# BEFORE ENTRY TO RUFLAW:
# 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.
# 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.
# 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.
# (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)
#
# RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.).
# RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC.
# RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE
RUFLAW1 CS RUFRATE # DECREMENT EDOT BY .1444 RAD/SEC AT PI/4
ADS EDOT # WHICH IS THE TARGET RATE
EXTEND
BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET.
TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAE EDOT # PICK UP DESIRED RATE CHANGE.
RUFLAW12 EXTEND # COMPUTE TJET
INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.)
MP 1/ANET1 +2
AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS
EXTEND # 4 SECONDS, SET TJET TO TJMAX.
BZMF +2
TCF FULLTIME
EXTEND
BZF FULLTIME
AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR
DAS A
DAS A
DAS A # RESCALED TJET AT 4 SECONDS.
TCF CHKMINTJ # RETURN AS FROM FINELAW.
SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS
CCS ROTSENSE
CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET
TCF +2 # CORRESPONDING TO THE PROPER SENSE.
CAF NEGONE
ADS ADRSDIF2
CS EDOT # (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG.
TCF RUFLAW12
RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAF RUFRATE
AD EDOT # (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG.
TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME.
TCF RUFLAW12 # OTHERWISE, COMPUTE JET TIME.
TCF FULLTIME
# Page 1469
RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE.
INDEX ADRSDIF1
CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE
AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0
EXTEND # SCALED AT 4 PI RADIANS
MP BIT11
XCH EDOT
EXTEND
SQUARE
EXTEND
INDEX ADRSDIF1
MP 1/ANET1 +2
AD EDOT
EXTEND
BZMF COASTTJ # COAST IF BELOW IT.
TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT.
# SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.
RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE.
TS ROTSENSE
+2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES.
TS NUMBERT
CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS.
TS FIREFCT
TC Q
# CONSTANTS FOR TJETLAW
DEC -16 # AXISDIFF(INDEX) = NUMBER OF REGISTERS
AXISDIFF DEC +0 # BETWEEN STORED 1/ACCS PARAMETERS FOR
DEC 16 # THE INDEXED AXIS AND THE U-AXIS.
SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW
# (4 SEC) TO SCALING FOR T6 (10.24 SEC).
-3DEG DEC -.06667 # -3.0 DEGREES SCALED AT 45.
-.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8.
.1AT4 DEC .025 # 0.1 SECOND SCALED AT 4.
.1AT2 DEC .05 # .1 SEC SCALED AT 2.
.0375AT4 DEC .00938 # .0375 SEC SCALED AT 4.
-.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2.
-.025AT4 DEC -.00625
-.05AT2 DEC -.025
-.15AT2 DEC -.075
.00375A8 2DEC .00375 B-3
-TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4.
TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4.
-TJMIN DEC -.005
RUFRATE DEC .1444 # CORRESPONDS TO TARGET RATE OF 6.5 DEG/S.

View File

@ -0,0 +1,622 @@
# Copyright: Public domain.
# Filename: TRIM_GIMBAL_CNTROL_SYSTEM.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: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1472-1485
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
#
# 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-61
# 16:27 JULY 14, 1969
# Page 1472
BANK 21
EBANK= QDIFF
SETLOC DAPS4
BANK
COUNT* $$/DAPGT
# CONTROL REACHES THIS POINT UNDER EITHER OF THE FOLLOWING TWO CONDITIONS ONCE THE DESCENT ENGINE AND THE DIGITAL
# AUTOPILOT ARE BOTH ON:
# A) THE TRIM GIMBAL CONTROL LAW WAS ON DURING THE PREVIOUS Q,R-AXIS TIME5 INTERRUPT (OR THE DAPIDLER
# INITIALIZATION WAS SET FOR TRIM GIMBAL CONTROL AND THIS IS THE FIRST PASS), OR
# B) THE Q,R-AXES RCS AUTOPILOT DETERMINED THAT THE VEHICLE WAS ENTERING (OR HAD JUST ENTERED) A COAST
# ZONE WITH A SMALL OFFSET ANGULAR ACCELERATION.
# GTS IS THE ENTRY TO THE GIMBAL TRIM SYSTEM FOR CONTROLLING ATTITUDE ERRORS AND RATES AS WELL AS ACCELERATIONS.
GTS CAF NEGONE # MAKE THE NEXT PASS THROUGH THE DAP BE
TS COTROLER # THROUGH RCS CONTROL,
CAF FOUR # AND ENSURE THAT IT IS NOT A SKIP.
TS SKIPU
TS SKIPV
CAF TWO
TS INGTS # SET INDICATOR OF GTS CONTROL POSITIVE.
TS QGIMTIMR # SET TIMERS TO 200 MSEC TO AVOID BOTH
TS RGIMTIMR # RUNAWAY AND INTERFERENCE BY NULLING.
# THE DRIVE SETTING ALGORITHM
#
# DEL = SGN(OMEGA + ALPHA*ABS(ALPHA)/(2*K))
# 2 1/2 2 3/2
# NEGUSUM = ERROR*K + ALPHA*(DEL*OMEGA + ALPHA /(3*K)) + DEL*K (DEL*OMEGA + ALPHA /(2*K))
#
# DRIVE = -SGN(NEGUSUM)
CA SR # SAVE THE SR. SHIFT IT LEFT TO CORRECT
AD A # FOR THE RIGHT SHIFT DUE TO EDITING.
TS SAVESR
GTSGO+DN CAF TWO # SET INDEXER FOR R-AXIS CALCULATIONS.
TCF GOQTRIMG +1
GOQTRIMG CAF ZERO # SET INDEXER FOR Q-AXIS CALCULATIONS
TS QRCNTR
# Page 1473
# RSB 2009 ---------------------------------------------------------------------
# Everything between this line and the similar line below was simply filled-in
# as-is from Luminary 131, and then verified to assemble to the proper binary
# values. This area is blank on the Luminary 099 print-out, as if the
# printer ribbon had run out.
INDEX QRCNTR # AOS SCALED AT PI/2
CA AOSQ
EXTEND
MP BIT2 # RESCALE AOS TO PI/4
EXTEND
BZF GTSQAXIS -3 # USE FULL SCALE FOR LARGER AOS ESTIMATES.
INDEX A
CS LIMITS # LIMITS +1 CONTAINS NEGMAX.
XCH L # LIMITS -1 CONTAINS POSMAX.
CCS QRCNTR # PICK UP RATE FOR THIS AXIS. RATE CELLS
INDEX A # USE ADJACENT, NOT SEPARATED. AT PI/4
CA EDOTQ
GTSQAXIS DXCH WCENTRAL
INDEX QRCNTR # COLLECT K FOR THIS AXIS
CA KQ
TS KCENTRAL
EXTEND # CONTROL AUTHORITY ZERO. AVOID DRIVING
BZF POSDRIVE +1 # ENGINE BELL TO THE STOPS.
INDEX QRCNTR # QDIFF, RDIFF ARE STORED IN D.P.
CAE QDIFF
ALGORTHM EXTEND # Q(R)DIFF IS THETA (ERROR) SCALED AT PI.
MP KCENTRAL # FORM K*ERROR AT PI(2)/2(8), IN D.P.
LXCH K2THETA
EXTEND
MP BIT5 # RESCALE TO 4*PI(2)
DXCH K2THETA
EXTEND
MP BIT5 # FIRST TERM OF NEGUSUM IN K2THETA.
ADS K2THETA +1 # NO CARRY NEEDED D.P. AT 4*PI(2)
CS ACENTRAL # FORM ALPHA(2)/(2*K) AT 16*PI, IN D.P.,
EXTEND # LIMITING QUOTIENT TO AVOID OVERFLOW.
MP BIT14 # -ALPHA/2 IN A, SCALED AT PI/4
EXTEND
MP ACENTRAL # -ALPHA(2)/2 IN A,L, SCALED AT PI(2)/16)
AD KCENTRAL
EXTEND
BZMF HUGEQUOT # K-ALPHA(2)/2 SHOULD BE PNZ FO DIVISION
EXTEND
DCS A # ALPHA(2)/2 - K
AD KCENTRAL
# RSB 2009 ---------------------------------------------------------------------
EXTEND
DV KCENTRAL # HIGH ORDER OF QUOTIENT.
XCH A2CNTRAL
CA L # SHIFT UP THE REMAINDER.
LXCH 7 # ZERO LOW-ORDER DIVIDEND.
EXTEND
# Page 1474
DV KCENTRAL
XCH A2CNTRAL +1 # QUOTIENT STORED AT 16*PI, D.P.
TCF HAVEQUOT
HUGEQUOT CA POSMAX
TS L
DXCH A2CNTRAL # LIMITED QUOTIENT STORED AT 16*PI, D.P.
HAVEQUOT CA WCENTRAL
EXTEND
MP BIT9 # RESCALE OMEGA AT 16*PI IN D.P.
DXCH K2CNTRAL # LOWER WORD OVERLAYS OMEGA IN WCENTRAL
EXTEND
DCA K2CNTRAL
DXCH FUNCTION
CA ACENTRAL # GET ALPHA*ABS(ALPHA)/(2*K)
EXTEND
BZMF +4
EXTEND
DCA A2CNTRAL
TCF +3
EXTEND
DCS A2CNTRAL
DAS FUNCTION # OMEGA + ALPHA*ABS(ALPHA)/(2*K) AT 16*PI
CCS FUNCTION # DEL = +1 FOR FUNCT1 GREATER THAN ZERO.
TCF POSFNCT1 # OTHERWISE DEL = -1
TCF +2
TCF NEGFNCT1
CCS FUNCTION +1 # USE LOW ORDER WORD SINCE HIGH IS ZERO
POSFNCT1 CAF BIT1
TCF +2
NEGFNCT1 CS BIT1
TS DEL
CCS DEL # REPLACE OMEGA BY DEL*OMEGA
TCF FUNCT2 # POSITIVE DEL VALUE. PROCEED.
TCF DEFUNCT
TCF NEGFNCT2
DEFUNCT TS K2CNTRAL
TS K2CNTRAL +1
TCF FUNCT2
# Page 1475
NEG1/3 DEC -.33333
NEGFNCT2 EXTEND
DCS K2CNTRAL
DXCH K2CNTRAL
FUNCT2 EXTEND
DCA A2CNTRAL
DAS K2CNTRAL # DEL*OMEGA + ALPHA(2)/(2*K) AT 16*PI, D.P.
FUNCT3 CA A2CNTRAL
EXTEND
MP NEG1/3
DXCH A2CNTRAL
CA L
EXTEND
MP NEG1/3
ADS A2CNTRAL +1
TS L
TCF +2 # A2CNTRAL NOW CONTAINS -ALPHA(2)/(6*K),
ADS A2CNTRAL # SCALED AT 16*PI, IN D.P.
EXTEND
DCA K2CNTRAL # DEL*OMEGA + ALPHA(2)/(3*K) IN A2CNTRAL,
DAS A2CNTRAL # SCALED AT 16*PI, D.P.
CA A2CNTRAL
EXTEND
MP ACENTRAL
DAS K2THETA
CA A2CNTRAL +1
EXTEND
MP ACENTRAL # ACENTRAL MAY NOW BE OVERLAID.
ADS K2THETA +1
TS L
TCF +2 # TWO TERMS OF NEGUSUM ACCUMULATED, SO FAR
ADS K2THETA # SCALED AT 4*PI(2), IN D.P.
GETROOT CA K2CNTRAL # K*(DEL*OMEGA + ALPHA(2)/(2*K)) IS THE
EXTEND # TERM FOR WHICH A SQUARE ROOT IS NEEDED.
MP KCENTRAL # K AT PI/2(8)
DXCH FUNCTION
CA K2CNTRAL +1
EXTEND
MP KCENTRAL
ADS FUNCTION +1
TS L
TCF +2
ADS FUNCTION # DESIRED TERM IN FUNCTION, AT PI(2)/16
# Page 1476
CCS DEL
TCF RSTOFGTS
TCF NEGUSUM
TCF NEGATE
TCF NEGUSUM
NEGATE EXTEND
DCS K2CNTRAL
DXCH K2CNTRAL
TCF RSTOFGTS
BANK 16
EBANK= NEGUQ
SETLOC DAPS1
BANK
# THE WRCHN12 SUBROUTINE SETS BITS 9,10,11,12 OF CHANNEL 12 ON THE BASIS OF THE CONTENTS OF NEGUQ,NEGUR WHICH ARE
# THE NEGATIVES OF THE DESIRED ACCELERATION CHANGES. ACDT+C12 SETS Q(R)ACCDOT TO REFLECT THE NEW DRIVES.
#
# WARNING: ACDT+C12 AND WRCHN12 MUST BE CALLED WITH INTERRUPT INHIBITED.
BGIM OCTAL 07400
CHNL12 EQUALS ITEMP6
ACDT+C12 CS NEGUQ
EXTEND # GIMBAL DRIVE REQUESTS.
MP ACCDOTQ
LXCH QACCDOT
CS NEGUR
EXTEND
MP ACCDOTR
LXCH RACCDOT
CCS NEGUQ
CAF BIT10
TCF +2
CAF BIT9
TS CHNL12
CCS NEGUR
CAF BIT12
TCF +2
CAF BIT11
ADS CHNL12 # (STORED RESULT NOT USED AT PRESENT)
CS BGIM
EXTEND
RAND CHAN12
AD CHNL12
EXTEND
WRITE CHAN12
# Page 1477
CS CALLGMBL # TURN OFF REQUEST FOR ACDT+C12 EXECUTION.
MASK RCSFLAGS
TS RCSFLAGS
TC Q # RETURN TO CALLER.
BANK 21
EBANK= QDIFF
SETLOC DAPS4
BANK
# Page 1478
# SUBROUTINE TIMEGMBL: MOD 0, OCTOBER 1967, CRAIG WORK
#
# TIMEGMBL COMPUTES THE DRIVE TIME NEEDED FOR THE TRIM GIMBAL TO POSITION THE DESCENT ENGINE NOZZLE SO AS TO NULL
# THE OFFSET ANGULAR ACCELERATION ABOUT THE Q (OR R) AXIS. INSTEAD OF USING AOSQ(R), TIMEGMBL USES .4*AOSQ(R),
# SCALED AT PI/8. FOR EACH AXIS, THE DRIVE TIME IS COMPUTED AS ABS(ALPHA/ACCDOT). A ZERO
# ALPHA OR ACCDOT OR A ZERO QUOTIENT TURNS OFF THE GIMBAL DRIVE IMMEDIATELY. OTHERWISE, THE GIMBAL IS TURNED ON
# DRIVING IN THE CORRECT DIRECTION. THE Q(R)GIMTIMR IS SET TO TERMINATE THE DRIVE AND Q(R)ACCDOT
# IS STORED TO REFLECT THE NEW ACCELERATION DERIVATIVE. NEGUQ(R) WILL CONTAIN +1,+0,-1 FOR A Q(R)ACCDOT VALUE
# WHICH IS NEGATIVE, ZERO, OR POSITIVE.
#
# INPUTS: AOSQ,AOSR, SCALED AT P1/2, AND ACCDOTQ, ACCDOTR AT PI/2(7). PI/2(7).
#
# OUTPUTS: NEW GIMBAL DRIVE BITS IN CHANNEL 12, NEGUQ, NEGUR, QACCDOT, AND RACCDOT, THE LAST SCALED AT PI/2(7).
# Q(R)GIMTIMR WILL BE SET TO TIME AND TERMINATE GIMBAL DRIVE(S).
#
# DEBRIS: A, L, Q, ITEMPS 2, 3, 6, AND RUPTREG2 AND ACDT+C12 DEBRIS.
#
# EXITS: VIA TC Q.
#
# ALARMS, ABORTS: NONE.
#
# SUBROUTINES: ACDT+C12, IBNKCALL
#
# WARNING: THIS SUBROUTINE WRITES INTO CHANNEL 12 AND USES THE ITEMPS. THEREFORE IT MAY ONLY BE CALLED WITH
# INTERRUPT INHIBITED.
#
# ERASABLE STORAGE CONFIGURATION (NEEDED BY THE INDEXING METHODS):
# NEGUQ ERASE +2 # NEGATIVE OF Q-AXIS GIMBAL DRIVE
# (SPWORD) EQUALS NEGUQ +1 # ANY S.P. ERASABLE NUMBER, NOW THRSTCMD
# NEGUR EQUALS NEGUQ +2 # NEGATIVE OF R-AXIS GIMBAL DRIVE
# ACCDOTQ ERASE +2 # Q-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)
# (SPWORD) EQUALS ACCDOTQ +1 # ANY S.P. ERASABLE NUMBER NOW QACCDOT
# ACCDOTR EQUALS ACCDOTQ +2 # R-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)
# # ACCDOTQ, ACCDOTR ARE MAGNITUDES.
# AOSQ ERASE +4 # Q-AXIS ACC., D.P. AT PI/2 R/SEC(2)
# AOSR EQUALS AOSQ +2 # R-AXIS ACCELERATION SCALED AT PI/2 R/S2
QRNDXER EQUALS ITEMP6
OCT23146 OCTAL 23146 # DECIMAL .6
NZACCDOT EQUALS ITEMP3
TIMEGMBL CAF ONE # INITIALZE ALLOWGTS.
TS ALLOWGTS
CAF TWO # SET UP LOOP FOR R AXIS.
LXCH Q # SAVE RETURN ADDRESS.
LXCH RUPTREG2
# Page 1479
TCF +2
TIMQGMBL CAF ZERO # NOW DO THE Q-AXIS
TS QRNDXER
INDEX QRNDXER
CA ACCDOTQ # ACCDOT IS PRESUMED TO BE AT PI/2(7).
EXTEND
BZMF TGOFFNOW # IS ACCDOT LESS THAN OR EQUAL TO 0?
TS NZACCDOT # NO. STORE NON-ZERO, POSITIVE ACCDOT.
ALPHATRY INDEX QRNDXER
CS AOSQ
EXTEND
BZF TGOFFNOW # IS ALPHA ZERO?
TS Q # SAVE A COPY OF -AOS.
EXTEND # NO. RESCALE FOR TIMEGMBL USE.
MP OCT23146 # OCTAL 23146 IS DECIMAL .6
AD Q # -1.6*AOS AT PI/2 = -.4*AOS AT PI/8
TS L # WAS THERE OVERFLOW?
TCF SETNEGU # NO. COMPUTE DRIVE TIME.
CS A # RECOVER -SGN(AOS) IN THE A REGISTER.
INDEX QRNDXER # YES. START DRIVE WITHOUT WAITLIST.
XCH NEGUQ
TCF NOTALLOW # KNOCK DOWN THE ALLOWGTS FLAG.
SETNEGU EXTEND
BZMF POSALPH
COM
TS ITEMP2 # STORE -ABS(.4*AOS) SCALED AT PI/8.
CS BIT1
TCF POSALPH +2
POSALPH TS ITEMP2 # STORE -ABS(.4*AOS) SCALED AT PI/8.
CA BIT1
+2 INDEX QRNDXER # SGN(AOS) INTO NEGU
TS NEGUQ # STORE SGN(ALPHA) AS NEGU
CA NZACCDOT
EXTEND
MP BIT12 # 2*ACCDOT, SCALED AT PI/8.
AD ITEMP2 # -ABS(ALPHS) + 2*ACCDOT, AT PI/8.
EXTEND
BZMF NOTALLOW # IS DRIVE TIME MORE THAN TWO SECONDS?
CS ITEMP2 # NO. COMPUTE DRIVE TIME.
EXTEND # ABS(ALPHA) AT PI/8.
MP OCT00240 # DECIMAL 10/1024
EXTEND # QUOTIENT IS DRIVE TIME AT WAITLIST.
DV NZACCDOT # ABS(ALPHA)/ACCDOT AT 2(14)/100
# Page 1480
EXTEND
BZF TGOFFNOW # DRIVE TIME MUST BE GREATER THAN ZERO.
TCF DRIVEON
TGOFFNOW CAF ZERO # TURN OFF GIMBAL NOW.
INDEX QRNDXER
TS NEGUQ
TCF DONEYET
NOTALLOW CAF OCT31
INDEX QRNDXER
TS QGIMTIMR
CAF ZERO # DRIVE TIME IS MORE THAN 2 SECONDS, SO
TS ALLOWGTS # DO NOT PERMIT FURTHER GTS ATTITUDE-RATE
# CONTROL UNTIL AOSTASK APPROVES.
TCF DONEYET # NO WAITLIST CALL IS MADE.
DRIVEON INDEX QRNDXER
TS QGIMTIMR # CHOOSE Q OR R AXIS.
DONEYET CCS QRNDXER
TCF TIMQGMBL
DXCH RUPTREG3 # PROTECT IBNKCALL ERASABLES. ACDT+C12
DXCH ITEMP2 # LEAVES ITEMPS2,3 ALONE.
TC IBNKCALL # TURN OFF CHANNEL BITS, SET Q(R)ACCDOTS.
CADR ACDT+C12
DXCH ITEMP2 # RESTORE ERASABLES FOR IBNKCALL.
DXCH RUPTREG3
TC RUPTREG2 # RETURN TO CALLER.
OCT00240 OCTAL 00240 # DECIMAL 10/1024
# Page 1481
# THE FOLLOWING SECTION IS A CONTINUATION OF THE TRIM GIMBAL CONTROL FROM THE LAST GTS ENTRY. THE QUANTITY NEGUSUM
# IS COMPUTED FOR EACH AXIS (Q,R), .707*DEL*FUNCTION(3/2) + K2THETA = NEGUSUM. NEW DRIVES ARE ENTERED TO CH 12.
#
# THE SUBROUTINE GTSQRT ACCEPTS A DOUBLE PRECISION VALUE IN FUNCTION, FUNCTION +1 AND RETURNS A SINGLE-PRECISION
# SQUARE ROOT OF THE FOURTEEN MOST SIGNIFICANT BITS OF THE ARGUMENT. ALSO, THE CELL SHFTFLAG CONTAINS A BINARY
# EXPONENT S, SUCH THAT THE SQUARE ROOT (RETURNED IN THE A REGISTER) MUST BE SHIFTED RIGHT (MULTIPLIED BY 2 TO THE
# POWER (-S)) IN ORDER TO BE THE TRUE SQUARE ROOT OF THE FOURTEEN MOST SIGNIFICANT BITS OF FUNCTION, FUNCTION +1.
# SQUARE ROOT ERROR IS NOT MORE THAN 2 IN THE 14TH SIGNIFICANT BIT. CELLS CLOBBERED ARE A, L, SHFTFLAG, ININDEX,
# HALFARG, SCRATCH, SR, FUNCTION, FUNCTION +1. GTSQRT IS CALLED BY TC GTSQRT AND RETURNS VIA TC Q OR TC FUNCTION +1.
# ZERO OR NEGATIVE ARGUMENTS YIELD ZERO FOR SQUARE ROOTS.
GTSQRT CCS FUNCTION
TCF GOODARG # FUNCTION IS POSITIVE. TAKE SQUARE ROOT.
TCF +2 # HIGH ORDER WORD IS ZERO. TRY THE LOWER.
TCF ZEROOT # NEGATIVE. USE ZERO FOR 1/2 POWER.
CA FUNCTION +1
EXTEND
BZMF ZEROOT
TCF ZEROHIGH # PROCEED.
ZEROOT CA ZERO
TS SHFTFLAG
TC Q
ZEROHIGH XCH FUNCTION # 14 MOST SIGNIFICANT BITS ARE IN THE
XCH FUNCTION +1 # LOWER WORD. EXCHANGE THEM.
CA SEVEN
TCF GOODARG +1
GOODARG CA ZERO
TS SHFTFLAG
CA TWELVE # INITIALIZE THE SCALING LOOP.
TS ININDEX
TCF SCALLOOP
SCALSTRT CA FUNCTION
TCF SCALDONE
MULBUSH CA NEG2 # IF ARG IS NOT LESS THAN 1/4, INDEX IS
ADS ININDEX # ZERO, INDICATING NO SHIFT NEEDED.
EXTEND # BRANCH IF ARG IS NOT LESS THAN 1/4.
BZMF SCALSTRT # OTHERWISE COMPARE ARG WITH A REFERENCE
# WHICH IS 4 TIMES LARGER THAN THE LAST.
SCALLOOP CS FUNCTION
INDEX ININDEX
AD BIT15 # REFERENCE MAGNITUDE LESS OR EQUAL TO 1/4
EXTEND
BZMF MULBUSH # IF ARG IS NOT LESS THAN REFERENCE, GO
# AROUND THE MULBERRY BUSH ONCE MORE.
# Page 1482
INDEX ININDEX
CA BIT15 # THIS IS THE SCALE MAGNITUDE
XCH HALFARG # 2**(-ININDEX) IS THE SHIFT DIVISOR.
EXTEND # RESCALE ARGUMENT.
DCA FUNCTION
EXTEND
DV HALFARG
# ININDEX AND SHFTFLAG PRESERVE INFO FOR
# RESCALING AFTER ROOT PROCESS.
SCALDONE EXTEND
QXCH FUNCTION +1 # SAVE Q FOR RETURN
EXTEND
MP BIT14
TS HALFARG
MASK BIT13
CCS A
CA OCT11276
AD ROOTHALF # INITIAL GUESS IS ROOT 1/2 OR POSMAX
TC ROOTCYCL
TC ROOTCYCL
TC ROOTCYCL
TC FUNCTION +1
# ***************************************************************************
RSTOFGTS TC GTSQRT
PRODUCT XCH K2CNTRAL
EXTEND
MP K2CNTRAL
DXCH K2CNTRAL
EXTEND # THE PRODUCT OF
MP L # 1/2 2 1/2
ADS K2CNTRAL +1 # K *(DEL*OMEGA + ALPHA /(2*K))
TS L # AND
TCF +2 # 2
ADS K2CNTRAL # DEL*(DEL*OMEGA + ALPHA /(2*K)) NOW IN
# K2CNTRAL
DOSHIFT CA ININDEX
EXTEND # MULTIPLY IN THE FACTOR 2(-S), RETURNED
MP BIT14 # BY THE GTSQRT SUBROUTINE
ADS SHFTFLAG
EXTEND
BZF ADDITIN
INDEX SHFTFLAG
CA BIT15
# Page 1483
XCH K2CNTRAL
EXTEND
MP K2CNTRAL
DAS K2THETA
XCH K2CNTRAL
EXTEND
MP K2CNTRAL +1
ADS K2THETA +1
TS L
TCF +2
ADS K2THETA
TCF NEGUSUM
ADDITIN EXTEND
DCA K2CNTRAL
DAS K2THETA # NO ADD IN THE K2THETA TERM.
NEGUSUM CCS K2THETA # TEST SIGN OF HIGH ORDER PART.
TCF NEGDRIVE
TCF +2
TCF POSDRIVE
CCS K2THETA +1 # SIGN TEST FOR LOW ORDER PART.
NEGDRIVE CA BIT1
TCF +2 # STOP GIMBAL DRIVE FOR A ZERO NEGUSUM.
POSDRIVE CS BIT1
TS L # SAVE FOR DRIVE REVERSAL TEST.
INDEX QRCNTR
XCH NEGUQ
EXTEND
MP L # MULTIPLY OLD NEGU AND NEW NEGU.
CCS L
TCF LOUPE # NON-ZERO GIMBAL DRIVE BEING CONTINUED.
TCF ZEROLOUP # NO REVERSAL PROBLEM HERE.
TCF REVERSAL # NON-ZERO GIMBAL DRIVE BEING REVERSED.
TCF ZEROLOUP # NO REVERSAL PROBLEM HERE.
REVERSAL INDEX QRCNTR # A ZERO-DRIVE PAUSE IS NEEDED HERE. ZERO
TS QACCDOT # IS IN A REGISTER FROM CCS ON (-1).
INDEX QRCNTR
CS GMBLBITA
EXTEND
WAND CHAN12
ZEROLOUP CS RCSFLAGS # SET UP REQUEST FOR ACDT+C12 CALL.
MASK CALLGMBL
ADS RCSFLAGS
# Page 1484
LOUPE CCS QRCNTR # HAVE BOTH AXES BEEN PROCESSED?
TCF GOQTRIMG # NO. DO Q AXIS NEXT.
CA SAVESR # RESTORE THE SR
TS SR
GOCLOSE EXTEND # TERMINATE THE JASK.
DCA CLOSEADR
DTCB
EBANK= AOSQ
CLOSEADR 2CADR CLOSEOUT # TERMINATE THE JASK.
TWELVE EQUALS OCT14
ROOTHALF OCTAL 26501 # SQUARE ROOT OF 1/2
GMBLBITA OCTAL 01400 # INDEXED WRT GMBLBITB DO NOT MOVE *******
OCT11276 OCTAL 11276 # POSMAX -- ROOTHALF
GMBLBITB OCTAL 06000 # INDEXED WRT GMBLBITA DO NOT MOVE *******
# SUBROUTINE ROOTCYCL: BY CRAIG WORK, 3 APRIL 68
#
# ROOTCYCL IS A SUBROUTINE WHICH EXECUTS ONE NEWTON SQUARE ALGORITHM ITERATION. THE INITIAL GUESS AT THE
# SQUARE ROOT IS PRESUMED TO BE IN THE A REGISTER AND ONE-HALF THE SQUARE IS TAKEN FROM HALFARG. THE NEW APPROXIMATION
# TO THE SQUARE ROOT IS RETURNED IN THE A REGISTER. DEBRIS: A, L, SR, SCRATCH. ROOTCYCL IS CALLED FROM
# LOCATION (LOC) BY A TC ROOTCYCL, AND RETURNS (TC Q) TO LOC +1.
#
# WARNING: IF THE INITIAL GUESS IS NOT GREATER THAN THE SQUARE, DIVIDE OR ADD OVERFLOW IS A REAL POSSIBILITY.
ROOTCYCL TS SCRATCH # STORE X
TS SR # X/2 NOW IN SR
CA HALFARG # ARG/2 IN THE A REG
ZL # PREPARE FOR DIVISION
EXTEND
DV SCRATCH # (ARG/X)/2
AD SR # (X + ARG/X)/2 IN THE A REG
TC Q