1 /4 TD8E HANDLER FOR BUILD..TD8E-A
11 /COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
47 DEVICE TD8A;DEVICE DTA0;4210;4010;ZBLOCK 2
48 DEVICE TD8A;DEVICE DTA1;4210;4014;ZBLOCK 2
50 SDSS=6771 /SKIP ON SINGLE LINE FLAG
51 SDST=6772 /SKIP ON TIME ERROR
52 SDSQ=6773 /SKIP ON QUAD LINE FLAG
53 SDLC=6774 /LOAD TAPE COMMAND REGISTER
54 SDLD=6775 /LOAD DATA REGISTER
55 SDRC=6776 /READ COMMAND REGISTER
56 SDRD=6777 /READ DATA REGISTER
62 /1. VERSION # IS NOW 1
63 /2. PARITY ^C IS NOW LEGAL
64 /3. ^C CHECK NO LONGER WILL ADVANCE READER
66 /MAINTENANCE RELEASE CHANGES:
69 /5. MADE CODE IMPROVEMENTS
75 NXINIT, 7600 /CLEAR AC HERE!!!
76 JMS I CINIT2 /PART OF INITIALIZATION..DO THE PART
77 BASE2, DCA JINIT /ON SECOND PAGE AND THEN TO JINIT
85 DTA0, TDVERSION /ENTRY FOR UNIT 0
89 DTA1, TDVERSION /ENTRY FOR UNIT 1
92 DCA DTA0 /PICK UP ARGS AT DTA0
94 DCA UNIT /UNIT # FROM LINK
97 DCA LEAVE /SET UP EXIT FROM HANDLER
99 DCA FUNCT /SAVE FUNCTION WORD
102 C200, AND CM200 /GET A PAGE COUNT
105 C374, AND C70 /ISOLATE FIELD OF TRANSFER
108 ISZ DTA0 /POINT TO BUFFER
111 ISZ DTA0 /POINT TO RECORD
113 CLL RAL /CONVERT TO DECTAPE BLOCKS
115 ISZ DTA0 /POINT TO ERROR RET.
118 JINIT, JMP INIT /FIRST TIME THRU IT GETS EXECUTED
119 /THE RETURN FROM INIT ZEROES IT
121 DCA ERCNT /3 ERROR TRIES
124 JMS I CSELCT /CHECK FOR SELEC ERROR
125 JMP .-1 /LOOPS IF NO ^C AND SELECT ERROR
128 JMP GO /OK.. START THE SEARCH
129 TRWCOM, SDST /TIME OR CHECK SUM ERROR?
131 JMP TRY3 /YES TRY UP TO 3 TIMES
132 TAD PGCT /NO.. IS PAGE COUNT EXHAUSTED?
135 JMP EXIT /YES.. DONE THIS TRANSFER
136 DCA PGCT /NEW PAGE COUNT
139 TAD C200 /GET NEW BUFFER ADDRESS
141 CLL CML /FORCE FORWARD MOTION
142 GO, CLA CML RTR /PUT IN DIRECTION BIT
145 SDLC /INITIATE THE MOTION
146 JMS I CRDQAD /WAIT FOR 8 LINES TO PASS
148 M20, 7760 /DON'T CARE IF IT DOES SKIP!!!
149 TSRCH, SDSS /WAIT
\ f FOR BLOCK MARK OR END ZONE
152 CLL RTL /DIRECTION TO LINK, DATA TO AC 4-9
153 AND C374 /ISOLATE M.T BITS
154 TAD M110 /IS IT END ZONE?
156 JMP ENDZ /YES..DO SOMETHING REASONABLE
157 TAD M20 /HOW ABOUT BLOCK MARK?
159 JMP TSRCH /NEITHER..KEEP LOOKING
160 SDRD /WHAT IS THIS BLOCK'S #?
161 SZL /IF IN REVERSE, LOOK FOR 3 BEFORE
162 TAD TC3 /THE ACTUAL TARGET BLOCK
166 SNA /IS THIS THE BLOCK?
167 JMP TFOUND /YES..HAVE CORRECT ONE
168 M110, SZL SNA CLA /ARE WE HEADED PROPERLY?
169 JMP TSRCH /YES.. KEEP LOOKING
170 ENDZ, SDRC /IF WE ARE IN END ZONE FORWARD, WE LOSE
172 JMP GO /EXECUTE TURN AROUND AND SEARCH
174 ISZ ERCNT /TRIED 3 TIMES?
177 EXIT, ISZ DTA0 /NORMAL RETURN
179 FATAL, TAD UNIT /STOP TAPE FIRST
181 CLA CML RAR /EITHER 0 OR 4000 IN AC
182 LEAVE, HLT /GETS CIF CDF N
185 INIT, JMS . /FIND OUT WHERE WE GOT LOADED
187 SPA /NEGATIVE ENDS LIST
201 TFOUND, SZL CLA /ARE WE IN RIGHT DIRECTION
209 XFIELD, HLT /CONTROL 'TRICKLES THROUGH
221 CIF 0 /WE ARE IN FIELD 0
224 DCA XFUNCT /READ/WRITE TO FUNCTION
226 JMP .-1 /LOOK FOR REVERSE GUARD PATTERN
230 SZA CLA /IF NOT REV. GUARD, KEEP LOOKING
233 DCA WORDS /128 WORDS/BLOCK
235 K7700, SMA CLA /IS IT READ OR WRITE?
237 SDRC /CHECK FOR WRITE LOCKOUT
239 CLL /SETUP TO RETRY IF WRITE LOCK
241 JMP I CTRY3 /IF LOCKED OUT, ERROR
242 JMS R4LINE /SKIP A WORD
246 SDLC /TURN ON WRITE HEAD
248 JMS W4LINE /7777 IN REV. CHECKSUM
250 DCA CSUM /AND ALSO TAPE CHECKSUM
253 ISZ XBUFF /INCREMENT BUFF. ADD.
255 ISZ WORDS /DONE A BLOCK?
257 JMS W4LINE /A 129 TH WORD OF 0
258 JMS GCHK /GET 6 BIT CHECKSUM
259 JMS W4LINE /WRITE IT TO TAPE
260 JMS W4LINE /LET CHECK SUM FINISH
261 JMP I CRWCOM /SEE IF WE ARE FINISHED
264 JMS R4LINE /SKIP CONTROL WORDS
270 JMS EFUN /ADD WORD TO CHECKSUM
274 ISZ WORDS /DONE BLOCK?
277 JMS EFUN /CHECK SUM 129 TH WORD
279 AND K7700 /READ CHECKSUM
281 JMS GCHK /COMPARE TAPE AND OUR CHECKSUM
284 W4LINE, 0 /ADD TO CHECKSUM AND WRITE A 12 BIT
287 JMP .-1 /SKIP ON QUAD LINE FLAG
289 CLA /AC IS NOT CLEARED AFTER SDLD
292 R4LINE, 0 /WAIT FOR QUAD FLAG AND READ
298 EFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM
300 DCA ETMP /ACTUALLY CHECKSUMS ON DECTAPE ARE
301 TAD ETMP /EQUIVALENCE OF ALL WORDS IN A RCORD
302 AND CSUM /6 BITS AT A TIME. SINCE EQUIVALENCE
303 CIA /IS ASSOCIATIVE WE DO IT 12 AT A TIME
304 CLL RAL /AND CONDENSE LATER.
305 TAD ETMP /IDENTITIES USED ARE:
306 TAD CSUM /A+B=(A.XOR.B)+2*(A.AND.B)
307 DCA CSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B)
308 TAD ETMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B))
312 \fGCHK, 0 /FORM 6 BIT CHECKSUM
324 INIT2, 0 /TIS INITIALIZES LOCS IN PAGE 2
327 JMP I INIT2 /0 ENDS LIST
329 DCA CTRY3 /UPDATE THE LIST
336 XBUFF, 0 /0 MUST TERMINATE IT!!
340 SELECT, 0 /THIS ROUTINE CHECKS FOR SELECT
341 TAD XUNIT /AND ^C TYPED
343 SDRC /GET STATUS AND SEE IF SELECT ERROR ON
346 ISZ SELECT /NOPE .TAKE NORMAL OUT
347 KSF /SEE IF FLAG IS UP
348 JMP I SELECT /NO..EXIT
351 TAD (-7603 /IS IT A ^C?
353 JMP I SELECT /NO..EXIT