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