Source Code
![]() |
YAYUL: ASSEMBLE REVISION 6 OF PROGRAM BOREALIS BY MSTEWART JUN. 28,2017This is a modern AGC system self-test program, though based on the Apollo-era AURORA 12 program, and was not written by the original AGC developers, but rather by Mike Stewart. All of the original AURORA 12 DAP code added by the DAP Group has been removed, and extensive new system test code has been added in its place. This allows more in-depth testing of CPU behavior, both in AGC software simulations and hardware simulations. |
017713,000002: ## Copyright: Public domain.
017714,000003: ## Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc
017715,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
017716,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
017717,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
017718,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
017719,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
017720,000009: ## Validation.
017721,000010: ## Assembler: yaYUL
017722,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
017723,000012: ## Website: www.ibiblio.org/apollo/index.html
017724,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
017725,000014:
017726,000015: 15,2367 SETLOC ENDDNTMS
017727,000016: 15,2367 E5,1400 EBANK= XSM
017728,000017:
017729,000018:
017730,000019:
017731,000020: # CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
017732,000021:
017733,000022: # THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE
017734,000023: # HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.
017735,000024:
017736,000025: # THE OUTPUTS ARE THE THREE GYRO TORQUING ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,
017737,000026: # MGC, AND OGC RESPECTIVELY. ANGLES ARE SCALED PROPERLY FOR IMUPULSE.
017738,000027:
017739,000028:
017740,000029:
017741,000030: 15,2367 71220 CALCGTA ITA DLOAD # PUSHDOWN 00,02,16D,18D,22D-26D,32D-36D
017742,000031: 15,2370 00051 S2 # XDC = (XD1 XD2 XD3)
017743,000032: 15,2371 02423 XDC # YDC = (YD1 YD2 YD3)
017744,000033: 15,2372 65325 PDDL PDDL # ZDC = (ZD1 ZD2 ZD3)
017745,000034: 15,2373 33042 ZERODP
017746,000035: 15,2374 02427 XDC +4
017747,000036: 15,2375 55476 DCOMP VDEF
017748,000037: 15,2376 77656 UNIT
017749,000038: 15,2377 14027 STODL ZPRIME # ZP = UNIT(-XD3 O XD1) = (ZP1 ZP2 ZP3)
017750,000039: 15,2400 00027 ZPRIME
017751,000040:
017752,000041: 15,2401 77742 SR1
017753,000042: 15,2402 14023 STODL SINTH # SIN(IGC) = ZP1
017754,000043: 15,2403 00033 ZPRIME +4
017755,000044: 15,2404 77742 SR1
017756,000045: 15,2405 34021 STCALL COSTH # COS(IGC) = ZP3
017757,000046: 15,2406 32440 ARCTRIG
017758,000047:
017759,000048: 15,2407 16503 STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV.
017760,000049: 15,2410 02425 XDC +2
017761,000050: 15,2411 77742 SR1
017762,000051: 15,2412 14023 STODL SINTH # SIN(MGC) = XD2
017763,000052: 15,2413 00027 ZPRIME
017764,000053:
017765,000054: 15,2414 65205 DMP PDDL
017766,000055: 15,2415 02427 XDC +4 # PD00 = (ZP1)(XD3)
017767,000056: 15,2416 00033 ZPRIME +4
017768,000057:
017769,000058: 15,2417 45205 DMP DSU
017770,000059: 15,2420 02423 XDC # MPAC = (ZP3)(XD1)
017771,000060: 15,2421 77626 STADR
017772,000061: 15,2422 43756 STCALL COSTH # COS(MGC) = MPAC - PD00
017773,000062: 15,2423 32440 ARCTRIG
017774,000063:
017775,000064: 15,2424 26505 STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV.
017776,000065: 15,2425 00027 ZPRIME
017777,000066: 15,2426 77641 DOT
017778,000067: 15,2427 02437 ZDC
017779,000068: 15,2430 24021 STOVL COSTH # COS(OGC) = ZP . ZDC
017780,000069: 15,2431 00027 ZPRIME
017781,000070: 15,2432 77641 DOT
017782,000071: 15,2433 02431 YDC
017783,000072: 15,2434 34023 STCALL SINTH # SIN(OGC) = ZP . YDC
017784,000073: 15,2435 32440 ARCTRIG
017785,000074:
017786,000075: 15,2436 36501 STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV.
017787,000076: 15,2437 00051 S2
017788,000077:
017789,000078: # ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
017790,000079:
017791,000080: # THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.
017792,000081:
017793,000082: # THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO
017794,000083: # AVAILABLE AT MPAC.
017795,000084:
017796,000085:
017797,000086:
017798,000087: 15,2440 51545 ARCTRIG DLOAD ABS # PUSHDOWN 16D,18D,20D,22D-26D
017799,000088: 15,2441 00023 SINTH
017800,000089: 15,2442 50025 DSU BMN
017801,000090: 15,2443 33030 QTSN45 # ABS(SIN/4) - SIN(45)/4
017802,000091: 15,2444 32453 TRIG1 # IF (-45,45) OR (135,-135)
017803,000092:
017804,000093:
017805,000094:
017806,000095: 15,2445 72545 DLOAD SL1 # (45,135) OR (-135,-45)
017807,000096: 15,2446 00021 COSTH
017808,000097: 15,2447 75326 ACOS SIGN
017809,000098: 15,2450 00023 SINTH
017810,000099: 15,2451 00025 STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN)
017811,000100: 15,2452 77616 RVQ
017812,000101:
017813,000102:
017814,000103:
017815,000104: 15,2453 72545 TRIG1 DLOAD SL1 # (-45,45) OR (135,-135)
017816,000105: 15,2454 00023 SINTH
017817,000106: 15,2455 77736 ASIN
017818,000107: 15,2456 14025 STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN)
017819,000108: 15,2457 00021 COSTH
017820,000109: 15,2460 77640 BMN
017821,000110: 15,2461 32464 TRIG2 # IF (135,-135)
017822,000111:
017823,000112: 15,2462 43545 DLOAD RVQ
017824,000113: 15,2463 00025 THETA # X = ARCSIN(SIN) (-45,45)
017825,000114:
017826,000115:
017827,000116:
017828,000117: 15,2464 75345 TRIG2 DLOAD SIGN # (135,-135)
017829,000118: 15,2465 33032 HALFDP
017830,000119: 15,2466 00023 SINTH
017831,000120: 15,2467 77625 DSU
017832,000121: 15,2470 00025 THETA
017833,000122: 15,2471 00025 STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN)
017834,000123: 15,2472 77616 RVQ # (+) - (+) OR (-) - (-)
017835,000124:
017836,000125: # SMNB TRANSFORMS A STAR DIRECTION FROM STABLE MEMBER TO NAVIGATION BASE COORDINATES.
017837,000126:
017838,000127: # THE INPUTS ARE 1) THE STAR VECTOR REFERRED TO PRESENT STABLE MEMBER COORDINATES STORED AT LOCATION 32D OF THE
017839,000128: # VAC AREA. 2) THE GIMBAL ANGLES (CDUY,CDUZ,CDUX) STORED AT ALTERNATING LOCATIONS RESPECTIVELY. THE ANGLES ARE
017840,000129: # USUALLY STORED AT LOCATIONS 2,4, AND 6 OF THE MARK VAC AREA. THEY CAN BE STORED AT LOCATIONS 20,22, AND 24 OF
017841,000130: # YOUR JOB VAC AREA. 3) THE BASE ADDRESS OF THE GIMBAL ANGLES STORED SP AT LOCATION S1 OF yOUR JOB VAC AREA.
017842,000131:
017843,000132: # THE OUTPUT IS THE STAR VECTOR REFERRED TO NAVIGATION BASE COORDINATES STORED AT 32D OF THE VAC AREA. THE OUTPUT
017844,000133: # IS ALSO AVAILABLE AT MPAC.
017845,000134:
017846,000135:
017847,000136:
017848,000137: 15,2473 43020 SMNB ITA CLEAR # PUSHDOWN 00,02,04-10D,30D,32D-36D
017849,000138: 15,2474 00051 S2
017850,000139: 15,2475 00264 NBSMBIT # SET NBSMBIT = 0
017851,000140:
017852,000141: 15,2476 77170 SMNB1 AXT,1 AXT,2 # ROTATE X,Z, ABOUT Y
017853,000142: 15,2477 00004 4
017854,000143: 15,2500 00000 0
017855,000144: 15,2501 77624 CALL
017856,000145: 15,2502 32543 AXISROT
017857,000146:
017858,000147: 15,2503 77170 AXT,1 AXT,2 # ROTATE Y,X ABOUT Z
017859,000148: 15,2504 00002 2
017860,000149: 15,2505 00004 4
017861,000150: 15,2506 77624 CALL
017862,000151: 15,2507 32543 AXISROT
017863,000152:
017864,000153: 15,2510 77170 AXT,1 AXT,2 # ROTATE Z,Y ABOUT X
017865,000154: 15,2511 00000 0
017866,000155: 15,2512 00002 2
017867,000156: 15,2513 77624 CALL
017868,000157: 15,2514 32543 AXISROT
017869,000158:
017870,000159: 15,2515 77650 GOTO
017871,000160: 15,2516 00051 S2
017872,000161:
017873,000162: # NBSM TRANSFORMS A STAR DIRECTION FROM NAVIGATION BASE TO STABLE MEMBER COORDINATES.
017874,000163:
017875,000164: # THE INPUTS ARE 1) THE STAR VECTOR REFERRED TO NAVIGATION BASE COORDINATES STORED AT LOCATION 32D OF THE VAC
017876,000165: # AREA. 2) THE GIMBAL ANGLES (CDUY,CDUZ,CDUX) STORED AT ALTERNATING LOCATIONS RESPECTIVELY. THE ANGLES ARE
017877,000166: # USUALLY STORED AT LOCATIONS 2,4, AND 6 OF THE MARK VAC AREA. THEY CAN BE STORED AT LOCATIONS 20,22, AND 24 OF
017878,000167: # YOUR JOB VAC AREA. 3) THE BASE ADDRESS OF THE GIMBAL ANGLES STORED SP AT LOCATION S1 OF YOUR JOB VAC AREA.
017879,000168:
017880,000169: # THE OUTPUT IS THE STAR VECTOR REFERRED TO PRESENT STABLE MEMBER COORDINATES STORED AT LOCATION 32D OF THE VAC
017881,000170: # AREA. THE OUTPUT IS ALSO AVAILABLE AT MPAC.
017882,000171:
017883,000172:
017884,000173:
017885,000174: 15,2517 43020 NBSM ITA SET # PUSHDOWN 00,02,04-10D,30D,32D-36D
017886,000175: 15,2520 00051 S2
017887,000176: 15,2521 00064 NBSMBIT # SET NBSMBIT = 1
017888,000177:
017889,000178: 15,2522 77170 NBSM2 AXT,1 AXT,2 # ROTATE Z,Y ABOUT X
017890,000179: 15,2523 00000 0
017891,000180: 15,2524 00002 2
017892,000181: 15,2525 77624 CALL
017893,000182: 15,2526 32543 AXISROT
017894,000183:
017895,000184: 15,2527 77170 AXT,1 AXT,2 # ROTATE Y,X ABOUT Z
017896,000185: 15,2530 00002 2
017897,000186: 15,2531 00004 4
017898,000187: 15,2532 77624 CALL
017899,000188: 15,2533 32543 AXISROT
017900,000189:
017901,000190: 15,2534 77170 AXT,1 AXT,2 # ROTATE X,Z, ABOUT Y
017902,000191: 15,2535 00004 4
017903,000192: 15,2536 00000 0
017904,000193: 15,2537 77624 CALL
017905,000194: 15,2540 32543 AXISROT
017906,000195:
017907,000196: 15,2541 77650 GOTO
017908,000197: 15,2542 00051 S2
017909,000198:
017910,000199: # AXISROT IS UTILIZED BY THE SMNB AND NBSM ROUTINES. SEE REMARKS ON THESE ROUTINES FOR INPUTS AND OUTPUTS.
017911,000200:
017912,000201:
017913,000202:
017914,000203: 15,2543 66660 AXISROT XSU,1 SLOAD*
017915,000204: 15,2544 00050 S1 # SMNB . NBSM
017916,000205: 15,2545 00005 4,1 # IG MG OG . OG MG IG
017917,000206: 15,2546 56034 RTB XAD,1
017918,000207: 15,2547 33345 CDULOGIC
017919,000208: 15,2550 00050 S1
017920,000209: 15,2551 00037 STORE 30D
017921,000210:
017922,000211: 15,2552 77746 ACCUROT COS
017923,000212: 15,2553 20011 STODL 8D,1 # COS(ANGLE)
017924,000213: 15,2554 00037 30D
017925,000214: 15,2555 77756 SIN
017926,000215: 15,2556 04013 STORE 10D,1 # SIN(ANGLE)
017927,000216:
017928,000217: 15,2557 72403 DMP* SL1
017929,000218: 15,2560 77732 32D +4,2
017930,000219: 15,2561 40723 PDDL* DMP* # PD0
017931,000220: 15,2562 00011 8D,1 # S3SIN S1SIN S2SIN . S2SIN S1SIN S3SIN
017932,000221: 15,2563 77732 32D +4,2
017933,000222:
017934,000223: 15,2564 64752 SL1 PDDL* # PD2
017935,000224: 15,2565 00013 10D,1 # S3COS S1COS S2COS . S2COS S1COS S3COS
017936,000225:
017937,000226: 15,2566 72403 DMP* SL1 # MPAC
017938,000227: 15,2567 00045 32D +4,1 # S1SIN S2SIN S3SIN . S3SIN S2SIN S1SIN
017939,000228:
017940,000229: 15,2570 77614 BOFF
017941,000230: 15,2571 00344 NBSMBIT
017942,000231: 15,2572 32604 AXISROT1
017943,000232:
017944,000233: 15,2573 45421 BDSU STADR # . PD2 - MPAC
017945,000234: 15,2574 47732 STODL* 32D +4,2 # . S2 S1 S3
017946,000235: 15,2575 00011 8D,1
017947,000236:
017948,000237: 15,2576 72403 DMP* SL1 # . MPAC
017949,000238: 15,2577 00045 32D +4,1 # . S3COS S2COS S1COS
017950,000239:
017951,000240: 15,2600 45415 DAD STADR # . PD0 + MPAC
017952,000241: 15,2601 47732 STOVL 32D +4,1 # . S3 S2 S1
017953,000242: 15,2602 00041 32D
017954,000243: 15,2603 77616 RVQ
017955,000244:
017956,000245: 15,2604 45415 AXISROT1 DAD STADR # MPAC + PD2 .
017957,000246: 15,2605 47732 STODL* 32D +4,2 # S3 S1 S2 .
017958,000247: 15,2606 00011 8D,1
017959,000248: 15,2607 72403 DMP* SL1 # MPAC .
017960,000249: 15,2610 00045 32D +4,1 # S1COS S2COS S3COS .
017961,000250:
017962,000251: 15,2611 45425 DSU STADR # MPAC - PD0 .
017963,000252: 15,2612 47732 STOVL 32D +4,1 # S1 S2 S3 .
017964,000253: 15,2613 00041 32D
017965,000254: 15,2614 77616 RVQ
017966,000255:
017967,000256: # CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
017968,000257:
017969,000258: # THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT
017970,000259: # VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME
017971,000260: # COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.
017972,000261:
017973,000262: # THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.
017974,000263:
017975,000264: 15,2615 47375 CALCGA VLOAD VXV # PUSHDOWN 00-04,16D,18D
017976,000265: 15,2616 02423 XNB # XNB = OGA (OUTER GIMBAL AXIS)
017977,000266: 15,2617 02407 YSM # YSM = IGA (INNER GIMBAL AXIS)
017978,000267: 15,2620 41456 UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA
017979,000268:
017980,000269: 15,2621 44041 DOT ITA
017981,000270: 15,2622 02437 ZNB
017982,000271: 15,2623 00051 S2
017983,000272: 15,2624 24021 STOVL COSTH # COS(OG) = MGA . ZNB
017984,000273: 15,2625 00001 0
017985,000274: 15,2626 77641 DOT
017986,000275: 15,2627 02431 YNB
017987,000276: 15,2630 34023 STCALL SINTH # SIN(OG) = MGA . YNB
017988,000277: 15,2631 32440 ARCTRIG
017989,000278: 15,2632 26501 STOVL OGC
017990,000279: 15,2633 00001 0
017991,000280:
017992,000281: 15,2634 50235 VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES
017993,000282: 15,2635 02423 XNB
017994,000283: 15,2636 02407 YSM
017995,000284: 15,2637 77752 SL1
017996,000285: 15,2640 24021 STOVL COSTH # COS(MG) = IGA . (MGA X OGA)
017997,000286: 15,2641 02407 YSM
017998,000287: 15,2642 77641 DOT
017999,000288: 15,2643 02423 XNB
018000,000289: 15,2644 34023 STCALL SINTH # SIN(MG) = IGA . OGA
018001,000290: 15,2645 32440 ARCTRIG
018002,000291: 15,2646 02505 STORE MGC
018003,000292:
018004,000293: 15,2647 45246 ABS DSU
018005,000294: 15,2650 33050 .166...
018006,000295: 15,2651 77644 BPL
018007,000296: 15,2652 32671 GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES
018008,000297:
018009,000298: 15,2653 50375 CALCGA1 VLOAD DOT
018010,000299: 15,2654 02415 ZSM
018011,000300: 15,2655 00001 0
018012,000301: 15,2656 24021 STOVL COSTH # COS(IG) = ZSM . MGA
018013,000302: 15,2657 02401 XSM
018014,000303: 15,2660 45441 DOT STADR
018015,000304: 15,2661 43754 STCALL SINTH # SIN(IG) = XSM . MGA
018016,000305: 15,2662 32440 ARCTRIG
018017,000306:
018018,000307: 15,2663 26503 STOVL IGC
018019,000308: 15,2664 02501 OGC
018020,000309: 15,2665 77634 RTB
018021,000310: 15,2666 33414 V1STO2S
018022,000311: 15,2667 34401 STCALL THETAD
018023,000312: 15,2670 00051 S2
018024,000313:
018025,000314: 15,2671 77776 GIMLOCK1 EXIT
018026,000315: 15,2672 05405 TC ALARM
018027,000316: 15,2673 00401 OCT 00401
018028,000317: 15,2674 06000 TC INTPRET
018029,000318: 15,2675 77650 GOTO
018030,000319: 15,2676 32653 CALCGA1
018031,000320:
018032,000321: # AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.
018033,000322:
018034,000323: # THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR
018035,000324: # REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED
018036,000325: # AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF
018037,000326: # THE VAC AREA.
018038,000327:
018039,000328: # THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED
018040,000329: # AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.
018041,000330:
018042,000331: 15,2677 66370 AXISGEN AXT,1 SSP # PUSHDOWN 00-22D,24D-28D,30D
018043,000332: 15,2700 02452 STARAD +6
018044,000333: 15,2701 00051 S1
018045,000334: 15,2702 02436 STARAD -6
018046,000335:
018047,000336: 15,2703 46773 AXISGEN1 VLOAD* VXV* # 06D UA = S1
018048,000337: 15,2704 02461 STARAD +12D,1 # STARAD +00D UB = S1
018049,000338: 15,2705 02467 STARAD +18D,1
018050,000339: 15,2706 77656 UNIT # 12D VA = UNIT(S1 X S2)
018051,000340: 15,2707 36467 STOVL* STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2)
018052,000341: 15,2710 02461 STARAD +12D,1
018053,000342:
018054,000343: 15,2711 76433 VXV* VSL1
018055,000344: 15,2712 02467 STARAD +18D,1 # 18D WA = UA X VA
018056,000345: 15,2713 06475 STORE STARAD +24D,1 # STARAD +12D WB = UB X VB
018057,000346:
018058,000347: 15,2714 77700 TIX,1
018059,000348: 15,2715 32703 AXISGEN1
018060,000349:
018061,000350: 15,2716 66160 AXC,1 SXA,1
018062,000351: 15,2717 00006 6
018063,000352: 15,2720 00036 30D
018064,000353:
018065,000354: 15,2721 66370 AXT,1 SSP
018066,000355: 15,2722 00022 18D
018067,000356: 15,2723 00051 S1
018068,000357: 15,2724 00006 6
018069,000358:
018070,000359: 15,2725 66374 AXT,2 SSP
018071,000360: 15,2726 00006 6
018072,000361: 15,2727 00052 S2
018073,000362: 15,2730 00002 2
018074,000363:
018075,000364: 15,2731 76720 AXISGEN2 XCHX,1 VLOAD*
018076,000365: 15,2732 00036 30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2
018077,000366: 15,2733 00001 0,1
018078,000367: 15,2734 62757 VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3)
018079,000368: 15,2735 75324 STARAD +6,2
018080,000369: 15,2736 00007 6,1
018081,000370: 15,2737 77757 VXSC*
018082,000371: 15,2740 75316 STARAD +12D,2
018083,000372: 15,2741 30031 STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3)
018084,000373: 15,2742 00015 12D,1
018085,000374:
018086,000375: 15,2743 53357 VXSC* VAD
018087,000376: 15,2744 75310 STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3)
018088,000377: 15,2745 76455 VAD VSL1
018089,000378: 15,2746 00031 24D
018090,000379: 15,2747 77720 XCHX,1
018091,000380: 15,2750 00036 30D
018092,000381: 15,2751 06445 STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K
018093,000382:
018094,000383: 15,2752 77700 TIX,1
018095,000384: 15,2753 32754 AXISGEN3
018096,000385:
018097,000386: 15,2754 77704 AXISGEN3 TIX,2
018098,000387: 15,2755 32731 AXISGEN2
018099,000388:
018100,000389: 15,2756 77775 VLOAD
018101,000390: 15,2757 02423 XDC
018102,000391: 15,2760 26445 STOVL STARAD
018103,000392: 15,2761 02431 YDC
018104,000393: 15,2762 26453 STOVL STARAD +6
018105,000394: 15,2763 02437 ZDC
018106,000395: 15,2764 02461 STORE STARAD +12D
018107,000396:
018108,000397: 15,2765 77616 RVQ
018109,000398:
018110,000399:
018111,000400: # TRANSPSE COMPUTES THE TRANSPOSE OF A MATRIX (TRANSPOSE = INVERSE OF ORTHOGONAL TRANSFORMATION).
018112,000401:
018113,000402: # THE INPUT IS A MATRIX DEFINING COORDINATE SYSTEM A WITH RESPECT TO COORDINATE SYSTEM B STORED IN STARAD THRU
018114,000403: # STARAD +17D.
018115,000404:
018116,000405: # THE OUTPUT IS A MATRIX DEFINING COORDINATE SYSTEM B WITH RESPECT TO COORDINATE SYSTEM A STORED IN STARAD THRU
018117,000406: # STARAD +17D.
018118,000407:
018119,000408: 15,2766 53447 TRANSPSE DXCH STARAD +2 # PUSHDOWN NONE
018120,000409: 15,2767 53453 DXCH STARAD +6
018121,000410: 15,2770 53447 DXCH STARAD +2
018122,000411:
018123,000412: 15,2771 53451 DXCH STARAD +4
018124,000413: 15,2772 53461 DXCH STARAD +12D
018125,000414: 15,2773 53451 DXCH STARAD +4
018126,000415:
018127,000416: 15,2774 53457 DXCH STARAD +10D
018128,000417: 15,2775 53463 DXCH STARAD +14D
018129,000418: 15,2776 53457 DXCH STARAD +10D
018130,000419: 15,2777 16012 TCF DANZIG
018131,000420:
018132,000421:
018133,000422:
018134,000423: # SMD/EREF TRANSFORMS STABLE MEMBER DESIRED COORDINATES FROM STABLE MEMBER DESIRED (DESIRED = PRESENT HERE) TO
018135,000424: # EARTH REFERENCE COORDINATES TO ALIGN THE STABLE MEMBER TO SPECIFIED GIMBAL ANGLES.
018136,000425:
018137,000426: # THE INPUTS ARE 1) THE MATRIX DEFINING THE EARTH REFERENCE COORDINATE FRAME WITH RESPECT TO THE NAVIGATION BASE
018138,000427: # COORDINATE FRAME. 2) SAME AS 2) AND 3) OF SMNB.
018139,000428:
018140,000429: # THE OUTPUT IS THE DESIRED STABLE MEMBER COORDINATES WITH RESPECT TO THE EARTH REFERENCE COORDINATE FRAME. THE
018141,000430: # THREE UNIT VECTORS ARE STORED AT XSM, YSM, AND ZSM.
018142,000431:
018143,000432: 15,3000 77220 SMD/EREF ITA VLOAD # PUSHDOWN 00,02,04-10D,30D,32D-36D
018144,000433: 15,3001 00014 12D
018145,000434: 15,3002 33040 XUNIT
018146,000435: 15,3003 34041 STCALL 32D
018147,000436: 15,3004 32473 SMNB # STABLE MEMBER TO NAVIGATION BASE
018148,000437: 15,3005 76521 MXV VSL1
018149,000438: 15,3006 02445 STARAD # THEN TO EARTH REFERENCE
018150,000439: 15,3007 26401 STOVL XSM
018151,000440: 15,3010 33036 YUNIT
018152,000441:
018153,000442: 15,3011 34041 STCALL 32D
018154,000443: 15,3012 32473 SMNB # STABLE MEMBER TO NAVIGATION BASE
018155,000444: 15,3013 76521 MXV VSL1
018156,000445: 15,3014 02445 STARAD # THEN TO EARTH REFERENCE
018157,000446: 15,3015 26407 STOVL YSM
018158,000447: 15,3016 33034 ZUNIT
018159,000448:
018160,000449: 15,3017 34041 STCALL 32D
018161,000450: 15,3020 32473 SMNB # STABLE MEMBER TO NAVIGATION BASE
018162,000451: 15,3021 76521 MXV VSL1
018163,000452: 15,3022 02445 STARAD # THEN TO EARTH REFERENCE
018164,000453: 15,3023 36415 STCALL ZSM
018165,000454: 15,3024 00014 12D
018166,000455:
018167,000456: 15,3025 67777 77777 270DEG 2DEC -.25
018168,000457:
018169,000458: 15,3027 05520 26075 QTSN45 2DEC .1768
018170,000459:
018171,000460: 15,3031 20000 00000 HALFDP 2DEC .5
018172,000461:
018173,000462: 15,3033 00000 00000 ZUNIT 2DEC 0 B-28
018174,000463:
018175,000464: 15,3035 00000 00000 YUNIT 2DEC 0 B-28
018176,000465:
018177,000466: 15,3037 20000 00000 XUNIT 2DEC 0.5
018178,000467:
018179,000468: 15,3041 00000 00000 ZERODP 2DEC 0 B-28
018180,000469:
018181,000470: 15,3043 00000 00000 2DEC 0 B-28
018182,000471:
018183,000472: 15,3045 00000 00000 2DEC 0 B-28
018184,000473:
018185,000474: 15,3047 05252 25253 .166... 2DEC .1666666667
018186,000475:
018187,000476:
018188,000477: # AOTNB CONVERTS THE TWO RETICLE ROTATION ANGLES (YROT AND SROT) AND
018189,000478: # THE DETENT SETTING TO A HALF UNIT STAR VECTOR REFERRED TO THE
018190,000479: # NAVIGATION BASE.
018191,000480:
018192,000481: # THE INPUTS ARE
018193,000482:
018194,000483: # Y RET. LINE RATATION S(YROT) STORED IN LOC 3 OF THE MARK VAC AREA
018195,000484: # SPIRAL ROTATION ANGLE S(SROT) STORED IN LOC 5 OF MARC VAC AREA
018196,000485: # ANGLE OF CENTER OF FIELD OF VIEW S(ELV) STORED IN LOC 9 OF MARK VAC
018197,000486: # AOT ASZIMUTH ANGLE S(DET) STORED IN LOC 8 OF MARK VAC AREA
018198,000487: # THE COMPLEMENT OF BASE ADDRESS OF MARK VAC IS STORED AT X1
018199,000488:
018200,000489: # THE OUTPUT IS A HALF UNIT STAR VECTOR IN NB COORDINATES STORED
018201,000490: # AT 32D AND AVAILABLE IN VAC ON RETURN TO THE CALLING PROGRAM
018202,000491:
018203,000492: 15,3051 66601 AOTNB SETPD SLOAD*
018204,000493: 15,3052 00001 0
018205,000494: 15,3053 00004 3,1
018206,000495: 15,3054 41434 RTB PUSH
018207,000496: 15,3055 33345 CDULOGIC
018208,000497: 15,3056 00017 STORE 14D
018209,000498: 15,3057 65346 COS PDDL
018210,000499: 15,3060 41556 SIN PUSH
018211,000500: 15,3061 47133 SLOAD* RTB
018212,000501: 15,3062 00006 5,1
018213,000502: 15,3063 33345 CDULOGIC
018214,000503: 15,3064 00021 STORE 16D # STORE S IF S AND Y ARE ZERO, S=0
018215,000504: 15,3065 52054 BZE GOTO # S NOT ZERO
018216,000505: 15,3066 33070 SISZ # S=0
018217,000506: 15,3067 33100 SCOMP
018218,000507: 15,3070 53145 SISZ DLOAD BZE # IS Y ZERO
018219,000508: 15,3071 00017 14D
018220,000509: 15,3072 33075 YISZ # Y=0
018221,000510: 15,3073 77650 GOTO
018222,000511: 15,3074 33100 SCOMP
018223,000512: 15,3075 52145 YISZ DLOAD GOTO
018224,000513: 15,3076 33042 ZERODP
018225,000514: 15,3077 33105 SGOT
018226,000515: 15,3100 45345 SCOMP DLOAD DSU
018227,000516: 15,3101 00017 14D
018228,000517: 15,3102 00021 16D # Y=S
018229,000518: 15,3103 77621 BDSU
018230,000519: 15,3104 33172 NEARONE # S=360-(Y-S)
018231,000520: 15,3105 41405 SGOT DMP PUSH
018232,000521: 15,3106 33170 DP1/12
018233,000522: 15,3107 65346 COS PDDL
018234,000523: 15,3110 41556 SIN PUSH
018235,000524: 15,3111 72405 DMP SL1
018236,000525: 15,3112 00001 0
018237,000526: 15,3113 14001 STODL 0
018238,000527: 15,3114 00003 2
018239,000528: 15,3115 45405 DMP STADR
018240,000529: 15,3116 77774 STORE 2
018241,000530:
018242,000531: 15,3117 47133 SLOAD* RTB
018243,000532: 15,3120 00012 9D,1
018244,000533: 15,3121 33345 CDULOGIC
018245,000534: 15,3122 73406 PUSH SIN
018246,000535: 15,3123 71525 PDDL COS
018247,000536: 15,3124 41206 PUSH DMP
018248,000537: 15,3125 00001 0
018249,000538: 15,3126 41325 PDDL DMP
018250,000539: 15,3127 00005 4
018251,000540: 15,3130 00007 6
018252,000541: 15,3131 72415 DAD SL1
018253,000542: 15,3132 77626 STADR
018254,000543: 15,3133 63736 STODL 32D
018255,000544:
018256,000545: 15,3134 77605 DMP
018257,000546: 15,3135 00005 4
018258,000547: 15,3136 14005 STODL 4
018259,000548:
018260,000549: 15,3137 44205 DMP BDSU
018261,000550: 15,3140 00001 0
018262,000551: 15,3141 66606 PUSH SLOAD*
018263,000552: 15,3142 00011 8D,1
018264,000553: 15,3143 41434 RTB PUSH
018265,000554: 15,3144 33345 CDULOGIC
018266,000555: 15,3145 65346 COS PDDL
018267,000556: 15,3146 77756 SIN
018268,000557: 15,3147 00001 STORE 0
018269,000558:
018270,000559: 15,3150 65205 DMP PDDL
018271,000560: 15,3151 00005 4
018272,000561: 15,3152 00007 6
018273,000562: 15,3153 43205 DMP DAD
018274,000563: 15,3154 00003 2
018275,000564: 15,3155 77712 SL2
018276,000565: 15,3156 14043 STODL 34D
018277,000566:
018278,000567: 15,3157 45405 DMP STADR
018279,000568: 15,3160 63732 STODL 36D
018280,000569:
018281,000570: 15,3161 77605 DMP
018282,000571: 15,3162 62421 BDSU SL2
018283,000572: 15,3163 00045 36D
018284,000573: 15,3164 24045 STOVL 36D
018285,000574: 15,3165 00041 32D
018286,000575: 15,3166 77616 RVQ
018287,000576: 15,3167 02525 12525 DP1/12 2DEC .0833333333
018288,000577:
018289,000578: 15,3171 37777 37777 NEARONE 2DEC .999999999
018290,000579:
018291,000580:
018292,000581: # AOTSM CALCULATES A HALF UNIT STAR VECTOR IN STABLE MEMBER COORDINATES
018293,000582: # FROM TWO PLANES CONTAINING THE STAR REFERRED TO NB
018294,000583:
018295,000584: # THE INPUTS ARE
018296,000585:
018297,000586: # AOT AZIMUTH AND ELEVATION STORED IN 8D AND 9D RESP. OF VAC AREA
018298,000587: # CDUY, CDUZ AND CDUX FROM A YMARK STORED AT 3, 5, AND 7 OF VAC AREA
018299,000588: # CDUY, CDUZ AND CDUX FROM A XMARK STORED AT 2, 4, AND 6 OF VAC AREA
018300,000589: # THE BASE ADDRESS OF THE CDUS IS STORED AT LOCATION S1
018301,000590:
018302,000591: # THE OUTPUT IS A STAR VECTOR REFERRED TO STABLE MEMBER AT LOC 32D
018303,000592: # AND AVAILBLE IN MPAC
018304,000593:
018305,000594:
018306,000595: 15,3173 77620 AOTSM ITA
018307,000596: 15,3174 00035 29D
018308,000597: 15,3175 70001 SETPD LXC,1 # PUT BASE ADR OF VAC AREA IN X1
018309,000598: 15,3176 00015 12D
018310,000599: 15,3177 00050 S1
018311,000600: 15,3200 41545 DLOAD PUSH # ZERO 12 - 13
018312,000601: 15,3201 33042 ZERODP
018313,000602: 15,3202 47133 SLOAD* RTB # LOAD AZIMUTH ANGLE (D)
018314,000603: 15,3203 00007 6,1
018315,000604: 15,3204 33345 CDULOGIC
018316,000605: 15,3205 71406 PUSH COS
018317,000606: 15,3206 73525 PDDL SIN # 1/2 COSD 14-15
018318,000607: 15,3207 41476 DCOMP PUSH # -1/2 SIND 16-17
018319,000608: 15,3210 47133 SLOAD* RTB # LOAD ELEVATION ANGLE (E)
018320,000609: 15,3211 00010 7,1
018321,000610: 15,3212 33345 CDULOGIC
018322,000611: 15,3213 71406 PUSH COS
018323,000612: 15,3214 14041 STODL 32D # 1/2COSE
018324,000613: 15,3215 41556 SIN PUSH # 1/2 SINE 18-19
018325,000614: 15,3216 72405 DMP SL1
018326,000615: 15,3217 00021 16D
018327,000616: 15,3220 14043 STODL 34D # -1/2 SINE SIND UP 18-19
018328,000617: 15,3221 57405 DMP DCOMP
018329,000618: 15,3222 00017 14D
018330,000619: 15,3223 77752 SL1
018331,000620: 15,3224 34045 STCALL 36D # -1/2SINE COSD
018332,000621: 15,3225 32517 NBSM # GET X PLANE IN SM
018333,000622: 15,3226 45515 PDVL STADR # X PLANE IN SM IN 12-17
018334,000623: 15,3227 77736 STORE 32D # Y PLANE IN NB
018335,000624: 15,3230 62120 XCHX,1 INCR,1
018336,000625: 15,3231 00050 S1 # ADD ONE TO BASE ADR OF VAC AREA
018337,000626: 15,3232 00001 1
018338,000627: 15,3233 45120 XCHX,1 CALL
018339,000628: 15,3234 00050 S1 # PUT NEW BASE ADR BACK IN S1
018340,000629: 15,3235 32517 NBSM # GET Y PLANE IN SM
018341,000630: 15,3236 76435 VXV VSL1
018342,000631: 15,3237 77676 VCOMP
018343,000632: 15,3240 00041 STORE 32D # STORE STAR VEC REFERRED TO SM
018344,000633: 15,3241 77650 GOTO
018345,000634: 15,3242 00035 29D
018346,000635:
018347,000636:
018348,000637: # GIVEN RR TRUNION AND SHAFT (T,S) IN TANG,+1, FIND THE ASSOCIATED LINE OF SIGNT IN NAV BASE AXES.
018349,000638: # THE HALF UNIT VECTOR, .5( SIN(S)COS(T),-SIN(T),COS(S)COS(T) ) IS LEFT IN MPAC AND 32D.
018350,000639:
018351,000640: 15,3243 47135 RRNB SLOAD RTB
018352,000641: 15,3244 00424 TANG
018353,000642: 15,3245 33345 CDULOGIC
018354,000643: 15,3246 41401 SETPD PUSH # TRUNNION ANGLE TO 0.
018355,000644: 15,3247 00001 0
018356,000645: 15,3250 57556 SIN DCOMP
018357,000646: 15,3251 14043 STODL 34D # Y COMPONENT.
018358,000647:
018359,000648: 15,3252 41546 COS PUSH # .5 COS(T) TO 0.
018360,000649: 15,3253 47135 SLOAD RTB
018361,000650: 15,3254 00425 TANG +1
018362,000651: 15,3255 33345 CDULOGIC
018363,000652: 15,3256 71406 PUSH COS # SHAFT ANGLE TO 2.
018364,000653: 15,3257 72405 DMP SL1
018365,000654: 15,3260 00001 0
018366,000655: 15,3261 14045 STODL 36D # Z COMPONENT
018367,000656:
018368,000657: 15,3262 41356 SIN DMP
018369,000658: 15,3263 77752 SL1
018370,000659: 15,3264 24041 STOVL 32D
018371,000660: 15,3265 00041 32D
018372,000661: 15,3266 77616 RVQ
018373,000662:
018374,000663:
018375,000664: # THE FOLLOWING ROUTINE TAKES A HALF UNIT TARGET VECTOR REFERRED TO NAV BASE COORDINATES AND FINDS BOTH
018376,000665: # GIMBAL ORIENTATIONS AT WHICH THE RR MIGHT SIGHT THE TARGET. THE GIMBAL ANGLES CORRESPONDING TO THE PRESENT MODE
018377,000666: # ARE LEFT IN MODEA AND THOSE WHICH WOULD BE USED AFTER A REMODE IN MODEB. THIS ROUTINE ASSUMES MODE 1 IS TRUNNION
018378,000667: # ANGLE LESS THAN 90 DEGS IN ABS VALUE WITH ARBITRARY SHAFT, WITH A CORRESPONDING DEFINITION FOR MODE 2. MODE
018379,000668: # SELECTION AND LIMIT CHECKING ARE DONE ELSEWHERE.
018380,000669:
018381,000670: # THE MODE 1 CONFIGURATION IS CALCULATED FROM THE VECTOR AND THEN MODE 2 IS FOUND USING THE RELATIONS
018382,000671:
018383,000672: # S(2) = 180 + S(1)
018384,000673: # T(2) = 180 - T(1)
018385,000674:
018386,000675: 15,3267 57545 RRANGLES DLOAD DCOMP # SINCE WE WILL FIND THE MODE 1 SHAFT
018387,000676: 15,3270 00043 34D # ANGLE LATER, WE CAN FIND THE MODE 1
018388,000677: 15,3271 67401 SETPD ASIN # TRUNNION BY SIMPLY TAKING THE ARCSIN OF
018389,000678: 15,3272 00001 0 # THE Y COMPONENT, THE ASIN GIVING AN
018390,000679: 15,3273 44206 PUSH BDSU # ANSWER WHOSE ABS VAL IS LESS THAN 90 DEG
018391,000680: 15,3274 33032 HALFDP
018392,000681: 15,3275 14005 STODL 4 # MODE 2 TRUNNION TO 4.
018393,000682:
018394,000683: 15,3276 33042 ZERODP
018395,000684: 15,3277 24043 STOVL 34D # UNIT THE PROJECTION OF THE VECTOR IN THE
018396,000685: 15,3300 00041 32D # X-Z PLANE.
018397,000686: 15,3301 41056 UNIT BOVB # CALL FOR S/C MANEUVER ON GIMBAL LOCK.
018398,000687: 15,3302 20346 DESRETRN +1
018399,000688: 15,3303 14041 STODL 32D # PROJECTION VECTOR.
018400,000689: 15,3304 00041 32D
018401,000690: 15,3305 44142 SR1 STQ
018402,000691: 15,3306 00051 S2
018403,000692: 15,3307 14023 STODL SINTH # USE ARCTRIG SINCE SHAFT COULD BE ARB.
018404,000693: 15,3310 00045 36D
018405,000694: 15,3311 77742 SR1
018406,000695: 15,3312 34021 STCALL COSTH
018407,000696: 15,3313 32440 ARCTRIG
018408,000697: 15,3314 43206 PUSH DAD # MODE 1 SHAFT TO 2.
018409,000698: 15,3315 33032 HALFDP # (OVERFLOW DOESNT MATTER SINCE SCALED REV
018410,000699: 15,3316 24007 STOVL 6
018411,000700: 15,3317 00005 4
018412,000701: 15,3320 77634 RTB # FIND MODE 2 CDU ANGLES.
018413,000702: 15,3321 33431 2V1STO2S
018414,000703: 15,3322 24426 STOVL MODEB
018415,000704: 15,3323 00001 0
018416,000705: 15,3324 77634 RTB # MODE 1 ANGLES TO MODE A.
018417,000706: 15,3325 33431 2V1STO2S
018418,000707: 15,3326 00424 STORE MODEA
018419,000708: 15,3327 77776 EXIT
018420,000709:
018421,000710: 15,3330 40413 CS RADMODES # SWAP MODEA AND MODEB IF RR IN MODE2.
018422,000711: 15,3331 77656 MASK BIT12
018423,000712: 15,3332 10000 CCS A
018424,000713: 15,3333 13337 TCF +4
018425,000714:
018426,000715: 15,3334 52424 DXCH MODEA
018427,000716: 15,3335 52426 DXCH MODEB
018428,000717: 15,3336 52424 DXCH MODEA
018429,000718:
018430,000719: 15,3337 06000 TC INTPRET
018431,000720: 15,3340 77650 GOTO
018432,000721: 15,3341 00051 S2
018433,000722:
018434,000723: 15,3342 ENDINFSS EQUALS
End of include-file INFLIGHT_ALIGNMENT_ROUTINES.agc. Parent file is MAIN.agc