Source Code
These source-code files are part of a reconstructed copy of Comanche 72, the
first release of the Apollo Guidance Computer (AGC) Command Module (CM) software
for Apollo 13.
They have been adapted from sources files created from a listing of Comanche 55. These source files were updated to match binary dumps of a set of Comanche 67 rope modules. They were then further modified by applying known changes between Comanche 67 and Comanche 72. A binary dump of module B2 of Comanche 72, part number 2010802-021, was also used to validate changes made to banks 05-13. The resulting code assembles to have identical memory-bank checksums as those specified in NASA drawing 2021153G; this gives reasonably high confidence that the changes that have been made are correct. In places where ambiguity exists, this ambiguity is discussed in "## Reconstruction:" comments. Since no contemporary listings of Comanche 72 are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
042380,000002: ## Copyright: Public domain.
042381,000003: ## Filename: TVCROLLDAP.agc
042382,000004: ## Purpose: A section of Comanche revision 072.
042383,000005: ## It is part of the reconstructed source code for the first
042384,000006: ## release of the software for the Command Module's (CM) Apollo
042385,000007: ## Guidance Computer (AGC) for Apollo 13. No original listings
042386,000008: ## of this program are available; instead, this file was recreated
042387,000009: ## from a printout of Comanche 055, binary dumps of a set of
042388,000010: ## Comanche 067 rope modules, and changelogs between Comanche 067
042389,000011: ## and 072. It has been adapted such that the resulting bugger words
042390,000012: ## exactly match those specified for Comanche 072 in NASA drawing
042391,000013: ## 2021153G, which gives relatively high confidence that the
042392,000014: ## reconstruction is correct.
042393,000015: ## Assembler: yaYUL
042394,000016: ## Contact: Ron Burkey <info@sandroid.org>.
042395,000017: ## Website: www.ibiblio.org/apollo/index.html
042396,000018: ## Mod history: 2024-05-13 MAS Created from Comanche 067.
042397,000019:
042398,000020: # PROGRAM NAME...TVC ROLL AUTOPILOT
042399,000021: # LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM
042400,000022: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
042401,000023:
042402,000024: # FUNCTIONAL DESCRIPTION....
042403,000025:
042404,000026: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
042405,000027: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
042406,000028: # BY IGNITION (P40)
042407,000029: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
042408,000030: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
042409,000031: # *USES T6 CLOCK TO TIME JET FIRINGS
042410,000032: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
042411,000033: # *MINIMUM JET FIRING TIME = 15 MS
042412,000034: # *JET PAIRS FIRE ALTERNATELY
042413,000035: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
042414,000036: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
042415,000037: # OF A JET FIRING TIME IS MADE ON A LATER PASS
042416,000038:
042417,000039: # CALLING SEQUENCE....
042418,000040:
042419,000041: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
042420,000042: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
042421,000043:
042422,000044: # NORMAL EXIT MODES.... ENDOFJOB
042423,000045:
042424,000046: # ALARM OR ABORT EXIT MODES.... NONE
042425,000047:
042426,000048: # SUBROUTINES CALLED.....NONE
042427,000049:
042428,000050: # OTHER INTERFACES....
042429,000051:
042430,000052: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
042431,000053: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
042432,000054: # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC
042433,000055: # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS
042434,000056: # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED.
042435,000057:
042436,000058: # ERASABLE INITIALIZATION REQUIRED....
042437,000059:
042438,000060: # *1/CONACC (S40.15)
042439,000061: # *OGAD (CDUX AT IGNITION)
042440,000062: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
042441,000063: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
042442,000064: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
042443,000065:
042444,000066: # OUTPUT....
042445,000067:
042446,000068: # *ROLL JET PAIR FIRINGS
042447,000069:
042448,000070: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
042449,000071:
042450,000072: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
042451,000073: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
042452,000074:
042453,000075: # SWITCHING LOGIC IN THE PHASE PLANE....
042454,000076:
042455,000077: # OGARATE
042456,000078: # *
042457,000079: # *
042458,000080: # * * * * * * * * * * * *
042459,000081: # * (REGION 1, SEE TEXT BELOW)
042460,000082: # * *
042461,000083: # *
042462,000084: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
042463,000085: # * * .
042464,000086: # * * *
042465,000087: # * * (FIRE NEG ROLL JETS)
042466,000088: # * * *
042467,000089: # (-DB,+LMCRATE)....* *
042468,000090: # * * *
042469,000091: # * * OGAERROR
042470,000092: # ************************************************************************
042471,000093: # * * (-AK, OGAERR)
042472,000094: # * * * (REGION 6-PRIME)
042473,000095: # * * (SEE TEXT BELOW)
042474,000096: # * * *
042475,000097: # * * ...STRAIGHT LINE
042476,000098: # (FIRE POS ROLL JETS) * * * .
042477,000099: # * (COAST) *
042478,000100: # * * * * * * * * * * *
042479,000101: # * -MINLIM
042480,000102: # * *
042481,000103: # *
042482,000104: # * * * * * * * * * * * * * * * *
042483,000105: # * -MAXLIM
042484,000106: # *
042485,000107: # *
042486,000108:
042487,000109: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
042488,000110: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
042489,000111: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
042490,000112: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
042491,000113: # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
042492,000114: # ABOVE.
042493,000115:
042494,000116: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
042495,000117: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
042496,000118: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
042497,000119:
042498,000120: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
042499,000121: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
042500,000122: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
042501,000123: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
042502,000124: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
042503,000125: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
042504,000126: # INSTEAD. TAKE AN OPERATING POINT IN REGION 6'. PASS A TANGENT TO
042505,000127: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
042506,000128: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
042507,000129: # THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
042508,000130: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
042509,000131: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
042510,000132: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
042511,000133: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
042512,000134: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
042513,000135: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
042514,000136: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
042515,000137: # APPROXIMATION.
042516,000138:
042517,000139: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
042518,000140: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
042519,000141: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
042520,000142: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
042521,000143: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
042522,000144: # THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
042523,000145: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
042524,000146: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
042525,000147: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
042526,000148: # FAILED-ON.
042527,000149:
042528,000150: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
042529,000151: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
042530,000152: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
042531,000153: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
042532,000154: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
042533,000155: # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,
042534,000156: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.
042535,000157:
042536,000158: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
042537,000159: # 2
042538,000160: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
042539,000161:
042540,000162: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
042541,000163:
042542,000164: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
042543,000165:
042544,000166: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
042545,000167:
042546,000168: # EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
042547,000169:
042548,000170: # DOGADOT = NUM/DEN, WHERE
042549,000171: # 2
042550,000172: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
042551,000173: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
042552,000174: # +LMCRATE
042553,000175:
042554,000176: # DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)
042555,000177: # 2
042556,000178: # DELOGA = OGAERROR - (DB - OGARATE (1/CONACC)/2)SGN(OGARATE)
042557,000179:
042558,000180: # FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
042559,000181: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
042560,000182: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
042561,000183: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
042562,000184:
042563,000185: # OGAERROR = DELOGA + DB SGN(OGARATE)
042564,000186:
042565,000187: # OGARATE = -LMCRATE SGN(OGARATE)
042566,000188:
042567,000189: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
042568,000190: # ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED
042569,000191: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
042570,000192:
042571,000193: # ROLLDAP CODING....
042572,000194:
042573,000195: 16,2000 SETLOC DAPROLL
042574,000196: 16,2000 BANK
042575,000197: 16,3344 E6,1664 EBANK= OGANOW
042576,000198: 16,3344 COUNT* $$/ROLL
042577,000199: 16,3344 31664 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
042578,000200: 16,3345 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
042579,000201: 16,3346 21665 MSU OGAPAST
042580,000202: 16,3347 00006 EXTEND
042581,000203: 16,3350 75027 MP BIT5
042582,000204: 16,3351 22000 LXCH A
042583,000205: 16,3352 55533 TS OGARATE # SC.AT B-4 REV/SEC
042584,000206:
042585,000207: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
042586,000208: # EXAMINE DURATION OF LAST JET FIRING IF JETS NOW ON.
042587,000209:
042588,000210: 16,3353 31571 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
042589,000211: 16,3354 00006 EXTEND
042590,000212: 16,3355 13357 BZF +2 # ROLL JETS ARE NOW OFF.
042591,000213: 16,3356 13365 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
042592,000214:
042593,000215: 16,3357 31573 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
042594,000216: 16,3360 00006 EXTEND # IF POSITIVE, DONT FIRE
042595,000217: 16,3361 13365 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
042596,000218:
042597,000219: 16,3362 35035 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
042598,000220: 16,3363 55573 TS TEMREG # RESET TEMREG
042599,000221: 16,3364 15340 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
042600,000222:
042601,000223: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
042602,000224:
042603,000225: 16,3365 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
042604,000226: 16,3366 00006 EXTEND
042605,000227: 16,3367 71640 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
042606,000228: 16,3370 00006 EXTEND
042607,000229: 16,3371 71533 MP OGARATE
042608,000230: 16,3372 63760 AD DB # SCALED AT 2(+0) REV
042609,000231: 16,3373 55573 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
042610,000232:
042611,000233: # GET SIGN OF OGARATE
042612,000234:
042613,000235: 16,3374 31533 CA OGARATE
042614,000236: 16,3375 00006 EXTEND
042615,000237: 16,3376 63401 BZMF +3 # LET SGN(0) BE NEGATIVE
042616,000238: 16,3377 35033 CA BIT1
042617,000239: 16,3400 13402 TCF +2
042618,000240: 16,3401 45033 CS BIT1
042619,000241: 16,3402 55670 TS SGNRT # + OR - 2(-14)
042620,000242:
042621,000243: # CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)
042622,000244: 16,3403 00006 EXTEND
042623,000245: 16,3404 71573 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
042624,000246: 16,3405 40001 CS L
042625,000247: 16,3406 61666 AD OGA # SCALED AT 2(+0) REV
042626,000248: 16,3407 55671 DELOGAC TS DELOGA # SCALE B+0 REV, PLUS TO RIGHT OF C-PARAB
042627,000249:
042628,000250: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
042629,000251:
042630,000252: 16,3410 00006 EXTEND
042631,000253: 16,3411 63414 BZMF +3
042632,000254: 16,3412 34371 CAF PRIO30 # = CA (30000)
042633,000255: 16,3413 13415 TCF +2
042634,000256: 16,3414 35015 CAF BIT15 # = CS (40000)
042635,000257: 16,3415 55672 TS I
042636,000258:
042637,000259: 16,3416 51672 INDEX I # TSET ON I SGN(OGARATE)
042638,000260: 16,3417 01670 0 SGNRT # CA OR CS
042639,000261: 16,3420 40000 COM
042640,000262: 16,3421 00006 EXTEND
042641,000263: 16,3422 63473 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
042642,000264:
042643,000265: # NO JET FIRE YET, TEST FOR MAX OGARATE
042644,000266:
042645,000267: 16,3423 51672 INDEX I
042646,000268: 16,3424 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
042647,000269: 16,3425 55673 TS IOGARATE # I.E. I OGARATE
042648,000270: 16,3426 63766 AD MAXLIM # SCALED AT 2(-4) REV/SEC
042649,000271: 16,3427 00006 EXTEND
042650,000272: 16,3430 63552 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
042651,000273:
042652,000274: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
042653,000275: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY
042654,000276:
042655,000277: 16,3431 31533 CA OGARATE
042656,000278: 16,3432 00006 EXTEND
042657,000279: 16,3433 75016 MP BIT14
042658,000280: 16,3434 55573 TS TEMREG
042659,000281: 16,3435 31666 CA OGA
042660,000282: 16,3436 00006 EXTEND
042661,000283: 16,3437 73761 MP -SLOPE
042662,000284: 16,3440 20001 DDOUBL
042663,000285: 16,3441 20001 DDOUBL
042664,000286: 16,3442 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
042665,000287: 16,3443 61573 AD TEMREG
042666,000288:
042667,000289: 16,3444 51672 INDEX I
042668,000290: 16,3445 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
042669,000291: 16,3446 40000 COM
042670,000292: 16,3447 63763 AD INTERCEP # SCALED AT 2(-3) REV.
042671,000293: 16,3450 40000 COM
042672,000294: 16,3451 00006 EXTEND
042673,000295: 16,3452 63663 REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
042674,000296:
042675,000297: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY
042676,000298:
042677,000299: 16,3453 31673 CA IOGARATE # ALWAYS NEGATIVE
042678,000300: 16,3454 63764 AD MINLIM # SCALED AT 2(-4) REV/SEC
042679,000301: 16,3455 00006 EXTEND
042680,000302: 16,3456 63663 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
042681,000303:
042682,000304: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
042683,000305:
042684,000306: 16,3457 51672 INDEX I
042685,000307: 16,3460 01666 0 OGA
042686,000308: 16,3461 40000 COM
042687,000309: 16,3462 63760 AD DB
042688,000310: 16,3463 40000 COM
042689,000311: 16,3464 00006 EXTEND
042690,000312: 16,3465 63663 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
042691,000313:
042692,000314: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
042693,000315: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
042694,000316: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
042695,000317: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
042696,000318: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
042697,000319: # OPERATING POINTS IN REGIONS 6 OR 6')
042698,000320:
042699,000321: 16,3466 31666 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
042700,000322: 16,3467 55671 TS DELOGA # ACTUAL STATE
042701,000323: 16,3470 31533 CA OGARATE
042702,000324: 16,3471 55667 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
042703,000325: 16,3472 13502 TCF ONROLL
042704,000326:
042705,000327: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
042706,000328: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
042707,000329: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
042708,000330: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1')
042709,000331:
042710,000332: 16,3473 51672 ROLLON INDEX I
042711,000333: 16,3474 03760 0 DB
042712,000334: 16,3475 27671 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
042713,000335:
042714,000336: 16,3476 43762 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
042715,000337: 16,3477 51672 INDEX I
042716,000338: 16,3500 00000 0 A
042717,000339: 16,3501 55667 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
042718,000340:
042719,000341: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
042720,000342:
042721,000343: 16,3502 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
042722,000344: 16,3503 71640 MP 1/CONACC
042723,000345: 16,3504 60000 DOUBLE
042724,000346: 16,3505 00006 EXTEND
042725,000347: 16,3506 73761 MP -SLOPE
042726,000348: 16,3507 55573 TS TEMREG # 2(-SLOPE)RATE /CONACC
042727,000349: 16,3510 00006 EXTEND
042728,000350: 16,3511 71667 MP DELOGART
042729,000351: 16,3512 55667 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
042730,000352: 16,3513 45021 CS BIT11
042731,000353: 16,3514 51672 INDEX I
042732,000354: 16,3515 00000 0 A
042733,000355: 16,3516 27573 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
042734,000356:
042735,000357: 16,3517 51672 INDEX I
042736,000358: 16,3520 01671 0 DELOGA
042737,000359: 16,3521 40000 COM
042738,000360: 16,3522 63760 AD DB
042739,000361: 16,3523 40000 COM
042740,000362: 16,3524 00006 EXTEND
042741,000363: 16,3525 73761 MP -SLOPE
042742,000364: 16,3526 27667 ADS DELOGART
042743,000365: 16,3527 33762 CA LMCRATE
042744,000366: 16,3530 00006 EXTEND
042745,000367: 16,3531 75021 MP BIT11
042746,000368: 16,3532 61667 RATENUM AD DELOGART # NUMERATOR COMPLETED
042747,000369:
042748,000370: 16,3533 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
042749,000371: 16,3534 35035 CA ZERO
042750,000372: 16,3535 00006 EXTEND
042751,000373: 16,3536 11573 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
042752,000374: 16,3537 00006 EXTEND
042753,000375: 16,3540 13546 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
042754,000376:
042755,000377: 16,3541 10000 MINLIMAP CCS A
042756,000378: 16,3542 35013 CAF POSMAX # POSITIVE OVERFLOW
042757,000379: 16,3543 13555 TCF ROLLSET
042758,000380: 16,3544 45013 CS POSMAX # NEGATIVE OVERFLOW
042759,000381: 16,3545 13555 TCF ROLLSET
042760,000382:
042761,000383: 16,3546 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
042762,000384: 16,3547 00006 EXTEND
042763,000385: 16,3550 11573 DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE
042764,000386: 16,3551 13555 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
042765,000387:
042766,000388: 16,3552 43766 RATELIM CS MAXLIM
042767,000389: 16,3553 51672 INDEX I
042768,000390: 16,3554 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
042769,000391:
042770,000392: # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE
042771,000393:
042772,000394: 16,3555 55573 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
042773,000395: 16,3556 00006 EXTEND
042774,000396: 16,3557 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
042775,000397: 16,3560 55573 TS TEMREG # OVERFLOW PROTECT
042776,000398: 16,3561 13564 TCF +3 # " "
042777,000399: 16,3562 50000 INDEX A # " "
042778,000400: 16,3563 45014 CS LIMITS # " "
042779,000401: 16,3564 00006 EXTEND
042780,000402: 16,3565 77665 MP T6SCALE # T6SCALE = 8/10.24
042781,000403: 16,3566 00006 EXTEND
042782,000404: 16,3567 71640 MP 1/CONACC # SCALED AT B+9 SECSQ/REV (MAX < .60)
042783,000405: 16,3570 20001 DDOUBL
042784,000406: 16,3571 20001 DDOUBL
042785,000407: 16,3572 55573 TS TEMREG # OVERFLOW PROTECT
042786,000408: 16,3573 13576 TCF +3 # " "
042787,000409: 16,3574 50000 INDEX A # " "
042788,000410: 16,3575 45014 CS LIMITS # " "
042789,000411: 16,3576 55573 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
042790,000412: 16,3577 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
042791,000413: 16,3600 13663 BZF NOROLL
042792,000414:
042793,000415: # JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.
042794,000416:
042795,000417: 16,3601 31573 CAE TEMREG # DESIRED CHANGE IN OGARATE
042796,000418: 16,3602 00006 EXTEND
042797,000419: 16,3603 71571 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
042798,000420: 16,3604 10000 CCS A
042799,000421: 16,3605 13611 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
042800,000422: 16,3606 13614 TCF NEWROLL # START NEW FIRING NOW, PLUS
042801,000423: 16,3607 13663 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
042802,000424: 16,3610 13614 TCF NEWROLL # START NEW FIRING NOW, MINUS
042803,000425:
042804,000426: # CONTINUE PRESENT FIRING
042805,000427:
042806,000428: 16,3611 35035 MOREROLL CAF ZERO
042807,000429: 16,3612 55672 TS I # USE TEMP. AS MOREROLL SWITCH
042808,000430: 16,3613 13625 TCF MAXTFIRE
042809,000431:
042810,000432: # START NEW FIRING, BUT CHECK IF GREATER THAN MIN FIRE TIME.
042811,000433:
042812,000434: 16,3614 11573 NEWROLL CCS TEMREG # CALL THIS T6FIRE
042813,000435: 16,3615 65033 AD ONE
042814,000436: 16,3616 13620 TCF +2
042815,000437: 16,3617 65033 AD ONE
042816,000438: 16,3620 40000 COM # -MAG(T6FIRE)
042817,000439: 16,3621 63767 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
042818,000440: 16,3622 40000 COM
042819,000441: 16,3623 00006 EXTEND
042820,000442: 16,3624 63663 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
042821,000443:
042822,000444: # PROCEED WITH NEW FIRING, BUT NOT LONGER THAN TMAXFIRE.
042823,000445:
042824,000446: 16,3625 31573 MAXTFIRE CA TEMREG
042825,000447: 16,3626 00006 EXTEND
042826,000448: 16,3627 75031 MP 1/TMXFIR # I.E. 1/TMAXFIRE
042827,000449: 16,3630 00006 EXTEND
042828,000450: 16,3631 13637 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
042829,000451:
042830,000452: 16,3632 10000 CCS A
042831,000453: 16,3633 33770 CAF TMAXFIRE # USE MAXIMUM
042832,000454: 16,3634 13636 TCF +2
042833,000455: 16,3635 43770 CS TMAXFIRE # USE MAXIMUM
042834,000456: 16,3636 55573 TS TEMREG
042835,000457:
042836,000458: # SET UP SIGN OF REQUIRED TORQUE.
042837,000459:
042838,000460: 16,3637 11573 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
042839,000461: 16,3640 35013 CA POSMAX # POSITIVE TORQUE REQUIRED
042840,000462: 16,3641 13643 TCF +2
042841,000463: 16,3642 35015 CA NEGMAX # NEGATIVE TORQUE REQUIRED
042842,000464: 16,3643 55571 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
042843,000465:
042844,000466: 16,3644 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
042845,000467: 16,3645 00006 EXTEND
042846,000468: 16,3646 63651 BZMF +3 # POSITIVE TORQUE REQUIRED
042847,000469: 16,3647 41573 CS TEMREG
042848,000470: 16,3650 55573 TS TEMREG
042849,000471:
042850,000472: 16,3651 31672 FIRELOOK CA I # IS IT MOREROLL
042851,000473: 16,3652 00006 EXTEND
042852,000474: 16,3653 13655 BZF FIREPLUG # YES
042853,000475: 16,3654 13666 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
042854,000476:
042855,000477: 16,3655 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
042856,000478: 16,3656 00006 EXTEND
042857,000479: 16,3657 61573 SU TEMREG
042858,000480: 16,3660 00006 EXTEND
042859,000481: 16,3661 65340 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
042860,000482: 16,3662 13666 TCF JETROLL
042861,000483:
042862,000484: 16,3663 45035 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
042863,000485: 16,3664 55571 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
042864,000486: 16,3665 55573 TS TEMREG
042865,000487:
042866,000488: 16,3666 00006 JETROLL EXTEND
042867,000489: 16,3667 33757 DCA NOROL1T6
042868,000490: 16,3670 53311 DXCH T6LOC
042869,000491: 16,3671 31573 CA TEMREG # ENTER JET FIRING TIME
042870,000492: 16,3672 54031 TS TIME6
042871,000493:
042872,000494: 16,3673 31672 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
042873,000495: 16,3674 00006 EXTEND
042874,000496: 16,3675 15340 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
042875,000497:
042876,000498: 16,3676 11571 CCS ROLLFIRE
042877,000499: 16,3677 13703 TCF +TORQUE
042878,000500: 16,3700 13744 TCF T6ENABL
042879,000501: 16,3701 13724 TCF -TORQUE
042880,000502: 16,3702 13744 TCF T6ENABL
042881,000503:
042882,000504: # PROCEED WITH PLUS TORQUE.
042883,000505:
042884,000506: 16,3703 31572 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
042885,000507: 16,3704 75033 MASK BIT1 # WAS IT NO.9-11
042886,000508: 16,3705 00006 EXTEND
042887,000509: 16,3706 13716 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
042888,000510:
042889,000511: 16,3707 45033 NO.13-15 CS BIT1
042890,000512: 16,3710 71572 MASK ROLLWORD
042891,000513: 16,3711 55572 TS ROLLWORD # CHANGE BIT 1 TO ZERO
042892,000514: 16,3712 35053 CAF +ROLL2
042893,000515: 16,3713 00006 EXTEND
042894,000516: 16,3714 01006 WRITE CHAN6
042895,000517: 16,3715 13744 TCF T6ENABL
042896,000518:
042897,000519: 16,3716 35033 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
042898,000520: 16,3717 27572 ADS ROLLWORD # CHANGE BIT 1 TO ONE
042899,000521: 16,3720 35036 CAF +ROLL1
042900,000522: 16,3721 00006 EXTEND
042901,000523: 16,3722 01006 WRITE CHAN6
042902,000524: 16,3723 13744 TCF T6ENABL
042903,000525:
042904,000526: 16,3724 31572 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
042905,000527: 16,3725 75032 MASK BIT2 # WAS IT NO.12-10
042906,000528: 16,3726 00006 EXTEND
042907,000529: 16,3727 13737 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
042908,000530:
042909,000531: 16,3730 45032 NO.16-14 CS BIT2
042910,000532: 16,3731 71572 MASK ROLLWORD
042911,000533: 16,3732 55572 TS ROLLWORD # CHANGE BIT 2 TO ZERO
042912,000534: 16,3733 33771 CAF -ROLL2
042913,000535: 16,3734 00006 EXTEND
042914,000536: 16,3735 01006 WRITE CHAN6
042915,000537: 16,3736 13744 TCF T6ENABL
042916,000538:
042917,000539: 16,3737 35032 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
042918,000540: 16,3740 27572 ADS ROLLWORD # CHANGE BIT 2 TO ONE
042919,000541: 16,3741 34377 CAF -ROLL1
042920,000542: 16,3742 00006 EXTEND
042921,000543: 16,3743 01006 WRITE CHAN6
042922,000544:
042923,000545: 16,3744 35015 T6ENABL CAF BIT15
042924,000546: 16,3745 00006 EXTEND
042925,000547: 16,3746 05013 WOR CHAN13
042926,000548: 16,3747 15340 RDAPEND TCF TASKOVER # EXIT ROLL DAP
042927,000549:
042928,000550: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
042929,000551:
042930,000552: 16,3750 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
042931,000553: 16,3751 35035 CAF ZERO # CALLED BY ..JETROLL..)
042932,000554: 16,3752 55571 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
042933,000555: 16,3753 00006 EXTEND
042934,000556: 16,3754 01006 KILLJETS WRITE CHAN6
042935,000557: 16,3755 15351 TCF NOQRSM
042936,000558:
042937,000559: # CONSTANTS FOR ROLL AUTOPILOT....
042938,000560:
042939,000561: 16,3756 E6,1704 EBANK= BZERO
042940,000562: 16,3756 03750 34066 NOROL1T6 2CADR NOROLL1
042941,000563:
042942,000564: 16,3760 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
042943,000565:
042944,000566: 16,3761 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
042945,000567: # PER SEC
042946,000568: 16,3762 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
042947,000569: # B-4 REV/SEC
042948,000570: 16,3763 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
042949,000571:
042950,000572: 16,3764 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
042951,000573:
042952,000574: 16,3765 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
042953,000575:
042954,000576: 16,3766 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
042955,000577:
042956,000578: 16,3767 00030 TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
042957,000579:
042958,000580: 16,3770 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
042959,000581:
042960,000582: 16,3771 5031 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
042961,000583: # ROUNDS TO OCT00004, SO ALLOWS 2.56
042962,000584: # SEC FIRINGS BEFORE APPLYING LIMIT
042963,000585: 16,3771 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
042964,000586:
042965,000587: 16,3771 5036 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
042966,000588: 16,3771 5053 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
042967,000589: 16,3771 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
042968,000590: 16,3771 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
042969,000591:
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc