Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / TD8ESY.PA
1 /3 TD8E SYSTEM RESIDENT (12K)
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /COPYRIGHT (C) 1974,1975 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 \f *0
46
47 -3
48 DEVICE TD8E;DEVICE SYS;4211;6007;0;1341
49 DEVICE TD8E;DEVICE DTA0;4211;5007;0;1341
50 DEVICE TD8E;DEVICE DTA1;4211;SDTA1&177+5000;0;1341
51 \f TDBEGN-TD77-1
52
53 RELOC 7360
54
55 /THE BINARY GETS LOADED INTO 27220 INITIALY, AND
56 /WRITTEN OUT AS PART OF RECORD 0. WHEN THE 30 WORD
57 /BOOTSTRAP IS USED, THIS CODE GETS READ INTO 7400.
58
59
60
61 SDSS=6771
62 SDST=6772
63 SDSQ=6773
64 SDLC=6774
65 SDLD=6775
66 SDRC=6776
67 SDRD=6777
68
69 TDBEGN, ZBLOCK 20
70 TDBOOT, TAD K7600 /128 WORDS PER PAGE
71 DCA TDWCT
72 SDSS /WAIT FOR A BLOCK MARK (TAPE IS
73 JMP .-1 /STILL MOVING)
74 SDRC
75 AND TD77
76 TAD KM26 /IS IT A BLOCK MARK?
77 SZA CLA
78 JMP TDBOOT+2 /NO..WAIT A WHILE LONGER
79 SDRD /GET THE BLOCK NO.
80 TDBKNO, TAD TDM14 /NEED DECTAPE BLOCKS 154 & 155 (REC. 66)
81 SZA CLA
82 JMP TDBOOT+2 /NOT YET, BUSTER
83 TDRGRD, SDSS
84 JMP .-1 /NOW LET'S LOOK FOR A REVERSE GUARD WORD
85 SDRC
86 AND TD77
87 TAD KM32
88 SZA CLA
89 JMP TDRGRD /KEEP LOOKING FOR IT
90 JMS TDRQD
91 JMS TDRQD
92 JMS TDRQD /SKIP CONTROL WORDS
93 CDF 10 /LOAD UP FIELD 1
94 TDREAD, JMS TDRQD /GET A DATA WORD
95 DCA I TDPTR
96 ISZ TDPTR /ARE WE DONE?
97 JMP TDREAD /NOT YET
98 ISZ TDBKNO /YES..LOOK AT BLOCK 15
99 TAD KCDF20
100 DCA TDREAD-1 /LOAD UP FIELD 2
101 ISZ M2 /DONE THIS JUNK?
102 JMP TDBOOT /GO DO FIELD 2
103 SDLC /STOP THE TAPE
104 CIF CDF 0
105 JMP I K7605
106 \fTDM14, -154
107 -155 /USE RECORD 66
108 TDPTR,
109 TDWCT, 7600
110 TDRQD, 0
111 SDSQ
112 JMP .-1
113 SDRD
114 JMP I TDRQD
115
116 K7600, 7600
117 KM26, -26
118 KM32, -32
119 KCDF20, CDF 20
120 M2, -2
121 K7605, 7605
122 TD77, 77
123
124 / THIS BOOTSTRAP RESIDES IN BLOCK 0
125 / BLOCK 1/2 CONTAINS THE USUAL IMAGE OF 07600
126 / BLOCK 66 CONTAINS THE IMAGE OF 17600
127 / BLOCK 66 1/2 CONTAINS THE IMAGE OF 27600
128 RELOC
129 \f *200
130
131 /TD8E DECTAPE SYSTEM HANDLER
132 /THIS HANDLER CAN DRIVE UNITS 0&1, AND IS PERMANENTLY
133 /RESIDENT IN FIELDS 0&2.
134
135 RELOC 7600
136
137 VERSION="B&77
138
139 ZBLOCK 7
140 SHNDLR, VERSION /UNIT 0 ENTRY POINT
141 CLA CLL
142 JMP SHND2
143 C3, 3 /MUST BE HERE FOR BUILD
144 S70, 70
145 SDTA1, VERSION /UNIT 1 ENTRY
146 CLA CLL CML
147 SC1000, TAD SDTA1 /DOUBLES AS CONSTANT 1000
148 DCA SHNDLR /GET ARGS AT SHNDLR
149 SHND2, RAR /UNIT #
150 DCA SUNIT
151 RDF /SETUP FOR EXIT
152 TAD S6203
153 DCA EFLD
154 TAD I SHNDLR /FUNCTION WORD
155 SDLD /PUT IT IN DATA EGISTER
156 AND S70 /SDLD DOES NOT 0 AC..GET FIELD
157 TAD S6203 /CIF CDF N FOR TRANSFER FIELD
158 DCA TFLD
159 ISZ SHNDLR
160 TAD I SHNDLR /BUFFER ADDRESS
161 DCA BPTR
162 ISZ SHNDLR
163 TAD I SHNDLR /BLOCK #. TIMES 2 FOR REAL #
164 CLL RAL
165 DCA BLOCK
166 ISZ SHNDLR /POINT TO ERROR EXIT
167 CIF CDF 20 /PUT UNIT # INTO FIELD 2
168 TAD SUNIT
169 DCA I SUNIT2
170 JMP F2SET /TO FIELD 2 FOR INIT.
171
172 F1GO, SDRD /INITIAL DIRECTION TO LINK
173 RAR
174 JMP RGO
175 \fRENTER, TAD BPTR /DONE THIS BLOCK..NEXT ADDRESS
176 TAD SC200
177 DCA BPTR
178 ISZ BLOCK /NEXT TAPE BLOCK..CAN'T SKIP
179 CLL CML /FORCE FORWARD MOTION
180 RGO, CLA CML RTR /LINK TO MOTION BIT
181 TAD SC1000
182 TAD SUNIT
183 SDLC /MOVE THE TAPE
184 SDSQ
185 JMP .-1
186 SDRD /KNOCK DOWN QUAD FLAG
187 SDSQ
188 JMP .-1
189 SDRD /THIS IS NEEDED, ELSE TIME ERROR!!!
190 \f
191 SRCH, SDSS /WAIT FOR A BLOCK MARK
192 JMP .-1
193 SDRC /GET MARK TRACK BITS
194 CLL RTL /DIRECTION TO LINK
195 AND SC374
196 TAD SM110 /IS IT A N END ZONE?
197 SNA
198 JMP SENDZ /YES
199 TAD SM20 /MAYBE A BLOCK MARK?
200 SZA CLA
201 JMP SRCH /NEITHER..KEEP GOING
202 SDRD /READ THE BLOCK #
203 SZL /IF REVERSE, LOOK 3 AHEAD OF TARGET
204 TAD C3
205 CMA
206 TAD BLOCK
207 CMA
208 SNA /IS IT THE RIGHT ONE?
209 JMP FOUND /YES
210 SM110, CLA SNA SZL /SNA SUPERFLUOUS..ONLY SZL VALID
211 JMP SRCH /HEADED FOR IT..KEEP GOING
212 SENDZ, SDRC
213 CLL RTL
214 SZL CLA /IF IN END ZONE FORWARD, GIVE ERROR
215 JMP RGO
216 CIF 20 /IF IT IS REALL END ZONE, AN ERROR
217 JMP ERROR
218
219 FOUND, SZL CLA /RIGHT BLOCK..HOW ABOUT DIRECTION?
220 JMP RGO /WRONG..EXECUTE TURNAROUND
221 TAD BPTR
222 TFLD, HLT /GETS CIF CDF N
223 CIF 20
224 JMP RDWT /LET'S TRANSFER DATA
225
226 SEXIT, ISZ SHNDLR /NORMAL RETURN
227 SEREX, TAD SUNIT /STOP THE TAPE
228 SDLC
229 CML CLA RAR /EITHER 0 OR 4000 IN AC ON RETURN
230 EFLD, HLT
231 JMP I SHNDLR
232
233 BPTR=7755
234 BLOCK=7754
235 SUNIT=SDTA1
236
237 S6203, 6203
238 SC200, 200
239 SC374, 374
240 SM20, -20
241 SUNIT2, SXUNIT
242 RELOC
243 \f *400
244
245 RELOC 7600 /RUNS IN 27600
246
247 XPTR, 0 /BUFFER POINTER
248 F2SET, CLA CLL CMA RTL /3 ERROR TRIES
249 DCA TRYCNT
250 TAD SXUNIT /MAKE SURE TAPE IS STOPPED
251 SDLC
252 F26203, CIF CDF 0
253 SDRD /FUNCTION WORD
254 CLL RAL
255 AND CX7600 /PAGE COUNT
256 DCA XPGCT
257 SDRD
258 DCA SXFUN /SAVE THE FUNCTION WORD
259 JMP F1GO
260
261 RDWT, DCA XPTR /SAVE NEW BUFFER ADDRESS
262 TAD CX7600
263 DCA XWCNT /128 WORDS PER BLOCK
264 REVGRD, SDSS /WAIT FOR REVERSE GUARD WORD
265 JMP .-1
266 SDRC
267 AND X77
268 TAD XM32 /IS IT REVERSE GUARD?
269 SZA CLA
270 JMP REVGRD /NO
271 TAD SXFUN
272 SK7700, SMA CLA /READ OR WRITE?
273 JMP READ /READ
274 SDRC
275 AND C300 /ERRORS ON WRITE LOCKOUT AND TIME
276 SZA CLA
277 JMP ERROR
278 JMS RDQUAD /SKIP A WORD
279 CX7600, 7600
280 TAD WRLP
281 TAD SXUNIT
282 SDLC /TURN ON THE WRITE
283 CLA CMA
284 JMS WRQUAD /WRITE 7777 IN REV. CHECKSUM
285 CLA CMA
286 DCA SCKSUM /AND ALSO IN COMPUTE CHECKSUM
287 WRLP, TAD I XPTR
288 JMS WRQUAD /WRITE THE DATA
289 ISZ XPTR
290 X77, 77 /JUST IN CASE
291 ISZ XWCNT /DONE 128?
292 JMP WRLP
293 JMS WRQUAD /WRITE AND CHECKSUM A WORD OF 0
294 JMS GETCHK /GET CHECKSUM
295 JMS WRQUAD
296 JMS WRQUAD /LET CHECKSUM GET WRITTEN
297 \f
298 RWCOM, SDST /CHECK FOR TIME AND CHECKSUM ERRORS
299 SZA CLA
300 JMP ERROR /NOTE THAT LINK IS OFF AT RWCOM
301 CIF CDF 0
302 TAD XPGCT /FINISHED TRANSFER?
303 TAD CX7600 /LINK GOES ON HERE
304 SNA
305 JMP SEXIT /YES..GETOUT
306 DCA XPGCT
307 JMP RENTER
308
309 READ, JMS RDQUAD /SKIP CONTROL WORDS
310 JMS RDQUAD
311 JMS RDQUAD /GET CHECKSUM
312 AND X77
313 TAD SK7700
314 DCA SCKSUM
315 SRDLP, JMS RDQUAD
316 DCA I XPTR
317 TAD I XPTR
318 JMS EQUFUN
319 ISZ XPTR
320 C300, 300
321 ISZ XWCNT /DONE ALL?
322 JMP SRDLP /NO
323 JMS RDQUAD /READ AND CHECKSUM LAST WORD
324 JMS EQUFUN
325 JMS RDQUAD /GET CHECKSUM
326 AND SK7700
327 JMS EQUFUN
328 JMS GETCHK
329 JMP RWCOM
330
331 ERROR, CLA CLL /THIS CAUSES SEARCH REVERSE AT RGO
332 CIF CDF 0
333 ISZ TRYCNT /EXHAUSTED ERROR TRIES?
334 JMP RGO
335 JMP SEREX /YES..FATAL EXIT
336
337 WRQUAD, 0 /WRITE A 12 BIT WORD
338 SDSQ
339 JMP .-1
340 SDLD
341 JMS EQUFUN /SDLD LEAVES AC ALONE
342 JMP I WRQUAD
343
344 RDQUAD, 0 /READ A 12 BIT WORD
345 SDSQ
346 JMP .-1
347 SDRD
348 JMP I RDQUAD
349 \fEQUFUN, 0 /EQUIVALENCE CHECKSUM
350 CMA
351 DCA EQUTMP
352 TAD EQUTMP
353 AND SCKSUM
354 CIA
355 CLL RAL
356 TAD EQUTMP
357 TAD SCKSUM
358 DCA SCKSUM
359 JMP I EQUFUN
360
361 GETCHK, 0
362 TAD SCKSUM
363 CLL CMA RTL
364 RTL
365 RTL
366 JMS EQUFUN
367 TAD SCKSUM
368 AND SK7700
369 JMP I GETCHK
370
371 SXUNIT, 0
372 XPGCT, 0
373 SXFUN, 0
374 TRYCNT, 0
375 XWCNT, 0
376 XM32, -32
377 SCKSUM, 0
378 EQUTMP, 0
379
380 /THE LAST 4 LOCS. ARE FREE FOR USE BY BATCH
381 ZBLOCK 4
382 RELOC
383 $
384 \f