Source Code
![]() |
This is the source-code for the Apollo 9 Command Module's Guidance Computer.
These files were derived originally from the scan from MIT's Dibner Institute's
now-discontinued website titled "History of Recent Science and Technology", which
in turn was originally created by Gary Neff, though his high-quality scans were
unfortunately reduced in legibility when presented online.
The markings on the front of the
printout imply that it was the original AGC developer Norm Brodeur's copy.
A scan by Ron Burkey has superceded it, made from a more-legible copy from the collection of original
AGC developer Fred Martin. The source code was transcribed from
those images by Ron Burkey. Note that the page images
presented online are of reduced quality, and that higher-quality 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:ASSEMBLE REVISION 249 OF AGC PROGRAM COLOSSUS BY NASA 2021111-041 20'35 OCT. 28,1968Note that the date is the date of the printout, not the date of the program revision. |
042102,000002: ## Copyright: Public domain.
042103,000003: ## Filename: TVCSTROKETEST.agc
042104,000004: ## Purpose: Part of the source code for Colossus, build 249.
042105,000005: ## It is part of the source code for the Command Module's (CM)
042106,000006: ## Apollo Guidance Computer (AGC), for Apollo 9.
042107,000007: ## Assembler: yaYUL
042108,000008: ## Reference: Starts on p. 943.
042109,000009: ## Contact: Ron Burkey <info@sandroid.org>.
042110,000010: ## Website: www.ibiblio.org/apollo/index.html
042111,000011: ## Mod history: 08/23/04 RSB. Began transcribing.
042112,000012: ## 05/14/05 RSB Corrected website reference above.
042113,000013: ## 2010-10-24 JL Indentation fixes.
042114,000014: ## 2017-01-06 RSB Page numbers now agree with those on the
042115,000015: ## original harcopy, as opposed to the PDF page
042116,000016: ## numbers in 1701.pdf.
042117,000017: ## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
042118,000018: ## vs the already-proofed corresponding Colossus
042119,000019: ## 237 and Comanche 55 source-code files
042120,000020: ## and corrected errors found.
042121,000021: ##
042122,000022: ## The contents of the "Colossus249" files, in general, are transcribed
042123,000023: ## from a scanned copy of the program listing. Notations on this
042124,000024: ## document read, in part:
042125,000025: ##
042126,000026: ## Assemble revision 249 of AGC program Colossus by NASA
042127,000027: ## 2021111-041. October 28, 1968.
042128,000028: ##
042129,000029: ## This AGC program shall also be referred to as
042130,000030: ## Colossus 1A
042131,000031: ##
042132,000032: ## Prepared by
042133,000033: ## Massachusetts Institute of Technology
042134,000034: ## 75 Cambridge Parkway
042135,000035: ## Cambridge, Massachusetts
042136,000036: ## under NASA contract NAS 9-4065.
042137,000037: ##
042138,000038: ## Refer directly to the online document mentioned above for further information.
042139,000039: ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
042140,000040: ##
042141,000041: ## In some cases, where the source code for Luminary 131 overlaps that of
042142,000042: ## Colossus 249, this code is instead copied from the corresponding Luminary 131
042143,000043: ## source file, and then is proofed to incorporate any changes.
042144,000044:
![]() |
Page 943 |
042146,000046: # NAME STROKE TEST PACKAGE (INCLUDING INITIALIZATION PACKAGE)
042147,000047: # ORIGINAL CODING BY OLSSON LOG SECTION....STROKE TEST PACKAGE
042148,000048: # MOD BY ENGEL DATE....21 MARCH, 1967
042149,000049:
042150,000050: # FUNCTIONAL DESCRIPTION....
042151,000051: # STROKE TEST PACKAGE GENERATES A WAVEFORM DESIGNED TO EXCITE BENDING
042152,000052: # STRKTSTI (STROKE TEST INITIALIZATION) IS CALLED AS A JOB BY VB68.
042153,000053: # IT INITIALIZES ALL ERASABLES REQD FOR A STROKE TEST, AND
042154,000054: # THEN TESTS FOR AN 80MS DAP. IF 80MS IT SETS STROKER = ESTROKER
042155,000055: # FOR AN IMMEDIATE STROKE TEST, OTHERWISE IT MERELY ENABLES
042156,000056: # A STROKE TEST BY SETTING STROKER TO -0. THE STROKE TEST
042157,000057: # THEN AWAITS SWITCHOVER TO THE 80MS DAP WHEREUPON IT IS
042158,000058: # ENABLED AFTER AN ADDITIONAL 4 SECOND DELAY TO AVOID
042159,000059: # THE SWITCHOVER TRANSIENTS (SEE STRKCALL, STRKUP IN
042160,000060: # TVCEXECUTIVE)
042161,000061: # HACK (STROKE TEST) GENERATES THE WAVEFORM BY DUMPING PULSE BURSTS
042162,000062: # OF PROPER SIGN AND IN PROPER SEQUENCE DIRECTLY INTO
042163,000063: # TVCPITCH, WORKING IN CONJUNCITON WITH BOTH PITCH AND YAW
042164,000064: # TVC DAPS, WITH INTERMEDIATE WAITLIST CALLS. NOTE, HOWEVER
042165,000065: # THAT THE STROKE TEST IS PERFORMED ONLY IN THE PITCH AXIS.
042166,000066: # AN EXAMPLE WAVEFORM IS GIVEN BELOW, TO DEMONSTRATE STROKE-
042167,000067: # TEST PARAMETER SELECTION
042168,000068: # RESTARTS CAUSE TEST TO BE TERMINATED. ANOTHER V68 REQD IF TEST
042169,000069: # IS TO BE RE-RUN.
042170,000070: # PULSE BURST SIZE IS PAD-LOADED (ESTROKER) SO THAT AMPLITUDE OF
042171,000071: # WAVEFORM CAN BE CHANGED. THERE ARE TEN PULSE BURSTS IN
042172,000072: # THE HALF-AMPLITUDE OF THE FIRST FREQUENCY SET IN THE
042173,000073: # STANDARD WAVEFORM. AMPLITUDE IS 10(ESTROKER)(1/42.15),
042174,000074: # NOMINALLY 50/42.15 = 1.185 DEG
042175,000075:
042176,000076: # CALLING SEQUENCE....
042177,000077: # EXTENDED VERB 68 SETS UP STRKTSTI JOB
042178,000078: # PITCH AND YAW TVCDAPS, FINDING STROKER NON-ZERO, DO A ..TC HACK..
042179,000079: # AN INTERNALLY-GENERATED WAITLIST CALL ENTERS AT ..HACKWLST..
042180,000080:
042181,000081: # NORMAL EXIT MODES....
042182,000082: # TC BUNKER (..Q.. IF ENTRY FROM DAP, ..TCTSKOVR.. IF FROM WAITLIST) LIST
042183,000083:
042184,000084: # SUBROUTINES CALLED....
042185,000085: # WAITLIST
042186,000086:
042187,000087: # ALARM OR ABORT EXIT MODES....
042188,000088: # NONE
042189,000089:
042190,000090: # ERASABLE INITIALIZATION REQUIRED....
042191,000091: # ESTROKER (PAD-LOAD)
042192,000092: # STROKER, CADDY, REVS, CARD, N
042193,000093:
042194,000094: # OUTPUT....
042195,000095: # STRKTSTI...INITIALIZATION FOR STROKE TEST
042196,000096: # HACK, HACKWLST...PULSE BURSTS INTO TVCPITCH VIA..ADS..
042197,000097: # RESETS STROKER = +0 WHEN TEST COMPLETED
042198,000098:
042199,000099: # DEBRIS....
042200,000100: # N = CADDY = +0, CARD = -0, REVS = -1
042201,000101: # BUNKER
![]() |
Page 944 |
042203,000103:
042204,000104: # EXAMPLE STROKE TEST WAVE FORM, DEMONSTRATING PARAMETER SELECTION
042205,000105: # NOTE....THIS IS NOT THE OFFICIAL WAVEFORM....
042206,000106:
042207,000107: # ** **
042208,000108: # ** **
042209,000109: # ** ** EXAMPLE WAVEFORM (EACH * REPRESENTS
042210,000110: # * * * * 85.41 ARCSEC OF ACTUATOR CMND)
042211,000111: # * * * *
042212,000112: # * * * *
042213,000113: # * * * * ** ** ** ** **
042214,000114: # * * * * ** ** ** ** **
042215,000115: # * * * * ** ** ** ** **
042216,000116: # * * * * * * * * * * * * * * ** ** ** ** **
042217,000117: # * * * * * * * * * * * * * * ** ** ** ** **
042218,000118: # * * * * * * * * * * * * * * ** ** ** ** **
042219,000119: # -----------------------------------------------------------------------------------------------------
042220,000120: # * * * * * * * * * * * * * * ** ** ** ** **
042221,000121: # * * * * * * * * * * * * * * ** ** ** ** **
042222,000122: # * * * * * * * * * * * * * * ** ** ** ** **
042223,000123: # * * * * ** ** ** ** **
042224,000124: # * * * * ** ** ** ** **
042225,000125: # * * * * ** ** ** ** **
042226,000126: # * * * *
042227,000127: # * * * *
042228,000128: # * * * *
042229,000129: # ** **
042230,000130: # ** **
042231,000131: # ** **
042232,000132:
042233,000133: # FOR THIS (UNOFFICIAL, EXAMPLE) WAVEFORM, THE REQUIRED PARAMETERS ARE AS FOLLOWS....
042234,000134:
042235,000135: # FCARD = +3 (NUMBER OF SETS)
042236,000136: # ESTROKER = +3 (PULSE BURST SIZE, SC.AT 85.41 ARCSEC/BIT)
042237,000137:
042238,000138: # SET1..
042239,000139: # FREVS = +3 (NUMBER REVERSALS MINUS 1)
042240,000140: # FCADDY = +4 (NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)
042241,000141: # SET2..
042242,000142: # FCARD1 = +9 (NUMBER REVERSALS MINUS 1)
042243,000143: # FCARD4 = +2 (NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)
042244,000144: # SET3..
042245,000145: # FCARD2 = +9 (NUMBER REVERSALS MINUS 1)
042246,000146: # FCARD5 = +1 (NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)
042247,000147: # SET4..
042248,000148: # FCARD3 = +0 (NUMBER REVERSALS MINUS 1)
042249,000149: # FCARD6 = +0 (NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)
042250,000150:
![]() |
Page 945 |
042252,000152: # STROKE TEST INITIALIZATION PACKAGE (AS A JOB, FROM VERB 68)
042253,000153:
042254,000154: 17,2213 BANK 17
042255,000155: 20,2000 SETLOC DAPS2
042256,000156: 20,2000 BANK
042257,000157:
042258,000158: 20,3446 COUNT* $$/STRK
042259,000159: 20,3446 E6,1665 EBANK= CADDY
042260,000160:
042261,000161: 20,3446 03465 STRKTSTI TCR TSTINIT # STROKE TEST INITIALIZATION PKG (CALLED
042262,000162: # AS A JOB BY VERB68)
042263,000163:
042264,000164: 20,3447 00004 TVCDTCHK INHINT # STROKE TEST PERMITTED ONLY WITH 80MS DAP
042265,000165: 20,3450 31635 CAE T5TVCDT # CHECK CURRENT TIMING
042266,000166: 20,3451 54001 TS L
042267,000167: 20,3452 37677 CAF OCT37774 # LOOK FOR 80MS (T5)
042268,000168: 20,3453 00006 EXTEND
042269,000169: 20,3454 06001 RXOR LCHAN # +0 IF 80MS
042270,000170: 20,3455 10000 CCS A
042271,000171: 20,3456 13462 TCF +4 # NOT 80MS
042272,000172:
042273,000173: 20,3457 31412 CAE ESTROKER # 80MS. OK, SET STROKER FOR TEST
042274,000174: 20,3460 55614 TS STROKER
042275,000175: 20,3461 13464 TCF +3
042276,000176:
042277,000177: 20,3462 44714 CS ZERO # ENABLE, BUT DO NOT ACTIVATE STROKE
042278,000178: 20,3463 55614 TS STROKER # TEST, AWAITING SWITCHOVER
042279,000179: # TO MOD0R (MOD80)
042280,000180: 20,3464 15112 TCF ENDOFJOB
042281,000181: 20,3465 43475 TSTINIT CS FCADDY # NORMAL ENTRY FROM STRKTSTI
042282,000182: 20,3466 55665 TS CADDY
042283,000183: 20,3467 55666 TS N # NOTE SGN CHNG FCADDY(+) TO CADDY(-)
042284,000184:
042285,000185: 20,3470 33476 CAF FREVS
042286,000186: 20,3471 55670 TS REVS
042287,000187:
042288,000188: 20,3472 43477 CS FCARD # NOTE SGN CHNG FCARD(+) TO CARD(-)
042289,000189: 20,3473 55671 TS CARD
042290,000190:
042291,000191: 20,3474 00002 TC Q # RETURN TO STRKTSTI+1 (OR CHKSTRK+2 OR +4)
042292,000192:
![]() |
Page 946 |
042294,000194: # THE OFFICIAL STROKE TEST WAVEFORM (3 JAN, 1967) CONSISTS OF FOUR STROKE SETS, AS FOLLOWS....
042295,000195:
042296,000196: # SET 1...10 BURSTS IN 1/2 AMP, 4 REVERSALS
042297,000197: # SET 2... 6 BURSTS IN 1/2 AMP, 6 REVERSALS
042298,000198: # SET 3... 5 BURSTS IN 1/2 AMP, 10 REVERSALS
042299,000199: # SET 4... 4 BURSTS IN 1/2 AMP, 14 REVERSALS
042300,000200:
042301,000201: # THE PULSE BURST SIZE (ESTROKER) IS PAD-LOADED (5 BITS AS OF 3 JAN, 1967)
042302,000202: # THE REMAINING WAVEFORM-GENERATING PARAMETERS ARE AS FOLLOWS....
042303,000203:
042304,000204: 20,3475 00012 FCADDY DEC 10 B-14 # NO. PULSE BURSTS IN 1/2 AMP, SET1..(+10)
042305,000205: 20,3476 00003 FREVS DEC 3 B-14 # NO. REVERSALS MINUS 1, SET1........( 3)
042306,000206: 20,3477 00004 FCARD DEC 4 B-14 # NO. STROKE SETS....................(+ 4)
042307,000207: 20,3500 00005 FCARD1 DEC 5 B-14 # NO. REVERSALS MINUS 1, SET2........( 5)
042308,000208: 20,3501 00011 FCARD2 DEC 9 B-14 # 3........( 9)
042309,000209: 20,3502 00015 FCARD3 DEC 13 B-14 # 4........( 13)
042310,000210: 20,3503 00006 FCARD4 DEC 6 B-14 # NO. PULSE BURSTS IN 1/2 AMP, SET2..(+ 6)
042311,000211: 20,3504 00005 FCARD5 DEC 5 B-14 # SET3..(+ 5)
042312,000212: 20,3505 00004 FCARD6 DEC 4 B-14 # SET4..(+ 4)
042313,000213:
042314,000214: 20,3506 4711 20MS = BIT2
042315,000215:
042316,000216: # STROKE TEST PACKAGE PROPER....
042317,000217:
042318,000218: 20,3506 E6,1667 EBANK= BUNKER
042319,000219:
042320,000220: 20,3506 00006 HACK EXTEND # ENTRY (IN T5 RUPT) FROM TVCDAPS
042321,000221: 20,3507 23667 QXCH BUNKER # SAVE Q FOR DAP RETURN
042322,000222:
042323,000223: 20,3510 34711 CAF 20MS # 2DAPSX2(PASSES/DAP)X2(CS/PASS)=8CS=TVCDT
042324,000224: 20,3511 05140 TC WAITLIST
042325,000225: 20,3512 E6,1667 EBANK= BUNKER
042326,000226: 20,3512 03515 40066 2CADR HACKWLST
042327,000227:
042328,000228: 20,3514 13517 TCF +3
042329,000229:
042330,000230: 20,3515 34367 HACKWLST CAF TCTSKOVR # ENTRY FROM WAITLIST
042331,000231: 20,3516 55667 TS BUNKER # BUNKER IS TC TASKOVER
042332,000232:
042333,000233: 20,3517 31614 CA STROKER # STROKE
042334,000234: 20,3520 26054 ADS TVCPITCH
042335,000235:
042336,000236: 20,3521 34700 CAF BIT11 # RELEASE THE ERROR COUNTERS
042337,000237: 20,3522 00006 EXTEND
042338,000238: 20,3523 05014 WOR CHAN14
042339,000239: 20,3524 25665 INCR CADDY # COUNT DOWN THE NO. BURSTS, THIS SLOPE
![]() |
Page 947 |
042341,000241: 20,3525 41665 CS CADDY
042342,000242: 20,3526 00006 EXTEND
042343,000243: 20,3527 63531 BZMF +2
042344,000244: 20,3530 01667 TC BUNKER # EXIT, WHILE ON A SLOPE
042345,000245: 20,3531 11670 CCS REVS
042346,000246: 20,3532 13552 TCF REVUP # POSITIVE REVS
042347,000247: 20,3533 13556 TCF REVUP +4 # FINAL REVERSAL, THIS SET
042348,000248:
042349,000249: 20,3534 25671 INCR CARD # NEGATIVE REVS SET LAST PASS, READY FOR
042350,000250: 20,3535 41671 CS CARD # THE NEXT SET. CHECK IF NO MORE SETS
042351,000251: 20,3536 00006 EXTEND
042352,000252: 20,3537 13550 BZF STROKILL # ALL SETS COMPLETED
042353,000253:
042354,000254: 20,3540 51671 INDEX CARD
042355,000255: 20,3541 33503 CAF FCARD +4 # PICK UP NO. REVERSALS (-), NEXT SET
042356,000256: 20,3542 55670 TS REVS # REINITIALIZE
042357,000257: 20,3543 51671 INDEX CARD
042358,000258: 20,3544 43506 CS FCARD +7 # PICK UP NO. BURSTS IN 1/2AMP, NEXT SET
042359,000259: 20,3545 55666 TS N # REINITIALIZE
042360,000260: 20,3546 55665 TS CADDY
042361,000261: 20,3547 01667 TC BUNKER # EXIT, AT END OF SET
042362,000262: 20,3550 55614 STROKILL TS STROKER # RESET (TO +0) TO END TEST
042363,000263: 20,3551 01667 TC BUNKER # EXIT, STROKE TEST FINIS
042364,000264: 20,3552 55670 REVUP TS REVS # ALL REVERSALS EXCEPT LAST OF SET
042365,000265: 20,3553 31666 CA N
042366,000266: 20,3554 60000 DOUBLE # 2 X 1/2AMP
042367,000267: 20,3555 13561 TCF +4
042368,000268:
042369,000269: 20,3556 44712 +4 CS ONE # FINAL REVERSAL, THIS SET
042370,000270: 20,3557 55670 TS REVS # PREPARE TO BRANCH TO NEW BURST
042371,000271: 20,3560 31666 CA N # JUST RETURN TO ZERO, FINAL SLOPE OF SET
042372,000272: 20,3561 55665 TS CADDY # CADUP
042373,000273:
042374,000274: 20,3562 41614 CS STROKER # CHANGE SIGN OF SLOPE
042375,000275: 20,3563 55614 TS STROKER
042376,000276: 20,3564 01667 TC BUNKER # EXIT AT A REVERSAL (SLOPE CHANGE)
End of include-file TVCSTROKETEST.agc. Parent file is MAIN.agc