Source Code
![]() |
These source-code files were from the printout at the MIT Museum, with many thanks
to Deborah Douglas, the Museum's Curator of Science and Technology, for releasing
it to us. The printout was digitally photographed by Paul Fjeld. A team of
volunteers transcribed the source code manually from these images or, where
appropriate, modified already-transcribed but similar source Colossus 249 (Apollo 9)
source code to agree with the images from the printout. 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:GAP: ASSEMBLE REVISION 055 OF AGC PROGRAM COMANCHE BY NASA 2021113-051 10:28 APR. 1,1969Note that the date is the date of the printout, not the date of the program revision. |
044029,000002: ## Copyright: Public domain.
044030,000003: ## Filename: TVCROLLDAP.agc
044031,000004: ## Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
044032,000005: ## It is part of the source code for the Command Module's (CM)
044033,000006: ## Apollo Guidance Computer (AGC), for Apollo 11.
044034,000007: ## Assembler: yaYUL
044035,000008: ## Contact: Ron Burkey <info@sandroid.org>.
044036,000009: ## Website: www.ibiblio.org/apollo.
044037,000010: ## Pages: 984-998
044038,000011: ## Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the
044039,000012: ## same name, using Comanche055 page images.
044040,000013: ## 2011-05-08 JL Removed workarounds.
044041,000014: ## 2016-12-21 RSB Proofed comment text using octopus/ProoferComments
044042,000015: ## and corrected the errors found.
044043,000016: ## 2017-01-20 RSB Fixed comment-text errors noted while diff'ing
044044,000017: ## vs Colossus 249.
044045,000018:
044046,000019: ## This source code has been transcribed or otherwise adapted from digitized
044047,000020: ## images of a hardcopy from the MIT Museum. The digitization was performed
044048,000021: ## by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many
044049,000022: ## thanks to both. The images (with suitable reduction in storage size and
044050,000023: ## consequent reduction in image quality as well) are available online at
044051,000024: ## www.ibiblio.org/apollo. If for some reason you find that the images are
044052,000025: ## illegible, contact me at info@sandroid.org about getting access to the
044053,000026: ## (much) higher-quality images which Paul actually created.
044054,000027: ##
044055,000028: ## Notations on the hardcopy document read, in part:
044056,000029: ##
044057,000030: ## Assemble revision 055 of AGC program Comanche by NASA
044058,000031: ## 2021113-051. 10:28 APR. 1, 1969
044059,000032: ##
044060,000033: ## This AGC program shall also be referred to as
044061,000034: ## Colossus 2A
044062,000035:
![]() |
Page 984 |
044064,000037: # PROGRAM NAME...TVC ROLL AUTOPILOT
044065,000038: # LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM
044066,000039: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
044067,000040:
044068,000041: # FUNCTIONAL DESCRIPTION....
044069,000042:
044070,000043: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
044071,000044: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
044072,000045: # BY IGNITION (P40)
044073,000046: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
044074,000047: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
044075,000048: # *USES T6 CLOCK TO TIME JET FIRINGS
044076,000049: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
044077,000050: # *MINIMUM JET FIRING TIME = 15 MS
044078,000051: # *JET PAIRS FIRE ALTERNATELY
044079,000052: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
044080,000053: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
044081,000054: # OF A JET FIRING TIME IS MADE ON A LATER PASS
044082,000055:
044083,000056: # CALLING SEQUENCE....
044084,000057:
044085,000058: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
044086,000059: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
044087,000060:
044088,000061: # NORMAL EXIT MODES.... ENDOFJOB
044089,000062:
044090,000063: # ALARM OR ABORT EXIT MODES.... NONE
044091,000064:
044092,000065: # SUBROUTINES CALLED.....NONE
044093,000066:
044094,000067: # OTHER INTERFACES....
044095,000068:
044096,000069: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
044097,000070: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
044098,000071: # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC
044099,000072: # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS
044100,000073: # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED.
044101,000074:
044102,000075: # ERASABLE INITIALIZATION REQUIRED....
044103,000076:
044104,000077: # *1/CONACC (S40.15)
044105,000078: # *OGAD (CDUX AT IGNITION)
044106,000079: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
044107,000080: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
044108,000081: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
044109,000082:
044110,000083: # OUTPUT....
044111,000084:
044112,000085: # *ROLL JET PAIR FIRINGS
044113,000086:
![]() |
Page 985 |
044115,000088: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
044116,000089:
![]() |
Page 986 |
044118,000091: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
044119,000092: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
044120,000093:
044121,000094: # SWITCHING LOGIC IN THE PHASE PLANE....
044122,000095:
044123,000096: # OGARATE
044124,000097: # *
044125,000098: # *
044126,000099: # * * * * * * * * * * * *
044127,000100: # * (REGION 1, SEE TEXT BELOW)
044128,000101: # * *
044129,000102: # *
044130,000103: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
044131,000104: # * * .
044132,000105: # * * *
044133,000106: # * * (FIRE NEG ROLL JETS)
044134,000107: # * * *
044135,000108: # (-DB,+LMCRATE)....* *
044136,000109: # * * *
044137,000110: # * * OGAERROR
044138,000111: # ************************************************************************
044139,000112: # * * (-AK, OGAERR)
044140,000113: # * * * (REGION 6-PRIME)
044141,000114: # * * (SEE TEXT BELOW)
044142,000115: # * * *
044143,000116: # * * ...STRAIGHT LINE
044144,000117: # (FIRE POS ROLL JETS) * * * .
044145,000118: # * (COAST) *
044146,000119: # * * * * * * * * * * *
044147,000120: # * -MINLIM
044148,000121: # * *
044149,000122: # *
044150,000123: # * * * * * * * * * * * * * * * *
044151,000124: # * -MAXLIM
044152,000125: # *
044153,000126: # *
044154,000127:
044155,000128: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
044156,000129: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
044157,000130: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
044158,000131: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
044159,000132: # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
044160,000133: # ABOVE.
044161,000134:
044162,000135: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
044163,000136: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
044164,000137: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
![]() |
Page 987 |
044166,000139:
044167,000140: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
044168,000141: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
044169,000142: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
044170,000143: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
044171,000144: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
044172,000145: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
044173,000146: # INSTEAD. TAKE AN OPERATING POINT IN REGION 6'. PASS A TANGENT TO
044174,000147: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
044175,000148: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
044176,000149: # THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
044177,000150: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
044178,000151: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
044179,000152: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
044180,000153: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
044181,000154: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
044182,000155: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
044183,000156: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
044184,000157: # APPROXIMATION.
044185,000158:
044186,000159: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
044187,000160: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
044188,000161: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
044189,000162: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
044190,000163: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
044191,000164: # THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
044192,000165: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
044193,000166: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
044194,000167: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
044195,000168: # FAILED-ON.
044196,000169:
044197,000170: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
044198,000171: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
044199,000172: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
044200,000173: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
044201,000174: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
044202,000175: # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,
044203,000176: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.
044204,000177:
044205,000178: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
044206,000179: # 2
044207,000180: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
044208,000181:
044209,000182: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
044210,000183:
044211,000184: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
044212,000185:
044213,000186: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
![]() |
Page 988 |
044215,000188:
044216,000189: # EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
044217,000190:
044218,000191: # DOGADOT = NUM/DEN, WHERE
044219,000192: # 2
044220,000193: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
044221,000194: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
044222,000195: # +LMCRATE
044223,000196:
044224,000197: # DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)
044225,000198: # 2
044226,000199: # DELOGA = OGAERROR - (DB - OGARATE (1/CONACC)/2)SGN(OGARATE)
044227,000200:
044228,000201: # FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
044229,000202: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
044230,000203: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
044231,000204: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
044232,000205:
044233,000206: # OGAERROR = DELOGA + DB SGN(OGARATE)
044234,000207:
044235,000208: # OGARATE = -LMCRATE SGN(OGARATE)
044236,000209:
044237,000210: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
044238,000211: # ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED
044239,000212: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
![]() |
Page 989 |
044241,000214:
044242,000215: # ROLLDAP CODING....
044243,000216:
044244,000217: 16,2000 SETLOC DAPROLL
044245,000218: 16,2000 BANK
044246,000219: 16,3272 E6,1662 EBANK= OGANOW
044247,000220: 16,3272 COUNT* $$/ROLL
044248,000221: 16,3272 31662 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
044249,000222: 16,3273 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
044250,000223: 16,3274 21663 MSU OGAPAST
044251,000224: 16,3275 00006 EXTEND
044252,000225: 16,3276 75013 MP BIT5
044253,000226: 16,3277 22000 LXCH A
044254,000227: 16,3300 55533 TS OGARATE # SC.AT B-4 REV/SEC
044255,000228:
044256,000229: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
044257,000230: # EXAMINE DURATION OF LAST JET FIRING IF JETS NOW ON.
044258,000231:
044259,000232: 16,3301 31571 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
044260,000233: 16,3302 00006 EXTEND
044261,000234: 16,3303 13305 BZF +2 # ROLL JETS ARE NOW OFF.
044262,000235: 16,3304 13313 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
044263,000236:
044264,000237: 16,3305 31573 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
044265,000238: 16,3306 00006 EXTEND # IF POSITIVE, DONT FIRE
044266,000239: 16,3307 13313 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
044267,000240:
044268,000241: 16,3310 35021 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
044269,000242: 16,3311 55573 TS TEMREG # RESET TEMREG
044270,000243: 16,3312 15324 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
044271,000244:
044272,000245: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
044273,000246:
044274,000247: 16,3313 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
044275,000248: 16,3314 00006 EXTEND
044276,000249: 16,3315 71640 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
044277,000250: 16,3316 00006 EXTEND
044278,000251: 16,3317 71533 MP OGARATE
044279,000252: 16,3320 63706 AD DB # SCALED AT 2(+0) REV
044280,000253: 16,3321 55573 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
044281,000254:
044282,000255: # GET SIGN OF OGARATE
044283,000256:
044284,000257: 16,3322 31533 CA OGARATE
044285,000258: 16,3323 00006 EXTEND
044286,000259: 16,3324 63327 BZMF +3 # LET SGN(0) BE NEGATIVE
044287,000260: 16,3325 35017 CA BIT1
044288,000261: 16,3326 13330 TCF +2
044289,000262: 16,3327 45017 CS BIT1
044290,000263: 16,3330 55666 TS SGNRT # + OR - 2(-14)
044291,000264:
![]() |
Page 990 |
044293,000266: # CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)
044294,000267: 16,3331 00006 EXTEND
044295,000268: 16,3332 71573 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
044296,000269: 16,3333 40001 CS L
044297,000270: 16,3334 61664 AD OGA # SCALED AT 2(+0) REV
044298,000271: 16,3335 55667 DELOGAC TS DELOGA # SCALE B+0 REV, PLUS TO RIGHT OF C-PARAB
044299,000272:
044300,000273: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
044301,000274:
044302,000275: 16,3336 00006 EXTEND
044303,000276: 16,3337 63342 BZMF +3
044304,000277: 16,3340 34371 CAF PRIO30 # = CA (30000)
044305,000278: 16,3341 13343 TCF +2
044306,000279: 16,3342 35001 CAF BIT15 # = CS (40000)
044307,000280: 16,3343 55670 TS I
044308,000281:
044309,000282: 16,3344 51670 INDEX I # TSET ON I SGN(OGARATE)
044310,000283: 16,3345 01666 0 SGNRT # CA OR CS
044311,000284: 16,3346 40000 COM
044312,000285: 16,3347 00006 EXTEND
044313,000286: 16,3350 63421 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
044314,000287:
044315,000288: # NO JET FIRE YET, TEST FOR MAX OGARATE
044316,000289:
044317,000290: 16,3351 51670 INDEX I
044318,000291: 16,3352 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
044319,000292: 16,3353 55671 TS IOGARATE # I.E. I OGARATE
044320,000293: 16,3354 63714 AD MAXLIM # SCALED AT 2(-4) REV/SEC
044321,000294: 16,3355 00006 EXTEND
044322,000295: 16,3356 63500 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
044323,000296:
044324,000297: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
044325,000298: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY
044326,000299:
044327,000300: 16,3357 31533 CA OGARATE
044328,000301: 16,3360 00006 EXTEND
044329,000302: 16,3361 75002 MP BIT14
044330,000303: 16,3362 55573 TS TEMREG
044331,000304: 16,3363 31664 CA OGA
044332,000305: 16,3364 00006 EXTEND
044333,000306: 16,3365 73707 MP -SLOPE
044334,000307: 16,3366 20001 DDOUBL
044335,000308: 16,3367 20001 DDOUBL
044336,000309: 16,3370 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
044337,000310: 16,3371 61573 AD TEMREG
044338,000311:
044339,000312: 16,3372 51670 INDEX I
044340,000313: 16,3373 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
044341,000314: 16,3374 40000 COM
![]() |
Page 991 |
044343,000316: 16,3375 63711 AD INTERCEP # SCALED AT 2(-3) REV.
044344,000317: 16,3376 40000 COM
044345,000318: 16,3377 00006 EXTEND
044346,000319: 16,3400 63611 REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
044347,000320:
044348,000321: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY
044349,000322:
044350,000323: 16,3401 31671 CA IOGARATE # ALWAYS NEGATIVE
044351,000324: 16,3402 63712 AD MINLIM # SCALED AT 2(-4) REV/SEC
044352,000325: 16,3403 00006 EXTEND
044353,000326: 16,3404 63611 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
044354,000327:
044355,000328: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
044356,000329:
044357,000330: 16,3405 51670 INDEX I
044358,000331: 16,3406 01664 0 OGA
044359,000332: 16,3407 40000 COM
044360,000333: 16,3410 63706 AD DB
044361,000334: 16,3411 40000 COM
044362,000335: 16,3412 00006 EXTEND
044363,000336: 16,3413 63611 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
044364,000337:
044365,000338: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
044366,000339: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
044367,000340: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
044368,000341: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
044369,000342: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
044370,000343: # OPERATING POINTS IN REGIONS 6 OR 6')
044371,000344:
044372,000345: 16,3414 31664 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
044373,000346: 16,3415 55667 TS DELOGA # ACTUAL STATE
044374,000347: 16,3416 31533 CA OGARATE
044375,000348: 16,3417 55665 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
044376,000349: 16,3420 13430 TCF ONROLL
044377,000350:
044378,000351: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
044379,000352: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
044380,000353: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
044381,000354: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1')
044382,000355:
044383,000356: 16,3421 51670 ROLLON INDEX I
044384,000357: 16,3422 03706 0 DB
044385,000358: 16,3423 27667 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
044386,000359:
044387,000360: 16,3424 43710 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
044388,000361: 16,3425 51670 INDEX I
044389,000362: 16,3426 00000 0 A
044390,000363: 16,3427 55665 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
044391,000364:
![]() |
Page 992 |
044393,000366: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
044394,000367:
044395,000368: 16,3430 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
044396,000369: 16,3431 71640 MP 1/CONACC
044397,000370: 16,3432 60000 DOUBLE
044398,000371: 16,3433 00006 EXTEND
044399,000372: 16,3434 73707 MP -SLOPE
044400,000373: 16,3435 55573 TS TEMREG # 2(-SLOPE)RATE /CONACC
044401,000374: 16,3436 00006 EXTEND
044402,000375: 16,3437 71665 MP DELOGART
044403,000376: 16,3440 55665 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
044404,000377: 16,3441 45005 CS BIT11
044405,000378: 16,3442 51670 INDEX I
044406,000379: 16,3443 00000 0 A
044407,000380: 16,3444 27573 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
044408,000381:
044409,000382: 16,3445 51670 INDEX I
044410,000383: 16,3446 01667 0 DELOGA
044411,000384: 16,3447 40000 COM
044412,000385: 16,3450 63706 AD DB
044413,000386: 16,3451 40000 COM
044414,000387: 16,3452 00006 EXTEND
044415,000388: 16,3453 73707 MP -SLOPE
044416,000389: 16,3454 27665 ADS DELOGART
044417,000390: 16,3455 33710 CA LMCRATE
044418,000391: 16,3456 00006 EXTEND
044419,000392: 16,3457 75005 MP BIT11
044420,000393: 16,3460 61665 RATENUM AD DELOGART # NUMERATOR COMPLETED
044421,000394:
044422,000395: 16,3461 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
044423,000396: 16,3462 35021 CA ZERO
044424,000397: 16,3463 00006 EXTEND
044425,000398: 16,3464 11573 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
044426,000399: 16,3465 00006 EXTEND
044427,000400: 16,3466 13474 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
044428,000401:
044429,000402: 16,3467 10000 MINLIMAP CCS A
044430,000403: 16,3470 34777 CAF POSMAX # POSITIVE OVERFLOW
044431,000404: 16,3471 13503 TCF ROLLSET
044432,000405: 16,3472 44777 CS POSMAX # NEGATIVE OVERFLOW
044433,000406: 16,3473 13503 TCF ROLLSET
044434,000407:
044435,000408: 16,3474 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
044436,000409: 16,3475 00006 EXTEND
044437,000410: 16,3476 11573 DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE
044438,000411: 16,3477 13503 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
044439,000412:
044440,000413: 16,3500 43714 RATELIM CS MAXLIM
044441,000414: 16,3501 51670 INDEX I
![]() |
Page 993 |
044443,000416: 16,3502 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
044444,000417:
044445,000418: # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE
044446,000419:
044447,000420: 16,3503 55573 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
044448,000421: 16,3504 00006 EXTEND
044449,000422: 16,3505 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
044450,000423: 16,3506 55573 TS TEMREG # OVERFLOW PROTECT
044451,000424: 16,3507 13512 TCF +3 # " "
044452,000425: 16,3510 50000 INDEX A # " "
044453,000426: 16,3511 45000 CS LIMITS # " "
044454,000427: 16,3512 00006 EXTEND
044455,000428: 16,3513 77665 MP T6SCALE # T6SCALE = 8/10.24
044456,000429: 16,3514 00006 EXTEND
044457,000430: 16,3515 71640 MP 1/CONACC # SCALED AT B+9 SECSQ/REV (MAX < .60)
044458,000431: 16,3516 20001 DDOUBL
044459,000432: 16,3517 20001 DDOUBL
044460,000433: 16,3520 55573 TS TEMREG # OVERFLOW PROTECT
044461,000434: 16,3521 13524 TCF +3 # " "
044462,000435: 16,3522 50000 INDEX A # " "
044463,000436: 16,3523 45000 CS LIMITS # " "
044464,000437: 16,3524 55573 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
044465,000438: 16,3525 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
044466,000439: 16,3526 13611 BZF NOROLL
044467,000440:
044468,000441: # JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.
044469,000442:
044470,000443: 16,3527 31573 CAE TEMREG # DESIRED CHANGE IN OGARATE
044471,000444: 16,3530 00006 EXTEND
044472,000445: 16,3531 71571 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
044473,000446: 16,3532 10000 CCS A
044474,000447: 16,3533 13537 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
044475,000448: 16,3534 13542 TCF NEWROLL # START NEW FIRING NOW, PLUS
044476,000449: 16,3535 13611 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
044477,000450: 16,3536 13542 TCF NEWROLL # START NEW FIRING NOW, MINUS
044478,000451:
044479,000452: # CONTINUE PRESENT FIRING
044480,000453:
044481,000454: 16,3537 35021 MOREROLL CAF ZERO
044482,000455: 16,3540 55670 TS I # USE TEMP. AS MOREROLL SWITCH
044483,000456: 16,3541 13553 TCF MAXTFIRE
044484,000457:
044485,000458: # START NEW FIRING, BUT CHECK IF GREATER THAN MIN FIRE TIME.
044486,000459:
044487,000460: 16,3542 11573 NEWROLL CCS TEMREG # CALL THIS T6FIRE
044488,000461: 16,3543 65017 AD ONE
044489,000462: 16,3544 13546 TCF +2
044490,000463: 16,3545 65017 AD ONE
044491,000464: 16,3546 40000 COM # -MAG(T6FIRE)
044492,000465: 16,3547 63715 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
![]() |
Page 994 |
044494,000467: 16,3550 40000 COM
044495,000468: 16,3551 00006 EXTEND
044496,000469: 16,3552 63611 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
044497,000470:
044498,000471: # PROCEED WITH NEW FIRING, BUT NOT LONGER THAN TMAXFIRE.
044499,000472:
044500,000473: 16,3553 31573 MAXTFIRE CA TEMREG
044501,000474: 16,3554 00006 EXTEND
044502,000475: 16,3555 75015 MP 1/TMXFIR # I.E. 1/TMAXFIRE
044503,000476: 16,3556 00006 EXTEND
044504,000477: 16,3557 13565 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
044505,000478:
044506,000479: 16,3560 10000 CCS A
044507,000480: 16,3561 33716 CAF TMAXFIRE # USE MAXIMUM
044508,000481: 16,3562 13564 TCF +2
044509,000482: 16,3563 43716 CS TMAXFIRE # USE MAXIMUM
044510,000483: 16,3564 55573 TS TEMREG
044511,000484:
044512,000485: # SET UP SIGN OF REQUIRED TORQUE.
044513,000486:
044514,000487: 16,3565 11573 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
044515,000488: 16,3566 34777 CA POSMAX # POSITIVE TORQUE REQUIRED
044516,000489: 16,3567 13571 TCF +2
044517,000490: 16,3570 35001 CA NEGMAX # NEGATIVE TORQUE REQUIRED
044518,000491: 16,3571 55571 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
044519,000492:
044520,000493: 16,3572 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
044521,000494: 16,3573 00006 EXTEND
044522,000495: 16,3574 63577 BZMF +3 # POSITIVE TORQUE REQUIRED
044523,000496: 16,3575 41573 CS TEMREG
044524,000497: 16,3576 55573 TS TEMREG
044525,000498:
044526,000499: 16,3577 31670 FIRELOOK CA I # IS IT MOREROLL
044527,000500: 16,3600 00006 EXTEND
044528,000501: 16,3601 13603 BZF FIREPLUG # YES
044529,000502: 16,3602 13614 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
044530,000503:
044531,000504: 16,3603 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
044532,000505: 16,3604 00006 EXTEND
044533,000506: 16,3605 61573 SU TEMREG
044534,000507: 16,3606 00006 EXTEND
044535,000508: 16,3607 65324 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
044536,000509: 16,3610 13614 TCF JETROLL
044537,000510:
044538,000511: 16,3611 45021 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
044539,000512: 16,3612 55571 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
044540,000513: 16,3613 55573 TS TEMREG
044541,000514:
044542,000515: 16,3614 00006 JETROLL EXTEND
044543,000516: 16,3615 33705 DCA NOROL1T6
![]() |
Page 995 |
044545,000518: 16,3616 53311 DXCH T6LOC
044546,000519: 16,3617 31573 CA TEMREG # ENTER JET FIRING TIME
044547,000520: 16,3620 54031 TS TIME6
044548,000521:
044549,000522: 16,3621 31670 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
044550,000523: 16,3622 00006 EXTEND
044551,000524: 16,3623 15324 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
044552,000525:
044553,000526: 16,3624 11571 CCS ROLLFIRE
044554,000527: 16,3625 13631 TCF +TORQUE
044555,000528: 16,3626 13672 TCF T6ENABL
044556,000529: 16,3627 13652 TCF -TORQUE
044557,000530: 16,3630 13672 TCF T6ENABL
044558,000531:
044559,000532: # PROCEED WITH PLUS TORQUE.
044560,000533:
044561,000534: 16,3631 31572 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
044562,000535: 16,3632 75017 MASK BIT1 # WAS IT NO.9-11
044563,000536: 16,3633 00006 EXTEND
044564,000537: 16,3634 13644 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
044565,000538:
044566,000539: 16,3635 45017 NO.13-15 CS BIT1
044567,000540: 16,3636 71572 MASK ROLLWORD
044568,000541: 16,3637 55572 TS ROLLWORD # CHANGE BIT 1 TO ZERO
044569,000542: 16,3640 35037 CAF +ROLL2
044570,000543: 16,3641 00006 EXTEND
044571,000544: 16,3642 01006 WRITE CHAN6
044572,000545: 16,3643 13672 TCF T6ENABL
044573,000546:
044574,000547: 16,3644 35017 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
044575,000548: 16,3645 27572 ADS ROLLWORD # CHANGE BIT 1 TO ONE
044576,000549: 16,3646 35022 CAF +ROLL1
044577,000550: 16,3647 00006 EXTEND
044578,000551: 16,3650 01006 WRITE CHAN6
044579,000552: 16,3651 13672 TCF T6ENABL
044580,000553:
044581,000554: 16,3652 31572 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
044582,000555: 16,3653 75016 MASK BIT2 # WAS IT NO.12-10
044583,000556: 16,3654 00006 EXTEND
044584,000557: 16,3655 13665 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
044585,000558:
044586,000559: 16,3656 45016 NO.16-14 CS BIT2
044587,000560: 16,3657 71572 MASK ROLLWORD
044588,000561: 16,3660 55572 TS ROLLWORD # CHANGE BIT 2 TO ZERO
044589,000562: 16,3661 33717 CAF -ROLL2
044590,000563: 16,3662 00006 EXTEND
044591,000564: 16,3663 01006 WRITE CHAN6
044592,000565: 16,3664 13672 TCF T6ENABL
044593,000566:
044594,000567: 16,3665 35016 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
![]() |
Page 996 |
044596,000569: 16,3666 27572 ADS ROLLWORD # CHANGE BIT 2 TO ONE
044597,000570: 16,3667 34377 CAF -ROLL1
044598,000571: 16,3670 00006 EXTEND
044599,000572: 16,3671 01006 WRITE CHAN6
044600,000573:
044601,000574: 16,3672 35001 T6ENABL CAF BIT15
044602,000575: 16,3673 00006 EXTEND
044603,000576: 16,3674 05013 WOR CHAN13
044604,000577: 16,3675 15324 RDAPEND TCF TASKOVER # EXIT ROLL DAP
044605,000578:
![]() |
Page 997 |
044607,000580: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
044608,000581:
044609,000582: 16,3676 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
044610,000583: 16,3677 35021 CAF ZERO # CALLED BY ..JETROLL..)
044611,000584: 16,3700 55571 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
044612,000585: 16,3701 00006 EXTEND
044613,000586: 16,3702 01006 KILLJETS WRITE CHAN6
044614,000587: 16,3703 15335 TCF NOQRSM
044615,000588:
![]() |
Page 998 |
044617,000590: # CONSTANTS FOR ROLL AUTOPILOT....
044618,000591:
044619,000592: 16,3704 E6,1702 EBANK= BZERO
044620,000593: 16,3704 03676 34066 NOROL1T6 2CADR NOROLL1
044621,000594:
044622,000595: 16,3706 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
044623,000596:
044624,000597: 16,3707 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
044625,000598: # PER SEC
044626,000599: 16,3710 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
044627,000600: # B-4 REV/SEC
044628,000601: 16,3711 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
044629,000602:
044630,000603: 16,3712 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
044631,000604:
044632,000605: 16,3713 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
044633,000606:
044634,000607: 16,3714 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
044635,000608:
044636,000609: 16,3715 00030 TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
044637,000610:
044638,000611: 16,3716 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
044639,000612:
044640,000613: 16,3717 5015 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
044641,000614: # ROUNDS TO OCT00004, SO ALLOWS 2.56
044642,000615: # SEC FIRINGS BEFORE APPLYING LIMIT
044643,000616: 16,3717 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
044644,000617:
044645,000618: 16,3717 5022 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
044646,000619: 16,3717 5037 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
044647,000620: 16,3717 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
044648,000621: 16,3717 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
044649,000622:
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc