Source Code

065301,000001: # Copyright: Public domain. 065302,000002: # Filename: RT8_OP_CODES.agc 065303,000003: # Purpose: Part of the source code for Comanche, build 055. It 065304,000004: # is part of the source code for the Command Module's 065305,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11. 065306,000006: # Assembler: yaYUL 065307,000007: # Reference: pp. 1508-1516 065308,000008: # Contact: Ron Burkey <info@sandroid.org> 065309,000009: # Website: http://www.ibiblio.org/apollo. 065310,000010: # Mod history: 2009-05-07 RSB Adapted from Colossus249/RT8_OP_CODES.agc 065311,000011: # and page images. 065312,000012: # 2009-05-07 RSB Oops! Left out the entire last page before. 065313,000013: 065314,000014: # The contents of the "Comanche055" files, in general, are transcribed 065315,000015: # from scanned documents. 065316,000016: 065317,000017: # Assemble revision 055 of AGC program Comanche by NASA 065318,000018: # 2021113-051. April 1, 1969. 065319,000019: 065320,000020: # This AGC program shall also be referred to as Colossus 2A 065321,000021: 065322,000022: # Prepared by 065323,000023: # Massachussets Institute of Technology 065324,000024: # 75 Cambridge Parkway 065325,000025: # Cambridge, Massachusetts 065326,000026: 065327,000027: # under NASA contract NAS 9-4065. 065328,000028: 065329,000029: # Refer directly to the online document mentioned above for further 065330,000030: # information. Please report any errors to info@sandroid.org. 065331,000031: 065332,000032: # Page 1508 065333,000033: 22,3510 BANK 22 065334,000034: 22,2000 SETLOC RTBCODES 065335,000035: 22,2000 BANK 065336,000036: 065337,000037: 22,3510 E5,1713 EBANK= XNB 065338,000038: 22,3510 COUNT* $$/RTB 065339,000039: 065340,000040: # LOAD TIME2, TIME1 INTO MPAC: 065341,000041: 065342,000042: 22,3510 00006 LOADTIME EXTEND 065343,000043: 22,3511 30025 DCA TIME2 065344,000044: 22,3512 16024 TCF SLOAD2 065345,000045: 065346,000046: # CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A 065347,000047: # DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS. 065348,000048: 065349,000049: 22,3513 10154 CDULOGIC CCS MPAC 065350,000050: 22,3514 35021 CAF ZERO 065351,000051: 22,3515 13520 TCF +3 065352,000052: 22,3516 13517 NOOP 065353,000053: 22,3517 45002 CS HALF 065354,000054: 065355,000055: 22,3520 54155 TS MPAC +1 065356,000056: 22,3521 35021 CAF ZERO 065357,000057: 22,3522 56154 XCH MPAC 065358,000058: 22,3523 00006 EXTEND 065359,000059: 22,3524 75002 MP HALF 065360,000060: 22,3525 20155 DAS MPAC 065361,000061: 22,3526 16030 TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION 065362,000062: 065363,000063: # READ THE PIPS INTO MPAC WITHOUT CHANGING THEM: 065364,000064: 065365,000065: 22,3527 00004 READPIPS INHINT 065366,000066: 22,3530 30037 CA PIPAX 065367,000067: 22,3531 54154 TS MPAC 065368,000068: 22,3532 30040 CA PIPAY 065369,000069: 22,3533 54157 TS MPAC +3 065370,000070: 22,3534 30041 CA PIPAZ 065371,000071: 22,3535 00003 RELINT 065372,000072: 22,3536 54161 TS MPAC +5 065373,000073: 065374,000074: 22,3537 35021 CAF ZERO 065375,000075: 22,3540 54155 TS MPAC +1 065376,000076: 22,3541 54160 TS MPAC +4 065377,000077: 22,3542 54162 TS MPAC +6 065378,000078: 22,3543 16470 VECMODE TCF VMODE 065379,000079: 065380,000080: # FORCE TP SIGN AGREEMENT IN MPAC: 065381,000081: 065382,000082: 22,3544 07226 SGNAGREE TC TPAGREE 065383,000083: 065384,000084: # Page 1509 065385,000085: 065386,000086: 22,3545 16030 TCF DANZIG 065387,000087: 065388,000088: # CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE 065389,000089: # SCALED IN HALF-REVOLUTIONS. 065390,000090: 065391,000091: 22,3546 03576 1STO2S TC 1TO2SUB 065392,000092: 22,3547 35021 CAF ZERO 065393,000093: 22,3550 54155 TS MPAC +1 065394,000094: 22,3551 16027 TCF NEWMODE 065395,000095: 065396,000096: # DO 1STO2S ON A VECTOR OF ANGLES: 065397,000097: 065398,000098: 22,3552 03576 V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC. 065399,000099: 065400,000100: 22,3553 52162 DXCH MPAC +5 065401,000101: 22,3554 52155 DXCH MPAC 065402,000102: 22,3555 03576 TC 1TO2SUB 065403,000103: 22,3556 54156 TS MPAC +2 065404,000104: 065405,000105: 22,3557 52160 DXCH MPAC +3 065406,000106: 22,3560 52155 DXCH MPAC 065407,000107: 22,3561 03576 TC 1TO2SUB 065408,000108: 22,3562 54155 TS MPAC +1 065409,000109: 065410,000110: 22,3563 30161 CA MPAC +5 065411,000111: 22,3564 54154 TS MPAC 065412,000112: 065413,000113: 22,3565 35017 TPMODE CAF ONE # MODE IS TP. 065414,000114: 22,3566 16027 TCF NEWMODE 065415,000115: 065416,000116: # V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR. 065417,000117: 065418,000118: 22,3567 03576 2V1STO2S TC 1TO2SUB 065419,000119: 22,3570 52160 DXCH MPAC +3 065420,000120: 22,3571 52155 DXCH MPAC 065421,000121: 22,3572 03576 TC 1TO2SUB 065422,000122: 22,3573 54001 TS L 065423,000123: 22,3574 30157 CA MPAC +3 065424,000124: 22,3575 16024 TCF SLOAD2 065425,000125: 065426,000126: # SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION: 065427,000127: 065428,000128: 22,3576 52155 1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED. 065429,000129: 22,3577 20001 DDOUBL 065430,000130: 22,3600 10000 CCS A 065431,000131: 22,3601 65017 AD ONE 065432,000132: 22,3602 13604 TCF +2 065433,000133: 22,3603 40000 COM # THIS WAS REVERSE OF MSU. 065434,000134: 065435,000135: 22,3604 54154 TS MPAC # AND SKIP ON OVERFLOW. 065436,000136: # Page 1510 065437,000137: 22,3605 00002 TC Q 065438,000138: 065439,000139: 22,3606 50000 INDEX A # OVERFLOW UNCORRECT AND IN MSU. 065440,000140: 22,3607 35000 CAF LIMITS 065441,000141: 22,3610 26154 ADS MPAC 065442,000142: 22,3611 00002 TC Q 065443,000143: 065444,000144: # Page 1511 065445,000145: # SUBROUTINE TO INCREMENT CDUS 065446,000146: 065447,000147: 22,3612 33625 INCRCDUS CAF LOCTHETA 065448,000148: 22,3613 54130 TS BUF # PLACE ADRES(THETA) IN BUF. 065449,000149: 22,3614 30154 CAE MPAC # INCREMENT IN 1'S COMPL. 065450,000150: 22,3615 03626 TC CDUINC 065451,000151: 065452,000152: 22,3616 24130 INCR BUF 065453,000153: 22,3617 30157 CAE MPAC +3 065454,000154: 22,3620 03626 TC CDUINC 065455,000155: 065456,000156: 22,3621 24130 INCR BUF 065457,000157: 22,3622 30161 CAE MPAC +5 065458,000158: 22,3623 03626 TC CDUINC 065459,000159: 065460,000160: 22,3624 13543 TCF VECMODE 065461,000161: 065462,000162: 22,3625 01155 LOCTHETA ADRES THETAD 065463,000163: 065464,000164: # THE FOLLOWING ROUTINE INCREMENTS IN 2'S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1'S COMPL. 065465,000165: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2'S COMPL. 065466,000166: # (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL. 065467,000167: 065468,000168: 22,3626 54142 CDUINC TS TEM2 # 1'S COMPL. QUANT. ARRIVES IN ACC. STORE IT 065469,000169: 22,3627 50130 INDEX BUF 065470,000170: 22,3630 10000 CCS 0 # CHANGE 2'S COMPLE. ANGEL (IN BUF) INTO 1'S 065471,000171: 22,3631 65017 AD ONE 065472,000172: 22,3632 13636 TCF +4 065473,000173: 22,3633 65017 AD ONE 065474,000174: 22,3634 65017 AD ONE # OVEFLOW HERE IF 2'S COMPL. IS 180 DEG. 065475,000175: 22,3635 40000 COM 065476,000176: 065477,000177: 22,3636 60142 AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK) 065478,000178: 22,3637 10000 CCS A # BACK TO 2'S COMPL. 065479,000179: 22,3640 65017 AD ONE 065480,000180: 22,3641 13643 TCF +2 065481,000181: 22,3642 40000 COM 065482,000182: 22,3643 54142 TS TEM2 # STORE 14-BIT QUANTITY WITH PRESENT SIGN 065483,000183: 22,3644 13650 TCF +4 065484,000184: 22,3645 50000 INDEX A # SIGN. 065485,000185: 22,3646 35000 CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000 065486,000186: 22,3647 60142 AD TEM2 065487,000187: 065488,000188: 22,3650 50130 INDEX BUF 065489,000189: 22,3651 54000 TS 0 # STORE NEW ANGLE IN 2'S COMPLEMENT. 065490,000190: 22,3652 00002 TC Q 065491,000191: 065492,000192: # Page 1512 065493,000193: # RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1. 065494,000194: 065495,000195: 22,3653 50120 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1 065496,000196: 22,3654 30046 CA X1 065497,000197: 22,3655 04662 TC BANKCALL 065498,000198: 22,3656 17206 CADR IMUPULSE 065499,000199: 22,3657 16030 TCF DANZIG 065500,000200: 065501,000201: # Page 1513 065502,000202: # EACH ROUTINE TAKES A 3X3 MATRIX STORED IN DOUBLE PRECISION IN A FIXED AREA OF ERASABLE MEMORY AND REPLACES IT 065503,000203: # WITH THE TRANSPOSE MATRIX. TRANSP1 USES LOCATIONS XNB+0,+1 THROUGH XNB+16D,+17D AND TRANSP2 USES LOCATIONS 065504,000204: # XNB1+0,+1 THROUGH XNB1+16D,+17D. EACH MATRIX IS STORED BY ROWS. 065505,000205: 065506,000206: 22,3660 02713 XNBEB ECADR XNB 065507,000207: 22,3661 02554 XNB1EB ECADR XNB1 065508,000208: 065509,000209: 22,3662 E5,1713 EBANK= XNB 065510,000210: 065511,000211: 22,3662 33660 TRANSP1 CAF XNBEB 065512,000212: 22,3663 54003 TS EBANK 065513,000213: 22,3664 53716 DXCH XNB +2 065514,000214: 22,3665 53722 DXCH XNB +6 065515,000215: 22,3666 53716 DXCH XNB +2 065516,000216: 065517,000217: 22,3667 53720 DXCH XNB +4 065518,000218: 22,3670 53730 DXCH XNB +12D 065519,000219: 22,3671 53720 DXCH XNB +4 065520,000220: 065521,000221: 22,3672 53726 DXCH XNB +10D 065522,000222: 22,3673 53732 DXCH XNB +14D 065523,000223: 22,3674 53726 DXCH XNB +10D 065524,000224: 22,3675 16030 TCF DANZIG 065525,000225: 22,3676 E5,1554 EBANK= XNB1 065526,000226: 065527,000227: 22,3676 33661 TRANSP2 CAF XNB1EB 065528,000228: 22,3677 54003 TS EBANK 065529,000229: 22,3700 53557 DXCH XNB1 +2 065530,000230: 22,3701 53563 DXCH XNB1 +6 065531,000231: 22,3702 53557 DXCH XNB1 +2 065532,000232: 065533,000233: 22,3703 53561 DXCH XNB1 +4 065534,000234: 22,3704 53571 DXCH XNB1 +12D 065535,000235: 22,3705 53561 DXCH XNB1 +4 065536,000236: 065537,000237: 22,3706 53567 DXCH XNB1 +10D 065538,000238: 22,3707 53573 DXCH XNB1 +14D 065539,000239: 22,3710 53567 DXCH XNB1 +10D 065540,000240: 22,3711 16030 TCF DANZIG 065541,000241: 065542,000242: # Page 1514 065543,000243: # THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC). 065544,000244: # FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX. 065545,000245: 065546,000246: # ENTRY MAY BE BY EITHER OF THE FOLLOWING: 065547,000247: # 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW: 065548,000248: # ENTRY: BOVB 065549,000249: # SIGNMPAC 065550,000250: # 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC: 065551,000251: # ENTRY: RTB 065552,000252: # SIGNMPAC 065553,000253: # IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE. 065554,000254: 065555,000255: 22,3712 00006 SIGNMPAC EXTEND 065556,000256: 22,3713 34777 DCA DPOSMAX 065557,000257: 22,3714 52155 DXCH MPAC 065558,000258: 22,3715 10000 CCS A 065559,000259: 22,3716 35021 DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS 065560,000260: 22,3717 16026 TCF SLOAD2 +2 065561,000261: 22,3720 13721 TCF +1 065562,000262: 22,3721 00006 EXTEND 065563,000263: 22,3722 44777 DCS DPOSMAX 065564,000264: 22,3723 16024 TCF SLOAD2 065565,000265: 065566,000266: # RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW 065567,000267: # UP WHEN THE VECTOR BEING UNITIZED IS VERY SAMLL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO. IF NORMUNIT 065568,000268: # IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNS IN 36D WILL BE TOO LARGE 065569,000269: # BY A FACTOR OF 2(13) AND THE SQURED MAGNITUDE RETURNED AT 34D WILL BE TOO BIG BY A FACTOR OF 2(26). 065570,000270: 065571,000271: 22,3724 35017 NORMUNX1 CAF ONE 065572,000272: 22,3725 13727 TCF NORMUNIT +1 065573,000273: 22,3726 35021 NORMUNIT CAF ZERO 065574,000274: 22,3727 60120 AD FIXLOC 065575,000275: 22,3730 54156 TS MPAC +2 065576,000276: 22,3731 04662 TC BANKCALL # GET SIGN AGREEMENT IN ALL COMPONENTS 065577,000277: 22,3732 01010 CADR VECAGREE 065578,000278: 22,3733 10154 CCS MPAC 065579,000279: 22,3734 13770 TCF NOSHIFT 065580,000280: 22,3735 13737 TCF +2 065581,000281: 22,3736 13770 TCF NOSHIFT 065582,000282: 22,3737 10157 CCS MPAC +3 065583,000283: 22,3740 13770 TCF NOSHIFT 065584,000284: 22,3741 13743 TCF +2 065585,000285: 22,3742 13770 TCF NOSHIFT 065586,000286: 22,3743 10161 CCS MPAC +5 065587,000287: 22,3744 13770 TCF NOSHIFT 065588,000288: 22,3745 13747 TCF +2 065589,000289: 22,3746 13770 TCF NOSHIFT 065590,000290: # Page 1515 065591,000291: 22,3747 30155 CA MPAC +1 # SHIFT ALL COMPONENTS LEFT 13 065592,000292: 22,3750 00006 EXTEND 065593,000293: 22,3751 75002 MP BIT14 065594,000294: 22,3752 20155 DAS MPAC # DAS GAINS A LITTLE ACCURACY 065595,000295: 22,3753 30160 CA MPAC +4 065596,000296: 22,3754 00006 EXTEND 065597,000297: 22,3755 75002 MP BIT14 065598,000298: 22,3756 20160 DAS MPAC +3 065599,000299: 22,3757 30162 CA MPAC +6 065600,000300: 22,3760 00006 EXTEND 065601,000301: 22,3761 75002 MP BIT14 065602,000302: 22,3762 20162 DAS MPAC +5 065603,000303: 22,3763 35025 CAF THIRTEEN 065604,000304: 22,3764 50156 INDEX MPAC +2 065605,000305: 22,3765 54045 TS 37D 065606,000306: 22,3766 04701 OFFTUNIT TC POSTJUMP 065607,000307: 22,3767 01024 CADR UNIT +1 # SKIP THE "TC VECAGREE" DONE AT UNIT 065608,000308: 065609,000309: 22,3770 35021 NOSHIFT CAF ZERO 065610,000310: 22,3771 13764 TCF OFFTUNIT -2 065611,000311: 065612,000312: # RTB VECSGNAG ... FORCES SIGN AGREEMENT OF VECTOR IN MPAC. 065613,000313: 065614,000314: 22,3772 04662 VECSGNAG TC BANKCALL 065615,000315: 22,3773 01010 CADR VECAGREE 065616,000316: 22,3774 06030 TC DANZIG 065617,000317: 065618,000318: # Page 1516 065619,000319: # MODULE CHANGE FOR NEW LUNAR GRAVITY MODEL 065620,000320: 13,2000 SETLOC MODCHG3 065621,000321: 13,2000 BANK 065622,000322: 13,3770 71214 QUALITY1 BOF DLOAD 065623,000323: 13,3771 00343 MOONFLAG 065624,000324: 13,3772 23220 NBRANCH 065625,000325: 13,3773 00017 URPV 065626,000326: 13,3774 52116 DSQ GOTO 065627,000327: 13,3775 25754 QUALITY2 065628,000328: 12,2000 SETLOC MODCHG2 065629,000329: 12,2000 BANK 065630,000330: 12,3754 63525 QUALITY2 PDDL DSQ # SQUARE INTO 2D, B2 065631,000331: 12,3755 00021 URPV +2 # Y COMPONENT, B1 065632,000332: 12,3756 77625 DSU 065633,000333: 12,3757 74205 DMP VXSC # 5(Y**2-X**2)UR 065634,000334: 12,3760 27755 5/8 # CONSTANT, 5B3 065635,000335: 12,3761 00017 URPV # VECTOR, RESULT MAXIMUM IS 5, SCALING 065636,000336: # HERE B6 065637,000337: 12,3762 65332 VSL3 PDDL # STORE SCALED B3 IN 2D, 4D, 6D FOR XYZ 065638,000338: 12,3763 00017 URPV # X COMPONENT, B1 065639,000339: 12,3764 43342 SR1 DAD # 2 X X COMPONENT FOR B3 SCALING 065640,000340: 12,3765 00003 2D # ADD TO VECTOR X COMPONENT OF ANSWER. 065641,000341: # SAME AS MULTIPLYING BY UNITX. MAX IS 7. 065642,000342: 12,3766 14003 STODL 2D 065643,000343: 12,3767 00021 URPV +2 # Y COMPONENT, B1 065644,000344: 12,3770 44342 SR1 BDSU # 2 X Y COMPONENT FOR B3 SCALING 065645,000345: 12,3771 00005 4D # SUBTRACT FROM VECTOR Y COMPONENT OF 065646,000346: # ANSWER, SAME AS MULTIPLYING BY UNITY. 065647,000347: # MAX IS 7. 065648,000348: 12,3772 00005 STORE 4D # 2D HAS VECTOR, B3. 065649,000349: 12,3773 74335 SLOAD VXSC # MULTIPLY COEFFICIENT TIMES VECTOR IN 2D 065650,000350: 12,3774 01777 E3J22R2M 065651,000351: 12,3775 43525 PDDL RVQ # J22 TERM X R**4 IN 2D, SCALED B61 065652,000352: 12,3776 00023 COSPHI/2 # SAME AS URPV +4, Z COMPONENT 065653,000353: 065654,000354: # *** END OF CHIEFTAN.028 *** 065655,000355: End of include-file RT8_OP_CODES.agc. Parent file is MAIN.agc