Source Code
These source-code files are part of a reconstructed copy of Comanche 51, the
initial release (though not the final mission release) of the Apollo 11
Command Module (CM) Apollo Guidance Computer (AGC) software. The flown, final
release was Comanche 55. The reconstruction is believed to be exactly accurate,
but in the absence of an actual Apollo-era listing of Comanche 51, some
explanation of the reconstruction process is needed to insure confidence in
that accuracy.
The starting point was the source code of Comanche 55, whose original source code is available. Comanche 55 source code was then modified by undoing changes known to have been made between revisions 51 and 55. The most-significant steps involved reverting changes related to the R-2 lunar potential model, the details of which were known from the previous, separate, independent reconstruction of the Apollo 10 Lunar Module software Luminary 69/2. The now-reconstructed Comanche 51 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 or Luminary 69 printouts, although the source code would likely have different page numbers in a contemporary Comanche 51 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 55. Here's a guide to some of the Apollo documentation relevant to 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. |
043011,000002: ## Copyright: Public domain.
043012,000003: ## Filename: TVCROLLDAP.agc
043013,000004: ## Purpose: A section of Comanche revision 051.
043014,000005: ## It is part of the reconstructed source code for the
043015,000006: ## original release of the flight software for the Command
043016,000007: ## Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
043017,000008: ## The code has been recreated from a copy of Comanche 055. It
043018,000009: ## has been adapted such that the resulting bugger words
043019,000010: ## exactly match those specified for Comanche 51 in NASA drawing
043020,000011: ## 2021153D, which gives relatively high confidence that the
043021,000012: ## reconstruction is correct.
043022,000013: ## Reference: pp. 984-998
043023,000014: ## Assembler: yaYUL
043024,000015: ## Contact: Ron Burkey <info@sandroid.org>.
043025,000016: ## Website: www.ibiblio.org/apollo/index.html
043026,000017: ## Mod history: 2019-07-30 MAS Created from Comanche 55.
043027,000018:
Page 984 |
043029,000020: # PROGRAM NAME...TVC ROLL AUTOPILOT
043030,000021: # LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM
043031,000022: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
043032,000023:
043033,000024: # FUNCTIONAL DESCRIPTION....
043034,000025:
043035,000026: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
043036,000027: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
043037,000028: # BY IGNITION (P40)
043038,000029: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
043039,000030: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
043040,000031: # *USES T6 CLOCK TO TIME JET FIRINGS
043041,000032: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
043042,000033: # *MINIMUM JET FIRING TIME = 15 MS
043043,000034: # *JET PAIRS FIRE ALTERNATELY
043044,000035: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
043045,000036: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
043046,000037: # OF A JET FIRING TIME IS MADE ON A LATER PASS
043047,000038:
043048,000039: # CALLING SEQUENCE....
043049,000040:
043050,000041: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
043051,000042: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
043052,000043:
043053,000044: # NORMAL EXIT MODES.... ENDOFJOB
043054,000045:
043055,000046: # ALARM OR ABORT EXIT MODES.... NONE
043056,000047:
043057,000048: # SUBROUTINES CALLED.....NONE
043058,000049:
043059,000050: # OTHER INTERFACES....
043060,000051:
043061,000052: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
043062,000053: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
043063,000054: # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC
043064,000055: # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS
043065,000056: # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED.
043066,000057:
043067,000058: # ERASABLE INITIALIZATION REQUIRED....
043068,000059:
043069,000060: # *1/CONACC (S40.15)
043070,000061: # *OGAD (CDUX AT IGNITION)
043071,000062: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
043072,000063: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
043073,000064: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
043074,000065:
043075,000066: # OUTPUT....
043076,000067:
043077,000068: # *ROLL JET PAIR FIRINGS
043078,000069:
Page 985 |
043080,000071: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
043081,000072:
Page 986 |
043083,000074: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
043084,000075: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
043085,000076:
043086,000077: # SWITCHING LOGIC IN THE PHASE PLANE....
043087,000078:
043088,000079: # OGARATE
043089,000080: # *
043090,000081: # *
043091,000082: # * * * * * * * * * * * *
043092,000083: # * (REGION 1, SEE TEXT BELOW)
043093,000084: # * *
043094,000085: # *
043095,000086: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
043096,000087: # * * .
043097,000088: # * * *
043098,000089: # * * (FIRE NEG ROLL JETS)
043099,000090: # * * *
043100,000091: # (-DB,+LMCRATE)....* *
043101,000092: # * * *
043102,000093: # * * OGAERROR
043103,000094: # ************************************************************************
043104,000095: # * * (-AK, OGAERR)
043105,000096: # * * * (REGION 6-PRIME)
043106,000097: # * * (SEE TEXT BELOW)
043107,000098: # * * *
043108,000099: # * * ...STRAIGHT LINE
043109,000100: # (FIRE POS ROLL JETS) * * * .
043110,000101: # * (COAST) *
043111,000102: # * * * * * * * * * * *
043112,000103: # * -MINLIM
043113,000104: # * *
043114,000105: # *
043115,000106: # * * * * * * * * * * * * * * * *
043116,000107: # * -MAXLIM
043117,000108: # *
043118,000109: # *
043119,000110:
043120,000111: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
043121,000112: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
043122,000113: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
043123,000114: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
043124,000115: # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
043125,000116: # ABOVE.
043126,000117:
043127,000118: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
043128,000119: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
043129,000120: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
Page 987 |
043131,000122:
043132,000123: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
043133,000124: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
043134,000125: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
043135,000126: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
043136,000127: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
043137,000128: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
043138,000129: # INSTEAD. TAKE AN OPERATING POINT IN REGION 6'. PASS A TANGENT TO
043139,000130: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
043140,000131: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
043141,000132: # THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
043142,000133: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
043143,000134: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
043144,000135: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
043145,000136: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
043146,000137: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
043147,000138: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
043148,000139: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
043149,000140: # APPROXIMATION.
043150,000141:
043151,000142: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
043152,000143: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
043153,000144: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
043154,000145: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
043155,000146: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
043156,000147: # THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
043157,000148: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
043158,000149: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
043159,000150: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
043160,000151: # FAILED-ON.
043161,000152:
043162,000153: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
043163,000154: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
043164,000155: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
043165,000156: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
043166,000157: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
043167,000158: # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,
043168,000159: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.
043169,000160:
043170,000161: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
043171,000162: # 2
043172,000163: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
043173,000164:
043174,000165: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
043175,000166:
043176,000167: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
043177,000168:
043178,000169: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
Page 988 |
043180,000171:
043181,000172: # EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
043182,000173:
043183,000174: # DOGADOT = NUM/DEN, WHERE
043184,000175: # 2
043185,000176: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
043186,000177: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
043187,000178: # +LMCRATE
043188,000179:
043189,000180: # DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)
043190,000181: # 2
043191,000182: # DELOGA = OGAERROR - (DB - OGARATE (1/CONACC)/2)SGN(OGARATE)
043192,000183:
043193,000184: # FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
043194,000185: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
043195,000186: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
043196,000187: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
043197,000188:
043198,000189: # OGAERROR = DELOGA + DB SGN(OGARATE)
043199,000190:
043200,000191: # OGARATE = -LMCRATE SGN(OGARATE)
043201,000192:
043202,000193: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
043203,000194: # ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED
043204,000195: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
Page 989 |
043206,000197:
043207,000198: # ROLLDAP CODING....
043208,000199:
043209,000200: 16,2000 SETLOC DAPROLL
043210,000201: 16,2000 BANK
043211,000202: 16,3272 E6,1662 EBANK= OGANOW
043212,000203: 16,3272 COUNT* $$/ROLL
043213,000204: 16,3272 31662 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
043214,000205: 16,3273 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
043215,000206: 16,3274 21663 MSU OGAPAST
043216,000207: 16,3275 00006 EXTEND
043217,000208: 16,3276 75013 MP BIT5
043218,000209: 16,3277 22000 LXCH A
043219,000210: 16,3300 55533 TS OGARATE # SC.AT B-4 REV/SEC
043220,000211:
043221,000212: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
043222,000213: # EXAMINE DURATION OF LAST JET FIRING IF JETS NOW ON.
043223,000214:
043224,000215: 16,3301 31571 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
043225,000216: 16,3302 00006 EXTEND
043226,000217: 16,3303 13305 BZF +2 # ROLL JETS ARE NOW OFF.
043227,000218: 16,3304 13313 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
043228,000219:
043229,000220: 16,3305 31573 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
043230,000221: 16,3306 00006 EXTEND # IF POSITIVE, DONT FIRE
043231,000222: 16,3307 13313 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
043232,000223:
043233,000224: 16,3310 35021 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
043234,000225: 16,3311 55573 TS TEMREG # RESET TEMREG
043235,000226: 16,3312 15324 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
043236,000227:
043237,000228: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
043238,000229:
043239,000230: 16,3313 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
043240,000231: 16,3314 00006 EXTEND
043241,000232: 16,3315 71640 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
043242,000233: 16,3316 00006 EXTEND
043243,000234: 16,3317 71533 MP OGARATE
043244,000235: 16,3320 63706 AD DB # SCALED AT 2(+0) REV
043245,000236: 16,3321 55573 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
043246,000237:
043247,000238: # GET SIGN OF OGARATE
043248,000239:
043249,000240: 16,3322 31533 CA OGARATE
043250,000241: 16,3323 00006 EXTEND
043251,000242: 16,3324 63327 BZMF +3 # LET SGN(0) BE NEGATIVE
043252,000243: 16,3325 35017 CA BIT1
043253,000244: 16,3326 13330 TCF +2
043254,000245: 16,3327 45017 CS BIT1
043255,000246: 16,3330 55666 TS SGNRT # + OR - 2(-14)
043256,000247:
Page 990 |
043258,000249: # CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)
043259,000250: 16,3331 00006 EXTEND
043260,000251: 16,3332 71573 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
043261,000252: 16,3333 40001 CS L
043262,000253: 16,3334 61664 AD OGA # SCALED AT 2(+0) REV
043263,000254: 16,3335 55667 DELOGAC TS DELOGA # SCALE B+0 REV, PLUS TO RIGHT OF C-PARAB
043264,000255:
043265,000256: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
043266,000257:
043267,000258: 16,3336 00006 EXTEND
043268,000259: 16,3337 63342 BZMF +3
043269,000260: 16,3340 34371 CAF PRIO30 # = CA (30000)
043270,000261: 16,3341 13343 TCF +2
043271,000262: 16,3342 35001 CAF BIT15 # = CS (40000)
043272,000263: 16,3343 55670 TS I
043273,000264:
043274,000265: 16,3344 51670 INDEX I # TSET ON I SGN(OGARATE)
043275,000266: 16,3345 01666 0 SGNRT # CA OR CS
043276,000267: 16,3346 40000 COM
043277,000268: 16,3347 00006 EXTEND
043278,000269: 16,3350 63421 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
043279,000270:
043280,000271: # NO JET FIRE YET, TEST FOR MAX OGARATE
043281,000272:
043282,000273: 16,3351 51670 INDEX I
043283,000274: 16,3352 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
043284,000275: 16,3353 55671 TS IOGARATE # I.E. I OGARATE
043285,000276: 16,3354 63714 AD MAXLIM # SCALED AT 2(-4) REV/SEC
043286,000277: 16,3355 00006 EXTEND
043287,000278: 16,3356 63500 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
043288,000279:
043289,000280: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
043290,000281: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY
043291,000282:
043292,000283: 16,3357 31533 CA OGARATE
043293,000284: 16,3360 00006 EXTEND
043294,000285: 16,3361 75002 MP BIT14
043295,000286: 16,3362 55573 TS TEMREG
043296,000287: 16,3363 31664 CA OGA
043297,000288: 16,3364 00006 EXTEND
043298,000289: 16,3365 73707 MP -SLOPE
043299,000290: 16,3366 20001 DDOUBL
043300,000291: 16,3367 20001 DDOUBL
043301,000292: 16,3370 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
043302,000293: 16,3371 61573 AD TEMREG
043303,000294:
043304,000295: 16,3372 51670 INDEX I
043305,000296: 16,3373 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
043306,000297: 16,3374 40000 COM
Page 991 |
043308,000299: 16,3375 63711 AD INTERCEP # SCALED AT 2(-3) REV.
043309,000300: 16,3376 40000 COM
043310,000301: 16,3377 00006 EXTEND
043311,000302: 16,3400 63611 REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
043312,000303:
043313,000304: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY
043314,000305:
043315,000306: 16,3401 31671 CA IOGARATE # ALWAYS NEGATIVE
043316,000307: 16,3402 63712 AD MINLIM # SCALED AT 2(-4) REV/SEC
043317,000308: 16,3403 00006 EXTEND
043318,000309: 16,3404 63611 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
043319,000310:
043320,000311: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
043321,000312:
043322,000313: 16,3405 51670 INDEX I
043323,000314: 16,3406 01664 0 OGA
043324,000315: 16,3407 40000 COM
043325,000316: 16,3410 63706 AD DB
043326,000317: 16,3411 40000 COM
043327,000318: 16,3412 00006 EXTEND
043328,000319: 16,3413 63611 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
043329,000320:
043330,000321: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
043331,000322: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
043332,000323: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
043333,000324: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
043334,000325: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
043335,000326: # OPERATING POINTS IN REGIONS 6 OR 6')
043336,000327:
043337,000328: 16,3414 31664 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
043338,000329: 16,3415 55667 TS DELOGA # ACTUAL STATE
043339,000330: 16,3416 31533 CA OGARATE
043340,000331: 16,3417 55665 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
043341,000332: 16,3420 13430 TCF ONROLL
043342,000333:
043343,000334: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
043344,000335: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
043345,000336: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
043346,000337: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1')
043347,000338:
043348,000339: 16,3421 51670 ROLLON INDEX I
043349,000340: 16,3422 03706 0 DB
043350,000341: 16,3423 27667 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
043351,000342:
043352,000343: 16,3424 43710 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
043353,000344: 16,3425 51670 INDEX I
043354,000345: 16,3426 00000 0 A
043355,000346: 16,3427 55665 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
043356,000347:
Page 992 |
043358,000349: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
043359,000350:
043360,000351: 16,3430 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
043361,000352: 16,3431 71640 MP 1/CONACC
043362,000353: 16,3432 60000 DOUBLE
043363,000354: 16,3433 00006 EXTEND
043364,000355: 16,3434 73707 MP -SLOPE
043365,000356: 16,3435 55573 TS TEMREG # 2(-SLOPE)RATE /CONACC
043366,000357: 16,3436 00006 EXTEND
043367,000358: 16,3437 71665 MP DELOGART
043368,000359: 16,3440 55665 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
043369,000360: 16,3441 45005 CS BIT11
043370,000361: 16,3442 51670 INDEX I
043371,000362: 16,3443 00000 0 A
043372,000363: 16,3444 27573 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
043373,000364:
043374,000365: 16,3445 51670 INDEX I
043375,000366: 16,3446 01667 0 DELOGA
043376,000367: 16,3447 40000 COM
043377,000368: 16,3450 63706 AD DB
043378,000369: 16,3451 40000 COM
043379,000370: 16,3452 00006 EXTEND
043380,000371: 16,3453 73707 MP -SLOPE
043381,000372: 16,3454 27665 ADS DELOGART
043382,000373: 16,3455 33710 CA LMCRATE
043383,000374: 16,3456 00006 EXTEND
043384,000375: 16,3457 75005 MP BIT11
043385,000376: 16,3460 61665 RATENUM AD DELOGART # NUMERATOR COMPLETED
043386,000377:
043387,000378: 16,3461 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
043388,000379: 16,3462 35021 CA ZERO
043389,000380: 16,3463 00006 EXTEND
043390,000381: 16,3464 11573 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
043391,000382: 16,3465 00006 EXTEND
043392,000383: 16,3466 13474 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
043393,000384:
043394,000385: 16,3467 10000 MINLIMAP CCS A
043395,000386: 16,3470 34777 CAF POSMAX # POSITIVE OVERFLOW
043396,000387: 16,3471 13503 TCF ROLLSET
043397,000388: 16,3472 44777 CS POSMAX # NEGATIVE OVERFLOW
043398,000389: 16,3473 13503 TCF ROLLSET
043399,000390:
043400,000391: 16,3474 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
043401,000392: 16,3475 00006 EXTEND
043402,000393: 16,3476 11573 DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE
043403,000394: 16,3477 13503 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
043404,000395:
043405,000396: 16,3500 43714 RATELIM CS MAXLIM
043406,000397: 16,3501 51670 INDEX I
Page 993 |
043408,000399: 16,3502 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
043409,000400:
043410,000401: # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE
043411,000402:
043412,000403: 16,3503 55573 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
043413,000404: 16,3504 00006 EXTEND
043414,000405: 16,3505 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
043415,000406: 16,3506 55573 TS TEMREG # OVERFLOW PROTECT
043416,000407: 16,3507 13512 TCF +3 # " "
043417,000408: 16,3510 50000 INDEX A # " "
043418,000409: 16,3511 45000 CS LIMITS # " "
043419,000410: 16,3512 00006 EXTEND
043420,000411: 16,3513 77665 MP T6SCALE # T6SCALE = 8/10.24
043421,000412: 16,3514 00006 EXTEND
043422,000413: 16,3515 71640 MP 1/CONACC # SCALED AT B+9 SECSQ/REV (MAX < .60)
043423,000414: 16,3516 20001 DDOUBL
043424,000415: 16,3517 20001 DDOUBL
043425,000416: 16,3520 55573 TS TEMREG # OVERFLOW PROTECT
043426,000417: 16,3521 13524 TCF +3 # " "
043427,000418: 16,3522 50000 INDEX A # " "
043428,000419: 16,3523 45000 CS LIMITS # " "
043429,000420: 16,3524 55573 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
043430,000421: 16,3525 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
043431,000422: 16,3526 13611 BZF NOROLL
043432,000423:
043433,000424: # JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.
043434,000425:
043435,000426: 16,3527 31573 CAE TEMREG # DESIRED CHANGE IN OGARATE
043436,000427: 16,3530 00006 EXTEND
043437,000428: 16,3531 71571 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
043438,000429: 16,3532 10000 CCS A
043439,000430: 16,3533 13537 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
043440,000431: 16,3534 13542 TCF NEWROLL # START NEW FIRING NOW, PLUS
043441,000432: 16,3535 13611 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
043442,000433: 16,3536 13542 TCF NEWROLL # START NEW FIRING NOW, MINUS
043443,000434:
043444,000435: # CONTINUE PRESENT FIRING
043445,000436:
043446,000437: 16,3537 35021 MOREROLL CAF ZERO
043447,000438: 16,3540 55670 TS I # USE TEMP. AS MOREROLL SWITCH
043448,000439: 16,3541 13553 TCF MAXTFIRE
043449,000440:
043450,000441: # START NEW FIRING, BUT CHECK IF GREATER THAN MIN FIRE TIME.
043451,000442:
043452,000443: 16,3542 11573 NEWROLL CCS TEMREG # CALL THIS T6FIRE
043453,000444: 16,3543 65017 AD ONE
043454,000445: 16,3544 13546 TCF +2
043455,000446: 16,3545 65017 AD ONE
043456,000447: 16,3546 40000 COM # -MAG(T6FIRE)
043457,000448: 16,3547 63715 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
Page 994 |
043459,000450: 16,3550 40000 COM
043460,000451: 16,3551 00006 EXTEND
043461,000452: 16,3552 63611 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
043462,000453:
043463,000454: # PROCEED WITH NEW FIRING, BUT NOT LONGER THAN TMAXFIRE.
043464,000455:
043465,000456: 16,3553 31573 MAXTFIRE CA TEMREG
043466,000457: 16,3554 00006 EXTEND
043467,000458: 16,3555 75015 MP 1/TMXFIR # I.E. 1/TMAXFIRE
043468,000459: 16,3556 00006 EXTEND
043469,000460: 16,3557 13565 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
043470,000461:
043471,000462: 16,3560 10000 CCS A
043472,000463: 16,3561 33716 CAF TMAXFIRE # USE MAXIMUM
043473,000464: 16,3562 13564 TCF +2
043474,000465: 16,3563 43716 CS TMAXFIRE # USE MAXIMUM
043475,000466: 16,3564 55573 TS TEMREG
043476,000467:
043477,000468: # SET UP SIGN OF REQUIRED TORQUE.
043478,000469:
043479,000470: 16,3565 11573 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
043480,000471: 16,3566 34777 CA POSMAX # POSITIVE TORQUE REQUIRED
043481,000472: 16,3567 13571 TCF +2
043482,000473: 16,3570 35001 CA NEGMAX # NEGATIVE TORQUE REQUIRED
043483,000474: 16,3571 55571 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
043484,000475:
043485,000476: 16,3572 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
043486,000477: 16,3573 00006 EXTEND
043487,000478: 16,3574 63577 BZMF +3 # POSITIVE TORQUE REQUIRED
043488,000479: 16,3575 41573 CS TEMREG
043489,000480: 16,3576 55573 TS TEMREG
043490,000481:
043491,000482: 16,3577 31670 FIRELOOK CA I # IS IT MOREROLL
043492,000483: 16,3600 00006 EXTEND
043493,000484: 16,3601 13603 BZF FIREPLUG # YES
043494,000485: 16,3602 13614 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
043495,000486:
043496,000487: 16,3603 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
043497,000488: 16,3604 00006 EXTEND
043498,000489: 16,3605 61573 SU TEMREG
043499,000490: 16,3606 00006 EXTEND
043500,000491: 16,3607 65324 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
043501,000492: 16,3610 13614 TCF JETROLL
043502,000493:
043503,000494: 16,3611 45021 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
043504,000495: 16,3612 55571 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
043505,000496: 16,3613 55573 TS TEMREG
043506,000497:
043507,000498: 16,3614 00006 JETROLL EXTEND
043508,000499: 16,3615 33705 DCA NOROL1T6
Page 995 |
043510,000501: 16,3616 53311 DXCH T6LOC
043511,000502: 16,3617 31573 CA TEMREG # ENTER JET FIRING TIME
043512,000503: 16,3620 54031 TS TIME6
043513,000504:
043514,000505: 16,3621 31670 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
043515,000506: 16,3622 00006 EXTEND
043516,000507: 16,3623 15324 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
043517,000508:
043518,000509: 16,3624 11571 CCS ROLLFIRE
043519,000510: 16,3625 13631 TCF +TORQUE
043520,000511: 16,3626 13672 TCF T6ENABL
043521,000512: 16,3627 13652 TCF -TORQUE
043522,000513: 16,3630 13672 TCF T6ENABL
043523,000514:
043524,000515: # PROCEED WITH PLUS TORQUE.
043525,000516:
043526,000517: 16,3631 31572 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
043527,000518: 16,3632 75017 MASK BIT1 # WAS IT NO.9-11
043528,000519: 16,3633 00006 EXTEND
043529,000520: 16,3634 13644 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
043530,000521:
043531,000522: 16,3635 45017 NO.13-15 CS BIT1
043532,000523: 16,3636 71572 MASK ROLLWORD
043533,000524: 16,3637 55572 TS ROLLWORD # CHANGE BIT 1 TO ZERO
043534,000525: 16,3640 35037 CAF +ROLL2
043535,000526: 16,3641 00006 EXTEND
043536,000527: 16,3642 01006 WRITE CHAN6
043537,000528: 16,3643 13672 TCF T6ENABL
043538,000529:
043539,000530: 16,3644 35017 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
043540,000531: 16,3645 27572 ADS ROLLWORD # CHANGE BIT 1 TO ONE
043541,000532: 16,3646 35022 CAF +ROLL1
043542,000533: 16,3647 00006 EXTEND
043543,000534: 16,3650 01006 WRITE CHAN6
043544,000535: 16,3651 13672 TCF T6ENABL
043545,000536:
043546,000537: 16,3652 31572 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
043547,000538: 16,3653 75016 MASK BIT2 # WAS IT NO.12-10
043548,000539: 16,3654 00006 EXTEND
043549,000540: 16,3655 13665 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
043550,000541:
043551,000542: 16,3656 45016 NO.16-14 CS BIT2
043552,000543: 16,3657 71572 MASK ROLLWORD
043553,000544: 16,3660 55572 TS ROLLWORD # CHANGE BIT 2 TO ZERO
043554,000545: 16,3661 33717 CAF -ROLL2
043555,000546: 16,3662 00006 EXTEND
043556,000547: 16,3663 01006 WRITE CHAN6
043557,000548: 16,3664 13672 TCF T6ENABL
043558,000549:
043559,000550: 16,3665 35016 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
Page 996 |
043561,000552: 16,3666 27572 ADS ROLLWORD # CHANGE BIT 2 TO ONE
043562,000553: 16,3667 34377 CAF -ROLL1
043563,000554: 16,3670 00006 EXTEND
043564,000555: 16,3671 01006 WRITE CHAN6
043565,000556:
043566,000557: 16,3672 35001 T6ENABL CAF BIT15
043567,000558: 16,3673 00006 EXTEND
043568,000559: 16,3674 05013 WOR CHAN13
043569,000560: 16,3675 15324 RDAPEND TCF TASKOVER # EXIT ROLL DAP
043570,000561:
Page 997 |
043572,000563: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
043573,000564:
043574,000565: 16,3676 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
043575,000566: 16,3677 35021 CAF ZERO # CALLED BY ..JETROLL..)
043576,000567: 16,3700 55571 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
043577,000568: 16,3701 00006 EXTEND
043578,000569: 16,3702 01006 KILLJETS WRITE CHAN6
043579,000570: 16,3703 15335 TCF NOQRSM
043580,000571:
Page 998 |
043582,000573: # CONSTANTS FOR ROLL AUTOPILOT....
043583,000574:
043584,000575: 16,3704 E6,1702 EBANK= BZERO
043585,000576: 16,3704 03676 34066 NOROL1T6 2CADR NOROLL1
043586,000577:
043587,000578: 16,3706 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
043588,000579:
043589,000580: 16,3707 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
043590,000581: # PER SEC
043591,000582: 16,3710 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
043592,000583: # B-4 REV/SEC
043593,000584: 16,3711 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
043594,000585:
043595,000586: 16,3712 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
043596,000587:
043597,000588: 16,3713 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
043598,000589:
043599,000590: 16,3714 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
043600,000591:
043601,000592: 16,3715 00030 TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
043602,000593:
043603,000594: 16,3716 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
043604,000595:
043605,000596: 16,3717 5015 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
043606,000597: # ROUNDS TO OCT00004, SO ALLOWS 2.56
043607,000598: # SEC FIRINGS BEFORE APPLYING LIMIT
043608,000599: 16,3717 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
043609,000600:
043610,000601: 16,3717 5022 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
043611,000602: 16,3717 5037 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
043612,000603: 16,3717 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
043613,000604: 16,3717 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
043614,000605:
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc