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. |
042379,000002: ## Copyright: Public domain.
042380,000003: ## Filename: TVCROLLDAP.agc
042381,000004: ## Purpose: Part of the source code for Colossus, build 249.
042382,000005: ## It is part of the source code for the Command Module's (CM)
042383,000006: ## Apollo Guidance Computer (AGC), for Apollo 9.
042384,000007: ## Assembler: yaYUL
042385,000008: ## Reference: Starts at p. 948.
042386,000009: ## Contact: Ron Burkey <info@sandroid.org>.
042387,000010: ## Website: www.ibiblio.org/apollo/index.html
042388,000011: ## Mod history: 08/24/04 RSB Began transcribing.
042389,000012: ## 05/14/05 RSB Corrected website reference above.
042390,000013: ## 2010-10-25 JL Fixed page numbers.
042391,000014: ## 2011-05-07 JL Removed workarounds.
042392,000015: ## 2017-01-06 RSB Page numbers now agree with those on the
042393,000016: ## original harcopy, as opposed to the PDF page
042394,000017: ## numbers in 1701.pdf.
042395,000018: ## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
042396,000019: ## vs the already-proofed corresponding Colossus
042397,000020: ## 237 and Comanche 55 source-code files
042398,000021: ## and corrected errors found.
042399,000022: ## 2017-01-20 RSB Fixed comment-text errors noted while diff'ing
042400,000023: ## vs Colossus 249.
042401,000024: ##
042402,000025: ## The contents of the "Colossus249" files, in general, are transcribed
042403,000026: ## from a scanned copy of the program listing. Notations on this
042404,000027: ## document read, in part:
042405,000028: ##
042406,000029: ## Assemble revision 249 of AGC program Colossus by NASA
042407,000030: ## 2021111-041. October 28, 1968.
042408,000031: ##
042409,000032: ## This AGC program shall also be referred to as
042410,000033: ## Colossus 1A
042411,000034: ##
042412,000035: ## Prepared by
042413,000036: ## Massachusetts Institute of Technology
042414,000037: ## 75 Cambridge Parkway
042415,000038: ## Cambridge, Massachusetts
042416,000039: ## under NASA contract NAS 9-4065.
042417,000040: ##
042418,000041: ## Refer directly to the online document mentioned above for further information.
042419,000042: ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
042420,000043: ##
042421,000044: ## In some cases, where the source code for Luminary 131 overlaps that of
042422,000045: ## Colossus 249, this code is instead copied from the corresponding Luminary 131
042423,000046: ## source file, and then is proofed to incorporate any changes.
042424,000047:
![]() |
Page 948 |
042426,000049: # PROGRAM NAME....ROLL AUTOPILOT, CONSISTING OF ROLLDAP, DURATION, NOROLL1, E
042427,000050: # ORIGINAL CODING BY F.W.MARTIN, 1965 (SUNDIAL) TC.
042428,000051: # LOG SECTION....ROLL AUTOPILOT SUBROUTINE....DAPCSM
042429,000052: # MOD BY ENGEL DATE 28 DEC, 1967 (SUNDISK TO COLOSSUS)
042430,000053:
042431,000054: # FUNCTIONAL DESCRIPTION....
042432,000055:
042433,000056: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
042434,000057:
042435,000058: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
042436,000059: # BY IGNOVER (IGNITION)
042437,000060:
042438,000061: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
042439,000062:
042440,000063: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
042441,000064:
042442,000065: # *USES T6 CLOCK TO TIME JET FIRINGS
042443,000066:
042444,000067: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
042445,000068:
042446,000069: # *MINIMUM JET FIRING TIME = 15 MS
042447,000070:
042448,000071: # *JET PAIRS FIRE ALTERNATELY
042449,000072:
042450,000073: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
042451,000074:
042452,000075: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
042453,000076: # OF A JET FIRING TIME IS MADE ON A LATER PASS
042454,000077:
042455,000078: # CALLING SEQUENCE....
042456,000079:
042457,000080: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
042458,000081: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
042459,000082:
042460,000083: # NORMAL EXIT MODES.... ENDOFJOB
042461,000084:
042462,000085: # ALARM OR ABORT EXIT MODES.... NONE
042463,000086:
042464,000087: # SUBROUTINES CALLED.....NONE
042465,000088:
042466,000089: # OTHER INTERFACES....
042467,000090:
042468,000091: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
042469,000092: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
042470,000093:
042471,000094: # *TVCRESTART PACKAGE WILL RE-START ROLL DAP AFTER A RESTART (PICKING
042472,000095: # UP THE ORIGINAL OGAD)
042473,000096:
042474,000097: # ERASABLE INITIALIZATION REQUIRED....
042475,000098:
042476,000099: # *1/CONACC (S40.15)
042477,000100:
042478,000101: # *OGAD (CDUX, AT IGNOVER)
042479,000102:
042480,000103: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
042481,000104:
042482,000105: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
042483,000106:
042484,000107: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
042485,000108:
042486,000109: # OUTPUT....
042487,000110:
042488,000111: # *ROLL JET PAIR FIRINGS
042489,000112:
042490,000113: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
![]() |
Page 949 |
042492,000115:
042493,000116: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
042494,000117: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
042495,000118: # SWITCHING LOGIC IN THE PHASE PLANE....
042496,000119:
042497,000120: # OGARATE
042498,000121: # *
042499,000122: # *
042500,000123: # * * * * * * * * * * * *
042501,000124: # * (REGION 1, SEE TEXT BELOW)
042502,000125: # * *
042503,000126: # *
042504,000127: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
042505,000128: # * * .
042506,000129: # * * *
042507,000130: # * * (FIRE NEG ROLL JETS)
042508,000131: # * * *
042509,000132: # (-DB,+LMCRATE)....* *
042510,000133: # * * *
042511,000134: # * * OGAERROR
042512,000135: # ************************************************************************
042513,000136: # * * (-AK, OGAERR)
042514,000137: # * * (REGION 6-PRIME)
042515,000138: # * (SEE TEXT BELOW)
042516,000139: # * * *
042517,000140: # * * ...STRAIGHT LINE
042518,000141: # (FIRE POS ROLL JETS) * * * .
042519,000142: # * (COAST) *
042520,000143: # * * * * * * * * * * *
042521,000144: # * -MINLIM
042522,000145: # * *
042523,000146: # *
042524,000147: # * * * * * * * * * * * * * * * *
042525,000148: # * -MAXLIM
042526,000149: # *
042527,000150: # *
042528,000151:
042529,000152: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
042530,000153: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
042531,000154: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
042532,000155: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
042533,000156: # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
042534,000157: # ABOVE.
042535,000158:
042536,000159: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
042537,000160: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
042538,000161: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
![]() |
Page 950 |
042540,000163:
042541,000164: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
042542,000165: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
042543,000166: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
042544,000167: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
042545,000168: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
042546,000169: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
042547,000170: # INSTEAD. CONSIDER AN OPERATING POINT IN REGION 6. PASS A TANGENT TO
042548,000171: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
042549,000172: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
042550,000173: # THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
042551,000174: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
042552,000175: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
042553,000176: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
042554,000177: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
042555,000178: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
042556,000179: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
042557,000180: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
042558,000181: # APPROXIMATION.
042559,000182:
042560,000183: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
042561,000184: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
042562,000185: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
042563,000186: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
042564,000187: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
042565,000188: # THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
042566,000189: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
042567,000190: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
042568,000191: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
042569,000192: # FAILED-ON.
042570,000193:
042571,000194: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
042572,000195: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
042573,000196: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
042574,000197: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
042575,000198: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
042576,000199: # FROM REGION 1 TO REGION 6, THE DUMMY POINT IS NO LONGER REQUIRED,
042577,000200: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6 POINT.
042578,000201:
042579,000202: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
042580,000203: # 2
042581,000204: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
042582,000205:
042583,000206: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
042584,000207:
042585,000208: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
042586,000209:
042587,000210: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
![]() |
Page 951 |
042589,000212:
042590,000213: # EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
042591,000214:
042592,000215: # DOGADOT = NUM/DEN, WHERE
042593,000216: # 2
042594,000217: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
042595,000218: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
042596,000219: # +LMCRATE
042597,000220:
042598,000221: # DEN = (-SLOPE)(OGARATE)(1/CONACC) - SGN(DELOGA)
042599,000222: # 2
042600,000223: # DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2)SGN(OGADOT)
042601,000224:
042602,000225: # FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
042603,000226: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
042604,000227: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
042605,000228: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
042606,000229:
042607,000230: # OGAERROR = DELOGA + DB SGN(OGARATE)
042608,000231:
042609,000232: # OGARATE = -LMCRATE SGN(OGARATE)
042610,000233:
042611,000234: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
042612,000235: # ALSO, AT POINT WHERE DOGADOT IS COMPUTED, REGISTER DELOGA IS USED
042613,000236: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
![]() |
Page 952 |
042615,000238:
042616,000239: # ROLLDAP CODING....
042617,000240:
042618,000241: 16,2000 SETLOC DAPROLL
042619,000242: 16,2000 BANK
042620,000243: 16,3313 E6,1672 EBANK= OGANOW
042621,000244: 16,3313 COUNT* $$/ROLL
042622,000245:
042623,000246: 16,3313 31672 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
042624,000247: 16,3314 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
042625,000248: 16,3315 21673 MSU OGAPAST
042626,000249: 16,3316 00006 EXTEND
042627,000250: 16,3317 74706 MP BIT5
042628,000251: 16,3320 22000 LXCH A
042629,000252: 16,3321 55533 TS OGARATE # SC.AT B-4 REV/SEC
042630,000253:
042631,000254: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
042632,000255: # EXAMINE DURATION OF LAST ROLL FIRING IF JETS ARE NOW ON.
042633,000256:
042634,000257: 16,3322 31611 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
042635,000258: 16,3323 00006 EXTEND
042636,000259: 16,3324 13326 BZF +2 # ROLL JETS ARE NOW OFF.
042637,000260: 16,3325 13334 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
042638,000261:
042639,000262: 16,3326 31613 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
042640,000263: 16,3327 00006 EXTEND # IF POSITIVE, DONT FIRE
042641,000264: 16,3330 13334 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
042642,000265:
042643,000266: 16,3331 34714 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
042644,000267: 16,3332 55613 TS TEMREG # RESET TEMREG
042645,000268: 16,3333 15213 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
042646,000269:
042647,000270: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
042648,000271:
042649,000272: 16,3334 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
042650,000273: 16,3335 00006 EXTEND
042651,000274: 16,3336 71650 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
042652,000275: 16,3337 00006 EXTEND
042653,000276: 16,3340 71533 MP OGARATE
042654,000277: 16,3341 63727 AD DB # SCALED AT 2(+0) REV
042655,000278: 16,3342 55613 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
042656,000279:
042657,000280: # GET SIGN OF OGARATE
042658,000281:
042659,000282: 16,3343 31533 CA OGARATE
042660,000283: 16,3344 00006 EXTEND
042661,000284: 16,3345 63350 BZMF +3 # LET SGN(0) BE NEGATIVE
042662,000285: 16,3346 34712 CA BIT1
042663,000286: 16,3347 13351 TCF +2
042664,000287: 16,3350 44712 CS BIT1
042665,000288: 16,3351 55676 TS SGNRT # + OR - 2(-14)
042666,000289:
042667,000290: # CALCULATE DISTANCE FROM SWITCH PARABOLA,DELOGA
042668,000291: 16,3352 00006 EXTEND
042669,000292: 16,3353 71613 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
![]() |
Page 953 |
042671,000294: 16,3354 40001 CS L
042672,000295: 16,3355 61674 AD OGA # SCALED AT 2(+0) REV
042673,000296: 16,3356 55677 DELOGAC TS DELOGA # SC.AT B+0 REV, PLUS TO RIGHT OF C-PARAB
042674,000297:
042675,000298: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
042676,000299:
042677,000300: 16,3357 00006 EXTEND
042678,000301: 16,3360 63363 BZMF +3
042679,000302: 16,3361 34371 CAF PRIO30 # = CA (30000)
042680,000303: 16,3362 13364 TCF +2
042681,000304: 16,3363 34674 CAF BIT15 # = CS (40000)
042682,000305: 16,3364 55700 TS I
042683,000306:
042684,000307: 16,3365 51700 INDEX I # TSET ON I SGN(OGARATE)
042685,000308: 16,3366 01676 0 SGNRT # CA OR CS
042686,000309: 16,3367 40000 COM
042687,000310: 16,3370 00006 EXTEND
042688,000311: 16,3371 63442 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
042689,000312:
042690,000313: # NO JET FIRE YET. TEST FOR MAX OGARATE
042691,000314:
042692,000315: 16,3372 51700 INDEX I
042693,000316: 16,3373 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
042694,000317: 16,3374 55701 TS IOGARATE # I.E. I OGARATE
042695,000318: 16,3375 63735 AD MAXLIM # SCALED AT 2(-4) REV/SEC
042696,000319: 16,3376 00006 EXTEND
042697,000320: 16,3377 63521 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
042698,000321:
042699,000322: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
042700,000323: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG. QUANTITY
042701,000324:
042702,000325: 16,3400 31533 CA OGARATE
042703,000326: 16,3401 00006 EXTEND
042704,000327: 16,3402 74675 MP BIT14
042705,000328: 16,3403 55613 TS TEMREG
042706,000329: 16,3404 31674 CA OGA
042707,000330: 16,3405 00006 EXTEND
042708,000331: 16,3406 73730 MP -SLOPE
042709,000332: 16,3407 20001 DDOUBL
042710,000333: 16,3410 20001 DDOUBL
042711,000334: 16,3411 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
042712,000335: 16,3412 61613 AD TEMREG
042713,000336:
042714,000337: 16,3413 51700 INDEX I
042715,000338: 16,3414 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
042716,000339: 16,3415 40000 COM
042717,000340: 16,3416 63732 AD INTERCEP # SCALED AT 2(-3) REV.
042718,000341: 16,3417 40000 COM
042719,000342: 16,3420 00006 EXTEND
042720,000343: 16,3421 63632 REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
042721,000344:
042722,000345: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM
042723,000346:
042724,000347: 16,3422 31701 CA IOGARATE # ALWAYS NEGATIVE
042725,000348: 16,3423 63733 AD MINLIM # SCALED AT 2(-4) REV/SEC
![]() |
Page 954 |
042727,000350: 16,3424 00006 EXTEND
042728,000351: 16,3425 63632 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
042729,000352:
042730,000353: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
042731,000354:
042732,000355: 16,3426 51700 INDEX I
042733,000356: 16,3427 01674 0 OGA
042734,000357: 16,3430 40000 COM
042735,000358: 16,3431 63727 AD DB
042736,000359: 16,3432 40000 COM
042737,000360: 16,3433 00006 EXTEND
042738,000361: 16,3434 63632 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
042739,000362:
042740,000363: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
042741,000364: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
042742,000365: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
042743,000366: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
042744,000367: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
042745,000368: # OPERATING POINTS IN REGIONS 6 AND 6-PRIME)
042746,000369:
042747,000370: 16,3435 31674 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
042748,000371: 16,3436 55677 TS DELOGA # ACTUAL STATE
042749,000372: 16,3437 31533 CA OGARATE
042750,000373: 16,3440 55675 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
042751,000374: 16,3441 13451 TCF ONROLL
042752,000375:
042753,000376: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
042754,000377: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
042755,000378: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
042756,000379: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1-PRIME )
042757,000380:
042758,000381: 16,3442 51700 ROLLON INDEX I
042759,000382: 16,3443 03727 0 DB
042760,000383: 16,3444 27677 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
042761,000384:
042762,000385: 16,3445 43731 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
042763,000386: 16,3446 51700 INDEX I
042764,000387: 16,3447 00000 0 A
042765,000388: 16,3450 55675 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
042766,000389:
042767,000390: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
042768,000391:
042769,000392: 16,3451 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
042770,000393: 16,3452 71650 MP 1/CONACC
042771,000394: 16,3453 60000 DOUBLE
042772,000395: 16,3454 00006 EXTEND
042773,000396: 16,3455 73730 MP -SLOPE
042774,000397: 16,3456 55613 TS TEMREG # 2(-SLOPE)RATE /CONACC
042775,000398: 16,3457 00006 EXTEND
042776,000399: 16,3460 71675 MP DELOGART
042777,000400: 16,3461 55675 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
042778,000401: 16,3462 44700 CS BIT11
042779,000402: 16,3463 51700 INDEX I
![]() |
Page 955 |
042781,000404: 16,3464 00000 0 A
042782,000405: 16,3465 27613 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
042783,000406:
042784,000407: 16,3466 51700 INDEX I
042785,000408: 16,3467 01677 0 DELOGA
042786,000409: 16,3470 40000 COM
042787,000410: 16,3471 63727 AD DB
042788,000411: 16,3472 40000 COM
042789,000412: 16,3473 00006 EXTEND
042790,000413: 16,3474 73730 MP -SLOPE
042791,000414: 16,3475 27675 ADS DELOGART
042792,000415: 16,3476 33731 CA LMCRATE
042793,000416: 16,3477 00006 EXTEND
042794,000417: 16,3500 74700 MP BIT11
042795,000418: 16,3501 61675 RATENUM AD DELOGART # NUMERATOR COMPLETED
042796,000419:
042797,000420: 16,3502 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
042798,000421: 16,3503 34714 CA ZERO
042799,000422: 16,3504 00006 EXTEND
042800,000423: 16,3505 11613 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
042801,000424: 16,3506 00006 EXTEND
042802,000425: 16,3507 13515 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
042803,000426:
042804,000427: 16,3510 10000 MINLIMAP CCS A
042805,000428: 16,3511 34672 CAF POSMAX # POSITIVE OVERFLOW
042806,000429: 16,3512 13524 TCF ROLLSET
042807,000430: 16,3513 44672 CS POSMAX # NEGATIVE OVERFLOW
042808,000431: 16,3514 13524 TCF ROLLSET
042809,000432:
042810,000433: 16,3515 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
042811,000434: 16,3516 00006 EXTEND
042812,000435: 16,3517 11613 DV TEMREG # RESULT OF DIVISIONIS DESIRED OGARATE
042813,000436: 16,3520 13524 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
042814,000437: 16,3521 43735 RATELIM CS MAXLIM
042815,000438: 16,3522 51700 INDEX I
042816,000439: 16,3523 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
042817,000440:
042818,000441: # BASED ON DESIRED RATE - PRESENT RATE, COMPUTE JET FIRE TIME
042819,000442:
042820,000443: 16,3524 55613 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
042821,000444: 16,3525 00006 EXTEND
042822,000445: 16,3526 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
042823,000446: 16,3527 55613 TS TEMREG # OVERFLOW PROTECT
042824,000447: 16,3530 13533 TCF +3 # " "
042825,000448: 16,3531 50000 INDEX A # " "
042826,000449: 16,3532 44673 CS LIMITS # " "
042827,000450: 16,3533 00006 EXTEND
042828,000451: 16,3534 77665 MP T6SCALE # T6SCALE = 8/10.24
042829,000452: 16,3535 00006 EXTEND
![]() |
Page 956 |
042831,000454: 16,3536 71650 MP 1/CONACC # SCALED AT 2(+9) SECSQ/REV
042832,000455: 16,3537 20001 DDOUBL
042833,000456: 16,3540 20001 DDOUBL
042834,000457: 16,3541 55613 TS TEMREG # OVERFLOW PROTECT
042835,000458: 16,3542 13545 TCF +3 # " "
042836,000459: 16,3543 50000 INDEX A # " "
042837,000460: 16,3544 44673 CS LIMITS # " "
042838,000461: 16,3545 55613 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
042839,000462: 16,3546 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
042840,000463: 16,3547 13632 BZF NOROLL
042841,000464:
042842,000465: # JET FIRE TIME IS NZ, ARE JETS ON NOW.
042843,000466:
042844,000467: 16,3550 31613 CAE TEMREG # DESIRED CHANGE IN OGARATE
042845,000468: 16,3551 00006 EXTEND
042846,000469: 16,3552 71611 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
042847,000470: 16,3553 10000 CCS A
042848,000471: 16,3554 13560 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
042849,000472: 16,3555 13563 TCF NEWROLL # START NEW FIRING NOW, PLUS
042850,000473: 16,3556 13632 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
042851,000474: 16,3557 13563 TCF NEWROLL # START NEW FIRING NOW, MINUS
042852,000475:
042853,000476: # CONTINUE PRESENT FIRING
042854,000477:
042855,000478: 16,3560 34714 MOREROLL CAF ZERO
042856,000479: 16,3561 55700 TS I # USE TEMP. AS MOREROLL SWITCH
042857,000480: 16,3562 13574 TCF MAXTFIRE
042858,000481:
042859,000482: # START NEW FIRING BUT CHECK IF GREATER THAN MINIMUM FIRE TIME.
042860,000483:
042861,000484: 16,3563 11613 NEWROLL CCS TEMREG # CALL THIS T6FIRE
042862,000485: 16,3564 64712 AD ONE
042863,000486: 16,3565 13567 TCF +2
042864,000487: 16,3566 64712 AD ONE
042865,000488: 16,3567 40000 COM # -MAG(T6FIRE)
042866,000489: 16,3570 63736 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
042867,000490: 16,3571 40000 COM
042868,000491: 16,3572 00006 EXTEND
042869,000492: 16,3573 63632 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
042870,000493:
042871,000494: # PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE
042872,000495:
042873,000496: 16,3574 31613 MAXTFIRE CA TEMREG
042874,000497: 16,3575 00006 EXTEND
042875,000498: 16,3576 74710 MP 1/TMXFIR # I.E. 1/TMAXFIRE
042876,000499: 16,3577 00006 EXTEND
042877,000500: 16,3600 13606 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
042878,000501:
042879,000502: 16,3601 10000 CCS A
042880,000503: 16,3602 33737 CAF TMAXFIRE # USE MAXIMUM
042881,000504: 16,3603 13605 TCF +2
042882,000505: 16,3604 43737 CS TMAXFIRE # USE MAXIMUM
042883,000506: 16,3605 55613 TS TEMREG
042884,000507:
![]() |
Page 957 |
042886,000509: # SET UP SIGN OF REQUIRED TORQUE
042887,000510:
042888,000511: 16,3606 11613 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
042889,000512: 16,3607 34672 CA POSMAX # POSITIVE TORQUE REQUIRED
042890,000513: 16,3610 13612 TCF +2
042891,000514: 16,3611 34674 CA NEGMAX # NEGATIVE TORQUE REQUIRED
042892,000515: 16,3612 55611 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
042893,000516:
042894,000517: 16,3613 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
042895,000518: 16,3614 00006 EXTEND
042896,000519: 16,3615 63620 BZMF +3 # POSITIVE TORQUE REQUIRED
042897,000520: 16,3616 41613 CS TEMREG
042898,000521: 16,3617 55613 TS TEMREG
042899,000522:
042900,000523: 16,3620 31700 FIRELOOK CA I # IS IT MOREROLL
042901,000524: 16,3621 00006 EXTEND
042902,000525: 16,3622 13624 BZF FIREPLUG # YES
042903,000526: 16,3623 13635 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
042904,000527:
042905,000528: 16,3624 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
042906,000529: 16,3625 00006 EXTEND
042907,000530: 16,3626 61613 SU TEMREG
042908,000531: 16,3627 00006 EXTEND
042909,000532: 16,3630 65213 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
042910,000533: 16,3631 13635 TCF JETROLL
042911,000534:
042912,000535: 16,3632 44714 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
042913,000536: 16,3633 55611 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
042914,000537: 16,3634 55613 TS TEMREG
042915,000538:
042916,000539: 16,3635 00006 JETROLL EXTEND
042917,000540: 16,3636 33726 DCA NOROL1T6
042918,000541: 16,3637 53311 DXCH T6LOC
042919,000542: 16,3640 31613 CA TEMREG # ENTER JET FIRING TIME
042920,000543: 16,3641 54031 TS TIME6
042921,000544:
042922,000545: 16,3642 31700 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
042923,000546: 16,3643 00006 EXTEND
042924,000547: 16,3644 15213 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
042925,000548:
042926,000549: 16,3645 11611 CCS ROLLFIRE
042927,000550: 16,3646 13652 TCF +TORQUE
042928,000551: 16,3647 13713 TCF T6ENABL
042929,000552: 16,3650 13673 TCF -TORQUE
042930,000553: 16,3651 13713 TCF T6ENABL
042931,000554:
042932,000555: # PROCEED WITH + TORQUE
042933,000556:
042934,000557: 16,3652 31612 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
042935,000558: 16,3653 74712 MASK BIT1 # WAS IT NO.9-11
042936,000559: 16,3654 00006 EXTEND
042937,000560: 16,3655 13665 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
042938,000561:
![]() |
Page 958 |
042940,000563: 16,3656 44712 NO.13-15 CS BIT1
042941,000564: 16,3657 71612 MASK ROLLWORD
042942,000565: 16,3660 55612 TS ROLLWORD # CHANGE BIT 1 TO ZERO
042943,000566: 16,3661 34732 CAF +ROLL2
042944,000567: 16,3662 00006 EXTEND
042945,000568: 16,3663 01006 WRITE CHAN6
042946,000569: 16,3664 13713 TCF T6ENABL
042947,000570:
042948,000571: 16,3665 34712 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
042949,000572: 16,3666 27612 ADS ROLLWORD # CHANGE BIT 1 TO ONE
042950,000573: 16,3667 34715 CAF +ROLL1
042951,000574: 16,3670 00006 EXTEND
042952,000575: 16,3671 01006 WRITE CHAN6
042953,000576: 16,3672 13713 TCF T6ENABL
042954,000577:
042955,000578: 16,3673 31612 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
042956,000579: 16,3674 74711 MASK BIT2 # WAS IT NO.12-10
042957,000580: 16,3675 00006 EXTEND
042958,000581: 16,3676 13706 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
042959,000582:
042960,000583: 16,3677 44711 NO.16-14 CS BIT2
042961,000584: 16,3700 71612 MASK ROLLWORD
042962,000585: 16,3701 55612 TS ROLLWORD # CHANGE BIT 2 TO ZERO
042963,000586: 16,3702 33740 CAF -ROLL2
042964,000587: 16,3703 00006 EXTEND
042965,000588: 16,3704 01006 WRITE CHAN6
042966,000589: 16,3705 13713 TCF T6ENABL
042967,000590:
042968,000591: 16,3706 34711 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
042969,000592: 16,3707 27612 ADS ROLLWORD # CHANGE BIT 2 TO ONE
042970,000593: 16,3710 34377 CAF -ROLL1
042971,000594: 16,3711 00006 EXTEND
042972,000595: 16,3712 01006 WRITE CHAN6
042973,000596:
042974,000597: 16,3713 34674 T6ENABL CAF BIT15
042975,000598: 16,3714 00006 EXTEND
042976,000599: 16,3715 05013 WOR CHAN13
042977,000600: 16,3716 15213 RDAPEND TCF TASKOVER # EXIT ROLL DAP
042978,000601:
![]() |
Page 959 |
042980,000603: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
042981,000604:
042982,000605: 16,3717 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
042983,000606: 16,3720 34714 CAF ZERO # CALLED BY ..JETROLL..)
042984,000607: 16,3721 55611 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
042985,000608: 16,3722 00006 EXTEND
042986,000609: 16,3723 01006 KILLJETS WRITE CHAN6
042987,000610: 16,3724 15224 TCF NOQRSM
042988,000611:
![]() |
Page 960 |
042990,000613: # CONSTANTS FOR ROLL AUTOPILOT....
042991,000614:
042992,000615: 16,3725 E6,1742 EBANK= BZERO
042993,000616: 16,3725 03717 34066 NOROL1T6 2CADR NOROLL1
042994,000617:
042995,000618: 16,3727 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
042996,000619: 16,3730 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
042997,000620: # PER SEC
042998,000621: 16,3731 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
042999,000622: # B-4 REV/SEC
043000,000623: 16,3732 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
043001,000624: 16,3733 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
043002,000625: 16,3734 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
043003,000626: 16,3735 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
043004,000627: 16,3736 00030 TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
043005,000628: 16,3737 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
043006,000629:
043007,000630: 16,3740 4710 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
043008,000631: # ROUNDS TO OCT00004, SO ALLOWS 2.56
043009,000632: # SEC FIRINGS BEFORE APPLYING LIMIT
043010,000633: 16,3740 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
043011,000634: 16,3740 4715 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
043012,000635: 16,3740 4732 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
043013,000636: 16,3740 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
043014,000637: 16,3740 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
043015,000638:
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc