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