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 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 000000 7770 -10 71 000001 2213 DEVICE RK05;DEVICE RKA0;4230;20;ZBLOCK 2 000002 6065 000003 2213 000004 0160 000005 4230 000006 0020 000007 0000 000010 0000 72 000011 2213 DEVICE RK05;DEVICE RKB0;4230;21;ZBLOCK 2 000012 6065 000013 2213 000014 0260 000015 4230 000016 0021 000017 0000 000020 0000 73 000021 2213 DEVICE RK05;DEVICE RKA1;4230;22;ZBLOCK 2 000022 6065 000023 2213 000024 0161 000025 4230 000026 0022 000027 0000 000030 0000 74 000031 2213 DEVICE RK05;DEVICE RKB1;4230;23;ZBLOCK 2 000032 6065 000033 2213 000034 0261 000035 4230 000036 0023 000037 0000 000040 0000 75 000041 2213 DEVICE RK05;DEVICE RKA2;4230;24;ZBLOCK 2 000042 6065 000043 2213 000044 0162 000045 4230 000046 0024 000047 0000 000050 0000 76 000051 2213 DEVICE RK05;DEVICE RKB2;4230;25;ZBLOCK 2 000052 6065 000053 2213 000054 0262 000055 4230 000056 0025 000057 0000 000060 0000 77 000061 2213 DEVICE RK05;DEVICE RKA3;4230;26;ZBLOCK 2 000062 6065 000063 2213 000064 0163 000065 4230 000066 0026 000067 0000 000070 0000 78 000071 2213 DEVICE RK05;DEVICE RKB3;4230;27;ZBLOCK 2 000072 6065 000073 2213 000074 0263 000075 4230 000076 0027 000077 0000 000100 0000 79 VERSION="A&77 80 81 *200 82 83 /THE FOLLOWING MUST REMAIN HERE BECAUSE OF THE R200 REF. 84 000200 0037 R37, 37 /USED TO CHECK FOR CYLINDER CHANGE 85 000201 0000 RKEBLK, 0 /12 BITS OF BLOCK NUMBER 86 000202 0000 CHKHED, 0 /CHECK HEADER FLAG 87 000203 0000 RKEARG, 0 /HOLDS RETURN ADDRESS 88 000204 0000 RKENO, 0 /HOLDS ENTRY POINT COUNT 89 000205 0000 PAGCNT, 0 /HOLDS REMAINING PAGE COUNT 90 000206 2204 RKEISZ, ISZ RKENO /TO PUT BACK OVER THE EP ADDR 91 92 000207 1340 CTRLC, TAD R200 /TO IGNORE PARITY 93 000210 6034 KRS /READ THE KEYBOARD 94 000211 1377 TAD R7575 /SUBTRACT ^C 95 000212 7650 SNA CLA 96 000213 6031 KSF /IS KEYBOARD FLAG UP? 97 000214 5323 JMP RWAIT /NO 98 000215 6203 RCIF, CDF CIF 0 99 000216 5767 JMP I R7600 /BOOTSTRAP 100 101 102 103 104 105 106 /NOTE: A LOCATION CAN BE EEKED OUT BY USING RKA0 BETTER 107 000217 0000 RERRCT, 0 /HOLDS RETRY COUNT 108 ZBLOCK 220-. /PAD ENTRY POINTS TO 220 109 110 000220 0001 RKA0, VERSION 111 000221 2204 RKB0, ISZ RKENO /THE ISZ'S SET UP A COUNT OF 112 000222 2204 RKA1, ISZ RKENO /OF WHICH ENTRY POINT WE CAME IN 113 000223 2204 RKB1, ISZ RKENO 114 000224 2204 RKA2, ISZ RKENO 115 000225 2204 RKB2, ISZ RKENO 116 000226 2204 RKA3, ISZ RKENO 117 000227 2204 RKB3, ISZ RKENO 118 000230 0400 R400, 400 /AN INNOCUOUS AND INSTRUCTION WHICH 119 /IS REFERENCED BY A TAD. 120 000231 7346 CLA CLL CMA RTL /AC=-3 121 000232 3217 DCA RERRCT /RETRY 3 TIMES 122 000233 1204 TAD RKENO /7-EP NUMBER 123 000234 7040 CMA /EP-8 124 000235 1314 TAD RKETAD /ADD ON INSTRUCTION 125 /WHICH REFERENCES THE 400 TO GENERATE A 126 /TAD CORRECT ENTRY POINT INSTRUCTION. 127 000236 3245 DCA GETENT /WE EXECUTE TO GET USERS ADDRESS 128 000237 7332 CLA CLL CML RTR /AC=2000 129 000240 1245 TAD GETENT /GENERATE A DCA INTO ENTRY POINT INSTRUCTION 130 000241 3251 DCA RKECMD /THIS IS EXECUTED TO REPLACE ISZ RKENO 131 000242 6214 RDF /GET USERS DATA FIELD 132 000243 1215 TAD RCIF /BUILD A CIF FOR RETURNING 133 000244 3371 DCA REXIT /STORE IT INTO THE EXIT CODE 134 000245 7402 GETENT, HLT /WILL BE A TAD "ENTRY POINT" 135 /WILL SAVE UNIT INFO HERE FOR ERRORS 136 000246 3203 DCA RKEARG /SAVE USERS ADDR IN COMMON LOCATION 137 000247 3204 DCA RKENO /ZERO COUNT FOR NEXT TIME 138 000250 1206 TAD RKEISZ /GET THE ISZ RKENO 139 000251 7402 RKECMD, HLT /THE DCA ENTRY POINT IS PUT HERE 140 /AND THIS LOCATION IS USED FOR THE RK8E COMMAND 141 142 143 000252 1203 RETRY, TAD RKEARG /AC=-2 IF ERROR RETRY 144 000253 3203 DCA RKEARG 145 000254 1245 TAD GETENT 146 000255 0376 AND R6 /GET THE UNIT NUMBER 147 000256 3251 DCA RKECMD /SET UP UNIT FOR COMMAND 148 000257 1245 TAD GETENT 149 000260 7010 RAR /PUT HI/LOW LOGICAL DISK BIT IN LINK 150 000261 7630 SZL CLA 151 000262 1373 TAD R6260 /DISPLACEMENT TO 2ND HALF OF DISK 152 000263 3220 DCA RKA0 /NICE PLACE FOR A CONSTANT 153 000264 1603 TAD I RKEARG /GET ARG1 154 000265 0374 AND R4070 /GET R/W AND DF BITS 155 000266 1251 TAD RKECMD /GET UNIT NUMBER 156 000267 3251 DCA RKECMD /BASE COMMAND TO RK8E(DLDC) 157 000270 1603 TAD I RKEARG /GET ARG1 AGAIN 158 000271 1603 TAD I RKEARG /GET ARG1 AGAIN 159 000272 2203 ISZ RKEARG /POINT TO ARG2 160 000273 0367 AND R7600 161 000274 7041 CIA /TO MAKE 0 LOOK LIKE 40 PAGES 162 000275 3205 DCA PAGCNT /SAVE PAGE COUNT 163 000276 1603 TAD I RKEARG /GET ARG2 164 000277 2203 ISZ RKEARG /POINT TO ARG3 165 000300 6744 DLCA /LOAD CURRENT ADDRESS REGISTER 166 167 000301 1603 TAD I RKEARG /GET ARG3 168 000302 7100 CLL 169 000303 1220 TAD RKA0 /SYS OR RKB0 DISPLACMENT 170 000304 3201 DCA RKEBLK /LOW PART OF RK8E BLOCK NUMBER 171 000305 7430 SZL /STILL OFF IF BELOW BLOCK 10000 172 000306 2251 OVRFLO, ISZ RKECMD /TURN ON EXTENDED BIT IF OVERFLOWED 173 000307 3202 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 000310 6742 DCLR /CLEAR STATUS REGISTER 178 000311 1205 TAD PAGCNT /TEST TO SEE IF ONLY 1 PAGE WANTED 179 000312 1340 TAD R200 180 000313 7650 SNA CLA 181 000314 1230 RKETAD, TAD R400 /7600 WAS IN PAGCNT 182 000315 1202 TAD CHKHED /ADD IN CHECK HEADER FLAG 183 000316 7112 CLL RTR /SHIFT TO CORRECT BITS 184 000317 1251 TAD RKECMD /ADD IN BASE COMMAND 185 000320 6746 DLDC /LOAD COMMAND REGISTER 186 000321 1201 TAD RKEBLK 187 000322 6743 DLAG /LOAD BLOCK REGISTER AND GO 188 000323 6741 RWAIT, DSKP /WAIT ON FLAG 189 000324 5207 JMP CTRLC /CHECK FOR CONTROL C WHILE WAITING 190 000325 6745 DRST /READ COMPLETION REGISTER 191 000326 7104 CLL RAL /GET RID OF SUCCESS BIT 192 000327 7440 SZA /AND SEE IF ANYTHING LEFT 193 000330 5346 JMP RERROR /AN ERROR 194 195 /IF THERE WAS NO ERROR L=1 BECAUSE DONE FLAG 196 000331 1205 TAD PAGCNT /CHECK TO SEE IF DONE 197 000332 1230 TAD R400 /ADD 2 PAGES ONTO TOTAL 198 000333 7420 SNL 199 000334 5366 JMP RKDONE /NO MORE TO DO 200 000335 3205 DCA PAGCNT /SAVE FOR NEXT TIME 201 000336 1201 TAD RKEBLK 202 000337 7040 CMA 203 204 /THE R37 MUST REMAIN AT 200 SO THE FOLLOWING IS A 200 205 000340 0200 R200, AND R37 /IF BLOCK IS AT A 37 MAKE 206 /NEXT OPERATION DO A CHECK HEADER 207 000341 7640 SZA CLA 208 000342 7130 STL RAR /SET AC TO "ALL" FLAG 209 000343 2201 ISZ RKEBLK /BUMP BLOCK NUMBER 210 000344 5307 JMP RELOOP /TRANSFER SOME MORE 211 000345 5306 JMP OVRFLO /PAST BLOCK 7777-SET EXTENDED BIT 212 213 000346 0375 RERROR, AND R1002 /AC WAS RAL'D AND WE WANT TO SEE IF 214 /DRIVE SEEK FAILED OR CYLINDER ADDR ERROR 215 000347 7650 SNA CLA 216 000350 5362 JMP RKTST3 /WE TRY 3 TIMES 217 /WE HAVE TO RECALIBRATE DRIVE 218 000351 6742 DCLR /CLEAR STAUS REGISTER 219 000352 7126 STL RTL /AC=2 220 000353 6742 DCLR /RECALIBRATE DRIVE 221 000354 6741 DSKP /WAIT ON FLAG 222 000355 5354 JMP .-1 223 000356 6742 DCLR /CLEAR STATUS REGISTER 224 000357 6745 DRST /WAIT FOR STATUS TO CLEAR 225 000360 7640 SZA CLA 226 000361 5357 JMP .-2 /STILL DOING RECALIBRATE 227 000362 7344 RKTST3, CLA CLL CMA RAL /AC=-2 228 000363 2217 ISZ RERRCT /SKIP IF WE TRIED 3 TIMES 229 000364 5252 JMP RETRY /TRY AGAIN 230 000365 5370 JMP .+3 /ERROR EXIT 231 000366 2203 RKDONE, ISZ RKEARG /NORMAL RETURN 232 000367 7600 R7600, 7600 /GROUP 2 CLA 233 000370 2203 ISZ RKEARG /IF JUMPED TO HERE- ERROR RETURN 234 000371 7402 REXIT, HLT /RESET USERS INST FIELD- WE NEVER TOUCHED DF 235 000372 5603 JMP I RKEARG /EXIT 236 237 000373 6260 R6260, 6260 /SIZE OF ONE LOGICAL DISK 238 000374 4070 R4070, 4070 /USED TO GET READ/WRITE AND DF BITS 239 000375 1002 R1002, 1002 / " TO CHECK FOR RECALIBRATE ERRORS 240 000376 0006 R6, 6 /TO PEEL OUT UNIT NUMBER 241 000377 7575 R7575, 7575 /- ^C CONSTANT 242 243 244 $$$$ CHKHED 0202 CTRLC 0207 DCLR 6742 DLAG 6743 DLCA 6744 DLDC 6746 DRST 6745 DSKP 6741 GETENT 0245 OVRFLO 0306 PAGCNT 0205 R1002 0375 R200 0340 R37 0200 R400 0230 R4070 0374 R6 0376 R6260 0373 R7575 0377 R7600 0367 RCIF 0215 RELOOP 0307 RERRCT 0217 RERROR 0346 RETRY 0252 REXIT 0371 RKA0 0220 RKA1 0222 unreferenced RKA2 0224 unreferenced RKA3 0226 unreferenced RKB0 0221 unreferenced RKB1 0223 unreferenced RKB2 0225 unreferenced RKB3 0227 unreferenced RKDONE 0366 RKEARG 0203 RKEBLK 0201 RKECMD 0251 RKEISZ 0206 RKENO 0204 RKETAD 0314 RKTST3 0362 RWAIT 0323 VERSIO 0001