Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 program listing from a private collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
may be available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971 THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS COLOSSUS 3 THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER OSR PROJECT 55-23890, SPONSORED BY THE MANNED SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE CHARLES STARK DRAPER LABORATORY, MASSACHUSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS. |
064221,000002: # Copyright: Public domain.
064222,000003: # Filename: RTB_OP_CODES.agc
064223,000004: # Purpose: Part of the source code for Artemis (i.e., Colossus 3),
064224,000005: # build 072. This is for the Command Module's (CM)
064225,000006: # Apollo Guidance Computer (AGC), we believe for
064226,000007: # Apollo 15-17.
064227,000008: # Assembler: yaYUL
064228,000009: # Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
064229,000010: # Website: www.ibiblio.org/apollo/index.html
064230,000011: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
064231,000012: # Mod history: 2009-08-17 JL Adapted from corresponding Comanche 055 file.
064232,000013: # 2009-09-29 JL Fixed file name in header section.
064233,000014: # 2010-02-20 RSB Un-##'d this header.
064234,000015:
![]() |
Page 1501 |
064236,000017:
064237,000018: 24,2000 SETLOC RTBCODE1
064238,000019: 24,2000 BANK
064239,000020:
064240,000021: 24,3751 E5,1713 EBANK= XNB
064241,000022: 24,3751 COUNT* $$/RTB
064242,000023:
064243,000024: # LOAD TIME2, TIME1 INTO MPAC:
064244,000025:
064245,000026: 24,3751 00006 LOADTIME EXTEND
064246,000027: 24,3752 30025 DCA TIME2
064247,000028: 24,3753 16024 TCF SLOAD2
064248,000029:
064249,000030: # CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
064250,000031: # DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
064251,000032:
064252,000033: 24,3754 10154 CDULOGIC CCS MPAC
064253,000034: 24,3755 34772 CAF ZERO
064254,000035: 24,3756 13761 TCF +3
064255,000036: 24,3757 13760 NOOP
064256,000037: 24,3760 44753 CS HALF
064257,000038:
064258,000039: 24,3761 54155 TS MPAC +1
064259,000040: 24,3762 34772 CAF ZERO
064260,000041: 24,3763 56154 XCH MPAC
064261,000042: 24,3764 00006 EXTEND
064262,000043: 24,3765 74753 MP HALF
064263,000044: 24,3766 20155 DAS MPAC
064264,000045: 24,3767 16030 TCF DANZIG # MODE IS ALREADY AT DOUBLE-PRECISION
064265,000046:
064266,000047: 22,2000 SETLOC RTBCODES
064267,000048: 22,2000 BANK
064268,000049:
064269,000050: 22,3621 COUNT* $$/RTB
064270,000051:
064271,000052: # READ THE PIPS INTO MPAC WITHOUT CHANGING THEM:
064272,000053:
064273,000054: 22,3621 00004 READPIPS INHINT
064274,000055: 22,3622 30037 CA PIPAX
064275,000056: 22,3623 54154 TS MPAC
064276,000057: 22,3624 30040 CA PIPAY
064277,000058: 22,3625 54157 TS MPAC +3
064278,000059: 22,3626 30041 CA PIPAZ
064279,000060: 22,3627 00003 RELINT
064280,000061: 22,3630 54161 TS MPAC +5
064281,000062:
064282,000063: 22,3631 34772 CAF ZERO
064283,000064: 22,3632 54155 TS MPAC +1
064284,000065: 22,3633 54160 TS MPAC +4
064285,000066: 22,3634 54162 TS MPAC +6
064286,000067: 22,3635 16470 VECMODE TCF VMODE
064287,000068:
![]() |
Page 1502 |
064289,000070:
064290,000071: # FORCE TP SIGN AGREEMENT IN MPAC:
064291,000072:
064292,000073: 22,3636 07226 SGNAGREE TC TPAGREE
064293,000074: 22,3637 16030 TCF DANZIG
064294,000075:
064295,000076: # CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
064296,000077: # SCALED IN HALF-REVOLUTIONS.
064297,000078:
064298,000079: 22,3640 03661 1STO2S TC 1TO2SUB
064299,000080: 22,3641 34772 CAF ZERO
064300,000081: 22,3642 54155 TS MPAC +1
064301,000082: 22,3643 16027 TCF NEWMODE
064302,000083:
064303,000084: # DO 1STO2S ON A VECTOR OF ANGLES:
064304,000085:
064305,000086: 22,3644 03661 V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
064306,000087:
064307,000088: 22,3645 52162 DXCH MPAC +5
064308,000089: 22,3646 52155 DXCH MPAC
064309,000090: 22,3647 03661 TC 1TO2SUB
064310,000091: 22,3650 54156 TS MPAC +2
064311,000092:
064312,000093: 22,3651 52160 DXCH MPAC +3
064313,000094: 22,3652 52155 DXCH MPAC
064314,000095: 22,3653 03661 TC 1TO2SUB
064315,000096: 22,3654 54155 TS MPAC +1
064316,000097:
064317,000098: 22,3655 30161 CA MPAC +5
064318,000099: 22,3656 54154 TS MPAC
064319,000100:
064320,000101: 22,3657 34770 TPMODE CAF ONE # MODE IS TP.
064321,000102: 22,3660 16027 TCF NEWMODE
064322,000103:
064323,000104: # SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:
064324,000105:
064325,000106: 22,3661 52155 1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
064326,000107: 22,3662 20001 DDOUBL
064327,000108: 22,3663 10000 CCS A
064328,000109: 22,3664 64770 AD ONE
064329,000110: 22,3665 13667 TCF +2
064330,000111: 22,3666 40000 COM # THIS WAS REVERSE OF MSU.
064331,000112:
064332,000113: 22,3667 54154 TS MPAC # AND SKIP ON OVERFLOW.
064333,000114: 22,3670 00002 TC Q
064334,000115:
064335,000116: 22,3671 50000 INDEX A # OVERFLOW UNCORRECT AND IN MSU.
064336,000117: 22,3672 34751 CAF LIMITS
064337,000118: 22,3673 26154 ADS MPAC
064338,000119: 22,3674 00002 TC Q
064339,000120:
![]() |
Page 1503 |
064341,000122:
064342,000123: # THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL
064343,000124: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCRMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL
064344,000125: # (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
064345,000126:
064346,000127: 22,3675 54142 CDUINC TS TEM2 # 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT
064347,000128: 22,3676 50130 INDEX BUF
064348,000129: 22,3677 10000 CCS 0 # CHANGE 2S COMPL. ANGLE (IN BUF) INTO 1S
064349,000130: 22,3700 64770 AD ONE
064350,000131: 22,3701 13705 TCF +4
064351,000132: 22,3702 64770 AD ONE
064352,000133: 22,3703 64770 AD ONE # OVEFLOW HERE IF 2S COMPL. IS 180 DEG.
064353,000134: 22,3704 40000 COM
064354,000135:
064355,000136: 22,3705 60142 AD TEM2 # SULT MOVES FROM 2ND TO 3D QUAD. (OR BACK)
064356,000137: 22,3706 10000 CCS A # BACK TO 2S COMPL.
064357,000138: 22,3707 64770 AD ONE
064358,000139: 22,3710 13712 TCF +2
064359,000140: 22,3711 40000 COM
064360,000141: 22,3712 54142 TS TEM2 # STORE 14BIT QUANTITY WITH PRESENT SIGN
064361,000142: 22,3713 13717 TCF +4
064362,000143: 22,3714 50000 INDEX A # SIGN.
064363,000144: 22,3715 34751 CAF LIMITS # FIX IT, BY ADDING IN 37777 OR 40000
064364,000145: 22,3716 60142 AD TEM2
064365,000146:
064366,000147: 22,3717 50130 INDEX BUF
064367,000148: 22,3720 54000 TS 0 # STORE NEW ANGLE IN 2S COMPLEMENT
064368,000149: 22,3721 00002 TC Q
064369,000150:
![]() |
Page 1504 |
064371,000152:
064372,000153: # RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
064373,000154:
064374,000155: 22,3722 50120 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
064375,000156: 22,3723 30046 CA X1
064376,000157: 22,3724 04636 TC BANKCALL
064377,000158: 22,3725 17244 CADR IMUPULSE
064378,000159: 22,3726 16030 TCF DANZIG
064379,000160:
![]() |
Page 1505 |
064381,000162:
064382,000163: # EACH ROUTINE TAKES A 3X3 MATRIX STORED IN DOUBLE PRECISION IN A FIXED AREA OF ERASABLE MEMORY AND REPLACES IT
064383,000164: # WITH THE TRANSPOSE MATRIX. TRANSP1 USES LOCATIONS XNB+0,+1 THROUGH XNB+16D,+17D AND TRANSP2 USES LOCATIONS
064384,000165: # XNB1+0,+1 THROUGH XNB1+16D, +17D. EACH MATRIX IS STORED BY ROWS.
064385,000166:
064386,000167: 22,3727 02713 XNBEB ECADR XNB
064387,000168: 22,3730 02554 XNB1EB ECADR XNB1
064388,000169:
064389,000170: 22,3731 E5,1713 EBANK= XNB
064390,000171:
064391,000172: 22,3731 33727 TRANSP1 CAF XNBEB
064392,000173: 22,3732 54003 TS EBANK
064393,000174: 22,3733 53716 DXCH XNB +2
064394,000175: 22,3734 53722 DXCH XNB +6
064395,000176: 22,3735 53716 DXCH XNB +2
064396,000177:
064397,000178: 22,3736 53720 DXCH XNB +4
064398,000179: 22,3737 53730 DXCH XNB +12D
064399,000180: 22,3740 53720 DXCH XNB +4
064400,000181:
064401,000182: 22,3741 53726 DXCH XNB +10D
064402,000183: 22,3742 53732 DXCH XNB +14D
064403,000184: 22,3743 53726 DXCH XNB +10D
064404,000185: 22,3744 16030 TCF DANZIG
064405,000186:
064406,000187: 22,3745 E5,1554 EBANK= XNB1
064407,000188:
064408,000189: 22,3745 33730 TRANSP2 CAF XNB1EB
064409,000190: 22,3746 54003 TS EBANK
064410,000191: 22,3747 53557 DXCH XNB1 +2
064411,000192: 22,3750 53563 DXCH XNB1 +6
064412,000193: 22,3751 53557 DXCH XNB1 +2
064413,000194:
064414,000195: 22,3752 53561 DXCH XNB1 +4
064415,000196: 22,3753 53571 DXCH XNB1 +12D
064416,000197: 22,3754 53561 DXCH XNB1 +4
064417,000198:
064418,000199: 22,3755 53567 DXCH XNB1 +10D
064419,000200: 22,3756 53573 DXCH XNB1 +14D
064420,000201: 22,3757 53567 DXCH XNB1 +10D
064421,000202: 22,3760 16030 TCF DANZIG
064422,000203:
![]() |
Page 1506 |
064424,000205:
064425,000206: # THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).
064426,000207: # FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED. ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.
064427,000208:
064428,000209: # ENTRY MAY BE BY EITHER OF THE FOLLOWING:
064429,000210:
064430,000211: # 1. LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:
064431,000212: # ENTRY: BOVB
064432,000213: # SIGNMPAC
064433,000214: # 2. GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:
064434,000215: # ENTRY: RTB
064435,000216: # SIGNMPAC
064436,000217:
064437,000218: # IN EITHER CASE, RETURN IS TO THE NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.
064438,000219:
064439,000220: 22,3761 00006 SIGNMPAC EXTEND
064440,000221: 22,3762 34750 DCA DPOSMAX
064441,000222: 22,3763 52155 DXCH MPAC
064442,000223: 22,3764 10000 CCS A
064443,000224: 22,3765 34772 DPMODE CAF ZERO # SETS MPAC +2 TO ZERO IN THE PROCESS
064444,000225: 22,3766 16026 TCF SLOAD2 +2
064445,000226: 22,3767 13770 TCF +1
064446,000227: 22,3770 00006 EXTEND
064447,000228: 22,3771 44750 DCS DPOSMAX
064448,000229: 22,3772 16024 TCF SLOAD2
064449,000230:
064450,000231:
064451,000232: # *** END OF ZEUS .046 ***
064452,000233:
End of include-file RTB_OP_CODES.agc. Parent file is MAIN.agc