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.

039072,000002:                                                                                                 #  Copyright:     Public domain.
039073,000003:                                                                                                 #  Filename:      CM_BODY_ATTITUDE.agc
039074,000004:                                                                                                 #  Purpose:       Part of the source code for Artemis (i.e., Colossus 3),
039075,000005:                                                                                                 #                 build 072.  This is for the Command Module's (CM)
039076,000006:                                                                                                 #                 Apollo Guidance Computer (AGC), we believe for
039077,000007:                                                                                                 #                 Apollo 15-17.
039078,000008:                                                                                                 #  Assembler:     yaYUL
039079,000009:                                                                                                 #  Contact:       Steve Case <case.steve@gmail.com>
039080,000010:                                                                                                 #  Website:       www.ibiblio.org/apollo/index.html
039081,000011:                                                                                                 #  Page scans:    www.ibiblio.org/apollo/ScansForConversion/Artemis072/
039082,000012:                                                                                                 #  Mod history:   2009-08-20 SMC  Adapted from Comanche055 files.
039083,000013:                                                                                                 #                 2009-09-14 JL   Fix typos. Fix page numbers. Remove change comments. 
039084,000014:                                                                                                 #                                 Remove RELINT. Restore hard tabs.
039085,000015:                                                                                                 #                 2010-02-20 RSB  Un-##'d this header.
039086,000016: 

Page 890

039088,000018: 37,2000                                          SETLOC   BODYATT                               
039089,000019: 37,2000                                          BANK                                           
039090,000020: 
039091,000021: 37,3404                                          COUNT*   $$/CMBAT                              
039092,000022:                                                                                                 #                 PDL 12D - 15D SAFE.
039093,000023: 
039094,000024:                                                                                                 #    VALUES OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING    READACCS.
039095,000025: 
039096,000026: 37,3404  E7,1451                                 EBANK=   RTINIT                                #  LET INTERPRETER SET EB
039097,000027: 
039098,000028: 37,3404           06006        CM/POSE           TC       INTPRET                               #  COME HERE VIA AVEGEXIT.
039099,000029: 
039100,000030: 37,3405           77201                          SETPD    VLOAD                                 
039101,000031: 37,3406           00001                                   0                                     
039102,000032: 37,3407           01036                                   VN                                    #  KVSCALE = (12800/ .3048) /2VS
039103,000033: 37,3410           63361                          VXSC     PDVL                                  
039104,000034: 37,3411           37700                                   -KVSCALE                              #  KVSCALE = .81491944
039105,000035: 37,3412           01712                                   UNITW                                 #  FULL UNIT VECTOR
039106,000036: 37,3413           74235                          VXV      VXSC                                  #  VREL = V - WE*R
039107,000037: 37,3414           01756                                   UNITR                                 
039108,000038: 37,3415           15246                                   KWE                                   
039109,000039: 37,3416           45455                          VAD      STADR                                 
039110,000040: 37,3417           74251                          STORE    -VREL                                 #  SAVE FOR ENTRY GUIDANCE.       REF COORDS
039111,000041: 
039112,000042: 37,3420           72056                          UNIT     LXA,1                                 
039113,000043: 37,3421           00044                                   36D                                   #  ABVAL( -VREL) TO X1
039114,000044: 37,3422           03542                          STORE    UXA/2                                 #  -UVREL                 REF COORDS
039115,000045: 
039116,000046: 37,3423           57435                          VXV      VCOMP                                 
039117,000047: 37,3424           01756                                   UNITR                                 #  .5 UNIT                        REF COORDS
039118,000048: 37,3425           66256                          UNIT     SSP                                   #  THE FOLLOWING IS TO PROVIDE A STABLE
039119,000049: 37,3426           00051                                   S1                                    #  UN FOR THE END OF THE TERMINAL PHASE.
039120,000050: 37,3427           00476        SPVQUIT           DEC      .019405                               #  1000/ 2 VS
039121,000051: 37,3430           77300                          TIX,1    VLOAD                                 #  IF V-VQUIT POS, BRANCH.
039122,000052: 37,3431           77433                                   CM/POSE2                              #  SAVE UYA IN OLDUYA
039123,000053: 37,3432           03534                                   OLDUYA                                #  OTHERWISE CONTINUE TO USE OLDUYA.
039124,000054: 37,3433           03550        CM/POSE2          STORE    UYA/2                                 #                                 REF COORDS
039125,000055: 
039126,000056: 37,3434           03534                          STORE    OLDUYA                                #  RESTORE, OR SAVE AS CASE MAY BE.
039127,000057: 
039128,000058: 37,3435           57435                          VXV      VCOMP                                 
039129,000059: 37,3436           03542                                   UXA/2                                 #  FINISH OBTAINING TRAJECTORY TRIAD.
039130,000060: 37,3437           77772                          VSL1                                           
039131,000061: 37,3440           03556                          STORE    UZA/2                                 #                                 REF COORDS
039132,000062: 
039133,000063: 37,3441           77751                          TLOAD                                          #  PICK UP CDUX, CDUY, CDUZ CORRESPONDING
039134,000064: 37,3442           03270                                   AOG/PIP                               #  TO PIPUP TIME IN 2S,C AND SAVE.
039135,000065: 37,3443           14031        CM/TRIO           STODL    24D                                   

Page 891

039137,000067: 37,3444           00032                                   25D                                   #  AIG/PIP
039138,000068: 
039139,000069: 37,3445           41434                          RTB      PUSH                                  #  TO PDL0
039140,000070: 37,3446           51754                                   CDULOGIC                              
039141,000071: 37,3447           77746                          COS                                            
039142,000072: 37,3450           17564                          STODL    UBX/2                                 #  CI /2
039143,000073:                                                                                                 #  AIG/PIP FROM PDL 0
039144,000074: 37,3451           57556                          SIN      DCOMP                                 
039145,000075: 37,3452           17570                          STODL    UBX/2      +4                         #  -SI /2
039146,000076: 37,3453           00033                                   26D                                   #  AMG/PIP
039147,000077: 37,3454           41434                          RTB      PUSH                                  #  TO PDL 0
039148,000078: 37,3455           51754                                   CDULOGIC                              
039149,000079: 37,3456           65356                          SIN      PDDL                                  #  XCH PDL 0. SAVE SM /2
039150,000080: 37,3457           65346                          COS      PDDL                                  #  CM /2 TO PDL 2
039151,000081: 37,3460           00001                                   0                                     #  SM /2
039152,000082: 37,3461           74276                          DCOMP    VXSC                                  
039153,000083: 37,3462           03564                                   UBX/2                                 
039154,000084: 37,3463           77772                          VSL1                                           #  NOISE WONT OVFL.
039155,000085: 37,3464           17572                          STODL    UBY/2                                 #  =(-SMCI, NOISE, SMSI)/2
039156,000086: 37,3465           00003                                   2                                     #  CM /2 REPLACES NOISE
039157,000087: 37,3466           17574                          STODL    UBY/2      +2                         #  UBY/2=(-SMCI, CM, SMSI)/2
039158,000088: 37,3467           00031                                   24D                                   #  AOG/PIP
039159,000089: 37,3470           41434                          RTB      PUSH                                  #  TO PDL 4
039160,000090: 37,3471           51754                                   CDULOGIC                              
039161,000091: 37,3472           65356                          SIN      PDDL                                  #  XCH PDL 4. SAVE SO /2
039162,000092: 37,3473           74346                          COS      VXSC                                  #  CO /2
039163,000093: 37,3474           03572                                   UBY/2                                 
039164,000094: 37,3475           17572                          STODL    UBY/2                                 #  UBY/2=(-COSMCI, COCM, COSMSI)/4
039165,000095: 37,3476           00005                                   4D                                    #  SO /2
039166,000096: 37,3477           57405                          DMP      DCOMP                                 
039167,000097: 37,3500           03570                                   UBX/2      +4                         #  -SI /2
039168,000098: 37,3501           77615                          DAD                                            
039169,000099: 37,3502           03572                                   UBY/2                                 #   INCREMENT BY (SOSI /4)
039170,000100: 37,3503           17572                          STODL    UBY/2                                 
039171,000101:                                                                                                 #  SO /2 FROM PDL 4
039172,000102: 37,3504           43205                          DMP      DAD                                   
039173,000103: 37,3505           03564                                   UBX/2                                 #  CI /2
039174,000104: 37,3506           03576                                   UBY/2      +4                         
039175,000105: 37,3507           27576                          STOVL    UBY/2      +4                         #  YB/4                           PLATFORM COORDS
039176,000106: 
039177,000107:                                                                                                 #  YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI )
039178,000108: 
039179,000109: 37,3510           03572                                   UBY/2                                 
039180,000110: 37,3511           72505                          VXM      VSL2                                  
039181,000111: 37,3512           01734                                   REFSMMAT                              #  .5 UNIT
039182,000112: 37,3513           17572                          STODL    UBY/2                                 #  YB/2  DONE                     REF COORDS
039183,000113: 
039184,000114:                                                                                                 #  CM /2 FROM PDL 2
039185,000115: 37,3514           76561                          VXSC     VSL1                                  
039186,000116: 37,3515           03564                                   UBX/2                                 

Page 892

039188,000118: 37,3516           17564                          STODL    UBX/2                                 #  =( CMCI, NOISE, -CMSI)/2
039189,000119: 37,3517           77626                          STADR                                          #  SM /2 FROM PDL 0
039190,000120: 37,3520           50211                          STOVL    UBX/2      +2                         #  SM /2 REPLACES NOISE
039191,000121: 37,3521           03564                                   UBX/2                                 #  XB/2                           PLATFORM COORDS
039192,000122: 
039193,000123:                                                                                                 #  XB = ( CMCI , SM , -CMSI )
039194,000124: 
039195,000125: 37,3522           76505                          VXM      VSL1                                  
039196,000126: 37,3523           01734                                   REFSMMAT                              #  .5 UNIT
039197,000127: 37,3524           03564                          STORE    UBX/2                                 #  XB/2 DONE                      REF COORDS
039198,000128: 
039199,000129: 37,3525           76435                          VXV      VSL1                                  
039200,000130: 37,3526           03572                                   UBY/2                                 
039201,000131: 37,3527           27600                          STOVL    UBZ/2                                 #  ZB/2 DONE                      REF COORDS
039202,000132: 
039203,000133:                                                                                                 #  EQUIVALENT TO
039204,000134:                                                                                                 #  ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI)
039205,000135: 
039206,000136: 37,3530           03542                                   UXA/2                                 #  -UVREL/2 = -UVA/2
039207,000137: 37,3531           53435                          VXV      UNIT                                  #  GET UNIT(-UVREL*UBY)/2  = UL/2
039208,000138: 37,3532           03572                                   UBY/2                                 #  YB/2
039209,000139: 37,3533           50206                          PUSH     DOT                                   #  UL/2  TO PDL 0,5
039210,000140: 37,3534           03556                                   UZA/2                                 #  UNA/2
039211,000141: 37,3535           24021                          STOVL    COSTH                                 #  COS(ROLL)/4
039212,000142: 37,3536           00001                                   0                                     #  UL/2
039213,000143: 
039214,000144: 37,3537           77641                          DOT                                            
039215,000145: 37,3540           03550                                   UYA/2                                 
039216,000146: 37,3541           34023                          STCALL   SINTH                                 #  -SIN(ROLL)/4
039217,000147: 37,3542           47311                                   ARCTRIG                               
039218,000148: 37,3543           24007                          STOVL    6D                                    #  -(ROLL/180) /2
039219,000149: 37,3544           03572                                   UBY/2                                 
039220,000150: 37,3545           72441                          DOT      SL1                                   #  -UVA.UBY = -SIN(BETA)
039221,000151: 37,3546           03542                                   UXA/2                                 #  -UVREL/2
039222,000152: 37,3547           77736                          ARCSIN                                         
039223,000153: 37,3550           24010                          STOVL    7D                                    #  -(BETA/180) /2
039224,000154: 37,3551           03564                                   UBX/2                                 #  XB/2
039225,000155: 37,3552           77641                          DOT                                            #  UL.UBX = -SIN(ALFA)
039226,000156: 37,3553           00001                                   0                                     #  UL/2
039227,000157: 37,3554           24023                          STOVL    SINTH                                 #  -SIN(ALFA)/4
039228,000158: 37,3555           77641                          DOT                                            #  UL/2 FROM PDL 0
039229,000159: 37,3556           03600                                   UBZ/2                                 
039230,000160: 37,3557           34021                          STCALL   COSTH                                 #  COS(ALFA)/2
039231,000161: 37,3560           47311                                   ARCTRIG                               
039232,000162: 37,3561           24011                          STOVL    8D                                    #  -(ALFA/180) /2
039233,000163: 37,3562           01756                                   UNITR                                 #  UR/2                           REF COORDS
039234,000164: 37,3563           72441                          DOT      SL1                                   
039235,000165: 37,3564           03556                                   UZA/2                                 #  MORE ACCURATE AT LARGE ARG.
039236,000166: 37,3565           77726                          ARCCOS                                         
039237,000167: 37,3566           00013                          STORE    10D                                   #  (-GAMA/180)/2

Page 893

039239,000169: 37,3567           77551                          TLOAD    EXIT                                  #  ANGLES IN MPAC IN THE ORDER
039240,000170:                                                                                                 #  -( (ROLL, BETA, ALFA) /180)/2
039241,000171: 37,3570           00007                                   6D                                    #  THESE VALUES CORRECT AT PIPUP TIME.
039242,000172: 

Page 894

039244,000174: 
039245,000175:                                                                                                 #  BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES
039246,000176: 
039247,000177: 37,3571  E6,1661                                 EBANK=   AOG                                   
039248,000178: 
039249,000179: 37,3571           04611        CM/ATUP           TC       E6SETTER                              
039250,000180: 
039251,000181: 37,3572           50120        CMTR1             INDEX    FIXLOC                                
039252,000182: 37,3573           40012                          CS       10D                                   #  (GAMA/180)/2
039253,000183: 37,3574           57722                          XCH      GAMA                                  
039254,000184: 37,3575           54001                          TS       L                                     
039255,000185: 
039256,000186: 37,3576           00004                          INHINT                                         
039257,000187:                                                                                                 #  MUST REMAIN INHINTED UNTIL UPDATE OF BODY
039258,000188:                                                                                                 #  ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS
039259,000189:                                                                                                 #  INDICATOR.
039260,000190: 
039261,000191: 37,3577           40102                          CS       CM/FLAGS                              
039262,000192: 37,3600           74756                          MASK     GMDIFBIT                              #  GAMDIFSW = 94D BIT11   INITLY=0
039263,000193: 37,3601           00006                          EXTEND                                         #  DONT CALC GAMA DOT UNTIL HAVE FORMD
039264,000194:                                                                                                 #  ONE DIFFERENCE.
039265,000195: 37,3602           13605                          BZF      DOGAMDOT                              #  IS OK, GO ON.
039266,000196: 37,3603           26102                          ADS      CM/FLAGS                              #  KNOW BIT IS 0
039267,000197: 37,3604           03620                          TC       NOGAMDOT                              #  SET GAMDOT = 0
039268,000198: 
039269,000199: 37,3605           40001        DOGAMDOT          CS       L                                     
039270,000200: 37,3606           61722                          AD       GAMA                                  #  DEL GAMA/360= T GAMDOT/360
039271,000201: 37,3607           00006                          EXTEND                                         
039272,000202: 37,3610           73701                          MP       TCDU                                  #  TCDU = .1 SEC,   T = 2 SEC.
039273,000203: 37,3611           55723                          TS       GAMDOT                                #  GAMA DOT TCDU / 180
039274,000204: 
039275,000205: 37,3612           00006                          EXTEND                                         #  IGNORE GAMDOT IF LEQ  .5 DEG/SEC
039276,000206: 37,3613           63615                          BZMF     +2                                    
039277,000207: 37,3614           40000                          COM                                            
039278,000208: 37,3615           64773                          AD       FIVE                                  
039279,000209: 37,3616           00006                          EXTEND                                         
039280,000210: 37,3617           63622                          BZMF     +3                                    #  SET GAMDOT=+0 AS TAG IF TOO SMALL.
039281,000211: 
039282,000212: 37,3620           34772        NOGAMDOT          CA       ZERO                                  #  COME HERE INHINTED.
039283,000213: 37,3621           55723                          TS       GAMDOT                                
039284,000214:                                                                                                 #  FOR NOW LEAVE IN 2S,C
039285,000215:                                                                                                 #  UPDATE ANGLES BY CORRECTING EULER ANG
039286,000216:                                                                                                 #  FOR ACCRUED INCREMENT SINCE PIPUP
039287,000217:                                                                                                 #  R = R EUIL + R(NOW) -R(PIPUP)
039288,000218: 37,3622           40154                          CS       MPAC                                  #  GET (R EUL/180) /2
039289,000219: 37,3623           60000                          DOUBLE                                         #  POSSIBLE OVERFLOW
039290,000220: 37,3624           03671                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
039291,000221: 37,3625           00006                          EXTEND                                         
039292,000222: 37,3626           61672                          SU       ROLL/PIP                              #  GET INCR SINCE PIPUP
039293,000223: 37,3627           61664                          AD       ROLL/180                              #  ONLY SINGLE OVFL POSSIBLE.
039294,000224: 37,3630           03671                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY

Page 895

039296,000226: 37,3631           55770                          TS       TEMPROLL                              
039297,000227: 
039298,000228: 37,3632           40156                          CS       MPAC       +2                         #  GET (ALFA EUL/180) /2
039299,000229: 37,3633           60000                          DOUBLE                                         #  SAME AS FOR ROLL. NEEDED FOR EXT ATM DAP
039300,000230: 37,3634           03671                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
039301,000231: 37,3635           00006                          EXTEND                                         
039302,000232: 37,3636           61673                          SU       ALFA/PIP                              
039303,000233: 37,3637           61665                          AD       ALFA/180                              
039304,000234: 37,3640           03671                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
039305,000235: 37,3641           55771                          TS       TEMPALFA                              
039306,000236: 
039307,000237: 37,3642           40155                          CS       MPAC       +1                         #  GET (BETA EUL/180) /2
039308,000238: 37,3643           60000        CMTR2             DOUBLE                                         
039309,000239: 37,3644           00006                          EXTEND                                         
039310,000240: 37,3645           61674                          SU       BETA/PIP                              
039311,000241: 37,3646           61666                          AD       BETA/180                              
039312,000242: 37,3647           57772                          XCH      TEMPBETA                              #  OVFL NOT EXPECTED.
039313,000243: 
039314,000244: 37,3650           35024                          CA       EBANK3                                
039315,000245: 37,3651           54003                          TS       EBANK                                 
039316,000246: 
039317,000247: 37,3652  E3,1446                                 EBANK=   PHSNAME5                              
039318,000248: 37,3652           00006                          EXTEND                                         
039319,000249: 37,3653           33703                          DCA      REPOSADR                              #  THIS ASSUMES THAT THE          TC   PHASCHNG
039320,000250: 37,3654           53447                          DXCH     PHSNAME5                              #  IS NOT CHANGED IN              OCT  10035
039321,000251:                                                                                                 #  SERVICER.
039322,000252: 
039323,000253: 37,3655           04611                          TC       E6SETTER                              
039324,000254: 
039325,000255: 37,3656  E6,1661                                 EBANK=   AOG                                   
039326,000256: 37,3656           00006        REDOPOSE          EXTEND                                         #  RE-STARTS COME HERE
039327,000257: 37,3657           31771                          DCA      TEMPROLL                              
039328,000258: 37,3660           53665                          DXCH     ROLL/180                              
039329,000259: 37,3661           31772                          CA       TEMPBETA                              
039330,000260: 37,3662           55666                          TS       BETA/180                              
039331,000261: 
039332,000262: 37,3663           06006                          TC       INTPRET                               #  CANT TC DANZIG AFTER PHASCHNG.
039333,000263: 37,3664           51575        CM/POSE3          VLOAD    ABVAL                                 #  RETURN FROM CM/ATUP.   (RESTART)
039334,000264: 37,3665           01036                                   VN                                    #  2(-7)  M/CS
039335,000265: 37,3666           03723                          STORE    VMAGI                                 #  FOR DISPLAY ON CALL.
039336,000266: 
039337,000267: 37,3667           77650                          GOTO                                           
039338,000268: 37,3670           03324                                   POSEXIT                               #  ENDEXIT, STARTENT, OR SCALEPOP.
039339,000269: 
039340,000270: 37,3671           54001        CORANGOV          TS       L                                     
039341,000271: 37,3672           00002                          TC       Q                                     
039342,000272: 37,3673           50000                          INDEX    A                                     
039343,000273: 37,3674           34751                          CA       LIMITS                                
039344,000274: 37,3675           26001                          ADS      L                                     
039345,000275: 37,3676           00002                          TC       Q                                     #  COSTS 2 MCT TO USE. SEE ANGOVCOR.
039346,000276: 

Page 896

039348,000278: 37,3677           45730 53410  -KVSCALE          2DEC     -.81491944                            #  -12800/(2 VS .3048)
039349,000279: 37,3701           03146        TCDU              DEC      .1                                    #  TCDU = .1 SEC.
039350,000280: 
039351,000281: 37,3702  E6,1661                                 EBANK=   AOG                                   
039352,000282: 37,3702           03656 76066  REPOSADR          2CADR    REDOPOSE                              

End of include-file CM_BODY_ATTITUDE.agc.  Parent file is MAIN.agc