missing Luminary099 files retrieved from virtualagc at https://github.com/rburkey2005/virtualagc/tree/master/Luminary099

This commit is contained in:
Gary Young 2016-07-31 16:32:55 -06:00
parent dcff8992a1
commit a57cd3faa5
51 changed files with 43692 additions and 0 deletions

View File

@ -0,0 +1,251 @@
# Copyright: Public domain.
# Filename: ALARM_AND_ABORT.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: 1381-1385
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
# 2009-06-05 RSB Fixed a type.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# 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 1381
# THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED
# EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.
#
# CALLING SEQUENCE IS AS FOLLOWS:
# TC ALARM
# OCT AAANN # ALARM NO. NN IN GENERAL AREA AAA.
# # (RETURNS HERE)
BLOCK 02
SETLOC FFTAG7
BANK
EBANK= FAILREG
COUNT* $$/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
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
MASK POSMAX
CCS A
TCF MULTFAIL
LXCH FAILREG +2
TCF MULTEXIT
# Page 1382
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* $$/DSPLA
PRIOLARM INHINT # * * * KEEP IN DISPLAY ROUTINES 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 # *** DONT MOVE
CAF V05N09
TCF PRIODSPR
BLOCK 02
SETLOC FFTAG7
BANK
COUNT* $$/ALARM
BAILOUT INHINT
CA Q
# Page 1383
TS ALMCADR
INDEX Q
CAF 0
TC BORTENT
OCT40400 OCT 40400
INHINT
WHIMPER CA TWO
AD Z
TS BRUPT
RESUME
TC POSTJUMP # RESUME SENDS CONTROL HERE
CADR ENEMA
P00DOO INHINT
CA Q
ABORT2 TS ALMCADR
INDEX Q
CAF 0
TC BORTENT
OCT77770 OCT 77770 # DON'T MOVE
CAF OCT35 # 4.35SPOT FOR GOP00DOO
TS L
COM
DXCH -PHASE4
GOP00DOO INHINT
TC BANKCALL # RESET STATEFLG, REINTFLG, AND NODOFLAG.
CADR FLAGS
CA FLAGWRD7 # IS SERVICER CURRENTLY IN OPERATION?
MASK V37FLBIT
CCS A
TCF STRTIDLE
TC BANKCALL # TERMINATE GRPS 1, 3, 5, AND 6
CADR V37KLEAN
TC BANKCALL # TERMINATE GRPS 2, 4, 1, 3, 5, AND 6
CADR MR.KLEAN # (I.E., GRP 4 LAST)
TCF WHIMPER
STRTIDLE CAF BBSERVDL
TC SUPERSW
TC BANKCALL # PUT SERVICER INTO ITS "GROUND" STATE
CADR SERVIDLE # AND PROCED TO GOTOP00H.
CCSHOLE INHINT
CA Q
TC ABORT2
OCT21103 OCT 1103
CURTAINS INHINT
CA Q
TC ALARM2
OCT217 OCT 00217
# Page 1384
TC ALMCADR # RETURN TO USER
BAILOUT1 INHINT
DXCH ALMCADR
CAF ADR40400
BOTHABRT TS ITEMP1
INDEX Q
CAF 0
TS L
TCF CHKFAIL1
P00DOO1 INHINT
DXCH ALMCADR
CAF ADR77770
TCF BOTHABRT
ALARM1 INHINT
DXCH ALMCADR
ALMNCADR INHINT
INDEX Q
CA 0
TS L
TCF LARMENT
ADR77770 TCF OCT77770
ADR40400 TCF OCT40400
DOALARM EQUALS ENDOFJOB
EBANK= DVCNTR
BBSERVDL BBCON SERVIDLE
# CALLING SEQUENCE FOR VARALARM
# CAF (ALARM)
# TC VARALARM
#
# VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY
VARALARM INHINT
TS L # SAVE USER'S ALARM CODE
CA Q # SAVE USERS Q
TS ALMCADR
TC PRIOENT
OCT14 OCT 14 # DONT MOVE
TC ALMCADR # RETURN TO USER
ABORT EQUALS WHIMPER
BANK 13
SETLOC ABTFLGS
BANK
# Page 1385
COUNT* $$/ALARM
FLAGS CS STATEBIT
MASK FLAGWRD3
TS FLAGWRD3
CS REINTBIT
MASK FLGWRD10
TS FLGWRD10
CS NODOBIT
MASK FLAGWRD2
TS FLAGWRD2
TC Q

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,42 @@
# Copyright: Public domain.
# Filename: CONTRACT_AND_APPROVALS.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.
# 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 001 of AGC program LMY99 by NASA 2021112-61
# 16:27 JULY 14, 1969
# Page 1
# THIS LGC PROGRAM IS INTENDED FOR USE IN THE LM DURING THE MANNED LUNAR
# LANDING MISSION OR ANY SUBSET THEREOF. THE DETAILS OF IMPLEMENTATION ARE
# SPECIFIED IN REPORT R-567, AS AMENDED.
#
# GUIDANCE SYSTEM OPERATIONS PLAN
# FOR MANNED LM EARTH ORBITAL AND LUNAR MISSIONS
# USING PROGRAM LUMINARY
#
# THIS PROGRAM AND R-567 HAVE BEEN PREPARED BY THE INSTRUMENTATION LABORATORY,
# MASSACHUSETTS INSTITUTE OF TECHNOLOGY 75 CAMBRIDGE PARKWAY, CAMBRIDGE,
# MASSACHUSETTS UNDER PROJECT 55-238-70. SPONSORED BY THE MANNED SPACECRAFT
# CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION, CONTRACT
# NAS 9-4065.
#
# THIS PROGRAM IS REFERRED TO AS LUMINARY 1A

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,430 @@
# Copyright: Public domain.
# Filename: DOWNLINK_LISTS.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: 193-205
# 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 193
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.
COUNT* $$/DLIST
ERASZERO EQUALS 7
UNKNOWN EQUALS ERASZERO
SPARE EQUALS ERASZERO # USE SPARE TO INDICATE AVAILABLE SPACE
LOWIDCOD OCT 77340 # LOW ID CODE
NOMDNLST EQUALS LMCSTADL # FRESH START AND POST P27 DOWNLIST
AGSLIST EQUALS LMAGSIDL
UPDNLIST EQUALS LMAGSIDL # UPDATE PROGRAM (P27) DOWNLIST
# Page 194
# LM ORBITAL MANEUVERS LIST
#
# --------------------- CONTROL LIST -------------------------
LMORBMDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR LMORBM01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
1DNADR DELLT4 # DELLT4,+1
3DNADR RTARG # RTARG,+1...+5
1DNADR ELEV # ELEV,+1
1DNADR TEVENT # TEVENT,+1
6DNADR REFSMMAT # REFSMMAT +0...+11D
1DNADR TCSI # TCSI,+1
3DNADR DELVEET1 # DELVEET1 +0...+5
3DNADR VGTIG # VGTIG +0...+5
1DNADR DNLRVELZ # DNLRVELZ,DNLRALT
1DNADR TPASS4 # TPASS4,+1
DNPTR LMORBM02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMORBM03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMORBM04 # COMMON DATA
2DNADR POSTORKU # POSTORKU,NEGTORKU,POSTORKV,NEGTORKV
1DNADR SPARE
1DNADR TCDH # TCDH,+1
3DNADR DELVEET2 # DELVEET2 +0...+5
1DNADR TTPI # TTPI,+1
3DNADR DELVEET3 # DELVEET3 +0...+5
1DNADR DNRRANGE # DNRRANGE,DNRRDOT
2DNADR DNLRVELX # DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT
1DNADR DIFFALT # DIFFALT,+1
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR TIG # TIG,+1
DNPTR LMORBM05 # COMMON DATA
DNPTR LMORBM06 # COMMON DATA
1DNADR SPARE # FORMERLY PIF
-1DNADR TGO # TGO,+1
# --------------------- SUB-LISTS ---------------------------
LMORBM01 -1DNADR R-OTHER +2 # R-OTHER +2,+3 SNAPSHOT
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 +0,+1
LMORBM02 2DNADR REDOCTR # REDOCTR,THETAD,+1,+2 COMMON DATA
# Page 195
1DNADR RSBBQ # RSBBQ,+1
2DNADR OMEGAP # OMEGAP,OMEGAQ,OMEGAR,GARBAGE
2DNADR CDUXD # CDUXD,CDUYD,CDUZD,GARBAGE
2DNADR CDUX # CDUX,CDUY,CDUZ,CDUT
6DNADR STATE # STATE +0...+11D (FLAGWORDS)
-6DNADR DSPTAB # DSPTAB TABLES
LMORBM03 -1DNADR RN +2 # RN +2,+3 SNAPSHOT
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
LMORBM04 2DNADR OMEGAPD # OMEGAPD,OMEGAQD,OMEGARD,GARBAGE
3DNADR CADRFLSH # CADRFLSH,+1,+2,FAILREG,+1,+2
-1DNADR RADMODES # RADMODES,DAPBOOLS COMMON DATA
LMORBM05 2DNADR OMEGAP # OMEGAP,OMEGAQ,OMEGAR,GARBAGE
2DNADR CDUXD # CDUXD,CDUYD,CDUZD,GARBAGE
2DNADR CDUX # CDUX,CDUY,CDUZ,CDUT
1DNADR ALPHAQ # ALPHAQ,ALPHAR COMMON DATA
1DNADR POSTORKP # POSTORKP,NEGTORKP
DNCHAN 11 # CHANNELS 11,12
DNCHAN 13 # CHANNELS 13,14
DNCHAN 30 # CHANNELS 30,31
-DNCHAN 32 # CHANNELS 32,33
LMORBM06 1DNADR PIPTIME1 # PIPTIME,+1 COMMON DATA
-3DNADR DELV # DELV +0...+5
# --------------------------------------------------------------------
# Page 196
# LM COAST AND ALIGNMENT DOWNLIST
#
# ---------------------- CONTROL LIST --------------------------------
LMCSTADL EQUALS # SEND ID BY SPECIAL CODING
DNPTR LMCSTA01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
1DNADR AGSK # AGSK,+1
1DNADR TALIGN # TALIGN,+1
2DNADR POSTORKU # POSTORKU,NEGTORKU,POSTORKV,NEGTORKV
1DNADR DNRRANGE # DNRRANGE,DNRRDOT
1DNADR TEVENT # TEVENT,+1
6DNADR REFSMMAT # REFSMMAT +0...+11D
1DNADR AOTCODE # AOTCODE,GARBAGE
3DNADR RLS # RLS +0...+5
2DNADR DNLRVELX # DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT
DNPTR LMCSTA06 # COMMON DATA
DNPTR LMCSTA02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMCSTA03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMCSTA04 # COMMON DATA
DNPTR LMCSTA07 # COMMON DATA
2DNADR DNLRVELX # DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT
2DNADR CDUS # CDUS,PIPAX,PIPAY,PIPAZ
1DNADR LASTYCMD # LASTYCMD,LASTXCMD
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR TIG # TIG,+1
DNPTR LMCSTA05 # COMMON DATA
-6DNADR DSPTAB # DSPTAB +0...+11D TABLE
# ---------------------- SUB-LISTS --------------------------
LMCSTA01 EQUALS LMORBM01 # COMMON DOWNLIST DATA
LMCSTA02 EQUALS LMORBM02 # COMMON DOWNLIST DATA
LMCSTA03 EQUALS LMORBM03 # COMMON DOWNLIST DATA
LMCSTA04 EQUALS LMORBM04 # COMMON DOWNLIST DATA
LMCSTA05 EQUALS LMORBM05 # COMMON DOWNLIST DATA
LMCSTA06 2DNADR X789 # X789 +0...+3 COMMON DATA
-1DNADR LASTYCMD # LASTYCMD,LASTXCMD
LMCSTA07 3DNADR OGC # OGC,+1,IGC,+1,MGC,+1 COMMON DATA
1DNADR BESTI # BESTI,BESTJ
3DNADR STARSAV1 # STARSAV1 +0...+5
-3DNADR STARSAV2 # STARSAV2 +0...+5
# Page 197
# -----------------------------------------------------------
# Page 198
# LM RENDEZVOUS AND PRE-THRUST DOWNLIST
#
# --------------------- CONTROL LIST ------------------------
LMRENDDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR LMREND01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMREND07 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SNAPSHOT
1DNADR DELLT4 # DELLT4,+1
3DNADR RTARG # RTARG +0...+5
3DNADR DELVSLV # DELVSLV +0...+5
1DNADR TCSI # TCSI,+1
3DNADR DELVEET1 # DELVEET +0...+5
1DNADR SPARE
1DNADR TPASS4 # TPASS4,+1
DNPTR LMREND06 # COMMON DATA
DNPTR LMREND02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMREND03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMREND04 # COMMON DATA
2DNADR POSTORKU # POSTORKU,NEGTORKU,POSTORKV,NEGTORKV
1DNADR SPARE
1DNADR TCDH # TCDH,+1
3DNADR DELVEET2 # DELVEET2 +0...+5
1DNADR TTPI # TTPI,+1
3DNADR DELVEET3 # DELVEET3 +0...+5
1DNADR ELEV # ELEV,+1
2DNADR CDUS # CDUS,PIPAX,PIPAY,PIPAZ
1DNADR LASTYCMD # LASTYCMD,LASTXCMD
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR TIG # TIG,+1
DNPTR LMREND05 # COMMON DATA
1DNADR DELTAR # DELTAR,+1
1DNADR CENTANG # CENTANG,+1
1DNADR NN # NN,+1
1DNADR DIFFALT # DIFFALT,+1
1DNADR DELVTPF # DELVTPF,+1
-1DNADR SPARE
# --------------------- SUB-LISTS --------------------------
LMREND01 EQUALS LMORBM01 # COMMON DOWNLIST DATA
LMREND02 EQUALS LMORBM02 # COMMON DOWNLIST DATA
LMREND03 EQUALS LMORBM03 # COMMON DOWNLIST DATA
# Page 199
LMREND04 EQUALS LMORBM04 # COMMON DOWNLIST DATA
LMREND05 EQUALS LMORBM05 # COMMON DOWNLIST DATA
LMREND06 EQUALS LMCSTA06 # COMMON DOWNLIST DATA
LMREND07 -1DNADR AIG # AIG,AMG SNAPSHOT
1DNADR AOG # AOG,TRKMKCNT
1DNADR TANGNB # TANGNB,+1
1DNADR MKTIME # MKTIME,+1
-1DNADR RANGRDOT # DNRRANGE,DNRRDOT
# -----------------------------------------------------------
# Page 200
# LM DESCENT AND ASCENT DOWNLIST
# ---------------------- CONTROL LIST ------------------------
LMDSASDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR LMDSAS07 # COLLECT SNAPSHOT
DNPTR LMDSAS08 # SEND SNAPSHOT
1DNADR TEVENT # TEVENT,+1
3DNADR UNFC/2 # UNFC/2 +0...+5
3DNADR VGVECT # VGVECT +0...+5
1DNADR TTF/8 # TTF/8,+1
1DNADR DELTAH # DELTAH,+1
3DNADR RLS # RLS +0...+5
1DNADR SPARE
DNPTR LMDSAS09 # COMMON DATA
DNPTR LMDSAS02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMDSAS03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMDSAS04 # COMMON DATA
2DNADR POSTORKU # POSTORKU,NEGTORKU,POSTORKV,NEGTORKV
3DNADR RGU # RGU +0...+5
3DNADR VGU # VGU +0...+5
3DNADR LAND # LAND +0...+5
1DNADR AT # AT,+1
1DNADR TLAND # TLAND,+1
1DNADR FC # FC,GARBAGE
1DNADR LASTYCMD # LASTYCMD,LASTXCMD
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR TIG # TIG,+1
DNPTR LMDSAS05 # COMMON DATA
DNPTR LMDSAS06 # COMMON DATA
1DNADR PSEUDO55 # PSEUDO55,GARBAGE
-1DNADR TTOGO # TTOGO,+1
# ---------------------- SUB-LISTS ------------------------
LMDSAS02 EQUALS LMORBM02 # COMMON DOWNLIST DATA
LMDSAS03 EQUALS LMORBM03 # COMMON DOWNLIST DATA
LMDSAS04 EQUALS LMORBM04 # COMMON DOWNLIST DATA
LMDSAS05 EQUALS LMORBM05 # COMMON DOWNLIST DATA
LMDSAS06 EQUALS LMORBM06 # COMMON DOWNLIST DATA
LMDSAS07 -1DNADR LRZCDUDL # LRZCDUDL,GARBAGE SNAPSHOT
1DNADR VSELECT # VSELECT,GARBAGE
1DNADR LRVTIMDL # LRVTIMDL,+1
# Page 201
1DNADR VMEAS # VMEAS,+1
1DNADR MKTIME # MKTIME,+1
1DNADR HMEAS # HMEAS,+1
1DNADR RM # RM,+1
1DNADR AIG # AIG,AMG
1DNADR AOG # AOG,TRKMKCNT
1DNADR TANGNB # TANGNB,+1
1DNADR MKTIME # MKTIME,+1
-1DNADR LRXCDUDL # LRXCDUDL,LRYCDUDL
LMDSAS08 6DNADR DNTMBUFF # SEND SNAPSHOT
-5DNADR DNTMBUFF +12D
LMDSAS09 EQUALS LMCSTA06 # COMMON DOWNLIST DATA
# ---------------------------------------------------------
# Page 202
# LM LUNAR SURFACE ALIGN DOWNLIST
# ---------------------- CONTROL LIST ---------------------
LMLSALDL EQUALS # SEND ID BY SPECIAL CODING
DNPTR LMLSAL01 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMLSAL07 # COLLECT SNAPSHOT
4DNADR DNTMBUFF # SEND SHAPSHOT
1DNADR TALIGN # TALIGN,+1
6DNADR REFSMMAT # REFSMMAT +0...+11D
6DNADR YNBSAV # YNBSAV +0...+5,SNBSAV +0...+5
DNPTR LMLSAL08 # COMMON DATA
DNPTR LMLSAL02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMLSAL03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SHAPSHOT
DNPTR LMLSAL04 # COMMON DATA
DNPTR LMLSAL09 # COMMON DATA
3DNADR GSAV # GSAV +0...+5
1DNADR AGSK # AGSK,+1
1DNADR LASTYCMD # LASTYCMD,LASTXCMD
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR TIG # TIG,+1
DNPTR LMLSAL05 # COMMON DATA
DNPTR LMLSAL06 # COMMON DATA
1DNADR SPARE
-1DNADR SPARE
# ---------------------- SUB-LISTS ----------------------
LMLSAL01 EQUALS LMORBM01 # COMMON DOWNLIST DATA
LMLSAL02 EQUALS LMORBM02 # COMMON DOWNLIST DATA
LMLSAL03 EQUALS LMORBM03 # COMMON DOWNLIST DATA
LMLSAL04 EQUALS LMORBM04 # COMMON DOWNLIST DATA
LMLSAL05 EQUALS LMORBM05 # COMMON DOWNLIST DATA
LMLSAL06 EQUALS LMORBM06 # COMMON DOWNLIST DATA
LMLSAL07 EQUALS LMREND07 # COMMON DOWNLIST DATA
LMLSAL08 EQUALS LMCSTA06 # COMMON DOWNLIST DATA
LMLSAL09 EQUALS LMCSTA07 # COMMON DOWNLIST DATA
# Page 203
# --------------------------------------------------------
# Page 204
# LM AGS INITIALIZATION AND UPDATE DOWNLIST
# ---------------------- CONTROL LIST --------------------
LMAGSIDL EQUALS # SEND IO BY SPECIAL CODING
3DNADR AGSBUFF +0 # AGSBUFF +0...+5
1DNADR AGSBUFF +12D # AGSBUFF +12D,GARBAGE
3DNADR AGSBUFF +1 # AGSBUFF +1...+6
1DNADR AGSBUFF +13D # AGSBUFF +13D, GARBAGE
3DNADR AGSBUFF +6 # AGSBUFF +6...+11
1DNADR AGSBUFF +12D # AGSBUFF +12D,GARBAGE
3DNADR AGSBUFF +7 # AGSBUFF +7...+12D
1DNADR AGSBUFF +13D # AGSBUFF +13D,GARBAGE
6DNADR COMPNUMB # COMPNUMB,UPOLDMOD,UPVERB,UPCOUNT,
# UPBUFF +0...+7
6DNADR UPBUFF +8D # UPBUFF +8D...+19D
DNPTR LMAGSI02 # COMMON DATA
1DNADR TIME2 # TIME2/1
DNPTR LMAGSI03 # COLLECT SNAPSHOT
6DNADR DNTMBUFF # SEND SNAPSHOT
DNPTR LMAGSI04 # COMMON DATA
2DNADR POSTORKU # POSTORKU,NEGTORKU,POSTORKV,NEGTORKV
1DNADR SPARE
1DNADR SPARE
1DNADR AGSK # AGSK,+1
6DNADR UPBUFF # UPBUFF +0...+11D
4DNADR UPBUFF +12D # UPBUFF +12D...+19D
1DNADR LEMMASS # LEMMASS,CSMMASS
1DNADR IMODES30 # IMODES30,IMODES33
1DNADR SPARE
DNPTR LMAGSI05 # COMMON DATA
-6DNADR DSPTAB # DSPTAB +0...+11D
# ---------------------- SUB-LISTS ---------------------
LMAGSI02 EQUALS LMORBM02 # COMMON DOWNLIST DATA
LMAGSI03 EQUALS LMORBM03 # COMMON DOWNLIST DATA
LMAGSI04 EQUALS LMORBM04 # COMMON DOWNLIST DATA
LMAGSI05 EQUALS LMORBM05 # COMMON DOWNLIST DATA
# ------------------------------------------------------
DNTABLE GENADR LMCSTADL # LM COAST AND ALIGN DOWNLIST
GENADR LMAGSIDL # LM AGS INITIALIZATION/UPDATE DOWNLIST
GENADR LMRENDDL # LM RENDEZVOUS AND PRE-THRUST DOWNLIST
GENADR LMORBMDL # LM ORBITAL MANEUVERS DOWNLIST
GENADR LMDSASDL # LM DESCENT AND ASCENT DOWNLIST
# Page 205
GENADR LMLSALDL # LM LUNAR SURFACE ALIGN DOWNLIST
# ------------------------------------------------------

File diff suppressed because it is too large Load Diff

503
Luminary099/EXECUTIVE.agc Normal file
View File

@ -0,0 +1,503 @@
# Copyright: Public domain.
# Filename: EXECUTIVE.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: 1103-1114
# Mod history: 2009-05-25 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-01-06 JL Fixed pseudo-label indentation.
# 2011-05-08 JL Removed workaround.
# 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 1103
BLOCK 02
# TO ENTER A JOB REQUEST REQUIRING NO VAC AREA:
COUNT* $$/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"
TS L
# Page 1104
+2 CAF EXECBANK
TS BBANK
TCF CHANJOB -1
# Page 1105
# 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 1106
# LOCATE AN AVAILABLE VAC AREA
BANK 01
COUNT* $$/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
LXCH EXECTEM1
CA Q
TC BAILOUT1
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 7
TCF NEXTCORE # AN ACTIVE JOB HAS A POSITIVE PRIORITY
# BUT A DORMANT JOB'S PRIORITY IS NEGATIVE
# Page 1107
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
LXCH EXECTEM1
CA Q
TC BAILOUT1 # NO CORE SETS AVAILABLE.
OCT 1202
# Page 1108
# 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 1109
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 1110
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 SLEEPINT JOB.
# Page 1111
# 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 SLEEPIN 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 # MAKE 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 1112
# 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 1113
# 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
CCS PRIORITY +84D
# Page 1114
TC EJ1
TC CCSHOLE
TCF +1
# Page 1115
# 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
CAF 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 1116
# IDLING AND COMPUTER ACTIVITY (GREEN) LIGHT MAINTENANCE. THE IDLING ROUTINE 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* $$/EXEC
# SUPDXCHZ -- ROUTINE TO TRANSFER TO SUPEBANK.
# 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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,264 @@
# Copyright: Public domain.
# Filename: FIXED_FIXED_CONSTANT_POOL.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: 1095-1099
# 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 1095
BLOCK 02
COUNT* $$/FCONS
# THE FOLLOWING TABLE OF 18 VALUES IS INDEXED. DO NOT INSERT OR REMOVE ANY QUANTITIES
DPOSMAX OCT 37777 # MUST PRECEDE 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
LOW4 OCT 17
# Page 1096
# BIT5 OCT 00020
# NC1 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
OCT33 OCT 33
# DEC27 = OCT33
OCT35 OCT 35
# DEC29 = OCT35
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
# Page 1097
# MID5 OCT 1740 # PINBALL
BITS2-10 OCT 1776
LOW10 OCT 1777
# 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* $$/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
# Page 1098
PRIO35 OCT 35000
PRIO36 OCT 36000
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 1099
# 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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,76 @@
# Copyright: Public domain.
# Filename: GIMBAL_LOCK_AVOIDANCE.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: 364
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2010-12-31 JL Fixed page number comment.
#
# 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 364
BANK 15
SETLOC KALCMON1
BANK
# DETECTING GIMBAL LOCK
LOCSKIRT EQUALS NOGIMLOC
NOGIMLOC SET
CALCMAN3
WCALC LXC,1 DLOAD*
RATEINDX # CHOOSE THE DESIRED MANEUVER RATE
ARATE,1 # FROM A LIST OF FOUR
SR4 CALL # COMPUTE THE INCREMENTAL ROTATION MATRIX
DELCOMP # DEL CORRESPONDING TO A 1 SEC ROTATION
# ABOUT COF
DLOAD* VXSC
ARATE,1
COF
STODL BRATE # COMPONENT MANEUVER RATES 45 DEG/SEC
AM
DMP DDV*
ANGLTIME
ARATE,1
SR
5
STORE TM # MANEUVER EXECUTION TIME SCALED AS T2
SETGO
CALCMAN2 # D(OFF) = CONTINUE MANEUVER
NEWANGL +1 # 1(ON) = START MANEUVER
# THE FOUR SELECTABLE FREE FALL MANEUVER RATES SELECTED BY
# LOADING RATEINDX WITH 0, 2, 4, 6, RESPECTIVELY
ARATE 2DEC .0088888888 # = 0.2 DEG/SEC $ 22.5 DEG/SEC
2DEC .0222222222 # = 0.5 DEG/SEC $ 22.5 DEG/SEC
2DEC .0888888888 # = 2.0 DEG/SEC $ 22.5 DEG/SEC
2DEC .4444444444 # = 10.0 DEG/SEC $ 22.5 DEG/SEC
ANGLTIME 2DEC .0001907349 # = 100B-19 FUDGE FACTOR TO CONVERT
# MANEUVER ANGLE TO MANEUVER TIME

View File

@ -0,0 +1,205 @@
# Copyright: Public domain.
# Filename: GROUND_TRACKING_DETERMINATION_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: 654-657
# Mod history: 2009-05-18 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 654
# 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.137535898 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 655
# 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* $$/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 CLEAR
P21FLAG
P21CONT # ON -- RECYCLE USING BASE VECTOR
VINTFLAG # OFF -- 1ST PASS CALL BASE VECTOR
SLOAD SR1
OPTION2
BHIZ SET
+2 # ZERO -- THIS VEHICLE (LM)
VINTFLAG # ONE -- OTHER VEHICLE (CM)
CLEAR CLEAR
DIM0FLAG
INTYPFLG # PRECISION
CALL
INTEGRV # CALCULATE
GOTO # AND
P21VSAVE # SAVE BASE VECTOR
P21CONT VLOAD
P21BASER # RECYCLE -- INTEG FROM BASE VECTOR
STOVL RCV # --POS
# Page 656
P21BASEV
STODL VCV # --VEL
P21TIME
STORE TET # --TIME
CLEAR CLEAR
DIM0FLAG
MOONFLAG
SLOAD BZE
P21ORIG
+3 # ZERO = EARTH
SET # ---2 = MOON
MOONFLAG
+3 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-07 OR B-05
ABVAL SL*
0,2
STOVL P21VEL # VEL/ FOR N91 DISP
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 SLOAD
P21ORIG # 0 = EARTH
OPTION2
SR1 BHIZ
+3
GOTO
+4
+3 BON
SURFFLAG
P21DSP
+4 SET
P21FLAG
P21DSP CLEAR SLOAD # GENERATE DISPLAY DATA
LUNAFLAG
X2
BZE SET
+2 # 0 = EARTH
LUNAFLAG
VLOAD
RATT
# Page 657
STODL ALPHAV
TAT
CLEAR CALL
ERADFLAG
LAT-LONG
DMP # MPAC = ALT, METERS B-29
K.01
STORE P21ALT # ALT/100 FOR N91 DISP
EXIT
CAF V06N43 # DISPLAY LAT, LONG, ALT
TC BANKCALL # LAT, LONG = 1/2 REVS B0
CADR GOFLASH # ALT = KM B14
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
V06N43 VN 00643
V6N34 VN 00634
K.01 2DEC .01

View File

@ -0,0 +1,418 @@
# Copyright: Public domain.
# Filename: IMU_COMPENSATION_PACKAGE.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: 326-337
# Mod history: 2009-05-16 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 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 326
BANK 7
SETLOC IMUCOMP
BANK
EBANK= NBDX
COUNT* $$/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
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(-5) * *
EXTEND
MP 1/PIPADT # (CS) X 2(+8) NOW (PIPA PULSES) X 2(+5) *
EXTEND
MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11 *
INDEX BUF +2
DAS DELVX # (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)
CCS BUF +2 # PIPAZ, PIPAY, PIPAX
AD NEG1
TCF 1/PIPA1 +1
# Page 327
NOOP # LESS THAN ZERO IMPOSSIBLE
# Page 328
IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS.
TS BUF # INDEX COUNTER. IRIGX, IRIGY, IRIGZ.
TC IRIGX # COMPENSATE ACCELERATION TERMS
CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
TC DRIFTSUB # -(NBOX)(DELTAT) (GYRO PULSES) X 2(+14)
TC IRIGY # COMPENSATE ACCELERATION TERMS
CS NBDY # (GYRO PULSES)/(CS) X 2(-5)
TC DRIFTSUB # +(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
TC IRIGZ # COMPENSATE ACCELERATION TERMS
CA NBDZ # (GYRO PULSES)/(CS) X 2(-5)
TC DRIFTSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TCF +2 # YES SEND OUT GYRO TORQUING COMMANDS.
TCF IRIG1 # NO RETURN
CA PRIO21 # PRIO GREATER THAN SERVICER.
TC NOVAC # SEND OUT GYRO TORQUING COMMANDS.
EBANK= NBDX
2CADR 1/GYRO
RELINT
IRIG1 CA MODE # RESTORE CALLER'S EBANK
TS EBANK
TCF SWRETURN
# Page 329
IRIGX EXTEND
QXCH MPAC +2 # SAVE Q
EXTEND
DCS DELVX # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
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(-6) *
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(-6) *
# TC GCOMPSUB # *** -(ADOAX)(PIPAZ) (GYRO PULSES) X 2(+14)
TC MPAC +2
IRIGY EXTEND
QXCH MPAC +2 # SAVE Q
EXTEND
DCS DELVY # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
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(-6) *
TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)
# EXTEND # ***
# DCS DELVX # *** (PIPA PULSES) X 2(+14)
# DXCH MPAC # ***
# CA ADOAY # *** (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
# TC GCOMPSUB # *** -(ADOAY)(/PIPAX) (GYRO PULSES) X 2(+14)
TC MPAC +2
IRIGZ EXTEND
QXCH MPAC +2 # SAVE Q
EXTEND
DCS DELVY # (PIPA PULSES) X 2(+14)
DXCH MPAC
CA ADSRAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
# Page 330
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(-6) *
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(-6) *
# TC GCOMPSUB # *** +(ADOAZ)(PIPAX) (GYRO PULSES) X 2(+14)
TC MPAC +2
# Page 331
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(-6) *
DXCH VBUF # NOW = (GYRO PULSES) X 2(+8) *
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(+8) *
CA VBUF # PARTIAL RESULT -- MAJOR
EXTEND
MP BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
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 BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
TS L
CAF ZERO
INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
DAS GCOMP # (ADIA)(PIPAI) OR (ADSRA)(PIPAI)
TC Q
# Page 332
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 # NO 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 COMPCHK # DEC -1
CCS A # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TS GCOMPSW # YES -- SET GCOMPSW POSITIVE
TC BUF +1 # NO
# Page 333
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
COMPCHK DEC -1 # LESS THAN ZERO IMPOSSIBLE
TCF ENDOFJOB
# Page 334
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 FLAGWRD8 # IF SURFACE FLAG IS SET, SET TEM1
MASK BIT8 # POSITIVE SO THAT THE ACCELERATION TERMS
TS TEM1 # WILL BE COMPENSATED.
EXTEND
BZF +3 # ARE WE ON THE SURFACE
TC IBNKCALL # ON THE SURFACE
CADR PIPASR +3 # READ PIPAS, BUT DO NOT SCALE THEM
CA TIME1 # (CS) X 2(+14)
XCH 1/PIPADT # PREVIOUS TIME
RELINT
COM
AD 1/PIPADT # PRESENT TIME - PREVIOUS TIME
NBD2 AD HALF # CORRECT FOR POSSIBLE TIME1 TICK
AD HALF
XCH L # IF TIME1 DID NOT DICK, REMOVE RESULTING
XCH L # OVERFLOW.
NBD3 EXTEND # C(A) = DELTAT (CS) X 2(+14)
MP BIT10 # SHIFT RIGHT 5
DXCH VBUF +2
CA ZERO
TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS.
TS BUF # INDEX X, Y, Z.
CCS TEM1 # IF SURFACE FLAG IS SET,
TC IRIGX # COMPENSATE ACCELERATION TERMS.
EXTEND
DCA VBUF +2
DXCH MPAC # DELTAT NOW SCALED (CS) X 2(+19)
CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
TC FBIASSUB # -(NBOX)(DELTAT) (GYRO PULSES) X 2(+14)
CCS TEM1 # IF SURFACE FLAG IS SET,
TC IRIGY # COMPENSATE ACCELERATION TERMS.
# Page 335
EXTEND
DCS VBUF +2
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)
CCS TEM1 # IF SURFACE FLAG IS SET,
TC IRIGZ # COMPENSATE ACCELERATION TERMS
EXTEND
DCS VBUF +2
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)
CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
TCF 1/GYRO # YES
TCF ENDOFJOB # NO
# Page 336
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 # NOW 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 PIPUSE1
CCS GCOMPSW
TCF +3
TCF +2
TCF ENDOFJOB
CA FLAGWRD8 # IF SURFACE FLAG IS SET, SET TEM1
MASK SURFFBIT # POSITIVE SO THAT THE ACCELERATION TERMS
TS TEM1 # WILL BE COMPENSATED.
CAF PRIO31 # 2 SECONDS SCALED (CS) X 2(+8)
XCH 1/PIPADT
COM
AD PIPTIME +1
TCF NBD2
GCOMPZER CAF LGCOMP # ROUTINE TO ZERO GCOMP BEFORE FIRST
XCH EBANK # CALL TO 1/PIPA
TS MODE
CAF ZERO
TS GCOMPSW
TS GCOMP
TS GCOMP +1
TS GCOMP +2
TS GCOMP +3
TS GCOMP +4
# Page 337
TS GCOMP +5
TCF IRIG1 # RESTORE EBANK AND RETURN

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,300 @@
# Copyright: Public domain.
# Filename: INFLIGHT_ALIGNMENT_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: 1249-1258
# Mod history: 2009-05-26 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 1249
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* $$/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 1250
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 1251
# ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
#
# THE INPUTS ARE SIN/4 AND COS/4 STORED UP 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 1252
# 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 1253
# 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 1254
DOT STADR
STCALL SINTH # SIN(IG) = XSM . MGA
ARCTRIG
STOVL IGC
OGC
RTB
V1STO2S
STCALL THETAD
S2
GIMLOCK1 EXIT
TC ALARM
OCT 00401
TC UPFLAG # GIMBAL LOCK HAS OCCURRED
ADRES GLOKFAIL
TC INTPRET
GOTO
CALCGA1
# Page 1255
# 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 1256
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 1257
QTSN45 2DEC .1768
.166... 2DEC .1666666667
# Page 1258 (empty page)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,175 @@
# Copyright: Public domain.
# Filename: INTER-BANK_COMMUNICATION.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: 998-1001
# Mod history: 2009-05-24 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-05-08 JL Removed workaround.
# 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 998
# 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* $$/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 999
# 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 1000
# 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
CAF 0
INCR Q
ISWCALLL 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 1001
# 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

3075
Luminary099/INTERPRETER.agc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,117 @@
# Copyright: Public domain.
# Filename: INTERRUT_LEAD_INS.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: 0153-0154
# 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 153
SETLOC 4000
COUNT* $$/RUPTS # FIX-FIX LEAD INS
INHINT # GO
CAF GOBB
XCH BBANK
TCF GOPROG
DXCH ARUPT # T6RUPT
EXTEND
DCA T6ADR
DTCB
DXCH ARUPT # T5RUPT -- AUTOPILOT
EXTEND
DCA T5ADR
DTCB
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
CAF RDRPTBB
# Page 154
XCH BBANK
TCF RADAREAD
DXCH ARUPT # RUPT10 IS USED ONLY BY LANDING GUIDANCE
CA RUPT10BB
XCH BBANK
TCF PITFALL
EBANK= LST1 # RESTART USES E0, E3
GOBB BBCON GOPROG
EBANK= PERROR
T6ADR 2CADR DOT6RUPT
EBANK= LST1
T3RPTBB BBCON T3RUPT
EBANK= KEYTEMP1
KEYRPTBB BBCON KEYRUPT1
EBANK= AOTAZ
MKRUPTBB BBCON MARKRUPT
UPRPTBB = KEYRPTBB
EBANK= DNTMBUFF
DWNRPTBB BBCON DODOWNTM
EBANK= RADMODES
RDRPTBB BBCON RADAREAD
EBANK= M11
T4RPTBB BBCON T4RUPT
EBANK= ELVIRA
RUPT10BB BBCON PITFALL

View File

@ -0,0 +1,229 @@
# Copyright: Public domain.
# Filename: KALCMANU_STEERING.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: 365-369
# Mod history: 2009-05-17 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-01-06 JL Added missing comment characters.
#
# 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 365
# GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
#
# NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
EBANK= TTEMP
NEWDELHI TC BANKCALL # CHECK FOR AUTO STABILIZATION
CADR ISITAUTO # ONLY
CCS A
TCF NOGO -2
NEWANGL TC INTPRET
AXC,1 AXC,2
MIS # COMPUTE THE NEW MATRIX FROM S/C TO
KEL # 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 SPNDX
INDEX SPNDX
CA BCDU # INITIAL CDU ANGLES
EXTEND # OR PREVIOUS DESIRED CDU ANGLES
INDEX SPNDX
MSU NCDU
EXTEND
# The following 2 lines seem to have no purpose at all.
# I am removing them because they only serve to confuse
# the assembler by getting in between EXTEND and MP.
# --- RSB 2009.
#SETLOC KALCMON1
#BANK
MP DT/TAU
CCS A # CONVERT TO 2'S COMPLEMENT
AD ONE
TCF +2
COM
INDEX SPNDX
TS DELDCDU # ANGLE INCREMENTS TO BE ADDED TO
INDEX SPNDX # CDUXD, CDUYD, CDUZD EVERY TENTH SECOND
# Page 366
CA NCDU # BY LEM DAP
INDEX SPNDX
XCH BCDU
INDEX SPNDX
TS CDUXD
CCS SPNDX
TCF INCRDCDU # LOOP FOR THREE AXES
RELINT
# COMPARE PRESENT TIME WTIH TIME TO TERMINATE MANEUVER
TMANUCHK TC TIMECHK
TCF CONTMANU
CAF ONE
MANUSTAL INHINT # END MAJOR PART OF MANEUVER WITHIN 1 SEC
TC WAITLIST # UNDER WAITLIST CALL TO MANUSTOP
EBANK= TTEMP
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 ONESEK +1
EXTEND
BZMF 2NDRETRN
INCR Q
2NDRETRN INCR Q
TC Q
DT/TAU DEC .1
MANUSTAT EXIT # INITIALIZATION ROUTINE
EXTEND # FOR AUTOMATIC MANEUVERS
DCA TIME2
# Page 367
DAS TM # TM+TO MANEUVER COMPLETION TIME
EXTEND
DCS ONESEK
DAS TM # (TM+TO)-1
INHINT
CAF TWO
RATEBIAS TS KSPNDX
DOUBLE
TS KDPNDX
INDEX A
CA BRATE
INDEX KSPNDX # STORE MANEUVER RATE IN
TS OMEGAPD # OMEGAPD, OMEGAQD, OMEGARD
EXTEND
BZMF +2 # COMPUTE ATTITUDE ERROR
COM # OFFSET = (WX)ABS(WX)/2AJX
EXTEND # WHERE AJX= 2-JET ACCELERATION
MP BIASCALE # = -1/16
EXTEND
INDEX KDPNDX
MP BRATE
EXTEND
INDEX KSPNDX
DV 1JACC # = AJX $ 90 DEG/SEC-SEC
INDEX KSPNDX
TS DELPEROR # $ 180 DEG
CCS KSPNDX
TCF RATEBIAS
CA TIME1
AD ONESEK +1
XCH NEXTIME
TCF INCRDCDU -1
ONESEK DEC 0
DEC 100
BIASCALE OCT 75777 # = -1/16
CONTMANU CS TIME1 # RESET FOR NEXT DCDU UPDATE
AD NEXTIME
CCS A
AD ONE
TCF MANUCALL
AD NEGMAX
COM
MANUCALL INHINT # CALL FOR NEXT UPDATE VIA WAITLIST
TC WAITLIST
EBANK= TTEMP
2CADR UPDTCALL
# Page 368
CAF ONESEK +1 # INCREMENT TIME FOR NEXT UPDATE
ADS NEXTIME
TCF ENDOFJOB
UPDTCALL CAF PRIO26 # SATELLITE PROGRAM TO CALL FOR UPDATE
TC FINDVAC # OF STEERING COMMANDS
EBANK= TTEMP
2CADR NEWDELHI
TC TASKOVER
# Page 369
# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
MANUSTOP CAF ZERO # ZERO MANEUVER RATES
TS DELDCDU2
TS OMEGARD
TS DELREROR
TS DELDCDU1
TS OMEGAQD
TS DELQEROR
CA CPSI # SET DESIRED GIMBAL ANGLES TO
TS CDUZD # DESIRED FINAL GIMBAL ANGLES
CA CTHETA
TS CDUYD
ENDROLL CA CPHI # NO FINAL YAW
TS CDUXD
CAF ZERO
TS OMEGAPD # I.E., MANEUVER DID NOT GO THRU
TS DELDCDU # GIMBAL LOCK ORIGINALLY
TS DELPEROR
GOODMANU CA ATTPRIO # RESTORE USERS PRIO
TS NEWPRIO
CA ZERO # ZERO ATTCADR
DXCH ATTCADR
TC SPVAC # RETURN TO USER
TC TASKOVER

View File

@ -0,0 +1,132 @@
# Copyright: Public domain.
# Filename: KEYRUPT_UPRUPT.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: 1338-1340
# 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 1338
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 DSKYFBIT
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 1339
# 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
UPCK 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 UPLOCBIT # TEST UPLOCKFL FOR 0 OR 1
MASK FLAGWRD7
CCS A
TC RESUME # UPLOCKFL = 1
TC ACCEPTUP # UPLOCKFL = 0
CLUPLOCK CS UPLOCBIT # 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 UPLOCBIT # (BY SETTING UPLOCKFL = 1) UNTIL
ADS FLAGWRD7 # `ERROR RESET' IS SENT VIA UPLINK.
TC RESUME
UPTEST AD KEYTEMP1
# Page 1340
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.
CS XDSPBIT

View File

@ -0,0 +1,308 @@
# Copyright: Public domain.
# Filename: LATITUDE_LONGITUDE_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: Jim Lawton <jim DOT lawton AT gmail DOT com>
# Website: www.ibiblio.org/apollo.
# Pages: 1133-1139
# Mod history: 2009-05-28 JL Updated from page images.
# 2011-01-06 JL Fixed interpretive indentation.
#
# 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 1133
# 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, SFTGAMMA, 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* $$/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
DAD SQRT
# Page 1134
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 1135
# 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 # PD 4 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 1136
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
# Page 1137
# 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 1138
# ***** 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 1139
# ***** 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
# GETERAD
#
# 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

View File

@ -0,0 +1,196 @@
# Copyright: Public domain.
# Filename: LUNAR_AND_SOLAR_EPHEMERIDES_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: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 984-987
# Mod history: 2009-05-24 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 984
# NAME -- LSPOS -- LOCATE SUN AND MOON DATE -- 25 OCT 67
# MOD NO. 1
# MOD BY NEVILLE ASSEMBLY SUNDANCE
#
# FUNCTIONAL DESCRIPTION
#
# COMPUTES UNIT POSITION VECTOR OF THE SUN AND MOON IN THE BASIC REFERENCE SYSTEM. THE SUN VECTOR S IS
# LOCATED VIA TWO ANGLES. THE FIRST ANGLE (OBLIQUITY) IS THE ANGLE BETWEEN THE EARTH EQUATOR AND THE ECLIPTIC. THE
# POSITION VECTOR OF THE SUN IS
# _
# S = (COS(LOS), COS(OBL)*SIN(LOS), SIN(OBL)*SIN(LOS)), WHERE
#
# LOS = LOS +LOS *T-(C *SIN(2PI*T)/365.24 +C *COS(2PI*T)/365.24)
# 0 R 0 1
# LOS (RAD) IS THE LONGITUDE OF THE SUN FOR MIGNIGHT JUNE 30TH OF THE PARTICULAR YEAR.
# 0
# LOS (RAD/DAY) IS THE MEAN RATE FOR THE PARTICULAR YEAR.
# R
#
# LOS AND LOS ARE STORED AS LOSC AND LOSR IN RATESP.
# 0 R
# COS(OBL) AND SIN(OBL) ARE STORED IN THE MATRIX KONMAT.
#
# T, TIME MEASURED IN DAYS (24 HOURS) IS STORED IN TIMEP.
#
# C AND C ARE FUDGE FACTORS TO MINIMIZE THE DEVIATION. THEY ARE STORED AS ONE CONSTANT (CMOD), SINCE
# 0 1 2 2 1/2
# C *SIN(X)+C *COS(X) CAN BE WRITTEN AS (C +C ) *SIN(X+PHI), WHERE PHI=ARCTAN(C /C ).
# 0 1 1 0
#
# THE MOON IS LOCATED VIA FOUR ANGLES, THE FIRST IS THE OBLIQUITY. THE SECOND IS THE MEAN LONGITUDE OF THE MOON,
# MEASURED IN THE ECLIPTIC FROM THE MEAN EQUINOX TO THE MEAN ASCENDING NODE OF THE LUNAR ORBIT, AND THEN ALONG THE
# ORBIT. THE THIRD ANGLE IS THE ANGLE BETWEEN THE ECLIPTIC AND THE LUNAR ORBIT. THE FOURTH ANGLE IS THE LONGITUDE
# OF THE NODE OF THE MOON, MEASURED IN THE LUNAR ORBIT. LET THESE ANGLES BE OBL,LOM,IM, AND LON RESPECTIVELY.
#
# THE SIMPLIFIED POSITION VECTOR OF THE MOON IS
# _
# M=(COS(LOM), COS(OBL)*SIN(LOM)-SIN(OBL)*SIN(IM)*SIN(LOM-LON), SIN(OBL)*SIN(LOM)+COS(OBL)*SIN(IM)*SIN(LOM-LON))
#
# WHERE
# LOM=LOM +LOM *T-(A *SIN(2PI*T/27.5545)+A *COS(2PI*T/27.5545)+B *SIN(2PI*T/32)+B *COS(2PI*T/32)), AND
# 0 R 0 1 0 1
# LON=LON +LON
# 0 R
# A , A , B AND B ARE STORE AS AMOD AND BMOD (SEE DESCRIPTION OF CMOD, ABOVE). COS(OBL), SIN(OBL)*SIN(IM),
# 0 1 0 1
# SIN(OBL), AND COS(OBL)*SIN(IM) ARE STORED IN KONMAT AS K1, K2, K3, AND K4, RESPECTIVELY. LOM , LOM , LON , LON
# 0 R 0 R
# ARE STORED AS LOM0, LOMR, LON0, AND LONR IN RATESP.
#
# THE THREE PHIS ARE STORED AS AARG, BARG, AND CARG(SUN). ALL CONSTANTS ARE UPDATED BY YEAR.
#
# CALLING SEQUENCE
# Page 985
# CALL LSPOS. RETURN IS VIA CPRET.
#
# ALARMS OR ABORTS
# NONE
#
# ERASABLE INITIALIZATION REQUIRED
# TEPHEM -- TIME FROM MIGNIGHT 1 JULY PRECEDING THE LAUNCH TO THE TIME OF THE LAUNCH (WHEN THE AGC CLOCK WENT
# TO ZERO). TEPHEM IS TP WITH UNITS OF CENTI-SECONDS.
#
# TIME2 AND TIME1 ARE IN MPAC AND MPAC +1 WHEN PROGRAM IS CALLED.
#
# OUTPUT
# UNIT POSITIONAL VECTOR OF SUN IN VSUN. (SCALED B-1)
# UNIT POSITIONAL VECTOR OF MOON IN VMOON. (SCALED B-1)
#
# SUBROUTINES USED
# NONE
#
# DEBRIS
# CURRENT CORE SET, WORK AREA AND FREEFLAG
BANK 04
SETLOC EPHEM
BANK
EBANK= VSUN
COUNT* $$/EPHEM
LUNPOS EQUALS LSPOS
LSPOS SETPD SR
0
14D # TP
TAD DDV
# HG comments in [...] are hand written comments in original listing
TEPHEM # TIME OF LAUNCH [IN CENTISEC B 42]
CSTODAY # 24 HOURS -- 8640000 CENTI-SECS/DAY B-33
STORE TIMEP # T IN DAYS [@ B 9 = 512 DAYS]
AXT,1 AXT,2 # [GRANULRITY = 0.164 SEC]
0
0
CLEAR
FREEFLAG # SWITCH BIT
POSITA DLOAD
KONMAT +2 # ZEROS
STORE GTMP
POSITB DLOAD DMP*
TIMEP # T
VAL67 +4,1 # 1/27 OR 1/32 OR 1/365
# Page 986
SL DAD*
8D
VAL67 +2,1 # AARG
SIN DMP* # SIN(T/27+PHI) OR T/32 OR T/365
VAL67,1 # (A0**2+A1**2)**1/2 SIN(X+PHIA)
DAD INCR,1 # PLUS
GTMP # (B0**2+B1**2)**1/2 SIN(X+PHIB)
DEC -6
STORE GTMP # OR (C0**2+C1**2)**1/2 SIN(X+PHIC)
BOFSET
FREEFLAG
POSITB
POSITD DLOAD DMP*
TIMEP # T
RATESP,2 # LOMR,LOSR,LONR
SL DAD*
5D
RATESP +6,2 # LOM0,LOS0,LON0
DSU
GTMP
STORE STMP,2 # LOM,LOS,LON
SLOAD INCR,2
X2
DEC -2
DAD BZE
RCB-13 # PLUS 2
POSITE # 2ND
BPL
POSITA # 1ST
POSITF DLOAD DSU # 3RD
STMP # LOM
STMP +4 # LON
SIN PDDL # SIN(LOM-LON)
STMP
SIN PDDL # SIN LOM
STMP
COS VDEF # COS LOM
MXV UNIT
KONMAT # K1,K2,K3,K4,
STORE VMOON
DLOAD PDDL
KONMAT +2 # ZERO
STMP +2
SIN PDDL # SIN LOS
STMP +2
COS VDEF # COS LOS
MXV UNIT
KONMAT
STORE VSUN
RVQ
# Page 987
POSITE DLOAD
KONMAT +2 # ZEROS
STORE GTMP
GOTO
POSITD
LUNVEL RVQ
SETLOC EPHEM1
BANK
COUNT* $$/EPHEM
STMP EQUALS 16D
GTMP EQUALS 22D
TIMEP EQUALS 24D
# *** END OF LEMP50S .115 ***

165
Luminary099/MAIN.agc Normal file
View File

@ -0,0 +1,165 @@
# Copyright: Public domain.
# Filename: MAIN.agc
# Purpose: The main source file for Luminary 1A, revision 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/index.html
# Mod history: 2009-05-05 RSB Adapted from Luminary131/MAIN.agc.
#
# The contents of the "Luminary099" files, in general, are
# transcribed from a digital images created from a hardcopy of the program
# residing at the MIT Museum. Many thanks to Debbie Douglas of the Museum,
# and to Paul Fjeld (who made the images).
#
# Notations on this document read, in part:
#
# ASSEMBLE REVISION 001 OF AGC PROGRAM LMY99 BY NASA 2021112-061
# 16:27 JULY 14,1969
# [Note that this is the date the hardcopy was made, not the
# date of the program revision or the assembly.]
# ...
# THIS LGC PROGRAM IS INTENDED FOR USE IN THE LM DURING THE MANNED
# LUNAR LANDING MISSION OR ANY SUBSET THEREOF.
# ...
#
# The page images themselves, as reduced in size (and consequently in
# quality) to be suitable for online presentation, are available at
# http://www.ibiblio.org/apollo. If you want to see the (much) higher
# quality digital images that Paul actually made, contact info@sandroi.org
# directly.
#
# This file is a little different from the other Luminary099 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 "TABLE OF SUBROUTINE LOG SECTIONS" 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 believe a tape-library method was used to avoid having to continually
# reload the card decks, but that doesn't change the basic principle.)
# 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). In fact, it was replaced by another assembler
# ("GAP") even before Apollo 11, but GAP is no more available than is YUL. 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. Besides, the digital
# images of the assembly listing contains 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 at hand.
$CONTRACT_AND_APPROVALS.agc # p. 1
$ASSEMBLY_AND_OPERATION_INFORMATION.agc # pp. 2-27
$TAGS_FOR_RELATIVE_SETLOC.agc # pp. 28-37
$CONTROLLED_CONSTANTS.agc # pp. 38-53
$INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc # pp. 54-60
$FLAGWORD_ASSIGNMENTS.agc # pp. 61-88
# p. 89 is a GAP-generated table
$ERASABLE_ASSIGNMENTS.agc # pp. 90-152
$INTERRUPT_LEAD_INS.agc # pp. 153-154
$T4RUPT_PROGRAM.agc # pp. 155-189
$RCS_FAILURE_MONITOR.agc # pp. 190-192
$DOWNLINK_LISTS.agc # pp. 193-205
$AGS_INITIALIZATION.agc # pp. 206-210
$FRESH_START_AND_RESTART.agc # pp. 211-237
$RESTART_TABLES.agc # pp. 238-243
$AOTMARK.agc # pp. 244-261
$EXTENDED_VERBS.agc # pp. 262-300
$PINBALL_NOUN_TABLES.agc # pp. 301-319
$LEM_GEOMETRY.agc # pp. 320-325
$IMU_COMPENSATION_PACKAGE.agc # pp. 326-337
$R63.agc # pp. 338-341
$ATTITUDE_MANEUVER_ROUTINE.agc # pp. 342-363
$GIMBAL_LOCK_AVOIDANCE.agc # p. 364
$KALCMANU_STEERING.agc # pp. 365-369
$SYSTEM_TEST_STANDARD_LEAD_INS.agc # pp. 370-372
$IMU_PERFORMANCE_TEST_2.agc # pp. 373-381
$IMU_PERFORMANCE_TESTS_4.agc # pp. 382-389
$PINBALL_GAME_BUTTONS_AND_LIGHTS.agc # pp. 390-471
$R60_62.agc # pp. 472-485
$S-BAND_ANTENNA_FOR_LM.agc # pp. 486-489
$RADAR_LEADIN_ROUTINES.agc # pp. 490-491
$P20-P25.agc # pp. 492-614
$P30_P37.agc # pp. 615-617
$P32-P35_P72-P75.agc # pp. 618-650
$LAMBERT_AIMPOINT_GUIDANCE.agc # pp. 651-653
$GROUND_TRACKING_DETERMINATION_PROGRAM.agc # pp. 654-657
$P34-35_P74-75.agc # pp. 658-702
$R31.agc # pp. 703-708
$P76.agc # pp. 709-711
$R30.agc # pp. 712-722
$STABLE_ORBIT.agc # pp. 723-730
$BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc # pp. 731-751
$P40-P47.agc # pp. 752-784
$THE_LUNAR_LANDING.agc # pp. 785-792
$THROTTLE_CONTROL_ROUTINES.agc # pp. 793-797
$LUNAR_LANDING_GUIDANCE_EQUATIONS.agc # pp. 798-828
$P70-P71.agc # pp. 829-837
$P12.agc # pp. 838-842
$ASCENT_GUIDANCE.agc # pp. 843-856
$SERVICER.agc # pp. 857-897
$LANDING_ANALOG_DISPLAYS.agc # pp. 898-907
$FINDCDUW--GUIDAP_INTERFACE.agc # pp. 908-925
$P51-P53.agc # pp. 926-983
$LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc # pp. 984-987
$DOWN_TELEMETRY_PROGRAM.agc # pp. 988-997
$INTER-BANK_COMMUNICATION.agc # pp. 998-1001
$INTERPRETER.agc # pp. 1002-1094
$FIXED_FIXED_CONSTANT_POOL.agc # pp. 1095-1099
$INTERPRETIVE_CONSTANT.agc # pp. 1100-1101
$SINGLE_PRECISION_SUBROUTINES.agc # p. 1102
$EXECUTIVE.agc # pp. 1103-1116
$WAITLIST.agc # pp. 1117-1132
$LATITUDE_LONGITUDE_SUBROUTINES.agc # pp. 1133-1139
$PLANETARY_INERTIAL_ORIENTATION.agc # pp. 1140-1148
$MEASUREMENT_INCORPORATION.agc # pp. 1149-1158
$CONIC_SUBROUTINES.agc # pp. 1159-1204
$INTEGRATION_INITIALIZATION.agc # pp. 1205-1226
$ORBITAL_INTEGRATION.agc # pp. 1227-1248
$INFLIGHT_ALIGNMENT_ROUTINES.agc # pp. 1249-1258
$POWERED_FLIGHT_SUBROUTINES.agc # pp. 1259-1267
$TIME_OF_FREE_FALL.agc # pp. 1268-1283
$AGC_BLOCK_TWO_SELF_CHECK.agc # pp. 1284-1293
$PHASE_TABLE_MAINTENANCE.agc # pp. 1294-1302
$RESTARTS_ROUTINE.agc # pp. 1303-1308
$IMU_MODE_SWITCHING_ROUTINES.agc # pp. 1309-1337
$KEYRUPT_UPRUPT.agc # pp. 1338-1340
$DISPLAY_INTERFACE_ROUTINES.agc # pp. 1341-1373
$SERVICE_ROUTINES.agc # pp. 1374-1380
$ALARM_AND_ABORT.agc # pp. 1381-1385
$UPDATE_PROGRAM.agc # pp. 1386-1396
$RTB_OP_CODES.agc # pp. 1397-1402
$T6-RUPT_PROGRAMS.agc # pp. 1403-1405
$DAP_INTERFACE_SUBROUTINES.agc # pp. 1406-1409
$DAPIDLER_PROGRAM.agc # pp. 1410-1420
$P-AXIS_RCS_AUTOPILOT.agc # pp. 1421-1441
$Q_R-AXIS_RCS_AUTOPILOT.agc # pp. 1442-1459
$TJET_LAW.agc # pp. 1460-1469
$KALMAN_FILTER.agc # pp. 1470-1471
$TRIM_GIMBAL_CNTROL_SYSTEM.agc # pp. 1472-1484
$AOSTASK_AND_AOSJOB.agc # pp. 1485-1506
$SPS_BACK-UP_RCS_CONTROL.agc # pp. 1507-1510
# pp. 1511-1743: GAP-generated tables.

View File

@ -0,0 +1,495 @@
# Copyright: Public domain.
# Filename: MEASUREMENT_INCORPORATION.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 DOT lawton AT gmail DOT com>
# Website: www.ibiblio.org/apollo.
# Pages: 1149-1158
# Mod history: 2009-05-28 JL Updated from page images.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# 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 1149
# 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 INPU 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 1150
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 1151
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 1152
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 1153
# 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 0=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 1154
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 1155
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 1156
VLOAD VAD # START 3RD PHASE OF INCORP2
X789 # 7TH, 8TH, 9TH COMPONENT 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 1157
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 RENDEZ
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
+3
STADR
STORE NORMZI # LARGEST ABVAL
DLOAD SXA,1
NORMZI
NORMZI # SAVE X1
NORM INCR,1
# Page 1158
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

View File

@ -0,0 +1,977 @@
# Copyright: Public domain.
# Filename: ORBITAL_INTEGRATION.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: 1227-1248
# Mod history: 2009-05-26 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-05 RSB Fixed 3 typos.
# 2009-06-06 RSB Page 1248 was missing entirely for some reason.
# 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 1227
# ORBITAL INTEGRATION
# DELETE
BANK 13
SETLOC ORBITAL
BANK
COUNT* $$/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 (-20R +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 1228
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 1229
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 1230
# 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 1231
2D
STORE RPSV
SLOAD DSU
MODREG
OCT27
BHIZ BOF
+3
DIM0FLAG
GETRPSV
VLOAD VXSC
ALPHAV
ALPHAM
VSR* VSU
1,2
BETAV
XCHX,2
DIFEQCNT
STORE VECTAB +6,2
STORE RQVV
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
# Page 1232
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
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
# Page 1233
ALPHAV
VAD PUSH # A12 + C(PD+16D) TO PD+16D
DLOAD DMP
0
12D
NORM ROUND
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 1234
# 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 # POSSIBLY 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 1235
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.
# Page 1236
PUSH DMP # STORE COSPHI**2 SCALED B2 IN 8D
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 COMPNENT.
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
# Page 1237
STORE FV
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 VLOAD
MIDFLAG
RECTEST
RCV
DOT DMP
VCV
DT/2 # (R.V) X (DELTA T)
BMN
RECTEST
BON BOF
MOONFLAG
LUNSPH
RPQFLAG
EARSPH
DLOAD CALL
TET
LSPOS # RPQV IN MPAC
STORE RPQV # RPQV
LXA,2
PBODY
INLUNCHK BVSU ABVAL
RCV
DSU BMN
RSPHERE
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
# Page 1238
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
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
EARSPH VLOAD GOTO
RPQV
INLUNCHK
LUNSPH DLOAD SR2
10D
DSU BMN
RSPHERE
RECTEST
BOF DLOAD
RPQFLAG
DOSWITCH
TET
CALL
LUNPOS
VCOMP
STORE RPQV
# Page 1239
DOSWITCH CALL
ORIGCHNG
GOTO
INTGRATE
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 1240
# 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 1241
# 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 1242
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 # INSTALL AND INTWAKE
TC INTPRET
SSP
QPRET
AMOVED
BON GOTO
VINTFLAG
# Page 1243
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 1244
GOTO
TESTLOOP # FINISH INTEGRATING STATE VECTOR
# Page 1245
# 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 1246
0 -8D,2
# ********************************************************************************
# ********************************************************************************
SETITCTR SSP BOFF # SET ITERCTR FOR LAMBERT CALLS. THIS
ITERCTR # CODING BELONGS IN INITVEL AND IS HERE
20D # FOR PURPOSES OF A ONE-MODULE
AVEGFLAG # REMANUFACTURE ONLY. CODING SHOULD
LAMBERT # BE MOVED BACK TO INITVEL FOR LUMINARY 1B
SSP GOTO
ITERCTR
5
LAMBERT
# ********************************************************************************
# ********************************************************************************
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
# Page 1247
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
5/8 2DEC 5 B-3
-1/12 2DEC -.1
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
QUALITY1 BOF DLOAD
MOONFLAG
NBRANCH
URPV
DSQ
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
# Page 1248
# 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

5182
Luminary099/P20-P25.agc Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1471
Luminary099/P40-P47.agc Normal file

File diff suppressed because it is too large Load Diff

2341
Luminary099/P51-P53.agc Normal file

File diff suppressed because it is too large Load Diff

164
Luminary099/P76.agc Normal file
View File

@ -0,0 +1,164 @@
# Copyright: Public domain.
# Filename: P76.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: 709-711
# Mod history: 2009-05-19 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 709
# 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
TC INTPRET
VLOAD
DELVLVC
STORE DELVOV
EXIT
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
# Page 710
DLOAD # SET D(MPAC)=TIG IN CSEC B28
TIG
STCALL TDEC1 # SET TDEC1=TIG FOR ORBITAL INTEGRATION
OTHPREC
COMPMAT VLOAD UNIT
RATT
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 # PRESENT 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
VLOAD
RATT1
STORE RRECT
STODL RCV
TAT
STOVL TET
VATT1
CALL
MINIRECT
# Page 711
EXIT
TC PHASCHNG
OCT 04024
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
TCF GOTOP00H
V06N84 NV 0684
NV 0633
P76SUB1 AXT,2 SET
2
MOONFLAG # SET MEANS MOON IS SPHERE OF INFLUENCE.
BON AXT,2
CMOONFLG # SET MEANS PERM CM STATE IN LUNAR SPHERE.
QPRET
0
CLEAR RVQ
MOONFLAG

View File

@ -0,0 +1,411 @@
# Copyright: Public domain.
# Filename: PHASE_TABLE_MAINTENANCE.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: 1294-1302
# Mod history: 2009-05-26 OH Transcribed from page images.
# 2009-06-05 RSB A few lines at the bottom of page image
# 1294 were truncated. I've fixed the page
# image and added those missing lines here.
# 2011-05-07 JL Flagged SBANK= workaround for future
# removal.
# 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 1294
# SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.
COUNT* $$/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* $$/PHASE
SETUPDSP INHINT
DXCH RUPTREG1 # SAVE CALLER'S RETURN 2CADR
CAF PRIO30 # EITHER A TASK OR JOB CAN COME TO
TC NOVAC # NEWMODE X
EBANK= MODREG
2CADR DSPMMJOB
DXCH RUPTREG1
RELINT
DXCH Z # RETURN
DSPMMJOB EQUALS DSPMMJB
BLOCK 02
SETLOC FFTAG1
BANK
# Page 1295
# 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 EXAMPLES,
# 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 1296
# 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 DELTA TIME 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 TEH 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 1297
# 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 1298
# 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.
## [WORKAROUND] RSB 2004
SBANK= PINSUPER
## [WORKAROUND]
COUNT* $$/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
INDEX Q
CA 0
INCR Q
TS TEMPSW
TCF PHASJUMP
PHASCHNG INHINT # NORMAL PHASCHNG ENTRY POINT.
INDEX Q
CA 0
INCR Q
PHSCHNGA INHINT # FIRST OCTAL PARAMETER IN A.
# Page 1299
TS TEMPSW
CA ONE
TS TEMPSW2
PHASJUMP 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
# Page 1300
TCF CON1 -1
GETNEWNM EXTEND
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* $$/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
# Page 1301
TCF ONEORTWO
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
# Page 1302
CON2 LXCH TEMPBBCN
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 03
SETLOC FFTAG6
BANK
COUNT* $$/PHASE
CHECKB MASK BIT12 # SINCE THIS IS OF TYPE 8, THIS BIT WOULD
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

View File

@ -0,0 +1,906 @@
# Copyright: Public domain.
# Filename: PINBALL_NOUN_TABLES.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: 301-319
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
# 2009-06-07 RSB Corrected two typos.
#
# 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 301
# 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 NUMBER
#
# 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 LANDING RADAR POSITION (+0000X)
# 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 360-CDU DEGREES (XXX.XX)
#
# END OF SF ROUTINE CODE NUMBERS
# SF CONSTANT CODE NUMBER INTERPRETATION
#
# 00000 WHOLE USE ARITH
# 00000 DP TIME SEC (XXX.XX SEC) USE ARITHDP1
# 00000 LR POSITION (+0000X) USE LR POSITION
# 00001 SPARE
# 00010 CDU DEGREES USE CDU DEGREES
# 00010 360-CDU DEGREES USE 360-CDU 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
# 00101 OPTICAL TRACKER AZIMUTH ANGLE (XXX.XXDEG)
# USE ARITHDP1
# 00110 WEIGHT2 (XXXXX. LBS) USE ARITH1
# Page 302
# 00111 POSITION5 (XXX.XX NAUTICAL MILES)
# USE ARITHDP3
# 01000 POSITION4 (XXXX.X NAUTICAL MILES)
# 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 RENDEZVOUS RADAR RANGE (XXX.XX NAUT MI)
# USE ARITHDP1
# 01101 RENDEZVOUS RADAR RANGE RATE (XXXXX.FT/SEC)
# USE ARITHDP1
# 01110 LANDING RADAR ALTITUDE (XXXXX.FEET)
# USE ARITHDP1
# 01111 INITIAL/FINAL ALTITUDE (XXXXX. FEET)
# USE ARITHDP1
# 10000 ALTITUDE RATE (XXXXX.FT/SEC) USE ARITH
# 10001 FORWARD/LATERAL VELOCITY (XXXXX.FEET/SEC)
# USE ARITH
# 10010 ROTATIONAL HAND CONTROLLER ANGLE RATES
# XXXXX.DEG/SEC USE ARITH
# 10011 LANDING RADAR VELX (XXXXX.FEET/SEC)
# USE ARITHDP1
# 10100 LANDING RADAR VELY (XXXXX.FEET/SEC)
# USE ARITHDP1
# 10101 LANDING RADAR VELZ (XXXXX.FEET/SEC)
# USE ARITHDP1
# 10110 POSITION7 (XXXX.X NAUT MI) USE ARITHDP4
# 10111 TRIM DEGREES2 (XXX.XX DEG) USE ARITH
# 11000 COMPUTED ALTITUDE (XXXXX. FEET)
# USE ARITHDP1
# 11001 DP DEGREES (XXXX.X DEG) USE ARITHDP3
# 11010 POSITION9 (XXXX.X FT) USE ARITHDP3
# 11011 VELOCITY4 (XXXX.X FT/SEC) USE ARITHDP2
# 11100 RADIANS (XXX.XXX RADIANS) USE ARITHDP4
#
# END OF SF CONSTANT CODE NUMBERS
# FOR GREATER THAN SINGLE PRECISION SCALES, PUT ADDRESS OF 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.
# Page 303
# ALARM IF AN ATTEMPT IS MADE TO LOAD :SPLIT MINUTES/SECONDS: (MMBSS).
# THIS IS USED FOR DISPLAY ONLY.
# Page 304
# 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 WITH 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 6
SETLOC PINBALL3
BANK
COUNT* $$/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 # (DEC 40)
# GTSFOUT LOADS SFTEMP1, SFTEMP2 WTIH THE DP SFOUTAB ENTRIES.
GTSFOUT DXCH SFTEMP1 # 2X(SFCONUM) ARRIVES IN SFTEMP1.
# Page 305
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)
ECADR DSPTEM1 # 04 ANGULAR ERROR/DIFFERENCE
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)
ECADR DSPTEMX # 14 CHECKLIST
# (USED BY EXTENDED VERBS ONLY)
OCT 77777 # 15 INCREMENT MACHINE ADDRESS
ECADR DSPTEMX # 16 TIME OF EVENT (HRS,MIN,SEC)
OCT 00000 # 17 SPARE
ECADR FDAIX # 18 AUTO MANEUVER BALL ANGLES
OCT 00000 # 19 SPARE
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 306
OCT 00000 # 28 SPARE
OCT 00000 # 29 SPARE
OCT 0 # 30 SPARE
OCT 0 # 31 SPARE
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 BEING INTEGRATED
OCT 00000 # 39 SPARE
# 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
# TTI OF NEXT BURN
# MGA
OCT 00022 # 46 AUTOPILOT CONFIGURATION
OCT 22025 # 47 LEM WEIGHT
# CSM WEIGHT
OCT 22030 # 48 GIMBAL PITCH TRIM
# GIMBAL ROLL TRIM
OCT 24033 # 49 DELTA R
# DELTA V
# RADAR DATA SOURCE CODE
OCT 0 # 50 SPARE
OCT 22041 # 51 S-BAND ANTENNA PITCH
# YAW
OCT 00044 # 52 CENTRAL ANGLE OF ACTIVE VEHICLE
OCT 00000 # 53 SPARE
OCT 24052 # 54 RANGE
# RANGE RATE
# THETA
OCT 24055 # 55 NO. OF APSIDAL CROSSINGS
# Page 307
# ELEVATION ANGLE
# CENTRAL ANGLE
OCT 02060 # 56 RR LOS AZIMUTH
# ELEVATION
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 HORIZONTAL VELOCITY
# ALTITUDE RATE
# COMPUTED ALTITUDE
OCT 64077 # 61 TIME TO GO IN BRAKING PHASE
# TIME TO IGNITION
# CROSS RANGE DISTANCE
OCT 64102 # 62 ABSOLUTE VALUE OF VELOCITY
# TIME TO IGNITION
# DELTA V (ACCUMULATED)
OCT 24105 # 63 ABSOLUTE VALUE OF VELOCITY
# ALTITUDE RATE
# COMPUTED ALTITUDE
OCT 64110 # 64 TIME LEFT FOR REDESIGNATION -- LPD ANGLE
# ALTITUDE RATE
# COMPUTED ALTITUDE
OCT 24113 # 65 SAMPLED AGC TIME (HRS,MIN,SEC)
# (FETCHED IN INTERRUPT)
OCT 62116 # 66 LR RANGE
# POSITION
OCT 04121 # 67 LRVX
# LRVY
# LRVZ
OCT 64124 # 68 SLANT RANGE TO LANDING SIGHT
# TIME TO GO IN BRAKING PHASE
# LR ALTITUDE -- COMPUTED ALTITUDE
OCT 00000 # 69 SPARE
OCT 04132 # 70 AOT DETENT CODE/STAR CODE
OCT 04135 # 71 AOT DETENT CODE/STAR CODE
OCT 02140 # 72 RR 360 -- TRUNNION ANGLE
# SHAFT ANGLE
OCT 02143 # 73 NEW RR 360 -- TRUNNION ANGLE
# SHAFT ANGLE
OCT 64146 # 74 TIME TO IGNITION
# YAWAFTER VEHICLE RISE
# PITCH AFTER VEHICLE RISE
OCT 64151 # 75 DELTA ALTITUDE CDH
# DELTA TIME (CDH-CSI OR TPI-CDH)
# DELTA TIME (TPI-CDH OR TPI-NOMTPI)
OCT 24154 # 76 DESIRED HORIZONTAL VELOCITY
# DESIRED RADIAL VELOCITY
# CROSS-RANGE DISTANCE
# Page 308
OCT 62157 # 77 TIME TO ENGINE CUTOFF
# VELOCITY NORMAL TO CSM PLANE
OCT 02162 # 78 RR RANGE
# RANGE RATE
OCT 24165 # 79 CURSOR ANGLE
# SPIRAL ANGLE
# POSITION CODE
OCT 02170 # 80 DATA INDICATOR
# OMEGA
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 VG (LV)
OCT 02215 # 87 BACKUP OPTICS LOS AZIMUTH
# ELEVATION
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 04231 # 91 ALTITUDE
# VELOCITY
# FLIGHT PATH ANGLE
OCT 00000 # 92 SPARE
OCT 04237 # 93 DELTA GYRO ANGLES
OCT 00000 # 94 SPARE
OCT 0 # 95 SPARE
OCT 0 # 96 SPARE
OCT 04253 # 97 SYSTEM TEST INPUTS
OCT 04256 # 98 SYSTEM TEST RESULTS
OCT 24261 # 99 RMS IN POSITION
# RMS IN VELOCITY
# RMS IN BIAS
# END OF NNADTAB FOR MIXED NOUNS
# NN NORMAL NOUNS
NNTYPTAB OCT 00000 # 00 NOT IN USE
OCT 04040 # 01 3COMP FRACTIONAL
OCT 04140 # 02 3COMP WHOLE
OCT 04102 # 03 3COMP CDU DEGREES
OCT 00504 # 04 1COMP DPDEG(360)
OCT 00504 # 05 1COMP DPDEG(360)
OCT 04000 # 06 3COMP OCTAL ONLY
OCT 04000 # 07 3COMP OCTAL ONLY
OCT 04000 # 08 3COMP OCTAL ONLY
# Page 309
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 04140 # 14 3COMP WHOLE
OCT 00000 # 15 1COMP OCTAL ONLY
OCT 24400 # 16 3COMP HMS (DEC ONLY)
OCT 0 # 17 SPARE
OCT 04102 # 18 3COMP CDU DEG
OCT 00000 # 19 SPARE
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 00000 # 29 SPARE
OCT 0 # 30 SPARE
OCT 0 # 31 SPARE
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 00000 # 39 SPARE
# 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
# (DEC ONLY)
OCT 00410 # 44 3COMP POS4, POS4, MIN/SEC
# (NO LOAD, DEC ONLY)
OCT 10000 # 45 3COMP WHOLE, MIN/SEC, DPDEG(360)
# (NO LOAD, DEC ONLY)
OCT 00000 # 46 1COMP OCTAL ONLY
OCT 00306 # 47 2COMP WEIGHT2 FOR EACH
# (DEC ONLY)
OCT 01367 # 48 2COMP TRIM DEG2 FOR EACH
# Page 310
# (DEC ONLY)
OCT 00510 # 49 3COMP POS4, VEL3, WHOLE
# (DEC ONLY)
OCT 0 # 50 SPARE
OCT 00204 # 51 2COMP DPDEG(360), DPDEG(360)
# (DEC ONLY)
OCT 00004 # 52 1COMP DPDEG(360)
OCT 00000 # 53 SPARE
OCT 10507 # 54 3COMP POS5, VEL3, DPDEG(360)
# (DEC ONLY)
OCT 10200 # 55 3COMP WHOLE, DPDEG(360), DPDEG(360)
# (DEC ONLY)
OCT 00204 # 56 2COMP DPDEG(360), DPDEG(360)
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 60512 # 60 3COMP VEL3, VEL3, COMP ALT
# (DEC ONLY)
OCT 54000 # 61 3COMP MIN/SEC, MIN/SEC, POS7
# (NO LOAD, DEC ONLY)
OCT 24012 # 62 3COMP VEL3, MIN/SEC, VEL3
# (NO LOAD, DEC ONLY)
OCT 60512 # 63 3COMP VEL3, VEL3, COMP ALT
# (DEC ONLY)
OCT 60500 # 64 3COMP 2INT, VEL3, COMP ALT
# (NO LOAD, DEC ONLY)
OCT 00000 # 65 3COMP HMS (DEC ONLY)
OCT 00016 # 66 2COMP LANDING RADAR ALT, POSITION
# (NO LOAD, DEC ONLY)
OCT 53223 # 67 3COMP LANDING RADAR VELX, Y, Z
OCT 60026 # 68 3COMP POS7, MIN/SEC, COMP ALT
# (NO LOAD, DEC ONLY)
OCT 00000 # 69 SPARE
OCT 0 # 70 3COMP OCTAL ONLY FOR EACH
OCT 0 # 71 3COMP OCTAL ONLY FOR EACH
OCT 00102 # 72 2COMP 360-CDU DEG, CDU DEG
OCT 00102 # 73 2COMP 360-CDU DEG, CDU DEG
OCT 10200 # 74 3COMP MIN/SEC, DPDEG(360), DPDEG(360)
# (NO LOAD, DEC ONLY)
OCT 00010 # 75 3COMP POS4, MIN/SEC, MIN/SEC
# (NO LOAD, DEC ONLY)
OCT 20512 # 76 3COMP VEL3, VEL3, POS4
# (DEC ONLY)
OCT 00500 # 77 2COMP MIN/SEC, VEL3
# (NO LOAD, DEC ONLY)
OCT 00654 # 78 2 COMP RR RANGE, RR RANGE RATE
OCT 00102 # 79 3COMP CDU DEG, CDU DEG, WHOLE
# Page 311
# (DEC ONLY)
OCT 00200 # 80 2COMP WHOLE, DPDEG(360)
OCT 24512 # 81 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 24512 # 82 3COMP VEL3 FOR EACH
# (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 24512 # 86 3COMP VEL3 FOR EACH
# (DEC ONLY)
OCT 00102 # 87 2COMP CDU DEG FOR EACH
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 10450 # 91 3COMP POS4, VEL2, DPDEG(360)
OCT 00000 # 92 SPARE
OCT 06143 # 93 3COMP DPDEG(90) FOR EACH
OCT 00000 # 94 SPARE
OCT 0 # 95 SPARE
OCT 0 # 96 SPARE
OCT 00000 # 97 3COMP WHOLE FOR EACH
OCT 00000 # 98 3COMP WHOLE, FRAC, WHOLE
OCT 71572 # 99 3COMP POS9, VEL4, RADIANS
# (DEC ONLY)
# END OF NNTYPTAB FOR MIXED NOUNS
SFINTAB OCT 00006 # WHOLE, DP TIME (SEC)
OCT 03240
OCT 00000 # SPARE
OCT 00000
OCT 00000 # CDU DEGREES, 360-CDU DEGREES
OCT 00000 # (SFCONS IN DEGINSF)
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
# Page 312
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 00047 # RENDEZVOUS RADAR RANGE
OCT 21135
OCT 77766 # RENDESVOUS RADAR RANGE RATE
OCT 50711
2DEC* .9267840599 E5 B-28* # LANDING RADAR ALTITUDE
OCT 00002 # INITIAL/FINAL ALTITUDE
OCT 23224
OCT 00014 # ALTITUDE RATE
OCT 06500
OCT 00012 # FORWARD/LATERAL VELOCITY
OCT 36455
OCT 04256 # ROT HAND CONT ANGLE RATE
OCT 07071
2DEC* -1.552795030 E5 B-28* # LANDING RADAR VELX
2DEC* .8250825087 E5 B-28* # LANDING RADAR VELY
2DEC* 1.153668673 E5 B-28* # LANDING RADAR VELZ
OCT 04324 # POSITION7
OCT 27600
OCT 00036 # TRIM DEGREES2
OCT 20440
OCT 00035 # COMPUTED ALTITUDE
OCT 30400
OCT 23420 # DP DEGREES
OCT 00000
2DEC 30480 B-19 # POSITION 9
2DEC 30.48 B-7 # VELOCITY4
2DEC 100 B-8 # RADIANS
# END OF SFINTAB
SFOUTAB OCT 05174 # WHOLE, DP TIME (SEC)
OCT 13261
OCT 00000 # SPARE
OCT 00000
OCT 00000 # CDU DEGREES, 360-CDU DEGREES
# Page 313
OCT 00000 # (SFCONS IN DEGOUTSF, 360 CDUO)
OCT 00714 # DP DEGREES (90) (POINT BETWN BITS 7-8)
OCT 31463
OCT 13412 # DP DEGREES (360)
OCT 07534
OCT 05605 # DEGREES (180)
OCT 03656
OCT 00001 # WEIGHT2
OCT 16170
OCT 00441 # POSITION5
OCT 34306
OCT 07176 # POSITION4 (POINT BETWN BITS 7-8)
OCT 21603
OCT 15340 # VELOCITY2
OCT 15340
OCT 01031 # VELOCITY3 (POINT BETWN BITS 7-8)
OCT 21032
OCT 34631 # ELEVATION DETREES
OCT 23146
OCT 00636 # RENDEZVOUS RADAR RANGE
OCT 14552
OCT 74552 # RENDEZVOUS RADAR RANGE RATE
OCT 70307
2DEC 1.079 E-5 B14 # LANDING RADAR ALTITUDE
OCT 14226 # INITIAL/FINAL ALTITUDE
OCT 31757
OCT 02476 # ALTITUDE RATE
OCT 05531
OCT 02727 # FORWARD/LATERAL VELOCTY
OCT 16415
OCT 00007 # ROT HAND CONT ANGLE RATE
OCT 13734
2DEC -.6440 E-5 B14 # LANDING RADAR VELX
2DEC 1.212 E-5 B14 # LANDING RADAR VELY
2DEC .8668 E-5 B14 # LANDING RADAR VELZ
OCT 34772 # POSITION7
OCT 07016
OCT 01030 # TRIM DEGREES2
OCT 33675
OCT 01046 # COMPUTED ALTITUDE
OCT 15700
OCT 00321 # DP DEGREES
OCT 26706
2DEC 17.2010499 B-7 # POSITION 9
2DEC .032808399 # VELOCITY4
# Page 314
2DEC .32 # RADIANS
# 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 TRKMKCNT # 45 WHOLE ARTH
ECADR TTOGO # 45 MIN/SEC M/S
ECADR +MGA # 45 DPDEG(360) DP4
ECADR DAPDATR1 # 46 OCTAL ONLY OCT
OCT 0 # 46 SPARE COMPONENT
OCT 0 # 46 SPARE COMPONENT
ECADR LEMMASS # 47 WEIGHT2 ARTH1
ECADR CSMMASS # 47 WEIGHT2 ARTH1
OCT 0 # 47 SPARE COMPONENT
ECADR PITTIME # 48 TRIM DEG2 ARTH
ECADR ROLLTIME # 48 TRIM DEG2 ARTH
OCT 0 # 48 SPARE COMPONENT
ECADR R22DISP # 49 POS4 DP3
ECADR R22DISP +2 # 49 VEL3 DP3
ECADR WHCHREAD # 49 WHOLE ARTH
OCT 0 # 50 SPARE
OCT 0 # 50 SPARE
OCT 0 # 50 SPARE
ECADR ALPHASB # 51 DPDEG(360) DP4
ECADR BETASB # 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
OCT 00000 # 53 SPARE
OCT 00000 # 53
OCT 00000 # 53
ECADR RANGE # 54 POS5 DP1
# Page 315
ECADR RRATE # 54 VEL3 DP3
ECADR RTHETA # 54 DPDEG(360) DP4
ECADR NN # 55 WHOLE ARTH
ECADR ELEV # 55 DPDEG(360) DP4
ECADR CENTANG # 55 DPDEG(360) DP4
ECADR RR-AZ # 56 DPDEG(360) DP4
ECADR RR-ELEV # 56 DPDEG(360) 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 VHORIZ # 60 VEL3 DP3
ECADR HDOTDISP # 60 VEL3 DP3
ECADR HCALC # 60 COMP ALT DP1
ECADR TTFDISP # 61 MIN/SEC M/S
ECADR TTOGO # 61 MIN/SEC M/S
ECADR OUTOFPLN # 61 POS7 DP4
ECADR ABVEL # 62 VEL3 DP3
ECADR TTOGO # 62 MIN/SEC M/S
ECADR DVTOTAL # 62 VEL3 DP3
ECADR ABVEL # 63 VEL3 DP3
ECADR HDOTDISP # 63 VEL3 DP3
ECADR HCALC1 # 63 COMP ALT DP1
ECADR FUNNYDSP # 64 2INT 2INT
ECADR HDOTDISP # 64 VEL3 DP3
ECADR HCALC # 64 COMP ALT DP1
ECADR SAMPTIME # 65 HMS (MIXED ONLY TO KEEP CODE 65) HMS
ECADR SAMPTIME # 65 HMS HMS
ECADR SAMPTIME # 65 HMS HMS
ECADR RSTACK +6 # 66 LANDING RADAR ALT DP1
OCT 0 # 66 LR POSITION LRPOS
OCT 0 # 66 SPARE COMPONENT
ECADR RSTACK # 67 LANDING RADAR VELX DP1
ECADR RSTACK +2 # 67 LANDING RADAR VELY DP1
ECADR RSTACK +4 # 67 LANDING RADAR VELZ DP1
ECADR RANGEDSP # 68 POS7 DP4
ECADR TTFDISP # 68 MIN/SEC M/S
ECADR DELTAH # 68 COMP ALT DP1
OCT 00000 # 69 SPARE
OCT 00000 # 69
OCT 00000 # 69
ECADR AOTCODE # 70 OCTAL ONLY OCT
ECADR AOTCODE +1 # 70 OCTAL ONLY OCT
ECADR AOTCODE +2 # 70 OCTAL ONLY OCT
# Page 316
ECADR AOTCODE # 71 OCTAL ONLY OCT
ECADR AOTCODE +1 # 71 OCTAL ONLY OCT
ECADR AOTCODE +2 # 71 OCTAL ONLY OCT
ECADR CDUT # 72 360-CDU DEG 360-CDU
ECADR CDUS # 72 CDU DEG CDU
OCT 0 # 72 SPARE COMPONENT
ECADR TANG # 73 360-CDU DEG 360-CDU
ECADR TANG +1 # 73 CDU DEG CDU
OCT 0 # 73 SPARE COMPONENT
ECADR TTOGO # 74 MIN/SEC M/S
ECADR YAW # 74 DPDEG(360) DP4
ECADR PITCH # 74 DPDEG(360) DP4
ECADR DIFFALT # 75 POS4 DP3
ECADR T1TOT2 # 75 MIN/SEC
ECADR T2TOT3 # 75 MIN/SEC M/S
ECADR ZDOTD # 76 VEL3 DP3
ECADR RDOTD # 76 VEL3 DP3
ECADR XRANGE # 76 POS4 DP3
ECADR TTOGO # 77 MIN/SEC M/S
ECADR YDOT # 77 VEL3 DP3
OCT 0 # 77 SPARE COMPONENT
ECADR RSTACK # 78 RR RANGE DP1
ECADR RSTACK +2 # 78 RR RANGE RATE DP1
OCT 00000 # 78 SPARE COMPONENT
ECADR CURSOR # 79 CDU DEG CDU
ECADR SPIRAL # 79 CDU DEG CDU
ECADR POSCODE # 79 WHOLE ARTH
ECADR DATAGOOD # 80 WHOLE ARTH
ECADR OMEGAD # 80 DPDEG(360) DP4
OCT 0 # 80 SPARE COMPONENT
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 AZ # 87 CDU DEG CDU
ECADR EL # 87 CDU DEG CDU
# Page 317
OCT 0 # 87 SPARE COMPONENT
ECADR STARAD # 88 FRAC FRAC
ECADR STARAD +2 # 88 FRAC FRAC
ECADR STARAD +4 # 88 FRAC FRAC
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 P21ALT # 91 POS4 DP3
ECADR P21VEL # 91 VEL2 DP4
ECADR P21GAM # 91 DPDEG(360) DP4
OCT 00000 # 92 SPARE
OCT 00000 # 92
OCT 00000 # 92
ECADR OGC # 93 DPDEG(90) DP3
ECADR OGC +2 # 93 DPDEG(90) DP3
ECADR OGC +4 # 93 DPDEG(90) DP3
OCT 00000 # 94 SPARE
OCT 00000 # 94
OCT 00000 # 94
OCT 0 # 95 SPARE
OCT 0 # 95 SPARE
OCT 0 # 95 SPARE
OCT 0 # 96 SPARE
OCT 0 # 96 SPARE
OCT 0 # 96 SPARE
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 WWBIAS # 99 RADIANS DP4
# 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 24443 # 45 ARTH, M/S, DP4
OCT 00000 # 46 OCT
OCT 00553 # 47 ARITH1, ARITH1
# Page 318
OCT 00143 # 48 ARTH, ARTH
OCT 06347 # 49 DP3, DP3, ARTH
OCT 0 # 50 SPARE
OCT 00512 # 51 DP4, DP4
OCT 00012 # 52 DP4
OCT 00000 # 53 SPARE
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 10347 # 60 DP3, DP3, DP1
OCT 24451 # 61 M/S, M/S, DP4
OCT 16447 # 62 DP3, M/S, DP3
OCT 10347 # 63 DP3, DP3, DP1
OCT 10354 # 64 2INT, DP3, DP1
OCT 20410 # 65 HMS, HMS, HMS
OCT 00304 # 66 DP1, LRPOS
OCT 10204 # 67 DP1, DP1, DP1
OCT 10452 # 68 DP4, M/S, DP1
OCT 00000 # 69 SPARE
OCT 0 # 70 OCT, OCT, OCT
OCT 0 # 71 OCT, OCT, OCT
OCT 00115 # 72 360-CDU, CDU
OCT 00115 # 73 360-CDU, CDU
OCT 24511 # 74 M/S, DP4, DP4
OCT 22447 # 75 DP3, M/S, M/S
OCT 16347 # 76 DP3, DP3, DP3
OCT 00351 # 77 M/S, DP3
OCT 00204 # 78 DP1, DP1
OCT 06102 # 79 CDU, CDU, ARTH
OCT 00503 # 80 ARTH, 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 16347 # 86 DP3, DP3, DP3
OCT 00102 # 87 CDU, CDU
OCT 02041 # 88 FRAC FOR EACH
OCT 10347 # 89 DP3, DP3, DP1
OCT 24344 # 90 DP1, DP3, DP4
OCT 24507 # 91 DP3, DP4, DP4
OCT 00000 # 92 SPARE
OCT 16347 # 93 DP3, DP3, DP3
OCT 00000 # 94 SPARE
OCT 0 # 95 SPARE
OCT 0 # 96 SPARE
OCT 06143 # 97 ARTH, ARTH, ARTH
# Page 319
OCT 06043 # 98 ARTH, FRAC, ARTH
OCT 24247 # 99 DP3, DP2, DP4
# END OF RUTMXTAB
SBANK= LOWSUPER

View File

@ -0,0 +1,391 @@
# Copyright: Public domain.
# Filename: PLANETARY_INERTIAL_ORIENTATION.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: 1140-1148
# Mod history: 2009-05-28 JVL Updated 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 1140
# ***** RP-TO-R SUBROUTINE *****
# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM, EITHER
# EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN THE 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 PLANTIN1
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 1141
GOTO
RPTORB
SETLOC PLANTIN
BANK
COUNT* $$/LUROT
# Page 1142
# ***** 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 1143
# ***** 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=T
AXT,1 CALL # NODE REQUIRES SL 0, SL 5 IN NEWANGLE
5
NEWANGLE # EXIT WITH PD 8D AND MPAC= NODI REVS B0
# Page 1144
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
GOTO
MOONMXA
BANK 25
SETLOC PLANTIN3
BANK
COUNT* $$/LUROT
MOONMXA 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
# Page 1145
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
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 1146
# ***** 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)
BANK 26
SETLOC PLANTIN1
BANK
COUNT* $$/LUROT
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 1147
# ***** 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
BANK 06
SETLOC EARTHLOC
BANK
COUNT* $$/LUROT
EARTHL DLOAD DCOMP
AXO
STODL 504LPL
-AYO
STODL 504LPL +2
LO6ZEROS
STOVL 504LPL +4
504LPL
RVQ
# Page 1148
# CONSTANTS AND ERASABLE ASSIGNMENTS
1B1 = DP1/2 # 1 SCALED 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+T0 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)

View File

@ -0,0 +1,447 @@
# Copyright: Public domain.
# Filename: POWERED_FLIGHT_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: 1259-1267
# Mod history: 2009-05-26 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# 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 1259
BANK 14 # SAME FBANK AS THE FINDCDUD SUB-PROGRAM
SETLOC POWFLITE
BANK
EBANK= DEXDEX
COUNT* $$/POWFL
# CDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*TR*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 COMPLEMENT 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 1260
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 1261
# *******************************************************************************************************
# 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 1262
#****************************************************************************
# THESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN
# INTERPRETIVE. LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED.
#
# 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 TRANSFORMED
# 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 TRANSFORMATION;
# 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
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
# Page 1263
# 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
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
# Page 1264
LOOP1 DXCH MPAC
CA SINSLOC
AD DEX1
TS ADDRWD
TC DMPSUB # MULTIPLY AT 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
TSTPOINT CCS DEXDEX # ONLY THE BRANCHING FUNCTION IS USED
TCF R*TL**P
TC RTNSAVER
TCF R*TL**P
TC RTNSAVER
SINSLOC ADRES SINCDU # FOR USE IN SETTING ADDRWD
INDEXI DEC 4 # ********** DON'T ***********
DEC 2 # ********** TOUCH ***********
DEC 0 # ********** THESE ***********
# Page 1265
DEC 4 # ********** CONSTANTS ***********
# ******************************************************************************
BANK 10
SETLOC FLESHLOC
BANK
COUNT* $$/POWFL
# ROUTINE FLESHPOT COMPUTES THE BODY-STABLE MEMBER TRANSFORMATION MATRIX (COMMONLY CALLED XNB) AND STORES
# IT IN THE LOCATIONS SPECIFIED BY THE ECADR ENTERING IN A.
CALCSMSC EXIT
TC BANKCALL
CADR FLESHPOT -1
TC INTPRET
RVQ
XNBECADR ECADR XNB
-1 CAF XNBECADR
FLESHPOT TS TEM2
XCH EBANK
XCH TEM2
MASK LOW8
AD OCT1400
TS TEM1
EXTEND
DCA COSCDUY
DXCH MPAC
TC DMP
ADRES COSCDUZ
DXCH MPAC
DDOUBL
INDEX TEM1
DXCH 0 # = COSY COSZ
EXTEND
DCA SINCDUZ
INDEX TEM1
DXCH 2 # = SINZ
EXTEND
DCS SINCDUY
DXCH MPAC
TC DMPSUB # ADDRWD SET TO COSCDUZ
# Page 1266
DXCH MPAC
DDOUBL
INDEX TEM1
DXCH 4 # = - SINY COSZ
EXTEND
DCS SINCDUX
DXCH MPAC
TC DMPSUB # ADDRWD SET TO COSCDUZ STILL
DXCH MPAC
DDOUBL
DXCH MPAC +3
EXTEND
DCS SINCDUX
DXCH MPAC
TC DMP
ADRES SINCDUZ
EXTEND
DCS MPAC
DXCH MPAC +5
TC DMP
ADRES SINCDUY
DXCH MPAC
DDOUBL
DDOUBL
DXCH MPAC +5
DXCH MPAC
TC DMP
ADRES COSCDUY
DXCH MPAC
DDOUBL
DDOUBL
DXCH BUF
EXTEND
DCA COSCDUY
DXCH MPAC
TC DMP
ADRES COSCDUX
DXCH MPAC
DDOUBL
DAS MPAC +5
EXTEND
DCA SINCDUY
DXCH MPAC
TC DMPSUB # ADDRWD SET TO COSCDUX
DXCH MPAC
# Page 1267
DDOUBL
DAS BUF
DXCH BUF
DXCH MPAC
EXTEND
DCA MPAC
INDEX TEM1
DXCH 14 # = - SINY COSX + SINX SINZ COSY
EXTEND
DCA MPAC +3
INDEX TEM1
DXCH 16 # = - SINX COSZ
EXTEND
DCA MPAC +5
INDEX TEM1
DXCH 20 # = COSX COSY - SINX SINY SINZ
CA TEM1
TS ADDRWD
EXTEND
DCA Z
AD FOUR
DXCH LOC
CAF BIT8
TS EDOP
TCF VXV
DXCH MPAC
DDOUBL
INDEX TEM1
DXCH 6
DXCH MPAC +3
DDOUBL
INDEX TEM1
DXCH 10
DXCH MPAC +5
DDOUBL
INDEX TEM1
DXCH 12
CA TEM2
TS EBANK
TCF SWRETURN

465
Luminary099/R30.agc Normal file
View File

@ -0,0 +1,465 @@
# Copyright: Public domain.
# Filename: R30.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: 712-722
# Mod history: 2009-05-19 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-07 RSB Removed a space between two components of
# a 2OCT that isn't legal in 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 712
# 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 V22E XE. 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 LUNAR 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 -59M59S 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).
# 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
# RPER (-29) M EARTH
# (-27) M MOON
# TFF (-28) CS CONTAINS NEGATIVE QUANTITY
# -TPER (-28) CS CONTAINS NEGATIVE QUANTITY
#
# Page 713
# 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 # CALCULATION AND DISPLAY.
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. OPTION1+1 = 1 FOR THIS VEHICLE
# 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
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
# Page 714
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 412
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
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.
X2
EARTHPAD
GOTO
MOONPAD
# Page 715
THISSHIP TC INTPRET
CALL # CALL STATE VECTOR UPDATE FOR THIS SHIP.
THISPREC
GOTO
BOTHSHIP
# THE FOLLOWING CONSTANTS ARE PAIRWISE INDEXED. DO NOT SEPARATE PAIRS.
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 SCALILNG FOR SR30.1
BOTHPAD STCALL RPADTEM
SR30.1 # CALCULATE ORBITAL PARAMETERS
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.
TICKTIFF # (-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
CAF BIT1
TS V82FLAGS # INFORMS TICKTEST TO INCREMENT ONLY -TPER
TC ENDOFJOB
TICKTIFF 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
# Page 716
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 717
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
MOONTHIS # FLAG INDICATES BODY ABOUT WHICH ORBITAL
MOONGON # CALCULATIONS ARE TO BE PERFORMED.
EARTHGON # IF SET -- MOON, IF RESET --EARTH.
MOONGON SET DLOAD
V82EMFLG # FLAG 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 718
EXIT
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
SPLRET = V82GON3
# Page 719
# 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: QPREG, PDL, S2
# Page 720
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 RAPO > MAXNM, SET RAPO =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 721
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 HPER 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 722 (empty page)

267
Luminary099/R31.agc Normal file
View File

@ -0,0 +1,267 @@
# Copyright: Public domain.
# Filename: R31.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: 703-708
# Mod history: 2009-05-19 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 703
BANK 40
SETLOC R31LOC
BANK
COUNT* $$/R31
R31CALL CAF PRIO3
TC FINDVAC
EBANK= SUBEXIT
2CADR V83CALL
DSPDELAY TC FIXDELAY
DEC 100
CA EXTVBACT
MASK BIT12
EXTEND
BZF DSPDELAY
CAF PRIO5
TC NOVAC
EBANK= TSTRT
2CADR DISPN5X
TCF TASKOVER
BANK 37
SETLOC R31
BANK
COUNT* $$/R31
DISPN5X CAF V16N54
TC BANKCALL
CADR GOMARKF
TC B5OFF
TC B5OFF
TCF DISPN5X
V83CALL CS FLAGWRD7 # TEST AVERAGE G FLAG
MASK AVEGFBIT
EXTEND
BZF MUNG? # ON. TEST MUNFLAG
CS FLAGWRD8
MASK SURFFBIT
EXTEND
BZF ONEBASE # ON SURFACE -- BYPASS LEMPREC
TC INTPRET # EXTRAPOLATE BOTH STATE VECTORS
RTB
# Page 704
LOADTIME
STCALL TDEC1
LEMPREC # PRECISION BASE VECTOR FOR LM
VLOAD
RATT1
STOVL BASETHP
VATT1
STODL BASETHV
TAT
DOCMBASE STORE BASETIME # PRECISION BASE VECTOR FOR CM
STCALL TDEC1
CSMPREC
VLOAD
RATT1
STOVL BASEOTP
VATT1
STORE BASEOTV
EXIT
REV83 CS FLAGWRD7
MASK AVEGFBIT
EXTEND
BZF GETRVN # IF AVEGFLAG SET, USE RN,VN
CS FLAGWRD8
MASK SURFFBIT
EXTEND
BZF R31SURF # IF ON SURFACE, USE LEMAREC
TC INTPRET # DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
RTB
LOADTIME
STCALL TDEC1
INTSTALL
VLOAD CLEAR
BASETHP
MOONFLAG
STOVL RCV
BASETHV
STODL VCV
BASETIME
BOF SET # GET APPROPRIATE MOONFLAG SETTING
MOONTHIS
+2
MOONFLAG
SET
INTYPFLG # CONIC EXTRAP.
STCALL TET
INTEGRVS # INTEGRATION --- AT LAST ---
OTHCONIC VLOAD
# Page 705
RATT
STOVL RONE
VATT
STCALL VONE # GET SET FOR CONIC EXTRAP., OTHER.
INTSTALL
SET DLOAD
INTYPFLG
TAT
OTHINT STORE TDEC1
VLOAD CLEAR
BASEOTP
MOONFLAG
STOVL RCV
BASEOTV
STODL VCV
BASETIME
BOF SET
MOONTHIS
+2
MOONFLAG
STCALL TET
INTEGRVS
COMPDISP VLOAD VSU
RATT
RONE
RTB PDDL
NORMUNX1 # UNIT(RANGE) TO PD 0-5
36D
SL* # RESCALE AFTER NORMUNIT
0,1
STOVL RANGE # SCALED 2(29)M
VATT
VSU DOT # (VCM-VLM).UNIT(LOS), PD=0
VONE
SL1 # SCALED 2(7)M/CS
STOVL RRATE
RONE
UNIT PDVL # UNIT(R) TO PD 0-5
UNITZ
CALL
CDU*NBSM
VXM PUSH # UNIT(Z)/4 TO PD 6-11
REFSMMAT
VPROJ VSL2 # UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
0D
BVSU UNIT
6D
PDVL VXV # UNIT(P) TO PD 12-17
0D # UNIT(RL)
VONE
# Page 706
VXV DOT # (UR * VL) * UR . U(P)
0D
12D
PDVL # SIGN TO 12-13, LOAD U(P)
DOT SIGN
6D
12D
SL2 ACOS # ARCCOS(UP.UZ(SIGN))
STOVL RTHETA
0D
DOT BPL # IF UR.UZ NEG,
6D # RTHETA = 1 - RTHETA
+5
DLOAD DSU
DPPOSMAX
RTHETA
STORE RTHETA
EXIT
CA BIT5
MASK EXTVBACT
EXTEND # IF ANSWERED,
BZF ENDEXT # TERMINATE
CS EXTVBACT
MASK BIT12
ADS EXTVBACT # SET BIT 12
TCF REV83 # AND START AGAIN.
GETRVN CA PRIO22 # INHIBIT SERVICER
TC PRIOCHNG
TC INTPRET
VLOAD SETPD
RN # LM STATE VECTOR IN RN,VN.
0
STOVL RONE
VN
STOVL VONE # LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
V(CSM) # (TO INSURE TIME COMPATIBILITY)
PDVL PDDL
R(CSM)
PIPTIME
EXIT
CA PRIO3
TC PRIOCHNG
TC INTPRET
BOFF VLOAD
MUNFLAG
GETRVN2 # IF MUNFLAG RESET, DO CM DELTA PRECISION
# Page 707
VXM VSR4 # CHANGE TO REFERENCE SYSTEM AND RESCALE
REFSMMAT
PDVL # R TO PD 0-5
VXM VSL1
REFSMMAT
PUSH SETPD # V TO PD 5-11
0
GOTO
COMPDISP
GETRVN2 CALL
INTSTALL
CLEAR GOTO
INTYPFLG # PREC EXTRAP FOR OTHER
OTHINT
R31SURF TC INTPRET
RTB # LM IS ON SURFACE, SO PRECISION
LOADTIME # INTEGRATION USED PLANETARY INERTIAL
STCALL TDEC1 # ORIENTATION SUBROUTINE
LEMPREC
GOTO # DO CSM CONIC
OTHCONIC
MUNG? CS FLAGWRD6
MASK MUNFLBIT
EXTEND
BZF GETRVN # IF MUNFLAG SET, CSM BASE NOT NEEDED
ONEBASE TC INTPRET # GET CSM BASE VECTOR
RTB GOTO
LOADTIME
DOCMBASE
V16N54 VN 1654
# Page 708 (empty page)

587
Luminary099/R60_62.agc Normal file
View File

@ -0,0 +1,587 @@
# Copyright: Public domain.
# Filename: R60_R62.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: 472-485
# 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 472
# MOD NO: 0 DATE: 1 MAY 1968
# MOD BY: DIGITAL DEVEL GROUP LOG SECTION R60,R62
#
# FUNCTIONAL DESCRIPTION:
#
# CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED
# ATTITUDE.
#
# 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE
# CALCULATED (VECPOINT).
#
# 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
#
# 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER.
#
# 4. IF PRIORITY DISPLAY FLAG IS SET DO A PHASECHANGE. THEN AWAIT
# ASTRONAUT RESPONSE.
#
# 5. DISPLAY RESPONSE RETURNS.
#
# A. ENTER -- RESET 3-AXIS FLAG AND RETURN TO CLIENT.
#
# B. TERMINATE -- IF IN P00 GO TO STEP 5A. OTHERWISE CHECK IF R61 IS
# THE CALLING PROGRAM. IF IN R61 AN EXIT IS MADE TO GOTOV56. IF
# NOT IN R61 AN EXIT IS DONE VIA GOTOP00H.
#
# C. PROCEED -- CONTINUE WITH PROGRAM AT STEP 6.
#
# 6. IF THE 3-AXISFLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED
# (VECPOINT).
#
# 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
#
# 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3.
#
# 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3.
#
# 10. NON-FLASHING DISPLAY V06N18 (FDAI ANGLES).
#
# 11. DO A PHASE-CHANGE.
#
# 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL
# GIMBAL ANGLES (GOMANUR).
#
# 13. AT END OF MANEUVER TO TO STEP 3.
#
# IF SATISFACTORY MANEUVER STEP 5A EXITS R60.
# FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE
# DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT
# Page 473
# STEP 5C.
#
# CALLING SEQUENCE: TC BANKCALL
# CADR R60LEM
#
# ERASABLE INITIALIZATION REQUIRED: SCAXIS, POINTVSM (FOR VECPOINT)
# 3AXISFLG.
#
# SUBROUTINES CALLED: VECPOINT, BALLANGS, GOPERF24, LINUS, GODSPER,
# GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG
#
# NORMAL EXIT MODES: CAE TEMPR60 (CALLER'S RETURN ADDRESS)
# TC BANKJUMP
#
# ALARMS: NONE
#
# OUTPUT: NONE
#
# DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2
BANK 34
SETLOC MANUVER
BANK
EBANK= TEMPR60
COUNT* $$/R06
R60LEM TC MAKECADR
TS TEMPR60
REDOMANN CAF 3AXISBIT
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 TC BANKCALL
CADR BALLANGS # TO CONVERT ANGLES TO FDAI
TOBALLA CAF V06N18
TC BANKCALL
CADR GOPERF2R # DISPLAY PLEASE PERFORM AUTO MANEUVER
TC R61TEST
TC REDOMANC # PROCEED
TC ENDMANU1 # ENTER I.E., FINISHED WITH R60
# Page 474
TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS
TC ENDOFJOB
REDOMANC CAF 3AXISBIT
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 TC BANKCALL
CADR BALLANGS # TO CONVERT ANGLES TO FDAI
TC G+N,AUTO # CHECK AUTO MODE
CCS A
TCF TOBALLA # NOT AUTO, GO REREQUEST AUTO MANEUVER.
AUTOMANV CAF V06N18 # STATIC DISPLAY DURING AUTO MANEUVER
TC BANKCALL
CADR GODSPR
TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS
STARTMNV TC BANKCALL # PERFORM MANEUVER VIA KALCMANU
CADR GOMANUR
ENDMANUV TCF TOBALLA # FINISHED MANEUVER.
ENDMANU1 TC DOWNFLAG # RESET 3-AXIS FLAG
ADRES 3AXISFLG
CAE TEMPR60
TC BANKJUMP
CHKLINUS CS FLAGWRD4
MASK PDSPFBIT # 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 TBASE2
TC PHASCHNG
OCT 00132
CAF BIT7
TC LINUS # GO SET BITS FOR PRIORITY DISPLAY
TC MPAC +2
# Page 475
RELINUS CAF PRIO26 # RESTORE ORIGINAL PRIORITY
TC PRIOCHNG
CAF TRACKBIT # DON'T CONTINUE R60 UNLESS TRACKFLAG ON.
MASK FLAGWRD1
CCS A
TCF RER60
CAF RNDVZBIT # IS IT P20?
MASK FLAGWRD0
CCS A
TC +4 # YES
TC PHASCHNG # NO, MUST BE P25, SET 2.11 SPOT
OCT 40112
TC ENDOFJOB
TC PHASCHNG # SET 2.7 SPOT FOR P20
OCT 40072
TC ENDOFJOB
RER60 TC UPFLAG # SET PRIO DISPLAY FLAG AFTER RESTART
ADRES PDSPFLAG
TC TBASE2
R61TEST CA MODREG # IF WE ARE IN P00 IT MUST BE V49 OR V89
EXTEND
BZF ENDMANU1 # THUS WE GO TO ENDEXT VIA USER
CA FLAGWRD4 # ARE WE IN R61 (P20 OR P25)
MASK PDSPFBIT
EXTEND
BZF GOTOP00H # NO
TC GOTOV56 # YES
BIT14+7 OCT 20100
OCT203 OCT 203
V06N18 VN 0618
# SUBROUTINE TO CHECK FOR G+N CONTROL, AUTO STABILIZATION
#
# RETURNS WITH C(A) = + IF NOT SET FOR G+N, AUTO
# RETURNS WITH C(A) = +0 IF SWITCHES ARE SET
G+N,AUTO EXTEND
READ CHAN30
MASK BIT10
CCS A
TC Q # NOT IN G+N C(A) = +
# Page 476
ISITAUTO EXTEND # CHECK FOR AUTO MODE
READ CHAN31
MASK BIT14
TC Q # (+) = NOT IN AUTO, (+0) = AOK
# Page 477
# PROGRAM DESCRIPTION BALLANGS
# MOD NO. LOG SECTION R60,R62
#
# WRITTEN BY RAMA M. AIYAWAR
#
# FUNCTIONAL DESCRIPTION
#
# COMPUTES LM FDAI BALL DISPLAY ANGLES
#
# CALLING SEQUENCE
#
# TC BALLANGS
#
# NORMAL EXIT MODE
#
# TC BALLEXIT # (SAVED Q)
#
# ALARM OR EXIT MODE: NIL
#
# SUBROUTINES CALLED
#
# CD*TR*G
# ARCTAN
#
# INPUT
#
# CPHI,CTHETA,CPSI ARE THE ANGLES CORRESPONDING TO AOG, AIG, AMG. THEY ARE
# SP,2'S COMPLEMENT SCALED TO HALF REVOLUTION.
#
# OUTPUT
#
# FDAIX, FDAIY, FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION
# SP,2'S COMPEMENT.
#
# THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS, IN THE ORDER ROLL, PITCH, YAW, USING NOUNS 18 & 19.
#
# ERASABLE INITIALIZATION REQUIRED
#
# CPHI, CTHETA, CPSI EACH AN SP REGISTER
#
# DEBRIS
#
# A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIST,BALLEXIT
#
# NOMENCLATURE: CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, AND MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR
# EQUIVALENTLY, CDUX, CDUY, AND CDUZ.
#
# NOTE: ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES.
SETLOC BAWLANGS
BANK
COUNT* $$/BALL
BALLANGS TC MAKECADR
TS BALLEXIT
CA CPHI
# Page 478
TS CDUSPOT +4
CA CTHETA
TS CDUSPOT
CA CPSI
TS CDUSPOT +2
TC INTPRET
SETPD CALL
0D
CD*TR*G
DLOAD DMP
SINCDUX # SIN (OGA)
COSCDUZ # COS (MGA)
SL1 DCOMP # SCALE
ARCSIN PDDL # YAW = ARCSIN(-SXCZ) INTO 0 PD
SINCDUZ
STODL SINTH # (SINTH = 18D IN PD)
COSCDUZ
DMP SL1 # RESCALE
COSCDUX
STCALL COSTH # (COSTH = 16D IN PD)
ARCTAN
PDDL DMP # ROLL = ARCTAN(SZ/CZCX) INTO 2 PD
SINCDUZ
SINCDUX
SL2 PUSH # SXSZ INTO 4 PD
DMP PDDL # SXSZCY INTO 4 PD
COSCDUY
DMP PDDL # SXSZSY INTO 6 PD
SINCDUY
COSCDUX
DMP SL1 # CXCY
COSCDUY
DSU STADR # PULL UP FORM 6 PD
STODL COSTH # COSTH = CXCY - SXSZSY
SINCDUY
DMP SL1
COSCDUX # CXSY
DAD STADR # PULL UP FORM 4 PD
STCALL SINTH # SINTH = CXSY + SXSZCY
ARCTAN # RETURNS WITH D(MPAC) = PITCH
PDDL VDEF # PITCH INTO 2 PD, ROLL INTO MPAC FROM 2 PD
RTB # VDEF MAKES V(MPAC) = ROLL, PITCH, YAW
V1STO2S
STORE FDAIX # MODE IS TP
EXIT
ENDBALL CA BALLEXIT
# Page 479
TC BANKJUMP
# Page 480
# 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 PROBLEM 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 IN 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 481
COUNT* $$/VECPT
EBANK= BCDU
VECPNT1 STQ BOV # THIS ENTRY USES DESIRED CDUS
VECQTEMP # NOT PRESENT -- ENTER WITH CDUD'S IN MPAC
VECPNT2
VECPNT2 AXC,2 GOTO
MIS
STORANG
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
STORANG 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 # NOW 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
KEL # 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.
# Page 482
# 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
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 0, 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
KEL
CALL # COMPUTE THE NEW TRANSFORMATION FROM
MXM3 # DESIRED S/C AXES TO STABLE MEMBER AXES
# WHICH WILL ALIGN VI WITH VF AND AVOID
# Page 483
# GIMBAL LOCK
FINDGIMB AXC,1 CALL
0 # EXTRACT THE COMMANDED CDU ANGLES FROM
DCMTOCDU # THIS MATRIX
RTB SETPD
V1STO2S # CONVERT TO 2'S COMPLEMENT
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
BANK 35
SETLOC MANUVER1
BANK
ROT180 VLOAD VXV # IF VF, VI ANTIPARALLEL, 180 DEG ROTATION
MIS +6 # IS REQUIRED. Y STABLE MEMBER AXIS IN
HIDPHALF # 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
HIDPHALF
XROT
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
# Page 484
VECANG2 2DEC .09722222222 # = 35 DEGREES $360
1BITDP OCT 0 # KEEP THIS BEFORE DPB(-14) ************
DPB-14 OCT 00001
OCT 00000
# Page 485
# ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)
BANK 34
SETLOC R62
BANK
EBANK= BCDU
COUNT* $$/R62
R62DISP EQUALS R62FLASH
R62FLASH CAF V06N22 # FLASH V06N22 AND
TC BANKCALL # ICDU ANGLES
CADR GOFLASH
TCF ENDEXT # TERMINATE
TCF GOMOVE # PROCEED
TCF R62FLASH # ENTER
# ASTRONAUT MAY LOAD NEW ICDUS AT THIS
# POINT.
GOMOVE TC UPFLAG # SET FOR 3-AXIS MANEUVER
ADRES 3AXISFLG
TC BANKCALL
CADR R60LEM
TCF ENDEXT # END R62

View File

@ -0,0 +1,325 @@
# Copyright: Public domain.
# Filename: RESTARTS_ROUTINE.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: 1303-1309
# 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 1303
BANK 01
SETLOC RESTART
BANK
EBANK= PHSNAME1 # GOPROG MUST SWITCH TO THIS EBANK
COUNT* $$/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
RTRNCADR TC SWRETURN # CAN'T GET HERE.
# Page 1304
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* $$/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* $$/RSROU
FINDTIME COM # MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED
TS L # AND SAVE
NDX TEMP2G
CS TBASE1
EXTEND
SU TIME1
CCS A
COM
# Page 1305
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
CA TEMPPHS # SET UP POINTER FOR FINDING OUR PLACE IN
TS SR # THE RESTART TABLES
AD SR
# Page 1306
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. BIT 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* $$/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
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
# Page 1307
TCF ITSLGCL2 # NOT LET'S PROCESS THIS LONGCALL
# ***** YOU MAY RETURN TO SWITCHED FIXED *****
BANK 01
SETLOC RESTART
BANK
COUNT* $$/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
NDX POINTER # GET THE DT AND FIND OUT IF IT WAS STORED
CA PRDTTAB # DIRECTOY OR INDIRECTLY
TCF TIMETEST # FIND OUT HOW THE TIME IS STORED
# Page 1308
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

View File

@ -0,0 +1,297 @@
# Copyright: Public domain.
# Filename: RESTART_TABLES.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: 238-243
# 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 238
# 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 O THIS PHASE WOULD BE STARTED AS A JOB WITH A PRIORITY OF 31.
#
# WAITLIST CALLS ARE IDENTIFIED BY THE FCT 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
# 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 239
# -GENADR DTIME # WHERE DTIME CONTAINS THE DELTA TIME
# -2CADR TASKTASK # OTHERWISE THIS IS AS ABOVE
#
# ***** NOW THE TABLES THEMSELVES *****
BANK 01
SETLOC RESTART
BANK
PRDTTAB EQUALS 12000 # USED TO FIND THE PRIORITY OR DELTATIME
CADRTAB EQUALS 12001 # THIS AND THE NEXT RELATIVE LOC CONTAIN
# RESTART 2CADR
COUNT* $$/RSTAB # TABLES IN BANK 1.
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 OCT 21000 # A DUMMY EXAMPLE TO BE REPLACED AS SOON
EBANK= STATE
2CADR ENDOFJOB # AS THERE IS A LEGITIMATE 1.2SPOT
DEC 100
EBANK= STATE
2CADR TASKOVER
# ANY MORE GROUP 1.EVEN RESTART VALUES SHOULD GO HERE.
1.3SPOT -GENADR SAVET-30
EBANK= DVCNTR
-2CADR ULLGTASK
# 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
2.3SPOT GENADR 600SECS
-GENADR STATEINT
EBANK= RRECTCSM
BBCON STATEINT
# Page 240
2.5SPOT OCT 05000
EBANK= RRECTCSM
2CADR STATINT1
2.7SPOT DEC 1500
EBANK= LOSCOUNT
-2CADR P20LEMC1
2.11SPOT OCT 14000
EBANK= P21TIME
2CADR P25LEM1
2.13SPOT OCT 10000
EBANK= LOSCOUNT
2CADR RELINUS
2.15SPOT OCT 26000
EBANK= LOSCOUNT
2CADR R22RSTRT
2.17SPOT OCT 77777
EBANK= VGPREV
-2CADR REDO2.17
2.21SPOT DEC 25
EBANK= DVCNTR
-2CADR R10,R11
# ANY MORE GROUP 2.ODD RESTART VALUES SHOULD GO HERE.
3.2SPOT EQUALS 1.2SPOT
# ANY MORE GROUP 3.EVEN RESTART VALUES SHOULD GO HERE
3.3SPOT -GENADR ZOOMTIME
EBANK= DVCNTR
-2CADR ZOOM
3.5SPOT OCT 20000
EBANK= TTOGO
2CADR S40.13
# ANY MORE GROUP 3.ODD RESTART VALUES SHOULD GO HERE
4.2SPOT DEC 2500
EBANK= TTOGO
-2CADR TIG-5
OCT 77777
EBANK= TTOGO
# Page 241
-2CADR REDO4.2
# ANY MORE GROUP 4.EVEN RESTART VALUES SHOULD GO HERE
4.3SPOT OCT 25000
EBANK= DVCNTR
2CADR GOABORT
4.5SPOT DEC 50
EBANK= TTOGO
-2CADR ULLAGOFF
4.7SPOT DEC 500
EBANK= DVCNTR
-2CADR TIG-0
4.11SPOT -GENADR TGO +1
EBANK= DVCNTR
-2CADR ENGOFTSK
4.13SPOT OCT 12000
EBANK= TRKMKCNT
2CADR POSTBURN
4.15SPOT DEC 500
EBANK= TTOGO
-2CADR TIG-30
4.17SPOT OCT 77777
EBANK= DVCNTR
-2CADR TIG-5
4.21SPOT OCT 13000
EBANK= STAR
2CADR R51.1 +1
4.23SPOT OCT 77777
EBANK= DVCNTR
-2CADR IGNITION
4.25SPOT GENADR SAVET-30
-GENADR TIG-35
EBANK= SAVET-30
BBCON TIG-35
4.27SPOT OCT 52777
EBANK= DVCNTR
2CADR P70A
# Page 242
4.31SPOT OCT 52777
EBANK= DVCNTR
2CADR P71A
4.33SPOT OCT 46777
EBANK= DVCNTR
2CADR GOP00FIX
4.35SPOT OCT 46777
EBANK= DVCNTR
2CADR GOP00DOO
4.37SPOT OCT 52777
EBANK= WHICH
2CADR COMFAIL
# ANY MORE 4.ODD RESTART VALUES SHOULD GO HERE.
5.2SPOT OCT 22000
EBANK= DVCNTR
2CADR NORMLIZE
DEC 200
EBANK= DVCNTR
-2CADR REREADAC
5.4SPOT DEC 200
EBANK= DVCNTR
-2CADR REREADAC
OCT 20000
EBANK= DVCNTR
2CADR SERVICER
# ANY MORE GROUP 5.EVEN RESTART VALUES SHOULD GO HERE
5.3SPOT DEC 200
EBANK= DVCNTR
-2CADR REREADAC
5.5SPOT OCT 77777
EBANK= DVCNTR
-2CADR REDO5.5
5.7SPOT OCT 77777
EBANK= DVCNTR
# Page 243
-2CADR BIBIBIAS
# ANY MORE GROUP 5.ODD RESTART VALUES SHOULD GO HERE
6.2SPOT EQUALS 1.2SPOT
6.3SPOT DEC 100
EBANK= TIG
-2CADR CLOKTASK
6.5SPOT OCT 30000 # PROTECT INCREMENTING OF TIME2,TIME1 BY
EBANK= TEPHEM # P27(UPDATE PROGRAM) VIA V70 OR V73.
2CADR TIMEDIDR
6.7SPOT OCT 17000
EBANK= VGPREV
2CADR REDO6.7

View File

@ -0,0 +1,224 @@
# Copyright: Public domain.
# Filename: SERVICE_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: 1374-1380
# 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 1374
BANK 10
SETLOC DISPLAYS
BANK
COUNT* $$/DSPLA
UPENT2 INHINT
MASK OCT77770
TS L
CS FLAGWRD4
MASK L
ADS FLAGWRD4
JOIN RELINT
TCF Q+1
DOWNENT2 INHINT
MASK OCT77770
COM
MASK FLAGWRD4
TS FLAGWRD4
TCF JOIN
OCT7 EQUALS SEVEN
# Page 1375
# UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES. USING THEM, WHETHER OR
# NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
# EBANK SETTING. A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
# ASSEMBLER.
#
# AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS. ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
# NAME ANY BIT IN ERASABLE MEMORY.
#
# CALLING SEQUENCES ARE AS FOLLOWS :-
# TC UPFLAG TC DOWNFLAG
# ADRES NAME OF FLAG ADRES NAME OF FLAG
#
# RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
# UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
BLOCK 02
SETLOC FFTAG1
BANK
COUNT* $$/FLAG
UPFLAG CA Q
TC DEBIT
COM # +(15 - BIT)
EXTEND
ROR LCHAN # SET BIT
COMFLAG INDEX ITEMP1
TS FLAGWRD0
LXCH ITEMP3
RELINT
TC L
DOWNFLAG CA Q
TC DEBIT
MASK L # RESET BIT
TCF COMFLAG
DEBIT AD ONE # CET DE BITS
INHINT
TS ITEMP3
CA LOW4 # DEC15
TS ITEMP1
INDEX ITEMP3
CA 0 -1 # ADRES
TS L
CA ZERO
# Page 1376
EXTEND
DV ITEMP1 # A = FLAGWRD, L = (15 - BIT)
DXCH ITEMP1
INDEX ITEMP1
CA FLAGWRD0
TS L # CURRENT STATE
INDEX ITEMP2
CS BIT15 # -(15 - BIT)
TC Q
# Page 1377
# DELAYJOB -- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
#
# ENTRANCE REQUIREMENTS ...
# CAF DT # DELAY JOB FOR DT CENTISECS
# TC BANKCALL
# CADR DELAYJOB
BANK 06
SETLOC DLAYJOB
BANK
# THIS MUST REMAIN IN BANK 0 ****************************************
COUNT* $$/DELAY
DELAYJOB INHINT
TS Q # STORE DELAY DT IN Q FOR DLY -1 IN
CAF DELAYNUM # WAITLIST
DELLOOP TS RUPTREG1
INDEX A
CA DELAYLOC # IS THIS DELAYLOC AVAILABLE
EXTEND
BZF OK2DELAY # YES
CCS RUPTREG1 # NO, TRY NEXT DELAYLOC
TCF DELLOOP
DXCH BUF2
TC BAILOUT1 # NO AVAILABLE LOCS.
OCT 1104
OK2DELAY CA TCSLEEP # SET WAITLIST IMMEDIATE RETURN
TS WAITEXIT
CA FBANK
AD RUPTREG1 # STORE BBANK FOR TASK CALL
TS L
CAF WAKECAD # STORE CADR FOR TASK CALL
TCF DLY2 -1 # DLY IS IN WAITLIST ROUTINE
TCGETCAD TC MAKECADR # GET CALLERS FCADR
INDEX RUPTREG1
TS DELAYLOC # SAVE DELAY CADRS
TC JOBSLEEP
WAKER CAF ZERO
INDEX BBANK
XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
# Page 1378
TC JOBWAKE
TC TASKOVER
TCSLEEP GENADR TCGETCAD -2
WAKECAD GENADR WAKER
# Page 1379
# GENTRAN, A BLOCK TRANSFER ROUTINE
# WRITTEN BY D. EYLES
# MOD 1 BY KERNAN UTILITYM REV 17 11/18/67
# MOD 2 BY SCHULENBERG (REMOVE RELINT) SKIPPER REV 4 2/28/68
#
# THIS ROUTINE IS USEFUL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
# CONSECUTIVE ERASABLE LOCATIONS. IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
#
# GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT. THE CALLING SEQUENCE IS:
# I CA N-1 # # OF QUANTITIES MINUS ONE.
# I +1 TC GENTRAN # IN FIXED-FIXED.
# I +2 ADRES L # STARTING ADRES OF DATA TO BE MOVED.
# I +3 ADRES M # STARTING ADRES OF DUPLICATION BLOCK.
# I +4 # RETURNS HERE.
#
# GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
# A, L, AND ITEMP1 ARE NOT PRESERVED.
BLOCK 02
SETLOC FFTAG4
BANK
EBANK= ITEMP1
COUNT* $$/TRAN
GENTRAN INHINT
TS ITEMP1 # SAVE N-1
INDEX Q # C(Q) = ADRES L.
AD 0 # ADRES (L + N - 1).
INDEX A
CA 0 # C(ABOVE).
TS L # SAVE DATA.
CA ITEMP1
INDEX Q
AD 1 # ADRES (M + N - 1).
INDEX A
LXCH 0 # STUFF IT.
CCS ITEMP1 # LOOP UNTIL N-1 = 0.
TCF GENTRAN +1
TCF Q+2 # RETURN TO CALLER.
# Page 1380
# B5OFF ZERO BIT 5 OF EXTVBACK, WHICH IS SET BY TESTXACT.
# MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
COUNT* $$/EXTVB
B5OFF CS BIT5
MASK EXTVBACT
TS EXTVBACT
TC ENDOFJOB

View File

@ -0,0 +1,69 @@
# Copyright: Public domain.
# Filename: SINGLE_PRECISION_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: 1102
# Mod history: 2009-05-25 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2010-12-31 JL Fixed page number comment.
#
# 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 1102
BLOCK 02
# SINGLE PRECISION SINE AND COSINE
COUNT* $$/INTER
SPCOS AD HALF # ARGUMENTS SCALED AT PI
SPSIN TS TEMK
TCF SPT
CS TEMK
SPT DOUBLE
TS TEMK
TCF POLLEY
XCH TEMK
INDEX TEMK
AD LIMITS
COM
AD TEMK
TS TEMK
TCF POLLEY
TCF ARG90
POLLEY EXTEND
MP TEMK
TS SQ
EXTEND
MP C5/2
AD C3/2
EXTEND
MP SQ
AD C1/2
EXTEND
MP TEMK
DDOUBL
TS TEMK
TC Q
ARG90 INDEX A
CS LIMITS
TC Q # RESULT SCALED AT 1.

View File

@ -0,0 +1,441 @@
# Copyright: Public domain.
# Filename: STABLE_ORBIT.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: 723-730
# Mod history: 2009-05-19 RSB Adapted from the corresponding
# Colossus249 file (there being no corresponding
# Luminary131 source-code file), using page
# images from Luminary 1A.
# 2009-06-07 RSB Eliminated an extraneous instruction.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# 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 723
# STABLE ORBIT RENDEZVOUS PROGRAMS (P38 AND P78)
#
# MOD NO -1 LOG SECTION -- STABLE ORBIT -- P38-P39
# MOD BY RUDNICKI.S DATE 26JAN68
#
# FUNCTIONAL DESCRIPTION
#
# P38 AND P78 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL
# CONDITIONS REQUIRED BY THE AGC TO (1) PUT THE ACTIVE VEHICLE
# ON A TRANSFER TRAJECTORY THAT INTERCEPTS THE PASSIVE VEHICLE
# ORBIT A GIVEN DISTANCE, DELTA R, EITHER AHEAD OF OR BEHIND THE
# PASSIVE VEHICLE AND (2) ACTUALLY PLACE THE ACTIVE VEHICLE IN THE
# PASSIVE VEHICLE ORBIT WITH A DELTA R SEPARATION BETWEEN THE TWO
# VEHICLES
#
# CALLING SEQUENCE
#
# ASTRONAUT REQUEST THRU DSKY
#
# V37E38E IF THIS VEHICLE IS ACTIVE VEHICLE
# V37E78E IF OTHER VEHICLE IS ACTIVE VEHICLE
#
# INPUT
#
# (1) SOI MANEUVER
#
# (A) TIG TIME OF SOI MANEUVER
# (B) CENTANG ORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE
# DURING THE TRANSFER FROM TIG TO TIME OF INTERCEPT
# (C) DELTAR THE DESIRED SEPARATION OF THE TWO VEHICLES
# SPECIFIED AS A DISTANCE ALONG THE PASSIVE VEHICLE
# ORBIT
# (D) OPTION EQUALS 1 FOR SOI
#
# (2) SOR MANEUVER
#
# (A) TIG TIME OF SOR MANEUVER
# (B) CENTANG AN OPTIONAL RESPECIFICATION OF 1 (B) ABOVE
# (C) OPTION EQUALS 2 FOR SOR
# (D) DELTTIME THE TIME REQUIRED TO TRAVERSE DELTA R WHEN
# TRAVELING AT A VELOCITY EQUAL TO THE HORIZONTAL
# VELOCITY OF THE PASSIVE VEHICLE -- SAVED FROM
# SOI PHASE
# (E) TINT TIME OF INTERCEPT (SOI) -- SAVED FROM SOI PHASE
#
# OUTPUT
#
# (1) TRKMKCNT NUMBER OF MARKS
# (2) TTOGO TIME TO GO
# (3) +MGA MIDDLE GIMBAL ANGLE
# Page 724
# (4) DSPTEM1 TIME OF INTERCEPT OF PASSIVE VEHICLE ORBIT
# (FOR SOI ONLY)
# (5) POSTTPI PERIGEE ALTITUDE OF ACTIVE VEHICLE ORBIT AFTER
# THE SOI (SOR) MANEUVER
# (6) DELVTPI MAGNITUDE OF DELTA V AT SOI (SOR) TIME
# (7) DELVTPF MAGNITUDE OF DELTA V AT INTERCEPT TIME
# (8) DELTA VELOCITY AT SOI (AND SOR) -- LOCAL VERTICAL
# CORDINATES
#
# SUBROUTINE USED
#
# AVFLAGA
# AVFLAGP
# VNDSPLY
# BANKCALL
# GOFLASHR
# GOTOP00H
# BLANKET
# ENDOFJOB
# PREC/TT
# SELECTMU
# INTRPVP
# MAINRTNE
BANK 04
SETLOC STBLEORB
BANK
EBANK= SUBEXIT
COUNT* $$/P3879
P38 TC BANKCALL
CADR AVFLAGA # THIS VEHICLE ACTIVE
TC +3
P78 TC BANKCALL
CADR AVFLAGP # OTHER VEHICLE ACTIVE
TC BANKCALL
CADR P20FLGON # SET UPDATFLG, TRACKFLG
CAF DECTWO
TS NN
CAF V06N33SR # DISPLAY TIG
TC VNDSPLY
CAF V06N55SR # DISPLAY CENTANG
TCR BANKCALL
CADR GOFLASHR
TCF GOTOP00H # TERMINATE
TCF +5 # PROCEED
TCF -5 # RECYCLE
CAF THREE # IMMEDIATE RETURN -- BLANK R1, R2
TCR BLANKET
# Page 725
TCF ENDOFJOB
CAF FIVE
TS OPTION1
CAF ONE
TS OPTION2 # OPTION CODE IS SET TO 1
CAF V04N06SR # DISPLAY OPTION CODE -- 1 = SOI, 2 = SOR
TCR BANKCALL
CADR GOFLASHR
TCF GOTOP00H # TERMINATE
TCF +5 # PROCEED
TCF -5 # RECYCLE
CAF BIT3 # IMMEDIATE RETURN -- BLANK R3
TCR BLANKET
TCF ENDOFJOB
TC INTPRET
SLOAD SR1
OPTION2
BHIZ DLOAD
OPTN1
TINT
STORE TINTSOI # STORE FOR SOR PHASE
CLRGO
OPTNSW # OPTNSW: ON = SOI, OFF = SOR
JUNCTN1
OPTN1 SET CLEAR # SOI
OPTNSW
UPDATFLG
CALL
PREC/TT
DAD SET
TIG
UPDATFLG
STORE TINT # TI = TIG + TF
EXIT
CAF V06N57SR # DISPLAY DELTA R
TCR BANKCALL
CADR GOFLASHR
TCF GOTOP00H # TERMINATE
TCF +5 # PROCEED
TCF -5 # RECYCLE
CAF SIX # IMMEDIATE RETURN -- BLANK R2, R3
TCR BLANKET
TCF ENDOFJOB
+5 EXTEND
DCA TINT
DXCH DSPTEM1 # FOR DISPLAY
CAF V06N34SR # DISPLAY TIME OF INTERCEPT
TC VNDSPLY
TC INTPRET
JUNCTN1 CLEAR CALL
# Page 726
P39/79SW
SELECTMU # SELECT MU, CLEAR FINALFLG, GO TO VN1645
RECYCLE CALL
PREC/TT
BOFF DLOAD
OPTNSW
OPTN2
TINT
STCALL TDEC1 # PRECISION UPDATE PASSIVE VEHICLE TO
INTRPVP # INTERCEPT TIME
VLOAD UNIT
RATT # RP/(RP)
PDVL VXV
VATT
ABVAL NORM # (VP X RP/(RP))
X1
PDDL DDV
DELTAR
SL* # DELTA R / (VP X RP/RP)
0 -7,1
STCALL DELTTIME # DELTA T = (RP) DELTA R / (VP X RP)
JUNCTN2
OPTN2 DLOAD DAD
TINTSOI
T
STORE TINT # TI = TI + TF
JUNCTN2 DLOAD DSU
TINT
DELTTIME
STORE TARGTIME # TT = TI - DELTA T
# .... MAINRTNE ....
#
# SUBROUTINES USED:
#
# S3435.25
# PERIAPO1
# SHIFTR1
# VNDSPLY
# BANKCALL
# GOFLASH
# GOTOP00H
# VN1645
MAINRTNE STCALL TDEC1 # PRECISION UPDATE PASSIVE VEHICLE TO
INTRPVP # TARGET TIME
DLOAD
TIG
STORE INTIME
SSP VLOAD
SUBEXIT
TEST3979
# Page 727
RATT
CALL
S3435.25
TEST3979 BOFF BON
P39/79SW
MAINRTN1
FINALFLG
P39P79
SET
UPDATFLG
P39P79 EXIT
TC DSPLY81 # FOR P39 AND P79
MAINRTN1 VLOAD ABVAL
DELVEET3
STOVL DELVTPI # DELTA V
VPASS4
VSU ABVAL
VTPRIME
STOVL DELVTPF # DELTA V (FINAL) = V*T - VT
RACT3
PDVL CALL
VIPRIME
PERIAPO1 # GET PERIGEE ALTITUDE
CALL
SHIFTR1
STORE POSTTPI
BON SET
FINALFLG
DSPLY58
UPDATFLG
DSPLY58 EXIT
CAF V06N58SR # DISPLAY HP, DELTA V, DELTA V (FINAL)
TC VNDSPLY
DSPLY81 CAF V06N81SR # DISPLAY DELTA V (LV)
TC VNDSPLY
TC INTPRET
CLEAR VLOAD
XDELVFLG
DELVEET3
STCALL DELVSIN
VN1645 # DISPLAY TRKMKCNT, TTOGO, +MGA
BON GOTO
P39/79SW
P39/P79B
RECYCLE
# STABLE ORBIT MIDCOURSE PROGRAM (P39 AND P79)
#
# MOD NO -1 LOG SECTION -- STABLE ORBIT -- P38-P39
# MOD BY RUDNICKI, S DATE 25JAN68
#
# Page 728
# FUNCTIONAL DESCRIPTION
#
# P39 AND P79 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL
# CONDITIONS REQUIRED BY THE AGC TO MAKE A MIDCOURSE CORRECTION
# MANEUVER AFTER COMPLETING THE SOI MANEUVER BUT BEFORE MAKING
# THE SOR MANEUVER.
#
# CALLING SEQUENCE
#
# ASTRONAUT REQUEST THRU DSKY
#
# V37E39E IF THIS VEHICLE IS ACTIVE VEHICLE
# V37E79E IF OTHER VEHICLE IS ACTIVE VEHICLE
#
# INPUT
#
# (1) TPASS4 TIME OF INTERCEPT -- SAVED FROM P38/P78
# (2) TARGTIME TIME THAT PASSIVE VEHICLE IS AT INTERCEPT POINT --
# SAVED FROM P38/P78
#
# OUTPUT
#
# (1) TRKMKCNT NUMBER OF MARKS.
# (2) TTOGO TIME TO GO
# (3) +MGA MIDDLE GIMBAL ANGLE
# (4) DELVLVC DELTA VELOCITY AT MID - LOCAL VERTICAL COORDINATES
#
# SUBROUTINES USED
#
# AVFLAGA
# AVFLAGP
# LOADTIME
# SELECTMU
# PRECSET
# S34/35.1
# MAINRTNE
P39 TC BANKCALL
CADR AVFLAGA # THIS VEHICLE ACTIVE
EXTEND
DCA ATIGINC
TC P39/P79A
P79 TC BANKCALL
CADR AVFLAGP # OTHER VEHICLE ACTIVE
EXTEND
DCA PTIGINC
P39/P79A DXCH KT # TIME TO PREPARE FOR BURN
TC BANKCALL
CADR P20FLGON # SET UPDATFLG, TRACKFLG
TC INTPRET
# Page 729
SET CALL
P39/79SW
SELECTMU # SELECT MU, CLEAR FINALFLG, GO TO VN1645
P39/P79B RTB DAD
LOADTIME
KT
STORE TIG # TIG = T (PRESENT) + PREPARATION TIME
STCALL TDEC1 # PRECISION UPDATE ACTIVE AND PASSIVE
PRECSET # VEHICLES TO TIG
CALL
S34/35.1 # GET UNIT NORMAL
DLOAD GOTO
TARGTIME
MAINRTNE # CALCULATE DELTA V AND DELTA V (LV)
# .... PREC/TT ....
#
# SUBROUTINES USED
#
# PRECSET
# TIMETHET
# S34/35.1
PREC/TT STQ DLOAD
RTRN
TIG
STCALL TDEC1 # PRECISION UPDATE ACTIVE AND PASSIVE
PRECSET # VEHICLES TO TIG
VLOAD VSR*
RPASS3
0,2
STODL RVEC
CENTANG
PUSH COS
STODL CSTH
SIN SET
RVSW
STOVL SNTH
VPASS3
VSR*
0,2
STCALL VVEC # GET TRANSFER TIME BASED ON CENTANG OF
TIMETHET # PASSIVE VEHICLE
CALL
S34/35.1 # GET UNIT NORMAL
DLOAD GOTO
T
RTRN
# .... INTRPVP ....
#
# SUBROUTINES USED
#
# CSMPREC
# Page 730
# LEMPREC
INTRPVP STQ BOFF # PRECISION UPDATE PASSIVE VEHICLE TO
RTRN # TDEC1
AVFLAG
OTHERV
CALL
CSMPREC
GOTO
RTRN
OTHERV CALL
LEMPREC
GOTO
RTRN
# .... VNDSPLY ....
#
# SUBROUTINES USED
#
# BANKCALL
# GOFLASH
# GOTOP00H
VNDSPLY EXTEND # FLASH DISPLAY
QXCH RTRN
TS VERBNOUN
CA VERBNOUN
TCR BANKCALL
CADR GOFLASH
TCF GOTOP00H # TERMINATE
TC RTRN # PROCEED
TCF -5 # RECYCLE
V06N33SR VN 0633
V06N55SR VN 0655
V04N06SR VN 0406
V06N57SR VN 0657
V06N34SR VN 0634
V06N58SR VN 0658
V06N81SR VN 0681
DECTWO OCT 2
# *** END OF KISSING .050 ***

View File

@ -0,0 +1,125 @@
# Copyright: Public domain.
# Filename: SYSTEM_TEST_STANDARD_LEAD_INS.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: 370-372
# 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 370
EBANK= XSM
BANK 33
SETLOC E/PROG
BANK
COUNT* $$/P07
# SPECIAL PROGRAMS TO EASE THE PANGS OF ERASABLE MEMORY PROGRAMS.
#
# E/BKCALL FOR DOING BANKCALLS FROM AND RETURNING TO ERASABLE.
#
# THIS ROUTINE IS CALLABLE FROM ERASABLE OR FIXED. LIKE BANKCALL, HOWEVER, SWITCHING BETWEEN S3 AND S4
# IS NOT POSSIBLE.
#
# THE CALLING SEQUENCE IS
#
# TC BANKCALL
# CADR E/BKCALL
# CADR ROUTINE # WHERE TO WANT TO GO IN FIXED.
# RETURN HERE FROM DISPLAY TERMINATE, BAD STALL OR TC Q.
# RETURN HERE FROM DISPLAY PROCEED OR GOOD RETURN FROM STALL.
# RETURN HERE FROM DISPLAY ENTER OR RECYCLE.
#
# THIS ROUTINE REQUIRES TWO ERASABLES (EBUF2, +1) IN UNSWITCHED WHICH ARE UNSHARED BY INTERRUPTS AND
# OTHER EMEMORY PROGRAMS.
#
# A + L ARE PRESERVED THROUGH BANKCALL AND E/BKCALL.
E/BKCALL DXCH BUF2 # SAVE A,L AND GET DP RETURN
DXCH EBUF2 # SAVE DP RETURN.
INCR EBUF2 # RETURN +1 BECAUSE DOUBLE CADR.
CA BBANK
MASK LOW10 # GET CURRENT EBANK. (SBANK SOMEDAY)
ADS EBUF2 +1 # FORM BBCON. (WAS FBANK)
NDX EBUF2
CA 0 -1 # GET CADR OF ROUTINE.
TC SWCALL # GO TO ROUTINE, SETTING Q TO SWRETURN
# AND RESTORING A + L.
TC +4 # TX Q, V34, OR BAD STALL RETURN.
TC +2 # PROCEED OR GOOD STALL RETURN.
INCR EBUF2 # ENTER OR RECYCLE RETURN
INCR EBUF2
E/SWITCH DXCH EBUF2
DTCB
# Page 371
# E/CALL FOR CALLING A FIXED MEMORY INTERPRETIVE SUBROUTINE FROM ERASABLE AND RETURNING TO ERASABLE.
#
# THE CALLING SEQUENCE IS...
#
# RTB
# E/CALL
# CADR ROUTINE # THE INTERPRETIVE SUBROUTINE YOU WANT
# # RETURNS HERE IN INTERPRETIVE.
E/CALL LXCH LOC # ADRES -1 OF CADR.
INDEX L
CA L # CADR IN A.
INCR L
INCR L # RETURN ADRES IN L.
DXCH EBUF2 # STORE CADR AND RETURN
TC INTPRET
CALL
EBUF2 # INDIRECTLY EXECUTE ROUTING. IT MUST
EXIT # LEAVE VIA RVQ OR EQUIVALENT.
LXCH EBUF2 +1 # PICK UP RETURN.
TCF INTPRET +2 # SET LOC AND RETURN TO CALLER.
# Page 372
# E/JOBWAK FOR WAKING UP ERASABLE MEMORY JOBS.
#
# THIS ROUTINE MUST BE CALLED IN INTERRUPT OR WITH INTERRUPTS INHIBITED.
#
# THE CALLING SEQUENCE IS
#
# INHINT
# ...
# CA WAKEADR # ADDRESS OF SLEEPING JOB
# TC IBNKCALL
# CADR E/JOBWAK
# ... # RETURNS HERE
# RELINT # IF YOU DID AND INHINT
BANK 33
SETLOC E/PROG
BANK
COUNT* $$/P07
E/JOBWAK TC JOBWAKE # ARRIVE WITH ADRES IN A.
CS BIT11
NDX LOCCTR
ADS LOC # KNOCK FIXED MEMORY BIT OUT OF ADRES.
TC RUPTREG3 # RETURN

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,347 @@
# Copyright: Public domain.
# Filename: TAGS_FOR_RELATIVE_SETLOC.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: 028-037
# 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 28
# TAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS
# COUNT BANKSUM
# MODULE 1 CONTAINS BANKS 0 THROUGH 5
BLOCK 02
RADARFF EQUALS
FFTAG1 EQUALS
FFTAG2 EQUALS
FFTAG3 EQUALS
FFTAG4 EQUALS
FFTAG7 EQUALS
FFTAG8 EQUALS
FFTAG9 EQUALS
FFTAG10 EQUALS
FFTAG11 EQUALS
FFTAG12 EQUALS
FFTAG13 EQUALS
BNKSUM 02
BLOCK 03
FFTAG5 EQUALS
FFTAG6 EQUALS
BNKSUM 03
BANK 00
DLAYJOB EQUALS
BNKSUM 00
BANK 01
RESTART EQUALS
LOADDAP1 EQUALS
BNKSUM 01
BANK 04
R02 EQUALS
VERB37 EQUALS
PINBALL4 EQUALS
CONICS1 EQUALS
KEYRUPT EQUALS
R36LM EQUALS
UPDATE2 EQUALS
E/PROG EQUALS
AOTMARK2 EQUALS
BNKSUM 04
# Page 29
BANK 05
FRANDRES EQUALS
DOWNTELM EQUALS
ABORTS1 EQUALS
EPHEM1 EQUALS
ASENT3 EQUALS
BNKSUM 05
# MODULE 2 CONTAINS BANKS 6 THROUGH 13
BANK 06
IMUCOMP EQUALS
T4RUP EQUALS
RCSMONT EQUALS
MIDDGIM EQUALS
EARTHLOC EQUALS
BNKSUM 06
BANK 07
AOTMARK1 EQUALS
MODESW EQUALS
ASENT2 EQUALS
BNKSUM 07
BANK 10
RTBCODES EQUALS
DISPLAYS EQUALS
PHASETAB EQUALS
FLESHLOC EQUALS
SLCTMU EQUALS
BNKSUM 10
BANK 11
ORBITAL EQUALS
F2DPS*11 EQUALS
INTVEL EQUALS
BNKSUM 11
BANK 12
CONICS EQUALS
ORBITAL1 EQUALS
# Page 30
INTPRET2 EQUALS
BNKSUM 12
BANK 13
LATLONG EQUALS
INTINIT EQUALS
LEMGEOM EQUALS
P76LOC EQUALS
ORBITAL2 EQUALS
ABTFLGS EQUALS
BNKSUM 13
# Page 31
# MODULE 3 CONTAINS BANKS 14 THROUGH 21
BANK 14
P50S1 EQUALS
STARTAB EQUALS
ASENT4 EQUALS
BNKSUM 14
BANK 15
P50S EQUALS
EPHEM EQUALS
BNKSUM 15
BANK 16
DAPS1 EQUALS
BNKSUM 16
BANK 17
DAPS2 EQUALS
P40S3 EQUALS
BNKSUM 17
BANK 20
DAPS3 EQUALS
LOADDAP EQUALS
RODTRAP EQUALS
BNKSUM 20
BANK 21
DAPS4 EQUALS
R10 EQUALS
R11 EQUALS
BNKSUM 21
# Page 32
# MODULE 4 CONTAINS BANKS 22 THROUGH 27
BANK 22
KALCMON1 EQUALS
KALCMON2 EQUALS
R30LOC EQUALS
RENDEZ EQUALS
SERV2 EQUALS
LANDCNST EQUALS
BNKSUM 22
BANK 23
POWFLITE EQUALS
POWFLIT1 EQUALS
INFLIGHT EQUALS
APOPERI EQUALS
R61 EQUALS
R62 EQUALS
INTPRET1 EQUALS
MEASINC EQUALS
MEASINC1 EQUALS
EXTVB1 EQUALS
P12A EQUALS
NORMLIZ EQUALS
ASENT7 EQUALS
BNKSUM 23
BANK 24
PLANTIN EQUALS
P20S EQUALS
BNKSUM 24
BANK 25
P20S1 EQUALS
P20S2 EQUALS
RADARUPT EQUALS
RRLEADIN EQUALS
R29S1 EQUALS
PLANTIN3 EQUALS
BNKSUM 25
BANK 26
# Page 33
P20S3 EQUALS
BAWLANGS EQUALS
MANUVER EQUALS
MANUVER1 EQUALS
PLANTIN1 EQUALS
PLANTIN2 EQUALS
BNKSUM 26
BANK 27
TOF-FF EQUALS
TOF-FF1 EQUALS
P40S1 EQUALS
VECPT EQUALS
ASENT1 EQUALS
SERV3 EQUALS
BNKSUM 27
# Page 34
# MODULE 5 CONTAINS BANKS 30 THROUGH 35
BANK 30
LOWSUPER EQUALS
P12 EQUALS
ASENT EQUALS
FCDUW EQUALS
FLOGSUB EQUALS
VB67A EQUALS
ASENT5 EQUALS
BNKSUM 30
BANK 31
FTHROT EQUALS
F2DPS*31 EQUALS
VB67 EQUALS
BNKSUM 31
BANK 32
P20S4 EQUALS
F2DPS*32 EQUALS
ABORTS EQUALS
LRS22 EQUALS
P66LOC EQUALS
R47 EQUALS
SERV EQUALS
BNKSUM 32
BANK 33
SERVICES EQUALS
R29/SERV EQUALS
ASENT6 EQUALS
BNKSUM 33
BANK 34
STBLEORB EQUALS
P30S1 EQUALS
CSI/CDH1 EQUALS
ASCFILT EQUALS
R12STUFF EQUALS
SERV4 EQUALS
BNKSUM 34
# Page 35
BANK 35
CSI/CDH EQUALS
P30S EQUALS
GLM EQUALS
P40S2 EQUALS
BNKSUM 35
# Page 36
# MODULE 6 CONTAINS BANKS 36 THROUGH 43
BANK 36
P40S EQUALS
BNKSUM 36
BANK 37
P05P06 EQUALS
IMU2 EQUALS
IMU4 EQUALS
R31 EQUALS
IMUSUPER EQUALS
SERV1 EQUALS
BNKSUM 37
BANK 40
PINBALL1 EQUALS
SELFSUPR EQUALS
PINSUPER EQUALS
R31LOC EQUALS
BNKSUM 40
BANK 41
PINBALL2 EQUALS
BNKSUM 41
BANK 42
SBAND EQUALS
PINBALL3 EQUALS
BNKSUM 42
BANK 43
EXTVERBS EQUALS
SELFCHEC EQUALS
BNKSUM 43
# Page 37
HI6ZEROS EQUALS ZEROVECS # ZERO VECTOR ALWAYS IN HIGH MEMORY
LO6ZEROS EQUALS ZEROVEC # ZERO VECTOR ALWAYS IN LOW MEMORY
HIDPHALF EQUALS UNITX
LODPHALF EQUALS XUNIT
HIDP1/4 EQUALS DP1/4TH
LODP1/4 EQUALS D1/4 # 2DEC .25
HIUNITX EQUALS UNITX
HIUNITY EQUALS UNITY
HIUNITZ EQUALS UNITZ
LOUNITX EQUALS XUNIT # 2DEC .5
LOUNITY EQUALS YUNIT # 2DEC 0
LOUNITZ EQUALS ZUNIT # 2DEC 0
DELRSPL EQUALS SPLRET # COL PGM, ALSO CALLED BY R30 IN LUMINARY.
# ROPE-SPECIFIC ASSIGNS OBVIATING NEED TO CHECK COMPUTER FLAG IN DETERMINING INTEGRATION AREA ENTRIES.
ATOPTHIS EQUALS ATOPLEM
ATOPOTH EQUALS ATOPCSM
OTHPREC EQUALS CSMPREC
MOONTHIS EQUALS LMOONFLG
MOONOTH EQUALS CMOONFLG
MOVATHIS EQUALS MOVEALEM
RMM = LODPMAX
RME = LODPMAX1
THISPREC EQUALS LEMPREC
THISAXIS = UNITZ
NB1NB2 EQUALS THISAXIS # FOR R31
ERASID EQUALS BITS2-10 # DOWNLINK ERASABLE DUMP ID
DELAYNUM EQUALS TWO

View File

@ -0,0 +1,721 @@
# Copyright: Public domain.
# Filename: TIME_OF_FREE_FALL.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: 1268-1283
# Mod history: 2009-05-26 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# 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 1268
# THE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES. THE TFF ROUTINES NEVER
# KNOW WHICH ORIGIN APPLIES. IT IS THE USER WHO KNOWS, AND WHO SUPPLIES RONE, VONE, AND 1/SQRT(MU) AT THE
# APPROPRIATE SCALE LEVEL FOR THE PROPER PRIMARY BODY.
#
# EARTH ORIGIN POSITION -29 METERS
# VELOCITY -7 METERS/CENTISECOND
# 1/SQRT(MU) +17 SQRT(CS SQ/METERS CUBED)
#
# MOON ORIGIN POSITION -27 METERS
# VELOCITY -5 METERS/CENTISECONDS
# 1/SQRT(MU) +14 SQRT(CS SQ/METERS CUBED)
#
# ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE. IN ALL CASES,
# THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28). PROGRAM TFF/CONIC WILL GENERATE VONE/RTMU AND
# LEAVE IT IN VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN.
#
# THE USER MUST STORE THE STATE VECTOR IN RONE, VONE, AND MU IN THE FORM 1/SQRT(MU) IN TFF/RTMU
# AT THE PROPER SCALE BEFORE CALLING TFF/CONIC. SINCE RONE, VONE ARE IN THE EXTENDED VERB STORAGE AREA,
# THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED.
#
# PROGRAMS CALC/TFF AND CALC/TPER ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT
# RADIUS. THIS RESTRICTION CAN BE REMOVED BY A 15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY.
#
# THE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST.
#
# BELOW E: IS USED FOR EARTH ORIGIN SCALE
# M: IS USED FOR MOON ORIGIN SCALE
#
#TFFSW = 119D # BIT1 0 = CALCTFF 1 = CALCTPER
TFFDELQ = 10D # Q2-Q1 E: (-16) M: (-15)
RMAG1 = 12D # ABVAL(RN) M E: (-29) M: (-27)
#RPER = 14D # PERIGEE RADIUS M E: (-29) M: (-27)
TFFQ1 = 14D # R.V / SQRT(MUE) E: (-16) M: (-15)
#SDELF/2 # SIN(THETA) /2
CDELF/2 = 14D # COS(THETA) /2
#RAPO = 16D # APOGEE RADIUS M E: (-29) M: (-27)
NRTERM = 16D # TERMINAL RADIUS M E: (-29+NR)
# M: (-27+NR)
RTERM = 18D # TERMINAL RADIUS M E: (-29) M: (-27)
TFFVSQ = 20D # -(V SQUARED/MU) 1/M E: (20) M: (18)
TFF1/ALF = 22D # SEMI MAJ AXIS M E: (-22-2 NA)
# M: (-20-2 NA)
TFFRTALF = 24D # SQRT(ALFA) E:(10+NA) M: (9+NA)
TFFALFA = 26D # ALFA 1/M E:(26-NR) M: (24-NR)
TFFNP = 28D # SEMI LATUS RECTUM M E: (-38+2 NR)
# M: (-36+2 NR)
TFF/RTMU = 30D # 1/SQRT(MU) E: (17) M: (14)
NRMAG = 32D # PRESENT RADIUS M E: (-29+NR)
# M: (-27+NR)
TFFX = 34D #
TFFTEM = 36D # TEMPORARY
# Page 1269
# REGISTERS S1, S2 ARE UNTOUCED BY ANY TFF SUBROUTINE
# INDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES. THEY ARE ESTAB-
# LISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT
# SUBROUTINES.
# -NR C(X1) = NORM COUNT OF RMAG
# -NA C(X2) = NORM COUNT OF SQRT(ABS(ALFA))
# Page 1270
# SUBROUTINE NAME: TFFCONIC DATE: 01.29.67
# MOD NO: 0 LOG SECTION: TIME OF FREE FALL
# MOD BY: RR BAIRNSFATHER
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD MOON MU.
# MOD NO: 3 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES
#
# FUNCTIONAL DESCRIPTION: THIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF
# SUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA. THE PARAMETERS ARE LISTED UNDER OUTPUT.
# THE EQUATIONS ARE:
# _ __ __
# H = RN*VN ANGULAR MOMENTUM
# _ _
# LCP = H.H / MU SEMI LATUS RECTUM
# __ __
# ALFA = 2/RN - VN.VN / MU RECIPROCAL SEMI-MAJOR AXIS, SIGNED
#
# AND ALFA IS POS FOR ELLIPTIC ORBITS
# 0 FOR PARABOLIC ORBITS
# NEG FOR HYPERBOLIC ORBITS
# SUBROUTINE ALSO COMPUTES AND SAVES RMAG.
#
# CALLING SEQUENCE:
# TFFCONIC EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM
# 1/SQRT(MU). THE PROGRAM WILL SAVE IN TFF/RTMU. THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON
# ORIGIN IS USED. THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE,
# VONE AT PROPER SCALE. THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE
# TFF ROUTINES.
#
# ENTRY POINT TFFCONMU EXPECTS THAT TFF/RTMU IS ALREADY LOADED.
#
# TO SPECIFY MU: DLOAD CALL IF MU ALREADY STORED: CALL
# YOURMU 1/RTMU E:(17) M:(14) TFFCONMU
# TFFCONIC
# PUSHLOC = PDL+0, ARBITRARY IF LEQ 18D
#
# SUBROUTINES CALLED: NONE
#
# NORMAL EXIT MODES: RVQ
#
# ALARMS: NONE
#
# OUTPUT: THE FOLLOWING ARE STORED IN THE PUSH LIST AREA.
# RMAG1 E:(-29) M:(-27) M RN, PRESENT RADIUS LENGTH.
# NRMAG E:(-29+NR) M RMAG, NORMALIZED
# M:(-27+NR)
# X1 -NR, NORM COUNT
# TFFNP E:(-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHTED BY NR. FOR VGAMCALC.
# M:(-36+2NR)
# TFF/RTMU E:(17) M:(14) 1/SQRT(MU)
# TFFVSQ E:(20) M:(18) 1/M -(V SQ/MU): PRESENT VELOCITY, NORMALIZED. FOR VGAMCALC
# TFFALFA E:(26-NR) 1/M ALFA, WEIGHTED BY NR
# M:(24-NR)
# TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED
# M:(9+NA)
# Page 1271
# X2 -NA, NORMCOUNT
# TFF1/ALF E:(-22-2NA) SIGNED SEMI MAJ AXIS, WEIGHTED BY NA
# M:(-20-2NA)
# PUSHLOC AT PDL+0
#
# THE FOLLOWING IS STORED IN GENERAL ERASABLE
# VONE' E:(10) M:(9) V/RT(MU), NORMALIZED VELOCITY
#
# ERASABLE INITIALIZATION REQUIRED:
# RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY CALLER
# VONE E:(-7) M:(-5) M/CS STATE VECTOR LEFT BY CALLER
# TFF/RTMU E:(17) M:(14) 1/RT(CS SQ/M CUBE) IF ENTER VIA TFFCONMU.
#
# DEBRIS: QPRET PDL+0 ... PDL+3
BANK 33
SETLOC TOF-FF
BANK
COUNT* $$/TFF
TFFCONIC STORE TFF/RTMU # 1/SQRT(MU) E:(17) M:(14)
TFFCONMU VLOAD UNIT # COME HERE WITH TFFRTMU LOADED.
RONE # SAVED RN. M E:(-29) M:(-27)
PDDL # UR/2 TO PDL+0, +5
36D # MAGNITUDE
STORE RMAG1 # M E:(-29) M:(-27)
NORM
X1 # -NR
STOVL NRMAG # RMAG M E:(-29+NR) M:(-27+NR)
VONE # SAVED VN. M/CS E:(-7) M:(-5)
VXSC
TFF/RTMU # E:(17) M:(14)
STORE VONE' # VN/SQRT(MU) E:(10) M:(9)
VXSC VXV
NRMAG # E:(-29+NR) M:(-27+NR)
# UR/2 FROM PDL
VSL1 VSQ # BEFORE: E:(-19+NR) M:(-18+NR)
STODL TFFNP # LC P M E:(-38+2NR) M:(-36+2NR)
# SAVE ALSO FOR VGAMCALC
TFF1/4
DDV PDVL # (2/RMAG) 1/M E:(26-NR) M:(24-NR)
NRMAG # RMAG M E:(-29+NR) M:(-27+NR)
VONE' # SAVED VN. E:(10) M:(9)
VSQ DCOMP # KEEP MPAC+2 HONEST FOR SQRT.
STORE TFFVSQ # -(V SQ/MU) E:(20) M:(18)
# SAVE FOR VGAMCALC
SR* DAD
# Page 1272
0 -6,1 # GET -VSQ/MU E:(26-NR) M:(24-NR)
STADR
# 2/RMAG FROM PDL+2
STORE TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR)
SL* PUSH # TEMP SAVE ALFA E:(20) M:(18)
0 -6,1
ABS SQRT # E:(10) M:(9)
NORM
X2 # X2 = -NA
STORE TFFRTALF # SQRT( ABS(ALFA) ) E:(10+NA) M:(9+NA)
DSQ SIGN # NOT SO ACCURATE, BUT OK
# ALFA FROM PDL+2 E:(20) M:(18)
BZE BDDV # SET 1/ALFA =0, TO SHOW SMALL ALFA
+2
TFF1/4
+2 STORE TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
DUMPCNIC RVQ
# 39 W
# Page 1273
# SUBROUTINE NAME: TFFRP/RA DATE: 01.17.67
# MOD NO: 0 LOG SECTION: TIME OF FREE FALL
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 11 APR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES
# ALSO IMPROVE ACCURACY OF RAPO.
#
# FUNCTIONAL DESCRIPTION: USED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO
# APOGEE RADIUS FOR A GENERAL CONIC.
# PROGRAM GIVES PERIGEE RADIUS AS APOGEE RADIUS IS GIVEN BY
# RP = P/(1+E) RA = (1+E) / ALFA
# WHERE 2
# E = 1 - P ALFA
# IF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE
# 1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA
# 2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA
# 3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE.
#
# THIS SUBROUTINE REQUIRED THE SIGNED RECIPROCAL SEMI MAJ AXIS, ALFA, AND SEMI-LATUS RECTUM AS DATA.
#
# CALLING SEQUENCE: CALL
# TFFRP/RA
# PUSHLOC = PDL+0, ARBITRARY IF LEQ 10D
# C(MPAC) UNSPECIFIED
#
# SUBROUTINES CALLED: NONE
#
# NORMAL EXIT MODE: RVQ
# IF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT.
# OTHERWISE, RAPO = POSMAX.
#
# ALARMS: NONE
#
# OUTPUT: STORED IN PUSH LIST AREA. SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO TFF/CONIC.
# RPER E:(-29) M:(-27) M PERIGEE RADIUS DESTROYED BY CALCTFF/CALCTPER, TFFTRIG.
# RAPO E:(-29) M:(-27) M APOGEE RADIUS WILL BE DESTROYED BY CALCTFF/CALCTPER
# PUSHLOC AT PDL+0
#
# ERASABLE INITIALIZATION REQUIRED:
# TFFALFA E:(26-NR) M 1/SEMI MAJ AXIS LEFT BY TFFCONIC
# M:(24-NR)
# TFFNP E:(-38+2NR) M LC P, SEMI LATUS RECTUM LEFT BY TFFCONIC
# M:(-36+2NR)
# X1 -NR, NORM COUNT OF RMAG LEFT BY TFFCONIC
# X2 -NA, NORM COUNT OF ALFA LEFT BY TFFCONIC
#
# DEBRIS: QPRET, PDL+0 ... PDL+1
# Page 1274
RAPO = 16D # APOGEE RADIUS M E:(-29) M:(-27)
RPER = 14D # PERIGEE RADIUS M E:(-29) M:(-27)
TFFRP/RA DLOAD DMP
TFFALFA # ALFA 1/M E:(26-NR) M:(24-NR)
TFFNP # LC P M E:(-38+2NR) M:(-36+2NR)
SR* DCOMP # ALFA P (-12+NR)
0 -8D,1 # ALFA P (-4)
DAD ABS # (DCOMP GIVES VALID TP RESULT FOR SQRT)
# (ABS PROTECTS SQRT IF E IS VERY NEAR 0)
DP2(-4)
SQRT DAD # E SQ = (1- P ALFA) (-4)
TFF1/4
PUSH BDDV # (1+E) (-2) TO PDL+0
TFFNP # LCP M E:(-38+2NR) M:(-36+2NR)
SR* SR* # (DOES SR THEN SL TO AVOID OVFL)
0,1 # X1=-NR
0 -7,1 # (EFFECTIVE SL)
STODL RPER # PERIGEE RADIUS M E:(-29) M:(-27)
# (1+E) (-2) FROM PDL+0
DMP BOVB
TFF1/ALF # E:(-22-2NA) M:(-20-2NA)
TCDANZIG # CLEAR OVFIND, IF ON.
BZE SL*
MAXRA # SET POSMAX IF ALFA=0
0 -5,2 # -5+NA
SL* BOV
0,2
MAXRA # SET POSMAX IF OVFL.
BPL # CONTINUE WITH VALID RAPO.
+3
MAXRA DLOAD # RAPO CALC IS NOT VALID. SET RAPO =
NEARONE # POSMAX AS A TAG.
+3 STORE RAPO # APOGEE RADIUS M E:(-29) M:(-27)
DUMPRPRA RVQ
# 30 W
# Page 1275
# SUBROUTINE NAME: CALCTPER / CALCTFF DATE: 01.29.67
# MOD NO: 0 LOG SECTION: TIME OF FREE FALL
# MOD BY: RR BAIRNSFATHER
# MOD NO: 1 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 67
# MOD NO: 2 MOD BY: RR BAIRNSFATHER DATE: 14 APR 67
# MOD BY: 3 MOD BY: RR BAIRNSFATHER DATE: 8 JUL 67 NEAR EARTH MUE AND NEG TFF (GONEPAST)
# MOD BY: 4 MOD BY: RR BAIRNSFATHER DATE: 21 NOV 67 ADD VARIABLE MU.
# MOD BY: 5 MOD BY: RR BAIRNSFATHER DATE: 21 MAR 68 ACCEPT DIFFERENT EARTH/MOON SCALES
#
# FUNCTIONAL DESCRIPTION: PROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION RN AND
# VELOCITY VN TO A RADIUS LENGTH SPECIFIED BY RTERM, SUPPLIED BY THE USER. THE POSITION VECTOR
# RN MAY BE ON EITHER SIDE OF THE CONIC, BUT RTERM IS CONSIDERED ON THE INBOUND SIDE.
# THE EQUATIONS ARE:
#
# Q2 = -SQRT(RTERM (2-RTERM ALFA) - LCP) (INBOUND SIDE) LEQ +- LCE/SQRT(ALFA)
# __ __
# Q1 = RN.VN / SQRT(MU) LEQ +- LCE/SQRT(ALFA)
#
# Z = NUM / DEN LEQ +- 1/SQRT(ALFA)
#
# WHERE, IF INBOUND
# NUM = RTERM -RN LEQ +- 2 LCE/ALFA
# DEN = Q2+Q1 LEQ +- 2 LCE/SQRT(ALFA)
#
# AND, IF OUTBOUND
# NUM = Q2-Q1 LEQ +- 2 LCE/SQRT(ALFA)
# DEN = 2 - ALFA (RTERM + RN). LEQ +- 2 LCE
#
# IF ALFA ZZ < 1.0 (FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG)
# THEN X = ALFA Z Z
# AND TFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU)
# EXCEPT IF ALFA PNZ, AND IF TFF NEG,
# THEN TFF = 2 PI /(ALFA SQRT(ALFA)) + TFF
# OR IF ALFA ZZ GEQ 1.0 (FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG)
# THEN X = 1/ALFA Z Z
# AND TFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU)
# WHERE T(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES
# 2 3 2
# 1/3 - X/5 + X /7 - X /8 ... (X < 1.0)
#
# CALLING SEQUENC: TIME TO RTERM TIME TO PERIGEE
# CALL CALL
# CALCTFF CALCTPER
# C(MPAC) = TERMNL RAD M C(MPAC) = PERIGEE RAD M
# FOR EITHER, E:(-29) M:(-27)
# FOR EITHER, PUSHLOC = PDL+0, ARBITRARY IF LEQ 8D.
# Page 1276
#
# SUBROUTINES CALLED: T(X), VIA RTB
#
# NORMAL EXIT MODE: RVQ
# HOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC. USER MUST STORE.
# A. TFF = FLIGHT TIME. NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD.
# B. (THIS OPTION IS NO LONGER USED.)
# C. TFF = POSMAX. THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO
# THE SPECIFIED ALTITUDE. ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA.
#
# OUTPUT: C(MPAC) (-28) CS TIME OF FLIGHT, OR TIME TO PERIGEE
# TFFX (0) X LEFT FOR ENTRY DISPLAY TFF ROUTINES
# NRTERM E:(-29+NR) M RTERM, WEIGHTED BY NR LEFT FOR ENTRY DISPLAY TFF ROUTINES
# M:(-27+NR)
# TFFTEM E:(-59+2NR) LCP Z Z SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES
# M:(-55+2NR) LCP /ALFA SGN(SDELF) LEFT FOR ENTRY DISPLAY TFF ROUTINES
# NOTE: TFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:.
# RMAG1 E:(-29) M:(-27) PDL 12 NOT TOUCHED.
# TFFQ1 E:(-16) M:(-15) PDL 14D
# TFFDELQ E:(-16) M:(-15) PDL 10D
# PUSHLOC AT PDL+0
#
# ERASABLE INITIALIZATION REQUIRED:
# RONE E:(-29) M:(-27) M STATE VECTOR LEFT BY USER
# VONE' E:(+10) M:(+9) VN/SQRT(NU) LEFT BY TFF/CONIC
# RMAG1 E:(-29) M:(-27) PRESENT RADIUS, M LEFT BY TFFCONIC
# C(MPAC) E:(-29) M:(-27) RTERM, TERMINAL RADIUS LENGTH, M LEFT BY USER
#
# THE FOLLOWING ARE STORED IN THE PUSH LIST AREA.
# TFF/RTMU E:(17) M:(14) 1/SQRT(MU) LEFT BY TFFCONIC.
# NRMAG E:(-29+NR) M RMAG, NORMALIZED LEFT BY TFFCONIC
# M:(-27+NR)
# X1 -NR, NORM COUNT LEFT BY TFFCONIC
# TFFNP E:(-38+2NR) M LCP, SEMI LATUS RECTUM, WEIGHT NR LEFT BY TFFCONIC
# M:(-36+2N4)
# TFFALFA E:(26-NR) 1/M ALFA, WEIGHT NR LEFT BY TFFCONIC
# M:(24-NR)
# TFFRTALF E:(10+NA) SQRT(ALFA), NORMALIZED LEFT BY TFFCONIC
# M:(9+NA)
# X2 -NA, NORMCOUNT LEFT BY TFFCONIC
# TFF1/ALF E:(-22-2NA) SIGNED SEMI-MAJOR AXIS, WEIGHTED BY NA LEFT BY TFFCONIC
# M:(-20-2NA)
#
# DEBRIS: QPRET, PDL+0 ... PDL+3
# RTERM E:(-29) M(-27) RTERM, TERMINAL RADIUS LENGTH
# RAPO E:(-29) M(-27) PDL 16D (=NRTERM)
# RPER E:(-29) M(-27) PDL 14D (=TFFQ1)
# Page 1277
CALCTPER SETGO # ENTER WITH RPER IN MPAC
TFFSW
+3
CALCTFF CLEAR # ENTER WITH RTERM IN MPAC
TFFSW
+3 STORE RTERM # E:(-29) M:(-27)
SL*
0,1 # X1=-NR
STORE NRTERM # RTERM E:(-29+NR) M:(-27+NR)
DMP BDSU
TFFALFA # ALFA E:(26-NR) M:(24-NR)
TFF1/4
PUSH DMP # (2-ALFA RTERM) (-3) TO PDL+0
NRTERM # E:(-29+NR) M:(-27+NR)
PDDL SR* # RTERM(2-ALFA RTERM) TO PDL+2
# E:(-32+NR) M:(-30+NR)
TFFNP # LC P E:(-38+2NR) M:(-36+2NR)
0 -6,1 # X1 = -NR
DCOMP DAD # DUE TO SHIFTS, KEEP PRECISION FOR SQRT
# RTERM(2-ALFA RTERM) FROM PDL +2
# E:(-32+NR) M:(-30+NR)
SR* # LEAVE E:(-32) M:(-30)
0,1 # X1 = -NR
BOFF DLOAD # CHECK TFF /TPER SWITCH
TFFSW
+2 # IF TFF, CONTINUE
TFFZEROS # IF TPER, SET Q2 = 0
+2 BMN SQRT # E:(-16) M:(-15)
MAXTFF1 # NO FREE FALL CONIC TO RTERM FROM HERE
# RESET PDL, SET TFF=POSMAX, AND EXIT.
DCOMP BOVB # RT IS ON INBOUND SIDE. ASSURE OVFIND=0
TCDANZIG # ANY PORT IN A STORM.
STOVL TFFTEM # Q2 E:(-16) M:(-15)
VONE' # VN/SQRT(MU) E:(10) M:(9)
DOT SL3
RONE # SAVED RN. E:(-29) M:(-27)
STORE TFFQ1 # Q1, SAVE FOR GONEPAST TEST.
# E:(-16) M:(-15)
BMN BDSU
INBOUND # USE ALTERNATE Z
TFFTEM # Q2 E:(-16) M:(-15)
# OUTBOUND Z CALC CONTINUES HERE
STODL TFFX # NUM=Q2-Q1 E:(-16) M:(-15)
TFFALFA # ALFA E:(26-NR) M:(24-NR)
DMP BDSU
# Page 1278
NRMAG # RMAG E:(-29+NR) M:(-27+NR)
# (2-RTERM ALFA) (-3) FROM PDL+0
SAVEDEN PUSH ABS # DEN TO PDL+0 E:(-3) OR (-16)
# M:(-3) OR (-15)
DAD BOV # INDETERMINANCY TEST
LIM(-22) # =1.0-B(-22)
TFFXTEST # GO IF DEN >/= B(-22)
DLOAD PDDL # SET DEN=0 OTHERWISE
TFFZEROS
# XCH ZERO WITH PDL+0
DLOAD DCOMP
TFFALFA # ALFA E:(26-NR) M:(24-NR)
BMN DLOAD # FOR TPER: Z INDET AT DELE/2=0 AND 90.
TFFEL1 # ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N
# Z INDET. AT PERIGEE FOR PARAB OR HYPERB.
DUMPTFF1 RVQ # RETURN TFF =0
# INBOUND Z CALC CONTINUES HERE
INBOUND DLOAD # RESET PDL+0
DLOAD DSU # ALTERNATE Z CALC
RTERM # E:(-29) M:(-27)
RMAG1 # E:(-29) M:(-27)
STODL TFFX # NUM=RTERM-RN E:(-29) M:(-27)
TFFTEM # Q2 E:(-16) M:(-15)
DAD GOTO
TFFQ1 # Q1 E:(-16) M:(-15)
SAVEDEN # DEN = Q2+Q1 E:(-16) M:(-15)
TFFXTEST DAD PDDL # (ABS(DEN) TO PDL+2) E:(-3) OR (-16)
# M:(-3) OR (-15)
DP(-22) # RESTORE ABS(DEN) TO MPAC
TFFX # NUM E:(-16) OR (-29) M:(-15) OR (-27)
DMP SR*
TFFRTALF # SQRT(ALFA) E:(10+NA) M:(9+NA)
0 -3,2 # X2=-NA
DDV # C(MPAC) =NUM SQRT(ALFA) E:(-3) OR (-16)
# M:(-3) OR (-15)
# ABS(DEN) FROM PDL+2 E:(-3) OR (-16)
# M:(-3) OR (-15)
DLOAD BOV # (THE DLOAD IS SHARED WITH TFFELL)
TFFX # NUM E:(-16) OR (-29) M:(-15) OR (-27)
TFFELL # USE EQN FOR DELE GEQ 90, LEQ -90
# OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN
DDV STADR
# DEN FROM PDL+0 E:(-3) OR (-16)
# M:(-3) OR (-15)
STORE TFFTEM # Z SAVE FOR SIGN OF SDELF.
# Page 1279
# E:(-13) M:(-12)
PUSH DSQ # Z TO PDL+0
PUSH DMP # Z SQ TO PDL+2 E:(-26) M:(-24)
TFFNP # LC P E:(-38+2NR) M:(-36+NR)
SL SIGN
5
TFFTEM # AFFIX SIGN FOR SDELF (ENTRY DISPLAY)
STODL TFFTEM # P ZSQ E:(-59+2NR) M:(-55+2NR)
# (ARG IS USED IN TFF/TRIG)
# ZSQ FROM PDL+2 E:(-26) M:(-24)
PUSH DMP # RESTORE PUSH LOC
TFFALFA # ALFA E:(26-NR) M:(24-NR)
SL*
0,1 # X1=-NR
STORE TFFX # X
RTB DMP
T(X) # POLY
# ZSQ FROM PDL+2 E:(-26) M:(-24)
SR2 BDSU # 2 ZSQ T(X) E:(-29) M:(-27)
RTERM # RTERM E:(-29) M:(-27)
DAD DMP
RMAG1 # E:(-29) M:(-27)
# Z FROM PDL+0 E:(-13) M:(-12)
SR3 BPL # TFF SQRT(MU) E:(-45) M:(-42)
ENDTFF # (NO PUSH UP)
PUSH SIGN # TFF SQRT(MU) TO PDL+0
TFFQ1 # Q1 FOR GONEPAST TEST
BPL DLOAD # GONE PAST ?
NEGTFF # YES. TFF < 0.
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
DCOMP BPL # ALFA > 0 ?
NEGTFF # NO. TFF IS NEGATIVE.
# CORRECT FOR ORBITAL PERIOD.
DCOMP # YES. CORRECT FOR ORB PERIOD.
DMP DDV
PI/16 # 2 PI (-5)
TFFRTALF # SQRT(ALFA) E:(10+NA) M:(9+NA)
SL* SL*
0 -4,2 # X2=-NA
0 -4,2
SL* DAD
0,2
# TFF SQRT(MU) FROM PDL+0 E:(-45) M:(-42)
ENDTFF DMP BOV # TFF SQRT(MU) IN MPAC E:(-45) M:(-42)
TFF/RTMU # E:(17) M:(14)
MAXTFF # SET POSMAX IN OVFL.
DUMPTFF2 RVQ # RETURN TFF (-28) CS IN MPAC.
# Page 1280
NEGTFF DLOAD
# TFF SQRT(MU) FROM PDL+0, NEGATIVE.
GOTO
ENDTFF
MAXTFF1 DLOAD # RESET PDL
MAXTFF DLOAD RVQ
NEARONE
# TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90.
# NUM FROM TFFX. E:(-16) OR (-29)
# M:(-15) OR (-27)
TFFELL SL2 # NUM E:(-14) OR (-27) M:(-13) OR (-25)
BDDV PUSH # TEMP SAVE D/N IN PDL+0
# DEN FROM PDL+0 E:(-3)/(-16) M:(-3)/(-15)
# N/D TO PDL+0 E:(11) M:(10)
TFFEL1 DLOAD DSU # (ENTER WITH D/N=0 IN PDL+0)
TFFTEM # Q2 E:(-16) M:(-15)
TFFQ1 # Q1 E:(-16) M:(-15)
STODL TFFDELQ # Q2-Q1 E:(-16) M:(-15)
# D/N FROM PDL+0
STADR
STORE TFFTEM # D/N E:(11) M:(10)
DMP SL*
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
0,2 # 1/ALFA Z E:(-11-NA) M:(-10-NA)
PUSH DMP # TO PDL+0
TFFTEM # 1/Z E:(11) M:(10
SL* BOVB
0,2 # X2= -NA
SIGNMPAC # IN CASE X= 1.0, CONTINUE
STORE TFFX # X=1/ALFA ZSQ
RTB DMP
T(X) # POLY
TFFX
SR3 DSU
DP2(-3)
DMP PUSH # 2(X T(X)-1) /Z ALFA E:(-15-NA)
# M:(-14-NA)
# 1/ALFA Z FROM PDL+0 E:(-11-NA)
# M:(-10-NA)
DLOAD DMP # GET SIGN FOR SDELF
TFFTEM # 1/Z E:(11) M:(10)
RMAG1 # E:(-29) M:(-27)
SL2 DAD
TFFQ1 # Q1 E:(-16) M:(-15)
STODL TFFTEM # (Q1+R 1/Z) =SGN OF SDELF E:(-16) M:(-15)
TFFNP # LC P E:(-38+2NR) M:(-36+2NR)
DMP SL* # CALC FOR ARG FOR TFF/TRIG.
# Page 1281
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
1,2 # X2=-NA
SIGN SL*
TFFTEM # AFFIX SIGN FOR SDELF
0,2
STODL TFFTEM # P/ALFA E:(-59+2NR) M:(-55+2NR)
# (ARG FOR USE IN TFF/TRIG)
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
SQRT DMP
PI/16 # PI (-4)
DAD
# 2(XT(X)-1)/Z ALFA FROM PDL E:(-15-NA)
# M:(-14-NA)
SL* DSU
0 -1,2
TFFDELQ # Q2-Q1 E:(-16) M:(-15)
DMP SL*
TFF1/ALF # 1/ALFA E:(-22-2NA) M:(-20-2NA)
0 -3,2
SL* GOTO
0 -4,2
ENDTFF # TFF SQRT(MU) IN MPAC E:(-45) M:(-42)
# Page 1282
# PROGRAM NAME: T(X) DATE: 01.17.67
# MOD NO: 0 LOG SECTION: TIME OF FREE FALL
# MOD BY: RR BAIRNSFATHER
#
# FUNCTIONAL DESCRIPTION: THE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES CALCTFF AND
# CALCTPER TO APPROXIMATE THE SERIES
# 2 3
# 1/3 -X/5 +X /7 -X /9 ...
#
# WHERE X = ALFA Z Z IF ALFA Z Z LEQ 1
# X = 1/(ALFA Z Z) IF ALFA Z Z G 1
#
# ALSO X IS NEG FOR HYPERBOLIC ORBITS
# X = 0 FOR PARABOLIC ORBITS
# X IS POSITIVE FOR ELLIPTIC ORBITS
#
# FOR FLIGHT 278, THE POLYNOMIAL T(X) IS FITTED OVER THE RANGE (0,+1) AND HAS A MAXIMUM
# DEVIATION FROM THE SERIES OF 2 E-5. (T(X) IS A CHEBYCHEV TYPE FIT AND WAS OBTAINED USING
# MAX PROGRAM AUTOCURFIT294RRB AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE (-.08,+1).)
#
# CALLING SEQUENCE: RTB
# T(X)
# C(MPAC) = X
#
# SUBROUTINE CALLED: NONE
#
# NORMAL EXIT MODE: TC TANZIG
#
# ALARMS: NONE
#
# OUTPUT: C(MPAC) = T(X)
#
# ERASABLE INITIALIZATION REQUIRED:
# C(MPAC) = X
#
# DEBRIS: NONE
T(X) TC POLY
DEC 4 # N-1
2DEC 3.333333333 E-1
2DEC* -1.999819135 E-1*
2DEC* 1.418148467 E-1*
2DEC* -1.01310997 E-1*
2DEC* 5.609004986 E-2*
2DEC* -1.536156925 E-2*
ENDT(X) TC DANZIG
TCDANZIG = ENDT(X)
# Page 1283
# TFF CONSTANTS
BANK 32
SETLOC TOF-FF1
BANK
# # NOTE: ADJUSTED MUE FOR NEAR EARTH TRAJ.
#MUE = 3.990815471 E10 # M CUBE/CS SQ
#RTMUE = 1.997702549 E5 B-18* # MODIFIED EARTH MU
#
# # NOTE: ADJUSTED MUE FOR NEAR EARTH TRAJ.
#MUM = 4.902778 E8 # M CUBE/CS SQ
#RTMUM 2DEC* 2.21422176 E4 B-18*
PI/16 2DEC 3.141592653 B-4
LIM(-22) 2OCT 3777737700 # 1.0 -B(-22)
DP(-22) 2OCT 0000000100 # B(-22)
DP2(-3) 2DEC 1 B-3
DP2(-4) 2DEC 1 B-4 # 1/16
# RPAD1 2DEC 6373338 B-29 # M (-29) = 20909901.57 FT
RPAD1 = RPAD
R300K 2DEC 6464778 B-29 # (-29) M
NEARONE 2DEC .999999999
TFFZEROS EQUALS HI6ZEROS
TFF1/4 EQUALS HIDP1/4

View File

@ -0,0 +1,548 @@
# Copyright: Public domain.
# Filename: UPDATE_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: 1386-1396
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
# 2009-06-07 RSB Added an SBANK= to account for incompatibilities
# between YUL and yaYUL.
# 2011-01-06 JL Fixed pseudo-label indentation.
# 2011-05-07 JL Flag SBANK= workaround.
# 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 1386
# PROGRAM NAME: P27
# WRITTEN BY: KILROY/ DE WOLF
#
# MOD NO: 6
# MOD BY: KILROY
# DATE: 01DEC67
#
# LOG SECTION: UPDATE PROGRAM.
#
# FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
# INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
# THE P27 PROGRAM WILL ACCEPT UPDATES
# ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00,
# P02, AND FRESH START FOR THE CSM
#
# CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.
#
# SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
# INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
#
# NORMAL EXIT: TC ENDEXT
#
# ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
#
# RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
# 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
# DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
# NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
# ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
# V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
# 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
# PROTECTED AGAINST RESTARTS.
#
# DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
# UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)
# UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
# COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
# UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
# UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
#
# INPUT:
#
# ENTRY DESCRIPTION
# V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
# IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
# VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
# THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
# Page 1387
# V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
# XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
# XXXXXE IT IS .GE. 3 .AND. .LE. 200.,
# ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
# NEXT BANK.
# SCALING IS SAME AS INTERNAL REGISTERS.
# V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
# AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
# AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
# ... SCALING IS SAME AS INTERNAL REGISTERS.
#
# V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
# INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
# CENTISECONDS SCALED AT (2)28).
# THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
#
# OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
# COMPLEMENT BIT3 OF FLAGWORD7.
#
# ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
# 1. CSM/LM STATE VECTOR UPDATE
# 2. REFSMMAT UPDATE
#
# THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---
#
# 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
# ENTRIES: DATA DEFINITION: SCALE FACTORS:
# V71E CONTIGUOUS BLOCK UPDATE VERB
# 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
# AAAAE ECADR OF `UPSVFLAG'
# XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING
# 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING
# XXXXXEXXXXXE X POSITION
# XXXXXEXXXXXE Y POSITION
# XXXXXEXXXXXE Z POSITION
# XXXXXEXXXXXE X VELOCITY
# XXXXXEXXXXXE Y VELOCITY
# XXXXXEXXXXXE Z VELOCITY
# XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
# V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
#
# 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
# ENTRIES: DATA DEFINITITIONS: SCALE FACTORS:
# Page 1388
# V71E CONTIGUOUS BLOCK UPDATE VERB
# 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
# AAAAE ECADR OF `REFSMMAT'
# XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
# XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
# XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
# XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
# XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
# XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
# XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
# XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
# XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
# V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED
BANK 07
SETLOC EXTVERBS
BANK
EBANK= TEPHEM
COUNT* $$/P27
V70UPDAT CAF UP70 # COMES HERE ON V70E
TCF V73UPDAT +1
V71UPDAT CAF UP71 # COMES HERE ON V71E
TCF V73UPDAT +1
V72UPDAT CAF UP72 # COMES HERE ON V72E
TCF V73UPDAT +1
V73UPDAT CAF UP73 # COMES HERE ON V73E
+1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
# TURN*OPERATOR ERROR* ON AND TERMINATEJOB
CA MODREG # CHECK IF UPDATE ALLOWED
EXTEND # FIRST CHECK FOR MODREG = +0, -0
BZF +3 # (+0 = P00, -0 = FRESHSTART)
UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
CAE MODREG # UPDATE ALLOWED.
CKMDMORE = UPERROR
TS UPOLDMOD # SAVE CURRENT MAJOR MODE
# Page 1389
CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27
TS UPVERB # WHICH EXTENDED VERB CALLED IT.
CAF ONE
TS UPCOUNT # INITIALIZE UPCOUNT TO 1
TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
UP70 EQUALS ZERO
UP71 EQUALS ONE
UP72 EQUALS TWO
UP73 EQUALS THREE
BANK 04
SETLOC UPDATE2
BANK
COUNT* $$/P27
UPPART2 EQUALS # UPDATE PROGRAM -- PART 2
TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
OCT 30000 # PRIORITY SAME AS CHRPRIO
## [WORKAROUND] RSB 2009
SBANK= PINSUPER
## [WORKAROUND]
EBANK= UPBUFF
2CADR UPOUT +1
CAF ONE
TS DNLSTCOD # DOWNLIST
TC NEWMODEX # SET MAJOR MODE = 27
DEC 27
INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
TCF +3 # V70 FIXED (OF COMPONENTS)
TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS
TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS
CA TWO # V73 (AND V70) FIXED
TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
+2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED)
TC BANKCALL # DISPLAY A FLASHING V21N01
# Page 1390
CADR GOXDSPF # TO REQUEST II.
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
TCF OHWELL1 +2
TC CK4V32 # DATA OR V32 RETURN
CS BIT2
AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
EXTEND # .GE. 3 AND .LE. 20D.
BZMF OHWELL1 +2
CS UPBUFF
AD UP21
EXTEND
BZMF OHWELL1 +2
CAE UPBUFF
TS COMPNUMB # SAVE II IN COMPNUMB
# UPBUFF LOADING SEQUENCE
INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED
+2 TS MPAC +2 # PLACE ECADR INTO R3.
+3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
TC BANKCALL # DISPLAY A FLASHING V21N01
CADR GOXDSPF # TO REQUEST DATA.
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
TCF OHWELL2 +3 # V33 PROCEED RETURN
TC CK4V32 # DATA OR V32 RETURN
CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
AD COMPNUMB # THE DATA WE EXPECTED.
EXTEND
BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE
TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA.
# VERIFY SEQUENCE
UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
TS MPAC +2 # IS TO BE STORED INTO R3.
CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
CS UPTEMP
AD COMPNUMB
# Page 1391
AD BIT1
EXTEND
BZMF UPVERIFY # NO
CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX
AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
# CHECK FOR VERB 32 SEQUENCE
CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF'
MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
INDEX Q
TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA
ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
UPLOADNV VN 2101 # VERB 21 NOUN 01
UPVRFYNV VN 2102 # VERB 21 NOUN 02
UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
UPDTPHAS EQUALS FIVE
# PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
INHINT
CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
TS FLAGWRD7
TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
OCT 04026 # DATA STORE IF A RESTART OCCURS.
INHINT # (BECAUSE PHASCHNG DID A RELINT)
CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED.
AD UPVERB # THAT IS, IF IT'S A V70 - V72.
EXTEND # GO TO UPEND73 IF IT'S A V73.
BZMF UPFNDVAC
# VERB 73 BRANCH
# Page 1392
UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT
DCA UPBUFF
DXCH UPBUFF +8D
TC TIMEDIDL
TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT
TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
EBANK= TEPHEM
2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
# TO UPWAKE IF OI IS NOT IN PROGRESS.
UPWAKE EXIT
TC PHASCHNG # RESTART PROTECT (GROUP 6)
OCT 04026
TC UPFLAG # SET INTEGRATION RESTART BIT
ADRES REINTFLG
INHINT
UPPART3 EQUALS
INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
TCF UPEND70 # V70
TCF UPEND71 # V71
TCF UPEND72 # V72
# ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
TIMEDIDL EXTEND
QXCH UPTEMP # SAVE Q FOR RETURN
CAF ZERO # ZERO AND SAVE TIME2,TIME1
ZL
DXCH TIME2
DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
CAF UPDTPHAS # SO
TS L # A
COM # QUICK
DXCH -PHASE6 # PHASCHNG
# Page 1393
TIMEDIDR INHINT
CAF ZERO
ZL # PICK UP INCRMENTER (AND ZERO
TS MPAC +2 # IT IN CASE OF RESTARTS) AND
DXCH UPBUFF +8D # STORE IT
DXCH MPAC # INTO MPAC FOR TPAGREE.
EXTEND
DCA UPBUFF +18D
DAS MPAC # FORM SUM IN MPAC
EXTEND
BZF DELTAOK # TEST FOR OVERFLOW
CAF ZERO
DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
DAS TIME2 # AND TURN ON OPERATOR ERROR
TC PHASCHNG # RESTART PROTECT (GROUP 6)
OCT 04026
TC UPTEMP # GO TO ERROR EXIT
DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
DXCH MPAC
DAS TIME2 # INCREMENT TIME2,TIME1
TC PHASCHNG # RESTART PROTECT (GROUP 6)
OCT 04026
INHINT
INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
TC 1 # NORMAL RETURN
# VERB 71 BRANCH
UPEND71 CAE UPBUFF +1 # SET EBANK
TS EBANK # AND
MASK LOW8 # CALCULATE
TS UPTEMP # S-REG VALUE OF RECEIVING AREA
AD NEG3 # IN THE PROCESS OF
AD COMPNUMB # PERFORMING
EXTEND # THIS UPDATE
BZF STORLP71 # WILL WE
MASK BIT9 # OVERFLOW
CCS A # INTO THE NEXT EBANK....
TCF UPERROUT # YES
CA NEG3 # NO -- CALCULATE NUMBER OF
AD COMPNUMB # WORDS TO BE STORED MINUS ONE
STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
# Page 1394
INDEX A # TAKE NEXT UPDATE WORD FROM
CA UPBUFF +2 # UPBUFF AND
TS L # SAVE IT IN L
CA MPAC # CALCULATE NEXT
AD UPTEMP # RECEIVING ADDRESS
INDEX A
EBANK= 1400
LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
EBANK= TEPHEM
CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
TCF STORLP71 # YES
TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM
ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
# VERB 72 BRANCH
UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
CCS A
TCF +2 # YES
TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS
CS BIT2
AD COMPNUMB
LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
INDEX A
CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
LXCH A
CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
TS MPAC
INDEX A
CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
TS EBANK # SET EBANK
MASK LOW8 # ISOLATE RELATIVE ADDRESS
INDEX A
EBANK= 1400
LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
EBANK= TEPHEM
CCS MPAC # ARE WE THORUGH THE V72 UPDATE...
TCF LDLOOP72 # NO
# NORMAL FINISH OF P27
UPOUT EQUALS
TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
+1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
TC NEWMODEX +3
CAF ZERO
# Page 1395
TS DNLSTCOD
TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
EXTEND # KILL GROUP 6.
DCA NEG0
DXCH -PHASE6
TC ENDEXT # EXTENDED VERB EXIT
# VERB TO BRANCH
UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
DCS UPBUFF # TIME IN UPBUFF
DXCH UPBUFF +8D
TC TIMEDIDL # DECREMENT AGC CLOCK
TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
EBANK= TEPHEM
EXTEND
DCS UPBUFF # COPY DECREMENTERS FOR
DXCH UPBUFF +10D # RESTART PROTECTION
EXTEND
DCS UPBUFF
DXCH UPBUFF +12D
TC PHASCHNG # RESTART PROTECT (GROUP 6)
OCT 04026
CAF ZERO
ZL
DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
DAS TETCSM
CAF ZERO
ZL
DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
DAS TETLEM
CAF ZERO
ZL
DXCH UPBUFF
DAS TEPHEM +1 # INCREMENT TP TEPHEM
ADS TEPHEM
TC PHASCHNG # RESTART PROTECT (GROUP 6)
OCT 04026
EBANK= UPBUFF
# Page 1396
TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
# ERROR SEQUENCE
UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
+2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
TC ENDEXT # EXTENDED VERB EXIT
# (THE PURPOS OF UPERROUT +2 EXIT IS
# TO PROVIDE AN ERROR EXIT WHICH DOES NOT
# RESET ANY RESTART GROUPS)
# 'UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
UPACTOFF CS BIT3
EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
TC Q

564
Luminary099/WAITLIST.agc Normal file
View File

@ -0,0 +1,564 @@
# Copyright: Public domain.
# Filename: WAITLIST.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: 1117-1132
# Mod history: 2009-05-25 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2011-01-06 JL Fixed pseudo-label indentation.
# 2011-05-07 JL Removed workarounds.
#
# This source code has been transcribed or otherwise adapted from
# digitized images of a hardcopy from the MIT Museum. The digitization
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
# the Museum. Many thanks to both. The images (with suitable reduction
# in storage size and consequent reduction in image quality as well) are
# available online at www.ibiblio.org/apollo. If for some reason you
# find that the images are illegible, contact me at info@sandroid.org
# about getting access to the (much) higher-quality images which Paul
# actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
# 16:27 JULY 14, 1969
# Page 1117
# PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966
# MOD NO -- 2 LOG SECTION -- WAITLIST
# MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5
# MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4
# MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13.
#
# FUNCTIONAL DESCRIPTION --
# PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK),
# WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS
# FOLLOW.
#
# C(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1)
#
# C(LST1) = -(T2-T1)+1
# C(LST1 +1) = -(T3-T2)+1
# C(LST1 +2) = -(T4-T3)+1
# ...
# C(LST1 +6) = -(T8-T7)+1
# C(LST1 +7) = -(T9-T8)+1
#
# C(LST2) = 2CADR OF TASK1
# C(LST2 +2) = 2CADR OF TASK2
# ...
# C(LST2 +14) = 2CADR OF TASK8
# C(LST2 +16) = 2CADR OF TASK9
#
# WARNINGS --
# 1) 1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC)
# 2) 9 TASKS MAXIMUM
# 3) TASKS CALLED UNDER INTERRUPT INHIBITED
# 4) TASKS END BY TC TASKOVER
#
# CALLING SEQUENCE --
# L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START)
# L TC WAITLIST
# L+1 2CADR DESIRED TASK.
# L+2 (MINOR OF 2CADR)
# L+3 RELINT (RETURNS HERE)
#
# TWIDDLE --
# TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN
# SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR,
# Page 1118
# SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT,
# L-1 CA DELTAT
# L TC TWIDDLE
# L+1 ADRES DESIRED TASK
# L+2 RELINT (RETURNS HERE)
#
# NORMAL EXIT MODES --
# AT L+3 OF CALLING SEQUENCE.
#
# ALARM OR ABORT EXIT MODES --
# TC ABORT
# OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS)
#
# ERASABLE INITIALIZATION REQUIRED --
# ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK
# LST1, ..., LST1 +7 = NEG1/2
#
# OUTPUT --
# LST1 AND LST2 UPDATED WTIH NEW TASK AND ASSOCIATED TIME.
#
# DEBRIS --
# CENTRALS -- A,Q,L
# OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK
#
# DETAILED ANALYSIS OF TIMING --
# CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS.
# THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS:
# LET T0 = THE TIME OF THE TC WAITLIST
# LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME)
# LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS)
# LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT
# LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER.
# (Z=0, USUALLY).
# LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR
# THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS*
# *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME.
# IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S
# INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY
# OF OTHER TASKS INHIBITING THE INTERRUPT.
BLOCK 02
# Page 1119
EBANK= LST1 # TASK LISTS IN SWITCHED E BANK.
COUNT* $$/WAIT
TWIDDLE INHINT
TS L # SAVE DELAY TIME IN L
CA POSMAX
ADS Q # CREATING OVERFLOW AND Q-1 IN Q
CA BBANK
EXTEND
ROR SUPERBNK
XCH L
WAITLIST INHINT
XCH Q # SAVE DELTA T IN Q AND RETURN IN
TS WAITEXIT # WAITEXIT.
EXTEND
INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE
DCA 0 # PICK UP 2CADR OF TASK.
-1 TS WAITADR # BBCON WILL REMAIN IN L
DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY.
XCH BBANK
TCF WAIT2
# RETURN TO CALLER AFTER TASK INSERTION:
LVWTLIST DXCH WAITEXIT
AD TWO
DTCB
EBANK= LST1
WAITBB BBCON WAIT2
# RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.
FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER
CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK
INCR Q # IN WHICH THEY WERE CALLED.
# RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.
VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR.
TS WAITADR
CA BBANK # BBANK IS SAVED DURING DELAY.
EXTEND
ROR SUPERBNK # ADD SBANK TO BBCON.
TS L
CAF DELAYEX
TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY.
TCF DLY2
# Page 1120
DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER.
# Page 1121
# ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.
EBANK= LST1
ENDTASK -2CADR SVCT3
SVCT3 CCS FLAGWRD2 # DRIFT FLAG
TCF TASKOVER
TCF TASKOVER
TCF +1
CKIMUSE CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN
TCF SVCT3X # IMUSTALL.
TCF +3
TCF SVCT3X
TCF SVCT3X
+3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY.
TC NOVAC # ENABLE EVERY 81.93 SECONDS
EBANK= NBDX
2CADR NBDONLY
TCF TASKOVER
SVCT3X TC FIXDELAY # DELAY MAX OF 2 TIMES FOR IMUZERO.
DEC 500
TC SVCT3 # CHECK DRIFT FLAG AGAIN.
# Page 1122
# BEGIN TASK INSERTION.
BANK 01
COUNT* $$/WAIT
WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM.
CA Q
EXTEND
BZMF WAITP00H
CS TIME3
AD BIT8 # BIT 8 = OCT 200
CCS A # TEST 200 - C(TIME3). IF POSITIVE,
# IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT
# C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR
# ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.
AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) =
CS A # T - T1 + 1.0 - 201
# NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1
AD OCT40201
AD Q # RESULT = TD - T1 + 1.
CCS A # TEST TD - T1 + 1.
AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH
TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1
NOOP
CS Q
# NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,
# SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E
# SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON-
# CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE.
AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY
AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T)
XCH TIME3
AD NEGMAX
AD Q # 1.0 - DELTAT T NOW COMPLETE.
EXTEND # ZERO INDEX Q.
QXCH 7 # (ZQ)
# Page 1123
WTLST4 XCH LST1
XCH LST1 +1
XCH LST1 +2
XCH LST1 +3
XCH LST1 +4
XCH LST1 +5
XCH LST1 +6
XCH LST1 +7
CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.)
INDEX Q
TCF +1
DXCH LST2
DXCH LST2 +2
DXCH LST2 +4
DXCH LST2 +6
DXCH LST2 +8D
DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD
DXCH LST2 +12D
DXCH LST2 +14D
DXCH LST2 +16D
AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING
# THE LENGTH OF THE LIST.
EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED-
BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES
TCF WTABORT # IT.
# Page 1124
WTLST5 CCS A # TEST TD - T2 + 1
AD LST1 +1
TCF +4
AD ONE
TC WTLST2
OCT 1
+4 CCS A # TEST TD - T3 + 1
AD LST1 +2
TCF +4
AD ONE
TC WTLST2
OCT 2
+4 CCS A # TEST TD - T4 + 1
AD LST1 +3
TCF +4
AD ONE
TC WTLST2
OCT 3
+4 CCS A # TEST TD - T5 + 1
AD LST1 +4
TCF +4
AD ONE
TC WTLST2
OCT 4
+4 CCS A # TEST TD - T6 + 1
AD LST1 +5
TCF +4
AD ONE
TC WTLST2
OCT 5
+4 CCS A # TEST TD - T7 + 1
AD LST1 +6
TCF +4
AD ONE
TC WTLST2
OCT 6
# Page 1125
+4 CCS A # TEST TD - T2 + 1
AD LST1 +7
TCF +4
AD ONE
TC WTLST2
OCT 7
+4 CCS A
WTABORT TC FILLED
NOOP # CAN'T GET HERE
AD ONE
TC WTLST2
OCT 10
OCT40201 OCT 40201
# Page 1126
FILLED DXCH WAITEXIT
TC BAILOUT1 # NO ROOM IN THE INN
OCT 01203
# Page 1127
# THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1.
# N N+1
# (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1)
# N+1
# THE LST1 ENTRY -(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND
# N+1 N N
# THE ENTRY -(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.
# N+1
WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1)
INDEX Q
CAF 0
TS Q # INDEX VALUE INTO Q.
CAF ONE
AD WAITTEMP
INDEX Q # C(A) = -(TD - T ) + 1.
ADS LST1 -1 # N
CS WAITTEMP
INDEX Q
TCF WTLST4
# C(TIME3) = 1.0 - (T1 - T)
#
# C(LST1) = - (T2 - T1) + 1
# C(LST1+1) = - (T3 - T2) + 1
# C(LST1+2) = - (T4 - T3) + 1
# C(LST1+3) = - (T5 - T4) + 1
# C(LST1+4) = - (T6 - T5) + 1
#
# C(LST2) = 2CADR TASK1
# C(LST2+2) = 2CADR TASK2
# C(LST2+4) = 2CADR TASK3
# C(LST2+6) = 2CADR TASK4
# C(LST2+8) = 2CADR TASK5
# C(LST2+10) = 2CADR TASK6
# Page 1128
# ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.
T3RUPT EXTEND
ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND
TS BANKRUPT # SAVE WITH E AND F BANK VALUES.
EXTEND
QXCH QRUPT
T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK.
XCH LST1 +7
XCH LST1 +6
XCH LST1 +5
XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING
XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM
XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE
XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK.
XCH LST1
AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1.
ADS TIME3 # SO T3 WON'T TICK DURING UPDATE.
TS RUPTAGN
CS ZERO
TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW.
EXTEND # DISPATCH TASK.
DCS ENDTASK
DXCH LST2 +16D
DXCH LST2 +14D
DXCH LST2 +12D
DXCH LST2 +10D
DXCH LST2 +8D
DXCH LST2 +6
DXCH LST2 +4
DXCH LST2 +2
DXCH LST2
XCH L
EXTEND
WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR
XCH L # RESTORE TO L FOR DXCH Z.
DTCB
# Page 1129
# RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:
BLOCK 02
COUNT* $$/WAIT
TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME.
CAF WAITBB
TS BBANK
TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE.
CA BANKRUPT
EXTEND
WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DONE
RESUME EXTEND
QXCH QRUPT
NOQRSM CA BANKRUPT
XCH BBANK
NOQBRSM DXCH ARUPT
RELINT
RESUME
# Page 1130
# LONGCALL
# PROGRAM DESCRIPTION DATE -- 17 MARCH 1967
# PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST
# MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100
#
# FUNCTIONAL DESCRIPTION --
# LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK
# IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF
# A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO
# START.
# CALLING SEQUENCE --
# EXTEND
# DCA TIMELOC
# TC LONGCALL
# 2CADR TASKTODO
# NORMAL EXIT MODE --
# 1) TC WAITLIST
# 2) DTCB (TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL)
# 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL)
# ALARM OR ABORT EXIT MODE --
# NONE
# OUTPUT --
# LONGTIME AND LONGTIME+1 = DELTA TIME
# LONGEXIT AND LONGEXIT+1 = RETURN 2CADR
# LONGCADR AND LONGCADR+1 = TASK 2CADR
# A = SINGLE PRECISION TIME FOR WAITLIST
# ERASABLE INITIALIZATION --
# A = MOST SIGNIFICANT PART OF DELTA TIME
# L = LEAST SIGNIFICANT PART OF DELTA TIME
# Q = ADDRESS OF 2CADR TASK VALUE
# DEBRIS --
# A,Q,L
# LONGCADR AND LONGCADR+1
# LONGEXIT AND LONGEXIT+1
# LONGTIME AND LONGTIME+1
# *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERASIBLE **
BLOCK 02
EBANK= LST1
LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME
EXTEND # OBTAIN THE 2CADR
# Page 1131
NDX Q
DCA 0
DXCH LONGCADR
EXTEND # NOW GO TO THE APPROPRIATE SWITCHED BANK
DCA LGCL2CDR # FOR THE REST OF LONGCALL
DTCB
EBANK= LST1
LGCL2CDR 2CADR LNGCALL2
# *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE ***
BANK 01
COUNT* $$/WAIT
LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN
CA TWO # OBTAIN THE RETURN ADDRESS
ADS Q
TS LONGEXIT
CA LONGTIME # CHECK FOR LEGITIMATE DELTA-TIME
CCS A
TCF LONGCYCL # HI-ORDER OK --> ALL IS OK.
TCF +2 # HI-ORDER ZERO --> CHECK LO-ORDER.
TCF LONGP00H # HI-ORDER NEG. --> NEG. DT
+2 CA LONGTIME +1 # CHECK LO-ORDER FOR ZERO OR NEGATIVE.
EXTEND
BZMF LONGP00H # BAD DELTA-TIME. ABORT
# *** WAITLIST TASK LONGCYCL ***
LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25
DCS DPBIT14 # MINUTES OFF OF LONGTIME
DAS LONGTIME
CCS LONGTIME +1 # THE REASONING BEHIND THIS PART IS
TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE
# WORDS MAY NOT BE SIGNED CORRECTED (DP
# BASIC INSTRUCTIONS
# DO NOT SIGN CORRECT) AND THAT WE SUBTRAC-
# TED BIT14 (1 OVER HALF THE POS. VALUE
# REPRESENTABLE IN SINGLE WORD)
NOOP # CAN'T GET HERE *************
TCF +1
CCS LONGTIME
TCF MUCHTIME
DPBIT14 OCT 00000
OCT 20000
# LONGCALL
# Page 1132
LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA T FOR WAITLIST
ADS LONGTIME +1
TC WAITLIST
EBANK= LST1
2CADR GETCADR # THE ENTRY TO OUR LONGCADR
LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS
DXCH LONGEXIT # TO THE CALLER OF LONGCALL
DTCB # THE REST ARE TO TASKOVER
MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES
TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE
EBANK= LST1
2CADR LONGCYCL
TCF LONGRTRN # NOW EXIT PROPERLY
# *** WAITLIST TASK GETCADR ***
GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START
DTCB # AND TRANSFER CONTROL TO IT
TSKOVCDR GENADR TASKOVER
LONGP00H DXCH LONGEXIT
TCF +2
WAITP00H DXCH WAITEXIT
+2 TC P00DOO1
OCT 01204