Source Code

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