software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape1 / TD8EA.PA
CommitLineData
7af5ad59
PH
1/4 TD8E HANDLER FOR BUILD..TD8E-A
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
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.
26/
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.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45 *0
46 -2
47DEVICE TD8A;DEVICE DTA0;4210;4010;ZBLOCK 2
48DEVICE TD8A;DEVICE DTA1;4210;4014;ZBLOCK 2
49
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
57
58 TDVERSION="D&77
59
60/V3 CHANGES:
61
62/1. VERSION # IS NOW 1
63/2. PARITY ^C IS NOW LEGAL
64/3. ^C CHECK NO LONGER WILL ADVANCE READER
65
66/MAINTENANCE RELEASE CHANGES:
67
68/4. FIXED ^C BUG
69/5. MADE CODE IMPROVEMENTS
70/6. FIXED RETRY BUG
71
72
73 *200
74
75NXINIT, 7600 /CLEAR AC HERE!!!
76 JMS I CINIT2 /PART OF INITIALIZATION..DO THE PART
77BASE2, DCA JINIT /ON SECOND PAGE AND THEN TO JINIT
78 JMP JINIT
79
80BUFF, 0
81PGCT, 0
82FUNCT, 0
83C1000, 1000
84
85DTA0, TDVERSION /ENTRY FOR UNIT 0
86 CLA CLL
87 JMP DTA1X
88UNIT, 0 /FILLER WORD
89DTA1, TDVERSION /ENTRY FOR UNIT 1
90 CLA CLL CML
91 TAD DTA1
92 DCA DTA0 /PICK UP ARGS AT DTA0
93DTA1X, RAR
94 DCA UNIT /UNIT # FROM LINK
95 RDF
96 TAD C6203
97 DCA LEAVE /SET UP EXIT FROM HANDLER
98 TAD I DTA0
99 DCA FUNCT /SAVE FUNCTION WORD
100 TAD FUNCT
101 CLL RAL
102C200, AND CM200 /GET A PAGE COUNT
103 DCA PGCT
104 TAD FUNCT
105C374, AND C70 /ISOLATE FIELD OF TRANSFER
106 TAD C6203
107 DCA XFIELD
108 ISZ DTA0 /POINT TO BUFFER
109 TAD I DTA0
110 DCA BUFF
111 ISZ DTA0 /POINT TO RECORD
112 TAD I DTA0
113 CLL RAL /CONVERT TO DECTAPE BLOCKS
114 DCA TBLOCK
115 ISZ DTA0 /POINT TO ERROR RET.
116C6203, CIF CDF 0
117\f
118JINIT, JMP INIT /FIRST TIME THRU IT GETS EXECUTED
119 /THE RETURN FROM INIT ZEROES IT
120 CLA CLL CMA RTL
121 DCA ERCNT /3 ERROR TRIES
122 TAD UNIT
123 DCA I CXUNIT
124 JMS I CSELCT /CHECK FOR SELEC ERROR
125 JMP .-1 /LOOPS IF NO ^C AND SELECT ERROR
126 TAD FUNCT
127 CLL RAR
128 JMP GO /OK.. START THE SEARCH
129TRWCOM, SDST /TIME OR CHECK SUM ERROR?
130 SZA CLA
131 JMP TRY3 /YES TRY UP TO 3 TIMES
132 TAD PGCT /NO.. IS PAGE COUNT EXHAUSTED?
133 TAD CM200
134 SNA
135 JMP EXIT /YES.. DONE THIS TRANSFER
136 DCA PGCT /NEW PAGE COUNT
137 ISZ TBLOCK
138 TAD BUFF
139 TAD C200 /GET NEW BUFFER ADDRESS
140 DCA BUFF
141 CLL CML /FORCE FORWARD MOTION
142GO, CLA CML RTR /PUT IN DIRECTION BIT
143 TAD C1000
144 TAD UNIT
145 SDLC /INITIATE THE MOTION
146 JMS I CRDQAD /WAIT FOR 8 LINES TO PASS
147 JMS I CRDQAD
148M20, 7760 /DON'T CARE IF IT DOES SKIP!!!
149TSRCH, SDSS /WAIT\ f FOR BLOCK MARK OR END ZONE
150 JMP .-1
151 SDRC
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?
155 SNA
156 JMP ENDZ /YES..DO SOMETHING REASONABLE
157 TAD M20 /HOW ABOUT BLOCK MARK?
158 SZA CLA
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
163 CMA
164 TAD TBLOCK
165 CMA
166 SNA /IS THIS THE BLOCK?
167 JMP TFOUND /YES..HAVE CORRECT ONE
168M110, SZL SNA CLA /ARE WE HEADED PROPERLY?
169 JMP TSRCH /YES.. KEEP LOOKING
170ENDZ, SDRC /IF WE ARE IN END ZONE FORWARD, WE LOSE
171 CLL RTL
172 JMP GO /EXECUTE TURN AROUND AND SEARCH
173\fTRY3, CLA CLL /V3C
174 ISZ ERCNT /TRIED 3 TIMES?
175 JMP GO
176 JMP FATAL
177EXIT, ISZ DTA0 /NORMAL RETURN
178 CLL CML
179FATAL, TAD UNIT /STOP TAPE FIRST
180 SDLC
181 CLA CML RAR /EITHER 0 OR 4000 IN AC
182LEAVE, HLT /GETS CIF CDF N
183 JMP I DTA0
184
185INIT, JMS . /FIND OUT WHERE WE GOT LOADED
186BASE, TAD CRDQAD
187 SPA /NEGATIVE ENDS LIST
188 JMP NXINIT
189 TAD INIT
190 DCA CRDQAD
191 ISZ .-1
192 ISZ BASE
193 JMP BASE
194
195CRDQAD, R4LINE-BASE
196CINIT2, INIT2-BASE
197CSELCT, SELECT-BASE
198CXUNIT, XUNIT-BASE
199
200 *367
201TFOUND, SZL CLA /ARE WE IN RIGHT DIRECTION
202 JMP GO /NOT YET
203 TAD FUNCT
204 CLL RAL /R/W TO LINK
205 CLA
206C70, 70
207TC3, 3
208 TAD BUFF
209XFIELD, HLT /CONTROL 'TRICKLES THROUGH
210
211TBLOCK=DTA1
212ERCNT=INIT+1
213CM200=NXINIT
214DTA2=DTA0
215DTA3=DTA1
216DTA4=DTA0
217DTA5=DTA1
218DTA6=DTA0
219DTA7=DTA1
220\f *400
221 CIF 0 /WE ARE IN FIELD 0
222 DCA XBUFF
223 RAR
224 DCA XFUNCT /READ/WRITE TO FUNCTION
225RGRD, SDSS
226 JMP .-1 /LOOK FOR REVERSE GUARD PATTERN
227 SDRC
228 AND K77
229 TAD CM32
230 SZA CLA /IF NOT REV. GUARD, KEEP LOOKING
231 JMP RGRD
232 TAD C7600
233 DCA WORDS /128 WORDS/BLOCK
234 TAD XFUNCT
235K7700, SMA CLA /IS IT READ OR WRITE?
236 JMP TREAD
237 SDRC /CHECK FOR WRITE LOCKOUT
238 AND TC300
239 CLL /SETUP TO RETRY IF WRITE LOCK
240 SZA CLA
241 JMP I CTRY3 /IF LOCKED OUT, ERROR
242 JMS R4LINE /SKIP A WORD
243C7600, 7600 /CLA
244 TAD C1400
245 TAD XUNIT
246 SDLC /TURN ON WRITE HEAD
247 CLA CMA
248 JMS W4LINE /7777 IN REV. CHECKSUM
249 CLA CMA
250 DCA CSUM /AND ALSO TAPE CHECKSUM
251WRTLP, TAD I XBUFF
252 JMS W4LINE
253 ISZ XBUFF /INCREMENT BUFF. ADD.
254K77, 77
255 ISZ WORDS /DONE A BLOCK?
256 JMP WRTLP
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
262\f
263TREAD, JMS R4LINE
264 JMS R4LINE /SKIP CONTROL WORDS
265 JMS R4LINE
266 AND K77 /CHECKSUM
267 TAD K7700
268 DCA CSUM
269RDLP, JMS R4LINE
270 JMS EFUN /ADD WORD TO CHECKSUM
271 DCA I XBUFF
272 ISZ XBUFF
273TC300, 300
274 ISZ WORDS /DONE BLOCK?
275 JMP RDLP
276 JMS R4LINE
277 JMS EFUN /CHECK SUM 129 TH WORD
278 JMS R4LINE
279 AND K7700 /READ CHECKSUM
280 JMS EFUN
281 JMS GCHK /COMPARE TAPE AND OUR CHECKSUM
282 JMP I CRWCOM
283
284W4LINE, 0 /ADD TO CHECKSUM AND WRITE A 12 BIT
285 JMS EFUN /WORD
286 SDSQ
287 JMP .-1 /SKIP ON QUAD LINE FLAG
288 SDLD
289 CLA /AC IS NOT CLEARED AFTER SDLD
290 JMP I W4LINE
291
292R4LINE, 0 /WAIT FOR QUAD FLAG AND READ
293 SDSQ
294 JMP .-1
295 SDRD
296 JMP I R4LINE
297
298EFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM
299 CMA
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))
309 CMA
310 JMP I EFUN
311
312\fGCHK, 0 /FORM 6 BIT CHECKSUM
313 CLA
314 TAD CSUM
315 CLL CMA RTL
316 RTL
317 RTL
318 JMS EFUN
319 CLA CLL CML
320 TAD CSUM
321 AND K7700
322 JMP I GCHK
323
324INIT2, 0 /TIS INITIALIZES LOCS IN PAGE 2
325INIT3, TAD CTRY3
326 SNA
327 JMP I INIT2 /0 ENDS LIST
328 TAD INIT2
329 DCA CTRY3 /UPDATE THE LIST
330 ISZ .-1
331 ISZ INIT3
332 JMP INIT3
333
334CTRY3, TRY3-BASE2
335CRWCOM, TRWCOM-BASE2
336XBUFF, 0 /0 MUST TERMINATE IT!!
337CM32, -32
338C1400, 1400
339
340SELECT, 0 /THIS ROUTINE CHECKS FOR SELECT
341 TAD XUNIT /AND ^C TYPED
342 SDLC
343 SDRC /GET STATUS AND SEE IF SELECT ERROR ON
344 AND C100
345 SNA CLA
346 ISZ SELECT /NOPE .TAKE NORMAL OUT
347 KSF /SEE IF FLAG IS UP
348 JMP I SELECT /NO..EXIT
349 TAD C7600
350 KRS
351 TAD (-7603 /IS IT A ^C?
352 SZA CLA
353 JMP I SELECT /NO..EXIT
354 JMP I C7600
355
356C100, 100
357
358XFUNCT=INIT2
359CSUM=XFUNCT+1
360WORDS=CSUM+1
361ETMP=WORDS+1
362XUNIT=ETMP+1
363$$$$$$$
364\f