forked from chrislgarry/Apollo-11
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AOTMARK.s
695 lines (607 loc) · 16.7 KB
/
AOTMARK.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
# Copyright: Public domain.
# Filename: AOTMARK.agc
# Purpose: Part of the source code for Luminary 1A build 099.
# It is part of the source code for the Lunar Module's (LM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 244-261
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
# from the Luminary131/ file of the same
# name, using Luminary099 page images.
#
# This source code has been transcribed or otherwise adapted from
# digitized images of a hardcopy from the MIT Museum. The digitization
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
# the Museum. Many thanks to both. The images (with suitable reduction
# in storage size and consequent reduction in image quality as well) are
# available online at www.ibiblio.org/apollo. If for some reason you
# find that the images are illegible, contact me at info@sandroid.org
# about getting access to the (much) higher-quality images which Paul
# actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
# 16:27 JULY 14, 1969
# Page 244
BANK 12
SETLOC AOTMARK1
BANK
EBANK= XYMARK
COUNT* $$/MARK
AOTMARK INHINT
CCS MARKSTAT # SEE IF AOTMARK BUSY
TC +2 # MARK SYSTEM BUSY -- DO ALARM
TC EXTVBCHK
TC P00DOO
OCT 00105
EXTVBCHK CAF SIX # SEE IF EXT. VERB WORKING
MASK EXTVBACT
CCS A
TCF MKABORT # YES -- ABORT
CAF BIT2 # NO -- DISALLOW SOME EXTENDED VERB ACTION
ADS EXTVBACT # BIT2 RESET IN ENDMARK
MKVAC CCS VAC1USE # LOOK FOR A VAC AREAD -- DO ABORT IF
TCF MKVACFND # NONE AVAILABLE
CCS VAC2USE
TCF MKVACFND
CCS VAC3USE
TCF MKVACFND
CCS VAC4USE
TCF MKVACFND
CCS VAC5USE
TCF MKVACFND
DXCH BUF2
TC BAILOUT1 # ALL VAC AREAS OCCUPIED -- ABORT.
OCT 01207
MKVACFND AD TWO
TS MARKSTAT # STORE VAC ADR IN LOW 9 OF MARKSTAT
CAF ZERO
INDEX MARKSTAT
TS 0 -1 # ZERO IN VACUSE REG TO SHOW VAC OCCUPIED
CAF PRIO15
TC FINDVAC # SET UP JOB FOR GETDAT
EBANK= XYMARK
2CADR GETDAT
RELINT
TCF SWRETURN
# Page 245
MKABORT DXCH BUF2
TC BAILOUT1 # CONFLICT WITH EXTENDED VERB
OCT 01211
MKRELEAS CAF ZERO
XCH MARKSTAT # SET MARKSTAT TO ZERO
MASK LOW9 # PICK UP VAC AREA AOR
CCS A
INDEX A
TS 0 # SHOW MKVAC AREA AVAILABLE
CAF ONE
TC IBNKCALL
CADR GOODEND # GO WAKE UP CALLING JOB
# Page 246
KILLAOT CAF ZERO
TS EXTVBACT # TERMINATE AOTMARK -- ALLOW EXT VERB
TC GOTOP00H
GETDAT CS MARKSTAT # SET BIT12 TO DISCOURAGE MARKRUPT
MASK BIT12 # BIT12 RESET AT GETMARK
ADS MARKSTAT
CAF V01N71 # DISPLAY DETENT AND STAR CODE
TC BANKCALL
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF DODAT # V33 -- PROCEED -- USE THIS STAR FOR MARKS
ENTERDAT TCF GETDAT # ENTER -- REDISPLAY STAR CODE
DODAT CAF HIGH9 # PICK DETENT CODE FROM BITS7-9 OF AOTCODE
MASK AOTCODE # AND SEE IF CODE 1 TO 6
EXTEND
MP BIT9
TS XYMARK # STORE DETENT
EXTEND
BZMF GETDAT # COAS CALIBRATION CODE - NO GOOD HERE
AD NEG7 # SEE IF DETENT 7 FOR COAS
EXTEND
BZF CODE7
TCF CODE1TO6
CODE7 CAF V06N87* # CODE 7, COAS SIGHTING, GET OPTIC AXIS
TC BANKCALL # AZ AND EL OF SIGHTING DEVICE FROM ASTRO
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF +2 # PROCEED
TCF CODE7 # ON ENTER, RECYCLE
EXTEND
DCA AZ # PICK UP AZ AND EL IN SP 25 COMP
INDEX FIXLOC
DXCH 8D # STORE IN 8D AND 9D OF LOCAL VAC
CAF ZERO # BACKUP SYSTEM TO BE USED
TCF COASCODE # ZERO APPARENT ROTATION
CODE1TO6 INDEX XYMARK # INDEX AOT POSITION BY DET CODE
CA AOTEL -1
INDEX FIXLOC
TS 9D # STORE ELEVATION IN VAC+9D
INDEX XYMARK # INDEX DET CODE 1,2 OR 3
# Page 247
CA AOTAZ -1
INDEX FIXLOC
TS 8D # STORE AZIMUTH IN VAC +8D
CA AOTAZ +1 # COMPENSATION FOR APPARENT ROTATION OF
EXTEND # AOT FIELD OF VIEW IN LEFT AND RIGHT
INDEX FIXLOC # DETENTS IS STORED IN VAC +10D IN SP
MSU 8D # PRECISION ONE'S COMPLEMENT
COASCODE INDEX FIXLOC
TS 10D # ROT ANGLE
TC INTPRET # COMPUTE X AND Y PLANE VECTORS
# Page 248
# THE OPTAXIS SOBROUTINE COMPUTES THE X AND Y MARK PLANE VECS AND
# ROTATES THEM THRU THE APPARENT FIELD OF VIEW ROTATION UNIQUE TO AOT
# OPTAXIS USES OANB TO COMPUTE THE OPTIC AXIS
#
# INPUT -- AZIMUTH ANGLE IN SINGLE PREC AT CDU SCALE IN 8D OF JOB VAC
# ELEVATION ANGLE IN SINGLE PREC AT CDU SCALE IN 9D OF JOB VAC
# ROTATION ANGLE IN SINGLE PREC IS COMP SCALED BY PI IN 10D OF VAC
#
# OUTPUT -- OPTIC AXIS VEC IN NG COORDS IN SCAXIS
# X-MARK PLANE 1/4VEC IN NB COORDS AT 18D OF JOB VAC
# Y-MARK PLANE 1/4VEC IN NB COORDS AT 12D OF JOB VAC
OPTAXIS CALL # GO COMPUTE OA AN X AND Y PLANE VECS
OANB
SLOAD SR1 # LOAD APP ROTATION IN ONES COMP
10D # RESCALE BY 2PI
PUSH SIN # 1/2SIN(ROT) 0-1
PDDL COS
PUSH VXSC # 1/2COS(ROT) 2-3
18D
PDDL VXSC # 1/4COS(ROT)UYP 4-9
0
24D # 1/4SIN(ROT)UXP
BVSU STADR # UP 4-9
STODL 12D # YPNB=1/4(COS(ROT)UYP-SIN(ROT)UXP)
VXSC PDDL # UP 2-3 UP 0-1 FOR EXCHANGE
24D # 1/4COS(ROT)UXP PUSH 0-5
VXSC VAD # 1/4SIN(ROT)UYP
18D # UP 0-5
STADR
STOVL 18D # XPNB=1/4(COS(ROT)UXP+SIN(ROT)UYP)
LO6ZEROS # INITIALIZE AVE STAR VEC ACCUMULATOR
STORE STARAD +6
EXIT
TCF GETMKS
# Page 249
# THE OANB SUBROUTINE COMPUTES THE OPTIC AXIS OF THE SIGHTING INSTRUMENT
# FROM AZIMUTH AND ELEVATION INPUT FROM THE ASTRONAUT.
#
# INPUT -- AZIMUTH ANGLE IN SINGLE PREC 2'S COMP IN 8D OF JOB VAC
# ELEVATION ANGLE IN SINGLE PREC 2'S COMP IN 9D OF VAC
#
# OUTPUT -- OPTIC AXIS IN NB COORDS. IN SCAXIS
# X-PLANE 1/2VEC IN NB COORDS AT 24D OF VAC
# Y-PLANE 1/2VEC IN NB COORDS AT 18D OF VAC
BANK 05
SETLOC AOTMARK2
BANK
COUNT* $$/MARK
OANB SETPD STQ
0
GCTR # STORE RETURN
SLOAD RTB
9D # PICK UP SP ELV
CDULOGIC
PUSH COS
PDDL SIN # 1/2COS(ELV) PD 0-1
STADR
STODL SCAXIS # OAX=1/2SIN(ELV)
8D
RTB
CDULOGIC
PUSH COS
STORE 20D # STORE UYP(Y) 20-21
PDDL SIN # 1/2COS(AZ) PD 2-3
PUSH DCOMP # PUSH 1/2S IN (AZ) 4-5
STODL 22D # STORE UYP(Z) 22-23
LO6ZEROS
STODL 18D # STORE UYP(X) 18-19
DMP SL1
0
STODL SCAXIS +2 # OAY=1/2COS(ELV)SIN(AZ)
DMP SL1 # UP 2-3
STADR # UP 0-1
STOVL SCAXIS +4 # OAZ=1/2COS(ELV)COS(AZ)
18D # LOAD UYP VEC
VXV UNIT
SCAXIS # UXP VEC=UYP X OA
STORE 24D # STORE UXP
GOTO
GCTR
# Page 250
# SURFSTAR COMPUTES A STAR VECTOR IN SM COORDINAGES FOR LUNAR
# SURFACE ALIGNMENT AND EXITS TO AVEIT TO AVERAGE STAR VECTORS.
#
# GIVEN X-MARK PLANE 1/4 VEC IN NB AT 18D OF LOCAL VAC
# Y-MARK PLANE 1/4 VEC IN NB AT 12D OF LOCAL VAC
# CURSOR SP 2COMP AT POSITION 1 OF INDEXED MARKVAC
# SPIRAL SP 2COMP AT POSITION 3 OF INDEXED MARKVAC
# CDUY,Z,X AT POSITIONS 0,2,4 OF INDEXED MARKVAC
BANK 15
SETLOC P50S
BANK
COUNT* $$/R59
SURFSTAR VLOAD*
0,1 # PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STORE CDUSPOT
SLOAD* RTB
1,1 # PICK UP YROT
CDULOGIC
STORE 24D # STORE CURSOR FOR SPIRAL COMP (REVS)
BZE
YZCHK # IF YROT ZERO -- SEE IF SROT ZERO
JUSTZY PUSH COS
PDDL SIN # 1/2COS(YROT) 0-1
VXSC PDDL # UP 0-1 1/8SIN(YROT)UXP 0-5
18D
VXSC VSU # UP 0-5
12D # UYP
UNIT VXV
SCAXIS
UNIT PUSH
SLOAD* RTB
3,1 # PICK UP SPIRAL
CDULOGIC
STORE 26D # STORE SPIRAL (REVS)
DSU DAD
24D
ABOUTONE
DMP
DP1/12
STORE 26D # SEP=(360 + SPIRAL -CURSOR)/12
SIN VXSC # UP 0-5
VSL1 PDDL # 1/2SIN(SEP)(UPP X OA) 0-5
26D
COS VXSC
SCAXIS
VSL1 VAD # UP 0-5
JUSTOA UNIT CALL
TRG*NBSM
STCALL 24D # STAR VEC IN SM
AVEIT # GO AVERAGE
# Page 251
ABOUTONE 2DEC .99999999
DP1/12 EQUALS DEG30 # .08333333
BANK 7
SETLOC AOTMARK1
BANK
COUNT* $$/MARK
YZCHK SLOAD* BZE # YROT ZERO AND IF SROT ZERO FORCE STAR
3,1 # ALONG OPTIC AXIS
YSZERO
DLOAD GOTO
24D
JUSTZY # SROT NOT ZERO -- CONTINUE NORMALLY
YSZERO VLOAD GOTO
SCAXIS
JUSTOA
# Page 252
# THE GETMKS ROUTINE INITIALIZES THE SIGHTING MARK PROCEDURE
GETMKS CAF ZERO # INITIALIZE MARK ID REGISTER AND MARK CNT
TS XYMARK
TS MARKCNTR
CAF LOW9 # ZERO BITS10 TO 15 RETAINING MKVAC ADR
MASK MARKSTAT
TS MARKSTAT
CAF MKVB54* # DISPLAY VB54 INITIALLY
PASTIT TC BANKCALL
CADR GOMARK4
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF MARKCHEX # VB33 -- PROCEED, GOT MARKS, COMPUTE LOS
TCF GETDAT # ENTER -- RECYCLE TO V01N71
MARKCHEX CS MARKSTAT # SET BIT12 TO DISCOURAGE MARKRUPT
MASK BIT12
ADS MARKSTAT
MASK LOW9
TS XYMARK # JAM MARK VAC ADR IN XYMARK FOR AVESTAR
CAF ZERO
TS MKDEX # SET MKDEX ZERO FOR LOS VEC CNTR
CA MARKSTAT
MASK PRIO3 # SEE IF LAST MK PART COMPLETE
TS L
CAF PRIO3 # BITS10 AND 11
EXTEND
RXOR LCHAN
EXTEND
BZF AVESTAR # LAST PAIR COMPLETE -- TO COMPUTE LOS
CNTCHK CCS MARKCNTR # NO PAIR SHOWING -- SEE IF PAIR IN HOLD
TCF +2 # PAIR BURIED -- DECREMENT COUNTER
TCF MKALARM # NO PAIR -- ALARM
TS MARKCNTR # STORE DECREMENTED COUNTER
AVESTAR CAF BIT12 # INITIALIZE MKDEX FOR STAR LOS COUNTER
ADS MKDEX # MKDEX WAS INITIALIZED ZERO IN MARKCHEX
CS MARKCNTR
EXTEND
MP SIX # GET C(L) = -6 MARKCNTR
CS XYMARK
AD L # ADD -- MARK VAC ADR SET IN MARKCHEX
INDEX FIXLOC
TS X1 # JAM -- CDU ADR OF X-MARK IN X1
CA FIXLOC # SET PD POINTER TO ZERO
TS PUSHLOC
TC INTPRET
# Page 253
BON VLOAD*
SURFFLAG # IF ON SURFACE COMPUTE VEC AT SURFSTAR
SURFSTAR
1,1 # PUT Y-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STOVL CDUSPOT
12D # LOAD Y-PLANE VECTOR IN NG
CALL
TRG*NBSM # CONVERT IT TO STABLE MEMBER
PUSH VLOAD*
0,1 # PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM
STOVL CDUSPOT
18D # LOAD X-PLANE VECTOR IN NB
CALL
TRG*NBSM # CONVERT IT TO STABLE-MEMBER
VXV UNIT # UNIT(XPSM * YPSM)
STADR
STORE 24D
AVEIT SLOAD PDVL # N(NUMBER OF VECS) IN 0-1
MKDEX
24D # LOAD CURRENT VECTOR
VSR3 V/SC
0
STODL 24D # VEC/N
0
DSU DDV
DP1/8 # (N-1)/N
VXSC VAD
STARAD +6 # ADD VEC TO PREVIOUSLY AVERAGED VECTOR
24D # (N-1)/N AVESTVEC + VEC/N
STORE STARAD +6 # AVERAGE STAR VECTOR
STORE STARSAV2
EXIT
CCS MARKCNTR # SEE IF ANOTHER MARK PAIR IN MKVAC
TCF AVESTAR -1 # THERE IS -- GO GET IT -- DECREMENT COUNTER
ENDMARKS CAF FIVE # NO MORE MARKS -- TERMINATE AOTMARK
INHINT
TC WAITLIST
EBANK= XYMARK
2CADR MKRELEAS
TC ENDMARK
MKALARM TC ALARM # NOT A PAIR TO PROCESS -- DO GETMKS
OCT 111
TCF GETMKS
V01N71 VN 171
V06N87* VN 687
# Page 254
# MARKRUPT IS ENTERED FROM INTERRUPT LEAD-INS AND PROCESSES CHANNEL 16
# CAUSED BY X,Y MARK OR MARK REJECT OR BY THE RATE OF DESCENT SWITCH
MARKRUPT TS BANKRUPT
CA CDUY # STORE CDUS AND TIME NOW -- THEN SEE IF
TS ITEMP3 # WE NEED THEM
CA CDUZ
TS ITEMP4
CA CDUX
TS ITEMP5
EXTEND
DCA TIME2
DXCH ITEMP1
XCH Q
TS QRUPT
CAF OCT34 # SEE IF X OR Y MARK OR MKREJECT
EXTEND
RAND NAVKEYIN
CCS A
TCF +2 # ITS A LIVE ONE -- SEE IF ITS WANTED
TCF SOMEKEY # ITS SOME OTHER KEY
CAF BIT12 # ARE WE ASKING FOR A MARK
MASK MARKSTAT
CCS A
TC RESUME # DON'T WANT MARK OR MKREJECT -- DO NOTHING
CCS MARKSTAT # ARE MARKS BEING ACCEPTED
TCF FINDKEY # THEY ARE -- WHICH ONE IS IT
TC ALARM # MARKS NOT BEING ACCEPTED -- DO ALARM
OCT 112
TC RESUME
FINDKEY CAF BIT5 # SEE IF MARK REJECT.
EXTEND
RAND NAVKEYIN
CCS A
TCF MKREJ # IT'S A MARK REJECT
CAF BIT4 # SEE IF Y MARK
EXTEND
RAND NAVKEYIN
CCS A
TCF YMKRUPT # IT'S A Y MARK
CAF BIT3 # SEE IF X MARK
EXTEND
RAND NAVKEYIN
# Page 255
CCS A
TCF XMKRUPT # IT'S A X MARK
SOMEKEY CAF OCT140 # NOT MARK OR MKREJECT -- SEE IF DESCENT BITS
EXTEND
RAND NAVKEYIN
EXTEND
BZF +3 # IF NO BITS
TC POSTJUMP # IF DESCENT BITS
CADR DESCBITS
TC ALARM # NO INBITS IN CHANNEL 16.
OCT 113
TC RESUME
XMKRUPT CAF ZERO
TS RUPTREG1 # SET X MARK STORE INDEX TO ZERO
CAF BIT10
TCF +4
YMKRUPT CAF ONE
TS RUPTREG1 # SET Y MARK STORE INDEX TO ONE
CAF BIT11
TS XYMARK # SET MARK IDENTIFICATION
TC MARKTYPE # SEE IF SURFACE MARK
TCF SURFSTOR # SURFACE MARK -- JUST STORE CDUS
CAF BIT14 # GOT A MARK -- SEE IF MARK PARI MADE
MASK MARKSTAT
EXTEND
BZF VERIFYMK # NOT A PAIR, NORMAL PROCEDURE
CS MARKCNTR # GO A PAIR, SEE IF ANOTHER CAN BE MADE
AD FOUR # IF SO, INCREMENT POINTER, CLEAR BITS 10,11
EXTEND
BZMF 5MKALARM # HAVE FIVE MARK PAIRS -- DON'T ALLOW MARK
INCR MARKCNTR # OK FOR ANOTHER PAIR, INCR POINTER
CS PRIO23 # CLEAR BITS 10,11,14 FOR NEXT PAIR
MASK MARKSTAT
TS MARKSTAT
VERIFYMK CA XYMARK
MASK MARKSTAT
CCS A
TCF +2 # THIS MARK NOT DESIRED
TCF VACSTOR # MARK DESIRED -- STORE CDUS
TC ALARM
OCT 114
TC RESUME # RESUME -- DISPLAY UNCHANGED -- WAIT FOR ACTION
# Page 256
5MKALARM TC ALARM # ATTEMPTING TO MAKE MORE THAN 5 MK PAIRS
OCT 107
TC MARKTYPE # SEE IF SURFACE MARK
TCF DSPV6N79 # IT IS
TC RESUME # DON'T CHANGE DISPLAY -- DO NOTHING
# Page 257
MKREJ TC MARKTYPE # SEE IF SURFACE
TCF SURFREJ # SURFACE -- JUST CHECK MARK COUNTER
CAF PRIO3 # INFLIGHT -- SEE IF MARKS MADE
MASK MARKSTAT
CCS A
TCF REJECT # MARKS MADE -- REJECT ONE
REJALM TC ALARM # NO MARK TO REJECT -- BAD PROCEDURE -- ALARM
OCT 115
TC RESUME # DESIRED ACTION DISPLAYED
REJECT CS PRIO30 # ZERO BIT14, SHOW REJ., SEE IF MARK SINCE
MASK MARKSTAT # LAST REJECT
AD BIT13
XCH MARKSTAT
MASK BIT13
CCS A
TCF REJECT2 # ANOTHER REJECT SET BIT 10+11 TO ZERO
CS XYMARK # MARK MADE SINCE REJECT -- REJECT MARK IN 1D
RENEWMK MASK MARKSTAT
TS MARKSTAT
TCF REMARK # GO REQUEST NEW MARK ACTION
REJECT2 CS PRIO3 # ON SECOND REJECT -- DISPLAY VB53 AGAIN
TCF RENEWMK
SURFREJ CCS MARKCNTR # IF MARK DECREMENT COUNTER
TCF +2
TCF REJALM # NO MARKS TO REJECT -- ALARM
TS MARKCNTR
TC RESUME
# Page 258
# MARKTYPE TESTS TO SEE IF LEM ON LUNAR SURFACE. IF IT IS RETURN TO LOC+1
MARKTYPE CS FLAGWRD8 # SURFFLAG ******** TEMPORARY ******
MASK BIT8
CCS A
INCR Q # IF SURFACE MARK RETURN TO LOC +1
TC Q # IF INFLIGHT MARK RETURN TO LOC +2
SURFSTOR CAF ZERO # FOR SURFACE MARK ZERO MARK KIND INDEX
TS RUPTREG1
CS MARKSTAT # SET BITS10,11 TO SHOW SURFACE MARK
MASK PRIO3 # FOR MARKCHEX
ADS MARKSTAT
VACSTOR CAF LOW9
MASK MARKSTAT # STORE MARK VAC ADR IN RUPTREG2
TS RUPTREG2
EXTEND
DCA ITEMP1 # PICK UP MARKTIME
DXCH TSIGHT # STORE LAST MARK TIME
CA MARKCNTR # 6 X MARKCNTR FOR STORE INDEX
EXTEND
MP SIX
XCH L # GET INDEX FROM LOW ORDER PART
AD RUPTREG2 # SET CDU STORE INDEX TO MARKVAC
ADS RUPTREG1 # INCREMENT VAC PICKUP BY MARK FOR FLIGHT
TS MKDEX # STORE HERE IN CASE OF SURFACE MARK
CA ITEMP3
INDEX RUPTREG1
TS 0 # STORE CDUY
CA ITEMP4
INDEX RUPTREG1
TS 2 # STORE CDUZ
CA ITEMP5
INDEX RUPTREG1
TS 4 # STORE CDUX
TC MARKTYPE # IF SURFACE MARK -- JUST DO SURFJOB
TCF SURFJOB
CAF BIT13 # CLEAR BIT13 TO SHOW MARK MADE
AD XYMARK # SET MARK ID IN MARKSTAT
COM
MASK MARKSTAT
AD XYMARK
TS MARKSTAT
MASK PRIO3 # SEE IF X, Y MARK MADE
TS L
# Page 259
CA PRIO3
EXTEND
RXOR LCHAN
CCS A
TCF REMARK # NOT PAIR YET, DISPLAY MARK ACTION
CS MARKSTAT # MARK PAIR COMPLETE -- SET BIT14
MASK BIT14
ADS MARKSTAT
TCF REMARK # GO DISPLAY V54
# Page 260
REMARK CAF PRIO3 # BITS 10 AND 11
MASK MARKSTAT
EXTEND
MP BIT6 # SHIFT MARK IDS TO BE 0 TO 3 FOR INDEX
TS MKDEX # STORE VERB INDEX
SURFJOB CAF PRIO15
TC NOVAC # ENTER JOB TO CHANGE DISPLAY TO
EBANK= XYMARK # REQUEST NEXT ACTION
2CADR CHANGEVB
TC RESUME
CHANGEVB TC MARKTYPE
TCF DSPV6N79 # SURFACE -- DISPLAY V 06 N 79
INDEX MKDEX # INFLIGHT -- PICK UP MARK VB INDEX
CAF MKVB54
TC PASTIT # PASTE UP NEXT MK VERB DISPLAY
# THE FOUR MKVBS ARE INDEXED -- THEIR ORDER CANNOT BE CHANGED
MKVB54 VN 5471 # MAKE X OR Y MARK
MKVB53 VN 5371 # MAKE Y MARK
MKVB52 VN 5271 # MAKE X MARK
MKVB54* VN 5471 # MAKE X OR Y MARK
DP1/8 2DEC .125
OCT34 OCT 34
V06N71 VN 671
V06N79* VN 679
# Page 261
# ROUTINE TO REQUEST CURSOR AND SPIRAL MEASUREMENTS
COUNT* $$/R59
DSPV6N79 CAF V06N79* # CURSOR -- SPIRAL DISPLAY
TC BANKCALL
CADR GOMARKF
TCF KILLAOT # V34 -- DOES GOTOP00H
TCF SURFEND # V33 -- PROCEED, END MARKING
CAF BIT6 # IF V32(OCT40) IN MPAC DO RECYCLE
MASK MPAC # OTHERWISE IT IS LOAD VB ENTER SO
CCS A # RE-DISPLAY V06N79
TCF SURFAGAN # VB32 -- RECYCLE
TCF DSPV6N79 # ENTER
SURFEND CS BIT14 # SET BIT14 TO SHOW MARK END
MASK MARKSTAT
AD BIT14
TS MARKSTAT
SURFAGAN CA CURSOR
INDEX MKDEX # HOLDS VAC AREA POINTER FOR SURF MARKING
TS 1 # STORE CURSOR SP 2COMP
CA SPIRAL
INDEX MKDEX
TS 3 # STORE SPIRAL
CS MARKSTAT # IF BIT 14 SET -- END MARKING
MASK BIT14
EXTEND
BZF MARKCHEX
CA MARKCNTR # THIS IS RECYCLE -- SEE IF 5 MARKS ALREADY
AD ONE
COM
AD FIVE
EXTEND
BZMF 5MKALARM # CAN'T RECYCLE -- TOO MANY MARKS -- ALARM
INCR MARKCNTR # OF FOR RECYCLE -- INCR COUNTER
TCF GETMKS +3 # GO DISPLAY MARK VB