Add remaining Apollo 11 source

This commit is contained in:
chrislgarry 2016-07-07 04:47:26 -04:00
parent ece623da47
commit dc4ea6735c
128 changed files with 85238 additions and 4771 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

518
AGC_BLOCK_TWO_SELF-CHECK.s Normal file
View File

@ -0,0 +1,518 @@
# Copyright: Public domain.
# Filename: AGC_BLOCK_TWO_SELF-CHECK.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1394-1403
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Colossus249/ file of the same
# name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1394
# 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, - OPTION 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 1395
# 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 43/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
# Page 1396
S+6 EQUALS SIX
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
# Page 1397
TS SMODE
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 # WAS COUNTCHK
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
# Page 1398
# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).
# 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
# Page 1399
EXTEND
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
# Page 1400
CS 0000
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
# Page 1401
MASK HI5
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
# Page 1402
CA S-1
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 THE 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
# Page 1403
TS L # BANK NUMBER BEFORE SUPER BANK
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.
SBANK= LOWSUPER

511
AGC_BLOCK_TWO_SELF_CHECK.s Normal file
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.

229
AGS_INITIALIZATION.s Normal file
View File

@ -0,0 +1,229 @@
# 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 INITIALIZIZATION (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.

231
ALARM_AND_ABORT.s Normal file
View File

@ -0,0 +1,231 @@
# Copyright: Public domain.
# Filename: ALARM_AND_ABORT.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1493-1496
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same
# name, and page images. Corrected various
# typos in the transcription of program
# comments, and these should be back-ported
# to Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1483
# THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED
# EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.
#
# THE CALLING SEQUENCE IS AS FOLLOWS:
# TC ALARM
# OCT NNNNN
# # (RETURNS HERE)
BLOCK 02
SETLOC FFTAG7
BANK
EBANK= FAILREG
COUNT 02/ALARM
# ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.
ALARM INHINT
CA Q
ALARM2 TS ALMCADR
INDEX Q
CA 0
BORTENT TS L
PRIOENT CA BBANK
+1 EXTEND
ROR SUPERBNK # ADD SUPER BITS.
TS ALMCADR +1
LARMENT CA Q # STORE RETURN FOR ALARM
TS ITEMP1
CA LOC
TS LOCALARM
CA BANKSET
TS BANKALRM
CHKFAIL1 CCS FAILREG # IS ANYTHING IN FAILREG
TCF CHKFAIL2 # YES TRY NEXT REG
LXCH FAILREG
TCF PROGLARM # TURN ALARM LIGHT ON FOR FIRST ALARM
CHKFAIL2 CCS FAILREG +1
TCF FAIL3
LXCH FAILREG +1
TCF MULTEXIT
FAIL3 CA FAILREG +2
# Page 1494
MASK POSMAX
CCS A
TCF MULTFAIL
LXCH FAILREG +2
TCF MULTEXIT
PROGLARM CS DSPTAB +11D
MASK OCT40400
ADS DSPTAB +11D
MULTEXIT XCH ITEMP1 # OBTAIN RETURN ADDRESS IN A
RELINT
INDEX A
TC 1
MULTFAIL CA L
AD BIT15
TS FAILREG +2
TCF MULTEXIT
# PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND
# AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4. EXAMPLE FOLLOWS,
# CAF OCTXX # ALARM CODE
# TC BANKCALL
# CADR PRIOLARM
# ... ...
# ... ...
# ... ... # ASTRONAUT RETURN
# TC PHASCHNG # IMMEDIATE RETURN TO USER. RESTART
# OCT X.1 # PHASE CHANGE FOR PRIO DISPLAY
BANK 10
SETLOC DISPLAYS
BANK
COUNT 10/DSPLA
PRIOLARM INHINT # * * * KEEP IN DISPLAY ROUTINE'S BANK
TS L # SAVE ALARM CODE
CA BUF2 # 2 CADR OF PRIOLARM USER
TS ALMCADR
CA BUF2 +1
TC PRIOENT +1 # * LEAVE L ALONE
-2SEC DEC -200 # *** DON'T MOVE
CAF V05N09
TCF PRIODSPR
# Page 1495
BLOCK 02
SETLOC FFTAG13
BANK
COUNT 02/ALARM
BAILOUT INHINT
CA Q
TS ALMCADR
TC BANKCALL
CADR VAC5STOR
INDEX ALMCADR
CAF 0
TC BORTENT
OCT40400 OCT 40400
INHINT
WHIMPER CA TWO
AD Z
TS BRUPT
RESUME
TC POSTJUMP # RESUME SENDS CONTROL HERE
CADR ENEMA
SETLOC FFTAG7
BANK
P00DOO INHINT
CA Q
TS ALMCADR
TC BANKCALL
CADR VAC5STOR # STORE ERASABLES FOR DEBUGGING PURPOSES.
INDEX ALMCADR
CAF 0
ABORT2 TC BORTENT
OCT77770 OCT 77770 # DON'T MOVE
CA V37FLBIT # IS AVERAGE G ON
MASK FLAGWRD7
CCS A
TC WHIMPER -1 # YES. DON'T DO POODOO. DO BAILOUT.
TC DOWNFLAG
ADRES STATEFLG
TC DOWNFLAG
# Page 1496
ADRES REINTFLG
TC DOWNFLAG
ADRES NODOFLAG
TC BANKCALL
CADR MR.KLEAN
TC WHIMPER
CCSHOLE INHINT
CA Q
TS ALMCADR
TC BANKCALL
CADR VAC5STOR
CA OCT1103
TC ABORT2
OCT1103 OCT 1103
CURTAINS INHINT
CA Q
TC ALARM2
OCT217 OCT 00217
TC ALMCADR # RETURN TO USER
DOALARM EQUALS ENDOFJOB
# CALLING SEQUENCE FOR VARALARM
# CAF (ALARM)
# TC VARALARM
# Page 1486
# VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY
VARALARM INHINT
TS L # SAVE USER'S ALARM CODE
CA Q # SAVE USER'S Q
TS ALMCADR
TC PRIOENT
OCT14 OCT 14 # DON'T MOVE
TC ALMCADR # RETURN TO USER
ABORT EQUALS BAILOUT # *** TEMPORARY UNTIL ABORT CALLS OUT

634
ANGLFIND.s Normal file
View File

@ -0,0 +1,634 @@
# Copyright: Public domain.
# Filename: ANGLFIND.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 399-411
# Mod history: 2009-05-09 RSB Adapted from the Colossus249/ file
# of the same name, using Comanche055 page
# images.
# 2009-05-22 RSB In NOGOM2, TC ZEROEROR corrected to
# CADR ZEROEROR.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 399
BANK 15
SETLOC KALCMON1
BANK
EBANK= BCDU
COUNT 22/KALC
KALCMAN3 TC INTPRET
RTB
READCDUK # PICK UP CURRENT CDU ANGLES
STORE BCDU # STORE THE INITIAL S/C ANGLES
AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM
MIS # INITIAL S/C AXES TO STABLE MEMBER AXES
BCDU # (MIS)
CALL
CDUTODCM
AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM
MFS # FINAL S/C AXES TO STABLE MEMBER AXES
CPHI # (MFS)
CALL
CDUTODCM
SECAD AXC,1 CALL # MIS AND MFS ARRAYS CALCULATED $2
MIS
TRANSPOS
VLOAD
STADR
STOVL TMIS +12D
STADR
STOVL TMIS +6
STADR
STORE TMIS # TMIS = TRANSPOSE(MIS) SCALED BY 2
AXC,1 AXC,2
TMIS
MFS
CALL
MXM3
VLOAD STADR
STOVL MFI +12D
STADR
STOVL MFI +6
STADR
STORE MFI # MFI = TMIS MFS (SCALED BY 4)
SETPD CALL # TRANSPOSE MFI IN PD LIST
18D
TRNSPSPD
VLOAD STADR
STOVL TMFI +12D
STADR
STOVL TMFI +6
# Page 400
STADR
STORE TMFI # TMFI = TRANSPOSE (MFI) SCALED BY 4
# CALCULATE COFSKEW AND MFISYM
DLOAD DSU
TMFI +2
MFI +2
PDDL DSU # CALCULATE COF SCALED BY 2/SIN(AM)
MFI +4
TMFI +4
PDDL DSU
TMFI +10D
MFI +10D
VDEF
STORE COFSKEW # EQUALS MFISKEW
# CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE
DLOAD DAD
MFI
MFI +16D
DSU DAD
DP1/4TH
MFI +8D
STORE CAM # CAM = (MFI0+MFI4+MFI8-1)/2 HALF-SCALE
ARCCOS
STORE AM # AM=ARCCOS(CAM) (AM SCALED BY 2)
DSU BPL
MINANG
CHECKMAX
EXIT # MANEUVER LESS THAN 0.25 DEG
INHINT # GO DIRECTLY INTO ATTITUDE HOLD
CS ONE # ABOUT COMMANDED ANGLES
TS HOLDFLAG # NOGO WILL STOP ANY RATE AND SET UP FOR A
TC LOADCDUD # GOOD RETURN
TCF NOGO
CHECKMAX DLOAD DSU
AM
MAXANG
BPL VLOAD
ALTCALC # UNIT
COFSKEW # COFSKEW
UNIT
STORE COF # COF IS THE MANEUVER AXIS
GOTO # SEE IF MANEUVER GOES THRU GIMBAL LOCK
LOCSKIRT
ALTCALC VLOAD VAD # IF AM GREATER THAN 170 DEGREES
MFI
# Page 401
TMFI
VSR1
STOVL MFISYM
MFI +6
VAD VSR1
TMFI +6
STOVL MFISYM +6
MFI +12D
VAD VSR1
TMFI +12D
STORE MFISYM +12D # MFISYM=(MFI+TMFI)/2 SCALED BY 4
# CALCULATE COF
DLOAD SR1
CAM
PDDL DSU # PD0 CAM $4
DPHALF
CAM
BOVB PDDL # PD2 1 - CAM $2
SIGNMPAC
MFISYM +16D
DSU DDV
0
2
SQRT PDDL # COFZ = SQRT(MFISYM8-CAM)/(1-CAM)
MFISYM +8D # $ ROOT 2
DSU DDV
0
2
SQRT PDDL # COFY = SQRT(MFISYM4-CAM)/(1-CAM) $ROOT2
MFISYM
DSU DDV
0
2
SQRT VDEF # COFX = SQRT(MFISYM-CAM)/(1-CAM) $ROOT 2
UNIT
STORE COF
# DETERMINE LARGEST COF AND ADJUST ACCORDINGLY
COFMAXGO DLOAD DSU
COF
COF +2
BMN DLOAD # COFY G COFX
COMP12
COF
DSU BMN
COF +4
# Page 402
METHOD3 # COFZ G COFX OR COFY
GOTO
METHOD1 # COFX G COFY OR COFZ
COMP12 DLOAD DSU
COF +2
COF +4
BMN
METHOD3 # COFZ G COFY OR COFX
METHOD2 DLOAD BPL # COFY MAX
COFSKEW +2 # UY
U2POS
VLOAD VCOMP
COF
STORE COF
U2POS DLOAD BPL
MFISYM +2 # UX UY
OKU21
DLOAD DCOMP # SIGN OF UX OPPOSITE TO UY
COF
STORE COF
OKU21 DLOAD BPL
MFISYM +10D # UY UZ
LOCSKIRT
DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY
COF +4
STORE COF +4
GOTO
LOCSKIRT
METHOD1 DLOAD BPL # COFX MAX
COFSKEW # UX
U1POS
VLOAD VCOMP
COF
STORE COF
U1POS DLOAD BPL
MFISYM +2 # UX UY
OKU12
DLOAD DCOMP
COF +2 # SIGN OF UY OPPOSITE TO UX
STORE COF +2
OKU12 DLOAD BPL
MFISYM +4 # UX UZ
LOCSKIRT
DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY
COF +4
STORE COF +4
GOTO
LOCSKIRT
METHOD3 DLOAD BPL # COFZ MAX
# Page 403
COFSKEW +4 # UZ
U3POS
VLOAD VCOMP
COF
STORE COF
U3POS DLOAD BPL
MFISYM +4 # UX UZ
OKU31
DLOAD DCOMP
COF # SIGN OF UX OPPOSITE TO UZ
STORE COF
OKU31 DLOAD BPL
MFISYM +10D # UY UZ
LOCSKIRT
DLOAD DCOMP
COF +2 # SIGN OF UY OPPOSITE TO UZ
STORE COF +2
GOTO
LOCSKIRT
# Page 404
# MATRIX OPERATIONS
MXM3 SETPD # MXM3 MULTIPLIES 2 3X3 MATRICES
0 # AND LEAVES RESULT IN PD LIST
DLOAD* PDDL* # ADDRESS OF 1ST MATRIX IN XR1
12D,2 # ADDRESS OF 2ND MATRIX IN XR2
6,2
PDDL* VDEF # DEFINE VECTOR M2(COL 1)
0,2
MXV* PDDL* # M1XM2(COL 1) IN PD
0,1
14D,2
PDDL* PDDL*
8D,2
2,2
VDEF MXV* # DEFINE VECTOR M2(COL 2)
0,1
PDDL* PDDL* # M1XM2(COL2) IN PD
16D,2
10D,2
PDDL* VDEF # DEFINE VECTOR M2(COL 3)
4,2
MXV* PUSH # M1XM2(COL 3) IN PD
0,1
GOTO
TRNSPSPD # REVERSE ROWS AND COLS IN PD AND
# RETURN WITH M1XM2 IN PD LIST
TRANSPOS SETPD VLOAD* # TRANSPOS TRANSPOSES A 3X3 MATRIX
0 # AND LEAVES RESULT IN PD LIST
0,1 # MATRIX ADDRESS IN XR1
PDVL* PDVL*
6,1
12D,1
PUSH # MATRIX IN PD
TRNSPSPD DLOAD PDDL # ENTER WITH MATRIX IN PD LIST
2
6
STODL 2
STADR
STODL 6
4
PDDL
12D
STODL 4
STADR
STODL 12D
10D
PDDL
# Page 405
14D
STODL 10D
STADR
STORE 14D
RVQ # RETURN WITH TRANSPOSED MATRIX IN PD LIST
MINANG DEC .00069375
MAXANG DEC .472222
# GIMBAL LOCK CONSTANTS
# D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES
# NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES
SD DEC .433015 # = SIN(D) $2
K3S1 DEC .86603 # = SIN(D) $2
K4 DEC -.25 # = -COS(D) $2
K4SQ DEC .125 # = COS(D)COS(D) $2
SNGLCD DEC .008725 # = SIN(NGL)COS(D) $2
CNGL DEC .499695 # = COS(NGL) $2
READCDUK INHINT # LOAD T(MPAC) WITH THE CURRENT CDU ANGLES
CA CDUZ
TS MPAC +2
EXTEND
DCA CDUX
RELINT
TCF TLOAD +6
BANK 16
SETLOC KALCMON2
BANK
COUNT* $$/KALC
CDUTODCM AXT,1 SSP # SUBROUTINE TO COMPUTE DIRECTION COSINE
OCT 3 # MATRIX RELATING S/C AXES TO STARLE
S1 # MEMBER AXES FROM 3 CDU ANGLES IN T(MPAC)
OCT 1 # SET XR1, S1, AND PD FOR LOOP
STORE 7
SETPD
0
LOOPSIN SLOAD* RTB
10D,1
CDULOGIC
STORE 10D # LOAD PD WITH 0 SIN(PHI)
SIN PDDL # 2 COS(PHI)
10D # 4 SIN(THETA)
COS PUSH # 6 COS(THETA)
TIX,1 DLOAD # 8 SIN(PSI)
LOOPSIN # 10 COS(PSI)
6
DMP SL1
10D
# Page 406
STORE 0,2
DLOAD
4
DMP PDDL
0 # (PD6 SIN(THETA)SIN(PHI))
6
DMP DMP
8D
2
SL1 BDSU
12D
SL1
STORE 2,2
DLOAD
2
DMP PDDL # (PD7 COS(PHI)SIN(THETA)) SCALED 4
4
6
DMP DMP
8D
0
SL1
DAD SL1
14D
STORE 4,2
DLOAD
8D
STORE 6,2
DLOAD
10D
DMP SL1
2
STORE 8D,2
DLOAD
10D
DMP DCOMP
0
SL1
STORE 10D,2
DLOAD
4
DMP DCOMP
10D
SL1
STORE 12D,2
DLOAD
DMP SL1 # (PUSH UP 7)
8D
PDDL DMP # (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4
6
# Page 407
0
DAD SL1 # (PUSH UP 7)
STADR # C7=COS(PHI)SIN(THETA)SIN(PSI)
STORE 14D,2
DLOAD
DMP SL1 # (PUSH UP 6)
8D
PDDL DMP # (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4
6
2
DSU SL1 # (PUSH UP 6)
STADR
STORE 16D,2 # C8=-SIN(THETA)SIN(PHI)SIN(PSI)
RVQ # +COS(THETA)COS(PHI)
ENDOCM EQUALS
BANK 15
SETLOC KALCMON1
BANK
# CALCULATION OF THE MATRIX DEL.......
#
# * * __T *
# DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A) SCALED 1
#
# _
# WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.
# A IS THE ANGLE OF ROTATION (DP SCALED 2).
# _
# UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC.
COUNT 22/KALC
DELCOMP SETPD PUSH # MPAC CONTAINS THE ANGLE A
0
SIN PDDL # PD0 = SIN(A)
COS PUSH # PD2 = COS(A)
SR2 PDDL # PD2 = COS(A) $8
BDSU BOVB # PD4 = 1-COS(A) $2
DPHALF
SIGNMPAC
# COMPUTE THE DIAGONAL COMPONENTS OF DEL
PDDL
COF
DSQ DMP
4
DAD SL3
# Page 408
2
BOVB
SIGNMPAC
STODL DEL # UX UX(U-COS(A)) +COS(A) $1
COF +2
DSQ DMP
4
DAD SL3
2
BOVB
SIGNMPAC
STODL DEL +8D # UY UY(1-COS(A)) +COS(A) $1
COF +4
DSQ DMP
4
DAD SL3
2
BOVB
SIGNMPAC
STORE DEL +16D # UZ UZ(1-COS(A)) +COS(A) $1
# COMPUTE THE OFF-DIAGONAL TERMS OF DEL
DLOAD DMP
COF
COF +2
DMP SL1
4
PDDL DMP # D6 UX UY (1-COS A) $ 4
COF +4
0
PUSH DAD # D8 UZ SIN A $ 4
6
SL2 BOVB
SIGNMPAC
STODL DEL +6
BDSU SL2
BOVB
SIGNMPAC
STODL DEL +2
COF
DMP DMP
COF +4
4
SL1 PDDL # D6 UX UZ (1-COS A) $ 4
COF +2
DMP PUSH # D8 UY SIN(A)
0
DAD SL2
6
# Page 409
BOVB
SIGNMPAC
STODL DEL +4 # UX UZ (1-COS(A))+UY SIN(A)
BDSU SL2
BOVB
SIGNMPAC
STODL DEL +12D # UX UZ (U-COS(A))-UY SIGN(A)
COF +2
DMP DMP
COF +4
4
SL1 PDDL # D6 UY UZ (1-COS(A)) $ 4
COF
DMP PUSH # D6 UX SIN(A)
0
DAD SL2
6
BOVB
SIGNMPAC
STODL DEL +14D # UY UZ(1-COS(A)) +UX SIN(A)
BDSU SL2
BOVB
SIGNMPAC
STORE DEL +10D # UY UZ(1-COS(A)) -UX SIN(A)
RVQ
# DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE
# X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)
# LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)
# COS(MGA) WILL BE LEFT IN S1 (SCALED 1)
#
# THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS ***
#
# C =COS(THETA)COS(PSI)
# 0
#
# C =-COS(THETA)SIN(PSI)COS(PHI)+SIN(THETA)SIN(PHI)
# 1
#
# C =COS(THETA)SIN(PSI)SIN(PHI)+SIN(THETA)COS(PHI)
# 2
#
# C =SIN(PSI)
# 3
#
# C =COS(PSI)COS(PHI)
# 4
#
# C =-COS(PSI)SIN(PHI)
# 5
#
# C =-SIN(THETA)COS(PSI)
# 6
#
# C =SIN(THETA)SIN(PSI)COS(PHI)+COS(THETA)SIN(PHI)
# 7
# Page 410
# C =-SIN(THETA)SIN(PSI)SIN(PHI)+COS(THETA)COS(PHI)
# 8
#
# WHERE PHI = OGA
# THETA = IGA
# PSI = MGA
DCMTOCDU DLOAD* ARCSIN
6,1
PUSH COS # PD +0 PSI
SL1 BOVB
SIGNMPAC
STORE S1
DLOAD* DCOMP
12D,1
DDV ARCSIN
S1
PDDL* BPL # PD +2 THETA
0,1 # MUST CHECK THE SIGN OF COS(THETA)
OKTHETA # TO DETERMINE THE PROPER QUADRANT
DLOAD DCOMP
BPL DAD
SUHALFA
DPHALF
GOTO
CALCPHI
SUHALFA DSU
DPHALF
CALCPHI PUSH
OKTHETA DLOAD* DCOMP
10D,1
DDV ARCSIN
S1
PDDL* BPL # PUSH DOWN PHI
8D,1
OKPHI
DLOAD DCOMP # PUSH UP PHI
BPL DAD
SUHALFAP
DPHALF
GOTO
VECOFANG
SUHALFAP DSU GOTO
DPHALF
VECOFANG
OKPHI DLOAD # PUSH UP PHI
VECOFANG VDEF RVQ
# Page 411
# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
NOGOM2 INHINT # THIS LOCATION ACCESSED BY A BZMF NOGO -2
TC BANKCALL
CADR ZEROERROR
NOGO INHINT
TC STOPRATE
# TERMINATE MANEUVER
CAF TWO # NOTE: ALL RETURNS ARE NOW MADE VIA
TC WAITLIST # GOODEND
EBANK= BCDU
2CADR ENDMANU
TCF ENDOFJOB

1069
AOSTASK_AND_AOSJOB.s Normal file

File diff suppressed because it is too large Load Diff

695
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

647
ASCENT_GUIDANCE.s Normal file
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

1027
ATTITUDE_MANEUVER_ROUTINE.s Normal file

File diff suppressed because it is too large Load Diff

499
AUTOMATIC_MANEUVERS.s Normal file
View File

@ -0,0 +1,499 @@
# Copyright: Public domain.
# Filename: AUTOMATIC_MANEUVERS.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1025-1036
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1025
BANK 21
SETLOC DAPS3
BANK
COUNT 21/DAPAM
EBANK= KMPAC
AHFNOROT EXTEND
READ CHAN31
MASK BIT14
EXTEND
BZMF FREECONT
CA RCSFLAGS # SEE IF RATE FILTER HAS BEEN INITIALIZED
MASK BIT14
CCS A # IF SO, PROCEED WITH ATTITUDE CONTROL
TCF REINIT # IF NOT, RECYCLE TO INITIALIZE FILTER
# AUTOMATIC CONTROL YET
EXTEND
READ CHAN31
MASK BIT13
EXTEND
BZMF HOLDFUNC
AUTOCONT CA HOLDFLAG # IF HOLDFLAG IS +, GO TO GRABANG.
EXTEND # OTHERWISE, GO TO ATTHOLD.
BZMF ATTHOLD
TCF GRABANG
# MINIMUM IMPULSE CONTROL
FREECONT CAF ONE
TS HOLDFLAG # RESET HOLDFLAG
# INHIBIT AUTOMATIC STEERING
EXTEND
READ CHAN32
TS L
COM
MASK MANROT
MASK CHANTEMP
LXCH CHANTEMP
TC STICKCHK
INDEX RMANNDX
CA MINTAU # MINTAU +0
TS TAU # +1 +14MS MINIMUM IMPULSE
INDEX PMANNDX # +2 -14MS TIME
CA MINTAU # +3 +0
TS TAU1
INDEX YMANNDX
CA MINTAU
# Page 1026
TS TAU2
TCF T6PROGM
MINTAU DEC 0
DEC 23 # = 14MS
DEC -23 # = -14MS
DEC 0
# Page 1027
# CALCULATION OF ATTITUDE ERRORS:
# _ * _ _ _
# AK = AMGB (CDUX - THETADX) + BIAS
#
# I.E., *AK * * 1 SIN(PSI) 0 ** CDUX - THETADX * *BIAS *
# * * * ** * * *
# *AK1* = * 0 COS(PSI)COS(PHI) SIN(PHI)** CDUY - THETADY * + *BIAS1*
# * * * ** * * *
# *AK2* * 0 -COS(PSI)SIN(PHI) COS(PHI)** CDUZ - THETADZ * *BIAS2*
#
# THE BIASES ARE ADDED ONLY WHILE PERFORMING AUTOMATIC MANEUVERS (ESP KALCMANU) TO PROVIDE ADDITIONAL LEAD
# AND PREVENT OVERSHOOT WHEN STARTING AN AUTOMATIC MANEUVER. NORMALLY THE REQUIRED LEAD IS ONLY 1-2 DEGREES.
# BUT DURING HIGH RATE MANEUVERS IT CAN BE AS MUCH AS 7 DEGREES. THE BIASES ARE COMPUTED BY KALCMANU AND REMAIN
# FIXED UNTIL THE MANEUVER IS COMPLETED AT WHICH TIME THEY ARE RESET TO ZERO.
ATTHOLD CA CDUX
EXTEND
MSU THETADX
TS ERRORX
CA CDUY
EXTEND
MSU THETADY
TS T5TEMP
EXTEND
MP AMGB1
ADS ERRORX
CA T5TEMP
EXTEND
MP AMGB4
TS ERRORY
CA T5TEMP
EXTEND
MP AMGB7
TS ERRORZ
CA CDUZ
EXTEND
MSU THETADZ
TS T5TEMP
EXTEND
MP AMGB5
ADS ERRORY
CA T5TEMP
EXTEND
MP AMGB8
ADS ERRORZ
CS HOLDFLAG
EXTEND
# Page 1028
BZMF JETS
CA BIAS # AD BIASES ONLY IF PERFORMING AUTOMATIC
ADS ERRORX
CA BIAS1
ADS ERRORY
CA BIAS2
ADS ERRORZ
TCF JETS
HOLDFUNC CCS HOLDFLAG
TCF +3
TCF ATTHOLD
TCF +1
GRABANG CAF ZERO # ZERO WBODYS AND BIASES
TS WBODY
TS WBODY +1
TS WBODY1
TS WBODY1 +1
TS WBODY2
TS WBODY2 +1
TS BIAS
TS BIAS1
TS BIAS2
CA RCSFLAGS
MASK OCT16000
EXTEND # IS RATE DAMPING COMPLETED
BZF ENDDAMP # IF SO, GO TO ENDDAMP
CAF ZERO # OTHERWISE, ZERO ERRORS
TS ERRORX
TS ERRORY
TS ERRORZ
TCF JETS
ENDDAMP TS HOLDFLAG # SET HOLDFLAG +0
EXTEND
DCA CDUX # PICK UP CDU ANGLES FOR ATTITUDE HOLD
DXCH THETADX # REFERENCES
CA CDUZ
TS THETADZ
TCF ATTHOLD
# Page 1029
# JET SWITCHING LOGIC AND CALCULATION OF REQUIRED ROTATION COMMANDS
#
# DETERMINE THE LOCATION OF THE RATE ERROR AND THE ATTITUDE ERROR RELATIVE TO THE SWITCHING LOGIC IN THE PHASE
# PLANE.
#
# COMPUTE THE CHANGE IN RATE CORRESPONDING TO THE ATTITUDE ERROR NECESSARY TO DRIVE THE S/C INTO THE
# APPROPRIATE DEADZONE.
#
# .
# R22 RATE . ERROR
# WL+H .
# ********************************* . ***** SWITCH LINES ENCLOSING DEADZONES
# R23 WL * .
# ----------------------------------* . ----- DESIRED RATE LINES
# R23 WL-H - *.
# ****************** - . R20, R21, R22, ETC REGIONS IN PHASE
# * - .* R18 R20 R21 PLANE FOF COMPUTING DESIRED RESPONSE
# * . *
# *- . *
# R22 R24*- R23 . *
# * . *
# * . *
# + -ADB . * AF ATTITUDE
# ........................+--+---------------+--+........................
# AF * . +ADB + ERROR
# * . *
# * . -*
# * . -*
# * . -*
# * . *
# *. - *
# . - *****************
# .*-
# . * --------------------------------
# .
# .
# FIG. 1 PHASE PLANE SWITCHING LOGIC
#
# CONSTANTS FOR JET SWITCHING LOGIC
WLH/SLOP DEC .00463 # = WL+H/SLOPE = .83333 DEG $180
WL-H/SLP DEC .00277 # = WL-H/SLOPE = .5 DEG $180
WLH 2DEC .0011111111 # = WL+H = 0.5 DEG/SEC $450
WLMH 2DEC .0006666666 # = WL-H = 0.3 DEG/SEC $450
WL 2DEC .0008888888 # = WL = 0.4 DEG/SEC $450
# Page 1030
SLOPE2 DEC .32 # = 0.8 DEG/SEC/DEG $450/180
JETS CA ADB
AD FOUR # AF = FLAT REGION = .044 DEG
TS T5TEMP # ADB+AF
CAF TWO
JLOOP TS SPNDX
DOUBLE
TS DPNDX
EXTEND
INDEX A
DCA ADOT
DXCH EDOT
CA HOLDFLAG # HOLDFLAG = +0 MEANS THAT DAP IS IN
EXTEND # ATTITUDE HOLD AND RATE DAMPING IS OVER.
BZF INHOLD # IF THIS IS THE CASE, BYPASS ADDITION
# OF WBODY AND GO TO INHOLD
EXTEND
INDEX DPNDX
DCS WBODY
DAS EDOT # = ADOT-WBODY
INHOLD INDEX SPNDX
CA ERRORX
TS AERR # AERR = BIAS + AK
CCS EDOT
TCF POSVEL
TCF SIGNCK1
TCF NEGVEL
SIGNCK1 CCS EDOT +1
TCF POSVEL
TCF POSVEL
TCF NEGVEL
TCF NEGVEL
POSVEL EXTEND
DCA EDOT
DXCH EDOTVEL
CA T5TEMP
TS ADBVEL # +(ADB+AF)
CA AERR
TS AERRVEL
TC J6.
NEGVEL EXTEND
DCS EDOT
DXCH EDOTVEL
CS T5TEMP
TS ADBVEL # -(ADB+AF)
CS AERR
TS AERRVEL
J6. EXTEND
# Page 1031
SU ADB
AD WLH/SLOP
EXTEND
BZMF J8
CS T5TEMP # (ADB+AF)
AD AERRVEL
EXTEND
BZMF +2
TCF J7
EXTEND
DCS EDOTVEL
EXTEND
DV SLOPE
EXTEND
SU AERRVEL
AD ADB
EXTEND
BZMF J18
TCF J23
J7 CS WL-H/SLP
EXTEND
SU T5TEMP # (ADB+AF)
AD AERRVEL
EXTEND
BZMF J20
TCF J21
J8 EXTEND
DCS WLH
DXCH WTEMP
EXTEND
DCA EDOTVEL
DAS WTEMP
CCS WTEMP
TCF J22
TCF SIGNCK2
TCF NJ22
SIGNCK2 CCS WTEMP +1
TCF J22
TCF J22
TCF NJ22
NJ22 EXTEND
DCA EDOTVEL
EXTEND
DV SLOPE
AD T5TEMP # (ADB+AF)
AD AERRVEL
# Page 1032
CCS A
TCF J23
TCF J23
TCF +2
TCF J23
EXTEND
DCS WLMH # WL - H
DXCH WTEMP
EXTEND
DCA EDOTVEL
DAS WTEMP
CCS WTEMP
TCF J23
TCF SIGNCK3
TCF NJ23
SIGNCK3 CCS WTEMP +1
TCF J23
TCF J23
TCF NJ23
NJ23 CA AERRVEL
AD T5TEMP # (ADB+AF)
AD WL-H/SLP
CCS A
TCF J24
TCF J24
TCF J22
TCF J22
J18 EXTEND
DCS EDOT
DXCH KMPAC
TCF JTIME
J20 CS AERR
AD ADBVEL
EXTEND
MP SLOPE2 # (HYSTERESIS SLOPE)
DXCH KMPAC
EXTEND
DCS EDOT
DAS KMPAC
TCF JTIME
J21 CCS EDOT
TCF JP
TCF SIGNCK4
TCF JN
SIGNCK4 CCS EDOT +1
# Page 1033
TCF JP
TCF JP
TCF JN
JN EXTEND
DCS EDOT
DXCH KMPAC
EXTEND
DCA WL
DAS KMPAC
TCF JTIME
JP EXTEND
DCS EDOT
DXCH KMPAC
EXTEND
DCS WL
DAS KMPAC
TCF JTIME
J22 CCS EDOT
TCF JN
TCF SIGNCK5
TCF JP
SIGNCK5 CCS EDOT +1
TCF JN
TCF JN
TCF JP
TCF JP
J23 INDEX SPNDX
CS BIT13 # RESET RATE DAMPING FLAG
MASK RCSFLAGS # BIT13 FOR ROLL (SPNDX = 0)
TS RCSFLAGS # BIT12 FOR PITCH (SPNDX = 1)
# BIT11 FOR YAW (SPNDX = 2)
INDEX SPNDX
CAF OCT01400 # IS THERE TO BE A FORCED FIRING ON THIS
MASK RCSFLAGS # AXIS
EXTEND
BZF DOJET +2 # NO, GO TO DOJET +2 AND DO NOTHING
TCF J18 # YES, GO TO J18 AND FORCE A FIRING
J24 CS AERR
EXTEND
SU ADBVEL
EXTEND
MP SLOPE2 # (HYSTERESIS SLOPE)
DXCH KMPAC
EXTEND
# Page 1034
DCS EDOT
DAS KMPAC
# Page 1035
# COMPUTE THE JET ON TIME NECESSARY TO ACCOMPLISH THE DESIRED CHANGE IN RATE, I.E.,
#
# T = J/M(DELTA W)
# J
#
# DELTA W = DESIRED CHANGE IN S/C ANGULAR RATE AS DETERMINED BY THE
# SWITCHING LOGIC, AT THIS POINT STORED IN KMPAC.
#
# J/M = S/C INERTIA TO TORQUE RATIO SCALED BY
# (57.3/450)(B24/1600)(1/.8)
# FOR 1 JET OPERATION (M = 700 FT-LB).
# I.E., J/M = J(SLUG-FTFT) x 0.00000085601606
#
# THE CORRESPONDING COMPUTER VARIABLES ESTABLISHED BY
# KEYBOARD ENTRY ARE
# J/M (ROLL)
# J/M1 (PITCH)
# J/M2 (YAW)
#
# T = JET-ON TIME SCALED 16384/1600 SEC
# J
#
# THE COMPUTER VARIABLES ARE
# TAU (ROLL)
# TAU1 (PITCH)
# TAU2 (YAW)
JTIME INDEX SPNDX # PICK UP S/C INERTIA/TORQUE RATIO
CA J/M # SCALED (57.3/450)(B24/1600)
TC SMALLMP # FOR 1-JET OPERATION
CA BIT11
TC SMALLMP
CCS KMPAC
TCF +4
TCF TAUNORM
TCF +4
TCF TAUNORM
CA POSMAX
TCF DOJET
CA NEGMAX
TCF DOJET
TAUNORM CA KMPAC +1
DOJET INDEX SPNDX
TS TAU
CCS SPNDX
TCF JLOOP
TCF T6PROG
# Page 1036
ZEROCMDS CAF ZERO
TS TAU
TS TAU1
TS TAU2
T6PROG EXTEND # WHEN THE ROTATION COMMANDS (TAUS)
DCA JETADDR # HAVE BEEN DETERINED
DXCH T5LOC # RESET T5LOC FOR PHASE3
TCF RESUME
EBANK= KMPAC
JETADDR 2CADR JETSLECT

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# Copyright: Public domain.
# Filename: CM_BODY_ATTITUDE.s
# Filename: CM_BODY_ATTITUDE.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.

1275
CM_ENTRY_DIGITAL_AUTOPILOT.s Normal file

File diff suppressed because it is too large Load Diff

1922
CONIC_SUBROUTINES.s Normal file

File diff suppressed because it is too large Load Diff

73
CONTRACT_AND_APPROVALS.s Normal file
View File

@ -0,0 +1,73 @@
# Copyright: Public domain.
# Filename: CONTRACT_AND_APPROVALS.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Mod history: 2009-05-06 RSB 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
# Page 1
#************************************************************************
# *
# THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS: *
# *
# *
# COLOSSUS 2A *
# *
# *
# THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED *
# IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER DSR *
# PROJECT 55-23870, SPONSORED BY THE MANNED SPACECRAFT *
# CENTER OF THE NATIONAL AERONAUTICS AND SPACE *
# ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE *
# INSTRUMENTATION LABORATORY, MASSACHUSETTS INSTITUTE OF *
# TECHNOLOGY, CAMBRIDGE, MASS. *
# *
#************************************************************************
# SUBMITTED: MARGARET H. HAMILTON DATE: 28 MAR 69
# M.H.HAMILTON, COLOSSUS PROGRAMMING LEADER
# APOLLO GUIDANCE AND NAVIGATION
# APPROVED: DANIEL J. LICKLY DATE: 28 MAR 69
# D.J.LICKLY, DIRECTOR, MISSION PROGRAM DEVELOPMENT
# APOLLO GUIDANCE AND NAVIGATION PROGRAM
# APPROVED: FRED H. MARTIN DATE: 28 MAR 69
# FRED H. MARTIN, COLOSSUS PROJECT MANAGER
# APOLLO GUIDANCE AND NAVIGATION PROGRAM
# APPROVED: NORMAN E. SEARS DATE: 28 MAR 69
# N.E. SEARS, DIRECTOR, MISSION DEVELOPMENT
# APOLLO GUIDANCE AND NAVIGATION PROGRAM
# APPROVED: RICHARD H. BATTIN DATE: 28 MAR 69
# R.H. BATTIN, DIRECTOR, MISSION DEVELOPMENT
# APOLLO GUIDANCE AND NAVIGATION PROGRAM
# APPROVED: DAVID G. HOAG DATE: 28 MAR 69
# D.G. HOAG, DIRECTOR
# APOLLO GUIDANCE AND NAVIGATION PROGRAM
# APPROVED: RALPH R. RAGAN DATE: 28 MAR 69
# R.R. RAGAN, DEPUTY DIRECTOR
# INSTRUMENTATION LABORATORY

558
CONTROLLED_CONSTANTS.s Normal file
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

418
CSM_GEOMETRY.s Normal file
View File

@ -0,0 +1,418 @@
# Copyright: Public domain.
# Filename: CSM_GEOMETRY.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 285-296
# Mod history: 2009-05-08 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 285
BANK 22
SETLOC COMGEOM1
BANK
# THIS ROUTINE TAKES THE SHAFT AND TRUNNION ANGLES AS READ BY THE CM OPTICAL SYSTEM AND CONVERTS THEM INTO A UNIT
# VECTOR REFERENCED TO THE NAVIGATION BASE COORDINATE SYSTEM AND COINCIDENT WTIH THE SEXTANT LINE OF SIGHT.
#
# THE INPUTS ARE: 1) THE SEXTAND SHAFT AND TRUNNION ANGLES ARE STORED SP IN LOCATIONS 3 AND 5 RESPECTIVELY OF THE
# MARK VAC AREA. 2) THE COMPLEMENT OF THE BASE ADDRESS OF THE MARK VAC AREA IS STORED SP AT LOCATION X1 OF YOUR
# JOB VAC AREA.
#
# THE OUTPUT IS A HALF-UNIT VECTOR IN NAVIGATION BASE COORDINATES AND STORED AT LOCATION 32D OF THE VAC AREA. THE
# OUTPUT IS ALSO AVAILABLE AT MPAC.
COUNT 23/GEOM
SXTNB SLOAD* RTB # PUSHDOWN 00,02,04,(17D-19D),32D-36D
5,1 # TRUNNION = TA
CDULOGIC
RTB PUSH
SXTLOGIC
SIN SL1
PUSH SLOAD* # PD2 = SIN(TA)
3,1 # SHAFT = SA
RTB PUSH # PD4 = SA
CDULOGIC
COS DMP
2
STODL STARM # COS(SA)SIN(TA)
SIN DMP
STADR
STODL STARM +2 # SIN(SA)SIN(TA)
COS
STOVL STARM +4
STARM # STARM = 32D
MXV VSL1
NB1NB2
STORE 32D
RVQ
SXTLOGIC CAF 10DEGS- # CORRECT FOR 19.775 DEGREE OFFSET
ADS MPAC
CAF QUARTER
TC SHORTMP
TC DANZIG
# Page 286
# CALCSXA COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-
# OF-SIGHT LIES ALONG THE STAR VECTOR. THE ROUTINE TAKES THE GIVEN STAR VECTOR AND EXPRESSES IT AS A VECTOR REF-
# ERENECED TO THE OPTICS COORDINATE SYSTEM. IN ADDITION IT SETS UP THREE UNIT VECTORS DEFINING THE X, Y, AND Z AXES
# REFERENCED TO THE OPTICS COORDINATE SYSTEM.
#
# THE INPUTS ARE: 1) THE STAR VECTOR REFERRED TO THE PRESENT STABLE MEMMBER COORDINATES STORED AT STAR. 2) SAME ANGLE
# INPUT AS *SMNB*, I.E., SINES AND COSINES OF THE CDU ANGLES, IN THE ORDER Y Z X, AT SINCDU AND COSCDU. A CALL
# TO CDUTRIG WILL PROVIDE THIS INPUT.
#
# THE OUTPUT ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY. (LOW ORDER PART
# EQUAL TO ZERO).
CALCSXA ITA VLOAD # PUSHDOWN 00-26D, 28D, 30D, 32D-36D
28D
STAR
CALL
*SMNB*
MXV VSL1
NB2NB1
STOVL STAR
HIUNITX
STOVL XNB1
HIUNITY
STOVL YNB1
HIUNITZ
STCALL ZNB1
SXTANG1
# Page 287
# SXTANG COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-OF-
# SIGHT LIES ALONG THE STAR VECTOR.
#
# THE INPUTS ARE: 1) THE STAR VECTOR REFERRED TO ANY COORDINATE SYSTEM STORED AT STAR. 2) THE NAVIGATION BASE
# COORDINATES REFERRED TO THE SAME COORDINATE SYSTEM. THESE THREE HALF-UNIT VECTORS ARE STROED AT XNB, YNB,AND
# ZNB.
#
# THE OUTPUTS ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY. (LOW ORDER PART
# EQUAL TO ZERO).
SXTANG ITA RTB # PUSHDOWN 16D,18D,22D-26D,28D
28D
TRANSP1 # EREF WRT NB2
VLOAD MXV
XNB
NB2NB1
VSL1
STOVL XNB1
YNB
MXV VSL1
NB2NB1
STOVL YNB1
ZNB
MXV VSL1
NB2NB1
STORE ZNB1
RTB RTB
TRANSP1
TRANSP2
SXTANG1 VLOAD VXV
ZNB1
STAR
BOV
+1
UNIT BOV
ZNB=S1
STORE PDA # PDA = UNIT(ZNB X S)
DOT DCOMP
XNB1
STOVL SINTH # SIN(SA) = PDA . -XNB
PDA
DOT
YNB1
STCALL COSTH # COS(SA) = PDA . YNB
ARCTRIG
# Page 288
RTB
1STO2S
STOVL SAC
STAR
BOV
+1
DOT SL1
ZNB1
ACOS
BMN SL2
SXTALARM # TRUNNION ANGLE NEGATIVE
BOV DSU
SXTALARM # TRUNNION ANGLE GREATER THAN 90 DEGREES
20DEG-
RTB
1STO2S
STORE PAC # FOR FLIGHT USE, CULTFLAG IS ON IF
CLRGO # TRUNION IS GREATER THAN 90 DEG
CULTFLAG
28D
SXTALARM SETGO # ALARM HAS BEEN REMOVED FROM THIS
CULTFLAG
28D # SUBROUTINE, ALARM WILL BE SET BY MPI
ZNB=S1 DLOAD
270DEG
STODL SAC
20DEGS-
STORE PAC
CLRGO
CULTFLAG
28D
# Page 289
# 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 VEHICLES 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)
BANK 23
SETLOC COMGEOM2
BANK
COUNT 10/GEOM
SVDWN1 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
SVDWN2 VLOAD VSL*
TDELTAV
0 -7,2
VAD VSL*
RCV
# Page 290
0,2
STOVL R-OTHER
TNUV
VSL* VAD
0 -4,2
VCV
VSL*
0,2
STORE V-OTHER
RVQ
# Page 291
# SUBROUTINE TO COMPUTE THE NATURAL LOG OF C(MPAC, MPAC +1).
#
# ENTRY: CALL
# LOG
#
# SUBROUTINE RETURNS WITH -LOG IN DP MPAC.
#
# EBANK IS ARBITRARY.
BANK 14
SETLOC POWFLIT2
BANK
COUNT 23/GEOM
LOG NORM BDSU # GENERATES LOG BY SHIFTING ARG
MPAC +3 # UNTIL IT LIES BETWEEN .5 AND 1.
NEARLY1 # THE LOG OF THIS PART IS FOUND AND THE
EXIT # LOG OF THE SHIFTED PART IS COMPUTED
TC POLY # AND ADDED IN. SHIFT COUNT STORED
DEC 2 # (N-1, SUPPLIED BY SMERZH)
2DEC 0 # IN MPAC +3.
2DEC .031335467
2DEC .0130145859
2DEC .0215738898
CAF ZERO
TS MPAC +2
EXTEND
DCA CLOG2/32
DXCH MPAC
DXCH MPAC +3
COM # LOAD POSITIVE SHIFT COUNT IN A.
TC SHORTMP # MULTIPLY BY SHIFT COUNT.
DXCH MPAC +1
DXCH MPAC
DXCH MPAC +3
DAS MPAC
TC INTPRET # RESULT IN MPAC, MPAC +1
RVQ
NEARLY1 2DEC .999999999
# Page 292
CLOG2/32 2DEC .0216608494
# Page 293
# SUBROUTINE NAME: EARTH ROTATOR (EARROT1 OR EARROT2) DATE: 15 FEB 67
# MOD NO: N +1 LOG SECTION: POWERED FLIGHT SUBROS
# MOD BY: ENTRY GROUP (BAIRNSFATHER)
#
# FUNCTIONAL DESCRIPTION: THIS ROUTINE PROJECTS THE INITIAL EARTH TARGET VECTOR RTINIT AHEAD THROUGH
# THE ESTIMATED TIME OF FLIGHT. INITIAL CALL RESOLVES THE INITIAL TARGET VECTOR RTINIT INTO EASTERLY
# AND NORMAL COMPONENTS RTEAST AND RTNORM. INITIAL AND SUBSEQUENT CALLS ROTATE THIS VECTOR
# ABOUT THE (FULL) UNIT POLAR AXIS UNITW THROUGH THE ANGLE WIE DTEAROT TO OBTAIN THE ROTATED
# TARGET VECTOR RT. ALL VECTORS EXCEPT UNITW ARE HALF UNIT.
# THE EQUATIONS ARE:
# _ _ _ _
# RT = RTINIT + RTNORM (COS(WT) - 1) + RTEAST SIN(WT)
#
# WHERE WT = WIE DTEAROT
#
# RTINIT = INITIAL TARGET VECTOR
# _ _ _
# RTEAST = UNITW * RTINIT
# _ _ _
# RTNORM = RTEAST * UNITW
#
# FOR CONTINUOUS UPDATING, ONLY ONE ENTRY TO EARROT1 IS REQUIRED, WITH SUBSEQUENT ENTRIES AT EARROT2.
#
# CALLING SEQUENCE: FIRST CALL SUBSEQUENT CALL
# STCALL DTEAROT STCALL DTEAROT
# EARROT1 EARROT2
# C(MPAC) UNSPECIFIED C(MPAC) = DTEAROT
# PUSHLOC = PDL+0, ARBITRARY. 6 LOCATIONS USED.
#
# SUBROUTINES USED: NONE
#
# NORMAL EXIT MODES: RVQ
#
# ALARMS: NONE
#
# OUTPUT: RTEAST (-1) .5 UNIT VECTOR EAST, COMPNT OF RTINIT LEFT BY FIRST CALL
# RTNORM (-1) .5 UNIT VECTOR NORML, COMPNT OF RTINIT LEFT BY FIRST CALL
# RT (-1) .5 UNIT TARGET VECTOR, ROTATED LEFT BY ALL CALLS
# DTEAROT (-28) CS MAY BE CHANGED BY EARROT2, IF OVER 1 DAY
#
# ERASABLE INITIALIZATION REQUIRED:
# UNITW (0) UNIT POLAR VECTOR PAD LOADED
# RTINIT (-1) .5 UNIT INITIAL TARGET VECTOR LEFT BY ENTRY
# DTEAROT (-28) CS TIME OF FLIGHT LEFT BY CALLER
#
# DEBRIS: QPRET, PDL+0 ... PDL+5
# Page 294
EBANK= RTINIT
EARROT1 VLOAD VXV
UNITW # FULL UNIT VECTOR
RTINIT # .5 UNIT
STORE RTEAST # .5 UNIT
VXV
UNITW # FULL UNIT
STODL RTNORM # .5 UNIT
DTEAROT # (-28) CS
EARROT2 BOVB DDV
TCDANZIG # RESET OVFIND, IF ON
1/WIE
BOV PUSH
OVERADAY
COS DSU
HIDPHALF
VXSC PDDL # XCH W PUSH LIST
RTNORM # .5 UNIT
SIN VXSC
RTEAST # .5 UNIT
VAD VSL1
VAD UNIT # INSURE THAT RT IS "UNIT".
RTINIT # .5 UNIT
STORE RT # .5 UNIT TARGET VECTOR
RVQ
OVERADAY DLOAD SIGN
1/WIE
DTEAROT
BDSU
DTEAROT
STORE DTEAROT
GOTO
EARROT2
#WIE 2DEC .1901487997
1/WIE 2DEC 8616410
NB2NB1 2DEC +.8431756920 B-1
2DEC 0
2DEC -.5376381241 B-1
# Page 295
ZERINFLT 2DEC 0
HALFNFLT 2DEC .5
2DEC 0
2DEC +.5376381241 B-1
2DEC 0
2DEC +.8431756920 B-1
NB1NB2 2DEC +.8431756920 B-1
2DEC 0
2DEC +.5376381241 B-1
2DEC 0
2DEC .5
2DEC 0
2DEC -.5376381241 B-1
2DEC 0
2DEC +.8431756920 B-1
# Page 296
10DEGS- DEC 3600
270DEG OCT 60000 # SHAFT 270 DEGREES 25 COMP.
OCT 00000
20DEGS- DEC -07199
DEC -00000
20DEG- DEC 03600
DEC 00000

481
DAPIDLER_PROGRAM.s Normal file
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

176
DAP_INTERFACE_SUBROUTINES.s Normal file
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.

1485
DISPLAY_INTERFACE_ROUTINES.s Normal file

File diff suppressed because it is too large Load Diff

457
DOWN-TELEMETRY_PROGRAM.s Normal file
View File

@ -0,0 +1,457 @@
# Copyright: Public domain.
# Filename: DOWN-TELEMETRY_PROGRAM.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1093-1102
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-08 RSB Adapted from Colossus249/ file of same name
# and page images. Corrected various typos
# in the transcription of program comments,
# and these should be back-ported to
# Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1093
# 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 CHANGES 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
# TRANSITIONS (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 1094
# (No source on this page of the original assembly listing.)
# Page 1095
# 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 CONSISTES 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 TAGGES 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., IDNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777.
# (NOTE: TE TERM `EQUIVALENT' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)
# 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777
# Page 1096
# 4. THE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINT 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 05/DPROG
DODOWNTM TS BANKRUPT
EXTEND
QXCH QRUPT # SAVE Q
CA BIT7 # SET WORD ORDER CODE TO 1. EXCEPTION: AT
EXTEND # THE BEGINNING OF EACH LIST THE WORD
WOR CHAN13 # CODE WILL BE SET BACK TO 0.
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
# Page 1097
TCF NEXTINSL # YES
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
# Page 1098
WAND CHAN13 # SET WORD ORDER CODE TO ZERO
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
# Page 1099
DCA 1401 # PICK UP FIRST 2 WORDS OF SNAPSHOT.
EBANK= DNTMBUFF
SNAPEND TCF DNTMEXIT # NOW GO 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 (PROBLEMS 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 1100
# SUBROUTINE NAME -- DNDUMP
#
# FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL 8 BANKS OF ERASABLE STORAGE TWICE. 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 1101
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 -- SEND DOWNLIST AGAIN
# AGAIN
TCF DNDUMPI +2 # NO -- GO BACK AND INITIALZE 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 TO 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 1102
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).

410
DOWNLINK_LISTS.s Normal file
View File

@ -0,0 +1,410 @@
# Copyright: Public domain.
# Filename: DOWNLINK_LISTS.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 170-180
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 10/05/09 FB Transcription of Batch FB-1 Assignment.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 170
BANK 22
SETLOC DOWNTELM
BANK
EBANK= DNTMBUFF
# SPECIAL DOWNLINK OP CODES
# OP CODE ADDRESS (EXAMPLE) SENDS... BIT 15 BITS 14-12 BITS 11-0
# ------- ----------------- -------- ------ ---------- ---------
# 1DNADR TIME2 (2 AGC WDS) 0 0 ECADR
# 2DNADR TEPHEM (4 AGC WDS) 0 1 ECADR
# 3DNADR VGBODY (6 AGC WDS) 0 2 ECADR
# 4DNADR STATE (8 AGC WDS) 0 3 ECADR
# 5DNADR UPBUFF (10 AGC WDS) 0 4 ECADR
# 6DNADR DSPTAB (12 AGC WDS) 0 5 ECADR
# DNCHAN 30 CHANNELS 0 7 CHANNEL
# ADDRESS
# DNPTR NEXTLIST POINTS TO NEXT 0 6 ADRES
# LIST
#
# DOWNLIST FORMAT DEFINITIONS AND RULES --
# 1. END OF A LIST = -XDNADR (X = 1 TO 6), -DNPTR, OR -DNCHAN.
# 2. SNAPSHOT SUBLIST = LIST WHICH STARTS WITH A -1DNADR.
# 3. SNAPSHOT SUBLIST CAN ONLY CONTAIN 1DNADRS.
# 4. TIME2 1DNADR MUST BE LOCATED IN THE CONTROL LIST OF A DOWNLIST.
# 5. ERASABLE DOWN TELEMETRY WORDS SHOULD BE GROUPED IN SEQUENTIAL
# LOCATIONS AS MUCH AS POSSIBLE TO SAVE STORAGE USED BY DOWNLINK LISTS.
# 6. THE DOWNLINK LISTS (INCLUDING SUBLISTS) ARE ORGANIZED SUCH THAT THE ITEMS LISTED FIRST (IN FRONT OF FBANK) ARE
# SENT FIRST. EXCEPTION--- SNAPSHOT SUBLISTS. IN THE SNAPSHOT SUBLISTS THE DATA REPRESENTED BY THE FIRST
# 11 1DNADRS IS PRESERVED (IN ORDER) IN DNTMBUFF AND SENT BY THE NEXT 11 DOWNRUPTS. THE DATA REPRESENTED BY THE
# LIST IS SENT IMMEDIATELY.
COUNT 05/DLIST
ERASZERO EQUALS 7
SPARE EQUALS ERASZERO # USE SPARE TO INDICATE AVAILABLE SPACE
LOWIDCOD OCT 77340 # LOW ID CODE
NOMDNLST EQUALS CMCSTADL # FRESH START AND POST P27 DOWNLIST
UPDNLIST EQUALS CMENTRDL # UPDATE PROGRAM (P27) DOWNLIST
# Page 171
# CSM POWERED FLIGHT DOWNLIST
#
# --------------------- CONTROL LIST -------------------------
CMPOWEDL EQUALS
DNPTR CMPOWE01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPOWE02 # COLLECT SECOND SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPOWE03 # COMMON DATA
1DNADR TIG # TIG,+1
1DNADR DELLT4 # DELLT4,+1
3DNADR RTARG # RTARG,+1,+2,...+5
1DNADR TGO # TGO,+1
1DNADR PIPTIME1 # PIPTIME1,+1
3DNADR DELV # DELV,+1,...,+4,+5
1DNADR PACTOFF # PACTOFF,YACTOFF
1DNADR PCMD # PCMD,YCMD
1DNADR CSTEER # CSTEER,+1
3DNADR DELVEET1 # CSI DELTA VELOCITY COMPONENTS (31-33)
6DNADR REFSMMAT # REFSMMAT,+1,...+10,+11
DNPTR CMPOWE04 # COMMON DATA
1DNADR TIME2 # TIME2,TIME1
DNPTR CMPOWE05 # COMMON DATA
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPOWE02 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPOWE03 #
DNPTR CMPOWE06 # COMMON DATA
1DNADR ELEV # ELEV,+1
1DNADR CENTANG # CENTANG,+1
1DNADR DELTAR # DELTAR,+1
1DNADR STATE +10D # FLAGWORDS 10 AND 11
1DNADR TEVENT # TEVENT,+1
1DNADR PCMD # PCMD,YCMD
1DNADR OPTMODES # OPTMODES,HOLDFLAG
DNPTR CMPOWE07 # COMMON DATA
3DNADR VGTIG # VGTIG,+1,...,+4,+5
-3DNADR DELVEET2 # CDH DELTA VELOCITY COMPONENTS (98-100)
# --------------------- SUB LISTS ---------------------------
CMPOWE01 -1DNADR RN +2 # RN +2,+3 SNAPSHOT DATA
1DNADR RN +4 # RN +4,+5
1DNADR VN # VN, +1
1DNADR VN +2 # VN +2,+3
1DNADR VN +4 # VN +4,+5
1DNADR PIPTIME # PIPTIME, +1
-1DNADR RN # RN, +1
CMPOWE02 -1DNADR CDUZ # CDUZ,CDUT SNAPSHOT DATA
# Page 172
1DNADR ADOT # ADOT,+1/OGARATE,+1
1DNADR ADOT +2 # ADOT+2,+3/OMEGAB+2,+3
1DNADR ADOT +4 # ADOT+4,+5/OMEGAB+4,+5
-1DNADR CDUX # CDUX,CDUY
CMPOWE03 2DNADR AK # AK,AK1,AK2,RCSFLAGS COMMON DATA
-2DNADR THETADX # THETADX,THETADY,THETADZ,GARBAGE
CMPOWE04 5DNADR STATE # FLAGWRD0 THRU FLAGWRD9 COMMON DATA
-6DNADR DSPTAB # DISPLAY TABLES
CMPOWE05 -1DNADR R-OTHER +2 # R-OTHER+2,+3 SNAPSHOT DATA
1DNADR R-OTHER +4 # R-OTHER+4,+5
1DNADR V-OTHER # V-OTHER,+1
1DNADR V-OTHER +2 # V-OTHER+2,+3
1DNADR V-OTHER +4 # V-OTHER+4,+5
1DNADR T-OTHER # T-OTHER,+1
-1DNADR R-OTHER # R-OTHER,+1
CMPOWE06 1DNADR RSBBQ # RSBBQ,+1 COMMON DATA
3DNADR CADRFLSH # CADRFLSH,+1,+2,FAILREG,+1,+2
-2DNADR CDUS # CDUS,PIPAX,PIPAY,PIPAZ
CMPOWE07 1DNADR LEMMASS # LEMMASS,CSMMASS COMMON DATA
1DNADR DAPDATR1 # DAPDATR1,DAPDATR2
2DNADR ERRORX # ERRORX,ERRORY,ERRORZ,GARBAGE
3DNADR WBODY # WBODY,...+5/OMEGAC,...+5
2DNADR REDOCTR # REDOCTR,THETAD,+1,+2
1DNADR IMODES30 # IMODES30,IMODES33
DNCHAN 11 # CHANNELS 11,12
DNCHAN 13 # CHANNELS 13,14
DNCHAN 30 # CHANNELS 30,31
-DNCHAN 32 # CHANNELS 32,33
# -----------------------------------------------------------
# Page 173
# CSM COAST AND ALIGNMENT DOWNLIST
# --------------------- CONTROL LIST ------------------------
CMCSTADL EQUALS # SEND ID BY SPECIAL CODING
DNPTR CMCSTA01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMCSTA02 # COLLECT SECOND SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMCSTA03 # COMMON DATA
1DNADR TIG # TIG,+1
1DNADR BESTI # BESTI,BESTJ
4DNADR MARKDOWN # MARKDOWN,+1,...+5,+6,GARBAGE
4DNADR MARK2DWN # MARK2DWN,+1,...+5,+6
2DNADR HAPOX # APOGEE AND PERIGEE FROM R30 (28-29)
1DNADR PACTOFF # PACTOFF, YACTOFF (30)
3DNADR VGTIG # VGTIG,...+5
6DNADR REFSMMAT # REFSMMAT,+1,...+10,+11
DNPTR CMCSTA04 # COMMON DATA
1DNADR TIME2 # TIME2,TIME1
DNPTR CMCSTA05 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMCSTA02 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMCSTA03 # COMMON DATA
DNPTR CMCSTA06 # COMMON DATA
3DNADR OGC # OGC,+1,IGC,+1,MGC,+1
1DNADR STATE +10D # FLAGWRDS 10 AND 11
1DNADR TEVENT # TEVENT,+1
1DNADR LAUNCHAZ # LAUNCHAZ,+1
1DNADR OPTMODES # OPTMODES,HOLDFLAG
DNPTR CMCSTA07 # COMMON DATA
-6DNADR DSPTAB # DISPLAY TABLES
# --------------------- SUB LISTS ---------------------------
CMCSTA01 EQUALS CMPOWE01 # COMMON DOWNLIST DATA
CMCSTA02 EQUALS CMPOWE02 # COMMON DOWNLIST DATA
CMCSTA03 EQUALS CMPOWE03 # COMMON DOWNLIST DATA
CMCSTA04 EQUALS CMPOWE04 # COMMON DOWNLIST DATA
CMCSTA05 EQUALS CMPOWE05 # COMMON DOWNLIST DATA
CMCSTA06 EQUALS CMPOWE06 # COMMON DOWNLIST DATA
CMCSTA07 EQUALS CMPOWE07 # COMMON DOWNLIST DATA
# Page 174
# -----------------------------------------------------------
# Page 175
# CSM RENDEZVOUS AND PRETHRUST LIST
# --------------------- CONTROL LIST ------------------------
CMRENDDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR CMREND01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMREND02 # COLLECT SECOND SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMREND03 # COMMON DATA
1DNADR TIG # TIG,+1
1DNADR DELLT4 # DELLT4,+1
3DNADR RTARG # RTARG,+1,...+4,+5
1DNADR VHFTIME # VHFTIME,+1
4DNADR MARKDOWN # MARKTIME(DP),YCDU,SCDU,ZCDU,TCDU,XCDU,RM
1DNADR VHFCNT # VHFCNT,+1
1DNADR TTPI # TTPI,+1
1DNADR ECSTEER # ECSTEER,+1
1DNADR DELVTPF # DELVTPF,+1
2DNADR TCDH # CDH AND CSI TIME (32-33)
1DNADR TPASS4 # TPASS4,+1
3DNADR DELVSLV # DELVSLV,+1...+4,+5
2DNADR RANGE # RANGE,+1,RRATE,+1
DNPTR CMREND04 # COMMON DATA
1DNADR TIME2 # TIME2,TIME1
DNPTR CMREND05 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMREND02 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMREND03 # COMMON DATA
DNPTR CMREND06 # COMMON DATA
1DNADR DIFFALT # CDH DELTA ALTITUDE
1DNADR CENTANG # CENTANG,+1
1DNADR DELTAR # DELTAR,+1
3DNADR DELVEET3 # DELVEET3,+1,...,+4,+5
1DNADR OPTMODES # OPTMODES,HOLDFLAG
DNPTR CMREND07 # COMMON DATA
1DNADR RTHETA # RTHETA,+1
2DNADR LAT(SPL) # LAT(SPL),LNG(SPL),+1
2DNADR VPRED # VPRED,+1,GAMMAEI,+1
-1DNADR STATE +10D # FLAGWRDS 10 AND 11
# --------------------- SUB LISTS ----------------------------
CMREND01 EQUALS CMPOWE01 # COMMON DOWNLIST DATA
CMREND02 EQUALS CMPOWE02 # COMMON DOWNLIST DATA
CMREND03 EQUALS CMPOWE03 # COMMON DOWNLIST DATA
CMREND04 EQUALS CMPOWE04 # COMMON DOWNLIST DATA
# Page 176
CMREND05 EQUALS CMPOWE05 # COMMON DOWNLIST DATA
CMREND06 EQUALS CMPOWE06 # COMMON DOWNLIST DATA
CMREND07 EQUALS CMPOWE07 # COMMON DOWNLIST DATA
# ------------------------------------------------------------
# Page 177
# CSM ENTRY AND UPDATE DOWNLIST
# --------------------- CONTROL LIST -------------------------
CMENTRDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR CMENTR01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMENTR02 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMENTR03 # COMMON DATA
2DNADR CMDAPMOD # CMDAPMOD,PREL,QREL,RREL
1DNADR L/D1 # L/D1,+1
6DNADR UPBUFF # UPBUFF,+1,...+10,+11
4DNADR UPBUFF +12D # UPBUFF+12,13,...+18,+19D
2DNADR COMPNUMB # COMPNUMB,UPOLDMOD,UPVERB,UPCOUNT
1DNADR PAXERR1 # PAXERR1,ROLLTM
3DNADR LATANG # LATANG,+1,RDOT,+1,THETAH,+1
2DNADR LAT(SPL) # LAT(SPL),+1,LNG(SPL),+1
1DNADR ALFA/180 # ALFA/180,BETA/180
DNPTR CMENTR04 # COMMON DATA
1DNADR TIME2 # TIME2,TIME1
DNPTR CMENTR05 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMENTR02 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SENT SNAPSHOT
2DNADR AK # AK,AK1,AK2,RCSFLAGS
3DNADR ERRORX # ERRORX/Y/Z,THETADX/Y/Z
2DNADR CMDAPMOD # CMDAPMOD,PREL,QREL,RREL
6DNADR UPBUFF # UPBUFF+0,+1,...+10,+11D
4DNADR UPBUFF +12D # UPBUFF+12,+13,...+18,+19D
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR DAPDATR1 # DAPDATR1,DAPDATR2
1DNADR ROLLTM # ROLLTM,ROLLC
1DNADR OPTMODES # OPTMODES,HOLDFLAG
3DNADR WBODY # WBODY,...+5/OMEGAC,...+5
2DNADR REDOCTR # REDOCTR,THETAD+0,+1,+2
1DNADR IMODES30 # IMODES30,IMODES33
DNCHAN 11 # CHANNELS 11,12
DNCHAN 13 # CHANNELS 13,14
DNCHAN 30 # CHANNELS 30,31
DNCHAN 32 # CHANNELS 32,33
1DNADR RSBBQ # RSBBQ,+1
3DNADR CADRFLSH # CADRFLSH,+1,+2,FAILREG,+1,+2
1DNADR STATE +10D # FLAGWRDS 10 AND 11
-1DNADR GAMMAEI # GAMMAEI,+1
# --------------------- SUB LISTS ----------------------------
CMENTR01 EQUALS CMPOWE01 # COMMON DOWNLIST DATA
# Page 178
CMENTR02 EQUALS CMPOWE02 # COMMON DOWNLIST DATA
CMENTR03 EQUALS CMPOWE03 # COMMON DOWNLIST DATA
CMENTR04 EQUALS CMPOWE04 # COMMON DOWNLIST DATA
CMENTR05 -1DNADR DELV # DELV,+1 SNAPSHOT DATA
1DNADR DELV +2 # DELV+2,+3
1DNADR DELV +4 # DELV+4,+5
1DNADR TTE # TTE,+1
1DNADR VIO # VIO,+1
1DNADR VPRED # VPRED,+1
-1DNADR PIPTIME1 # PIPTIME1,+1
CMENTR07 EQUALS CMPOWE07 # COMMON DOWNLIST DATA
# -------------------------------------------------------------
# Page 179
# --------------------- CONTROL LIST --------------------------
CMPG22DL EQUALS # SEND ID BY SPECIAL CODING
DNPTR CMPG2201 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPG2202 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPG2203 # COMMON DATA
6DNADR SVMRKDAT # LANDING SITE MARK DATA
6DNADR SVMRKDAT +12D # SVMRKDAT+0,...+34
6DNADR SVMRKDAT +24D # LANDING SITE MARK DATA
1DNADR LANDMARK # LANDMARK,GARBAGE
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
DNPTR CMPG2204 # COMMON DATA
1DNADR TIME2 # TIME2,TIME1
DNPTR CMPG2205 # COLLECT SNAPSHOT
2DNADR DNTMBUFF # SEND SNAPSHOT
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
DNPTR CMPG2202 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR CMPG2203 # COMMON DATA
DNPTR CMPG2206 # COMMON DATA
1DNADR 8NN # 8NN,GARBAGE
1DNADR STATE +10D # FLAGWRDS 10 AND 11
3DNADR RLS # RLS,+1,...+4,+5
1DNADR SPARE
1DNADR OPTMODES # OPTMODES,HOLDFLAG
DNPTR CMPG2207 # COMMON DATA
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
1DNADR SPARE
-1DNADR SPARE
# --------------------- SUB LISTS --------------------------
CMPG2201 EQUALS CMPOWE01 # COMMON DOWNLIST DATA
CMPG2202 EQUALS CMPOWE02 # COMMON DOWNLIST DATA
CMPG2203 EQUALS CMPOWE03 # COMMON DOWNLIST DATA
# Page 180
CMPG2204 EQUALS CMPOWE04 # COMMON DOWNLIST DATA
CMPG2205 -1DNADR LONG # LONG,+1 SNAPSHOT DATA
1DNADR ALT # ALT,+1
-1DNADR LAT # LAT,+1
CMPG2206 EQUALS CMPOWE06 # COMMON DOWNLIST DATA
CMPG2207 EQUALS CMPOWE07 # COMMON DOWNLIST DATA
# -----------------------------------------------------------
DNTABLE GENADR CMCSTADL
GENADR CMENTRDL
GENADR CMRENDDL
GENADR CMPOWEDL
GENADR CMPG22DL
# -----------------------------------------------------------

455
DOWN_TELEMETRY_PROGRAM.s Normal file
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

373
ENTRY_LEXICON.s Normal file
View File

@ -0,0 +1,373 @@
# Copyright: Public domain.
# Filename: ENTRY_LEXICON.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 837-843
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same
# name and Comanche 055 page images.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 837
# VARIABLE DESCRIPTION MAXIMUM VALUE * COMPUTER NAME
# -------- ----------- --------------- -------------
# _
# URT0 INITIAL TARGET VECTOR 2 (UNIT VECTOR) = RTINIT
# _
# UZ UNIT VECTOR NORTH 1 = UNITW
# _
# V VELOCITY VECTOR 2 VSAT = VEL
# _
# R POSITION VECTOR 2 EXP 29 METERS = RN
# _
# VI INERTIAL VELOCITY 128 M/CENTISEC = VN
# _
# RTE VECTOR EAST AT INITIAL TARGET 2 = RTEAST
# _
# UTR NORMAL TO RTE AND UZ 2 = RTNORM
# _
# URT TARGET VECTOR 2 = RT
# _
# UNI UNIT NORMAL TO TRAJECTORY PLANE 2
# _
# DELV INTEGRATED ACCEL. FROM PIPAS 5.85 16384 CM/S
# _
# G GRAVITY VECTOR 128 M/CENTISEC = GDT/2
#
# A0 INITIAL DRAG FOR UPCONTRL 805 FPSS FPSS=FT/SEC/SEC
#
# AHOOKDV TERM IN GAMMAL CALC. = AHOOK DVL 16
#
# A1 DRAG VALUE IN FACTOR CALCULATION 805 FPSS
#
# ALP CONST FOR UPCONTRL 1
#
# ASKEP KEPLER RANGE 21600 NM NM = NAUTICAL MILE
#
# ASP1 FINAL PHASE RANGE 21600 NM
#
# ASPUP UP-RANGE 21600 NM
#
# ASP3 GAMMA CORRECTION 21600 NM
#
# ASPDWN RANGE DOWN TO PULL-UP 21600 NM
#
# ASP PREDICTED RANGE 21600 NM NOT STORED
#
# COSG COSINE(GAMMAL) 2 = COSG/2
#
# C/D0 RECIPROCAL DRAG, -4/D0 B-8 64/FPSS
#
# D TOTAL ACCELERATION 805 FPSS
#
# D0 CONTROLLED CONSTANT D 805 FPSS
#
# DHOOK TERM IN GAMMAL COMPUTATION 805 FPSS
#
# DIFF THETNM-ASP (RANGE DIFFERENCE) 21600 NM
#
# DIFFOLD PREVIOUS VALUE OF DIFF 21600 NM
#
# DLEWD CHANGE IN LEWD 1
#
# DR REFERENCE DRAG FOR DOWNCONTROL 805 FPSS NOT STORED
#
# DREFR REFERENCE DRAG 805 FPSS NOT STORED
#
# DVL VS1-VL 2 VSAT
#
# E ECCENTRICITY 4 NOT STORED
#
# F1 DRANGE/D DRAG (FINAL PHASE) 2700/805 = FX +5
#
# F2 DRANGE/D RDOT (FINAL PHASE) 2700/2VS NM/FPS = FX +4
# Page 838
#
# F3 DRANGE/D (L/D) 2700 NM = FX
#
# FACT1 CONST FOR UPCONTRL 805 FPSS
#
# FACT2 CONST FOR UPCONTRL 1/805 FPSS
#
# FACTOR USED IN UPCONTRL 1 * MAXIMUM VALUE DENOTES UNSCALED
# VARIABLE VALUE WHEN SCALED
# GAMMAL FLIGHT PATH ANGLE AT VL 1 RADIAN VARIABLE HAS MAXIMUM VALUE OF ONE.
#
# GAMMAL1 SIMPLE FORM OF GAMMAL 1 RADIAN
# Page 839
#
# HEADSUP INDICATOR FOR INITIAL ROLL 1
#
# KA DRAG TO LIFT UP IF DOWN 805 FPSS = KAT
#
# KLAT LATERAL SWITCH GAIN 1 (NOM = .0125)
#
# K2ROLL INDICATOR FOR ROLL SWITCH
#
# LAD MAX L/D (MIN ACTUAL VEHICLE L/D) 1
#
# LADPAD NOMINAL VEHICLE L/D, SP PAD LOAD 1 (NOM = 0.3)
#
# LATANG LATERAL RANGE 4 RADIANS
#
# LEQ EXCESS C.F. OVER GRAV=(VSQ-1)GS 128.8 FPSS
#
# LEWD UPCONTROL REFERENCE L/D 1
#
# LOD FINAL PHASE L/D 1 (NOM = 0.18)
#
# LODPAD FINAL PHASE L/D, SP PAD LOAD 1
#
# L/D DESIRED LIFT TO DRAG RATIO 1
# (VERTICAL PLANE)
#
# L/D1 TEMP STORAGE FOR L/D IN LATERAL 1
#
# L/DCMINR LAD COS(15DEG) 1 (NOM = 0.2895)
#
# PREDANGLE PREDICTED RANGE (FINAL PHASE) 2700 NM = PREDANG
#
# Q2 FINAL PHASE RANGE -23500 Q3 21600 NM
# Q2 = FCN(LAD)
#
# Q7 MINIMUM DRAG FOR UPCONTROL 805FPSS
#
# RDOT ALTITUDE RATE 2 VSAT
#
# RDOTREF REFERENCE RDOT FOR UPCONTROL 2 VSAT
#
# RDTR REFERENCE RDOT FOR DOWNCONT 2 VSAT NOT SAVED
#
# ROLLC ROLL COMMAND 1 REVOLUTION
#
# RTOGO RANGE TO GO (FINAL PHASE) 2700 NM = FX +2
#
# SL SINE OF LATITUDE 1 NOT SAVED
#
# T TIME B 28 CENTISEC = TIME2,TIME1
#
# THETA DESIRED RANGE (RADIANS) 2 PI RADIANS = THETAH
#
# THETNM DESIRED RANGE (NM) 21600 NM NON EXISTENT
#
# V VELOCITY MAGNITUDE 2 VSAT
#
# V1 INITIAL VELOCITY FOR UPCONTROL 2 VSAT
#
# VL EXIT VELOCITY FOR UPCONTROL 2 VSAT
#
# VREF REFERENCE VELOCITY FOR UPCONTROL 2 VSAT
#
# VS1 VSAT OR V1, WHICHEVER IS SMALLER 2 VSAT
# 2 2
# VBARS VL /VSAT 4
# 2 2
# VSQ NORMALIZED VEL. SQUARED = V /VSAT 4 = VSQUARE
#
# WT EARTH RATE TIMES TIME 1 REVOLUTION NOT SAVED
#
# X INTERMEDIATE VARIABLE IN G-LIMITER 2 VSAT NOT SAVED
#
# Y LATERAL MISS LIMIT 4 RADIANS NOT SAVED
# Page 840
# EXTRA COMPUTER ERASABLE LOCATIONS NOT SHOWN ON FLOW CHARTS
# ----------------------------------------------------------
#
# VARIABLE DESCRIPTION MAXIMUM VALUE
# -------- ----------- -------------
#
# GOTOADDR ADDRESS SELECTED BY SEQUENCER
#
# XPIPBUF BUFFER TO STORE X PIPA COUNTS
#
# YPIPBUF BUFFER TO STORE Y PIPA COUNTS
#
# ZPIPBUF BUFFER TO STORE Z PIPA COUNTS
#
# PIPCTR COUNTS PASSES THRU PIPA READ ROUTINE
#
# JJ INDEX IN FINAL PHASE TABLE LOOK-UP
#
# MM INDEX IN FINAL PHASE TABLE LOOK-U
#
# GRAD INTERPOLATION FACTOR IN FINAL PHASE
#
# FX DRANGE/D L/D = F3 2700 NM
#
# FX +1 AREF 805 FPSS
#
# FX +2 RTOGO 2700 NM
#
# FX +3 RDOTREF VSAT/4
#
# FX +4 DRANGE/D RDOT = F2 21600/2VS NM/FPS
#
# FX +5 DRANGE/D DRAG = F1 2700/805 NM/FPSS
#
# TEM1B TEMPORARY LOCATION
#
# TIME/RTO TIME OF INITIAL TARGET RTINIT B 28 CENTISEC
#
# DTEAROT EST TIME BETWEEN RTINIT AND RT B 28 CENTISEC
# _
# UNITV UNIT V VECTOR 2
# _
# UNITR UNIT R VECTOR 2
# _
# -VREL NEGATIVE VELOCITY REL TO ATMOSP 2 VSAT
# COMPUTER SWITCHES INITIAL STATE CM/FLAGS = STATE +6
# ----------------- ------------- -------------------
#
# ENTRYDSP DO ENTRY DISPLAY, IF SET NON-BRANCH (1) 92D, BIT 13
# GONEPAST INDICATES OVERSHOOT OF TARGET NON-BRANCH (0) 95D, BIT 10
# RELVELSW RELATIVE VELOCITY SWITCH NON-BRANCH (0) 96D, BIT 9
# EGSW FINAL PHASE SWITCH NON-BRANCH (0) 97D, BIT 8
# FIRSTPAS INITIAL PASS THRU HUNTEST NON-BRANCH (0) 98D, BIT 7
# HIND INDICATES ITERATION IN HUNTEST NON-BRANCH (0) 99D, BIT 6
# INRLSW INDICATES INIT ROLL ATTITUDE SET NON-BRANCH (0) 100D, BIT 5
# LATSW INHIBIT DOWNLIFT SWITCH IF NOT SET BRANCH (1) 101D, BIT 4
# .05GSW INDICATES DRAG EXCEEDS .05 GS BRANCH (0) 102D, BIT 3
#
# GONEBY INDICATES GONE PAST TARGET (SET) SELF-INITIALIZING 112D, BIT 8
# Page 841
# CONSTANTS AND GAINS VALUE
# ------------------- -----
#
# C1 FACTOR IN ALP COMPUTATION 1.25
# C16 CONSTD GAIN ON DRAG .01
# C17 CONSTD GAIN ON RDOT .001
# C18 BIAS VEL. FOR FINAL PHASE START 500 FPS
# C20 MAX DRAG FOR DOWN-LIFT 175 FPSS
# CHOOK FACTOR IN AHOOK COMPUTATION .25
# CH1 FACTOR IN GAMMAL COMPUTATION 1.0
# COS15 COS( 15 DEG ) .965
# DLEWD0 INITIAL VARIATION IN LEWD -.05
# D2 DRAG TO CHANGE LEWD 175 FPSS
# DT COMPUTATION CYCLE TIME INTERVAL 2 SEC.
# GMAX MAXIMUM ACCELERATION 257.6 FPSS (8 G'S)
# KA1 FACTOR IN KA CALC 1.3 GS
# KA2 FACTOR IN KA CALC .2 GS
# KA3 FACTOR IN D0 CALC 90 FPSS
# KA4 FACTOR IN D0 CALC 40 FPSS
# KB1 OPTIMIZED UPCONTROL GAIN 3.4
# KB2 OPTIMIZED UPCONTROL GAIN .0034
# KDMIN INCREMENT ON Q7 TO DETECT END OF KEPLER PHASE .5 FPSS
# KTETA TIME OF FLIGHT CONSTANT 1000
# KLAT1 FACTOR IN KLAT CALC 1/24
# K44 GAIN USED IN INITIAL ROLL SECTION 19749550 FPS
# LATBIAS LATERAL SWITCH BIAS TERM .41252961 NM
# LEWD1 NOMINAL UPCONTROL L/D .15
# POINT1 FACTOR TO REDUCE UPCONTROL GAIN .1
# Q2 FINAL PHASE RANGE - 23500 Q3 -1002 NM
# Q3 FINAL PHASE DRANGE/D V .07 NM/FPS
# Q5 FINAL PHASE DRANGE/D GAMMA 7050 NM/RAD
# Q6 FINAL PHASE INITIAL FLIGHT PATH ANGLE .0349 RAD
# Q7F MIN DRAG FOR UPCONTROL 6 FPSS
# Q7MIN IN VALUE FOR Q7 IN FACTOR CALCULATION 40 FPSS
# Q19 FACTOR IN GAMMAL1 CALCULATION .5
# Q21 FACTOR IN Q2 CALCULATION 1000 NM
# Q22 FACTOR IN Q2 CALCULATION -1302 NM
# VFINAL1 VELOCITY TO START FINAL PHASE ON INITIAL ENTRY 27000 FPS
# VFINAL FACTOR IN INITIAL UP-DOWN CALC 26600 FPS
# VLMIN MINIMUM VL 18000 FPS
# VMIN VELOCITY TO SWITCH TO RELATIVE VEL VSAT/2
# VRCONTRL RDOT TO START INTO HUNTEST 700 FPS
# VRCONT=COMPUTER NAME
# 25NM TOLERANCE TO STOP RANGE ITERATION 25 NM
# VQUIT VELOCITY TO STOP STEERING 1000 FPS
# Page 842
# CONVERSION FACTORS AND SCALING CONSTANTS
# ----------------------------------------
#
# ATK ANGLE IN RAD TO NM 3437.7468 NM/RAD
# G5 NOMINAL G VALUE FOR SCALING 32.2 FPSS
# H5 ATMOSPHERE SCALE HEIGHT 28500 FT
# J GRAVITY HARMONIC COEFFICIENT .00162346
# KWE EQUATORIAL EARTH RATE 1546.10168 FPS
# MUE EARTH GRAVITATIONAL CONSTANT 3.986032233 E14 CUBIC M/ SEC SEC
# RE EARTH RADIUS 21202900 FT
# REQ EARTH EQUATORIAL RADIUS 20925738.2 FT
# VSAT SATELLITE VELOCITY AT RE 25766.1973 FPS
# WIE EARTH RATE .0000729211505 RAD/SEC
# (END GSOP AS-278, VOL 1, FIG. 5.6-3 CONSTANTS, GAINS, ETC.)
# DISPLAY QUANTITIES
# ------------------
#
# (SEE SECTION 4 OF THE GSOP FOR SIGN CONVENTIONS.)
#
# VARIABLE DESCRIPTION MAXIMUM VALUE
# -------- ----------- -------------
#
# QMAX PREDICTED MAXIMUM ENTRY ACCEL 163.84 GS N 60
# VPRED PREDICTED VELOCITY AT ALTITUDE 128 M/CENTISEC N 60
# 400K FT ABOVE FISCHER RADIUS.
# GAMMAEI PREDICTED GAMMA AT ALTITUDE 1 REVOLUTION N 60
# 400K FT ABOVE FISCHER RADIUS
# D DRAG ACCELERATION 805 FPSS N 64
# VMAGI INERTIAL VELOCITY MAGNITUDE 128 M/CENTISEC N 64, N 68
# THETAH DESIRED RANGE ANGLE NM 1 REVOLUTION N 64, N 67
# LAT PRESENT LATITUDE 1 REVOLUTION N 67
# LONG PRESENT LONGITUDE 1 REVOLUTION N 67
# RTOGO RANGE ANGLE TO SPLASH FROM 1 REVOLUTION N 67
# EMSALT FT ABOVE FISCHER RADIUS (IN NM)
# VIO PREDICTED VELOCITY AT ALTITUDE 128 M/CENTISEC N 63
# EMSALT FT ABOVE FISCHER RADIUS.
# TTE TIME OF FREE FALL TO ALT B 28 CENTISEC N 63
# EMSALT FT ABOVE FISCHER RADIUS
# ROLLC ROLL COMMAND 1 REVOLUTION N 68, N 68, N 69
# LATANG CROSS-RANGE ERROR (XRNGERR) 4 RADIANS N 66
# DNRNGERR DOWN RANGE ERROR 1 REVOLUTION N 66
# (PREDANG - THETAH IN NM)
# HDOT ALTITUDE RATE 128 M/CENTISEC N 68
# QT MINIMUM DRAG FOR UPCONTROL 805 FPSS N 69
# VL EXIT VELOCITY FOR UP-CONTROL 2 VSAT N 69
# Page 843
# BODY ATTITUDE QUANTITIES (CM/POSE)
# ----------------------------------
#
# VARIABLE DECRIPTION MAXIMUM VALUE
# -------- ---------- -------------
# _
# -VREL NEGATIVE VELOCITY REL TO ATMOS. 2 VSAT
# _
# OLDUYA USED FOR UYA BELOW 1000 FPS 2
# _
# UXA/2 UNIT VECTOR TRIAD 2
# _
# UYA/2 BASED ON 2
# _
# UZA/2 THE TRAJECTORY 2
# _
# UBX/2 UNIT VECTOR 2
# _
# UBY/2 BODY TRIAD 2
# _
# UBZ/2 FOR CM. 2

3785
ERASABLE_ASSIGNMENTS.s Normal file

File diff suppressed because it is too large Load Diff

497
EXECUTIVE.s Normal file
View File

@ -0,0 +1,497 @@
# Copyright: Public domain.
# Filename: EXECUTIVE.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1208-1220
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1208
BLOCK 02
# TO ENTER A JOB REQUEST REQUIRING NO VAC AREA:
COUNT 02/EXEC
NOVAC INHINT
AD FAKEPRET # LOC(MPAC +6) - LOC(QPRET)
TS NEWPRIO # PRIORITY OF NEW JOB + NOVAC C(FIXLOC)
EXTEND
INDEX Q # Q WILL BE UNDISTURBED THROUGHOUT.
DCA 0 # 2CADR OF JOB ENTERED.
DXCH NEWLOC
CAF EXECBANK
XCH FBANK
TS EXECTEM1
TCF NOVAC2 # ENTER EXECUTIVE BANK.
# TO ENTER A JOB REQUEST REQUIREING A VAC AREA -- E.G., ALL (PARTIALLY) INTERPRETIVE JOBS.
FINDVAC INHINT
TS NEWPRIO
EXTEND
INDEX Q
DCA 0
SPVACIN DXCH NEWLOC
CAF EXECBANK
XCH FBANK
TCF FINDVAC2 # OFF TO EXECUTIVE SWITCHED-BANK.
# TO ENTER A FINDVAC WITH THE PRIORITY IN NEWPRIO TO THE 2CADR ARRIVING IN A AND L:
# USERS OF SPVAC MUST INHINT BEFORE STORING IN NEWPRIO.
SPVAC XCH Q
AD NEG2
XCH Q
TCF SPVACIN
# TO SUSPEND A BASIC JOB SO A HIGHER PRIORITY JOB MAY BE SERVICED:
CHANG1 LXCH Q
CAF EXECBANK
XCH BBANK
TCF CHANJOB
# TO SUSPEND AN INTERPRETIVE JOB:
CHANG2 CS LOC # NEGATIVE LOC SHOWS JOB = INTERPRETIVE.
# ITRACE (4) REFERS TO "CHANG2"
# Page 1209
TS L
+2 CAF EXECBANK
TS BBANK
TCF CHANJOB -1
# Page 1210
# TO VOLUNTARILY SUSPEND A JOB UNTIL THE COMPLETION OF SOME ANTICIPATED EVENT (I/O EVENT ETC.):
JOBSLEEP TS LOC
CAF EXECBANK
TS FBANK
TCF JOBSLP1
# TO AWAKEN A JOB PUT TO SLEEP IN THE ABOVE FASHION:
JOBWAKE INHINT
TS NEWLOC
CS TWO # EXIT IS VIA FINDVAC/NOVAC PROCEDURES.
ADS Q
CAF EXECBANK
XCH FBANK
TCF JOBWAKE2
# TO CHANGE THE PRIORITY OF A JOB CURRENTLY UNDER EXECUTION:
PRIOCHNG INHINT # NEW PRIORITY ARRIVES IN A. RETURNS TO
TS NEWPRIO # CALLER AS SOON AS NEW JOB PRIORITY IS
CAF EXECBANK # HIGHEST. PREPARE FOR POSSIBLE BASIC-
XCH BBANK # STYLE CHANGE-JOB.
TS BANKSET
CA Q
TCF PRIOCH2
# TO REMOVE A JOB FROM EXECUTIVE CONSIDERATIONS:
ENDOFJOB CAF EXECBANK
TS FBANK
TCF ENDJOB1
ENDFIND CA EXECTEM1 # RETURN TO CALLER AFTER JOB ENTRY
TS FBANK # COMPLETE.
TCF Q+2
EXECBANK CADR FINDVAC2
FAKEPRET ADRES MPAC -36D # LOC(MPAC +6) - LOC(QPRET)
# Page 1211
# LOCATE AN AVAILABLE VAC AREA
BANK 01
COUNT 01/EXEC
FINDVAC2 TS EXECTEM1 # (SAVE CALLER'S BANK FIRST.)
CCS VAC1USE
TCF VACFOUND
CCS VAC2USE
TCF VACFOUND
CCS VAC3USE
TCF VACFOUND
CCS VAC4USE
TCF VACFOUND
CCS VAC5USE
TCF VACFOUND
TC BAILOUT
OCT 1201 # NO VAC AREAS.
VACFOUND AD TWO # RESERVE THIS VAC AREA BY STORING A ZERO
ZL # IN ITS VAC USE REGISTER AND STORE THE
INDEX A # ADDRESS OF THE FIRST WORD OF IT IN THE
LXCH 0 -1 # LOW NINE BITS OF THE PRIORITY WORD.
ADS NEWPRIO
NOVAC2 CAF ZERO # NOVAC ENTERS HERE. FIND A CORE SET.
TS LOCCTR
CAF NO.CORES # SEVEN SETS OF ELEVEN REGISTERS EACH.
NOVAC3 TS EXECTEM2
INDEX LOCCTR
CCS PRIORITY # EACH PRIORITY REGISTER CONTAINS -0 IF
TCF NEXTCORE # THE CORESPONDING CORE SET IS AVAILABLE.
NO.CORES DEC 6
TCF NEXTCORE # AN ACTIVE JOB HAS A POSITIVE PRIORITY
# BUT A DORMANT JOB'S PRIORITY IS NEGATIVE
# Page 1212
CORFOUND CA NEWPRIO # SET THE PRIORITY OF THIS JOB IN THE CORE
INDEX LOCCTR # SET'S PRIORITY REGISTER AND SET THE
TS PRIORITY # JOB'S PUSH-DOWN POINTER AT THE BEGINNING
MASK LOW9 # OF THE WORK AREA AND OVERFLOW INDICATOR.
INDEX LOCCTR
TS PUSHLOC # OFF TO PREPARE FOR INTERPRETIVE PROGRAMS.
CCS LOCCTR # IF CORE SET ZERO IS BEING LOADED, SET UP
TCF SETLOC # OVFIND AND FIXLOC IMMEDIATELY.
TS OVFIND
CA PUSHLOC
TS FIXLOC
SPECTEST CCS NEWJOB # SEE IF ANY ACTIVE JOBS WAITING (RARE).
TCF SETLOC # MUST BE AWAKENED OUT UNCHANGED JOB.
TC CCSHOLE
TC CCSHOLE
TS NEWJOB # +0 SHOWS ACTIVE JOB ALREADY SET.
DXCH NEWLOC
DXCH LOC
TCF ENDFIND
SETLOC DXCH NEWLOC # SET UP THE LOCATION REGISTERS FOR THIS
INDEX LOCCTR
DXCH LOC
INDEX NEWJOB # THIS INDEX INSTRUCTION INSURES THAT THE
CS PRIORITY # HIGHEST ACTIVE PRIORITY WILL BE COMPARED
AD NEWPRIO # WITH THE NEW PRIORITY TO SEE IF NEWJOB
EXTEND # SHOULD BE SET TO SIGNAL A SWITCH.
BZMF ENDFIND
CA LOCCTR # LOCCTR IS LEFT SET AT THIS CORE SET IF
TS NEWJOB # THE CALLER WANTS TO LOAD ANY MPAC
TCF ENDFIND # REGISTERS, ETC.
NEXTCORE CAF COREINC
ADS LOCCTR
CCS EXECTEM2
TCF NOVAC3
TC BAILOUT # NO CORE SETS.
OCT 1202
# Page 1213
# THE FOLLOWING ROUTINE SWAPS CORE SET 0 WITH THAT WHOSE RELATIVE ADDRESS IS IN NEWJOB.
-2 LXCH LOC
-1 CAE BANKSET # BANKSET, NOT BBANK, HAS RIGHT CONTENTS.
CHANJOB INHINT
EXTEND
ROR SUPERBNK # PICK UP CURRENT SBANK FOR BBCON
XCH L # LOC IN A AND BBCON IN L.
+4 INDEX NEWJOB # SWAP LOC AND BANKSET.
DXCH LOC
DXCH LOC
CAE BANKSET
EXTEND
WRITE SUPERBNK # SET SBANK FOR NEW JOB.
DXCH MPAC # SWAP MULTI-PURPOSE ACCUMULATOR AREAS.
INDEX NEWJOB
DXCH MPAC
DXCH MPAC
DXCH MPAC +2
INDEX NEWJOB
DXCH MPAC +2
DXCH MPAC +2
DXCH MPAC +4
INDEX NEWJOB
DXCH MPAC +4
DXCH MPAC +4
DXCH MPAC +6
INDEX NEWJOB
DXCH MPAC +6
DXCH MPAC +6
CAF ZERO
XCH OVFIND # MAKE PUSHLOC NEGATIVE IF OVFIND NZ.
EXTEND
BZF +3
CS PUSHLOC
TS PUSHLOC
DXCH PUSHLOC
INDEX NEWJOB
DXCH PUSHLOC
DXCH PUSHLOC # SWAPS PUSHLOC AND PRIORITY.
CAF LOW9 # SET FIXLOC TO BASE OF VAC AREA.
MASK PRIORITY
TS FIXLOC
CCS PUSHLOC # SET OVERFLOW INDICATOR ACCORDING TO
CAF ZERO
TCF ENDPRCHG -1
# Page 1214
CS PUSHLOC
TS PUSHLOC
CAF ONE
XCH OVFIND
TS NEWJOB
ENDPRCHG RELINT
DXCH LOC # BASIC JOBS HAVE POSITIVE ADDRESSES, SO
EXTEND # DISPATCH WITH A DTCB.
BZMF +2 # IF INTERPRETIVE, SET UP EBANK, ETC.
DTCB
# Page 1215
COM # EPILOGUE TO JOB CHANGE FOR INTERPRETIVE
AD ONE
TS LOC # RESUME
TCF INTRSM
# COMPLETE JOBSLEEP PREPARATIONS.
JOBSLP1 INHINT
CS PRIORITY # NNZ PRIORITY SHOWS JOB ASLEEP.
TS PRIORITY
CAF LOW7
MASK BBANK
EXTEND
ROR SUPERBNK # SAVE OLD SUPERBANK VALUE.
TS BANKSET
CS ZERO
JOBSLP2 TS BUF +1 # HOLDS -- HIGHEST PRIORITY.
TCF EJSCAN # SCAN FOR HIGHEST PRIORITY ALA ENDOFJOB.
NUCHANG2 INHINT # QUICK... DON'T LET NEWJOB CHANGE TO +0.
CCS NEWJOB
TCF +3 # NEWJOB STILL PNZ
RELINT # NEW JOB HAS CHANGED TO +0. WAKE UP JOB
TCF ADVAN +2 # VIA NUDIRECT. (VERY RARE CASE.)
CAF TWO
EXTEND
WOR DSALMOUT # TURN ON ACTIVITY LIGHT
DXCH LOC # AND SAVE ADDRESS INFO FOR BENEFIT OF
TCF CHANJOB +4 # POSSIBLE SLEEPING JOB.
# Page 1216
# TO WAKE UP A JOB, EACH CORE SET IS FOUND TO LOCATE ALL JOBS WHICH ARE ASLEEP. IF THE FCADR IN THE
# LOC REGISTER OF ANY SUCH JOB MATCHES THAT SUPPLIED BY THE CALLER, THAT JOB IS AWAKENED. IF NO JOB IS FOUND,
# LOCCTR IS SET TO -1 AND NO FURTHER ACTION TAKES PLACE.
JOBWAKE2 TS EXECTEM1
CAF ZERO # BEGIN CORE SET SCAN
TS LOCCTR
CAF NO.CORES
JOBWAKE4 TS EXECTEM2
INDEX LOCCTR
CCS PRIORITY
TCF JOBWAKE3 # ACTIVE JOB -- CHECK NEXT CORE SET.
COREINC DEC 12 # 12 REGISTERS PER CORE SET.
TCF WAKETEST # SLEEPING JOB -- SEE IF CADR MATCHES.
JOBWAKE3 CAF COREINC
ADS LOCCTR
CCS EXECTEM2
TCF JOBWAKE4
CS ONE # EXIT IF SLEEPIG JOB NOT FOUND.
TS LOCCTR
TCF ENDFIND
WAKETEST CS NEWLOC
INDEX LOCCTR
AD LOC
EXTEND
BZF +2 # IF MATCH.
TCF JOBWAKE3 # EXAMINE NEXT CORE SET IF NO MATCH.
INDEX LOCCTR # RE-COMPLEMENT PRIORITY TO SHOW JOB AWAKE
CS PRIORITY
TS NEWPRIO
INDEX LOCCTR
TS PRIORITY
CS FBANKMSK # MASK UP THE 2CADR OF THE WAKE ADDRESS
MASK NEWLOC # USING THE CADR IN NEWLOC AND THE EBANK
AD 2K # HALF OF BBANK SAVED IN BANKSET.
XCH NEWLOC
MASK FBANKMSK
INDEX LOCCTR
AD BANKSET
TS NEWLOC +1
CCS LOCCTR # SPECIAL TREATMENT IF THIS JOB WAS
TCF SETLOC # ALREADY IN THE RUN (0) POSITION.
TCF SPECTEST
# Page 1217
# PRIORITY CHANGE. CHANGE THE CONTENTS OF PRIORITY AND SCAN FOR THE JOB OF HIGHEST PRIORITY.
PRIOCH2 TS LOC
CAF ZERO # SET FLAG TO TELL ENDJOB SCANNER IF THIS
TS BUF # JOB IS STILL HIGHEST PRIORITY.
CAF LOW9
MASK PRIORITY
AD NEWPRIO
TS PRIORITY
COM
TCF JOBSLP2 # AND TO EJSCAN.
# Page 1218
# RELEASE THIS CORE SET AND VAC AREA AND SCAN FOR THE JOB OF HIGHEST ACTIVE PRIORITY.
ENDJOB1 INHINT
CS ZERO
TS BUF +1
XCH PRIORITY
MASK LOW9
TS L
CS FAKEPRET
AD L
EXTEND
BZMF EJSCAN # NOVAC ENDOFJOB
CCS L
INDEX A
TS 0
EJSCAN CCS PRIORITY +12D
TC EJ1
TC CCSHOLE
TCF +1
CCS PRIORITY +24D # EXAMINE EACH PRIORITY REGISTER TO FIND
TC EJ1 # THE JOB OF HIGHEST ACTIVE PRIORITY.
TC CCSHOLE
TCF +1
CCS PRIORITY +36D
TC EJ1
-CCSPR -CCS PRIORITY
TCF +1
CCS PRIORITY +48D
TC EJ1
TC CCSHOLE
TCF +1
CCS PRIORITY +60D
TC EJ1
TC CCSHOLE
TCF +1
CCS PRIORITY +72D
TC EJ1
TC CCSHOLE
TCF +1
# Page 1219
# EVALUATE THE RESULTS OF THE SCAN.
CCS BUF +1 # SEE IF THERE ARE ANY ACTIVE JOBS WAITING
TC CCSHOLE
TC CCSHOLE
TCF +2
TCF DUMMYJOB
CCS BUF # BUF IS ZERO IS THIS IS A PRIOCHNG AND
TCF +2 # CHANGED PRIORITY IS STILL HIGHEST.
TCF ENDPRCHG -1
INDEX A # OTHERWISE, SET NEWJOB TO THE RELATIVE
# Was CAF --- RSB 2004
CA 0 -1 # ADDRESS OF THE NEW JOB'S CORE SET.
AD -CCSPR
TS NEWJOB
TCF CHANJOB -2
EJ1 TS BUF +2
AD BUF +1 # - OLD HIGH PRIORITY.
CCS A
CS BUF +2
TCF EJ2 # NEW HIGH PRIORITY.
NOOP
INDEX Q
TC 2 # PROCEED WITH SEARCH.
EJ2 TS BUF +1
EXTEND
QXCH BUF # FOR LOCATING CCS PRIORITY + X INSTR.
INDEX BUF
TC 2
# Page 1220
# IDLING AND COMPUTER ACTIVITY (GREEN) LIGHT MAINTENANCE. THE IDLING ROUTIEN IS NOT A JOB IN ITSELF,
# BUT RATHER A SUBROUTINE OF THE EXECUTIVE.
EBANK= SELFRET # SELF-CHECK STORAGE IN EBANK.
DUMMYJOB CS ZERO # SET NEWJOB TO -0 FOR IDLING.
TS NEWJOB
RELINT
CS TWO # TURN OFF THE ACTIVITY LIGHT.
EXTEND
WAND DSALMOUT
ADVAN CCS NEWJOB # IS THE NEWJOB ACTIVE?
TCF NUCHANG2 # YES... ONE REQUIRING A CHANGE JOB.
CAF TWO # NEW JOB ALREADY IN POSITION FOR
TCF NUDIRECT # EXECUTION
CA SELFRET
TS L # PUT RETURN ADDRESS IN L.
CAF SELFBANK
TCF SUPDXCHZ +1 # AND DISPATCH JOB.
EBANK= SELFRET
SELFBANK BBCON SELFCHK
NUDIRECT EXTEND # TURN THE GREEN LIGHT BACK ON.
WOR DSALMOUT
DXCH LOC # JOBS STARTED IN THIS FASHION MUST BE
TCF SUPDXCHZ
BLOCK 2 # IN FIXED-FIXED SO OTHERS MAY USE.
COUNT 02/EXEC
# SUPDXCHZ -- ROUTINE TO TRANSFER TO SUPERBANK.
# CALLING SEQUENCE:
# TCF SUPDXCHZ # WITH 2CADR OF DESIRED LOCATION IN A + l.
SUPDXCHZ XCH L # BASIC.
+1 EXTEND
WRITE SUPERBNK
TS BBANK
TC L
NEG100 OCT 77677

1336
EXTENDED_VERBS.s Normal file

File diff suppressed because it is too large Load Diff

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 ***

262
FIXED_FIXED_CONSTANT_POOL.s Normal file
View File

@ -0,0 +1,262 @@
# Copyright: Public domain.
# Filename: FIXED_FIXED_CONSTANT_POOL.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1200-1204
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1200
BLOCK 02
COUNT 02/FCONS
# THE FOLLOWING TABLE OF 18 VALUES IS INDEXED. DO NOT INSERT OR REMOVE ANY QUANTITIES
DPOSMAX OCT 37777 # MUST PRECED POSMAX
POSMAX OCT 37777
LIMITS = NEG1/2
NEG1/2 OCT -20000 # USED BY SIN ROUTINE (MUST BE TWO
# LOCATIONS IN FRONT OF BIT14)
# BIT TABLE
BIT15 OCT 40000
BIT14 OCT 20000
BIT13 OCT 10000
BIT12 OCT 04000
BIT11 OCT 02000
BIT10 OCT 01000
BIT9 OCT 00400
BIT8 OCT 00200
BIT7 OCT 00100
BIT6 OCT 00040
BIT5 OCT 00020
BIT4 OCT 00010
BIT3 OCT 00004
BIT2 OCT 00002
BIT1 OCT 00001
# DO NOT DESTROY THIS COMBINATION, SINCE IT IS USED IN DOUBLE PRECISION INSTRUCTIONS.
NEG0 OCT -0 # MUST PRECEDE ZERO
ZERO OCT 0 # MUST FOLLOW NEG0
# BIT1 OCT 00001
# NO.WDS OCT 2 # INTERPRETER
# OCTAL3 OCT 3 # INTERPRETER
# R3D1 OCT 4 # PINBALL
FIVE OCT 5
# REVCNT OCT 6 # INTERPRETER
SEVEN OCT 7
# BIT4 OCT 00010
# R2D1 OCT 11 # PINBALL
OCT11 = R2D1 # P20S
# BINCON DEC 10 # PINBALL (OCTAL 12)
ELEVEN DEC 11
# OCT14 OCT 14 # ALARM AND ABORT (FILLER)
OCT15 OCT 15
# R1D1 OCT 16 # PINBALL
# Page 1201
LOW4 OCT 17
# BIT5 OCT 00020
# ND1 OCT 21 # PINBALL
# VD1 OCT 23 # PINBALL
# OCT24 OCT 24 # SERVICE ROUTINES
# MD1 OCT 25 # PINBALL
BITS4&5 OCT 30
# OCT31 OCT 31 # SERVICE ROUTINES
CALLCODE OCT 00032
# LOW5 OCT 37 # PINBALL
# 33DEC DEC 33 # PINBALL (OCTAL 41)
# 34DEC DEC 34 # PINBALL (OCTAL 42)
TBUILDFX DEC 37 # BUILDUP FOR CONVENIENCE IN DAPTESTING
TDECAYFX DEC 38 # CONVENIENCE FOR DAPTESTING
# BIT6 OCT 00040
OCT50 OCT 50
DEC45 DEC 45
SUPER011 OCT 60 # BITS FOR SUPERBNK SETTING 011.
.5SEC DEC 50
# BIT7 OCT 00100
SUPER100 = BIT7 # BITS FOR SUPERBNK SETTING 100
# (LAST 4K OF ROPE)
SUPER101 OCT 120 # BITS FOR SUPERBNK SETTING 101
# OCT121 OCT 121 # SERVICE ROUTINES
# (FIRST 8K OF ACM)
SUPER110 OCT 140 # BITS FOR SUPERBNK SETTING 110.
# (LAST BK OF ACM)
1SEC DEC 100
# LOW7 OCT 177 # INTERPRETER
# BIT8 OCT 00200
# OT215 OCT 215 # ALARM AND ABORT
# 8,5 OCT 00220 # P20-P25 SUNDANCE
2SECS DEC 200
# LOW8 OCT 377 # PINBALL
# BIT9 OCT 00400
GN/CCODE OCT 00401 # SET S/C CONTROL SWITCH TO G/N
3SECS DEC 300
4SECS DEC 400
LOW9 OCT 777
# BIT10 OCT 01000
# 5.5DEGS DEC .03056 # P20-P25 SUNDANCE (OCTAL 00765)
# OCT1103 OCT 1103 # ALARM AND ABORT
C5/2 DEC .0363551 # (OCTAL 01124)
V05N09 VN 0509 # (SAME AS OCTAL 1211)
OCT1400 OCT 01400
V06N22 VN 0622
# MID5 OCT 1740 # PINBALL
BITS2-10 OCT 1776
LOW10 OCT 1777
# Page 1202
# BIT11 OCT 02000
# 2K+3 OCT 2003 # PINBALL
LOW7+2K OCT 2177 # OP CODE MASK + BANK 1 FBANK SETTING
EBANK5 OCT 02400
PRIO3 OCT 03000
EBANK7 OCT 03400
# LOW11 OCT 3777 # PINBALL
# BIT12 OCT 04000
# RELTAB OCT 04025 # T4RUPT
PRIO5 OCT 05000
PRIO6 OCT 06000
PRIO7 OCT 07000
# BIT13 OCT 10000
# OCT 10003 # T4RUPT RELTAB +1D
# 13,7,2 OCT 10102 # P20-P25 SUNDANCE
PRIO11 OCT 11000
# PRIO12 OCT 12000 # BANKCALL
PRIO13 OCT 13000
PRIO14 OCT 14000
# OCT 14031 # T4RUPT RELTAB +2D
PRIO15 OCT 15000
PRIO16 OCT 16000
# 85DEGS DEC .45556 # P20-P25 SUNDANCE (OCTAL 16450)
PRIO17 OCT 17000
OCT17770 OCT 17770
# BIT14 OCT 20000
# OCT 20033 # T4RUPT RELTAB +3D
PRIO21 OCT 21000
BLOCK 03
COUNT 03/FCONS
PRIO22 OCT 22000 # SERVICE ROUTINES
PRIO23 OCT 23000
PRIO24 OCT 24000
# 5/8+1 OCT 24001 # SINGLE PRECISION SUBROUTINES
# OCT 24017 # T4RUPT RELTAB +4D
PRIO25 OCT 25000
PRIO26 OCT 26000
PRIO27 OCT 27000
# CHRPRIO OCT 30000 # PINBALL
# OCT 30036 # T4RUPT RELTAB +5D
PRIO31 OCT 31000
C1/2 DEC .7853134 # (OCTAL 31103)
PRIO32 OCT 32000
PRIO33 OCT 33000
PRIO34 OCT 34000
# OCT 34034 # T4RUPT RELTAB +6D
PRIO35 OCT 35000
PRIO36 OCT 36000
# Page 1203
PRIO37 OCT 37000
63/64+1 OCT 37401
# MID7 OCT 37600 # PINBALL
OCT37766 OCT 37766
OCT37774 OCT 37774
OCT37776 OCT 37776
# DPOSMAX OCT 37777
# BIT15 OCT 40000
# OCT40001 OCT 40001 # INTERPRETER (CS 1 INSTRUCTION)
DLOADCOD OCT 40014
DLOAD* OCT 40015
# OCT 40023 # T4RUPT RELTAB +7D
BIT15+6 OCT 40040
OCT40200 OCT 40200
# OCT 44035 # T4RUPT RELTAB +8D
# OCT 50037 # T4RUPT RELTAB +9D
# OCT 54000 # T4RUPT RELTAB +10D
-BIT14 OCT 57777
# RELTAB11 OCT 60000 # T4RUPT
C3/2 DEC -.3216147 # (OCTAL 65552)
13,14,15 OCT 70000
-1/8 OCT 73777
HIGH4 OCT 74000
-ENDERAS DEC -2001 # (OCTAL 74056)
# HI5 OCT 76000 # PINBALL
HIGH9 OCT 77700
# -ENDVAC DEC -45 # INTERPRETER (OCTAL 77722)
# -OCT10 OCT -10 # (OCTAL 77767)
# NEG4 DEC -4 # (OCTAL 77773)
NEG3 DEC -3
NEG2 OCT 77775
NEGONE DEC -1
# Page 1204
# DEFINED BY EQUALS
# IT WOULD BE TO THE USERS ADVANTAGE TO OCCASIONALLY CHECK ANY OF THESE SYMBOLS IN ORDER TO PREVENT ANY
# ACCIDENTAL DEFINITION CHANGES.
MINUS1 = NEG1
NEG1 = NEGONE
ONE = BIT1
TWO = BIT2
THREE = OCTAL3
LOW2 = THREE
FOUR = BIT3
SIX = REVCNT
LOW3 = SEVEN
EIGHT = BIT4
NINE = R2D1
TEN = BINCON
NOUTCON = ELEVEN
OCT23 = VD1
OCT25 = MD1
PRIO1 = BIT10
EBANK3 = OCT1400
PRIO2 = BIT11
OCT120 = SUPER101
OCT140 = SUPER110
2K = BIT11
EBANK4 = BIT11
PRIO4 = BIT12
EBANK6 = PRIO3
QUARTER = BIT13
PRIO10 = BIT13
OCT10001 = CCSL
POS1/2 = HALF
PRIO20 = BIT14
HALF = BIT14
PRIO30 = CHRPRIO
BIT13-14 = PRIO30 # INTERPRETER USES IN PROCESSING STORECODE
OCT30002 = TLOAD +1
B12T14 = PRIO34
NEGMAX = BIT15
VLOADCOD = BIT15
VLOAD* = OCT40001
OCT60000 = RELTAB11
BANKMASK = HI5

1269
FLAGWORD_ASSIGNMENTS.s Normal file

File diff suppressed because it is too large Load Diff

4768
FP8.s

File diff suppressed because it is too large Load Diff

1474
FRESH_START_AND_RESTART.s Normal file

File diff suppressed because it is too large Load Diff

99
GIMBAL_LOCK_AVOIDANCE.s Normal file
View File

@ -0,0 +1,99 @@
# Copyright: Public domain.
# Filename: GIMBAL_LOCK_AVOIDANCE.agc
# Purpose: Part of the source code for Comanche, build 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 412-413
# Contact: Onno Hommes <ohommes@cmu.edu>.
# Website: www.ibiblio.org/apollo.
# Mod history: 05/07/09 OH Transcription Batch 1 Assignment
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 412
BANK 15
SETLOC KALCMON1
BANK
EBANK= BCDU
# DETECTING GIMBAL LOCK
LOCSKIRT EQUALS WCALC
WCALC LXC,1 DLOAD*
RATEINDX
ARATE,1
SR4 CALL # COMPUTE THE INCREMENTAL ROTATION MATRIX
DELCOMP # DEL CORRESPONDING TO A 1 SEC ROTATION
# ABOUT COF
DLOAD* VXSC
ARATE,1
COF
MXV
QUADROT
STODL BRATE
AM
DMP DDV*
ANGLTIME
ARATE,1
SR
5
STOVL TM
BRATE
VXSC
BIASCALE
STORE BIASTEMP # ATTITUDE ERROR BIAS TO PREVENT OVERSHOOT
# IN SYSTEM
SETGO # STATE SWITCH CALCMAN2 (43D)
CALCMAN2 # 0(OFF) = BYPASS STARTING PROCEDURE
NEWANGL +1 # 1(ON) = START MANEUVER
ARATE 2DEC .0022222222 # = .05 DEG/SEC
2DEC .0088888889 # = .2 DEG/SEC
2DEC .0222222222 # = .5 DEG/SEC
2DEC .0888888889 # = 2 DEG/SEC $22.5 DEG/SEC
ANGLTIME 2DEC .000190735 # = 100B - 19
# MANEUVER ANGLE TO MANEUVER TIME
QUADROT 2DEC .1 # ROTATION MATRIX FROM S/C AXES TO CONTROL
# Page 413
2DEC 0 # AXES (X ROT = -7.25 DEG)
2DEC 0
2DEC 0
2DEC .099200 # =(.1)COS7.25
2DEC -.012620 # =-(.1)SIN7.25
2DEC 0
2DEC .012620 # (.1)SIN7.25
2DEC .099200 # (.1)COS7.25
BIASCALE 2DEC .0002543132 # = (450/180)(1/0.6)(1/16384)

View File

@ -0,0 +1,204 @@
# Copyright: Public domain.
# Filename: GROUND_TRACKING_DETERMINATION_PROGRAM.agc
# Purpose: Part of the source code for Comanche, build 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 456-459
# Contact: Onno Hommes <ohommes@cmu.edu>.
# Website: www.ibiblio.org/apollo.
# Mod history: 2009-05-07 OH Transcription Batch 1 Assignment
# 2009-05-20 RSB Corrected a couple of DIMOFLAG to DIM0FLAG.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 456
# GROUND TRACKING DETERMINATION PROGRAM -- P21
#
# PROGRAM DESCRIPTION
# MOD NO -- 1
# MOD BY -- N. M. NEVILLE
#
# FUNCTIONAL DESCRIPTION --
# TO PROVIDE THE ASTRONAUT DETAILS OF THE LM OR CSM GROUND TRACK WITHOUT
# THE NEED FOR GROUND COMMUNICATION (REQUESTED BY DSKY).
#
# CALLING SEQUENCE --
# ASTRONAUT REQUEST THROUGH DSKY V37E21E
#
# SUBROUTINES CALLED --
# GOPERF4
# GOFLASH
# THISPREC
# OTHPREC
# LAT-LONG
#
# NORMAL EXIT MODES --
# ASTRONAUT REQUEST THROUGH DSKY TO TERMINATE PROGRAM V34E
#
# ALARM OR ABORT EXIT MODES --
# NONE
#
# OUTPUT --
# OCTAL DISPLAY OF OPTION CODE AND VEHICLE WHOSE GROUND TRACK IS TO BE
# COMPUTED
# OPTION CODE 00002
# THIS 00001
# OTHER 00002
# DECIMAL DISPLAY OF TIME TO BE INTEGRATED TO HOURS , MINUTES , SECONDS
# DECIMAL DISPLAY OF LAT,LONG,ALT
#
# ERASABLE INITIALIZATION REQUIRED
# AX0 2DEC 4.652459653 E-5 RADIANS "68-69 CONSTANTS"
# -AY0 2DEC 2.147535898 E-5 RADIANS
# AZ0 2DEC .7753206164 REVOLUTIONS
# FOR LUNAR ORBITS 504LM VECTOR IS NEEDED
# 504LM 2DEC -2.700340600 E-5 RADIANS
# 504LM _2 2DEC -7.514128400 E-4 RADIANS
# 504LM _4 2DEC _2.553198641 E-4 RADIANS
#
# NONE
#
# DEBRIS
# Page 457
# CENTRALS -- A,Q,L
# OTHER -- THOSE USED BY THE ABOVE LISTED SUBROUTINES
# SEE LEMPREC, LAT-LONG
SBANK= LOWSUPER # FOR LOW 2CADR'S.
BANK 33
SETLOC P20S
BANK
EBANK= P21TIME
COUNT 24/P21
PROG21 CAF ONE
TS OPTION2 # ASSUMED VEHICLE IS LM, R2 = 00001
CAF BIT2 # OPTION 2
TC BANKCALL
CADR GOPERF4
TC GOTOP00H # TERMINATE
TC +2 # PROCEED VALUE OF ASSUMED VEHICLE OK
TC -5 # R2 LOADED THROUGH DSKY
P21PROG1 CAF V6N34 # LOAD DESIRED TIME OF LAT-LONG.
TC BANKCALL
CADR GOFLASH
TC GOTOP00H # TERM
TC +2 # PROCEED VALUES OK
TC -5 # TIME LOADED THROUGH DSKY
TC INTPRET
DLOAD
DSPTEM1
STCALL TDEC1 # INTEG TO TIME SPECIFIED IN TDEC
INTSTALL
BON SET
P21FLAG
P21CONT # ON...RECYCLE USING BASE VECTOR
VINTFLAG # OFF..1ST PASS CALC BASE VECTOR
SLOAD SR1
OPTION2
BHIZ CLEAR
+2 # ZERO..THIS VEHICLE (CM)
VINTFLAG # ONE...OTHER VEHICLE(LM)
CLEAR CLEAR
DIM0FLAG
INTYPFLG # PRECISION
CALL
INTEGRV # CALCULATE
GOTO # .AND
P21VSAVE # ..SAVE BASE VECTOR
P21CONT VLOAD # RECYCLE..INTEG FROM BASE VECTOR
P21BASER
# Page 458
STOVL RCV # ..POS
P21BASEV
STODL VCV # ..VEL
P21TIME
STORE TET # ..TIME
CLEAR CLEAR
DIM0FLAG
MOONFLAG
SLOAD BZE
P21ORIG
+3 # ZERO = EARTH
SET # ...2 = MOON
MOONFLAG
CALL
INTEGRVS
P21VSAVE DLOAD # SAVE CURRENT BASE VECTOR
TAT
STOVL P21TIME # ..TIME
RATT1
STOVL P21BASER # ..POS B-29 OR B-27
VATT1
STORE P21BASEV # ..VEL B-7 OR B-5
ABVAL SL*
0,2
STOVL P21VEL # /VEL/ FOR N73 DSP
RATT
UNIT DOT
VATT # U(R).(V)
DDV ASIN # U(R).U(V)
P21VEL
STORE P21GAM # SIN-1 U(R).U(V), -90 TO +90
SXA,2 SET
P21ORIG # 0 = EARTH 2 = MOON
P21FLAG
P21DSP CLEAR SLOAD # GENERATE DISPLAY DATA
LUNAFLAG
X2
BZE SET
+2 # 0 = EARTH
LUNAFLAG
VLOAD
RATT
STODL ALPHAV
TAT
CLEAR CALL
ERADFLAG
LAT-LONG
DMP # MPAC = ALT, METERS B-29
K.01
STORE P21ALT # ALT/100 FOR N73 DSP
# Page 459
EXIT
CAF V06N43 # DISPLAY LAT,LONG,ALT
TC BANKCALL # LAT,LONG = REVS B0 BOTH EARTH/MOON
CADR GOFLASH # ALT = METERS B-29 BOTH EARTH/MOON
TC GOTOP00H # TERM
TC GOTOP00H
TC INTPRET # V32E RECYCLE
DLOAD DAD
P21TIME
600SEC # 600 SECONDS OR 10 MIN
STORE DSPTEM1
RTB
P21PROG1
600SEC 2DEC 60000 # 10 MIN
P21ONENN OCT 00001 # NEEDED TO DETERMINE VEHICLE
OCT 00000 # TO BE INTEGRATED
V06N43 VN 00643
V6N34 VN 00634
K.01 2DEC .01

28
HeaderTemplate.s Normal file
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

File diff suppressed because it is too large Load Diff

370
IMU_COMPENSATION_PACKAGE.s Normal file
View File

@ -0,0 +1,370 @@
# Copyright: Public domain.
# Filename: IMU_COMPENSATION_PACKAGE.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 297-306
# Mod history: 2009-05-08 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images/
# 2009-05-21 RSB In IRIGZ, PRIO17 corrected to PRIO21.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 297
BANK 7
SETLOC IMUCOMP
BANK
EBANK= NBDX
COUNT 06/ICOMP
1/PIPA CAF LGCOMP # SAVE EBANK OF CALLING PROGRAM
XCH EBANK
TS MODE
CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
TCF +3
TCF +2
TCF IRIG1 # RETURN
INHINT # ASSURE COMPLETE COMPENSATION OF DELV'S
# FOR DOWNLINK.
1/PIPA1 CAF FOUR # PIPAZ, PIPAY, PIPAX
TS BUF +2
INDEX BUF +2
CA PIPASCF # (P.P.M.) X 2(-9)
EXTEND
INDEX BUF +2
MP DELVX # (PP) X 2(+14) NOW (PIPA PULSES) X 2(+5)
TS Q # SAVE MAJOR PART
CA L # MINOR PART
EXTEND
MP BIT6 # SCALE 2(+9) SHIFT RIGHT 9
INDEX BUF +2
TS DELVX +1 # FRACTIONAL PIPA PULSES SCALED 2(+14)
CA Q # MAJOR PART
EXTEND
MP BIT6 # SCALE 2(+9) SHIFT RIGHT 9
INDEX BUF +2
DAS DELVX # (PIPAI) + (PIPAI)(SF)
INDEX BUF +2
CS PIPABIAS # (PIPA PULSES)/(CS) X 2(-8) *
EXTEND
MP 1/PIPADT # (CS) X 2(+8) NOW (PIPA PULSES) X 2(+0) *
EXTEND
MP BIT1 # SCALE 2(+14) SHIFT RIGHT 14 *
INDEX BUF +2
DAS DELVX # (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)
CCS BUF +2 # PIPAZ, PIPAY, PIPAX
# Page 298
AD NEG1
TCF 1/PIPA1 +1
NOOP # LESS THAN ZERO IMPOSSIBLE
RELINT
# Page 299
IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS.
TS BUF # INDEX COUNTER. IRIGX, IRIGY, IRIGZ.
IRIGX EXTEND
DCS DELVX # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14)
EXTEND #
DCS DELVY # (PIPA PULSES) X 2(+14)
DXCH MPAC #
CS ADSRAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
TC GCOMPSUB # -(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14)
# EXTEND # ***
# DCS DELVY # *** (PIPA PULSES) X 2(+14)
# DXCH MPAC # ***
# CA ADOAX # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# TC GCOMPSUB # *** -(ADOAX)(PIPAZ) (GYRO PULSES) X 2(+14)
CS NBDX # (GYRO PULSES)/(CS) X 2(-3)
TC DRIFTSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
IRIGY EXTEND
DCS DELVY # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14)
EXTEND
DCS DELVZ # (PIPA PULSES) X 2(+14)
DXCH MPAC
CS ADSRAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)
# EXTEND # ***
# DCS DELVX # *** (PIPA PULSES) X 2(+14)
# DXCH MPAC # ***
# CA ADOAY # *** (GYRO PULSES)/(PIPA PULS) X 2(-3) *
# TC GCOMPSUB # *** -(ADOAY)(/PIPAX) (GYRO PULSES) X 2(+14)
CS NBDY # (GYRO PULSES)/(CS) X 2(-5)
TC DRIFTSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
IRIGZ EXTEND
DCS DELVY # (PIPA PULSES) X 2(-14)
DXCH MPAC
CA ADSRAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# Page 300
TC GCOMPSUB # -(ADSRAZ)(PIPAY) (GYRO PULSES) X 2(+14)
EXTEND
DCS DELVZ # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADIAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
TC GCOMPSUB # -(ADIAZ)(PIPAZ) (GYRO PULSES) X 2(+14)
# EXTEND # ***
# DCS DELVX # *** (PIPA PULSE) X 2(+14)
# DXCH MPAC # ***
# CS ADOAZ # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# TC GCOMPSUB # *** +(ADOAZ)(PIPAX) (GYRO PULSES) X 2(+14)
CA NBDZ # (GYRO PULSES)/(CS) X 2(-5)
TC DRIFTSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
# Page 301
CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TCF +2 # YES
TCF IRIG1 # NO
CA PRIO21 # HIGHER THAN SERVICER -- LESS THAN PRELAUNCH
TC NOVAC
EBANK= NBDX
2CADR 1/GYRO
RELINT
IRIG1 CA MODE # SET EBANK FOR RETURN
TS EBANK
TCF SWRETURN
GCOMPSUB XCH MPAC # ADIA OR ADSRA COEFFICIENT ARRIVES IN A
EXTEND # C(MPAC) = (PIPA PULSES) X 2(+14)
MP MPAC # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
DXCH VBUF # NOW = (GYRO PULSES) X 2(+11) *
CA MPAC +1 # MINOR PART OF PIPA PULSES
EXTEND
MP MPAC # ADIA OR ADSRA
TS L
CAF ZERO
DAS VBUF # NOW = (GYRO PULSES) X 2(+11) *
CA VBUF # PARTIAL RESULT -- MAJOR
EXTEND
MP BIT12 # SCALE 2(+3) SHIFT RIGHT 3 *
INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
DAS GCOMP # HI(ADIA)(PIPAI) OR HI(ADSRA)(PIPAI)
CA VBUF +1 # PARTIAL RESULT -- MINOR
EXTEND
MP BIT12 # SCALE 2(+3) SHIFT RIGHT 3 *
TS L
CAF ZERO
INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
DAS GCOMP # (ADIA)(PIPAI) OR (ADSRA)(PIPAI)
TC Q
# Page 302
DRIFTSUB EXTEND
QXCH BUF +1
EXTEND # C(A) = NBD (GYRO PULSES)/(CS) X 2(-5)
MP 1/PIPADT # (CS) X 2(+8) NO (GYRO PULSES) X 2(+3)
LXCH MPAC +1 # SAVE FOR FRACTIONAL COMPENSATION
EXTEND
MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
INDEX BUF
DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
CA MPAC +1 # NOW MINOR PART
EXTEND
MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
TS L
CAF ZERO
INDEX BUF # ADD IN FRACTIONAL COMPENSATION
DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
DRFTSUB2 CAF TWO # PIPAX, PIPAY, PIPAZ
AD BUF
XCH BUF
INDEX A
CCS GCOMP # ARE GYRO COMMANDS 1 PULSE OR GREATER
TCF +2 # YES
TC BUF +1 # NO
MASK NEGONE
CCS A # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TS GCOMPSW # YES -- SET GCOMPSW POSITIVE
TC BUF +1 # NO
# Page 303
1/GYRO CAF FOUR # PIPAZ, PIPAY, PIPAX
TS BUF
INDEX BUF # SCALE GYRO COMMANDS FOR IMUPULSE
CA GCOMP +1 # FRACTIONAL PULSES
EXTEND
MP BIT8 # SHIFT RIGHT 7
INDEX BUF
TS GCOMP +1 # FRACTIONAL PULSES SCALED
CAF ZERO # SET GCOMP = 0 FOR DAS INSTRUCTION
INDEX BUF
XCH GCOMP # GYRO PULSES
EXTEND
MP BIT8 # SHIFT RIGHT 7
INDEX BUF
DAS GCOMP # ADD THESE TO FRACTIONAL PULSES ABOVE
CCS BUF # PIPAZ, PIPAY, PIPAX
AD NEG1
TCF 1/GYRO +1
LGCOMP ECADR GCOMP # LESS THAN ZERO IMPOSSIBLE
CAF LGCOMP
TC BANKCALL
CADR IMUPULSE # CALL GYRO TORQUING ROUTINE
TC BANKCALL
CADR IMUSTALL # WAIT FOR PULSES TO GET OUT
TCF ENDOFJOB # TEMPORARY
GCOMP1 CAF FOUR # PIPAZ, PIPAY, PIPAX
TS BUF
INDEX BUF # RESCALE
CA GCOMP +1
EXTEND
MP BIT8 # SHIFT MINOR PART LEFT 7 -- MAJOR PART = 0
INDEX BUF
LXCH GCOMP +1 # BITS 8-14 OF MINOR PART WERE = 0
CCS BUF # PIPAZ, PIPAY, PIPAX
AD NEG1
TCF GCOMP1 +1
V06N30S VN 0630
TCF ENDOFJOB
# Page 304
NBDONLY CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
TCF +3
TCF +2
TCF ENDOFJOB
INHINT
CCS FLAGWRD2 # PREREAD T3RUPT MAY COINCIDE
TCF ENDOFJOB
TCF ENDOFJOB
TCF +1
CA TIME1 # (CS) X 2(+14)
XCH 1/PIPADT # PREVIOUS TIME
RELINT
COM
AD 1/PIPADT
NBD2 CCS A # CALCULATE ELAPSED TIME.
AD ONE # NO TIME1 OVERFLOW
TCF NBD3 # RESTORE TIME DIFFERENCE AND JUMP
TCF +2 # TIME1 OVERFLOW
TCF ENDOFJOB # IF ELAPSED TIME = 0 (DIFFERENCE = -0)
COM # CALCULATE ABSOLUTE DIFFERENCE
AD POSMAX
NBD3 EXTEND # C(A) = DELTAT (CS) X 2(+14)
MP BIT10 # SHIFT RIGHT 5
DXCH VBUF
EXTEND
DCA VBUF
DXCH MPAC # DELTAT NOW SCALED (CS) X 2(+19)
CAF ZERO
TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS.
TS BUF # INDEX X, Y, Z.
CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
TC FBIASSUB # -(NBOX)(DELTAT) (GYRO PULSES) X 2(+14)
EXTEND
DCS VBUF
DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
CA NBDY # (GYRO PULSES)/(CS) X 2(-5)
TC FBIASSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
EXTEND
DCS VBUF
DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
CS NBDZ # (GYRO PULSES)/(CS) X 2(-5)
TC FBIASSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
# Page 305
CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TCF 1/GYRO # YES
TCF ENDOFJOB # NO
# Page 303
FBIASSUB XCH Q
TS BUF +1
CA Q # NBD SCALED (GYRO PULSES)/(CS) X 2(-5)
EXTEND
MP MPAC # DELTAT SCALED (CS) X 2(+19)
INDEX BUF
DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
CA Q # NO FRACTIONAL PART
EXTEND
MP MPAC +1
TS L
CAF ZERO
INDEX BUF
DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
TCF DRFTSUB2 # CHECK MAGNITUDE OF COMPENSATION
LASTBIAS TC BANKCALL
CADR PIPUSE
CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
TCF +3
TCF +2
TCF ENDOFJOB
CAF PRIO31 # 2 SECONDS SCALED (CS) X 2(+8)
XCH 1/PIPADT
COM
AD PIPTIME1 +1 # TIME AT PIPA1 =0
TCF NBD2

File diff suppressed because it is too large Load Diff

362
IMU_PERFORMANCE_TESTS_4.s Normal file
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

421
IMU_PERFORMANCE_TEST_2.s Normal file
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,304 @@
# Copyright: Public domain.
# Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1355-1364
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1355
BANK 22
SETLOC INFLIGHT
BANK
EBANK= XSM
# CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
#
# THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE
# HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.
#
# THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,
# MGC, AND OGC RESPECTIVELY.
COUNT 23/INFLT
CALCGTA ITA DLOAD # PUSHDOWN 00-03, 16D-27D, 34D-37D
S2 # XDC = (XD1 XD2 XD3)
XDC # YDC = (YD1 YD2 YD3)
PDDL PDDL # ZDC = (ZD1 ZD2 ZD3)
HI6ZEROS
XDC +4
DCOMP VDEF
UNIT
STODL ZPRIME # ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)
ZPRIME
SR1
STODL SINTH # SIN(IGC) = ZP1
ZPRIME +4
SR1
STCALL COSTH # COS(IGC) = ZP3
ARCTRIG
STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV.
XDC +2
SR1
STODL SINTH # SIN(MGC) = XD2
ZPRIME
DMP PDDL
XDC +4 # PD00 = (ZP1)(XD3)
ZPRIME +4
DMP DSU
XDC # MPAC = (ZP3)(XD1)
STADR
STCALL COSTH # COS(MGC) = MPAC - PD00
ARCTRIG
# Page 1356
STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV.
ZPRIME
DOT
ZDC
STOVL COSTH # COS(OGC) = ZP . ZDC
ZPRIME
DOT
YDC
STCALL SINTH # SIN(OGC) = ZP . YDC
ARCTRIG
STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV.
S2
# Page 1357
# ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
#
# THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.
#
# THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO
# AVAILABLE AT MPAC.
ARCTRIG DLOAD ABS # PUSHDOWN 16D-21D
SINTH
DSU BMN
QTSN45 # ABS(SIN/4) - SIN(45)/4
TRIG1 # IF (-45,45) OR (135,-135)
DLOAD SL1 # (45,135) OR (-135,-45)
COSTH
ACOS SIGN
SINTH
STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN)
RVQ
TRIG1 DLOAD SL1 # (-45,45) OR (135,-135)
SINTH
ASIN
STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN)
COSTH
BMN
TRIG2 # IF (135,-135)
DLOAD RVQ
THETA # X = ARCSIN(SIN) (-45,45)
TRIG2 DLOAD SIGN # (135,-135)
HIDPHALF
SINTH
DSU
THETA
STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN)
RVQ # (+) - (+) OR (-) - (-)
# Page 1358
# SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN
# COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED
# FLIGHT SUBROUTINES.
# Page 1359
# CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
#
# THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT
# VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME
# COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.
#
# THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.
CALCGA SETPD # PUSHDOWN 00-05, 16D-21D, 34D-37D
0
VLOAD VXV
XNB # XNB = OGA (OUTER GIMBAL AXIS)
YSM # YSM = IGA (INNER GIMBAL AXIS)
UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA
DOT ITA
ZNB
S2
STOVL COSTH # COS(OG) = MGA . ZNB
0
DOT
YNB
STCALL SINTH # SIN(OG) = MGA . YNB
ARCTRIG
STOVL OGC
0
VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES
XNB
YSM
SL1
STOVL COSTH # COS(MG) = IGA . (MGA X OGA)
YSM
DOT
XNB
STCALL SINTH # SIN(MG) = IGA . OGA
ARCTRIG
STORE MGC
ABS DSU
.166...
BPL
GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES
CALCGA1 VLOAD DOT
ZSM
0
STOVL COSTH # COS(IG) = ZSM . MGA
XSM
# Page 1360
DOT STADR
STCALL SINTH # SIN(IG) = XSM . MGA
ARCTRIG
STOVL IGC
OGC
RTB BONCLR
V1STO2S
CPHIFLAG
S2
STCALL THETAD
S2
GIMLOCK1 EXIT
TC ALARM
OCT 00401
TC UPFLAG # GIMBAL LOCK HAS OCCURRED
ADRES GLOKFAIL
TC INTPRET
GOTO
CALCGA1
# Page 1361
# AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.
#
# THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR
# REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED
# AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF
# THE VAC AREA.
#
# THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED
# AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.
AXISGEN AXT,1 SSP # PUSHDOWN 00-30D, 34D-37D
STARAD +6
S1
STARAD -6
SETPD
0
AXISGEN1 VLOAD* VXV* # 06D UA = S1
STARAD +12D,1 # STARAD +00D UB = S1
STARAD +18D,1
UNIT # 12D VA = UNIT(S1 X S2)
STORE STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2)
VLOAD*
STARAD +12D,1
VXV* VSL1
STARAD +18D,1 # 18D WA = UA X VA
STORE STARAD +24D,1 # STARAD +12D WB = UB X VB
TIX,1
AXISGEN1
AXC,1 SXA,1
6
30D
AXT,1 SSP
18D
S1
6
AXT,2 SSP
6
S2
2
AXISGEN2 XCHX,1 VLOAD*
30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2
0,1
# Page 1362
VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3)
STARAD +6,2
6,1
VXSC*
STARAD +12D,2
STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3)
12D,1
VXSC* VAD
STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3)
VAD VSL1
24D
XCHX,1 UNIT
30D
STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K
TIX,1
AXISGEN3
AXISGEN3 TIX,2
AXISGEN2
VLOAD
XDC
STOVL STARAD
YDC
STOVL STARAD +6
ZDC
STORE STARAD +12D
RVQ
# Page 1363
QTSN45 2DEC .1768
.166... 2DEC .1666666667
# Page 1364 (empty page)

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.

1182
INTEGRATION_INITIALIZATION.s Normal file

File diff suppressed because it is too large Load Diff

183
INTER-BANK_COMMUNICATION.s Normal file
View File

@ -0,0 +1,183 @@
# Copyright: Public domain.
# Filename: INTER-BANK_COMMUNICATION.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1103-1106
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-08 RSB Adapted from Colossus249/ file of same name
# and page images. Corrected various typos
# in the transcription of program comments,
# and these should be back-ported to
# Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1103
# THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE
# CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.
BLOCK 02
COUNT 02/BANK
BANKCALL DXCH BUF2 # SAVE INCOMING A,L.
INDEX Q # PICK UP CADR.
CA 0
INCR Q # SO WE RETURN TO THE LOC. AFTER THE CADR.
# SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.
SWCALL TS L
LXCH FBANK # SWITCH BANKS, SAVING RETURN.
MASK LOW10 # GET SUB-ADDRESS OF CADR.
XCH Q # A,L NOW CONTAINS DP RETURN.
DXCH BUF2 # RESTORING INPUTS IF THIS IS A BANKCALL.
INDEX Q
TC 10000 # SETTING Q TO SWRETURN
SWRETURN XCH BUF2 +1 # COMES HERE TO RETURN TO CALLER. C(A,L)
XCH FBANK # ARE PRESERVED FOR RETURN.
XCH BUF2 +1
TC BUF2
# THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY
# FOLLOWING THE TC POSTJUMP INSTRUCTION.
POSTJUMP XCH Q # SAVE INCOMING C(A).
INDEX A # GET CADR.
CA 0
# BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.
BANKJUMP TS FBANK
MASK LOW10
XCH Q # RESTORING INPUT C(A) IF THIS WAS A
Q+10000 INDEX Q # POSTJUMP.
PRIO12 TCF 10000 # PRIO12 = TCF 10000 = 12000
# Page 1104
# THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.
MAKECADR CAF LOW10
MASK BUF2
AD BUF2 +1
TC Q
SUPDACAL TS MPTEMP
XCH FBANK # SET FBANK FOR DATA.
EXTEND
ROR SUPERBNK # SAVE FBANK IN BITS 15-11, AND
XCH MPTEMP # SUPERBANK IN BITS 7-5.
MASK LOW10
XCH L # SAVE REL. ADR. IN BANK, FETCH SUPERBITS
INHINT # BECAUSE RUPT DOES NOT SAVE SUPERBANK.
EXTEND
WRITE SUPERBNK # SET SUPERBANK FOR DATA.
INDEX L
CA 10000 # PINBALL (FIX MEM DISP) PREVENTS DCA HERE
XCH MPTEMP # SAVE 1ST WD, FETCH OLD FBANK AND SBANK.
EXTEND
WRITE SUPERBNK # RESTORE SUPERBANK.
RELINT
TS FBANK # RESTORE FBANK.
CA MPTEMP # RECOVER FIRST WORD OF DATA.
RETURN # 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU
# Page 1105
# THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.
IBNKCALL DXCH RUPTREG3 # USES RUPTREG3,4 FOR DP RETURN ADDRESS.
INDEX Q
# Was CAF --- RSB 2009
CA 0
INCR Q
ISWCALL TS L
LXCH FBANK
MASK LOW10
XCH Q
DXCH RUPTREG3
INDEX Q
TC 10000
ISWRETRN XCH RUPTREG4
XCH FBANK
XCH RUPTREG4
TC RUPTREG3
# 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK. THE CALLING SEQUENCE IS AS FOLLOWS:
# L TC USPRCADR
# L+1 CADR INTPRETX # INTPRETX IS THE INTERPRETIVE CODING
# # RETURN IS TO L+2
USPRCADR TS LOC # SAVE A
CA BIT8
TS EDOP # EXIT INSTRUCTION TO EDOP
CA BBANK
TS BANKSET # USER'S BBANK TO BANKSET
INDEX Q
CA 0
TS FBANK # INTERPRETIVE BANK TO FBANK
MASK LOW10 # YIELDS INTERPRETIVE RELATIVE ADDRESS
XCH Q # INTERPRETIVE ADDRESS TO Q, FETCHING L+1
XCH LOC # L+1 TO LOC, RETRIEVING ORIGINAL A
TCF Q+10000
# Page 1106
# THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS SUPERBANK SETTING.)
#
# PSEUDO-FIXED OCTAL PSEUDO
# SUPERBANK SETTING S-REG. VALUE BANK NUMBERS ADDRESSES
# --------- ------- ------------ ------------ ---------
# SUPERBANK 3 OXX 2000 - 3777 30 - 37 70000 - 107777 (WHERE XX CAN BE ANYTHING AND
# WILL USUALLY BE SEEN AS 11)
# SUPERBANK 4 100 2000 - 3777 40 - 47 110000 - 127777 (AS FAR AS IT CAN BE SEEN,
# ONLY BANKS 40-43 WILL EVER BE
# AND ARE PRESENTLY AVAILABLE)
# SUPERBANK 5 101 2000 - 3777 50 - 57 130000 - 147777 (PRESENTLY NOT AVAILABLE TO
# THE USER)
# SUPERBANK 6 110 2000 - 3777 60 - 67 150000 - 167777 (PRESENTLY NOT AVAILABLE TO
# THE USER)
# *** THIS ROUTINE MAY BE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27. I.E., NO PROGRAM LIVING IN ANY
# SUPERBANK SHOULD USE SUPERSW. ***
#
# SUPERSW MAY BE CALLED IN THIS FASHION:
# CAF ABBCON WHERE -- ABBCON BBCON SOMETHING --
# TCR SUPERSW (THE SUPERBNK BITS ARE IN THE BBCON)
# ... ...
# . .
# . .
# OR IN THIS FASHION:
# CAF SUPERSET WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE
# TCR SUPERSW SUPERBANK BIT CONSTANTS:
# ... ... SUPER011 OCTAL 60
# . . SUPER100 OCTAL 100
# . . SUPER101 OCTAL 120
# SUPER110 OCTAL 140
SUPERSW EXTEND
WRITE SUPERBNK # WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO
# CHANNEL 07
TC Q # TC TO INSTRUCTION FOLLOWING
# TC SUPERSW

3059
INTERPRETER.s Normal file

File diff suppressed because it is too large Load Diff

81
INTERPRETIVE_CONSTANT.s Normal file
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

86
INTERPRETIVE_CONSTANTS.s Normal file
View File

@ -0,0 +1,86 @@
# Copyright: Public domain.
# Filename: INTERPRETIVE_CONSTANTS.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1205-1206
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1205
SETLOC INTPRET1
BANK
COUNT 23/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 1206
# INTERPRETIVE CONSTANTS IN THE OTHER HALF-MEMORY
SETLOC INTPRET2
BANK
COUNT 14/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
DEC-6 DEC -6
DEC-12 DEC -12
LODPMAX 2OCT 3777737777 # THESE TWO CONSTANTS MUST REMAIN
LODPMAX1 2OCT 3777737777 # ADJACENT AND THE SAME FOR INTEGRATION
ZERODP = ZEROVEC
HALFDP = XUNIT

128
INTERRUPT_LEAD_INS.s Normal file
View File

@ -0,0 +1,128 @@
# Copyright: Public domain.
# Filename: INTERRUPT_LEAD_INS.agc
# Purpose: Part of the source code for Comanche, build 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 131-132
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 09/05/09 FB Transcription of Batch FB-1 Assignment.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 131
SETLOC 4000
COUNT 02/RUPTS
INHINT # GO
CAF GOBB
XCH BBANK
TCF GOPROG
DXCH ARUPT # T6RUPT
EXTEND
DCA T6LOC
DTCB
DXCH ARUPT # T5RUPT
CS TIME5
AD .5SEC
TCF T5RUPT
DXCH ARUPT # T3RUPT
CAF T3RPTBB
XCH BBANK
TCF T3RUPT
DXCH ARUPT # T4RUPT
CAF T4RPTBB
XCH BBANK
TCF T4RUPT
DXCH ARUPT # KEYRUPT1
CAF KEYRPTBB
XCH BBANK
TCF KEYRUPT1
DXCH ARUPT # KEYRUPT2
CAF MKRUPTBB
XCH BBANK
TCF MARKRUPT
DXCH ARUPT # UPRUPT
CAF UPRPTBB
XCH BBANK
TCF UPRUPT
DXCH ARUPT # DOWNRUPT
CAF DWNRPTBB
XCH BBANK
TCF DODOWNTM
DXCH ARUPT # RADAR RUPT
# Page 132
CAF RDRPTBB
XCH BBANK
TCF VHFREAD
DXCH ARUPT # HAND CONTROL RUPT
CAF HCRUPTBB
XCH BBANK
TCF RESUME +3 # NOT USED
EBANK= LST1 # RESTART USES E0,E3
GOBB BBCON GOPROG
EBANK= LST1
T3RPTBB BBCON T3RUPT
EBANK= KEYTEMP1
KEYRPTBB BBCON KEYRUPT1
EBANK= MRKBUF1
MKRUPTBB BBCON MARKRUPT
UPRPTBB = KEYRPTBB
EBANK= DNTMBUFF
DWNRPTBB BBCON DODOWNTM
EBANK= DATATEST
RDRPTBB BBCON VHFREAD
EBANK= TIME1
HCRUPTBB BBCON RESUME # NOT USED
EBANK= DSRUPTSW
T4RPTBB BBCON T4RUPT
EBANK= TIME1
T5RPTBB BBCON T5RUPT
T5RUPT EXTEND
BZMF NOQBRSM
EXTEND
DCA T5LOC
DTCB

932
JET_SELECTION_LOGIC.s Normal file
View File

@ -0,0 +1,932 @@
# Copyright: Public domain.
# Filename: JET_SELECTION_LOGIC.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1039-1062
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1039
BANK 21
SETLOC DAPS4
BANK
COUNT 17/DAPJS
EBANK= KMPAC
# EXAMINE CHANNEL 31 FOR TRANSLATION COMMANDS
JETSLECT LXCH BANKRUPT
CAF DELTATT3 # = 60 MS RESET TO EXECUTIVE PHASE1
AD T5TIME
TS TIME5
TCF +3
CAF DELATT20 # = 20 MS TO ASSURE A T5RUPT
TS TIME5
CAF =14MS # RESET T6 TO INITIALIZE THE JET CHANNELS
TS TIME6 # IN 14 MS
CAF NEGMAX
EXTEND
WOR CHAN13
EXTEND
QXCH QRUPT
CAF XLNMASK # = 7700 OCT
EXTEND # EXAMINE THE TRANSLATION
RXOR CHAN31 # HAND CONTROLLER
MASK XLNMASK
EXTEND
BZF NOXLNCMD
TS T5TEMP
EXTEND
MP BIT9
MASK THREE
TS XNDX1 # AC QUAD X-TRANSLATION INDEX
TS XNDX2 # BD QUAD X-TRANSLATION INDEX
CA T5TEMP
EXTEND # 1 = + XLN
MP BIT7 # 2 = - XLN
MASK THREE # 3 = NO XLN
TS YNDX # Y-TRANSLATION INDEX
CA T5TEMP
EXTEND
MP BIT5
MASK THREE
TS ZNDX # Z-TRANSLATION INDEX
CA DAPDATR1 # SET ATTKALMN TO PICK UP FILTER GAINS FOR
MASK BIT14 # TRANSLATIONS.
EXTEND # CHECK DAPDATR1 BIT 14 FOR LEM ATTACHED.
# Page 1040
BZF NOLEM
CS THREE # IF LEM IS ON, SET ATTKALMN = -3
TCF +2
NOLEM CS TWO # IF LEM IS OFF, SET ATTKALMN = -2.
TS ATTKALMN
CCS XTRANS # (+, -1, 0)
TS XNDX1 # USING BD-X ZERO XNDX1
TCF PWORD
TS XNDX2 # USING AC-X ZERO XNDX2
TCF PWORD
XLNMASK OCT 7700
DELTATT3 DEC 16378 # = 60 MS
DELATT20 DEC 16382 # = 20 MS
NOXLNCMD TS XNDX1 # ZERO ALL REQUESTS FOR TRANSLATION
TS XNDX2
TS YNDX
TS ZNDX
# PITCH COMMANDS TIMING(NO X-TRANS, NO QUAD FAILS) 32MCT
PWORD CCS TAU1 # CHECK FOR PITCH COMMANDS
CAF ONE
TCF +2 # 0 = NO PITCH
CAF TWO # +1 = + PITCH
TS PINDEX # +2 = - PITCH
CCS RACFAIL # FLAG FOR REAL AC QUAD FAILURES
TCF AFAILP
TCF TABPCOM # 0 = NO REAL AC FAILURES
TCF CFAILP # + = A QUAD FAILED
TCF TABPCOM # - = C QUAD FAILED
# IF FAILURES ARE PRESENT IGNORE
# X-TRANSLATIONS ON THIS AXIS
AFAILP CAF NINE # IF FAILURE IS PRESENT 1JET OPERATION
TCF TABPCOM +2 # IS ASSUMED. IGNORE X-TRANSLATION
CFAILP CAF TWELVE
TCF TABPCOM +2
XLNNDX DEC 0 # INDICES FOR TRANSLATION COMMANDS
DEC 3 # FOR USE IN TABLE LOOK UP
DEC 6
DEC 0
TWELVE = OCT14
# TABLE LOOK UP FOR PITCH COMMANDS WITH AND WITHOUT X-TRANSLATION AND AC QUAD FAILURES PRESENT.
# BITS 9, 10 CONTAIN THE NUMBER OF PITCH JETS USED TO PERFORM THE PITCH ROTATION
# Page 1041
TABPCOM INDEX XNDX1
CA XLNNDX
AD PINDEX
INDEX A
CA PYTABLE
MASK PJETS # =1417 OCT
TS PWORD1
EXTEND
MP BIT7
TS NPJETS # = NO. OF PITCH JETS
# YAW JET COMMANDS TIMING(N X-TRANS, NO QUAD FAILURES) 32MCT
YWORD CCS TAU2 # CHECK FOR YAW COMMANDS
CAF ONE
TCF +2
CAF TWO
TS YINDEX # YAW ROTATION INDEX
CCS RBDFAIL # FLAG FOR B OR D QUAD FAILURES
TCF BFAILY # 0 = NO BD FAILURE
TCF TABYCOM # + - B QUAD FAILED
TCF DFAILY # - = D QUAD FAILED
TCF TABYCOM
BFAILY CAF NINE
TCF TABYCOM +2
DFAILY CAF TWELVE
TCF TABYCOM +2
# Page 1042
# TABLE FOR PITCH(YAW) COMMANDS
# BITS 4,3,2,1 = PITCH, X-TRANSLATION JETS SELECTED
# BITS 10,9 = NO. PITCH JETS USED TO PERFORM ROTATION
# BITS 8,7,6,5 = YAW, X-TRANSLATION JETS SELECTED
# BITS 12,11: NO. YAW JETS USED TO PERFORM ROTATION
# ROT TRANS QUAD BIAS
PYTABLE OCT 0 # 0 0 0
OCT 5125 # + 0 0
OCT 5252 # - 0 0
OCT 0231 # 0 + 3
OCT 2421 # + + 3
OCT 2610 # - + 3
OCT 0146 # 0 - 6
OCT 2504 # + - 6
OCT 2442 # - - 6
OCT 0 # 0 A(B) 9
OCT 2421 # + A(B) 9
OCT 2442 # - A(B) 9
OCT 0 # 0 C(D) 12
OCT 2504 # + C(D) 12
OCT 2610 # - C(D) 12
# MASKS FOR PITCH AND YAW COMMANDS
PJETS OCT 1417
YJETS OCT 6360
# TABLE LOOK UP FOR YAW COMMANDS WITH AND WITHOUT X-TRANSLATION AND AC QUAD FAILURES PRESENT
# BITS 11, 12 CONTAIN THE NUMBER OF YAW JETS USED TO PERFORM THE YAW ROTATION
TABYCOM INDEX XNDX2
CA XLNNDX
AD YINDEX
INDEX A
CA PYTABLE
MASK YJETS # = 6360 OCT
TS YWORD1
EXTEND
MP BIT5
TS NYJETS # NO. OF YAW JETS USED TO PERFORM ROTATION
# Page 1043
# ROLL COMMANDS TIMING(NO Y,Z TRANS, NO QUAD FAILS) 45MCT
RWORD CCS TAU # CHECK FOR ROLL COMMANDS
CAF ONE
TCF +2
CAF TWO
TS RINDEX
CCS ACORBD # FLAG FOR AC OR BD QUAD SELECTION FOR
TCF BDROLL # ROLL COMMANDS
TCF BDROLL # +, +0 = BD ROLL
TCF +1 # -, -0 = AC ROLL
ACROLL CCS RACFAIL # CHECK FOR REAL FAILURES
TCF RAFAIL # ON AC QUADS
TCF RXLNS
TCF RCFAIL
TCF RXLNS
RAFAIL CAF NINE # QUAD FAILURE WILL GET
TCF TABRCOM # 1-JET OPERATION
RCFAIL CAF TWELVE
TCF TABRCOM
XLN1NDX DEC 0
DEC 1 # INDICES FOR TRANSLATION
DEC 2
DEC 0
# TABLE LOOK UP FOR AC-ROLL COMMANDS WITH AND WITHOUT Y-TRANSLATION AND ACQUAD FAILURES PRESENT
# BITS 9,10,11 CONTAIN THE MAGNITUDE AND DIRECTION OF THE ROLL
RXLNS INDEX YNDX # NO AC QUAD FAILURES
CA XLNNDX # INCLUDE +,-,0, Y-TRANSLATION
TABRCOM AD RINDEX
INDEX A
CA RTABLE
MASK ACRJETS # = 3760 OCT
TS RWORD1
# CHECK FOR Z-TRANSLATIONS ON BD
BDZCHECK CA ZNDX
EXTEND
BZMF NOBDZ # NO Z-TRANSLATION
# Page 1044
# TABLE LOOK UP FOR BD Z-TRANSLATION WITH AND WITHOUT REAL BD QUAD FAILURES. Z-TRANSLATION WILL BE POSS-
# IBLE AS LONG AS ROLL COMMANDS CAN BE SATISFIED WITH THE AC ROLL JETS. CRITERION: IF THE RESULTANT NET ROLL
# COMMANDS = 0 (WITH Z-TRANSLATION) AND IF TAU = 0, THEN INCLUDE THE BD Z-TRANSLATION COMMANDS. IF THE RESULTANT
# ROLL COMMAND = 0, AND IF TAU NZ, THEN IGNORE THE BD Z-TRANSLATION
CCS RBDFAIL
CAF THREE
TCF +2
CAF SIX
INDEX ZNDX
AD XLN1NDX
INDEX A
CA YZTABLE
MASK BDZJETS # = 3417 OCT
AD RWORD1 # ADD TO ROLL COMMANDS
TS T5TEMP # IF POSSIBLE. MUST CHECK TAU FIRST
EXTEND
MP BIT7 # DETERMINE THE NET ROLL COMMAND WITH
AD =-4 # Z-TRANSLATION ADDED ON
TS NRJETS # NET NO. OF +,- ROLL JETS ON
EXTEND
BZF TAUCHECK
ACRBDZ CA T5TEMP # Z-TRANSLATION ACCEPTED EVEN THO WE MAY
TS RWORD1 # HAVE INTRODUCED AN UNDESIRABLE ROLL
TCF ROLLTIME # BRANCH TO JET ON-TIME CALCULATIONS
TAUCHECK CCS TAU
TCF NOBDZ
TCF ACRBDZ
TCF NOBDZ
TCF ACRBDZ
NOBDZ CA RWORD1 # Z-TRANSLATION NOT ACCEPTED
EXTEND
MP BIT7
AD =-2
TS NRJETS
TCF ROLLTIME # BRANCH TO JET ON-TIME CALCULATION
# Page 1045
# BD QUAD SELECTION FOR ROLL COMMANDS
BDROLL CCS RBDFAIL
TCF RBFAIL
TCF RZXLNS
TCF RDFAIL
TCF RZXLNS
RBFAIL CAF NINE
TCF TABRZCMD
RDFAIL CAF TWELVE
TCF TABRZCMD
RZXLNS INDEX ZNDX # NO BD FAILURES
CA XLNNDX # +,-,0 Z-TRANSLATION PRESENT
TABRZCMD AD RINDEX
INDEX A
CA RTABLE
MASK BDRJETS # = 34017 OCT
TS RWORD1
ACYCHECK CA YNDX # ANY Y-TRANSLATION
EXTEND
BZF NOACY # NO Y-TRANSLATION
CCS RACFAIL
CAF THREE
TCF +2
CAF SIX
INDEX YNDX
AD XLN1NDX
INDEX A
CA YZTABLE
MASK ACYJETS # = 34360 OCT
AD RWORD1
TS T5TEMP
EXTEND # FOR EXPLANATION SEE CODING ON RTABLE
MP BIT4
AD =-4
TS NRJETS # NO. OF NET ROLL JETS
EXTEND
BZF TAUCHCK # IF NRJETS = 0
BDRACZ CA T5TEMP # Y-TRANSLATION ACCEPTED
TS RWORD1
TCF ROLLTIME # BRANCH TO JET ON-TIME CALCULATIONS
TAUCHCK CCS TAU
TCF NOACY
TCF BDRACZ
TCF NOACY
TCF BDRACZ
# Page 1046
NOACY CA RWORD1 # Y-TRANSLATION NOT ACCEPTED
EXTEND
MP BIT4
AD =-2
TS NRJETS
TCF ROLLTIME
# Page 1047
# TABLE FOR ROLL, Y AND Z-TRANSLATION COMMANDS
#
# EITHER AC OR BD ROLL MAY BE SELECTED. IF AC ROLL IS SELECTED, Y-TRANSLATIONS MAY BE SATISFIED SIMULTANEOUSLY
# PROVIDED THAT THERE ARE NO AC QUAD FAILURES. IF THERE ARE AC FAILURES, Y-TRANSLATION COMMANDS WILL BE IGNORED,
# IN WHICH CASE THE ASTRONAUT SHOULD SWITCH TO BD ROLL.
#
# IF BDROLL IS SELECTED, Z-TRANSLATIONS MAY BE SATISFIED SIMULTANEOUSLY PROVIDED THAT THERE ARE NO BD QUAD
# FAILURES. IF THERE ARE BD FAILURES, Z-TRANSLATION COMMANDS WILL BE IGNORED, IN WHICH CASE THE ASTRONAUT SHOULD
# SWITCH TO AC ROLL.
#
# NOTE THAT IF ONE QUAD FAILS (E.G. B FAILED), Z-TRANSLATION IS STILL POSSIBLE AND THAT THE UNDESIREABLE ROLL
# INTRODUCED BY THIS TRANSLATION WILL BE COMPENSATED BY THE TWO AC ROLL JETS ACTUATED BY THE AUTOPILOT LOGIC.
#
# WORD MAKE UP....RTABLE
#
# TWO WORDS, CORRESPONDING TO AC OR BD ROLL SELECTION, HAVE BEEN COMBINED INTO ONE TABLE. THE WORD CORRESPONDING
# TO AC ROLL HAS THE FOLLOWING INTERPRETATION:
#
# BITS 9,10,11 ARE CODED TO GIVE THE NET ROLL TORQUE FOR THE WORD SELECTED. THE CODING IS:
#
# BIT NO. 11 10 9 NO. OF ROLL JETS
#
# 0 0 0 -2
# 0 0 1 -1
# 0 1 0 0
# 0 1 1 +1
# 1 0 0 +2
#
# THIS WORD MAY THEN BE ADDED TO THE WORD SELECTED FROM THE YZ-TRANSLATION TABLE, WHICH HAS THE SAME TYPE OF
# CODING AS ABOVE, AND THE NET ROLL DETERMINED BY SHIFTING THE RESULTANT WORD RIGHT 8 PLACES AND SUBTRACTING FOUR.
#
# THE WORD CORRESPONDING TO THE BD ROLL HAS A SIMILAR INTEPRETATION, EXCEPT THAT BITS 12, 13, 14 ARE CODED
# (AS ABOVE) TO GIVE THE NET ROLL TORQUE.
# ROLL TRANS QUADFAIL BIAS
RTABLE OCT 11000 # 0 0
OCT 22125 # + 0
OCT 00252 # - 0
OCT 11231 # 0 +Y(+Z) 3
OCT 15421 # + +Y(+Z) 3
OCT 04610 # - +Y(+Z) 3
OCT 11146 # 0 -Y(-Z) 6
OCT 15504 # + -Y(-Z) 6
OCT 04442 # - -Y(-Z) 6
OCT 11000 # 0 A(B) 9
OCT 15504 # + A(B) 9
OCT 04610 # - A(B) 9
OCT 11000 # 0 C(D) 12
OCT 15421 # + C(D) 12
OCT 04442 # - C(D) 12
# Page 1048
# RTABLE MASKS:
ACRJETS OCT 03760
BDRJETS OCT 34017
# Page 1049
# Y, Z TRANSLATION TABLE
#
# ONCE AC OR BD ROLL IS SELECTED THE QUAD PAIR WHICH IS NOT BEING USED TO SATISFY THE ROLL COMMANDS MAY BE
# USED TO SATISFY THE REMAINING TRANSLATION COMMANDS. HOWEVER, WE MUST MAKE SURE THAT ROLL COMMANDS ARE SATISFIED
# WHEN THEY OCCUR. THEREFORE, THE Y-Z TRANSLATIONS FROM THIS TABLE WILL BE IGNORED IF THE NET ROLL TORQUE OF THE
# COMBINED WORD IS ZERO AND THE ROLL COMMANDS ARE NON-ZERO. THIS SITUATION WOULD OCCUR, FOR EXAMPLE, IF WE EN-
# COUNTER SIMULTANEOUS +R +Y -Z COMMANDS AND A QUAD D FAILURE WHILE USING AC FOR ROLL.
#
# TO FACILITATE THE LOGIC, THE Y-Z TRANSLATION TABLE HAS BEEN CODED IN A MANNER SIMILAR TO THE ROLL TABLE
# ABOVE.
#
# BITS 9,10,11 ARE CODED TO GIVE THE NET ROLL TORQUE INCURRED BY Z-TRANSLATIONS. THE WORD SELECTED CAN THEN BE
# ADDED TO THE AC-ROLL WORD AND THE RESULTANT ROLL TORQUE DETERMINED FROM THE COMBINED WORD. SIMILARLY BITS
# 12,13,14 ARE CODED TO GIVE THE NET ROLL TORQUE INCURRED BY Y-TRANSLATIONS WHEN BD-ROLL IS SELECTED.
# TRANSLATION QUADFAIL BIAS
#
YZTABLE OCT 11000 # 0 0
OCT 11231 # +Z(+Y) 0
OCT 11146 # -Z(-Y) 0
OCT 11000 # 0 B(A) 3
OCT 04610 # +Z(+Y) B(A) 3
OCT 15504 # -Z(-Y) B(A) 3
OCT 11000 # 0 D(C) 6
OCT 15421 # +Z(+Y) D(C) 6
OCT 04442 # -Z(-Y) D(C) 6
# YZ-TABLE MASKS:
BDZJETS OCT 03417
ACYJETS OCT 34360
# ADDITIONAL CONSTANTS
=-2 = NEG2
=-4 = NEG4
# Page 1050
# CALCULATION OF JET ON-TIMES
#
# THE ROTATION COMMANDS (TAU'S), WHICH WERE DETERMINED FROM THE JET SWITCHING LOGIC ON THE BASIS OF SINGLE JET
# OPERATION, MUST NOW BE UPDATED BY THE ACTUAL NUMBER OF JETS TO BE USED IN SATISFYING THESE COMMANDS. TAU MUST
# ALSO BE DECREMENTED ACCORDING TO THE EXPECTED TORQUE GENERATED BY THE NEW COMMANDS ACTING OVER THE NEXT T5
# INTERVAL.
#
# IN ORDER TO MAINTAIN ACCURATE KNOWLEDGE OF VEHICLE ANGULAR RATES, WE MUST ALSO PROVIDE EXPECTED FIRING TIMES
# (DFT'S, ALSO IN TERMS OF 1-JET OPERATION) FOR THE RATE FILTER.
#
# NOTE THAT TRANSLATIONS CAN PRODUCE ROTATIONS EVEN THOUGH NO ROTATIONS WERE CALLED FOR. NEVERTHELESS, WE MUST
# UPDATE DFT.
#
# WHEN THE ROTATIONS HAVE FINISHED, WE MUST PROVIDE CHANNEL INFORMATION TO THE T6 PROGRAM TO CONTINUE ON WITH
# THE TRANSLATIONS. THIS WILL BE DONE IN THE NEXT SECTION. HOWEVER, TO INSURE THAT JETS ARE NOT FIRED FOR LESS
# THAN A MINIMUM IMPULSE (14MS), ALL JET CHANNEL COMMANDS WILL BE HELD FIXED FROM THE START OF THE T5 PROGRAM FOR
# AT LEAST 14MS UNTIL THE INITIALIZATION OF NEW COMMANDS. MOREOVER, A 14MS ON-TIME WILL BE ADDED TO ANY ROTATIONAL
# COMMANDS GENERATED BY THE MANUAL CONTROLS OR THE JET SWITCHING LOGIC, AND ALL TRANSLATION COMMANDS WILL BE
# ACTIVE FOR AT LEAST ONE CYCLE OF THE T5 PROGRAM (.1SEC)
# PITCH JET ON-TIME CALCULATION
PITCHTIM CCS TAU1
TCF PTAUPOS
TCF +2
TCF PTAUNEG
TS DFT1 # NO PITCH ROTATION
TCF PBYPASS # COMMANDS
PTAUNEG CS NPJETS
TS NPJETS
PTAUPOS CA TAU1
EXTEND
INDEX NPJETS
MP NJET
TS BLAST1
AD =-.1SEC
EXTEND
BZMF AD14MSP
INDEX NPJETS
CA DFTMAX # THE PITCH ON-TIME IS GREATER THAN .1 SEC
TS DFT1
COM
ADS TAU1 # UPDATE TAU1
CAF =+.1SEC # LIMIT THE LENGTH OF PITCH ROTATION
TS BLAST1 # COMMANDS TO 0.1 SEC SO THAT ONLY
TCF ASMBLWP # X-TRANSLATIONS WILL CONTINUE ON SWITCH
# OVER TO TVC
AD14MSP CS BLAST1 # SEE IF JET ON TIME IS LESS THAN
AD =14MS # MINIMUM IMPULSE TIME
EXTEND
BZMF PBLASTOK # IF SO LIMIT MINIMUM ON TIME TO 14 MS
CAF =14MS
# Page 1051
TS BLAST1
PBLASTOK CA BLAST1
EXTEND # THE PITCH COMMANDS WILL BE COMPLETED
MP NPJETS # WITHIN THE TS-CYCLE TIME
LXCH DFT1 # FOR USE IN UPDATING RATE FILTER
TS TAU1 # ZERO TAU1 (ACC CONTAINS ZERO)
TCF ASMBLWP
# Page 1052
# YAW JET ON-TIME CALCULATION
YAWTIME CCS TAU2
TCF YTAUPOS
TCF +2
TCF YTAUNEG
TS DFT2 # NO YAW ROTATION COMMANDS
TCF YBYPASS
YTAUNEG CS NYJETS
TS NYJETS
YTAUPOS CA TAU2
EXTEND
INDEX NYJETS
MP NJET
TS BLAST2
AD =-.1SEC
EXTEND
BZMF AD14MSY
INDEX NYJETS
CA DFTMAX # YAW COMMANDS WILL LAST LONGER THAN .1SEC
TS DFT2
COM
ADS TAU2 # DECREMENT TAU2
CAF =+.1SEC # LIMIT THE LENGTH OF YAW ROTATION COMMAND
TS BLAST2 # TO 0.1 SEC SO THAT ONLY X-TRANSLATION
TCF ASMBLWY # WILL CONTINUE ON SWITCH OVER TO TVC
AD14MSY CS BLAST2 # SEE IF JET ON-TIME LESS THAN
AD =14MS # MINIMUM IMPULSE TIME
EXTEND
BZMF YBLASTOK # IF SO, LIMIT MINIMUM ON-TIME TO 14 MS
CAF =14MS
TS BLAST2
YBLASTOK CA BLAST2 # YAW COMMANDS WILL BE COMPLETED WITHIN
EXTEND # THE T5CYCLE TIME
MP NYJETS
LXCH DFT2
TS TAU2 # ZERO TAU2
TCF ASMBLWY
# Page 1053
# ROLL ON-TIME CALCULATION:
ROLLTIME CCS TAU
TCF RBLAST
TCF +2
TCF RBLAST
INDEX NRJETS
CA DFTMAX # UPDATE DFT EVEN THO NO ROLL COMMANDS ARE
TS DFT # PRESENT
TCF RBYPASS
DEC -480 # =-.3SEC
DEC -320 # =-.2SEC
=-.1SEC DEC -160 # =-.1SEC
DFTMAX DEC 0 # 0
=+.1SEC DEC 160 # =+.1SEC
DEC 320 # =+.2SEC
DEC 480 # =+.3SEC
=14MS DEC 23 # =14MS
RBLAST CA TAU
EXTEND
INDEX NRJETS
MP NJET
TS BLAST # BLAST IS AN INTERMEDIATE VARIABLE
# USED IN DETERMINING THE JET ON-TIMES
AD =-.1SEC
EXTEND
BZMF AD14MSR
INDEX NRJETS # THE ROLL ROTATION WILL LAST LONGER
CA DFTMAX # THAN THE T5 CYCLE TIME
TS DFT
COM
ADS TAU
CAF =+.1SEC # LIMIT THE LENGTH OF ROLL ROTATION
TS BLAST # COMMANDS TO 0.1 SEC SO THAT ONLY Y-Z
TCF ASMBLWR # TRANSLATION COMMANDS CONTINUE
AD14MSR CS BLAST # SEE IF THE JET ON-TIME LESS THAN
AD =14MS # MINIMUM IMPULSE TIME
EXTEND
BZMF RBLASTOK
CAF =14MS # IF SO, LIMIT MINIMUM ON-TIME TO 14 MS
TS BLAST
RBLASTOK CA BLAST
EXTEND
MP NRJETS
LXCH DFT
TS TAU # ZERO TAU
TCF ASMBLWR
# Page 1054
DEC -.333333 # = -1/3
DEC -.500000 # = -1.2
DEC -.999999 # = -1 (NEGMAX)
NJET DEC 0
DEC .999999 # = +1 (POSMAX)
DEC .500000 # = +1/2
DEC .333333 # = +1/3
# Page 1055
# WHEN THE ROTATION COMMANDS ARE COMPLETED, IT IS NECESSARY TO REPLACE THESE COMMANDS BY NEW COMMANDS WHICH
# CONTINUE ON WITH THE TRANSLATIONS IF ANY ARE PRESENT.
#
# IN THIS SECTION THESE NEW COMMANDS ARE GENERATED AND STORED FOR REPLACEMENT OF THE CHANNEL COMMANDS WHEN THE
# CORRESPONDING ROTATIONS ARE COMPLETED.
#
# GENERATION OF THE SECOND PITCH(X-TRANS) WORD...PWORD2
ASMBLWP CCS RACFAIL
TCF FPX2 # IF FAILURE ON AC IGNORE X-TRANSLATION
TCF +2
TCF FPX2
INDEX XNDX1
CA XLNNDX
INDEX A
FPX2 CA PYTABLE
MASK PJETS
TS PWORD2
TCF YAWTIME
PBYPASS CA PWORD1 # THE T6 PROGRAM WILL LOAD PWORD2
TS PWORD2 # UPON ENTRY
CAF ZERO
TS BLAST1 # THERE IS NO PWORD2
TCF YAWTIME
# Page 1056
# GENERATION OF THE SECOND ROLL (Y,Z) WORD (RWORD2)
ASMBLWR CCS YNDX # CHECK FOR Y-TRANS
TCF ACBD2Y
NO2Y CAF ZERO
TS RWORD2
CCS ZNDX # CHECK FOR Z-TRANS
TCF ACBD2Z
NO2Z CAF ZERO
ADS RWORD2
TCF PITCHTIM # RWORD2 ASSEMBLED
ACBD2Y CCS ACORBD
TCF AC2Y # CAN DO Y-TRANS
TCF AC2Y
TCF +1 # USING AC FOR ROLL
CCS RACFAIL
TCF NO2Y # USING AC AND AC HAS FAILED
TCF +2
TCF NO2Y # DITTO
INDEX YNDX # NO FAILURES, CAN DO Y
CA XLNNDX
INDEX A
CA RTABLE
MASK ACRJETS
TCF NO2Y +1
AC2Y CCS RACFAIL
CAF THREE
TCF +2
CAF SIX
INDEX YNDX
AD XLN1NDX
INDEX A
CA YZTABLE
MASK ACYJETS
TS RWORD2
EXTEND
MP BIT4
AD =-2
TS NRJETS
CS BLAST
AD =+.1SEC
EXTEND
MP NRJETS
CA L
ADS DFT
TCF NO2Y +2
# Page 1057
ACBD2Z CCS ACORBD
TCF BDF2Z # USING BD-ROLL
TCF BDF2Z # MUST CHECK FOR BD FAILURES
TCF +1
CCS RBDFAIL # USING AC FOR ROLL, CAN DO Z-TRANS
CAF THREE
TCF +2
CAF SIX
INDEX ZNDX
AD XLN1NDX
INDEX A
CA YZTABLE
MASK BDZJETS
ADS RWORD2
EXTEND
MP BIT7
AD =-2
TS NRJETS
CS BLAST
AD =+.1SEC
EXTEND
MP NRJETS
CA L
ADS DFT
TCF PITCHTIM
BDF2Z CCS RBDFAIL
TCF NO2Z # USING BD-ROLL AND BD HAS FAILED
TCF +2
TCF NO2Z # DITTO
INDEX ZNDX
CA XLNNDX
INDEX A
CA RTABLE
MASK BDRJETS
TCF NO2Z +1
RBYPASS CA RWORD1
TS RWORD2
CAF ZERO
TS BLAST
TCF PITCHTIM
# Page 1058
# GENERATION OF THE SECOND YAW (X-TRANS) WORD...YWORD2
ASMBLWY CCS RBDFAIL
TCF FYX2 # IF FAILURE ON BD IGNORE X-TRANSLATION
TCF +2
TCF FYX2
INDEX XNDX2
CA XLNNDX
INDEX A
FYX2 CA PYTABLE
MASK YJETS
TS YWORD2
TCF T6SETUP
YBYPASS CA YWORD1
TS YWORD2
CAF ZERO
TS BLAST2
# Page 1059
# SORT THE JET ON-TIMES
#
# AT THIS POINT ALL THE CHANNEL COMMANDS AND JET ON-TIMES HAVE BEEN DETERMINED. IN SUMMARY THESE ARE:
#
# RWORD1
# RWORD2 BLAST
#
# PWORD1
# PWORD2 BLAST1
#
# YWORD1
# YWORD2 BLAST2
#
# IN THIS SECTION THE JET ON-TIMES ARE SORTED AND THE SEQUENCE OF T6 INTERRUPTS IS DETERMINED. TO FACILITATE
# THE SORTING PROCESS AND THE T6 PROGRAM, THE VARIABLES BLAST, BLAST1, BLAST2, ARE RESERVED AS DOUBLE PRECISION
# WORDS. THE LOWER PART OF THESE WORDS CONTAIN A BRANCH INDEX ASSOCIATED WITH THE ROTATION AXIS OF THE HIGHER
# ORDER WORD.
T6SETUP CAF ZERO # BRANCH INDEX FOR ROLL
TS BLAST +1
CAF FOUR # BRANCH INDEX FOR PITCH
TS BLAST1 +1
CAF ELEVEN # BRANCH INDEX FOR YAW
TS BLAST2 +1
CS BLAST
AD BLAST1
EXTEND
BZMF DXCHT12 # T1 OR T2
CHECKT23 CS BLAST1
AD BLAST2
EXTEND
BZMF DXCHT23
CALCDT6 CS BLAST1
ADS BLAST2
CS BLAST
ADS BLAST1 # END OF SORTING PROCEDURE
EXTEND # RESET T5LOC TO BEGIN PHASE1
DCA RCS2CADR
DXCH T5LOC
ENDJETS CS BIT1 # RESET BIT1 FOR INITIALIZATION OF
MASK RCSFLAGS # T6 PROGRAM
TS RCSFLAGS
CS ZERO # RESET T5PHASE FOR PHASE1
TS T5PHASE
TCF RESUME # RESUME INTERRUPTED PROGRAM
EBANK= KMPAC
RCS2CADR 2CADR RCSATT
# Page 1060
DXCHT12 DXCH BLAST
DXCH BLAST1
DXCH BLAST
TCF CHECKT23
DXCHT23 DXCH BLAST1
DXCH BLAST2
DXCH BLAST1
CS BLAST
AD BLAST1
EXTEND
BZMF +2
TCF CALCDT6
DXCH BLAST
DXCH BLAST1
DXCH BLAST
TCF CALCDT6
# Page 1061
# T6 PROGRAM AND CHANNEL SETUP
BANK 21
SETLOC DAPS5
BANK
T6START LXCH BANKRUPT
EXTEND
QXCH QRUPT
CCS TIME6 # CHECK TO SEE IF TIME6 WAS RESET
TCF RESUME # AFTER T6RUPT OCCURRED (IN T5RUPT)
TCF +2 # IF SO WAIT FOR NEXT T6RUPT BEFORE
TCF RESUME # TAKING ACTION
CS RCSFLAGS
MASK BIT1 # IF BIT1 IS 0 RESET TO 1
EXTEND # AND INITIALIZE CHANNEL
BZF T6RUPTOR
ADS RCSFLAGS
CA RWORD1
EXTEND # INITIALIZE CHANNELS 5,6 WITH WORD1
WRITE CHAN6
CA PWORD1
AD YWORD1
EXTEND
WRITE CHAN5
T6RUPTOR CCS BLAST
TCF ZBLAST # ZERO BLAST1
TCF REPLACE # REPLACE WORD1
TCF +2
TCF REPLACE
T6L1 CCS BLAST1
TCF ZBLAST1
TCF REPLACE1
TCF +2
TCF REPLACE1
T6L2 CCS BLAST2
TCF ZBLAST2
TCF REPLACE2
TCF RESUME
TCF REPLACE2
REPLACE INDEX BLAST +1
TC REPLACER
CS ONE
TS BLAST
TCF T6L1
REPLACE1 INDEX BLAST1 +1
# Page 1062
TC REPLACER
CS ONE
TS BLAST1
TCF T6L2
REPLACE2 INDEX BLAST2 +1
TC REPLACER
CS ONE
TS BLAST2
TCF RESUME
REPLACER CA RWORD2 # INITIALIZE CHANNELS 5,6 WITH WORD2
EXTEND
WRITE CHAN6
TC Q
REPLACEP CA YJETS
EXTEND
RAND CHAN5
AD PWORD2
EXTEND
WRITE CHAN5
TC Q
REPLACEY CA PJETS
EXTEND
RAND CHAN5
AD YWORD2
EXTEND
WRITE CHAN5
TC Q
ZBLAST CAF ZERO
XCH BLAST
TCF ENABT6
ZBLAST1 CAF ZERO
XCH BLAST1
TCF ENABT6
ZBLAST2 CAF ZERO
XCH BLAST2
ENABT6 TS TIME6
CAF NEGMAX
EXTEND
WOR CHAN13 # ENABLE T6RUPT
TCF RESUME
# END OF T6 INTERRUPT
ENDSLECT EQUALS

265
KALCMANU_STEERING.s Normal file
View File

@ -0,0 +1,265 @@
# Copyright: Public domain.
# Filename: KALCMANU_STEERING.agc
# Purpose: Part of the source code for Comanche, build 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 414-419
# Contact: Onno Hommes <ohommes@cmu.edu>.
# Website: www.ibiblio.org/apollo.
# Mod history: 05/07/09 OH Transcription Batch 1 Assignment
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 414
# GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
#
# NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
BANK 15
SETLOC KALCMON1
BANK
EBANK= BCDU
COUNT 22/KALC
NEWDELHI CS HOLDFLAG # SEE IF MANEUVER HAS BEEN INTERRUPTED
EXTEND # BY ASTRONAUT.
BZMF NOGO -2 # IF SO, TERMINATE KALCMANU
NEWANGL TC INTPRET
AXC,1 AXC,2
MIS # COMPUTE THE NEW MATRIX FROM S/C TO
DEL # STABLE MEMBER AXES
CALL
MXM3
VLOAD STADR
STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
STADR
STOVL MIS +6D
STADR
STORE MIS
AXC,1 CALL
MIS
DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
RTB
V1STO2S
STORE NCDU # NEW CDU ANGLES
BONCLR EXIT
CALCMAN2
MANUSTAT # TO START MANEUVER
CAF TWO # +0 OTHERWISE
INCRDCDU TS KSPNDX
DOUBLE
TS KDPNDX
INDEX KSPNDX
CA NCDU # NEW DESIRED CDU ANGLES
EXTEND
INDEX KSPNDX
MSU BCDU # INITIAL S/C ANGLE OR PREVIOUS DESIRED
EXTEND # CDU ANGLES
MP QUADROT
INDEX KDPNDX
DXCH DELCDUX # ANGEL INCREMENTS TO BE ADDED TO
# Page 415
INDEX KSPNDX # DCDU EVERY TENTH SEC
CA NCDU # BY LEM DAP
INDEX KSPNDX
XCH BCDU
INDEX KDPNDX
TS CDUXD
CCS KSPNDX
TCF INCRDCDU # LOOP FOR THREE AXES
RELINT
# COMPARE PRESENT TIME WTIH TIME TO TERMINATE MANEUVER
TMANUCHK TC TIMECHK
TC POSTJUMP
CADR CONTMANU
CAF ONE
MANUSTAL TC WAITLIST
EBANK= BCDU
2CADR MANUSTOP
RELINT
TCF ENDOFJOB
TIMECHK EXTEND
DCS TIME2
DXCH TTEMP
EXTEND
DCA TM
DAS TTEMP
CCS TTEMP
TC Q
TCF +2
TCF 2NDRETRN
CCS TTEMP +1
TC Q
TCF MANUOFF
COM
MANUOFF AD 1SEC
EXTEND
BZMF 2NDRETRN
INCR Q
2NDRETRN INCR Q
INCR Q
TC Q
SETLOC MANUSTUF
BANK
# Page 416
MANUSTAT EXIT # INITIALIZATION ROUTINE
EXTEND # FOR AUTOMATIC MANEUVERS
DCA TIME2
DAS TM # TM+T0 MANEUVER COMPLETION TIME
CS 1SEC
TS L
CS ZERO
DAS TM # (TM+T0)-1
INHINT
CS ONE # ENABLE AUTOPILOT TO PERFORM
TS HOLDFLAG # AUTOMATIC MANEUVERS
CS RATEINDX # SEE IF MANEUVERING AT HIGH RATE
AD SIX
EXTEND
BZMF HIGHGAIN
TCF +4
HIGHGAIN CS RCSFLAGS # IF SO, SET HIGH RATE FLAG (BIT 15 OF
MASK BIT15 # RCSFLAGS)
ADS RCSFLAGS
DXCH BRATE # X-AXIS MANEUVER RATE
DXCH WBODY
DXCH BRATE +2 # Y-AXIS MANEUVER RATE
DXCH WBODY1
DXCH BRATE +4 # Z-AXIS MANEUVER RATE
DXCH WBODY2
CA BIASTEMP +1 # INSERT ATTITUDE ERROR BIASES
TS BIAS # INTO AUTOPILOT
CA BIASTEMP +3
TS BIAS1
CA BIASTEMP +5
TS BIAS2
CA TIME1
AD 1SEC
XCH NEXTIME
TC POSTJUMP
CADR INCRDCDU -1
CONTMANU INHINT # CONTINUE WITH UPDATE PROCESS
CS TIME1
AD NEXTIME
CCS A
AD ONE
TCF MANUCALL
AD NEGMAX
COM
MANUCALL TC WAITLIST
EBANK= BCDU
2CADR UPDTCALL
RELINT
# Page 417
CAF 1SEC # INCREMENT TIME FOR NEXT UPDATE
ADS NEXTIME
TCF ENDOFJOB
UPDTCALL CAF PRIO26 # CALL FOR UPDATE
TC FINDVAC # OF STEERING COMMANDS
EBANK= BCDU
2CADR NEWDELHI
TC TASKOVER
# Page 418
# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
SETLOC KALCMON3
BANK
MANUSTOP TC STOPYZ
TC IBNKCALL
CADR LOADYZ
ENDROLL CA CPHI
TS CDUXD # SET CDUXD TO THE COMMANDED OUTER GIMBAL
TC STOPRATE
ENDMANU CA ATTPRIO # RESTORE USERS PRIO
TS NEWPRIO
CA ZERO # ZERO ATTCADR
DXCH ATTCADR
TC SPVAC # RETURN TO USER OF GOMANUR
TC TASKOVER
SETLOC STOPRAT
BANK
STOPRATE CAF ZERO
TS DELCDUX
TS DELCDUX +1 # ZERO ROLL INCREMENTAL ANGLES
TS WBODY # RATE
TS WBODY +1
TS BIAS # BIAS
CS BIT15 # MAKE SURE HIGH RATE FLAG (BIT 15 OF
MASK RCSFLAGS # RCSFLAGS) IS RESET.
TS RCSFLAGS
STOPYZ CAF ZERO
TS DELCDUY # ZERO PITCH, YAW
TS DELCDUY +1 # INCREMENTAL ANGLES
TS DELCDUZ
TS DELCDUZ +1
TS WBODY1 # RATES
TS WBODY1 +1
TS WBODY2
TS WBODY2 +1
TS BIAS1 # BIASES
TS BIAS2
TC Q
SETLOC MANUSTUF
BANK
# Page 419
ZEROERROR CA CDUX # PICK UP CDU ANGLES AND STORE IN
TS CDUXD # CDU DESIRED
CA CDUY
TS CDUYD
CA CDUZ
TS CDUZD
TC Q
SETLOC KALCMON1
BANK
LOADCDUD CA CPHI # STORE TERMINAL ANGLES INTO
TS CDUXD # COMMAND ANGLES
LOADYZ CA CTHETA
TS CDUYD
CA CPSI
TS CDUZD
TC Q

101
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

136
KEYRUPT_UPRUPT.s Normal file
View File

@ -0,0 +1,136 @@
# Copyright: Public domain.
# Filename: KEYRUPT_UPRUPT.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1449-1451
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same
# name, and page images. Corrected various
# typos in the transcription of program
# comments, and these should be back-ported
# to Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1449
BANK 14
SETLOC KEYRUPT
BANK
COUNT* $$/KEYUP
KEYRUPT1 TS BANKRUPT
XCH Q
TS QRUPT
TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65.
CAF LOW5
EXTEND
RAND MNKEYIN # CHECK IF KEYS 5M-1M ON
KEYCOM TS RUPTREG4
CS FLAGWRD5
MASK BIT15
ADS FLAGWRD5
ACCEPTUP CAF CHRPRIO # (NOTE: RUPTREG4 = KEYTEMP1)
TC NOVAC
EBANK= DSPCOUNT
2CADR CHARIN
CA RUPTREG4
INDEX LOCCTR
TS MPAC # LEAVE 5 BIT KEY CODE IN MPAC FOR CHARIN
TC RESUME
# Page 1450
# UPRUPT PROGRAM
UPRUPT TS BANKRUPT
XCH Q
TS QRUPT
TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65.
CAF ZERO
XCH INLINK
TS KEYTEMP1
CAF BIT3 # TURN ON UPACT LIGHT
EXTEND # (BIT 3 OF CHANNEL 11)
WOR DSALMOUT
UPRPT1 CAF LOW5 # TEST FOR TRIPLE CHAR REDUNDANCY
MASK KEYTEMP1 # LOW5 OF WORD
XCH KEYTEMP1 # LOW5 INTO KEYTEMP1
EXTEND
MP BIT10 # SHIFT RIGHT 5
TS KEYTEMP2
MASK LOW5 # MID 5
AD HI10
TC UPTEST
CAF BIT10
EXTEND
MP KEYTEMP2 # SHIFT RIGHT 5
MASK LOW5 # HIGH 5
COM
TC UPTEST
UPOK CS ELRCODE # CODE IS GOOD. IF CODE = `ERROR RESET',
AD KEYTEMP1 # CLEAR UPLOCKFL (SET BIT4 OF FLAGWRD7 = 0)
EXTEND # IF CODE DOES NOT = `ERROR RESET', ACCEPT
BZF CLUPLOCK # CODE ONLY IF UPLOCKFL IS CLEAR (=0).
CAF BIT4 # TEST UPLOCKFL FOR 0 OR 1
MASK FLAGWRD7
CCS A
TC RESUME # UPLOCKFL = 1
TC ACCEPTUP # UPLOCKFL = 0
CLUPLOCK CS BIT4 # CLEAR UPLOCKFL (I.E., SET BIT 4 OF
MASK FLAGWRD7 # FLAGWRD7 = 0)
TS FLAGWRD7
TC ACCEPTUP
# CODE IS BAD
TMFAIL2 CS FLAGWRD7 # LOCK OUT FURTHER UPLINK ACTIVITY
MASK BIT4 # (BY SETTING UPLOCKFL = 1) UNTIL
ADS FLAGWRD7 # `ERROR RESET' IS SENT VIA UPLINK.
TC RESUME
UPTEST AD KEYTEMP1
# Page 1451
CCS A
TC TMFAIL2
HI10 OCT 77740
TC TMFAIL2
TC Q
ELRCODE OCT 22
# `UPLINK ACTIVITY LIGHT' IS TURNED OFF BY .....
# 1. VBRELDSP
# 2. ERROR RESET
# 3. UPDATE PROGRAM (P27) ENTERED BY V70,V71,V72, AND V73.
#
# THE RECEPTION OF A BAD CODE (I.E., CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1.
# THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS.
# WHEN UPLINK ACTIVITY IS LOCKED OUT, IT CAN BE ALLOWED WHEN THE GROUND UPLINKS AND `ERROR RESET' CODE.
# (IT IS RECOMMENDED THAT THE `ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED
# BY 15 ZEROS. THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL
# FAILURE).
#
# UPLINK ACTIVITY IS ALSO ALLOWED (UNLOCKED) DURING FRESH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0.

169
LAMBERT_AIMPOINT_GUIDANCE.s Normal file
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 ***

536
LANDING_ANALOG_DISPLAYS.s Normal file
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
# ******************************************************************************

View File

@ -0,0 +1,318 @@
# Copyright: Public domain.
# Filename: LATITUDE_LONGITUDE_SUBROUTINES.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1236-1242
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1236
# SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
#
# CALLING SEQUENCE
# L-1 CALL
# L LAT-LONG
#
# SUBROUTINES USED
# R-TO-RP, ARCTAN, SETGAMMA, SETRE
#
# ERASABLE INIT. REQ.
# AXO, -AYO, AZO, TEPHEM (SET AT LAUNCH TIME)
# ALPHAV = POSITION VECTOR METERS B-29
# MPAC -- TIME (CSECS B-28)
# ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
# LUNAFLAG=0 FOR EARTH, 1 FOR MOON
#
# OUTPUT
# LATITUDE IN LAT (REVS. B-0)
# LONGITUDE IN LONG (REVS. B-0)
# ALTITUDE IN ALT METERS B-29
BANK 30
SETLOC LATLONG
BANK
COUNT 13/LT-LG
EBANK= ALPHAV
LAT-LONG STQ SETPD
INCORPEX
0D
STOVL 6D # SAVE TIME IN 6-7D FOR R-TO-RP
ALPHAV
PUSH ABVAL # 0-5D= R FOR R-TO-RP
STODL ALPHAM # ABS. VALUE OF R FOR ALT FORMULA BELOW
ZEROVEC # SET MPAC=0 FOR EARTH, NON-ZERO FOR MOON
BOFF COS # USE COS(0) TO GET NON-ZERO IN MPAC
LUNAFLAG # 0=EARTH, 1=MOON
CALLRTRP
CALLRTRP CALL
R-TO-RP # RP VECTOR CONVERTED FROM R B-29
UNIT # UNIT RP B-1
STCALL ALPHAV # U2= 1/2 SINL FOR SETRE SUBR BELOW
SETGAMMA # SET GAMMA=B2/A2 FOR EARTH, =1 FOR MOON
CALL # SCALED B-1.
SETRE # CALC RE METERS B-29
DLOAD DSQ
ALPHAV
PDDL DSQ
ALPHAV +2
# Page 1237
DAD SQRT
DMP SL1R
GAMRP
STODL COSTH # COS(LAT) B-1
ALPHAV +4
STCALL SINTH # SIN(LAT) B-1
ARCTAN
STODL LAT # LAT B0
ALPHAV
STODL COSTH # COS(LONG) B-1
ALPHAV +2
STCALL SINTH # SIN(LONG) B-1
ARCTAN
STODL LONG # LONG. REVS B-0 IN RANGE -1/2 TO 1/2
ALPHAM
DSU # ALT= R-RE METERS B-29
ERADM
STCALL ALT # EXIT WITH ALT METERS B-29
INCORPEX
# Page 1238
# SUBROUTINE TO CONVERT LAT,LONG.ALT AT GIVEN TIME TO RADIUS VECTOR
#
# CALLING SEQUENCE
# L-1 CALL
# L LALOTORV
#
# SUBROUTINES USED
# SETGAMMA, SETRE, RP-TO-R
#
# ERASABLE INIT. REQ.
# AXO, AYO, AZO, TEPHEM SET AT LAUNCH TIME
# LAT -- LATITUDE (REVS B0)
# LONG -- LONGITUDE (REVS B0)
# ALT -- ALTITUDE (METERS) B-29
# MPAC -- TIME (CSECS B-28)
# ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
# LUNAFLAG=0 FOR EARTH, 1 FOR MOON
#
# OUTPUT
# R-VECTOR IN ALPHAV (METERS B-29)
LALOTORV STQ SETPD # LAT,LONG,ALT TO R VECTOR
INCORPEX
0D
STCALL 6D # 6-7D = TIME FOR RP-TO-R
SETGAMMA # GAMMA = B2/A2 FOR EARTH, 1 FOR MOON B-1
DLOAD SIN # COS(LONG)COS(LAT) IN MPAC
LAT # UNIT RP = SIN(LONG)COS(LAT) 2-3D
DMPR PDDL # PD 2 GAMMA*SIN(LAT) 0-1D
GAMRP
LAT # 0-1D = GAMMA*SIN(LAT) B-2
COS PDDL # PD4 2-3D= COS(LAT) B-1 TEMPORARILY
LONG
SIN DMPR # PD 2
PDDL COS # PD 4 2-3D= SIN(LONG)COS(LAT) B-2
LAT
PDDL COS # PD 6 4-5D= COS(LAT) B-1 TEMPORARILY
LONG
DMPR VDEF # PD4 MPAC = COS(LONG)COS(LAT) B-2
UNIT PUSH # 0-5D = UNIT RP FOR RP-TO-R SUBR.
STCALL ALPHAV # ALPHAV +4= SINL FOR SETRE SUBR.
SETRE # RE METERS B-29
DLOAD BOFF # SET MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
ZEROVEC
LUNAFLAG
CALLRPRT
COS # USE COS(0) TO GET NON-ZERO IN MPAC
CALLRPRT CALL
RP-TO-R # EXIT WITH UNIT R VECTOR IN MPAC
STODL ALPHAV
ERADM
# Page 1239
DAD VXSC # (RE + ALT)(UNIT R) METERS B-30
ALT
ALPHAV
VSL1 # R METERS B-29
STCALL ALPHAV # EXIT WITH R IN METERS B-29
INCORPEX
# SUBROUTINE TO COMPUTE EARTH RADIUS
#
# INPUT
# 1/2 SIN LAT IN ALPHAV +4
#
# OUTPUT
# EARTH RADIUS IN ERADM AND MPAC (METERS B-29)
GETERAD DLOAD DSQ
ALPHAV +4 # SIN**2(L)
SL1 BDSU
DP1/2 # COS**2(L)
DMPR BDSU
EE
DP1/2
BDDV SQRT
B2XSC
SR4R
STORE ERADM
RVQ
# THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166, B=6356784 METERS
# B2XSC = B**2 SCALED B-51
# B2/A2 = B**2/A**2 SCALED B-1
# EE = (1-B**2/A**2) SCALED B-0
B2XSC 2DEC .0179450689 # B**2 SCALED B-51
DP1/2 = XUNIT
B2/A2 2DEC .9933064884 B-1 # GAMMA= B**2/A**2 B-1
EE 2DEC 6.6935116 E-3 # (1-B**2/A**2) B-0
ERAD 2DEC 6373338 B-29 # PAD RADIUS
# Page 1240
# ARCTAN SUBROUTINE
#
# CALLING SEQUENCE
# SIN THETA IN SINTH B-1
# COS THETA IN COSTH B-1
# CALL ARCTAN
#
# OUTPUT
# ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
ARCTAN BOV
CLROVFLW
CLROVFLW DLOAD DSQ
SINTH
PDDL DSQ
COSTH
DAD
BZE SQRT
ARCTANXX # ATAN=0/0. SET THETA=0
BDDV BOV
SINTH
ATAN=90
SR1 ASIN
STORE THETA
PDDL BMN
COSTH
NEGCOS
DLOAD RVQ
NEGCOS DLOAD DCOMP
BPL DAD
NEGOUT
DP1/2
ARCTANXX STORE THETA
RVQ
NEGOUT DSU GOTO
DP1/2
ARCTANXX
ATAN=90 DLOAD SIGN
LODP1/4
SINTH
STORE THETA
RVQ
2DZERO = DPZERO
# Page 1241
# ***** SETGAMMA SUBROUTINE *****
# SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
#
# GAMMA = B**2/A**2 FOR EARTH (B-1)
# GAMMA = 1 FOR MOON (B-1)
#
# CALLING SEQUENCE
# L CALL
# L+1 SETGAMMA
#
# INPUT
# LUNAFLAG=0 FOR EARTH, =1 FOR MOON
#
# OUTPUT
# GAMMA IN GAMRP (B-1)
SETGAMMA DLOAD BOFF # BRANCH FOR EARTH
B2/A2 # EARTH GAMMA
LUNAFLAG
SETGMEX
SLOAD
1B1 # MOON GAMMA
SETGMEX STORE GAMRP
RVQ
GAMRP = 8D
# Page 1242
# ***** SETRE SUBROUTINE *****
# SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
#
# RE = RM FOR MOON
# RE = RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
#
# CALLING SEQUENCE
# L CALL
# L+1 SETRE
#
# SUBROUTINES USED
# CETERAD
#
# INPUT
# ERADFLAG = 0 FOR FIXED RE, 1 FOR COMPUTED RE
# ALPHAV +4 = 1/2 SINL IF GETERAD IS CALLED
# LUNAFLAG = 0 FOR EARTH, =1 FOR MOON
#
# OUTPUT
# ERADM = 504RM FOR MOON (METERS B-29)
# ERADM = ERAD OR COMPUTED RE FOR EARTH (METERS B-29)
SETRE STQ DLOAD
SETREX
504RM
BON DLOAD # BRANCH FOR MOON
LUNAFLAG
TSTRLSRM
ERAD
BOFF CALL # ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED
ERADFLAG
SETRXX
GETERAD
SETRXX STCALL ERADM # EXIT WITH RE OR RM METERS B-29
SETREX
TSTRLSRM BON VLOAD # ERADFLAG=0, SET R0=RLS
ERADFLAG # =1 R0=RM
SETRXX
RLS
ABVAL SR2R # SCALE FROM B-27 TO B-29
GOTO
SETRXX
SETREX = S2
504RM 2DEC 1738090 B-29 # METERS B-29 (MOON RADIUS)

209
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 APPROPIRATELY 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.)

View File

@ -0,0 +1,211 @@
# Copyright: Public domain.
# Filename: LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 785-788
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same
# name and Comanche 055 page images.
# 2009-07-26 RSB Added annotations related to computation
# of the ephemeral(?) polynomials.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 785
# LUNAR AND SOLAR EPHEMERIDES SUBROUTINES
#
# FUNCTIONAL DESCRIPTION
#
# THESE SUBROUTINES ARE USED TO DETERMINE THE POSITION AND VELOCITY
# VECTORS OF THE SUN AND THE MOON RELATIVE TO THE EARTH AT THE
# SPECIFIED GROUND ELAPSED TIME INPUT BY THE USER.
#
# THE POSITION OF THE MOON IS STORED IN THE COMPUTER IN THE FORM OF
# A NINTH DEGREE POLYNOMIAL APPROXIMATION WHICH IS VALID OVER A 15
# DAY INTERVAL BEGINNING SHORTLY BEFORE LAUNCH. THEREFORE THE TIME
# INPUT BY THE USER SHOULD FALL WITHIN THIS 15 DAY INTERVAL.
## The 9th-degree polynomial spoken of here is a pad load, meaning
## that it is not actually hardcoded into the software. Additional
## information about calculating the polynomial can be found on the
## <a href="http://nassp.sourceforge.net/wiki/Lunar_Ephemeris_Polynomials">
## <b>Orbiter</b> NASSP wiki</a>, as well as information about calculation
## of the <a href="http://nassp.sourceforge.net/wiki/Solar_Ephemeris">
## solar ephemerides</a>.
#
# LSPOS COMPUTES THE POSITION VECTORS OF THE SUN AND THE MOON.
#
# LUNPOS COMPUTES THE POSITION VECTOR OF THE MOON.
#
# LUNVEL COMPUTES THE VELOCITY VECTOR OF THE MOON.
#
# SOLPOS COMPUTES THE POSITION VECTOR OF THE SUN.
#
# CALLING SEQUENCE
#
# DLOAD CALL
# TIME GROUND ELAPSED TIME
# SUBROUTINE LSPOS OR LUNPOS OR LUNVEL OR SOLPOS
#
# INPUT
#
# 1) SPECIFIED GROUND ELAPSED TIME IN CS x B-28 LOADED IN MPAC.
#
# 2) TIMEMO -- TIME AT THE CENTER OF THE RANGE OVER WHICH THE LUNAR
# POSITION POLYNOMIAL IS VALID IN CS x B-42.
#
# 3) VECOEM -- VECTOR COEFFICIENTS OF THE LUNAR POSITION POLYNOMIAL
# LOADED IN DESCENDING SEQUENCE IN METERS/CS**N x B-2
#
# 4) RESO -- POSITION VECTOR OF THE SUN RELATIVE TO THE EARTH AT
# TIMEMO IN METERS x B-38
#
# 5) VESO -- VELOCITY VECTOR OF THE SUN RELATIVE TO THE EARTH AT
# TIMEMO IN METERS/CS x B-9
#
# 6) OMEGAES -- ANGULAR VELOCITY OF THE VECTOR RESO AT TIMEMO IN
# REV/CS x B+26
#
# ALL EXCEPT THE FIRST INPUT ARE INCLUDED IN THE PRE-LAUNCH
# ERASABLE DATA LOAD.
#
# OUTPUT -- LSPOS
# Page 786
#
# 1) 2D OF VAC AREA CONTAINS THE POSITION VECTOR OF THE SUN RELATIVE
# TO THE EARTH AT TIME INPUT BY THE USER IN METERS x B-38.
#
# 2) MPAC CONTAINS THE POSITION VECTOR OF THE MOON RELATIVE TO THE
# EARTH AT TIME INPUT BY THE USER IN METERS x B-29
#
# OUTPUT -- LUNPOS
#
# MPAC CONTAINS THE POSITION VECTOR OF THE MOON RELATIVE TO THE
# EARTH AT THE TIME INPUT BY USER IN METERS x B-29
#
# OUTPUT -- LUNVEL
#
# MPAC CONTAINS THE VELOCITY VECTOR OF THE MOON RELATIVE TO THE
# EARTH AT THE TIME INPUT BY THE USER IN METERS/CS x B-7
#
# OUTPUT -- SOLPOS
#
# MPAC CONTAINS THE POSITION VECTOR OF THE SUN RELATIVE TO THE EARTH
# AT TIME INPUT BY THE USER IN METERS x B-38.
#
# SUBROUTINES USED
#
# NONE
#
# REMARKS
#
# THE VAC AREA IS USED FOR STORAGE OF INTERMEDIATE AND FINAL RESULTS
# OF COMPUTATIONS.
#
# S1, X1, AND X2 ARE USED BY THESE SUBROUTINES.
#
# PRELAUNCH ERASABLE DATA LOAD ARE ONLY ERASABLE STORAGE USED BY
# THESE SUBROUTINES.
#
# RESTARTS DURING OPERATION OF THESE SUBROUTINES MUST BE HANDLED BY
# THE USER.
BANK 36
SETLOC EPHEM
BANK
COUNT* $$/EPHEM
EBANK= END-E7
LSPOS AXT,2 # COMPUTES POSITION VECTORS OF BOTH THE
RESA # SUN AND THE MOON. THE POSITION VECTOR
AXT,1 GOTO # OF THE SUN IS STORED IN 2D OF THE VAC
RES # AREA. THE POSITION VECTOR OF THE MOON
LSTIME # IS STORED IN MPAC.
LUNPOS AXT,1 GOTO # COMPUTES THE POSITION VECTOR OF THE MOON
REM # AND STORES IT IN MPAC.
LSTIME
# Page 787
LUNVEL AXT,1 GOTO # COMPUTES THE VELOCITY VECTOR OF THE MOON
VEM # AND STORES IT IN MPAC.
LSTIME
SOLPOS STQ AXT,1 # COMPUTES THE POSITION VECTOR OF THE SUN
X2 # AND STORES IT IN MPAC.
RES
LSTIME SETPD SR
0D
14D
TAD DCOMP
TEPHEM
TAD DCOMP
TIMEMO
SL SSP
16D
S1
6D
GOTO
X1
RES PUSH DMP # PD- 2
OMEGAES
PUSH COS # PD- 4
VXSC PDDL # PD- 8
RESO
SIN PDVL # PD-10
RESO
PUSH UNIT # PD-16
VXV UNIT
VESO
VXV VSL1 # PD-10
VXSC VAD # PD-02
VSL1 GOTO # RES IN METERS x B-38 IN MPAC.
X2
RESA STODL 2D # RES IN METERS x B-38 IN 2D OF VAC. PD- 0
REM AXT,1 PDVL # PD- 2
54D
VECOEM
REMA VXSC VAD*
0D
VECOEM +60D,1
TIX,1 VSL2 # REM IN METERS x B-29 IN MPAC.
REMA
RVQ
VEM AXT,1 PDDL # PD- 2
48D
NINEB4
PUSH VXSC # PD- 4
VECOEM
VEMA VXSC
0D
# Page 788
STODL 4D # PD- 2
DSU PUSH # PD- 4
ONEB4
VXSC* VAD
VECOEM +54D,1
4D
TIX,1 VSL2 # VEM IN METERS/CS x B-7 IN MPAC.
VEMA
RVQ
NINEB4 2DEC 9.0 B-4
ONEB4 2DEC 1.0 B-4

View File

@ -1,5 +1,5 @@
# Copyright: Public domain.
# Filename: LUNAR_LANDING_GUIDANCE_EQUATIONS.s
# Filename: LUNAR_LANDING_GUIDANCE_EQUATIONS.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.
@ -1240,7 +1240,7 @@ DESCBITS MASK BIT7 # COME HERE FROM MARKRUPT CODING WITH BIT
# N N-1
# ROOTPSRS FINDS ONE ROOT OF THE POWER SERIES A X + A X + ... + A X + A
# N N-1 1 0
# USING NETON'S METHOD STARTING WITH AN INITIAL GUESS FOR THE ROOT. THE ENTERING DATA MUST BE AS FOLLOWS:
# USING NEWTON'S METHOD STARTING WITH AN INITIAL GUESS FOR THE ROOT. THE ENTERING DATA MUST BE AS FOLLOWS:
# A SP LOC-3 ADRES FOR REFERENCING PWR COF TABL
# L SP N-1 N IS THE DEGREE OF THE POWER SERIES
# MPAC DP X INITIAL GUESS FOR ROOT

View File

@ -0,0 +1,34 @@
# Copyright: Public domain.
# Filename: LUNAR_LANDMARK_SELECTION_FOR_CM.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Jim Lawton <jim.lawton@gmail.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 936
# Mod history: 2009-05-11 JVL Adapted from the Colossus249/ file
# of the same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 936
# *** END OF TROUBLE .043 ***

168
MAIN.s Normal file
View File

@ -0,0 +1,168 @@
# Copyright: Public domain.
# Filename: MAIN.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC) Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo
# Mod history: 2009-05-05 RSB Adapted from Colossus249/MAIN.agc.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
#
# This file is a little different from the other Comanche055 files I'm providing,
# in that it doesn't represent anything that appears directly in the original source.
# What I (RSB) have done for organizational purposes is to split the huge monolithic
# source code into smaller, more manageable chunks--i.e., into individual source
# files. Those files are rejoined within this file as "includes". It just makes
# it a little easier to work with. The code chunks correspond to natural divisions
# into sub-programs. In fact, these divisions are more-or-less specified by
# the source code itself. Refer to the "SUBROUTINE CALLS" at the
# very beginning of the file ASSEMBLY_AND_OPERATION_INFORMATION.agc.
#
# It may be reasonably asked why tens of thousands of lines of source are joined by
# means of inclusion, rather than simply assembling the source files individually and
# then linking them to form the executable. The answer is that the original
# development team had no linker. The builds were monolithic just like this.
# There was a big emphasis on reusability of the code in the original project,
# apparently, but this reusability took the form of inserting your deck of
# punch-cards at the appropriate position in somebody else's deck of punch-cards.
# (Actually, I think the card-decks were turned into tape libraries, and the modules
# were mixed-and-matched from the tape libraries, but the principle is the same.)
# So, indeed, the method of file-inclusion is a very fair representation of the
# methods used in the original development ... with the improvement, of course,
# that you no longer have to worry about dropping the card deck. On the other hand,
# I wasn't there at the time, so I may have no idea what I'm talking about.
#
# Finally, note that the original Apollo AGC assembler (called "YUL") is no longer
# available (as far as I can tell). Actually, it had already been replaced by another
# assembler (called "GAP") by the time of Apollo 11, but GAP isn't available either.
# The replacement assembler yaYUL accepts a slightly different format for the source
# code from what YUL or GAP accepted, so the source code has been targeted for
# assembly with yaYUL.
# What follows is simply a bunch of file-includes for the individual code chunks.
# I've marked the page numbers to make proof-reading easier. The page images also
# contain a lot of interesting tables (cross-referenced to page numbers) created by GAP,
# but not duplicated by yaYUL, so it's still valuable even if the source-files
# listed below are in hand.
$CONTRACT_AND_APPROVALS.agc # p. 1
$ASSEMBLY_AND_OPERATION_INFORMATION.agc # pp. 2-26
$TAGS_FOR_RELATIVE_SETLOC.agc # pp. 27-35
# p. 36 contains no code.
# COMERASE
$ERASABLE_ASSIGNMENTS.agc # pp. 37-130
# COMAID
$INTERRUPT_LEAD_INS.agc # pp. 131-132
$T4RUPT_PROGRAM.agc # pp. 133-169
$DOWNLINK_LISTS.agc # pp. 170-180
$FRESH_START_AND_RESTART.agc # pp. 181-210
$RESTART_TABLES.agc # pp. 211-221
$SXTMARK.agc # pp. 222-235
$EXTENDED_VERBS.agc # pp. 236-267
$PINBALL_NOUN_TABLES.agc # pp. 268-284
$CSM_GEOMETRY.agc # pp. 285-296
$IMU_COMPENSATION_PACKAGE.agc # pp. 297-306
$PINBALL_GAME_BUTTONS_AND_LIGHTS.agc # pp. 307-389
$R60_62.agc # pp. 390-398
$ANGLFIND.agc # pp. 399-411
$GIMBAL_LOCK_AVOIDANCE.agc # pp. 412-413
$KALCMANU_STEERING.agc # pp. 414-419
$SYSTEM_TEST_STANDARD_LEAD_INS.agc # pp. 420-422
$IMU_CALIBRATION_AND_ALIGNMENT.agc # pp. 423-455
# COMEKISS
$GROUND_TRACKING_DETERMINATION_PROGRAM.agc # pp. 456-459
$P34-35_P74-75.agc # pp. 460-504
$R31.agc # pp. 505-510
$P76.agc # pp. 511-513
$R30.agc # pp. 514-524
$STABLE_ORBIT.agc # pp. 525-532
# TROUBLE
$P11.agc # pp. 533-550
$TPI_SEARCH.agc # pp. 551-561
$P20-P25.agc # pp. 562-634
$P30-P37.agc # pp. 635-648
$P32-P33_P72-P73.agc # pp. 649-683
$P40-P47.agc # pp. 684-736
$P51-P53.agc # pp. 737-784
$LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc # pp. 785-788
$P61-P67.agc # pp. 789-818
$SERVICER207.agc # pp. 819-836
$ENTRY_LEXICON.agc # pp. 837-843
$REENTRY_CONTROL.agc # pp. 844-882
$CM_BODY_ATTITUDE.agc # pp. 883-889
$P37_P70.agc # pp. 890-933
$S-BAND_ANTENNA_FOR_CM.agc # pp. 934-935
$LUNAR_LANDMARK_SELECTION_FOR_CM.agc # pp. 936
# TVCDAPS
$TVCINITIALIZE.agc # pp. 937-944
$TVCEXECUTIVE.agc # pp. 945-950
$TVCMASSPROP.agc # pp. 951-955
$TVCRESTARTS.agc # pp. 956-960
$TVCDAPS.agc # pp. 961-978
$TVCSTROKETEST.agc # pp. 979-983
$TVCROLLDAP.agc # pp. 984-998
$MYSUBS.agc # pp. 999-1001
$RCS-CSM_DIGITAL_AUTOPILOT.agc # pp. 1002-1024
$AUTOMATIC_MANEUVERS.agc # pp. 1025-1036
$RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc # pp. 1037-1038
$JET_SELECTION_LOGIC.agc # pp. 1039-1062
$CM_ENTRY_DIGITAL_AUTOPILOT.agc # pp. 1063-1092
# CHIEFTAN
$DOWN-TELEMETRY_PROGRAM.agc # pp. 1093-1102
$INTER-BANK_COMMUNICATION.agc # pp. 1103-1106
$INTERPRETER.agc # pp. 1107-1199
$FIXED_FIXED_CONSTANT_POOL.agc # pp. 1200-1204
$INTERPRETIVE_CONSTANTS.agc # pp. 1205-1206
$SINGLE_PRECISION_SUBROUTINES.agc # p. 1207
$EXECUTIVE.agc # pp. 1208-1220
$WAITLIST.agc # pp. 1221-1235
$LATITUDE_LONGITUDE_SUBROUTINES.agc # pp. 1236-1242
$PLANETARY_INERTIAL_ORIENTATION.agc # pp. 1243-1251
$MEASUREMENT_INCORPORATION.agc # pp. 1252-1261
$CONIC_SUBROUTINES.agc # pp. 1262-1308
$INTEGRATION_INITIALIZATION.agc # pp. 1309-1333
$ORBITAL_INTEGRATION.agc # pp. 1334-1354
$INFLIGHT_ALIGNMENT_ROUTINES.agc # pp. 1355-1364
$POWERED_FLIGHT_SUBROUTINES.agc # pp. 1365-1372
$TIME_OF_FREE_FALL.agc # pp. 1373-1388
$STAR_TABLES.agc # pp. 1389-1393
$AGC_BLOCK_TWO_SELF-CHECK.agc # pp. 1394-1403
$PHASE_TABLE_MAINTENANCE.agc # pp. 1404-1413
$RESTARTS_ROUTINE.agc # pp. 1414-1419
$IMU_MODE_SWITCHING_ROUTINES.agc # pp. 1420-1448
$KEYRUPT_UPRUPT.agc # pp. 1449-1451
$DISPLAY_INTERFACE_ROUTINES.agc # pp. 1452-1484
$SERVICE_ROUTINES.agc # pp. 1485-1492
$ALARM_AND_ABORT.agc # pp. 1493-1496
$UPDATE_PROGRAM.agc # pp. 1497-1507
$RT8_OP_CODES.agc # pp. 1508-1516
# pp. 1517-1751: GAP-generated tables.

503
MEASUREMENT_INCORPORATION.s Normal file
View File

@ -0,0 +1,503 @@
# Copyright: Public domain.
# Filename: MEASUREMENT_INCORPORATION.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1252-1261
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1252
# INCORP1 -- PERFORMS THE SIX DIMENSIONAL STATE VECTOR DEVIATION FOR POSITION
# AND VELOCITY OR THE NINE-DIMENSIONAL DEVIATION OF POSITION, VELOCITY, AND
# RADAR OR LANDMARK BIAS. THE OUTPUT OF THE BVECTOR ROUTINE ALONG WITH THE
# ERROR TRANSITION MATRIX (W) ARE USED AS INPUT TO THE ROUTINE. THE DEVIATION
# IS OBTAINED BY COMPUTING AN ESTIMATED TRACKING MEASUREMENT FROM THE
# CURRENT STATE VECTOR AND COMPARING IT WITH AN ACTUAL TRACKING MEASUREMENT
# AND APPLYING A STATISTICAL WEIGHTING VECTOR.
#
# INPUT
# DMENFLG = 0 (6-DIMENSIONAL BVECTOR), =1 (9-DIMENSIONAL)
# W = ERROR TRANSITION MATRIX 6X6 OR 9X9
# VARIANCE = VARIANCE (SCALAR)
# DELTAQ = MEASURED DEVIATION (SCALAR)
# BVECTOR = 6 OR 9 DIMENSIONAL BVECTOR
#
# OUTPUT
# DELTAX = STATE VECTOR DEVIATIONS 6 OR 9 DIMENSIONAL
# ZI = VECTOR USED FOR THE INCORPORATION 6 OR 9 DIMENSIONAL
# GAMMA = SCALAR
# OMEGA = OMEGA WEIGHTING VECTOR 6 OR 9 DIMENSIONAL
#
# CALLING SEQUENCE
# L CALL INCORP1
#
# NORMAL EXIT
# L+1 OF CALLING SEQUENCE
BANK 37
SETLOC MEASINC
BANK
COUNT* $$/INCOR
EBANK= W
INCORP1 STQ
EGRESS
AXT,1 SSP
54D
S1
18D # IX1 = 54 S1= 18
AXT,2 SSP
18D
S2
6 # IX2 = 18 S2=6
Z123 VLOAD MXV*
BVECTOR # BVECTOR (0)
W +54D,1
STORE ZI +18D,2
VLOAD
BVECTOR +6 # BVECTOR (1)
# Page 1253
MXV* VAD*
W +108D,1
ZI +18D,2
STORE ZI +18D,2
VLOAD
BVECTOR +12D # BVECTOR (2)
MXV* VAD*
W +162D,1
ZI +18D,2 # B(0)*W+B(1)*(W+54)+B(2)*(W+108) FIRST PASS
STORE ZI +18D,2 # ZI THEN Z2 THEN Z3
TIX,1
INCOR1
INCOR1 TIX,2 BON
Z123 # LOOP FOR Z1,Z2,Z3
DMENFLG
INCOR1A
VLOAD
ZEROVECS
STORE ZI +12D
INCOR1A SETPD VLOAD
0
ZI
VSQ RTB
TPMODE
PDVL VSQ
ZI +6
RTB TAD
TPMODE
PDVL VSQ
ZI +12D
RTB TAD
TPMODE
TAD AXT,2
VARIANCE
0
STORE TRIPA # ZI*2 + Z2*2 + Z3*2 + VARIANCE
TLOAD BOV
VARIANCE # CLEAR OVFIND
+1
STORE TEMPVAR # TEMP STORAGE FOR VARIANCE
BZE
INCOR1C
INCOR1B SL2 BOV
INCOR1C
STORE TEMPVAR
INCR,2 GOTO
DEC 1
INCOR1B
INCOR1C TLOAD ROUND
TRIPA
# Page 1254
DMP SQRT
TEMPVAR
SL* TAD
0,2
TRIPA
NORM INCR,2
X2
DEC -2
SXA,2 AXT,2
NORMGAM # NORMALIZATION COUNT -2 FOR GAMMA
162D
BDDV SETPD
DP1/4TH
0
STORE GAMMA
TLOAD NORM
TRIPA
X1
DLOAD PDDL # PD 0-1 = NORM (A)
MPAC
DELTAQ
NORM
S1
XSU,1 SR1
S1
DDV PUSH # PD 0-1 = DELTAQ/A
GOTO
NEWZCOMP
-3 SSP
S2
54D
INCOR2 VLOAD VXM* # COMPUT OMEGA1,2,3
ZI
W +162D,2
PUSH VLOAD
ZI +6
VXM* VAD
W +180D,2
PUSH VLOAD
ZI +12D
VXM* VAD
W +198D,2
PUSH TIX,2 # PD 2-7=OMEGA1, 8-13=OMEGA2, 14-19=OMEGA3
INCOR2
VLOAD STADR
STORE OMEGA +12D
VLOAD STADR
STORE OMEGA +6
VLOAD STADR
STORE OMEGA
# Page 1255
BON VLOAD
DMENFLG
INCOR2AB
ZEROVECS
STORE OMEGA +12D
INCOR2AB AXT,2 SSP
18D
S2
6
INCOR3 VLOAD*
OMEGA +18D,2
VXSC VSL*
0 # DELTAQ/A
0,1
STORE DELTAX +18D,2
TIX,2 VLOAD
INCOR3
DELTAX +6
VSL3
STORE DELTAX +6
GOTO
EGRESS
# Page 1256
# INCORP2 -- INCORPORATES THE COMPUTED STATE VECTOR DEVIATIONS INTO THE
# ESTIMATED STATE VECTOR. THE STATE VECTOR UPDATED MAY BE FOR EITHER THE
# LEM OR THE CSM. DETERMINED BY FLAG VEHUPFLG. (ZERO = LEM) (1 = CSM)
#
# INPUT
# PERMANENT STATE VECTOR FOR EITHER THE LEM OR CSM
# VEHUPFLG = UPDATE VEHICLE C=LEM 1=CSM
# W = ERROR TRANSITION MATRIX
# DELTAX = COMPUTED STATE VECTOR DEVIATIONS
# DMENFLG = SIZE OF W MATRIX (ZERO=6X6) (1=9X9)
# GAMMA = SCALAR FOR INCORPORATION
# ZI = VECTOR USED IN INCORPORATION
# OMEGA = WEIGHTING VECTOR
#
# OUTPUT
# UPDATED PERMANENT STATE VECTOR
#
# CALLING SEQUENCE
# L CALL INCORP2
#
# NORMAL EXIT
# L+1 OF CALLING SEQUENCE
#
SETLOC MEASINC1
BANK
COUNT* $$/INCOR
INCORP2 STQ CALL
EGRESS
INTSTALL
VLOAD VXSC # CALC. GAMMA*OMEGA1,2,3
OMEGA
GAMMA
STOVL OMEGAM1
OMEGA +6
VXSC
GAMMA
STOVL OMEGAM2
OMEGA +12D
VXSC
GAMMA
STORE OMEGAM3
EXIT
CAF 54DD # INITIAL IX 1 SETTING FOR W MATRIX
TS WIXA
TS WIXB
CAF ZERO
TS ZIXA # INITIAL IX 2 SETTING FOR Z COMPONENT
TS ZIXB
FAZA TC PHASCHNG
# Page 1257
OCT 04022
TC UPFLAG
ADRES REINTFLG
FAZA1 CA WIXB # START FIRST PHASE OF INCORP2
TS WIXA # TO UPDATE 6 OR 9 DIM. W MATRIX IN TEMP
CA ZIXB
TS ZIXA
TC INTPRET
LXA,1 LXA,2
WIXA
ZIXA
SSP DLOAD*
S1
6
ZI,2
DCOMP NORM # CALC UPPER 3X9 PARTITION OF W MATRIX
S2
VXSC XCHX,2
OMEGAM1
S2
LXC,2 XAD,2
X2
NORMGAM
VSL* XCHX,2
0,2
S2
VAD*
W +54D,1
STORE HOLDW
DLOAD* DCOMP # CALC MIDDLE 3X9 PARTITION OF W MATRIX
ZI,2
NORM VXSC
S2
OMEGAM2
XCHX,2 LXC,2
S2
X2
XAD,2 VSL*
NORMGAM
0,2
XCHX,2 VAD*
S2
W +108D,1
STORE HOLDW +6
BOFF
DMENFLG # BRANCH IF 6 DIMENSIONAL
FAZB
DLOAD* DCOMP # CALC LOWER 3X9 PARTITION OF W MATRIX
ZI,2
NORM VXSC
# Page 1258
S2
OMEGAM3
XCHX,2 LXC,2
S2
X2
XAD,2 VSL*
NORMGAM
0,2
XCHX,2 VAD*
S2
W +162D,1
STORE HOLDW +12D
FAZB CALL
GRP2PC
EXIT
FAZB1 CA WIXA # START 2ND PHASE OF INCORP2 TO TRANSFER
AD 6DD # TEMP REG TO PERM W MATRIX
TS WIXB
CA ZIXA
AD MINUS2
TS ZIXB
TC INTPRET
LXA,1 SSP
WIXA
S1
6
VLOAD
HOLDW
STORE W +54D,1
VLOAD
HOLDW +6
STORE W +108D,1
BOFF VLOAD
DMENFLG
FAZB5
HOLDW +12D
STORE W +162D,1
FAZB2 TIX,1 GOTO
+2
FAZC # DONE WITH W MATRIX. UPDATE STATE VECTOR
RTB
FAZA
FAZB5 SLOAD DAD
ZIXB
12DD
BHIZ GOTO
FAZC
FAZB2
FAZC CALL
GRP2PC
# Page 1259
VLOAD VAD # START 3RD PHASE OF INCORP2
X789 # 7TH, 8TH, 9TH COMPONENTN OF STATE VECTOR
DELTAX +12D # INCORPORATION FOR X789
STORE TX789
BON RTB
VEHUPFLG
DOCSM
MOVEPLEM
FAZAB BOVB AXT,2
TCDANZIG
0
BOFF AXT,2
MOONTHIS
+2
2
VLOAD VSR*
DELTAX # B27 IF MOON ORBIT, B29 IF EARTH
0 -7,2
VAD BOV
TDELTAV
FAZAB1
STOVL TDELTAV
DELTAX +6 # B5 IF MOON ORBIT, B7 IF EARTH
VSR* VAD
0 -4,2
TNUV
BOV
FAZAB2
STCALL TNUV
FAZAB3
FAZAB1 VLOAD VAD
RCV
DELTAX
STORE RCV
FAZAB2 VLOAD VAD
VCV
DELTAX +6
STORE VCV
SXA,2 CALL
PBODY
RECTIFY
FAZAB3 CALL
GRP2PC
BON RTB
VEHUPFLG
DOCSM1
MOVEALEM
CALL
SVDWN2 # STORE DOWNLINK STATE VECTOR
FAZAB4 CALL
# Page 1260
GRP2PC # PHASE CHANGE
BOFF VLOAD
DMENFLG
FAZAB5 # 6 DIMENSIONAL
TX789 # 9 DIMENSIONAL
STORE X789
FAZAB5 LXA,1 SXA,1
EGRESS
QPRET
EXIT
TC POSTJUMP # EXIT
CADR INTWAKE
DOCSM RTB GOTO
MOVEPCSM
FAZAB
DOCSM1 RTB CALL
MOVEACSM
SVDWN1 # STORE DOWNLINK STATE VECTOR
GOTO
FAZAB4
ZEROD = ZEROVECS
54DD DEC 54
6DD DEC -6
12DD DEC 12
SETLOC MEASINC2
BANK
COUNT* $$/INCOR
NEWZCOMP VLOAD ABVAL
ZI
STOVL NORMZI
ZI +6
ABVAL PUSH
DSU BMN
NORMZI
+3
DLOAD STADR
STORE NORMZI
VLOAD ABVAL
ZI +12D
PUSH DSU
NORMZI
BMN DLOAD
NEWZCMP1
STADR
STCALL NORMZI # LARGEST ABVAL
NEWZCMP1
SETLOC MEASINC3
BANK
# Page 1261
NEWZCMP1 DLOAD SXA,1
NORMZI
NORMZI # SAVE X1
NORM INCR,1
X1
DEC 2
VLOAD VSL*
ZI
0,1
STOVL ZI
ZI +6
VSL*
0,1
STOVL ZI +6
ZI +12D
VSL* SXA,1
0,1
NORMZI +1 # SAVE SHIFT
STORE ZI +12D
LXA,1 XSU,1
NORMGAM
NORMZI +1
XSU,1
NORMZI +1
SXA,1 LXC,1
NORMGAM
NORMZI +1
XAD,1 SETPD
NORMZI
2D
GOTO
INCOR2 -3
NORMZI = 36D

92
MYSUBS.s Normal file
View File

@ -0,0 +1,92 @@
# Copyright: Public domain.
# Filename: MYSUBS.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 999-1001
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images.
# 2009-05-20 RSB Corrections: EBANK= changed from MPAC to KMPAC.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 999
BANK 20
SETLOC MYSUBS
BANK
EBANK= KMPAC
SPCOS1 EQUALS SPCOS
SPSIN1 EQUALS SPSIN
SPCOS2 EQUALS SPCOS
SPSIN2 EQUALS SPSIN
COUNT 21/DAPMS
# ONE AND ONE HALF PRECISION MULTIPLICATION ROUTINE
SMALLMP TS KMPTEMP # A(X+Y)
EXTEND
MP KMPAC +1
TS KMPAC +1 # AY
CAF ZERO
XCH KMPAC
EXTEND
MP KMPTEMP # AX
DAS KMPAC # AX+AY
TC Q
# SUBROUTINE FOR DOUBLE PRECISION ADDITIONS OF ANGLES
# A AND L CONTAIN A DP(1S) ANGLE SCALED BY 180 DEGS TO BE ADDED TO KMPAC.
# RESULT IS PLACED IN KMPAC. TIMING = 6 MCT (22 MCT ON OVERFLOW)
DPADD DAS KMPAC
EXTEND
BZF TSK +1 # NO OVERFLOW
CCS KMPAC
TCF DPADD+ # + OVERFLOW
TCF +2
TCF DPADD- # - OVERFLOW
CCS KMPAC +1
TCF DPADD2+ # UPPER = 0, LOWER +
TCF +2
COM # UPPER = 0, LOWER -
AD POSMAX # LOWER = 0, A = 0
TS KMPAC +1 # CAN NOT OVERFLOW
CA POSMAX # UPPER WAS = 0
TSK TS KMPAC
TC Q
DPADD+ AD NEGMAX # KMPAC GREATER THAN 0
TCF TSK
# Page 1000
DPADD- COM
AD POSMAX # KMPAC LESS THAN 0
TCF TSK
DPADD2+ AD NEGMAX # CAN NOT OVERFLOW
TS KMPAC +1
CA NEGMAX # UPPER WAS = 0
TCF TSK
# Page 1001 (empty page)

949
ORBITAL_INTEGRATION.s Normal file
View File

@ -0,0 +1,949 @@
# Copyright: Public domain.
# Filename: ORBITAL_INTEGRATION.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1334-1354
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images.
# 2009-05-20 RSB Corrections: DAT -> DAD in one place,
# BWM -> BMN, DEFEQCNT -> DIFEQCNT.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1334
# ORBITAL INTEGRATION
# DELETE
BANK 13
SETLOC ORBITAL
BANK
COUNT 11/ORBIT
# DELETE
KEPPREP LXA,2 SETPD
PBODY
0
DLOAD* SQRT # SQRT(MU) (+18 OR +15) 0D PL 2D
MUEARTH,2
PDVL UNIT # PL 8D
RCV
PDDL NORM # NORM R (+29 OR +27 - N1) 2D PL 4D
36D
X1
PDVL
DOT PDDL # F*SQRT(MU) (+7 OR +5) 4D PL 6D
VCV
TAU. # (+28)
DSU NORM
TC
S1
SR1
DDV PDDL
2D
DMP PUSH # FS (+6 +N1-N2) 6D PL 8D
4D
DSQ PDDL # (FS)SQ (+12 +2(N1-N2)) 8D PL 10D
4D
DSQ PDDL* # SSQ/MU (-2 OR +2(N1-N2)) 10D PL 12D
MUEARTH,2
SR3 SR4
PDVL VSQ # PREALIGN MU (+43 OR +37) 12D PL 14D
VCV
DMP BDSU # PL 12D
36D
DDV DMP # PL 10D
2D # -(1/R-ALPHA) (+12 +3N1-2N2)
DMP SL*
DP2/3
0 -3,1 # 10L(1/R-ALPHA) (+13 +2(N1-N2))
XSU,1 DAD # 2(FS)SQ - ETCETERA PL 8D
S1 # X1 = N2-N1
SL* DSU # -FS+2(FS)SQ ETC (+6 +N1-N2) PL 6D
8D,1
DMP DMP
0D
4D
SL* SL*
# Page 1335
8D,1
0,1 # S(-FS(1-2FS)-1/6...) (+17 OR +16)
DAD PDDL # PL 6D
XKEP
DMP SL* # S(+17 OR +16)
0D
1,1
BOVB DAD
TCDANZIG
STADR
STORE XKEPNEW
STQ AXC,1
KEPRTN
DEC 10
BON AXC,1
MOONFLAG
KEPLERN
DEC 2
GOTO
KEPLERN
# Page 1336
FBR3 LXA,1 SSP
DIFEQCNT
S1
DEC -13
DLOAD SR
DT/2
9D
TIX,1 ROUND
+1
PUSH DAD
TC
STODL TAU.
DAD
TET
STCALL TET
KEPPREP
# Page 1337
# AGC ROUTINE TO COMPUTE ACCELERATION COMPONENTS.
ACCOMP LXA,1 LXA,2
PBODY
PBODY
VLOAD
ZEROVEC
STOVL FV
ALPHAV
VSL* VAD
0 -7,2
RCV
STORE BETAV
BOF XCHX,2
DIM0FLAG
+5
DIFEQCNT
STORE VECTAB,2
XCHX,2
DIFEQCNT
VLOAD UNIT
ALPHAV
STODL ALPHAV
36D
STORE ALPHAM
CALL
GAMCOMP
VLOAD SXA,1
BETAV
S2
STODL ALPHAV
BETAM
STORE ALPHAM
BOF DLOAD
MIDFLAG
OBLATE
TET
CALL
LSPOS
AXT,2 LXA,1
2
S2
BOF
MOONFLAG
+3
VCOMP AXT,2
0
STORE BETAV
STOVL RPQV
# Page 1338
2D
STORE RPSV
BOF VLOAD
DIM0FLAG
GETRPSV
ALPHAV
VXSC VSR*
ALPHAM
1,2
VSU XCHX,2
BETAV
DIFEQCNT
STORE VECTAB +6,2
XCHX,2
DIFEQCNT
GETRPSV VLOAD INCR,1
RPQV
4
CLEAR BOF
RPQFLAG
MOONFLAG
+5
VSR VAD
9D
RPSV
STORE RPSV
CALL
GAMCOMP
AXT,2 INCR,1
4
4
VLOAD
RPSV
STCALL BETAV
GAMCOMP
GOTO
OBLATE
GAMCOMP VLOAD VSR1
BETAV
VSQ SETPD
0
NORM ROUND
31D
PDDL NORM # NORMED B SQUARED TO PD LIST
ALPHAM # NORMALIZE (LESS ONE) LENGTH OF ALPHA
32D # SAVING NORM SCALE FACTOR IN X1
SR1 PDVL
BETAV # C(PDL+2) = ALMOST NORMED ALPHA
UNIT
STODL BETAV
# Page 1339
36D
STORE BETAM
NORM BDDV # FORM NORMALIZE QUOTIEN ALPHAM/BETAM
33D
SR1R PUSH # C(PDL+2) = ALMOST NORMALIZE RHO.
DLOAD*
ASCALE,1
STORE S1
XCHX,2 XAD,2
S1
32D
XSU,2 DLOAD
33D
2D
SR* XCHX,2
0 -1,2
S1
PUSH SR1R # RHO/4 TO 4D
PDVL DOT
ALPHAV
BETAV
SL1R BDSU # (RHO/4) - 2(ALPHAV/2.BETAV/2)
PUSH DMPR # TO PDL+6
4
SL1
PUSH DAD
DQUARTER
PUSH SQRT
DMPR PUSH
10D
SL1 DAD
DQUARTER
PDDL DAD # (1/4)+2((Q+1)/4) TO PD+14D
10D
HALFDP
DMPR SL1
8D
DAD DDV
THREE/8
14D
DMPR VXSC
6
BETAV
PDVL VSR3 # (G/2)(C(PD+4))B/2 TO PD+16D
ALPHAV
VAD PUSH # A12 + C(PD+16D) TO PD+16D
DLOAD DMP
0
12D
NORM ROUND
# Page 1340
30D
BDDV DMP*
2
MUEARTH,2
DCOMP VXSC
XCHX,2 XAD,2
S1
S2
XSU,2 XSU,2
30D
31D
BOV # CLEAR OVIND
+1
VSR* XCHX,2
0 -1,2
S1
VAD
FV
STORE FV
BOV RVQ # RETURN IF NO OVERFLOW
+1
GOBAQUE VLOAD ABVAL
TDELTAV
BZE
INT-ABRT
DLOAD SR
H
9D
PUSH BDSU
TC
STODL TAU.
TET
DSU STADR
STCALL TET
KEPPREP
CALL
RECTIFY
SETGO
RPQFLAG
TESTLOOP
INT-ABRT EXIT
TC P00DOO
OCT 00430
# Page 1341
# THE OBLATE ROUTINE COMPUTES THE ACCELERATION DUE TO OBLATENESS. IT USES THE UNIT OF THE VEHICLE
# POSITION VECTOR FOUND IN ALPHAV AND THE DISTANCE TO THE CENTER IN ALPHAM. THIS IS ADDED TO THE SUM OF THE
# DISTURBING ACCELERATIONS IN FV AND THE PROPER DIFEQ STAGE IS CALLED VIA X1.
OBLATE LXA,2 DLOAD
PBODY
ALPHAM
SETPD DSU*
0
RDE,2
BPL BOF # GET URPV
NBRANCH
MOONFLAG
COSPHIE
VLOAD PDDL
ALPHAV
TET
PDDL CALL
3/5
R-TO-RP
STORE URPV
VLOAD VXV
504LM
ZUNIT
VAD VXM
ZUNIT
MMATRIX
UNIT # PROBABLY UNNECESSARY.
COMTERM STORE UZ
DLOAD DMPR
COSPHI/2
3/32
PDDL DSQ # P2/64 TO PD0
COSPHI/2
DMPR DSU
15/16
3/64
PUSH DMPR # P3/32 TO PD2
COSPHI/2
DMP SL1R
7/12
PDDL DMPR
0
2/3
BDSU PUSH # P4/128 TO PD4
DMPR DMPR
COSPHI/2 # BEGIN COMPUTING P5/1024
9/16
PDDL DMPR
2
5/128
# Page 1342
BDSU
DMP*
J4REQ/J3,2
DDV DAD # -3
ALPHAM # (((P5/256)B 2 /R+P4/32) /R+P3/8)ALPHAV
4 # 4 3
DMPR* DDV
2J3RE/J2,2
ALPHAM
DAD VXSC
2
ALPHAV
STODL TVEC
DMP* SR1
J4REQ/J3,2
DDV DAD
ALPHAM
DMPR* SR3
2J3RE/J2,2
DDV DAD
ALPHAM
VXSC VSL1
UZ
BVSU
TVEC
STODL TVEC
ALPHAM
NORM DSQ
X1
DSQ NORM
S1 # 4
PUSH BDDV* # NORMED R TO 0D
J2REQSQ,2
VXSC BOV
TVEC
+1 # (RESET OVERFLOW INDICATOR)
XAD,1 XAD,1
X1
X1
XAD,1 VSL*
S1
0 -22D,1
VAD BOV
FV
GOBAQUE
STCALL FV
QUALITY1
QUALITY3 DSQ # J22 TERM X R**4 IN 2D. SCALED B61
# AS VECTOR.
PUSH DMP # STORE COSPHI**2 SCALED B2 IN 8D.
# Page 1343
5/8 # 5 SCALED B3
PDDL SR2 # PUT 5 COSPHI**2, D5, IN 8D. GET
# COSPHI**2 D2 FROM 8D
DAD BDSU # END UP WITH (1-7 COSPHI**2), B5
8D # ADDING COSPHI**2 B4 SAME AS COSPHI**2
# X 2 D5
D1/32 # 1 SCALED B5
DMP DMP
URPV # X COMPONENT
5/8 # 5 SCALED B3
VXSC VSL5 # AFTER SHIFT, SCALED B5
URPV # VECTOR, B1.
PDDL # VECTOR INTO 8D, 10D, 12D, SCALED B5.
# GET 5 COSPHI**2 OUT OF 8D
DSU DAD
D1/32 # 1 B5
8D # X COMPONENT (SAME AS MULTIPLYING
# BY UNITX)
STODL 8D
URPV # X COMPONENT
DMP DMP
URPV +4 # Z COMPONENT
5/8 # 5 B3 ANSWER B5
SL1 DAD # FROM 12D FOR Z COMPONENT (SL1 GIVES 10
# INSTEAD OF 5 FOR COEFFICIENT)
PDDL NORM # BACK INTO 12D FOR Z COMPONENT
ALPHAM # SCALED B27 FOR MOON
X2
PUSH SLOAD # STORE IN 14D, DESTROYING URPV
# X COMPONENT
E32C31RM
DDV VXSC # IF X2 = 0, DIVISION GIVES B53, VXSC
# out of 8D B5 GIVES B58
VSL* VAD # SHIFT MAKES B61, FOR ADDITION OF
# VECTOR IN 2D
0 -3,2
VSL* V/SC # OPERAND FROM 0D, B108 FOR X1 = 0
0 -27D,1 # FOR X1 = 0, MAKES B88, GIVING B-20
# FOR RESULT.
PDDL PDDL
TET
5/8 # ANY NON-ZERO CONSTANT
LXA,2 CALL # POSITION IN 0D, TIME IN 6D. X2 LEFT
# ALONE.
PBODY
RP-TO-R
VAD BOV # OVERFLOW INDICATOR RESET IN *RP-TO-R*
FV
GOBAQUE
STORE FV
# Page 1344
NBRANCH SLOAD LXA,1
DIFEQCNT
MPAC
DMP CGOTO
-1/12
MPAC
DIFEQTAB
COSPHIE DLOAD
ALPHAV +4
STOVL COSPHI/2
ZUNIT
GOTO
COMTERM
DIFEQTAB CADR DIFEQ+0
CADR DIFEQ+1
CADR DIFEQ+2
TIMESTEP BOF CALL
MIDFLAG
RECTEST # SKIP ORIGIN CHANGE LOGIC
CHKSWTCH
BMN
DOSWITCH
RECTEST VLOAD ABVAL # RECTIFY IF
TDELTAV
BOV
CALLRECT
DSU BPL # 1) EITHER TDELTAV OR TNUV EQUALS OR
3/4 # EXCEEDS 3/4 IN MAGNITUDE
CALLRECT #
DAD SL* # OR
3/4 #
0 -7,2 # 2) ABVAL(TDELTAV) EQUALS OR EXCEEDS
DDV DSU # .01(ABVAL(RCV))
10D
RECRATIO
BPL VLOAD
CALLRECT
TNUV
ABVAL DSU
3/4
BOV
CALLRECT
BMN
INTGRATE
CALLRECT CALL
RECTIFY
INTGRATE VLOAD
TNUV
# Page 1345
STOVL ZV
TDELTAV
STORE YV
CLEAR
JSWITCH
DIFEQ0 VLOAD SSP
YV
DIFEQCNT
0
STODL ALPHAV
DPZERO
STORE H # START H AT ZERO. GOES 0(DELT/2)DELT.
BON GOTO
JSWITCH
DOW..
ACCOMP
CHKSWTCH STQ BOF
ORIGEX
RPQFLAG
RPQOK # MOON POSITION IS AVAILABLE
DLOAD CALL
TET
LUNPOS # GET MOON POSITION
BOF VCOMP
MOONFLAG
+1
STORE RPQV
RPQOK LXA,2 VLOAD # RESTORE X2 AFTER USING LUNPOS
PBODY
TDELTAV # _
VSL* VAD # |RQC|-RSPHERE WHEN OUTSIDE THE SPHERE.
0 -7,2 # _ _ _
RCV # R = RDEVIATION + RCONIC
BOF ABVAL
MOONFLAG
EARSPH
SR2 BDSU # INSIDE
RSPHERE
GOTO
ORIGEX
EARSPH VSU ABVAL # OUTSIDE
RPQV
DSU GOTO
RSPHERE
ORIGEX
DOSWITCH CALL
ORIGCHNG
GOTO
INTGRATE
# Page 1346
ORIGCHNG STQ CALL
ORIGEX
RECTIFY
VLOAD VSL*
RCV
0,2
VSU VSL*
RPQV
2,2
STORE RRECT
STODL RCV
TET
CALL
LUNVEL
BOF VCOMP
MOONFLAG
+1
PDVL VSL*
VCV
0,2
VSU
VSL*
0 +2,2
STORE VRECT
STORE VCV
LXA,2 SXA,2
ORIGEX
QPRET
BON GOTO
MOONFLAG
CLRMOON
SETMOON
# Page 1347
# THE RECTIFY SUBROUTINE IS CALLED BY THE INTEGRATION PROGRAM AND OCCASIONALLY BY THE MEASUREMENT INCORPORATION
# ROUTINES TO ESTABLISH A NEW CONIC.
RECTIFY LXA,2 VLOAD
PBODY
TDELTAV
VSL* VAD
0 -7,2
RCV
STORE RRECT
STOVL RCV
TNUV
VSL* VAD
0 -4,2
VCV
MINIRECT STORE VRECT
STOVL VCV
ZEROVEC
STORE TDELTAV
STODL TNUV
ZEROVEC
STORE TC
STORE XKEP
RVQ
# Page 1348
# THE THREE DIFEQ ROUTINES -- DIFEQ+0, DIFEQ+12, DIFEQ+24 -- ARE ENTERED TO PROCESS THE CONTRIBUTIONS AT THE
# BEGINNING, MIDDLE, AND END OF THE TIMESTEP, RESPECTIVELY. THE UPDATING IS DONE BY THE NYSTROM METHOD.
DIFEQ+0 VLOAD VSR3
FV
STCALL PHIV
DIFEQCOM
DIFEQ+1 VLOAD VSR1
FV
PUSH VAD
PHIV
STOVL PSIV
VSR1 VAD
PHIV
STCALL PHIV
DIFEQCOM
DIFEQ+2 DLOAD DMPR
H
DP2/3
PUSH VXSC
PHIV
VSL1 VAD
ZV
VXSC VAD
H
YV
STOVL YV
FV
VSR3 VAD
PSIV
VXSC VSL1
VAD
ZV
STORE ZV
BOFF CALL
JSWITCH
ENDSTATE
GRP2PC
LXA,2 VLOAD
COLREG
ZV
VSL3 # ADJUST W-POSITION FOR STORAGE
STORE W +54D,2
VLOAD
YV
VSL3 BOV
WMATEND
STORE W,2
CALL
GRP2PC
# Page 1349
LXA,2 SSP
COLREG
S2
0
INCR,2 SXA,2
6
YV
TIX,2 CALL
RELOADSV
GRP2PC
LXA,2 SXA,2
YV
COLREG
NEXTCOL CALL
GRP2PC
LXA,2 VLOAD*
COLREG
W,2
VSR3 # ADJUST W-POSITION FOR INTEGRATION
STORE YV
VLOAD* AXT,1
W +54D,2
0
VSR3 # ADJUST W-VELOCITY FOR INTEGRATION
STCALL ZV
DIFEQ0
ENDSTATE BOV VLOAD
GOBAQUE
ZV
STOVL TNUV
YV
STORE TDELTAV
BON BOFF
MIDAVFLG
CKMID2 # CHECK FOR MID2 BEFORE GOING TO TIMEINC
DIM0FLAG
TESTLOOP
EXIT
TC PHASCHNG
OCT 04022 # PHASE 1
TC UPFLAG # PHASE CHANGE HAS OCCURRED BETWEEN
ADRES REINTFLG # INTSTALL AND INTWAKE
TC INTPRET
SSP
QPRET
AMOVED
BON GOTO
VINTFLAG
# Page 1350
ATOPCSM
ATOPLEM
AMOVED SET SSP
JSWITCH
COLREG
DEC -30
BOFF SSP
D6OR9FLG
NEXTCOL
COLREG
DEC -48
GOTO
NEXTCOL
RELOADSV DLOAD # RELOAD TEMPORARY STATE VECTOR
TDEC # FROM PERMANENT IN CASE OF
STCALL TDEC1
INTEGRV2 # BY STARTING AT INTEGRV2.
DIFEQCOM DLOAD DAD # INCREMENT H AND DIFEQCNT.
DT/2
H
INCR,1 SXA,1
DEC -12
DIFEQCNT # DIFEQCNT SET FOR NEXT ENTRY.
STORE H
VXSC VSR1
FV
VAD VXSC
ZV
H
VAD
YV
STORE ALPHAV
BON GOTO
JSWITCH
DOW..
FBR3
WMATEND CLEAR CLEAR
DIM0FLAG # DON'T INTEGRATE W THIS TIME
ORBWFLAG # INVALIDATE W
CLEAR
RENDWFLG
SET EXIT
STATEFLG # PICK UP STATE VECTOR UPDATE
TC ALARM
OCT 421
TC INTPRET
# Page 1351
GOTO
TESTLOOP # FINISH INTEGRATING STATE VECTOR
# Page 1352
# ORBITAL ROUTINE FOR EXTRAPOLATION OF THE W MATRIX. IT COMPUTES THE SECOND DERIVATIVE OF EACH COLUMN POSITION
# VECTOR OF THE MATRIX AND CALLS THE NYSTROM INTEGRATION ROUTINES TO SOLVE THE DIFFERENTIAL EQUATIONS. THE PROGRAM
# USES A TABLE OF VEHICLE POSITION VECTORS COMPUTED DURING THE INTEGRATION OF THE VEHICLE'S POSITION AND VELOCITY.
DOW.. LXA,2 DLOAD*
PBODY
MUEARTH,2
STCALL BETAM
DOW..1
STORE FV
BOF INCR,1
MIDFLAG
NBRANCH
DEC -6
LXC,2 DLOAD*
PBODY
MUEARTH -2,2
STCALL BETAM
DOW..1
BON VSR6
MOONFLAG
+1
VAD
FV
STCALL FV
NBRANCH
DOW..1 VLOAD VSR4
ALPHAV
PDVL* UNIT
VECTAB,1
PDVL VPROJ
ALPHAV
VXSC VSU
3/4
PDDL NORM
36D
S2
PUSH DSQ
DMP
NORM PDDL
34D
BETAM
SR1 DDV
VXSC
LXA,2 XAD,2
S2
S2
XAD,2 XAD,2
S2
34D
VSL* RVQ
# Page 1353
0 -8D,2
SETLOC ORBITAL1
BANK
3/5 2DEC .6 B-2
THREE/8 2DEC .375
.3D 2DEC .3 B-2
3/64 2DEC 3 B-6
DP1/4 2DEC .25
DQUARTER EQUALS DP1/4
POS1/4 EQUALS DP1/4
3/32 2DEC 3 B-5
15/16 2DEC 15. B-4
3/4 2DEC 3.0 B-2
7/12 2DEC .5833333333
9/16 2DEC 9 B-4
5/128 2DEC 5 B-7
DPZERO EQUALS ZEROVEC
DP2/3 2DEC .6666666667
2/3 EQUALS DP2/3
OCT27 OCT 27
BANK 13
SETLOC ORBITAL2
BANK
# IT IS VITAL THAT THE FOLLOWING CONSTANTS NOT BE SHUFFLED
DEC -11
DEC -2
DEC -9
DEC -6
DEC -2
DEC -2
DEC 0
DEC -12
DEC -9
DEC -4
ASCALE DEC -7
DEC -6
# Page 1354
2DEC* 1.32715445 E16 B-54* # S
2DEC* 4.9027780 E8 B-30* # M
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*
5/8 2DEC 5 B-3
-1/12 2DEC -.1
MUM = MUEARTH -2
RECRATIO 2DEC .01
RSPHERE 2DEC 64373.76 E3 B-29
RDM 2DEC 16093.44 E3 B-27
RDE 2DEC 80467.20 E3 B-29
RATT EQUALS 00
VATT EQUALS 6D
TAT EQUALS 12D
RATT1 EQUALS 14D
VATT1 EQUALS 20D
MU(P) EQUALS 26D
TDEC1 EQUALS 32D
URPV EQUALS 14D
COSPHI/2 EQUALS URPV +4
UZ EQUALS 20D
TVEC EQUALS 26D

1056
P-AXIS_RCS_AUTOPILOT.s Normal file

File diff suppressed because it is too large Load Diff

922
P11.s Normal file
View File

@ -0,0 +1,922 @@
# Copyright: Public domain.
# Filename: P11.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 533-550
# Mod history: 2009-05-13 HG Started adapting from the Colossus249/ file
# of the same name, using Comanche055 page
# images 0533.jpg - 0550.jpg.
# 2009-05-20 RSB Corrections: ERTHALT -> EARTHALT,
# STATSW -> SATSW.
# 2009-05-23 RSB At end of RESCALES, corrected TC 0 to TC Q.
# Added an SBANK= prior to a 2CADR.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 533
# EARTH ORBIT INSERTION MONITOR PROGRAM
# *************************************
#
# PROGRAM DESCRIPTION -P11-
#
# MOD NO. 1
# MOD BY ELIASSEN
#
# FUNCTIONAL DESCRIPTION
#
# P11 IS INITIATED BY
#
# A) GYROCOMPASS PRG P02 WHEN LIFTOFF DISCRETE IS RECEIVED OR
# B) BACKUP THRU VERB 75 ENTER
#
# PROGRAM WILL
# 1. ZERO CMC CLOCK AT LIFTOFF (OR UPON RECEIPT OF BACKUP)
# 2. UPDATE TEPHEM TO TIME CMC CLOCK WAS ZEROED
# 3. INITIATE SERVICER AT PREREAD1
# 4. CHANGE MAJOR MODE TO 11
# 5. CLEAR DSKY IN CASE OF V 75
# 6. STORE LIFTOFF IMU-CDU ANGLES FOR ATT. ERROR DISPLAY
# 7. TERMINATE GYROCOMPASSING __ __
# 8. COMPUTE INITIAL VECTORS RN, VN _ _ _
# 9. COMPUTE REFSMMAT FOR PRELAUNCH ALIGNMENT WHERE U ,U ,U ARE
# _ _ X Y Z
# U =(UNIT(-R) LOCAL VERTICAL AT TIME OF LIFTOFF
# _Z _ _
# U =UNIT(A), A=HOR VECTOR AT LAUNCH AZIMUTH
# _X _ _
# U =U * U
# U Z X
# 10. SET REFSMMAT KNOWN FLAG
# 11. SET AVGEXIT IN SERVICER TO VHHDOT TO
# COMPUTE AND DISPLAY NOUN 62 EVERY 2 SECONDS
#
# R1 V1 -- INERTIAL VELOCITY MAGNITUDE IN FPS
# R2 HDOT -- RATE OF CHANGE OF VEHICLE VEL IN FPS
# R3 H -- VEHICLE ALTITUDE ABOVE PAD IN NM
#
# 12. DISPLAY BODY AXES ATT. ERRORS ON FDAI NEEDLES
#
# A) FROM L.O. TO RPSTART (APPROX. 0 TO +10SECS AFTER L.O.)
# DESIRED ATTITUDE IS AS STORED AT L.O.
# B) FROM RPSTART TO POLYSTOP (APPROX. +10 TO +133SECS AFTER LO)
# DESIRED ATTITUDE IS SPECIFIED BY CMC PITCH AND ROLL
# POLYNOMIALS DURING SATURN ROLLOUT AND PITCHOVER
# Page 534
# THE DISPLAY IS RUN AS LOW PRIORITY JOB APPROX.
# EVERY 1/2 SEC OR LESS AND IS DISABLED UPON OVFLO OF TIME1
#
# SUBROUTINES CALLED
#
# 2PHSCHNG BANKCALL CALCGRA CDUTRIG CLEANDSP DANZIG
# DELAYJOB EARTHR ENDOFJOB FINDVAC IBNKCALL
# INTPRET LALOTORV NEEDLER NEWMODEX PHASCHNG
# POSTJUMP POWRSERS PREREAD1 REGODSPR S11.1
# SERVEXIT TASKOVER TCDANZIG V1STO2S WAITLIST
#
# ASTRONAUT REQUESTS (IF ALTITUDE ABOVE 300,000 FT)
#
# DSKY --
# MONITOR DISPLAY OF TIME TO PERIGEE R1 HOURS
# R2 MINUTES
#
# DSKY --
# MONITOR DISPLAY OF R1 APOGEE ALTITUDE IN NAUTICAL MILES
# R2 PERIGEE ALTITUDE IN NAUTICAL MILES
# R3 TFF IN MINUTES/SECS
#
# IF ASTRONAUT HAS REQUESTED ANY OF THESE DISPLAYS HE MUST
# HIT PROCEED TO RETURN TO NORMAL NOUN 62 DISPLAY.
# NORMAL EXIT MODE
#
# ASTRONAUT VERB 37 ENTER 00 ENTER
#
# ALARM MODES -- NONE
#
# ABORT EXIT MODES --
#
# OUTPUT
#
# TLIFTOFF (DP) TEPHEM (TP)
# REFSMMAT
# DSKY DISPLAY
# FDAI DISPLAY
#
# ERASABLE INITIALIZATION
#
# AZO, AXO, -AYO
# LATITUDE
# PADLONG
# TEPHEM
# PGNCSALT
# POLYNUM THRU POLYNUM +14D
# RPSTART
# POLYSTOP
# FLAGS SET OR RESET
# Page 535
# SET REFSMFLG
# SET DVMON IDLE FLAG
# CLEAR ERADFLAG
#
# DEBRIS
#
# LIFTTEMP
# POLYNUM THRU POLYNUM +7
# SPOLYARG
# BODY1, BODY2, BODY3
# VMAG2, ALTI, HDOT
# CENTRALS, CORE SET, AND VAC AREAS
COUNT 34/P11
BITS5-6 = SUPER011
BANK 42
SETLOC P11ONE
BANK
EBANK= TEPHEM
P11 CA EBANK3
TS EBANK
EXTEND
DCA REP11S # DIRECT RESTARTS TO REP11
DXCH -PHASE3
CS ZERO
ZL
TS LIFTTEMP
DXCH -PHASE5 # INACTIVE GROUP 5, PRELAUNCH PROTECTION
P11+7 EXTEND
DCA REP11SA
DXCH TLIFTOFF
EXTEND
DCA TIME2
DXCH LIFTTEMP # FORE RESTARTS
CA ZERO
ZL
DXCH TIME2
REP11A-2 DXCH TLIFTOFF
REP11A-1 DXCH -PHASE3 # RESET PHASE
REP11A INHINT
EXTEND
DCA TEPHEM +1
DXCH TEPHEM1 +1
CA TEPHEM
# Page 536
XCH TEPHEM1
EXTEND
DCA TLIFTOFF
DAS TEPHEM1 +1
ADS TEPHEM1 # CORRECT FOR OVERFLOW
TC PHASCHNG
OCT 05023
OCT 22000
INHINT
EXTEND
DCA TEPHEM1
DXCH TEPHEM
CA TEPHEM1 +2
XCH TEPHEM +2
CAF EBDVCNT
TS EBANK
EBANK= DVCNTR
TC IBNKCALL
CADR PREREAD1 # ZERO PIPS AND INITIALIZE AVERAGEG
TC PHASCHNG
OCT 05023 # CONTINUE HERE ON RESTART
OCT 22000
CAF .5SEC # START ATT ERROR DISPLAY
TC WAITLIST # IN .5 SEC
EBANK= BODY3
2CADR ATERTASK
TC NEWMODEX # DISPLAY MM 11
MM 11
TC UPFLAG
ADRES NODOP01
CA POWDNCOD # SWITCH TO POWERED FLIGHT DOWNLIST
TS DNLSTCOD
TC BANKCALL
CADR CLEANDSP # CLEAR DSKY IN CASE OF V75
TC 2PHSCHNG
OCT 40514 # PROTECT ATERTASK
OCT 00073
CAF EBQPLACE
# Page 537
TS EBANK
EBANK= QPLACES
CA P11XIT # SET EXIT FROM PROUT IN EARTHR
TS QPLACES
TC INTPRET
VLOAD MXV
THETAN
XSM
VSL1 VAD
ERCOMP
STODL ERCOMP
TLIFTOFF
SSP GOTO
S2
CADR PROUT # RETURN FROM EARTHR
EARTHR +3
MATRXJOB ZL # STORE DP GIMBAL ANGLES FOR ATTITUDE
CA CDUX # ERROR DISPLAY AFTER LIFTOFF
DXCH OGC
ZL
CA CDUY
DXCH IGC
ZL
CA CDUZ
DXCH MGC
TC INTPRET _
VLOAD VSR1 # SCALE OGC B-1
OGC
STORE OGC
SSP # ZERO RTX2
RTX2 # FOR
0 # EARTH
DLOAD PDDL
PGNCSALT # ALTITUDE OF PGNCS
PADLONG # LONGITUDE
PDDL VDEF
LATITUDE # GEODETIC LATITUDE
STODL LAT # LAT,LONG,ALT ARE CONSECUTIVE
HI6ZEROS # TIME = 0
CLEAR CALL
ERADFLAG
LALOTORV # CONVERT TO POSITION VECTOR IN REF. COORDS.
STCALL RN1 # _
GETDOWN # RETURN WITH VECTOR FOR DOWN DIRECTION
VCOMP UNIT
STOVL REFSMMAT +12D # UNITZ = UNIT(GRAV)
RN1
VXV VXSC
# Page 538
UNITW # SCALED AT 1
-ERTHRAT # V = EARTHRATE X R
VSL4 # SCALE TO 2(7) M/CS
STOVL VN1
REFSMMAT +12D
VXV UNIT
UNITW # (REF3 X UNITW) = EAST
PUSH VXV
REFSMMAT +12D # (EAST X REF3) = -SOUTH
UNIT PDDL
LAUNCHAZ # COS(AZ)*SOUTH
COS VXSC
STADR
STODL REFSMMAT # TEMPORARY STORAGE
LAUNCHAZ
SIN VXSC # SIN(AZ)*EAST
VAD UNIT # SIN(AZ)*EAST - COS(AZ)*SOUTH = REF1
REFSMMAT
STORE REFSMMAT
VXV UNIT # (REF1 X REF3) = -REF3
REFSMMAT +12D
VCOMP
STORE REFSMMAT +6
DLOAD DSU
DPHALF # 1/2 REV
LAUNCHAZ
DAD PDDL
AZIMUTH
SATRLRT # SET SATRLRT = -SATRLRT IF
SIGN STADR # (1/2REV -LAVNCHAZ +AZIMUTH) IS NEGATIVE
STORE SATRLRT # FOR ROLL CALC IN FDAI ATT. ERROR DISPLAY
SET EXIT
REFSMFLG # SET REFSMMAT KNOWN FLAG
TC PHASCHNG
OCT 04023
EXTEND
DCA P11SCADR
DXCH AVGEXIT # SET AVGEXIT
CA PRIO31 # 2 SECONDS AT 2(+8)
TS 1/PIPADT
EBANK= RCSFLAGS
CA EBANK6
TS EBANK
INHINT
# Page 539
CS ZERO
TS TBASE5 # RESTART READACCS 2 SECONDS AFTER LIFTOFF
CS TIME1
AD 2SECS # DO READACCS 2 SECONDS AFTER LIFTOFF
CCS A # CHECK TO INSURE DT IS POSITIVE
TCF +3 # TIME POSITIVE
TCF +2 # CANNOT GET HERE
CA ZERO # TIME NEGATIVE -- SET TO 1
AD ONE # RESTORE TIME -- OR MAKE POSITIVE
TC WAITLIST
EBANK= AOG
2CADR READACCS
TC 2PHSCHNG
OCT 00003 # TURN OFF GROUP 3
OCT 00025 # PROTECT NORMLIZE AND READACCS
TC POSTJUMP
CADR NORMLIZE # DO NORMLIZE AND ENDOFJOB
EBANK= TEPHEM
REP11 INHINT
CCS PHASE5
TC ENDOFJOB
CCS LIFTTEMP
TCF +4
TCF +3
TCF +2
TCF P11+7
CS TLIFTOFF
EXTEND
BZMF ENDREP11
CCS TIME2 # ** TIME2 MUST BE NON-ZERO AT LIFTOFF **
TCF REP11A -5 # T2,T1 NOT YET ZEROED, GO AND DO IT
EXTEND # T2,T1 ZEROED, SET TLIFTOFF
DCA LIFTTEMP
TCF REP11A-2
ENDREP11 EXTEND
DCA REP11SA
TCF REP11A-1
#Page 540
REP11S 2OCT 7776600011
REP11SA 2OCT 7776400013
P11XIT GENADR P11OUT
-ERTHRAT 2DEC* -7.292115138 E-7 B18* # - EARTH RATE AT 2(18)
EBANK= BODY3
P11SCADR 2CADR VHHDOT
POWDNCOD EQUALS THREE
EBANK= BODY3
# VHHDOT IS EXECUTED EVERY 2 SECONDS TO DISPLAY ON DSKY
# VI INERTIAL VELOCITY MAGNITUDE
# HDOT RATE OF CHANGE OF ALT ABOVE L PAD RADIUS
# H ALTITUDE ABOVE L PAD RADIUS
VHHDOT TC INTPRET
CALL # LOAD VMAGI, ALTI,
S11.1 # HDOT FOR DISPLAY
EXIT
TC PHASCHNG
OCT 00035
CAF V06N62 # DISPLAY IN R1 R2 R3
TC BANKCALL # VI HDOT H
CADR REGODSP
ATERTASK CAF PRIO1 # ESTABLISH JOB TO DISPLAY ATT ERRORS
TC FINDVAC # COMES HERE AT L.O. + .33 SEC
EBANK= BODY3
2CADR ATERJOB
CS RCSFLAGS # SET BIT3 FOR
MASK BIT3 # NEEDLER
ADS RCSFLAGS # INITIALIZATION PASS
TC IBNKCALL # AND GO
CADR NEEDLER # DO IT
CA BIT1 # SET SW
TS SATSW # FOR DISPLAY
TC TASKOVER
GETDOWN STQ SETPD
INCORPEX
0D
DLOAD
HI6ZEROS
#Page 541
STODL 6D
DPHALF
STCALL 8D
LALOTORV +5
# THIS SECTION PROVIDES ATTITUDE ERROR DISPLAYS TO THE FDAI DURING SONE BOOST
#
# COMPUTE DESIRED PITCH W.R.T. PAD LOCAL VERTICAL AT LIFTOFF
# 2 3 4 5 6
# PITCH = A0+A1T+A2T +A3T +A4T +A5T +A6T
# SCALED TO 32 REVS. -14
# IF TL = TIME IN SECS FROM L.O., THEN T = 100(TL-RPSTART0)2
# WHERE TL GE RPSTART
# TL LE (-POLYSTOP + RPSTART)
# COMPUTE DESIRED ROLL WEHRE ROLL EQUALS ANGLE FROM
# LAUNCHAZ TO -Z(S/C) AS SEEN FROM X(S/C).
# ROLL = LAUNCHAZ-AZIMUTH-.5+SATRLRT*T IN REV
# SATRLRT = RATE OF ROLL IN REV/CENTI-SEC
# T, IN CENTI-SEC, IS DEFINED AS ABOVE, INCLUSIVE OF TIME RESTRICTIONS
#
# FOR SIMPLICITY, LET P = 2*PI*PITCH
# R = 2*PI*ROLL
#
# CONSTRUCT THE TRANSFORMATION MATRIX, TSMV, GIVING DESIRED S/C AXES IN
# TERMS OF SM COORDINATES. LET THE RESULTING ROWS EQUAL THE VECTORS XDC,
# YDC, AND ZDC.
#
# * ( SIN(P) 0 -COS(P) ) (XDC)
# TSMV = (-SIN(R)*COS(P) -COS(R) -SIN(R)*SIN(P)) = (YDC)
# (-COS(R)*COS(P) SIN(R) -COS(R)*SIN(P)) (ZDC)
#
# XDC,YDC,ZDC ARE USED AS INPUT TO CALCGTA FOR THE EXTRACTION OF THE
# EULER SET OF ANGLES WHICH WILL BRING THE SM INTO THE DESIRED
# ORIENTATION. THIS EULER SET, OGC, IGC, AND MGC, MAY BE IDENTIFIED
# AS THE DESIRED CDU ANGLES.
#
# (XDC) (OGC)
# (YDC) ---) CALCGTA ---) (IGC)
# (ZDC) (MGC)
# _
# DEFINE THE VECTOR DELTACDU.
#
# _ (OGC) (CDUX)
# DELTACDU = (IGC) - (CDUY)
# (MGC) (CDUZ)
# _ _ * _
# COMPUTE ATTITUDE ERRORS, A, WHERE A = TGSC*DELTACDU
#
# * (1 SIN(CDUZ) 0 ) THE GIMBAL ANGLES
#Page 542
# TGSC = (0 COS(CDUX)*COS(CDUZ) SIN(CDUX)) = TO SPACECRAFT AXES
# (0 -SIN(CDUX)*COS(CDUZ) COS(CDUX)) CONVERSION MATRIX
# _
# THE ATTITUDE ERRORS, A, ARE STORED ONE HALF SINGLE PRECISION IN
# THE REGISTERS AK, AK1, AK2 AS INPUT TO NEEDLER, THE FDAI ATTITUDE
# ERROR DISPLAY ROUTINE.
ATERJOB CAE FLAGWRD6 # CHECK FLAGWRD6
MASK OCT60000 # BITS 14, 15
EXTEND
BZF +2 # OK -- CONTINUE
TC ENDOFJOB # STAURN STICK ON -- KILL JOB
CAF BIT10 # CHECK IF S/C CONTROL
EXTEND # OF SATURN PANEL
RAND CHAN30 # SWITCH IS ON
EXTEND
BZF STRSAT # IT IS -- GO STEER
CCS SATSW # IT IS NOT -- WAS IT ON LAST CYCLE
TC ATTDISP # NO -- CONTINUE
TC ATRESET # YES -- REINITIALIZE NEEDLER
TC ATRESET # YES -- REINITIALIZE NEEDLER
ATTDISP CS RPSTART # PITCH/ROLL START TIME
AD TIME1
EXTEND
BZMF NOPOLY # IF MINUS THEN ATTITUDE HOLD
TS MPAC # MPAC = TIME1 - RPSTART
TS SPOLYARG # SAVE FOR USE IN ROLL CALCULATION
AD POLYSTOP # NEG PITCHOVER TIME IN CSECS
EXTEND
BZMF +2
TC NOPOLY # GO TO ATTITUDE HOLD
CA TIME2
EXTEND
BZMF +2
TC NOPOLY # GO TO ATTITUDE HOLD
CAE POLYNUM
TS L
CAF COEFPOLY # EVALUATE PITCH POLYNOMIAL
TC POWRSERS # SCALED TO 32 REVOLUTIONS
CA ZERO # RETURN WITH PITCH(32REV)
TS MODE # STORED MPAC, MPAC +1
TC INTPRET
SETPD SL # 32(PITCH(32REV)) = PITCH(REV)
0
5
PUSH # LET P(RAD) = 2*PI*PITCH(REV)
GOTO
ATTDISP1 # AROUND SETLOC
#Page 543
# *
# CONSTRUCT SM TO S/C MATRIX, TSMV
SETLOC P11TWO
BANK # 36 IN COL., 34 IN DISK
COUNT 36/P11
ATTDISP1 COS DCOMP
STODL 14D # -.5*COS(P)
SIN
STODL 10D # .5*SIN(P)
ZEROVECS
STORE 12D # 0
# EVALUATE ROLL = LAUNCHAZ-AZIMUTH-.5+SATRLRT*T
SLOAD DMP
SPOLYARG # TIME1 - RSPSTART, CSECS B-14.
SATRLRT
SL DSU
14D
DPHALF
DAD DSU # ASSUMING X(SM) ALONG LAUNCH AZIMUTH,
LAUNCHAZ # LAUNCHAZ = ANGLE FROM NORTH TO X(SM).
AZIMUTH # AZIMUTH = -ANGLE FROM NORTH TO Z(S/C)
RTB # DETERMINE IF ROLLOUT
RLTST # IS COMPLETED
ATTDISPR PUSH COS # CONTINUE COMPUTING TSMV
PUSH # LET R(RAD) = 2*PI*ROLL(REV)
DMP SL1
14D
STODL 22D # -.5*COS(R)*COS(P)
DCOMP
STORE 18D # -.5*COS(R)
DMP SL1
10D
STODL 26D # -.5*COS(R)*SIN(P)
SIN PUSH
STORE 24D # .5*SIN(R)
DMP SL1
14D
STODL 16D # -.5*SIN(R)*COS(P)
DCOMP
DMP SL1
10D
STOVL 20D # -.5*SIN(R)*SIN(P)
10D
# FROM TSMV FIND THE HALF UNIT VECTORS XDC,YDC,ZDC = INPUT TO CALCGTA
# Page 544
UNIT
STOVL XDC # XDC = .5*UNIT(SIN(P),0,-COS(P))
16D
UNIT
STOVL YDC # YDC = .5*UNIT(-SIN(R)*COS(P),-COS(R),
22D # -SIN(R)*SIN(P))
UNIT
STCALL ZDC # ZDC = .5*UNIT(-COS(R)*COS(P),SIN(R),
CALCGTA # -COS(R)*SIN(P))
# CALL CALCGTA TO COMPUTE DESIRED SM ORIENTATION OGC,IGC, AND MGC
# _ _ _
# FIND DIFFERENCE VECTOR DELTACDU = OGC-CDUX
#
# ENTER HERE IF ATTITUDE HOLD
NOPOLYM VLOAD PUSH # OGC IGC
OGC # CHANGE IGC TO MGC FOR COMPATIBILITY
PUSH CALL # MGC OGC
CDUTRIG # WITH Y,Z,X ORDER OF CDUSPOT
VLOAD RTB # _ DPHI OGC-CDUX , PD4
2 # DELTACDU = DTHETA = IGC-CDUY , 0
V1STO2S # DPSI MGC-CDUZ , 2
STOVL BOOSTEMP
ZEROVECS
STOVL 0
CDUSPOT
RTB RTB
V1STO2S
DELSTOR
STODL 10D
SINCDUZ
DMP SL1
0
DAD SR2 # CHANGE SCALE OF AK TO 2REVS
4
GOTO
ATTDISP2
SETLOC P11ONE
BANK
COUNT 34/P11
ATTDISP2 STODL 16D # 16D, .5(DPHI + DTHETA*SIN(CDUZ))
COSCDUZ
DMP PUSH
0
DMP SL1
COSCDUX
PDDL DMP
# Page 545
SINCDUX
2
DAD SL1
STADR
STODL 17D # 17D, .5(DTHETA*COS(CDUX)*COS(CDUZ)
DMP SL1 # +DPSI*SIN(CDUX))
SINCDUX
PDDL DMP
COSCDUX
2
DSU SL1
STADR
STORE 18D # 18D, .5(-DTHETA*SIN(CDUX)*COS(CDUZ)
TLOAD # +DPSI*COS(CDUX))
16D
STORE AK # STORE ATTITUDE ERRORS IN AK,AK1,AK2
EXIT
CA SATSW
CCS A # CHK TAKEOVER STATUS
TC SATOUT # POS -- DISPLAY ONLY
TC AKLOAD # 0 STORE BIAS
STEERSAT TC INTPRET # NEG STEER L/V
TLOAD TAD
BIASAK
AK
STORE AK # AKS = AKS - STORED BIAS
EXIT
CA AK
TC RESCALES
TS AK
CA AK1
TC RESCALES
TS AK1
CA AK2
TC RESCALES
TS AK2
# DISPLAY ATTITUDE ERRORS ON FDAI VIA NEEDLER
SATOUT TC BANKCALL
CADR NEEDLER
ATERSET CAF OCT31 # DELAY .25 SEC
TC BANKCALL # EXECUTION + DELAY = .56SEC APPROX
CADR DELAYJOB
TC ATERJOB # END OF ATT ERROR DISPLAY CYCLE
AKLOAD CS AK # STORE AKS
TS BIASAK # INTO BIAS
CS AK1 # COMPLEMENTED
TS BIASAK +1
# Page 546
CS AK2
TS BIASAK +2
CS BIT1 # SET SW
TS SATSW # TO STEER
TC STEERSAT # GO STEER
STRSAT CA SATSW # CHECK IF NEDLER
EXTEND # HAS BEEN INITIALIZED
BZMF ATTDISP # YES -- CONTINUE
ATRESET CS RCSFLAGS # NO -- SET
MASK BIT3 # INITIALIZATION SW
ADS RCSFLAGS # FOR NEDLER
TC BANKCALL # AND GO
CADR NEEDLER # DO IT
CAF REVCNT # OCT 6
TC BANKCALL # DELAY JOB
CADR DELAYJOB # 60 MS --WAIT TILL IMUERRCNTR ZEROED
CCS SATSW # CHECK SW STATUS
TC TAKEON # POS STEER INIT.
TC +1 # 0 RETURN TO DISPLAY
CA BIT1 # NEG RETURN TO DISPLAY
TS SATSW # SW = DISPLAY ON
CS BIT9 # DISABLE
EXTEND # SIVB
WAND CHAN12 # TAKEOVER
TC SATOUT # DISPLAY
TAKEON CAF BIT9 # ENABLE
EXTEND # SIVB
WOR CHAN12 # TAKEOVER
CA ZERO # INDICATE NEEDLER
TS SATSW # WAS INITIALIZED
TC SATOUT
S11.1 VLOAD ABVAL
VN
STOVL VMAGI # VI SCALED 2(7) IN METERS/CSEC
RN
UNIT DOT
VN
SL1
STODL HDOT
RPAD
BOF VLOAD
AMOONFLG
EARTHALT
RLS
ABVAL SR2
EARTHALT BDSU
36D
STORE ALTI
RVQ
DELSTOR CA BOOSTEMP
# Page 547
EXTEND # STORE DELTACDU INTO PDL 0,2,4
MSU MPAC
INDEX FIXLOC
TS 0
CA BOOSTEMP +1
EXTEND
MSU MPAC +1
INDEX FIXLOC
TS 2
CA BOOSTEMP +2
EXTEND
MSU MPAC +2
INDEX FIXLOC
TS 4
TCF DANZIG
RLTST CA MPAC # DETERMINE IF ROLLOUT
EXTEND # IS COMPLETED
MP SATRLRT +1
EXTEND
BZMF DANZIG # UNLIKE SIGNS STILL ROLLING
EXTEND # ROLLOUT COMPLETED
DCA MBDYTCTL +2 # ZERO OUT ROLL CONTRIBUTION
DXCH MPAC
TC DANZIG
NOPOLY TC INTPRET # COMES HERE IF
SETPD GOTO # ATTITUDE HOLD
0
NOPOLYM
COEFPOLY ADRES POLYLOC
V06N62 VN 0662
RESCALES EXTEND # RESCALE AK S FOR
MP SATSCALE # NEW HARDWARE
DDOUBL # SCALING FOR
DDOUBL # STEERING
TC Q # SATURN
# SATURN TAKEOVER FUNCTION
# ************************
#
# PROGRAM DESCRIPTION
#
# MOD NUMBER 1
# MOD BY ELIASSEN
#
# FUNCTIONAL DESCRIPTION
#
# DURING THE COASTING PHASE OF SIVB ATTACHED, THE
# ASTRONAUT MAY REQUEST SATURN TAKEOVER THROUGH
# EXTENDED VERB 46 (BITS 13,14 OF DAPDATR1 SET ).
# THE CMC REGARDS RHC COMMANDS AS BODY-AXES RATE
# COMMANDS AND IT TRANSMITS THESE TO SATURN AS DC
#Page 548
# VOLTAGES. THE VALUE OF THE CONSTANT RATE COMMAND
# IS 0.5 DEG/SEC. AN ABSENCE OF RHC ACTIVITY RE-
# SULTS IN A ZERO RATE COMMAND.
#
# THE FDAI ERROR NEEDLES WILL INDICATE THE VALUE
# OF THE RATE COMMAND.
#
# CALLING SEQUENCE
#
# DAPFIG +9D TC POSTJUMP
# CADR SATSTKON
#
# SUBROUTINES CALLED
#
# ENDEXT
# IBNKCALL
# STICKCHK
# NEEDLER
# T5RUPT
# RESUME
#
# ASTRONAUT REQUESTS
#
# ENTRY -- VERB 46 ENTER
# (CONDITION -- BITS 13, 14 OF DAPDATR1 SET)
#
# EXIT -- VERB 48 ENTER (FLASH V06N46)
# VERB 21 ENTER AXXXX ENTER WHERE A=0 OR 1
# VERB 34 ENTER
# VERB 46 ENTER
#
# NORMAL EXIT MODE
#
# VERB 46 ENTER (SEE ASTRONAUT ABOVE)
#
# ALARM OR ABORT EXIT MODES
#
# NONE
#
# OUTPUT
#
# SATURN RATES IN CDUXCMD, CDUYCMD, CDUZCMD
#
# ERASABLE INITIALIZATION
#
# DAPDATR1 (BITS 13, 14 MUST BE SET)
#
# DEBRIS
#
# CENTRALS
#Page 549
# CDUXCMD, CDUYCMD, CDUZCMD
BANK 43
SETLOC EXTVERBS
BANK
COUNT 23/STTKE
SATSTKON EXTEND
DCA 2REDOSAT
INHINT
DXCH T5LOC
CAF POSMAX
TS TIME5
CS FLAGWRD6 # TURN ON BITS 15,14 OF
MASK RELTAB11 # FLAGWRD6
ADS FLAGWRD6 # SATSTICK CONTROL OF T5
TC IBNKCALL # ZERO JET CHANNELS IN 14 MS AND THEN
CADR ZEROJET # LEAVE THE T6 CLOCK DISABLED
RELINT
TC GOPIN # EXIT THUS BECAUSE WE CAME VIA V46
SBANK= PINSUPER # Added RSB 2009
EBANK= BODY3
2REDOSAT 2CADR REDOSAT
SBANK= LOWSUPER
BANK 32
SETLOC P11FOUR
BANK
REDOSAT LXCH BANKRUPT # ALSO COMES HERE FOR RESTARTS
EXTEND
QXCH QRUPT
CS RCSFLAGS # TURN ON BIT3 OF RCSFLAGX
MASK BIT3 # FOR
ADS RCSFLAGS # NEEDLER INITIALIZATION
TC IBNKCALL
CADR NEEDLER # DISABLE IMU ERR COUNTERS ETC.
CAF BIT9 # SIVB
EXTEND # TAKEOVER
WOR CHAN12 # ENABLE
EXTEND # SET UP T5 CYCLE
DCA 2SATSTCK
DXCH T5LOC
CAF 100MST5 # IN 100 MSECS
TS TIME5
TCF RESUME # END OF SATURN STICK INITIALIZATION
# THIS SECTION IS EXECUTED EVERY 100 MSECS.
#Page 550
SATSTICK LXCH BANKRUPT
EXTEND
QXCH QRUPT
CAF 2SATSTCK # SET UP RUPT
TS T5LOC # LO ORDER LOC SET
CAF 100MST5 # 100 MSECS
TS TIME5
CAF STIKBITS
EXTEND
RXOR CHAN31 # CHECK IF MAN ROT BITS SAME
MASK STIKBITS
TC IBNKCALL # SET RATE INDICES
CADR STICKCHK # FOR PITCH YAW AND ROLL
INDEX RMANNDX # SET SATURN RATES
CA SATRATE
TS AK # ROLL
INDEX PMANNDX
CA SATRATE
TS AK1 # PITCH
INDEX YMANNDX
CA SATRATE
TS AK2 # YAW
TC IBNKCALL # FOR SATURN INTERFACE AND FDAI DISPLAY
CADR NEEDLER
TCF RESUME # END OF SATURN STICK CONTROL
STIKBITS OCT 00077
100MST5 DEC 16374
EBANK= BODY3
2SATSTCK 2CADR SATSTICK

245
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

3529
P20-P25.s Normal file

File diff suppressed because it is too large Load Diff

630
P30-P37.s Normal file
View File

@ -0,0 +1,630 @@
# Copyright: Public domain.
# Filename: P30-P37.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 635-648
# Mod history: 2009-05-10 RSB Adapted from the Colossus249/ file
# of the same name, using Comanche055 page
# images.
# 2009-05-20 RSB Corrected BDV -> BOV.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 635
BANK 32
SETLOC P30S1
BANK
EBANK= +MGA
COUNT 35/P34
DISPMGA STQ EXIT # USED IN P30
RGEXIT
TC COMPTGO
DISP45 CAF V16N45
TC BANKCALL
CADR GOFLASHR
TC GOTOP00H
TC END45
TC DISP45
P30PHSI TC PHASCHNG
OCT 14
TCR ENDOFJOB
END45 TC INTPRET
CLEAR GOTO
TIMRFLAG
RGEXIT
COMPTGO EXTEND # USED TO COMPUTE TTOGO
QXCH PHSPRDT6 # ** GROUP 6 TEMPORARY USED, BEWARE **
TC UPFLAG # SET TIMRFLAG
ADRES TIMRFLAG # BIT 11 FLAG 7
CAF ZERO
TS NVWORD1
CAF ONE
TC WAITLIST
EBANK= TIG
2CADR CLOKTASK
TC 2PHSCHNG
OCT 40036 # 6.3SPOT FOR CLOKTASK
OCT 05024 # GROUP 4 CONTINUES HERE
OCT 13000
TC PHSPRDT6
# Page 636
# PROGRAM DESCRIPTION P30 DATE 3-6-67
# MOD. I BY S. ZELDIN: TO ADD P31 AND ADAPT P30 FOR P31 USE. 22DEC67
#
# FUNCTIONAL DESCRIPTION
# P30 (EXTERNAL DELTA-V TARGETING PROGRAM)
# ACCEPTS ASTRONAUT INPUTS OF TIG,DELV(LV) AND COMPUTES, FOR DISPLAY,
# APOGEE, PERIGEE, DELV(MAG), MGA ASSOCIATED WITH DESIRED MANEUVER.
# P31 (GENERAL LAMBERT AIMPOINT GUIDANCE)
# A GROUND RULE FOR P31 IS THE ANGLE BETWEEN THE TARGET VECTOR AND
# POSITION VECTOR AT TIG IS NOT 165-195 DEGREES APART
# BASED ON STORED INPUT OF OFFSET TARGET(B+29) AND DELTA T TRANS, AND
# ASTRONAUT ENTRY OF TIG, P31 COMPUTES REQUIRED VELOCITY FOR MANEUVER
# AND, FOR DISPLAY, APOGEE, PERIGEE, DELV(7AG), +MGA ASSOCIATED WITH
# DESIRED MANEUVER.
#
# THE FOLLOWING SUBROUTINES ARE USED IN P30 AND P31
# S30.1 (P30 ONLY)
# S31.1 (P31 ONLY)
# P30/P31 -- DISPLAYS TIG
# CNTUP30 -- DISPLAYS DELV(LV)
# PARAM30 -- DISPLAYS APOGEE, PERIGEE, DELV(MAG), MGA, TIME FROM TIG,
# MARKS SINCE LAST THRUSTING MANEUVER
#
# CALLING SEQUENCE VIA JOB FROM V37
#
# EXIT VIA V37 OR GOTOP00H
#
# OUTPUT FOR POWERED FLIGHT
# VTIG X
# RTIG X SEE S30.1
# DELVSIN X
# VGDISP
# RTARG X
# TPASS4 X SEE S31.1
# X
COUNT 35/P30
P30 TC P30/P31
TC CNTNUP30
TC DOWNFLAG # RESET UPDATFLG
ADRES UPDATFLG # BIT 7 FLAG 1
TC INTPRET
CALL
S30.1
EXIT
TC PARAM30
TC UPFLAG
# Page 637
ADRES XDELVFLG # SET XDELVFLG BIT 8 FLAG 2
TCF GOTOP00H
P31 TC P30/P31
TC DOWNFLAG
ADRES UPDATFLG # RESET UPDATFLG BIT 7 FLAG 1
TC DOWNFLAG
ADRES NORMSW # RESET NORMSW BIT 10 FLAG 7
TC INTPRET
CALL
S31.1
EXIT
TC CNTNUP30
TC PARAM30
TC DOWNFLAG
ADRES XDELVFLG # BIT 8 FLAG 2.
TCF GOTOP00H
P30/P31 XCH Q
TS P30/31RT
TC UPFLAG
ADRES UPDATFLG # SET UPDATFLG BIT 7 FLAG 1
TC UPFLAG
ADRES TRACKFLG # SET TRACKFLG BIT 5 FLAG 1
CAF V06N33 # T OF IGN
TC BANKCALL
CADR GOFLASHR
TCF GOTOP00H
TC P30/31RT
TCF P30/P31 +4
TC PHASCHNG
OCT 00014
TC ENDOFJOB
CNTNUP30 XCH Q
TS P30/RET
CAF V06N81
TC BANKCALL
CADR GOFLASH
TCF GOTOP00H
TC P30/RET
TCF CNTNUP30 +2
PARAM30 XCH Q
TS P30/31RT
CAF V06N42
TC BANKCALL
CADR GOFLASH
TC GOTOP00H # ON TERMINATION GOTOP00H
TCF REFTEST # ON PROCEED GO DO REFTEST
# Page 638
TCF PARAM30 +2
REFTEST CAF BIT13
MASK STATE +3 # REFSMFLAG
EXTEND
BZF NOTSET # REFSMFLAG =0, THEN BRANCH TO NOTSET
TC INTPRET
VLOAD PUSH
DELVSIN
CALL
GET+MGA
GOTO
FLASHMGA
NOTSET EXTEND
DCS MARSDP
DXCH +MGA # +MGA, +MGA+1 CONTAINS (-00001)
TC INTPRET
FLASHMGA CALL
DISPMGA
EXIT
TC P30/31RT
MARSDP OCT 00000 # (00000) (16440) = (+00001)
OCT 35100
# ( .01 ) DEGREES IN THE LOW ORDER REGISTER
V06N33 VN 0633
V06N42 VN 0642
V16N35 VN 1635
V06N45 VN 0645
# Page 639
# PROGRAM DESCRPTION S30.1 DATE 9NOV66
# MOD NO 1 LOG SECTION P30,P37
# MOD BY RAMA AIYAWAR **
# MOD.2 BY S.ZELDIN -- TO CORRECT MOD.1 FOR COLOSSUS 29DEC67
#
# FUNCTIONAL DESCRIPTION
# BASED ON STORED TARGET PARAMETERS (R OF IGNITION (RTIG), V OF
# IGNITION (VTIG), TIME OF IGNITION (TIG)), DELV(LV), COMPUTE PERIGEE ALTITUDE
# APOGEE ALTITUDE AND DELTA-V REQUIRED IN REF. COORDS. (DELVSIN).
#
# CALLING SEQUENCE
# L CALL
# L+1 S30.1
#
# NORMAL EXIT MODE
# AT L+2 OR CALLING SEQUENCE (GOTO L+2)
#
# SUBROUTINES CALLED
# THISPREC
# 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 VCT. B+7 M/CS
#
# OUTPUT
# RTIG POSITION AT TIG VCT. B+29 M
# VTIG VELOCITY AT TIG VCT. B+7 M
# HAPO APOGEE ALT. DP B+29 M
# HPER PERIGEE ALT. DP B+29 M
# DELVSIN DELVSLV IN REF COORDS VCT. B+7 M/CS
# VGDISP MAG. OF DELVSIN DP B+7 M/CS
#
# DEBRIS QTEMP TEMP.ERASABLE
# QPRET, MPAC
# PUSHLIST
SETLOC P30S1A
BANK
COUNT 35/S30S
S30.1 STQ DLOAD
QTEMP
TIG # TIME IGNITION SCALED AT 2(+28)CS
STCALL TDEC1
THISPREC # ENCKE ROUTINE FOR
VLOAD SXA,2
VATT
RTX2
STOVL VTIG
# Page 640
RATT
STORE RTIG
STORE RACT3
VXV UNIT
VTIG
STCALL UNRM
LOMAT
VLOAD VXM
DELVSLV
0
VSL1 SXA,1
RTX1
STORE DELVSIN
ABVAL
STOVL VGDISP # MAG DELV
RTIG
PDVL VAD
DELVSIN
VTIG
CALL
PERIAPO1
CALL
SHIFTR1
CALL
MAXCHK
STODL HPER # PERIGEE ALT B+29
4D
CALL
SHIFTR1
CALL
MAXCHK
STCALL HAPO # APOGEE ALT B+29
QTEMP
# Page 641
# S31.1 PROGRAM DESCRIPTION 28DEC67
# MOD.1 BY S.ZELDIN
#
# S31.1 COMPUTES DELV IN REF AND LV COORDS,MAG OF DELV,INTERCEPT TIME,
# APOGEE AND PERIGEE ALT FOR REQUIRED MANEUVER
#
# CALLING SEQUENCE
# L CALL
# L+1 S31.1
#
# NORMAL EXIT MODE
# AT L +2 OF CALLING SEQUENCE (GOTO L+2)
#
# SUBROUTINES CALLED
# AGAIN
# PERIAPO1
# SHIFTR1
# MIDGIM
#
# NO ALARM OR ABORT MODES
#
# INPUT
# DELLT4 DP +28
# TIG DP +28
# RTARG VCT +29
#
# OUTPUT
# DELVLVC VCT +7
# VGDISP DP +7
# HAPO DP +29
# HPER DP +29
# TPASS4 DP +28
#
# DEBRIS -- QTEMP
S31.1 STQ DLOAD
QTEMP
TIG
STCALL TDEC1
AGAIN # RETURNS RTX2,RTX1,RATT,VATT,VIPRIME
VLOAD PDVL # DELUEET3
RTIG
VIPRIME
CALL
PERIAPO1
CALL
SHIFTR1
CALL
MAXCHK
STODL HPER # B29
4D
CALL
SHIFTR1
CALL
MAXCHK
STOVL HAPO # B29
# Page 642
DELVEET3
STORE 0
SET CALL
AVFLAG
MIDGIM # GET DELVLVC B7 FOR DISPLAY
ABVAL
STODL VGDISP # B+7 FOR DISPLAY
DELLT4
DAD
TIG
STCALL TPASS4 # FOR S40.1
QTEMP
# Page 643
# SUBROUTINE NAME: DELRSPL (CONTINUATION OF V 82 IN CSM IF P11 ACTIVE)
# TRANSFERRED COMPLETELY FROM SUNDISK, P30S REV 33. 9 SEPT 67.
# MOD NO: 0 MOD BY: ZELDIN DATE:
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 12 MAY 67 ADD UR.RT CALC WHEN BELOW 300K FT
# MOD NO: 2.1 MOD BY: RR BAIRNSFATHER DATE: 5 JULY 67 FIX ERROR ON MOD. 2
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 12 JUL 67 CHANGE SIGN OF DISPLAYED ERROR.
# MOD 4 MOD BY S.ZELDIN DATE: 3 APRIL 68 CHANGE EQUATIONS FOR L/D=.16 WHICH REPLA
#
# FUNCTION: CALCULATE (FOR DISPLAY ON CALL) AN APPROXIMATE MEASURE OF IN-PLANE SPLASH DOWN
# ERROR. IF THE FREE-FALL TRANSFER ANGLE TO 300K FT ABOVE PAD RADIUS IS POSITIVE:
# SPLASH ERROR= -RANGE TO TARGET + FREE-FALL TRANSFER ANGLE + ESTIMATED ENTRY ANGLE.
# THE TARGET LOCATION AT ESTIMATED TIME OF IMPACT IS USED. IF THE FREE-FALL TRANSFER
# ANGLE IS NEGATIVE: SPASH ERROR= -RANGE TO TARGET.
# THE PRESENT TARGET LOCATION IS USED.
#
# CALLING SEQUENCE: CALLED AFTER SR30.1 IF IN CSM AND IF P11 OPERATING (UNDER CONTROL OF V82)
#
# SUBROUTINES CALLED: VGAMCALC, TFF/TRIG, LALOTORV.
#
# EXIT: RETURN DIRECTLY TO V 82 PROG. AT SPLRET
#
# ERASABLE INITIALIZATION: LEFT BY SR30.1 AND V82GON1
#
# OUTPUT: RSP-RREC RANGE IN REVOLUTIONS. DSKY DISPLAY IN N. MI.
#
# DEBRIS: QPRET, PDL0 ... PDL7, PDL10.
# THETA(1)
BANK 32
SETLOC DELRSPL1
BANK
COUNT* $$/P30 # PROGRAMS: P30 EXTERNAL DELTA V
DELRSPL STORE 8D
BPL DSU
CANTDO # GONE PAST 300K FT ALT
1BITDP
BOV CALL
CANTDO # POSMAX INDICATES NO 300K FT SOLUTION.
VGAMCALC # +GAMMA(REV) IN PMAC,V300 MAG(B-7)=PDL 0
PUSH CALL
TFF/TRIG
CALL
AUGEKUGL
PDDL ACOS # T ENTRY PDL 6
CDELF/2
DAD
4
GETARG STOVL THETA(1)
LAT(SPL)
STODL LAT
HI6ZEROS
STODL ALT # ALT=0 = LAT +4
PIPTIME
# Page 644
BON DLOAD
V37FLAG
+2
TSTART82
DSU DAD
8D
CLEAR CALL
ERADFLAG
LALOTORV # R RECOV. IN ALPHAV AND MPAC
UNIT PDVL
RONE
UNIT DOT
SL1 ARCCOS
BDSU # ERROR = THETA EST - THETA TARG
# NEGATIVE NUMBER SIGNIFIES THAT WILL FALL SHORT.
# POSITIVE NUMBER SIGNIFIES THAT WILL OVERSHOOT.
THETA(1)
DELRDONE STCALL RSP-RREC # DOWNRANGE RECOVERY RANGE ERROR /360
INTWAKE0
CALL
SPLRET
CANTDO DLOAD PDDL # INITIALIZE ERASE TO DOT TARGET AND UR
# FOR RANGE ANGLE.
HIDPHALF # TO PDL 0 FOR DEN INDDV.
HI6ZEROS
PUSH # ZERO TO PDL 2 FOR PHI ENTRY
STCALL 8D
GETARG # GO SET RSP-RREC =0
AUGEKUGL VLOAD
X1CON -2
STODL X1 -2
0
DSU BMN
V(21K)
LOOPSET
XSU,1 XCHX,2
S1
X1
XCHX,2 DSU
S1
V(3K)
BMN XCHX,2
LOOPSET
S1
DSU BMN
V(4K)
LOOPSET
XCHX,2 XCHX,2
# Page 645
S1
X1
DSU BMN
V(400)
LOOPSET
SXA,1
S1
LOOPSET INCR,1 GOTO
DEC 1
K1K2LOOP
K2CALC SXA,1
S1
K1K2LOOP DLOAD DSU*
0
V(32K) +1,1
DMP* DAD*
YK1K2 +1,1
CK1K2 +1,1
PDDL TIX,1
2
K2CALC
DSU BDDV
PUSH BOV
MAXPHI
BMN DSU
MAXPHI
MAXPHIC
BPL
MAXPHI
PHICALC DLOAD DSU # PHI ENTRY PDL 4D
0
V(26K)
BPL DLOAD
TGR26
TLESS26
DDV
0
TENT DMP RVQ
4D
TGR26 DLOAD GOTO
TGR26CON
TENT
MAXPHI DLOAD PDDL
MAXPHIC
GOTO
PHICALC
MAXPHIC 2DEC .09259298 # 2000 NM FOR MAXIMUM PHI ENTRY
# Page 646
COUNT* $$/P30
# BELOW
# **** TABLE IS INDEXED. KEEP IN ORDER ***
# Page 641
2DEC 7.07304526 E-4 # 5500
2DEC 3.08641975 E-4 # 2400
2DEC 3.08641975 E-4 # 2400
2DEC -8.8888888 E-3 # -3.2
2DEC 2.7777777 E-3 # 1
CK1K2 2DEC 6.6666666 E-3 # 2.4
2DEC 0 # 0
2DEC* -1.86909989 E-5 B7* # -.443
2DEC 0
2DEC* 1.11639691 E-3 B7* # .001225
2DEC* 9.56911636 E-4 B7* # .00105
YK1K2 2DEC* 2.59733157 E-4 B7* # .000285
V(400) 2DEC 1.2192 B-7
V(28K) 2DEC 85.344 B-7
V(3K) 2DEC 9.144 B-7
V(24K) 2DEC 73.152 B-7
2DEC 85.344 B-7
V(32K) 2DEC 97.536 B-7
V(4K) 2DEC 12.192 B-7
V(21K) 2DEC 64.000 B-7
TLESS26 2DEC* 5.70146688 E7 B-35* # 8660PHI/V
TGR26CON 2DEC 7.2 E5 B-28 # PHI/3
V(26K) 2DEC 79.248 B-7 # 26000
# Page 647
X1CON DEC 10
DEC 8
DEC 6
# **** TABLE IS INDEXED. KEEP IN ORDER ***
# ABOVE
# Page 648
# ***** AVFLAG/P *****
#
# SUBROUTINES USED
#
# UPFLAG
# DOWNFLAG
SETLOC P30SUBS
BANK
EBANK= SUBEXIT
AVFLAGA EXTEND # AVFLAG = CSM
QXCH SUBEXIT
TC DOWNFLAG
ADRES AVFLAG # BIT 5 FLAG 2
CAF EBANK7
TS EBANK
EBANK= ECSTEER
CAF BIT13
TS ECSTEER # SET ECSTEER = 1
CAF EBANK4
TS EBANK
EBANK= SUBEXIT
TC SUBEXIT
AVFLAGP EXTEND # AVFLAG = LEM
QXCH SUBEXIT
TC UPFLAG
ADRES AVFLAG # BIT 5 FLAG 2
TC SUBEXIT
P20FLGON EXTEND
QXCH SUBEXIT
TC UPFLAG
ADRES TRACKFLG
TC UPFLAG
ADRES UPDATFLG
TC SUBEXIT # DP B4

193
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

1408
P32-P33_P72-P73.s Normal file

File diff suppressed because it is too large Load Diff

1394
P32-P35_P72-P75.s Normal file

File diff suppressed because it is too large Load Diff

1739
P34-35_P74-75.s Normal file

File diff suppressed because it is too large Load Diff

1950
P37_P70.s Normal file

File diff suppressed because it is too large Load Diff

2429
P40-P47.s Normal file

File diff suppressed because it is too large Load Diff

2213
P51-P53.s Normal file

File diff suppressed because it is too large Load Diff

1226
P61-P67.s Normal file

File diff suppressed because it is too large Load Diff

434
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

162
P76.s Normal file
View File

@ -0,0 +1,162 @@
# Copyright: Public domain.
# Filename: P76.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: pp 511-513
# Mod history: 2009-05-08 HG Adapting from the Luminary131/ file
# of the same name, using Comanche055 page
# images 0511.jpg - 0513.jpg.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 511
# 1) PROGRAM NAME -- TARGET DELTA V PROGRAM (P76).
# 2) FUNCTIONAL DESCRIPTION -- UPON ENTRY BY ASTRONAUT ACTION, P76 FLASHES DSKY REQUESTS TO THE ASTRONAUT
# TO PROVIDE VIA DSKY (1) THE DELTA V TO BE APPLIED TO THE OTHER VEHICLE STATE VECTOR AND (2) THE
# TIME (TIG) AT WHICH THE OTHER VEHICLE VELOCITY WAS CHANGED BY EXECUTION OF A THRUSTING MANEUVER. THE
# OTHER VEHICLE STATE VECTOR IS INTEGRATED TO TIG AND UPDATED BY THE ADDITION OF DELTA V (DELTA V HAVING
# BEEN TRANSFORMED FROM LV TO REF COSYS). USING INTEGRVS, THE PROGRAM THEN INTEGRATES THE OTHER
# VEHICLE STATE VECTOR TO THE STATE VECTOR OF THIS VEHICLE, THUS INSURING THAT THE W-MATRIX AND BOTH VEHICLE
# STATES CORRESPOND TO THE SAME TIME.
# 3) ERASABLE INIITIALIZATION REQUIRED -- NONE.
# 4) CALLING SEQUENCES AND EXIT MODES -- CALLED BY ASTRONAUT REQUEST THRU DSKY V 37 E 76E.
# EXITS BY TCF ENDOFJOB.
# 5) OUTPUT -- OTHER VEHICLE STATE VECTOR INTEGRATED TO TIG AND INCREMENTED BY DELTA V IN REF COSYS.
# THE PUSHLIST CONTAINS THE MATRIX BY WHICH THE INPUT DELTA V MUST BE POST-MULTIPLIED TO CONVERT FROM LV
# TO REF COSYS.
# 6) DEBRIS -- OTHER VEHICLE STATE VECTOR.
# 7) SUBROUTINES CALLED -- BANKCALL, GOXDSPF, CSMPREC (OR LEMPREC), ATOPCSM (OR ATOPLEM), INTSTALL, INTWAKE, PHASCHNG
# INTPRET, INTEGRVS, AND MINIRECT.
# 8) FLAG USE -- MOONFLAG, CMOONFLG, INTYPFLG, RASFLAG, AND MARKCTR.
BANK 30
SETLOC P76LOC
BANK
COUNT* $$/P76
EBANK= TIG
P76 TC UPFLAG
ADRES TRACKFLG
CAF V06N84 # FLASH LAST DELTA V.
TC BANKCALL # AND WAIT FOR KEYBOARD ACTION.
CADR GOFLASH
TCF ENDP76
TC +2 # PROCEED
TC -5 # STORE DATA AND REPEAT FLASHING
CAF V06N84 +1 # FLASH VERB 06 NOUN 33, DISPLAY LAST TIG,
TC BANKCALL # AND WAIT FOR KEYBOARD ACTION.
CADR GOFLASH
TCF ENDP76
TC +2
TC -5
TC INTPRET # RETURN TO INTERPRETIVE CODE
DLOAD # SET D(MPAC)=TIG IN CSEC B28
TIG
STCALL TDEC1 # SET TDEC1=TIG FOR ORBITAL INTEGRATION
OTHPREC
COMPMAT VLOAD UNIT
RATT
# Page 512
VCOMP # U(-R)
STORE 24D # U(-R) TO 24D
VXV UNIT # U(-R) X V = U(V X R)
VATT
STORE 18D
VXV UNIT # U(V X R) X U(-R) = U((R X V) X R)
24D
STOVL 12D
DELVOV
VXM VSL1 # V(MPAC)=DELTA V IN REFCOSYS
12D
VAD
VATT
STORE 6 # V(PD6)=VATT + DELTA V
CALL # PREVENT WOULD-BE USER OF ORBITAL
INTSTALL # INTEG FROM INTERFERING WITH UPDATING
CALL
P76SUB1
VLOAD VSR*
6
0,2
STOVL VCV
RATT
VSR*
0,2
STODL RCV
TIG
STORE TET
CLEAR DLOAD
INTYPFLG
TETTHIS
INTOTHIS STCALL TDEC1
INTEGRVS
CALL
INTSTALL
CALL
P76SUB1 # SET/CLEAR MOONFLAG
VLOAD
RATT1
STORE RRECT
STODL RCV
TAT
STOVL TET
VATT1
CALL
MINIRECT
EXIT
TC PHASCHNG
OCT 04024
# Page 513
TC UPFLAG
ADRES REINTFLG
TC INTPRET
CALL
ATOPOTH
SSP EXIT
QPRET
OUT
TC BANKCALL # PERMIT USE OF ORBITAL INTEGRATION
CADR INTWAKE1
OUT EXIT
ENDP76 CAF ZERO
TS MARKCTR # CLEAR RR TRACKING MARK COUNTER
TS VHFCNT
CAF NEGONE
TS MRKBUF2 # INVALIDATE MARK BUFFER
TCF GOTOP00H
V06N84 NV 0684
NV 0633
P76SUB1 CLEAR SLOAD
MOONFLAG
X2
BHIZ SET # X2=0...CLEAR MOONFLAG
+2 # =2.....SET MOONFLAG
MOONFLAG
RVQ

406
PHASE_TABLE_MAINTENANCE.s Normal file
View File

@ -0,0 +1,406 @@
# Copyright: Public domain.
# Filename: PHASE_TABLE_MAINTENANCE.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1404-1413
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Colossus249/ file of the same
# name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1404
# SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.
COUNT 02/PHASE
BLOCK 02
SETLOC FFTAG1
BANK
NEWMODEX INDEX Q # UPDATE MODREG. ENTRY FOR MODE IN FIXED.
CAF 0
INCR Q
NEWMODEA TS MODREG # ENTRY FOR MODE IN A.
MMDSPLAY CAF +3 # DISPLAY MAJOR MODE.
PREBJUMP LXCH BBANK # PUTS BBANK IN L
TCF BANKJUMP # PUTS Q INTO A
CADR SETUPDSP
# RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1. OTHERWISE RETURN TO CALLER +2.
CHECKMM INDEX Q
CS 0
AD MODREG
EXTEND
BZF Q+2
TCF Q+1 # NO MATCH
TCQ = Q+2 +1
BANK 14
SETLOC PHASETAB
BANK
COUNT 10/PHASE
SETUPDSP INHINT
DXCH RUPTREG1 # SAVE CALLER'S RETURN 2CADR
CAF PRIO30 # EITHER A TASK OR JOB CAN COME TO
TC NOVAC # NEWMODEX
EBANK= MODREG
2CADR DSPMMJOB
DXCH RUPTREG1
RELINT
DXCH Z # RETURN
DSPMMJOB EQUALS DSPMMJB
BLOCK 02
# Page 1405
SETLOC FFTAG1
BANK
# Page 1406
# PHASCHNG IS THE MAIN WAY OF MAKING PHASE CHANGES FOR RESTARTS. THERE ARE THREE FORMS OF PHASCHNG, KNOWN AS TYPE
# A, TYPE B, AND TYPE C. THEY ARE ALL CALLED AS FOLLOWS, WHERE OCT XXXXX CONTAINS THE PHASE INFORMATION,
# TC PHASCHNG
# OCT XXXXX
# TYPE A IS CONCERNED WITH FIXED PHASE CHANGES, THAT IS, PHASE INFORMATION THAT IS STORED PERMANENTLY. THESE
# OPTIONS ARE, WHERE G STANDS FOR A GROUP AND .X FOR THE PHASE,
# G.0 INACTIVE, WILL NOT PERMIT A GROUP G RESTART
# G.1 WILL CAUSE THE LAST DISPLAY TO BE REACTIVATED, USED MAINLY IN MANNED FLIGHTS
# G.EVEN A DOUBLE TABLE RESTART, CAN CAUSE ANY COMBINATION OF TWO JOBS, TASKS, AND/OR
# LONGCALL TO BE RESTARTED.
# G.ODD NOT .1 A SINGLE TABLE RESTART, CAN CAUSE EITHER A JOB, TASK, OR LONGCALL RESTART.
#
# THIS INFORMATION IS PUT INTO THE OCTAL WORD AFTER TC PHASCHNG AS FOLLOWS
# TL0 00P PPP PPP GGG
# WHERE EACH LETTER OR NUMBER STANTS FOR A BIT. THE G'S STAND FOR THE GROUP, OCTAL 1-7, THE P'S FOR THE PHASE,
# OCTAL 0 - 127. 0'S MUST BE 0. IF ONE WISHES TO HAVE THE TBASE OF GROUP G TO BE SET AT THIS TIME,
# T IS SET TO 1, OTHERWISE IT IS SET TO 0. SIMILARLY IF ONE WISHES TO SET LONGBASE, THEN L IS SET TO 1, OTHERWISE
# IT IS SET TO 0. SOME EXAMLES,
# TC PHASCHNG # THIS WILL CAUSE GROUP 3 TO BE SET TO 0,
# OCT 00003 # MAKING GROUP 3 INACTIVE
#
# TC PHASCHNG # IF A RESTART OCCURS THIS WOULD CAUSE
# OCT 00012 # GROUP 2 TO RESTART THE LAST DISPLAY
#
# TC PHASCHNG # THIS SETS THE TBASE OF GROUP 4 AND IN
# OCT 40064 # CASE OF A RESTART WOULD START UP THE TWO
# # THINGS LOCATED IN THE DOUBLE 4.6 RESTART
# # LOCATION.
#
# TC PHASCHNG # THIS SETS LONGBASE AND UPON A RESTART
# OCT 20135 # CAUSES 5.13 TO BE RESTARTED (SINCE
# # LONGBASE WAS SET THIS SINGLE ENTRY
# # SHOULD BE A LONGCALL)
#
# TC PHASCHNG # SINCE BOTH TBASE4 AND LONGBASE ARE SET,
# OCT 60124 # 4.12 SHOULD CONTAIN BOTH A TASK AND A
# # LONGCALL TO BE RESTARTED
#
# TYPE C PHASCHNG CONTAINS THE VARIABLE TYPE OF PHASCHNG INFORMATION. INSTEAD OF THE INFORMATION BEING IN A
# PERMANENT FORM, ONE STORES THE DESIRED RESTART INFORMATION IN A VARIABLE LOCATION. THE BITS ARE AS FOLLOWS,
# TL0 1AD XXX CJW GGG
# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT. THE G'S STAND FOR THE GROUP, OCTAL 1 - 7. IF THE RESTART IS TO
# BE BY WAITLIST, W IS SET TO 1, IF IT IS A JOB, J IS SET TO 1, IF IT IS A LONGCALL, C IS SET TO 1. ONLY ONE OF
# THESE THREE BITS MAY BE SET. X'S ARE IGNORED, 1 MUST BE 1, AND 0 MUST BE 0. AGAIN T STANDS FOR THE TBASE,
# Page 1407
# AND L FOR LONGBASE. THE BITS A AND D ARE CONCERNED WITH THE VARIABLE INFORMATION. IF D IS SET TO 1, A PRIORITY
# OR DELTA TIME WILL BE READ FROM THE NEXT LOCATION AFTER THE OCTAL INFORMATION., IF THIS IS TO BE INDIRECT, THAT
# IS, THE NAME OF A LOCATION CONTAINING THE INFORMATION (DELTA TIME ONLY), THEN THIS IS GIVEN AS THE -GENADR OF
# THAT LOCATION WHICH CONTAINS THE DELTA TIME. IF THE OLD PRIORITY OR DELTA TIME IS TO BE USED, THAT WHICH IS
# ALREADY IN THE VARIABLE STORAGE, THEN D IS SET TO 0. NEXT THE A BIT IS USED. IF IT IS SET TO 0, THE ADDRESS
# THAT WOULD BE RESTARTED DURING A RESTART IS THE NEXT LOCATION AFTER THE PHASE INFORMATION, THAT IS, EITHER
# (TC PHASCHNG) +2 OR +3, DEPENDING ON WHETHER D HAD BEEN SET OR NOT. IF A IS SET TO 1, THEN THE ADDRESS THAT
# WOULD BE RESTARTED IS THE 2CADR THAT IS READ FROM THE NEXT TWO LOCATION. EXAMPLES,
# AD TC PHASCHNG # THIS WOULD CAUSE LOCATION AD +3 TO BE
# AD+1 OCT 05023 # RESTARTED BY GROUP THREE WITH A PRIORITY
# AD+2 OCT 23000 # OF 23. NOTE UPON RETURNING IT WOULD
# AD+3 # ALSO GO TO AD+3
#
# AD TC PHASCHNG # GROUP 1 WOULD CAUSE CALLCALL TO BE
# AD+1 OCT 27441 # BE STARTED AS A LONGCALL FROM THE TIME
# AD+2 -GENADR DELTIME # STORED IN LONGBASE (LONGBASE WAS SET) BY
# AD+3 2CADR CALLCALL # A DELTATIME STORED IN DELTIME. THE
# AD+4 # BBCON OF THE 2CADR SHOULD CONTAIN THE E
# AD+5 # BANK OF DELTIME. PHASCHNG RETURNS TO
# # LOCATION AD+5
#
# NOTE THAT IF A VARIABLE PRIORITY IS GIVEN FOR A JOB, THE JOB WILL BE RESTARTED AS A NOVAC IF THE PRIORITY IS
# NEGATIVE, AS A FINDVAC IF THE PRIORITY IS POSITIVE.
#
# TYPE B PHASCHNG IS A COMBINATION OF VARIABLE AND FIXED PHASE CHANGES. IT WILL START UP A JOB AS INDICATED
# BELOW AND ALSO START UP ONE FIXED RESTART, THAT IS EITHER AN G.1 OR A G.ODD OR THE FIRST ENTRY OF G.EVEN
# DOUBLE ENTRY. THE BIT INFORMATION IS AS FOLLOW,
# TL1 DAP PPP PPP GGG
# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT. THE G'S STAND FOR THE GROUP, OCTAL 1 - 7, THE P'S FOR THE FIXED
# PHASE INFORMATION, OCTAL 0 - 127. 1 MUST BE 1. AND AGAIN T STANDS FOR THE TBASE AND L FOR LONGBASE. D THIS
# TIME STANDS ONLY FOR PRIORITY SINCE THIS WILL BE CONSIDERED A JOB, AND IT MUST BE GIVEN DIRECTLY IF GIVEN.
# AGAIN A STANDS FOR THE ADDRESS OF THE LOCATION TO BE RESTARTED, 1 IF THE 2CADR IS GIVEN, OR 0 IF IT IS TO BE
# THE NEXT LOCATION. (THE RETURN LOCATION OF PHASCHNG) EXAMPLES,
# AD TC PHASCHNG # TBASE IS SET AND A RESTART CAUSE GROUP 3
# AD+1 OCT 56043 # TO START THE JOB AJOBAJOB WITH PRIORITY
# AD+2 OCT 31000 # 31 AND THE FIRST ENTRY OF 3.4SPOT (WE CAN
# AD+3 2CADR AJOBAJOB # ASSUME IT IS A TASK SINCE WE SET TBASE3)
# AD+4 # UPON RETURN FROM PHASCHNG CONTROL WOULD
# AD+5 # GO TO AD+5
#
# AD TC PHASCHNG # UPON A RESTART THE LAST DISPLAY WOULD BE
# AD+1 OCT 10015 # RESTARTED AND A JOB WITH THE PREVIOUSLY
# AD+2 # STORED PRIORITY WOULD BE BEGUN AT AD+2
# # BY MEANS OF GROUP 5
# Page 1408
# THE NOVAC-FINDVAC CHOICE FOR JOBS HOLDS HERE ALSO -- NEGATIVE PRIORITY CAUSES A NOVAC CALL, POSITIVE A FINDVAC.
# SUMMARY OF BITS:
# TYPE A TL0 00P PPP PPP GGG
# TYPE B TL1 DAP PPP PPP GGG
# TYPE C TL0 1AD XXX CJW GGG
# Page 1409
# 2PHSCHNG IS USED WHEN ONE WISHES TO START UP A GROUP OR CHANGE A GROUP WHILE UNDER THE CONTROL OF A DIFFERENT
# GROUP. FOR EXAMPLE, CHANGE THE PHASE OF GROUP 3 WHILE THE PORTION OF THE PROGRAM IS UNDER GROUP 5. ALL 2PHSCHNG
# CALLS ARE MADE IN THE FOLLOWING MANNER,
# TC 2PHSCHNG
# OCT XXXXX
# OCT YYYYY
# WHERE OCT XXXXX MUST BE OF TYPE A AND OCT YYYYY MAY BE OF EITHER TYPE A OR TYPE B OR TYPE C. THERE IS ONE
# DIFFERENCE --- NOTE: IF LONGBASE IS TO BE SET THIS INFORMATION IS GIVEN IN THE OCT YYYYY INFORMATION, IT WILL
# BE DISREGARDED IF GIVEN WITH THE OCT XXXXX INFORMATION. A COUPLE OF EXAMPLES MAY HELP,
# AD TC 2PHACHNG # SET TBASE3 AND IF A RESTART OCCURS START
# AD+1 OCT 40083 # THE TWO ENTRIES IN 3.8 TABLE LOCATION
# AD+2 OCT 05025 # THIS IS OF TYPE C, SET THE JOB TO BE
# AD+3 OCT 18000 # TO BE LOCATION AD+4, WITH A PRIORITY 18,
# AD+4 # FOR GROUP 5 PHASE INFORMATION.
COUNT 02/PHASE
2PHSCHNG INHINT # THE ENTRY FOR A DOUBLE PHASE CHANGE
NDX Q
CA 0
INCR Q
TS TEMPP2
MASK OCT7
DOUBLE
TS TEMPG2
CA TEMPP2
MASK OCT17770 # NEED ONLY 1770, BUT WHY GET A NEW CONST.
EXTEND
MP BIT12
XCH TEMPP2
MASK BIT15
TS TEMPSW2 # INDICATES WHETHER TO SET TBASE OR NOT
TCF PHASCHNG +3
PHASCHNG INHINT
CA ONE # INDICATES CAME FROM A PHASCHNG ENTRY
TS TEMPSW2
NDX Q
CA 0
INCR Q
TS TEMPSW
# Page 1410
EXTEND
DCA ADRPCHN2 # OFF TO SWITCHED BANK
DTCB
EBANK= LST1
ADRPCHN2 2CADR PHSCHNG2
ONEORTWO LXCH TEMPBBCN
LXCH BBANK
LXCH TEMPBBCN
MASK OCT14000 # SEE WHAT KIND OF PHASE CHANGE IT IS
CCS A
TCF CHECKB # IT IS OF TYPE `B'.
CA TEMPP
MASK BIT7
CCS A # SHALL WE USE THE OLD PRIORITY
TCF GETPRIO # NO GET A NEW PRIORITY (OR DELTA T)
OLDPRIO NDX TEMPG # USE THE OLD PRIORITY (OR DELTA T)
CA PHSPRDT1 -2
TS TEMPPR
CON1 CA TEMPP # SEE IF A 2CADR IS GIVEN
MASK BIT8
CCS A
TCF GETNEWNM
CA Q
TS TEMPNM
CA BB
EXTEND # PICK UP USER'S SUPERBANK
ROR SUPERBNK
TS TEMPBB
TOCON2 CA CON2ADR # BACK TO SWITCHED BANK
LXCH TEMPBBCN
DTCB
CON2ADR GENADR CON2
GETPRIO NDX Q # DON'T CARE IF DIRECT OR INDIRECT
CA 0 # LEAVE THAT DECISION TO RESTARTS
INCR Q # OBTAIN RETURN ADDRESS
TCF CON1 -1
GETNEWNM EXTEND
# Page 1411
INDEX Q
DCA 0
DXCH TEMPNM
CA TWO
ADS Q # OBTAIN RETURN ADDRESS
TCF TOCON2
OCT14000 EQUALS PRIO14
TEMPG EQUALS ITEMP1
TEMPP EQUALS ITEMP2
TEMPNM EQUALS ITEMP3
TEMPBB EQUALS ITEMP4
TEMPSW EQUALS ITEMP5
TEMPSW2 EQUALS ITEMP6
TEMPPR EQUALS RUPTREG1
TEMPG2 EQUALS RUPTREG2
TEMPP2 EQUALS RUPTREG3
TEMPBBCN EQUALS RUPTREG4
BB EQUALS BBANK
BANK 14
SETLOC PHASETAB
BANK
EBANK= PHSNAME1
COUNT 10/PHASE
PHSCHNG2 LXCH TEMPBBCN
CA TEMPSW
MASK OCT7
DOUBLE
TS TEMPG
CA TEMPSW
MASK OCT17770
EXTEND
MP BIT12
TS TEMPP
CA TEMPSW
MASK OCT60000
XCH TEMPSW
MASK OCT14000
CCS A
TCF ONEORTWO
# Page 1412
CA TEMPP # START STORING THE PHASE INFORMATION
NDX TEMPG
TS PHASE1 -2
BELOW1 CCS TEMPSW2 # IS IT A PHASCHNG OR A 2PHSCHNG
TCF BELOW2 # IT'S A PHASCHNG
TCF +1 # IT'S A 2PHSCHNG
CS TEMPP2
LXCH TEMPP2
NDX TEMPG2
DXCH -PHASE1 -2
CCS TEMPSW2
NOOP # CAN'T GET HERE
TCF BELOW2
CS TIME1
NDX TEMPG2
TS TBASE1 -2
BELOW2 CCS TEMPSW # SEE IF WE SHOULD SET TBASE OR LONGBASE
TCF BELOW3 # SET LONGBASE ONLY
TCF BELOW4 # SET NEITHER
CS TIME1 # SET TBASE TO BEGIN WITH
NDX TEMPG
TS TBASE1 -2
CA TEMPSW # SHALL WE NOW SET LONGBASE
AD BIT14COM
CCS A
NOOP # ***** CAN'T GET HERE *****
BIT14COM OCT 17777 # ***** CAN'T GET HERE *****
TCF BELOW4 # NO WE NEED ONLY SET TBASE
BELOW3 EXTEND # SET LONGBASE
DCA TIME2
DXCH LONGBASE
BELOW4 CS TEMPP # AND STORE THE FINAL PART OF THE PHASE
NDX TEMPG
TS -PHASE1 -2
CA Q
LXCH TEMPBBCN
RELINT
DTCB
CON2 LXCH TEMPBBCN
# Page 1413
CA TEMPP
NDX TEMPG
TS PHASE1 -2
CA TEMPPR
NDX TEMPG
TS PHSPRDT1 -2
EXTEND
DCA TEMPNM
NDX TEMPG
DXCH PHSNAME1 -2
TCF BELOW1
BLOCK 02
SETLOC FFTAG1
BANK
COUNT 02/PHASE
CHECKB MASK BIT12 # SINCE THIS IS OF TYPE B, THIS BIT SHOULD
CCS A # BE HERE IF WE ARE TO GET A NEW PRIORITY
TCF GETPRIO # IT IS, SO GET NEW PRIORITY
TCF OLDPRIO # IT ISN'T, USE THE OLD PRIORITY.

File diff suppressed because it is too large Load Diff

867
PINBALL_NOUN_TABLES.s Normal file
View File

@ -0,0 +1,867 @@
# Copyright: Public domain.
# Filename: PINBALL_NOUN_TABLES.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 268-284
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-18 FB Transcription Batch 3 Assignment.
# 2009-05-23 RSB In NNTYPTAB, corrected former 13 SPARE.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 268
# THE FOLLOWING REFERS TO THE NOUN TABLES
#
# COMPONENT CODE NUMBER INTERPRETATION
#
# 00000 1 COMPONENT
# 00001 2 COMPONENT
# 00010 3 COMPONENT
# X1XXX BIT 4 = 1. DECIMAL ONLY
# 1XXXX BIT 5 = 1. NO LOAD
#
# END OF COMPONENT CODE NUMBERS
#
# SF ROUTINE CODE NUMBER INTERPRETATION
#
# 00000 OCTAL ONLY
# 00001 STRAIGHT FRACTIONAL
# 00010 CDU DEGREES (XXX.XX)
# 00011 ARITHMETIC SF
# 00100 ARITH DP1 OUT (MULT BY 2EXP14 AT END) IN (STRAIGHT)
# 00101 ARITH DP2 OUT (STRAIGHT) IN (SL 7 AT END)
# 00110 Y OPTICS DEGREES (XX.XXX MAX 89.999)
# 00111 ARITH DP3 OUT (SL 7 AT END) IN (STRAIGHT
# 01000 WHOLE HOURS IN R1, WHOLE MINUES (MOD 60) IN R2,
# SECONDS (MOD 60) 0XX.XX IN R3. *** ALARMS IF USED WITH OCTAL
# 01001 MINUTES (MOD 60) IN D1D2, D3 BLANK, SECONDS (MOD 60) IN D4D5
# LIMITS TO 59B59 IF MAG EXCEEDS THIS VALUE.
# ALARMS IF USED WITH OCTAL ******** IN (ALARM)
# 01010 ARITH DP4 OUT (STRAIGHT) IN (SL 3 AT END)
# 01011 ARITH1 SF OUT (MULT BY 2EXP14 AT END) IN (STRAIGHT)
# 01100 2 INTEGERS IN D1D2, D4D5, D3 BLANK.
# ALARMS IF USED WITH OCTAL ******** IN (ALARM)
# 01101 DP STRAIGHT FRACTIONAL
#
# END OF SF ROUTINE CODE NUMBERS
# SF CONSTANT CODE NUMBER INTERPRETATION
#
# 00000 WHOLE USE ARITH
# 00000 DP TIME SEC (XXX.XX SEC) USE ARITHDP1
# 00001 SPARE
# 00010 CDU DEGREES USE CDU DEGREES
# 00010 Y OPTICS DEGREES USE Y OPTICS DEGREES
# 00011 DP DEGREES (90) XX.XXX DEG USE ARITHDP3
# 00100 DP DEGREES (360) XXX.XX DEG USE ARITHDP4
# 00101 DEGREES (180) XXX.XX DEG USE ARITH
# 00110 WEIGHT2 (XXXXX. LBS) USE ARITH1
# 00111 POSITION5 (XXX.XX NAUTICAL MILES)
# USE ARITHDP3
# 01000 POSITION4 (XXXX.X NAUTICAL MILES)
# Page 269
# USE ARITHDP3
# 01001 VELOCITY2 (XXXXX. FT/SEC) USE ARITHDP4
# 01010 VELOCITY3 (XXXX.X FT/SEC) USE ARITHDP3
# 01011 ELEVATION DEGREES (89.999 MAX) USE ARITH
# 01100 TRIM DEGREES (XXX.XX DEG) USE ARITH
# 01101 INERTIA (XXXXXBB. SLUG FT FT) USE ARITH
# 01101 THRUST MOMENT (XXXXXBB. FT LBS) USE ARITH
# 01110 VELOCITY/2VS (XXXXX. FT/SEC) USE ARITHDP4
# 01111 POSITION6 (XXXX.X NAUT MI) USE ARITHDP3
# 10000 DRAG ACCELERATION (XXX.XX) USE ARITHDP2
# 10001 POSITION8 (XXXX.X NAUT MI) USE ARITHDP?
# 10010 POSITION9 (XXX.XX NAUT MI) USE ARITHDP4
# 10011 VELOCITY4 (XXXX.X FT/SEC) USE ARITHDP2
#
# END OF SF CONSTANT CODE NUMBERS
# FOR GREATER THAN SINGLE PRECISION SCALES, PUT ADDRESS IN MAJOR PART INTO
# NOUN TABLES.
# OCTAL LOADS PLACE +0 INTO MAJOR PART, DATA INTO MINOR PART.
# OCTAL DISPLAYS SHOW MINOR PART ONLY.
# TO GET AT BOTH MAJOR AND MINOR PARTS (IN OCTAL), USE NOUN 01.
# A NOUN MAY BE DECLARED "DECIMAL ONLY" BY MAKING BIT4=1 OF ITS COMPONENT
# CODE NUMBER. IF THIS NOUN IS USED WITH ANY OCTAL DISPLAY VERB, OR IF
# DATA IS LOADED IN OCTAL, IT ALARMS.
# IN LOADING AN "HOURS, MINUTES, SECONDS" NOUN, ALL 3 WORDS MUST BE
# LOADED, OR ALARM.
# ALARM IF AN ATTEMPT IS MADE TO LOAD "SPLIT MINUTES/SECONDS" (MMBSS).
# THIS IS USED FOR DISPLAY ONLY.
# Page 270
# THE FOLLOWING ROUTINES ARE FOR READING THE NOUN TABLES AND THE SF TABLES
# (WHICH ARE IN A SEPARATE BANK FROM THE REST OF PINBALL). THESE READING
# ROUTINES ARE IN THE SAME BANK AS THE TABLES. THEY ARE CALLED BY DXCH Z.
# LODNNTAB LOADS NNADTEM WTIH THE NNADTAB ENTRY, NNTYPTEM WITH THE
# NNTYPTAB ENTRY. IF THE NOUN IS MIXED, IDADITEM IS LOADED WITH THE FIRST
# IDADDTAB ENTRY, IDAD2TEM THE SECOND IDADDTAB ENTRY, IDAD3TEM THE THIRD
# IDADDTAB ENTRY, RUTMXTEM WITH THE RUTMXTAB ENTRY. MIXBR IS SET FOR
# MIXED OR NORMAL NOUN.
BANK 06
SETLOC PINBALL3
BANK
COUNT 42/NOUNS
LODNNTAB DXCH IDAD2TEM # SAVE RETURN INFO IN IDAD2TEM, IDAD3TEM.
INDEX NOUNREG
CAF NNADTAB
TS NNADTEM
INDEX NOUNREG
CAF NNTYPTAB
TS NNTYPTEM
CS NOUNREG
AD MIXCON
EXTEND
BZMF LODMIXNN # NOUN NUMBER G/E FIRST MIXED NOUN
CAF ONE # NOUN NUMBER L/ FIRST MIXED NOUN
TS MIXBR # NORMAL. +1 INTO MIXBR
TC LODNLV
LODMIXNN CAF TWO # MIXED. +2 INTO MIXBR.
TS MIXBR
INDEX NOUNREG
CAF RUTMXTAB -40D # FIRST MIXED NOUN = 40.
TS RUTMXTEM
CAF LOW10
MASK NNADTEM
TS Q # TEMP
INDEX A
CAF IDADDTAB
TS IDAD1TEM # LOAD IDAD1TEM WITH FIRST IDADDTAB ENTRY
EXTEND
INDEX Q # LOAD IDAD2TEM WITH 2ND IDADDTAB ENTRY
DCA IDADDTAB +1 # LOAD IDAD3TEM WITH 3RD IDADDTAB ENTRY.
LODNLV DXCH IDAD2TEM # PUT RETURN INFO INTO A, L.
DXCH Z
MIXCON = OCT50 # FIRST MIXED NOUN =40. (DEC 40)
# GTSFOUT LOADS SFTEMP1, SFTEMP2 WTIH THE DP SFOUTAB ENTRIES.
# Page 271
GTSFOUT DXCH SFTEMP1 # 2X (SFCONUM) ARRIVES IN SFTEMP1.
EXTEND
INDEX A
DCA SFOUTAB
SFCOM DXCH SFTEMP1
DXCH Z
# GTSFIN LOADS SFTEMP1, SFTEMP2 WITH THE DP SFINTAB INTRIES.
GTSFIN DXCH SFTEMP1 # 2X (SFCONUM) ARIVES IN SFTEMP1.
EXTEND
INDEX A
DCA SFINTAB
TCF SFCOM
# NN NORMAL NOUNS
NNADTAB OCT 00000 # 00 NOT IN USE
OCT 40000 # 01 SPECIFY MACHINE ADDRESS (FRACTIONAL)
OCT 40000 # 02 SPECIFY MACHINE ADDRESS (WHOLE)
OCT 40000 # 03 SPECIFY MACHINE ADDRESS (DEGREES)
OCT 0 # 04 SPARE
ECADR DSPTEM1 # 05 ANGULAR ERROR/DIFFERENCE
ECADR OPTION1 # 06 OPTION CODE
ECADR XREG # 07 ECADR OF WORD TO BE MODIFIED
# ONES FOR BITS TO BE MODIFIED
# 1 TO SET OR 0 TO RESET SELECTED BITS
ECADR ALMCADR # 08 ALARM DATA
ECADR FAILREG # 09 ALARM CODES
OCT 77776 # 10 CHANNEL TO BE SPECIFIED
ECADR TCSI # 11 TIG OF CSI (HRS,MIN,SEC)
ECADR OPTIONX # 12 OPTION CODE
# (USED BY EXTENDED VERBS ONLY)
ECADR TCDH # 13 TIG OF CDH (HRS,MIN,SEC)
OCT 0 # 14 SPARE
OCT 77777 # 15 INCREMENT MACHINE ADDRESS
ECADR DSPTEMX # 16 TIME OF EVENT (HRS,MIN,SEC)
ECADR CPHIX # 17 ASTRONAUT TOTAL ATTITUDE
ECADR THETAD # 18 AUTO MANEUVER BALL ANGLES
ECADR THETAD # 19 BYPASS ATTITUDE TRIM MANEUVER
ECADR CDUX # 20 ICDU ANGLES
ECADR PIPAX # 21 PIPAS
ECADR THETAD # 22 NEW ICDU ANGLES
OCT 00000 # 23 SPARE
ECADR DSPTEM2 +1 # 24 DELTA TIME FOR AGC CLOCK (HRS,MIN,SEC)
ECADR DSPTEM1 # 25 CHECKLIST
# (USED WTIH PLEASE PERFORM ONLY)
ECADR DSPTEM1 # 26 PRIO/DELAY, ADRES, BBCON
ECADR SMODE # 27 SELF TEST ON/OFF SWITCH
# Page 272
OCT 0 # 28 SPARE
ECADR DSPTEM1 # 29 XSM LAUNCH AZIMUTH
ECADR DSPTEM1 # 30 TARGET CODES
ECADR DSPTEM1 # 31 TIME OF LANDING SITE (HRS,MIN,SEC)
ECADR -TPER # 32 TIME TO PERIGEE (HRS,MIN,SEC)
ECADR TIG # 33 TIME OF IGNITION (HRS,MIN,SEC)
ECADR DSPTEM1 # 34 TIME OF EVENT (HRS,MIN,SEC)
ECADR TTOGO # 35 TIME TO GO TO EVENT (HRS,MIN,SEC)
ECADR TIME2 # 36 TIME OF AGC CLOCK (HRS,MIN,SEC)
ECADR TTPI # 37 TIG OF TPI (HRS,MIN,SEC)
ECADR TET # 38 TIME OF STATE VECTOR
ECADR T3TOT4 # 39 DELTA TIME TO TRANSFER (HRS,MIN,SEC)
# END OF NNADTAB FOR NORMAL NOUNS
# NN MIXED NOUNS
OCT 64000 # 40 TIME TO IGNITION/CUTOFF
# VG
# DELTA V (ACCUMULATED)
OCT 02003 # 41 TARGET AZIMUTH
# ELEVATION
OCT 24006 # 42 APOGEE
# PERIGEE
# DELTA V (REQUIRED)
OCT 24011 # 43 LATITUDE
# LONGITUDE
# ALTITUDE
OCT 64014 # 44 APOGEE
# PERIGEE
# TFF
OCT 64017 # 45 MARKS (VHF - OPTIC)
# TTI OF NEXT BURN
# MGA
OCT 02022 # 46 AUTOPILOT CONFIGURATION
OCT 22025 # 47 THIS VEHICLE WEIGHT
# OTHER VEHICLE WEIGHT
OCT 22030 # 48 PITCH TRIM
# YAW TRIM
OCT 24033 # 49 DELTA R
# DELTA V
# VHF OR OPTICS CODE
OCT 64036 # 50 SPLASH ERROR
# PERIGEE
# TFF
OCT 22041 # 51 S-BAND ANTENNA PITCH
# YAW
OCT 00044 # 52 CENTRAL ANGLE OF ACTIVE VEHICLE
OCT 24047 # 53 RANGE
# RANGE RATE
# PHI
# Page 273
OCT 24052 # 54 RANGE
# RANGE RATE
# THETA
OCT 24055 # 55 PERIGEE CODE
# ELEVATION ANGLE
# CENTRAL ANGLE
OCT 22060 # 56 REENTRY ANGLE,
# DELTA V
OCT 20063 # 57 DELTA R
OCT 24066 # 58 PERIGEE ALT
# DELTA V TPI
# DELTA V TPF
OCT 24071 # 59 DELTA VELOCITY LOS
OCT 24074 # 60 GMAX
# VPRED
# GAMMA EI
OCT 24077 # 61 IMPACT LATITUDE
# IMPACT LONGITUDE
# HEADS UP/DOWN
OCT 24102 # 62 INERTIAL VEL MAG (V1)
# ALT RATE CHANGE (HDOT)
# ALT ABOVE PAD RADIUS (H)
OCT 64105 # 63 RANGE 297,431 TO SPLASH (RTGO)
# PREDICTED INERT VEL (VIO)
# TIME TO GO TO 297,431 (TTE)
OCT 24110 # 64 DRAG ACCELERATION
# INERTIAL VELOCITY (VI)
# RANGE TO SPLASH
OCT 24113 # 65 SAMPLED AGC TIME (HRS,MIN,SEC)
# (FETCHED IN INTERRUPT)
OCT 24116 # 66 COMMAND BANK ANGLE (BETA)
# CROSS RANGE ERROR
# DOWN RANGE ERROR
OCT 24121 # 67 RANGE TO TARGET
# PRESENT LATITUDE
# PRESENT LONGITUDE
OCT 24124 # 68 COMMAND BANK ANGLE (BETA)
# INERTIAL VELOCITY (VI)
# ALT RATE CHANGE (RDOT)
OCT 24127 # 69 BETA
# DL
# VL
OCT 04132 # 70 STAR CODE
# LANDMARK DATA
# HORIZON DATA
OCT 04135 # 71 STAR CODE
# LANDMARK DATA
# HORIZON DATA
OCT 24140 # 72 DELT ANG
# DELT ALT
# Page 274
# SEARCH OPTION
OCT 04143 # 73 ALTITUDE
# VELOCITY
# FLIGHT PATH ANGLE
OCT 04146 # 74 COMMAND BANK ANGLE (BETA)
# INERTIAL VELOCITY (VI)
# DRAG ACCELERATION
OCT 64151 # 75 DELTA ALTITUDE CDH
# DELTA TIME (CDH-CSI OR TPI-CDH)
# DELTA TIME (TPI-CDH OR TPI-NOMTPI)
OCT 0 # 76 SPARE
OCT 0 # 77 SPARE
OCT 0 # 78 SPARE
OCT 0 # 79 SPARE
OCT 64170 # 80 TIME TO IGNITION/CUTOFF
# VG
# DELTA V (ACCUMULATED)
OCT 24173 # 81 DELTA V (LV)
OCT 24176 # 82 DELTA V (LV)
OCT 24201 # 83 DELTA V (BODY)
OCT 24204 # 84 DELTA V (OTHER VEHICLE)
OCT 24207 # 85 VG (BODY)
OCT 24212 # 86 DELTA V (LV)
OCT 02215 # 87 MARK DATA SHAFT
# TRUNION
OCT 24220 # 88 HALF UNIT SUN OR PLANET VECTOR
OCT 24223 # 89 LANDMARK LATITUDE
# LONGITUDE/2
# ALTITUDE
OCT 24226 # 90 Y
# Y DOT
# PSI
OCT 02231 # 91 OCDU ANGLES SHAFT
# TRUNION
OCT 02234 # 92 NEW OPTICS ANGLES SHAFT
# TRUNION
OCT 04237 # 93 DELTA GYRO ANGLES
OCT 02242 # 94 NEW OPTICS ANGLES SHAFT
# TRUNNION
OCT 04245 # 95 PREFERRED ATTITUDE ICDU ANGLES
OCT 04250 # 96 +X-AXIS ATTITUDE ICDU ANGLES
OCT 04253 # 97 SYSTEM TEST INPUTS
OCT 04256 # 98 SYSTEM TEST RESULTS
OCT 24261 # 99 RMS IN POSITION
# RMS IN VELOCITY
# RMS OPTION
# END OF NNADTAB FOR MIXED NOUNS
# NN NORMAL NOUNS
# Page 275
NNTYPTAB OCT 00000 # 00 NOT IN USE
OCT 04040 # 01 3COMP FRACTIONAL
OCT 04140 # 02 3COMP WHOLE
OCT 04102 # 03 3COMP CDU DEGREES
OCT 0 # 04 SPARE
OCT 00504 # 05 1COMP DPDEG(360)
OCT 02000 # 06 2COMP OCTAL ONLY
OCT 04000 # 07 3COMP OCTAL ONLY
OCT 04000 # 08 3COMP OCTAL ONLY
OCT 04000 # 09 3COMP OCTAL ONLY
OCT 00000 # 10 1COMP OCTAL ONLY
OCT 24400 # 11 3COMP HMS (DEC ONLY)
OCT 02000 # 12 2COMP OCTAL ONLY
OCT 24400 # 13 3COMP HMS (DEC ONLY)
OCT 0 # 14 SPARE
OCT 00000 # 15 1COMP OCTAL ONLY
OCT 24400 # 16 3COMP HMS (DEC ONLY)
OCT 04102 # 17 3COMP CDU DEG
OCT 04102 # 18 3COMP CDU DEG
OCT 04102 # 19 3COMP CDU DEG
OCT 04102 # 20 3COMP CDU DEGREES
OCT 04140 # 21 3COMP WHOLE
OCT 04102 # 22 3COMP CDU DEGREES
OCT 00000 # 23 SPARE
OCT 24400 # 24 3COMP HMS (DEC ONLY)
OCT 04140 # 25 3COMP WHOLE
OCT 04000 # 26 3COMP OCTAL ONLY
OCT 00140 # 27 1COMP WHILE
OCT 00000 # 28 SPARE
OCT 20102 # 29 1COMP CDU DEG (DEC ONLY)
OCT 04140 # 30 3COMP WHOLE
OCT 24400 # 31 3COMP HMS (DEC ONLY)
OCT 24400 # 32 3COMP HMS (DEC ONLY)
OCT 24400 # 33 3COMP HMS (DEC ONLY)
OCT 24400 # 34 3COMP HMS (DEC ONLY)
OCT 24400 # 35 3COMP HMS (DEC ONLY)
OCT 24400 # 36 3COMP HMS (DEC ONLY)
OCT 24400 # 37 3COMP HMS (DEC ONLY)
OCT 24400 # 38 3COMP HMS (DEC ONLY)
OCT 24400 # 39 3COMP HMS (DEC ONLY)
# END OF NNTYPTAB FOR NORMAL NOUNS
# NN MIXED NOUNS
OCT 24500 # 40 3COMP MIN/SEC, VEL3, VEL3
# (NO LOAD, DEC ONLY)
OCT 00542 # 41 2COMP CDU DEG, ELEV DEG
OCT 24410 # 42 3COMP POS4, POS4, VEL3
# (DEC ONLY)
OCT 20204 # 43 3COMP DPDEG(360), DPDEG(360) POS4
# Page 276
# (DEC ONLY)
OCT 00410 # 44 3COMP POS4, POS4, MIN/SEC
# (NO LOAD, DEC ONLY)
OCT 10000 # 45 3COMP 2INT, MIN/SEC, DPDEG(360)
# (NO LOAD, DEC ONLY)
OCT 00000 # 46 2COMP OCTAL ONLY FOR EACH
OCT 00306 # 47 2COMP WEIGHT2 FOR EACH
# (DEC ONLY)
OCT 00614 # 48 2COMP TRIM DEG, TRIM DEG
# (DEC ONLY)
OCT 00510 # 49 3COMP POS4, VEL3, WHOLE
# (DEC ONLY)
OCT 00417 # 50 3COMP POS6, POS4, MIN/SEC
# (NO LOAD, DEC ONLY)
OCT 00204 # 51 2COMP DPDEG(360), DPDEG(360)
# (DEC ONLY)
OCT 00004 # 52 1COMP DPDEG(360)
OCT 10507 # 53 3COMP POS5, VEL3, DPDEG(360)
# (DEC ONLY)
OCT 10507 # 54 3COMP POS5, VEL3, DPDEG(360)
# (DEC ONLY)
OCT 10200 # 55 3COMP WHOLE, DPDEG(360), DPDEG(360)
# (DEC ONLY)
OCT 00444 # 56 2COMP DPDEG(360), VEL2
# (DEC ONLY)
OCT 00010 # 57 1COMP POS4
# (DEC ONLY)
OCT 24510 # 58 3COMP POS4, VEL3, VEL3
# (DEC ONLY)
OCT 24512 # 59 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 10440 # 60 3COMP WHOLE, VEL2, DPDEG(360)
# (DEC ONLY)
OCT 00204 # 61 3COMP DPDEG(360), DPDEG(360), WHOLE
# (DEC ONLY)
OCT 20451 # 62 3COMP VEL2, VEL2, POS4
# (DEC ONLY)
OCT 00457 # 63 3COMP POS6, VEL2, MIN/SEC
# (NO LOAD, DEC ONLY)
OCT 36460 # 64 3COMP DRAG ACCEL, VEL2, POS6
# (DEC ONLY)
OCT 00000 # 65 3COMP HMS (DEC ONLY)
OCT 37044 # 66 3COMP DPDEG(360), POS8, POS6
# (DEC ONLY)
OCT 10217 # 67 3COMP POS6, DPDEG(360), DPDEG(360)
# (DEC ONLY)
OCT 34444 # 68 3COMP DPDEG(360), VEL2, VEL/2VS
# (DEC ONLY)
OCT 35004 # 69 3COMP DPDEG(360), DRAG ACCEL, VEL/2VS
# (DEC ONLY)
# Page 277
OCT 00000 # 70 3COMP OCTAL ONLY FOR EACH
OCT 0 # 71 3COMP OCTAL ONLY FOR EACH
OCT 00404 # 72 3COMP DPDEG(360), POS4, WHOLE
# (DEC ONLY)
OCT 10450 # 73 3COMP POS4, VEL2, DPDEG(360)
OCT 40444 # 74 3COMP DPDEG(360), VEL2, DRAG ACCEL
OCT 00010 # 75 3COMP POS4, MIN/SEC, MIN/SEC
# # (NO LOAD, DEC ONLY)
OCT 0 # 76 SPARE
OCT 0 # 77 SPARE
OCT 0 # 78 SPARE
OCT 0 # 79 SPARE
OCT 22440 # 80 3COMP MIN/SEC, VEL2, VEL2
# (NO LOAD, DEC ONLY)
OCT 24512 # 81 3COMP VEL3 FOR EACH
# (NO LOAD, DEC ONLY)
OCT 24512 # 82 3COMP VEL3 FOR EACH
# (NO LOAD, DEC ONLY)
OCT 24512 # 83 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 24512 # 84 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 24512 # 85 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 22451 # 86 3COMP VEL2 FOR EACH
# (DEC ONLY)
# (DEC ONLY)
OCT 00102 # 87 2COMP CDU DEG, Y OPTICS DEG
OCT 0 # 88 3COMP FRAC FOR EACH
# (DEC ONLY)
OCT 16143 # 89 3COMP DPDEG(90), DPDEG(90), POS5
# (DEC ONLY)
OCT 10507 # 90 3COMP POS5, VEL3, DEPDEG(360)
# (DEC ONLY)
OCT 00102 # 91 2COMP CDUDEG, YOPTICS DEG
OCT 00102 # 92 2COMP CDUDEG, YOPTICS DEG
OCT 06143 # 93 3COMP DPDEG(90) FOR EACH
OCT 00102 # 94 2COMP CDUDEG, YOPTICS DEG
OCT 04102 # 95 3COMP CDU DEG FOR EACH
OCT 04102 # 96 3COMP CDU DEG FOR EACH
OCT 00000 # 97 3COMP WHOLE FOR EACH
OCT 00000 # 98 3COMP WHOLE, FRAC, WHOLE
OCT 01162 # 99 3COMP POS9, VEL4, WHOLE
# (DEC ONLY)
# END OF NNTYPTAB FOR MIXED NOUNS
SFINTAB OCT 00006 # WHOLE, DP TIME (SEC)
OCT 03240
OCT 00000 # SPARE
OCT 00000
# Page 278
OCT 00000 # CDU DEGREES, Y OPTICS DEGREES
OCT 00000 # (SFCONS IN DEGINSF, OPTDEGIN)
OCT 10707 # DP DEGREES (90)
OCT 03435 # UPPED BY 1
OCT 13070 # DP DEGREES (360) (POINT BETWN BITS 11-12)
OCT 34345 # UPPED BY 1
OCT 00005 # DEGREES (180)
OCT 21616
OCT 26113 # WEIGHT2
OCT 31713
OCT 00070 # POSITION5
OCT 20460
OCT 01065 # POSITION4
OCT 05740
OCT 11414 # VELOCITY2 (POINT BETWN BITS 11-12)
OCT 31463
OCT 07475 # VELOCITY3
OCT 16051
OCT 00001 # ELEVATION DEGREES
OCT 03434
OCT 00002 # TRIM DEGREES
OCT 22245
OCT 00014 # INERTIA, THRUST MOMENT
OCT 35607
OCT 07606 # VELOCITY/2VS
OCT 06300
OCT 16631 # POSITION 6
OCT 11307
OCT 12000 # DRAG ACCELERATION (POINT BETWN BITS 7-8)
OCT 00000
OCT 27176 # POSITION 8
OCT 14235
2DEC 30480 B-19 # POSITION 9
2DEC 30.48 B-7 # VELOCITY4
# END OF SFINTAB
SFOUTAB OCT 05174 # WHOLE, DP TIME (SEC)
OCT 13261
OCT 00000 # SPARE
OCT 00000
OCT 00000 # CDU DEGREES, Y OPTICS DEGREES
OCT 00000 # (SFCONS IN DEGOUTSF, OPTDEGOUT)
OCT 00714 # DP DEGREES (90) (POINT BETWN BITS 7-8)
OCT 31463
OCT 13412 # DP DEGREES (360)
OCT 07534
OCT 05605 # DEGREES (180)
# Page 279
OCT 03656
OCT 00001 # WEIGHT2
OCT 16170
OCT 00441 # POSITION5
OCT 34306
OCT 07176 # POSITION4
OCT 21603
OCT 15340 # VELOCITY2
OCT 15340
OCT 01031 # VELOCITY3 (POINT BETWN BITS 7-8)
OCT 21032
OCT 34631 # ELEVATION DETREES
OCT 23146
OCT 14340 # TRIM DEGREES
OCT 24145
OCT 02363 # INERTIA, THRUST MOMENT
OCT 03721
OCT 20373 # VELOCITY/ZVS
OCT 02122
OCT 00424 # POSITION 6 (POINT BETWN BITS 7-8)
OCT 30446
OCT 00631 # DRAG ACCELERATION
OCT 23146
OCT 00260 # POSITION 8
OCT 06213
2DEC 17.2010499 B-7 # POSITION 9
2DEC .032808399 # VELOCITY4
# END OF SFOUTAB
# NN SF CONSTANT SF ROUTINE
IDADDTAB ECADR TTOGO # 40 MIN/SEC M/S
ECADR VGDISP # 40 VEL3 DP3
ECADR DVTOTAL # 40 VEL3 DP3
ECADR DSPTEM1 # 41 CDU DEG CDU
ECADR DSPTEM1 +1 # 41 ELEV DEG ARTH
OCT 0 # 41 SPARE COMPONENT
ECADR HAPO # 42 POS4 DP3
ECADR HPER # 42 POS4 DP3
ECADR VGDISP # 42 VEL3 DP3
ECADR LAT # 43 DPDEG(360) DP4
ECADR LONG # 43 DPDEG(360 DP4
ECADR ALT # 43 POS4 DP3
ECADR HAPOX # 44 POS4 DP3
ECADR HPERX # 44 POS4 DP3
ECADR TFF # 44 MIN/SEC M/S
ECADR VHFCNT # 45 2INT 2INT
# Page 280
ECADR TTOGO # 45 MIN/SEC M/S
ECADR +MGA # 45 DPDEG(360) DP4
ECADR DAPDATR1 # 46 OCTAL ONLY OCT
ECADR DAPDATR2 # 46 OCATAL ONLY OCT
OCT 0 # 46 SPARE COMPONENT
ECADR CSMMASS # 47 WEIGHT2 ARTH1
ECADR LEMMASS # 47 WEIGHT2 ARTH1
OCT 00000 # 47 SPARE COMPONENT
ECADR PACTOFF # 48 TRIM DEG2 ARTH
ECADR YACTOFF # 48 TRIM DEG2 ARTH
OCT 00000 # 48 SPARE COMPONENT
ECADR N49DISP # 49 POS4 DP3
ECADR N49DISP +2 # 49 VEL3 DP3
ECADR N49DISP +4 # 49 WHOLE ARTH
ECADR RSP-RREC # 50 POS6 DP3
ECADR HPERX # 50 POS4 DP3
ECADR TFF # 50 MIN/SEC M/S
ECADR RHOSB # 51 DPDEG(360)
ECADR GAMMASB # 51 DPDEG(360) DP4
OCT 0 # 51 SPARE COMPONENT
ECADR ACTCENT # 52 DPDEG(360) DP4
OCT 00000 # 52 SPARE COMPONENT
OCT 00000 # 52 SPARE COMPONENT
ECADR RANGE # 53 POS5 DP1
ECADR RRATE # 53 VEL3 DP3
ECADR RTHETA # 53 DPDEG(360) DP4
ECADR RANGE # 54 POS5 DP1
ECADR RRATE # 54 VEL3 DP3
ECADR RTHETA # 54 DPDEG(360) DP4
ECADR NN1 # 55 WHOLE ARTH
ECADR ELEV # 55 DPDEG(360) DP4
ECADR CENTANG # 55 DPDEG(360) DP4
ECADR RTEGAM2D # 56 DPDEG(360) DP4
ECADR RTEDVD # 56 VEL2 DP4
OCT 0 # 56 SPARE COMPONENT
ECADR DELTAR # 57 POS4 DP3
OCT 0 # 57 SPARE COMPONENT
OCT 0 # 57 SPARE COMPONENT
ECADR POSTTPI # 58 POS4 DP3
ECADR DELVTPI # 58 VEL3 DP3
ECADR DELVTPF # 58 VEL3 DP3
ECADR DVLOS # 59 VEL3 DP3
ECADR DVLOS +2 # 59 VEL3 DP3
ECADR DVLOS +4 # 59 VEL3 DP3
ECADR GMAX # 60 WHOLE ARTH
ECADR VPRED # 60 VEL2 DP4
ECADR GAMMAEI # 60 DPDEG(360) DP4
ECADR LAT(SPL) # 61 DPDEG(360) DP4
ECADR LNG(SPL) # 61 DPDEG(360) DP4
ECADR HEADSUP # 61 WHOLE ARTH
# Page 281
ECADR VMAGI # 62 VEL2 DP4
ECADR HDOT # 62 VEL2 DP4
ECADR ALTI # 62 POS4 DP3
ECADR RTGO # 63 POS6 DP3
ECADR VIO # 63 VEL2 DP4
ECADR TTE # 63 MIN/SEC M/S
ECADR D # 64 DRAG ACCEL DP2
ECADR VMAGI # 64 VEL2 DP4
ECADR RTGON64 # 64 POS6 DP3
ECADR SAMPTIME # 65 HMS (MIXED ONLY TO KEEP CODE 65) HMS
ECADR SAMPTIME # 65 HMS HMS
ECADR SAMPTIME # 65 HMS HMS
ECADR ROLLC # 66 DPDEG(360) DP4
ECADR XRNGERR # 66 POS8 DP3
ECADR DNRNGERR # 66 POS6 DP3
ECADR RTGON67 # 67 POS6 DP3
ECADR LAT # 67 DPDEG(360) DP4
ECADR LONG # 67 DPDEG(360) DP4
ECADR ROLLC # 68 DPDEG(360) DP4
ECADR VMAGI # 68 VEL2 DP4
ECADR RDOT # 68 VEL/2VS DP4
ECADR ROLLC # 69 DPDEG(360) DP4
ECADR Q7 # 69 DRAG ACCEL DP2
ECADR VL # 69 VEL/2VS DP4
ECADR STARCODE # 70 OCTAL ONLY OCT
ECADR LANDMARK # 70 OCTAL ONLY OCT
ECADR HORIZON # 70 OCTAL ONLY OCT
ECADR STARCODE # 71 OCTAL ONLY OCT
ECADR LANDMARK # 71 OCTAL ONLY OCT
ECADR HORIZON # 71 OCTAL ONLY OCT
ECADR THETZERO # 72 DPDEG(360) DP4
ECADR DELHITE # 72 POS4 DP3
ECADR OPTION2 # 72 WHOLE ARTH
ECADR P21ALT # 73 POS4 DP3
ECADR P21VEL # 73 VEL2 DP4
ECADR P21GAM # 73 DPDEG(360) DP4
ECADR ROLLC # 74 DPDEG(360) DP4
ECADR VMAGI # 74 VEL 2 DP4
ECADR D # 74 DRAG ACCEL DP2
ECADR DIFFALT # 75 POS4 DP3
ECADR T1TOT2 # 75 MIN/SEC M/S
ECADR T2TOT3 # 75 MIN/SEC M/S
OCT 0 # 76 SPARE
OCT 0 # 76 SPARE
OCT 0 # 76 SPARE
OCT 0 # 77 SPARE
OCT 0 # 77 SPARE
OCT 0 # 77 SPARE
OCT 0 # 78 SPARE
OCT 0 # 78 SPARE
# Page 282
OCT 0 # 78 SPARE
OCT 0 # 79 SPARE
OCT 0 # 79 SPARE
OCT 0 # 79 SPARE
ECADR TTOGO # 80 MIN/SEC M/S
ECADR VGDISP # 80 VEL2 DP4
ECADR DVTOTAL # 80 VEL2 DP4
ECADR DELVLVC # 81 VEL3 DP3
ECADR DELVLVC +2 # 81 VEL3 DP3
ECADR DELVLVC +4 # 81 VEL3 DP3
ECADR DELVLVC # 82 VEL3 DP3
ECADR DELVLVC +2 # 82 VEL3 DP3
ECADR DELVLVC +4 # 82 VEL3 DP3
ECADR DELVIMU # 83 VEL3 DP3
ECADR DELVIMU +2 # 83 VEL3 DP3
ECADR DELVIMU +4 # 83 VEL3 DP3
ECADR DELVOV # 84 VEL3 DP3
ECADR DELVOV +2 # 84 VEL3 DP3
ECADR DELVOV +4 # 84 VEL3 DP3
ECADR VGBODY # 85 VEL3 DP3
ECADR VGBODY +2 # 85 VEL3 DP3
ECADR VGBODY +4 # 85 VEL3 DP3
ECADR DELVLVC # 86 VEL3 DP3
ECADR DELVLVC +2 # 86 VEL3 DP3
ECADR DELVLVC +4 # 86 VEL3 DP3
ECADR MRKBUF1 +3 # 87 CDU DEG CDU
ECADR MRKBUF1 +5 # 87 Y OPTICS DEG YOPT
OCT 0 # 87 SPARE COMPONENT
ECADR STARSAV3 # 88 DPFRAC DPFRAC
ECADR STARSAV3 +2 # 88 DPFRAC DPFRAC
ECADR STARSAV3 +4 # 88 DPFRAC DPFRAC
ECADR LANDLAT # 89 DPDEG(90) DP3
ECADR LANDLONG # 89 DPDEG(90) DP3
ECADR LANDALT # 89 POS5 DP1
ECADR RANGE # 90 POS5 DP1
ECADR RRATE # 90 VEL3 DP3
ECADR RTHETA # 90 DPDEG(360) DP4
ECADR CDUS # 91 CDU DEG CDU
ECADR CDUT # 91 Y OPTICS DEG YOPT
OCT 0 # 91 SPARE COMPONENT
ECADR SAC # 92 CDU DEG CDU
ECADR PAC # 92 Y OPTICS DEG YOPT
OCT 0 # 92 SPARE COMPONENT
ECADR OGC # 93 DPDEG(90) DP3
ECADR OGC +2 # 93 DPDEG(90) DP3
ECADR OGC +4 # 93 DPDEG(90) DP3
ECADR MRKBUF1 +3 # 94 CDU DEG CDU
ECADR MRKBUF1 +5 # 94 Y OPTICS DEG YOPT
OCT 00000 # 94 SPARE
ECADR PRAXIS # 95 CDU DEG CDU
# Page 283
ECADR PRAXIS +1 # 95 CDU DEG CDU
ECADR PRAXIS +2 # 95 CDU DEG CDU
ECADR CPHIX # 96 CDU DEG CDU
ECADR CPHIX +1 # 96 CDU DEG CDU
ECADR CPHIX +2 # 96 CDU DEG CDU
ECADR DSPTEM1 # 97 WHOLE ARTH
ECADR DSPTEM1 +1 # 97 WHOLE ARTH
ECADR DSPTEM1 +2 # 97 WHOLE ARTH
ECADR DSPTEM2 # 98 WHOLE ARTH
ECADR DSPTEM2 +1 # 98 FRAC FRAC
ECADR DSPTEM2 +2 # 98 WHOLE ARTH
ECADR WWPOS # 99 POS9 DP3
ECADR WWVEL # 99 VEL4 DP2
ECADR WWOPT # 99 WHOLE ARTH
# END OF IDADDTAB
# NN SF ROUTINES
RUTMXTAB OCT 16351 # 40 M/S, DP3, DP3
OCT 00142 # 41 CDU, ARTH
OCT 16347 # 42 DP3, DP3, DP3
OCT 16512 # 43 DP4, DP4, DP3
OCT 22347 # 44 DP3, DP3, M/S
OCT 24454 # 45 2INT, M/S, DP4
OCT 00000 # 46 OCT, OCT
OCT 00553 # 47 ARITH1, ARITH1
OCT 00143 # 48 ARTH, ARTH
OCT 06347 # 49 DP3, DP3, ARTH
OCT 22347 # 50 DP3, DP3, M/S
OCT 00512 # 51 DP4, DP4
OCT 00012 # 52 DP4
OCT 24344 # 53 DP1, DP3, DP4
OCT 24344 # 54 DP1, DP3, DP4
OCT 24503 # 55 ARTH, DP4, DP4
OCT 00512 # 56 DP4, DP4
OCT 00007 # 57 DP3
OCT 16347 # 58 DP3, DP3, DP3
OCT 16347 # 59 DP3, DP3, DP3
OCT 24503 # 60 ARTH, DP4, DP4
OCT 06512 # 61 DP4, DP4, ARTH
OCT 16512 # 62 DP4, DP4, DP3
OCT 22507 # 63 DP3, DP4, M/S
OCT 16505 # 64 DP2, DP4, DP3
OCT 20410 # 65 HMS, HMS, HMS
OCT 16352 # 66 DP4, DP3, DP3
OCT 24507 # 67 DP3, DP4, DP4
OCT 24512 # 68 DP4, DP4, DP4
OCT 24252 # 69 DP4, DP2, DP4
OCT 00000 # 70 OCT, OCT, OCT
# Page 284
OCT 0 # 71 OCT, OCT,OCT
OCT 06352 # 72 DP4, DP3, ARTH
OCT 24507 # 73 DPR, DP4, DP4
OCT 12512 # 74 DP4, DP4, DP2
OCT 22447 # 75 DP3, M/S, M/S
OCT 0 # 76 SPARE
OCT 0 # 77 SPARE
OCT 0 # 78 SPARE
OCT 0 # 79 SPARE
OCT 24511 # 80 M/S, DP4, DP4
OCT 16347 # 81 DP3, DP3, DP3
OCT 16347 # 82 DP3, DP3, DP3
OCT 16347 # 83 DP3, DP3, DP3
OCT 16347 # 84 DP3, DP3, DP3
OCT 16347 # 85 DP3, DP3, DP3
OCT 24512 # 86 DP4, DP4, DP4
OCT 00302 # 87 CDU, YOPT
OCT 32655 # 88 DPFRAC FOR EACH
OCT 10347 # 89 DP3, DP3, DP1
OCT 24344 # 90 DP1, DP3, DP4
OCT 00302 # 91 CDU, YOPT
OCT 00302 # 92 CDU, YOPT
OCT 16347 # 93 DP3, DP3, DP3
OCT 00302 # 94 CDU, YOPT
OCT 04102 # 95 CDU, CDU, CDU
OCT 04102 # 96 CDU, CDU, CDU
OCT 06143 # 97 ARTH, ARTH, ARTH
OCT 06043 # 98 ARTH, FRAC, ARTH
OCT 06247 # 99 DP3, DP2, ARTH
# END OF RUTMXTAB
SBANK= LOWSUPER

View File

@ -0,0 +1,390 @@
# Copyright: Public domain.
# Filename: PLANETARY_INERTIAL_ORIENTATION.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1243-1251
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1243
# PLANETARY INERTIAL ORIENTATION
#
# ***** RP-TO-R SUBROUTINE *****
# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM, EITHER
# EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN BASIC REF. SYSTEM)
# R = MT(T) * (RP + LP X RP) MT = M MATRIX TRANSPOSE
#
# CALLING SEQUENCE
# L CALL
# L+1 RP-TO-R
#
# SUBROUTINES USED
# EARTHMX, MOONMX, EARTHL
#
# ITEMS AVAILABLE FROM LAUNCH DATA
# 504LM = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL, EXPRESSED
# IN THE MOON-FIXED COORD. SYSTEM RADIANS B0
#
# ITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)
#
# INPUT
# MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
# 0-5D = RP VECTOR
# 6-7D = TIME
#
# OUTPUT
# MPAC = R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
SETLOC PLANTIN
BANK
COUNT* $$/LUROT
RP-TO-R STQ BHIZ
RPREXIT
RPTORA
CALL # COMPUTE M MATRIX FOR MOON
MOONMX # LP=LM FOR MOON RADIANS B0
VLOAD
504LM
RPTORB VXV VAD
504RPR
504RPR
VXM GOTO
MMATRIX # MPAC=R=MT(T)*(RP+LPXRP)
RPRPXXXX # RESET PUSHLOC TO 0 BEFORE EXITING
RPTORA CALL # EARTH COMPUTATIONS
EARTHMX # M MATRIX B-1
CALL
EARTHL # L VECTOR RADIANS B0
MXV VSL1 # LP=M(T)*L RAD B-0
MMATRIX
# Page 1244
GOTO
RPTORB
# Page 1245
# ***** R-TO-RP SUBROUTINE *****
# SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP
# (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED
# RP = M(T) * (R - L X R)
#
# CALLING SEQUENCE
# L CALL
# L+1 R-TO-RP
#
# SUBROUTINES USED
# EARTHMX, MOONMX, EARTHL
#
# INPUT
# MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
# 0-5D = R VECTOR
# 6-7D = TIME
#
# ITEMS AVAILABLE FROM LAUNCH DATA
# 504LM = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL, EXPRESSED
# IN THE MOON-FIXED COORD. SYSTEM RADIANS B0
#
# ITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)
#
# OUTPUT
# MPAC = RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON
R-TO-RP STQ BHIZ
RPREXIT
RTORPA
CALL
MOONMX
VLOAD VXM
504LM # LP=LM
MMATRIX
VSL1 # L = MT(T)*LP RADIANS B0
RTORPB VXV BVSU
504RPR
504RPR
MXV # M(T)*(R-LXR) B-2
MMATRIX
RPRPXXXX VSL1 SETPD
0D
GOTO
RPREXIT
RTORPA CALL # EARTH COMPUTATIONS
EARTHMX
CALL
EARTHL
GOTO # MPAC=L=(-AX,-AY,0) RAD B-0
RTORPB
# Page 1246
# ***** MOONMX SUBROUTINE *****
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON
#
# CALLING SEQUENCE
# L CALL
# L+1 MOONMX
#
# SUBROUTINES USED
# NEWANGLE
#
# INPUT
# 6-7D = TIME
#
# ITEMS AVAILABLE FROM LAUNCH DATA
# BSUBO, BDOT
# TIMSUBO, NODIO, NODDOT, FSUBO, FDOT
# COSI = COS(I) B-1
# SINI = SIN(I) B-1
# I IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE
# PLANE OF THE ECLIPTIC (1 DEGREE 32.1 MINUTES)
#
# OUTPUT
# MMATRIX = 3X3 M MATRIX B-1 (STORED IN VAC AREA)
MOONMX STQ SETPD
EARTHMXX
8D
AXT,1 # B REQUIRES SL 0, SL 5 IN NEWANGLE
5
DLOAD PDDL # PD 10D 8-9D=BSUBO
BSUBO # 10-11D=BDOT
BDOT
PUSH CALL # PD 12D
NEWANGLE # EXIT WITH PD 8D AND MPAC= B REVS B0
PUSH COS # PD 10D
STODL COB # PD 8D COS(B) B-1
SIN # SIN(B) B-1
STODL SOB # SETUP INPUT FOR NEWANGLE
FSUBO # 8-9D=FSUBO
PDDL PUSH # PD 10D THEN 12D 10-11D=FDOT
FDOT
AXT,1 CALL # F REQUIRES SL 1, SL 6 IN NEWANGLE.
4
NEWANGLE # EXIT WITH PD 8D AND MPAC= F REVS B0
STODL AVECTR +2 # SAVE F TEMP
NODIO # 8-9D=NODIO
PDDL PUSH # PD 10D THEN 12D 10-11D=NODDOT
NODDOT # MPAC=5
AXT,1 CALL # NODE REQUIRES SL 0, SL 5 IN NEWANGLE
5
NEWANGLE # EXIT WITH PD 8D AND MPAC= NODI REVS B0
# Page 1247
PUSH COS # PD 10D 8-9D= NODI REVS B0
PUSH # PD 12D 10-11D= COS(NODI) B-1
STORE AVECTR
DMP SL1R
COB # COS(NODI) B-1
STODL BVECTR +2 # PD 10D 20-25D=AVECTR=COB*SIN(NODI)
DMP SL1R # SOB*SIN(NODI)
SOB
STODL BVECTR +4 # PD 8D
SIN PUSH # PD 10D -SIN(NODI) B-1
DCOMP # 26-31D=BVECTR=COB*COS(NODI)
STODL BVECTR # PD 8D SOB*COS(NODI)
AVECTR +2 # MOVE F FROM TEMP LOC. TO 504F
STODL 504F
DMP SL1R
COB
STODL AVECTR +2
SINNODI # 8-9D=SIN(NODI) B-1
DMP SL1R
SOB
STODL AVECTR +4 # 0
HI6ZEROS # 8-13D= CVECTR= -SOB B-1
PDDL DCOMP # PD 10D COB
SOB
PDDL PDVL # PD 12D THEN PD 14D
COB
BVECTR
VXSC PDVL # PD 20D BVECTR*SINI B-2
SINI
CVECTR
VXSC VAD # PD 14D CVECTR*COSI B-2
COSI
VSL1
STOVL MMATRIX +12D # PD 8D M2=BVECTR*SINI+CVECTR*COSI B-1
VXSC PDVL # PD 14D
SINI # CVECTR*SINI B-2
BVECTR
VXSC VSU # PD 8D BVECTR*COSI B-2
COSI
VSL1 PDDL # PD 14D
504F # 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI B-1
COS VXSC
DVECTR
PDDL SIN # PD 20D 14-19D= DVECTR*COSF B-2
504F
VXSC VSU # PD 14D AVECTR*SINF B-2
AVECTR
VSL1
STODL MMATRIX +6 # M1= AVECTR*SINF-DVECTR*COSF B-1
504F
# Page 1248
SIN VXSC # PD 8D
PDDL COS # PD 14D 8-13D=DVECTR*SINF B-2
504F
VXSC VAD # PD 8D AVECTR*COSF B-2
AVECTR
VSL1 VCOMP
STCALL MMATRIX # M0= -(AVECTR*COSF+DVECTR*SINF) B-1
EARTHMXX
# COMPUTE X=X0+(XDOT)(T+T0)
# 8-9D= X0 (REVS B-0), PUSHLOC SET AT 12D
# 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT
# AND B+27 FOR FDOT
# X1=DIFFERENCE IN 23 AND SCALING OF XDOT, =0 FOR WEARTH, 5 FOR NDDOT AND
# BDOT AND 4 FOR FDOT
# 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)
NEWANGLE DLOAD SR # ENTER PD 12D
6D
14D
TAD TLOAD # CHANGE MODE TO TP
TIMSUBO
MPAC
STODL TIMSUBM # T+T0 CSEC B-42
TIMSUBM +1
DMP # PD 10D MULT BY XDOT IN 10-11D
SL* DAD # PD 8D ADD X0 IN 8-9D AFTER SHIFTING
5,1 # SUCH THAT SCALING IS B-0
PUSH SLOAD # PD 10D SAVE PARTIAL (X0+XDOT*T) IN 8-9D
TIMSUBM
SL DMP
9D
10D # XDOT
SL* DAD # PD 8D SHIFT SUCH THAT THIS PART OF X
10D,1 # IS SCALED REVS/CSEC B-0
BOV # TURN OFF OVERFLOW IF SET BY SHIFT
+1 # INSTRUCTION BEFORE EXITING.
RVQ # MPAC=X= X0+(XDOT)(T+T0) REVS B0
# Page 1249
# ***** EARTHMX SUBROUTINE *****
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH
#
# CALLING SEQUENCE
# L CALL
# L+1 EARTHMX
#
# SUBROUTINE USED
# NEWANGLE
#
# INPUT
# INPUT AVAILABLE FROM LAUNCH DATA AZO REVS B-0
# TEPHEM CSEC B-42
# 6-7D= TIME CSEC B-28
#
# OUTPUT
# MMATRIX= 3X3 M MATRIX B-1 (STORED IN VAC AREA)
EARTHMX STQ SETPD # SET 8-9D=AZO
EARTHMXX
8D # 10-11D=WEARTH
AXT,1 # FOR SL 5, AND SL 10 IN NEWANGLE
0
DLOAD PDDL # LEAVING PD SET AT 12D FOR NEWANGLE
AZO
WEARTH
PUSH CALL
NEWANGLE
SETPD PUSH # 18-19D=504AZ
18D # COS(AZ) SIN(AZ) 0
COS PDDL # 20-37D= MMATRIX= -SIN(AZ) COS(AZ) 0 B-1
504AZ # 0 0 1
SIN PDDL
HI6ZEROS
PDDL SIN
504AZ
DCOMP PDDL
504AZ
COS PDVL
HI6ZEROS
PDDL PUSH
HIDPHALF
GOTO
EARTHMXX
# Page 1250
# ***** EARTHL SUBROUTINE *****
# SUBROUTINE TO COMPUTE L VECTOR FOR EARTH
#
# CALLING SEQUENCE
# L CALL
# L+1 EARTHL
#
# INPUT
# AXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE
#
# OUTPUT
# -AX
# MPAC= -AY RADIANS B-0
# 0
EARTHL DLOAD DCOMP
AXO
STODL 504LPL
-AYO
STODL 504LPL +2
HI6ZEROS
STOVL 504LPL +4
504LPL
RVQ
# Page 1251
# CONSTANTS AND ERASABLE ASSIGNMENTS
1B1 = DP1/2 # 1 SCALED B-1
COSI 2DEC .99964173 B-1 # COS(5521.5 SEC) B-1
SINI 2DEC .02676579 B-1 # SIN(5521.T SEC) B-1
RPREXIT = S1 # R-TO-RP AND RP-TO-R SUBR EXIT
EARTHMXX = S2 # EARTHMX, MOONMX SUBR. EXITS
504RPR = 0D # 6 REGS R OR RP VECTOR
SINNODI = 8D # 2 SIN(NODI)
DVECTR = 8D # 6 D VECTOR MOON
CVECTR = 8D # 6 C VECTR MOON
504AZ = 18D # 2 AZ
TIMSUBM = 14D # 3 TIME SUB M (MOON) T+10 IN GETAZ
504LPL = 14D # 6 L OR LP VECTOR
AVECTR = 20D # 6 A VECTOR (MOON)
BVECTR = 26D # 6 B VECTOR (MOON)
MMATRIX = 20D # 18 M MATRIX
COB = 32D # 2 COS(B) B-1
SOB = 34D # 2 SIN(B) B-1
504F = 6D # 2 F(MOON)
NODDOT 2DEC -.457335121 E-2 # REVS/CSEC B+28=-1.07047011 E-8 RAD/SEC
FDOT 2DEC .570863327 # REVS/CSEC B+27= 2.67240410 E-6 RAD/SEC
BDOT 2DEC -3.07500686 E-8 # REVS/CSEC B+28=-7.19757301 E-14 RAD/SEC
NODIO 2DEC .986209434 # REVS B-0 = 6.19653663041 RAD
FSUBO 2DEC .829090536 # REVS B-0 = 5.20932947829 RAD
BSUBO 2DEC .0651201393 # REVS B=0 = 0.40916190299 RAD
WEARTH 2DEC .973561595 # REVS/CSEC B+23= 7.29211494 E-5 RAD/SEC

View File

@ -0,0 +1,364 @@
# Copyright: Public domain.
# Filename: POWERED_FLIGHT_SUBROUTINES.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1365-1372
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Colossus249/ file of the same
# name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1365
BANK 14 # SAME FBANK AS THE FINDCDUD SUB-PROGRAM
SETLOC POWFLITE
BANK
EBANK= DEXDEX
COUNT* $$/POWFL
# CDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*GR*GS ALL COMPUTE THE SINES AND
# COSINES OF THREE 2'S COMPLEMENT ANGLES AND PLACE THE RESULT, DOUBLE
# PRECISION, IN THE SAME ORDER AS THE INPUTS, AT SINCDU AND COSCDU. AN
# ADDITIONAL OUTPUT IS THE 1'S COMPLENT ANGLES AT CDUSPOT. THESE
# ROUTINES GO OUT OF THEIR WAY TO LEAVE THE MPAC AREA AS THEY FIND IT.
# EXCEPT FOR THE GENERALLY UNIMPORTANT MPAC +2. THEY DIFFER ONLY IN
# WHERE THEY GET THE ANGLES, AND IN METHOD OF CALLING.
#
# CDUTRIG (AND CDUTRIG1, WHICH CAN BE CALLED IN BASIC) COMPUTE THE
# SINES AND COSINES FROM THE CURRENT CONTENTS OF THE CDU REGISTERS.
# THE CONTENTS OF CDUTEMP, ETC., ARE NOT TOUCHED SO THAT THEY MAY
# CONTINUE TO FORM A CONSISTENT SET WITH THE LATEST PIPA READINGS.
#
# CDUTRIG1 IS LIKE CDUTRIG EXCEPT THAT IT CAN BE CALLED IN BASIC.
#
# CD*TR*GS FINDS CDU VALUES IN CDUSPOT RATHER THAN IN CDUTEMP. THIS
# ALLOWS USERS TO MAKE TRANSFORMATIONS USING ARBITRARY ANGLES, OR REAL
# ANGLES IN AN ORDER OTHER THAN X Y Z. A CALL TO THIS ROUTINE IS
# NECESSARY IN PREPARATION FOR A CALL TO AX*SR*T IN EITHER OF ITS TWO
# MODES (SMNB OR NBSM). SINCE AX*SR*T EXPECTS TO FIND THE SINES AND
# COSINES IN THE ORDER Y Z X THE ANGLES MUST HAVE BEEN PLACED IN CDUSPOT
# IN THIS ORDER. CD*TR*GS NEED NOT BE REPEATED WHEN AX*SR*T IS CALLED
# MORE THAN ONCE, PROVIDED THE ANGLES HAVE NOT CHANGED. NOTE THAT SINCE
# IT CLOBBERS BUF2 (IN THE SINE AND COSINE ROUTINES) CD*TR*GS CANNOT BE
# CALLED USING BANKCALL. SORRY.
#
# CD*TR*G IS LIKE CD*TR*GS EXCEPT THAT IT CAN BE CALLED IN
# INTERPRETIVE.
CDUTRIG EXIT
TC CDUTRIGS
TC INTPRET
RVQ
CD*TR*G EXIT
TC CD*TR*GS
TC INTPRET
RVQ
CDUTRIGS CA CDUX
TS CDUSPOT +4
CA CDUY
TS CDUSPOT
# Page 1366
CA CDUZ
TS CDUSPOT +2
CD*TR*GS EXTEND
QXCH TEM2
CAF FOUR
TR*GL**P MASK SIX # MAKE IT EVEN AND SMALLER
TS TEM3
INDEX TEM3
CA CDUSPOT
DXCH MPAC # STORING 2'S COMP ANGLE, LOADING MPAC
DXCH VBUF +4 # STORING MPAC FOR LATER RESTORATION
TC USPRCADR
CADR CDULOGIC
EXTEND
DCA MPAC
INDEX TEM3
DXCH CDUSPOT # STORING 1'S COMPLEMENT ANGLE
TC USPRCADR
CADR COSINE
DXCH MPAC
INDEX TEM3
DXCH COSCDU # STORING COSINE
EXTEND
INDEX TEM3
DCA CDUSPOT # LOADING 1'S COMPLEMENT ANGLE
TC USPRCADR
CADR SINE +1 # SINE +1 EXPECTS ARGUMENT IN A AND L
DXCH VBUF +4 # BRINGING UP PRIOR MPAC TO BE RESTORED
DXCH MPAC
INDEX TEM3
DXCH SINCDU
CCS TEM3
TCF TR*GL**P
TC TEM2
# Page 1367
# *******************************************************************************************************
# QUICTRIG, INTENDED FOR QUIDANCE CYCLE USE WHERE TIME IS CRITICAL, IS A MUCH FASTER VERSION OF CD*TR*GS.
# QUICTRIG COMPUTES AND STORES THE SINES AND COSINES OF THE 2'S COMPLEMENT ANGLES AT CDUSPOT, CDUSPOT +2,
# AND CDUSPOT +4. UNLIKE CD*TR*GS, QUICTRIG DOES NOT LEAVE THE 1'S COMPLEMENT VERSIONS OF THE ANGLES IN
# CDUSPOT. QUICTRIG'S EXECUTION TIME IS 4.1 MS; THIS IS 10 TIMES AS FAST AS CD*TR*GS. QUICTRIG MAY BE
# CALLED FROM INTERPRETIVE AS AN RTB OP-CODE, OR FROM BASIC VIA BANKCALL OR IBNKCALL.
QUICTRIG INHINT # INHINT SINCE DAP USES THE SAME TEMPS
EXTEND
QXCH ITEMP1
CAF FOUR
+4 MASK SIX
TS ITEMP2
INDEX ITEMP2
CA CDUSPOT
TC SPSIN
EXTEND
MP BIT14 # SCALE DOWN TO MATCH INTERPRETER OUTPUTS
INDEX ITEMP2
DXCH SINCDU
INDEX ITEMP2
CA CDUSPOT
TC SPCOS
EXTEND
MP BIT14
INDEX ITEMP2
DXCH COSCDU
CCS ITEMP2
TCF QUICTRIG +4
CA ITEMP1
RELINT
TC A
# Page 1368
#****************************************************************************
# THESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN
# INTERPRETIVE. LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED.
#
# NBSM WILL BE THE FIRST TO GO. IT SHOULD NOT BE USED.
NBSM STQ
X2
LXC,1 VLOAD*
S1 # BASE ADDRESS OF THE CDU ANGLES IS IN S1
0,1
STOVL CDUSPOT
32D # VECTOR TO BE TRANSFORMED IS IN 32D
CALL
TRG*NBSM
STCALL 32D # SINCE THERE'S NO STGOTO
X2
# THESE INTERFACE ROUTINES ARE PERMANENT. ALL RESTORE USER'S EBANK
# SETTING. ALL ARE STRICT INTERPRETIVE SUBROUTINES, CALLED USING "CALL",
# RETURNING VIA QPRET. ALL EXPECT AND RETURN THE VECTOR TO BE TRANSFOR-
# MED INTERPRETER-STYLE IN MPAC: COMPONENTS AT MPAC, MPAC +3, AND MPAC +5.
#
# TRG*SMNB AND TRG*NBSM BOTH EXPECT TO SEE THE 2'S COMPLEMENT ANGLES
# AT CDUSPOT (ORDER Y Z X, AT CDUSPOT, CDUSPOT +2, AND CDUSPOT +4. ODD
# LOCATIONS NEED NOT BE ZEROED). TRG*NBSM DOES THE NB TO SM TRANSFOR-
# MATION: TRG*SMNB, VICE VERSA.
#
# CDU*NBSM DOES ITS TRANSFORMATION USING THE PRESENT CONTENTS OF
# THE CDL COUNTERS. OTHERWISE IT IS LIKE TRG*NBSM.
#
# CDU*SMNB IS THE COMPLEMENT OF CDU*NBSM.
CDU*SMNB EXIT
TC CDUTRIGS
TCF C*MM*N1
TRG*SMNB EXIT
TC CD*TR*GS
C*MM*N1 TC MPACVBUF # AX*SR*T EXPECTS VECTOR IN VBUF
CS THREE # SIGNAL FOR SM TO NB TRANSFORMATION.
C*MM*N2 TC AX*SR*T
TC INTPRET
VLOAD RVQ
VBUF
CDU*NBSM EXIT
TC CDUTRIGS
# Page 1369
TCF C*MM*N3
TRG*NBSM EXIT
TC CD*TR*GS
C*MM*N3 TC MPACVBUF # FOR AX*SR*T
CA THREE # SIGNAL FOR NB TO SM TRANSFORMATION
TCF C*MM*N2
# *NBSM* AND *SMNB* EXPECT TO SEE THE SINES AND COSINES (AT SINCDU
# AND COSCDU) RATHER THAN THE ANGLES THEMSELVES. OTHERWISE THEY ARE
# LIKE TRG*NBSM AND TRG*SMNB.
#
# NOTE THAT JUST AS CD*TR*GS NEED BE CALLED ONLY ONCE FOR EACH SERIES
# OF TRANSFORMATIONS USING THE SAME ANGLES, SO TOO ONLY ONE OF TRG*NBSM
# AND TRG*SMNB NEED BE CALLED FOR EACH SERIES. FOR SUBSEQUENT TRANFOR-
# MATIONS USE *NBSM* AND *SMNB*.
*SMNB* EXIT
TCF C*MM*N1
*NBSM* EXIT
TCF C*MM*N3
# AX*SR*T COMBINES THE OLD SMNB AND NBSM. FOR THE NB TO SM
# TRANSFORMATION, ENTER WITH +3 IN A. FOR SM TO NB, ENTER WITH -3.
# THE VECTOR TO BE TRANSFORMED ARRIVES, AND IS RETURNED, IN VBUF.
# AX*SR*T EXPECTS TO FIND THE SINES AND COSINES OF THE ANGLES OF ROTATION
# AT SINCDU AND COSCDU, IN THE ORDER Y Z X. A CALL TO CD*TR*GS, WITH
# THE 2'S COMPLEMENT ANGLES (ORDER Y Z X) AT CDUSPOT, WILL TAKE CARE OF
# THIS. HERE IS A SAMPLE CALLING SEQUENCE:--
# TC CDUTRIGS
# CS THREE # ("CA THREE" FOR NBSM)
# TC AX*SR*T
# THE CALL TO CD*TR*GS NEED NOT BE REPEATED, WHEN AX*SR*T IS CALLED MORE
# THAN ONCE, UNLESS THE ANGLES HAVE CHANGED.
#
# AX*SR*T IS GUARANTEED SAFE ONLY FOR VECTORS OF MAGNITUDE LESS THAN
# UNITY. A LOOK AT THE CASE IN WHICH A VECTOR OF GREATER MAGNITUDE
# HAPPENS TO LIE ALONG AN AXIS OF THE SYSTEM TO WHICH IT IS TO BE TRANS-
# FORMED CONVINCES ONE THAT THIS IS A RESTRICTION WHICH MUST BE ACCEPTED.
AX*SR*T TS DEXDEX # WHERE IT BECOMES THE INDEX OF INDEXES.
EXTEND
QXCH RTNSAVER
R*TL**P CCS DEXDEX # +3 --> 0 -3 --> 2
CS DEXDEX # THUS: +2 --> 1 -2 --> 1
AD THREE # +1 --> 2 -1 --> 0
# Page 1370
EXTEND
INDEX A
DCA INDEXI
DXCH DEXI
CA ONE
TS BUF
EXTEND
INDEX DEX1
DCS VBUF
TCF LOOP1 # REALLY BE A SUBTRACT, AND VICE VERSA
LOOP2 DXCH BUF # LOADING VECTOR COMPONENT, STORING INDEX
LOOP1 DXCH MPAC
CA SINESLOC
AD DEX1
TS ADDRWD
TC DMPSUB # MULTIPLY BY SIN(CDUANGLE)
CCS DEXDEX
DXCH MPAC # NBSM CASE
TCF +3
EXTEND # SMNB CASE
DCS MPAC
DXCH TERM1TMP
CA SIX # SINCDU AND COSCDU (EACH 6 WORDS) MUST
ADS ADDRWD # BE CONSECUTIVE AND IN THAT ORDER
EXTEND
INDEX BUF
INDEX DEX1
DCA VBUF
DXCH MPAC
TC DMPSUB # MULTIPLY BY COS(CDUANGLE)
DXCH MPAC
DAS TERM1TMP
DXCH TERM1TMP
DDOUBL
INDEX BUF
INDEX DEX1
DXCH VBUF
DXCH BUF # LOADING INDEX, STORING VECTOR COMPONENT
CCS A # 'CAUSE THAT'S WHERE THE INDEX NOW IS
TCF LOOP2
EXTEND
DIM DEXDEX # DECREMENT MAGNITUDE PRESERVING SIGN
# Page 1371
TSTPOINT CCS DEXDEX # ONLY THE BRANCHING FUNCTION IS USED
TCF R*TL**P
TC RTNSAVER
TCF R*TL**P
TC RTNSAVER
SINESLOC ADRES SINCDU # FOR USE IN SETTING ADDRWD
INDEXI DEC 4 # ********** DON'T ***********
DEC 2 # ********** TOUCH ***********
DEC 0 # ********** THESE ***********
DEC 4 # ********** CONSTANTS ***********
# ******************************************************************************
# Page 1372
# THIS SUBROUTINE COMPUTES INCREMENTAL CHANGES IN CDU(GIMBAL) ANGLES FROM INCREMENTAL CHANGES ABOUT SM AXES. IT
# REQUIRES SM INCREMENTS AS A DP VECTOR SCALED AT ONE REVOLUTION(DTHETASM,+2,+4). SIN,COS(CDUY,Z,X) ARE IN
# SINCDU,+2,+4 AND COSCDU,+2,+4 RESPECTIVELY, SCALED TO ONE HALF. CDU INCREMENTS ARE PLACED IN DCDU,+2,+4 SCALED TO
# ONE REVOLUTION.
#
# * COS(IGA)SEC(MGA) 0 -SIN(IGA)SEC(MGA) *
# * *
# * -COS(IGA)TAN(MGA) 1 SIN(IGA)TAN(MGA) *
# * *
# * SIN(IGA) 0 COS(IGA) *
BANK 14
SETLOC POWFLIT1
BANK
SMCDURES DLOAD DMP
DTHETASM
COSCDUY
PDDL DMP
DTHETASM +4
SINCDUY
BDSU
DDV
COSCDUZ
STORE DCDU
DMP SL1 # SCALE
SINCDUZ
BDSU
DTHETASM +2
STODL DCDU +2
DTHETASM
DMP PDDL
SINCDUY
DTHETASM +4
DMP DAD
COSCDUY
SL1
STORE DCDU +4
RVQ

860
Q_R-AXIS_RCS_AUTOPILOT.s Normal file
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

490
R30.s Normal file
View File

@ -0,0 +1,490 @@
# Copyright: Public domain.
# Filename: R30.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 514-524
# Mod history: 2009-05-09 HG Started adapting from the Colossus249/ file
# of the same name, using Comanche055 page
# images 0514.jpg - 0524.jpg.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 514
# SUBROUTINE NAME: V82CALL
# MOD NO: 0 DATE: 16 FEB 67
# MOD BY: R. R. BAIRNSFATHER LOG SECTION: R30
# MOD NO: 1 MOD BY: R. R. BAIRNSFATHER DATE: 11 APR 67 SR30.1 CHANGED TO ALLOW MONITOR OPERN
# MOD NO: 2 MOD BY: ALONSO DATE: 11 DEC 67 VB82 PROGRAM REWRITTEN
# MOD NO: 3 MOD BY: ALONSO DATE: 26 MAR 68 PROG MOD TO HANDLE DIF EARTH/MOON SCALE
#
# NEW FUNCTIONAL DESCRIPTION: CALLED BY VERB 82 ENTER. PRIORITY 10.
# USED THROUGHOUT. CALCULATE AND DISPLAY ORBITAL PARAMETERS
#
# 1. IF AVERAGE G IS OFF:
# FLASH DISPLAY V04N06. R2 INDICATES WHICH SHIP'S STATE VECTOR IS
# TO BE UPDATED. INITIAL CHOICE IS THIS SHIP (R2=1). ASTRONAUT
# CAN CHANGE TO OTHER SHIP BY V22EXE. WHERE X IS NOT EQ 1.
# SELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC).
# CALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE
# RPER (PERIGEE RADIUS), RAPO (APOGEE RADIUS), HPER (PERIGEE
# HEIGHT ABOVE LAUNCH PAD OR LAUNAR LANDING SITE), HARD (APOGEE
# HEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO
# INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).
# FLASH MONITOR V16N44 (HAPO, HPER, TFF). TFF IS -59MS59S IF IT WAS
# NOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND.
# ASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E.
# DISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS
# ONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S.
# 2. IF AVERAGE G IS ON:
# CALLS SR30.1 APPROX EVERY TWO SECS. STATE VECTOR IS ALWAYS
# FOR THIS VEHICLE. V82 DOES NOT DISTURB STATE VECTOR. RESULTS
# OF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF.
# FLASH MONITOR V16N44 (HAPO, HPER, TFF).
# IF MODE IS P11, THEN CALL DELRSPL SO ASTRONAUT CAN MONITOR
# RESULTS BY N50E. SPLASH COMPUTATION DONE ONCE PER TWO SECS.
# ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE
# ABOVE REMARKS.
#
# CALLING SEQUENCE: VERB 82 ENTER.
#
# SUBROUTINES CALLED: SR30.1, GOXDSPF
# MAYBE -- THISPREC, OTHPREC, LOADTIME, DELRSPL
#
# NORMAL EXIT MODES: TC ENDEXT
#
# ALARMS: NONE
#
# OUTPUT: HAPOX (-29) M
# HPERX (-29) M
# RAPO (-29) M EARTH
# (-27) M MOON
# Page 515
# RPER (-29) M EARTH
# (-27) M MOON
# TFF (-28) CS CONTAINS NEGATIVE QUANTITY
# -TPER (-28) CS CONTAINS NEGATIVE QUANTITY
# RSP-RREC(-29) M IF DELRSPL CALLED
#
# ERASABLE INITIALIZATION REQUIRED: STATE VECTOR.
#
# DEBRIS: QPRET, RONE, VONE, TFF/RTMU, HPERMIN, RPADTEM, V82EMFLG.
# MAYBE: TSTART82, V82FLAGS, TDEC1.
EBANK= HAPOX
BANK 31
SETLOC R30LOC
BANK
COUNT* $$/R30
V82CALL TC INTPRET
BON GOTO
AVEGFLAG
V82GON # IF AVERAGE G ON
V82GOFF # IF AVERAGE G OFF
V82GOFF EXIT # ALLOW ASTRONAUT TO SELECT VEHICLE
CAF TWO # DESIRED FOR ORBITAL PARAMETERS
TS OPTIONX
CAF ONE
TS OPTIONX +1
CAF OPTIONVN # V 04 N 06
TC BANKCALL
CADR GOXDSPF
TC ENDEXT # TERMINATE
TC +2 # PROCEED
TC -5 # DATA IN. OPTIONX +1 = 1 FOR THIS VEHIC.
# UNEQ 1 FOR OTHER VEHICLE.
CAF BIT4 # 80 MS
TC WAITLIST
EBANK= TFF
2CADR TICKTEST
RELINT
V82GOFLP CAF TFFBANK # MAJOR RECYCLE LOOP ENTRY
TS EBANK
CAF ZERO
TS V82FLAGS # ZERO FLAGS FOR TICKTEST, INHIBITS
# DECREMENTING OF TFF AND -TPER.
CAF PRIO7
TC FINDVAC # V82GOFF1 WILL EXECUTE STATE VECTOR
# Page 516
EBANK= TFF # UPDATE AND ORBIT CALCULATIONS FOR
2CADR V82GOFF1 # SELECTED VEHICLE ABOUT PROPER BODY.
RELINT
V82STALL CAF THREE # STALL IN THIS LOOP AND WITHOLD V 16 N 44
MASK V82FLAGS # UNTIL STATE VECTOR UPDATE SETS ONE OF
CCS A # OUR FLAG BITS.
TC FLAGGON # EXIT FROM STALL LOOP.
CAF 1SEC
TC BANKCALL
CADR DELAYJOB
TC V82STALL
FLAGGON CAF V16N44 # MONITOR HAPO,HPER,TFF.
TC BANKCALL
CADR GOXDSPF
TC B5OFF # TERM THIS TELLS TICKTEST TO KILL ITSELF
TC B5OFF # PROCEED DITTO
TC V82GOFLP # RECYCLE RECOMPUTE STATE VECT + DISPLAY
OPTIONVN VN 0412
V16N44 VN 1644
TFFBANK ECADR TFF
V82GOFF1 TC INTPRET
RTB
LOADTIME
STORE TDEC1 # TIME FOR STATE VECTOR UPDATE.
STORE TSTART82 # TIME FOR INTERNAL USE.
EXIT
CS OPTIONX +1 # 1 FOR THIS VEHICLE, NOT 1 FOR OTHER
AD ONE
EXTEND
BZF THISSHIP
OTHSHIP TC INTPRET
CALL # CALL STATE VECTOR UPDATE FOR OTHER SHIP.
OTHPREC
BOTHSHIP VLOAD # MOVE RESULTS INTO TFFCONIC STORAGE AREAS
RATT # TO BE CALLED BY SR30.1.
STOVL RONE # RATT AT (-29)M FOR EARTH OR MOON
VATT
STORE VONE # VATT AT (-7)M/CS FOR EARTH OR MOON
DLOAD*
1/RTMUE,2 # X2 IS 0 FOR EARTH CENTERED STATE VEC
# HG remark: In Comanche055 scan this line (5324) looks pretty much like 1/RTMUF.2 can not decide, leave it
# as it is in start source
STORE TFF/RTMU # X2 IS 2 FOR MOON
DLOAD* # AS LEFT BY THISPREC OR OTHPREC.
MINPERE,2
STORE HPERMIN # TFFRTMU, HPERMIN, AND RPADTEM ARE ALL
SLOAD BHIZ # EARTH/MOON PARAMETERS AS SET HERE.
# Page 517
X2
EARTHPAD
GOTO
MOONPAD
THISSHIP TC INTPRET
CALL # CALL STATE VECTOR UPDATE FOR THIS SHIP.
THISPREC
GOTO
BOTHSHIP
# THE FOLLOWING CONSTANTS ARE PAIRWISE INDEXED. DO NOT SEPARATE PAIRS.
1/RTMUM 2DEC* .45162595 E-4 B14*
1/RTMUE 2DEC* .50087529 E-5 B17*
MINPERM 2DEC 10668 B-27 # 35 KFT MIN PERIGEE HEIGHT FOR MOON(-27)M
MINPERE 2DEC 91440 B-29 # 300 KFT (-29)M FOR EARTH
EARTHPAD DLOAD CLRGO # PAD 37-B RADIUS. SCALED AT (-29)M
RPAD
V82EMFLG # INDICATE EARTH SCALING FOR SR30.1
BOTHPAD
MOONPAD VLOAD ABVAL # COMPUTE MOON PAD RADIUS FROM RLS VECTOR.
RLS # SCALED AT (-27)M.
SET
V82EMFLG # INDICATE MOON SCALING FOR SR30.1
BOTHPAD STCALL RPADTEM
SR30.1 # CALCULATE ORBITAL PARAMETERS
EXIT
CA MODREG # ARE WE IN P00
EXTEND
BZF CANDEL # YES, DO DELRSPL
SPLRET1 TC INTPRET
RTB DSU
LOADTIME
TSTART82 # PRESENT TIME -- TIME V82GOFF1 BEGAN
STORE TSTART82 # SAVE IT
DLOAD BZE # SR30.1 SETS -TPER=0 IF HPER L/
-TPER # HPERMIN (300 OR 35) KFT.
TICKTFF # (-TPER = 0)
TICKTPER DLOAD DAD # (-TPER NON ZERO) TFF WAS NOT COMPUTED.
-TPER # BUT WAS SET TO 59M59S. DON'T DICK TFF, DO
TSTART82 # TICK -TPER. DISPLAY BOTH.
STORE -TPER # -TPER CORRECTED FOR TIME SINCE V82GOFF1
EXIT # BEGAN.
# Page 518
CAF BIT1
TS V82FLAGS # INFORMS TICKTEST TO INCREMENT ONLY -TPER
TC ENDOFJOB
TICKTFF DLOAD DAD # (-TPER=0) TFF WAS COMPUTED. TICK TFF.
TFF # DO NOT TICK -TPER. DISPLAY TFF, BUT NOT
TSTART82 # -TPER
STORE TFF # TFF CORRECTED FOR TIME SINCE V82GOFF1
EXIT # BEGAN.
CAF BIT2
TS V82FLAGS # INFORMS TICKTEST TO INCREMENT ONLY TFF.
TC ENDOFJOB
TICKTEST CAF BIT5 # THIS WAITLIST PROGRAM PERPETUATES ITSELF
MASK EXTVBACT # ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.
CCS A
TC DOTICK
CAF PRIO25
TC NOVAC # TERMINATE V 82. CAN'T CALL ENDEXT IN RUPT.
EBANK= EXTVBACT
2CADR ENDEXT
TC TASKOVER
DOTICK CAF 1SEC # RE-REQUEST TICKTEST.
TC WAITLIST
EBANK= TFF
2CADR TICKTEST
CAF THREE
MASK V82FLAGS
INDEX A
TC +1
TC TASKOVER # IF NO FLAGBITS SET DONT' CHANGE TFF OR
# -TPER, BUT CONTINUE LOOP.
TC TPERTICK # ONLY BIT 1 SET. INCR -TPER BY 1 SEC.
TFFTICK CAF 1SEC # ONLY BIT 2 SET. INCR TFF BY 1 SEC.
TS L
CAF ZERO
DAS TFF
TC TASKOVER
TPERTICK CAF 1SEC
TS L
CAF ZERO
DAS -TPER
TC TASKOVER
# Page 519
V82GON EXIT # AVERAGE G ON. USE CURRENT STATE VECTOR
# FOR ORBITAL PARAMETER CALCULATIONS.
CAF PRIO7 # LESS THAN LAMBERT
TC FINDVAC # V82GON1 WILL PERFORM ORBIT CALCULATIONS
EBANK= TFF # ABOUT PROPER BODY APPROX ONCE PER SEC.
2CADR V82GON1
RELINT
CCS NEWJOB # WITHOLD V16 N44 UNTIL FIRST ORBIT CALC
TC CHANG1 # IS DONE. NOTE: V82GON1 (PRIO7, FINDVAC
# JOB) IS COMPLETED BEFORE V82GON (PRIO7,
# NOVAC JOB).
V82REDSP CAF V16N44 # MONITOR HAPO, HPER, TFF
TC BANKCALL
CADR GOXDSPF
TC B5OFF # TERM THIS TELLS V82GON1 TO KILL ITSELF.
TC B5OFF # PROC DITTO.
TC V82REDSP # RECYCLE
V82GON1 TC INTPRET # THIS EXEC PROGRAM PERPETUATES ITSELF
# ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.
VLOAD GOTO # HOLDS OFF CCS NEWJOB BETWEEN RN AND
RN # VN FETCH SO RN, VN ARE FROM SAME
NEXTLINE # STATE VECTOR UPDATE.
NEXTLINE STOVL RONE # RN AT (-29)M FOR EARTH OR MOON
VN
STORE VONE # VN AT (-7)M/CS FOR EARTH OR MOON
BON GOTO
AMOONFLG # FLAG INDICATES BODY ABOUT WHICH ORBITAL
MOONGON # CALCULATIONS ARE TO BE PERFORMED.
EARTHGON # IF SET - MOON, IF RESET - EARTH.
MOONGON SET DLOAD
V82EMFLG # INDICATE MOON SCALING FOR SR30.1
1/RTMUM # LUNAR PARAMETERS LOADED HERE FOR SR30.1
STODL TFF/RTMU
MINPERM
STOVL HPERMIN
RLS # SCALED AT (-27)M
ABVAL GOTO
V82GON2
EARTHGON CLEAR DLOAD
V82EMFLG # INDICATE EARTH SCALING FOR SR30.1
1/RTMUE # EARTH PARAMETERS LOADED HERE FOR SR30.1
STODL TFF/RTMU
MINPERE
STODL HPERMIN
RPAD
V82GON2 STCALL RPADTEM # COMMON CODE FOR EARTH & MOON.
SR30.1
# Page 520
EXIT
TC CHECKMM
DEC 11
TC V82GON3 # NOT IN MODE 11.
CANDEL TC INTPRET # IN MODE 11 OR 00
CALL
INTSTALL # DELRSPL DOES INTWAKE
DLOAD CALL
TFF
DELRSPL # RETURN IS TO NEXT LINE (SPLRET).
SPLRET EXIT
CA MODREG
EXTEND
BZF SPLRET1
V82GON3 CAF BIT5
MASK EXTVBACT # SEE IF ASTRONAUT HAS SIGNALLED TERMINATE
EXTEND
BZF ENDEXT # YES, TERMINATE VB 82 LOOP
CAF 1SEC
TC BANKCALL # WAIT ONE SECOND BEFORE REPEATING
CADR DELAYJOB # ORBITAL PARAMETER COMPUTATION.
TC V82GON1
# Page 521
# SUBROUTINE NAME: SR30.1
# MOD NO: 0 DATE: 16 FEB 67
# MOD BY: R. R. BAIRNSFATHER LOG SECTION: R32
# MOD NO: 1 MOD BY: R. R. BAIRNSFATHER DATE: 11 APR 67 SR30.1 CHANGED TO ALLOW MONITOR OPERN
# MOD NO: 2 MOD BY: R. R. BAIRNSFATHER DATE: 14 APR 67 ADD OVFL CK FOR RAPO
# MOD NO: 3 MOD BY ALONSO DATE: 11 DEC 67 SUBROUTINE REWRITTEN
# MOD NO: 4 MOD BY ALONSO DATE: 26 MAR 68 PROG MOD TO HANDLE DIF EARTH/MOON SCALE
# MOD NO: 5 MOD BY: R. R. BAIRNSFATHER DATE: 6 AUG 68 OVFL CK FOR HAPO & HPER. VOIDS MOD #2.
#
# NEW FUNCTIONAL DESCRIPTION: ORBITAL PARAMETERS DISPLAY FOR NOUNS 32 AND 44.
# SR30.1 CALLS TFFCONMU AND TFFRP/RA TO CALCULATE RPER (PERIGEE RADIUS),
# RAPO (APOGEE RADIUS), HPER (PERIGEE HEIGHT ABOVE LAUNCH PAD OR LUNAR
# LANDING SITE), HAPO (APOGEE HEIGHT AS ABOVE), TPER (TIME TO PERIGEE),
# TFF (TIME TO INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).
# IF HPER IS GREATER THAN OR EQUAL TO HPERMIN, CALCULATES TPER AND STORES
# NEGATIVE. IN -TPER. OTHERWISE STORES +0 IN -TPER. WHENEVER TPER IS
# CALCULATED, TFF IS NOT COMPUTABLE AND DEFAULTS TO -59MIN 59SEC. IF HAPO
# WOULD EXCEED 9999.9 NM, IT IS LIMITED TO THAT VALUE FOR DISPLAY.
#
# ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE
# ABOVE REMARKS.
#
# CALLING SEQUENCE: CALL
# SR30.1
#
# SUBROUTINES CALLED: TFFCONMU, TFFRP/RA, CALCTPER, CALCTFF
#
# NORMAL EXIT MODE: CALLING LINE +1 (STILL IN INTERPRETIVE MODE)
#
# ALARMS: NONE
#
# OUTPUT: RAPO (-29) M EARTH APOGEE RADIUS EARTH CENTERED COORD.
# (-27) M MOON MOON CENTERED COORD.
# RPER (-29) M EARTH PERIGEE RADIUS EARTH CENTERED COORD.
# (-27) M MOON MOON CENTERED COORD.
# HAPOX (-29) M APOGEE ALTITUDE ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM.
# HPERX (-29) M PERIGEE ALT. ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM.
# TFF (-28) CS TIME TO 300KFT OR 35KFT ALTITUDE
# -TPER (-28) CS TIME TO PERIGEE
#
# ERASABLE INITIALIZATION REQUIRED -
# TFF/RTMU (+17) EARTH RECIPROCAL OF PROPER GRAV CONSTANT FOR
# (+14) MOON EARTH OR MOON = 1/SQRT(MU).
# RONE (-29) M STATE VECTOR
# VONE (-7) M/CS STATE VECTOR
# RPADTEM (-29) M EARTH RADIUS OF LAUNCH PAD OR LUNAR LANDING
# (-27) M MOON SITE.
# HPERMIN (-29) M EARTH (300 OR 35) KFT MINIMUM PERIGEE ALTITUDE
# (-27) M MOON ABOVE LAUNCH PAD OR LUNAR LANDING SITE.
# V82EMFLG (INT SW BIT) RESET FOR EARTH, SET FOR MOON.
#
# DEBRIS: QPRET, PDL, S2
# Page 522
COUNT* $$/SR30S
SR30.1 SETPD STQ # INITIALIZE PUSHDOWN LIST.
0
S2
# SR30.1 INPUT: RONE AT (-29)M EARTH/MOON
# VONE AT (-7)M/CS
# TFFCONMU, TFFRP/RA, CALCTPER, AND CALCTFF
# CALLS REQUIRE:
# EARTH CENTERED (NO RESCALING REQUIRED)
# RONE SCALED TO B-29 M
# VONE SCALED TO B-7 M/CS
# MOON CENTERED (RESCALING REQUIRED)
# RONE SCALED TO B-27 M
# VONE SCALED TO B-5 M/CS
BOFF VLOAD
V82EMFLG # OFF FOR EARTH, ON FOR MOON.
TFFCALLS
RONE
VSL2
STOVL RONE
VONE
VSL2
STORE VONE
TFFCALLS CALL
TFFCONMU
CALL # TFFRP/RA COMPUTES RAPO,RPER.
TFFRP/RA
# RETURNS WITH RAPO IN D(MPAC).
DSU
RPADTEM
BOFF SR2R # NEED HAPO AT (-29)M FOR DISPLAY.
# IF MOON CENTERED, RESCALE FROM (-27)M.
# IF EARTH CENTERED ALREADY AT (-29)M.
V82EMFLG # OFF FOR EARTH, ON FOR MOON.
+1
CALL # IF HAPO > MAXNM, SET HAPO =9999.9 NM.
MAXCHK # OTHERWISE STORE (RAPO-RPADTEM) IN HAPO.
STORHAPO STODL HAPOX
RPER
DSU
RPADTEM # GIVES HPER AT (-29)M EARTH, (-27)M MOON.
STORE MPAC +4 # SAVE THIS FOR COMPARISON TO HPERMIN.
BOFF SR2R # NEED HPER AT (-29)M FOR DISPLAY.
# IF MOON CENTERED, RESCALE FROM (-27)M.
# IF EARTH CENTERED ALREADY AT (-29)M.
V82EMFLG # OFF FOR EARTH, ON FOR MOON.
+1
CALL # IF HPER > MAXNM, SET HPER = 9999.9 NM.
MAXCHK
# Page 523
STORHPER STODL HPERX # STORE (RPER - RPADTEM) INTO HPERX.
MPAC +4
DSU BPL # HPERMIN AT (-29)M FOR EARTH, (-27)M MOON
HPERMIN # IF HPER L/ HPERMIN (300 OR 35) KFT,
DOTPER # THEN ZERO INTO -TPER.
DLOAD GOTO # OTHERWISE CALCULATE TPER.
HI6ZEROS
SKIPTPER
DOTPER DLOAD CALL
RPER
CALCTPER
DCOMP # TPER IS PUT NEG INTO -TPER.
SKIPTPER STODL -TPER
HPERMIN # HPERMIN AT (-29)M FOR EARTH, (-27)M MOON
DAD CALL
RPADTEM # RPADTEM AT (-29)M FOR EARTH, (-27)M MOON
CALCTFF # GIVES 59M59S FOR TFF IF RPER G/
DCOMP # HPERMIN + RPADTEM. (TPER WAS NON ZERO)
STCALL TFF # OTHERWISE COMPUTES TFF. (GOTO)
S2
MAXCHK DSU BPL # IF C(MPAC) > 9999.9 NM. MPAC = 9999.9 NM.
MAXNM
+3 # OTHERWISE C(MPAC) = B(MPAC).
DAD RVQ
MAXNM
+3 DLOAD RVQ # (USED BY P30 - P37 ALSO)
MAXNM
MAXNM 2OCT 0106505603
# Page 524
# There is no source code on this page --- HG 2009

290
R31.s Normal file
View File

@ -0,0 +1,290 @@
# Copyright: Public domain.
# Filename: R31.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 505-510
# Contact: Onno Hommes <ohommes@cmu.edu>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-11 OH Batch 2 Assignment Comanche Transcription
# 2009-05-20 RSB Corrected INSTALL -> INTSTALL
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 505
BANK 34
SETLOC R31
BANK
COUNT* $$/R31
R31CALL CAF PRIO3
TC FINDVAC
EBANK= SUBEXIT
2CADR V83CALL
DSPDELAY CAF 1SEC
TC BANKCALL
CADR DELAYJOB
CA EXTVBACT
MASK BIT12
EXTEND
BZF DSPDELAY
DISPN5X CA FLAGWRD9 # TEST R31FLAG (IN SUNDANCE R31FLAG WILL
MASK BIT4 # ALWAYS BE SET AS R34 DOES NOT EXIST.
EXTEND
BZF +3
CAF V16N54 # R31 USE NOUN 54
TC +2
CAF V16N53 # R34 USE NOUN 53
TC BANKCALL
CADR GOMARKF
TC B5OFF
TC B5OFF
TCF DISPN5X
V83 TC INTPRET
GOTO
HAVEBASE # INTEG STATE VECTORS
V83CALL TC INTPRET
GOTO
STATEXTP # EXTRAPOLATE STATE VECTORS
COMPDISP VLOAD VSU
RATT
RONE
PUSH ABVAL # RATT-RONE TO 0D PD= 6
STORE RANGE # METERS B-29
NORM VLOAD
X1 # RATT-RONE PD= 0
VSR1
VSL* UNIT
0,1
PDVL VSU # UNIT(LOS) TO 0D PD= 6
# Page 506
VATT
VONE
DOT # (VATT-VONE).UNIT(LOS) PD= 0
SL1
STCALL RRATE # RANGE RATE M/CS B-7
CDUTRIG # TO INITIALIZE FOR *NBSM*
CALL
R34LOS # NOTE. PDL MUST = 0.
R34ANG VLOAD UNIT
RONE
PDVL # UR TO 0D PD= 6
THISAXIS # UNITX FOR CM, UNITZ FOR LM
BON VLOAD # CHK R31FLAG. ON=R31 THETA, OFF=R34 PHI
R31FLAG
+2 # R31-THETA
12D
CALL
*NBSM*
VXM PUSH # UXORZ TO 6D PD=12D
REFSMMAT
VPROJ VSL2
0D
BVSU UNIT
6D
PDVL VXV # UP/2 TO 12D PD=18D
RONE
VONE
UNIT VXV
RONE
DOT PDVL # SIGN TO 12D, UP/2 TO MPAC PD=18D
12D
VSL1 DOT # UP.UXORZ
6D
SIGN SL1
12D
ACOS
STOVL RTHETA
RONE
DOT BPL
6D
+5
DLOAD BDSU # IF UXORZ.R NEG, RTHETA = 1 - RTHETA
RTHETA
DPPOSMAX
STORE RTHETA # RTHETA BETWEEN 0 AND 1 REV.
EXIT
CAF BIT5 # HAVE WE BEEN ANSWERED
MASK EXTVBACT
EXTEND
BZF ENDEXT # YES, DIE
# Page 507
CS EXTVBACT
MASK BIT12
ADS EXTVBACT
TCF V83
V16N54 VN 1654
V16N53 VN 1653
# Page 508
# STATEXTP DOES AN INITIAL PRECISION EXTRAPOLATION OF THE
# LEM STATE VECTOR TO PRESENT TIME OR TO PIPTIME IF AV G.
# IS ON AND SAVES AS BASE VECTOR. IF AV G IS ON RN + VN
# ARE USED AS THE CM STATE VECTOR AND THE INITIAL R RDOT
# RTHETA ARE COMPUTED WITH NO FURTHER INTEGRATION. IF AV
# G IS OFF A PRECISION EXTRAPOLATION IS MADE OF THE CM
# STATE VECTOR TO PRESENT TIME AND.....
#
# THE CM + LM STATE VECTORS ARE INTEGRATED TO PRES TIME
# USING PRECISION OR CONIC AS SURFFLAG IS SET OR CLEAR.
#
# IF AV G IS ON THEN
# SUBSEQUENT PASSES WILL PROVIDE
# USE OF RN + VN AS CM STATE VECTOR AND THE LM STATE
# VECTOR WILL BE PRECISION INTEGRATED USING LEMPREC
#
# IF SURFFLAG IS SET.
# CM STATE VECTOR RONE VONE + LM STATE VECTOR RATT
# VATT ARE USED IN COMPUTING R RDOT RTHETA.
#
STATEXTP RTB BOF # INITIAL INTEGRATION
LOADTIME
V37FLAG
+3 # AV G OFF, USE PRES TIME
CALL
GETRVN # ON, USE RN VN PIPTIME
STORE BASETIME # PRES TIME OR PIPTIME
STCALL TDEC1
LEMPREC
VLOAD # BASE VECTOR, LM
RATT1
STOVL BASEOTP # POS.
VATT1
STORE BASEOTV # VEL.
BON DLOAD
V37FLAG
COMPDISP # COMPUTE R RDOT RTHETA FROM
# RONE(RN) VONE(VN) RATT+VATT(LEMPREC)
TAT
STCALL TDEC1
CSMPREC
VLOAD # BASE VECTOR, CM
RATT1
STOVL BASETHP # POS.
VATT1
STORE BASETHV # VEL.
HAVEBASE BON RTB # SUBSEQUENT INTEGRATIONS
V37FLAG
GETRVN5
LOADTIME
STCALL TDEC1 # AV G OFF, SET INTEG, OF CM
INTSTALL
VLOAD CLEAR
BASETHP
# Page 509
MOONFLAG
STOVL RCV
BASETHV
STODL VCV
BASETIME
BOF SET # GET APPROPRIATE MOONFLAG SETTING
MOONTHIS
+2
MOONFLAG
CLEAR
INTYPFLG
BON SET
SURFFLAG
+2 # PREC. IF LM DOWN
INTYPFLG # CONIC IF LM NOT DOWN
STCALL TET
INTEGRVS # INTEGRATION --- AT LAST ---
VLOAD
RATT
STOVL RONE
VATT
STODL VONE # GET SET FOR CONIC EXTRAP., OTHER.
TAT
BON CALL
SURFFLAG
GETRVN6 # LEMPREC IF LM DOWN
INTSTALL # ..CONIC IF NOT DOWN
SET
INTYPFLG
OTHINT STORE TDEC1 # ENTERED IF AV G ON TO INTEG LM
VLOAD CLEAR
BASEOTP
MOONFLAG
STOVL RCV
BASEOTV
STODL VCV
BASETIME
BOF SET
MOONTHIS
+2
MOONFLAG
STCALL TET
INTEGRVS
GOTO
COMPDISP # COMPUTE R RDOT RTHETA
GETRVN5 CALL # AV G ON
GETRVN
BON CALL
SURFFLAG
GETRVN6 # LM DOWN, LMPREC
# Page 510
INTSTALL
CLEAR GOTO
INTYPFLG
OTHINT
GETRVN6 STCALL TDEC1
LEMPREC
GOTO
COMPDISP # COMPUTE R RDOT RTHETA
GETRVN STQ
0D
VLOAD GOTO # AV G ON, RONE = RN VONE = VN
RN # AND USE PIPTIME
+1
STCALL RONE
+1
VLOAD GOTO
VN
+1
STODL VONE
PIPTIME
GOTO
0D
SETLOC R34
BANK
R34LOS EXIT
CA CDUS
INDEX FIXLOC
TS 9D
CA CDUT
INDEX FIXLOC
TS 11D
CA FIXLOC
AD SIX
COM
INDEX FIXLOC
TS X1
TC INTPRET
CALL
SXTNB
STCALL 12D
R34ANG

387
R60_62.s Normal file
View File

@ -0,0 +1,387 @@
# Copyright: Public domain.
# Filename: R60_62.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 390-398
# Mod history: 2009-05-09 RSB Adapted from the Colossus249/ file
# of the same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 390
BANK 34
SETLOC MANUVER
BANK
EBANK= TEMPR60
COUNT 27/R60
# CONFORMS TO GSOP CHAPTER FOUR REVISION LOGIC 09 JAN 18, 1968
R60CSM TC MAKECADR
TS TEMPR60
# INSERT PRIODSP CHECK WITH R22 (V06N49) WITH JENNINGS BRODEUR
REDOMANN CAF BIT6
MASK FLAGWRD5 # IS 3-AXIS FLAG SET
CCS A
TCF TOBALL # YES
TC INTPRET
CALL
VECPOINT # TO COMPUTE FINAL ANGLES
STORE CPHI # STORE FINAL ANGLES -- CPHI, CTHETA, CPSI
EXIT
TOBALL CAF V06N18
TC BANKCALL
CADR GOPERF2R # DISPLAY PLEASE PERFORM AUTO MANEUVER
TC R61TEST
TC REDOMANC # PROCEED
TCF ENDMANU1 # ENTER I.E., FINISHED WITH R60
TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS
TC ENDOFJOB
REDOMANC CAF BIT6
MASK FLAGWRD5 # IS 3-AXIS FLAG SET
CCS A
TCF TOBALLC # YES
TC INTPRET
CALL
VECPOINT # TO COMPUTE FINAL ANGLES
STORE CPHI # STORE ANGLES
EXIT
TOBALLC CAF PRIO30 # IS MODE AUTO AND CTL GNC
# Page 391
EXTEND
RXOR CHAN31
MASK 13,14,15
EXTEND
BZF +2 # AUTO, NON-FLASH N18
TCF TOBALL # NOT AUTO
CAF V06N18 # STATIC UP NON-FLASHING V06 N18
TC BANKCALL
CADR GODSPR
TC CHKLINUS
STARTMNV TC BANKCALL
CADR GOMANUR
ENDMANUV TCF TOBALL # FINISHED MANEUVER.
ENDMANU1 TC DOWNFLAG # RESET 3-AXIS FLAG
ADRES 3AXISFLG # BIT 6 FLAG 5
CAE TEMPR60
TC BANKJUMP
CHKLINUS CS FLAGWRD4
MASK BIT12 # IS PRIORITY DISPLAY FLAG SET?
CCS A
TC Q # NO -- EXIT
CA Q
TS MPAC +2 # SAVE RETURN
CS THREE # OBTAIN LOCATION FOR RESTART
AD BUF2 # HOLD Q OF LAST DISPLAY
TS TBASE1
TC PHASCHNG
OCT 71 # 1.7SPOT FOR RELINUS
CAF BIT7
TC LINUS # GO SET BITS FOR PRIORITY DISPLAY
TC MPAC +2
RELINUS CAF BIT5 # IS TRACK FLAG ON
MASK FLAGWRD1
EXTEND
BZF GOREDO20 # NO
TC UPFLAG
ADRES PDSPFLAG # R60 PRIODSP FLAG
TC UPFLAG
ADRES TARG1FLG # FOR R52
CAF ZERO # RESET TO ZERO, SINCE
# Page 392
TS OPTIND # OPTIND WAS SET TO -1 BY V379
CAF PRIO14 # RESTORE ORIGINAL PRIORITY
TC PRIOCHNG
TC TBASE1
GOREDO20 TC PHASCHNG
OCT 111 # 1.11 FOR PIKUP20
TC ENDOFJOB
R61TEST CA MODREG # ARE WE IN P00. IF YES THIS MUST BE
EXTEND # VERB49 OR VERB89 SO DO ENDEXT.
BZF ENDMANU1 # RESET 3-AXIS & RETURN. USER DOES ENDEXT
CA FLAGWRD4 # ARE WE IN R61 (P20)
MASK BIT12
EXTEND
BZF GOTOP00H # NO
TC GOTOV56 # YES
BIT14+7 OCT 20100
V06N18 VN 0618
# Page 393
# PROGRAM DESCRIPTION -- VECPOINT
#
# THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION. THE AXIS
# TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY
# BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.
# THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN
# SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM. THE COMPONENTS OF THIS
# VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES. WITH THIS INFORMTION VECPOINT COMPUTES A SET OF THREE GIMBAL
# ANGLES (2'S COMPLEMENT) CORRESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM
# IN T(MPAC) BEFORE RETURNING TO THE CALLER.
#
# THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK. WHEN POINTING A VECTOR IN THE Y-Z PLANE,
# THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROGLEM BY ROTATING THE CROSS-
# PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL
# LOCK. IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR -X) AXIS,
# THE ADDITIONAL ROTATION TO AVOID GIMBAL LOCK IS 35 DEGREES. IF THE AXIS IS MORE THAN 60.5 DEGREES FROM +X (OR -X)
# THE ADDITIONAL ROTATION IS 35 DEGREES. THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND
# STORED AS 2'S COMPLEMENT ANGLES N T(MPAC) BEFORE RETURNING TO THE CALLER.
#
# WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT
# CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK. IN THIS CASE A PLATFORM REALIGNMENT WOULD BE
# REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION. AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION
# EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES.
#
# CALLING SEQUENCE
#
# 1) LOAD SCAXIS, POINTVSM
# 2) CALL
# VECPOINT
#
# RETURNS WITH
#
# 1) DESIRED OUTER GIMBAL ANGLE IN MPAC
# 2) DESIRED INNER GIMBAL ANGLE IN MPAC +1
# 3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2
#
# ERASABLES USED --
#
# 1) SCAXIS 6
# 2) POINTVSM 6
# 3) MIS 18
# 4) DEL 18
# 5) COF 6
# 6) VECQTEMP 1
# 7) ALL OF VAC AREA 43
#
# TOTAL 99
SETLOC VECPT
BANK
# Page 394
EBANK= BCDU
COUNT 27/VECPT
VECPOINT STQ BOV # SAVE RETURN ADDRESS
VECQTEMP
VECLEAR # AND CLEAR OVFIND
VECLEAR AXC,2 RTB
MIS # READ THE PRESENT CDU ANGLES AND
READCDUK # STORE THEM IN PD25, 26, 27
STCALL 25D
CDUTODCM # S/C AXES TO STABLE MEMBER AXES (MIS)
VLOAD VXM
POINTVSM # RESOLVE THE POINTING DIRECTION VF INTO
MIS # INITIAL S/C AXES (VF = POINTVSM)
UNIT
STORE 28D
# PD 28 29 30 31 32 33
VXV UNIT # TAKE THE CROSS PRODUCT VF X VI
SCAXIS # WHERE VI = SCAXIS
BOV VCOMP
PICKAXIS
STODL COF # CHECK MAGNITUDE
36D # OF CROSS PRODUCT
DSU BMN # VECTOR, IF LESS
DPB-14 # THAN B-14 ASSUME
PICKAXIS # UNIT OPERATION
VLOAD DOT # INVALID.
SCAXIS
28D
SL1 ARCCOS
COMPMATX CALL # NO COMPUTE THE TRANSFORMATION FROM
DELCOMP # FINAL S/C AXES TO INITIAL S/C AXES MFI
AXC,1 AXC,2
MIS # COMPUTE THE TRANSFORMATION FROM FINAL
DEL # S/C AXES TO STABLE MEMBER AXES
CALL # MFS = MIS MFI
MXM3 # (IN PD LIST)
DLOAD ABS
6 # MFS6 = SIN(CPSI) $2
DSU BMN
SINGIMLC # = SIN(59 DEGS) $2
FINDGIMB # /CPSI/ LESS THAN 59 DEGS.
# I.E., DESIRED ATTITUDE NOT IN GIMBAL LOCK
DLOAD ABS # CHECK TO SEE IF WE ARE POINTING
SCAXIS # THE THRUST AXIS
DSU BPL
SINVEC1 # SIN 49.4 DEGS $2
# Page 395
FINDGIMB # IF SO, WE ARE TRYING TO POINT IT INTO
VLOAD # GIMBAL LOCK, ABORT COULD GO HERE
STADR
STOVL MIS +12D
STADR # STORE MFS (IN PD LIST) IN MIS
STOVL MIS +6
STADR
STOVL MIS
MIS +6 # INNER GIMBAL AXIS IN FINAL S/C AXES
BPL VCOMP # LOCATE THE IG AXIS DIRECTION CLOSEST TO
IGSAMEX # FINAL X S/C AXIS
IGSAMEX VXV BMN # FIND THE SHORTEST WAY OF ROTATING THE
SCAXIS # S/C OUT OF GIMBAL LOCK BY A ROTATION
U=SCAXIS # ABOUT +- SCAXIS, I.E., IF (IG (SGN MFS3)
# X SCAXIS . XF) LESS THAN Q, U = SCAXIS
# OTHERWISE U = -SCAXIS.
VLOAD VCOMP
SCAXIS
STCALL COF # ROTATE ABOUT -SCAXIS
CHEKAXIS
U=SCAXIS VLOAD
SCAXIS
STORE COF # ROTATE ABOUT + SCAXIS
CHEKAXIS DLOAD ABS
SCAXIS # SEE IF WE ARE POINTING THE AOT
DSU BPL
SINVEC2 # SIN 29.5 DEGS $2
PICKANG1 # IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS
DLOAD GOTO # IF NOT, MUST BE POINTING THE TRANSPONDER
VECANG2 # OR SOME VECTOR IN THE Y, OR Z PLANE
COMPMFSN # IN THIS CASE ROTATE 35 DEGS TO GET OUT
# OF GIMBAL LOCK (VECANG2 $360)
PICKANG1 DLOAD
VECANG1 # = 50 DEGS. $360
COMPMFSN CALL
DELCOMP # COMPUTE THE ROTATION ABOUT SCAXIS TO
AXC,1 AXC,2 # BRING MFS OUT OF GIMBAL LOCK
MIS
DEL
CALL # COMPUTE THE NEW TRANSFORMATION FROM
MXM3 # DESIRED S/C AXES TO STABLE MEMBER AXES
# WHICH WILL ALIGN VI WITH VF AND AVOID
# GIMBAL LOCK
FINDGIMB AXC,1 CALL
0 # EXTRACT THE COMMANDED CDU ANGLES FROM
DCMTOCDU # THIS MATRIX
RTB SETPD
V1STO2S # CONVERT TO 2'S COMPLEMENT
# Page 396
0
GOTO
VECQTEMP # RETURN TO CALLER
PICKAXIS VLOAD DOT # IF VF X VI = 0, FIND VF, VI
28D
SCAXIS
BMN TLOAD
ROT180
25D
GOTO # IF VF = VI, CDU DESIRED = PRESENT CDU
VECQTEMP # PRESENT CDU ANGLES
ROT180 VLOAD VXV # IF VF, VI ANTI-PARALLEL, 180 DEG ROTATION
MIS +6 # IS REQUIRED. Y STABLE MEMBER AXIS IN
HIUNITX # INITIAL S/C AXES.
UNIT VXV # FIND Y(SM) X X(I)
SCAXIS # FIND UNIT(VI X UNIT(Y(SM) X X(I)))
UNIT BOV # I.E., PICK A VECTOR IN THE PLANE OF X(I),
PICKX # Y(SM) PERPENDICULAR TO VI
STODL COF
36D # CHECK MAGNITUDE
DSU BMN # OF THIS VECTOR.
DPB-14 # IF LESS THAN B-14,
PICKX # PICK X-AXIS.
VLOAD
COF
XROT STODL COF
HIDPHALF
GOTO
COMPMATX
PICKX VLOAD GOTO # PICK THE XAXIS IN THIS CASE
HIUNITX
XROT
BANK 35
SETLOC MANUVER1
BANK
SINGIMLC 2DEC .4285836003 # = SIN(59) $2
SINVEC1 2DEC .3796356537 # = SIN(49.4) $2
SINVEC2 2DEC .2462117800 # = SIN(29.5) $2
VECANG1 2DEC .1388888889 # = 50 DEGREES $360
VECANG2 2DEC .09722222222 # = 35 DEGREES $360
1BITDP OCT 0 # KEEP THIS BEFORE DPB(-14) ********
DPB-14 OCT 00001
# Page 397
OCT 00000
BANK 34
SETLOC MANUVER
BANK
# Page 398
# ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)
EBANK= CPHI
COUNT 27/R62
R62DISP CAF V06N22 # DISPLAY COMMAND ICDUS CPHI, CTHETA, CPHI
TC BANKCALL
CADR GOFLASH
TCF ENDEXT
TCF GOMOVE # PROCEED
TCF R62DISP # ENTER
# ASTRONAUT MAY LOAD NEW ICDUS AT THIS
# POINT.
GOMOVE TC UPFLAG # SET FOR 3-AXIS MANEUVER
ADRES 3AXISFLG
TC BANKCALL
CADR R60CSM
TCF ENDEXT

156
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

103
RADAR_LEADIN_ROUTINES.s Normal file
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,85 @@
# Copyright: Public domain.
# Filename: RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1037-1038
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images.
# 2009-05-20 RSB A "Page N" comment was corrected.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum. The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
# thanks to both. The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo. If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1037
# CALCULATION OF AMGB, AMBG ONCE EVERY SECOND
#
# AMGB = 1 SIN(PSI) 0
# 0 COS(PSI)COS(PHI) SIN(PHI)
# 0 -COS(PSI)SIN(PHI) COS(PHI)
#
# AMBG = 1 -TAN(PSI)COS(PHI) TAN(PSI)SIN(PHI)
# 0 COS(PHI)/COS(PSI) -SIN(PHI)/COS(PSI)
# 0 SIN(PHI) COS(PHI)
#
# WHERE PHI AND PSI ARE CDU ANGLES
BANK 20
SETLOC DAPS8
BANK
COUNT* $$/DAPEX
EBANK= KMPAC
AMBGUPDT CA FLAGWRD6 # CHECK FOR RCS AUTOPILOT
EXTEND
BZMF ENDOFJOB # BIT15 = 0, BIT14 = 1
MASK BIT14 # IF NOT RCS, EXIT
EXTEND
BZF ENDOFJOB # TO PROTECT TVC DAP ON SWITCHOVER
CA CDUZ
TC SPSIN2
TS AMGB1 # CALCULATE AMGB
CA CDUZ
TC SPCOS2
TS CAPSI # MUST CHECK FOR GIMBAL LOCK
CAF QUADANGL # = 7.25 DEGREES JET QUAD ANGULAR OFFSET
EXTEND
MSU CDUX
COM # CDUX - 7.25 DEG
TC SPCOS1
TS AMGB8
EXTEND
MP CAPSI
TS AMGB4
CAF QUADANGL
EXTEND
MSU CDUX
COM # CDUX - 7.25 DEG
TC SPSIN1
TS AMGB5
EXTEND
MP CAPSI
COM
# Page 1038
TS AMGB7
TCF ENDOFJOB
QUADANGL DEC 660 # = 7.25 DEGREES

976
RCS-CSM_DIGITAL_AUTOPILOT.s Normal file
View File

@ -0,0 +1,976 @@
# Copyright: Public domain.
# Filename: RCS-CSM_DIGITAL_AUTOPILOT.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1002-1024
# Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 1002
# T5 INTERRUPT PROGRAM FOR THE RCS-CSM AUTOPILOT
# START OF T5 INTERRUPT PROGRAM
BANK 20
SETLOC DAPS3
BANK
COUNT 21/DAPRC
EBANK= KMPAC
REDORCS LXCH BANKRUPT # RESTART OF AUTOPILOT COMES HERE
CA T5PHASE # ON A T5 RUPT
EXTEND
BZMF +2 # IF T5PHASE +0, -0, OR -, RESET TO -
TCF +3 # IF T5PHASE +, LEAVE IT +. DO A FRESHDAP
CS ONE
TS T5PHASE
EXTEND
DCA RCSLOC
DXCH T5LOC # HOOK UP T5RUPT TO AUTOPILOT
TCF RCSATT +1
EBANK= KMPAC
RCSLOC 2CADR RCSATT
RCSATT LXCH BANKRUPT # SAVE BB
EXTEND # SAVE Q
QXCH QRUPT
CAF BIT15 # BIT15 CHAN31 = 0 IF IMU POWER IS ON AND
EXTEND # S/C CONT SW IS IN CMC (I.E., IF G/C AUTO
RAND CHAN31 # PILOT IS FULLY ENABLED)
EXTEND
BZF SETT5 # IF G/C AUTOPILOT IS FULLY ENABLED,
# GO TO SETT5
CS RCSFLAGS # IF G/C AUTOPILOT IS NOT FULLY ENABLED,
MASK BIT14
ADS RCSFLAGS # SET NORATE FLAG,
CAF POSMAX
TS HOLDFLAG # SET HOLDFLAG +,
CAF ZERO # ZERO ERRORX, ERRORY, AND ERRORZ,
TS ERRORX
TS ERRORY
TS ERRORZ
CAF BIT14
EXTEND
RAND CHAN31 # AND CHECK FREE FUNCTION (BIT14 CHAN31).
EXTEND
# Page 1003
BZF SETT5 # IF IN FREE MODE, GO TO SETT5.
TS T5PHASE # IF NOT IN FREE MODE,
CAF OCT37766 # SCHEDULE REINITIALIZATION (FRESHDAP)
TS TIME5 # IN 100 MS VIA T5RUPT
TCR ZEROJET # ZERO JET CHANNELS IN 14 MS VIA ZEROJET
TCF KMATRIX
DELTATT OCT 37770 # 80MS (TIME5)
DELTATT2 OCT 37776 # 20MS (TIME5)
ONESEK DEC 16284 # 1 SEC(TIME5)
CHAN5 EQUALS 5
CHAN6 EQUALS 6
PRIO34A = PRIO34
# CHECK PHASE OF T5 PROGRAM
#
# BECAUSE OF THE LENGTH OF THE T5 PROGRAM,IT HAS BEEN DIVIDED INTO
# THREE PARTS, T5PHASE1, T5PHASE2, AND THE JET SELECTION LOGIC,
# TO ALLOW FOR THE EXECUTION OF OTHER
# INTERRUPTS. T5PHASE IS ALSO USED IN THE INITIALIZATION OF THE AUTOPILOT
# VARIABLES AT TURN ON.
#
# THE CODING OF T5PHASE IS...
#
# + = INITIALIZE T5 RCS-CSM AUTOPILOT
# T5PHASE = +0 = PHASE2 OF THE T5 PROGRAM
# - = RESTART DAP
# -0 = PHASE1 OF THE T5 PROGRAM
SETT5 CCS T5PHASE
TCF FRESHDAP # TURN ON AUTOPILOT
TCF T5PHASE2 # BRANCH TO PHASE2 OF PROGRAM
TCF REDAP # RESTART AUTOPILOT
TS T5PHASE # PHASE 1 RESET FOR PHASE 2
CA TIME5
TS T5TIME # USED IN COMPENSATING FOR DELAYS IN T5
CAF DELTATT2 # RESET FOR T5RUPT IN 20MS FOR PHASE2
TS TIME5 # OF PROGRAM
# Page 1004
# IMU STATUS CHECK
CS IMODES33 # CHECK IMU STATUS
MASK BIT6 # BIT6 = 0 IMU OK
CCS A # BIT6 = 1 NO IMU
TCF RATEFILT
FREECHK CS RCSFLAGS # BIT14 INDICATES THAT RATES HAVE NOT BEEN
MASK BIT14 # INITIALIZED
ADS RCSFLAGS
CAF BIT14 # NO ATTITUDE REFERENCE
TS HOLDFLAG # STOP ANY AUTOMATIC STEERING AND PREPARE
# TO PICK UP CDU ANGLES UPON RESUMPTION OF
# ATTITUDE HOLD
EXTEND
RAND CHAN31 # CHECK FOR FREE MODE
EXTEND
BZF KRESUME1 # IN FREE MODE PROVIDE FREE CONTROL ONLY
TCF REINIT # .....TILT...............................
BITS4,5 OCT 30
RATEFILT CA RCSFLAGS # SEE IF RATEFILTER HAS BEEN INITIALIZED
MASK BIT14
EXTEND # IF SO, PROCEED WITH RATE DERIVATION
BZF +2
TCF KMATRIX # IF NOT, SKIP RATE DERIVATION
# RATE FILTER TIMING = 7.72 MS
#
# RATE FILTER EQUATIONS
#
#
# DRHO = DELRHO - (.1)ADOT + (1 = GAIN1)DRHO
# -1
#
# ADOT = ADOT + GAIN2 DRHO + KMJ DFT
# -1
# _ * _ _
# WHERE DELRHO = AMGB (CDU - CDU )
# -1
CAF TWO
DRHOLOOP TS SPNDX
DOUBLE
TS DPNDX
INDEX DPNDX
CS DRHO # DRHO SCALED 180 DEGS
EXTEND
INDEX ATTKALMN # PICK UP DESIRED FILTER GAIN
MP GAIN1
INDEX DPNDX
DAS DRHO # (1 -.064) DRHO
EXTEND
# Page 1005
INDEX DPNDX
DCS ADOT
DXCH KMPAC # -(.1)ADOT
CA QUARTER
TC SMALLMP
DXCH KMPAC
INDEX DPNDX
DAS DRHO
CCS SPNDX
TCF DRHOLOOP
CA CDUX # MEASURED BODY RATES--
XCH RHO
EXTEND
MSU RHO # _ * _ _
COM # DELRHO = AMGB (CDU - CDU )
# -1
ZL
DXCH DELTEMPX
CA CDUY
XCH RHO1
EXTEND
MSU RHO1
COM
TS T5TEMP # (CDUY - RHO1) SCALED 90 DEGS
EXTEND
MP AMGB1
DAS DELTEMPX # DELTEMPX = (CDUX-RHO) + AMGB1(CDUY-RHO1)
# MUST BE DOUBLE PRECISION OR WILL LOSE
# PULSES
CA AMGB4
EXTEND
MP T5TEMP
DXCH DELTEMPY
CA AMGB7
EXTEND
MP T5TEMP
DXCH DELTEMPZ
CA CDUZ
XCH RHO2
EXTEND
MSU RHO2
COM
TS T5TEMP # (CDUZ - RHO2) SCALED 90 DEGS
EXTEND
MP AMGB5
DAS DELTEMPY # DELTEMPY = AMGB4(CDUY-RHO1)
# + AMGB5(CDUZ-RHO2)
CA AMGB8
EXTEND
# Page 1006
MP T5TEMP
DAS DELTEMPZ # DELTEMPZ = AMBG7(CDUY-RHO1)
# + AMGB8(CDUZ-RHO2)
CAF TWO
ADOTLOOP TS SPNDX
DOUBLE
TS DPNDX
EXTEND
INDEX DPNDX
DCA DELTEMPX
INDEX DPNDX
DAS DRHO
EXTEND
INDEX DPNDX
DCA DELTEMPX
INDEX DPNDX
DAS MERRORX
INDEX DPNDX
CA DRHO
DOUBLE # N.B.
DOUBLE # N.B.
EXTEND
INDEX ATTKALMN # PICK UP DESIRED FILTER GAINS
MP GAIN2
INDEX DPNDX # ADOT + (.16)(.1)DRHO
DAS ADOT # -1
INDEX SPNDX # S/C TORQUE TO INERTIA RATIO
CA KMJ # SCALED (450)(1600)/(57.3)(16384)=1/1.3
EXTEND
INDEX SPNDX
MP DFT
INDEX DPNDX
DAS ADOT # KMJ(DFT)
CCS SPNDX
TCF ADOTLOOP # END CALCULATION OF VEHICLE RATES
KMATRIX CA ATTSEC
MASK LOW4
CCS A
TCF TENTHSEK
CAF PRIO34 # CALL FOR 1 SEC UPDATE OF TRANSFORMATION
TC NOVAC # MATRIX FROM GIMBAL AXES TO BODY AXES
EBANK= KMPAC
2CADR AMBGUPDT
CAF NINE
TENTHSEK TS ATTSEC
# Page 1007
# WHEN AUTOMATIC MANEUVERS ARE BEING PERFORMED, THE FOLLOWING ANGLE ADDITION MUST BE MADE TO PROVIDE A SMOOTH
# SEQUENCE OF ANGULAR COMMANDS TO THE AUTOPILOT--
#
# CDUXD = CDUXD + DELCDUX (DOUBLE PRECISION)
# CDUYD = CDUYD + DELCDUY (DOUBLE PRECISION)
# CDUZD = CDUZD + DELCDUZ (DOUBLE PRECISION)
#
# THE STEERING PROGRAMS:
# 1) ATTITUDE MANEUVER ROUTINE
# 2) LEM TRACKING
#
# SHOULD GENERATE THE DESIRED ANGLES (CDUXD, CDUYD, CDUZD) AS WELL AS THE INCREMENTAL ANGLES (DELCDUX, DELCDUY,
# DELCDUZ) SO THAT THE GIMBAL ANGLE COMMANDS CAN BE INTERPOLATED BETWEEN UPDATES.
#
# HOLDFLAG CODING:
#
# + = GRAB PRESENT CDU ANGLES AND STORE IN THETADX, THETADY, THETADZ
# AND PERFORM ATTITUDE HOLD ABOUT THESE ANGLES
# ALSO IGNORE AUTOMATIC STEERING
# SET = + BY
# 1) INITIALIZATION PHASE OF AUTOPILOT
# 2) OCCURANCE OF RHC COMMANDS
# 3) FREE MODE
# 4) SWITCH OVER TO ATTITUDE HOLD FROM AUTO
# WHILE DOING AUTOMATIC STEERING (IN THIS CASE
# HOLDFLAG IS NOT ACTUALLY SET TO +, BUT THE LOGIC
# FUNCTIONS AS IF IT WERE.)
# 5) S/C CONTROL SWITCH IS SCS
# 6) IMU POWER OFF
# +0 = IN ATTITUDE HOLD ABOUT A PREVIOUSLY ESTABLISHED REFERENCE
# - = PERFORMING AUTOMATIC MANEUVER
# -0 = NOT USED AT PRESENT
#
# NOTE THAT THIS FLAG MUST BE SET = - BY THE STEERING PROGRAM IF IT IS TO COMMAND THE AUTOPILOT.
# SINCE ASTRONAUT ACTION MAY CHANGE THE HOLDFLAG SETTING, IT SHOULD BE MONITORED BY THE STEERING PROGRAM TO
# DETERMINE IF THE AUTOMATIC SEQUENCE HAS BEEN INTERRUPTED AND IF SO, TAKE THE APPROPRIATE ACTION.
CS HOLDFLAG
EXTEND
BZMF DACNDLS # IF HOLDFLAG +0,-0,+, BYPASS AUTOMATIC
# COMMANDS.
DCDUINCR CAF TWO
DELOOP TS SPNDX
DOUBLE
TS DPNDX
EXTEND
INDEX A
DCA CDUXD
# Page 1008
DXCH KMPAC
EXTEND
INDEX DPNDX
DCA DELCDUX
TC DPADD
EXTEND
DCA KMPAC
INDEX SPNDX
TS THETADX
INDEX DPNDX
DXCH CDUXD
CCS SPNDX
TCF DELOOP
# Page 1009
# RCS-CSM AUTOPILOT ATTITUDE ERROR DISPLAY
#
# THREE TYPES OF ATTITUDE ERRORS MAY BE DISPLAYED ON THE FDAI:
#
# MODE 1) AUTOPILOT FOLLOWING ERRORS SELECTED BY V61E
# GENERATED INTERNALLY BY THE AUTOPILOT
#
# MODE 2) TOTAL ATTITUDE ERRORS SELECTED BY V62E
# WITH RESPECT TO THE CONTENTS OF N22
#
# MODE 3) TOTAL ASTRONAUT ATTITUDE ERRORS SELECTED BY V63E
# WITH RESPECT TO THE CONTENTS OF N17
#
# MODE 1 IS PROVIDED AS A MONITOR OF THE RCS DAP AND ITS ABILITY TO TRACK AUTOMATIC STEERING COMMANDS. IN THIS
# MODE THE ATTITUDE ERRORS WILL BE ZEROED WHEN THE CMC MODE SWITCH IS IN FREE.
#
# MODE 2 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED
# IN N22. THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES
# AS A FLY-TO INDICATOR.
#
# MODE 3 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED
# IN N17. THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES
# AS A FLY-TO INDICATOR.
#
# V60 IS PROVIDED TO LOAD N17 WITH A SNAPSHOT OF THE CURRENT CDU ANGLES, THUS SYNCHRONIZING THE MODE 3 DISPLAY
# WITH THE CURRENT S/C ATTITUDE. THIS VERB MAY BE USED AT ANY TIME.
#
# THESE DISPLAYS WILL BE AVAILABLE IN ANY MODE (AUTO, HOLD, FREE, G+N, OR SCS) ONCE THE RCS DAP HAS BEEN
# INITIATED VIA V46E. MODE 1, HOWEVER, WILL BE MEANINGFUL ONLY IN G+N AUTO OR HOLD. THE CREW MAY PRESET (VIA
# V25N17) AN ATTITUDE REFERENCE (DESIRED GIMBAL ANGLES) INTO N17 AT ANY TIME.
DACNDLS CS RCSFLAGS # ALTERNATE BETWEEN FDAIDSP1 AND FDAIDSP2
MASK BIT4
EXTEND
BZF FDAIDSP2
FDAIDSP1 ADS RCSFLAGS
TC NEEDLER
KRESUME1 TCF RESUME # END PHASE 1
# Page 1010
# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE
#
# PROGRAM DESCRIPTION: D. KEENE 5/24/67
#
# 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 TRANFERRED 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 CORRESPONDS TO 16 7/8 DEGREES OF ATTITUDE ERROR
# (= 384 BITS IN IMU ERROR COUNTER)
#
# A CALL TO NEEDLER WILL THEN 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 PRORAM ARE
# REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.
# NOTE: EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50MS TO ASSURE PROPER RELAY SEQUENCING.
#
# ERASABLE USED:
# AK CDUXCMD
# AK1 CDUYCMD
# AK2 CDUZCMD
# EDRIVEX A,L,Q
# EDRIVEY T5TEMP
# EDRIVEZ SPNDX
#
# SWITCHES; RCSFLAGS BITS 3,2
#
# I/O CHANNELS: CHAN12 BIT 4 (COARSE ALIGN - READ ONLY)
# Page 1011
# 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 CAF BIT4 # CHECK FOR COARSE ALIGN ENABLE
EXTEND # IF IN COARSE ALIGN DO NOT USE IMU
RAND CHAN12 # ERROR COUNTERS. DON'T USE NEEDLES
EXTEND
BZF NEEDLER1
CS RCSFLAGS # SET BIT3 FOR INITIALIZATION PASS
MASK BIT3
ADS RCSFLAGS
TC Q
NEEDLER1 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
TC Q # END PASS1
NEEDLER2 CAF BIT6 # ENABLE IMU ERROR COUNTERS
EXTEND
WOR CHAN12
CS SIX # RESET RCSFLAGS TO DISPLAY ATTITUDE
# Page 1012
MASK RCSFLAGS # ERRORS WAIT AT LEAST 4 MS FOR
TS RCSFLAGS # RELAY CLOSURE
TC Q
NEEDLES3 CAF BIT6 # CHECK TO SEE IF IMU ERROR COUNTER
EXTEND # IS ENABLED
RAND CHAN12
EXTEND # IF NOT RECYCLE NEEDLES
BZF NEEDLER +5
NEEDLES CAF TWO
DACLOOP TS SPNDX
CS QUARTER
EXTEND
INDEX SPNDX
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 SPNDX
CS EDRIVEX # CURRENT VALUE OF DAC
AD L
INDEX SPNDX
ADS CDUXCMD
INDEX SPNDX
LXCH EDRIVEX
CCS SPNDX
TCF DACLOOP
CAF 13,14,15
EXTEND
WOR CHAN14 # SET DAC ACTIVITY BITS
TC Q
REINIT CAF DELAY200 # ........TILT LOGIC
TS TIME5 # REINITIALIZE DAP IN 200MS
TS T5PHASE
TCF RESUME
DELAY200 DEC 16364 # 200MS
DEC -384
# Page 1013
DACLIMIT DEC 16000
DEC 384
# Page 1014
# INITIALIZATION PROGRAM FOR RCS-CSM AUTOPILOT
#
# THE FOLLOWING QUANTITIES WILL BE ZEROED AND SHOULD APPEAR IN CONSECUTIVE LOCATIONS IN MEMORY AFTER WBODY
#
# WBODY (+1) DFT TAU2
# WBODY1 (+1) DFT1 BIAS
# WBODY2 (+1) DFT2 BIAS1
# ADOT (+1) DRHO (+1) BIAS2
# ADOT1 (+1) DRHO1 (+1) ERRORX
# ADOT2 (+1) DRHO2 (+1) ERRORY
# MERRORX (+1) ATTSEC ERRORZ
# MERRORY (+1) TAU
# MERRORZ (+1) TAU1
FRESHDAP CAF ONE # RESET HOLDFLAG TO STOP AUTOMATIC
TS HOLDFLAG # STEERING AND PREPARE TO PICK UP AN
# ATTITUDE HOLD REFERENCE
REDAP TC IBNKCALL # DECODE DAPDATR1, DAPDATR2 FOR DEADBANDS
CADR S41.2 # RATES, QUADFAILS, QUAD MANAGEMENT
TC IBNKCALL # DECODE IXX, IAVG, AND CONVERT
CADR S40.14 # TO AUTOPILOT GAINS
CAF NO.T5VAR # NO. LOCATIONS TO BE ZEROED MINUS ONE
ZEROT5 TS SPNDX # ZERO ALL NECESSARY ERASABLE REGISTERS
CAF ZERO
INDEX SPNDX
TS WBODY
CCS SPNDX
TCF ZEROT5
TCR ZEROJET
CS ZERO
TS CHANTEMP # INITIALIZE MINIMUM IMPULSE CONTROL
TS CH31TEMP # INITIALIZE RHC POSITION MEMORY FOR
# MANUAL RATE MODES
CAF =.24
TS SLOPE # INITIALIZE SWITCHING LOGIC SLOPE
CAF FOUR
TS T5TIME # PHASE 0 RESETS FOR PHASE 2 INTERRUPT IN
# 60 MS. PHASE 2 RESETS FOR PHASE 1 RUPT
# IN (80MS - T5TIME(40MS)). THEREFORE
# PHASE 1 (RATEFILTER) BEGINS CYCLING 100
# MS FROM NOW AND EVERY 100MS THEREAFTER.
CAF ELEVEN
TS ATTKALMN # RESET TO PICK UP KALMAN FILTER TAINS
# TO INITIALIZE THE S/C ANGULAR RATES
# Page 1015
CA CDUX
TS RHO
CA CDUY
TS RHO1
CA CDUZ
TS RHO2
CAF ZERO # RESET AUTOPILOT TO BEGIN EXECUTING
TS T5PHASE # PHASE2 OF PROGRAM
CS IMODES33 # CHECK IMU STATUS
MASK BIT6 # IF BIT6 = 0 IMU IN FINE ALIGN
CCS A # IF BIT6 = 1 IMU NOT READY
TCF IMUAOK
TS ATTKALMN # CANNOT USE IMU
CAF RCSINITB # PROVIDE FREE CONTROL ONLY
TCF RCSSWIT # DON'T START UP RATE FILTER
# SIGNAL NO RATE FILTER
IMUAOK CAF PRIO34 # START MATRIX INITIALIZATION
TC NOVAC # BYPASS IF IMU NOT IN FINE ALIGN
EBANK= KMPAC
2CADR AMBGUPDT
CAF RCSINIT # CLEAR BIT14 --ASSUME WE HAVE A GOOD IMU
RCSSWIT TS RCSFLAGS # CLEAR BIT1 --INITIALIZE T6 PROGRAM
# SET BIT3 --INITIALIZE NEEDLES
# CLEAR BIT4 --RESET FOR FDAIDSP1
CAF T5WAIT60 # NEXT T5RUPT 60 MS FROM NOW TO ALLOW IMU
# ERROR COUNTER TO ZERO.
# (MINIMUM DELAY = 15 MS)
TS TIME5 # SINCE ATTKALMN IS +11, PROGRAM WILL THEN
TC RESUME # PICK UP THE KALMAN FILTER GAINS. RATE
# FILTER WILL BEGIN OPERATING ZOOMS FROM
# NOW
# CONSTANTS USED IN INITIALIZATION PROGRAM
NO.T5VAR DEC 36
=.24 DEC .24 # = SLOPE OF 0.6/SEC
RCSINIT OCT 00004
RCSINITB OCT 20004
T5WAIT60 DEC 16378 # = 6 CS
EBANK= KMPAC
T6ADDR 2CADR T6START
ZEROJET CAF ELEVEN # ZERO BLAST2, BLAST1, BLAST, YWORD2,
TS SPNDX # YWORD1, PWORD2, PWORD1, RWORD2,
CAF ZERO # AND RWORD1
# Page 1016
INDEX SPNDX
TS RWORD1
CCS SPNDX
TCF ZEROJET +1
CAF FOUR
TS BLAST1 +1
CAF ELEVEN
TS BLAST2 +1
CS BIT1
MASK RCSFLAGS
TS RCSFLAGS # RESET BIT1 OF RCSFLAGS TO 0
EXTEND
DCA T6ADDR
DXCH T6LOC
CAF =+14MS # ENABLE T6RUPT TO SHUT OFF JETS IN 14 MS.
TS TIME6
CAF BIT15
EXTEND
WOR CHAN13
TC Q
T5PHASE2 CCS ATTKALMN # IF (+) INITIALIZE RATE ESTIMATE
TCF KALUPDT
TCF +2 # ONLY IF ATTKALMN POSITIVE
TCF +1
CA DELTATT2 # RESET FOR PHASE3 IN 20 MS
XCH TIME5 # (JET SELECTION LOGIC)
ADS T5TIME # TO COMPENSATE FOR DELAYS IN T5RUPT
CA RCSFLAGS # IF A HIGH RATE AUTO MANEUVER IS IN
MASK BIT15 # PROGRESS (BIT 15 OF RCSFLAGS SET), SET
EXTEND # ATTKALMN TO -1
BZF NOHIAUTO # OTHERWISE SET ATTKALMN TO 0.
CS ONE
NOHIAUTO TS ATTKALMN
# Page 1017
# MANUAL ROTATION COMMANDS
CS OCT01760 # RESET FORCED FIRING BITS (BITS 10 TO 5
MASK RCSFLAGS # OF RCSFLAGS) TO ZERO
TS RCSFLAGS
EXTEND
READ CHAN31
TS L
CA CH31TEMP
EXTEND
RXOR LCHAN
MASK MANROT # = OCT00077
EXTEND
BZMF NOCHANGE
LXCH A
TS CH31TEMP # SAVE CONTENTS OF CHANNEL 31 IN CH31TEMP
CA L
EXTEND
MP BIT5 # PUT BITS 6-1 OF A IN BITS 10-5 OF L
CA L
ADS RCSFLAGS # SET FORCED FIRING BITS FOR AXES WITH
# CHANGES IN COMMAND. BITS 10,9 FOR
# ROLL, BITS 8,7 FOR YAW, BITS 6,5 FOR
# PITCH
CS RCSFLAGS # SET RATE DAMPING FLAGS (BITS 13,12, AND
MASK OCT16000 # 11 OF RCSFLAGS)
ADS RCSFLAGS
NOCHANGE CS CH31TEMP
MASK MANROT
EXTEND
BZMF AHFNOROT # IF NO MANUAL COMMANDS, GO TO AHFNOROT
TS HOLDFLAG # SET HOLDFLAG +
TC STICKCHK # WHEN THE RHC IS OUT OF DETENT, PMANNDX,
# YMANNDX, AND RMANNDX ARE ALL SET, BY
# MEANS OF STICKCHK, TO 0, 1, OR 2 FOR NO,
# +, OR - ROTATION RESPECTIVELY AS
# COMMANDED BY THE RHC.
#
# HOWEVER, IT IS WELL TO NOTE THAT AFTER
# THE RHC IS RETURNED TO DETENT, THE
# PROGRAM BRANCHES TO AHFNOROT AND AVOIDS
# STICKCHK SO PMANNDX, YMANNDX, AND
# RMANNDX ARE NOT RESET TO ZERO BUT RATHER
# LEFT SET TO THEIR LAST OUT OF DETENT
# Page 1018
# VALUES.
CS FLAGWRD1 # SET STIKFLAG TO INFORM STEERING
MASK BIT14 # PROGRAMS (P20) THAT ASTRONAUT HAS
ADS FLAGWRD1 # ASSUMED ROTATIONAL CONTROL OF SPACECRAFT
CAF BIT14
EXTEND
RAND CHAN31
EXTEND
BZMF FREEFUNC
CA RCSFLAGS # EXAMINE RCSFLAGS TO SEE IF RATE FILTER
MASK BIT14 # HAS BEEN INITIALIZED
CCS A # IF SO, PROCEED WITH MANUAL RATE COMMANDS
TCF REINIT # .....TILT, RECYCLE TO INITIALIZE FILTER
CS FIVE # IF MANUAL MANEUVER IS AT HIGH RTE, SET
AD RATEINDX # ATTKALMN TO -1.
EXTEND # OTHERWISE, LEAVE ATTKALMN ALONE.
BZMF +3
CS ONE
TS ATTKALMN
CAF TWO # AUTO-HOLD MANUAL ROTATION
SETWBODY TS SPNDX
DOUBLE
TS DPNDX
INDEX SPNDX # RMANNDX = 0 NO ROTATION
CA RMANNDX # = 1 + ROTATION
EXTEND # = 2 - ROTATION
BZF NORATE # IF NO ROTATION COMMAND ON THIS AXIS,
# GO TO NORATE.
AD RATEINDX # RATEINDX = 0 0.05 DEG/SEC
TS Q # = 2 0.2 DEG/SEC
INDEX Q # = 4 0.5 DEG/SEC
CA MANTABLE -1 # = 6 2.0 DEG/SEC
EXTEND
MP BIT9 # MULTIPLY MANTABLE BY 2 TO THE -6
INDEX DPNDX # TO GET COMMANDED RATE.
DXCH WBODY # SET WBODY TO COMMANDED RATE.
CA RCSFLAGS
MASK OCT16000 # IS RATE DAMPING COMPLETED (BITS 13,12 AND
EXTEND # 11 OF RCSFLAGS ALL ZERO.) IF SO, GO TO
BZF MERUPDAT # MERUPDAT TO UPDATE CUMULATIVE ATTITUDE
# ERROR.
# Page 1019
ZEROER CA ZERO # ZEROER ZEROS MERRORS
ZL
INDEX DPNDX
DXCH MERRORX
TCF SPNDXCHK
NORATE ZL
INDEX DPNDX
DXCH WBODY # ZERO WBODY FOR THIS AXIS
CA RCSFLAGS
MASK OCT16000
EXTEND # IS RATE DAMPING COMPLETED
BZF SPNDXCHK # YES, KEEP CURRENT MERRORX GO TO SPNDXCHK
TCF ZEROER # NO, GO TO ZEROER
MERUPDAT INDEX Q # MERRORX=MERRORX+MEASURED CHANGE IN ANGLE
CS MANTABLE -1 # -COMMANDED CHANGE IN ANGLE
EXTEND # THE ADDITION OF MEASURED CHANGE IN ANGLE
MP BIT7 # HAS ALREADY BEEN DONE IN THE RATE FILTER
INDEX DPNDX # COMMANDED CHANGE IN ANGLE = WBODY TIMES
DAS MERRORX # .1SEC = MANTABLE ENTRY TIMES 2 TO THE -8
SPNDXCHK INDEX DPNDX
CA MERRORX
INDEX SPNDX
TS ERRORX # ERRORX = HIGH ORDER WORD OF MERRORX
CCS SPNDX
TCF SETWBODY
TCF JETS
OCT01760 OCT 01760 # FORCED FIRING BITS MASK
OCT01400 OCT 01400 # ROLL FORCED FIRING MASK ORDER OF
OCT00060 OCT 00060 # PITCH FORCED FIRING MASK DEFINITION
OCT00300 OCT 00300 # YAW FORCED FIRING MASK MUST BE
# PRESERVED
# FOR INDEXING
MANROT OCT 77
OCT16000 OCT 16000 # RATE DAMPING FLAGS MASK
MANTABLE DEC .0071111
DEC -.0071111
DEC .028444
DEC -0.028444
DEC .071111
DEC -.071111
DEC .284444
DEC -.284444
=+14MS DEC 23
FREEFUNC INDEX RMANNDX # ACCELERATION
# Page 1020
CA FREETAU # COMMANDS
TS TAU
INDEX PMANNDX
CA FREETAU # FREETAU 0 SEC
TS TAU1 # +1 +0.10 SEC
INDEX YMANNDX # +2 -0.10 SEC
CA FREETAU # (+3) 0 SEC
TS TAU2
TCF T6PROGM
FREETAU DEC 0
DEC 480
DEC -480
DEC 0
T6PROGM CAF ZERO # FOR MANUAL ROTATIONS
TS ERRORX
TS ERRORY
TS ERRORZ
TCF T6PROG
# Page 1021
DEC .2112 # FILTER GAIN FOR TRANSLATION, LEM ON
DEC .8400 # FILTER GAIN FOR TRANSLATION 2(ZETA)WN DT
DEC .2112 # FILTER GAIN FOR 4 DEGREE/SEC MANEUVERS
GAIN1 DEC .0640 # KALMAN FILTER GAINS FOR INITIALIZATION
DEC .3180 # OF ATTITUDE RATES
DEC .3452
DEC .3774
DEC .4161
DEC .4634
DEC .5223
DEC .5970
DEC .6933
DEC .8151
DEC .9342
DEC .0174 # FILTER GAIN FOR TRANSLATION, LEM ON
DEC .3600 # FILTER GAIN FOR TRANSLATION (WN)(WN)DT
DEC .0174 # FILTER GAIN FOR 4 DEGREE/SEC MANEUVERS
GAIN2 DEC .0016 # SCALED 10
DEC .0454
DEC .0545
DEC .0666
DEC .0832
DEC .1069
DEC .1422
DEC .1985
DEC .2955
DEC .4817
DEC .8683
STICKCHK TS T5TEMP
MASK THREE # INDICES FOR MANUAL ROTATION
TS PMANNDX
CA T5TEMP
EXTEND # MAN RATE 0 0 RATE (DP)
MP QUARTER # +1 + RATE (DP)
TS T5TEMP # +2 - RATE (DP)
MASK THREE # (+3) 0 RATE (DP)
TS YMANNDX
CA T5TEMP
EXTEND
MP QUARTER
TS RMANNDX
TC Q
KALUPDT TS ATTKALMN # INITIALIZATION OF ATTITUDE RATES USING
# KALMAN FILTER TAKES 1.1 SEC
CA DELTATT # =1SEC - 80MS
AD T5TIME # + DELAYS
# Page 1022
TS TIME5
TCF +3
CAF DELTATT2 # SAFETY PLAY TO ASSURE
TS TIME5 # A T5RUPT
KRESUME2 CS ZERO # RESET FOR PHASE1
TS T5PHASE # RESUME INTERRUPTED PROGRAM
TCF RESUME
FDAIDSP2 CS BIT4 # RESET FOR FDAIDSP1
MASK RCSFLAGS
TS RCSFLAGS
CS FLAGWRD0 # ON - DISPLAY ONE OF THE TOTAL ATTITUDE
MASK BIT9 # ERRORS
EXTEND
BZF FDAITOTL
EXTEND
DCS ERRORX # OFF - DISPLAY AUTOPILOT FOLLOWING ERROR
DXCH AK
CS ERRORZ
TS AK2
TCF RESUME # END PHASE 1
FDAITOTL CA FLAGWRD9
MASK BIT6
EXTEND
BZF WRTN17 # IS N22ORN17 (BIT6 OF FLAGWRD9) = 0
# IF SO, GO TO WRTN17
WRTN22 EXTEND # OTHERWISE, CONTINUE ON TO WRTN22 AND
DCA CTHETA # GET SET TO COMPUTE TOTAL ATTITUDE
DXCH WTEMP # ERROR WRT N22 BY PICKING UP THE THREE
CA CPHI # COMPONENTS OF N22
GETAKS EXTEND # COMPUTE TOTAL ATTITUDE ERROR FOR
MSU CDUX # DISPLAY ON FDAI ERROR NEEDLES
TS AK
CA WTEMP
EXTEND
MSU CDUY
TS T5TEMP
EXTEND
MP AMGB1
ADS AK
CA T5TEMP
EXTEND
MP AMGB4
# Page 1023
TS AK1
CA T5TEMP
EXTEND
MP AMGB7
TS AK2
CA WTEMP +1
EXTEND
MSU CDUZ
TS T5TEMP
EXTEND
MP AMGB5
ADS AK1
CA T5TEMP
EXTEND
MP AMGB8
ADS AK2
TCF RESUME # END PHASE1 OF RCS DAP
WRTN17 EXTEND # GET SET TO COMPUTE TOTAL ASTRONAUT
DCA CPHIX +1 # ATTITUDE ERROR WRT N17 BY PICKING UP
DXCH WTEMP # THE THREE COMPONENTS OF N17
CA CPHIX
TCF GETAKS
# Page 1024 (empty page)

173
RCS_FAILURE_MONITOR.s Normal file
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

1609
REENTRY_CONTROL.s Normal file

File diff suppressed because it is too large Load Diff

335
RESTARTS_ROUTINE.s Normal file
View File

@ -0,0 +1,335 @@
# Copyright: Public domain.
# Filename: RESTARTS_ROUTINE.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1414-1419
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same
# name, and page images. Corrected various
# typos in the transcription of program
# comments, and these should be back-ported
# to Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1414
BANK 01
SETLOC RESTART
BANK
EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
COUNT 01/RSROU
RESTARTS CA MPAC +5 # GET GROUP NUMBER -1
DOUBLE # SAVE FOR INDEXING
TS TEMP2G
CA PHS2CADR # SET UP EXIT IN CASE IT IS AN EVEN
TS TEMPSWCH # TABLE PHASE
CA RTRNCADR # TO SAVE TIME ASSUME IT WILL GET NEXT
TS GOLOC +2 # GROUP AFTER THIS
CA TEMPPHS
MASK OCT1400
CCS A # IS IT A VARIABLE OR TABLE RESTART
TCF ITSAVAR # IT'S A VARIABLE RESTART
GETPART2 CCS TEMPPHS # IS IT AN X.1 RESTART
CCS A
TCF ITSATBL # NO, IT'S A TABLE RESTART
CA PRIO14 # IT IS AN X.1 RESTART, THEREFORE START
TC FINDVAC # THE DISPLAY RESTART JOB
EBANK= LST1
2CADR INITDSP
TC RTRNCADR # FINISHED WITH THIS GROUP, GET NEXT ONE
ITSAVAR MASK OCT1400 # IS IT TYPE B ?
CCS A
TCF ITSLIKEB # YES, IT IS TYPE B
EXTEND # STORES THE JOB (OR TASK) 2CADR FOR EXIT
NDX TEMP2G
DCA PHSNAME1
DXCH GOLOC
CA TEMPPHS # SEE IF THIS IS A JOB, TASK, OR A LONGCALL
MASK OCT7
AD MINUS2
CCS A
TCF ITSLNGCL # IT'S A LONGCALL
# Page 1415
RTRNCADR TC SWRETURN # CAN'T GET HERE.
TCF ITSAWAIT
TCF ITSAJOB # IT'S A JOB
ITSAWAIT CA WTLTCADR # SET UP WAITLIST CALL
TS GOLOC -1
NDX TEMP2G # DIRECTLY STORED
CA PHSPRDT1
TIMETEST CCS A # IS IT AN IMMEDIATE RESTART
INCR A # NO.
TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
TCF ITSINDIR # STORED INDIRECTLY
TCF IMEDIATE # IT WANTS AN IMMEDIATE RESTART
# ***** THIS MUST BE IN FIXED FIXED *****
BLOCK 02
SETLOC FFTAG2
BANK
COUNT 02/RSROU
ITSINDIR LXCH GOLOC +1 # GET THE CORRECT E BANK IN CASE THIS IS
LXCH BB # SWITCHED ERASABLE
NDX A # GET THE TIME INDIRECTLY
CA 1
LXCH BB # RESTORE THE BB AND GOLOC
LXCH GOLOC +1
TCF FINDTIME # FIND OUT WHEN IT SHOULD BEGIN
# ***** YOU MAY RETURN TO SWITCHED FIXED *****
BANK 01
SETLOC RESTART
BANK
COUNT 01/RSROU
FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED
TS L # AND SAVE
NDX TEMP2G
CS TBASE1
EXTEND
# Page 1416
SU TIME1
CCS A
COM
AD OCT37776
AD ONE
AD L
CCS A
CA ZERO
TCF +2
TCF +1
IMEDIATE AD ONE
TC GOLOC -1
ITSLIKEB CA RTRNCADR # TYPE B, SO STORE RETURN IN
TS TEMPSWCH # TEMPSWCH IN CASE OF AN EVEN PHASE
CA PRT2CADR # SET UP EXIT TO GET TABLE PART OF THIS
TS GOLOC +2 # VARIABLE TYPE OF PHASE
CA TEMPPHS # MAKE THE PHASE LOOK RIGHT FOR THE TABLE
MASK OCT177 # PART OF THIS VARIABLE PHASE
TS TEMPPHS
EXTEND
NDX TEMP2G # OBTAIN THE JOB'S 2CADR
DCA PHSNAME1
DXCH GOLOC
ITSAJOB NDX TEMP2G # NOW ADD THE PRIORITY AND LET'S GO
CA PHSPRDT1
CHKNOVAC TS GOLOC -1 # SAVE PRIO UNTIL WE SEE IF IT'S
EXTEND # A FINDVAC OR A NOVAC
BZMF ITSNOVAC
CAF FVACCADR # POSITIVE, SET UP FINDVAC CALL.
XCH GOLOC -1 # PICK UP PRIO
TC GOLOC -1 AND GO
ITSNOVAC CAF NOVACADR # NEGATIVE,
XCH GOLOC -1 # SET UP NOVAC CALL,
COM # CORRECT PRIO,
TC GOLOC -1 # AND GO
ITSATBL TS CYR # FIND OUT IF THE PHASE IS ODD OR EVEN
CCS CYR
TCF +1 # IT'S EVEN
TCF ITSEVEN
CA RTRNCADR # IN CASE THIS IS THE SECOND PART OF A
TS GOLOC +2 # TYPE B RESTART, WE NEED PROPER EXIT
# Page 1417
CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
TS SR # THE RESTART TABLES
AD SR
NDX TEMP2G
AD SIZETAB +1
TS POINTER
CONTBL2 EXTEND # FIND OUT WHAT'S IN THE TABLE
NDX POINTER
DCA CADRTAB # GET THE 2CADR
LXCH GOLOC +1 # STORE THE BB INFORMATION
CCS A # IS IT A JOB OR IT IT TIMED
INCR A # POSITIVE, MUST BE A JOB
TCF ITSAJOB2
INCR A # MUST BE EITHER A WAITLIST OR LONGCALL
TS GOLOC # LET'S STORE THE CORRECT CADR
CA WTLTCADR # SET UP OUR EXIT TO WAITLIST
TS GOLOC -1
CA GOLOC +1 # NOW FIND OUT IF IT IS A WAITLIST CALL
MASK BIT10 # THIS SHOULD BE ONE IF WE HAVE -BB
CCS A # FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
# 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
# IN IMPORTANCE ANYWAY. BUT 4
TCF ITSWTLST # IT IS A WAITLIST CALL
NDX POINTER # OBTAIN THE ORIGINAL DELTA T
CA PRDTTAB # ADDRESS FOR THIS LONGCALL
TCF ITSLGCL1 # NOW GO GET THE DELTA TIME
# ***** THIS MUST BE IN FIXED FIXED *****
BLOCK 02
SETLOC FFTAG2
BANK
COUNT 02/RSROU
ITSLGCL1 LXCH GOLOC +1 # OBTAIN THE CORRECT E BANK
LXCH BB
LXCH GOLOC +1 # AND PRESERVE OUR E AND F BANKS
EXTEND # GET THE DELTA TIME
NDX A
DCA 0
# Page 1418
LXCH GOLOC +1 # RESTORE OUR E AND F BANK
LXCH BB # RESTORE THE TASKS E AND F BANKS
LXCH GOLOC +1 # AND PRESERVE OUR L
TCF ITSLGCL2 # NOT GET'S PROCESS THIS LONGCALL
# ***** YOU MAY RETURN TO SWITCHED FIXED *****
BANK 01
SETLOC RESTART
BANK
COUNT 01/RSROU
ITSLGCL2 DXCH LONGTIME
EXTEND # CALCULATE TIME LEFT
DCS TIME2
DAS LONGTIME
EXTEND
DCA LONGBASE
DAS LONGTIME
CCS LONGTIME # FIND OUT HOW THIS SHOULD BE RESTARTED
TCF LONGCLCL
TCF +2
TCF IMEDIATE -3
CCS LONGTIME +1
TCF LONGCLCL
NOOP # CAN'T GET HERE ************
TCF IMEDIATE -3
TCF IMEDIATE
LONGCLCL CA LGCLCADR # WE WILL GO TO LONGCALL
TS GOLOC -1
EXTEND # PREPARE OUR ENTRY TO LONGCALL
DCA LONGTIME
TC GOLOC -1
ITSLNGCL CA WTLTCADR # ASSUME IT WILL GO TO WAITLIST
TS GOLOC -1
NDX TEMP2G
CS PHSPRDT1 # GET THE DELTA T ADDRESS
TCF ITSLGCL1 # NOW GET THE DELTA TIME
ITSWTLST CS GOLOC +1 # CORRECT THE BBCON INFORMATION
TS GOLOC +1
# Page 1419
NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
CA PRDTTAB # DIRECTLY OR INDIRECTLY
TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
ITSAJOB2 XCH GOLOC # STORE THE CADR
NDX POINTER # ADD THE PRIORITY AND LET'S GO
CA PRDTTAB
TCF CHKNOVAC
ITSEVEN CA TEMPSWCH # SET FOR EITHER THE SECOND PART OF THE
TS GOLOC +2 # TABLE, OR A RETURN FOR THE NEXT GROUP
NDX TEMP2G # SET UP POINTER FOR OUR LOCATION WITHIN
CA SIZETAB # THE TABLE
AD TEMPPHS # THIS MAY LOOK BAD BUT LET'S SEE YOU DO
AD TEMPPHS # BETTER IN TIME OR NUMBER OF LOCATIONS
AD TEMPPHS
TS POINTER
TCF CONTBL2 # NO PROCESS WHAT IS IN THE TABLE
PHSPART2 CA THREE # SET THE POINTER FOR THE SECOND HALF OF
ADS POINTER # THE TABLE
CA RTRNCADR # THIS WILL BE OUR LAST TIME THROUGH THE
TS GOLOC +2 # EVEN TABLE, SO AFTER IT GET THE NEXT
# GROUP
TCF CONTBL2 # SO LET'S GET THE SECOND ENTRY IN THE TBL
TEMPPHS EQUALS MPAC
TEMP2G EQUALS MPAC +1
POINTER EQUALS MPAC +2
TEMPSWCH EQUALS MPAC +3
GOLOC EQUALS VAC5 +20D
MINUS2 EQUALS NEG2
OCT177 EQUALS LOW7
PHS2CADR GENADR PHSPART2
PRT2CADR GENADR GETPART2
LGCLCADR GENADR LONGCALL
FVACCADR GENADR FINDVAC
WTLTCADR GENADR WAITLIST
NOVACADR GENADR NOVAC

558
RESTART_TABLES.s Normal file
View File

@ -0,0 +1,558 @@
# Copyright: Public domain.
# Filename: RESTART_TABLES.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 211-221
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-16 FB Transcription Batch 2 Assignment.
# 2009-05-20 RSB Added a missing comment mark. Corrected mismarked
# Page 217 -> 220.
# 2009-05-21 RSB Fixed value of 5.21SPOT.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 211
# RESTART TABLES
# --------------
#
# THERE ARE TWO FORMS OF RESTART TABLES FOR EACH GROUP. THEY ARE KNOWN AS THE EVEN RESTART TABLES AND THE ODD
# RESTART TABLES. THE ODD TABLES HAVE ONLY ONE ENTRY OF THREE LOCATIONS WHILE THE EVEN TABLES HAVE TWO ENTRIES
# EACH USING THREE LOCATIONS. THE INFORMATION AS TO WHETHER IT IS A JOB, WAITLIST, OR A LONGCALL IS GIVEN BY THE
# WAY THINGS ARE PUT IN TO THE TABLES.
#
# A JOB HAS ITS PRIORITY STORED IN A PRDTTAB OF THE CORRECT PHASE SPOT -- A POSITIVE PRIORITY INDICATES A
# FINDVAC JOB, A NEGATIVE PRIORITY A NOVAC. THE 2CADR OF THE JOB IS STORED IN THE CADRTAB.
# FOR EXAMPLE,
#
# 5.7SPOT OCT 23000
# 2CADR SOMEJOB
#
# A RESTART OF GROUP 5 WITH PHASE SEVEN WOULD THEN CAUSE SOMEJOB TO BE RESTARTED AS A FINDVAC WITH PRIORITY 23.
#
# 5.5SPOT OCT -23000
# 2CADR ANYJOB
#
# HERE A RESTART OF GROUP 5 WITH PHASE 7 WOULD CAUSE ANYJOB TO BE RESTARTED AS A NOVAC WITH PRIORITY 23.
# A LONGCALL HAS ITS GENADR OF ITS 2CADR STORED NEGATIVELY AND ITS BBCON STORED POSITIVELY. IN ITS PRDTTAB IS
# PLACED THE LOCATION OF A DP REGISTER THAT CONTAINS THE DELTA TIME THAT LONGCALL HAD BEEN ORIGINALLY STARTED
# WITH. EXAMPLE,
#
# 3.6SPOT GENADR DELTAT
# -GENADR LONGTASK
# BBCON LONGTASK
# OCT 31000
# 2CADR JOBAGAIN
#
# THIS WOULD START UP LONGTASK AT THE APPROPRIATE TIME, OR IMMEDIATELY IF THE TIME HAD ALREADY PASSED. IT SHOULD
# BE NOTED THAT IF DELTAT IS IN A SWITCHED E BANK, THIS INFORMATION SHOULD BE IN THE BBCON OF THE 2CADR OF THE
# TASK. FROM ABOVE, WE SEE THAT THE SECOND PART OF THIS PHASE WOULD BE STARTED AS A JOB WITH A PRIORITY OF 31.
#
# WAITLIST CALLS ARE IDENTIFIED BY THE FACT THAT THEIR 2CADR IS STORED NEGATIVELY. IF PRDTTAB OF THE PHASE SPOT
# IS POSITIVE, THEN IT CONTAINS THE DELTA TIME, IF PRDTTAB IS NEGATIVE THEN IT IS THE -GENADR OF AN ERASABLE
# LOCATION CONTAINING THE DELTA TIME, THAT IS, THE TIME IS STORED INDIRECTLY. IT SHOULD BE NOTED AS ABOVE, THAT
# IF THE TIME IS STORED INDIRECTLY, THE BBCON MUST CONTAIN THE NECESSARY E BANK INFORMATION IF APPLICABLE. WITH
# WAITLIST WE HAVE ONE FURTHER OPTION, IF -0 IS STORED IN PRDTTAB, IT WILL CAUSE AN IMMEDIATE RESTART OF THE
# TASK. EXAMPLES,
#
# OCT 77777 # THIS WILL CAUSE AN IMMEDIATE RESTART
# -2CADR ATASK # OF THE TASK "ATASK"
#
# DEC 200 # IF THE TIME OF THE 2 SECONDS SINCE DUMMY
# -2CADR DUMMY # WAS PUT ON THE WAITLIST IS UP, IT WILL BEGIN
# # IN 10 MS, OTHERWISE IT WILL BEGIN WHEN
# # IT NORMALLY WOULD HAVE BEGUN.
# Page 212
# -GENADR DTIME # WHERE DTIME CONTAINS THE DELTA TIME
# -2CADR TASKTASK # OTHERWISE THIS IS AS ABOVE
#
# ***** NOW THE TABLES THEMSELVES *****
BANK 01
SETLOC RESTART
BANK
COUNT 01/RSTAB
PRDTTAB EQUALS 12000 # USED TO FIND THE PRIORITY OR DELTATIME
CADRTAB EQUALS 12001 # THIS AND THE NEXT RELATIVE LOC CONTAIN
# RESTART 2CADR
SIZETAB TC 1.2SPOT -12006
TC 1.3SPOT -12004
TC 2.2SPOT -12006
TC 2.3SPOT -12004
TC 3.2SPOT -12006
TC 3.3SPOT -12004
TC 4.2SPOT -12006
TC 4.3SPOT -12004
TC 5.2SPOT -12006
TC 5.3SPOT -12004
TC 6.2SPOT -12006
TC 6.3SPOT -12004
1.2SPOT EQUALS 3.2SPOT
# ANY MORE GROUP 1.EVEN RESTART VALUES SHOULD GO HERE.
1.3SPOT DEC 120 # THIS NUMBER MUST BE EQUAL C(JTAGTIME)
EBANK= AOG
-2CADR SETJTAG
1.5SPOT OCT 10000
EBANK= DAPDATR1
2CADR REDO40.9
1.7SPOT OCT 10000
EBANK= ESTROKER
2CADR RELINUS
1.11SPOT OCT 10000
EBANK= ESTROKER
2CADR PIKUP20
# ANY MORE GROUP 1.ODD RESTART VALUES SHOULD GO HERE.
2.2SPOT EQUALS 1.2SPOT
# ANY MORE GROUP 2.EVEN RESTART VALUES SHOULD GO HERE
# Page 213
2.3SPOT GENADR 600SECS
-GENADR STATEINT
EBANK= RRECTCSM
BBCON STATEINT
2.5SPOT OCT 05000
EBANK= RRECTCSM
2CADR STATINT1
2.7SPOT OCT 10000
EBANK= MRKBUF2
2CADR R22
2.11SPOT OCT 14000
EBANK= LANDMARK
2CADR V94ENTER
2.13SPOT OCT 10000
EBANK= MRKBUF2
2CADR REDOR22
# ANY MORE GROUP 2.ODD RESTART VALUES SHOULD GO HERE.
3.2SPOT EQUALS 4.2SPOT
# ANY MORE GROUP 3.EVEN RESTART VALUES SHOULD GO HERE
3.3SPOT OCT 20000
EBANK= TGO
2CADR S40.13
3.5SPOT DEC 0
DEC 0
DEC 0
3.7SPOT OCT 22000
EBANK= TEPHEM
2CADR MATRXJOB
3.11SPOT OCT 22000
EBANK= TEPHEM
2CADR REP11
3.13SPOT OCT 22000
EBANK= TEPHEM
2CADR REP11A
3.15SPOT -GENADR TGO +1
EBANK= TGO
-2CADR ENGINOFF
# Page 214
# ANY MORE GROUP 3.ODD RESTART VALUES SHOULD GO HERE
4.2SPOT OCT 77777
EBANK= TIG
-2CADR PRECHECK
OCT 30000
EBANK= DELVIMU
2CADR P47BODY
4.4SPOT OCT 77777
EBANK= TIG
-2CADR PRECHECK
DEC 2996
EBANK= DAPDATR1
-2CADR TTG/0
4.6SPOT OCT 77777
EBANK= TIG
-2CADR PRECHECK
DEC 2496
EBANK= TIG
-2CADR TIG-5
# ANY MORE GROUP 4.EVEN RESTART VALUES SHOULD GO HERE
4.3SPOT DEC 40
EBANK= PACTOFF
-2CADR DOTVCON
4.5SPOT DEC 160
EBANK= PACTOFF
-2CADR DOSTRULL
4.7SPOT DEC 500
EBANK= PACTOFF
-2CADR TIG-0
4.11SPOT DEC 250
EBANK= DAPDATR1
-2CADR V97E40.6
4.13SPOT DEC 200
EBANK= WHOCARES
-2CADR R40ENABL
4.15SPOT OCT 16000 # PRELAUNCH OPTICAL VERIFICATION
EBANK= OGC
# Page 215
2CADR COMPVER # CALLS FOR OPTICS DATA AGAIN (STD LEADIN)
4.17SPOT OCT 16000
EBANK= XSM
2CADR AZMTHCG1
4.21SPOT GENADR P40TMP # DELTA TIME USED IN SETTING UP
-GENADR TIGBLNK # LONG CALL OF TIGBLNK BY P40,P41
EBANK= P40TMP
BBCON TIGBLNK
4.23SPOT OCT 12000 # PROTECT P40S/SV BY P40 P41
EBANK= TIG
2CADR P40S/SV
4.25SPOT OCT 24000
EBANK= BESTI
2CADR PROG52
4.27SPOT DEC 250
EBANK= PACTOFF
-2CADR DOTVCRCS
4.31SPOT OCT 13000
EBANK= STAR
2CADR R51 +1
4.33SPOT DEC 2100 # PROTECT CONTINUING JOB TO START P63
EBANK= AOG
-2CADR WAKEP62
4.35SPOT OCT 12000
EBANK= DAPDATR1
2CADR POSTBURN
4.37SPOT DEC 500
EBANK= TIG
-2CADR TIGAVEG
4.41SPOT OCT 17000 # PROTECT DISPLAY JOB IN P67
EBANK= AOG
2CADR P67.1
4.43SPOT -GENADR S61DT # PROTECT TASK TO START PREREAD,ENTRY
EBANK= S61DT # S61.1C WILL CHANGE EBANK=EB7 FOR PREREAD
-2CADR S61.1C
4.45SPOT OCT 13000 # PROTECT CONTINUING JOB S61.1
EBANK= AOG # (ENTRY IMU ALIGNMENT)
# Page 216
2CADR S61.1A -1
4.47SPOT OCT 17000 # PROTECT HUNTEST ITERATION
EBANK= AOG
2CADR PRE-HUNT
4.51SPOT OCT 77777 # PROTECT FDAI ATTITUDE
EBANK= BODY3 # ERROR DISPLAY IN P11
-2CADR ATERTASK
4.53SPOT DEC -0
EBANK= END-E7 # EBANK7 FOR TIG
-2CADR V97ETASK
4.55SPOT OCT 13000 # PROTECT P65 RESPONSIVE DISPLAY.
EBANK= RTINIT
2CADR P65.1
4.57SPOT -GENADR P40TMP
EBANK= P40TMP
-2CADR TIGON
4.61SPOT OCT 77777
EBANK= PACTOFF
-2CADR IGNITION
4.63SPOT OCT 77777
EBANK= PACTOFF
-2CADR DOSPSOFF
4.65SPOT DEC 10
EBANK= TIG
-2CADR TIG-5
4.67SPOT DEC -0
EBANK= CSMMASS
-2CADR V97TTASK
4.71SPOT DEC 250
EBANK= DAPDATR1 # (FOR RCSDAPON)
-2CADR V97TRCS
4.73SPOT DEC -0
EBANK= V97VCNTR
-2CADR V97PTASK
4.75SPOT DEC -0
EBANK= DAPDATR1
-2CADR SPSOFF97
# Page 217
4.77SPOT DEC -0
EBANK= PACTOFF
-2CADR TIG-0
# ANY MORE GROUP 4.ODD RESTART VALUES SHOULD GO HERE
5.2SPOT OCT 32000
EBANK= DVCNTR
2CADR NORMLIZE
DEC 200
EBANK= AOG
-2CADR REREADAC
5.4SPOT OCT 20000
EBANK= DVCNTR
2CADR SERVICER
DEC 200
EBANK= AOG
-2CADR REREADAC
# ANY MORE GROUP 5.EVEN RESTART VALUES SHOULD GO HERE
5.3SPOT DEC 200
EBANK= AOG
-2CADR REREADAC
5.5SPOT OCT 77777
EBANK= AOG
-2CADR REDO5.5
5.7SPOT OCT 20000 # USED BY PRELAUNCH
EBANK= XSM
2CADR RSTGTS1
5.11SPOT OCT 77777
EBANK= XSM
-2CADR ALLOOP1
5.13SPOT OCT 20000
EBANK= XSM
2CADR WTLISTNT
5.15SPOT OCT 20000
EBANK= XSM
2CADR RESTEST1
5.17SPOT OCT 20000
EBANK= XSM
# Page 218
2CADR GEOSTRT4
5.21SPOT OCT 22000
EBANK= XSM
2CADR ALFLT1
5.23SPOT OCT 77777
EBANK= XSM
-2CADR SPECSTS
5.25SPOT OCT 20000
EBANK= XSM
2CADR RESTEST3
5.27SPOT OCT 20000
EBANK= XSM
2CADR RESTAIER
5.31SPOT DEC 0
DEC 0
DEC 0
5.33SPOT OCT 20000
EBANK= XSM
2CADR RESCHNG
5.35SPOT DEC 0
2DEC 0
5.37SPOT OCT 77777
EBANK= AOG
-2CADR CHEKAVEG
5.41SPOT OCT 77777 # TO PROTECT PREREAD AT TIG-30A
EBANK= DVCNTR # TIG-15 T+60
-2CADR PREREAD
# ANY MORE GROUP 5.ODD RESTART VALUES SHOULD GO HERE
6.2SPOT OCT 77777 # USED BY P40 AFTER GIMB DR TST TO REPOS'N
EBANK= AK # ENGINE UNTIL TVCDAPON
-2CADR PRE40.6
DEC 100
EBANK= TTOGO
-2CADR CLOKTASK
# ANY MORE 6.ODD RESTART VALUES SHOULD GO HERE
# Page 219
6.3SPOT DEC 100
EBANK= TIG
-2CADR CLOKTASK
6.5SPOT OCT 30000 # PROTECT INCREMENTING OF TIME2,TIME1 BY
EBANK= TEPHEM # P27(UPDATE PROGRAM)
2CADR TIMEDIDR
6.7SPOT OCT 0
OCT 0
OCT 0
6.11SPOT -GENADR CM/GYMDT # PROTECT TASK TO READ CDUS.
EBANK= CM/GYMDT # FOR ENTRY DAP
-2CADR READGYMB
6.13SPOT DEC 0
DEC 0
DEC 0
# Page 220
# PROGRAM DESCRIPTION: NEWPHASE DATE: 11 NOV 1966
# MOD: 1 ASSEMBLY: SUNBURST REV
# MOD BY: COPPS LOG SECTION: PHASE TABLE MAINTENANCE
#
# FUNCTIONAL DESCRIPTION:
#
# NEWPHASE IS THE QUICK WAY TO MAKE A NON VARIABLE PHASE CHANGE. IT INCLUDES THE OPTION OF SETTING
# TBASE OF THE GROUP. IF TBASE IS TO BE SET, -C(TIME1) IS STORED IN THE TBASE TABLE AS FOLLOWS:
#
# (L-1) TBASE0
# (L) TBASE1 (IF GROUP=1)
# (L+1)
# (L+2) TBASE2 (IF GROUP=2)
# -----
# (L+6) TBASE4 (IF GROUP=4)
# (L+7)
# (L+8) TBASE5 (IF GROUP=5)
#
# IN ANY CASE, THE NEGATIVE OF THE PHASE, FOLLOWED (IN THE NEXT REGISTER) BY THE PHASE, IS STORED IN THE
# PHASE TABLE AS FOLLOWS:
#
# (L) -PHASE1 (IF GROUP=1)
# (L+1) PHASE1
# (L+2) -PHASE2 (IF GROUP=2)
# (L+3) PHASE2
# -----
# (L+7) PHASE4
# (L+8) -PHASE5 (IF GROUP=5)
# (L+9) PHASE5
#
# CALLING SEQUENCE:
#
# EXAMPLE IS FOR PLACING A PHASE OF FIVE INTO GROUP THREE:
#
# 1) IF TBASE IS NOT TO BE SET:
# L-1 CA FIVE
# L TC NEWPHASE
# L+1 OCT 00003
#
# 2) IF TBASE IS TO BE SET:
# L-1 CS FIVE
# L TC NEWPHASE
# L+1 OCT 00003
#
# SUBROUTINES CALLED: NONE
#
# NORMAL EXIT MODE: AT L+2 OF CALLING SEQUENCE
#
# ALARM OR ABORT EXITS: NONE
#
# OUTPUT: PHASE TABLE AND TBASE TABLE UPDATED
#
# ERASABLE INITIALIZATION REQ'D: NONE
# Page 221
# DEBRIS: A,L,TEMPG
# *** WARNING *** THIS PROGRAM IS TO BE PLACED IN FIXED-FIXED AND UNSWITCHED ERASABLE.
BLOCK 02
SETLOC FFTAG1
BANK
COUNT* $$/PHASE
NEWPHASE INHINT
TS L # SAVE FOR FURTHER USE
NDX Q # OBTAIN THE GROUP NUMBER
CA 0
INCR Q # OBTAIN THE RETURN ADDRESS
DOUBLE # SAVE THE GROUP IN A FORM USED FOR
TS TEMPG # INDEXING
CCS L # SEE IF WE ARE TO SET TBASE
TCF +7 # NO, THE DELTA T WAS POSITIVE
TCF +6
NUFAZ+10 INCR A # SET TBASE AND STORE PHASE CORRECTLY
TS L
CS TIME1 # SET TBASE
NDX TEMPG
TS TBASE1 -2
CS L # NOW PUT THE PHASE IN THE RIGHT TABLE LOC
NDX TEMPG
DXCH -PHASE1 -2
RELINT
TC Q # NOW RETURN TO CALLER

355
RT8_OP_CODES.s Normal file
View File

@ -0,0 +1,355 @@
# Copyright: Public domain.
# Filename: RT8_OP_CODES.agc
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module's
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 1508-1516
# Contact: Ron Burkey <info@sandroid.org>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-07 RSB Adapted from Colossus249/RT8_OP_CODES.agc
# and page images.
# 2009-05-07 RSB Oops! Left out the entire last page before.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# 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 1508
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
# READ THE PIPS INTO MPAC WITHOUT CHANGING THEM:
READPIPS INHINT
CA PIPAX
TS MPAC
CA PIPAY
TS MPAC +3
CA PIPAZ
RELINT
TS MPAC +5
CAF ZERO
TS MPAC +1
TS MPAC +4
TS MPAC +6
VECMODE TCF VMODE
# FORCE TP SIGN AGREEMENT IN MPAC:
SGNAGREE TC TPAGREE
# Page 1509
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
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.
# Page 1510
TC Q
INDEX A # OVERFLOW UNCORRECT AND IN MSU.
CAF LIMITS
ADS MPAC
TC Q
# Page 1511
# SUBROUTINE TO INCREMENT CDUS
INCRCDUS CAF LOCTHETA
TS BUF # PLACE ADRES(THETA) IN BUF.
CAE MPAC # INCREMENT IN 1'S COMPL.
TC CDUINC
INCR BUF
CAE MPAC +3
TC CDUINC
INCR BUF
CAE MPAC +5
TC CDUINC
TCF VECMODE
LOCTHETA ADRES THETAD
# THE FOLLOWING ROUTINE INCREMENTS IN 2'S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1'S COMPL.
# QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2'S COMPL.
# (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
CDUINC TS TEM2 # 1'S COMPL. QUANT. ARRIVES IN ACC. STORE IT
INDEX BUF
CCS 0 # CHANGE 2'S COMPLE. ANGEL (IN BUF) INTO 1'S
AD ONE
TCF +4
AD ONE
AD ONE # OVEFLOW HERE IF 2'S COMPL. IS 180 DEG.
COM
AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
CCS A # BACK TO 2'S COMPL.
AD ONE
TCF +2
COM
TS TEM2 # STORE 14-BIT 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 2'S COMPLEMENT.
TC Q
# Page 1512
# 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 1513
# EACH ROUTINE TAKES A 3X3 MATRIX STORED IN DOUBLE PRECISION IN A FIXED AREA OF ERASABLE MEMORY AND REPLACES IT
# WITH THE TRANSPOSE MATRIX. TRANSP1 USES LOCATIONS XNB+0,+1 THROUGH XNB+16D,+17D AND TRANSP2 USES LOCATIONS
# XNB1+0,+1 THROUGH XNB1+16D,+17D. EACH MATRIX IS STORED BY ROWS.
XNBEB ECADR XNB
XNB1EB ECADR XNB1
EBANK= XNB
TRANSP1 CAF XNBEB
TS EBANK
DXCH XNB +2
DXCH XNB +6
DXCH XNB +2
DXCH XNB +4
DXCH XNB +12D
DXCH XNB +4
DXCH XNB +10D
DXCH XNB +14D
DXCH XNB +10D
TCF DANZIG
EBANK= XNB1
TRANSP2 CAF XNB1EB
TS EBANK
DXCH XNB1 +2
DXCH XNB1 +6
DXCH XNB1 +2
DXCH XNB1 +4
DXCH XNB1 +12D
DXCH XNB1 +4
DXCH XNB1 +10D
DXCH XNB1 +14D
DXCH XNB1 +10D
TCF DANZIG
# Page 1514
# 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 SAMLL -- 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 RETURNS IN 36D WILL BE TOO LARGE
# BY A FACTOR OF 2(13) AND THE SQURED MAGNITUDE RETURNED AT 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 1515
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
# Page 1516
# MODULE CHANGE FOR NEW LUNAR GRAVITY MODEL
SETLOC MODCHG3
BANK
QUALITY1 BOF DLOAD
MOONFLAG
NBRANCH
URPV
DSQ GOTO
QUALITY2
SETLOC MODCHG2
BANK
QUALITY2 PDDL DSQ # SQUARE INTO 2D, B2
URPV +2 # Y COMPONENT, B1
DSU
DMP VXSC # 5(Y**2-X**2)UR
5/8 # CONSTANT, 5B3
URPV # VECTOR, RESULT MAXIMUM IS 5, SCALING
# HERE B6
VSL3 PDDL # STORE SCALED B3 IN 2D, 4D, 6D FOR XYZ
URPV # X COMPONENT, B1
SR1 DAD # 2 X X COMPONENT FOR B3 SCALING
2D # ADD TO VECTOR X COMPONENT OF ANSWER.
# SAME AS MULTIPLYING BY UNITX. MAX IS 7.
STODL 2D
URPV +2 # Y COMPONENT, B1
SR1 BDSU # 2 X Y COMPONENT FOR B3 SCALING
4D # SUBTRACT FROM VECTOR Y COMPONENT OF
# ANSWER, SAME AS MULTIPLYING BY UNITY.
# MAX IS 7.
STORE 4D # 2D HAS VECTOR, B3.
SLOAD VXSC # MULTIPLY COEFFICIENT TIMES VECTOR IN 2D
E3J22R2M
PDDL RVQ # J22 TERM X R**4 IN 2D, SCALED B61
COSPHI/2 # SAME AS URPV +4, Z COMPONENT
# *** END OF CHIEFTAN.028 ***

236
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 ***

129
S-BAND_ANTENNA_FOR_CM.s Normal file
View File

@ -0,0 +1,129 @@
# Copyright: Public domain.
# Filename: S-BAND_ANTENNA_FOR_CM.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Jim Lawton <jim.lawton@gmail.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 934-935
# Mod history: 2009-05-11 JVL Adapted from the Colossus249/ file
# of the same name, using Comanche055 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 055 of AGC program Comanche by NASA
# 2021113-051. 10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A
# Page 934
# S-BAND ANTENNA FOR CM
BANK 23
SETLOC SBAND
BANK
COUNT* $$/R05
EBANK= EMSALT
SBANDANT TC BANKCALL # V 64 E GETS US HERE
CADR R02BOTH # CHECK IF IMU IS ON AND ALIGNED
TC INTPRET
RTB CALL
LOADTIME # PICKUP CURRENT TIME SCALED B-28
CDUTRIG # COMPUTE SINES AND COSINES OF CDU ANGLES
STCALL TDEC1 # ADVANCE INTEGRATION TO TIME IN TDEC1
CSMCONIC # USING CONIC INTEGRATION
SLOAD BHIZ # ORIGIN OF REFERENCE INERTIAL SYSTEM IS
X2 # EARTH = 0, MOON = 2
EISOI
VLOAD
RATT
STORE RCM # MOVE RATT TO PREVENT WIPEOUT
DLOAD CALL # MOON, PUSH ON
TAT # GET ORIGINAL TIME
LUNPOS # COMPUTE POSITION VECTOR OF MOON
VAD VCOMP # R= -(REM+RCM) = NEG. OF S/C POS. VEC
RCM
GOTO
EISOI +2
EISOI VLOAD VCOMP # EARTH, R= -RCM
RATT
SETPD MXV # RCS TO STABLE MEMBER: B-1X B-29X B+1
2D # 2D
REFSMMAT # STABLE MEMBER. B-1X B-29X B+1= B-29
VSL1 PDDL # 8D
HI6ZEROS
STOVL YAWANG # ZERO OUT YAWANG, SET UP FOR SMNB
RCM # TRANSFORMATION. SM COORD. SCALED B-29
CALL
*SMNB*
STORE R # SAVE NAV. BASE COORDINATES
UNIT PDVL # 14D
R
VPROJ VSL2 # COMPUTE PROJECTION OF VECTOR INTO CM
HIUNITZ # XY-PLANE, R-(R.UZ)UZ
BVSU BOV # CLEAR OVERFLOW INDICATOR IF SET
R
COVCNV
COVCNV UNIT BOV # TEST OVERFLOW FOR INDICATION OF NULL
NOADJUST # VECTOR
PUSH DOT # 20D
# Page 935
HIUNITX # COMPUTE YAW ANGLE = ACOS (URP.UX)
SL1 ACOS # REVOLUTIONS SCALED B0
PDVL DOT # 22D YAWANG
URP
HIUNITY # COMPUTE FOLLOWING: URP.UY
SL1 BPL # POSITIVE
NOADJUST # YES, 0-180 DEGREES
DLOAD DSU # NO, 181-360 DEGREES 20D
DPPOSMAX # COMPUTE 2 PI MINUS YAW ANGLE
PUSH # 22D YAWANG
NOADJUST VLOAD DOT # COMPUTE PITCH ANGLE
UR # ACOS (UR.UZ) - PI/2
HIUNITZ
SL1 ACOS # REVOLUTIONS B0
DSU
HIDP1/4
STODL RHOSB
YAWANG
STORE GAMMASB # PATCH FOR CHECKOUT
EXIT
CA EXTVBACT # IS BIT 5 STILL ON
MASK BIT5
EXTEND
BZF ENDEXT # NO, WE HAVE BEEN ANSWERED
CAF V06N51 # DISPLAY ANGLES
TC BANKCALL
CADR GOMARKFR
TC B5OFF # TERMINATE
TC B5OFF
TC ENDOFJOB # RECYCLE
CAF BIT3 # IMMEDIATE RETURN
TC BLANKET # BLANK R3
CAF BIT1 # DELAY MINIMUM TIME TO ALLOW DISPLAY IN
TC BANKCALL
CADR DELAYJOB
TCF SBANDANT +2
V06N51 VN 0651
RCM EQUALS 2D
UR EQUALS 8D
URP EQUALS 14D
YAWANG EQUALS 20D
PITCHANG EQUALS 22D
R EQUALS RCM
SBANK= LOWSUPER

Some files were not shown because too many files have changed in this diff Show More