Source Code

These source-code files were obtained by digitally photographing the Colossus 237 program listing from the private collection of original AGC developer Fred Martin, and then modifying pre-existing Colossus 249 (Apollo 9) source files to incorporate changes. Note that the page images presented online are of reduced quality, and that additional images are 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 237 OF AGC PROGRAM COLOSSUS 
	BY NASA 2021111-031  1:17 AUG. 24, 1968

036195,000002:                                                                                                 #  Copyright:     Public domain.
036196,000003:                                                                                                 #  Filename:      CM_BODY_ATTITUDE.agc
036197,000004:                                                                                                 #  Purpose:       Part of the source code for Colossus build 237.  
036198,000005:                                                                                                 #                 This is for the Command Module's (CM) Apollo Guidance
036199,000006:                                                                                                 #                 Computer (AGC), we believe for Apollo 8.
036200,000007:                                                                                                 #  Assembler:     yaYUL
036201,000008:                                                                                                 #  Contact:       Onno Hommes <ohommes@alumni.cmu.edu>
036202,000009:                                                                                                 #  Website:       www.ibiblio.org/apollo/index.html
036203,000010:                                                                                                 #  Page scans:    www.ibiblio.org/apollo/ScansForConversion/Colossus237/
036204,000011:                                                                                                 #  Mod history:   2010-05-30 OH   Adapted from corresponding Colossus 249 file.
036205,000012:                                                                                                 #                 2010-12-04 JL   Remove Colossus 249 header comments. Change to double-has page numbers.
036206,000013:                                                                                                 #                 2011-02-07 JL   Minor fixes.
036207,000014: 
036208,000015:                                                                                                 # # Page 833
036209,000016: 35,3755                                          BANK     35                                    
036210,000017: 
036211,000018: 37,2000                                          SETLOC   BODYATT                               
036212,000019: 37,2000                                          BANK                                           
036213,000020: 
036214,000021: 37,3375                                          COUNT    37/CMBAT                              
036215,000022: 
036216,000023:                                                                                                 #                                           PDL 12D - 15D SAFE.
036217,000024: 
036218,000025:                                                                                                 #    VALUES OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING    READACCS.
036219,000026: 
036220,000027: 37,3375  E7,1451                                 EBANK=   RTINIT                                #  LET INTERPRETER SET EB
036221,000028: 
036222,000029: 37,3375           06006        CM/POSE           TC       INTPRET                               #  COME HERE VIA AVEGEXIT.
036223,000030: 
036224,000031: 37,3376           77201                          SETPD    VLOAD                                 
036225,000032: 37,3377           00001                                   0                                     
036226,000033: 37,3400           01177                                   VN                                    #  KVSCALE = (12800/ .3048) /2VS
036227,000034: 37,3401           63361                          VXSC     PDVL                                  
036228,000035: 37,3402           37674                                   -KVSCALE                              #  KVSCALE = .81491944
036229,000036: 37,3403           01714                                   UNITW                                 #  FULL UNIT VECTOR
036230,000037: 37,3404           74235                          VXV      VXSC                                  #  VREL = V - WE*R
036231,000038: 37,3405           01760                                   UNITR                                 
036232,000039: 37,3406           15244                                   KWE                                   
036233,000040: 37,3407           45455                          VAD      STADR                                 
036234,000041: 37,3410           74251                          STORE    -VREL                                 #  SAVE FOR ENTRY GUIDANCE.  REF COORDS
036235,000042: 
036236,000043: 37,3411           72056                          UNIT     LXA,1                                 
036237,000044: 37,3412           00044                                   36D                                   #  ABVAL( -VREL) TO X1
036238,000045: 37,3413           03542                          STORE    UXA/2                                 #  -UVREL                   REF COORDS
036239,000046: 
036240,000047: 37,3414           57435                          VXV      VCOMP                                 
036241,000048: 37,3415           01760                                   UNITR                                 #  .5 UNIT                  REF COORDS
036242,000049: 37,3416           66256                          UNIT     SSP                                   #  THE FOLLOWING IS TO PROVIDE A STABLE
036243,000050: 37,3417           00051                                   S1                                    #  UN FOR THE END OF THE TERMINAL PHASE.
036244,000051: 37,3420           00476        SPVQUIT           DEC      .019405                               #  1000/ 2 VS
036245,000052: 37,3421           77300                          TIX,1    VLOAD                                 #  IF V-VQUIT POS, BRANCH.
036246,000053: 37,3422           77424                                   CM/POSE2                              #  SAME UYA IN OLDUYA
036247,000054: 37,3423           03534                                   OLDUYA                                #  OTHERWISE CONTINUE TO USE OLDUYA.
036248,000055: 37,3424           03550        CM/POSE2          STORE    UYA/2                                 #                           REF COORDS
036249,000056: 
036250,000057: 37,3425           03534                          STORE    OLDUYA                                #  RESTORE, OR SAVE AS CASE MAY BE.
036251,000058: 
036252,000059: 37,3426           57435                          VXV      VCOMP                                 
036253,000060: 37,3427           03542                                   UXA/2                                 #  FINISH OBTAINING TRAJECTORY TRIAD.
036254,000061: 37,3430           77772                          VSL1                                           
036255,000062: 37,3431           03556                          STORE    UZA/2                                 #                           REF COORDS
036256,000063:                                                                                                 # # Page 834
036257,000064: 37,3432           77751                          TLOAD                                          #  PICK UP CDUX, CDUY, CDUZ CORRESPONDING
036258,000065: 37,3433           03270                                   AOG/PIP                               #  TO PIPUP TIME IN 2S,C AND SAVE.
036259,000066: 37,3434           14031        CM/TRIO           STODL    24D                                   
036260,000067: 37,3435           00032                                   25D                                   #  AIG/PIP
036261,000068: 
036262,000069: 37,3436           41434                          RTB      PUSH                                  #  TO PDL0
036263,000070: 37,3437           45510                                   CDULOGIC                              
036264,000071: 37,3440           77746                          COS                                            
036265,000072: 37,3441           17564                          STODL    UBX/2                                 #  CI /2
036266,000073:                                                                                                 #                                           AIG/PIP FROM PDL 0
036267,000074: 37,3442           57556                          SIN      DCOMP                                 
036268,000075: 37,3443           17570                          STODL    UBX/2      +4                         #  -SI /2
036269,000076: 37,3444           00033                                   26D                                   #  AMG/PIP
036270,000077: 37,3445           41434                          RTB      PUSH                                  #  TO PDL 0
036271,000078: 37,3446           45510                                   CDULOGIC                              
036272,000079: 37,3447           65356                          SIN      PDDL                                  #  XCH PDL 0. SAVE SM /2
036273,000080: 37,3450           65346                          COS      PDDL                                  #  CM /2 TO PDL 2
036274,000081: 37,3451           00001                                   0                                     #  SM /2
036275,000082: 37,3452           74276                          DCOMP    VXSC                                  
036276,000083: 37,3453           03564                                   UBX/2                                 
036277,000084: 37,3454           77772                          VSL1                                           #  NOISE WONT OVFL.
036278,000085: 37,3455           17572                          STODL    UBY/2                                 #  =(-SMCI, NOISE, SMSI) /2
036279,000086: 37,3456           00003                                   2                                     #  CM /2 REPLACES NOISE
036280,000087: 37,3457           17574                          STODL    UBY/2      +2                         #  UBY/2=(-SMCI, CM, SMSI)/2
036281,000088: 37,3460           00031                                   24D                                   #  AOG/PIP
036282,000089: 37,3461           41434                          RTB      PUSH                                  #  TO PDL 4
036283,000090: 37,3462           45510                                   CDULOGIC                              
036284,000091: 37,3463           65356                          SIN      PDDL                                  #  XCH PDL 4. SAVE SO /2
036285,000092: 37,3464           74346                          COS      VXSC                                  #  CO /2
036286,000093: 37,3465           03572                                   UBY/2                                 
036287,000094: 37,3466           17572                          STODL    UBY/2                                 #  UBY/2=(-COSMCI, COCM, COSMSI)/4
036288,000095: 37,3467           00005                                   4D                                    #  SO /2
036289,000096: 37,3470           57405                          DMP      DCOMP                                 
036290,000097: 37,3471           03570                                   UBX/2      +4                         #  -SI /2
036291,000098: 37,3472           77615                          DAD                                            
036292,000099: 37,3473           03572                                   UBY/2                                 #   INCREMENT BY (SOSI /4)
036293,000100: 37,3474           17572                          STODL    UBY/2                                 
036294,000101:                                                                                                 #                                           SO /2 FROM PDL 4
036295,000102: 37,3475           43205                          DMP      DAD                                   
036296,000103: 37,3476           03564                                   UBX/2                                 #  CI /2
036297,000104: 37,3477           03576                                   UBY/2      +4                         
036298,000105: 37,3500           27576                          STOVL    UBY/2      +4                         #  YB/4               PLATFORM COORDS
036299,000106: 
036300,000107:                                                                                                 #                                   YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI )
036301,000108: 
036302,000109: 37,3501           03572                                   UBY/2                                 
036303,000110: 37,3502           72505                          VXM      VSL2                                  
036304,000111: 37,3503           01736                                   REFSMMAT                              #  .5 UNIT
036305,000112: 37,3504           17572                          STODL    UBY/2                                 #  YB/2 DONE                REF COORDS
036306,000113:                                                                                                 # # Page 835
036307,000114:                                                                                                 #  CM /2 FROM PDL 2
036308,000115: 37,3505           76561                          VXSC     VSL1                                  
036309,000116: 37,3506           03564                                   UBX/2                                 
036310,000117: 37,3507           17564                          STODL    UBX/2                                 #  =( CMCI, NOISE, -CMSI)/2
036311,000118: 37,3510           77626                          STADR                                          #  SM /2 FROM PDL 0
036312,000119: 37,3511           50211                          STOVL    UBX/2      +2                         #  SM /2 REPLACES NOISE
036313,000120: 37,3512           03564                                   UBX/2                                 #  XB/2               PLATFORM COORDS
036314,000121: 
036315,000122:                                                                                                 #                                   XB = ( CMCI , SM , -CMSI )
036316,000123: 
036317,000124: 37,3513           76505                          VXM      VSL1                                  
036318,000125: 37,3514           01736                                   REFSMMAT                              #  .5 UNIT
036319,000126: 37,3515           03564                          STORE    UBX/2                                 #  XB/2  DONE               REF COORDS
036320,000127: 
036321,000128: 37,3516           76435                          VXV      VSL1                                  
036322,000129: 37,3517           03572                                   UBY/2                                 
036323,000130: 37,3520           27600                          STOVL    UBZ/2                                 #  ZB/2  DONE               REF COORDS
036324,000131: 
036325,000132:                                                                                                 #                                   EQUIVALENT TO
036326,000133:                                                                                                 #                                   ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI )
036327,000134: 
036328,000135: 37,3521           03542                                   UXA/2                                 #  -UVREL/2 = -UVA/2
036329,000136: 37,3522           53435                          VXV      UNIT                                  #  GET UNIT(-UVREL*UBY)/2  = UL/2
036330,000137: 37,3523           03572                                   UBY/2                                 #  YB/2
036331,000138: 37,3524           50206                          PUSH     DOT                                   #  UL/2 TO PDL 0,5
036332,000139: 37,3525           03556                                   UZA/2                                 #  UNA/2
036333,000140: 37,3526           24021                          STOVL    COSTH                                 #  COS(ROLL)/4
036334,000141: 37,3527           00001                                   0                                     #  UL/2
036335,000142: 
036336,000143: 37,3530           77641                          DOT                                            
036337,000144: 37,3531           03550                                   UYA/2                                 
036338,000145: 37,3532           34023                          STCALL   SINTH                                 #  -SIN(ROLL)/4
036339,000146: 37,3533           47211                                   ARCTRIG                               
036340,000147: 37,3534           24007                          STOVL    6D                                    #  -(ROLL/180) /2
036341,000148: 37,3535           03572                                   UBY/2                                 
036342,000149: 37,3536           72441                          DOT      SL1                                   #  -UVA.UBY = -SIN(BETA)
036343,000150: 37,3537           03542                                   UXA/2                                 #  -UVREL/2
036344,000151: 37,3540           77736                          ARCSIN                                         
036345,000152: 37,3541           24010                          STOVL    7D                                    #  -(BETA/180) /2
036346,000153: 37,3542           03564                                   UBX/2                                 #  XB/2
036347,000154: 37,3543           77641                          DOT                                            #  UL.UBX = -SIN(ALFA)
036348,000155: 37,3544           00001                                   0                                     #  UL/2
036349,000156: 37,3545           24023                          STOVL    SINTH                                 #  -SIN(ALFA)/4
036350,000157: 37,3546           77641                          DOT                                            #  UL/2 FROM PDL 0
036351,000158: 37,3547           03600                                   UBZ/2                                 
036352,000159: 37,3550           34021                          STCALL   COSTH                                 #  COS(ALFA)/2
036353,000160: 37,3551           47211                                   ARCTRIG                               
036354,000161: 37,3552           24011                          STOVL    8D                                    #  -(ALFA/180) /2
036355,000162: 37,3553           01760                                   UNITR                                 #  UR/2                     REF COORDS
036356,000163: 37,3554           72441                          DOT      SL1                                   
036357,000164:                                                                                                 # # Page 836
036358,000165: 37,3555           03556                                   UZA/2                                 #  MORE ACCURATE AT LARGE ARG.
036359,000166: 37,3556           77726                          ARCCOS                                         
036360,000167: 37,3557           00013                          STORE    10D                                   #  (-GAMA/180)/2
036361,000168: 
036362,000169: 37,3560           77551                          TLOAD    EXIT                                  #  ANGLES IN MPAC IN THE ORDER
036363,000170:                                                                                                 #                                           -( (ROLL, BETA, ALFA) /180)/2
036364,000171: 37,3561           00007                                   6D                                    #  THESE VALUES CORRECT AT PIPUP TIME.
036365,000172: 
036366,000173:                                                                                                 # # Page 837
036367,000174:                                                                                                 #  BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES
036368,000175: 
036369,000176: 37,3562  E6,1661                                 EBANK=   AOG                                   
036370,000177: 
036371,000178: 37,3562           34752        CM/ATUP           CA       EBAOG                                 
036372,000179: 37,3563           54003                          TS       EBANK                                 
036373,000180: 37,3564           50120        CMTR1             INDEX    FIXLOC                                
036374,000181: 37,3565           40012                          CS       10D                                   #  (GAMA/180)/2
036375,000182: 37,3566           57722                          XCH      GAMA                                  
036376,000183: 37,3567           54001                          TS       L                                     
036377,000184: 
036378,000185: 37,3570           00004                          INHINT                                         
036379,000186:                                                                                                 #                                   MUST REMAIN INHINTED UNTIL UPDATE OF BODY
036380,000187:                                                                                                 #                                   ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS
036381,000188:                                                                                                 #                                   INDICATOR.
036382,000189: 
036383,000190: 37,3571           40102                          CS       CM/FLAGS                              
036384,000191: 37,3572           74700                          MASK     BIT11                                 #  GAMDIFSW=94D BIT11   INITLY=0
036385,000192: 37,3573           00006                          EXTEND                                         #  DONT CALC GAMA DOT UNTIL HAVE FORMD
036386,000193:                                                                                                 #                                           ONE DIFFERENCE.
036387,000194: 37,3574           13577                          BZF      DOGAMDOT                              #  IS OK, GO ON.
036388,000195: 37,3575           26102                          ADS      CM/FLAGS                              #  KNOW BIT IS 0
036389,000196: 37,3576           03612                          TC       NOGAMDOT                              #  SET GAMDOT = 0
036390,000197: 
036391,000198: 37,3577           40001        DOGAMDOT          CS       L                                     
036392,000199: 37,3600           61722                          AD       GAMA                                  #  DEL GAMA/360= T GAMDOT/360
036393,000200: 37,3601           00006                          EXTEND                                         
036394,000201: 37,3602           73675                          MP       TCDU                                  #  TCDU = .1 SEC,   T = 2 SEC.
036395,000202: 37,3603           55723                          TS       GAMDOT                                #  GAMA DOT TCDU / 180
036396,000203: 
036397,000204: 37,3604           00006                          EXTEND                                         #  IGNORE GAMDOT IF LEQ  .5 DEG/SEC
036398,000205: 37,3605           63607                          BZMF     +2                                    
036399,000206: 37,3606           40000                          COM                                            
036400,000207: 37,3607           64715                          AD       FIVE                                  
036401,000208: 37,3610           00006                          EXTEND                                         
036402,000209: 37,3611           63614                          BZMF     +3                                    #  SET GAMDOT=+0 AS TAG IF TOO SMALL.
036403,000210: 
036404,000211: 37,3612           34714        NOGAMDOT          CA       ZERO                                  #  COME HERE INHINTED.
036405,000212: 37,3613           55723                          TS       GAMDOT                                
036406,000213:                                                                                                 #                                           FOR NOW LEAVE IN 2S,C
036407,000214:                                                                                                 #                                           UPDATE ANGLES BY CORRECTING EUILER ANG
036408,000215:                                                                                                 #                                           FOR ACCRUED INCREMENT SINCE PIPUP
036409,000216:                                                                                                 #                                           R = R EUIL + R(NOW) -R(PIPUP)
036410,000217: 37,3614           40154                          CS       MPAC                                  #  GET (R EUL/180) /2
036411,000218: 37,3615           60000                          DOUBLE                                         #  POSSIBLE OVERFLOW
036412,000219: 37,3616           03665                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
036413,000220: 37,3617           00006                          EXTEND                                         
036414,000221: 37,3620           61672                          SU       ROLL/PIP                              #  GET INCR SINCE PIPUP
036415,000222: 37,3621           61664                          AD       ROLL/180                              #  ONLY SINGLE OVFL POSSIBLE.
036416,000223: 37,3622           03665                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
036417,000224:                                                                                                 # # Page 838
036418,000225: 37,3623           55770                          TS       TEMPROLL                              
036419,000226: 
036420,000227: 37,3624           40156                          CS       MPAC       +2                         #  GET (ALFA EUL/180) /2
036421,000228: 37,3625           60000                          DOUBLE                                         #  SAME AS FOR ROLL. NEEDED FOR EXT ATM DAP
036422,000229: 37,3626           03665                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
036423,000230: 37,3627           00006                          EXTEND                                         
036424,000231: 37,3630           61673                          SU       ALFA/PIP                              
036425,000232: 37,3631           61665                          AD       ALFA/180                              
036426,000233: 37,3632           03665                          TC       CORANGOV                              #  CORRECT FOR OVFL IF ANY
036427,000234: 37,3633           55771                          TS       TEMPALFA                              
036428,000235: 
036429,000236: 37,3634           40155                          CS       MPAC       +1                         #  GET (BETA EUL/180) /2
036430,000237: 37,3635           60000        CMTR2             DOUBLE                                         
036431,000238: 37,3636           00006                          EXTEND                                         
036432,000239: 37,3637           61674                          SU       BETA/PIP                              
036433,000240: 37,3640           61666                          AD       BETA/180                              
036434,000241: 37,3641           57772                          XCH      TEMPBETA                              #  OVFL NOT EXPECTED.
036435,000242: 
036436,000243: 37,3642           34744                          CA       EBANK3                                
036437,000244: 37,3643           54003                          TS       EBANK                                 
036438,000245: 
036439,000246: 37,3644  E3,1446                                 EBANK=   PHSNAME5                              
036440,000247: 37,3644           00006                          EXTEND                                         
036441,000248: 37,3645           33677                          DCA      REPOSADR                              #  THIS ASSUMES THAT THE   TC   PHASCHNG
036442,000249: 37,3646           53447                          DXCH     PHSNAME5                              #  IS NOT CHANGED IN       OCT  10035
036443,000250:                                                                                                 #                                           SERVICER.
036444,000251: 
036445,000252: 37,3647           34752                          CA       EBAOG                                 
036446,000253: 37,3650           54003                          TS       EBANK                                 
036447,000254: 
036448,000255: 37,3651  E6,1661                                 EBANK=   AOG                                   
036449,000256: 37,3651           00006        REDOPOSE          EXTEND                                         #  RE-STARTS COME HERE
036450,000257: 37,3652           31771                          DCA      TEMPROLL                              
036451,000258: 37,3653           53665                          DXCH     ROLL/180                              
036452,000259: 37,3654           31772                          CA       TEMPBETA                              
036453,000260: 37,3655           55666                          TS       BETA/180                              
036454,000261: 
036455,000262: 37,3656           00003                          RELINT                                         
036456,000263: 
036457,000264: 37,3657           06006                          TC       INTPRET                               #  CANT TC DANZIG AFTER PHASCHNG.
036458,000265: 37,3660           51575        CM/POSE3          VLOAD    ABVAL                                 #  RETURN FROM CM/ATUP.  (RESTART)
036459,000266: 37,3661           01177                                   VN                                    #  2(-7)  M/CS
036460,000267: 37,3662           03723                          STORE    VMAGI                                 #  FOR DISPLAY ON CALL.
036461,000268: 
036462,000269: 37,3663           77650                          GOTO                                           
036463,000270: 37,3664           03324                                   POSEXIT                               #  ENDEXIT, STARTENT, OR SCALEPOP.
036464,000271: 
036465,000272: 37,3665           54001        CORANGOV          TS       L                                     
036466,000273: 37,3666           00002                          TC       Q                                     
036467,000274: 37,3667           50000                          INDEX    A                                     
036468,000275:                                                                                                 # # Page 839
036469,000276: 37,3670           34673                          CA       LIMITS                                
036470,000277: 37,3671           26001                          ADS      L                                     
036471,000278: 37,3672           00002                          TC       Q                                     #  COSTS 2 MCT TO USE. SEE ANGOVCOR.
036472,000279: 
036473,000280: 37,3673           45730 53410  -KVSCALE          2DEC     -.81491944                            #  -12800/(2 VS .3048)
036474,000281: 37,3675           03146        TCDU              DEC      .1                                    #  TCDU = .1 SEC.
036475,000282: 
036476,000283: 37,3676  E6,1661                                 EBANK=   AOG                                   
036477,000284: 37,3676           03651 76066  REPOSADR          2CADR    REDOPOSE                              

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