My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
# 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.
# 2011-01-06 JL Fixed pseudo-label indentation.
# 2011-01-06 JL Fixed pseudo-labels which were incorrectly real labels.
#
# 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
# Massachusetts 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
31D

DP1/20 2DEC 0.05
SHIFT11 2DEC 1 B-11

# Page 882
#*****************************************************************************
# MUNRVG IS A SPECIAL AVERAGE G INTEGRATION ROUTINE USED BY THRUSTING
# PROGRAMS WHICH FUNCTION IN THE VICINITY OF AN ASSUMED SPHERICAL MOON.
# THE INPUT AND OUTPUT QUANTITIES ARE REFERENCED TO THE STABLE MEMBER
# COORDINATE SYSTEM.

RVBOTH VLOAD PUSH
G(CSM)
VAD PDDL
V(CSM)
PGUIDE
DDV VXSC
SHIFT11
VAD
R(CSM)
STCALL R1S
MUNGRAV
VAD VAD
V(CSM)
STADR
STORE V1S
EXIT
TC QUIKFAZ5
TC INTPRET
VLOAD
GDT1/2
STOVL G(CSM)
R1S
STOVL R(CSM)
V1S
STORE V(CSM)
EXIT
TC QUIKFAZ5
TC INTPRET
MUNRVG VLOAD VXSC
DELV
KPIP2
PUSH VAD # 1ST PUSH: DELV IN UNITS OF 2(8) M/CS
GDT/2
PUSH VAD # 2ND PUSH: (DELV + GDT)/2, UNITS OF 2(7)
V # (12)
PDDL DDV
PGUIDE
SHIFT11
VXSC
VAD
R
STCALL R1S # STORE R SCALED AT 2(+24) M
MUNGRAV
# Page 883
VAD VAD
VAD
V
STORE V1S # STORE V SCALED AT 2(+7) M/CS.
ABVAL
STOVL ABVEL # STORE SPEED FOR LR AND DISPLAYS.
UNIT/R/
DOT SL1
V1S
STOVL HDOTDISP # HDOT = V. UNIT(R)*2(7) M/CS.
R1S
VXV VSL2
WM
STODL DELVS # LUNAR ROTATION CORRECTON TERM*2(5) M/CS.
36D
DSU
/LAND/
STCALL HCALC # FOR NOW, DISPLAY WHETHER POS OR NEG
MUNRETRN
MUNGRAV UNIT # AT 36D HAVE ABVAL(R), AT 34D R.R
STODL UNIT/R/
34D
SL BDDV
6D
-MUDTMUN
DMP VXSC
SHIFT11
UNIT/R/
STORE GDT1/2 # 1/2GDT SCALED AT 2(7) M/CS.
RVQ

1.95SECS DEC 195
7.5 2DEC .02286 B-6 # 7.5 FT/SEC AT 2(6) M/CS

2SEC(18) 2DEC 200 B-18

2SEC(28) 2OCT 0000000310 # 2SEC AT 2(28)

4SEC(28) 2DEC 400 B-28

BITS4-7 OCT 110


# Page 884
UPDATCHK CAF NOLRRBIT # SEE IF LR UPDATE INHIBITED.
MASK FLGWRD11
CCS A
TCF CONTSERV # IT IS -- NO LR UPDATE
CAF RNGEDBIT # NO INHIBIT -- SEE ALT MEAS. THIS CYCLE.
MASK FLGWRD11
EXTEND
BZF VMEASCHK # NO ALT MEAS THIS CYCLE -- CHECK FOR VEL

POSUPDAT CA FIXLOC # SET PUSHLIST TO ZERO
TS PUSHLOC

TC INTPRET
VLOAD VXM
HBEAMNB
XNBPIP # HBEAM SM AT 2(2)
PDVL VSL2 # STORE HBEAM IN PD 0-5
V1S # SCALE V AT 2(5) M/CS
VAD DOT
DELVS # V RELATIVE TO SURFACE AT 2(5) M/CS
0D # V ALONG HBEAM AT 2(7) M/CS.
DMP EXIT
RADSKAL # SCALE TO RADAR COUNTS X 5

CS FLGWRD12 # TEST LR ALTITUDE SCALE FACTOR
MASK ALTSCBIT
EXTEND
BZF +3 # BRANCH IF HIGH SCALE

CA SKALSKAL # RESCALE IF LOW SCALE
TC SHORTMP

+3 TC INTPRET
DAD SL # CORRECT HMEAS FOR DOPPLER EFFECT
HMEAS
7D
DMP VXSC # SLANT RANGE AT 2(21), PUSH UP FOR HBEAM
HSCAL # SLANT RANGE VECTOR AT 2(23) M
DOT DSU
UNIT/R/ # ALTITUDE AT 2(24) M
HCALC # DELTA H AT 2(24) M
STORE DELTAH
EXIT

CA FLGWRD11
MASK PSTHIBIT
EXTEND # DO NOT PERFORM DATA REASONABLENESS TEST
BZF NOREASON # UNTIL AFTER HIGATE
# Page 885
TC INTPRET
ABS DSU
DELQFIX # ABS(DELTAH) - DQFIX 50 FT NOM
SL3 DSU # SCALE TO 2(21)
HCALC # ABS(DELTAH) - (50 + HCALC/8) AT 2(21)
EXIT

INCR LRLCTR
TC BRANCH
TCF HFAIL # DELTA H TOO LARGE
TCF HFAIL # DELTA H TOO LARGE
TC DOWNFLAG # TURN OFF ALT FAIL LAMP
ADRES HFLSHFLG

NOREASON CS FLGWRD11
MASK LRINHBIT
CCS A
TCF VMEASCHK # UPDATE INHIBITED -- TEST VELOCITY ANYWAY

TC INTPRET # DO POSITION UPDATE
DLOAD SR4
HCALC # RESCALE H TO 2(28)M
EXIT
EXTEND
DCA DELTAH # STORE DELTAH IN MPAC AND
DXCH MPAC # BRING HCALC INTO A,L
TC ALSIGNAG
EXTEND # IF HIGH PART OF HCALC IS NON-ZERO, THEN
BZF +2 # HCALC > HMAX,
TCF VMEASCHK # SO UPDATE IS BYPASSED
TS MPAC +2 # FOR LATER SHORTMP

CS L # -H AT 2(14) M
AD LRHMAX # HMAX - H
EXTEND
BZMF VMEASCHK # IF H >HMAX, BYPASS UPDATE
EXTEND
MP LRWH # WH(HMAX - H)
EXTEND
DV LRHMAX # WH(1 - H/HMAX)
TS MPTEMP
TC SHORTMP2 # DELTAH (WH)(1 - H/HMAX) IN MPAC
TC INTPRET # MODE IS DP FROM ABOVE
SL1
VXSC VAD
UNIT/R/ # DELTAR = DH(WH)(1 - H/HMAX) UNIT/R/
R1S
STCALL GNUR
MUNGRAV
EXIT
# Page 886
TC QUIKFAZ5

CA ZERO
RUPDATED TC GNURVST

VMEASCHK TC QUIKFAZ5 # RESTART AT NEXT LOCATION
CS FLGWRD11
MASK VELDABIT # IS V READING AVAILABLE?
CCS A
TCF VALTCHK # NO: SEE IF V READING TO BE TAKEN

VELUPDAT CS VSELECT # PROCESS VELOCITY DATA
TS L
ADS L # -2 VSELECT IN L
AD L
AD L # -6 VSELECT IN A
INDEX FIXLOC
DXCH X1 # X1 = -6 VSELECT, X2 = -2 VSELECT

CA EBANK4
TS EBANK
EBANK= LRXCDU

CA LRYCDU # STORE LRCDUS IN CDUSPOTS
TS CDUSPOT
CA LRZCDU
TS CDUSPOT +2
CA LRXCDU
TS CDUSPOT +4

TC BANKCALL
CADR QUICTRIG # GET SINES AND COSINES FOR NBSM

CA FIXLOC
TS PUSHLOC # SET PD TO ZERO

TC INTPRET
VLOAD* CALL
VZBEAMNB,1 # CONVERT VBEAM FROM NB TO SM
*NBSM*
PDDL SL # STORE IN PD 0-5
VMEAS # LOAD VELOCITY MEASUREMENT
12D
DMP* PUSH # SCALE TO M/CS AT 2(6)
VZSCAL,2 # AND STORE IN PD 6-7
EXIT
CS ONE
TS MODE # CHANGE STORE MODE TO VECTOR

CA PIPTEM # STORE DELV IN MPAC
# Page 887
ZL
DXCH MPAC

CA PIPTEM +1
ZL
DXCH MPAC +3

CA PIPTEM +2
ZL
DXCH MPAC +5

CA EBANK7
TS EBANK # RESTORE EBANK 7
EBANK= DVCNTR
TC INTPRET
VXSC PDDL
KPIP1 # SCALE DELV TO 2(7) M/CS AND PUSH
LRVTIME # TIME OF DELV AT 2(28) CS
DSU DDV
PIPTIME # TU - T(N-1)
2SEC(28)
VXSC VSL1 # G(N-1)(TU - T(N-1))
GDT/2 # SCALED AT 2(7) M/CS
VAD VAD # PUSH UP FOR DELV
V # VU = V(N-1) + DELVU + G(N-1) DTU
VSL2 VAD # SCALE TO 2(5) M/CS AND SUBTRACT
DELVS # MOON ROTATION.
PUSH ABVAL # STORE IN PD
SR4 DAD # ABS(VM)/8 + 7.5 AT 2(6)
7.5
STOVL 20D # STORE IN 20D AND PICK UP VM
DOT BDSU # V(EST) AT 2(6)
0 # DELTAV = VMEAS - V(EST)
PUSH ABS
DSU EXIT # ABS(DV) - (7.5 + ABS(VM)/8))
20D

INCR LRMCTR
TC BRANCH
TCF VFAIL # DELTA V TOO LARGE. ALARM
TCF VFAIL # DELTA V TOO LARGE. ALARM

TC DOWNFLAG # TURN OFF VEL FAIL LAMP
ADRES VFLSHFLG

CA FLGWRD11
MASK VXINHBIT
EXTEND
BZF VUPDAT # IF VX INHIBIT RESET, INCORPORATE DATA.
# Page 888
TC DOWNFLAG
ADRES VXINH # RESET VX INHIBIT

CA VSELECT
AD NEG2 # IF VSELECT = 2 (X AXIS).
EXTEND # BYPASS UPDATE
BZF ENDVDAT

VUPDAT CS FLGWRD11
MASK LRINHBIT
CCS A
TCF VALTCHK # UPDATE INHIBITED

TS MPAC +1

CA ABVEL # STORE E7 ERASABLES NEEDED IN TEMPS
TS ABVEL*
CA VSELECT
TS VSELECT*
CA EBANK5
TS EBANK # CHANGE EBANKS

EBANK= LRVF
CS LRVF
AD ABVEL* # IF V < VF, USE WVF
EXTEND
BZMF USEVF

CS ABVEL*
AD LRVMAX # VMAX - V
EXTEND
BZMF WSTOR -1 # IF V > VMAX, W = 0

EXTEND
INDEX VSELECT*
MP LRWVZ # WV(VMAX - V)

EXTEND
DV LRVMAX # WV( 1 - V/VMAX )
TCF WSTOR

USEVF INDEX VSELECT*
CA LRWVFZ # USE APPROPRIATE CONSTANT WEIGHT
TCF WSTOR

-1 CA ZERO
WSTOR TS MPAC
CS BIT7 # (=64D)
AD MODREG
EXTEND
# Page 889
BZMF +3 # IF IN P65,P66,P67, USE ANOTHER CONSTANT

CA LRWVFF
TS MPAC

+3 CA EBANK7
TS EBANK # CHANGE EBANKS

EBANK= ABVEL
TC INTPRET
DMP VXSC # W(DELTA V)(VBEAMSM) UP 6-7, 0-5
VAD
V1S # ADD WEIGHTED DELTA V TO VELOCITY
STORE GNUV
EXIT

TC QUIKFAZ5 # DO NOT RE-UPDATE

CA SIX
VUPDATED TC GNURVST # STORE NEW VELOCITY VECTOR
ENDVDAT = VALTCHK

VALTCHK TC QUIKFAZ5 # DO NOT REPEAT ABOVE

CAF READVBIT # TEST READVEL TO SEE IF VELOCITY READING
MASK FLGWRD11 # IS DESIRED.
CCS A
TCF READV # YES -- READ VELOCITY
CS ABVEL # NO -- SEE IF VELOCITY < 2000 FT/SEC
AD 2KFT/SEC
EXTEND
BZMF CONTSERV # V > 2000 FT/SEC DO NOT READ VEL

TC UPFLAG # V < 2000 FT/SEC SET READVEL AND READ.
ADRES READVEL

READV CAF PRIO32 # SET UP JOB TO READ VELOCITY BEAMS.
TC NOVAC
EBANK= HMEAS
2CADR LRVJOB

TCF CONTSERV # CONTINUE WITH SERVICER

GNURVST TS BUF # STORE GNUR (=GNUV) IN R1S OR V1S
EXTEND # A = 0 FOR R, A = 6 FOR V
DCA GNUR
INDEX BUF
DXCH R1S
EXTEND
# Page 890
DCA GNUR +2
INDEX BUF
DXCH R1S +2
EXTEND
DCA GNUR +4
INDEX BUF
DXCH R1S +4
TC Q

QUIKFAZ5 CA EBANK3
XCH EBANK # SET EBANK 3
DXCH L # Q TO A, A TO L
EBANK= PHSNAME5
TS PHSNAME5
LXCH EBANK
EBANK= DVCNTR
TC A

HFAIL CS LRRCTR
EXTEND
BZF NORLITE # IF R = 0, DO NOT TURN ON TRK FAIL
AD LRLCTR
MASK NEG3
EXTEND # IF L-R LT 4, DO NOT TURN ON TRK FAIL
BZF +2
TCF NORLITE

TC UPFLAG # AND SET BIT TO TURN ON TRACKER FAIL LITE
ADRES HFLSHFLG

NORLITE CA LRLCTR
TS LRRCTR # SET R = L

TCF VMEASCHK

VFAIL CS LRSCTR # DELTA Q LARGE
EXTEND # IF S = 0, DO NOT TURN ON TRACKER FAIL
BZF NOLITE
AD LRMCTR # M-S
MASK NEG3 # TEST FOR M-S > 3
EXTEND # IF M-S > 3, THEN TWO OR MORE OF THE
BZF +2 # LAST FOUR V READINGS WERE BAD,
TCF NOLITE # SO TURN ON VELOCITY FAIL LIGHT

TC UPFLAG # AND SET BIT TO TURN ON TRACKER FAIL LITE
ADRES VFLSHFLG

# Page 891
NOLITE CA LRMCTR # SET S = M
TS LRSCTR

CCS VSELECT # TEST FOR Z COMPONENT
TCF ENDVDAT # NOT Z, DO NOT SET VX INHIBIT

TC UPFLAG # Z COMPONENT - SET FLAG TO SKIP X
ADRES VXINH # COMPONENT, AS ERROR MAY BE DUE TO CROSS
TCF ENDVDAT # LOBE LOCK UP NOT DETECTED ON X AXIS.

# Page 892
# ********************************************************************************
# LRVJOB IS SET WHEN THE LEM IS BELOW 15000 FT DURING THE LANDING PHASE
# THIS JOB INITIALIZES THE LANDING RADAR READ ROUTINE FOR 5 VELOCITY
# SAMPLES AND GOES TO SLEEP WHILE THE SAMPLING IS DONE -- ABOUT 500 MS.
# WITH A GOODEND RETURN THE DATA IS STORED IN VMEAS AND BIT7 OF LRSTAT
# IS SET. THE GIMBAL ANGLES ARE READ ABOUT MIDWAY IN THE SAMPLINGS.

170MS EQUALS ND1

LRVJOB CA 170MS # SET TASK TO READ CDUS + PIPAS
TC WAITLIST
EBANK= LRVTIME
2CADR RDGIMS

CCS VSELECT # SEQUENCE LR VEL BEAM SELECTOR
TCF +2
CAF TWO # IF ZERO, RESET TO TWO
DOUBLE # 2XVSELECT USED FOR VBEAM INDEX IN LRVEL
TC BANKCALL # GO INITIALIZE LR VEL READ ROUTINE
CADR LRVEL
TC BANKCALL # PUT LRVJOB TO SLEEP ABOUT 500 MS
CADR RADSTALL
TCF VBAD
CCS STILBADV # IS DATA GOOD JUST PRESENT?
TCF VSTILBAD # JUST GOOD -- MUST WAIT 4 SECONDS.

INHINT
EXTEND # GOOD RETURN -- STOW AWAY VMEAS
DCA SAMPLSUM
DXCH VMEAS
CA EBANK4 # FOR DOWNLINK
TS EBANK
EBANK= LRVTIME

EXTEND
DCA LRVTIME
DXCH LRVTIMDL
EXTEND
DCA LRXCDU
DXCH LRXCDUDL
CA LRZCDU
TS LRZCDUDL
CA EBANK7
TS EBANK
EBANK= VSELECT

CS FLGWRD11 # SET BIT TO INDICATE VELOCITY
MASK VELDABIT # MEASUREMENT MADE
# Page 893
ADS FLGWRD11
ENDLRV CCS VSELECT # UPDATE VSELECT
TCF +2
CA TWO
TS VSELECT
TCF ENDOFJOB

VBAD CAF TWO # SET STILBAD TO WAIT 4 SECONDS
VSTILBAD TS STILBADV
TCF ENDLRV

# LRHJOB IS SET BY LRHTASK WHEN LEM IS BELOW 25000 FT. THIS JOB
# INITIALIZES THE LR READ ROUTINE FOR AN ALT MEASUREMENT AND GOES TO
# SLEEP WHILE THE SAMPLING IS DONE -- ABOUT 95 MS. WITH A GOODEND RETURN
# THE ALT DATA IS STORED IN HMEAS AND BIT7 OF LRSTAT IS SET.

BANK 34
SETLOC R12STUFF
BANK

COUNT* $$/SERV

LRHJOB TC BANKCALL # INITIATE LR ALT MEASUREMENT
CADR LRALT
TC BANKCALL # LRHJOB TO SLEEP ABOUT 95MS
CADR RADSTALL
TCF HBAD
CCS STILBADH # IS DATA GOOD JUST PRESENT?
TCF HSTILBAD # JUST GOOD -- MUST WAIT 4 SECONDS.

INHINT
EXTEND
DCA SAMPLSUM # GOOD RETURN -- STORE AWAY LRH DATA
DXCH HMEAS # LRH DATA 1.079 FT/BIT
EXTEND # FOR DOWNLINK
DCA PIPTIME1
DXCH MKTIME

EXTEND
DCA CDUTEMPY # CDUY,Z = AIG,AMG
DXCH AIG

CA CDUTEMPX # CDUX = AOG
TS AOG

CS FLGWRD11 # SET BIT TO INDICATE RANGE
MASK RNGEDBIT # MEASUREMENT MADE.
ADS FLGWRD11
ENDLRH TC ENDOFJOB # TERMATE LRHJOB

# Page 894
HBAD CA FLAGWRD5
MASK RNGSCBIT # IS BAD RETURN DUE TO SCALE CHANGE?
EXTEND
BZF HSTILBAD -1 # NO RESET HSTILBAD
TC DOWNFLAG # YES RESET SCALE CHANGE BIT AND IGNORE
ADRES RNGSCFLG
TC ENDOFJOB

CAF TWO # SET STILBAD TO WAIT 4 SECONDS
HSTILBAD TS STILBADH
TC ENDOFJOB

BANK 34
SETLOC SERV4
BANK

COUNT* $$/SERV

# RDGIMS IS A TASK SET UP BY LRVJOB TO PICK UP THE IMU CDUS AND TIME
# AT ABOUT THE MIDPOINT OF THE LR VEL READ ROUTINE WHEN 5 VEL SAMPLES
# ARE SPECIFIED.

EBANK= LRVTIME
RDGIMS EXTEND
DCA TIME2 # PICK UP TIME2, TIME1
DXCH LRVTIME # AND SAVE IN LRVTIME

EXTEND
DCA CDUX # PICK UP CDUX AND CDUY
DXCH LRXCDU # AND SAVE IN LRXCDU AND LRYCDU

CA CDUZ
TS LRZCDU # SAVE CDUZ IN LRZCDU

CA PIPAX
TS PIPTEM # SAVE PIPAX IN PIPTEM

EXTEND
DCA PIPAY # PICK UP PIPAY AND PIPAZ
DXCH PIPTEM +1 # AND SAVE IN PIPTEM +1 AND PIPTEM +2
TC TASKOVER

BANK 33
SETLOC SERVICES
BANK

COUNT* $$/SERV

EBANK= DVCNTR
# Page 895
# HIGATJOB IS SET APPROXIMATELY 6 SECONDS PRIOR TO HIGH GATE DURING
# THE DESCENT BURN PHASE OF LUNAR LANDING. THIS JOB INITIATES THE
# LANDING RADAR REPOSITIONING ROUTINE AND GOES TO SLEEP UNTIL THE
# LR ANTENNA MOVES FROM POSITION 1 TO POSITION 2. IF THE LR ANTENNA
# ACHIEVES POSITION 2 WITHIN 22 SECONDS THE ALTITUDE AND VELOCITY
# BEAM VECTORS ARE RECOMPUTED TO REFLECT THE NEW ORIENTATION WITH
# RESPECT TO THE NB. BIT10 OF LRSTAT IS CLEARED TO ALLOW LR
# MEASUREMENTS AND THE JOB TERMINATES.

HIGATJOB TC BANKCALL # START LRPOS2 JOB
CADR LRPOS2
TC BANKCALL # PUT HIGATJOB TO SLEEP UNTIL JOB IS DONE
CADR RADSTALL
TCF POSALARM # BAD END ALARM

POSGOOD CA PRIO23 # REDUCE PRIORITY FOR INTERPRETIVE COMPS.
TC PRIOCHNG

TC SETPOS2 # LR IN POS2 -- SET UP TRANSFORMATIONS

TC DOWNFLAG
ADRES NOLRREAD # RESET NOLRREAD FLAG TO ENABLE LR READING
TC ENDOFJOB

POSALARM CA OCT523
TC BANKCALL
CADR PRIOLARM # FLASH ALARM CODE
TCF GOTOP00H # TERMINATE
TCF +3 # PROCEED -- TRY AGAIN
TCF ENDOFJOB # V 32 E TERMINATE R12
TC ENDOFJOB

+3 CA BIT7 # SEE IF IN POS2 YET
EXTEND
RAND CHAN33
EXTEND
BZF POSGOOD # POS2 ACHIEVED SET UP ANTENNA BEAMS
TCF POSALARM # STILL DIDN'T MAKE IT REALARM

OCT523 OCT 00523



SETPOS1 TC MAKECADR # MUST BE CALLED BY BANKCALL
TS LRADRET1 # SAVE RETURN CADR. SINCE BUP2 CLOBBERED

CAF TWO
TS STILBADH # INITIALIZE STILBAD
TS STILBADV # INITIALIZE STILBAD

CA ZERO # INDEX FOR LRALPHA, LRBETA IN POS 1.
# Page 896
TS LRLCTR # SET L,M,R, ANS S TO ZERO
TS LRMCTR
TS LRRCTR
TS LRSCTR
TS VSELECT # INITIALIZE VSELECT

TC SETPOS # CONTINUE WITH COMPUTATIONS.

CA LRADRET1
TC BANKJUMP # RETURN TO CALLER

SETPOS2 CA TWO # INDEX FOR POS2
SETPOS XCH Q # SAVE INDEX IN Q
TS LRADRET # SAVE RETURN

CA EBANK5
TS EBANK
EBANK= LRALPHA

EXTEND
INDEX Q
DCA LRALPHA # LRALPHA IN A, LRBETA IN L
TS CDUSPOT +4 # ROTATION ABOUT X
LXCH CDUSPOT # ROTATION ABOUT Y
CA ZERO
TS CDUSPOT +2 # ZERO ROTATION ABOUT Z.

CA EBANK7
TS EBANK
EBANK= LRADRET

TC INTPRET
VLOAD CALL
UNITY # CONVERT UNITY(ANTENNA) TO NB
TRG*SMNB
STOVL VYBEAMNB
UNITX # CONVERT UNITX(ANTENNA) TO NB
CALL
*SMNB*
STORE VXBEAMNB
VXV VSL1
VYBEAMNB
STOVL VZBEAMNB # Z = X * Y
HBEAMANT
CALL
*SMNB* # CONVERT TO NB
STORE HBEAMNB
EXIT

# Page 897
TC LRADRET

Change log

r808 by jim.lawton on May 7, 2011   Diff
Removed workarounds, flagged SBANK= hacks.
Go to: 
Project members, sign in to write a code review

Older revisions

r694 by jim.lawton on Jan 6, 2011   Diff
Fixed a bunch of indentation errors,
comment chars missing. Fixed a few
pseudo-labels not indented at all,
resulting in spurious symbols.
r672 by jim.lawton on Oct 24, 2010   Diff
Fix spelling.
r390 by jim.lawton on Sep 3, 2009   Diff
Set eol-style on AGC sources to
native.
All revisions of this file

File info

Size: 34692 bytes, 1717 lines

File properties

svn:eol-style
native
Powered by Google Project Hosting