forked from virtualagc/virtualagc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQ,R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
1524 lines (1227 loc) · 52.5 KB
/
Q,R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: Q_R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
## Purpose: A module for revision 0 of BURST120 (Sunburst). It
## is part of the source code for the Lunar Module's
## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2016-09-30 RSB Created draft version.
## 2016-10-30 RSB Transcribed through page 537.
## 2016-10-31 RSB Transcribed. Boo!
## 2016-10-31 RSB Typos.
## 2016-11-01 RSB More typos.
## 2016-11-02 RSB More typos.
## 2016-12-05 RSB Comment-proofing with octopus/ProoferComments
## completed, changes made.
## Page 519
BANK 17
# THE FOLLOWING T5RUPT ENTRY BEGINS THE PROGRAM WHICH CONTROLS THE Q,R-AXIS ACTION OF THE LEM USING THE RCS JETS.
# THE NOMINAL TIME BETWEEN THE Q,R-AXIS RUPTS IS 100 MS (UNLESS THE TRIM GIMBAL CONTROL SYSTEM IS USED, IN WHICH
# CASE THIS PROGRAM IS IDLE).
EBANK= DT
NULLFILT 2CADR FILDUMMY
QRAXIS CAF MS20QR # RESET TIMER IMMEDIATELY - DT = 20 MS
TS TIME5
LXCH BANKRUPT # INTERRUPT LEAD IN (CONTINUED)
EXTEND
QXCH QRUPT
# SET UP A DUMMY KALMAN FILTER T5RUPT. (THIS MAY BE RESET TO THE KALMAN FILTER INITIALIZATION PASS, IF THE TRIM
# GIMBAL CONTROL SYSTEM SHOULD BE USED.)
EXTEND
DCA NULLFILT
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## In the original printout, the following line actually ended with a 1/2 symbol (½)
## rather than a question mark.
INSERT17 TCF TRMCHECK # ARE EXTRAORDINARY GTS ENTRIES NEEDED?
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
# CALCULATE LEM BODY RATES FOR Q AND R AXES:
# THIS COMPUTATION IS VALID FOR BOTH ASCENT AND DESCENT SINCE THE OFFSET ACCELERATION TERM IS INCLUDED ALWAYS,
# BUT HAS VALUE ZERO IN DESCENT, AND SINCE THE WEIGHTING FACTORS ARE IN ERASABLE AND DISTINCT.
# FIRST, CONSTRUCT Y AND Z CDU INCREMENTS:
BODYRATE CAE CDUY # 2:S COMPLEMENT MEASUREMENT SCALED AT PI.
TS L # (SAVE FOR UPDATING OF OLDYFORQ)
EXTEND # FORM INCREMENT IN CDUY FOR LAST 100 MS
MSU OLDYFORQ # (100 MS OLD CDUY SAVED FROM LAST PASS)
LXCH OLDYFORQ # UPDATE OLDYFORQ WITH NEW CDUY VALUE
TS ITEMP1 # SAVE 1:S COMPLEMENT VALUE TEMPORARILY
CAE CDUZ # 2'S COMPLEMENT MEASUREMENT SCALED AT PI
TS L # (SAVE FOR UPDATING OF OLDZFORQ)
EXTEND # FORM INCREMENT IN CDUZ FOR LAST 100 MS
MSU OLDZFORQ # (100 MS OLD CDUZ SAVED FROM LAST PASS)
LXCH OLDZFORQ # UPDATE OLDZFORQ WITH NEW CDUZ VALUE
TS ITEMP2 # SAVE 1'S COMPLEMENT VALUE TEMPORARILY
## Page 520
# SECOND, TRANSFORM CPU INCREMENTS TO BODY-ANGLE INCREMENTS:
CAE M31 # MATRIX*VECTOR(WITH x COMPONENT ZERO)
EXTEND
MP ITEMP1 # M31 * ITEMP1 = M31 * DELTA CDUY
DXCH ITEMP4
CAE M32 # M32 * ITEMP2 = M32 * DELTA CDUZ
EXTEND
MP ITEMP2 # DELTAR = M31*(DEL CDUY) + M32*(DEL CDUZ)
DAS ITEMP4 # DOUBLE PRECISION R BODY ANGLE INCREMENT
CAF BIT9
TS Q
EXTEND
DCA ITEMP4
EXTEND
DV Q # RESCALE TO PI/64 AND
TS ITEMP4 # STORE AS SINGLE PRECISION
CAE M21 # MATRIX*VECTOR(WITH X COMPONENT ZERO)
EXTEND # CLOBBERS ITEMP2=DEL CDUZ, FOR EFFICIENCY
MP ITEMP1 # M21 * ITEMP1 = M21 * DELTA CDUY
DXCH ITEMP2 # M22 * ITEMP2 = M22 * DELTA CDUZ
EXTEND
MP M22 # DELTAQ = M21*(DEL CDUY) + M22*(DEL CDUZ)
DAS ITEMP2 # DOUBLE PRECISION Q-BODY-ANGLE INCREMENT
EXTEND
DCA ITEMP2
EXTEND
DV Q # RESCALE TO PI/64
# FINALLY, DERIVE Q AND R BODY ANGULAR RATES:
EXTEND # WFORQR IS K/(NOMINAL DT) SCALED AT 16
MP WFORQR # FORM WEIGHTED VALUE OF MEASURED DATA
XCH OMEGAQ # SAVE AND BEGIN TO WEIGHT VALUE OF OLD W
EXTEND # (1-K) IS SCALED AT 1 FOR EFFICIENT CALC
MP (1-K) # (K CHANGES EVERY 2 SECONDS IN ASCENT.)
AD JETRATEQ # WEIGHTED TERM DUE TO JET ACCELERATION
AD AOSQTERM # TERM DUE TO ASCENT OFFSET ACCELERATION
ADS OMEGAQ # TOTAL RATE ESTIMATE SCALED AT PI/4
CAE ITEMP4 # GET DELTAR
EXTEND # WFORQR IS K/(NOMINAL DT) SCALED AT 16
MP WFORQR # FORM WEIGHTED VALUE OF MEASURED DATA
XCH OMEGAR # SAVE AND BEGIN TO WEIGHT VALUE OF OLD W
EXTEND # (1-K) IS SCALED AT 1 FOR EFFICIENT CALC
MP (1-K) # (K CHANGES EVERY 2 SECONDS IN ASCENT.)
AD JETRATER # WEIGHTED TERM DUE TO JET ACCELERATION
AD AOSRTERM # TERM DUE TO ASCENT OFFSET ACCELERATION
ADS OMEGAR # TOTAL RATE ESTIMATE SCALED AT PI/4
## Page 521
TC QJUMPADR
SKIPQRAX CA NORMQADR
TS QJUMPADR # DO NOT JUMP NEXT TIME.
TCF CHKGIMBL # CHKGIMBL ATTEMPTS TO USE GTS.
NORMQADR GENADR NORMALQ
NORMALQ TCF ATTSTEER # NO RHC INPUTS ON 206.
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
TRMCHECK DXCH T5ADR # SET UP NEXT T5RUPT ADDRESS.
# CHECK IF TRIMCNTR HAS BEEN COUNTED DOWN TO ZERO, INDICATING THAT 20.0 SECONDS HAVE PASSED SINCE DPS ON AND
# CONTROL SHOULD BE TRANSFERRED TO GTS. THEN SEE IF A RECENT ENGINE-ON REQUIRES AN EARLY GTS ENTRY.
## In the original printout, the following line actually ended with a 1/2 symbol (½)
## rather than a question mark.
CCS TRIMCNTR # IS GTS NEEDED PRIOR TO THROTTLE-UP?
TCF CHKMNITR # NOT YET, BUT CHECK IF FIRST GTS DONE.
TC CCSHOLE # ILLEGAL VALUE OF TRIMCNTR.
TCF INSERT17 +1 # NOT ACTIVE, RETURN TO RCS CONTROL.
## In the original printout, the following line actually ended with a 1/2 symbol (½)
## rather than a question mark.
OKAYGTS CAF USEQRJTS # YES, IS GIMBAL SYSTEM USABLE?
MASK DAPBOOLS
EXTEND
BZF GOGIMBAL # USABLE. GO TO GTS.
TCF INSERT17 +1 # NOT USABLE. GO ON WITH RCS CONTROL.
## In the original printout, the following line actually ended with a 1/2 symbol (½)
## rather than a question mark.
CHKMNITR CCS GTSMNITR # IS AN IMMEDIATE (FIRST) GTS CALLED FOR?
TCF OKAYGTS # YES, CHECK IF GIMBAL SYSTEM USABLE.
TCF INSERT17 +1 # NO, RETURN TO RCS CONTROL.
GOGIMBAL CS THREE # RESET TIME5 COUNTER FROM 20 TO 50 MSEC.
ADS TIME5
CS BGIM24 # TURN OFF GIMBALS FOR BETTER FILTERING.
EXTEND
WAND 12
CS BIT1 # DEACTIVATE GIMBAL DRIVE TIMERS
TS QGIMTIMR
TS RGIMTIMR
CAF ZERO
EXTEND
WRITE 5 # TURN OFF ALL Q,R AXIS JETS.
EXTEND
DCA ADRGOGTS
DTCB
EBANK= DT
ADRGOGTS 2CADR GOTOGTS +2 # TIME5 COUNTER WAS ALREADY ADVANCED.
# *** THE FOLLOWING NEW CODING IS NOT BEING USED ***
## Page 522
# LEFT IN PLACE AS FILLER)))MAY BE WRITTEN OVER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
TC CCSHOLE # FILLER
EBANK= NEGUR
RGIMADR 2CADR OFFGIMR
GETCNTR CAE FORCETRM # LOAD TRIMCNTR TO FORCE TRIM JUST BEFORE
TS TRIMCNTR # THE THROTTLE-UP.
CAF BIT1 # ENABLE MONITOR TO CALL GTS AS SOON AS
TS GTSMNITR # POSSIBLE.
CAE SIMPINIT # INITIALIZE SIMPCNTR. DECISECONDS.
TS SIMPCNTR
EXTEND # RETURN TO ORIGINAL CODING
DCA INSRTADR
DTCB
TC CCSHOLE # THIS IS A FILLER
EBANK= PERROR
INSRTADR 2CADR INSERT20 +1
17INSRT CS /TEMP1/ # COMPARE Q WITH THE GENADR OF SWRETURN
AD SWRETADR # TO SEE IF ENGINOFF WAS CALLED VIA
EXTEND # BANKCALL OR IBNKCALL.
BZF 17INSRTB # *BANKCALL - DO NOT DELAY*
EXTEND # *IBNKCALL - CHECK FURTHER*
READ 30
COM # SEE IF ENGINE IN QUESTION IS APS OR DPS.
MASK BIT2
EXTEND
BZF 17INSRTB # *DPS ENGINE - DO NOT DELAY*
CS MODREG # *APS ENGINE - CHECK FURTHER*
AD MP3MMODE
EXTEND # SEE IF THIS IS THE MP 3 SHORT APS BURN.
BZF 17INSRTB # *IT IS - DO NOT DELAY*
CS DVMNEXIT # *IT IS NOT - CHECK FOR A FORGET2 ENTRY*
AD KILLAVEG
EXTEND
## Page 523
BZF 17INSRTD # GENADRS MATCH - CHECK THE BBCONS.
17INSRTE EXTEND
DCS /TEMP3/
DXCH RUPTREG3 # PUT MINUS (ENGINEON TIME) IN RUPTREGS
DXCH /TEMP5/ # AND SAVE FORMER CONTENTS FOR ISWRETRN.
EXTEND # BLEND IN THE CURRENT TIME.
DCA TIME2
DAS RUPTREG3
CAF HALF # FORCE SIGN AGREEMENT.
DOUBLE
AD RUPTREG4
TS RUPTREG4
CAF ZERO
AD NEGONE
ADS RUPTREG3
CA RUPTREG3 # SEE IF BURN HAS BEEN LONGER THAN
EXTEND # 163.84 SECONDS.
BZF 17INSRTC # *LESS THAN 163.84 SECONDS*
17INSRTA EXTEND # *MORE THAN 163.84 SECONDS*
DCA /TEMP5/
DXCH RUPTREG3 # RESTORE RUPTREGS FOR ISWRETRN.
17INSRTF CAF NEGMAX # SET TMINAPS NEGATIVE TO INACTIVATE
TS TMINAPS # THE ENGINOFF DELAY LOGIC
17INSRTB CA /TEMP2/ # RESTORE CALLERS EBANK.
TS EBANK
TC POSTJUMP # RETURN TO THE ENGINOFF SEQUENCE.
CADR ENGINOFF +1
17INSRTC CS RUPTREG4 # CHECK LENGTH OF BURN AGAINST TMINAPS.
AD TMINAPS
EXTEND
BZMF 17INSRTA # BURN IS LONG ENOUTH - DO THE ENGINOFF.
TC WAITLIST # SUSPEND CURRENT MISSION PHASE AND SET
EBANK= TMINAPS # WAITLIST FOR RESUMPTION AT THE PROPER
2CADR 17INSRTA # TIME.
TC TASKOVER
17INSRTD CS DVMNEXIT +1
AD KILLAVEG +1
EXTEND
BZF 17INSRTF # BBCONS MATCH - DO NOT DELAY
## Page 524
TCF 17INSRTE
SWRETADR GENADR SWRETURN
MP3MMODE OCT 00071 # MAJOR MODE OF MISSION PHASE 3.
EBANK= LST1
KILLAVEG 2CADR AVEGKILL
# FOLLOWING CODING LEFT IN PLACE TO KEEP ADDRESSES CONSTANT.
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
NOQJETS TC CCSHOLE # LABEL PREVENTS ASSEMBLER CUSSES.
TCF XTRANS
TCF R-,CHKDB
TCF XTRANS
NEGQEROR AD -RATEDB
EXTEND
BZMF NOQJETS
CCS RRATEDIF
TCF R+Q-CHKR
TCF Q-NORJTS
TCF R-Q-CHKR
Q-NORJTS CS QRATEDIF
TS RATEDIF
AD -2JETLIM
EXTEND
BZMF 2JETS+Q
TCF 4JETS+Q
R+Q-CHKR AD -RATEDB
EXTEND
BZMF Q-NORJTS
TC EDOTVGEN
TCF 2-V.RATE
R-Q-CHKR AD -RATEDB
EXTEND
BZMF Q-NORJTS
TC EDOTUGEN
EXTEND
SU RRATEDIF
TCF 2+U.RATE
POSQEROR AD -RATEDB
EXTEND
## Page 525
BZMF NOQJETS
CCS RRATEDIF
TCF R+Q+CHKR
TCF Q+NORJTS
TCF R-Q+CHKR
Q+NORJTS CA QRATEDIF
TS RATEDIF
AD -2JETLIM
EXTEND
BZMF 2JETS-Q
TCF 4JETS-Q
R+Q+CHKR AD -RATEDB
EXTEND
BZMF Q+NORJTS
TC EDOTUGEN
TCF 2-U.RATE
R-Q+CHKR AD -RATEDB
EXTEND
BZMF Q+NORJTS
TC EDOTVGEN
TCF 2+V.RATE
R+,CHKDB AD -RATEDB
EXTEND
BZMF XTRANS
CA RRATEDIF
TS RATEDIF
AD -2JETLIM
EXTEND
BZMF 2JETS-R
TCF 4JETS-R
R-,CHKDB AD -RATEDB
EXTEND
BZMF XTRANS
CS RRATEDIF
TS RATEDIF
AD -2JETLIM
EXTEND
BZMF 2JETS+R
TCF 4JETS+R
RTJETIME CCS RATEDIF # SCALED AT PI/4 RADIANS/SECOND
AD ONE
TCF +2
AD ONE # ABS(RATEDIF)
## Page 526
EXTEND
MP 1/NJETAC # SCALED AT 2(8)/PI SECOND(2)/RADIANS
EXTEND
MP BIT4 # SCALED AT 2(3) SECONDS
CAE L
EXTEND
MP 25/32.QR # TJET NOW PROPERLY SCALED IN A
TS TQR # AT 2(4)16/25 SECONDS
TCF MNIMPTST
## Page 527
# DAP SECTION: XTRANS MOD. NO. 3 DATE: JANUARY 6, 1967.
# AUTHOR: JOHN S. BLISS (ADAMS ASSOCIATES)
# MODIFICATION BY: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)
# X-AXIS TRANSLATION LOGIC (IN THE ABSENSE OF Q,R-AXIS ROTATION) IS INITIATED IN THE "XTRANS" SECTION.
# XTRANS FIRST SETS ADDTLT6 AND ADDT6JTS TO ZERO FOR USE BY "JTLST" AND "T6JOB" WHEN THEY ARE CALLED. IT THEN
# CHECKS FOR PLUS OR MINUS X TRANSLATION REQUESTS FROM THE ASTRONAUT'S STICK. IF NONE IS REQUESTED IN THAT WAY,
# THE ULLAGE BIT OF DAPBOOLS IS CHECKED. (NOTE THAT THE ORDER OF THE TESTS ALLOWS THE ASTRONAUT TO OVERRIDE THE
# INTERNAL ULLAGE REQUEST.) IF NO TRANSLATION IS REQUESTED, ALL Q,R-AXIS JETS ARE TURNED OFF AND THE INTERRUPT
# IS TERMINATED.
# CALLING SEQUENCE: NONE SUBROUTINES CALLED: WRITEQR
# NORMAL EXIT: 1. IF NO TRANSLATION, RESUME.
# 2. IF TRANSLATION OR ULLAGE, +/-XTRAN
# ALARM/ABORT MODE: NONE.
# INPUT: ULLAGER/DAPBOOLS,BITS7,8/CHANNEL 31.
# OUTPUT: C(ANYTRANS) = NEGMAX FOR +X TRANSLATION.
# C(ANYTRANS) = POSMAX FOR -X TRANSLATION.
# C(TRANSNOW) = C(TRANSAVE) = +0.
# C(TRANONLY) = PNZ
# C(ADDTLT6), C(ADDT6JTS), C(TQR), C(TOFJTCHG) = 0.
# C(CHANNEL 5) = 0 IF NO X-TRANSLATION REQUESTED
# DEBRIS: A, L, Q
XTRANS CAF ZERO # PICK UP ZERO AND INITIALIZE
TS ADDTLT6
TS ADDT6JTS
TS TOFJTCHG
TS TQR # A ZERO OF JET TIME FOR THE TORQUE VECTOR
CAF BIT7 # IS PLUS X TRANSLATION DESIRED
EXTEND
RAND 31 # CHANNEL 31 BITS INVERTED
EXTEND
BZF +XORULGE # YES, +X
CAF BIT8 # NO, IS MINUS X TRANSLATION DESIRED
EXTEND
RAND 31 # CHANNEL 31 BITS INVERTED
## Page 528
EXTEND
BZF -XTRANS # YES, -X
CAF BIT6 # NO, IS ULLAGE(+X TRANSLATION) DESIRED
MASK DAPBOOLS
CCS A
TCF +XORULGE # YES, ULLAGE
CAF ZERO # SINCE NEITHER ROTATION NOR TRANSLATION
TC WRITEQR # ARE NEEDED, TURN OFF ALL Q,R-AXES JETS.
TCF RESUME
+XORULGE CAF NEGMAX # PLUS TRANSLATION OR ULLAGE DESIRED:
TCF +2 # LOAD NEGMAX IN A AND SKIP NEXT OPCODE TO
-XTRANS CAF POSMAX # -X TRANSLATION DESIRED, A = POSMAX, AND
TS ANYTRANS # LOAD ANYTRANS WITH A(NEG/POS MAX)
CAF ZERO # INITIALIZE TRANSNOW AND TRANSAVE WITH
TS TRANSNOW # ZERO FOR USE IN THE JET POLICY SELECTION
TS TRANSAVE # PROGRAM.
EXTEND # SET UP 2CADR FOR TRANSFER TO +/-XTRAN.
DCA JTPOLADR
TS TRANONLY # STORE POSITIVE, NON-ZERO S-REGISTER IN
DTCB # TRANONLY. AFTER +/-XTRAN, GO TO JTLST.
EBANK= JTSONNOW
JTPOLADR 2CADR +/-XTRAN # TRANSLATION ONLY ENTRY TO JET POLICY
## Page 529
# ALL Q,R AXES TQR COMPUTATIONS TERMINATE IN THIS PROGRAM WHICH PERFORMS A SERIES OF TESTS TO DETERMINE THE TRUE
# TIME THE JETS SHOULD BE ON. THESE TESTS ARE AS FOLLOWS ...
# 1. TEST THE ON TIME AGAINST THE 7.5 MS ELECTRICAL COMMAND (MIN).IF THE ON TIME IS LESS THAN THE MINIMUM
# WE BUG OUT TO XTRAN,WHERE X TRANSLATION IS DONE(IF NEEDED).
# 2. TEST THE ON TIME AGAINST 150 MS, IF TQR IS GREATER THAN 150MS ,THEN THE NEXT QR AXIS IS DONE IN 100 MS.
# IF TQR IS LESS THAN 150 MS, THEN THE NEXT QR AXIS IS DONE IN 200 MS. THAT IS A QR AXIS SKIP IS DONE.
# 3. WHEN TQR IS LESS THAN 150 MS THE PROGRAM GOES TO THE JET LIST PROGRAM WHERE THE T6 CLOCK IS SET UP.
# 4. BEFORE GOING TO THE JET LIST THE COMPUTED TIME HAS EITHER 7.5 MS ADDED OR 5MS SUBTRACTED-THE EXACT
# OPERATION BEING DECIDED BY WHETHER THE JETS WHICH ARE TO GO ON ARE OFF OR ARE ON RESPECTIVELY.
# 5. IF SOME OF THE JETS WHICH ARE TO GO ON ARE NOW ON AND SOME ARE OFF, THEN A ******* COMPUTATION CALLED
# NOTRANS DECIDES WHICH JETS GO OFF AT TQR AND WHICH GO OFF AT TQR+6.5MS. THIS 6.5 MS. IS STORED IN
# ADDTLT6. ADDTLT6 IS SET TO ZERO OTHERWISE.
NORMRETN TS TQR
MNIMPTST CS TQR # TEST FOR TQR GREATER THAN MIN. IMPULSE.
AD +T6TJMIN
EXTEND # CORRECT BRANCH.
BZMF TQRGTTMI # BRANCH FOR TQR = OR GREATER THAN MINIMP.
TCF XTRANS # SEE IF TRANSLATION IS DESIRED .
TQRGTTMI CAE TQR # HERE JETS ON FOR LONGER THAN GRUMANN
TS TOFJTCHG # MINIMUM IMPULSE SPECIFICATIONS.
AD -1.5CSP
EXTEND
BZMF DOQRSKIP
CAE JTSONNOW
TC WRITEQR
TCF RESUME
SKIPQRAD GENADR SKIPQRAX
# CHANGE JET ON AND OFF BITS TO ACCOUNT FOR THE PRESENT STATE OF THE
# CHANNEL. THE CHANGES ACCOUNT FOR PURE ROTATION ONLY- NOT TRANSLATION.
DOQRSKIP CA JTSONNOW
EXTEND
RAND 5 # MASK THE CHANNEL WITH THE DESIRED STATE.
FROMROOT EXTEND # ENTER HERE FROM DORUTDUM (IN K.E. BANK)
BZF NOQRON # A IS ZERO IF NO JETS TO GO ON ARE ON.
AD BIT15 # MAKE DIFFERENCE CORRESPOND TO A QR JET.
EXTEND
SU JTSONNOW # RESULT IS COMPLEMENT OF JET BITS WHICH
TS L # ARE TO BE ON FOR 6.5MS MORE THAN CALC.
EXTEND
BZF JTSAREON # A=0,THUS ALL JETS TO GO ON ARE NOW ON.
## Page 530
TRSLTMN2 CAE JTSATCHG
MASK POSMAX # REMOVE BIT15 FROM JTSATCHG.
EXTEND
BZF NOTRANS # IF JTSATCHG = 0 THEN NO TRANSLATION NOW.
CA 14-TQRMN
ADS TOFJTCHG # INSURE T GREATER THAN 14 MS.
TCF TOJTLST
NOTRANS CS L
AD BIT15 # MAKE JET BITS CORRESPOND TO QR AXIS.
XCH JTSATCHG # JTSONNOW - L = JETS ON AT TOFJTCHG.
TS ADDT6JTS # JTS ON AT TOFJTCHG +ONDELAY.
CA 14-TQRMN
TS ADDTLT6
TCF TOJTLST
NOQRON CA 14-TQRMN
ADS TOFJTCHG
TCF TOJTLST -2
JTSAREON CAE JTSATCHG
MASK POSMAX
EXTEND
BZF +2
TCF TOJTLST -2
CAF MCOMPTQR
ADS TOFJTCHG
EXTEND # TEST FOR COMPUTATION OF NEGATIVE OR ZERO
BZMF QUICKOFF # TOFJTCHG, IF SO, MAKE -0.
-2 CAF ZERO
TS ADDTLT6
TOJTLST CA SKIPQRAD
TS QJUMPADR
CAE JTSONNOW # TURN ON JETS TO GO ON NOW (EVEN IF ALL
TC WRITEQR # ARE ALREADY ON), AFTER TESTING FOR RISE.
EXTEND
DCA JTLSTADR
DTCB
QUICKOFF CS TOFJTCHG # SET TOFJTCHG TO -0 IN SHORTEST WAY.
TCF NOQRON +1
-1.5CSP DEC -0.01465
+T6TJMIN DEC +.00073
25/32.QR DEC 0.78125
MS20QR OCTAL 37776
MS30QR OCTAL 37775
MS50QR OCTAL 37773
16/32400 DEC 0.00049
BIT8,9 OCTAL 00600
MCOMPTQR DEC -16 # -10 MS SCALED AS TIME6.
14-TQRMN DEC 11
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## Page 531
MINTADR GENADR CCSHOLE
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
-.88975 DEC -.88975
(1-K),QR DEC 0.50000 # K = 1/2
(1-KQ)/8 DEC 0.06250
-90MS DEC -.00879
+90MS DEC 0.00879
NEGCSP2 DEC -.00977
ALL+XJTS OCTAL 40252
2,10-OUT OCTAL 00201
+X,A OCTAL 40042
+X,B OCTAL 40210
1,9-OUT OCTAL 00104
-X,A OCTAL 40104
-X,B OCTAL 40021
EBANK= JTSONNOW
JTLSTADR 2CADR JTLST
RTJETADR GENADR RTJETIME
## Page 532
# Q,R-AXES ATTITUDE STEERING CALCULATIONS:
# (EXECUTED WHEN LGC IS IN AUTOMATIC SCSMODE OR IF SCSMODE IS ATTITUDE HOLD AND THE ROTATIONAL HAND CONTROLLER IS
# NEITHER OUT OF DETENT NOR IS THE RATE COMMAND BIT SET IN DAPBOOLS)
CHKGIMBL EXTEND
DCA TRYGTSAD # TRYGTS ATTEMPTS GTS CONTROL.
DXCH Z
TC CCSHOLE
BGIM24 OCTAL 07400
DESCADR GENADR TJETLAW
EBANK= DT
TRYGTSAD 2CADR TRYGTS # TRYGTS ATTEMPTS GTS CONTROL.
## Page 533
# "ATTSTEER" IS THE NOMINAL ENTRY POINT FOR REACTION CONTROL SYSTEM ATTITUDE STEERING
ATTSTEER EQUALS QERRCALC
QERRCALC CAE CDUY # Q-ERROR CALCULATION
EXTEND
MSU CDUYD # CDU ANGLE - ANGLE DESIRED (Y-AXIS)
TS ITEMP1 # SAVE FOR RERRCALC
EXTEND
MP M21 # (CDUY-CDUYD)*M21 SCALED AT PI RADIANS
XCH ER # SAVE FIRST TERM (OF TWO) IN OPP.AXIS REG
CAE CDUZ # SECOND TERM CALCULATION:
EXTEND
MSU CDUZD # CDU ANGLE -ANGLE DESIRED (Z-AXIS)
TS ITEMP2 # SAVE FOR RERRCALC
EXTEND
MP M22 # (CDUZ-CDUZD)*M22 SCALED AT PI RADIANS
ADS ER # SAVE SUM OF TERMS, NO OVERFLOW EVER
TS QERROR # SAVE QERROR FOR EIGHT-BALL DISPLAY
RERRCALC CAE ITEMP1 # R-ERROR CALCULATION:
EXTEND # CDU ANGLE -ANGLE DESIRED (Y-AXIS)
MP M31 # (CDUY-CDUYD)*M31 SCALED AT PI RADIANS
XCH E # SAVE FIRST TERM (OF TWO) IN OPP.AXIS REG
CAE ITEMP2 # SECOND TERM CALCULATION:
EXTEND # CDU ANGLE -ANGLE DESIRED (Z-AXIS)
MP M32 # (CDUZ-CDUZD)*M32 SCALED AT PI RADIANS
ADS E # SAVE SUM OF TERMS, NO OVERFLOW EVER
TS RERROR # SAVE R-ERROR FOR EIGHT-BALL DISPLAY
TCF STILLRCS
# THIS CODING IS ENTERED FROM BURGZERO, WHEN BOTH URGENCIES ARE ZERO. EXITS TO GTS IF POSSIBLE, XTRANS OTHERWISE
GIMBLTRY CAF USEQRJTS # IS JET USAGE MANDATORY.
MASK DAPBOOLS
CCS A
TCF XTRANS # YES. GO TO XTRANS.
EXTEND # ARE GIMBALS DRIVING?
READ 12
MASK BGIM24 # BITS 9,10,11,12 ARE GIMBAL DRIVE BITS.
CCS A
TCF XTRANS # YES. DRIVING. GO TO XTRANS.
EXTEND # NO. CHECK JETS.
READ 5 # ARE ANY Q,R JETS ON NOW.
# (CAN ONLY BE ROTATION JETS.)
EXTEND
BZF XTRANS # NO. GO TO XTRANS.
## Page 534
CAF ZERO # YES. TURN OFF JETS.
EXTEND
WRITE 5
EXTEND # NO. GO TO GTS.
DCA GOGTSADR
DXCH Z
EBANK= DT
GOGTSADR 2CADR GOTOGTS
# REMAINING CODING (HERE TO STILLRCS) STAYS IN TO KEEP ADDRESSES CONSTANT.
TC CCSHOLE # FILLER.
TCF STILLRCS # NO. SO USE RCS.
INDEX QRCNTR # YES. TRY THE ERROR MAGNITUDE.
CCS QDIFF # IS ERROR SMALL ENOUGH FOR GTS.
AD -XBND+1 # -1.4 DEG SCALED AT PI + 1 BIT
TCF +2
AD -XBND+1
EXTEND
BZMF +2 # IS ERROR LESS,EQUAL 1.4 DEG.
TCF STILLRCS # NO. USE RCS CONTROL.
CCS QRCNTR # THIS AXIS IS FINE. ARE BOTH DONE.
TC CCSHOLE # REMOVE REFERENCE TO ELIMINATED SYMBOL.
TC CCSHOLE # FILLER.
-RATLM+1 OCT 77512 # -.5 DEG/SEC SCALED AT PI/4 + 1 BIT
-XBND+1 OCT 77601 # -1.4 DEG SCALED AT PI, + 1 BIT.
# "STILLRCS" IS THE ENTRY POINT TO RCS ATTITUDE STERRING WHENEVER IT IS FOUND THAT THE TRIM GIMBAL CONTROL
# SYSTEM SHOULD NOT BE USED;
## Page 535
# Q,R-AXES RCS URGENCY FUNCTION LOGIC:
STILLRCS CCS DAPBOOLS # BRANCH TO SPS-BACKUP RCS CONTROL LOGIC.
TCF SPSBAKUP # WHEN BIT15/DAPBOOLS = 0.
NOOP
CAF DESCADR # SET JET SELECT LOGIC RETURN ADDRESS TO
TS TJETADR # THE Q,R-AXIS TJETLAW CALCULATION
TC T6JOBCHK # CHECK T6 CLOCK RUPT BEFORE SUBROUTINE
# CALCULATE THE RATE ERRORS SCALED AT PI/4 RADIANS/SECOND(2):
CS OMEGAQD
AD OMEGAQ # EDOTQ = OMEGAQ - OMEGAQD
TS EDOTQ
CS OMEGARD
AD OMEGAR # EDOTR = OMEGAR - OMEGARD
TS EDOTR
## Page 536
# Q,R-AXES URGENCY FUNCTION LOOP:
# SET UP LOOP TO DO R-AXIS, THEN Q-AXIS:
CAF ONE # 1: REFERS TO R-AXIS VARIABLES.
TS AXISCNTR # 0: REFERS TO Q-AXIS VARIABLES.
# PICK UP EDOT AND RESCALE FROM PI/4 TO PI/16 RADIANS/SECOND:
URGLOOP INDEX AXISCNTR # ERROR RATES ARE PRE-CALCULATED BY RATE
CAE EDOTQ # DERIVATION SCALED AT PI/4 RADIANS/SECOND
EXTEND # MULTIPLYING BY FOUR (BIT3) LEAVES EDOT
MP FOUR # AS C(L) IF EDOT LESS THAN 11.25 DEG/SEC.
EXTEND
BZF +2 # IF C(A) NON-ZERO, THEN EDOT GREATER THAN
TCF EDOTMAX # 11.25 DEG/SEC IN MAGNITUDE, SO LIMIT IT.
CCS L # INSURE NON-ZERO EDOT:
AD TWO # C(L) PNZ REMAINS UNCHANGED.
TCF +2 # C(L) NNZ REMAINS UNCHANGED.
COM # C(L) +0 BECOMES 77776.
AD NEG1 # C(L) -0 BECOMES 77776.
EDOTSTOR TS EDOT # SAVE NON-ZERO EDOT SCALED AT PI/16.
EXTEND # CALCULATE (EDOT)(EDOT):
SQUARE
TS EDOT(2) # SCALED AT PI(2)/2(+8) RAD(2)/SEC(2).
EXTEND # 0.5 +8 2
INDEX AXISCNTR # ------ SCALED AT 2 /PI SEC /RAD.
MP 1/ACCQ # ACCQ,R
EXTEND # DEADBAND = 5.0 OR 1.0 OR 0.3 DEGREES
SU DB # SCALED AT PI RADIANS.
TS FPQR # 0.5(1/ACC)EDOT(2)-DB SCALED AT PI RADS.
CAE EDOT(2) # SCALED AT PI(2)/2(8) RAD(2)/SEC(2).
EXTEND
INDEX AXISCNTR
MP 1/AMINQ # .5(1/ACCMIN) AT 2(8)/PI SEC(2)/RAD.
AD DB # DEADBAND SCALED AT PI RADIANS.
TS FPQRMIN # .5(1/ACCMIN)EDOT(2)+DB SCALED AT PI RAD.
CCS EDOT # EDOT TEST ON SIGN (NON-ZERO):
CAE E # ATTITUDE ERROR FOR THIS AXIS
TCF +2 # SCALED AT PI RADIANS.
TCF EDOTNEG
ADS FPQR # E+0.5(1/ACC)EDOT(2)-DB SCALED AT PI RAD.
FTEST CCS EDOT # EDOT GUARANTEED NOT +0 OR -0.
CCS FPQR # FPQR GUARANTEED NOT +0.
## Page 537
TCF QUICKURG # EDOT.G.+0, FPQR.G.+0.
CCS FPQR # EDOT.L.-0.
TCF FMINCALC # EDOT.L.-0,FPQR.G.+0/EDOT.G.+0,FPQR.L.-0.
TCF FMINCALC # EDOT.G.+0,FPQR.E.-0 (FROM FIRST CCS).
TCF QUICKURG # EDOT.L.-0,FPQR.L.-0.
QUICKURG CAE EDOT # EDOT.L.-0,FPQR.E.-0 (FROM 2ND CCS).
EXTEND # SCALE FROM PI/16 TO PI RADIANS/SECOND
MP BIT11 # TO HAVE SAME SCALING AS FPQR AFTER THE
AD FPQR # IMPLICIT MULT. OF FPQR BY 1/SEC.
TCF URGMULT # THIS URGENCY = (1/ACC)(FPQR+EDOT).
EDOTMAX CCS A # GUARANTEED NOT +0 OR -0.
CAF POSMAX
TCF EDOTSTOR # SET EDOT TO SIGNED MAXIMUM.
CS POSMAX
TCF EDOTSTOR # SCALED AT PI/16 RADIANS/SECOND.
EDOTNEG CS FPQR # SCALED AT PI RADIANS
AD E # ATTITUDE ERROR FOR THIS AXIS
TS FPQR # E-0.5(1/ACC)EDOT(2)+DB SCALED AT PI RAD.
TCF FTEST
FMINCALC CCS FPQR # NECESSARY RETEST ON FPQR;
CS FPQRMIN
TCF +2 # E-0.5(1/ACCMIN)EDOT(2)-DB
CAE FPQRMIN
AD E # E+0.5(1/ACCMIN)EDOT(2)+DB
TS FPQRMIN # SCALED AT PI RADIANS.
CCS EDOT # EDOT GUARANTEED NOT +0 OR -0.
CCS FPQRMIN # FPQRMIN GUARANTEED NOT +0 (CALL IT F).
TCF ZEROURG # EDOT.G.+0, F.G.+0.
CCS FPQRMIN # EDOT.L.-0.
TCF NORMURG # EDOT.L.-0, F.G.+0 / EDOT.G.+0, F.L.-0.
TCF NORMURG # EDOT.G.+0, F.E.-0 (FROM FIRST CCS).
TCF ZEROURG # EDOT.L.-0, F.L.-0.
ZEROURG EXTEND # EDOT.L.-0, F.E.-0 (FROM 2ND CCS).
DCA DPZEROY # THIS URGENCY IS ZERO.
DXCH URGENCYQ
TCF MOREURG # TEST FOR NEXT AXIS
NORMURG CAE FPQRMIN # THIS URGENCY IS FPQRMIN(1/ACC).
URGMULT EXTEND
INDEX AXISCNTR
MP 1/ACCQ
DXCH URGENCYQ # SAVE D.P. SCALED AT 2(+9).
MOREURG CCS AXISCNTR # TEST FOR END OF LOOP
TCF +2 # CONTINUE.
## Page 538
TCF URGSCALQ # FINISHED.
TS AXISCNTR # Q-AXIS
EXTEND
DCA URGENCYQ # SET URGENCYR
DXCH URGENCYR
DXCH E # SET ER,EDOT(2)R
DXCH ER
TS EQ # SET EQ
CAE EDOT
TS EDOT(R) # SET EDOT(R).
TCF URGLOOP # CONTINUE.
# SUFFICIENT TEST FOR URGENCY RESCALING:
URGSCALR CCS URGENCYR # IF ABVAL(URGENCYR) LESS THAN SCALE BOUND
AD SCALEBND
TCF +2 # THEN BOTH URGENCIES CAN BE RESCALED FROM
AD SCALEBND
EXTEND # 2(+9) TO 2(+4) SECONDS.
BZMF URGSCALE
TCF URGLIMS
# RESCALE BOTH URGENCIES FROM 2(+9) TO 2(+4) SECONDS:
URGSCALE CAE URGENCYQ # SHIFT D.P. URGENCYQ LEFT 5-PLACES TO
EXTEND # FORM S.P. URGENCYQ NOW SCALED AT 16 SECS
MP BIT6
LXCH URGENCYQ
CAE URGENCYQ +1
EXTEND
MP BIT6
ADS URGENCYQ
CAE URGENCYR # SHIFT D.P. URGENCYR LEFT 5-PLACES TO
EXTEND # FORM S.P. URGENCYR NOW SCALED AT 16 SECS
MP BIT6
LXCH URGENCYR
CAE URGENCYR +1
EXTEND
MP BIT6
ADS URGENCYR
CAE URGLM2 # SET URGENCY LIMIT FOR 2(+4) SCALING.
TCF URGFUDGE
SCALEBND OCTAL 77400 # -8 SECONDS SCALED AT 2(+9).
## Page 539
DPZEROY 2DEC 0
# NECESSARY TEST FOR URGENCY RESCALING:
URGSCALQ CCS URGENCYQ # IF ABVAL(URGENCYQ) LESS THAN SCALE BOUND
AD SCALEBND
TCF +2 # THEN TEST URGENCYR FOR RESCALABLE
AD SCALEBND
EXTEND # MAGNITUDE.
BZMF URGSCALR
URGLIMS CAE URGLM1 # SET URGENCY LIMIT FOR 2(+9) SCALING.
URGFUDGE TS URGLIMIT
# USE URGENCY FUNCTION CORRECTION FACTOR WHEN NECESSARY:
CCS AOSQ # IF C(AOSQ) ZERO OR IF C(URGENCYQ) ZERO,
CS URGENCYQ # THEN IT IS CLEARLY UNNECESSARY TO FUDGE.
TCF +2 # WHILE MAKING THIS TEST, WE CALCULATE
CAE URGENCYQ # -SIGN(AOSQ)(URGENCYQ) WHICH IF POSITIVE
EXTEND # INDICATES THAT WE ARE TRYING TO FIGHT
BZMF URGFUDG1 # THE EFFECT OF AOSQ, SO WE DO NOT FUDGE.
CAE URGRATQ # HERE WE KNOW THAT AOSQ WILL ACTUALLY
EXTEND # HELP THE RCS JETS MANEUVER FOR THIS AXIS
MP URGENCYQ # FOR THIS CSP, MULTIPLYING BY URGRATQ
TS URGENCYQ # REDUCES URGENCYQ APPROPRIATELY ENOUGH.
URGFUDG1 CCS AOSR # HERE WE DO THE SAME LOGIC FOR THE R-AXIS
CS URGENCYR # COMPUTATIONS AS WE DID FOR THE Q-AXIS AT
TCF +2 # URGFUDGE. RATHER THAN REPEAT THE ABOVE
CAE URGENCYR # COMMENTS, WE PROVIDE A BIT OF FURTHER
EXTEND # EXPLANATION; FIRST, ONLY A S.P. URGENCY
BZMF URGPLANE # IS SAVED IF WE DO THE FUDGE, SINCE ONLY
CAE URGRATR # S.P. URGENCIES ARE REFERENCED BELOW AND
EXTEND # NO D.P. ACCURACY IS NEEDED. SECOND, BY
MP URGENCYR # BY MULTIPLYING BY THE FUDGE RATIO DURING
TS URGENCYR # APS BURNS, WE PREVENT SOME RCS FIRINGS
# WHICH WOULD OVER-CORRECT DUE TO THE AOS.
URGPLANE CAE URGENCYQ # BEGIN URGENCY-PLANE COMPUTATIONS:
EXTEND
BZF BURGZERO # TEST FOR BOTH URGENCIES ZERO
EXTEND
MP -TAN22.5
AD URGENCYR
EXTEND
MP COS22.5
## Page 540
TS TERMA # UR.COS(22.5)-UQ.SIN(22.5)
CS URGENCYR
EXTEND
MP -TAN22.5
AD URGENCYQ
EXTEND
MP COS22.5
TS TERMB # UR.SIN(22.5)+UQ.COS(22.5)
A+B/A-B AD TERMA
TS A+B
A-B/ONLY CS TERMB
AD TERMA
TS A-B
# AXIS AND MODE SELECTION
CAE TERMB # B URGENCY TEST
EXTEND
BZMF NEGBURG
POSBURG CAE TERMA # A URGENCY TEST
EXTEND
BZMF NETAPOSB
POSAPOSB CAE A-B
EXTEND
BZMF MINUSU # NEGATIVE U-AXIS SELECTED
2/4JET-R CAE 1/AMINR
TS .5ACCMNE
EXTEND
DCA ER
DXCH E
CAE EDOT(R)
TS EDOT
CAE URGLIMIT
AD URGENCYR
EXTEND
BZMF 2JETS-R
4JETS-R CS ONE
TCF POLTYPE # GO FIND BEST POLICY
2JETS-R CCS NJ-R
TCF 4JETS-R
CS TWO
TCF POLTYPE # GO FIND BEST POLICY
## Page 541
MINUSU CAE 1/AMINU
TS .5ACCMNE
CAE URGENCYQ
AD URGENCYR
AD URGLIMIT
EXTEND
BZMF 2JETS-U
2JETSM-U TC UXFORM
2-U.RATE CAF THREE
TCF POLTYPE # GO FIND BEST POLICY
2JETS-U CCS NJ-U
TCF 2JETSM-U
TC UXFORM
CAF TWO
TCF POLTYPE # GO FIND BEST POLICY
NETAPOSB CAE A+B
EXTEND
BZMF PLUSV
2/4JET-Q CAE 1/AMINQ
TS .5ACCMNE
CAE URGLIMIT
AD URGENCYQ
EXTEND