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