A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk4_5 / rkb / paroff / aavg1.pa
1 /LAB8E ADVANCED AVERAGER MS-SIGNAL AVERAGER SECTION 1,
2 /PARAMETER SETUP AND TRIGGER.
3 /
4 /DEC-8E-AAA1A-A-LA
5 /
6 /COPYRIGHT 1972
7 /DIGITAL EQUIPMENT CORPORATION
8 /MAYNARD, MASSACHUSETTS 01754
9 /
10 \f/AD1.5
11 /THE ADVANCED AVERAGER MS FOR OS-8 WILL AVERAGE DATA
12 /TAKEN FROM THE A/D , DISPLAY IT, AND WRITE IT TO
13 /MASS STORAGE IF DESIRED.
14 /SECTION I OF THE LAB8/E ADVANCED AVERAGER .
15 /FOR DSK/DTA SYSTEMS.
16 /ADVANCED AVG. TO RUN UNDER PS8.
17
18 *7557
19 OVRLAY, IOF
20 CLA CLL CMA
21 CLZE /DISABLE CLOCK
22 CLA
23 ADCL /AD
24 DILC /DISPLAY
25 DBDI /I/O
26 CDF 0 /CHAIN IN SEC.2
27 DCA I KC7746 /0 PS8 JOB STATUS WORD.
28 CIF 10
29 JMS I CHAIN
30 6
31 XX0V1, 0
32 CHAIN, 7700
33 KC7746, 7746
34
35 MONITR=7600
36 CLZE=6130
37 ADCL=6530
38 DILC=6050
39 DBEI=6501
40
41
42 \f
43 /MEMORY BOUNDS FOR FIELD 0
44 LOCORE=230 /LISTS, BUFERS, DATA BLOCKS START HERE
45 HICORE=6300 /PROTECTED AREA BEGINS HERE
46 NXLOAD=7000 /NEXT SECTION LOADING BEGINS HERE
47
48 /AVERAGING PARAMETERS: LOCATIONS 20-64
49 MEMTOT=20 /FIELDS IN THIS MACHINE
50 FIELD0=21 /ROOM FOR DATA IN FIELD 0
51
52 /DIGITAL I/O OPTION, CONTINGENCY AND # OF SYNC INPUTS
53 XROPT=22 /0 IF I/O NOT IMPLEMENTED, 1 IF IT IS
54
55 /LIST ADDRESSES
56 ADJLIS=23 /START OF JOB LIST-1
57 ADCHNL=24 /START OF CHANNNEL DISPLAY LIST-1
58
59 /JOINT SWEEP PARAMETERS - 29 LOCATIONS
60 SMASK=25 /STIMULUS (SYNC) CHANNEL MASK
61 NSWEP=26 /-# OF SWEEPS IN AVERAGE
62 KSYTIM=27 /-(# OF ASI FROM STIM TO SYNC POINT -1)
63 KITIM=31 /-(# OF ASI FROM S0 TO S0)
64 KCTIM=33 /-(# OF ASI FROM STIM TO CONTINGENCY READING)
65 KWTIM=35 /(-# OF ASI FROM LAST STIM TO A/B OPENING)
66 ASI=37 /# OF USEC PER ASI
67 S0=41 /TEMPORARY TIMER
68 K0017=42
69 KMODE=43 /CONTAINS CLOCK RATE AND MODE
70 /SWEEP A LIST PARAMETERS
71 SAMA=44 /-# OF POINTS (ASI) IN SWEEP A (EACH CHANNEL)
72 NCHA=45 /# OF CHAN IN SWEEP A
73 ADPNTA=46 /LOGICAL 1 OF ADC BUFFER A-1 (GEN BY ON-LINE)
74 ADBUFA=47 /LOCATION -1 FOR START OF ADC BUFFER -A
75 LNBUFA=50 /PHYSICAL LENGTH OF BUFFER -A
76
77 EJECT
78
79 /SWEEP B LIST PARAMETERS
80 SAMB=51 /-# 0F POINTS (BSI) IN SWEEP B
81 NCHB=52 /# 0F CHAN IN SWEEP B
82 ADPNTB=53 /LOGICAL 1 OF ADC BUFFER-B - 1
83 ADBUFB=54 /LOCATION-1 FOR START OF BUFFER
84 LNBUFB=55 /PHYSICAL LENGTH OF BUFFER-B
85
86 /SWEEP A - ON-LINE PARAMETERS
87 ADMPXA=56 /ADDRESS OF A SWEEP MPLX LIST -1
88 ADEL=57 /ADJUSTMENT AT SYNC POINT TO FIND LOGICAL 1 OF BUFFER-A
89 KBLA=60 /-# OF ASI FROM SYNC POINT TO LOGICAL END OF A-1
90
91 /SWEEP B - ON LINE PARAMTERS
92 KBTOA=61 /-# OF A'S TO B, 0 FOR NO B
93 ADMPXB=62 /ADDRESS OF B MPLX LIST - 0
94 BDEL=63 /ADJUSTMENT AT SYNC POINT TO FIND LOGICAL 1 OF BUFFER-B
95 KBLB=64 /-# OF BSI FROM SYNC POINT TO LOGICAL END OF B - 1
96
97 /INTERRUPT REFERENCES
98 INTERX=65 /LINK TO INTERRUPT SERVICE
99 ASAVE=66 /AC AT INTERRUPT
100 LSAVE=67 /LINK AT INTERRUPT
101
102 /LINKAGES TO SUBROUTINES IN CORE FOR THIS SECTION
103 /MISC. SUBROUTINES
104 FRAME=JMS I 76 /Q & A WITH SCOPE
105 OCTARG=JMS I 77 /PICK UP OCTAL TYPEIN
106 DFIX=JMS I 100 /DOUBLE PRECISION FIX
107
108 /NUMERICAL I/O [SU56A]
109 DECARG=JMS I 101 /PICK UP DECIMAL TYPEIN
110 FLTARG=JMS I 102 /PICK UP FLOATING TYPEIN
111 FLTOUT=JMS I 103 /FLOATING AC TO TYPE BUFFER (FLOATING FORMAT)
112 OCTOUT=JMS I 104 /AC TO TYPE BUFFER (OCTAL FORMAT)
113 \f/FLOATING POINT ARITHMETIC [SU64A]
114 FADD=JMS I 105 /FLOATING ADD
115 FDIV=JMS I 106 /FLOATING DIVIDE
116 FLOAT=JMS I 107 /FLOAT AC TO FAC
117 FMUL=JMS I 110 /FLOATING MULTIPLY
118 FIX=JMS I 111 /FIX FAC TO AC
119
120 /BASIC SUBROUTINES [SU63A]
121 BRAN=JMS I 132 /BRANCH ACCORDING TO AC MATCH WITH LIST
122 SHFT=JMS I 133 /DOUBLE PRECISION ARITHMETIC SHIFT
123 DADD=JMS I 134 /DOUBLE PRECISION ADD
124
125 /HALFWORD SUBROUTINES [SU60A]
126 SETH=JMS I 135 /SET HALFWORD POINTER
127 TYPE=JMS I 136 /TYPE 6BIT IN AC
128 LDH=JMS I 137 /LOAD HALFWORD INTO AC
129 SRCH=JMS I 140 /SEARCH FOR HALFWORD THAT MATCHES AC6-11
130 ALPHA=JMS I 141 /GET FIRST CHARACTER OF A TYPE-IN
131
132 /FLOATING POINT HANDLERS [SU64A]
133 SAVE=JMS I 142 /SAVE FAC
134 LOAD=JMS I 143 /LOAD FAC
135 DCOM=JMS I 144 /DOUBLE PRECISION NEGATE
136 NORM=JMS I 145 /NORMALIZE FAC
137
138 /PAGE ZERO CONSTANTS
139 K0004=112
140 K0003=113
141 K0002=114
142 KM0001=115
143
144 K0007=116
145 KM0027=117
146 K0377=120
147 KM0004=121
148
149 /TTY-LIST
150 TTYLST=122
151 PROMRK=123
152 TXMRK=125
153 KCR=126
154 KM0043=127
155
156 /OCSORT
157 OCSORT=130
158 K0040=130
159 MTXMRK=131
160 \f/TEMPORARY STORAGE REGISTERS 146-177
161 TEMP01=146
162 TEMP02=147
163 TEMP03=150
164 TEMP04=151
165 TEMP05=152
166 TEMP06=153
167 TEMP07=154
168 TEMP10=155
169
170 TEMP11=156
171 TEMP12=157
172 TEMP13=160
173 TEMP14=161
174 TEMP15=162
175 TEMP16=163
176 TEMP17=164
177 TEMP20=165
178 TEMP21=166
179
180 /TEMPORARY STORAGE AND MULTIPLE ACCUMULATORS
181 ARITH0=167
182 TEMP22=167
183
184 ARITH1=170
185 TEMP23=170
186
187 ARITH2=171
188 TEMP24=171
189
190 ARITH3=172
191 TEMP25=172
192
193 ARITH4=173
194 TEMP26=173
195
196
197 ARITH5=174
198 TEMP27=174
199
200 /TEMPORARY STORAGE AND TTY-KBD BUFFERS
201 KBDBUF=175
202 TEMP30=175
203
204 TTYBUF=176
205 TEMP31=176
206
207 TTYFLG=177
208 TEMP32=177
209 /FLOATING VARIABLES
210 FLOT01=5772
211 FLOT02=5775
212 FLOT03=5347
213 FLOT04=5352
214 FLOT05=5355
215 FLOT06=5360
216 FLOT07=5363
217 FLOT10=5366
218 \f/IOT REFERENCES FOR THE LAB/8E
219 /
220 /
221 /AD8-EA 10 BIT A/D CONVERTER
222 /
223 ADCL=6530 /CLEAR ALL
224 ADLM=6531 /LOAD MPLXR
225 ADST=6532 /START CONVERSION
226 ADRB=6533 /READ AD BUFFER
227 ADSK=6534 /SKIP ON AD DONE
228 ADSE=6535 /SKIP ON TIMING ERROR
229 ADLE=6536 /LOAD ENABLE REGISTER
230 ADRS=6537 /READ STATUS REGISTER
231 /
232 /VC8-E POINT PLOT DISPLAY
233 /
234 DILC=6050 /CLEAR ALL
235 DICD=6051 /CLEAR DONE FLAG
236 DISD=6052 /SKIP ON DONE FLAG
237 DILX=6053 /CLEAR DONE FLAG LOAD X
238 DILY=6054 /CLEAR DONE FLAG LOAD Y
239 DIXY=6055 /CLEAR DONE, INTENSIFY, SET DONE
240 DILE=6056 /LOAD ENABLE CLEAR AC
241 DIRE=6057 /ENABLE TO AC
242 /
243 /DK8-EP REAL TIME CLOCK
244 /
245 CLZE=6130 /ZERO TO ENABLE
246 CLSK=6131 /SKP ON CLOCK FG
247 CLOE=6132 /ONES TO ENABLE
248 CLAB=6133 /AC TO CLK BUF AND COUNTER REGISTER
249 CLEN=6134 /ENABLE TO AC
250 CLSA=6135 /STATUS TO AC AND AC ONE'S CLEAR STATUS REG.
251 CLBA=6136 /CLK BUF TO AC
252 CLCA=6137 /CLK CNTR TO AC AND TO AC
253 /
254 /DB8-EA 12 CHANNEL DIGITAL I/O
255 /
256 DBDI=6500 /DISABLE INTERRUPT
257 DBEI=6501 /ENABLE INTERRUPT
258 DBSK=6502 /SKIP ON INPUT
259 DBCI=6503 /CLEAR INPUT BITS WITH SET AC BIT
260 DBRI=6504 /READ INPUT
261 DBCO=6505 /CLEAR OUTPUT BITS WITH AC BITS
262 DBSO=6506 /SET OUTPUT BITS WITH AC BITS
263 DBRO=6507 /READ OUTPUT REGISTER
264
265 /COMBINED OPERATES
266 MTH=CLA CMA CLL RTL; MTW=CLA CMA CLL RAL
267 TWO=CLA CLL CML RTL; TWOK=CLA CLL CML RTR
268
269 /EXTENDED MEMORY
270 CDF=6201; RDF=6214; RMF=6244
271
272 \f/PAGE ZERO FOR ADVANCED AVERAGER [U10ZC]
273 *1
274 DCA ASAVE /INTERRUPT SERVICE DISPATCH
275 RAR
276 DCA LSAVE
277 JMP I INTERX
278 PG0OV, 0
279 0
280 0
281 /INSTALLATION PARAMETERS: LOCATIONS 20-64
282 / 0 /FIELDS IN THIS MACHINE: MEMTOT
283 / HICORE-LOCORE-4 /ROOM FOR DATA IN FIELD 0: FIELD0
284 /XR-OPTION, CONTINGENCY AND # OF SYNC INPUTS
285 / 0 /0 IF XR NOT IMPLEMENTED, 1 IF IT IS: XROPT
286 /LIST ADDRESSES
287 / LOCORE-1 /START OF LISTS. BUFFERS, DATA: ADJLIS
288 / 0 /START OF CHANNEL DISPLAY WORDS: ADCHNL
289 /JOINT SWEEP PARAMETERS - 29 LOCATIONS
290 / 0 /STIMULUS (SYNC) CHANNEL MASK: SMASK
291 / 0 /-# OF SWEEPS IN AVERAGE: NSWEP
292 / 0 /-(# OF ASI FROM STIM TO SYNC POINT -1): KSYTIM
293 / 0 /(DBL PRECISION)
294 / 0 /-(# OF ASI FROM S0 TO S0): KITIM
295 / 0 /(DBL)
296 / 0 /-(# OF ASI FROM STIM TO CONTINGENCY READING): KCTIM
297 / 0 /(DBL)
298 / 0 /-(#OF ASI FROM LAST STIM TO A/B OPENING): KWTIM
299 / 0 /(DBL)
300 / 0 /# OF USEC PER ASI: ASI
301 / 0 /(DBL)
302 / 0 /S0
303 EJECT
304
305 *41
306 K1001A, 7001
307 K0017, 17
308 / 0 /K0017
309 / 0 /KMODE
310 /SWEEP A LIST PARAMETERS
311 / 0 /-#OF POINTS (ASI) IN SWEEP A (EACH CHANNEL): SAMA
312 / 0 /# OF CHAN IN SWEEP A: NCHA
313 / 0 /LOGICAL 1 OF ADC BUFFERA - 1 (GEN BY ON-LINE): ADPNTA
314 / 0 /LOCATION -1 FOR START OF A: ADBUFA
315 / 0 /PHYSICAL LENGTH OF BUFFER A: LNBUFA
316 /SWEEP B LIST PARAMETERS
317 / 0 /-# OF POINTS (BSI) IN SWEEP B (EACH CHANNEL): SAMB
318 / 0 /# OF CHAN IN SWEEP B: NCHB
319 / 0 /LOGICAL 1 OF ADC-BUFFER-B-1 (GEN BV ONLINE): ADPNTB
320 / 0 /LOCATION -1 FOR START OF ADC BUFFER B
321 /SWEEP A - ON-LINE PARAMETERS
322 / 0 /ADDRESS OF A SWEEP MPLX LIST -1
323 / 0 /-# OF LOCATIONS FROM SYNC POINT TO LOGICAL 1 OF A
324 / 0 /-# OF ASI FROM SYNC POINT TO LOGICAL END OF A -1
325 /SWEEP B - ON LINE PARAMETERS
326 / 0 /-# OF A'S TO B, 0 FOR NO B
327 / 0 /ADDRESS OF B-SWEEP MPLX LIST -0
328 / 0 /-# OF LOCATIONS FROM SYNC POINT TO LOGICAL END OF B -1
329 / 0 /-# OF ASI FROM SYNC POINT TO LOGICAL 1 OF
330 \f*70
331 /LINKAGES TO SECTION 2 SUBROUTINES
332 7200 /PICKUP NEXT JOB FROM JOB LIST: JGET
333
334 7243 /MOVE THRU DATA BLOCK: BLKCNT
335
336 6474 /SET ADC POINTERS: SETPNT
337
338 6451 /MOVE THRU ADC BUFFERS: IXPNT
339
340 7121 /SET UP DISPLAY: SDIS
341
342 DISPS /DISPLAY A POINT: DISP
343
344 /LINKAGES TO ALPHABETIC HANDLERS
345 FRAMES /Q AND A WITH THE SCOPE: FRAMES
346
347 OCTARS /PICK UP OCTAL TYPE-IN: OCTARG
348
349 /LINKAGE TO DFIX
350 DFIXS /DOUBLE PRECISION FIX: DFIX
351
352 /LINKAGES TO NUMERICAL IO
353 DECARS /PICK UP DECIMAL TYPE-IN: DECARG
354
355 FLTARS /PICK UP FLOATING TYPE-IN: FLTARG
356
357 FLTOUS /OUTPUT FAC TO TYPE BUFFER: FLTOUT
358
359 OCTOUS /OUTPUT AC (OCTAL FORMAT) TO TYPE BUFFER: OCTOUT
360 /FLTSUB USED BY FLTIO - DON'T RELOCATE
361 FADDS /FLOATING ADD: FADD
362
363 FDIVS /FLOATING DIVIDE: FDIV
364
365 FLOATS /FLOAT AC TO FAC: FLOAT
366
367 FMULS /FLOATING MULTIPLY: FMUL
368
369 FIXS /FIX FAC TO AC: FIX
370
371 /PAGE ZERO CONSTANTS - USED BY RESIDENT SUBROUTINES - DON'T RELOCATE
372 0004 /K0004
373 0003 /K0003
374 0002 /K0002
375 -001 /KM0001
376
377 +0007 /K0007
378 -0027 /KM0027
379 +0377 /K0377
380 -0004 /KM0004
381 \f/TTY-LIST
382 0 /@-END OF LIST
383 42 /"-PROGRAM OUTPUT MARKER: PROMRK
384 44 /$-DISPLAY RESET
385 47 /'-KEYBORAD INPUT MARKER: TXMRK
386 45 /CR-CARRIAGE RETURN: KCR
387 -43 /LF-LINE FEED: KM0043
388
389 /OCSORT
390 40 /SPACE: K0040
391 -47 /': MTXMRK
392
393 /LINKAGES TO BASIC SUBROUTINES
394 BRANS /BRANCH ACCORDING TO FOLLOWING LIST: BRAN
395
396 SHFTS /DOUBLE PRECISION ARITHMETIC SHIFT: SHFT
397
398 DADDS /DOUBLE PRECISION ADD: DADD
399
400 /LINKAGES TO HALFWORD SUBROUTINES
401 SETHS /SET HALFWORD POINTER: SETH
402
403
404 TYPES /TYPE 6BIT IN AC: TYPE
405
406 LDHS /GET NEXT HALFWORD TO AC: LDH
407
408 SRCHS /SEARCH FOR HALFWORD WATCH OF AC6-11: SRCH
409
410 ALPHAS /PICK UP ALPHABETIC TYPE-IN: ALPHA
411
412 /LINKAGES TO FLTSUB SUBROUTINES
413 SAVES /SAVE FAC: SAVE
414
415 LOADS /LOAD FAC: LOAD
416
417 DCOMS /DOUBLE PRECISION NEGATE: DCOM
418
419 NORMS /NORMALIZE FAC: NORM
420
421 /TEMPORARY STORAGE REGISTERS FROM 146-177
422 *162
423 0 /SET 0 TO CONVERT WRONG DECIMAL
424 /PLACE IN DISPLAY CON09B
425 \f
426
427 *200
428 /SUBROUTINE FOR SECTION II TO DISPLAY POINT OF DATA: DISP
429
430 DISPS, 0
431 TAD YSX /AC+(YS)=#PLACES TO SHIFT RIGHT
432 CMA IAC
433 SHFT /SCALE
434 TAD ARITH4 /MOVE X TO NEW VALUE
435 DILX /LOAD X
436 CLA /AND CLEAR
437 TAD YZX /BIAS
438 TAD ARITH2
439 DILY /LOAD Y
440 DISD /WAIT
441 JMP .-1
442 DIXY /DISPLAY
443 CLA /CLEAR
444 TAD DELX /LOAD INCREMENT FOR X
445 DCA ARITH1
446 TAD DELXY
447 DCA ARITH2 /ADD TO PRESENT X
448 DADD
449 JMP I DISPS
450 YSX, 0
451 YZX, 0
452 DELX, 0
453 DELXY, 0
454 \f
455 *400
456 /OVERLAY LOOKUP FOR CAINING.
457 /START AT START0 (400) FOR SECTION 1
458 /START AT START1 (403) TO RUN WITH CONTROL TAPES.
459 START0, CDF 0
460 JMS LINKLK /CALL CHAIN LOOKUP.
461 JMP START
462 START1, CDF 0
463 JMS LINKLK
464 CDF CIF 10
465 JMP I (CONTAP /READ IN CONTROL FILE.
466
467 LINKLK, 0
468 CLL CLA
469 TAD (2001
470 DCA 7746 /SET PS-8 JOB STATUS WORD.
471
472 TAD (PG0OV
473 DCA XXT3
474 TAD (NAMES
475 DCA XXT2
476 TAD (-3
477 DCA XXT1
478
479 CDF 0
480 CIF 10
481 JMS I (7700 /LOCK IN USR.
482 10
483
484 CLA IAC /FIND BLOCK ADDRESS OF SECT. 2
485 CDF 0
486 CIF 10
487 JMS I (200
488 2
489 ARGA, NAME1
490 0
491 JMP ERRXX
492
493 CLA CLL
494 TAD ARGA /STORE BLOCK ADD.IN CHAIN COMMAND
495 DCA XX0V1 /TO CALL SEC.2.
496 ARGBS, CLA IAC /FIND BLOCK ADD.OF SEC.3,4,
497 CDF 0 /AND WRITE OVERLAY.
498 CIF 10
499 JMS I (200
500 2
501 ARGB, NAME2
502 0
503 JMP ERRXX
504
505 CLA CLL
506 TAD ARGB
507 DCA I XXT3 /STORE AT LOCS. 5,6,7.
508 TAD I XXT2
509 DCA ARGB
510 ISZ XXT2
511 ISZ XXT3
512 ISZ XXT1
513 JMP ARGBS
514
515 CDF 0
516 CIF 10
517 JMS I (200 /UNLOCK USR.
518 11
519
520 CLA CLL
521 DCA 7746 /RESET JOB STATUS WORD.
522 JMP I LINKLK
523
524 ERRXX, CDF 0
525 CIF 10
526 JMS I (200
527 7
528 1 /USER ERROR 1
529 HLT
530 XXT1, 0
531 XXT2, 0
532 XXT3, 0
533 NAME1, FILENAME AAVG2.SV
534 NAME2, FILENAME AAVG3.SV
535 NAME3, FILENAME AAVG4.SV
536 NAME4, FILENAME AAVG5.SV
537 NAMES, NAME3
538 NAME4
539 EJECT
540 *600
541 /LAB-8 ADVANCED AVERAGER - SECTION 1 - MAIN: U11MC
542 /ONCE ONLY CODE - INTIALIZATION
543 START, CLL CLA
544 DILC
545 ADCL
546 SETH /VERSION. CONFIGURATION MESSAGE
547 DIS99 /"(VAP,#DF-1, CORE LIMITS)"
548 DCA MEMTOT
549
550 /FIND # OF FIELDS AVAILABLE
551 TAD KMK /CDF N = CDF 0
552 DCA MKTEST
553 MKLOOP, TAD MKTEST /CDF N+1
554 TAD KP10
555 DCA MKTEST
556 MKTEST, CDF /CHANGE TO N+1
557 RDF /IF 4K - THIS IS A NOP
558 DCA I TTYLST /PUTS DF# IN DF, 0000; FOR 4K, PUT 0 IN 0000 OF FIELD 0
559 TAD I TTYLST /GETS A 0 IF FIELD DOESN'T EXIST
560 TAD KMK /GETS A CDF N+1 IF FIELD DOES EXIST
561 CMA IAC
562 TAD MKTEST
563 ISZ MEMTOT /# OF FIELDS
564 SNA CLA /IF AC=0, FIELD N+1 EXISTS
565 JMP MKLOOP /LOOK AT NEXT FIELD
566 EJECT
567
568 KMK, CDF 0 /NO MORE FIELDS
569 CLA CMA
570 TAD MEMTOT /# OF FIELDS -1
571 DCA MEMTOT
572 TAD MEMTOT /PUT #DF-1 IN CONFIGURATION MESSAGE
573 OCTOUT
574 TAD KJLIST /START OF JOB LIST -1
575 DCA ADJLIST
576 TAD KFIELD /LENGTH OF AVAILABLE FIELD 0
577 DCA FIELD0
578 IAC /OUTPUT LOW CORE LIMIT
579 TAD ADJLIS
580 OCTOUT
581 TAD ADJLIS /OUTPUT HIGH CORE LIMIT
582 TAD FIELD0 /START OF FIELD0 + LENGTH OF FIELD 0
583 TAD K0004 /+4 FOR END OF LIST MARKERS
584 OCTOUT
585 PRES00, FRAME /"LAB-8 IS READY
586 DIS00 /HIT RETURN TO PROCEED"
587 JMP PRES00
588
589 \f
590 PRES01, FRAME /DIGITAL I/O?'-'[Y OR N]
591 DIS00B /(Y FOR YES, N FOR NO)"
592 JMP PRES00 /LINE FEED - ASK PREVIOUS QUESTION
593 ALPHA /C.R. - GET ANSWER
594 BRAN /BRANCH ON Y
595 YESNO
596 IAC /AC=1 IF Y
597 NOP /AC=0 IF N
598 DCA XROPT /AC=0 OTHERWISE, XROPT=1 IF YES, 0 FOR NO
599 JMP I .+1
600 CON01
601
602 /LOCAL CONSTANTS
603 KP10, 0010
604 KJLIST, LOCORE-1
605 KFIELD, HICORE-LOCORE-4
606 \f/DISPLAYS FOR ONCE ONLY CODE
607 DIS00, 1401 /"LAB8/E IS READY
608 0270 /HIT RETURN TO PROCEED''"
609 5705
610 4011
611 2340
612 2205
613 0104
614 3140
615 4045
616 1011
617 2440
618 2205
619 2425
620 2216
621 4024
622 1740
623 2022
624 1703
625 0505
626 0447
627 4700
628
629 DIS00B, 0411 /"DIGITAL I/O? -
630 0711 /<Y FOR YES, N FOR NO>"
631 2401
632 1440
633 1157
634 1777
635 4047
636 5547
637 4045
638 7431
639 4006
640 1722
641 4031
642 0523
643 5440
644 1640
645 0617
646 2240
647 1617
648 7600
649 \f/DISPLAYS AND TEXTS FOR COMPILER [LB-U11*-PB]
650 CON00, /END OF ONCE ONLY AREA
651 DIS02, 2324 /"STANDARD RESOLUTION:
652 0116 /"'----' DATA POINTS
653 0401
654 2204
655 4022
656 0523
657 1714
658 2524
659 1117
660 1672
661 4547
662 5555
663 5555
664 4740
665 0401
666 2401
667 4020
668 1711
669 1624
670 2300
671 \fDIS03, 1405 /"LENGTH: '-----' '-'SEC"
672 1607
673 2410
674 7240
675 4755
676 5555
677 5555
678 4740
679 4755
680 4723
681 0503
682 0000
683
684 DIS04, 0405 /"DELAY: '-----' '-'SEC"
685 1401
686 3172
687 4047
688 5555
689 5555
690 5547
691 4047
692 5547
693 2305
694 0300
695
696 DIS05, 1011 /"HIGH RESOLUTION EPOCH
697 0710 /'----' DATA POINTS"
698 4022
699 0523
700 1714
701 2524
702 1117
703 1640
704 0520
705 1703
706 1045
707 4347
708 5555
709 5555
710 4740
711 0401
712 2401
713 4020
714 1711
715 1624
716 2300
717 \fDIS06, 1011 /"HI LENGTH: '-----' '-'SEC"
718 4014
719 0516
720 0724
721 1072
722 4047
723 5555
724 5555
725 5547
726 4047
727 5547
728 2305
729 0300
730
731 DIS07, 1011 /"HI DELAY: '-----' '-'SEC"
732 4004
733 0514
734 0131
735 7240
736 4755
737 5555
738 5555
739 4740
740 4755
741 4723
742 0503
743 0000
744
745 DIS01, 4523 /"
746 3116 /SYNC ON INPUT: S'-'
747 0340 /"
748 1716
749 4011
750 1620
751 2524
752 7240
753 2347
754 5547
755 4500
756 \fDIS09, 4002 / "BEGINS-AT RATE-ENDS
757 0507 /"XXXXXX""X""XXXXXX""X""XXXXXX""X"
758 1116 /"XXXXXX""X""XXXXXX""X""XXXXXX""X"
759 2355 /
760 0124 /'-': CHANGE (H,L,&)"
761 4022
762 0124
763 0555
764 0516
765 0423
766 4542
767 3030
768 3030
769 3030
770 4242
771 3042
772 4230
773 3030
774 3030
775 3042
776 4230
777 4242
778 3030
779 3030
780 3030
781 4242
782 3042
783 4542
784 3030
785 3030
786 3030
787 4242
788 3042
789 4230
790 3030
791 3030
792 3042
793 4230
794 4242
795 3030
796 3030
797 3030
798 4242
799 3042
800 4545
801 4755
802 4772
803 4003
804 1001
805 1607
806 0540
807 5010
808 5414
809 5446
810 5100
811 \fDIS12, 2317 /"SORT AT '-----' '-'SEC"
812 2224
813 4001
814 2440
815 4755
816 5555
817 5555
818 4740
819 4755
820 4723
821 0503
822 0000
823
824 DIS15, 0126 /"AVG #"XX"
825 0740
826 3342 /ANALOG INPUT '--' "
827 3030
828 4245
829 4501
830 1601
831 1417
832 0740
833 1116
834 2025
835 2440
836 4755
837 5547
838 0000
839
840 DIS16, 2205 /"RESOLUTION: '-' (H,L)"
841 2317
842 1425
843 2411
844 1716
845 7240
846 4755
847 4740
848 5010
849 5414
850 5100
851
852 DIS17, 2317 /"SORT CODE: '---'"
853 2224
854 4003
855 1704
856 0572
857 4047
858 5555
859 5547
860 0000
861 \fDIS18, 0317 /"CONFIDENCE LIMITS?:'-'
862 1606 /<Y:YES>"
863 1104
864 0516
865 0305
866 4014
867 1115
868 1124
869 2377
870 7240
871 4755
872 4745
873 7431
874 7240
875 3105
876 2376
877 0000
878
879 DIS19, 0317 /"COMPUTE TREND?: '-'
880 1520 /<Y: YES>"
881 2524
882 0540
883 2422
884 0516
885 0477
886 7240
887 4755
888 4745
889 7431
890 7240
891 3105
892 2376
893 0000
894 \fDIS24, 1405 /"LEAST SWEEP INTERVAL:
895 0123 /'------' '-'S (>"XXXXX" "X"S)"
896 2440
897 2327
898 0505
899 2040
900 1116
901 2405
902 2226
903 0114
904 7245
905 4755
906 5555
907 5555
908 4740
909 4755
910 4723
911 4050
912 7642
913 3030
914 3030
915 3030
916 4240
917 4230
918 4223
919 5100
920
921 DIS25, 0126 /"AVERAGE '....' SWEEPS"
922 0522
923 0107
924 0540
925 4755
926 5555
927 5547
928 4023
929 2705
930 0520
931 2300
932
933 DIS27, 4416 /"$FA8/INPUTS$AP4/"
934 0170
935 1116
936 2025
937 2423
938 4411
939 2064
940 0000
941 \fDIS27A, 4230 /"XX":"XX",X
942 3042
943 7242
944 3030
945 4254
946 3000
947
948 DIS30, 4415 /"$EA8/AVERAGES"
949 0170
950 0126
951 0522
952 0107
953 0523
954 0000
955
956 DIS30A, 4230 /-"XX"-
957 3042
958 0000
959
960 DIS32, 2025 /"PUNCH CONTROL TAPE? '-'
961 1603 /<Y: YES>"
962 1040
963 0317
964 1624
965 2217
966 1440
967 2401
968 2005
969 7740
970 4755
971 4745
972 7431
973 7240
974 3105
975 2376
976 0000
977 \fDIS32A, 2411 /"TITLE:
978 2414 /'---------------------'"
979 0572
980 4547
981 5555
982 5555
983 5555
984 5555
985 5555
986 5555
987 5555
988 5555
989 5555
990 5555
991 5547
992 4545
993 0000
994
995 ERR01, 7740 /"? SWEEP ENDS EARLY ' '"
996 2327
997 0505
998 2040
999 0516
1000 0423
1001 4005
1002 0122
1003 1431
1004 4747
1005 0000
1006
1007 ERR02, 7740 /"? INSUFFICIENT MEMORY ' '"
1008 1116
1009 2325
1010 0606
1011 1103
1012 1105
1013 1624
1014 4015
1015 0515
1016 1722
1017 3147
1018 4700
1019
1020 ERR03, 7740 /"? BAD SAMPLING RATIO ' '"
1021 0201
1022 0440
1023 2301
1024 1520
1025 1411
1026 1607
1027 4022
1028 0124
1029 1117
1030 4747
1031 0000
1032 \fERR04, 7740 /"? NO COMMON INTERVAL"
1033 1617
1034 4003
1035 1715
1036 1517
1037 1640
1038 1116
1039 2405
1040 2226
1041 0114
1042 4747
1043 0000
1044
1045
1046 ERR05, 7740 /"? TOO MANY INPUTS
1047 2417 / FOR SWEEP RATE"
1048 1740
1049 1501
1050 1631
1051 4011
1052 1620
1053 2524
1054 2345
1055 4040
1056 0617
1057 2240
1058 2327
1059 0505
1060 2040
1061 2201
1062 2405
1063 4747
1064 0000
1065
1066 TXT32, 4545 /<CRLF><CRLF> SWEEP SUMMARY<CRLF>
1067 4040
1068 4023
1069 2705
1070 0520
1071 4023
1072 2515
1073 1501
1074 2231
1075 4500
1076 \fTXT32A, 4040 /" AVERAGES
1077 4040 /CHAN RATE TYPE SORT
1078 0126
1079 0522
1080 0107
1081 0523
1082 4503
1083 1001
1084 1640
1085 2201
1086 2405
1087 4024
1088 3120
1089 0540
1090 2317
1091 2224
1092 4500
1093
1094 TXT33A, 4042 /" "XX" X "XX" "XXX"
1095 3030 /"
1096 4240
1097 4040
1098 4030
1099 4040
1100 4040
1101 4042
1102 3030
1103 4240
1104 4042
1105 3030
1106 3042
1107 4500
1108
1109 DIS99, 5026 /"(VAP,"X","XXXX"-"XXXX")
1110 0120
1111 5442
1112 3042
1113 5442
1114 3030
1115 3030
1116 4255
1117 4230
1118 3030
1119 3042
1120 5145
1121 0000
1122
1123 TXT34B, 4023 /" SWEEPS AT "
1124 2705
1125 0520
1126 2340
1127 0124
1128 4000
1129 \f
1130 TXT34C, 2345 /"S
1131
1132 /TTYLST: H,L
1133 HLSWIT, 0010 /H
1134 -014 /L
1135
1136 TXCRLF, 4545
1137 4500
1138
1139 /TTYLST: LF,CR
1140 CRLF, +212
1141 -215
1142
1143 /FLOATING VARIABLES
1144 FLOT11, 0
1145 0
1146 0
1147
1148 FLOT12, 0
1149 0
1150 0
1151
1152 FLOT13, 0
1153 0
1154 0
1155
1156 FLOT14, 0
1157 0
1158 0
1159
1160 FLOT15, 0
1161 0
1162 0
1163
1164 FLOT16, 0
1165 0
1166 0
1167
1168 FLOT17, 0
1169 0
1170 0
1171
1172 FLOT20, 0
1173 0
1174 0
1175
1176 /FLOATING CONSTANT
1177 VARTIM, 0011
1178 3100
1179 0000
1180
1181 CON02A, TAD SAMB
1182 TAD CON02H
1183 SMA CLA
1184 JMP I CON02J
1185 TAD SAMB
1186 IAC
1187 JMP I CON02K
1188 CON02K, CON02P
1189 CON02J, CON02
1190 CON02H, 100
1191 XX76NO, TAD FAC+2 /SUBTRACT 200 FOR EACH FIELD USED.
1192 TAD XXM200 /PS8 USES 7600 AND UP.
1193 DCA FAC+2
1194 JMP .+2
1195 DADD
1196 ISZ TLINKS
1197 JMP .-2
1198 TAD TEMP06 /SUBTRACT AGAIN IF ANOTHER FIELD
1199 CIA /WAS USED.
1200 TAD FOP+1
1201 SZA CLA
1202 DADD
1203 JMP I .+1
1204 XX76BK
1205 XXM200, -200
1206 *1763
1207 /FLOATING CONSTANT
1208 AVGTIM, 0007
1209 2770
1210 0000
1211
1212 \f/SELECT SWEEP PARAMETERS
1213 CHASX, CHAS
1214 CON01, FRAME /"SYNC ON CHANNEL S'-'"
1215 DIS01
1216 JMP CON01 /L.F.: RESTART
1217 OCTARG
1218 JMP CON01 /FORMAT ERROR - ASK AGAIN
1219 SNA
1220 JMP I CHASX
1221 DCA SMASK
1222 TAD SMASK
1223 BRAN
1224 K0004
1225 JMP OK
1226 JMP I CON01Z
1227 JMP OK
1228 JMP OK
1229 JMP I CON01Z
1230 CHAS, CLL CML RAR
1231 DCA SMASK
1232 OK, TAD MODE
1233 DCA KMODE
1234 CON02, FRAME /"STANDARD RESOLUTION
1235 DIS02 /'---' DATA POINTS"
1236 JMP I CON01Z /L.F.: PREVIOUS QUESTION
1237 DECARG
1238 JMP CON02 /FORMAT ERROR - ASK AGAIN
1239 CMA IAC
1240 DCA SAMB /-# OF DATA POINTS IN LOW (OR ONLY) EPOCH
1241 JMP I .+1 /CHECK IF # OF POINTS IS LESS
1242 /THAN 65.
1243 CON02A
1244 CON02P, FLOAT /FSAMB =-(#OF POINTS -1)
1245 SAVE
1246 FSAMB
1247 FSAMB=FLOT03
1248 FADD
1249 KM001F
1250 SAVE /-# OF POINTS
1251 FLOT01
1252 TAD SAMB
1253 TAD FIELD0 /DECREASE AVAILABLE FIELD0 BY ADC BUF
1254 SZL CLA /(+)+(-): LINK WILL BE 1 IF NO OVERFLOW
1255 JMP CON03
1256 FRAME /"? INSUFFICIENT MEMORY"
1257 ERR02
1258 JMP CON02 /ASK FOR # OF DATA POINTS
1259 JMP CON02
1260
1261 /LOCAL CONSTANTS
1262 K0226, +226
1263 CON01Z, CON01
1264
1265 MODE, 5057 /EXTERNAL ENABLE,SCHMITT ENABLE,RESET
1266 \fCON03, FRAME /"LENGTH: '----' '-'SEC"
1267 DIS03 /
1268 JMP CON02 /GO BACK TO PREVIOUS QUESTION
1269 FLTARG
1270 JMP CON03 /FORMAT ERROR - ASK LENGTH AGAIN
1271 FDIV /GET TIME BETWEEN DATA POINTS
1272 FLOT01
1273 SAVE
1274 FBSI
1275 FBSI=FLOT04
1276 TAD K0226 /MUST BE GREATER THAN OR EQUAL 150 USEC"
1277 FLOAT
1278 FADD /150US-RATE
1279 FBSI
1280 TAD FAC+1
1281 SMA SZA CLA
1282 JMP CON03 /.LT. 150 USEC, TRY AGAIN
1283
1284 CON04, FRAME /"DELAY: '----' '-'SEC
1285 DIS04
1286 JMP CON03 /L.F.: PREVIOUS QUESTION
1287 FLTARG
1288 JMP CON04 /FORMAT ERROR - ASK DELAY AGAIN
1289 SAVE
1290 FBLATT /LATENCY IN USEC
1291 FBLATT=FLOT05
1292 FDIV /GET LATENCY IN TERMS OF SAMPLING INTERVAL
1293 FBSI
1294 SAVE /-LATENCY IN BSI
1295 FBLAT
1296 FBLAT=FLOT06
1297 FADD
1298 FSAMB /-LENGTH OF SWEEP IN BSI
1299 TAD FAC+1
1300 SPA SNA CLA /DOES SWEEP END BEFORE SYNC PULSE?
1301 JMP CON05 /NO, OK.
1302 FRAME /YES;"? SWEEP ENDS EARLY"
1303 ERR01
1304 JMP CON03 /LF: GET NEW SWEEP LENGTH
1305 JMP CON04 /CR: GET NEW SWEEP DELAY
1306
1307 /LOCAL CROSSPAGE
1308 CON08X, CON08
1309 CON07X, CON07A
1310 \fCON05, DCA KBTOA
1311 FRAME /"HIGH RESOLUTION EPOCH
1312 DIS05 /'----' DATA POINTS"
1313 JMP CON04 /L.F.: LAST QUESTION
1314 DECARG
1315 JMP .-4 /FORMAT ERROR - ASK # POINTS AGAIN
1316 CMA IAC /-# DATA POINTS
1317 SNA
1318 JMP I CON08X /0 DATA POINTS INDICATES SINGLE MODE
1319 DCA SAMA /- POINTS IN HI RESOLUTION EPOCH
1320 TAD SAMA
1321 IAC
1322 FLOAT /-(#DATA POINTS-1)
1323 SAVE
1324 FSAMA=FLOT10
1325 FSAMA /FSAMA=FLOT10
1326 FADD
1327 KM001F
1328 SAVE /-#DATA POINTS
1329 FLOT01
1330 TAD SAMA /PARTS OF FIELD 0 IN USE
1331 TAD SAMB
1332 TAD FIELD0 /FIELD 0 AVAILABLE
1333 SNL CLA /LINK=1 IF OVERFLOW
1334 JMP CON06
1335 FRAME /"? INSUFFICIENT MEMORY"
1336 ERR02
1337 JMP CON02 /L.F.: RESPECIFY LO-EPOCH
1338 JMP CON05 /C.R.: RESPECIFY HI-EPOCH
1339 CON06, FRAME /"HI LENGTH: '----' '-'SEC"
1340 DIS06
1341 JMP CON05 /LF: PREVIOUS QUESTION
1342 FLTARG
1343 JMP CON06 /FORMAT ERROR - ASK AGAIN
1344 FDIV /LENGTH\# POINTS= SAMPLING INTERVAL
1345 FLOT01
1346 SAVE /GET ASI IN USEC
1347 FASI
1348 FASI=FLOT11
1349 TAD K0226 /IF ASI. .LT. 150 US, TOO FAST
1350 FLOAT
1351 FADD /150US-ASI
1352 FASI
1353 TAD FAC+1
1354 SMA CLA
1355 JMP CON06 /.LT. 150 US, TOO FAST
1356 LOAD /CHECK BSI/ASI RATIO
1357 FBSI
1358 FDIV
1359 FASI
1360 DCOM
1361 FIX /.ABS. RATIO .LT. 1 OR .GT. 2^11 ?
1362 SZA /-BSI/ASI RATIO IN AC
1363 JMP I CON07X /NO - IS OK
1364 \f FRAME /"? BAD SAMPLING RATIO"
1365 ERR03
1366 JMP I CON02X /LF: CHANGE BOTH SWEEPS
1367 JMP I CON05Y /CR: CHANGE HIGH
1368
1369 CON07A, DCA KBTOA /KBTOA HOLDS -RATIO
1370 CON07, FRAME /"HI DELAY: '----' '-'SEC"
1371 DIS07
1372 JMP I CON06X /LF: PREVIOUS QUESTION
1373 FLTARG
1374 JMP CON07 /FORMAT ERROR: ASK AGAIN
1375 FDIV /-LATENCY IN TERMS OF ASI
1376 FASI
1377 SAVE
1378 FALAT
1379 FALAT=FLOT12
1380 TAD KBTOA /BSI=-KBTOA*ASIF
1381 CMA IAC
1382 FLOAT
1383 FMUL
1384 FASI
1385 SAVE
1386 FBSI
1387 LOAD /GET LO SWEEP LATENCY IN TERMS OF ASI
1388 FBLATT /-LO-LATENCY IN USEC.
1389 FDIV
1390 FASI
1391 SAVE /LO-LATENCY IN ASI.
1392 FBLAT
1393 TAD KBTOA /GET END TIME OF LO SWEEP (IN ASI)
1394 CMA IAC
1395 FLOAT
1396 FMUL /(B/A RATIO)*(-# OF POINTS)
1397 FSAMB
1398 FADD /ADD -DELAY (IN ASI)
1399 FBLAT
1400 DCOM
1401 SAVE /DELAY (IN ASI)+# OF POINTS*RATIO
1402 FBEND /POSITIVE SENSE
1403 FBEND=FLOT07
1404 JMP CON08A
1405
1406 /LOCAL CROSS-PAGE
1407 CON02X, CON02
1408 CON04X, CON04
1409 CON05Y, CON05
1410 CON06X, CON06
1411 CON09X, CON09
1412 FMINX, FMINS
1413 \fCON08, LOAD /HERE FOR 1-EPOCH MODE
1414 FBSI
1415 SAVE /BSI=ASI
1416 FASI
1417 LOAD /LO-LATENCY=HI-LATENCY
1418 FBLAT
1419 SAVE
1420 FALAT
1421 JMS I FMINX /SYNC TIME IS AT MIN (SYNC PULSE, DELAY)
1422 KZEROF
1423 DCOM
1424 SAVE /FAKE END OF B (SYNC TIME)
1425 FBEND
1426 LOAD
1427 FSAMB
1428 SAVE
1429 FSAMA
1430 CON08A, TAD KBTOA /COME HERE FOR 2-EPOCH MODE
1431 FLOAT
1432 SAVE /-BSI/ASI
1433 FBTOA
1434 FBTOA=FLOT20
1435 LOAD /GET AEND, AEND=-(ALAT+SAMA)
1436 FSAMA /AEND IS - TIME OF A-SWEEP ENDING
1437 FADD
1438 FALAT /FALAT IS NEGATIVE SENSE A-DELAY
1439 SAVE
1440 FAEND /NEGATIVE SENSE.
1441 FAEND=FLOT13
1442 FADD
1443 FBEND /FBEND IS POSITIVE SENSE END OF B-SWEEP
1444 TAD FAC+1 /DIFFERENCE BETWEEN END TIMES
1445 SMA SZA CLA /BEND .LT. AEND?
1446 JMP CON08C /YES, LO ENDS AFTER HI ENDS
1447 FIX /NO, HI ENDS AFTER LO ENDS
1448 FLOAT /TRUNCATE. ROUND UP
1449 SAVE /(LO ENDS FIRST)
1450 EJECT
1451
1452 FBLA /-# OF POINTS LEFT IN A AT END OF B
1453 FBLA=FLOT14
1454 LOAD /SYNC TIME AT END OF LO SWEEP: KSYTIM=-(BEND-1)
1455 FBEND
1456 DCOM
1457 FADD
1458 KM001F
1459 SAVE
1460 KSYTIM-1
1461 LOAD /DOES HI START AFTER LO ENDS?
1462 FBEND /+(END-OF-B TIME)
1463 FADD
1464 FALAT /MINUS (START-OF-A TIME)
1465 TAD FAC+1 /(END B) - (START A) .LT 0?
1466 SPA CLA
1467 JMP CON08B /YES-NO COMMON INTERVAL
1468 \f FIX /NO - TRUNCATE, ROUND DOWN
1469 FLOAT
1470 DCOM /LOGICAL START OF HI-SWEEP
1471 SAVE /[(END B) - (START A)] FROM SYNC TIME
1472 FADEL /NEGATIVE
1473 FADEL=FLOT15
1474 LOAD /LOGICAL START OF LO-SWEEP ENTIRE BUFFER BACK
1475 FSAMB
1476 SAVE
1477 FBDEL
1478 FBDEL=FLOT16
1479 LOAD /CLOSE LO BUFFER AT SYNC TIME
1480 KZEROF
1481 SAVE
1482 FBLB
1483 FBLB=FLOT17
1484 JMP I CON09X
1485
1486 CON08B, FRAME /"? NO COMMON INTERVAL"
1487 ERR04
1488 JMP I CON04X /L.F.: GO BACK TO RESPECIFY LO-LATENCY
1489 JMP I CON02X /C.R.: RESPECIFY HI-LATENCY
1490
1491 CON08C, FDIV /HI SWEEP ENDS BEFORE LO SWEEP ENDS
1492 FBTOA /KBLB=[(BEND-AEND)/KBTOA]-1
1493 FIX /-# OF POINTS LEFT TO GET IN B WHEN A STOPS
1494 FLOAT /TRUNCATE - ROUND UP
1495 SAVE /LO CLOSES KBLB AFTER SYNC TIME (IN BSI)
1496 FBLB
1497 LOAD /SYNC TIME AT END OF HI SWEEP
1498 FAEND
1499 FADD
1500 KM001F
1501 SAVE
1502 KSYTIM-1
1503 LOAD /DOES HI END BEFORE LO BEGINS?
1504 FAEND
1505 DCOM
1506 FADD /(END A)-(START B) .LT. 0 ?
1507 FBLAT
1508 TAD FAC+1
1509 SPA CLA
1510 JMP I CON08W /YES - NO COMMON INTERVAL
1511 FDIV /BDEL IS TIME FROM LOGICAL START TO SYNC TIME
1512 FBTOA /IN ASI
1513 DCOM
1514 FIX
1515 FLOAT /TRUNCATE, ROUND DOWN
1516 DCOM
1517 SAVE
1518 FBDEL
1519 \f LOAD /LOGICAL START OF HI IS ENTIRE BUFFER BACK
1520 FSAMA
1521 SAVE
1522 FADEL
1523 LOAD /THERE ARE NO MORE A-POINTS TO GET AT SYNC TIME
1524 KZEROF
1525 SAVE /CLOSE HI BUFFER AT SYNC TIME
1526 FBLA
1527
1528 CON09, TAD KSYTIM /SETUP SWEEP SUMMARY DISPLAY
1529 SPA CLA /UNLESS EITHER SWEEP ENDS BEFORE SYNC
1530 JMP CON09A
1531 FRAME /"? SWEEP ENDS EARLY"
1532 ERR01
1533 JMP I CON04Y /LF: RESPECIFY LATENCY
1534 JMP I CON05X /CR: RESPECIFY HI SWEEP
1535
1536 /LOCAL CROSSPAGE
1537 CON04Y, CON04
1538 CON05X, CON05
1539 CON08W, CON08B
1540
1541 /SUBROUTINE TO GET MAX OF TWO FLOATING ARGUMENTS: FMAX
1542 FMAXS, 0
1543 TAD FMAXS /GET PARAMETER ADDRESS
1544 DCA FMLOCS
1545 JMS FMARGS /COMPARE
1546 FMEXIT, SPA CLA /SIGN OF COMPARSION
1547 TAD K0003 /GET COMPARAND AS RESULT (FMARG2=FMARG1+3)
1548 TAD ADRARG /GET FAC AS RESULT
1549 DCA .+2
1550 LOAD /PUT INTO FAC
1551 0
1552 JMP I FMLOCS /EXIT
1553
1554 /SUBROUTINE TO GET MIN OF TWO FLOATING ARGS: FMIN
1555 FMINS, 0
1556 JMS FMARGS /COMPARE
1557 CMA IAC /REVERSE SIGN OF COMPARSION
1558 JMP FMEXIT
1559 \f FMLOCS=FMINS
1560 FMARGS, 0
1561 SAVE /SAVE THE FAC
1562 ADRARG, FMARG1
1563 FMARG1=FLOT01
1564 TAD I FMLOCS /GET ADDRESS OF COMPARAND
1565 DCA .+2
1566 LOAD /PUT COMPARAND IN FAC
1567 0
1568 SAVE /AND SAVE IT
1569 FMARG2
1570 FMARG2=FLOT02
1571 DCOM /FAC - COMPARAND
1572 FADD
1573 FMARG1
1574 TAD FAC+1 /SIGN OF (FAC-COMPARAND)
1575 ISZ FMLOCS /ADJUST RETURN ADDRESS
1576 JMP I FMARGS
1577
1578 CON09A, SETH /POSITION HALFWORD POINTER
1579 DIS09 /PICK UP ARGUMENTS FOR DISPLAY
1580 LOAD
1581 KSYTIM-1
1582 DFIX /-SYNC POINT+1
1583 FAC+1
1584 NORM /TRUNCATE, ROUND UP
1585 DCA FAC
1586 SAVE
1587 KSYTIM-1
1588 DCOM
1589 FADD
1590 KM001F
1591 FADD /A-START TIME
1592 FADEL
1593 DCOM
1594 FMUL /SYNC POINT - DELAY (IN USEC)
1595 FASI
1596 FLTOUT
1597 LOAD
1598 FASI /HI SWEEP SAMPLING RATE
1599 DCOM
1600 FLTOUT
1601 LOAD /A-END TIME
1602 KM001F
1603 DCOM
1604 FADD
1605 KSYTIM-1
1606 FADD
1607 FBLA
1608 \f FMUL /SYNC POINT + POINTS LEFT (IN USEC)
1609 FASI
1610 FLTOUT
1611 LOAD /GET START TIME OF LO SWEEP
1612 FBDEL
1613 FMUL
1614 FBTOA
1615 FADD
1616 KSYTIM-1
1617 DCOM
1618 FADD
1619 KM001F
1620 DCOM
1621 FMUL /SYNC POINT - DELAY
1622 FASI
1623 FLTOUT
1624 LOAD /LO RESOLUTION SAMPLING INTERVAL
1625 FBTOA
1626 FMUL
1627 FASI
1628 FLTOUT
1629 LOAD /B-END TIME
1630 FBLB
1631 FMUL
1632 FBTOA
1633 FADD
1634 KM001F
1635 DCOM /SYNC POINT + POINTS LEFT (IN USEC)
1636 FADD
1637 KSYTIM-1
1638 FMUL
1639 FASI
1640 FLTOUT
1641 LOAD /PRESET FAC TO -1 FOR NO XR
1642 KM001F
1643 CON09B, FRAME /"BEGINS -AT RATE- ENDS
1644 DIS09 /SDDDDDMSDDDDDMSDDDDDM
1645 JMP CON09B /SDDDDDMSDDDDDMSDDDDDM
1646 ALPHA /
1647 BRAN /'-': CHANGE [H,L,-]"
1648 HLSWIT /(S: - OR SPACE; D: 0-9, OR -; M: U, M, OR SPACE)
1649 JMP I CON05Z /CHANGE HI (H)
1650 JMP I CON02Y /CHANGE HI AND LO (L)
1651
1652 \f/GET LAST SWEEP PARAMETER: SORT TIME
1653 CON12D, TAD XROPT /IF NO XR IN SYS, SKIP QUESTION
1654 SNA CLA
1655 JMP CON12E /ASSUME CTIME IS AT SYNC TIME
1656 FRAME /"SORT AT '-----' '-'SEC"
1657 DIS12
1658 JMP I CON9X /LF: LOOK AT SUMMARY AGAIN
1659 FLTARG
1660 JMP CON12D /FORMAT ERROR - ASK AGAIN
1661 FDIV /TIME IN ASI - CAN NO LONGER CHANGE SW PARAMETERS
1662 FASI
1663 FADD
1664 KM001F
1665 TAD FAC+1 /-SORT TIME MUST BE .LT.0 (-1 IF UNSPEC)
1666 SMA CLA
1667 JMP CON12D /RE ASK QUESTION
1668 CON12E, SAVE
1669 FCTIM
1670 FCTIM=FLOT04 /FBSI. BLOCK 3-8
1671 DFIX
1672 KCTIM
1673 LOAD
1674 FAEND
1675 JMS I FMINY /FIND END OF SW PHASE
1676 FCTIM /MAX (END-A, SORT TIME)= MIN (-END-A, -SORT TIME)
1677 DCOM
1678 JMS I FMAXX /MAX (END-A, SORT TIME, END-B) IS END OF SW PHASE
1679 FBEND
1680 SAVE /SWEEP PHASE END POINT (IN ASI)
1681 FSWEND
1682 FSWEND=FLOT04 /FCTIM, BLOCK 12E
1683 LOAD
1684 FALAT
1685 JMS I FMAXX /FIND BEGIN TIME FOR SWEEP PHASE (IN ASI)
1686 FBLAT /MIN (START-A,START-B) = MAX (-START-A,-START-B)
1687 SAVE
1688 FSWBEG /-START TIME OF SWEEP PHASE
1689 FSWBEG=FLOT13 /12E,8-12
1690 FADD /+ END TIME OF SWEEP PHASE
1691 FSWEND
1692 SAVE /LENGTH OF SWEEP PHASE IN ASI
1693 FSWTIM
1694 FSWTIM=FLOT04 /FSWEND, BLOCK 12E
1695 \f/ASK QUESTIONS AND GENERATE JOB LIST
1696 CON13, DCA TNJOB /INITIALIZE SECTION VARIABLES - JOB 0
1697 TNJOB=TEMP30
1698 TAD KBTOA /SET ALLOWED MIN SAMPLING TIME
1699 SZA CLA
1700 TAD K0031 /25 (10)
1701 TAD K0175 /125(10)
1702 FLOAT /125 US IF SINGLE
1703 SAVE /150 US IF DOUBLE MODE
1704 FTIMSV /HOLDS MIN SWEEP INTV PERMITTED
1705 FTIMSV=FLOT01 /INCREASED FOR JOBS AS CHOSEN
1706 LOAD /SET TIME USED TO ZERO
1707 KZEROF
1708 SAVE
1709 CALTIM
1710 CALTIM=FLOT05 /FBLATT, BLOCK 4-7
1711 LOAD /MEMORY AVAILABLE AT INSTALLATION
1712 MEMTOT-1
1713 SAVE
1714 DAVAIL /DBL PREC. FIXED POINT. # OF CELLS AVAIL IN ALL OF CORE
1715 DAVAIL=FLOT02
1716 TAD FIELD0 /FIELD0 AVAIL FOR BUFFERS & LISTS
1717 DCA TLEFT0 /# OF CELLS LEFT IN FIELD 0
1718 TLEFT0=TEMP15
1719 DCA NCHA /INITIALIZE # OF CHANNELS TO ZERO
1720 DCA NCHB
1721 TAD ADJLIS /INITIALIZE JOB LIST POINTER
1722 IAC
1723 DCA TJPNTR
1724 TJPNTR=TEMP21
1725 DCA I TJPNTR /PUT EOL WORD IN JOB LIST (J1=0)
1726 TAD KMAXSZ /-MAXIMUM SIZE OF LIST +20
1727 CON14, DCA TSZLST
1728 TSZLST=TEMP13
1729 TAD TLEFT0 /INITIALIZE FOR NEXT JOB
1730 DCA TAVAIL /TLEFT0 MODIFIED AT CON16
1731 TAVAIL=TEMP14
1732 LOAD /UPDATE TIME COUNT, FTIMSV MOD AT CON21
1733 FTIMSV
1734 SAVE
1735 FTIMIN
1736 FTIMIN=FLOT07 /FBEND. BLOCK 4-12E
1737 SETH /PUT AVERAGE # IN MESSAGE
1738 DIS15
1739 TAD TNJOB
1740 IAC
1741 OCTOUT
1742 EJECT
1743
1744 CON15, FRAME /"AVG XX
1745 DIS15 /AVERAGE INPUT '--'"
1746 JMP I CON22X /L.F.: ENOUGH AVERAGES
1747 OCTARG
1748 JMP CON15 /FORMAT ERROR - ASK AGAIN
1749 DCA SHFR /SHFR HAS CHANNEL NUMBER
1750 \fCON16, TAD SAMA /INITIALIZE FOR SINGLE MODE (H RESOL)
1751 DCA TNSAM /NUMBER OF DATA POINTS THIS JOB
1752 TNSAM=TEMP16
1753 TAD NCHA /ORDER OF THIS JOB IN JLIST
1754 DCA TORDER
1755 TORDER=TEMP17
1756 TAD KBTOA /DUAL BEAM MODE?
1757 SNA CLA
1758 JMP CON16J /NO- OMIT QUESTION
1759 CON16A, FRAME /"RESOLUTION: '-' [H,L]"
1760 DIS16
1761 JMP CON15 /L.F.: RESTART JOB
1762 ALPHA /GET ANSWER
1763 BRAN
1764 HLSWIT
1765 JMP CON16B /H - OK
1766 JMP CON16G /L. - READUST FOR LO
1767 JMP CON16A /OTHER - ERROR, ASK AGAIN
1768
1769 /LOCAL CONSTANTS
1770 K0006, 0006
1771 K0031, 31 /25(10)
1772 K0175, 175 /125(10)
1773
1774 /LOCAL CROSS-PAGE
1775 CON9X, CON09B
1776 CON02Y, CON02
1777 CON05Z, CON05
1778 CON22X, CON22
1779 FMINY, FMINS
1780 FMAXX, FMAXS
1781 KMAXSZ, CON00-LOCORE-16 /FROM LOCORE TO CON00 FOR LISTS (-16 FOR NEXT JOB)
1782
1783 CON16G, TAD NCHB /ORDER IN MX-B LIST
1784 DCA TORDER
1785 TAD K0040 /SET A/B BIT =1
1786 TAD SHFR
1787 DCA SHFR
1788 CON16J, TAD SAMB /LO RESOLUTION SWEEP POINTS
1789 DCA TNSAM
1790 EJECT
1791
1792 CON16B, TAD K0003 /INITIALIZE FOR NEW CHANNEL
1793 DCA TCHINC /HOW MUCH TO INCREMENT CORE USED FOR MX, CD LIST ENTRY
1794 TCHINC=TEMP20
1795 TAD K0006 /MOVE A/B, CHAN # TO TOP 6 BITS
1796 SHFT
1797 TAD TNSAM /IMAGE OF # DATA POINTS
1798 DCA TNSAMM
1799 TNSAMM=TEMP10
1800 TAD SHFR
1801 TAD TORDER
1802 TAD K0040 /ADD IN 1(1), CHAN ORD (5) TO BOTTOM 6 BITS
1803 DCA TJCHAN /SAVE FOR J-LIST
1804 TJCHAN=TEMP12
1805 TAD ADJLIS /SET POINTER TO TOP OF JOB LIST
1806 IAC
1807 \fCON16C, DCA TJPNTR /SEARCH FOR SWEEP, CHAN # ALREADY ON J-LIST
1808 TAD I TJPNTR
1809 SNA
1810 JMP CON16E /FOUND END OF LIST (J1=0)
1811 AND K7700 /THESE BITS HOLD SWEEP TYPE AND CHAN #
1812 DCA TJMAT
1813 TJMAT=TEMP01
1814 TAD TJCHAN /NEW JOB'S J1 WORD
1815 AND K7700
1816 CMA IAC
1817 TAD TJMAT /MATCH BETWEEN TOP 6 BITS OF WORDS?
1818 SZA CLA
1819 JMP CON16D /NO MATCH, MOVE ON
1820 DCA TCHINC /FOUND A MATCH NO INCREASE IN MX- OR CD-LIST LENGTH
1821 DCA TNSAMM /NO NEW BUFFER AREA REQUIRED
1822 TAD I TJPNTR /CHAN ORDER IS SAME AS MATCHING J1'S
1823 DCA TJCHAN
1824 CON16D, TAD K0007 /MOVE TO NEXT JOB
1825 TAD TJPNTR
1826 JMP CON16C
1827 CON16H, FRAME /"? INSUFFICIENT MEMORY"
1828 ERR02
1829 JMP I CON13X /LF: START AT JOB 1
1830 JMP I CON15X /CR: RESTART CURRENT JOB
1831
1832 /TTY LIST
1833 YESNO, 31 /Y
1834 -16 /N
1835
1836 /LOCAL CROSSPAGE
1837 CON13X, CON13
1838 CON15X, CON15
1839
1840 CON16E, TAD TCHINC /UPDATE MIN SAMP INTV
1841 SNA CLA
1842 JMP CON16K
1843 TAD K0017 /NEW CHANNEL TAKES 15 USEC MORE TO ACQUIRE
1844 FLOAT
1845 FADD /OLD MIN SAMP INTV
1846 FTIMIN
1847 SAVE
1848 FTIMSV
1849 FADD /REQUIRED SAMP INTV
1850 FASI
1851 TAD FAC+1 /DOES THIS MAKE REQ. SAMPLING RATE IMPOSSIBLE?
1852 SPA SNA CLA
1853 JMP CON16K /NO-IT'S OK
1854 FRAME /"? TOO MANY INPUTS
1855 ERR05 /FOR SWEEP RATE"
1856 JMP I CON13X /RESTART FROM JOB 1 (LF)
1857 JMP I CON15X /RESTART THIS JOB (CR)
1858 \fCON16K, TAD TCHINC /SEE IF THERE IS BUFFER ROOM
1859 TAD K0007
1860 CMA
1861 TAD TNSAMM
1862 DCA TDECF0 /HOW MUCH TO DECR FIELD0
1863 TDECF0=TEMP10
1864 CLL
1865 TAD TDECF0 /IS THERE ROOM?
1866 TAD TAVAIL
1867 SNL
1868 JMP CON16H /NO- INSUFFICIENT MEMORY
1869
1870 CON16F, DCA TLEFT0 /FIELD 0 LEFT
1871 DCA TCMASK /INITIALIZE FOR NO CONTINGENCY MASK
1872 TCMASK=TEMP11
1873 TAD XROPT /DOES INSTALLATION HAVE XR OPTION?
1874 SNA CLA
1875 JMP CON18 /NO-SKIP QUESTION
1876
1877 CON17, FRAME /"SORT CODE: '---'"
1878 DIS17
1879 JMP I CON15X /LF: RESTART JOB
1880 OCTARG
1881 JMP CON17 /FORMAT ERROR - ASK AGAIN
1882 AND K0377 /SET CONTINGENCY PART OF J2
1883 DCA TCMASK
1884 CON18, IAC
1885 DCA TJTYPE /INITIALIZE JOB TYPE TO TYPE 1 (AVG ONLY)
1886 TJTYPE=TEMP07
1887 FRAME /"COMPUTE S.D.?: '-'
1888 DIS18 /(Y: YES)"
1889 JMP I CON15X /L.F.:RE-DO JOB
1890 ALPHA /GET ANSWER
1891 BRAN /Y FOR YES
1892 YESNO
1893 JMP .+3 /Y: YES
1894 JMP CON19A /N: NO
1895 JMP CON19A /OTHER - SAME AS N
1896 TWO /JOB TYPE SET TO TWO
1897 DCA TJTYPE
1898 \fCON19, FRAME /"COMPUTE TREND?: '-'
1899 DIS19 /(Y: YES)"
1900 JMP CON18 /L.F. RE ASK VARIANCE
1901 ALPHA /GET ANSWER
1902 BRAN
1903 YESNO
1904 ISZ TJTYPE /Y: YES - SET JOB TYPE = 3
1905 K7700, 7700 /N: NO (A NOP)
1906 CON19A, TAD TJTYPE /UPDATE TOTAL AVAILABLE CORE
1907 BRAN /AFTER THIS JOB'S CALC REGION
1908 K0003 /IS SET ASIDE
1909 TAD K0004 /TYPE 3, NCELL=9
1910 TAD K0003 /TYPE 2, NCELL=5
1911 TAD K0002 /TYPE 1, NCELL=2
1912 DCA TNCELL /LOCATIONS REQUIRED PER DATA POINT
1913 TNCELL=TEMP02
1914 TAD TNCELL
1915 CMA IAC
1916 DCA TNCNT /FIND REQUIRED CORE FOR THIS JOB
1917 TNCNT=TEMP01
1918 CLA CMA
1919 DCA FOP+1
1920 TAD TDECF0 /FIGURE IN INCREASE IN MX, CD, AND J LISTS
1921 DCA FOP+2
1922 TAD TNSAM
1923 DCA FAC+2 /ADD (# OF POINTS)*(# OF LOCATIONS PER POINT)
1924 CMA
1925 DCA FAC+1
1926 DADD
1927 ISZ TNCNT /ADD IN # OF POINTS. (# OF LOCS) TIMES
1928 JMP .-2
1929 LOAD /DECREASE CURRENTLY AVAIL. MEMORY
1930 DAVAIL
1931 DADD
1932 TAD FOP+1
1933 DCA TEMP06
1934 TAD FAC+1 /# OF DATA FIELDS PREVIOUSLY AVAILABLE
1935 CMA
1936 TAD FOP+1 /- OF DATA FIELDS NOW AVAILABLE+1
1937 EJECT
1938
1939 DCA TLINKS /IS # OF BLOCKS (LINKAGE) REQUIRED
1940 TLINKS=TEMP01
1941 CLA CMA /PUT-(3 LOCS+1 DATA POINT) IN FAC
1942 DCA FAC+1
1943 TAD TNCELL
1944 TAD K0003
1945 CMA IAC
1946 DCA FAC+2
1947 DADD /SUBTRACT THIS AMOUNT FOR EACH LINKAGE REQUIRED
1948 JMP I .+1
1949 XX76NO
1950 XX76BK, TAD FOP+1 /IS THERE ENOUGH MEMORY TO DO THIS JOB?
1951 SPA CLA
1952 JMP I CON16W /NO, INSUFFICIENT MEMORY
1953
1954 \fCON20, LOAD /AMOUNT OF MEMORY LEFT (DBL PREC) WAS IN FOP
1955 FOP
1956 SAVE
1957 DAVAIL
1958 TAD TJCHAN /PUT A/B(1), CHAN#(5), 1(1), CHAN ORDER(5) IN J1
1959 DCA I TJPNTR
1960 TAD TJTYPE /PUT TYPE (4), SORT CODE(8) IN J2
1961 CLL RTR /TYPE# TO AC0-3
1962 RTR
1963 RAR
1964 TAD TCMASK /SORT CODE TO AC 8-11
1965 ISZ TJPNTR
1966 DCA I TJPNTR
1967 TAD TNCELL /PUT NCELL IN J3 FOR NOW
1968 ISZ TJPNTR
1969 DCA I TJPNTR
1970 TAD TNSAM /PUT NSAM IN J4 FOR NOW
1971 ISZ TJPNTR
1972 DCA I TJPNTR
1973 TAD K0004 /SKIP OVER J5, J6, AND J7
1974 TAD TJPNTR
1975 DCA TJPNTR
1976 DCA I TJPNTR /PUT EOL WORD AT CURRENT END OF JOB LIST
1977 TAD TCHINC /WAS THIS A NEW CHANNEL?
1978 SNA CLA
1979 JMP CON21 /NO.
1980 TAD TJCHAN /YES, INDEX CHANNEL COUNTER
1981 SMA CLA /WHICH ONE, A OR B?
1982 JMP CON21-1 /CHANNEL IS IN A-SWEEP
1983 ISZ NCHB /J1(0)=1 FOR B (LO-RESOLUTION)
1984 JMP CON21
1985
1986 /LOCAL CROSS-PAGE
1987 CON15Y, CON15
1988 CON14X, CON14
1989 CON16W, CON16H
1990
1991 ISZ NCHA /J1(0)=0 FOR A (HI-RESOLUTION
1992 EJECT
1993
1994 CON21, TAD TNSAM /-# OF DATA POINTS
1995 FLOAT
1996 SAVE
1997 FLOT01
1998 LOAD /PRESET FAC FOR JOB TYPE 1
1999 AVGTIM /TIME TO AVERAGE ONE POINT
2000 TAD TJTYPE /GET THE JOB TYPE
2001 BRAN
2002 K0002
2003 JMP CON21B /JOB TYPE=2, AVG AND VAR
2004 JMP CON21A /JOB TYPE=1, AVG ONLY
2005 FADD /JOB TYPE=3 (OTHER), AVG, VAR, AND TREND
2006 TRNTIM /TIME TO TAKE TREND OF ONE POINT
2007 CON21B, FADD /ADD TIME TO TAKE VARIANCE ON ONE POINT
2008 VARTIM
2009 \fCON21A, FMUL /MULTIPLY BY NUMBER OF POINTS
2010 FLOT01
2011 FADD /UPDATE BUSY TIME
2012 CALTIM
2013 SAVE
2014 CALTIM
2015 ISZ TNJOB /UPDATE JOB NUMBER
2016 TAD TCHINC /INCREASE LIST LENGTH
2017 TAD K0007
2018 TAD TSZLST /UPDATE AREA LEFT FOR JOB LIST
2019 SMA /OUT OF RESERVED AREA?
2020 JMP I CON14X /NO- GET NEXT JOB'S PARAMETERS
2021
2022 /FIX PARAMETERS AND POINTERS
2023 CON22, CLA
2024 TAD TNJOB /JOBS HAVE ALL BEEN CHOSEN
2025 SNA CLA /THERE MUST BE AT LEAST ONE JOB
2026 JMP I CON15Y /IF NOT RETURN TO SPECIFY ONE
2027 TAD TJPNTR /SET UP MX AND CD LIST POINTERS
2028 DCA ADMPXA /START OF MX LIST-1 (HI RESOLUTION)
2029 TAD ADMPXA
2030 TAD NCHA
2031 IAC
2032 DCA ADMPXB /START OF LO MPLX LIST
2033 TAD ADMPXB
2034 TAD NCHB
2035 DCA ADCHNL /START OF CHANNEL LIST-1
2036 TAD NCHA
2037 TAD NCHB
2038 IAC
2039 CLL RAL /LENGTH OF CH LIST=2*NCHA+1+2*NCHB+1
2040 TAD ADCHNL
2041 DCA ADBUFA /START OF ADC BUFFER-A
2042 LOAD /SAMPLES IN SWEEP-A
2043 FSAMA
2044 FIX
2045 TAD KM0001
2046 DCA SAMA
2047
2048 TAD NCHA /# CHANNELS IN A
2049 CMA IAC
2050 FLOAT
2051 SAVE
2052 FLOT01 /LENGTH OF BUFFER-A IS #SAMPLES * #CHANNELS
2053 TAD SAMA
2054 FLOAT
2055 FMUL
2056 FLOT01
2057 FIX
2058 DCA LNBUFA /LNBUFA IS POSITIVE
2059 LOAD
2060 FLOT01
2061 \f FMUL /FADEL IS # OF SAMPLE TIMES BACK
2062 FADEL
2063 FIX /GET PHYSICAL DISTANCE BACK
2064 TAD ADBUFA
2065 TAD KM0001
2066 CMA IAC
2067 DCA ADEL /-(ADBUFA +DISTANCE BACK)=ADEL
2068 LOAD /GET SAMPLES IN B
2069 FSAMB
2070 FIX
2071 TAD KM0001
2072 DCA SAMB
2073 TAD NCHB /GET PHYS. LENGTH OF BUFFER-B
2074 CMA IAC
2075 FLOAT
2076 SAVE
2077 FLOT01
2078 TAD SAMB
2079 FLOAT
2080 FMUL
2081 FLOT01
2082 FIX
2083 DCA LNBUFB /LENGTH OF B (IN LOCATIONS)
2084
2085 TAD ADBUFA /START OF ADC BUFFER FOR HIGH RESOLUTION-1
2086 TAD LNBUFA
2087 DCA ADBUFB /START OF ADC BUFFER FOR LOW RESOLUTION-1
2088
2089 LOAD /GET DISTANCE BACK IN BUFFER FOR START OF B
2090 FLOT01
2091 FMUL
2092 FBDEL
2093 FIX
2094 TAD ADBUFB
2095 TAD KM0001
2096 CMA IAC
2097 DCA BDEL /-(ADBUFA+DISTANCE BACK IN B)
2098
2099 TAD LNBUFA /IS THERE AN A-SWEEP?
2100 SNA CLA
2101 EJECT
2102
2103 JMP .+5 /NO, SET KBLA TO 0
2104 LOAD /POINTS TO GET AT SYNC TIME IN A
2105 FBLA
2106 FIX
2107 TAD KM0001
2108 DCA KBLA
2109
2110 TAD LNBUFB /IS THERE A B-SWEEP?
2111 SNA CLA
2112 JMP CON22A /NO- THERE ARE 0 POINTS TO GET AT SYNC TIME
2113 LOAD /YES
2114 FBLB
2115 FIX
2116 TAD KM0001
2117 \fCON22A, DCA KBLB /B-POINTS TO GET AT SYNC TIME
2118 LOAD /GET TIME FROM SYNC POINT TO SYNC TIME
2119 KSYTIM-1
2120 DFIX
2121 KSYTIM
2122 TAD ADJLIS /SET POINTER TO START OF JOB LIST
2123 IAC
2124 CON23, DCA TJPNTR /MAKE UP MULTIPLEXOR LIST
2125 TAD I TJPNTR /GET J1
2126 SNA
2127 JMP CON24 /J1=0 IMPLIES END OF LIST
2128 AND K4037 /GET CHANNEL ORDER AND SWEEP
2129 SPA
2130 IAC /SWEEP-B
2131 SNA SPA
2132 TAD NCHA /(ORDER 0, SWEEP A) OR SWEEP B
2133 AND K0037A
2134 TAD ADMPXA
2135 DCA TCHLOC /ADDRESS FOR ENTRY IN MX-LIST
2136 TCHLOC=TEMP01
2137 TAD I TJPNTR /GET CHANNEL # FOR THIS JOB
2138 RTR
2139 RTR
2140 RTR
2141 AND K0037A
2142 DCA I TCHLOC /STORE IN ADDRESS CALCULATED
2143 TAD K0007 /MOVE POINTER TO NEXT J1
2144 TAD TJPNTR
2145 JMP CON23
2146
2147 /LOCAL CONSTANTS
2148 KM0014, -0014
2149 K4037, 4037
2150 K0037A, 0037
2151 K0175A, 0175
2152
2153 /THIS SUBROUTINE GETS MAX-X FOR A DISPLAY GROUP
2154 EJECT
2155
2156 XMAXS, 0
2157 DCA TNPT /# OF POINTS
2158 TNPT=TEMP03
2159 JMS I SDISX /GET XZERO AND DELTAX
2160 JMP XMEXIT /NO MORE ENTRIES IN DISPLAY LIST
2161 LOAD /FIND #PTS*DELTAX+XZERO
2162 DELTAX
2163 DELTAX=FLOT01
2164 NORM /DELTAX*2^12
2165 TAD KM0014
2166 DCA FAC
2167 SAVE
2168 FLOT01 /DELTAX*2^12/2^12
2169 TAD FOP+1 /FOP HOLDS X0
2170 DCA TXZ
2171 TXZ=TEMP13
2172 \f TAD TNPT /#PTS*DELTAX
2173 FLOAT
2174 FMUL
2175 FLOT01
2176 DCOM
2177 TAD K0002
2178 FIX
2179 CLL RTR
2180 TAD TXZ /+(X-ZERO)
2181 DCA I BXPNTR /MAXIMUM-X FOR THIS DISPLAY
2182 TAD TXZ
2183 DCA FOP+1
2184 JMP I XMAXS
2185
2186 XMEXIT, ISZ XMAXS
2187 JMP I XMAXS
2188
2189 /LOCAL CROSSPAGE
2190 CON13Z, CON13
2191 SDISX, SDISS
2192
2193 /ASK LAST OF SWEEP PARAMETER QUESTIONS
2194 CON24, TAD K0175A /SWEEP TIME+(CALCTIME*ASI)/(AS1-125US)
2195 FLOAT
2196 FADD
2197 FASI
2198 SAVE /(ASI-125US)
2199 FLOT01 /TIME LEFT FOR CALCULATIONS BETWEEN INTERRUPTS
2200 LOAD /-TIME TO DO CALCULATIONS AT 100% PROCESSOR AVAILABILITY
2201 CALTIM
2202 FDIV /ADJUST FOR ACTUAL AVAILABILITY
2203 FLOT01
2204 FADD /INCLUDE TIME TO ACCEPT SWEEP
2205 FSWTIM
2206 FMUL
2207 FASI /PUT IN TERMS OF USEC
2208 FADD
2209 FASI
2210 SAVE
2211 CALTIM
2212 DCOM
2213 SETH /THIS IS MIN TIME BETWEEN SWEEPS
2214 DIS24
2215 FLTOUT
2216 CON24A, FRAME /"LEAST SWEEP INTERVAL
2217 DIS24 /'-----' ':'S [>SDDDDD MS]"
2218 JMP I CON13Z /L.F.: RE SELECT JOBS
2219 FLTARG
2220 JMP CON24A /FORMAT ERROR-TRY AGAIN
2221 \f SAVE
2222 FSYNTM
2223 FSYNTM=FLOT01
2224 FADD /BUSY TIME (CALTIM) .GT. INTER SYNC TIME?
2225 CALTIM
2226 TAD FAC+1
2227 SPA CLA
2228 JMP CON24A /YES-TRY AGAIN
2229 CLA CMA /NO- PUT EOL WORDS IN MX-LISTS
2230 TAD ADMPXB
2231 DCA MPXPNT
2232 MPXPNT=TEMP01
2233 CLL CLA CML RAR /FIRST PUT EOMX WORDS IN PLACE
2234 TAD I MPXPNT /4000+FIRST CHAN (ORD=0) IN A TO END OF MXA-LIST
2235 DCA I MPXPNT
2236 TAD I MPXPNT /4000+ORD(0) OF A TO END OF MXB-LIST
2237 DCA I ADCHNL
2238 LOAD /GET ITIM FOR S0 FIRING
2239 FSYNTM
2240 FDIV /PUT IN TERMS OF ASI
2241 FASI
2242 SAVE /- TIME FOR S0 TO FIRE
2243 FITIM
2244 FITIM=FLOT02
2245 LOAD
2246 FSWBEG /GET TIME FOR ADC BUFFER OPENING
2247 FADD
2248 KM001F
2249 TAD FAC+1 /DOES SWEEP BEGIN BEFORE SYNC?
2250 SPA CLA /- TIME OF SWEEP START
2251 JMP CON24B /NO
2252 FADD /YES- TIME IT FROM PREVIOUS SWEEP
2253 FITIM /CONSTRAINT IS THAT SWEEPS INTERVAL IS >ITIM
2254 CON24B, DFIX
2255 KWTIM /TIME TO OPEN BUFFER WINDOWS
2256 LOAD
2257 FASI
2258 DFIX /GET ASI IN USEC
2259 ASI
2260
2261 EJECT
2262
2263 CON25, FRAME /"AVERAGE '----' SWEEPS"
2264 DIS25
2265 JMP CON25 /CAN'T CHANGE JOBS OR SWEEP PARAMETERS
2266 DECARG
2267 JMP CON25 /FORMAT ERROR - ASK AGAIN
2268 CMA IAC
2269 DCA NSWEP /-# OF SWEEPS REQUIRED
2270 JMP CON26
2271
2272 /AUTO INDEX USE
2273 AXPNTR=10
2274 BXPNTR=11
2275 \f/GET PARAMETERS REQUIRED FOR DISPLAY WORD GENERATION
2276 PREDWS, 0
2277 DCA ND /# OF CURVES TO FIT ON SCOPE
2278 ND=TEMP03
2279 TAD ND /SET COUNT OF REQUIRED DISPLAY ENTRIES
2280 JMS SETCNS
2281 JMP I PREDWS /COUNT IS 0. EXIT
2282 CLA CMA /GET # OF COLUMNS REQUIRED
2283 TAD ND
2284 CLL RAR
2285 CLL RAR /(# OF CURVES/4)+1
2286 IAC
2287 FLOAT
2288 SAVE
2289 FLOT01 /# OF COLUMNS TO FIT ON SCOPE
2290 TAD ND /HOW MANY ROWS?
2291 BRAN
2292 K0002
2293 IAC /IF # OF CURVES IS 2, 2 ROWS (SCALE Y BY 2^1)
2294 SKP /IF # OF CURVES IS 1. 1 ROW (SCALE Y BY 2^0)
2295 TWO /OTHERWISE , 4 ROWS (SCALE Y BY 2^2)
2296 DCA YSS
2297 YSS=TEMP14
2298 TWOK /#POINTS ON DISPLAY *2
2299 FLOAT
2300 FDIV
2301 FLOT01
2302 FIX
2303 DCA XZD /DISTANCE BETWEEN COLUMNS *2
2304 XZD=TEMP15
2305 TAD YSS /GET Y-ZERO FOR 1ST ROW IN COLUMNS
2306 BRAN
2307 K0002
2308 TAD K0010 /4 ROWS, START AT Y=300
2309 TAD K0020 /2 ROWS, START AT Y=200
2310 DCA YZZ /1 ROW, START AT Y=000
2311 YZZ=TEMP16
2312 TAD YSS /GET Y-ZERO DECR TO GO FROM NTH TO N+1TH ROW
2313 CMA
2314 DCA TYSC
2315 TYSC=TEMP01
2316 TAD KM0200 /(-200)/2^(Y-SCALE+1)
2317 CLL CML RAR
2318 ISZ TYSC
2319 JMP .-2
2320 DCA YZD /0,-40,OR -20
2321 YZD=TEMP17
2322 TAD K1001A
2323 JMS PRESTY /SET UP FOR 1ST COLUMN
2324 JMP I PREDWS
2325 \f/SUBROUTINE PRESETS Y AND X FOR NEW COLUMN
2326 PRESTY, 0
2327 DCA XZ /X-ZERO IN AC
2328 XZ=TEMP20
2329 TAD YZZ /RESET TO TOP OF COLUMN
2330 DCA YZW
2331 YZW=TEMP21
2332 TAD KM0004 /4 ROWS (MAXIMUM) TO A COLUMN
2333 DCA UPCNT
2334 UPCNT=TEMP30
2335 JMP I PRESTY
2336
2337 /GET DISPLAY WORDS FOR A GROUP - ENTER WITH # OF PTS IN AC
2338 GETDWS, 0
2339 CMA IAC /#OF POINTS TO DISPLAY
2340 FLOAT
2341 SAVE
2342 FLOT01
2343 TAD XZD /DISTANCE BETWEEN COLUMNS
2344 FLOAT /2*ROOM AVAILABLE/#POINTS = X-DIST BETWEEN POINTS*2
2345 FDIV
2346 FLOT01
2347 TAD K0007 /SCALE BY 2^7
2348 FIX /(DELTA-X)*2^8
2349 AND K7760 /DELTAX(8),0(4)
2350 TAD YSS /DELTAX(8),Y-SCALE(4)
2351 DCA I AXPNTR /THIS IS D1.
2352
2353 TAD XZ /GET X-ZER0*2
2354 RTL
2355 AND K7700B /X-ZER0(6),0(6)
2356 TAD YZW /X-ZERO(6),Y-ZERO(6)
2357 DCA I AXPNTR /THIS IS D2.
2358
2359 TAD YZW /MOVE TO NEXT ROW
2360 TAD YZD
2361 AND K0077C
2362 DCA YZW
2363
2364 ISZ UPCNT /4 COLUMNS DONE?
2365 JMP .+4 /NO-CONTINUE
2366 TAD XZ /YES-MOVE TO NEXT COLUMN
2367 TAD XZD
2368 JMS PRESTY /SET UP FOR NEXT COLUMN.
2369 ISZ CHCNT /ALL GROUPS COMPLETE?
2370 JMP I GETDWS /NO-EXIT AT CALL+1
2371 ISZ GETDWS /YES-EXIT TO CALL+2
2372 JMP I GETDWS
2373
2374 \f/SET COUNT OF # OF GROUPS
2375 SETCNS, 0
2376 SNA
2377 JMP I SETCNS /0, EXIT AT CALL+1
2378 CMA IAC
2379 DCA CHCNT
2380 CHCNT=TEMP13
2381 ISZ SETCNS /NOT 0, EXIT AT CALL+2
2382 JMP I SETCNS
2383
2384 /LOCAL CONSTANTS
2385 K0077C, 0077
2386 K7700B, +7700
2387 K0020, +0020
2388 KM0200, -0200
2389 K7760, +7760
2390 K0010, 10
2391
2392 /MAKE UP DISPLAY ENTRIES FOR JOBS AND CHANNELS
2393 CON26, TAD ADJLIS /MAKE UP JOB DISPLAY WORDS
2394 DCA AXPNTR
2395 TAD TNJOB /NUMBER OF CURVES ON SCOPE
2396 JMS I PREDWX
2397 CON26A, TAD AXPNTR /SKIP J1,J2,J3
2398 TAD K0003
2399 DCA AXPNTR
2400 TAD I AXPNTR /J4 HOLDS -#OF POINTS
2401 ISZ AXPNTR /SKIP OVER J5
2402 JMS I GETDWX /J6 AND J7 ARE DISPLAY WORDS
2403 JMP CON26A /DO NEXT JOB
2404 TAD ADCHNL /ALL DONE
2405 DCA AXPNTR /MAKE UP CHANNEL DISPLAY WORDS
2406 TAD NCHA /GET NUMBER OF CHANNELS IN ALL
2407 TAD NCHB
2408 JMS I PREDWX /DIVIDE UP SCOPE FOR TOTAL # OF CHAN
2409 TAD NCHA
2410 JMS I SETCNX /SET COUNT OF DISPLAYS WITH "SAMA" POINTS
2411 JMP CON26B /NONE-TRY LO-RESOLUTION
2412 TAD SAMA /SET UP DISPLAY FOR HI CHANS
2413 JMS I GETDWX
2414 JMP .-2
2415 CON26B, DCA I AXPNTR /EOL WORD FOR HI INPUTS
2416 TAD NCHB /SET COUNT OF DISPLAYS WITH "SAMB" POINTS
2417 JMS I SETCNX
2418 JMP CON26C /NONE-GO TO MODIFY
2419 TAD SAMB /SET UP DISPLAY FOR LO CHANS
2420 JMS I GETDWX
2421 JMP .-2
2422 CON26C, DCA I AXPNTR /EOL WORD FOR LO INPUTS
2423 \f/DISPLAY AND MODIFY INPUT PRESENTATION
2424 TAD ADCHNL /GET X-MAXIMA FOR EACH INPUT
2425 DCA AXPNTR
2426 TAD ADBUFA /PUT IN ADC BUFFER
2427 DCA BXPNTR
2428 TAD I ADCHNL /PUT 1ST CHAN IN ADMPXA
2429 DCA I ADMPXA
2430 TAD SAMA /GET HI RESOLUTION X-MAX'S
2431 JMS I XMAXX
2432 JMP .-2
2433 TAD SAMB /GET LO RESOLUTION X-MAX'S
2434 JMS I XMAXX
2435 JMP .-2
2436 DCA TMOD /TMOD=0 FOR NO MODIFICATIONS
2437 TMOD=TEMP16
2438 CON27, TAD ADCHNL /DISPLAY WORDS BEGIN AT ADCHNL-1
2439 JMS I CON1SX
2440 FRAME /"$FA41INPUTS$AP21"
2441 DIS27
2442 NOP /THIS IS SKIPPED
2443 JMS I CRBRAX /BRANCH ON KEYBOARD
2444 JMP .+3 /NO CHARACTER
2445 JMP CON29 /C.R.:ALLOCATION OK
2446 NOP /L.F. FORGET IT
2447 CLA CMA /OTHER: GET CHANNEL NUMBERS IN ORDER
2448 TAD ADMPXA
2449 DCA CXPNTR
2450 CXPNTR=12
2451 CON27A, JMS SDISS
2452 JMP CON27B /OUT OF HI CHANNELS-GO TO LOW
2453 TAD K1000B /PUT "H@" IN SWEEP MESSAGE
2454 JMS I CON2SX /DISPLAY DOTS AND MESSAGE
2455 JMP CON27A /GET NEXT CHANNEL
2456 CON27B, ISZ CXPNTR /SKIP OVER FIRST OF HI
2457 JMS SDISS
2458 JMP CON27 /OUT OF CHANNELS, RESTART
2459 TAD K1400 /PUT "L@" IN SWEEP MESSAGE
2460 JMS I CON2SX /DISPLAY DOTS AND MESSAGE
2461 JMP CON27B+1
2462
2463 /LOCAL CONSTANTS
2464 K1000B, 1000
2465 K1400, 1400
2466 KM0006, -0006
2467 \f/LOCAL CROSSPAGE
2468 XMAXX, XMAXS
2469 OTTY, CON30-1
2470 CON1SX, CON1S
2471 CON2SX, CON2S
2472 CRBRAX, CRBRAS
2473 GETDWX, GETDWS
2474 PREDWX, PREDWS
2475 SETCNX, SETCNS
2476
2477 /THIS SUBROUTINE DECODES DISPLAY WORDS: SDIS
2478 /POINTER IS AUTOINDEX REGISTER "AXPNTR"
2479 /CALL: SDIS
2480 / END OF LIST RETURN
2481 / NORMAL RETURN
2482
2483 SDISS, 0
2484 TAD I AXPNTR /DX (8),YS(4)
2485 SNA
2486 JMP I SDISS /EOL IF D1=0, RETURN TO CALL+1
2487 DCA SHFR+1
2488 TAD SHFR+1
2489 AND K0017 /HAVE Y SCALE FACTOR
2490 DCA YS
2491 YS=TEMP17
2492 DCA SHFR /0 TO HI FAC
2493 TAD K0004
2494 IAC
2495 SHFT /MOVE BINARY POINT TO END OF SHFR+1
2496 SAVE /DX(8) IS INTEGER PART (5), FRACTIONAL PART (3)
2497 DELTAX
2498 TAD I AXPNTR /XZ(6),YZ(6)
2499 DCA SHFR+1
2500 TAD K0004 /MOVE YZ TO 10 SIGNIF, BITS
2501 SHFT
2502 TAD SHFR+1
2503 DCA YZ /POSITION OF Y-ZERO
2504 YZ=TEMP20
2505 TAD KM0006 /MOVE XZ TO 10 BITS OF SHFR+1
2506 SHFT
2507 TAD SHFR+1
2508 AND KM0006 /7772 - IGNORE SCALE PART (MOSTLY)
2509 DILX /LOAD X
2510 DCA DBLARG /DBLARG & DBLARG+1 HOLD X-POSITION
2511 ISZ SDISS /EXIT TO CALL+2
2512 JMP I SDISS
2513 \f/SUBROUTINE SCALES, BIASES, AND DISPLAYS Y: YDIS
2514 /USES "YS", "YZ", FROM SDIS, Y VALUE IN DBLAC AT CALL
2515 YDISS, 0
2516 DCA SHFR /VALUE TO BE SCALED, BIASED
2517 TAD YS /SCALE IT
2518 CMA IAC
2519 SHFT
2520 TAD YZ /ADD BIAS
2521 TAD SHFR /GET SCALED VALUE
2522 DILY /DISPLAY IT
2523 CLA
2524 DISD
2525 JMP .-1
2526 DIXY
2527 JMP I YDISS
2528
2529 CON29, DCA I ADMPXA /REPLACE EOL FOR JOB LIST
2530 LOAD /ASI BETWEEN SYNCS
2531 FITIM
2532 DFIX /FIX TO DOUBLE-WORD
2533 KITIM
2534 TAD ADBUFA /PUT X-MAXIMUMS IN ADC BUFFER
2535 DCA BXPNTR
2536 TAD ADJLIS /TAKE PARAMETERS FROM JOB LIST
2537 DCA AXPNTR
2538 CON29A, TAD I AXPNTR /LOOK AT J1
2539 SNA CLA
2540 JMP I OTTY /J1=0,END OF LIST
2541 ISZ AXPNTR /SKIP J2,J3
2542 ISZ AXPNTR
2543 TAD I AXPNTR /J4 HAS # OF POINTS
2544 ISZ AXPNTR /SKIP J5
2545 JMS I XMAXY /FIND MAX-X USING J6 AND J7
2546 JMP I CON29B /GET NEXT JOB
2547
2548 DCA TMOD /MODIFY WHICH? -0 (NONE) TO BEGIN WITH
2549 CON30, TAD ADJLIS
2550 JMS I CON1SY /INITIALIZE POINTERS & COUNTERS
2551 FRAME /"$EA41AVERAGES$"
2552 DIS30
2553 CON1SY, CON1S /SKIPPED
2554 JMS CRBRAS /BRANCH ON CR OR LF
2555 JMP CON30A /NEITHER CR OR LF
2556 JMP CON32 /C.R.:ALLOCATION OK
2557 JMP CON30A /L.F.:CHANGE ALLOCATION
2558
2559 /LOCAL CROSSPAGE
2560 SDISZ, SDISS
2561 CON29B, CON29A
2562 \fCON30A, TAD I AXPNTR /DISPLAY AVERAGES ALLOCATIONS
2563 SNA CLA /J1=0?
2564 JMP CON30 /YES-START OVER
2565 ISZ AXPNTR /SKIP J2 AND J3
2566 ISZ AXPNTR
2567 TAD I AXPNTR /J4 HAS # OF POINTS
2568 DCA TPSAVE
2569 TPSAVE=TEMP02
2570 ISZ AXPNTR /SKIP J5
2571 JMS I SDISZ /SET UP DISPLAY: J6 J7 ARE DISPLAY WORDS
2572 DLIMX, DLIMS /SKIPPED
2573 SETH
2574 DIS30A /DISPLAY LIMIT DOTS AND JOB #
2575 JMS I DLIMX /LIMIT DOTS, PUT JOB # IN BUFFER
2576 SETH
2577 DIS30A /JOB#
2578 LDH
2579 JMS I DSCX
2580 JMP .-2
2581 JMP CON30A /GET NEXT JOB
2582 \f
2583 F4K, 0015
2584 2000
2585 0000
2586
2587 TEMP, 0
2588 0
2589 0
2590 \f
2591 /LOCAL CROSSPAGE
2592 XMAXY, XMAXS
2593 DSCX, DSCS
2594
2595
2596 /SUBROUTINE TO BRANCH AND ECHO KBD CR OR LF
2597 CRBRAS, 0
2598 KSF /KEYBOARD STRUCK?
2599 JMP I CRBRAS /NO-EXIT TO CALL+1
2600 KRB /YES- READ IT IN
2601 BRAN /CHECK FOR CR OR LF
2602 CRLF
2603 ISZ CRBRAS /LF - EXITS TO CALL+3
2604 SKP /CR - EXITS TO CALL+2
2605 JMP I CRBRAS /OTHER - EXITS TO CALL+1
2606 TAD KCR /FOR CR OR LF - TYPE CRLF
2607 TYPE
2608 ISZ CRBRAS /EXIT TO CALL+2(CR) OR CALL+3(LF)
2609 JMP I CRBRAS
2610 \f *4372
2611 /OUTPUT CONTROL TAPE OR MODIFY MEMORY
2612 CON32, FRAME /"PUNCH CONTROL TAPE? '-'
2613 DIS32 /(Y: YES)"
2614 JMP CON32 /LF: CAN'T GO BACK - ASK AGAIN
2615 DCA TENPUN /INITIALIZE FOR "NO PUNCH"
2616 TENPUN=TEMP30
2617 ALPHA /GET RESPONSE
2618 BRAN
2619 YESNO
2620 ISZ TENPUN /Y: YES, TENPUN=1 TO ALLOW PUNCHING
2621 CLA /*** TITLE NOT ASKED,A MS. DEVICE WRITTEN ON.
2622 SNA CLA /OTHER
2623 JMP CON32B /NO PUNCH - DON'T ASK FOR TITLE
2624 CON32A, FRAME /"TITLE:
2625 DIS32A /'-------------'"
2626 JMP CON32A /LF: ASK AGAIN
2627 JMS I INITOX /INITIALIZE SYS DEVICE (OUTPUT)
2628 TAD TXMRK /MOVE HALFWORD POINTER TO TITLE
2629 SRCH
2630 K0006B, 0006 /SKIPPED
2631 JMS I TITLEX /VISUAL MODE TITLE ON TAPE
2632 TXPUN /DO 3 CRLF'S
2633 TXCRLF
2634 SETH /REPOSITION HALFWORD POINTER TO TITLE
2635 DIS32A
2636 TPUNQ /OUTPUT TITLE TO SYS DEV.
2637 CON32B, TXPUN /"<CRLF>SWEEP SUMMARY<CRLF>"
2638 TXT32
2639 TXPUN /OUTPUT SUMMARY
2640 DIS09 /END WITH 2 CRLF'S
2641 TXPUN /" AVERAGES
2642 TXT32A /CHAN RATE TYPE SORT<CRLF>"
2643 CON33, TAD ADJLIS /GO THRU JOB LIST FOR THIS INFO
2644 IAC
2645 DCA TOPNT
2646 TOPNT=TEMP07
2647 \fCON33A, SETH /".XX.....X....X....XXX<CRLF>"IS FORMAT
2648 TXT33A
2649 TAD I TOPNT /GET J1
2650 SNA /J1=0?
2651 JMP I CON34X /YES-END OF JOB LIST
2652 DCA SHFR /J1 = A/B(1), CHAN#(5), 1(1), CHAN ORDER (5)
2653 ISZ TOPNT
2654 TAD I TOPNT /J2=TYPE (4), SORT CODE (8)
2655 DCA SHFR+1
2656 TAD SHFR+1 /GET SORT CODE
2657 AND K0377
2658 DCA TCNTG
2659 TCNTG=TEMP03
2660 TAD KM06 /SHIFT J1,J2 RIGHT 6
2661 SHFT
2662 TAD SHFR /CHAN # IN AC7-11
2663 AND K0037B
2664 DCA TCHN
2665 TCHN=TEMP04
2666 MTW /MOVE JOB TYPE TO SHFR+1 BITS 8-11
2667 SHFT
2668 TAD SHFR /SIGN EXTENSION IN SHFTS SO BIT 0 OF SHFR HOLDS A/B
2669 SPA CLA
2670 TAD K0004 /L FOR LO
2671 TAD K4010 /H FOR HI
2672 DCA I TXT33X /PUT IT IN MESSAGE
2673 TAD SHFR+1
2674 AND K0017 /GET TYPE
2675 DCA TJOB
2676 TJOB=TEMP05 /OUTPUT CHAN # TO BUFFER
2677 TAD TCHN
2678 OCTOUT
2679 TAD TJOB /OUTPUT TYPE TO BUFFER
2680 OCTOUT
2681 TAD TCNTG /OUTPUT SORT CODE TO BUFFER
2682 OCTOUT
2683 TXPUN /OUTPUT BUFFER TO TTY
2684 TXT33A
2685 TAD K0006B /MOVE TO NEXT J1
2686 TAD TOPNT
2687 DCA TOPNT
2688 JMP CON33A /DO NEXT JOB
2689 \f/SUBROUTINE TO DISPLAY DOTS AT EXTREMA,POSITION, DSC,AND SEQ.
2690 DLIMS, 0
2691 TAD FOP+1 /SET X TO X-ZERO
2692 DILX
2693 CLA IAC
2694 TAD KM1000 /SET Y TO BOTTOM
2695 JMS I YDISX /DISPLAY LOWER LEFT DOT
2696 TAD K0777 /SET Y TO TOP
2697 JMS I YDISX /DISPLAY UPPER LEFT
2698 TAD I BXPNTR /SET X TO MAX
2699 DILY /DISPLAY UPPER RIGHT
2700 DISD
2701 JMP .-1
2702 DIXY
2703 CLA IAC
2704 TAD KM1000 /SET Y TO BOTTOM
2705 JMS I YDISX /DISPLAY BOTTOM RIGHT
2706 TAD FOP+1 /POSITION DSC
2707 DCA I XDSCX
2708 TAD YZ /IN MIDDLE RIGHT OF FIELD
2709 DCA I YDSCX
2710 ISZ TDCNTR /NEXT SEQUENCE #
2711 TAD TDCNTR /PUT IT IN MESSAGE FOR DISPLAY
2712 OCTOUT
2713 JMP I DLIMS
2714
2715 /LOCAL CROSSPAGE
2716 XDSCX, CHXL
2717 YDSCX, CHYL
2718 YDISX, YDISS
2719 K0777, 777
2720
2721 /SUBROUTINE TO INITIALIZE PARAM POINTERS AND DISPLAY MESSAGE
2722 CON1S, 0
2723 DCA AXPNTR /POINTER TO DISPLAY WORDS
2724 TAD ADBUFA /POINTER TO X-MAX LIST
2725 DCA BXPNTR
2726 DCA TDCNTR /SET SEQUENCE # TO 0
2727 TDCNTR=TEMP14
2728 TAD TMOD /SET MODIS COUNTER
2729 DCA TMDCNT
2730 TMDCNT=TEMP15
2731 JMP I CON1S
2732 \f/SUBROUTINE TO DISPLAY LIMIT DOTS WITH MESSAGE FOR INPUT DISPLAY
2733 CON2S, 0
2734 DCA I DIS27X /PUT SWEEP TYPE IN MESSAGE
2735 SETH /"XX:XX,X"
2736 DIS27A
2737 JMS DLIMS /DISPLAY LIMIT DOTS AND FILL ITEM #
2738 TAD I CXPNTR /GET CHANNEL NUMBER
2739 AND K0037B
2740 OCTOUT /FILL SPACE FOR CHAN # IN MESSAGE
2741 SETH /DISPLAY THE MESSAGE
2742 DIS27A
2743 LDH
2744 JMS I DSCY
2745 JMP .-2
2746 JMP I CON2S
2747
2748 /LOCAL CROSSPAGE
2749 DSCY, DSCS
2750 DIS27X, DIS27A+5
2751
2752
2753 /LOCAL CONSTANTS
2754 KM1000, -1000
2755 K4010, 4010
2756 K0037B, 0037
2757 KM06, -6
2758
2759 /LOCAL CROSSPAGE
2760 INITOX, INITOS
2761 TPUNQ=JMS I .
2762 TPUNQS
2763 TXPUN=JMS I .
2764 TXPUNS
2765 TITLEX, TITLES
2766 TXT33X, TXT33A+4
2767 CON34X, CON34
2768 \f
2769 *4603
2770 /SUBROUTINES TO HANDLE DISPLAY IO [SU46AB]
2771 /HAND READABLE PUNCH SUBROUTINE: TITLE
2772 HCNTR=TEMP02
2773
2774 /CALL: SETH
2775 / ADDR OF TEXT TO BE USED IN TITLE
2776 / TITLE
2777
2778 TITLES, 0
2779 TAD K0377 /PUNCH A RUBOUT (BRACKET TITLE WITH RUBOUTS)
2780 JMS I PUNX1
2781 JMP PSKIP-1 /PUNCH A SPACE (6-200 CODES)
2782 HRNXT, LDH /GET 6 BIT CHAR
2783 CLL RAL
2784 TAD ADRTBL /FIND ENTRY IN DISPLAY TABLE
2785 DCA PNTR
2786 TAD I PNTR /GET THE ENTRY
2787 SNA CLA /SEE IF SPECIAL CHARACTER
2788 JMP HRCHK /SPECIAL - FIND OUT WHAT TO DO
2789 JMS I SHPX1 /SAVE HALFWORD POINTER FOR MORE CHARACTERS
2790 TAD KM0004 /FOUR HALF WORDS TO A CHARACTER
2791 DCA HCNTR
2792 SETH
2793 PNTR, 0 /SET UP POINTER FOR TABLE PUNCH
2794 HRPUN, LDH /GET LINE
2795 TAD K0200A /8 HOLE PUNCHED TOO
2796 JMS I PUNX1 /PUNCH THE LINE
2797 ISZ HCNTR
2798 JMP HRPUN /MORE HALVES
2799 JMS I RHPX1 /ALL PUNCHED - RESTORE TEXT POINTER
2800 MTW /SKIP TWO LINES
2801 JMP PSKIP
2802 HRCHK, ISZ PNTR /SPECIAL CHAR FIND OUT
2803 TAD I PNTR /WHAT TO DO
2804 SMA SZA /SPACE OR END OF TEXT?
2805 JMP HRNXT /NO, IGNORE AND GET NEXT CHARACTER
2806 SNA CLA /END OF TEXT?
2807 JMP TILEND /YES - GO PUNCH RUBOUT AND EXIT
2808 LDH /SPACE - SEE IF NEXT CHARACTER IS A SPACE
2809 TAD KM040A
2810 SNA CLA
2811 JMP .-3 /YES - COMPRESS MULTIPLE SPACE TO 1 SPACE
2812 JMS I DHPX2 /MOVE BACK HALFWORD POINTER
2813 TAD KM006 /AND PUNCH A SPACE
2814 EJECT
2815
2816 PSKIP, DCA HCNTR /PUNCH 6 LINES OF 200 CODE
2817 TAD K0200A
2818 JMS I PUNX1
2819 ISZ HCNTR /DONE 6 LINES?
2820 JMP .-3 /NO - CONTINUE
2821 JMP HRNXT /YES - GET NEXT CHARACTER
2822 TILEND, TAD K0377 /PUNCH A RUBOUT AND EXIT
2823 JMS I PUNX1
2824 JMP I TITLES
2825 \f/LOCAL CONSTANTS
2826 KM006, -6
2827 KM040A, -40
2828 ADRTBL, DSCTBL
2829
2830 /LOCAL CROSSPAGE
2831 PUNX1, PUNCHS /PUNCH A CHARACTER
2832 DHPX2, DHPS /MOVE BACK 1 CHARACTER
2833
2834 /SUBROUTINE TO DO Q AND A BETWEEN TTY AND DIS: FRAME
2835 / FRAME
2836 / [FRAME NAME /ADDRESS OF TEXT TO BE DISPLAYED
2837 / L.F. RETN /L.F. AT ANYTIME RETURNS HERE
2838 / C.R. RETN /C.R. AFTER FINAL BLANK RETURNS HERE
2839 FRAMES, 0
2840 CLA
2841 TAD I FRAMES /GET ADDRESS
2842 DCA FRSET
2843 ISZ FRAMES /MOVE RETURN TO CALL+2
2844 JMS FRSETH /MOVE POINTER TO START OF TEXT
2845 JMS I TXIX /PUT BLANK MARKS IN KBD AREAS
2846 JMS FRDIS /DISPLAY THE TEXT
2847 JMS FRSETH /MOVE POINTER TO START OF TEXT
2848 FRQUES, TAD TXMRK /GET KBD AREA
2849 SRCH
2850 JMP FREND /END OF TEXT - EXIT
2851 FRLOOP, JMS I SHPX1 /SAVE TEXT POINTER
2852 JMS FRDIS /DISPLAY TEXT
2853 JMS I RHPX1 /RESTORE TEXT POINTER
2854 JMS I TXKX /ACCEPT A CHARACTER INTO BUFFER.
2855 JMP FRLOOP /NORMAL RETURN
2856 JMP FREND+1 /L.F. - EXIT TO CALL+2
2857 JMP FRQUES /C.R. - GET NEXT KBD AREA
2858 FREND, ISZ FRAMES /NO MORE KBD AREAS TO FILL
2859 JMS FRSETH /REPOSITION TEXT POINTER
2860 JMP I FRAMES /EXIT
2861
2862 FRSETH, 0
2863 SETH /REPOSITION TEXT POINTER
2864 FRSET, 0 /TO START OF FRAME
2865 JMP I FRSETH
2866
2867 FRDIS, 0 /DISPLAY THE FRAME
2868 SETH /INITIALIZE DISPLAY
2869 DSINIT
2870 LDH /X0,Y0,SIZE,INTENSITY
2871 JMS I DSCX1
2872 JMP .-2
2873 JMS FRSETH /REPOSITION TEXT POINTER
2874 LDH /DISPLAY THE CHARACTERS
2875 JMS I DSCX1 /OF THE FRAME
2876 JMP .-2
2877 JMP I FRDIS /TEXT ENDED
2878 \f/DISPLAY INITIALIZE
2879 DSINIT, 4411 /$AH10@
2880 1010 /X=000, Y=001, SIZE=10,
2881 0000
2882
2883 /LOCAL CROSSPAGE
2884 TXIX, TXIS /PUT BLANKMARKS IN KBD ENTRIES
2885 TXKX, TXKS /GET KBD INTO KBD AREA
2886 DSCX1, DSCS /DISPLAY CHARACTER
2887 RHPX1, RHPS /RESTORE HALFWORD POINTER
2888 SHPX1, SHPS /SAVE HALFWORD POINTER
2889
2890 /THIS SUBROUTINE GETS OCTAL ARGUMENT: OCTARG
2891 OCTOP=ARITH4
2892 OCTARS, 0
2893 JMS I ARSETX /GET TO KBD - ENTRY
2894 OCNEXT, LDH /GET CHARACTER
2895 BRAN
2896 OCSORT /IS IT SPACE OR TXMRK?
2897 JMP OCNEXT /SPACE IGNORE
2898 JMP OCEND /TXMRK - END
2899 JMS I STRNUX /OTHERS - IS IT A NUMERIC?
2900 JMP I OCTARS /NO - EXIT TO CALL+1 (ERROR RETURN)
2901 TAD KM007A /NUMERIC 0-7?
2902 SMA SZA CLA
2903 JMP I OCTARS /NO - ERROR RETURN
2904 LOAD /SHIFT ACCUMULATED SUM 3 LEFT
2905 OCTOP-1 /(MULTIPLIES BY 8)
2906 TAD STRSAV /ADD CURRENT DIGIT
2907 DCA OCTOP+1
2908 TAD K0003
2909 SHFT /NEW ACCUMULATED SUM
2910 DADD
2911 JMP OCNEXT /NEXT CHARACTER
2912 OCEND, TAD OCTOP /OVERFLOW ?
2913 SZA CLA
2914 JMP I OCTARS /YES - ERROR RETURN
2915 TAD OCTOP+1 /NO - GET ACCUMULATED SUM
2916 ISZ OCTARS /EXIT TO CALL+2
2917 JMP I OCTARS
2918
2919 /CONSTANTS THIS PAGE
2920 KM007A, -7
2921 K0200A, 0200
2922 ARSETX, ARSET
2923 STRNUX, STRNUM
2924
2925
2926 \f*5000
2927 /REQ: [SU60A],[SU64A]; THIS IS [SU50AC]
2928 /DISPLAY STRIPPED ASCII CHAR IN AC: DSC
2929 /CALL: LDH /GET HALFWORD
2930 / DSC /DISPLAY IF NON ZERO
2931 / JMP .-2 /DISPLAY THE NEXT HALFWORD
2932
2933 /TEMPORARY STORAGE:
2934 CHCNT3=TEMP02
2935 CHCNT2=TEMP03
2936 CHCNT1=TEMP04
2937 CHROT=TEMP05
2938 CHFAC=TEMP01
2939 CHPNT=TEMP06
2940 CHYS=TEMP01
2941
2942 /DISPLAY TABLE EXCEPTIONS
2943 SPACE=7777
2944 ENDIS=0
2945 RESET=1
2946 CRETN=2
2947 IGNOR=3
2948
2949 DSCS, 0
2950 CLL RAL /TWICE STRIPPED ASCII
2951 TAD ADSTBL /FOR TABLE POINTER
2952 DCA CHPNT
2953 TAD I CHPNT /GET DISPLAY WORD 1
2954 ISZ CHPNT /SET FOR NEXT DISPLAY WORD 2
2955 SNA /NOT SPECIAL CHARACTER?
2956 JMP CHSPEC /SPECIAL CHARACTER
2957
2958 CHSET1, DCA CHROT /HOLDS ROTATED DISPLAY WORD
2959 TAD CHXL /MOVE TO NEXT X POSITION
2960 DILX
2961 MTW /NUMBER OF WORDS IS TWO
2962 DCA CHCNT3
2963 CHSET2, MTW /NUMBER OF LINES PER WORD IS TWO
2964 DCA CHCNT2
2965 CHSET3, TAD KM006A /NUMBER OF POINTS IN A LINE IS SIX
2966 DCA CHCNT1
2967 TAD CHYL /REPOSITION Y AT BOTTOM OF CHARACTER
2968 DCA CHYS
2969 \fCHDIS, TAD CHROT
2970 CLL RAL /GET DISPLAY BIT FOR THIS POINT INTO LINK
2971 DCA CHROT /STORE CODE WORD FOR NEXT POINT
2972 TAD CHYS /LOAD INTENSIFICATION POSITION
2973 DILY
2974 SNL /DISPLAY IF LINK=1
2975 JMP .+4
2976 DISD
2977 JMP .-1
2978 DIXY
2979 TAD CHSIZ /GO NEXT POSSIBLE DOT
2980 DCA CHYS /KEEP RECORD OF PRESENT POSITION
2981 ISZ CHCNT1 /DO ALL THIS SIX TIMES
2982 JMP CHDIS
2983 TAD CHXL /MOVE X TO NEXT LINE
2984 TAD CHSIZ
2985 DILX
2986 DCA CHXL
2987 ISZ CHCNT2 /HAS SECOND HALF BEEN DONE?
2988 JMP CHSET3 /NO, DO IT
2989 TAD I CHPNT /GET SECOND WORD
2990 DCA CHROT /AND DISPLAY IT
2991 ISZ CHCNT3
2992 JMP CHSET2
2993 TAD CHSIZ /BOTH WORDS DONE - DO TWO EMPTY ROWS
2994 CLL RAL /(SPACE OVER 2 LINES)
2995 TAD CHXL
2996 DCA CHXL
2997 JMP I DSCS /THEN EXIT AT CALL+1
2998
2999 CHSPEC, TAD I CHPNT /SPECIAL CHARACTER-GET WORD 2 FOR BRANCH
3000 TAD CHJMP /SETUP FOR JMP TO
3001 DCA .+1 /SPECIAL ROUTINE
3002 JMP I CHJMPL /THIS IS THE JUMP
3003
3004 /DISPATCH TABLE FOR ABOVE JMP
3005 CHJMPL, CHSPA /JUMP TABLE: SPACE
3006 CHEND /END OF TEXT
3007 CHREST /NEXT 4 CHARACTERS RESET X, Y, DELTA, INTENSITY
3008 CHCR /DO A CARRIAGE RETURN, LINE FEED
3009 CHEND+1 /IGNORE
3010
3011 CHEND, ISZ DSCS /ATTEMPT TO DSC E.O.T. MARK
3012 JMP I DSCS /EXIT TO CALL +2CS
3013
3014 /SPACE: MOVE X RIGHT 6 INCREMENTS
3015 EJECT
3016
3017 CHSPA, TAD CHSIZ
3018 CLL RTL /4 TIMES SIZE
3019 DCA CHFAC
3020 TAD CHSIZ
3021 CLL RAL /PLUS 2 TIMES SIZE
3022 TAD CHFAC /IS SIX TIMES SIZE
3023 TAD CHXL /MOVE X POINTER LEFT
3024 DCA CHXL /ONE CHARACTER (6 LINES)
3025 JMP I DSCS
3026
3027 \f/$-DISPLAY RESET
3028 CHREST, LDH /NEXT HALFWORD "A"-"P"
3029 TAD KM0001 /GETS X POSITION
3030 AND K0017 /"A" IS LEFT MARGIN, "P" IS RIGHT MARGIN
3031 CLL RTL
3032 RTL
3033 RTL
3034 DCA CHXL /64 POINTS BETWEEN "A" AND "B"
3035 CHYPOS, LDH /NEXT HALF WORD GETS Y POSITION
3036 AND K0017 /"A"-"P"
3037 CLL RTL
3038 RTL
3039 RTL
3040 CMA IAC
3041 TAD K1001 /"A" IS TOP OF SCREEN. "B" IS BOTTOM
3042 DCA CHYL /64 POINTS BETWEEN "A" AND "B"
3043 CHCSZ, LDH /NEXT CHARACTER GETS SIZE OF CHARACTER -"4" IS NORMAL
3044 AND K0017 /ELIMINATE ALL BUT BITS 8-11
3045 DCA CHSIZ /STORE DESIRED CHARACTER SIZE
3046 JMP I DSCS
3047
3048 /CR-LF: RETURN X TO LEFT MARGIN, MOVE Y DOWN 8 INCREMENTS
3049 CHCR, TAD K1001
3050 DCA CHXL /RESET X TO 0
3051 TAD CHSIZ /8 TIMES CHAR SIZE
3052 CLL RTL
3053 RAL
3054 CMA IAC /SUBTRACT FROM Y POSITION
3055 TAD CHYL
3056 DCA CHYL /NEW Y POSITION
3057 JMP I DSCS
3058
3059 /CONSTANTS USED THIS PAGE ONLY
3060 CHJMP, JMP I CHJMPL+1
3061 ADSTBL, DSCTBL
3062 KM006A, -6
3063 K1001, 1001
3064
3065 /VARIABLES FOR THIS PAGE
3066 CHXL, 0 /X LOCATION ON SCOPE
3067 CHYL, 0 /Y LOCATION OF CURRENT LINE
3068 CHSIZ, 0 /CHARACTER SIZE CONSTANT
3069 \f/DISPLAY TABLE - PATTERN MATRICES FOR CHARACTERS
3070 DSCTBL, 0 /@ SPECIAL, MEANS END OF TEXT
3071 ENDIS
3072
3073 7711 /A
3074 1177
3075
3076 7745 /B
3077 4532
3078
3079 3641 /C
3080 4122
3081
3082 7741 /D
3083 4136
3084
3085 7751 /E
3086 5141
3087
3088 7711 /F
3089 1101
3090
3091
3092 3641 /G
3093 5132
3094
3095 7710 /H
3096 1077
3097
3098 0077 /I
3099 0000
3100
3101 2040 /J
3102 4037
3103
3104 7714 /K
3105 2241
3106
3107 7740 /L
3108 4040
3109
3110 7706 /M
3111 0677
3112
3113 7704 /N
3114 1077
3115
3116 3641 /O
3117 4136
3118
3119 7711 /P
3120 1106
3121
3122 1621 /Q
3123 3156
3124 \f 7711 /R
3125 3146
3126
3127 2245 /S
3128 4530
3129
3130 0101 /T
3131 7701
3132
3133 7740 /U
3134 4077
3135
3136 3740 /V
3137 2017
3138
3139 7730 /W
3140 4077
3141
3142 6314 /X
3143 1463
3144
3145 0770 /Y
3146 7007
3147
3148 6151 /Z
3149 4543
3150
3151 0617 /[ DISPLAYED AS #
3152 1706
3153
3154 1057 /\ DISPLAYED AS DOWN ARROW
3155 1000
3156
3157 2313 /] DISPLAYED AS %
3158 6462
3159
3160 0475 /^
3161 0400
3162
3163 0416 /_
3164 2504
3165
3166 0 /SPACE IS A SPECIAL CHARACTER
3167 SPACE
3168
3169 0057 /!
3170 0000
3171
3172 0 /" SPECIAL, MARKS PROG INPUT TO TEXT, NOT DISPLAYED
3173 IGNOR
3174
3175 0 /# SPECIAL, IGNORES
3176 IGNOR
3177 \f 0 /$ SPECIAL, DISPLAY RESET FOLLOWS
3178 RESET
3179
3180 0 /% SPECIAL, DOES CARRIAGE RETURN
3181 CRETN
3182
3183 4040 /& - USED IN Q&A BLANKS
3184 4040
3185
3186 0 /' SPECIAL, MARKS KBD INPUT TO TEXT, NOT DISPLAYED
3187 IGNOR
3188
3189 7741 /( DISPLAYED AS [
3190 4100
3191
3192 0041 /) DISPLAYED AS ]
3193 4177
3194
3195 2214 /* DISPLAYED AS LITTLE X
3196 1422
3197
3198 0010 /+
3199 3410
3200
3201 0050 /,
3202 3000
3203
3204 0404 /-
3205 0400
3206
3207 0040 /.
3208 0000
3209
3210 2010 //
3211 0402
3212
3213 3651 /0
3214 4536
3215
3216 0042 /1
3217 7740
3218
3219 6251 /2
3220 5146
3221
3222 2241 /3
3223 4532
3224
3225 1412 /4
3226 7710
3227
3228 2745 /5
3229 4531
3230 \f 3645 /6
3231 4530
3232
3233 4111 /7
3234 0503
3235
3236
3237 3245 /8
3238 4532
3239
3240 0651 /9
3241 5136
3242
3243 2400 /:
3244 0000
3245
3246 0040 /;
3247 3200
3248
3249 1422 /<
3250 4100
3251
3252 0012 /=
3253 1212
3254
3255 4122 />
3256 1400
3257
3258 0251 /?
3259 0502
3260 \f/FLOATING VARIABLES
3261 FLOT03, 0
3262 0
3263 0
3264
3265 FLOT04, 0
3266 0
3267 0
3268
3269 FLOT05, 0
3270 0
3271 0
3272
3273 FLOT06, 0
3274 0
3275 0
3276
3277 FLOT07, 0
3278 0
3279 0
3280
3281 FLOT10, 0
3282 0
3283 0
3284
3285 /TTY-LST
3286 CRTX, 45 /CR
3287 -47 /TXMRK
3288
3289 \f*5400
3290 /SUBROUTINES TO HANDLE FLOATING, DECIMAL, AND OCTAL IO [SU54AB]
3291 /REQUIRES [SU60A] [SU62A], [SU63A], [SU64A]
3292
3293 /SUBROUTINE CONVERTS AC TO OCTAL CHARACTERS ON HALFWORD BUFFER: OCTOUT
3294 /USES TEMP01-02
3295
3296 OCTOUS, 0
3297 DCA SHFR+1 /PUT AC IN LOW ORDER SHIFT REGISTER
3298 TAD KM0004 /GET 4 CHARACTERS
3299 DCA OCNT
3300 OCNT=TEMP02
3301 TAD KM0004 /AC=0 STORES AS "0 "
3302 DCA LSWIT
3303 TAD PROMRK /LOOK FOR ENTRY AREA
3304 SRCH
3305 MPRMRK, -42 /SKIPPED-PRESUME THERE IS AN ENTRY AREA LEFT
3306 OCVROT, TAD K0003 /OCTAL CHARACTER REPRESENTS 3 BITS
3307 SHFT
3308 TAD SHFR /# IS IN LEFT 3 BITS OF AC
3309 AND K0007
3310 JMS OUTCH /OUTPUT THE #
3311 K0060, 0060 /LEADING 0 OR NO ROOM - "AND" WITH 0 IS NOP
3312 ISZ OCNT /MORE CHARACTERS?
3313 JMP OCVROT /YES-CONTINUE
3314 TAD KM0020 /NO-FILL REMAINING AREA WITH SPACES
3315 JMS OUTCH
3316 JMP I OCTOUS /AREA IS FULL-EXIT
3317 JMP .-3 /PUT IN SPACES
3318
3319 /GENERALIZED NUMERICAL OUTPUT ROUTINE
3320 /SUBROUTINE STORES A CHAR AWAY IF NOT A LEADING 0 AND THERE IS ROOM
3321 /EXITS TO CALL+1 IF THESE CONDITIONS NOT MET, CALL+2 IF THEY ARE
3322 /TEMPORARY STORAGE ALLOCATION
3323 STOR=TEMP01
3324
3325 EJECT
3326
3327 OUTCH, 0
3328 ISZ LSWIT /IS THIS A LEADING ZERO?
3329 SZA /IT'S LEADING
3330 SKP
3331 JMP I OUTCH /AND IT'S A ZERO-EXIT TO CALL+1
3332 DCA STOR /NO-NOT A LEADING ZERO.
3333 CLA CMA /FIX UP LEAD SWITCH
3334 DCA LSWIT
3335 LDH /IS THERE ROOM IN THE BUFFER?
3336 TAD MPRMRK
3337 SNA CLA
3338 JMP I OUTCH /NO MORE ROOM-EXIT TO CALL+1
3339 TAD STOR /ROOM AVAILABLE-MAKE 6BIT OUT OF #.
3340 TAD K0060
3341 JMS I STHX1
3342 ISZ OUTCH /PUT IT AWAY
3343 JMP I OUTCH /EXIT TO CALL+2
3344 \f/SUBROUTINE CONVERTS FLOATING AC TO ASCII STRING: FLTOUT
3345 /TEMPORARY STORAGE ALLOCATION
3346 FCVCNT=TEMP14
3347 DIGIT=TEMP13
3348 PERCNT=TEMP15
3349 ZSWIT=TEMP16
3350
3351 FLTOUS, 0
3352 DCA CHEXP
3353 TAD PROMRK /LOOK FOR A PLACE TO PUT CHARACTERS
3354 SRCH
3355 KM0033, -33 /SKIPPED
3356 TAD FAC+1
3357 SPA CLA /PUT IN A "-" OR A SPACE DEPENDING UPON SIGN
3358 TAD K0015
3359 TAD KM0020
3360 JMS OUTCH /PUT OUT CHARACTER
3361 CHEXP, 0 /A NOP-BUT NOT REACHED ANYWAY
3362 TAD FAC+1
3363 SPA CLA /GET .ABS. FAC
3364 DCOM
3365 SAVE
3366 REMAIN /SET UP FOR RADIX DEFLATION
3367 TAD KM011
3368 DCA FCVCNT /WE WILL LOOK AT 9 POWERS OF 10
3369 DCA LSWIT /ENABLE SEARCH FOR LEADING 0'S
3370 CLA CMA
3371 DCA ZSWIT /DETECT FIRST NON ZERO LEAD
3372 LOAD /HOW MANY 100,000,000'S
3373 K100MF
3374 CVLOOP, SAVE /HOW MANY MULTIPLES OF RADIX?
3375 RADIX
3376 LOAD /DEFLATE
3377 REMAIN
3378 FDIV
3379 RADIX
3380 FIX /# OF MULT. OF RADIX
3381 DCA DIGIT
3382 TAD DIGIT /GET REMAINDER
3383 FLOAT
3384 FMUL
3385 RADIX
3386 DCOM
3387 FADD
3388 REMAIN
3389 SAVE
3390 REMAIN
3391 TAD DIGIT /PUT DIGIT OUT INTO BUFFER
3392 JMS OUTCH
3393 JMP CVRLZ /LEADING ZERO OR NO MORE ROOM
3394 ISZ ZSWIT /FIRST NON-ZERO?
3395 JMP CVRNZ /NO
3396 TAD KM0033 /YES, PUT "U" IN MULTIPLIER
3397 DCA CHEXP
3398 \f TAD FCVCNT /U:1-3, M:4-6, SPACE: 7-9=-FCVCNT
3399 TAD K0003 /9+FCVCNT (-) IS # OF LEADING ZEROES
3400 SMA /M OR SPACE?
3401 JMP CVRLZ /NEITHER, MULTIPLIER IS U, NO PERIOD
3402 TAD K0003
3403 SPA
3404 JMP CVRSP /MULTIPLIER IS SPACE
3405 TAD KM0003 /MULTIPLIER IS M, COUNT UNTIL "."
3406 DCA PERCNT /3, 2, OR 1 CHARACTERS UNTIL "."
3407 TAD KM0043 /PUT M IN MULTIPLIER
3408 JMP .+3
3409 CVRSP, DCA PERCNT /3,2,OR 1 CHARACTERS BEFORE "."
3410 TAD KM0020 /PUT SPACE IN MULTIPLIER
3411 DCA CHEXP
3412 TAD KM0004 /AND PUT ONLY 4#'S IN BUFFER
3413 DCA FCVCNT
3414
3415 CVRNZ, ISZ PERCNT /NON-ZERO ENTRY WAS MADE
3416 JMP CVRLZ /NOT YET TIME FOR "."
3417 MTW /PUT IN THE "."
3418 JMS OUTCH
3419 KM0020, -20 /THIS INSTRUCTION IS SKIPPED
3420
3421 CVRLZ, LOAD /REDUCE THE RADIX BY A FACTOR OF 10
3422 RADIX
3423 FDIV
3424 K10F
3425 ISZ FCVCNT /HAD ENOUGH?
3426 JMP CVLOOP /NO-CONTINUE
3427 TAD KM0020 /FILL REMAINING WITH SPACES
3428 JMS OUTCH
3429 SKP
3430 JMP .-3
3431 CVREND, TAD PROMRK /MOVE TO FILL EXPONENT CHARACTER
3432 SRCH
3433 KM011, -11
3434 TAD CHEXP /STORE IT
3435 JMS OUTCH
3436 JMP I FLTOUS
3437 TAD KM0020 /NOW FILL REMAINING WITH SPACES
3438 JMP .-3
3439
3440 /LOCAL VARIABLES
3441 LSWIT, -1 /-1 TO ACCEPT LEADING ZEROS
3442
3443 /LOCAL CROSSPAGE
3444 STHX1, STHS /STH SUBROUTINE
3445
3446 /LOCAL CONSTANTS
3447 KM0003, -3
3448 \f/TTY-LISTS USED TO SCAN FLOATING ARGUMENTS
3449 MODCHR,
3450 K0015, 15 /M
3451 -40 /SPACE
3452
3453 FLSORT, 56 /.
3454 47 /'
3455 55 /-
3456 -40 /SPACE
3457
3458 K10F, 0004
3459 2400
3460 0000
3461
3462 /THIS SUBROUTINE SCANS FOR DECIMAL ARGUMENT: DECARG
3463 DECARS, 0
3464 JMS ARSET /POSITION HALFWORD POINTERS
3465 DECNXT, LDH
3466 BRAN /LOOK FOR SPACES AND TXMRKS
3467 OCSORT
3468 JMP DECNXT /SPACE - IGNORE
3469 JMP DECEND /TXMRK
3470 JMS STRNUM /OTHERS-STRIP OFF 60
3471 JMP I DECARS /NOT A (6BIT) NUMERAL
3472 TAD KM0011 /0-9 ARE ALLOWED
3473 SMA SZA CLA
3474 JMP I DECARS /NOT A DECIMAL NUMERAL
3475 TAD STRSAV /MULTIPLY PREVIOUS ACCUMULATION BY 10
3476 JMS DX10
3477 JMP DECNXT
3478
3479
3480 DECEND, TAD DBLARG /CHECK FOR OVERFLOW
3481 SZA CLA
3482 JMP I DECARS /GREATER THAN 4095, EXIT TO CALL+1
3483 TAD DBLARG+1 /ARGUMENT OK-EXIT AT CALL+2
3484 ISZ DECARS
3485 JMP I DECARS
3486 \f/THIS SUBROUTINE MULTIPLIES DXAC BY 10 AND ADDS CURRENT STRIPPED CHARACTER [IN AC]
3487 /TEMPORARY STORAGE ALLOCATION
3488 DXCHAR=TEMP02
3489 DX10, 0
3490 DCA DXCHAR /AC HOLDS NEXT # TO ADD
3491 LOAD
3492 DBLARG-1
3493 CLA IAC /GET 2 * OLD SUM
3494 SHFT
3495 SAVE /STORE IT
3496 DBLARG-1
3497 TWO /GET 8 * OLD SUM
3498 SHFT
3499 DADD /ADD TO 2 * OLD SUM
3500 TAD DXCHAR
3501 DCA DBLAC+1 /ADD NEXT #
3502 DCA DBLAC
3503 DADD
3504 JMP I DX10 /10 * OLD SUM + NEXT#
3505
3506 /THIS SUBROUTINE SCANS FOR FLOATING ARGUMENT AND LEAVES IN FAC: FLTARG
3507 /ARITHMETIC REGISTER ALLOCATION
3508 FLOPR=ARITH4
3509 /TEMPORARY STORAGE ALLOCATION
3510 FLCHAR=TEMP01
3511 FRCNT=TEMP13
3512 FLSGN=TEMP14
3513
3514 FLTARS, 0
3515 JMS ARSET
3516 DCA FRCNT /DECIMAL POINT INDICATOR
3517 CLA CMA
3518 DCA FLSGN /SIGN INDICATOR
3519 FLNEXT, LDH /GET NEXT CHARACTER FROM BUFFER
3520 BRAN
3521 FLSORT /SPECIAL CHARACTERS
3522 JMP FRCHK /. - CHECK FRCNT AND SET IT
3523 JMP FLTMOD /TXMRK - GO TO STAGE 2
3524 DCA FLSGN /- - SET SIGN = 0
3525 JMP FLNEXT /SPACE - IGNORE
3526 JMS STRNUM /OTHER - CHECK FOR 0,...,9
3527 JMP I FLTARS /NOT NUMERIC: ERROR RETURN
3528 TAD KM0011 /GREATER THAN 9?
3529 SMA SZA CLA
3530 JMP I FLTARS /YES: ERROR RETURN
3531 TAD FLCHAR /NO, IN RANGE 0-9
3532 JMS DX10 /INCREASE RESULT
3533 ISZ FRCNT /ENOUGH CHARACTERS?
3534 JMP FLNEXT /NO
3535 JMP I FLTARS /YES-MORE THAN 3 DIGITS IN FRACTION-EXIT
3536
3537 FRCHK, TAD KM0004 /ALLOW 3 DIGITS TO RIGHT OF "."
3538 DCA FRCNT
3539 JMP FLNEXT
3540 \fFLTMOD, LOAD /GET MODIFY CHARACTER
3541 DBLARG-1
3542 NORM /MAKE FLOATING POINT OF FIRST PART
3543 DCA FAC
3544 TAD FRCNT /HOW MANY DIGITS TO RIGHT OF DECIMAL?
3545 SPA CLA /POS INDICATES 0 DIGITS TO RIGHT
3546 JMP .+3
3547 TAD KM0004 /DIGITS TO RIGHT -4="FRCNT"
3548 DCA FRCNT
3549 ALPHA /GET "M" OR "SPACE"
3550 BRAN
3551 MODCHR
3552 TAD K0003 /M
3553 SKP /SPACE
3554 JMP I FLTARS /OTHER-ERROR RETURN
3555 TAD KM0002 /MULTIPLIER IS 10^[2+(-FRCNT)] IF "SPACE", 3 LESS IF "M"
3556 TAD FRCNT
3557 SMA SZA /.GT. 0 MEANS ERROR, FRACTION OF U
3558 JMP FLEND
3559 SNA
3560 JMP FLDONE /IF MULT IS 10^0,DONE
3561 DCA FRCNT /IF NOT. SET UP LOOP COUNT
3562 FMUL
3563 K10F
3564 ISZ FRCNT
3565 JMP .-3
3566 FLDONE, ISZ FLSGN /NOW ADJUST SIGN
3567 DCOM
3568 ISZ FLTARS /RETURN TO CALL+2 IF OK
3569 LDH /MOVE OVER NEXT CHAR (TXMRK)
3570 FLEND, CLL CLA
3571 JMP I FLTARS /EXIT
3572
3573 /THIS SUBROUTINE DOES GENERALIZED NUMERICAL INPUT - STRIPS 60 AND STORES
3574 /TEMPORARY STORAGE ALLOCATION
3575 STRSAV=TEMP01
3576
3577 STRNUM, 0
3578 TAD BSAVE /CHAR ASSUMED IN TEMP02
3579 TAD KM0060 /6BIT MUST BE .GE. 60
3580 SPA
3581 JMP STRERR /IF NOT IS NOT A CHARACTER
3582 DCA STRSAV /STORE STRIPPED CHARACTER IN TEMP02
3583 TAD STRSAV /AND LEAVE IN AC
3584 ISZ STRNUM
3585 JMP I STRNUM
3586
3587 STRERR, CLL CLA
3588 JMP I STRNUM
3589 \f/THIS SUBROUTINE INITIALIZES INPUT POINTERS
3590 /ARITHMETIC REGISTER ALLOCATION
3591 AROP=ARITH4
3592
3593 ARSET, 0
3594 TAD TXMRK /MOVE TO INPUT REGION
3595 SRCH
3596 KM0002, -2 /THIS LOCATION SKIPPED
3597 DCA AROP /CLEAR SUM REGISTER
3598 DCA AROP+1
3599 JMP I ARSET
3600
3601
3602 /LOCAL CONSTANTS
3603 KM0060, -60
3604 KM0011, -11
3605
3606 /FLOATING VARIABLES
3607 FLOT01, 0
3608 0
3609 0
3610 RADIX=FLOT01
3611
3612 FLOT02, 0
3613 0
3614 0
3615 REMAIN=FLOT02
3616
3617 \f*6000
3618 /HALFWORD AND TEXT HANDLERS [SU60AB] - REQUIRES [SU63A]
3619
3620 /TEMPORARY STORAGE ALLOCATION
3621 HSAVE=TEMP01
3622
3623 /SET H WORD POINTERS TO FIRST HALF OF AC HELD ADDRESS: SETH
3624 /TYPICAL CALLING SEQUENCE
3625 / SETH
3626 / ADDRESS
3627 / RETURN
3628
3629 SETHS, 0
3630 TAD I SETHS /GET ADDRESS FROM CALL+1
3631 DCA HPNT2 /PUT IT IN LDH POINTER
3632 CMA /LEFT HALF
3633 DCA HSW2
3634 ISZ SETHS /EXIT CALL+2
3635 JMP I SETHS
3636
3637 /SAVE H WORD POINTERS: SHP
3638 SHPS, 0
3639 CLA
3640 TAD HPNT2 /GET LDH POINTERS
3641 DCA HPSV /ADDRESS
3642 TAD HSW2 /HALF WORD
3643 DCA HSWSV
3644 JMP I SHPS
3645
3646 /RESTORE HWORD POINTERS TO SAVED VALUES: RHP
3647 RHPS, 0
3648 CLA
3649 TAD HPSV /GET SAVED POINTERS
3650 DCA HPNT2
3651 TAD HSWSV /PUT IN LDH POINTERS
3652 DCA HSW2
3653 JMP I RHPS
3654
3655 /DECREMENT HALF-WORD POINTER: DHP
3656 DHPS, 0
3657 CLA CMA
3658 ISZ HSW2 /SKIP IF LEFT HALF
3659 JMP HPD2 /RIGHT HALF
3660 TAD HPNT2 /LEFT HALF, MOVE TO RIGHT HALF OF PREVIOUS WORD
3661 DCA HPNT2
3662 JMP I DHPS
3663 HPD2, DCA HSW2 /RIGHT HALF, MOVE TO LEFT HALF, SAME WORD
3664 JMP I DHPS
3665 \f
3666 BSW=7002
3667
3668 /HALF WORD LOAD AC: LDH
3669 LDHS, 0 /GET HALF WORD AND MOVE POINTER TO NEXT HALF
3670 CLL CLA /PUT LDH POINTERS IN STH POINTERS
3671 TAD HSW2
3672 DCA HSW1
3673 TAD HPNT2
3674 DCA HPNT1 /WHICH HALF ARE WE ON?
3675 ISZ HSW2 /RIGHT
3676 JMP LDH2 /LEFT
3677 TAD I HPNT2
3678 AND K7700H
3679 BSW
3680 JMP I LDHS
3681
3682 LDH2, CMA /SET POINTER TO LEFT HALF (HSW2)
3683 DCA HSW2
3684 TAD I HPNT2
3685 AND K0077 /GET HALFWORD
3686 ISZ HPNT2 /NEXT HALF IS LEFT HALF OF NEXT WORD
3687 JMP I LDHS
3688
3689 /HALF WORD STORE AC - FROM PLACE LDH WAS DONE: STH
3690 STHS, 0
3691 AND K0077 /SAVE RIGHT HALF OF AC
3692 ISZ HSW1 /STORE IN FIRST OR SECOND HALF?
3693 JMP STH2 /SECOND (RIGHT) HALF
3694 CLL RTL /POSITION IN LEFT HALF
3695 RTL
3696 RTL
3697 DCA HSAVE
3698 TAD I HPNT1 /GET OLD WORD FROM TEXT BFFER
3699 AND K0077 /CLEAR LEFT HALF
3700 JMP STH3 /GO STORE NEW VALUE
3701
3702 STH2, DCA HSAVE /RIGHT HALF
3703 TAD I HPNT1 /GET OLD WORD
3704 AND K7700H /CLEAR RIGHT HALF
3705 STH3, TAD HSAVE /STORE WITH NEW VALUE
3706 DCA I HPNT1
3707 JMP I STHS /RETURN
3708
3709 \f/SEARCH HALF-WORD BUFFER FOR CHARACTER: SRCH
3710 /CALL: TAD [X /SEARCH FOR X
3711 / SRCH
3712 / CAN'T FIND
3713 / NORMAL RETURN
3714
3715 SRCHS, 0
3716 CMA IAC
3717 DCA HSAVE
3718 CHNX, JMS LDHS /GET NEXT HALFWORD
3719 SNA /HALFWORD IS 0: END OF BUFFER REACHED
3720 JMP I SRCHS
3721 TAD HSAVE /SUBTRACT SEARCH CHARACTER
3722 SZA CLA
3723 JMP CHNX
3724 ISZ SRCHS /HAVE NOT FOUND IT, CONTINUE
3725 JMP I SRCHS /FOUND IT! EXIT TO CALL+2
3726
3727 /THIS SUBROUTINE TYPES STRIPPED ASCII CHARACTERS: TYPE
3728 /CALL: LDH
3729 / TYPE
3730 / JMP .-2
3731 / END OF TEXT RETURN
3732
3733 TYPES, 0
3734 BRAN /CHECK AGAINST SPECIAL CHARACTER LIST
3735 TTYLST
3736 ISZ TYPES /@-END OF RECORD- SPECIAL RETN
3737 K0100T, 0100 /" - IGNORE - "AND" WITH AC = 0
3738 NOP /$ - DISPLAY RESET IS IGNORED
3739 JMP I TYPES /' - KBD ENTRY DELIMITOR IS IGNORED
3740 JMP TCR /C.R. - DO C.R.L.F.
3741 JMP I TYPES /L.F. - IGNORE
3742 TAD BSAVE /NONE OF THE ABOVE
3743 TAD KM0040 /00-37 ARE 300-337; 40-77 ARE 240-277
3744 SPA
3745 TAD K0100T /00-37
3746 TAD K0240
3747 TPEX, JMS TOUT /TYPE IT
3748 JMP I TYPES
3749
3750 TCR, TAD K215 /C.R.L.F. - DO CR FIRST
3751 JMS TOUT
3752 TAD K212 /THEN DO LF
3753 JMP TPEX /EXIT
3754
3755 /LOCAL CONSTANTS
3756 K215, 215
3757 K212, 212
3758 \f/SUBROUTINE TYPES OUT 8BIT IN AC
3759 TOUT, 0
3760 KXX46, TLS /THIS IS A CONSTANT
3761 TSF
3762 JMP .-1
3763 TCF /LEAVES FLAG CLEARED
3764 DCA TEMP02
3765 JMP I TOUT
3766
3767 /FILLS ALL ENTRY AREAS WITH BLANKMARKS: TXI
3768 /CALL: SETH
3769 / ADDRESS OF TEXT START
3770 / TXI
3771 / RETURN
3772
3773 TXIS, 0
3774 TXSR1, TAD TXMRK /GET FIRST BREAK CHAR
3775 JMS SRCHS
3776 JMP I TXIS /END CHAR FOUND
3777
3778 TXSR2, JMS LDHS /FIND BREAK 2
3779 TAD MTXMRK /PUT BLANKMARKS FROM BRK 1 TO 2
3780 SNA CLA
3781 JMP TXSR1 /FOUND 2ND BREAK
3782 TAD KXX46 /NOT FOUND YET
3783 JMS STHS /PUT IN BLANKMARKS
3784 JMP TXSR2 /CONTINUE
3785
3786 /LOCAL VARIABLES THIS PAGE
3787 HPSV, 0 /SAVE ADDRESS
3788 HSWSV, 0 /SAVE HALF
3789 HPNT2, 0 /LDH ADDRESS
3790 HSW2, 0 /LDH HALF
3791 HPNT1, 0 /STH ADDRESS
3792 HSW1, 0 /STH HALF
3793
3794 /CONSTANTS FOR THIS PAGE
3795 K0077, 0077
3796 K7700H, 7700
3797 K0240, 0240
3798 KM0040, -0040
3799
3800 \f*6200
3801 /TEXT-KEYBOARD HANDLES [SU62AB]
3802 /REQUIRES [SU63A]
3803
3804 /SUBROUTINE PICKS UP FIRST CHARACTER OF AN ENTRY
3805 ALPHAS, 0
3806 TAD TXMRK /FIND TXMRX (KEYBOARD DELIMITOR)
3807 SRCH
3808 JMP I ALPHAS /NOT HERE, EXIT WITH AC=0
3809 LDH /GETS FIRST CHARACTER
3810 JMP I ALPHAS /EXIT
3811
3812 /LOADS KBD CHARACTERS INTO BUFFER: TXK
3813 /CALL: TXK
3814 / NORMAL EXIT
3815 / LINE FEED
3816 / CARRIAGE RETURN
3817
3818 TXKS, 0
3819 KSF
3820 JMP I TXKS /NO KEY - EXIT
3821 KRB
3822 JMS I UCHECK /USER MUST HAVE SUBROUTINE AT 7540 OR NOP THIS LOCATION
3823 BRAN /CHECK AGAINST SPECIAL CHARACTERS
3824 TXKEY
3825 ISZ TXKS /C.R.
3826 JMP TXLF /L.F.
3827 JMP TXRUB /RUBOUT
3828 LDH /OTHER
3829 TAD MTXMRK /CHECK THAT KEYBOARD AREA NOT FULL.
3830 SNA CLA
3831 JMP TXEN /NO MORE ROOM - EXIT WITHOUT ECHO
3832 TAD BSAVE
3833 AND K0077A /STRIP CHARACTER TO 6BIT
3834 BRAN /CHECK AGAINST SPECIAL 6BIT'S
3835 TTYLST
3836 K0034A, 0034 /@ - END OF TEXT MARKER
3837 K0077A, 0077 /" - PROGRAMMED INPUT TEXT MARKER
3838 K0046, 0046 /$ - DISPLAY RESET
3839 JMP TXEN /' - KBD MARKER - FOR THIS AND ABOVE: EXIT WITHOUT ECHO
3840 K0070, 0070 /% - CONVERT TO ] WHICH IS DISPLAYED AS %
3841 TAD K0070 /# - CONVERT TO [ WHICH IS DISPLAYED AS #
3842 TAD BSAVE /NONE OF THE ABOVE
3843 TYPE /ECHO
3844 TAD BSAVE /STORE AWAY
3845 JMS I STHX2
3846 JMP I TXKS
3847 \fTXLF, ISZ TXKS /C.R. OR L.F.
3848 LDH /FILL REST OF KBD AREA WITH SPACES
3849 TAD MTXMRK /END OF AREA?
3850 SNA CLA
3851 JMP TXER /YES - TYPE A CRLF AND EXIT
3852 TAD K0040 /NO - PUT ANOTHER SPACE IN.
3853 JMS I STHX2
3854 JMP TXLF+1 /AND CONTINUE
3855
3856 TXER, TAD KCR /TYPE A CRLF
3857 TYPE
3858 JMP I TXKS /AND EXIT
3859
3860 TXRUB, TAD K0034A /PROCESS A RUBOUT - DELETE 1 CHAR.
3861 TYPE /TYPE "\"
3862 JMS I DHPX1 /MOVE POINTER BACK 1 HALF WORD
3863 LDH /IS THAT HALFWORD A TXMRK?
3864 TAD MTXMRK
3865 SNA CLA
3866 JMP TXER /YES - KBD AREA HAS BEEN ALL RUBBED OUT
3867 TAD K0046 /NO - PUT A BLANKMARK IN THERE
3868 JMS I STHX2
3869
3870 TXEN, JMS I DHPX1 /IGNORE INPUT - MOVE POINTER BACK
3871 JMP I TXKS /AND EXIT
3872
3873 /TTY-LST
3874 TXKEY, 215 /CR
3875 212 /LF
3876 -377 /RUBOUT
3877
3878 /LOCAL CROSSPAGE
3879 DHPX1, DHPS
3880 STHX2, STHS
3881
3882 /REFERENCE TO USER'S AREA - ROUTINE TO CHECK CTRLS MUST BE THERE
3883 UCHECK, KBRANS
3884
3885 /FLOATING CONSTANT
3886 KM001F, 0001
3887 6000
3888 0000
3889
3890 \f*6302
3891 /BASIC SUBROUTINES SHFT, DADD, AND BRAN [SU63AB]
3892
3893 /SUBROUTINE TO SHIFT DOUBLE PRECISION WORD (SHFR): SHFT (10+6N)
3894 /CALL: TAD KXXXX /AC HOLDS SHFT COUNT, RIGHT IS NEGATIVE
3895 / SHFT
3896 / RETURN /LINK=0, AC=0
3897 /FORMAT OF DOUBLE WORD IS (HI,LO) HI(0)-ONLY-HOLDS SIGN
3898 /SIGN BIT WILL BE REPLICATED IN RIGHT SHIFTS
3899
3900 /TEMPORARY STORAGE ALLOCATION
3901 SHCNT=TEMP01
3902
3903 /ARITHMETIC REGISTER ALLOCATION
3904 SHFR=ARITH1 /ARITH1-2 ARE FOR SHIFTING
3905
3906 SHFTS, 0
3907 CLL
3908 SNA /IF SHIFT COUNT=0. EXIT
3909 JMP I SHFTS
3910 SMA /SHIFT RIGHT OR LEFT
3911 CML CMA IAC /LEFT-SET LINK=1 AND COUNT NEGATIVE
3912 DCA SHCNT
3913 SZL /RIGHT SHIFT?
3914 JMP SHLEFT /NO-SHIFT LEFT
3915
3916 SHRIHT, TAD SHFR /SHIFT DONE ON ARITH1-2
3917 SPA /SET L=1 IF NEGATIVE
3918 CML
3919 RAR
3920 DCA SHFR /SHIFT WITH SIGN REPLICATION
3921 TAD SHFR+1 /SHIFT LO ORDER HALF
3922 RAR
3923 DCA SHFR+1
3924 CLL
3925 ISZ SHCNT /ENOUGH SHIFTS?
3926 JMP SHRIHT /NO-CONTINUE
3927 JMP I SHFTS /YES-EXIT
3928
3929 SHLEFT, TAD SHFR+1 /SHIFT LO-ORDER
3930 CLL RAL /0 TO LSB
3931 DCA SHFR+1
3932 TAD SHFR /SHIFT HI-ORDER
3933 RAL
3934 DCA SHFR
3935 CLL
3936 ISZ SHCNT /ENOUGH?
3937 JMP SHLEFT /NO-CONTINUE
3938 JMP I SHFTS
3939
3940 \f/SUBROUTINE FOR BRANCHING ON MATCH OF AC AGAINST TABLE: BRAN
3941 / BRAN
3942 / ADDRESS OF TABLE
3943 / RETURN HERE IF FIRST ENTRY MEETS MATCH
3944 / ETC.
3945 / NONE MATCH
3946 /TABLE, FIRST ENTRY
3947 / SECOND ENTRY
3948 / -LAST ENTRY
3949
3950 /TEMPORARY STORAGE ALLOCATION
3951 BPNT=TEMP01
3952 BSAVE=TEMP02
3953 BRANS, 0
3954 DCA BSAVE
3955 TAD I BRANS /GET ADDRESS OF FIRST ENTRY OF MATCH LIST
3956 DCA BPNT
3957 BRLOOP, TAD I BPNT /LOOK AT ENTRY
3958 SMA /GET MAGNITUDE
3959 CMA IAC
3960 ISZ BRANS /INDEX RETURN ADDRESS
3961 TAD BSAVE /MATCH FOUND?
3962 SNA CLA
3963 JMP I BRANS /YES-EXIT TO RETURN AS CALCULATED
3964 TAD I BPNT /NO-TEST FOR LAST ENTRY.
3965 ISZ BPNT /INDEX ENTRY POINTER
3966 SMA CLA /-INDICATES THIS WAS LAST ENTRY
3967 JMP BRLOOP /NOT LAST-CONTINUE
3968 ISZ BRANS /EXIT, NOT IN LIST, NONE MATCH
3969 JMP I BRANS
3970
3971 /SUBROUTINE TO DO DOUBLE PRECISION ADD OF ARITH1-2, AND 4-5: DADD (21)
3972 /ARITHMETIC REGISTER ALLOCATION
3973 DBLAC=ARITH1
3974 DBLARG=ARITH4
3975 DADDS, 0 /ADD LO-ORDER
3976 CLL CLA
3977 TAD DBLAC+1
3978 TAD DBLARG+1
3979 DCA DBLARG+1
3980 RAL /CARRY
3981 TAD DBLAC /ADD HI-ORDER
3982 TAD DBLARG
3983 DCA DBLARG /LEAVE IN ARITH4-5.
3984 CLL
3985 JMP I DADDS
3986
3987 /FLOATING CONSTANT USED BY [SU54A]
3988 K100MF, 0033 /100,000,000(10)
3989 2765
3990 7020
3991
3992
3993 \f*6400
3994 /2-PAGE FLOATING POINT PACKAGE [SU64AC] - REQUIRES [SU63A]
3995 /LOAD, SAVE, DCOM, NORM, FMUL, FIX, DFIX, FADD, FDIV, FLOAT
3996 /FLOATING POINT FORMAT
3997 / WORD1: EXPONENT (2'S COMPLEMENT)
3998 / WORD2: HI ORDER MANTISSA
3999 / WORD3: LO ORDER MANTISSA
4000 /
4001 /MANTISSA IS REPRESENTED IN 24 BIT, 2'S COMPLEMENT NOTATION
4002 /A FLOATING POINT IS STORED AS MANTISSA*2^ EXPONENT
4003 /ZERO IS ALWAYS STORED AS 0*2^0
4004 /0.5 .LE. .ABS. MANTISSA .LT. 1.0
4005
4006 /FLOATING POINT ACCUMULATOR
4007 FAC=ARITH0
4008 /FLOATING POINT OPERATOR
4009 FOP=ARITH3
4010
4011 /SUBROUTINE TO LOAD FLOATING ACCUMULATOR: LOAD
4012 /TEMPORARY STORAGE ALLOCATION
4013 LDPNT=17
4014
4015 LOADS, 0
4016 CLL CML CLA CMA /CALL: LOAD
4017 TAD I LOADS / ADDRESS
4018 DCA LDPNT /GETS ADDRESS, ADDRESS+1, ADDRESS+2 TO FAC
4019 ISZ LOADS
4020 TAD I LDPNT /ORDER IN MEMORY IS ASSUMED TO BE:
4021 DCA FAC / WORD1
4022 TAD I LDPNT
4023 DCA FAC+1 / WORD2
4024 TAD I LDPNT
4025 DCA FAC+2 / WORD3
4026 JMP I LOADS
4027
4028
4029 /SUBROUTINE TO SAVE FLOATING ACCUMULATOR: SAVE
4030 /TEMPORARY STORAGE ALLOCATION
4031 SVPNT=17
4032
4033 SAVES, 0
4034 CLL CML CLA CMA /CALL: SAVE
4035 TAD I SAVES / ADDRESS
4036 DCA SVPNT
4037 ISZ SAVES /SAVES FAC IN ADDRESS, ADDRESS+1, ADDRESS+2
4038 TAD FAC /ORDER: WORD1
4039 DCA I SVPNT
4040 TAD FAC+1 /ORDER: WORD2
4041 DCA I SVPNT
4042 TAD FAC+2 /ORDER: WORD3
4043 DCA I SVPNT
4044 JMP I SAVES
4045 \f/SUBROUTINE TO FORM NEGATIVE OF ARITH1-2: DCOM
4046 DCOMS, 0
4047 CLL CLA
4048 TAD ARITH2
4049 CMA IAC
4050 DCA ARITH2 /-ARITH2 TO ARITH2
4051 TAD ARITH1 /CARRY IS IN LINK BIT
4052 CMA
4053 SZL /DO CARRY
4054 IAC
4055 DCA ARITH1
4056 JMP I DCOMS
4057
4058 /SUBROUTINE TO NORMALIZE MANTISSA IN FAC: NORM
4059 /MODIFIES ARITH 1-2 (NORHI,NORLO), TEMP01(IN SHFT), TEMP02(NORCNT)
4060 /LEAVES FAC MANTISSA NORMALIZED,
4061 /SIGN OF MANTISSA IN LINK BIT, EXPONENT IN AC
4062 /TEMPORARY STORAGE ALLOCATION
4063 NORCNT=TEMP02
4064
4065 /ARITHMETIC REGISTER ALLOCATION
4066 NORHI=FAC+1
4067 NORLO=FAC+2
4068
4069 NORMS, 0
4070 CLL CLA
4071 TAD KM0027 /-23(10)
4072 DCA NORCNT
4073 NORLV, TAD NORHI
4074 CLL RAL
4075 SMA SNL /TEST FOR L,AC0
4076 JMP NORSH /0,0 - SHIFT IT
4077 CMA CML /1,1 TO 0,0
4078 SPA SZL CLA /TEST FOR 1,1
4079 JMP NOREX /0,1 OR 1,0 - DONE
4080 TAD NORHI /1,1 - TEST FOR 6000
4081 AND K1777
4082 SZA CLA
4083 JMP NORSH /NO - CONTINUE
4084 TAD NORLO /YES - TEST FOR 6000 0000
4085 SNA CLA
4086 JMP NOREX /YES AND L HOLD 1 FOR -
4087 NORSH, CLL CLA IAC
4088 SHFT /1 LEFT
4089 ISZ NORCNT /23 TIMES?
4090 JMP NORLV /NO - LOOK AGAIN
4091 NOREX, CML /23 SHIFTS IS ENOUGH - OR DONE
4092 TAD NORCNT
4093 CMA IAC /L GETS COMPLEMENTED IF=0, NORM OF 0 LEAVES 0 IN L.
4094 JMP I NORMS
4095
4096 /LOCAL CONSTANT
4097 K1777, +1777
4098 \f/SUBROUTINE FOR FLOATING POINT MULTIPLICATION: FMUL
4099 /CALL: FMUL /ONE ARGUMENT
4100 / ARG ADDRESS /ARG IS THE OTHER
4101 / (RETURN) /AC=0, L UNSPECIFIED
4102 /MODIFIES ARITH0-5(FAC,FOP), TEMP01-12
4103 /USES SUBROUTINES NORM,SHFT,DADD,DCOM,SAVE,LOAD
4104 /LEAVES RESULT IN FAC
4105 /TEMPORARY STORAGE ALLOCATION
4106 FMULP=TEMP10 /11 AND 12
4107
4108 FMULS, 0
4109 TAD I FMULS
4110 JMS I GARGX /GET ARG AND FAC MAGNITUDE, SET SIGN
4111 ISZ FMULS /FIX UP RETURN ADDRESS
4112 SAVE
4113 FMULP
4114 DCA FOP+1 /CLEAR PRODUCT ACCUMULATION
4115 DCA FOP+2
4116 MULOOP, LOAD /SHIFT MULTIPLIER TO TEST
4117 FMULP /WHETHER TO INCREASE PRODUCT
4118 IAC /(FIRST TIME THRU IS ZERO SO WE
4119 SHFT /SKIP IT)
4120 SAVE
4121 FMULP
4122 LOAD /DECREASE POSSIBLE PRODUCT
4123 FARG /INCREMENT BY A FACTOR OF 2
4124 CLA CMA
4125 SHFT
4126 SAVE
4127 FARG
4128 TAD FMULP+1 /BIT 0 IS FLAG FOR INCREASING
4129 SPA CLA /PRODUCT ACCUMULATION
4130 DADD /BY CURRENT INCREMENT
4131 ISZ FCNTR /DO THIS 23 TIMES
4132 JMP MULOOP
4133 LOAD /NORMALIZE RESULT MANTISSA
4134 FOP
4135 JMS NORMS /ADJUST EXPONENT
4136 SNA
4137 JMP FMEXP /MANTISSA WAS ZERO
4138 TAD FMULP
4139 TAD FARG
4140 TAD KM0027
4141
4142 FMEXP, DCA FAC
4143 TAD FLSIGN /FIX SIGN OF RESULT
4144 SZA CLA
4145 DCOM
4146 JMP I FMULS
4147
4148 /LOCAL CROSSPAGE
4149 GARGX, GARG
4150 \f/THIS SUBROUTINE FIXES FAC TO AC: FIX
4151 FIXS, 0
4152 TAD FAC /AC BIASES FIX
4153 SPA SNA /FIX OF FAC .LT. 1 GIVES 0 IN AC
4154 JMP FIXNG
4155 TAD KM14
4156 SMA /FIX OF .ABS. FAC .GE. 2^11; EXITS 0 IN AC
4157 JMP FIXNG
4158 IAC
4159 SHFT
4160 TAD ARITH1
4161 JMP I FIXS
4162
4163 FIXNG, CLL CLA
4164 JMP I FIXS
4165
4166 /LOCAL CONSTANT
4167 KM14, -0014
4168
4169 /SUBROUTINE TO FIX FAC TO DBL PREC IN FAC+1 AND FAC+2
4170 DFIXL=TEMP01
4171
4172 DFIXS, 0
4173 TAD FAC /AC BIASES FIX
4174 TAD KM0027
4175 SHFT
4176 TAD I DFIXS /CALL+1 HOLDS ADDRESS OF HI ORDER FIX
4177 ISZ DFIXS
4178 DCA DFIXL
4179 TAD FAC+1 /STORE AT C(CALL+1) AND C(CALL+1)+1
4180 DCA I DFIXL
4181 ISZ DFIXL
4182 TAD FAC+2
4183 DCA I DFIXL
4184 JMP I DFIXS /EXIT TO CALL+2
4185 \f*.-1 177+1
4186 /PAGE 2 OF 2 PAGE FLOATING POINT PACKAGE [SU64A]
4187 /FADD, FDIV, FLOAT
4188
4189 /SUBROUTINE TO FLOATING ADD TO FAC: FADD
4190 /CALL: FADD
4191 / ADDRESS
4192 /MODIFIES ARITH 0-5 (FAC,FOP), TEMP01(FADSHF),TEMP02-04(ADDEND),
4193 /TEMP05-07(AUGEND)
4194 /USES SUBROUTINES: NORM, SHFT, DADD, SAVE, LOAD
4195 /RESULT IN FAC (RE-NORMALIZED),AC=0,L=U
4196
4197 /TEMPORARY STORAGE ALLOCATION:
4198 FADSHF=TEMP01
4199 ADDEND=TEMP02 /03 AND 04
4200 AUGEND=TEMP05 /06 AND 07
4201
4202 /ARITHMETIC REGISTER ALLOCATION
4203 BIGGER=FOP
4204
4205 FADDS, 0
4206 CLA CMA
4207 SHFT /PREPARE FOR POSSIBLE DADD OVERFLOW
4208 SAVE /LOSES LSB OF MANTISSA
4209 ADDEND
4210 TAD I FADDS /GET ARGUMENT ADDRESS
4211 DCA .+2
4212 LOAD /ARGUMENT TO FAC
4213 0
4214 CLA CMA /SHIFT FOR POSSIBLE OVERFLOW ALSO
4215 SHFT
4216 SAVE /SUM HAS 23 BITS PRECISION
4217 AUGEND
4218 ISZ FADDS /SETUP FOR EXIT
4219 TAD ADDEND /COMPARE EXPONENTS
4220 CMA IAC /WHICH TO SHIFT (SMALLER ARGUMENT)
4221 TAD AUGEND /TO ALIGN BINARY POINTS
4222 SPA /EXP DIFFERENCE IN AC
4223 JMP FADADD /EXP OF AUGEND SMALLER
4224 CMA IAC /MAKE DIFFERENCE NEGATIVE
4225 DCA FADSHF /TO SHIFT RIGHT
4226 LOAD /AUGEND (OLD FAC) IS LARGER
4227 AUGEND
4228 SAVE
4229 BIGGER
4230 LOAD /PREPARE TO SHIFT ADDEND
4231 ADDEND
4232 JMP FADFIN
4233 \fFADADD, DCA FADSHF /AUGEND (OLD FAC) IS SMALLER
4234 LOAD
4235 ADDEND
4236 SAVE /SAVE ADDEND AS LARGER ARGUMENT
4237 BIGGER
4238 LOAD /PREPARE TO SHIFT SMALLER ARG
4239 AUGEND
4240
4241 FADFIN, TAD FADSHF
4242 SHFT /ALIGN ARGUMENTS
4243 DADD /ADD MANTISSAS
4244 LOAD /NORMALIZE RESULT
4245 FOP
4246 NORM
4247 SNA /0 IF MANISSAS ADDED TO 0
4248 JMP FADEXP /ZERO SHOWN AS 0*2^0
4249 TAD KM0026 /-22(10)
4250 TAD BIGGER /ADD +1 TO -21(10) TO LARGER EXP
4251 FADEXP, DCA FAC /SAVE AS NEW EXPONENT
4252 JMP I FADDS
4253
4254 /LOCAL CONSTANT
4255 KM0026, -0026
4256
4257 /SUBROUTINE TO INITIALIZE COUNTERS AND SWITCHES USED IN FMUL AND FDIV
4258 FLSIGN=TEMP03
4259 FCNTR=TEMP04
4260 FARG=TEMP05 /06 AND 07
4261
4262 GARG, 0
4263 DCA LOCARG /AC HOLDS LOCATION OF ARGUMENT
4264 TAD FAC+1
4265 SMA CLA /SET FLSIGN WITH SIGN OF FAC
4266 CMA
4267 DCA FLSIGN
4268 ISZ FLSIGN /LEAVE FLSIGN=0 FOR +, 1 FOR -
4269 DCOM /GET .ABS. FAC
4270 SAVE
4271 FARG
4272 LOAD
4273 EJECT
4274
4275 LOCARG, 0
4276 TAD FAC+1 /GET SIGN OF ARGUMENT
4277 SPA CLA
4278 CLA CMA
4279 TAD FLSIGN /+OP+=+, -OP-=+, +OP-=-, -OP+=-
4280 DCA FLSIGN /FLSIGN = 0 FOR +, .NE. 0 FOR -
4281 TAD FAC+1 /GET .ABS. ARG
4282 SPA CLA
4283 DCOM /.LT. 0: GET COMPLEMENT AND SET L=0
4284 TAD KM0027 /-23(10)
4285 DCA FCNTR
4286 JMP I GARG
4287 \f/THIS SUBROUTINE FLOATS AC TO FAC: FLOAT
4288 FLOATS, 0
4289 DCA FAC+1
4290 TAD KM014 /SHIFT TO GET SIGN EXTENSION
4291 SHFT
4292 NORM
4293 DCA FAC /NORMALIZE
4294 JMP I FLOATS
4295
4296 /LOCAL CONSTANT
4297 KM014, -0014
4298
4299 /SUBROUTINE TO FLOATING DIVIDE FAC BY ARGUMENT- FDIV
4300 /CALL: FDIV
4301 / ARG ADDRESS /ARG ADDRESS HOLD ARGUMENT
4302 / (RETURN) /AC=0, L UNSPECIFIED
4303 /MODIFIES ARITH0-5 (FAC,FOP), TEMP01-14, REMAINDER IN FOP
4304 /TEMPORARY STORAGE ALLOCATION
4305 DVSOR=TEMP10 /11 AND 12
4306 QUO=TEMP05 /06 AND 07
4307
4308 FDIVS, 0
4309 TAD I FDIVS /GET ADDRESS OF ARGUMENT
4310 ISZ FDIVS /EXIT TO CALL+2
4311 JMS GARG /GET .ABS. FAC, .ABS. ARG, SIGN OF RESULT
4312 DCOM
4313 SAVE /ARG IS DIVISOR
4314 DVSOR
4315 LOAD /.ABS. FAC: DIVIDEND
4316 FARG
4317 SAVE
4318 FOP
4319 DCA FAC+1 /FAC WILL HOLD QUOTIENT
4320 DCA FAC+2
4321 DVLOOP, IAC /QUO*2
4322 SHFT
4323 SAVE
4324 QUO
4325 LOAD
4326 DVSOR /TRIAL SUBTRACTION
4327 DADD
4328 TAD FOP+1 /CHECK FOR - AS RESULT OF TRIAL
4329 SMA CLA
4330 JMP DVOK /POSITIVE, INCREASE QUOTIENT
4331 DCOM /NEGATIVE, REVERSE
4332 DADD
4333 DCOM
4334 SKP /BUT DON'T INCREASE QUOTIENT
4335 \fDVOK, ISZ QUO+2 /MARK QUOTIENT
4336 CLA CMA /NEXT TIME REDUCE DIMINISHER
4337 SHFT
4338 SAVE
4339 DVSOR
4340 LOAD /MAKE READY TO MULTIPLY QUOTIENT
4341 QUO
4342 ISZ FCNTR /DO THIS 23 TIMES
4343 JMP DVLOOP /CONTINUE
4344 NORM /NORMALIZE MANTISSA
4345 SNA
4346 JMP DVEXP /0 MANTISSA IMPLIES ZERO - EXIT IMMEDIATELY
4347 TAD FOP /ADJUST EXPONENT
4348 TAD KM0026
4349 CMA IAC
4350 TAD DVSOR
4351 CMA IAC
4352 DVEXP, DCA FAC
4353 TAD FLSIGN /ADJUST SIGN
4354 SZA CLA /FLSIGN=0 FOR POSITIVE QUOTIENT
4355 DCOM
4356 JMP I FDIVS
4357
4358 \f
4359 *7000
4360 /SUBROUTINE TO TYPE AND OUTPUT A MESSAGE UNTIL A TXMRK
4361 TXPUNS, 0
4362 TAD I TXPUNS /GET MESSAGE ADDRESS
4363 ISZ TXPUNS
4364 DCA .+2
4365 SETH /SET HALFWD POINTERS
4366 0
4367 JMS DBLPUN /TYPE AND PUNCH
4368 JMP I TXPUNS
4369
4370 /SUBROUTINE TO TYPE AND OUTPUT A MESSAGE BETWEEN TXMRKS
4371 TPUNQS, 0
4372 TAD TXMRK /MOVE TO MESSAGE
4373 SRCH
4374 JMP I TPUNQS /NO MESSAGE - EXIT
4375 JMS DBLPUN /TYPE & PUNCH UNTIL TXMRK
4376 JMP I TPUNQS
4377
4378 /PUNCH AND TYPE UNTIL A TXMRK OR END OF RECORD
4379 DBLPUN, 0
4380 TAD K0377 /PRECEED MESSAGE WITH RUBOUT
4381 DCA BSAVE
4382 DBLNXT, JMS PCOPYS /PUNCH FOR HI, NOP FOR LO SPEED PUNCH
4383 LDH /GET CHARACTER
4384 BRAN /CR OR TX MRK?
4385 CRTX
4386 JMP DBLCR /C.R.
4387 JMP DBLEXT /TX MARK
4388 TAD BSAVE /OTHER - TYPE IT
4389 DBLTYP, TYPE
4390 JMP DBLNXT /PUNCH THIS AND GET NEXT
4391 DBLEXT, TAD K0377 /E.O.R. OR TXMRK
4392 JMS I PUNCHX /BRACKET MESSAGE WITH RUBOUTS
4393 JMP I DBLPUN /EXIT
4394
4395 DBLCR, TAD K0215 /PUNCH CR
4396 DCA BSAVE
4397 JMS PCOPYS
4398 TAD KCR /TYPE CRLF
4399 JMP DBLTYP /AND THEN PUNCH LF
4400
4401 /SUBROTINE TO PUNCH ON PC8I WHAT WAS TYPED OR NOP IF NO PC8I
4402 PCOPYS, 0
4403 LAS /CHECK SWITCHES
4404 SPA CLA /+ FOR PC8I, - FOR ASR33
4405 JMP I PCOPYS /-, EXIT IMMEDIATELY
4406 TAD BSAVE /IS IT A LEGIT ASCII CODE?
4407 AND K0200
4408 SNA CLA
4409 JMP I PCOPYS /NO - EXIT IMMEDIATELY
4410 TAD BSAVE /OK - PUNCH IT
4411 JMS I PUNCHX
4412 JMP I PCOPYS
4413
4414 \f/SUBROUTINE TO PUNCH LEADER-TRAILER
4415 LTPUNS, 0
4416 TAD KM0043
4417 DCA TLTCNT /# OF 200 CODES TO PUNCH
4418 TLTCNT=TEMP02
4419 TAD K0200 /200
4420 JMS I PUNCHX /PUNCH
4421 ISZ TLTCNT
4422 JMP .-3
4423 JMP I LTPUNS
4424
4425 /LOCAL CONSTANTS
4426 K16, 16
4427 ENPARA, KBLB
4428 K0200, 0200
4429 K0215, 0215
4430 RATE, 0
4431 K0700, 700
4432
4433 /LOCAL CROSSPAGE
4434 BINAX, BINAS
4435 BINGX, BINGS
4436 PUNCHX, PUNCHS
4437
4438 /OUTPUT REST OF TEXT AND PUNCH PARAMETER TAPE
4439 CON34, JMS TXPUNS /"<CRLF> SYNC ON CHANNEL: "-
4440 DIS01
4441 JMS DBLPUN /"<CRLF>SYNC ON CHANNEL:S#"
4442 JMS DBLPUN /"<CRLF>SYNC ON CHANNEL:S#<CRLF>"
4443 SETH
4444 DIS25
4445 JMS TPUNQS /"####"
4446 JMS TXPUNS /"#### SWEEPS AT"
4447 TXT34B
4448 SETH /"#### SWEEPS AT ######"
4449 DIS24
4450 JMS TPUNQS
4451 JMS TPUNQS /"#### SWEEPS AT ######*"
4452 JMS TXPUNS /"#### SWEEPS AT ######*S'<CRLF>"
4453 TXT34C
4454 TAD XROPT /IS THERE A SORT?
4455 SNA CLA
4456 JMP CON34A /NO-SKIP AHEAD
4457 JMS TXPUNS /"SORT AT"
4458 DIS12
4459 JMS DBLPUN /"SORT AT ###### *S<CRLF>"
4460 JMS TPUNQS
4461 JMS TXPUNS
4462 TXT34C
4463 \fCON34A, JMS TXPUNS /"(V**,#,####-####)<CRLF>"
4464 DIS99
4465 TAD LNBUFB /WAS THE B-SWEEP USED?
4466 SNA CLA
4467 DCA KBTOA /NO, DISABLE IT
4468 DCA RATE
4469 LOAD /CLEAR RATE
4470 FASI /LOAD-A SWEEP SAMPLING RATE
4471 JMP INTO /JUMP TO TRIAL SUBTRACT
4472 SIZE, LOAD
4473 TEMP
4474 FDIV
4475 TEN /REDUCE SAMPLING RATE BY TEN
4476 INTO, SAVE /SAVE RESULT
4477 TEMP /AND DO A TRIAL SUBTRACT
4478 FADD
4479 F4K
4480 ISZ RATE /RECORD THE SUBTRACT
4481 TAD FAC+1
4482 SPA CLA /TEST IT
4483 JMP SIZE /DO IT AGAIN
4484 NOP
4485 DFIX /NOW FIX THE REMAINDER
4486 15 /AND FIX THE RATE FOR THE CLOCK
4487 TAD RATE
4488 BSW /1 GOES TO 100, 2 GOES TO 200, ETC.
4489 CMA /COMPLEMENT OF THESE THREE BITS IS THE RATE MODE
4490 AND K0700
4491 TAD KMODE
4492 DCA KMODE
4493 JMS LTPUNS /PUNCH OUT 200 CODE
4494 TAD K16 /OUTPUT PARAMETERS (BIN)
4495 JMS I BINAX
4496 TAD ENPARA /OUTPUT FROM ADPARA TO END OF PARAMETERS
4497 JMS I BINGX
4498 TAD ADJLIS /OUTPUT LISTS (BIN)
4499 IAC
4500 JMS I BINAX
4501 TAD ADBUFA /OUTPUT FROM ADJLIS TO ADBUFA
4502 JMS I BINGX
4503 EJECT
4504
4505 CON34B, TAD ADJLIS /PUNCH OUT DATA BLOCK LINKAGES
4506 DCA AXPNTR /SET UP TO LOOK AT JOB LIST
4507 TAD MEMTOT /SET AVAILABLE FIELD COUNT
4508 CMA
4509 DCA TFIELD /-# OF FIELDS IN CONFIGURATION
4510 TFIELD=TEMP16
4511 TAD KHICOR /FIELD 0 MAX ALLOWABLE ADDR.
4512 DCA TMAXPG
4513 TMAXPG=TEMP17
4514 TAD ADBUFB
4515 TAD LNBUFB
4516 DCA TCURAD
4517 TCURAD=TEMP20
4518 \fCON35, TAD I AXPNTR /GET J1
4519 SNA CLA
4520 JMP CON37 /J1=0 FOR E.O.L.
4521 DCA LINST1 /SET LINK FLAG 0.
4522 ISZ AXPNTR /SKIP J2
4523 TAD I AXPNTR /J3 HOLDS # OF CELLS/POINT
4524 FLOAT
4525 SAVE
4526 FLOT01
4527 TAD K6201 /CDF 0
4528 JMS I BINFY
4529 TAD AXPNTR /ADDRESS OF LINKAGE (AXPNTR=J3)
4530 JMS I BINAY /PUNCH IT
4531 TAD I AXPNTR /GET # OF POINTS REQUIRED (J4)
4532 DCA TPOINT
4533 TPOINT=TEMP15
4534 TAD K0003 /SKIP J5, J6, AND J7
4535 TAD AXPNTR
4536 DCA AXPNTR
4537 TWO /FIRST BLOCK HAS 1 LOCATION FOR SWEEP COUNT
4538
4539 CON35A, DCA INITOS
4540 TAD K0003 /3 LOCATIONS FOR LINKAGES
4541 TAD TCURAD /CURRENT FREE ADDRESS
4542 CMA IAC
4543 TAD TMAXPG /COMPARE AGAINST MAX ALLOWABLE FOR FIELD
4544 DCA FAC+2
4545 DCA FAC+1
4546 NORM /# OF LOCATIONS AVAILABLE
4547 DCA FAC
4548 FDIV /LOCATIONS/LOC PER POINT
4549 FLOT01
4550 FIX
4551 DCA TSAM /#POINTS AVAIL FOR THIS BLOCK
4552 TSAM=TEMP13
4553
4554 CON36, TAD TSAM /POINTS AVAILABLE
4555 TAD TPOINT /POINTS REQUIRED
4556 SMA /DECREASE POINTS REQ BY POINTS AVAIL
4557 CLA /UNLESS MORE ARE AVAIL THAN ARE REQ
4558 DCA TREQ /-POINTS REQ AFTER THIS BLOCK
4559 TREQ=TEMP01
4560 \f TAD TREQ
4561 CMA IAC
4562 TAD TPOINT /+POINTS REQUIRED BEFORE THIS BLOCK
4563 DCA TBLK /POINTS IN THIS BLOCK.
4564 TBLK=TEMP02
4565 TAD TREQ /UPDATE POINTS REQUIRED
4566 DCA TPOINT
4567 TAD TBLK /LINK 1:-POINTS IN BLK (NEXT)
4568 JMS LINSTX /STORE LOC IN FIELD 1
4569 /*******OLD WAS JMS I BINDY
4570 TAD TFIELD /-# OF FIELDS LEFT
4571 TAD MEMTOT /+# OF FIELDS IN MACHINE -1
4572 IAC /+1: CURRENT FIELD
4573 CLL RTL /MAKE A CDF N INSTRUCTION
4574 RAL
4575 TAD K6201 /LINK2: CDF N
4576 DCA NXTCDF
4577 NXTCDF=TEMP14
4578
4579 TAD NXTCDF
4580 JMS LINSTX /******WAS JMS I BINDY
4581 TAD TCURAD /L3: NEXT BLOCK STARTS AT ...-1
4582 JMS LINSTX /***** WAS JMS I BINDY
4583 TAD TBLK /-POINTS IN BLOCK
4584 CMA IAC
4585 SNA /ANY POINTS IN BLOCK BEING LINKED TO?
4586 JMP CON35 /NO-GET NEXT JOB
4587 FLOAT /YES - GET BLOCK LENGTH
4588 FMUL /#CELLS IN BLK = PTS * CELLS/PNT
4589 FLOT01
4590 CLA CMA
4591 FIX
4592 CLA IAC
4593 SHFT
4594 TAD SHFR
4595 TAD TCURAD /CURRENT ADDR+BLK LENGTH
4596 DCA TCURAD /GETS NEW CURADDR.(NEXT BLOCK START -1)
4597 ISZ LINST1 /SET FLAG TO STORE CORE LINKS.
4598 TAD NXTCDF /PUNCH LINKAGE WORDS
4599 JMS I BINFY /FIELD
4600 TAD TCURAD /AND ADDRESS
4601 TAD INITOS /ADJUST FOR FIRST BLOCK LENGTH
4602 JMS I BINAY
4603 TAD K0003 /MOVE OVER L1,L2,L3
4604 EJECT
4605
4606 TAD TCURAD
4607 DCA TCURAD
4608 TAD TPOINT /IF POINTS STILL REQ .NE. 0, NEW FIELD
4609 SNA CLA /IF .EQ. 0, PUT END-OF-BLOCK
4610 JMP CON36 /PUT E.O.B.
4611 CLA CMA /NEW FIELD, START AT 0000
4612 DCA TCURAD
4613 TAD K7577
4614 DCA TMAXPG /ALL BUT FIELD 0 HAVE 7600 CELLS
4615 IAC /TCURAD IS ADDR-1
4616 ISZ TFIELD /UPDATE FIELD COUNT
4617 JMP CON35A /BLOCK OUT NEXT FIELD
4618 \fCON37, TAD CHKSUM /FINISH OUTPUT DEVICE.
4619 JMS I BINDY
4620 JMS I LTPUNX /PUNCH CHECKSUM AND LEADER TRAILER.
4621 CIF 10
4622 TAD TENPUN
4623 SZA CLA /PUNCHED CONTROL TAPE?
4624 JMP I PCONTX /YES WRITE CONTROL TAPE TO M.S.
4625 JMP I .+1 /STORE LINKS IN CORE AND DO TRIG.
4626 TRIGSU
4627
4628 /SUBROUTINE INITIALIZES PC8I OR ASR33
4629 /NOT USED ANY MORE.
4630 INITOS, 0
4631 CLA
4632 CHKSUM=TEMP21
4633 JMP I INITOS
4634 LINSTX, 0
4635 CDF CIF 10
4636 JMS I LINKSX /SAVE LINKS IN FIELD 1.
4637 JMS I BINDY
4638 JMP I LINSTX
4639 LINKSX, LINKS
4640 LINST1, 0
4641
4642
4643 *7364
4644 /LOCAL CROSSPAGE
4645 BINDY, BINDS
4646 BINAY, BINAS
4647 BINFY, BINFS
4648 LTPUNX, LTPUNS
4649 PCONTX, PCONTT
4650
4651 K7577, 7577
4652 /LOCAL CONSTANTS
4653 K6201, 6201
4654 K0036, 36
4655 KMCTRL, -220
4656 KHICOR, HICORE-1
4657
4658
4659 /FLOATING CONSTANTS
4660 TRNTIM, 0011
4661 3330
4662 KZEROF, 0000
4663 0000
4664 0000
4665 TEN, 0004
4666 2400
4667 0000
4668 \f/OUTPUTS BINARY GROUP STARTING AT BINA ADDRESS
4669 /AC HOLDS END ADDRESS FOR OUTPUT
4670 BINGS, 0
4671 CMA /-(END ADDRESS+1)
4672 TAD SHFR /+ BEGIN ADDRESS
4673 DCA BINCNT /IS # OF LOCATIONS TO OUTPUT
4674 BINCNT=TEMP02
4675 CMA /SET POINTER TO BEGIN ADDRESS
4676 TAD SHFR
4677 DCA AXPNTR
4678 TAD KCDF0
4679 JMS BINFS /SET DATA FIELD TO 0
4680 TAD I AXPNTR /GET DATA
4681 JMS BINDS /PUNCH IT
4682 ISZ BINCNT /ENOUGH?
4683 JMP .-3 /NO - AGAIN
4684 JMP I BINGS
4685
4686 /SUBROUTINE TO PUNCH CHARACTER (8-BIT)
4687 PUNCHS, 0
4688 DCA TCHAR /AC HOLDS 8BIT
4689 TCHAR=TEMP01
4690 TAD TENPUN /=1 IF PUNCHING
4691 CLA /**** CONTROL TAPES NOT PUNCHED.
4692 JMP I PUNCHS /NO - EXIT
4693 LAS /LOOK AT SWITCHES
4694 SMA CLA /SR0=0 FOR HI SPEED
4695 JMP PUNCHI /HI SPEED
4696 PUNLO, TAD TCHAR /LO SPEED - GET CHARACTER
4697 TLS /PUNCH IT
4698 TSF
4699 JMP .-1
4700 TCF /LEAVE WITH CLEARED FLAG
4701 CLA
4702 JMP I PUNCHS
4703 PUNCHI, TAD TCHAR /HI - GET CHARACTER
4704 PLS /PUNCH IT
4705 LAS /IF SR WAS SET INCORRECTLY
4706 SPA CLA /ALLOW USER TO RECOVER
4707 JMP PUNLO /PUNCH THIS ON LO
4708 PSF /PUNCH THIS ON HI
4709 JMP .-4
4710 PCF
4711 JMP I PUNCHS
4712 \f/SUBROUTINE CONVERTS AC TO TWO DATA FRAMES
4713 BINDS, 0
4714 DCA SHFR+1 /DATA TO BE PUNCHED
4715 TAD TENPUN /PUNCH ENABLED?
4716 SZA CLA
4717 CLA /***** CONTROL TAPES NOT PUNCHED
4718 /****** THEY ARE WRITTEN ON MASS STORAGE.
4719 TAD SHFR+1 /NO - STORE IN MEMORY
4720 BINMX, CDF /SET BY BINFS
4721 DCA I BPNTR /BPNTR SET UP BY BINAS
4722 CDF 0
4723 BINDO, JMS SHFT6 /GET HI ORDER 6 BITS
4724 JMS PUNWDS /PUNCH THEN GET NEXT 6 BITS AND PUNCH
4725 JMP I BINDS
4726
4727 /SUBROUTINE CONVERTS AC TO TWO ADDRESS FRAMES
4728 BINAS, 0
4729 DCA SHFR+1 /ADDRESS
4730 CLA CMA /SET POINTER FOR STORING IN CORE (IF TENPUN=0)
4731 TAD SHFR+1
4732 DCA BPNTR
4733 BPNTR=11
4734 JMS SHFT6 /GET HI ORDER 6 BITS
4735 TAD K0100A /SIGNIFIES ADDRESS WORD TO BIN LOADER
4736 JMS PUNWDS /PUNCH THEN GET NEXT 6 BITS AND PUNCH
4737 JMP I BINAS
4738
4739 /SUBROUTINE TO PUNCH TWO HALVES OF WORD
4740 PUNWDS, 0
4741 JMS UPCHKS /UPDATE CHECKSUM WITH 6 BITS IN AC
4742 JMS PUNCHS /PUNCH
4743 JMS SHFT6 /GET NEXT 6 BITS
4744 JMS UPCHKS /UPDATE CHECKSUM
4745 JMS PUNCHS /PUNCH IT OUT
4746 JMP I PUNWDS
4747
4748 /SUBROUTINE SHIFTS FAC 6 PLACES AND PUTS OUT 6 RIGHT OF FAC+1
4749 SHFT6, 0
4750 TAD K0006A /SHIFT 6 PLACES LEFT
4751 SHFT
4752 TAD SHFR /GET RESULT
4753 AND K0077B /MASK OFF
4754 JMP I SHFT6
4755
4756 /SUBROUTINE CONVERTS AC 9-11 TO FIELDATA
4757 BINFS, 0
4758 DCA BINMX /SET UP CDF N INSTRUCTION IF STORING IN CORE
4759 TAD BINMX
4760 AND K0070A
4761 TAD K0300 /MAKE A FIELD WORD FOR BIN LOADER
4762 JMS PUNCHS /PUNCH IT
4763 JMP I BINFS
4764 \f/SUBROUTINE TO UPDATE CHECKSUM
4765 UPCHKS, 0
4766 DCA TEMP01 /SAVE
4767 TAD CHKSUM /ADD TO CHECKSUM
4768 TAD TEMP01
4769 DCA CHKSUM /NEW CHECKSUM
4770 TAD TEMP01 /RESTORE
4771 JMP I UPCHKS
4772
4773 /LOCAL CONSTANTS
4774 K0006A, 0006
4775 K0070A, 0070
4776 K0077B, 0077
4777 K0100A, 0100
4778 K0300, 0300
4779 KCDF0, 6201
4780
4781 /COME TO 7540 TO CHECK FOR CTRL CHARACTERS
4782 /THIS VERSION IS FOR PC8I OR ASR 33
4783 KBRANS, 0
4784 BRAN
4785 CTRLST
4786 JMP I CTRLC /^C
4787 JMP I PRES0Y /^Z
4788 TAD BSAVE /NOT ^Z, OR ^C
4789 JMP I KBRANS
4790
4791 /LIST OF CTRL CHARACTERS
4792 CTRLST, +203 /^C
4793 -232 /^Z
4794
4795 /INDIRECT BRANCHES
4796 CTRLC, MONITR /7777 IF PAPER TAPE, 7600 FOR DSK OR DTA
4797 PRES0Y, PRES00
4798
4799 \f EJECT
4800 FIELD 1
4801 /WRITE OUT CONTROL FILE.
4802 *2000
4803 PCONTT, CDF 0
4804 CLA IAC /0-1777 OF FIELD 1 NEED NOT BE SAVED.
4805 DCA I (7746
4806 CDF 10
4807 JMS I (7700
4808 5 /CALL COMMAND DECODER.
4809 0
4810 0
4811
4812 TAD I (7600
4813 SNA /TEST FOR NO OUTPUT FILE.
4814 JMP ERR
4815 AND (17
4816 JMS I (7700
4817 1
4818 ANS1, 7201 /ENTRY POINT.
4819 JMP ERR
4820
4821 TAD I (7600
4822 JMS I (7700
4823 3
4824 ANS2, 7601 /RETURN BLOCK START.
4825 ANS3, 0 /- BLOCK LENGTH RETURNED.
4826 JMP ERR
4827
4828 CDF 0 /LOOK JOB LIST AND CONTROL LIST
4829 TAD (230 /END.
4830 DCA 10
4831 TAD (-3
4832 DCA 11
4833
4834 TAG1, TAD I 10
4835 SZA CLA
4836 JMP .-2
4837 ISZ 11
4838 JMP TAG1
4839 CDF 10
4840 CLA IAC
4841 TAD 10 /CALCULATE # OF 128 RECORDS.
4842 AND (7600
4843 CLL RAR
4844 DCA ARG1 /LOAD WRITE ARG.
4845 IAC
4846 TAD 10
4847 AND (177
4848 SZA CLA
4849 TAD (100
4850 TAD ARG1
4851 TAD (4000
4852 DCA ARG1
4853 DCA ARG2
4854 TAD ANS2
4855 DCA ARG3
4856
4857 JMS FILSZC /TEST IF OUTPUT FILE FULL.
4858 JMS FILBWT /WRITE FIELD 0 STUFF.
4859
4860 TAD ANS2 /RETURN WITH # OF BLOCKS WRITTEN.
4861 DCA ARG3 /NEW START BLOCK.
4862 TAD (CORSTG /START OF LINKS IN FIELD 1.
4863 DCA ARG2
4864
4865 TAD (100 /CAL. # OF 128 RECORDS TO WRITE.
4866 DCA ARG1
4867 TAD (CORSTG
4868 DCA 20
4869 TAG3, TAD (-200
4870 DCA 21
4871 TAG2, TAD I 20
4872 SNA CLA
4873 JMP TAG4
4874 TAD 20
4875 TAD (5
4876 DCA 20
4877 TAD 21
4878 TAD (5
4879 DCA 21
4880 TAD 21
4881 SPA CLA
4882 JMP TAG2
4883 TAD (100
4884 TAD ARG1
4885 DCA ARG1
4886 TAD 21
4887 JMP TAG3
4888
4889 TAG4, TAD (4010
4890 TAD ARG1
4891 DCA ARG1
4892 JMS FILSZC /TEST IF OUTPUT FILE FULL.
4893 JMS FILBWT /WRITE FIELD 1 LINKS.
4894 TAD ARG3 /RETURN WITH # OF BLOCKS USED,
4895 CIA
4896 TAD ANS2 /CALCULATE # OF BLOCKS USED.
4897 CIA
4898 DCA ARG4
4899 TAD I (7600 /CLOSE FILE.
4900 AND (17
4901 JMS I (7700
4902 4
4903 7601
4904 ARG4, 0
4905 JMP ERR
4906 JMP WDONE
4907
4908 FILBWT, 0
4909 CIF 0
4910 JMS I ANS1 /WRITE THE FILE.
4911 ARG1, 0
4912 ARG2, 0
4913 ARG3, 0
4914 JMP ERR
4915
4916 TAD ARG1 /CALCULATE # OF 256 BLOCKS.
4917 AND (3700
4918 CLL RTR
4919 RTR
4920 RTR
4921 RAR
4922 SZL
4923 IAC
4924 JMP I FILBWT
4925
4926
4927 *2200
4928
4929 WDONE, CDF CIF 0 /RETURN TO OS-8.
4930 JMP I .+1
4931 7600
4932
4933 \fFILSZC, 0 /TESTS IF FILE FULL.
4934 TAD ARG1 /GET # OF 128 RECORDS,
4935 AND (3700 /AND CALCULATE # OF BLOCKS.
4936 CLL RTR
4937 RTR
4938 RTR
4939 RAR
4940 SZL
4941 IAC CLL
4942 TAD ANS3 /TEST IF SIZE OVERFLOW.
4943 SNL
4944 JMP .+3
4945 SZA
4946 JMP ERR
4947 DCA ANS3
4948 JMP I FILSZC
4949
4950 ERR, HLT
4951 CLA CLL
4952 JMS I (7700 /ERROR MESSAGE.
4953 7
4954 0
4955 HLT
4956
4957 /READ IN CONTROL FILE
4958
4959 CONTAP, CLA CLL
4960 CDF 0 /SAVE LINKS FOR CHAIN.
4961 TAD I (5
4962 DCA CONSA1
4963 TAD I (6
4964 DCA CONSA2
4965 TAD I (7
4966 DCA CONSA3
4967
4968 CDF 10
4969 JMS I (7700 /CALL COMMAND DECODER
4970 5
4971 0
4972 0
4973
4974 TAD I (7617
4975 SNA /TEST FOR NO INPUT FILE.
4976 JMP ERR
4977 JMS I (7700 /FETCH DEVICE HANDLER
4978 1
4979 CONTP1, 7201 /ENTRY POINT.
4980 JMP ERR
4981
4982 TAD (200 /SETUP TO READ FILE.
4983 DCA CONP1
4984 TAD I (7620
4985 DCA CONP3
4986 JMS FILERD /READ 1ST BLOCK.
4987 TAD (-150
4988 DCA CONSA5 /# OF LOC TO SEARCH.
4989 JMP .+2
4990 CONTP5, JMS FILERD /READ NEXT BLOCK.
4991 CONTP2, CDF 0
4992 TAD I CONSA4 /SEARCH FOR END OF JOB LIST AND
4993 /OTHER PAR. 3 RD 0 IS END.
4994 ISZ CONSA4
4995 CDF 10
4996 SNA CLA
4997 JMP CONTP3
4998 CONTP4, ISZ CONSA5 /FIND END OF BLOCK READ.
4999 JMP CONTP2
5000 JMP CONTP5
5001 CONTP3, ISZ CONSA6 /CHECK FOR 3RD 0.
5002 JMP CONTP4
5003 TAD (210 /FIELD 0 DATA IN.
5004 DCA CONP1 /READ FIELD 1 DATA.
5005 TAD (CORSTG
5006 DCA CONP2
5007 CONTP6, TAD (CORSTG
5008 DCA CONSA4
5009 CONTP9, JMS FILERD /READ NEXT BLOCK.
5010 CONTP8, TAD I CONSA4 /0 MARKS THE END OF THE LINKS
5011 /5 LOC. PER LINK,CDF,ORG.,AND 3 LINK WORDS.
5012 /IF CDF IS 0 ITS THE END.
5013 SNA CLA
5014 JMP CONTP7
5015 TAD (5
5016 TAD CONSA4
5017 DCA CONSA4
5018 ISZ CONSA5
5019 JMP CONTP8
5020 JMP CONTP9
5021
5022 CONTP7, CDF 0 /RESTOR LINKS FOR CHAIN.
5023
5024 TAD CONSA1
5025 DCA I (5
5026 TAD CONSA2
5027 DCA I (6
5028 TAD CONSA3
5029 DCA I (7
5030
5031 JMP I (TRIGSU
5032
5033 CONSA1, 0
5034 CONSA2, 0
5035 CONSA3, 0
5036 CONSA4, 230
5037 CONSA5, 0
5038 CONSA6, -3
5039
5040 FILERD, 0
5041 CIF 0
5042 JMS I CONTP1
5043 CONP1, 0
5044 CONP2, 0 /SET TO READ TO LOC 0 ON 1ST READ.
5045 CONP3, 0
5046 JMP ERR
5047 TAD (-400
5048 DCA CONSA5
5049 ISZ CONP3
5050 TAD CONP2
5051 TAD (400
5052 DCA CONP2
5053 JMP I FILERD
5054
5055 \f*2400
5056 LINKS, 0
5057 DCA LK1 /SAVE LINK VALUE TO SAVE.
5058 CDF 0
5059 TAD I (LINST1 /TEST TO STORE LINKS.
5060 SNA CLA
5061 JMP LK4 /NO IF 0.
5062 ISZ LK2 /PROGRAM IS ONE PASS,LK2 SET ON LOAD.
5063 JMP LK3 /NOT A NEW LINK.
5064 TAD I (BINMX /NEW LINK SAVE CDF,ORG.
5065 CDF 10
5066 DCA I LINSPT
5067 ISZ LINSPT
5068 CDF 0
5069 TAD I (BPNTR /ADDRESS,SAVE AS ADDRESS-1.
5070 CDF 10
5071 DCA I LINSPT
5072 ISZ LINSPT
5073 TAD (-3
5074 DCA LK2 /STORE 3 VALUES OF LINK.
5075 LK3, TAD LK1
5076 CDF 10
5077 DCA I LINSPT
5078 ISZ LINSPT
5079 DCA I LINSPT /SET 0 TO MARK END IF SO.
5080 /NOTE IF NO AVERAGES SPECIFIED,CAN'T
5081 /GET HERE.
5082 ISZ LINKS
5083 CDF CIF 0
5084 JMP I LINKS
5085 LK4, TAD LK1 /RETURN WITH JOB LIST VALUE FOR BINDS.
5086 CDF CIF 0
5087 JMP I LINKS
5088 CORSTG=3200
5089 LINSPT, CORSTG
5090 LK1, 0
5091 LK2, -1
5092
5093 TRIGSU, CDF 10 /MOVE TRIG AND LINK STORE CODE TO FIELD 0
5094 /THEN EXECUTE IT.
5095 TAD (6377
5096 DCA 10
5097 TAD (CORFIX-1
5098 DCA 11
5099 TAD (-EXITXX+CORFIX-1
5100 DCA 12
5101 TRGSU1, CDF 10
5102 TAD I 11
5103 CDF 0
5104 DCA I 10
5105 ISZ 12
5106 JMP TRGSU1
5107 CDF CIF 0
5108 JMP .+1
5109 6400
5110 \f*2600
5111
5112 /LINKS SAVED IN FIELD 1 AS CDF,ORG. AND 3 LINK VALUES.
5113
5114 CORFIX, CDF 0 /SAVE LINKS IN CORE.
5115 TAD ZZ3177
5116 DCA 10
5117 TAD ZZ6777
5118 DCA 13
5119 DCA I ZZ7000
5120 CORFX3, CDF 10
5121 TAD I 10 /GET 5 WORDS OF LINKS.
5122 SNA
5123 JMP CORFX6 /0 NO MORE LINKS.
5124 DCA CORFXX /SAVE CDF VALUE.
5125 TAD CORFXX
5126 TAD ZM6211 /IF CDF 10,SAVE IN FIELD 0.
5127 SNA CLA
5128 JMP CORFX4
5129 JMS CORFXS /STORE LINKS.
5130 JMP CORFX3
5131 CORFX4, TAD ZZM4 /SAVE FIELD 1 LINK IN FIELD 0.
5132 DCA 14
5133 CDF 0 /SAVE AS 1,ORG,3 LINK VALUES.
5134 IAC
5135 DCA I 13
5136 CORFX5, CDF 10
5137 TAD I 10
5138 CDF 0
5139 DCA I 13
5140 ISZ 14 /STORE ORG AND 3 LINKS.
5141 JMP CORFX5
5142 DCA I 13 /SET NEXT WORD 0 TO MARK END.
5143 CLA CMA
5144 TAD 13
5145 DCA 13
5146 JMP CORFX3
5147 CORFX6, TAD ZZ6777 /OTHER FIELDS DONE,
5148 DCA 10 /STORE FIELD 1 LINKS.
5149 TAD ZZ6201
5150 DCA CORFRS+1
5151 TAD ZZ6211
5152 DCA CORFXX
5153 CORFX7, CDF 0
5154 TAD I 10 /GET 5 WORD LINK SET.
5155 SNA CLA
5156 JMP I (6600 /DONE GO TO TRIGGER.
5157 JMS CORFXS
5158 JMP CORFX7
5159
5160 CORFXS, 0
5161 JMS CORFRS
5162 TAD I 10 /STORAGE ADD. IS LOC-1 FOR AUTO INDEX.
5163 DCA 11
5164 TAD ZZM3
5165 DCA 12
5166 CORFX2, JMS CORFRS /SET CDF WHERE TO FETCH LINK.
5167 TAD I 10
5168 JMS CORFXZ /SET CDF WHERE TO STORE LINK.
5169 DCA I 11
5170 ISZ 12 /STORE 3 LINKS.
5171 JMP CORFX2
5172 JMP I CORFXS
5173
5174 CORFRS, 0
5175 CDF 10
5176 JMP I CORFRS
5177 ZZ3177, 3177
5178 ZZM3, -3
5179 ZZ6777, 6777
5180 ZZ7000, 7000
5181 ZZ6201, CDF 0
5182 ZZ6211, CDF 10
5183 ZM6211, -6211
5184 ZZM4, -4
5185
5186 CORFXZ, 0
5187 CORFXX, 0
5188 JMP I CORFXZ
5189 \f*3000
5190 /THIS SECTION CALIBRATES A SCHMITT TRIGGER BY WIATING
5191 /FOR THE SPECIFIED TRIGGER TO FIRE AND THEN TAKING A
5192 /SWEEP OF ANALOG CHANNEL 0.
5193 TRIG, CDF 0
5194 KCC
5195 TAD TTYLIS
5196 DCA 10
5197 TYP, TAD I 10
5198 SNA /IS THIS THE END OF LIST?
5199 JMP DONE /YES
5200 TLS
5201 CLA
5202 TSF
5203 JMP .-1
5204 JMP TYP
5205 DONE, TAD KMODE /NOW SET UP CLOCK
5206 CLOE
5207 CMA
5208 CLZE
5209 CLA
5210 ADCL
5211 TAD K200
5212 ADLE
5213 CLSA
5214 TWAIT, CLSA
5215 AND SMASK /IS IT THE PROPER SYNC?
5216 SNA CLA
5217 JMP HELEN
5218 TAD 16
5219 CLAB
5220 CLA CLL
5221 TAD M1000
5222 DCA PNTCNT
5223 PNTCNT=TEMP01
5224 TAD M1000
5225 DCA XREF
5226 XREF=TEMP02
5227 ALOOP, ADSK
5228 JMP .-1
5229 ADRB
5230 DILY
5231 CLL CLA IAC RAL
5232 TAD XREF
5233 DILX
5234 DCA XREF
5235 DISD
5236 JMP .-1
5237 DIXY
5238 ISZ PNTCNT
5239 JMP ALOOP
5240 JMP TWAIT-1
5241 HELEN, KSF
5242 JMP TWAIT
5243 KRB
5244 TAD ZZM203
5245 SNA CLA
5246 JMP I EXITXX
5247 JMP I SECT2
5248 TTYLIS, 6665
5249 LIST, 324
5250 322
5251 311
5252 307
5253 307
5254 305
5255 322
5256 0
5257 K200, 200
5258 M1000, -1000
5259 SECT2, OVRLAY
5260 ZZM203, -203
5261 EXITXX, 7600 /SHOULD BE LAST THING ON PAGE.
5262
5263 $
5264 \f\1a