2016-07-07 08:47:26 +00:00
|
|
|
# Copyright: Public domain.
|
|
|
|
# Filename: RTB_OP_CODES.agc
|
|
|
|
# Purpose: Part of the source code for Luminary 1A build 099.
|
|
|
|
# It is part of the source code for the Lunar Module's (LM)
|
|
|
|
# Apollo Guidance Computer (AGC), for Apollo 11.
|
|
|
|
# Assembler: yaYUL
|
|
|
|
# Contact: Ron Burkey <info@sandroid.org>.
|
|
|
|
# Website: www.ibiblio.org/apollo.
|
|
|
|
# Pages: 1397-1401
|
|
|
|
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
|
|
|
|
# from the Luminary131/ file of the same
|
|
|
|
# name, using Luminary099 page images.
|
|
|
|
#
|
|
|
|
# This source code has been transcribed or otherwise adapted from
|
|
|
|
# digitized images of a hardcopy from the MIT Museum. The digitization
|
|
|
|
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
|
|
|
|
# the Museum. Many thanks to both. The images (with suitable reduction
|
|
|
|
# in storage size and consequent reduction in image quality as well) are
|
|
|
|
# available online at www.ibiblio.org/apollo. If for some reason you
|
|
|
|
# find that the images are illegible, contact me at info@sandroid.org
|
|
|
|
# about getting access to the (much) higher-quality images which Paul
|
|
|
|
# actually created.
|
|
|
|
#
|
|
|
|
# Notations on the hardcopy document read, in part:
|
|
|
|
#
|
|
|
|
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
|
|
|
|
# 16:27 JULY 14, 1969
|
|
|
|
|
|
|
|
# Page 1397
|
|
|
|
BANK 22
|
|
|
|
SETLOC RTBCODES
|
|
|
|
BANK
|
|
|
|
|
|
|
|
EBANK= XNB
|
|
|
|
COUNT* $$/RTB
|
|
|
|
|
|
|
|
# LOAD TIME2, TIME1 INTO MPAC:
|
|
|
|
|
|
|
|
LOADTIME EXTEND
|
|
|
|
DCA TIME2
|
|
|
|
TCF SLOAD2
|
|
|
|
|
|
|
|
# CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
|
|
|
|
# DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
|
|
|
|
|
|
|
|
CDULOGIC CCS MPAC
|
|
|
|
CAF ZERO
|
|
|
|
TCF +3
|
|
|
|
NOOP
|
|
|
|
CS HALF
|
|
|
|
|
|
|
|
TS MPAC +1
|
|
|
|
CAF ZERO
|
|
|
|
XCH MPAC
|
|
|
|
EXTEND
|
|
|
|
MP HALF
|
|
|
|
DAS MPAC
|
|
|
|
TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION
|
|
|
|
|
|
|
|
# FORCE TP SIGN AGREEMENT IN MPAC:
|
|
|
|
|
|
|
|
SGNAGREE TC TPAGREE
|
|
|
|
TCF DANZIG
|
|
|
|
|
|
|
|
# CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
|
|
|
|
# SCALED IN HALF-REVOLUTIONS.
|
|
|
|
|
|
|
|
1STO2S TC 1TO2SUB
|
|
|
|
CAF ZERO
|
|
|
|
TS MPAC +1
|
|
|
|
TCF NEWMODE
|
|
|
|
|
|
|
|
# DO 1STO2S ON A VECTOR OF ANGLES:
|
|
|
|
|
|
|
|
V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
|
|
|
|
|
|
|
|
DXCH MPAC +5
|
|
|
|
DXCH MPAC
|
|
|
|
TC 1TO2SUB
|
|
|
|
# Page 1398
|
|
|
|
TS MPAC +2
|
|
|
|
|
|
|
|
DXCH MPAC +3
|
|
|
|
DXCH MPAC
|
|
|
|
TC 1TO2SUB
|
|
|
|
TS MPAC +1
|
|
|
|
|
|
|
|
CA MPAC +5
|
|
|
|
TS MPAC
|
|
|
|
|
|
|
|
TPMODE CAF ONE # MODE IS TP.
|
|
|
|
TCF NEWMODE
|
|
|
|
|
|
|
|
# V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.
|
|
|
|
|
|
|
|
2V1STO2S TC 1TO2SUB
|
|
|
|
DXCH MPAC +3
|
|
|
|
DXCH MPAC
|
|
|
|
TC 1TO2SUB
|
|
|
|
TS L
|
|
|
|
CA MPAC +3
|
|
|
|
TCF SLOAD2
|
|
|
|
|
|
|
|
# SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:
|
|
|
|
|
|
|
|
1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
|
|
|
|
DDOUBL
|
|
|
|
CCS A
|
|
|
|
AD ONE
|
|
|
|
TCF +2
|
|
|
|
COM # THIS WAS REVERSE OF MSU.
|
|
|
|
|
|
|
|
TS MPAC # AND SKIP ON OVERFLOW.
|
|
|
|
TC Q
|
|
|
|
|
2016-07-12 23:52:11 +00:00
|
|
|
INDEX A # OVERFLOW UNCORRECT AND IN MSU.
|
2016-07-07 08:47:26 +00:00
|
|
|
CAF LIMITS
|
|
|
|
ADS MPAC
|
|
|
|
TC Q
|
|
|
|
|
|
|
|
# THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL.
|
2016-07-11 12:35:15 +00:00
|
|
|
# QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL.
|
2016-07-07 08:47:26 +00:00
|
|
|
# (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
|
|
|
|
|
|
|
|
CDUINC TS TEM2 # 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT
|
|
|
|
INDEX BUF
|
|
|
|
CCS 0 # CHANGE 2S COMPL. ANGLE(IN BUF)INTO 1S
|
|
|
|
AD ONE
|
|
|
|
TCF +4
|
|
|
|
AD ONE
|
|
|
|
# Page 1399
|
2016-07-19 20:17:52 +00:00
|
|
|
AD ONE # OVERFLOW HERE IF 2S COMPL. IS 180 DEG.
|
2016-07-07 08:47:26 +00:00
|
|
|
COM
|
|
|
|
|
|
|
|
AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
|
|
|
|
CCS A # BACK TO 2S COMPL.
|
|
|
|
AD ONE
|
|
|
|
TCF +2
|
|
|
|
COM
|
|
|
|
TS TEM2 # STORE 14BIT QUANTITY WITH PRESENT SIGN
|
|
|
|
TCF +4
|
|
|
|
INDEX A # SIGN.
|
|
|
|
CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000
|
|
|
|
AD TEM2
|
|
|
|
|
|
|
|
INDEX BUF
|
|
|
|
TS 0 # STORE NEW ANGLE IN 2S COMPLEMENT.
|
|
|
|
TC Q
|
|
|
|
|
|
|
|
# Page 1400
|
|
|
|
# RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
|
|
|
|
|
|
|
|
PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
|
|
|
|
CA X1
|
|
|
|
TC BANKCALL
|
|
|
|
CADR IMUPULSE
|
|
|
|
TCF DANZIG
|
|
|
|
|
|
|
|
# Page 1401
|
|
|
|
# THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).
|
|
|
|
# FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.
|
|
|
|
#
|
|
|
|
# ENTRY MAY BE BY EITHER OF THE FOLLOWING:
|
|
|
|
# 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:
|
|
|
|
# ENTRY: BOVB
|
|
|
|
# SIGNMPAC
|
|
|
|
# 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:
|
|
|
|
# ENTRY: RTB
|
|
|
|
# SIGNMPAC
|
2016-07-19 20:17:52 +00:00
|
|
|
# IN EITHER CASE, RETURN IS TO THE NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.
|
2016-07-07 08:47:26 +00:00
|
|
|
|
|
|
|
SIGNMPAC EXTEND
|
|
|
|
DCA DPOSMAX
|
|
|
|
DXCH MPAC
|
|
|
|
CCS A
|
|
|
|
DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS
|
|
|
|
TCF SLOAD2 +2
|
|
|
|
TCF +1
|
|
|
|
EXTEND
|
|
|
|
DCS DPOSMAX
|
|
|
|
TCF SLOAD2
|
|
|
|
|
|
|
|
# RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW
|
|
|
|
# UP WHEN THE VECTOR BEING UNITIZED IS VERY SMALL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO. IF NORMUNIT
|
|
|
|
# IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNED IN 36D WILL BE TOO LARGE
|
|
|
|
# BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED ATE 34D WILL BE TOO BIG BY A FACTOR OF 2(26).
|
|
|
|
|
|
|
|
NORMUNX1 CAF ONE
|
|
|
|
TCF NORMUNIT +1
|
|
|
|
NORMUNIT CAF ZERO
|
|
|
|
AD FIXLOC
|
|
|
|
TS MPAC +2
|
|
|
|
TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS
|
|
|
|
CADR VECAGREE
|
|
|
|
CCS MPAC
|
|
|
|
TCF NOSHIFT
|
|
|
|
TCF +2
|
|
|
|
TCF NOSHIFT
|
|
|
|
CCS MPAC +3
|
|
|
|
TCF NOSHIFT
|
|
|
|
TCF +2
|
|
|
|
TCF NOSHIFT
|
|
|
|
CCS MPAC +5
|
|
|
|
TCF NOSHIFT
|
|
|
|
TCF +2
|
|
|
|
TCF NOSHIFT
|
|
|
|
# Page 1402
|
|
|
|
CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13
|
|
|
|
EXTEND
|
|
|
|
MP BIT14
|
|
|
|
DAS MPAC # DAS GAINS A LITTLE ACCURACY
|
|
|
|
CA MPAC +4
|
|
|
|
EXTEND
|
|
|
|
MP BIT14
|
|
|
|
DAS MPAC +3
|
|
|
|
CA MPAC +6
|
|
|
|
EXTEND
|
|
|
|
MP BIT14
|
|
|
|
DAS MPAC +5
|
|
|
|
CAF THIRTEEN
|
|
|
|
INDEX MPAC +2
|
|
|
|
TS 37D
|
|
|
|
OFFTUNIT TC POSTJUMP
|
|
|
|
CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT
|
|
|
|
|
|
|
|
NOSHIFT CAF ZERO
|
|
|
|
TCF OFFTUNIT -2
|
|
|
|
|
|
|
|
# RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC.
|
|
|
|
|
|
|
|
VECSGNAG TC BANKCALL
|
|
|
|
CADR VECAGREE
|
|
|
|
TC DANZIG
|
|
|
|
|
|
|
|
# *** END OF SKIPPER .087 ***
|
|
|
|
|