software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape4 / TDFRMT.PA
CommitLineData
7af5ad59
PH
1/TD8E FORMATTER V4
2/
3/
4/
5/
6/
7/
8//
9/
10/
11/
12/
13/COPYRIGHT (C) 1971, 1975
14/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
15/
16/
17/
18/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
19/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU-
20/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER
21/COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE
22/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO
23/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
24/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
25/
26/
27/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
28/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
29/EQUIPMRNT COROPATION.
30/
31/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
32/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
33/
34/
35/
36/
37/
38/
39\f
40
41/TD8E DECTAPE FORMATTER COPYRIGHT 1971
42/DIGITAL EQUIPMENT CORP.
43/MAYNARD , MASS
44
45
46
47
48
49 X1=10
50 X2=11
51
52/SYMBOL TABLE AUGMENTATION
53
54 SDSS=6771
55 SDST=6772
56 SDSQ=6773
57 SDLC=6774
58 SDLD=6775
59 SDRC=6776
60 SDRD=6777
61
62
63 *0
64 0
65 JMP 1 /HLT PROGRAM GOT INTERRUPTED SOMEHOW
66 2
67 3
68 0
69 0
70
71/WORKING LOCATIONS
72
73 *20
74
75W1, 0000
76W2, 0000
77W3, 0000
78W4, 0000
79W5, 0000
80W6, 0000
81BLOCKS, 0000
82DTA, 0000
83PHASE, 0000
84TOTAL, 0000
85VAR1, 0000
86VAR2, 0000
87/CONSTANTS
88
89C0017, 0017
90C0070, 0070
91C0077, 0077
92C0007, 0007
93C0700, 0700
94C203, 0203
95C201, 0201
96C260, 0260
97C261, 0261
98C270, 0270
99C271, 0271
100C277, 0277
101C1620, 1620
102C7000, 7000
103C7700, 7700
104C7714, 7714
105C7761, 7761
106CRCOD, 0215
107LETK, 0313
108LFCOD, 0212
109M2, -2
110M3, -3
111M6, -6
112M7, -7
113M14, -14
114M144, -144
115SPCOD, 0240
116
117BADD, BUFFER-1
118BFR, BUFFER
119COMPAR, COMPRE
120IT, INIT1
121QU1, Q1
122QU2, Q2
123QU3, Q3
124QU4, Q4
125MESS, MES
126STX, START
127TYOCT, TYCT
128TYPE, MESAGE
129TYPIN, TYPN
130WAIT, STALL
131WC, 0
132MTR, 0
133SLRDRC, SRDRC
134DATRD, 0
135M55, -55
136M25, -25
137M26, -26
138M32, -32
139M10, -10
140M70, -70
141M73, -73
142M51, -51
143M45, -45
144M22, -22
145M143, -143
146M52, -52
147M31, -31
148M306, -306
149CNT, 0
150M4, -4
151M307, -307
152SSDSQT, SDSQT
153SA3LNS, A3LNS
154SCEXPC, CEXPC
155MSK77, 0077
156NUD, NUDTA
157BLK, 0
158REVBLK, 0
159BCXOR, SBCXOR
160CHKSUM, 0
161SBWORD, 0
162
163
164
165/TYPE THE CHARACTER IN THE AC ON THE KEYBOARD PRINTER
166
167RSEND, 0000
168 TLS /LOAD AND PRINT, CLEAR FLAG
169 TSF /WAIT FOR CONFIRMATION
170 JMP .-1 /ENDLESSLY
171 TCF /CLEAR THE FLAG ANYWAY
172 JMP I RSEND
173
174
175/PRINT A "?" ON THE KEYBOARD TYPER
176
177QU, .+1
178 IOF
179 CLA CLL /C(AC)+C(L)=0
180 TAD C277 /"?"
181 JMS RSEND /TYPE THE CHARACTER
182 JMP I .+1 /RESTART
183 INIT
184
185/DECTAPE CONTROL WORDS
186
187DT1400, 1400
188DT0400, 0400
189DT2000, 2000
190DT3000, 3000
191DT1000, 1000
192
193BINCO, BINCON
194SELTIM, ZTIM
195MARKER, ZMKTK
196BLKERR, ZBLK
197DATERR, ZDATA
198CHKERR, ZPAR
199DOMARK, STMK
200DBUFPT, 0 /POINTER TO CURRENT POSITION IN DTA LIST
201
202
203
204*200 /PAGE 1
205/TYPE CANNED MESSAGES.....
206/THANKS TO DIGITAL 8-18-U
207 JMP I .+1
208 PATCH
209
210MESAGE, 0
211 IOF
212 CLA CMA /SET C(AC)=-1
213 TAD MESAGE /ADD LOCATION
214 DCA 10 /AUTO INDEX REGISTER
215 TAD I 10 /FETCH FIRST WORD
216 DCA MSRGHT /SAVE IT
217 TAD MSRGHT
218 RTR
219 RTR /ROTATE 6 BITS TO THE RIGHT
220 RTR
221 JMS TYPECH /TYPE IT
222 TAD MSRGHT /GET DATA AGAIN
223 JMS TYPECH /TYPE RIGHT HALF
224 JMP MESAGE+5 /CONTINUE
225MSRGHT, 0 /TEMPORARY STORAGE
226TYPECH, 0 /TYPE CHARACTER IN C(AC)6-11
227 AND C0077
228 SNA /IS IT END OF MESSAGE?
229 JMP I 10 /YES: EXIT
230 TAD M40 /SUBTRACT 40
231 SMA /<40?
232 JMP .+3 /NO
233 TAD C340 /YES: ADD 300
234 JMP MTP /TO CODES <40
235 TAD M3 /SUBTRACT 3
236 SZA /IS IT ZERO?
237 JMP .+3 /NO
238 TAD C212 /YES: CODE 43 IS
239 JMP MTP /LINE-FEED (212)
240 TAD M2 /SUBTRACT 2
241 SZA /IS IT ZERO?
242 JMP .+3 /NO
243 TAD C215 /YES: CODE 45 IS
244 JMP MTP /CARRIAGE RETURN (215)
245 TAD C245 /ADD 200 TO OTHERS >40
246MTP, TLS /TRANSMIT CHARACTER
247 TSF /WAIT FOR THE FLAG
248 JMP .-1 /NOT SET YET
249 CLA /SET: CLEAR C(AC)
250 JMP I TYPECH /RETURN
251
252/CONSTANTS
253
254M40, -40
255C340, 340
256C212, 212
257C215, 215
258C245, 245
259/ROUTINE WAITS UNTILL A COMPLETE MESSAGE HAS BEEN ENTERED
260/SIGNIFIED BY A CR.
261
262TYPN, 0
263 IOF
264 KCC /CLEAR AC, KEYBOARD FLAG
265 TAD BADD /GET BUFFER ADDRESS
266 DCA W1 /STORE FOR THE CHARACTER STRING
267
268/READ AND RESPOND WITH THE CHARACTER
269
270NTYRTN, ISZ W1 /NORMAL RETURN. INCREMENT BUFFER
271 KSF /WAIT FOR KEYBOARD
272 JMP .-1 /FLAG TO RAISE
273 KRB /GOT FLAG, RESET IT, GET CHARACTER
274 JMS RSEND /SEND CHARACTER BACK
275 AND (177 /TAKE CARE OF PARITY
276 TAD (200
277 DCA I W1 /LOAD CHARACTER INTO BUFFER AREA
278 TAD I W1 /CHECK FOR CTRL C
279 CIA
280 TAD C203
281 SZA CLA
282 JMP CHKSP /NO- CHECK FOR SPACE
283 6007 /CAF- CLEAR ALL FLAGS
284 NOP /JUST IN CASE
285 CLA
286 JMP 7605
287
288/IF CHARACTER IS A SPACE, IGNORE IT
289
290CHKSP, TAD I W1 /CHARACTER INTO THE AC
291 CIA /SUBTRACT FROM SPACE CODE (240)
292 TAD SPCOD /COMPLETE COMPARISON
293 SNA CLA /WAS IT A SPACE?
294 JMP NTYRTN+1 /YES: DO NOT INCREMENT BUFFER
295
296/IF CHARACTER IS A CR, EXIT FROM ROUTINE
297
298 TAD I W1 /CHARACTER TO AC
299 CIA /SET AC TO SUBTRACT CR (215)
300 TAD CRCOD /COMPLETE COMPARISON
301 SZA CLA /WAS IT CR?
302 JMP NTYRTN /NO: INCREMENT BUFFER + WAIT
303
304/CARRIAGE RETURN FOUND, EXIT FROM ROUTINE
305
306 TAD LFCOD /GIVE KEYBOARD LINE FEED
307 JMS RSEND /EXECUTE LINE FEED
308 CLA CLL /EXIT WITH C(ACC) + AND C(L)=0
309 IOF
310 JMP I TYPN /RETURN TO CALL
311\f
312/COMPARE A STRING OF CHARACTERS IN "BUFFER"
313/TO A CHARACTER STRING AFTER A JMS IN ASCII
314
315COMPRE, 0
316 CLA CMA /C(AC)=7777
317 TAD COMPRE /SUBTRACT 1 FOR INDEX REG 1
318 DCA 10 /AUTO INDEX 1 SET TO CHA STRING
319 TAD BADD /AUTO INDEX 2 SET TO BUFFER-1
320 DCA 11 /LOAD X2
321
322/COMPARE CHARACTERS TILL ONE DOESN'T COMPARE OR TILL
323/A 0 IS FOUND IN X1. IF OK, RETURN TO TWO PLUS THE
324/ZERO, IF BAD ONE PLUS
325
326 TAD I X1 /CHARACTER FROM PROGRAM
327 CIA /TO SUBTRACT FROM
328 TAD I X2 /CHARACTER IN BUFFER
329 SZA CLA /COMPARE?
330 JMP CERR /NO:RESYNC FOR NON COMPARE EXIT
331 TAD I X1 /YES: CHECK FOR GOOD EXIT
332 SZA /IF 0, EXIT GOOD
333 JMP .-6 /NO: TEST NEXT CHAACTER
334 ISZ X1 /+1 TO X1(TOTAL 2 FROM THE 0)
335 JMP I X1 /+1 TO X1, EXIT
336
337/ERROR FOUND. RESYNC AND EXIT NO COMPARE
338
339CERR, TAD I X1 /CHARACTER FROM PROGRAM
340 SZA CLA /IS THIS EXIT KEY? (0000)
341 JMP .-2 /NO: GET NEXT
342 JMP I X1 /YES: EXIT, NOT COMPARE
343\f
344*400
345/VARIOUS ERROR MESSAGES
346/"NOT DECIMAL"
347
348Q1, JMS I TYPE
349 1617 /NO
350 2440 /T
351 0405 /DE
352 0311 /CI
353 1501 /MA
354 1400 /L
355 JMP QUX
356
357/"TO MANY WORDS"
358
359Q2, JMS I TYPE
360 2417 /TO
361 1740 /O
362 1501 /MA
363 1631 /NY
364 4027 / W
365 1722 /OR
366 0423 /DS
367 0000 /00
368 JMP QUX
369
370/"TO MANY BLOCKS"
371
372Q3, JMS I TYPE
373 2417 /TO
374 1740 /O
375 1501 /MA
376 1631 /NY
377 4002 / B
378 1417 /LO
379 0313 /CK
380 2300 /S0
381 JMP QUX
382
383/"NOT DIVISIBLE BY 3"
384Q4, JMS I TYPE
385 1617 /NO
386 2440 /T
387 0411 /DI
388 2611 /VI
389 2311 /SI
390 0214 /BL
391 0540 /E
392 0231 /BY
393 4063 / 3
394 0000 /00
395QUX, JMS I TYPE
396 4345 /CR+LF
397 0000 /END
398 JMP I .+1
399 INIT
400/THE CODING BELOW CREATES THE BLOCK NUMBER
401/CONVERSION PRIOR TO THE TAPE WRITE.
402
403MES, 0
404 DCA W4 /SAVE WORD
405 CLL
406 TAD W4
407 CMA RTR
408 RTR
409 AND C7000
410 DCA V1
411 TAD W4
412 CMA RTL
413 RAL
414 AND C0700
415 DCA V2
416 TAD W4
417 CMA RTR
418 RAR
419 AND C0070
420 DCA V3
421 TAD W4
422 CMA RTL
423 RTL
424 AND C0007
425 TAD V1
426 TAD V2
427 TAD V3
428 JMP I MES
429
430V1, 0000
431V2, 0000
432 7777
433 7700
434 0000
435V3, 0000
436 0000
437
438PATCH, CLA
439 TAD .+4
440 DCA 1
441 JMP I .+1
442 START
443 HLT
444/TYPE ONE FOUR CHARACTER OCTAL WORD GIVEN TO THE
445/ROUTINE VIA C(ACC). C(ACC)=0 ON EXIT
446
447TYCT, 0
448 DCA TW1 /STORE WORD GIVEN
449 TAD TW1 /TO C(ACC) AGAIN
450 RTR
451 RTR /6 BITS RIGHT
452 RTR
453 DCA TYCT1+2 /SAVE ROTATED VALUE, 1ST TWO
454 TAD TYCT1+2 /TO C(ACC) AGAIN
455 AND C0007 /ISOLATE SECOND CHARACTER
456 TAD C6060 /CONVERT TO ASCII
457 DCA TYCT1+1 /STORE AS FIRST PARTIAL 2
458 TAD TYCT1+2 /ROTATED VALUE STORED ABOVE
459 RTL
460 RAL /3 BITS LEFT
461 AND C0700 /ISOLATE FIRST CHARACTER
462 TAD TYCT1+1 /CONVERT 1ST TO ASCII
463 DCA TYCT1+1 /1ST AND 2ND CHARACTERS READY
464 TAD TW1 /ORIGIONAL WORD
465 AND C0007 /ISOLATE 4TH CHARACTER
466 TAD C6060 /CONVERT 4 TH TO ASCII
467 DCA TYCT1+2 /STORE 4TH FOR A MOMENT
468 TAD TW1 /ORIGIONAL WORD
469 RTL
470 RAL /POSITION IT 3RD CHARACTER
471 AND C0700 /ISOLATE 3RD CHARACTER
472 TAD TYCT1+2 /CONVERT TO ASCII
473 DCA TYCT1+2 /CONVERSION COMPLETE
474TYCT1, JMS I TYPE /TYPE THE FOUR CHARACTERS
475 0 /FIRST 2
476 0 /SECOND 2
477 0 /KILL KEY
478 JMP I TYCT /EXIT FROM ROUTINE
479
480/SOME CONSTANTS FOR THE ROUTINE
481
482TW1, 0000
483C6060, 6060
484\f
485*600
486
487STALL, 0
488 CLA
489 TAD I 12 /WORD TO BE WRITTEN
490 SDSQ /WAIT FOR QUADLINE FLAG
491 JMP .-1
492 SDLD /LOAD DATA REGISTERS
493 SDST /CHECK FOR TIMING ERROR
494 SKP
495 JMS I SELTIM /TIMING ERROR
496 CLA
497 JMP I STALL /GO GET NEXT WORD
498
499
500
501/WAIT TILL WORD COUNT REGISTER GOES TO ZERO
502
503/BLOCK NUMBER ERROR
504ZBLK, 0
505 CLA
506 TAD DTA
507 SDLC /STOP MOVEMENT OF TAPE
508 JMS I TYPE
509 2003 /PC
510 4000 /END
511 CLA CMA
512 TAD ZBLK
513 JMS I TYOCT
514 JMS I TYPE
515 4040 /DOUBLE SPACE
516 0214 /BL
517 1703 /OC
518 1340 /K
519 1625 /NU
520 1502 /MB
521 0522 /ER
522 4000 /END
523 JMP ZCOM
524
525 /DATA ERRORS
526ZDATA, 0
527 CLA
528 TAD DTA
529 SDLC /STOP THE TAPE
530 JMS I TYPE
531 2003
532 4000
533 CLA CMA
534 TAD ZDATA
535 JMS I TYOCT
536 JMS I TYPE
537 4040
538 0401 /DA
539 2401 /TA
540 4000 /END
541 JMP ZCOM
542
543/MARK TRACK ERROR
544
545ZMKTK, 0
546 CLA
547 TAD DTA
548 SDLC /STOP THE TAPE
549 JMS I TYPE
550 2003 /PC
551 4000 /END
552 CLA CMA
553 TAD ZMKTK
554 JMS I TYOCT
555 JMS I TYPE
556 4040
557 1501 /MA
558 2213 /RK
559 4024 / T
560 2201 /RA
561 0313 /CK
562 4000 / 0
563 JMP ZCOM
564/PARITY ERROR
565
566ZPAR, 0
567 CLA
568 TAD DTA
569 SDLC /STOP THE TAPE
570 JMS I TYPE
571 2003 /PC
572 4000 /END
573 CLA CMA
574 TAD ZPAR
575 JMS I TYOCT
576 JMS I TYPE
577 4040
578 0310 /CH
579 0503 /EC
580 1323 /KS
581 2515 /UM
582 4000 /0
583 JMP ZCOM
584
585
586/TIMING ERROR
587
588ZTIM, 0
589 CLA
590 TAD DTA
591 SDLC /STOP THE TAPE
592 JMS I TYPE
593 2003
594 4000
595 CLA CMA
596 TAD ZTIM
597 JMS I TYOCT
598 JMS I TYPE
599 4040
600 2411 /TI
601 1511 /MI
602 1607 /NG
603 4000 / 0
604
605/TYPE "ERROR PHASE X"
606
607ZCOM, TAD PHASE /WHAT PHASE OF OPERATION
608 TAD PFORM /WAS THE MACHINE IN
609 DCA TFORM /WHEN ERROR OCCURED
610 JMS I TYPE
611 0522 /ER
612 2217 /RO
613 2240 /R
614 2010 /PH
615 0123 /AS
616 0540 /E
617TFORM, 4060 / X
618 4543 /CR+LF
619 0000 /END
620 JMP I .+1
621 RETRY
622PFORM, 4060
623
624
625\f
626/HERE STARTS THIS PROGRAM. IT WILL ASK THE
627/OPERATOR FOR DRIVE NUMBERS, THEN ASK HIM FOR
628/A DIRECTION ON WHAT TO DO WITH THE DRIVES.
629
630/THE SEQUENCE FOR MARKING A TAPE WOULD APPEAR AS:
631
632
633/UNIT? (0 OR 1 OR 0 1)
634/FORMAT? (MARK 1215)
635/2277 WORDS, 0256 BLOCKS.OK? YES OR NO
636/(YES)
637
638
639/THAT DATA IN PARENTHESIS IS TYPED BY THE OPERATOR
640/(HE DOESN'T TYPE THE PARENTHESIS)
641/IF HE HAD ANSWERED NO, "FORMAT?" WOULD BE TYPED OUT.
642/IF THE DRIVE WAS WRONG, HE WOULD TYPE RESTART.
643/IF HE HAD TYPED "MARK" IN RESPONSE TO "FORMAT?" THE
644/TAPE WOULD BE MARKED WITH THE STANDARD PDP-8 CONFIGURATION.
645/IF HE HAD TYPED "MARK 384" THE TAPE WOULD
646/BE MARKED WITH THE STANDARD PDP-10 CONFIGURATION
647/NOTE: THE WORD AND BLOCK NUMBERS ARE TYPED IN OCTAL
648/IF A MISTAKE OCCURS ON THE OPERATORS PART (WITH REFERANCE
649/TO BLOCK + WORD SIZE) HE WILL BE TOLD ABOUT IT
650
651
652
653
654
655*1000
656
657/MAKE A CALL FOR THE DECTAPE NUMBERS TO BE
658/WORKED.
659
660STAR0, JMS I TYPE /TYPE VERSION NUMBER
661 4543 /CR+LF
662 4300 /LF+0
663 JMS I TYPE
664 TEXT /TDFMT V4A/
665START, JMS I TYPE /SET UP TYPER
666 4543 /CR+LF
667 4300 /LF+END
668
669TYQU, JMS I TYPE /"UNIT?"
670 2516 /UN
671 1124 /IT
672 7740 /?
673 0000 /END
674
675/WAIT FOR A REPLY
676
677 JMS I TYPIN /GET NUMBERS
678 TAD BADD /INITIALIZE POINTER (BFR)
679 IAC /(BADD=BUFFER-1, SO BUMP THE AC)
680 DCA BFR /TO START OF INPUT BUFFER
681 DCA DCTR /INITIALIZE DTA COUNTER TO 0
682 DCA CRFLAG /CLEAR FLAG SO CR NOT ACCEPTIBLE
683CRCHK, TAD CRCOD /GET CODE FOR CAR. RETN
684 CIA /NEGATE IT
685 TAD I BFR /SEE IF NEXT CHAR. IN
686 SNA /BUFFER IS CAR. RETN.
687 JMP OKCR /YES: SEE IF C.R. LEGAL HERE
688 DCA CRFLAG /NO: SO C.R. IS LEGAL NOW
689VALCHK, TAD C260 /SEE IF # IS LESS THAN
690 CIA /ASCII 0 (260)
691 TAD I BFR /SUBTRACT BUFFER DATA
692 SPA CLA /IS IT LESS THAN ASII 0?
693 JMP TYQU /YES: TELL OUTSIDE WORLD
694 TAD C261 /NO: SEE IF GREATER THAN
695 CMA /ASC II 1 (261)
696 TAD I BFR /SUBTRACT BUFFER DATA
697 SMA CLA /GREATER THAN ASCII 7?
698 JMP TYQU /YES: TELL OUTSIDE WORLD
699 TAD I BFR /NO: ACCEPT BUFFER
700 RTR
701 AND C7000 /ISOLATE DTA
702 JMS REPEAT /GO CHECK FOR REPEATED DTA AND STORE #
703 ISZ BFR /INCREMENT INPUT BUF. PTR.
704 JMP CRCHK /GO LOOK AT NEXT CHAR.
705
706/THIS SECTION CHECKS TO SEE IF THERE HAS BEEN ANY
707/VALID INPUT ONCE A CARRIAGE RETURN IS SEEN
708OKCR, CLA /CLEAR AC
709 TAD CRFLAG /LOAD CR FLAG; 0 MEANS NO GOOD
710 SNA CLA
711 JMP START /0: NO VALID INPUT; RESTART
712 TAD DCTR /NOT 0: SO HAVE VALID INPUT
713 TAD DBUFAD /CALCULATE END OF DTA LIST +1
714 DCA DBUFPT /STORE IT IN BUFFER POINTER, THEN
715 CMA /COMPLEMENT THE AC AND
716 DCA I DBUFPT /TERMINATE DTA LIST WITH 7777
717INIT1, CLA /CLEAR AC IF COME THRU LOC IT
718 TAD DBUFAD /AND RESET LIST POINTER
719 DCA DBUFPT /TO START OF LIST
720 JMS I GETDTA /GO GET A DTA NUMBER
721
722/INFORM THE OPERATOR THAT THE PROGRAM IS SET TO START
723/TYPE "FORMAT" AND WAIT FOR THE REPLY
724
725INIT, JMS I TYPE /MESSAGE OUT
726 0617 /FO
727 2215 /RM
728 0124 /AT
729 7740 /?
730 0000 /END
731 JMS I TYPIN /WAIT FOR A REPLY
732 JMS I COMPAR /DID HE TYPE "MARK"?
733 0315 /M
734 0301 /A
735 0322 /R
736 0313 /K
737 0000 /END
738 JMP .+3
739 JMP I .+1
740 MARK /TO MARK A TAPE
741/SEE IF HE TYPED "RDR" (READ AND TYPE FIRST 12
742/BLOCK NUMBERS IN REVERSE).
743
744 JMS I COMPAR
745 0322 /R
746 0304 /D
747 0322 /R
748 0000 /0
749 JMP .+3
750 JMP I .+1
751 RDR /TYPE BLOCKS
752
753/SEE IF HE TYPED "RDF" (READ AND TYPE FIRST 12
754/BLOCK NUMBERS FORWARD).
755
756 JMS I COMPAR
757 0322 /R
758 0304 /D
759 0306 /F
760 0000 /0
761 JMP .+3
762 JMP I .+1
763 RDFA /TYPE BLOCKS
764
765/SEE IF HE TYPED "SAME" (MEANING MARK A TAPE
766/USING THE SAME CONSTANTS AS BEFORE).
767
768 JMS I COMPAR
769 0323 /S
770 0301 /A
771 0315 /M
772 0305 /E
773 0000 /0
774 JMP .+3
775 JMP I .+1
776 SWCHK /TO MARK AS BEFORE
777
778/SEE IF HE TYPED "RESTART"
779
780 JMS I COMPAR
781 0322 /R
782 0305 /E
783 0323 /S
784 0324 /T
785 0301 /A
786 0322 /R
787 0324 /T
788 0000 /0
789 JMS QU /MUST BE NONSENSE
790 JMP START /START ALL OVER
791GETDTA, NUDTA /POINTER TO ROUTINE TO SWITCH UNITS
792CRFLAG, 0 /=0, CR NO GOOD; NOT 0, CR IS OK
793\f\f
794 *1200
795/MARK WAS TYPED IN, IF W1-1 IS NOT A "K",ASSUME THAT
796/A NUMBER WAS TYPED IN, AND VERIFY THIS. IF W1-1 IS
797/A "K", ASSUME STANDARD FORMAT.(W1=LAST ENTRY INTO THE BUFFER)
798
799MARK, TAD I BINCO /ADDRESS OF FIRST BINARY
800 DCA W5 /CONSTANT FOR DEC TO BIN
801 DCA TOTAL /WILL BE BINARY EQUIVILANT
802
803/SAVE C(X1) FOR DECREMENT THROUGH BUFFER
804
805DNC, CLA CMA /DECREMENT BUFFER ADDRESS
806 TAD W1 /ADDRESS BY 1
807 DCA W1 /W1=SWEEP ADDRESS
808
809/LOOK FOR END OF PROCESSING BY LOOKING FOR A "K" IN BUFFER
810
811 TAD LETK /LETTER ASCII "K"
812 CIA /SUBTRACT FROM CHARACTER
813 TAD I W1 /IN BUFFER
814 SNA CLA /EQUAL?
815 JMP DIV3 /YES: SEE IF DIVISIBLE BY 3
816
817/VERIFY THIS CHARACTER AS BEING OF DECIMAL ORIGIN
818
819 TAD C260 /ASCII FOR 0
820 CIA /TO SEE IF CHARACTER
821 TAD I W1 /IS LESS THAN 260
822 SPA CLA /IS IT?
823 JMP I QU1 /YES: NOT DECIMAL CHARACTER
824 TAD C271 /ASCII FOR 9
825 CMA /TO SEE IF GREATER THAN
826 TAD I W1 /9
827 SMA CLA /IS IT?
828 JMP I QU1 /NOT A DECIMAL CHARACTER
829/CHARACTER IS DECIMAL. NOW CONVERT IT TO BINARY
830/REMEMBER POSITION OF CHARACTER IN BUFFER MAY BE
831/10,100,1000.
832
833 TAD I W1 /ISOLATE THE NUMBER
834 AND C0017 /FOR PROPER CONVERSION
835 SNA /IF 0, NO BINARY CONVERSION NEEDED
836 JMP IBS /YES: 0: INCREMENT BINARY CONVERSION
837
838/NOT 0, SET UP CONVERSION LOOP
839
840 CLL CIA /NUMBER OF ADDITIONS
841 DCA W4 /TO NEGATIVE FOR ISZ
842 TAD I W5 /BINARY POSITION TO C(ACC)
843 TAD TOTAL /ADD TO PRESENT TOTAL
844 SZL /CHECK ON TO MANY WORDS
845 JMP I QU2 /TO MANY WORDS CALLED FOR
846 DCA TOTAL /KEEP RUNNING SUM
847 ISZ W4 /LAST ADDITION?
848 JMP .-6 /NO: ADD AGAIN
849
850/FINAL ADDITION FOR THIS POSITION COMPLETED
851
852IBS, ISZ W5 /NEXT POSITION
853 JMP DNC /DO NEXT CHARACTER
854
855/LAST CHARACTER COMPLETED. SEE IF DIVISIBLE BY 3
856/IF NOT A NORMAL INPUT
857
858DIV3, TAD TOTAL /GET TOTAL WORDS
859 SNA /IF TOTAL 0, NORMAL INPUT
860 TAD C201 /129 OCT. THIS TEST REDUNDANT
861 TAD C0017 /ADD CONSTANT 15 TO TOTAL
862 DCA TOTAL /FOR FUTURE CONSIDERATIONS
863 DCA VAR1 /# OF WORDS/3 FOR MARK TRACK WRITING
864 TAD TOTAL /RESTORE IN THE ACC
865 CLL /TO DIVIDE BY 3, LINK KEEPS OVERFLOW
866 TAD M3 /SUBTRACT 3
867 ISZ VAR1 /ON EACH DIVISION, KEEP RUNNING SUM
868 SZA /IF AC = 0,NO REMAINDER
869 SNL /WHEN LINC GOES TO 0, DIVISION ENDED
870 SKP /NOW SEE IF IT DIVIDED EVENLY
871 JMP .-6 /SUBTRACT 3 MORE
872 SZA CLA /IF 0,OK. OTHERWISE ERROR
873 JMP I QU4 /NOT DIVISIBLE BY 3
874
875/CORRECT "VAR1" ( THE NUMBER OF WORDS/3) FOR THE +15
876/ADDED JUST ABOVE AND AN INHERANT +2 DUE TO MARK TRACK
877/CONFIGURATION TO BE WRITTEN.
878
879 TAD M7 /SUBTRACT 7 FROM PHONY SETUP
880 TAD VAR1 /GIVING THE NUMBER OF TIMES
881 CIA /TO BE USED LATER IN A ISZ
882 DCA VAR1 /DATA MARK WILL BE WRITTEN
883/COMPUTE A VALUE FOR TOTAL NUMBER OF BLOCKS
884/RECORD SIZE + 15 INTO 636160 OCT.
885
886 TAD C7714 /EXTENDED 64 VALUE. SETS AC#2
887 DCA W1 /SET FOR 640000
888 JMS I FORM10 /PATCH TO CHECK FOR STD.10 FORMAT
889 TAD C1620 /VERNIER ADJUSTMENT FOR FORMULA
890 CLL /ACC#2 CARRY FUNCTION
891 TAD TOTAL /WORD COUNT
892 ISZ BLOCKS /+1 TO BLOCK COUNT
893 SKP
894 JMP I QU3 /TO MANY BLOCKS CALLED FOR
895 SNL /CARRY INTO ACC#2?
896 JMP .-5 /NO: CONTINUE COUNT
897 ISZ W1 /YES: FULLY DIVIDED?
898 JMP .-10 /NO: CONTINUE PROCESS
899 CLA CLL /C(ACC)+ C(L)=0
900F10RTN, TAD BLOCKS /FOR MARK TRACK (COME HERE FR F10PAT IF 10 FRMT)
901 CMA /WRITING
902 DCA VAR2 /SEE MARK WRITE
903
904/VALUES FOR BLOCK AND RECORD SIZE HAVE BEEN
905/COMPUTED. TELL OUTSIDE WORLD AND GET THE OK.
906
907 TAD TOTAL /SUBTRACT 15 FROM TOTAL
908 TAD C7761 /WORDS FOOLING OPERATOR
909 DCA TOTAL /CORRECTED FOR TAPE WRITING
910 TAD TOTAL /FOR OCTAL TYPEOUT
911 JMS I TYOCT /TYPE OCTAL WORDS
912 JMS I TYPE /TYPE MESSAGE
913 4027 / W
914 1722 /OR
915 0423 /DS
916 5400 /, END
917 TAD BLOCKS /TYPE OUT BLOCK #S
918 IAC /TO FOOL THE OPERATOR
919 JMS I TYOCT /IN OCTAL
920 JMS I TYPE /TYPE MESSAGES
921 4002 / B
922 1417 /LO
923 0313 /CK
924 2356 /S.
925 1713 /OK
926 7733 /?(
927 3105 /YE
928 2340 /S
929 1722 /OR
930 4016 / N
931 1735 /O)
932 4543 /CR+LF
933 0000 /END
934 JMS I TYPIN /WAIT FOR REPLY
935/SEE IF A YES OR NO ANSWER WAS GIVEN
936
937 JMS I COMPAR
938 0331 /Y
939 0305 /E
940 0323 /S
941 0000 /END
942 JMP I IT
943
944 JMP I .+1
945 SWCHK
946FORM10, F10PAT
947
948
949\f
950*1400
951/SET THE TAPE INTO MOTION. ALL VARIABLES ARE SET.
952
953/WRITE TIMING AND MARK TRACK
954
955STMK, CLA
956 DCA PHASE
957 TAD DT1400 /FWD, WRITE, GO
958 TAD DTA /GET UNIT NUMBER
959 SDLC /LOAD COMMAND REGISTER
960 TAD VAR2 /TO MAKE A RESTART FOR THE SAME
961 DCA W6 /OPTION POSSIBLE
962
963/WRITE ABOUT 10 FEET OF END ZONE
964 DCA W1
965CEZ, TAD REZ /ADDRESS OF DATA
966 JMS SETUP
967 ISZ W1
968 JMP CEZ /NOT END FOOTAGE
969 TAD M144 /OK WRITE INTERBLOCK SYNC
970 DCA W1
971 JMS INBLSY
972 ISZ W1
973 JMP .-2
974 JMP WDZ
975
976 /WRITE INTERBLOCK SYNC
977INBLSY, 0
978 TAD VAR1 /RESET THE WORDS
979 DCA W5
980 TAD IBZ /ADDRESS OF DATA
981 JMS SETUP /GO OUT AND WRITE 1
982 JMP I INBLSY /GO DO AGAIN
983
984 /WRITE FORWARD BLOCKMARK AND REVERSE GUARD
985WDZ, TAD FBM /ADDRESS OF PATTERN
986 JMS SETUP
987
988 /WRITE LOCKMARK, REVERSE CHECKSUM, REV FINAL, REV PREFINAL
989LRCFP, TAD WLMRF
990 JMS SETUP1
991
992 /WRITE THE DATA TRACK
993DTRK, TAD DZ /ADDRESS OF PATTERN
994 JMS SETUP
995 ISZ W5
996 JMP DTRK /NOW WRITE DATA MARK TRACK AGAIN
997 /WRITE PREFINAL, FINAL, CHECKSUM, AND REVERSE LOCK
998PFCRC, TAD FEZ /ADDRESS OF DATA
999 JMS SETUP1
1000
1001 /WRITE GUARD REVERSE BLOCK
1002GRB, TAD GRZ
1003 JMS SETUP
1004
1005 /THIS COMPLETES 1 BLOCK, GO BACK AND WRITE THE REST
1006 JMS INBLSY /WRITE INTERBLOCK SYNC
1007 ISZ W6 /TOTAL NUMBER OF BLOCKS
1008 JMP WDZ /WRITTEN? NO:
1009
1010 /ALL DATA BLOCKS WRITTEN NOW WRITE BUFFER ZONE OF INTERBLOCK SYNC
1011 TAD M143 /198 EXPAND CODES AT END OF BLOCKS
1012 DCA W1
1013 JMS INBLSY
1014 ISZ W1
1015 JMP .-2
1016
1017 /FINISHED BLOCK WRITTING, WRITE ANOTHER 10(1) OF END ZONES
1018 DCA W1
1019WEZF, TAD EZM
1020 JMS SETUP
1021 ISZ W1
1022 JMP WEZF
1023 SDST
1024 SKP CLA
1025 JMS I SELTIM /TIMING ERROR
1026 TAD C1
1027 DCA PHASE
1028 JMP I .+1
1029 MWTM
1030
1031SETUP, 0
1032 DCA 12 /WORD TO BE WRITTEN ON MARK TRACK
1033 TAD M3
1034 DCA WC
1035 JMS I WAIT
1036 ISZ WC
1037 JMP .-2
1038 JMP I SETUP
1039
1040SETUP1, 0
1041 DCA 12
1042 TAD M6
1043 DCA WC
1044 JMS I WAIT
1045 ISZ WC
1046 JMP .-2
1047 JMP I SETUP1
1048/THESE ARE THE DATA CONFIGURATIONS FOR THE MARK TRACK
1049
1050
1051/REVERSE END ZONE
1052
1053REZ, .
1054 4044 /ON TAPE AS 5555 (OCT)
1055 0440
1056 4404
1057
1058/INTERBLOCK SYNC
1059
1060IBZ, .
1061 0404 /ON TAPE AS 2525 (OCT)
1062 0404
1063 0404
1064
1065/FORWARD BLOCK MARK AND REVERSE GUARD
1066
1067FBM, .
1068 0404 /ON TAPE AS 2632 (OCT)
1069 4004
1070 4040
1071
1072/LOCK MARK, REVERSE CHECKSUM, REVERSE FINAL
1073/AND REVERSE PREFINAL
1074
1075WLMRF, .
1076 0040 /ON TAPE AS 10101010 (OCT)
1077 0000
1078 4000
1079 0040
1080 0000
1081 4000
1082
1083/DATA MARK
1084
1085DZ, .
1086 4440 /ON TAPE AS 7070 (OCT)
1087 0044
1088 4000
1089
1090/PREFINAL, FINAL, FWD CHECKSUM, AND REVERSE LOCK
1091
1092FEZ, .
1093 4440 /ON TAPE AS 73737373 (OCT)
1094 4444
1095 4044
1096 4440
1097 4444
1098 4044
1099/FORWARD GUARD AND REVERSE BLOCK NUMBER
1100
1101GRZ, .
1102 4040 /ON TAPE AS 5145 (OCT)
1103 0440
1104 0404
1105
1106/FORWARD END ZONE
1107
1108EZM, .
1109 0400 /ON TAPE AS 2222 (OCT)
1110 4004
1111 0040
1112/SUBROUTINE TO SEE IF USER TYPED MARK 384
1113/TO SPECIFY STANDARD PDP-10 FORMAT
1114F10PAT, 0
1115 DCA BLOCKS /CLEAR LOC. BLOCKS IN CASE NOT 10-FORMAT
1116 TAD TOTAL /AND GET NUMBER TYPED BY USER
1117 TAD M617 /WAS IT 384?
1118 SZA CLA
1119 JMP I F10PAT /NO-RETURN
1120 DCA W1 /YES-CLEAR W1 FOR WAIT LOOP
1121 TAD C1101 /AND ADJUST BLOCK TOTAL FOR
1122 DCA BLOCKS /1102(OCTAL) BLOCKS.
1123 JMP I .+1
1124F10BAK, F10RTN
1125M617, -617
1126C1101, 1101
1127C1, 0001
1128\f
1129 *1600
1130/THE MARK TRACK HAS BEEN WRITTEN, AND TAPE IS
1131/MOVING FORWARD IN THE FORWARD END ZONE. STOP
1132/THE TAPE AND SEE IF THERE ARE ANY TAPES LEFT TO
1133/MARK--IF SO GO DO THEM, ELSE TELL OPERATOR TO THROW THE
1134/"OFF/WTM" SWITCH TO "OFF"
1135/HE WILL THEN CONTINUE AFTER THIS ACTION
1136
1137
1138 /KILL WRITE,STOP TAPE
1139
1140MWTM, CLA
1141 TAD DTA /UNIT
1142 SDLC
1143 JMS NUDTA
1144 JMP I DOMARK
1145
1146 /MESSAGE TO THE OPERATOR
1147OFF, JMS I TYPE
1148 2305 /SE
1149 2440 /T
1150 2327 /SW
1151 1124 /IT
1152 0310 /CH
1153 4024 /T
1154 1740 /O
1155 1706 /OF
1156 0600 /F
1157 JMS I TYPIN /WAIT FOR CR
1158 JMP I .+1
1159 SWOFF /CHECK TO MAKE SURE THAT SWITCH IS OFF
1160 /REVERSE TAPE AND READ MARK TRACK
1161PSER, TAD DT3000 /REVERSE GO
1162 TAD DTA /UNIT
1163 SDLC /LOAD COMMAND REGISTER
1164 DCA W1 /STALL ROUTINE TO GET UP TO SPEED
1165 SDSQ
1166 JMP .-1
1167 SDRC
1168 ISZ W1
1169 JMP .-4
1170 SDSQ /SKIP ON QUAD LINE IF SET AFTER WAIT ROUTINE
1171 SKP
1172 JMP .+3 /FLAG WAS SET
1173 SDSS /READ IN A LINE OF TAPE
1174 JMP .-1
1175 SDRC /READ THE COMMAND REGISTER
1176 SDST /CHECK FOR A TIMING ERROR
1177 SKP
1178 JMS I SELTIM /TIMING ERROR
1179 AND MSK77 /CHECK TO SEE IF TAPE IS STILL IN END ZONE
1180 TAD M55
1181 SZA CLA
1182 JMP .-11 /NOT A 55 YET
1183 JMS I SSDSQT /YES,READ IN SOME MORE
1184 TAD M55 /IS IT END ZONE
1185 SNA CLA
1186 JMP .-3 /STILL IN END ZONE
1187 TAD MTR /GET THE MARK TRACK
1188 TAD M25 /IS IT EXPAND CODE
1189 SZA CLA
1190 JMS I SCEXPC /NOT YET,CHECK FOR A 52,AND ADVANCE 3 LINES
1191 CLA /YES IT IS EXPAND CODE
1192 TAD M306 /SET UP FOR 198 EXPAND CODES
1193 DCA CNT
1194 JMS I SSDSQT /THE TAPE SHOULD BE IN SYNC NOW
1195 TAD M25 /READ THE REST OF EXPAND CODE
1196 SZA CLA
1197 JMS I MARKER /MARK TRACK ERROR
1198 ISZ CNT /INCREMENT COUNTER
1199 JMP .-5
1200 TAD VAR2 /NUMBER OF BLOCKS
1201 DCA W6
1202RSTBLK, JMS I SSDSQT /START OF A STANDARD BLOCK
1203 TAD M25 /FIRST EXPAND CODE AT BEGINNING
1204 SZA CLA /OF BLOCK
1205 JMS I MARKER /MARK TRACK ERROR
1206 JMS I SSDSQT /READ MARK BLOCK NUMBER
1207 TAD M26
1208 SZA CLA
1209 JMS I MARKER /MARK TRACK ERROR
1210 JMS I SSDSQT /READ MARK GUARD
1211 TAD M32
1212 SZA CLA
1213 JMS I MARKER /MARK TRACK ERROR
1214 TAD M4
1215 DCA CNT
1216 JMS I SSDSQT /READ L,CK,F,PF
1217 TAD M10
1218 SZA CLA
1219 JMS I MARKER /MARK TRACK ERROR
1220 ISZ CNT
1221 JMP .-5
1222 CLA CLL
1223 TAD VAR1
1224 RAL
1225 DCA W5 /NUMBER OF DATA MARKS
1226 JMS I SSDSQT /READ DATA MARKS
1227 TAD M70
1228 SZA CLA
1229 JMS I MARKER /MARK TRACK ERROR
1230 ISZ W5 /COUNT FOR NUMBER OF BLOCKS
1231 JMP .-5
1232 TAD M4
1233 DCA CNT
1234 JMS I SSDSQT /READ PF,F,CK,L
1235 TAD M73
1236 SZA CLA
1237 JMS I MARKER /MARK TRACK ERROR
1238 ISZ CNT
1239 JMP .-5
1240 JMS I SSDSQT /READ REVERSE GUARD
1241 TAD M51
1242 SZA CLA
1243 JMS I MARKER
1244
1245 JMS I SSDSQT /READ BLOCK NUMBER
1246 TAD M45
1247 SZA CLA
1248 JMS I MARKER /MARK TRACK ERROR
1249 JMS I SSDSQT /READ EXPAND CODE
1250 TAD M25
1251 SZA CLA
1252 JMS I MARKER /END OF ONE BLOCK,MARK TRACK ERROR
1253
1254 ISZ W6 /FINISHED ALL BLOCKS
1255 JMP RSTBLK /NO:DO OTHER BLOCKS
1256 TAD M307 /SET UP FOR INTERBLOCK SYNC AT END OF TAPE
1257 DCA CNT
1258 JMS I SSDSQT /CHECK FOR 199 EXPAND CODES
1259 TAD M25
1260 SZA CLA
1261 JMS I MARKER /MARK TRACK ERROR
1262 ISZ CNT
1263 JMP .-5
1264 JMS I SSDSQT
1265 TAD M22
1266 SZA CLA
1267 JMS I MARKER
1268 TAD DTA
1269 SDLC
1270 JMP I .+1
1271WDBLKN, DBLKN /GO OUT TO WRITE DATA AND BLOCK NUMBERS FORWARD
1272
1273
1274\f
1275*2000
1276DBLKN, TAD C2
1277 DCA PHASE
1278 TAD VAR2 /NUMBER OF BLOCKS
1279
1280 DCA W6
1281 DCA BLK /INITIAL BLOCK IS 0
1282 TAD BLK
1283 JMS I MESS /COMPUTE THE COMP OBVERSE OF REV BLK
1284 DCA REVBLK
1285 SDLD
1286 TAD DT1400 /FORWARD,WRITE,GO
1287 TAD DTA /UNIT
1288 SDLC /LOAD THE COMMAND REGISTER
1289 SDRC /CHECK TO MAKE SURE WRITE IS SET
1290 RTL
1291 RAL
1292 SMA CLA
1293 JMS WLO /WRITE FAILED TO SET
1294 TAD M6
1295 DCA CNT
1296 SDSQ /ROUTINE TO GET UP TO SPEED
1297 JMP .-1
1298 SDLD
1299 ISZ CNT
1300 JMP .-4
1301 SDLD
1302 SDST
1303 SKP
1304 JMS I SELTIM /TIMING ERROR
1305LINE, SDSS /WRITE ALL ZEROES TO THE FIRST BLOCK
1306 JMP .-1
1307 SDLD /LOAD THE DATA BUFFER
1308 SDRC
1309 SDST
1310 SKP
1311 JMS I SELTIM /TIMING ERROR
1312 AND MSK77
1313 DCA MTR
1314 TAD MTR
1315 TAD M26
1316 SZA CLA
1317 JMP LINE
1318 SDLD
1319 SDST
1320 SKP
1321 JMS I SELTIM /TIMING ERROR
1322 JMP WDOBLK /GO AND WRITE REVERSE GUARD
1323WDBLK, CLA CLL /BEGINNING OF BLOCK,WRITE DATA AND BLOCK NUMBER
1324 JMS W4L /WRITE EIGHT LINES
1325 JMS W4L /END OF EXPAND CODE,BEGINNING OF BLK NUMBER
1326 TAD BLK /GET FORWARD BLOCK NUMBER
1327 JMS W4L /WRITE IT
1328 CLA
1329 JMS W4L /WRITE FIRST WORD OF REV GUARD
1330WDOBLK, CLA
1331 JMS W4L /SECOND WORD OF REVERSE GUARD
1332 JMS W4L
1333 JMS W4L /FIRST WORD OF REVERSE CHECKSUM
1334WDATA, TAD TOTAL /NUMBER OF DATA WORDS TO BE WRITTEN
1335 CIA
1336 DCA W5 /SET UP COUNTER
1337 JMS W4L
1338 ISZ W5 /INCREMENT COUNTER
1339 JMP .-2
1340 CLA CLL
1341 TAD MSK77 /COME BACK TO WRITE LAST WORD AND CHECKSUM
1342 JMS W4L
1343 CLA
1344 JMS W4L /FINISH CHECKSUM
1345 JMS W4L /FIRST WORD OF REVERSE LOCK
1346 JMS W4L /LAST WORD OF RL. AND HALF OF GUARD
1347 JMS W4L /REST OF GUARD
1348 TAD REVBLK /GET REVERSE BLOCK NUMBER
1349 JMS W4L
1350 CLA CMA
1351 JMS W4L /END OF BLOCK NUMBER AND HALF OF EXPAND CODE
1352 JMS W4L /END OF EXPAND CODE
1353 ISZ BLK
1354 CLA
1355 TAD BLK
1356 JMS I MESS /COMPUTE NEW BLK NUMBER
1357 DCA REVBLK
1358 SDST
1359 SKP
1360 JMS I SELTIM /TIMING ERROR
1361 ISZ W6 /IS IT DONE WRITING BLK AND DATA
1362 JMP WDBLK /NO
1363 SDSQ
1364 JMP .-1
1365 SDRD
1366 CLA
1367 TAD DT1000 /SEARCH FOR END ZONE
1368 TAD DTA /GET UNIT
1369 SDLC /LOAD THE COMMAND REG
1370 SDSS
1371 JMP .-1
1372 SDRC
1373 AND MSK77
1374 TAD M22
1375 SZA CLA
1376 JMP .-6
1377 JMP I .+1
1378 DBLOCK
1379
1380W4L, 0
1381 SDSQ
1382 JMP .-1 /SKIP ON QUAD LINE FLAG
1383 SDLD /LOAD THE DATA BUFFER
1384 SDST /CHECK FOR A TIMING ERROR
1385 SKP
1386 JMS I SELTIM /TIMING ERROR
1387 JMP I W4L
1388
1389C2, 0002
1390
1391WLO, 0
1392 TAD DTA /STOP THE TAPE
1393 SDLC /LOAD THE COMMAND REGISTER
1394 JMS I TYPE
1395 2003 /PC
1396 4000 /END
1397 CLA CMA
1398 TAD WLO
1399 JMS I TYOCT
1400 JMS I TYPE
1401 4040
1402 2722 /WR
1403 1124 /IT
1404 0540 /E
1405 0000 /END
1406 JMP I .+1
1407 ZCOM
1408
1409
1410
1411\f
1412*2200
1413BLCSD, TAD C4
1414 DCA PHASE
1415 CLA CLL
1416 TAD VAR2
1417 DCA W6 /SET UP FOR THE NUMBER OF BLOCKS
1418 DCA BLK /SET BLK TO 0
1419 TAD DT1000 /FORWARD READ
1420 TAD DTA /UNIT
1421 SDLC /LOAD THE COMMAND REG
1422 TAD BLK
1423 JMS I MESS /CALCULATE THE COMPLEMENT OBVERSE
1424 DCA REVBLK
1425 SDST
1426 SKP
1427 JMS I SELTIM /TIMING ERROR
1428 TAD M6 /WAIT TO GET UP TO SPEED
1429 DCA CNT /SET UP COUNTER
1430 SDSQ /SKIP ON A QUAD LINE FLAG
1431 JMP .-1
1432 SDRD /READ THE DATA BUFFER TO CLEAR FLAG
1433 ISZ CNT
1434 JMP .-4
1435 CLA
1436BLCSDA, DCA CHKSUM
1437 JMS I SLRDRC /READ A SINGLE LINE AT A TIME
1438 TAD M26
1439 SZA CLA /IS IT BLOCK MARK
1440 JMP SRDRC+4 /NO,GO BACK
1441 SDST
1442 SKP
1443 JMS I SELTIM /TIMING ERROR
1444 TAD DATRD
1445 CIA
1446 TAD BLK
1447 SZA CLA
1448 JMS I BLKERR /BLK NUMBER ERROR
1449 JMS I SSDSQT /READ GUARD
1450 JMS I SSDSQT /READ REVERSE LOCK
1451 JMS I SSDSQT /READ CHECKSUM
1452 SDRD /READ THE DATA BUFFER
1453 SDST
1454 SKP
1455 JMS I SELTIM /TIMING ERROR
1456 AND MSK77
1457 JMS I BCXOR /GO OUT TO CHECKSUM ROUTINE
1458RDATA, TAD TOTAL /NUMBER OF WORDS PER BLOCK
1459 CIA
1460 DCA W5 /SET UP COUNTER
1461 SDSQ
1462 JMP .-1
1463 SDRD /READ THE DATA BUFFER
1464 SDST
1465 SKP
1466 JMS I SELTIM /TIMING ERROR
1467 DCA DATRD
1468 TAD DATRD /SAVE THE DATA WORD
1469 SZA CLA
1470 JMS I DATERR /DATA ERROR
1471 TAD DATRD
1472 JMS I BCXOR
1473 SDST /CHECK FOR A TIMING ERROR
1474 SKP
1475 JMS I SELTIM /TIMING ERROR
1476 ISZ W5
1477 JMP RDATA+3
1478 SDSQ /READ REVERSE CHECKSUM
1479 JMP .-1
1480 SDRD /READ IT IN
1481 SDST
1482 SKP
1483 JMS I SELTIM /TIMING ERROR
1484 AND C7700
1485 JMS I BCXOR /CHECK CHECK SUM
1486 TAD CHKSUM
1487 AND MSK77
1488 IAC
1489 TAD C7700
1490 SZA CLA
1491 JMS I CHKERR /CHECKSUM ERROR
1492 SDST
1493 SKP
1494 JMS I SELTIM /TIMING ERROR
1495 JMS I SLRDRC /ADVANCE A SINGLE LINE FLAG
1496 TAD M31 /LOOK FOR REV BLK NUMBER
1497 SZA CLA
1498 JMP SRDRC+4
1499 SDST
1500 SKP
1501 JMS I SELTIM /TIMING ERROR
1502 TAD DATRD
1503 CIA
1504 TAD REVBLK /COMPARE BLOCK READ WITH ONE COMPUTED
1505 SZA CLA
1506 JMS I BLKERR /BLOCK NUMBER ERROR
1507 SDSQ
1508 JMP .-1
1509 SDRD
1510 SDST
1511 SKP
1512 JMS I SELTIM /TIMING ERROR
1513 CLA CLL
1514 ISZ BLK
1515 TAD BLK
1516 JMS I MESS
1517 DCA REVBLK
1518 SDST
1519 SKP
1520 JMS I SELTIM /TIMING ERROR
1521 ISZ W6
1522 JMP BLCSDA
1523 TAD DT1000
1524 TAD DTA
1525 SDLC
1526 SDSS
1527 JMP .-1
1528 SDRC
1529 AND MSK77
1530 TAD M22
1531 SZA CLA
1532 JMP .-6
1533 JMP I .+1
1534 RDBLKS
1535
1536C4, 0004
1537
1538\f
1539*2400
1540DBLOCK, TAD C3
1541 DCA PHASE
1542 CLA CLL
1543 DCA DISBLK
1544 TAD DT3000 /REVERSE,GO
1545 TAD DTA /UNIT
1546 SDLC /LOAD THE COMMAND REGISTER
1547 CLA CLL
1548DISLUP, SDSS
1549 JMP .-1
1550 CLA CLL
1551 SDRD
1552 DCA DISDAT /SAVE THE DATA BUFFER
1553 SDRC
1554 AND MSK77 /MASK OUT THE MARK TRACK
1555 TAD M26 /CHECK FOR BLOCK NUMBER
1556 SZA
1557 JMP DISEND /NOT BLK MARK,CHECK FOR END ZONE
1558 TAD DISDAT /DISPLAY THE NUMBER IN THE AC
1559 ISZ DISBLK
1560 JMP .-1
1561 JMP DISLUP /GO SEARCH FOR THE NEXT BLOCK
1562DISEND, TAD FOUR /IS IT END ZONE
1563 SZA CLA
1564 JMP DISLUP /NO,GO GET NEXT LINE
1565 TAD DTA /STOP GET READY TO READ
1566 SDLC /LOAD THE COMMAND REGISTER
1567 JMP I .+1
1568 BLCSD
1569DISBLK, 0
1570DISDAT, 0
1571FOUR, 4
1572C3, 0003
1573C5, 0005
1574
1575RDBLKS, TAD C5
1576 DCA PHASE
1577 TAD VAR2
1578 DCA W5 /SET UP FOR NUMBER OF BLOCKS
1579 IAC
1580 TAD VAR2
1581 DCA W6 /SET UP TO CHECK BLK REVERSE
1582 TAD DT3000 /READ REVERSE GO
1583 TAD DTA /UNIT
1584 SDLC /LOAD THE COMMAND REGISTER
1585 TAD M6
1586 DCA CNT
1587 SDSS
1588 JMP .-1
1589 SDRC
1590 CLA
1591 ISZ CNT
1592 JMP .-5
1593RDBLK, SDSS
1594 JMP .-1
1595 SDRD /READ THE DATA BUFFER AND STORE IT AWAY
1596 DCA CNT
1597 SDRC
1598 AND MSK77
1599 TAD M26
1600 SZA CLA /IS IT BLOCK NUMBER
1601 JMP RDBLK
1602 TAD CNT
1603 TAD W6
1604 SZA CLA
1605 JMS I BLKERR /BLOCK NUMBER ERROR
1606 IAC
1607 TAD W6 /INCREMENT A NUMBER FOR COMPARE COUNTER
1608 DCA W6
1609 ISZ W5 /INCREMENT BLK COUNTER
1610 JMP RDBLK
1611 SDSS
1612 JMP .-1
1613 SDRC
1614 AND MSK77
1615 TAD M22
1616 SZA CLA
1617 JMP .-6
1618 TAD DTA
1619 SDLC /LOAD THE COMMAND REGISTER WITH UNIT STOP
1620 IAC
1621 DCA PHASE
1622 JMS NUDTA
1623 JMP PSER
1624 JMP I .+1
1625 INIT /END GO BACK TO DIRECT
1626/
1627/
1628/SUBROUTINE TO CHECK FOR REPEATED DTA NUMBERS
1629/DTA # TO COMPARE TO LIST IS IN AC ON ENTRY--THIS
1630/ROUTINE STORES THE DTA # IF IT IS NEW AND IGNORES IT
1631/IF IT IS NOT-CALL BY JMS REPEAT WITH DTA # IN AC
1632REPEAT, 0
1633 DCA DNUM /TEM STORAGE FOR NEW DTA #
1634 TAD DBUFAD /INITIALIZE POINTER (DBUFPT)
1635 DCA DBUFPT /TO START OF DTA LIST
1636 TAD DCTR /LOAD NUM. OF DTAS STORED
1637 CMA /COMPLEMENT IT
1638 DCA COMCTR /STORE IN COMPARE COUNTER
1639COMCHK, ISZ COMCTR /DONE WITH ALL COMPARES?
1640 JMP DOCOMP /NO: GO DO COMPARE
1641 TAD DNUM /YES: STORE NEW DTA#
1642 DCA I DBUFPT /AT END OF LIST
1643 ISZ DCTR /INCR. # OF DTAS STORED
1644 JMP I REPEAT /RETURN
1645
1646COMCTR, 0 /COUNTER FOR # OF LIST COMPARISONS TO BE DONE
1647DCTR, 0 /COUNTER FOR # OF DTAS IN LIST
1648DBUFAD, DTABUF /START OF DTA NUM. LIST
1649DNUM, 0 /TEM STORAGE FOR DTA #
1650/
1651/
1652/THIS SECTION DOES THE ACTUAL COMPARISON BETWEEN
1653/THE DTA# PASSED TO THE ROUTINE AND A NUMBER ON THE LIST
1654
1655DOCOMP, TAD I DBUFPT /GET NXT DTA NUMBER PASSED
1656 CIA /NEGATE IT
1657 TAD DNUM /ADD IN DTA NUMBER PASSED
1658 SNA CLA /ARE THEY THE SAME
1659 JMP I REPEAT /YES: RETURN
1660 ISZ DBUFPT /NO: INCREMENT LIST POINTER
1661 JMP COMCHK /SEE IF DONE ALL COMPARES
1662/
1663/
1664
1665\f
1666*2600
1667
1668RDFA, CLA CLL
1669 TAD DT3000 /REVERSE READ GO
1670 TAD DTA /GET UNIT
1671 SDLC /LOAD THE COMMAND REGISTER
1672 SDSS /SKIP ON A SINGLE LINE FLAG
1673 JMP .-1
1674 SDRC /READ THE COMMAND REGISTER
1675 AND MSK77
1676 TAD M22 /IS IT END ZONE
1677 SZA CLA /YES
1678 JMP .-6 /NO GO BACK AND LOOK AGAIN
1679 TAD DT1000 /FORWARD READ GO
1680 TAD DTA /UNIT
1681 SDLC /LOAD THE COMMAND REGISTER
1682 TAD M6
1683 DCA CNT
1684 SDSS
1685 JMP .-1
1686 SDRC
1687 CLA
1688 ISZ CNT
1689 JMP .-5
1690RDFA1, TAD M26
1691 DCA W3 /SET UP COUNTER TO READ 22 BLOCKS
1692 TAD BADD /SET UP BUFFER ADDRESS
1693 DCA X2
1694 SDSS /GO SINGLE LINE FLAGS
1695 JMP .-1
1696 SDRD /READ THE DATA BUFFER
1697 DCA CNT
1698 SDRC /READ THE COMMAND REGISTER
1699 AND MSK77
1700 TAD M26 /SEARCH FOR BLOCK NUMBER
1701 SZA CLA
1702 JMP RDFA1+4 /NOT BLOCK NUMBER YET GO BACK AGAIN
1703 TAD CNT /OK BLK NUMBER STORE IT AWAY
1704 DCA I X2
1705 ISZ W3 /INCREMENT COUNTER
1706 JMP RDFA1+4 /NOT 22 BLOCKS YET
1707 TAD DTA
1708 SDLC /STOP THE DTA
1709
1710/TYPE OUT BLOCK NUMBERS AND DTA UNIT#
1711
1712 JMS I TYPE
1713 0424 /DT
1714 0140 /A
1715 0000 /END
1716 TAD DTA /GET UNIT NUMBER
1717 RTL
1718 JMS I TYOCT /AND TYPE IT OUT
1719 JMS I TYPE
1720 4345 /CR&LF
1721 0000 /END
1722 TAD M26 /WILL TYPE ALL
1723 DCA W1 /22 WORDS
1724 TAD BADD /ADDRESS OF BLOCK
1725 DCA X2 /NUMBERS TO INDEX
1726 TAD I X2 /FIRST OR NEXT BLOCK
1727 JMS I TYOCT /TYPE IT OUT
1728 JMS I TYPE /CR&LF
1729 4345 /CR&LF
1730 0000 /END
1731 ISZ W1 /COMPLETE
1732 JMP .-6
1733 JMP I IT /GO ASK FOR FORMAT
1734
1735RDR, CLA CLL
1736 TAD DT1000 /FORWARD READ GO
1737 TAD DTA /UNIT
1738 SDLC /LOAD THE COMMAND REGISTER
1739 SDSS /SKIP ON A SINGLE LINE FLAG
1740 JMP .-1
1741 SDRC /READ THE COMMAND REGISTER
1742 AND MSK77
1743 TAD M22 /CHECK FOR END ZONE
1744 SZA CLA
1745 JMP .-6 /NOT YET GO BACK
1746 TAD DT3000 /REVERSE READ GO
1747 TAD DTA /UNIT
1748 SDLC /LOAD THE COMMAND REGISTER
1749 TAD M6
1750 DCA CNT
1751 SDSS
1752 JMP .-1
1753 SDRC
1754 CLA
1755 ISZ CNT
1756 JMP .-5
1757 JMP RDFA1 /STORE NUMBERS IN REVERSE
1758
1759RETRY, JMS I TYPIN
1760 JMS I COMPAR
1761 0322 /R
1762 0305 /E
1763 0324 /T
1764 0322 /R
1765 0331 /Y
1766 0000 /END
1767 JMP I IT /GUESS HE DOESN'T WANT TO TRY AGAIN
1768 CLA
1769 TAD DT1000 /FORWARD READ GO
1770 TAD DTA /UNIT
1771 SDLC /LOAD THE COMMAND REGISTER
1772 TAD M6
1773 DCA CNT /WAIT 6 LINES
1774 SDSS
1775 JMP .-1
1776 SDRC /READ THE COMMAND REGISTER
1777 ISZ CNT
1778 JMP .-4
1779 SDSS
1780 JMP .-1
1781 SDRC
1782 AND MSK77
1783 TAD M22
1784 SZA CLA
1785 JMP .-6
1786 TAD DT3000
1787 TAD DTA
1788 SDLC
1789 CLA IAC
1790 DCA PHASE
1791 JMP I .+1
1792 PSER+11
1793
1794
1795\f
1796*3000
1797
1798
1799SDSQT, 0
1800 SDSQ /ADVANCE SIX LINES
1801 JMP .-1 /SKIP ON QUAD LINE FLAG
1802 SDRC /READ COMMAND REGISTER
1803 SDST
1804 SKP
1805 JMS I SELTIM /TIMING ERROR
1806 SDSS
1807 JMP .-1 /SKIP ON SINGLE LINE FLAG
1808 SDRC
1809 SDST
1810 SKP
1811 JMS I SELTIM /TIMING ERROR
1812 SDSS
1813 JMP .-1
1814 SDRC /READ THE COMMAND REGISTER
1815 SDST
1816 SKP
1817 JMS I SELTIM /TIMING ERROR
1818 AND MSK77 /SAVE THE MARK TRACK LAST 6 BITS
1819 DCA MTR
1820 TAD MTR
1821 JMP I SDSQT
1822
1823A3LNS, 0 /ADVANCE THREE LINES
1824 SDSS
1825 JMP .-1 /SKIP ON SINGLE LINE FLAG
1826 SDRC
1827 SDST
1828 SKP
1829 JMS I SELTIM /TIMING ERROR
1830 SDSS
1831 JMP .-1
1832 SDRC
1833 SDST
1834 SKP
1835 JMS I SELTIM /TIMING ERROR
1836 SDSS
1837 JMP .-1
1838 SDRC
1839 SDST
1840 SKP
1841 JMS I SELTIM /TIMING ERROR
1842 AND MSK77
1843 DCA MTR
1844 TAD MTR
1845 JMP I A3LNS
1846
1847CEXPC, 0
1848 TAD MTR
1849 TAD M52
1850 SZA CLA
1851 JMS I MARKER /MARK TRACK ERROR
1852 JMS A3LNS /READ THREE MORE LINES
1853 TAD M25 /IS IT 25 NOW
1854 SZA CLA
1855 JMS I MARKER /NO ,MARK TRACK ERROR
1856 JMP I CEXPC /YES:IT IS EXPAND CODE NUMBER 1
1857
1858 /SIXBIT COMPLEMENT XOR SUBROUTINE
1859 /SUBROUTINE IS ENTERED WITH DATA WORD TO BE XORED IN AC
1860 /TWO SIX-BIT COMPLEMENT XORS WILL TAKE PLACE TO LOC CHKSUM
1861 /WITH THE RESULT IN CHKSUM
1862
1863SBCXOR, 0
1864 CMA /COMPLEMENT WORD
1865 DCA SBWORD /AND SAV
1866 TAD SBWORD
1867 AND CHKSUM
1868 CIA
1869 CLL RAL
1870 TAD SBWORD
1871 TAD CHKSUM
1872 DCA CHKSUM
1873 TAD SBWORD
1874 RTR CLL;RTR;RTR
1875 DCA SBWORD
1876 TAD SBWORD
1877 AND CHKSUM
1878 CIA
1879 CLL RAL
1880 TAD SBWORD
1881 TAD CHKSUM
1882 AND MSK77
1883 DCA CHKSUM
1884 JMP I SBCXOR
1885
1886SRDRC, 0
1887 SDSQ
1888 SKP
1889 JMP .+3
1890 SDSS
1891 JMP .-1
1892 SDRD
1893 DCA DATRD
1894 SDRC
1895 AND MSK77
1896 JMP I SRDRC
1897
1898NUDTA, 0
1899 TAD I LSTPT /GET CURRENT VALUE OF DATA LIST PTR
1900 DCA TBUFPT /STORE IT AS TEM,BUF,PTR
1901 TAD I TBUFPT /GET A DTA # FROM THE LIST
1902 AND C0007
1903 SZA CLA /IS IT A 7777
1904 JMP LSTEND /YES END OF LIST
1905 TAD I TBUFPT /NO;GET IT BACK
1906 DCA DTA
1907 ISZ I LSTPT /INCREMENT LIST POINTER
1908 JMP I NUDTA /RETURN
1909/COME HERE AT END OF LIST TO RESET POINTERS AND RETURN TO CALL+2
1910LSTEND, ISZ NUDTA /INCREMENT RETURN POINTER
1911 TAD I STRTPT /GET ADR OF START OF LIST
1912 DCA I LSTPT
1913 JMP NUDTA+1 /GO GET FIRST DTA# AND RETURN
1914STRTPT, DBUFAD /POINTER TO START OF DATA LIST
1915TBUFPT, 0 /TEM STORAGE FOR BOT PTR
1916LSTPT, DBUFPT /POINTER TO CURRENT VALUE OF DTA LIST PTR
1917
1918/CONSTANTS FOR FORMULA TRANSLATION SECTION
1919BINCON, .+1
1920 0001
1921 0012
1922 0144
1923 1750
1924DTABUF, 0
1925
1926
1927
1928
1929\f
1930*3200
1931 /CHECK SWITCH TO SEE IF SET TO WTM POSITION
1932SWCHK, JMS I TYPE /TYPE OUT MESSAGE
1933 2305 /SE
1934 2440 /T
1935 2327 /SW
1936 1124 /IT
1937 0310 /CH
1938 4024 /T
1939 1740 /O
1940 2724 /WT
1941 1500 /M
1942 JMS I TYPIN /WAIT FOR CR
1943 CLA
1944 DCA CNTERL
1945 SDLD /CLEAR SINGLE AND QUAD FLAGS
1946 SDSS
1947 SKP
1948 JMP .+4
1949 ISZ CNTERL
1950 JMP .-4
1951 JMP SWCHER /ERROR,TYPE ERROR MESSAGE AND GO TO SWCHK
1952 /SEE IF THE DRIVE IS OK
1953RSTSM, SDLC /LOAD CR TO CLEAR TIMEING ERROR
1954 SDLD /LOAD DATA BUFFER TO CLEAR S Q FLAGS
1955 TAD DT0400 /SET WRITE
1956 TAD DTA /GET UNIT
1957 DCA SAV /STORE IT AWAY
1958 TAD SAV
1959 SDSS
1960 JMP .-1
1961 SDLC
1962 TAD SAV
1963 SDLC /LOAD THE TRANSPORT
1964 SDRC /READ THE COMMAND REGISTER AND CHECK IT
1965 RTL
1966 RAL
1967 SMA /CHECK WRITE TO BE SET
1968 JMP ERCHK /WRITE IS NOT SET
1969 RAL /CHECK WLO
1970 SPA
1971 JMP ERCHK /WLO
1972 RAL /CHECK SELECT AND TIMING ERROR
1973 SPA CLA
1974 JMP ERCHK /SELECT OR TIMING ERROR
1975 JMS NUDTA /CHECK OTHER DRIVE IF ANY
1976 JMP RSTSM-11 /CHECK OTHER DRIVE
1977 JMP I .+1
1978 STMK
1979CNTERL, 0
1980SAV, 0
1981
1982ERCHK, JMS I TYPE /INCORRECT SETUP
1983 2305 /SE
1984 2425 /TU
1985 2077 /P
1986 0000 /END
1987 JMP I .+1
1988 START
1989
1990SWCHER, JMS I TYPE
1991 2327 /SW
1992 1124 /IT
1993 0310 /CH
1994 4016 /N
1995 1724 /OT
1996 4023 /S
1997 0524 /ET
1998 4024 /T
1999 1740 /O
2000 2724 /WT
2001 1540 /M
2002 1722 /OR
2003 4023 /S
2004 1116 /IN
2005 0714 /GL
2006 0540 /E
2007 1411 /LI
2008 1605 /NE
2009 4006 /F
2010 1401 /LA
2011 0740 /G
2012 0601 /FA
2013 1114 /IL
2014 0504 /ED
2015 4024 /T
2016 1740 /O
2017 2305 /SE
2018 2440 /T
2019 4543 /CR LF
2020 0000 /END
2021 JMP SWCHK
2022
2023SWOFF, CLA
2024 DCA CNTERL
2025 SDLD /CLEAR ANY FLAGS THAT ARE SET
2026 SDSS
2027 SKP
2028 JMP OFF /FLAG SHOULDN'T BE SET
2029 ISZ CNTERL
2030 JMP .-4
2031 CLA
2032 JMP I .+1
2033 PSER
2034
2035
2036*3400
2037/INPUT BUFFER FOR TELETYPE THIS MUST BE AT THE END OF PROGRAM
2038
2039BUFFER, 0
2040
2041$