Source Code
057797,000001: # Copyright: Public domain.
057798,000002: # Filename: RTB_OP_CODES.agc
057799,000003: # Purpose: A section of Luminary 1C, revision 131.
057800,000004: # It is part of the source code for the Lunar Module's (LM)
057801,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
057802,000006: # This file is intended to be a faithful transcription, except
057803,000007: # that the code format has been changed to conform to the
057804,000008: # requirements of the yaYUL assembler rather than the
057805,000009: # original YUL assembler.
057806,000010: # Reference: pp. 1394-1399 of 1729.pdf.
057807,000011: # Contact: Ron Burkey <info@sandroid.org>.
057808,000012: # Website: www.ibiblio.org/apollo/index.html
057809,000013: # Mod history: 06/07/03 RSB. Began transcribing.
057810,000014: # 05/14/05 RSB Corrected website references above.
057811,000015:
057812,000016: # Page 1394
057813,000017: 22,3773 BANK 22
057814,000018: 10,2000 SETLOC RTBCODES
057815,000019: 10,2000 BANK
057816,000020:
057817,000021: 10,3574 E5,1664 EBANK= XNB
057818,000022: 10,3574 COUNT* $$/RTB
057819,000023:
057820,000024: # LOAD TIME2, TIME1 INTO MPAC:
057821,000025:
057822,000026: 10,3574 00006 LOADTIME EXTEND
057823,000027: 10,3575 30025 DCA TIME2
057824,000028: 10,3576 16060 TCF SLOAD2
057825,000029:
057826,000030: # CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
057827,000031: # DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
057828,000032:
057829,000033: 10,3577 10154 CDULOGIC CCS MPAC
057830,000034: 10,3600 34755 CAF ZERO
057831,000035: 10,3601 13604 TCF +3
057832,000036: 10,3602 13603 NOOP
057833,000037: 10,3603 44736 CS HALF
057834,000038:
057835,000039: 10,3604 54155 TS MPAC +1
057836,000040: 10,3605 34755 CAF ZERO
057837,000041: 10,3606 56154 XCH MPAC
057838,000042: 10,3607 00006 EXTEND
057839,000043: 10,3610 74736 MP HALF
057840,000044: 10,3611 20155 DAS MPAC
057841,000045: 10,3612 16064 TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION
057842,000046:
057843,000047: # FORCE TP SIGN AGREEMENT IN MPAC:
057844,000048:
057845,000049: 10,3613 07262 SGNAGREE TC TPAGREE
057846,000050: 10,3614 16064 TCF DANZIG
057847,000051:
057848,000052: # CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
057849,000053: # SCALED IN HALF-REVOLUTIONS.
057850,000054:
057851,000055: 10,3615 03645 1STO2S TC 1TO2SUB
057852,000056: 10,3616 34755 CAF ZERO
057853,000057: 10,3617 54155 TS MPAC +1
057854,000058: 10,3620 16063 TCF NEWMODE
057855,000059:
057856,000060: # DO 1STO2S ON A VECTOR OF ANGLES:
057857,000061:
057858,000062: 10,3621 03645 V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
057859,000063:
057860,000064: 10,3622 52162 DXCH MPAC +5
057861,000065: 10,3623 52155 DXCH MPAC
057862,000066: 10,3624 03645 TC 1TO2SUB
057863,000067: # Page 1395
057864,000068: 10,3625 54156 TS MPAC +2
057865,000069:
057866,000070: 10,3626 52160 DXCH MPAC +3
057867,000071: 10,3627 52155 DXCH MPAC
057868,000072: 10,3630 03645 TC 1TO2SUB
057869,000073: 10,3631 54155 TS MPAC +1
057870,000074:
057871,000075: 10,3632 30161 CA MPAC +5
057872,000076: 10,3633 54154 TS MPAC
057873,000077:
057874,000078: 10,3634 34753 TPMODE CAF ONE # MODE IS TP.
057875,000079: 10,3635 16063 TCF NEWMODE
057876,000080:
057877,000081: # V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.
057878,000082:
057879,000083: 10,3636 03645 2V1STO2S TC 1TO2SUB
057880,000084: 10,3637 52160 DXCH MPAC +3
057881,000085: 10,3640 52155 DXCH MPAC
057882,000086: 10,3641 03645 TC 1TO2SUB
057883,000087: 10,3642 54001 TS L
057884,000088: 10,3643 30157 CA MPAC +3
057885,000089: 10,3644 16060 TCF SLOAD2
057886,000090:
057887,000091: # SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:
057888,000092:
057889,000093: 10,3645 52155 1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
057890,000094: 10,3646 20001 DDOUBL
057891,000095: 10,3647 10000 CCS A
057892,000096: 10,3650 64753 AD ONE
057893,000097: 10,3651 13653 TCF +2
057894,000098: 10,3652 40000 COM # THIS WAS REVERSE OF MSU.
057895,000099:
057896,000100: 10,3653 54154 TS MPAC # AND SKIP ON OVERFLOW.
057897,000101: 10,3654 00002 TC Q
057898,000102:
057899,000103: 10,3655 50000 INDEX A # OVERFLOW UNCORRECT AND IN MSU.
057900,000104: 10,3656 34734 CAF LIMITS
057901,000105: 10,3657 26154 ADS MPAC
057902,000106: 10,3660 00002 TC Q
057903,000107:
057904,000108: # THE FOLLOWING ROUTINE INCREMENTS IN 2'S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1'S COMPL.
057905,000109: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2'S COMPL.
057906,000110: # (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
057907,000111:
057908,000112: 10,3661 54142 CDUINC TS TEM2 # 1'S COMPL. QUANT. ARRIVES IN ACC. STORE IT
057909,000113: 10,3662 50130 INDEX BUF
057910,000114: 10,3663 10000 CCS 0 # CHANGE 2'S COMPLE. ANGEL (IN BUF) INTO 1'S
057911,000115: 10,3664 64753 AD ONE
057912,000116: 10,3665 13671 TCF +4
057913,000117: 10,3666 64753 AD ONE
057914,000118: # Page 1396
057915,000119: 10,3667 64753 AD ONE # OVEFLOW HERE IF 2'S COMPL. IS 180 DEG.
057916,000120: 10,3670 40000 COM
057917,000121:
057918,000122: 10,3671 60142 AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
057919,000123: 10,3672 10000 CCS A # BACK TO 2'S COMPL.
057920,000124: 10,3673 64753 AD ONE
057921,000125: 10,3674 13676 TCF +2
057922,000126: 10,3675 40000 COM
057923,000127: 10,3676 54142 TS TEM2 # STORE 14-BIT QUANTITY WITH PRESENT SIGN
057924,000128: 10,3677 13703 TCF +4
057925,000129: 10,3700 50000 INDEX A # SIGN.
057926,000130: 10,3701 34734 CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000
057927,000131: 10,3702 60142 AD TEM2
057928,000132:
057929,000133: 10,3703 50130 INDEX BUF
057930,000134: 10,3704 54000 TS 0 # STORE NEW ANGLE IN 2'S COMPLEMENT.
057931,000135: 10,3705 00002 TC Q
057932,000136:
057933,000137: # Page 1397
057934,000138: # RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
057935,000139:
057936,000140: 10,3706 50120 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
057937,000141: 10,3707 30046 CA X1
057938,000142: 10,3710 04616 TC BANKCALL
057939,000143: 10,3711 17314 CADR IMUPULSE
057940,000144: 10,3712 16064 TCF DANZIG
057941,000145:
057942,000146: # Page 1398
057943,000147: # THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).
057944,000148: # FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.
057945,000149:
057946,000150: # ENTRY MAY BE BY EITHER OF THE FOLLOWING:
057947,000151: # 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:
057948,000152: # ENTRY: BOVB
057949,000153: # SIGNMPAC
057950,000154: # 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:
057951,000155: # ENTRY: RTB
057952,000156: # SIGNMPAC
057953,000157: # IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.
057954,000158:
057955,000159: 10,3713 00006 SIGNMPAC EXTEND
057956,000160: 10,3714 34733 DCA DPOSMAX
057957,000161: 10,3715 52155 DXCH MPAC
057958,000162: 10,3716 10000 CCS A
057959,000163: 10,3717 34755 DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS
057960,000164: 10,3720 16062 TCF SLOAD2 +2
057961,000165: 10,3721 13722 TCF +1
057962,000166: 10,3722 00006 EXTEND
057963,000167: 10,3723 44733 DCS DPOSMAX
057964,000168: 10,3724 16060 TCF SLOAD2
057965,000169:
057966,000170: # RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW
057967,000171: # UP WHEN THE VECTOR BEING UNITIZED IS VERY SAMLL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO. IF NORMUNIT
057968,000172: # IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ERO, THE MAGNITUDE RETURNS IN 36D WILL BE TOO LARGE
057969,000173: # BY A FACTOR OF 2(13) AND THE SQURED MAGNITUDE RETURNED ATE 34D WILL BE TOO BIG BY A FACTOR OF 2(26).
057970,000174:
057971,000175: 10,3725 34753 NORMUNX1 CAF ONE
057972,000176: 10,3726 13730 TCF NORMUNIT +1
057973,000177: 10,3727 34755 NORMUNIT CAF ZERO
057974,000178: 10,3730 60120 AD FIXLOC
057975,000179: 10,3731 54156 TS MPAC +2
057976,000180: 10,3732 04616 TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS
057977,000181: 10,3733 01010 CADR VECAGREE
057978,000182: 10,3734 10154 CCS MPAC
057979,000183: 10,3735 13771 TCF NOSHIFT
057980,000184: 10,3736 13740 TCF +2
057981,000185: 10,3737 13771 TCF NOSHIFT
057982,000186: 10,3740 10157 CCS MPAC +3
057983,000187: 10,3741 13771 TCF NOSHIFT
057984,000188: 10,3742 13744 TCF +2
057985,000189: 10,3743 13771 TCF NOSHIFT
057986,000190: 10,3744 10161 CCS MPAC +5
057987,000191: 10,3745 13771 TCF NOSHIFT
057988,000192: 10,3746 13750 TCF +2
057989,000193: 10,3747 13771 TCF NOSHIFT
057990,000194: # Page 1399
057991,000195: 10,3750 30155 CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13
057992,000196: 10,3751 00006 EXTEND
057993,000197: 10,3752 74736 MP BIT14
057994,000198: 10,3753 20155 DAS MPAC # DAS GAINS A LITTLE ACCURACY
057995,000199: 10,3754 30160 CA MPAC +4
057996,000200: 10,3755 00006 EXTEND
057997,000201: 10,3756 74736 MP BIT14
057998,000202: 10,3757 20160 DAS MPAC +3
057999,000203: 10,3760 30162 CA MPAC +6
058000,000204: 10,3761 00006 EXTEND
058001,000205: 10,3762 74736 MP BIT14
058002,000206: 10,3763 20162 DAS MPAC +5
058003,000207: 10,3764 34761 CAF THIRTEEN
058004,000208: 10,3765 50156 INDEX MPAC +2
058005,000209: 10,3766 54045 TS 37D
058006,000210: 10,3767 04635 OFFTUNIT TC POSTJUMP
058007,000211: 10,3770 01024 CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT
058008,000212:
058009,000213: 10,3771 34755 NOSHIFT CAF ZERO
058010,000214: 10,3772 13765 TCF OFFTUNIT -2
058011,000215:
058012,000216: # RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC.
058013,000217:
058014,000218: 10,3773 04616 VECSGNAG TC BANKCALL
058015,000219: 10,3774 01010 CADR VECAGREE
058016,000220: 10,3775 06064 TC DANZIG
058017,000221:
058018,000222: # *** END OF SKIPPER .101 ***
058019,000223:
058020,000224:
End of include-file RTB_OP_CODES.agc. Parent file is MAIN.agc