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