forked from chrislgarry/Apollo-11
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSERVICER.s
1715 lines (1427 loc) · 33.8 KB
/
SERVICER.s
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
# Copyright: Public domain.
# Filename: SERVICER.agc
# Purpose: Part of the source code for Luminary, build 099. It
# is part of the source code for the Lunar Module's
# (LM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 857-897
# Contact: Ron Burkey <info@sandroid.org>,
# Fabrizio Bernardini <fabrizio@spacecraft.it>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-06-01 FB Transcription Batch 4 Assignment.
# 2009-06-05 RSB Fixed a couple of typos, plus a goofy relative
# label reference from the original source.
#
# The contents of the "Luminary099" files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 001 of AGC program Luminary099 by NASA
# 2021112-061. July 14, 1969.
#
# Prepared by
# Massachussets Institute of Technology
# 75 Cambridge Parkway
# Cambridge, Massachusetts
#
# under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information. Please report any errors to info@sandroid.org.
# Page 857
BANK 37
SETLOC SERV1
BANK
EBANK= DVCNTR
# ************* PREREAD *******************
COUNT* $$/SERV
PREREAD CAF SEVEN # 5.7 SPOT TO SKIP LASTBIAS AFTER
TC GNUFAZE5 # RESTART.
CAF PRIO21
TC NOVAC
EBANK= NBDX
2CADR LASTBIAS # DO LAST GYRO COMPENSATION IN FREE FALL
BIBIBIAS TC PIPASR +3 # CLEAR + READ PIPS LAST TIME IN FRE5+F133
# DO NOT DESTROY VALUE OF PIPTIME1
CS FLAGWRD7
MASK SUPER011 # SET V37FLAG AND AVEGFLAG (BITS 5 AND 6
ADS FLAGWRD7 # OF FLAGWRD7)
CS DRFTBIT
MASK FLAGWRD2 # RESET DRIFTFLAG
TS FLAGWRD2
CAF FOUR # INITIALIZE DV MONITOR
TS PIPAGE
CAF ENDJBCAD # POINT OUTROUTE TO END-OF-JOB.
TS OUTROUTE
CAF PRIO22
TC FINDVAC # TO FIRST ENTRY TO AVERAGE G
EBANK= DVCNTR
2CADR NORMLIZE
CA TWO # 5.2SPOT FOR REREADAC AND NORMLIZE
GOREADAX TC GNUTFAZ5
CA 2SECS # WAIT TWO SECONDS FOR READACCS
TC VARDELAY
# Page 858
# ************* READACCS ****************
READACCS CS OCT37771 # THIS PIECE OF CODING ATTEMPTS TO
AD TIME5 # SYNCHRONIZE READACCS WITH THE DIGITAL
CCS A # AUTOPILOT SO THAT A PAXIS RUPT WILL
CS ONE # OCCUR APPROXIMATELY 70 MILLISECONDS
TCF +2 # FOLLOWING THE READACCS RUPT. THE 70 MS
CA ONE # OFFSET WAS CHOSEN SO THAT THE PAXIS
+2 ADS TIME5 # RUPT WOULD NOT OCCUR SIMULTANEOUSLY
# WITH ANY OF THE 8 SUBSEQUENT R10,R11
# INTERRUPTS -- THUS MINIMIZING THE POSS-
# IBILITY OF LOSING DOWNRUPTS.
TC PIPASR # READ THE PIPAS.
PIPSDONE CA FIVE
TC GNUFAZE5
REDO5.5 CAF ONE
TS PIPAGE
CA PRIO20
TC FINDVAC
EBANK= DVCNTR
2CADR SERVICER # SET UP SERVICER JOB
CA BIT9
EXTEND
WOR DSALMOUT # TURN ON TEST CONNECTOR OUTBIT
CA FLAGWRD7
MASK AVEGFBIT
EXTEND
BZF AVEGOUT # AVEGFLAG DOWN -- SET UP FINAL EXIT
CA FLAGWRD6
MASK MUNFLBIT
EXTEND
BZF MAKEACCS # MUNFLAG CLEAR -- BYPASS LR AND DISP.
CCS PHASE2
TCF MAKEACCS # PHASE 2 ACTIVATED -- AVOID MULTIPLE R10.
CAF SEVEN # SET PIPCTR FOR 4X/SEC RATE.
TS PIPCTR
CS TIME1 # SET TBASE2 .05 SECONDS IN THE PAST.
AD FIVE
AD NEG1/2
AD NEG1/2
XCH TBASE2
# Page 859
CAF DEC17 # 2.21SPOT FOR R10,R11
TS L
COM
DXCH -PHASE2
CAF OCT24 # FIRST R10,R11 IN .200 SECONDS
TC WAITLIST
EBANK= UNIT/R/
2CADR R10,R11
MAKEACCS CA FOUR
TCF GOREADAX # DO PHASE CHANGE AND RECALL READACCS
AVEGOUT EXTEND
DCA AVOUTCAD # SET UP FINAL SERVICER EXIT
DXCH AVGEXIT
CA FOUR # SET 5.4 SPOT FOR REREADAC AND SERVICER
TC GNUTFAZ5 # IF REREADAC IS CALLED, IT WILL EXIT
TC TASKOVER # END TASK WITHOUT CALLING READACCS
GNUTFAZ5 TS L # SAVE INPUT IN L
CS TIME1
TS TBASE5 # SET TBASE5
TCF +2
GNUFAZE5 TS L # SAVE INPUT IN L
CS L # -PHASE IN A, PHASE IN L.
DXCH -PHASE5 # SET -PHASE5,PHASE5
TC Q
EBANK= DVCNTR
AVOUTCAD 2CADR AVGEND
ENDJBCAD CADR SERVEXIT +2
OCT37771 OCT 37771
BANK 33
SETLOC SERVICES
BANK
COUNT* $$/SERV
# Page 860
# ************* SERVICER ****************
SERVICER TC PHASCHNG # RESTART REREADAC + SERVICER
OCT 16035
OCT 20000
EBANK= DVCNTR
2CADR GETABVAL
CAF PRIO31 # INITIALIZE 1/PIPADT IN CASE RESTART HAS
TS 1/PIPADT # CAUSED LASTBIAS TO BE SKIPPED.
TC BANKCALL # PIPA COMPENSATION CALL
CADR 1/PIPA
GETABVAL TC INTPRET
VLOAD ABVAL
DELV
EXIT
CA MPAC
TS ABDELV # ABDELV = CM/SEC*2(-14).
EXTEND
MP KPIP
DXCH ABDVCONV # ABDVCONV = M/CS * 2(-5).
EXTEND
DCA MASS
DXCH MASS1 # INITIALIZE MASS1 IN CASE WE SKIP MASSMON
MASSMON CS FLAGWRD8 # ARE WE ON THE SURFACE?
MASK SURFFBIT
EXTEND
BZF MOONSPOT # YES: BYPASS MASS MESS
CA FLGWRD10 # NO: WHICH VEX SHOULD BE USED?
MASK APSFLBIT
CCS A
EXTEND # IF EXTEND IS EXECUTED, APSVEX --> A,
DCA APSVEX # OTHERWISE DPSVEX --> A
TS Q
EXTEND
DCA ABDVCONV
EXTEND
OCT10002 DV Q # WHERE APPROPRIATE VEX RESIDES
EXTEND
MP MASS
DAS MASS1
MOONSPOT CA KPIP1 # TP MPAC = ABDELV AT 2(14) CM/SEC
TC SHORTMP # MULTIPLY BY KPIP1 TO GET
# Page 861
DXCH MPAC # ABDELV AT 2(7) M/CS
DAS DVTOTAL # UPDATE DVTOTAL FOR DISPLAY
TC TMPTOSPT
TC BANKCALL
CADR QUICTRIG
CAF XNBPIPAD
TC BANKCALL
CADR FLESHPOT
TC INTPRET
AVERAGEG BON CALL
MUNFLAG
RVBOTH
CALCRVG
EXIT
GOSERV TC QUIKFAZ5
COPYCYCL TC COPYCYC
# CA ZERO # A IS ZERO ON RETURN FROM COPYCYC
TS PIPATMPX
TS PIPATMPY
TS PIPATMPZ
CS STEERBIT # CLEAR STEERSW PRIOR TO DVMON.
MASK FLAGWRD2
TS FLAGWRD2
CAF IDLEFBIT # IS THE IDLE FLAG SET?
MASK FLAGWRD7
CCS A
TCF NODVMON1 # IDLEFLAG = 1, HENCE SET AUXFLAG TO 0.
CS FLAGWRD6
MASK AUXFLBIT
CCS A
TCF NODVMON2 # AUXFLAG = 0, HENCE SET AUXFLAG TO 1.
DVMON CS DVTHRUSH
AD ABDELV
EXTEND
BZMF LOTHRUST
CS FLAGWRD2 # SET STEERSW.
MASK STEERBIT
ADS FLAGWRD2
DVCNTSET CAF ONE # ALLOW TWO PASSES MAXIMUM NOW THAT
# Page 862
TS DVCNTR # THRUST HAS BEEN DETECTED.
CA FLGWRD10 # BRANCH IF APSFLAG IS SET.
MASK APSFLBIT
CCS A
TCF USEJETS
CA BIT9 # CHECK GIMBAL FAIL BIT
EXTEND
RAND CHAN32
EXTEND
BZF USEJETS
USEGTS CS USEQRJTS
MASK DAPBOOLS
TS DAPBOOLS
TCF SERVOUT
NODVMON1 CS AUXFLBIT # SET AUXFLAG TO 0.
MASK FLAGWRD6
TS FLAGWRD6
TCF USEJETS
NODVMON2 CS FLAGWRD6 # SET AUXFLAG TO 1.
MASK AUXFLBIT
ADS FLAGWRD6
TCF USEJETS
LOTHRUST TC QUIKFAZ5
CCS DVCNTR
TCF DECCNTR
CCS PHASE4 # COMFAIL JOB ACTIVE?
TCF SERVOUT # YES: WON'T NEED ANOTHER.
TC PHASCHNG # 4.37SPOT FOR COMFAIL.
OCT 00374
CAF PRIO25
TC NOVAC
EBANK= WHICH
2CADR COMFAIL
TCF SERVOUT
DECCNTR TS DVCNTR1
TC QUIKFAZ5
CA DVCNTR1
TS DVCNTR
INHINT
TC IBNKCALL # IF THRUST IS LOW, NO STEERING IS DONE
# Page 863
CADR STOPRATE # AND THE DESIRED RATES ARE SET TO ZERO.
USEJETS CS DAPBOOLS
MASK USEQRJTS
ADS DAPBOOLS
SERVOUT RELINT
TC BANKCALL
CADR 1/ACCS
CA PRIORITY
MASK LOW9
TS PUSHLOC
ZL
DXCH FIXLOC # FIXLOC AND DVFIND
TC QUIKFAZ5
EXTEND # EXIT TO SELECTED ROUTINE WHETHER THERE
DCA AVGEXIT # IS THRUST OR NOT. THE STATE OF STEERSW
DXCH Z # WILL CONVEY THIS INFORMATION.
XNBPIPAD ECADR XNBPIP
BANK 32
SETLOC SERV2
BANK
COUNT* $$/SERV
AVGEND CA PIPTIME +1 # FINAL AVERAGE G EXIT
TS 1/PIPADT # SET UP FREE FALL GYRO COMPENSATION.
TC UPFLAG # SET DRIFT FLAG.
ADRES DRIFTFLG
TC BANKCALL
CADR PIPFREE
CS BIT9
EXTEND
WAND DSALMOUT
TC 2PHSCHNG
OCT 5 # GROUP 5 OFF
OCT 05022 # GROUP 2 ON
OCT 20000
TC INTPRET
SET CLEAR
NOR29FLG # SHUT OFF R29 WHEN SERVICER ENDS.
SWANDISP # SHUT OFF R10 WHEN SERVICER ENDS.
CLEAR CALL # RESET MUNFLAG.
MUNFLAG
# Page 864
AVETOMID
CLEAR EXIT
V37FLAG
AVERTRN CA OUTROUTE # RETURN TO DESIRED POINT.
TC BANKJUMP
OUTGOAVE = AVERTRN
DVCNTR1 = MASS1
# Page 865
SETLOC SERV3
BANK
COUNT* $$/SERV
SERVIDLE EXTEND # DISCONNECT SERVICER FROM ALL GUIDANCE
DCA SVEXTADR
DXCH AVGEXIT
CS FLAGWRD7 # DISCONNECT THE DELTA-V MONITOR
MASK IDLEFBIT
ADS FLAGWRD7
CAF LRBYBIT # TERMINATE R12 IS RUNNING.
TS FLGWRD11
EXTEND
DCA NEG0
DXCH -PHASE1
CA FLAGWRD6 # DO NOT TURN OFF PHASE 2 IF MUNFLAG SET.
MASK MUNFLBIT
CCS A
TCF +4
EXTEND
DCA NEG0
DXCH -PHASE2
+4 EXTEND
DCA NEG0
DXCH -PHASE3
EXTEND
DCA NEG0
DXCH -PHASE6
CAF OCT33 # 4.33SPOT FOR GOP00FIX
TS L
COM
DXCH -PHASE4
TCF WHIMPER # PERFORM A SOFTWARE RESTART AND PROCEED
# TO GOTOP00H WHILE SERVICER CONTINUES TO
# RUN, ALBEIT IN A GROUND STATE WHERE
# ONLY STATE-VECTOR DEPENDENT FUNCTIONS
# ARE MAINTAINED.
EBANK= DVCNTR
# Page 866
SVEXTADR 2CADR SERVEXIT
BANK 32
SETLOC SERV
BANK
COUNT* $$/SERV
SERVEXIT TC PHASCHNG
OCT 00035
+2 TCF ENDOFJOB
BANK 23
SETLOC NORMLIZ
BANK
COUNT* $$/SERV
# Page 867
NORMLIZE TC INTPRET
VLOAD BOFF
RN1
MUNFLAG
NORMLIZ1
VSL6 MXV
REFSMMAT
STCALL R
MUNGRAV
VLOAD VSL1
VN1
MXV
REFSMMAT
STOVL V
V(CSM)
VXV UNIT
R(CSM)
STORE UHYP
ASCSPOT EXIT
EXTEND # MAKE SURE GROUP 2 IS OFF
DCA NEG0
DXCH -PHASE2
TC POSTJUMP
CADR NORMLIZ2
BANK 33
SETLOC SERVICES
BANK
COUNT* $$/SERV
NORMLIZ1 CALL
CALCGRAV
EXIT
NORMLIZ2 CA EIGHTEEN
TC COPYCYC +1 # DO NOT COPY MASS IN NORMLIZE
TC ENDOFJOB
COPYCYC CA OCT24 # DEC 20
+1 INHINT
+2 MASK NEG1 # REDUCE BY 1 IF ODD
TS ITEMP1
EXTEND
INDEX ITEMP1
DCA RN1
INDEX ITEMP1
# Page 868
DXCH RN
CCS ITEMP1
TCF COPYCYC +2
TC Q # RETURN UNDER INHINT
EIGHTEEN DEC 18
# Page 869
# ************* PIPA READER *****************
# MOD NO. 00 BY D. LICKLY, DEC. 9 1966
#
# FUNCTIONAL DESCRIPTION
# SUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT WILL BE RESTARTABLE.
# PIPA READINGS ARE STORED IN THE VECTOR DELV. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING,
# RESTARTS BEGIN AT REREADAC.
#
# AT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A
# VECTOR IN CDUTEMP. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS
# THE CDU READING IN 25 COMP IN THE ORDER CDUX,Y,Z. THE THRUST
# VECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.
#
# CALLING SEQUENCE AND EXIT
# CALL VIA TC, ISWCALL, ETC.
# EXIT IS VIA Q.
#
# INPUT
# INPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.
#
# OUTPUT
# HIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS.
# PIPTIME CONTAINS TIME OF PIPA READING.
#
# DEBRIS (ERASABLE LOCATIONS DESTROYED BY PROGRAM)
# TEMX, TEMY, TEMZ, PIPAGE
BANK 37
SETLOC SERV1
BANK
COUNT* $$/SERV
PIPASR EXTEND
# Page 870
DCA TIME2
DXCH PIPTIME1 # CURRENT TIME POSITIVE VALUE
+3 CS ZERO # INITIALIZE THESE AT NEG. ZERO.
TS TEMX
TS TEMY
TS TEMZ
CA ZERO
TS DELVZ
TS DELVZ +1
TS DELVY
TS DELVY +1
TS DELVX +1
TS PIPAGE # SHOW PIPA READING IN PROGRESS
REPIP1 EXTEND
DCS PIPAX # X AND Y PIPS READ
DXCH TEMX
DXCH PIPAX # PIPAS SET TO NEG ZERO AS READ.
TS DELVX
LXCH DELVY
REPIP3 CS PIPAZ # REPEAT PROCESS FOR Z PIP
XCH TEMZ
XCH PIPAZ
DODELVZ TS DELVZ
REPIP4 EXTEND # COMPUTE GUIDANCE PERIOD
DCA PIPTIME1
DXCH PGUIDE
EXTEND
DCS PIPTIME
DAS PGUIDE
CA CDUX # READ CDUS INTO HIGH ORDER CDUTEMPS
TS CDUTEMPX
CA CDUY
TS CDUTEMPY
CA CDUZ
TS CDUTEMPZ
CA DELVX
TS PIPATMPX
CA DELVY
TS PIPATMPY
CA DELVZ
TS PIPATMPZ
TC Q
# Page 871
REREADAC CCS PIPAGE
TCF READACCS # PIP READING NOT STARTED. GO TO BEGINNING
CAF DONEADR # SET UP RETURN FROM PIPASR
TS Q
CCS DELVZ
TCF REPIP4 # Z DONE, GO DO CDUS
TCF +3 # Z NOT DONE, CHECK Y.
TCF REPIP4
TCF REPIP4
ZL
CCS DELVY
TCF +3
TCF CHKTEMX # Y NOT DONE, CHECK X.
TCF +1
LXCH PIPAZ # Y DONE, ZERO Z PIP.
CCS TEMZ
CS TEMZ # TEMZ NOT = -0, CONTAINS -PIPAZ VALUE.
TCF DODELVZ
TCF -2
LXCH DELVZ # TEMZ = -0, L HAS ZPIP VALUE.
TCF REPIP4
CHKTEMX CCS TEMX # HAS THIS CHANGED
CS TEMX # YES
TCF +3 # YES
TCF -2 # YES
TCF REPIP1 # NO
TS DELVX
CS TEMY
TS DELVY
CS ZERO # ZERO X AND Y PIPS
DXCH PIPAX # L STILL ZERO FROM ABOVE
TCF REPIP3
DONEADR GENADR PIPSDONE
# Page 872
BANK 33
SETLOC SERVICES
BANK
COUNT* $$/SERV
TMPTOSPT CA CDUTEMPY # THIS SUBROUTINE, CALLED BY AN RTB FROM
TS CDUSPOTY # INTERPRETIVE, LOADS THE CDUS CORRESPON-
CA CDUTEMPZ # DING TO PIPTIME INTO THE CDUSPOT VECTOR.
TS CDUSPOTZ
CA CDUTEMPX
TS CDUSPOTX
TC Q
# LRHTASK IS A WAITLIST TASK SET BY READACCS DURING THE DESCENT BRAKING
# PHASE WHEN THE ALT TO THE LUNAR SURFACE IS LESS THAN 25,000 FT. THIS
# TASK CLEARS THE ALTITUDE MEASUREMENT MADE DISCRETE AND INITIATES THE
# LANDING RADAR MEASUREMENT JOB (LRHJOB) TO TAKE A ALTITUDE MEASUREMENT
# 50 MS PRIOR TO THE NEXT READACCS TASK.
BANK 21
SETLOC R10
BANK
COUNT* $$/SERV
LRHTASK CS FLGWRD11
MASK LRBYBIT
EXTEND
BZF GRP2OFF # LR BYPASS SET -- BYPASS ALL LR READING.
CA READLBIT
MASK FLGWRD11 # IS READLR FLAG SET?
EXTEND
BZF GRP2OFF # NO. BYPASS LR READ.
CS FLGWRD11
MASK NOLRRBIT # IS LR READ INHIBITED?
EXTEND
BZF GRP2OFF # YES. BYPASS LR READ.
CA PRIO32 # LR READ OK. SET JOB TO DO IT
TC NOVAC # ABOUT 50 MS. PRIOR TO PIPA READ.
EBANK= HMEAS
2CADR LRHJOB
GRP2OFF EXTEND
DCA NEG0
DXCH -PHASE2
TCF R10,R11A
BANK 33
SETLOC SERVICES
BANK
# Page 873
COUNT* $$/SERV
# HIGATASK IS ENTERED APPROXIMATELY 6 SECS PRIOR TO HIGATE DURING THE
# DESCENT PHASE. HIGATASK SETS THE HIGATE FLAG (BIT11) AND THE LR INHIBIT
# FLAG (BIT10) IN LRSTAT. THE HIGATJOB IS SET UP TO REPOSITION THE LR
# ANTENNA FROM POSITION 1 TO POSITION 2. IF THE REPOSITIONING IS
# SUCCESSFUL THE ALT BEAM AND VELOCITY BEAMS ARE TRANSFORMED TO THE NEW
# ORIENTATION IN NB COORDINATES AND STORED IN ERASABLE.
HIGATASK INHINT
CS PRIO3 # SET HIGATE AND LR INHIBIT FLAGS
MASK FLGWRD11
AD PRIO3
TS FLGWRD11
CAF PRIO32
TC FINDVAC # SET LR POSITIONING JOB (POS2)
EBANK= HMEAS
2CADR HIGATJOB
TCF CONTSERV # CONTINUE SERVICER
# Page 874
# MUNRETRN IS THE RETURN LOC FROM SPECIAL AVE G ROUTINE (MUNRVG)
MUNRETRN EXIT
CS FLGWRD11
MASK LRBYBIT
EXTEND
BZF COPYCYC1 # BYPASS LR LOGIC IF BIT15 IS SET.
CA READLBIT # SEE IF ALT < 35000 FT LAST CYCLE
MASK FLGWRD11
EXTEND
BZF 35KCHK # ALT WAS > 35000 FT LAST CYCLE CHK NOW
CAF XORFLBIT # WERE WE BELOW 30000 FT LAST PASS?
MASK FLGWRD11
EXTEND
BZF XORCHK # NO -- TEST THIS PASS
HITEST CAF PSTHIBIT # CHECK FOR HIGATE
MASK FLGWRD11
EXTEND
BZF HIGATCHK # NOT AT HIGATE LAST CYCLE -- CHK THIS CYCLE
POS2CHK CAF BIT7 # VERIFY LR IN POS2
EXTEND
RAND CHAN33
EXTEND
BZF UPDATCHK # IT IS -- CHECK FOR LR UPDATE
CAF BIT13
EXTEND
RAND CHAN12
EXTEND
BZF LRPOSALM # LR NOT IN POS2 OR REPOSITIONING -- BAD
TCF CONTSERV # LR BEING REPOSITIONED -- CONTINUE SERV
HIGATCHK CA TTF/8 # IS TTF > CRITERION? (TTF IS NEGATIVE)
AD RPCRTIME
EXTEND
BZMF POS1CHK # NO
CA EBANK4 # MUST SWITCH EBANKS
XCH EBANK
TS L # SAVE IN L
EBANK= XNBPIP
CS XNBPIP # UXBXP IN GSOP CH5
EBANK= DVCNTR
LXCH EBANK # RESTORE EBANK
AD RPCRTQSW # QSW - UXBXP
# Page 875
EXTEND
BZMF HIGATASK # IF UXBXP > QSW, THEN REPOSITION
POS1CHK CAF BIT6 # HIGATE NOT IN SIGHT -- DO POS1 CHK
EXTEND
RAND 33
EXTEND
BZF UPDATCHK # LR IN POS1 -- CHECK FOR LR UPDATE
LRPOSALM TC ALARM # LR NOT IN PROPER POS-ALARM-BYPASS UPDATE
OCT 511 # AND CONTINUE SERVICER
CONTSERV INHINT
CS BITS4-7
MASK FLGWRD11 # CLEAR LR MEASUREMENT MADE DISCRETES.
TS FLGWRD11
TC IBNKCALL # SET LR LITES PROPERLY
CADR R12LITES
# Page 876
COPYCYC1 TC QUIKFAZ5
R29? CA FLAGWRD3
MASK NR29&RDR
CCS A # IS NOR29FLG OR READRFLG SET?
TCF R29NODES # YES, SO DON'T DESIGNATE.
CA RADMODES # NO, SO R29 IS CALLED FOR.
MASK OCT10002 # IS THE RR NOT ZEROING ITS CDUS, AND
CCS A # IS THE RENDEZVOUS RADAR IN AUTO MODE?
TCF R29NODES # NO, SO DON'T DESIGNATE.
CA RADMODES
MASK PRIO22
CCS A # IS RR REPOSITIONING OR REMODING?
TCF NOR29NOW # YES: COME BACK IN 2 SECONDS & TRY AGAIN.
TCF R29
R29NODES INHINT # R29 NOT ALLOWED THIS CYCLE.
CS DESIGBIT # SHOW THAT DESIGNATION IS OFF.
MASK RADMODES
TS RADMODES
NOR29NOW TC INTPRET # INTPRET DOES A RELINT.
VLOAD ABVAL # MPAC = ABVAL( NEW SM. POSITION VECTOR )
R1S
PUSH DSU # (2)
/LAND/
STORE HCALC # NEW HCALC*2(24)M.
STORE HCALC1
DMPR RTB
ALTCONV
SGNAGREE
STOVL ALTBITS # ALTITUDE FOR R10 IN BIT UNITS.
UNIT/R/
VXV UNIT
UHYP
STOVL UHZP # DOWNRANGE HALF-UNIT VECTOR FOR R10.
R1S
VXM VSR4
REFSMMAT
STOVL RN1 # TEMP. REF. POSITION VECTOR*2(29)M.
V1S
VXM VSL1
REFSMMAT
STOVL VN1 # TEMP. REF. VELOCITY VECTOR 2(7) M/CS.
UNIT/R/
VXV ABVAL
# Page 877
V1S
SL1 DSQ
DDV
DMPR RTB
ARCONV1
SGNAGREE
COPYCYC2 EXIT # LEAVE ALTITUDE RATE COMPENSATION IN MPAC
INHINT
CA UNIT/R/ # UPDATE RUNIT FOR R10.
TS RUNIT
CA UNIT/R/ +2
TS RUNIT +1
CA UNIT/R/ +4
TS RUNIT +2
CA MPAC # LOAD NEW DALTRATE FOR R10.
TS DALTRATE
EXTEND
DCA R1S
DXCH R
EXTEND
DCA R1S +2
DXCH R +2
EXTEND
DCA R1S +4
DXCH R +4
EXTEND
DCA V1S
DXCH V
EXTEND
DCA V1S +2
DXCH V +2
EXTEND
DCA V1S +4
DXCH V +4
TCF COPYCYCL # COMPLETE THE COPYCYCL.
# Page 878
# ALTCHK COMPARES CURRENT ALTITUDE (IN HCALC) WITH A SPECIFIED ALTITUDE FROM A TABLE BEGINNING AT ALTCRIT.
# ITS CALLING SEQUENCE IS AS FOLLOWS:-
#
# L CAF N
# L+1 TC BANKCALL
# L+2 CADR ALTCHK
# L+3 RETURN HERE IF HCALC STILL > SPECIFIED CRITERION. C(L) = +0.
# L+4 RETURN HERE IF HCALC < OR = SPECIFIED CRITERION. C(A) = C(L) = +0
#
# ALTCHK MUST BE BANKCALLED EVEN FROM ITS OWN BANK. N IS THE LOCATION, RELATIVE TO THE TAG ALTCRIT,
# OF THE BEGINNING OF THE DP CONSTANT TO BE USED AS A CRITERION.
ALTCHK EXTEND
INDEX A
DCA ALTCRIT
DXCH MPAC +1
EXTEND
DCS HCALC
DAS MPAC +1
TC BRANCH +4
CAF ZERO # BETTER THAN A NOOP, PERHAPS
INCR BUF2
TCF SWRETURN
ALTCRIT = 25KFT
25KFT 2DEC 7620 B-24 # (0)
50KFT 2DEC 15240 B-24 # (2)
50FT 2DEC 15.24 B-24 # (4)
30KFT 2DEC 9144 B-24 # (6)
2KFT/SEC DEC 6.096 B-7 # 2000 FT/SEC AT 2(7) M/CS
# (A remark was likely to be needed here to explain XORCHK) 4/Jun/09,FB
XORCHK CAF SIX # ARE WE BELOW 30000 FT?
TC BANKCALL
CADR ALTCHK
TCF HITEST # CONTINUE LR UPDATE
TC UPFLAG # YES: INHIBIT X-AXIS OVERRIDE
ADRES XOVINFLG
TC UPFLAG
ADRES XORFLG
TCF HITEST # CONTINUE LR UPDATE
35KCHK CAF TWO # ARE WE BELOW 35000 FT?
# Page 879
TC BANKCALL
CADR ALTCHK
TCF CONTSERV
TC UPFLAG
ADRES READLR # SET READLR FLAG TO ENABLE LR READING.
TCF CONTSERV
# Page 880
# ***************************************************************
CALCGRAV UNIT PUSH # SAVE UNIT/R/ IN PUSHLIST (18)
STORE UNIT/R/
LXC,1 SLOAD # RTX2 = 0 IF EARTH ORBIT, =2 IF LUNAR.
RTX2
RTX2
DCOMP BMN
CALCGRV1
VLOAD DOT # (12)
UNITZ
UNIT/R/
SL1 PUSH # (14)
DSQ BDSU
DP1/20
PDDL DDV
RESQ
34D # (RN)SQ
STORE 32D # TEMP FOR (RE/RN)SQ
DMP DMP
20J
VXSC PDDL
UNIT/R/
DMP DMP
2J
32D
VXSC VSL1
UNITZ
VAD STADR
STORE UNITGOBL
VAD PUSH # MPAC = UNIT GRAVITY VECTOR. (18)
CALCGRV1 DLOAD NORM # PERFORM A NORMALIZATION ON RMAGSQ IN
34D # ORDER TO BE ABLE TO SCALE THE MU FOR
X2 # MAXIMUM PRECISION.
BDDV* SLR*
-MUDT,1
0 -21D,2
VXSC STADR
STORE GDT1/2 # SCALED AT 2(+7) M/CS
RVQ
CALCRVG VLOAD VXM
DELV
REFSMMAT
VXSC VSL1
KPIP1
STORE DELVREF
VSR1 PUSH
VAD PUSH # (DV-OLDGDT)/2 TO PD SCALED AT 2(+7) M/CS.
# Page 881
GDT/2
VAD PDDL
VN
PGUIDE
SL VXSC
6D
VAD STQ
RN
31D
STCALL RN1 # TEMP STORAGE OF RN SCALED 2(+29) M
CALCGRAV
VAD VAD
VAD
VN
STCALL VN1 # TEMP STORAGE OF VN SCALED 2(+7) M/CS