1 /1 RK8E NON-SYSTEM HANDLER FOR OS/8
11 /COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION
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.
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.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
50 /DIGITAL EQUIPMENT CORPORATION
52 /MAYNARD, MASSACHUSETTS 01754
56 /ONE RK8E IS TREATED AS TWO LOGICAL DISKS
57 /EACH OF 3248 OS/8 BLOCKS.
59 /THIS HANDLER CONTAINS ENTRY POINTS FOR THE 8 LOGICAL UNITS.
60 /(RKA0,RKB0,RKA1,RKB1,RKA2,RKB2,RKA3,RKB3)
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
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
92 CTRLC, TAD R200 /TO IGNORE PARITY
93 KRS /READ THE KEYBOARD
94 TAD R7575 /SUBTRACT ^C
96 KSF /IS KEYBOARD FLAG UP?
99 JMP I R7600 /BOOTSTRAP
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
111 RKB0, ISZ RKENO /THE ISZ'S SET UP A COUNT OF
112 RKA1, ISZ RKENO /OF WHICH ENTRY POINT WE CAME IN
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
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
143 RETRY, TAD RKEARG /AC=-2 IF ERROR RETRY
146 AND R6 /GET THE UNIT NUMBER
147 DCA RKECMD /SET UP UNIT FOR COMMAND
149 RAR /PUT HI/LOW LOGICAL DISK BIT IN LINK
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
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
167 TAD I RKEARG /GET ARG3
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"
177 DCLR /CLEAR STATUS REGISTER
178 TAD PAGCNT /TEST TO SEE IF ONLY 1 PAGE WANTED
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
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
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
199 JMP RKDONE /NO MORE TO DO
200 DCA PAGCNT /SAVE FOR NEXT TIME
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
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
213 RERROR, AND R1002 /AC WAS RAL'D AND WE WANT TO SEE IF
214 /DRIVE SEEK FAILED OR CYLINDER ADDR ERROR
216 JMP RKTST3 /WE TRY 3 TIMES
217 /WE HAVE TO RECALIBRATE DRIVE
218 DCLR /CLEAR STAUS REGISTER
220 DCLR /RECALIBRATE DRIVE
223 DCLR /CLEAR STATUS REGISTER
224 DRST /WAIT FOR STATUS TO CLEAR
226 JMP .-2 /STILL DOING RECALIBRATE
227 RKTST3, CLA CLL CMA RAL /AC=-2
228 ISZ RERRCT /SKIP IF WE TRIED 3 TIMES
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
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