software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / RK8ENS.PA
CommitLineData
7af5ad59
PH
1/1 RK8E NON-SYSTEM HANDLER FOR OS/8
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
46/DEC-S8-URK8B-A-LA HJ
47
48/COPYRIGHT 1973
49
50/DIGITAL EQUIPMENT CORPORATION
51
52/MAYNARD, MASSACHUSETTS 01754
53
54/JANUARY 22, 1973
55\f
56/ONE RK8E IS TREATED AS TWO LOGICAL DISKS
57/EACH OF 3248 OS/8 BLOCKS.
58
59/THIS HANDLER CONTAINS ENTRY POINTS FOR THE 8 LOGICAL UNITS.
60/(RKA0,RKB0,RKA1,RKB1,RKA2,RKB2,RKA3,RKB3)
61
62
63 DCLR=6742
64 DLAG=6743
65 DLDC=6746
66 DRST=6745
67 DSKP=6741
68 DLCA=6744
69 *0
70 -10
71DEVICE RK05;DEVICE RKA0;4230;20;ZBLOCK 2
72DEVICE RK05;DEVICE RKB0;4230;21;ZBLOCK 2
73DEVICE RK05;DEVICE RKA1;4230;22;ZBLOCK 2
74DEVICE RK05;DEVICE RKB1;4230;23;ZBLOCK 2
75DEVICE RK05;DEVICE RKA2;4230;24;ZBLOCK 2
76DEVICE RK05;DEVICE RKB2;4230;25;ZBLOCK 2
77DEVICE RK05;DEVICE RKA3;4230;26;ZBLOCK 2
78DEVICE RK05;DEVICE RKB3;4230;27;ZBLOCK 2
79\f VERSION="A&77
80
81 *200
82
83/THE FOLLOWING MUST REMAIN HERE BECAUSE OF THE R200 REF.
84R37, 37 /USED TO CHECK FOR CYLINDER CHANGE
85RKEBLK, 0 /12 BITS OF BLOCK NUMBER
86CHKHED, 0 /CHECK HEADER FLAG
87RKEARG, 0 /HOLDS RETURN ADDRESS
88RKENO, 0 /HOLDS ENTRY POINT COUNT
89PAGCNT, 0 /HOLDS REMAINING PAGE COUNT
90RKEISZ, ISZ RKENO /TO PUT BACK OVER THE EP ADDR
91
92CTRLC, TAD R200 /TO IGNORE PARITY
93 KRS /READ THE KEYBOARD
94 TAD R7575 /SUBTRACT ^C
95 SNA CLA
96 KSF /IS KEYBOARD FLAG UP?
97 JMP RWAIT /NO
98RCIF, CDF CIF 0
99 JMP I R7600 /BOOTSTRAP
100
101
102
103
104
105
106/NOTE: A LOCATION CAN BE EEKED OUT BY USING RKA0 BETTER
107RERRCT, 0 /HOLDS RETRY COUNT
108\f ZBLOCK 220-. /PAD ENTRY POINTS TO 220
109
110RKA0, VERSION
111RKB0, ISZ RKENO /THE ISZ'S SET UP A COUNT OF
112RKA1, ISZ RKENO /OF WHICH ENTRY POINT WE CAME IN
113RKB1, ISZ RKENO
114RKA2, ISZ RKENO
115RKB2, ISZ RKENO
116RKA3, ISZ RKENO
117RKB3, ISZ RKENO
118R400, 400 /AN INNOCUOUS AND INSTRUCTION WHICH
119 /IS REFERENCED BY A TAD.
120 CLA CLL CMA RTL /AC=-3
121 DCA RERRCT /RETRY 3 TIMES
122 TAD RKENO /7-EP NUMBER
123 CMA /EP-8
124 TAD RKETAD /ADD ON INSTRUCTION
125 /WHICH REFERENCES THE 400 TO GENERATE A
126 /TAD CORRECT ENTRY POINT INSTRUCTION.
127 DCA GETENT /WE EXECUTE TO GET USERS ADDRESS
128 CLA CLL CML RTR /AC=2000
129 TAD GETENT /GENERATE A DCA INTO ENTRY POINT INSTRUCTION
130 DCA RKECMD /THIS IS EXECUTED TO REPLACE ISZ RKENO
131 RDF /GET USERS DATA FIELD
132 TAD RCIF /BUILD A CIF FOR RETURNING
133 DCA REXIT /STORE IT INTO THE EXIT CODE
134GETENT, HLT /WILL BE A TAD "ENTRY POINT"
135 /WILL SAVE UNIT INFO HERE FOR ERRORS
136 DCA RKEARG /SAVE USERS ADDR IN COMMON LOCATION
137 DCA RKENO /ZERO COUNT FOR NEXT TIME
138 TAD RKEISZ /GET THE ISZ RKENO
139RKECMD, HLT /THE DCA ENTRY POINT IS PUT HERE
140 /AND THIS LOCATION IS USED FOR THE RK8E COMMAND
141\f
142
143RETRY, TAD RKEARG /AC=-2 IF ERROR RETRY
144 DCA RKEARG
145 TAD GETENT
146 AND R6 /GET THE UNIT NUMBER
147 DCA RKECMD /SET UP UNIT FOR COMMAND
148 TAD GETENT
149 RAR /PUT HI/LOW LOGICAL DISK BIT IN LINK
150 SZL CLA
151 TAD R6260 /DISPLACEMENT TO 2ND HALF OF DISK
152 DCA RKA0 /NICE PLACE FOR A CONSTANT
153 TAD I RKEARG /GET ARG1
154 AND R4070 /GET R/W AND DF BITS
155 TAD RKECMD /GET UNIT NUMBER
156 DCA RKECMD /BASE COMMAND TO RK8E(DLDC)
157 TAD I RKEARG /GET ARG1 AGAIN
158 TAD I RKEARG /GET ARG1 AGAIN
159 ISZ RKEARG /POINT TO ARG2
160 AND R7600
161 CIA /TO MAKE 0 LOOK LIKE 40 PAGES
162 DCA PAGCNT /SAVE PAGE COUNT
163 TAD I RKEARG /GET ARG2
164 ISZ RKEARG /POINT TO ARG3
165 DLCA /LOAD CURRENT ADDRESS REGISTER
166\f
167 TAD I RKEARG /GET ARG3
168 CLL
169 TAD RKA0 /SYS OR RKB0 DISPLACMENT
170 DCA RKEBLK /LOW PART OF RK8E BLOCK NUMBER
171 SZL /STILL OFF IF BELOW BLOCK 10000
172OVRFLO, ISZ RKECMD /TURN ON EXTENDED BIT IF OVERFLOWED
173RELOOP, DCA CHKHED /SET CHECK HEADER FLAG TO EITHER
174 /0 OR 4000(WHICH GETS RTR'D BEFORE USED)
175 /AND CAUSES EITHER A "DATA" OR "ALL"
176 /TRANSFER
177 DCLR /CLEAR STATUS REGISTER
178 TAD PAGCNT /TEST TO SEE IF ONLY 1 PAGE WANTED
179 TAD R200
180 SNA CLA
181RKETAD, TAD R400 /7600 WAS IN PAGCNT
182 TAD CHKHED /ADD IN CHECK HEADER FLAG
183 CLL RTR /SHIFT TO CORRECT BITS
184 TAD RKECMD /ADD IN BASE COMMAND
185 DLDC /LOAD COMMAND REGISTER
186 TAD RKEBLK
187 DLAG /LOAD BLOCK REGISTER AND GO
188RWAIT, DSKP /WAIT ON FLAG
189 JMP CTRLC /CHECK FOR CONTROL C WHILE WAITING
190 DRST /READ COMPLETION REGISTER
191 CLL RAL /GET RID OF SUCCESS BIT
192 SZA /AND SEE IF ANYTHING LEFT
193 JMP RERROR /AN ERROR
194
195/IF THERE WAS NO ERROR L=1 BECAUSE DONE FLAG
196 TAD PAGCNT /CHECK TO SEE IF DONE
197 TAD R400 /ADD 2 PAGES ONTO TOTAL
198 SNL
199 JMP RKDONE /NO MORE TO DO
200 DCA PAGCNT /SAVE FOR NEXT TIME
201 TAD RKEBLK
202 CMA
203
204/THE R37 MUST REMAIN AT 200 SO THE FOLLOWING IS A 200
205R200, AND R37 /IF BLOCK IS AT A 37 MAKE
206 /NEXT OPERATION DO A CHECK HEADER
207 SZA CLA
208 STL RAR /SET AC TO "ALL" FLAG
209 ISZ RKEBLK /BUMP BLOCK NUMBER
210 JMP RELOOP /TRANSFER SOME MORE
211 JMP OVRFLO /PAST BLOCK 7777-SET EXTENDED BIT
212\f
213RERROR, AND R1002 /AC WAS RAL'D AND WE WANT TO SEE IF
214 /DRIVE SEEK FAILED OR CYLINDER ADDR ERROR
215 SNA CLA
216 JMP RKTST3 /WE TRY 3 TIMES
217/WE HAVE TO RECALIBRATE DRIVE
218 DCLR /CLEAR STAUS REGISTER
219 STL RTL /AC=2
220 DCLR /RECALIBRATE DRIVE
221 DSKP /WAIT ON FLAG
222 JMP .-1
223 DCLR /CLEAR STATUS REGISTER
224 DRST /WAIT FOR STATUS TO CLEAR
225 SZA CLA
226 JMP .-2 /STILL DOING RECALIBRATE
227RKTST3, CLA CLL CMA RAL /AC=-2
228 ISZ RERRCT /SKIP IF WE TRIED 3 TIMES
229 JMP RETRY /TRY AGAIN
230 JMP .+3 /ERROR EXIT
231RKDONE, ISZ RKEARG /NORMAL RETURN
232R7600, 7600 /GROUP 2 CLA
233 ISZ RKEARG /IF JUMPED TO HERE- ERROR RETURN
234REXIT, HLT /RESET USERS INST FIELD- WE NEVER TOUCHED DF
235 JMP I RKEARG /EXIT
236
237R6260, 6260 /SIZE OF ONE LOGICAL DISK
238R4070, 4070 /USED TO GET READ/WRITE AND DF BITS
239R1002, 1002 / " TO CHECK FOR RECALIBRATE ERRORS
240R6, 6 /TO PEEL OUT UNIT NUMBER
241R7575, 7575 /- ^C CONSTANT
242
243
244 $$$$
245\f