356 lines
7.6 KiB
Plaintext
356 lines
7.6 KiB
Plaintext
![]() |
# Copyright: Public domain.
|
||
|
# Filename: RT8_OP_CODES.agc
|
||
|
# Purpose: Part of the source code for Comanche, build 055. It
|
||
|
# is part of the source code for the Command Module's
|
||
|
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
|
||
|
# Assembler: yaYUL
|
||
|
# Reference: pp. 1508-1516
|
||
|
# Contact: Ron Burkey <info@sandroid.org>
|
||
|
# Website: http://www.ibiblio.org/apollo.
|
||
|
# Mod history: 2009-05-07 RSB Adapted from Colossus249/RT8_OP_CODES.agc
|
||
|
# and page images.
|
||
|
# 2009-05-07 RSB Oops! Left out the entire last page before.
|
||
|
#
|
||
|
# The contents of the "Comanche055" files, in general, are transcribed
|
||
|
# from scanned documents.
|
||
|
#
|
||
|
# Assemble revision 055 of AGC program Comanche by NASA
|
||
|
# 2021113-051. April 1, 1969.
|
||
|
#
|
||
|
# This AGC program shall also be referred to as Colossus 2A
|
||
|
#
|
||
|
# Prepared by
|
||
![]() |
# Massachusetts Institute of Technology
|
||
![]() |
# 75 Cambridge Parkway
|
||
|
# Cambridge, Massachusetts
|
||
|
#
|
||
|
# under NASA contract NAS 9-4065.
|
||
|
#
|
||
|
# Refer directly to the online document mentioned above for further
|
||
|
# information. Please report any errors to info@sandroid.org.
|
||
|
|
||
|
# Page 1508
|
||
|
BANK 22
|
||
|
SETLOC RTBCODES
|
||
|
BANK
|
||
|
|
||
|
EBANK= XNB
|
||
|
COUNT* $$/RTB
|
||
|
|
||
|
# LOAD TIME2, TIME1 INTO MPAC:
|
||
|
|
||
|
LOADTIME EXTEND
|
||
|
DCA TIME2
|
||
|
TCF SLOAD2
|
||
|
|
||
|
# CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
|
||
|
# DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
|
||
|
|
||
|
CDULOGIC CCS MPAC
|
||
|
CAF ZERO
|
||
|
TCF +3
|
||
|
NOOP
|
||
|
CS HALF
|
||
|
|
||
|
TS MPAC +1
|
||
|
CAF ZERO
|
||
|
XCH MPAC
|
||
|
EXTEND
|
||
|
MP HALF
|
||
|
DAS MPAC
|
||
|
TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION
|
||
|
|
||
|
# READ THE PIPS INTO MPAC WITHOUT CHANGING THEM:
|
||
|
|
||
|
READPIPS INHINT
|
||
|
CA PIPAX
|
||
|
TS MPAC
|
||
|
CA PIPAY
|
||
|
TS MPAC +3
|
||
|
CA PIPAZ
|
||
|
RELINT
|
||
|
TS MPAC +5
|
||
|
|
||
|
CAF ZERO
|
||
|
TS MPAC +1
|
||
|
TS MPAC +4
|
||
|
TS MPAC +6
|
||
|
VECMODE TCF VMODE
|
||
|
|
||
|
# FORCE TP SIGN AGREEMENT IN MPAC:
|
||
|
|
||
|
SGNAGREE TC TPAGREE
|
||
|
|
||
|
# Page 1509
|
||
|
|
||
|
TCF DANZIG
|
||
|
|
||
|
# CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
|
||
|
# SCALED IN HALF-REVOLUTIONS.
|
||
|
|
||
|
1STO2S TC 1TO2SUB
|
||
|
CAF ZERO
|
||
|
TS MPAC +1
|
||
|
TCF NEWMODE
|
||
|
|
||
|
# DO 1STO2S ON A VECTOR OF ANGLES:
|
||
|
|
||
|
V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
|
||
|
|
||
|
DXCH MPAC +5
|
||
|
DXCH MPAC
|
||
|
TC 1TO2SUB
|
||
|
TS MPAC +2
|
||
|
|
||
|
DXCH MPAC +3
|
||
|
DXCH MPAC
|
||
|
TC 1TO2SUB
|
||
|
TS MPAC +1
|
||
|
|
||
|
CA MPAC +5
|
||
|
TS MPAC
|
||
|
|
||
|
TPMODE CAF ONE # MODE IS TP.
|
||
|
TCF NEWMODE
|
||
|
|
||
|
# V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.
|
||
|
|
||
|
2V1STO2S TC 1TO2SUB
|
||
|
DXCH MPAC +3
|
||
|
DXCH MPAC
|
||
|
TC 1TO2SUB
|
||
|
TS L
|
||
|
CA MPAC +3
|
||
|
TCF SLOAD2
|
||
|
|
||
|
# SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:
|
||
|
|
||
|
1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
|
||
|
DDOUBL
|
||
|
CCS A
|
||
|
AD ONE
|
||
|
TCF +2
|
||
|
COM # THIS WAS REVERSE OF MSU.
|
||
|
|
||
|
TS MPAC # AND SKIP ON OVERFLOW.
|
||
|
# Page 1510
|
||
|
TC Q
|
||
|
|
||
![]() |
INDEX A # OVERFLOW UNCORRECT AND IN MSU.
|
||
![]() |
CAF LIMITS
|
||
|
ADS MPAC
|
||
|
TC Q
|
||
|
|
||
|
# Page 1511
|
||
|
# SUBROUTINE TO INCREMENT CDUS
|
||
|
|
||
|
INCRCDUS CAF LOCTHETA
|
||
|
TS BUF # PLACE ADRES(THETA) IN BUF.
|
||
|
CAE MPAC # INCREMENT IN 1'S COMPL.
|
||
|
TC CDUINC
|
||
|
|
||
|
INCR BUF
|
||
|
CAE MPAC +3
|
||
|
TC CDUINC
|
||
|
|
||
|
INCR BUF
|
||
|
CAE MPAC +5
|
||
|
TC CDUINC
|
||
|
|
||
|
TCF VECMODE
|
||
|
|
||
|
LOCTHETA ADRES THETAD
|
||
|
|
||
|
# THE FOLLOWING ROUTINE INCREMENTS IN 2'S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1'S COMPL.
|
||
![]() |
# QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2'S COMPL.
|
||
![]() |
# (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
|
||
|
|
||
|
CDUINC TS TEM2 # 1'S COMPL. QUANT. ARRIVES IN ACC. STORE IT
|
||
|
INDEX BUF
|
||
|
CCS 0 # CHANGE 2'S COMPLE. ANGEL (IN BUF) INTO 1'S
|
||
|
AD ONE
|
||
|
TCF +4
|
||
|
AD ONE
|
||
|
AD ONE # OVEFLOW HERE IF 2'S COMPL. IS 180 DEG.
|
||
|
COM
|
||
|
|
||
|
AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
|
||
|
CCS A # BACK TO 2'S COMPL.
|
||
|
AD ONE
|
||
|
TCF +2
|
||
|
COM
|
||
|
TS TEM2 # STORE 14-BIT QUANTITY WITH PRESENT SIGN
|
||
|
TCF +4
|
||
|
INDEX A # SIGN.
|
||
|
CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000
|
||
|
AD TEM2
|
||
|
|
||
|
INDEX BUF
|
||
|
TS 0 # STORE NEW ANGLE IN 2'S COMPLEMENT.
|
||
|
TC Q
|
||
|
|
||
|
# Page 1512
|
||
|
# RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
|
||
|
|
||
|
PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
|
||
|
CA X1
|
||
|
TC BANKCALL
|
||
|
CADR IMUPULSE
|
||
|
TCF DANZIG
|
||
|
|
||
|
# Page 1513
|
||
|
# EACH ROUTINE TAKES A 3X3 MATRIX STORED IN DOUBLE PRECISION IN A FIXED AREA OF ERASABLE MEMORY AND REPLACES IT
|
||
|
# WITH THE TRANSPOSE MATRIX. TRANSP1 USES LOCATIONS XNB+0,+1 THROUGH XNB+16D,+17D AND TRANSP2 USES LOCATIONS
|
||
|
# XNB1+0,+1 THROUGH XNB1+16D,+17D. EACH MATRIX IS STORED BY ROWS.
|
||
|
|
||
|
XNBEB ECADR XNB
|
||
|
XNB1EB ECADR XNB1
|
||
|
|
||
|
EBANK= XNB
|
||
|
|
||
|
TRANSP1 CAF XNBEB
|
||
|
TS EBANK
|
||
|
DXCH XNB +2
|
||
|
DXCH XNB +6
|
||
|
DXCH XNB +2
|
||
|
|
||
|
DXCH XNB +4
|
||
|
DXCH XNB +12D
|
||
|
DXCH XNB +4
|
||
|
|
||
|
DXCH XNB +10D
|
||
|
DXCH XNB +14D
|
||
|
DXCH XNB +10D
|
||
|
TCF DANZIG
|
||
|
EBANK= XNB1
|
||
|
|
||
|
TRANSP2 CAF XNB1EB
|
||
|
TS EBANK
|
||
|
DXCH XNB1 +2
|
||
|
DXCH XNB1 +6
|
||
|
DXCH XNB1 +2
|
||
|
|
||
|
DXCH XNB1 +4
|
||
|
DXCH XNB1 +12D
|
||
|
DXCH XNB1 +4
|
||
|
|
||
|
DXCH XNB1 +10D
|
||
|
DXCH XNB1 +14D
|
||
|
DXCH XNB1 +10D
|
||
|
TCF DANZIG
|
||
|
|
||
|
# Page 1514
|
||
|
# THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).
|
||
|
# FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.
|
||
|
#
|
||
|
# ENTRY MAY BE BY EITHER OF THE FOLLOWING:
|
||
|
# 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:
|
||
|
# ENTRY: BOVB
|
||
|
# SIGNMPAC
|
||
|
# 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:
|
||
|
# ENTRY: RTB
|
||
|
# SIGNMPAC
|
||
|
# IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.
|
||
|
|
||
|
SIGNMPAC EXTEND
|
||
|
DCA DPOSMAX
|
||
|
DXCH MPAC
|
||
|
CCS A
|
||
|
DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS
|
||
|
TCF SLOAD2 +2
|
||
|
TCF +1
|
||
|
EXTEND
|
||
|
DCS DPOSMAX
|
||
|
TCF SLOAD2
|
||
|
|
||
|
# RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW
|
||
![]() |
# UP WHEN THE VECTOR BEING UNITIZED IS VERY 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 RETURNS IN 36D WILL BE TOO LARGE
|
||
![]() |
# BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED AT 34D WILL BE TOO BIG BY A FACTOR OF 2(26).
|
||
![]() |
|
||
|
NORMUNX1 CAF ONE
|
||
|
TCF NORMUNIT +1
|
||
|
NORMUNIT CAF ZERO
|
||
|
AD FIXLOC
|
||
|
TS MPAC +2
|
||
|
TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS
|
||
|
CADR VECAGREE
|
||
|
CCS MPAC
|
||
|
TCF NOSHIFT
|
||
|
TCF +2
|
||
|
TCF NOSHIFT
|
||
|
CCS MPAC +3
|
||
|
TCF NOSHIFT
|
||
|
TCF +2
|
||
|
TCF NOSHIFT
|
||
|
CCS MPAC +5
|
||
|
TCF NOSHIFT
|
||
|
TCF +2
|
||
|
TCF NOSHIFT
|
||
|
# Page 1515
|
||
|
CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13
|
||
|
EXTEND
|
||
|
MP BIT14
|
||
|
DAS MPAC # DAS GAINS A LITTLE ACCURACY
|
||
|
CA MPAC +4
|
||
|
EXTEND
|
||
|
MP BIT14
|
||
|
DAS MPAC +3
|
||
|
CA MPAC +6
|
||
|
EXTEND
|
||
|
MP BIT14
|
||
|
DAS MPAC +5
|
||
|
CAF THIRTEEN
|
||
|
INDEX MPAC +2
|
||
|
TS 37D
|
||
|
OFFTUNIT TC POSTJUMP
|
||
|
CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT
|
||
|
|
||
|
NOSHIFT CAF ZERO
|
||
|
TCF OFFTUNIT -2
|
||
|
|
||
|
# RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC.
|
||
|
|
||
|
VECSGNAG TC BANKCALL
|
||
|
CADR VECAGREE
|
||
|
TC DANZIG
|
||
|
|
||
|
# Page 1516
|
||
|
# MODULE CHANGE FOR NEW LUNAR GRAVITY MODEL
|
||
|
SETLOC MODCHG3
|
||
|
BANK
|
||
|
QUALITY1 BOF DLOAD
|
||
|
MOONFLAG
|
||
|
NBRANCH
|
||
|
URPV
|
||
|
DSQ GOTO
|
||
|
QUALITY2
|
||
|
SETLOC MODCHG2
|
||
|
BANK
|
||
|
QUALITY2 PDDL DSQ # SQUARE INTO 2D, B2
|
||
|
URPV +2 # Y COMPONENT, B1
|
||
|
DSU
|
||
|
DMP VXSC # 5(Y**2-X**2)UR
|
||
|
5/8 # CONSTANT, 5B3
|
||
|
URPV # VECTOR, RESULT MAXIMUM IS 5, SCALING
|
||
|
# HERE B6
|
||
|
VSL3 PDDL # STORE SCALED B3 IN 2D, 4D, 6D FOR XYZ
|
||
|
URPV # X COMPONENT, B1
|
||
|
SR1 DAD # 2 X X COMPONENT FOR B3 SCALING
|
||
|
2D # ADD TO VECTOR X COMPONENT OF ANSWER.
|
||
|
# SAME AS MULTIPLYING BY UNITX. MAX IS 7.
|
||
|
STODL 2D
|
||
|
URPV +2 # Y COMPONENT, B1
|
||
|
SR1 BDSU # 2 X Y COMPONENT FOR B3 SCALING
|
||
|
4D # SUBTRACT FROM VECTOR Y COMPONENT OF
|
||
|
# ANSWER, SAME AS MULTIPLYING BY UNITY.
|
||
|
# MAX IS 7.
|
||
|
STORE 4D # 2D HAS VECTOR, B3.
|
||
|
SLOAD VXSC # MULTIPLY COEFFICIENT TIMES VECTOR IN 2D
|
||
|
E3J22R2M
|
||
|
PDDL RVQ # J22 TERM X R**4 IN 2D, SCALED B61
|
||
|
COSPHI/2 # SAME AS URPV +4, Z COMPONENT
|
||
|
|
||
|
# *** END OF CHIEFTAN.028 ***
|
||
|
|