Commit | Line | Data |
---|---|---|
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 | |
71 | DEVICE RK05;DEVICE RKA0;4230;20;ZBLOCK 2 | |
72 | DEVICE RK05;DEVICE RKB0;4230;21;ZBLOCK 2 | |
73 | DEVICE RK05;DEVICE RKA1;4230;22;ZBLOCK 2 | |
74 | DEVICE RK05;DEVICE RKB1;4230;23;ZBLOCK 2 | |
75 | DEVICE RK05;DEVICE RKA2;4230;24;ZBLOCK 2 | |
76 | DEVICE RK05;DEVICE RKB2;4230;25;ZBLOCK 2 | |
77 | DEVICE RK05;DEVICE RKA3;4230;26;ZBLOCK 2 | |
78 | DEVICE 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. | |
84 | R37, 37 /USED TO CHECK FOR CYLINDER CHANGE | |
85 | RKEBLK, 0 /12 BITS OF BLOCK NUMBER | |
86 | CHKHED, 0 /CHECK HEADER FLAG | |
87 | RKEARG, 0 /HOLDS RETURN ADDRESS | |
88 | RKENO, 0 /HOLDS ENTRY POINT COUNT | |
89 | PAGCNT, 0 /HOLDS REMAINING PAGE COUNT | |
90 | RKEISZ, ISZ RKENO /TO PUT BACK OVER THE EP ADDR | |
91 | ||
92 | CTRLC, 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 | |
98 | RCIF, 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 | |
107 | RERRCT, 0 /HOLDS RETRY COUNT | |
108 | \f ZBLOCK 220-. /PAD ENTRY POINTS TO 220 | |
109 | ||
110 | RKA0, VERSION | |
111 | RKB0, ISZ RKENO /THE ISZ'S SET UP A COUNT OF | |
112 | RKA1, ISZ RKENO /OF WHICH ENTRY POINT WE CAME IN | |
113 | RKB1, ISZ RKENO | |
114 | RKA2, ISZ RKENO | |
115 | RKB2, ISZ RKENO | |
116 | RKA3, ISZ RKENO | |
117 | RKB3, ISZ RKENO | |
118 | R400, 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 | |
134 | GETENT, 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 | |
139 | RKECMD, HLT /THE DCA ENTRY POINT IS PUT HERE | |
140 | /AND THIS LOCATION IS USED FOR THE RK8E COMMAND | |
141 | \f | |
142 | ||
143 | RETRY, 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 | |
172 | OVRFLO, ISZ RKECMD /TURN ON EXTENDED BIT IF OVERFLOWED | |
173 | RELOOP, 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 | |
181 | RKETAD, 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 | |
188 | RWAIT, 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 | |
205 | R200, 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 | |
213 | RERROR, 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 | |
227 | RKTST3, 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 | |
231 | RKDONE, ISZ RKEARG /NORMAL RETURN | |
232 | R7600, 7600 /GROUP 2 CLA | |
233 | ISZ RKEARG /IF JUMPED TO HERE- ERROR RETURN | |
234 | REXIT, HLT /RESET USERS INST FIELD- WE NEVER TOUCHED DF | |
235 | JMP I RKEARG /EXIT | |
236 | ||
237 | R6260, 6260 /SIZE OF ONE LOGICAL DISK | |
238 | R4070, 4070 /USED TO GET READ/WRITE AND DF BITS | |
239 | R1002, 1002 / " TO CHECK FOR RECALIBRATE ERRORS | |
240 | R6, 6 /TO PEEL OUT UNIT NUMBER | |
241 | R7575, 7575 /- ^C CONSTANT | |
242 | ||
243 | ||
244 | $$$$ | |
245 | \f |