Source Code
These source-code files are part of a reconstructed copy of Comanche 44, the
initial release (though not the final mission release) of the Apollo 10
Command Module (CM) Apollo Guidance Computer (AGC) software. Subsequent releases
were Comanche 45 and Comanche 45/2 (the flown release on Apollo 10). The reconstruction
is believed to be exactly accurate, but in the absence of an actual Apollo-era
listing of Comanche 44, some explanation of the reconstruction process is needed
to insure confidence in that accuracy.
The starting point was the source code of Comanche 51 (separately previously reconstructed from an Apollo-era listing of Comanche 55, flown on Apollo 11). Comanche 51 source code was then modified by undoing changes known to have been made between revisions 44 and 51. The now-reconstructed Comanche 44 source code was verified by assembling it and checking that the assembled code had the expected known-correct memory-bank checksums. Note that page numbers in the reconstructed code match those on the Comanche 55 printout, although the source code would likely have different page numbers in a contemporary Comanche 44 listing. Annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change relative to Comanche 51. Here's a guide to the Apollo documentation referenced in those annotations:
Comments expected to have been present in the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC Project's GitHub repository. |
043527,000002: ## Copyright: Public domain.
043528,000003: ## Filename: TVCROLLDAP.agc
043529,000004: ## Purpose: A section of Comanche revision 044.
043530,000005: ## It is part of the reconstructed source code for the
043531,000006: ## original release of the flight software for the Command
043532,000007: ## Module's (CM) Apollo Guidance Computer (AGC) for Apollo 10.
043533,000008: ## The code has been recreated from a copy of Comanche 055. It
043534,000009: ## has been adapted such that the resulting bugger words
043535,000010: ## exactly match those specified for Comanche 44 in NASA drawing
043536,000011: ## 2021153D, which gives relatively high confidence that the
043537,000012: ## reconstruction is correct.
043538,000013: ## Assembler: yaYUL
043539,000014: ## Contact: Ron Burkey <info@sandroid.org>.
043540,000015: ## Website: www.ibiblio.org/apollo/index.html
043541,000016: ## Mod history: 2020-12-03 MAS Created from Comanche 51.
043542,000017:
Page 984 |
043544,000019: # PROGRAM NAME...TVC ROLL AUTOPILOT
043545,000020: # LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM
043546,000021: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
043547,000022:
043548,000023: # FUNCTIONAL DESCRIPTION....
043549,000024:
043550,000025: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
043551,000026: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
043552,000027: # BY IGNITION (P40)
043553,000028: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
043554,000029: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
043555,000030: # *USES T6 CLOCK TO TIME JET FIRINGS
043556,000031: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
043557,000032: # *MINIMUM JET FIRING TIME = 15 MS
043558,000033: # *JET PAIRS FIRE ALTERNATELY
043559,000034: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
043560,000035: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
043561,000036: # OF A JET FIRING TIME IS MADE ON A LATER PASS
043562,000037:
043563,000038: # CALLING SEQUENCE....
043564,000039:
043565,000040: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
043566,000041: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
043567,000042:
043568,000043: # NORMAL EXIT MODES.... ENDOFJOB
043569,000044:
043570,000045: # ALARM OR ABORT EXIT MODES.... NONE
043571,000046:
043572,000047: # SUBROUTINES CALLED.....NONE
043573,000048:
043574,000049: # OTHER INTERFACES....
043575,000050:
043576,000051: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
043577,000052: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
043578,000053: # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC
043579,000054: # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS
043580,000055: # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED.
043581,000056:
043582,000057: # ERASABLE INITIALIZATION REQUIRED....
043583,000058:
043584,000059: # *1/CONACC (S40.15)
043585,000060: # *OGAD (CDUX AT IGNITION)
043586,000061: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
043587,000062: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
043588,000063: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
043589,000064:
043590,000065: # OUTPUT....
043591,000066:
043592,000067: # *ROLL JET PAIR FIRINGS
043593,000068:
Page 985 |
043595,000070: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
043596,000071:
Page 986 |
043598,000073: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
043599,000074: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
043600,000075:
043601,000076: # SWITCHING LOGIC IN THE PHASE PLANE....
043602,000077:
043603,000078: # OGARATE
043604,000079: # *
043605,000080: # *
043606,000081: # * * * * * * * * * * * *
043607,000082: # * (REGION 1, SEE TEXT BELOW)
043608,000083: # * *
043609,000084: # *
043610,000085: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
043611,000086: # * * .
043612,000087: # * * *
043613,000088: # * * (FIRE NEG ROLL JETS)
043614,000089: # * * *
043615,000090: # (-DB,+LMCRATE)....* *
043616,000091: # * * *
043617,000092: # * * OGAERROR
043618,000093: # ************************************************************************
043619,000094: # * * (-AK, OGAERR)
043620,000095: # * * * (REGION 6-PRIME)
043621,000096: # * * (SEE TEXT BELOW)
043622,000097: # * * *
043623,000098: # * * ...STRAIGHT LINE
043624,000099: # (FIRE POS ROLL JETS) * * * .
043625,000100: # * (COAST) *
043626,000101: # * * * * * * * * * * *
043627,000102: # * -MINLIM
043628,000103: # * *
043629,000104: # *
043630,000105: # * * * * * * * * * * * * * * * *
043631,000106: # * -MAXLIM
043632,000107: # *
043633,000108: # *
043634,000109:
043635,000110: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
043636,000111: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
043637,000112: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
043638,000113: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
043639,000114: # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
043640,000115: # ABOVE.
043641,000116:
043642,000117: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
043643,000118: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
043644,000119: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
Page 987 |
043646,000121:
043647,000122: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
043648,000123: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
043649,000124: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
043650,000125: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
043651,000126: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
043652,000127: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
043653,000128: # INSTEAD. TAKE AN OPERATING POINT IN REGION 6'. PASS A TANGENT TO
043654,000129: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
043655,000130: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
043656,000131: # THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
043657,000132: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
043658,000133: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
043659,000134: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
043660,000135: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
043661,000136: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
043662,000137: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
043663,000138: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
043664,000139: # APPROXIMATION.
043665,000140:
043666,000141: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
043667,000142: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
043668,000143: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
043669,000144: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
043670,000145: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
043671,000146: # THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
043672,000147: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
043673,000148: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
043674,000149: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
043675,000150: # FAILED-ON.
043676,000151:
043677,000152: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
043678,000153: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
043679,000154: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
043680,000155: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
043681,000156: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
043682,000157: # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,
043683,000158: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.
043684,000159:
043685,000160: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
043686,000161: # 2
043687,000162: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
043688,000163:
043689,000164: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
043690,000165:
043691,000166: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
043692,000167:
043693,000168: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
Page 988 |
043695,000170:
043696,000171: # EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
043697,000172:
043698,000173: # DOGADOT = NUM/DEN, WHERE
043699,000174: # 2
043700,000175: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
043701,000176: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
043702,000177: # +LMCRATE
043703,000178:
043704,000179: # DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)
043705,000180: # 2
043706,000181: # DELOGA = OGAERROR - (DB - OGARATE (1/CONACC)/2)SGN(OGARATE)
043707,000182:
043708,000183: # FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
043709,000184: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
043710,000185: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
043711,000186: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
043712,000187:
043713,000188: # OGAERROR = DELOGA + DB SGN(OGARATE)
043714,000189:
043715,000190: # OGARATE = -LMCRATE SGN(OGARATE)
043716,000191:
043717,000192: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
043718,000193: # ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED
043719,000194: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
Page 989 |
043721,000196:
043722,000197: # ROLLDAP CODING....
043723,000198:
043724,000199: 16,2000 SETLOC DAPROLL
043725,000200: 16,2000 BANK
043726,000201: 16,3267 E6,1662 EBANK= OGANOW
043727,000202: 16,3267 COUNT* $$/ROLL
043728,000203: 16,3267 31662 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
043729,000204: 16,3270 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
043730,000205: 16,3271 21663 MSU OGAPAST
043731,000206: 16,3272 00006 EXTEND
043732,000207: 16,3273 75013 MP BIT5
043733,000208: 16,3274 22000 LXCH A
043734,000209: 16,3275 55533 TS OGARATE # SC.AT B-4 REV/SEC
043735,000210:
043736,000211: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
043737,000212: # EXAMINE DURATION OF LAST JET FIRING IF JETS NOW ON.
043738,000213:
043739,000214: 16,3276 31571 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
043740,000215: 16,3277 00006 EXTEND
043741,000216: 16,3300 13302 BZF +2 # ROLL JETS ARE NOW OFF.
043742,000217: 16,3301 13310 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
043743,000218:
043744,000219: 16,3302 31573 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
043745,000220: 16,3303 00006 EXTEND # IF POSITIVE, DONT FIRE
043746,000221: 16,3304 13310 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
043747,000222:
043748,000223: 16,3305 35021 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
043749,000224: 16,3306 55573 TS TEMREG # RESET TEMREG
043750,000225: 16,3307 15324 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
043751,000226:
043752,000227: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
043753,000228:
043754,000229: 16,3310 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
043755,000230: 16,3311 00006 EXTEND
043756,000231: 16,3312 71640 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
043757,000232: 16,3313 00006 EXTEND
043758,000233: 16,3314 71533 MP OGARATE
043759,000234: 16,3315 63703 AD DB # SCALED AT 2(+0) REV
043760,000235: 16,3316 55573 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
043761,000236:
043762,000237: # GET SIGN OF OGARATE
043763,000238:
043764,000239: 16,3317 31533 CA OGARATE
043765,000240: 16,3320 00006 EXTEND
043766,000241: 16,3321 63324 BZMF +3 # LET SGN(0) BE NEGATIVE
043767,000242: 16,3322 35017 CA BIT1
043768,000243: 16,3323 13325 TCF +2
043769,000244: 16,3324 45017 CS BIT1
043770,000245: 16,3325 55666 TS SGNRT # + OR - 2(-14)
043771,000246:
Page 990 |
043773,000248: # CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)
043774,000249: 16,3326 00006 EXTEND
043775,000250: 16,3327 71573 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
043776,000251: 16,3330 40001 CS L
043777,000252: 16,3331 61664 AD OGA # SCALED AT 2(+0) REV
043778,000253: 16,3332 55667 DELOGAC TS DELOGA # SCALE B+0 REV, PLUS TO RIGHT OF C-PARAB
043779,000254:
043780,000255: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
043781,000256:
043782,000257: 16,3333 00006 EXTEND
043783,000258: 16,3334 63337 BZMF +3
043784,000259: 16,3335 34371 CAF PRIO30 # = CA (30000)
043785,000260: 16,3336 13340 TCF +2
043786,000261: 16,3337 35001 CAF BIT15 # = CS (40000)
043787,000262: 16,3340 55670 TS I
043788,000263:
043789,000264: 16,3341 51670 INDEX I # TSET ON I SGN(OGARATE)
043790,000265: 16,3342 01666 0 SGNRT # CA OR CS
043791,000266: 16,3343 40000 COM
043792,000267: 16,3344 00006 EXTEND
043793,000268: 16,3345 63416 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
043794,000269:
043795,000270: # NO JET FIRE YET, TEST FOR MAX OGARATE
043796,000271:
043797,000272: 16,3346 51670 INDEX I
043798,000273: 16,3347 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
043799,000274: 16,3350 55671 TS IOGARATE # I.E. I OGARATE
043800,000275: 16,3351 63711 AD MAXLIM # SCALED AT 2(-4) REV/SEC
043801,000276: 16,3352 00006 EXTEND
043802,000277: 16,3353 63475 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
043803,000278:
043804,000279: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
043805,000280: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY
043806,000281:
043807,000282: 16,3354 31533 CA OGARATE
043808,000283: 16,3355 00006 EXTEND
043809,000284: 16,3356 75002 MP BIT14
043810,000285: 16,3357 55573 TS TEMREG
043811,000286: 16,3360 31664 CA OGA
043812,000287: 16,3361 00006 EXTEND
043813,000288: 16,3362 73704 MP -SLOPE
043814,000289: 16,3363 20001 DDOUBL
043815,000290: 16,3364 20001 DDOUBL
043816,000291: 16,3365 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
043817,000292: 16,3366 61573 AD TEMREG
043818,000293:
043819,000294: 16,3367 51670 INDEX I
043820,000295: 16,3370 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
043821,000296: 16,3371 40000 COM
Page 991 |
043823,000298: 16,3372 63706 AD INTERCEP # SCALED AT 2(-3) REV.
043824,000299: 16,3373 40000 COM
043825,000300: 16,3374 00006 EXTEND
043826,000301: 16,3375 63606 REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
043827,000302:
043828,000303: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY
043829,000304:
043830,000305: 16,3376 31671 CA IOGARATE # ALWAYS NEGATIVE
043831,000306: 16,3377 63707 AD MINLIM # SCALED AT 2(-4) REV/SEC
043832,000307: 16,3400 00006 EXTEND
043833,000308: 16,3401 63606 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
043834,000309:
043835,000310: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
043836,000311:
043837,000312: 16,3402 51670 INDEX I
043838,000313: 16,3403 01664 0 OGA
043839,000314: 16,3404 40000 COM
043840,000315: 16,3405 63703 AD DB
043841,000316: 16,3406 40000 COM
043842,000317: 16,3407 00006 EXTEND
043843,000318: 16,3410 63606 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
043844,000319:
043845,000320: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
043846,000321: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
043847,000322: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
043848,000323: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
043849,000324: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
043850,000325: # OPERATING POINTS IN REGIONS 6 OR 6')
043851,000326:
043852,000327: 16,3411 31664 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
043853,000328: 16,3412 55667 TS DELOGA # ACTUAL STATE
043854,000329: 16,3413 31533 CA OGARATE
043855,000330: 16,3414 55665 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
043856,000331: 16,3415 13425 TCF ONROLL
043857,000332:
043858,000333: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
043859,000334: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
043860,000335: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
043861,000336: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1')
043862,000337:
043863,000338: 16,3416 51670 ROLLON INDEX I
043864,000339: 16,3417 03703 0 DB
043865,000340: 16,3420 27667 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
043866,000341:
043867,000342: 16,3421 43705 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
043868,000343: 16,3422 51670 INDEX I
043869,000344: 16,3423 00000 0 A
043870,000345: 16,3424 55665 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
043871,000346:
Page 992 |
043873,000348: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
043874,000349:
043875,000350: 16,3425 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
043876,000351: 16,3426 71640 MP 1/CONACC
043877,000352: 16,3427 60000 DOUBLE
043878,000353: 16,3430 00006 EXTEND
043879,000354: 16,3431 73704 MP -SLOPE
043880,000355: 16,3432 55573 TS TEMREG # 2(-SLOPE)RATE /CONACC
043881,000356: 16,3433 00006 EXTEND
043882,000357: 16,3434 71665 MP DELOGART
043883,000358: 16,3435 55665 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
043884,000359: 16,3436 45005 CS BIT11
043885,000360: 16,3437 51670 INDEX I
043886,000361: 16,3440 00000 0 A
043887,000362: 16,3441 27573 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
043888,000363:
043889,000364: 16,3442 51670 INDEX I
043890,000365: 16,3443 01667 0 DELOGA
043891,000366: 16,3444 40000 COM
043892,000367: 16,3445 63703 AD DB
043893,000368: 16,3446 40000 COM
043894,000369: 16,3447 00006 EXTEND
043895,000370: 16,3450 73704 MP -SLOPE
043896,000371: 16,3451 27665 ADS DELOGART
043897,000372: 16,3452 33705 CA LMCRATE
043898,000373: 16,3453 00006 EXTEND
043899,000374: 16,3454 75005 MP BIT11
043900,000375: 16,3455 61665 RATENUM AD DELOGART # NUMERATOR COMPLETED
043901,000376:
043902,000377: 16,3456 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
043903,000378: 16,3457 35021 CA ZERO
043904,000379: 16,3460 00006 EXTEND
043905,000380: 16,3461 11573 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
043906,000381: 16,3462 00006 EXTEND
043907,000382: 16,3463 13471 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
043908,000383:
043909,000384: 16,3464 10000 MINLIMAP CCS A
043910,000385: 16,3465 34777 CAF POSMAX # POSITIVE OVERFLOW
043911,000386: 16,3466 13500 TCF ROLLSET
043912,000387: 16,3467 44777 CS POSMAX # NEGATIVE OVERFLOW
043913,000388: 16,3470 13500 TCF ROLLSET
043914,000389:
043915,000390: 16,3471 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
043916,000391: 16,3472 00006 EXTEND
043917,000392: 16,3473 11573 DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE
043918,000393: 16,3474 13500 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
043919,000394:
043920,000395: 16,3475 43711 RATELIM CS MAXLIM
043921,000396: 16,3476 51670 INDEX I
Page 993 |
043923,000398: 16,3477 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
043924,000399:
043925,000400: # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE
043926,000401:
043927,000402: 16,3500 55573 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
043928,000403: 16,3501 00006 EXTEND
043929,000404: 16,3502 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
043930,000405: 16,3503 55573 TS TEMREG # OVERFLOW PROTECT
043931,000406: 16,3504 13507 TCF +3 # " "
043932,000407: 16,3505 50000 INDEX A # " "
043933,000408: 16,3506 45000 CS LIMITS # " "
043934,000409: 16,3507 00006 EXTEND
043935,000410: 16,3510 77665 MP T6SCALE # T6SCALE = 8/10.24
043936,000411: 16,3511 00006 EXTEND
043937,000412: 16,3512 71640 MP 1/CONACC # SCALED AT B+9 SECSQ/REV (MAX < .60)
043938,000413: 16,3513 20001 DDOUBL
043939,000414: 16,3514 20001 DDOUBL
043940,000415: 16,3515 55573 TS TEMREG # OVERFLOW PROTECT
043941,000416: 16,3516 13521 TCF +3 # " "
043942,000417: 16,3517 50000 INDEX A # " "
043943,000418: 16,3520 45000 CS LIMITS # " "
043944,000419: 16,3521 55573 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
043945,000420: 16,3522 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
043946,000421: 16,3523 13606 BZF NOROLL
043947,000422:
043948,000423: # JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.
043949,000424:
043950,000425: 16,3524 31573 CAE TEMREG # DESIRED CHANGE IN OGARATE
043951,000426: 16,3525 00006 EXTEND
043952,000427: 16,3526 71571 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
043953,000428: 16,3527 10000 CCS A
043954,000429: 16,3530 13534 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
043955,000430: 16,3531 13537 TCF NEWROLL # START NEW FIRING NOW, PLUS
043956,000431: 16,3532 13606 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
043957,000432: 16,3533 13537 TCF NEWROLL # START NEW FIRING NOW, MINUS
043958,000433:
043959,000434: # CONTINUE PRESENT FIRING
043960,000435:
043961,000436: 16,3534 35021 MOREROLL CAF ZERO
043962,000437: 16,3535 55670 TS I # USE TEMP. AS MOREROLL SWITCH
043963,000438: 16,3536 13550 TCF MAXTFIRE
043964,000439:
043965,000440: # START NEW FIRING, BUT CHECK IF GREATER THAN MIN FIRE TIME.
043966,000441:
043967,000442: 16,3537 11573 NEWROLL CCS TEMREG # CALL THIS T6FIRE
043968,000443: 16,3540 65017 AD ONE
043969,000444: 16,3541 13543 TCF +2
043970,000445: 16,3542 65017 AD ONE
043971,000446: 16,3543 40000 COM # -MAG(T6FIRE)
043972,000447: 16,3544 63712 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
Page 994 |
043974,000449: 16,3545 40000 COM
043975,000450: 16,3546 00006 EXTEND
043976,000451: 16,3547 63606 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
043977,000452:
043978,000453: # PROCEED WITH NEW FIRING, BUT NOT LONGER THAN TMAXFIRE.
043979,000454:
043980,000455: 16,3550 31573 MAXTFIRE CA TEMREG
043981,000456: 16,3551 00006 EXTEND
043982,000457: 16,3552 75015 MP 1/TMXFIR # I.E. 1/TMAXFIRE
043983,000458: 16,3553 00006 EXTEND
043984,000459: 16,3554 13562 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
043985,000460:
043986,000461: 16,3555 10000 CCS A
043987,000462: 16,3556 33713 CAF TMAXFIRE # USE MAXIMUM
043988,000463: 16,3557 13561 TCF +2
043989,000464: 16,3560 43713 CS TMAXFIRE # USE MAXIMUM
043990,000465: 16,3561 55573 TS TEMREG
043991,000466:
043992,000467: # SET UP SIGN OF REQUIRED TORQUE.
043993,000468:
043994,000469: 16,3562 11573 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
043995,000470: 16,3563 34777 CA POSMAX # POSITIVE TORQUE REQUIRED
043996,000471: 16,3564 13566 TCF +2
043997,000472: 16,3565 35001 CA NEGMAX # NEGATIVE TORQUE REQUIRED
043998,000473: 16,3566 55571 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
043999,000474:
044000,000475: 16,3567 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
044001,000476: 16,3570 00006 EXTEND
044002,000477: 16,3571 63574 BZMF +3 # POSITIVE TORQUE REQUIRED
044003,000478: 16,3572 41573 CS TEMREG
044004,000479: 16,3573 55573 TS TEMREG
044005,000480:
044006,000481: 16,3574 31670 FIRELOOK CA I # IS IT MOREROLL
044007,000482: 16,3575 00006 EXTEND
044008,000483: 16,3576 13600 BZF FIREPLUG # YES
044009,000484: 16,3577 13611 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
044010,000485:
044011,000486: 16,3600 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
044012,000487: 16,3601 00006 EXTEND
044013,000488: 16,3602 61573 SU TEMREG
044014,000489: 16,3603 00006 EXTEND
044015,000490: 16,3604 65324 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
044016,000491: 16,3605 13611 TCF JETROLL
044017,000492:
044018,000493: 16,3606 45021 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
044019,000494: 16,3607 55571 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
044020,000495: 16,3610 55573 TS TEMREG
044021,000496:
044022,000497: 16,3611 00006 JETROLL EXTEND
044023,000498: 16,3612 33702 DCA NOROL1T6
Page 995 |
044025,000500: 16,3613 53311 DXCH T6LOC
044026,000501: 16,3614 31573 CA TEMREG # ENTER JET FIRING TIME
044027,000502: 16,3615 54031 TS TIME6
044028,000503:
044029,000504: 16,3616 31670 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
044030,000505: 16,3617 00006 EXTEND
044031,000506: 16,3620 15324 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
044032,000507:
044033,000508: 16,3621 11571 CCS ROLLFIRE
044034,000509: 16,3622 13626 TCF +TORQUE
044035,000510: 16,3623 13667 TCF T6ENABL
044036,000511: 16,3624 13647 TCF -TORQUE
044037,000512: 16,3625 13667 TCF T6ENABL
044038,000513:
044039,000514: # PROCEED WITH PLUS TORQUE.
044040,000515:
044041,000516: 16,3626 31572 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
044042,000517: 16,3627 75017 MASK BIT1 # WAS IT NO.9-11
044043,000518: 16,3630 00006 EXTEND
044044,000519: 16,3631 13641 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
044045,000520:
044046,000521: 16,3632 45017 NO.13-15 CS BIT1
044047,000522: 16,3633 71572 MASK ROLLWORD
044048,000523: 16,3634 55572 TS ROLLWORD # CHANGE BIT 1 TO ZERO
044049,000524: 16,3635 35037 CAF +ROLL2
044050,000525: 16,3636 00006 EXTEND
044051,000526: 16,3637 01006 WRITE CHAN6
044052,000527: 16,3640 13667 TCF T6ENABL
044053,000528:
044054,000529: 16,3641 35017 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
044055,000530: 16,3642 27572 ADS ROLLWORD # CHANGE BIT 1 TO ONE
044056,000531: 16,3643 35022 CAF +ROLL1
044057,000532: 16,3644 00006 EXTEND
044058,000533: 16,3645 01006 WRITE CHAN6
044059,000534: 16,3646 13667 TCF T6ENABL
044060,000535:
044061,000536: 16,3647 31572 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
044062,000537: 16,3650 75016 MASK BIT2 # WAS IT NO.12-10
044063,000538: 16,3651 00006 EXTEND
044064,000539: 16,3652 13662 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
044065,000540:
044066,000541: 16,3653 45016 NO.16-14 CS BIT2
044067,000542: 16,3654 71572 MASK ROLLWORD
044068,000543: 16,3655 55572 TS ROLLWORD # CHANGE BIT 2 TO ZERO
044069,000544: 16,3656 33714 CAF -ROLL2
044070,000545: 16,3657 00006 EXTEND
044071,000546: 16,3660 01006 WRITE CHAN6
044072,000547: 16,3661 13667 TCF T6ENABL
044073,000548:
044074,000549: 16,3662 35016 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
Page 996 |
044076,000551: 16,3663 27572 ADS ROLLWORD # CHANGE BIT 2 TO ONE
044077,000552: 16,3664 34377 CAF -ROLL1
044078,000553: 16,3665 00006 EXTEND
044079,000554: 16,3666 01006 WRITE CHAN6
044080,000555:
044081,000556: 16,3667 35001 T6ENABL CAF BIT15
044082,000557: 16,3670 00006 EXTEND
044083,000558: 16,3671 05013 WOR CHAN13
044084,000559: 16,3672 15324 RDAPEND TCF TASKOVER # EXIT ROLL DAP
044085,000560:
Page 997 |
044087,000562: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
044088,000563:
044089,000564: 16,3673 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
044090,000565: 16,3674 35021 CAF ZERO # CALLED BY ..JETROLL..)
044091,000566: 16,3675 55571 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
044092,000567: 16,3676 00006 EXTEND
044093,000568: 16,3677 01006 KILLJETS WRITE CHAN6
044094,000569: 16,3700 15335 TCF NOQRSM
044095,000570:
Page 998 |
044097,000572: # CONSTANTS FOR ROLL AUTOPILOT....
044098,000573:
044099,000574: 16,3701 E6,1702 EBANK= BZERO
044100,000575: 16,3701 03673 34066 NOROL1T6 2CADR NOROLL1
044101,000576:
044102,000577: 16,3703 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
044103,000578:
044104,000579: 16,3704 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
044105,000580: # PER SEC
044106,000581: 16,3705 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
044107,000582: # B-4 REV/SEC
044108,000583: 16,3706 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
044109,000584:
044110,000585: 16,3707 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
044111,000586:
044112,000587: 16,3710 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
044113,000588:
044114,000589: 16,3711 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
044115,000590:
044116,000591: 16,3712 00030 TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
044117,000592:
044118,000593: 16,3713 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
044119,000594:
044120,000595: 16,3714 5015 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
044121,000596: # ROUNDS TO OCT00004, SO ALLOWS 2.56
044122,000597: # SEC FIRINGS BEFORE APPLYING LIMIT
044123,000598: 16,3714 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
044124,000599:
044125,000600: 16,3714 5022 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
044126,000601: 16,3714 5037 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
044127,000602: 16,3714 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
044128,000603: 16,3714 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
044129,000604:
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc