software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape1 / TD8EB.PA
CommitLineData
7af5ad59
PH
1/4 TD8E HANDLER FOR BUILD..TD8E-B
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 TD8B;DEVICE DTA2;4210;4011;ZBLOCK 2
48DEVICE TD8B;DEVICE DTA3;4210;4015;ZBLOCK 2
49
50 SDSS=6761 /SKIP ON SINGLE LINE FLAG
51 SDST=6762 /SKIP ON TIME ERROR
52 SDSQ=6763 /SKIP ON QUAD LINE FLAG
53 SDLC=6764 /LOAD TAPE COMMAND REGISTER
54 SDLD=6765 /LOAD DATA REGISTER
55 SDRC=6766 /READ COMMAND REGISTER
56 SDRD=6767 /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 ADVANCES 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
74 *200
75
76NXINIT, 7600 /CLEAR AC HERE!!!
77 JMS I CINIT2
78BASE2, DCA JINIT
79 JMP JINIT
80CRDQAD, R4LINE-BASE
81CINIT2, INIT2-BASE
82CSELCT, SELECT-BASE
83CXUNIT, XUNIT-BASE
84BUFF, 4000 /MUST BE NEGATIVE INITIALLY
85
86
87DTA0, TDVERSION /ENTRY FOR UNIT 0
88 CLA CLL
89 JMP DTA1X
90UNIT, 0 /FILLER WORD
91DTA1, TDVERSION /ENTRY FOR UNIT 1
92 CLA CLL CML
93 TAD DTA1
94 DCA DTA0 /PICK UP ARGS AT DTA0
95DTA1X, RAR
96 DCA UNIT /UNIT # FROM LINK
97 RDF
98 TAD C6203
99 DCA LEAVE /SET UP EXIT FROM HANDLER
100JINIT, JMP INIT
101 TAD I DTA0
102 DCA FUNCT /SAVE FUNCTION WORD
103 TAD FUNCT
104 CLL RAL
105C200, AND CM200 /GET A PAGE COUNT
106 DCA PGCT
107 TAD FUNCT
108C374, AND C70 /ISOLATE FIELD OF TRANSFER
109 TAD C6203
110 DCA XFIELD
111 ISZ DTA0 /POINT TO BUFFER
112 TAD I DTA0
113 DCA BUFF
114 ISZ DTA0 /POINT TO RECORD
115 TAD I DTA0
116 CLL RAL /CONVERT TO DECTAPE BLOCKS
117 DCA TBLOCK
118 ISZ DTA0 /POINT TO ERROR RET.
119C6203, CIF CDF 0
120\f
121 /THE RETURN FROM INIT ZEROES IT
122 CLA CLL CMA RTL
123 DCA ERCNT /3 ERROR TRIES
124 TAD UNIT
125 DCA I CXUNIT
126 JMS I CSELCT /CHECK FOR SELEC ERROR
127 JMP .-1 /LOOPS IF NO ^C AND SELECT ERROR
128 TAD FUNCT
129 CLL RAR
130 JMP GO /OK.. START THE SEARCH
131TRWCOM, SDST /TIME OR CHECK SUM ERROR?
132 SZA CLA
133 JMP TRY3 /YES TRY UP TO 3 TIMES
134 TAD PGCT /NO.. IS PAGE COUNT EXHAUSTED?
135 TAD CM200
136 SNA
137 JMP EXIT /YES.. DONE THIS TRANSFER
138 DCA PGCT /NEW PAGE COUNT
139 ISZ TBLOCK
140 TAD BUFF
141 TAD C200 /GET NEW BUFFER ADDRESS
142 DCA BUFF
143 CLL CML /FORCE FORWARD MOTION
144GO, CLA CML RTR /PUT IN DIRECTION BIT
145 TAD C1000
146 TAD UNIT
147 SDLC /INITIATE THE MOTION
148 JMS I CRDQAD /WAIT FOR 8 LINES TO PASS
149 JMS I CRDQAD
150M20, 7760 /DON'T CARE IF IT DOES SKIP!!!
151TSRCH, SDSS /WAIT\ f FOR BLOCK MARK OR END ZONE
152 JMP .-1
153 SDRC
154 CLL RTL /DIRECTION TO LINK, DATA TO AC 4-9
155 AND C374 /ISOLATE M.T BITS
156 TAD M110 /IS IT END ZONE?
157 SNA
158 JMP ENDZ /YES..DO SOMETHING REASONABLE
159 TAD M20 /HOW ABOUT BLOCK MARK?
160 SZA CLA
161 JMP TSRCH /NEITHER..KEEP LOOKING
162 SDRD /WHAT IS THIS BLOCK'S #?
163 SZL /IF IN REVERSE, LOOK FOR 3 BEFORE
164 TAD TC3 /THE ACTUAL TARGET BLOCK
165 CMA
166 TAD TBLOCK
167 CMA
168 SNA /IS THIS THE BLOCK?
169 JMP TFOUND /YES..HAVE CORRECT ONE
170M110, SZL SNA CLA /ARE WE HEADED PROPERLY?
171 JMP TSRCH /YES.. KEEP LOOKING
172ENDZ, SDRC /IF WE ARE IN END ZONE FORWARD, WE LOSE
173 CLL RTL
174 JMP GO /EXECUTE TURN AROUND AND SEARCH
175\fTRY3, CLA CLL /V3C
176 ISZ ERCNT /TRIED 3 TIMES?
177 JMP GO
178 JMP FATAL
179EXIT, ISZ DTA0 /NORMAL RETURN
180 CLL CML
181FATAL, TAD UNIT /STOP TAPE FIRST
182 SDLC
183 CLA CML RAR /EITHER 0 OR 4000 IN AC
184LEAVE, HLT /GETS CIF CDF N
185 JMP I DTA0
186
187INIT, JMS . /FIND OUT WHERE WE GOT LOADED
188BASE, TAD CRDQAD
189 SPA /NEGATIVE ENDS LIST
190 JMP NXINIT
191 TAD INIT
192 DCA CRDQAD
193 ISZ .-1
194 ISZ BASE
195 JMP BASE
196
197PGCT, 0
198FUNCT, 0
199C1000, 1000
200
201 *367
202TFOUND, SZL CLA /ARE WE IN RIGHT DIRECTION
203 JMP GO /NOT YET
204 TAD FUNCT
205 CLL RAL /R/W TO LINK
206 CLA
207C70, 70
208TC3, 3
209 TAD BUFF
210XFIELD, HLT /CONTROL 'TRICKLES THROUGH
211
212TBLOCK=DTA1
213ERCNT=INIT+1
214CM200=NXINIT
215DTA2=DTA0
216DTA3=DTA1
217DTA4=DTA0
218DTA5=DTA1
219DTA6=DTA0
220DTA7=DTA1
221\f *400
222 CIF 0 /WE ARE IN FIELD 0
223 DCA XBUFF
224 RAR
225 DCA XFUNCT /READ/WRITE TO FUNCTION
226RGRD, SDSS
227 JMP .-1 /LOOK FOR REVERSE GUARD PATTERN
228 SDRC
229 AND K77
230 TAD CM32
231 SZA CLA /IF NOT REV. GUARD, KEEP LOOKING
232 JMP RGRD
233 TAD C7600
234 DCA WORDS /128 WORDS/BLOCK
235 TAD XFUNCT
236K7700, SMA CLA /IS IT READ OR WRITE?
237 JMP TREAD
238 SDRC /CHECK FOR WRITE LOCKOUT
239 AND TC300
240 CLL /SETUP TO RETRY IF WRITE LOCK
241 SZA CLA
242 JMP I CTRY3 /IF LOCKED OUT, ERROR
243 JMS R4LINE /SKIP A WORD
244C7600, 7600 /CLA
245 TAD C1400
246 TAD XUNIT
247 SDLC /TURN ON WRITE HEAD
248 CLA CMA
249 JMS W4LINE /7777 IN REV. CHECKSUM
250 CLA CMA
251 DCA CSUM /AND ALSO TAPE CHECKSUM
252WRTLP, TAD I XBUFF
253 JMS W4LINE
254 ISZ XBUFF /INCREMENT BUFF. ADD.
255K77, 77
256 ISZ WORDS /DONE A BLOCK?
257 JMP WRTLP
258 JMS W4LINE /A 129 TH WORD OF 0
259 JMS GCHK /GET 6 BIT CHECKSUM
260 JMS W4LINE /WRITE IT TO TAPE
261 JMS W4LINE /LET CHECK SUM FINISH
262 JMP I CRWCOM /SEE IF WE ARE FINISHED
263\f
264TREAD, JMS R4LINE
265 JMS R4LINE /SKIP CONTROL WORDS
266 JMS R4LINE
267 AND K77 /CHECKSUM
268 TAD K7700
269 DCA CSUM
270RDLP, JMS R4LINE
271 JMS EFUN /ADD WORD TO CHECKSUM
272 DCA I XBUFF
273 ISZ XBUFF
274TC300, 300
275 ISZ WORDS /DONE BLOCK?
276 JMP RDLP
277 JMS R4LINE
278 JMS EFUN /CHECK SUM 129 TH WORD
279 JMS R4LINE
280 AND K7700 /READ CHECKSUM
281 JMS EFUN
282 JMS GCHK /COMPARE TAPE AND OUR CHECKSUM
283 JMP I CRWCOM
284
285W4LINE, 0 /ADD TO CHECKSUM AND WRITE A 12 BIT
286 JMS EFUN /WORD
287 SDSQ
288 JMP .-1 /SKIP ON QUAD LINE FLAG
289 SDLD
290 CLA /AC IS NOT CLEARED AFTER SDLD
291 JMP I W4LINE
292
293R4LINE, 0 /WAIT FOR QUAD FLAG AND READ
294 SDSQ
295 JMP .-1
296 SDRD
297 JMP I R4LINE
298
299EFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM
300 CMA
301 DCA ETMP /ACTUALLY CHECKSUMS ON DECTAPE ARE
302 TAD ETMP /EQUIVALENCE OF ALL WORDS IN A RCORD
303 AND CSUM /6 BITS AT A TIME. SINCE EQUIVALENCE
304 CIA /IS ASSOCIATIVE WE DO IT 12 AT A TIME
305 CLL RAL /AND CONDENSE LATER.
306 TAD ETMP /IDENTITIES USED ARE:
307 TAD CSUM /A+B=(A.XOR.B)+2*(A.AND.B)
308 DCA CSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B)
309 TAD ETMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B))
310 CMA
311 JMP I EFUN
312
313\fGCHK, 0 /FORM 6 BIT CHECKSUM
314 CLA
315 TAD CSUM
316 CLL CMA RTL
317 RTL
318 RTL
319 JMS EFUN
320 CLA CLL CML
321 TAD CSUM
322 AND K7700
323 JMP I GCHK
324
325INIT2, 0 /TIS INITIALIZES LOCS IN PAGE 2
326INIT3, TAD CTRY3
327 SNA
328 JMP I INIT2 /0 ENDS LIST
329 TAD INIT2
330 DCA CTRY3 /UPDATE THE LIST
331 ISZ .-1
332 ISZ INIT3
333 JMP INIT3
334
335CTRY3, TRY3-BASE2
336CRWCOM, TRWCOM-BASE2
337XBUFF, 0 /0 MUST TERMINATE IT!!
338CM32, -32
339C1400, 1400
340
341SELECT, 0 /THIS ROUTINE CHECKS FOR SELECT
342 TAD XUNIT /AND ^C TYPED
343 SDLC
344 SDRC /GET STATUS AND SEE IF SELECT ERROR ON
345 AND C100
346 SNA CLA
347 ISZ SELECT /NOPE .TAKE NORMAL OUT
348 KSF /SEE IF FLAG IS UP
349 JMP I SELECT /NO..EXIT
350 TAD C7600
351 KRS
352 TAD (-7603 /IS IT ^C?
353 SZA CLA
354 JMP I SELECT /NO..EXIT
355 JMP I C7600
356
357C100, 100
358
359XFUNCT=INIT2
360CSUM=XFUNCT+1
361WORDS=CSUM+1
362ETMP=WORDS+1
363XUNIT=ETMP+1
364$$$$$$$
365\f