Source Code

059479,000001: # Copyright: Public domain. 059480,000002: # Filename: RTB_OP_CODES.agc 059481,000003: # Purpose: Part of the source code for Luminary 1A build 099. 059482,000004: # It is part of the source code for the Lunar Module's (LM) 059483,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 059484,000006: # Assembler: yaYUL 059485,000007: # Contact: Ron Burkey <info@sandroid.org>. 059486,000008: # Website: www.ibiblio.org/apollo. 059487,000009: # Pages: 1397-1401 059488,000010: # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting 059489,000011: # from the Luminary131/ file of the same 059490,000012: # name, using Luminary099 page images. 059491,000013: 059492,000014: # This source code has been transcribed or otherwise adapted from 059493,000015: # digitized images of a hardcopy from the MIT Museum. The digitization 059494,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 059495,000017: # the Museum. Many thanks to both. The images (with suitable reduction 059496,000018: # in storage size and consequent reduction in image quality as well) are 059497,000019: # available online at www.ibiblio.org/apollo. If for some reason you 059498,000020: # find that the images are illegible, contact me at info@sandroid.org 059499,000021: # about getting access to the (much) higher-quality images which Paul 059500,000022: # actually created. 059501,000023: 059502,000024: # Notations on the hardcopy document read, in part: 059503,000025: 059504,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 059505,000027: # 16:27 JULY 14, 1969 059506,000028: 059507,000029: # Page 1397 059508,000030: 22,3773 BANK 22 059509,000031: 10,2000 SETLOC RTBCODES 059510,000032: 10,2000 BANK 059511,000033: 059512,000034: 10,3573 E5,1664 EBANK= XNB 059513,000035: 10,3573 COUNT* $$/RTB 059514,000036: 059515,000037: # LOAD TIME2, TIME1 INTO MPAC: 059516,000038: 059517,000039: 10,3573 00006 LOADTIME EXTEND 059518,000040: 10,3574 30025 DCA TIME2 059519,000041: 10,3575 16055 TCF SLOAD2 059520,000042: 059521,000043: # CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A 059522,000044: # DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS. 059523,000045: 059524,000046: 10,3576 10154 CDULOGIC CCS MPAC 059525,000047: 10,3577 34755 CAF ZERO 059526,000048: 10,3600 13603 TCF +3 059527,000049: 10,3601 13602 NOOP 059528,000050: 10,3602 44736 CS HALF 059529,000051: 059530,000052: 10,3603 54155 TS MPAC +1 059531,000053: 10,3604 34755 CAF ZERO 059532,000054: 10,3605 56154 XCH MPAC 059533,000055: 10,3606 00006 EXTEND 059534,000056: 10,3607 74736 MP HALF 059535,000057: 10,3610 20155 DAS MPAC 059536,000058: 10,3611 16061 TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION 059537,000059: 059538,000060: # FORCE TP SIGN AGREEMENT IN MPAC: 059539,000061: 059540,000062: 10,3612 07257 SGNAGREE TC TPAGREE 059541,000063: 10,3613 16061 TCF DANZIG 059542,000064: 059543,000065: # CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE 059544,000066: # SCALED IN HALF-REVOLUTIONS. 059545,000067: 059546,000068: 10,3614 03644 1STO2S TC 1TO2SUB 059547,000069: 10,3615 34755 CAF ZERO 059548,000070: 10,3616 54155 TS MPAC +1 059549,000071: 10,3617 16060 TCF NEWMODE 059550,000072: 059551,000073: # DO 1STO2S ON A VECTOR OF ANGLES: 059552,000074: 059553,000075: 10,3620 03644 V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC. 059554,000076: 059555,000077: 10,3621 52162 DXCH MPAC +5 059556,000078: 10,3622 52155 DXCH MPAC 059557,000079: 10,3623 03644 TC 1TO2SUB 059558,000080: # Page 1398 059559,000081: 10,3624 54156 TS MPAC +2 059560,000082: 059561,000083: 10,3625 52160 DXCH MPAC +3 059562,000084: 10,3626 52155 DXCH MPAC 059563,000085: 10,3627 03644 TC 1TO2SUB 059564,000086: 10,3630 54155 TS MPAC +1 059565,000087: 059566,000088: 10,3631 30161 CA MPAC +5 059567,000089: 10,3632 54154 TS MPAC 059568,000090: 059569,000091: 10,3633 34753 TPMODE CAF ONE # MODE IS TP. 059570,000092: 10,3634 16060 TCF NEWMODE 059571,000093: 059572,000094: # V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR. 059573,000095: 059574,000096: 10,3635 03644 2V1STO2S TC 1TO2SUB 059575,000097: 10,3636 52160 DXCH MPAC +3 059576,000098: 10,3637 52155 DXCH MPAC 059577,000099: 10,3640 03644 TC 1TO2SUB 059578,000100: 10,3641 54001 TS L 059579,000101: 10,3642 30157 CA MPAC +3 059580,000102: 10,3643 16055 TCF SLOAD2 059581,000103: 059582,000104: # SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION: 059583,000105: 059584,000106: 10,3644 52155 1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED. 059585,000107: 10,3645 20001 DDOUBL 059586,000108: 10,3646 10000 CCS A 059587,000109: 10,3647 64753 AD ONE 059588,000110: 10,3650 13652 TCF +2 059589,000111: 10,3651 40000 COM # THIS WAS REVERSE OF MSU. 059590,000112: 059591,000113: 10,3652 54154 TS MPAC # AND SKIP ON OVERFLOW. 059592,000114: 10,3653 00002 TC Q 059593,000115: 059594,000116: 10,3654 50000 INDEX A # OVERFLOW UNCORRECT AND IN MSU. 059595,000117: 10,3655 34734 CAF LIMITS 059596,000118: 10,3656 26154 ADS MPAC 059597,000119: 10,3657 00002 TC Q 059598,000120: 059599,000121: # THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL. 059600,000122: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL. 059601,000123: # (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL. 059602,000124: 059603,000125: 10,3660 54142 CDUINC TS TEM2 # 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT 059604,000126: 10,3661 50130 INDEX BUF 059605,000127: 10,3662 10000 CCS 0 # CHANGE 2S COMPL. ANGLE(IN BUF)INTO 1S 059606,000128: 10,3663 64753 AD ONE 059607,000129: 10,3664 13670 TCF +4 059608,000130: 10,3665 64753 AD ONE 059609,000131: # Page 1399 059610,000132: 10,3666 64753 AD ONE # OVEFLOW HERE IF 2S COMPL. IS 180 DEG. 059611,000133: 10,3667 40000 COM 059612,000134: 059613,000135: 10,3670 60142 AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK) 059614,000136: 10,3671 10000 CCS A # BACK TO 2S COMPL. 059615,000137: 10,3672 64753 AD ONE 059616,000138: 10,3673 13675 TCF +2 059617,000139: 10,3674 40000 COM 059618,000140: 10,3675 54142 TS TEM2 # STORE 14BIT QUANTITY WITH PRESENT SIGN 059619,000141: 10,3676 13702 TCF +4 059620,000142: 10,3677 50000 INDEX A # SIGN. 059621,000143: 10,3700 34734 CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000 059622,000144: 10,3701 60142 AD TEM2 059623,000145: 059624,000146: 10,3702 50130 INDEX BUF 059625,000147: 10,3703 54000 TS 0 # STORE NEW ANGLE IN 2S COMPLEMENT. 059626,000148: 10,3704 00002 TC Q 059627,000149: 059628,000150: # Page 1400 059629,000151: # RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1. 059630,000152: 059631,000153: 10,3705 50120 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1 059632,000154: 10,3706 30046 CA X1 059633,000155: 10,3707 04616 TC BANKCALL 059634,000156: 10,3710 17323 CADR IMUPULSE 059635,000157: 10,3711 16061 TCF DANZIG 059636,000158: 059637,000159: # Page 1401 059638,000160: # THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC). 059639,000161: # FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX. 059640,000162: 059641,000163: # ENTRY MAY BE BY EITHER OF THE FOLLOWING: 059642,000164: # 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW: 059643,000165: # ENTRY: BOVB 059644,000166: # SIGNMPAC 059645,000167: # 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC: 059646,000168: # ENTRY: RTB 059647,000169: # SIGNMPAC 059648,000170: # IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE. 059649,000171: 059650,000172: 10,3712 00006 SIGNMPAC EXTEND 059651,000173: 10,3713 34733 DCA DPOSMAX 059652,000174: 10,3714 52155 DXCH MPAC 059653,000175: 10,3715 10000 CCS A 059654,000176: 10,3716 34755 DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS 059655,000177: 10,3717 16057 TCF SLOAD2 +2 059656,000178: 10,3720 13721 TCF +1 059657,000179: 10,3721 00006 EXTEND 059658,000180: 10,3722 44733 DCS DPOSMAX 059659,000181: 10,3723 16055 TCF SLOAD2 059660,000182: 059661,000183: # RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW 059662,000184: # UP WHEN THE VECTOR BEING UNITIZED IS VERY SMALL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO. IF NORMUNIT 059663,000185: # IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNED IN 36D WILL BE TOO LARGE 059664,000186: # BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED ATE 34D WILL BE TOO BIG BY A FACTOR OF 2(26). 059665,000187: 059666,000188: 10,3724 34753 NORMUNX1 CAF ONE 059667,000189: 10,3725 13727 TCF NORMUNIT +1 059668,000190: 10,3726 34755 NORMUNIT CAF ZERO 059669,000191: 10,3727 60120 AD FIXLOC 059670,000192: 10,3730 54156 TS MPAC +2 059671,000193: 10,3731 04616 TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS 059672,000194: 10,3732 01010 CADR VECAGREE 059673,000195: 10,3733 10154 CCS MPAC 059674,000196: 10,3734 13770 TCF NOSHIFT 059675,000197: 10,3735 13737 TCF +2 059676,000198: 10,3736 13770 TCF NOSHIFT 059677,000199: 10,3737 10157 CCS MPAC +3 059678,000200: 10,3740 13770 TCF NOSHIFT 059679,000201: 10,3741 13743 TCF +2 059680,000202: 10,3742 13770 TCF NOSHIFT 059681,000203: 10,3743 10161 CCS MPAC +5 059682,000204: 10,3744 13770 TCF NOSHIFT 059683,000205: 10,3745 13747 TCF +2 059684,000206: 10,3746 13770 TCF NOSHIFT 059685,000207: # Page 1402 059686,000208: 10,3747 30155 CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13 059687,000209: 10,3750 00006 EXTEND 059688,000210: 10,3751 74736 MP BIT14 059689,000211: 10,3752 20155 DAS MPAC # DAS GAINS A LITTLE ACCURACY 059690,000212: 10,3753 30160 CA MPAC +4 059691,000213: 10,3754 00006 EXTEND 059692,000214: 10,3755 74736 MP BIT14 059693,000215: 10,3756 20160 DAS MPAC +3 059694,000216: 10,3757 30162 CA MPAC +6 059695,000217: 10,3760 00006 EXTEND 059696,000218: 10,3761 74736 MP BIT14 059697,000219: 10,3762 20162 DAS MPAC +5 059698,000220: 10,3763 34761 CAF THIRTEEN 059699,000221: 10,3764 50156 INDEX MPAC +2 059700,000222: 10,3765 54045 TS 37D 059701,000223: 10,3766 04635 OFFTUNIT TC POSTJUMP 059702,000224: 10,3767 01024 CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT 059703,000225: 059704,000226: 10,3770 34755 NOSHIFT CAF ZERO 059705,000227: 10,3771 13764 TCF OFFTUNIT -2 059706,000228: 059707,000229: # RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC. 059708,000230: 059709,000231: 10,3772 04616 VECSGNAG TC BANKCALL 059710,000232: 10,3773 01010 CADR VECAGREE 059711,000233: 10,3774 06061 TC DANZIG 059712,000234: 059713,000235: # *** END OF SKIPPER .087 *** 059714,000236: End of include-file RTB_OP_CODES.agc. Parent file is MAIN.agc