1 /RK8E SYSTEM HANDLER FOR OS/8 BUILD 2 3 /DEC-S8-URK8A-A-LA HJ 4 5 /COPYRIGHT 1973 6 7 /DIGITAL EQUIPMENT CORPORATION 8 9 /MAYNARD, MASSACHUSETTS 01754 10 11 /JANUARY 4, 1973 12 13 /ONE RK8E IS TREATED AS TWO LOGICAL DISKS 14 /EACH OF 3248 OS/8 BLOCKS. 15 16 /THIS HANDLER CONTAINS ENTRY POINTS FOR THE SYSTEM DEVICE 17 /AND RKA1. 18 19 DCLR=6742 20 DLAG=6743 21 DLDC=6746 22 DRST=6745 23 DSKP=6741 24 DLCA=6744 25 26 RKEBLK=7750 /12 BITS OF BLOCK NUMBER 27 SERRCT=7751 /HOLDS RETRY COUNT 28 PAGCNT=7752 /PAGE COUNT 29 RKECMD=7753 /BASE OF DLDC COMMAND 30 CHKHED=7754 /CHECK HEADER FLAG 31 SOFSET=7747 /OS/8 FUDGE LOCATION 32 33 RK8E=3640 /OVER RK8 SYSTEM HANDLER 34 *RK8E 35 003640 0006 6 36 003641 4040 4040 37 003642 4425 -3353 38 39 NOPUNCH 40 *7607 41 ENPUNCH 42 43 007607 0000 SHNDLR, 0 /SYSTEM HANDLER ENTRY POINT 44 007610 7300 CLA CLL /GUARD AGAINST RANDOM AC 45 007611 1207 TAD SHNDLR 46 007612 3221 DCA SHNDL1 /SETUP COMMON EXIT AND PARM ADDR'S 47 007613 5224 JMP SHNDC /JUMP TO COMMON CODE 48 49 /VARIOUS CONSTANTS TO PAD E.P. FOR RKA1 TO 7621 50 007614 6260 S6260, 6260 /SIZE OF ONE LOGICAL DISK 51 007615 4070 S4070, 4070 /USED TO GET READ/WRITE AND DF BITS 52 007616 3700 S3700, 3700 / " TO GET PAGE COUNT 53 007617 6202 SCIF, CIF 0 / " TO RESTORE USERS FIELD 54 007620 1002 S1002, 1002 / " TO CHECK FOR RECALIBRATE ERRORS 55 56 IFNZRO .-7621 57 58 007621 0000 SHNDL1, 0 /2ND E.P. FOR RKB1 AND TEMPORARY 59 007622 7200 CLA /GUARD AGAINST NON-ZERO AC 60 007623 1214 TAD S6260 /RKB1 IS SECOND HALF OF PACK 61 007624 3207 SHNDC, DCA SHNDLR /SET BLOCK DISPLACEMENT ACCORDING TO SYS OR RKB0 62 007625 7346 CLA CLL CMA RTL /AC=-3 63 007626 3351 DCA SERRCT /RETRY COUNT 64 007627 6214 RDF 65 007630 1217 TAD SCIF 66 007631 3340 DCA SFIELD /RESET USER INST FIELD FOR EXIT 67 007632 1221 RETRY, TAD SHNDL1 /AC=-2 IF ERROR ENRTY 68 007633 3221 DCA SHNDL1 69 007634 1621 TAD I SHNDL1 /GET ARG1 70 007635 0215 AND S4070 /GET R/W AND DF BITS 71 007636 3353 DCA RKECMD /BASE COMMAND TO RK8E(DLDC) 72 007637 1621 TAD I SHNDL1 /GET ARG1 AGAIN 73 007640 2221 ISZ SHNDL1 /POINT TO ARG2 74 007641 0216 AND S3700 75 007642 3352 DCA PAGCNT /SAVE PAGE COUNT 76 007643 1621 TAD I SHNDL1 /GET ARG2 77 007644 2221 ISZ SHNDL1 /POINT TO ARG3 78 007645 6744 DLCA /LOAD CURRENT ADDRESS REGISTER 79 80 007646 1621 TAD I SHNDL1 /GET ARG3 81 007647 7100 CLL 82 007650 1207 TAD SHNDLR /SYS OR RKB0 DISPLACMENT 83 007651 3350 DCA RKEBLK /LOW PART OF RK8E BLOCK NUMBER 84 007652 7430 SZL /STILL OFF IF BELOW BLOCK 10000 85 007653 2353 OVRFLO, ISZ RKECMD /TURN ON EXTENDED BIT IF OVERFLOWED 86 007654 3354 RELOOP, DCA CHKHED /SET CHECK HEADER FLAG TO EITHER 87 /0 OR 4000(WHICH GETS RTR'D BEFORE USED) 88 /AND CAUSES EITHER A "DATA" OR "ALL" 89 /TRANSFER 90 007655 6742 DCLR /CLEAR STATUS REGISTER 91 007656 1352 TAD PAGCNT /TEST TO SEE IF ONLY 1 PAGE WANTED 92 007657 0336 AND S7600 93 007660 7650 SNA CLA 94 007661 1343 TAD S400 /100 WAS IN PAGCNT 95 007662 1354 TAD CHKHED /ADD IN CHECK HEADER FLAG 96 007663 7112 CLL RTR /SHIFT TO CORRECT BITS 97 007664 1353 TAD RKECMD /ADD IN BASE COMMAND 98 007665 6746 DLDC /LOAD COMMAND REGISTER 99 007666 1352 TAD PAGCNT /CHECK TO SEE IF DONE 100 007667 7550 SPA SNA 101 007670 5335 JMP RKDONE /NO MORE TO DO, 0 REQUEST IS CAUGHT HERE 102 007671 1336 TAD S7600 /DEDUCT 2 PAGES FORM TOTAL 103 007672 3352 DCA PAGCNT /SAVE FOR NEXT TIME 104 007673 1350 TAD RKEBLK 105 007674 6743 DLAG /LOAD BLOCK REGISTER AND GO 106 007675 6741 DSKP /WAIT ON FLAG 107 007676 5275 JMP .-1 108 007677 6745 DRST /READ COMPLETION REGISTER 109 110 IFNZRO .-7700 111 112 007700 7410 SKP /PROTECTION AGAINST JMS I7700 FIELD 0 113 007701 7402 HLT /HE'S HAD IT 114 007702 7104 CLL RAL /GET RID OF SUCCESS BIT 115 007703 7440 SZA /AND SEE IF ANYTHING LEFT 116 007704 5315 JMP SERROR /AN ERROR 117 007705 1350 TAD RKEBLK 118 007706 7040 CMA 119 007707 0342 AND S37 /IF BLOCK IS AT A 37 MAKE 120 /NEXT OPERATION DO A CHECK HEADER 121 007710 7640 SZA CLA 122 007711 7130 STL RAR /SET AC TO "ALL" FLAG 123 007712 2350 ISZ RKEBLK /BUMP BLOCK NUMBER 124 007713 5254 JMP RELOOP /TRANSFER SOME MOE 125 007714 5253 JMP OVRFLO /PAST BLOCK 7777-SET EXTENDED BIT 126 127 007715 0220 SERROR, AND S1002 /AC WAS RAL'D AND WE WANT TO SEE IF 128 /DRIVE SEEK FAILED OR CYLINDER ADDR ERROR 129 007716 7650 SNA CLA 130 007717 5331 JMP RKTST3 /WE TRY 3 TIMES 131 /WE HAVE TO RECALIBRATE DRIVE 132 007720 6742 DCLR /CLEAR STAUS REGISTER 133 007721 7126 STL RTL /AC=2 134 007722 6742 DCLR /RECALIBRATE DRIVE 135 007723 6741 DSKP /WAIT ON FLAG 136 007724 5323 JMP .-1 137 007725 6742 DCLR /CLEAR STATUS REGISTER 138 007726 6745 DRST /WAIT FOR STATUS TO CLEAR 139 007727 7640 SZA CLA 140 007730 5326 JMP .-2 /STILL DOING RECALIBRATE 141 007731 7344 RKTST3, CLA CLL CMA RAL /AC=-2 142 007732 2351 ISZ SERRCT /SKIP IF WE TRIED 3 TIMES 143 007733 5232 JMP RETRY /TRY AGAIN 144 007734 5337 JMP .+3 /ERROR EXIT 145 007735 2221 RKDONE, ISZ SHNDL1 /NORMAL RETURN 146 007736 7600 S7600, 7600 /GROUP 2 CLA 147 007737 2221 ISZ SHNDL1 /IF JUMPED TO HERE- ERROR RETURN 148 007740 7402 SFIELD, HLT /RESET USERS INST FIELD- WE NEVER TOUCHED DF 149 007741 5621 JMP I SHNDL1 /EXIT 150 151 007742 0037 S37, 37 /USED TO CHECK FOR CYLINDER CHANGE 152 007743 0400 S400, 400 / " FOR 128 WORD TRANSFER MODE(RTR'D IN CODE) 153 *RK8E+140 154 NOPUNC 155 *0 156 ENPUNC 157 000000 1412 BOOT, TAD I BOOTX1 158 000001 3413 DCA I BOOTX2 159 000002 1414 TAD I BOOTX3 160 000003 6211 CDF 10 161 000004 3415 DCA I BOOTX4 162 000005 6201 CDF 0 163 000006 1013 TAD BOOTX2 164 000007 7640 SZA CLA 165 000010 5000 JMP BOOT 166 000011 5416 JMP I B7605 167 000012 0177 BOOTX1, 177 168 000013 7577 BOOTX2, 7577 169 000014 0046 BOOTX3, 46 170 000015 7646 BOOTX4, 7646 171 000016 7604 B7605, 7604 /BECAUSE AUTO INDEXED 172 173 000017 0000 ZBLOCK 30-. /DSKP GOES OVER 30 000020 0000 000021 0000 000022 0000 000023 0000 000024 0000 000025 0000 000026 0000 000027 0000 174 IFNZRO .-30 175 176 000030 6741 DSKP 177 000031 5030 JMP .-1 178 000032 5000 JMP BOOT 179 180 /THE BOOTSTRAP IS RK8E ONLY 181 /30 6743 182 /31 5031 183 184 /LOAD ADDRESS 30 AND START 185 186 /FOLLOWING ARE VARIOUS PATCHES TO BUILD TO MAKE 187 /IT WORK PROPERLY WITH RK8E HANDLER 188 189 *7336 190 007336 7005 7005 /MAKE RK8 - RK8E/ WAS 7000 191 *6041 192 006041 7621 7621 /MAKE RKA1 RESIDENT 193 *6170 194 006170 0021 21 /TEST FOR 7621 ENTRY POINT 195 *5545 196 005545 4747 4747 /JMS PUTRES FOR SECOND ENTRY POINT 197 005546 5756 5756 /JMP I (NOSYS- WAS AT 5545 198 005547 6030 6030 /POINTER TO PUTRES ROUTINE 199 200 /THE FOLLOWING FIXES THE BUILD OVERLAY PROBLEM 201 *4053 202 004053 1750 1750 203 *4056 204 004056 2350 2350 205 004057 5750 5750 206 *4063 207 004063 3350 3350 208 *4065 209 004065 2350 2350 210 *5557 211 005557 4150 4150 212 *6172 213 006172 4150 4150 214 *4150 215 004150 0000 0 216 004151 4777 4777 217 004152 6240 6240 218 004153 5235 5235 219 004154 5256 5256 220 221 $$$$ B7605 0016 BOOT 0000 BOOTX1 0012 BOOTX2 0013 BOOTX3 0014 BOOTX4 0015 CHKHED 7754 DCLR 6742 DLAG 6743 DLCA 6744 DLDC 6746 DRST 6745 DSKP 6741 OVRFLO 7653 PAGCNT 7752 RELOOP 7654 RETRY 7632 RK8E 3640 RKDONE 7735 RKEBLK 7750 RKECMD 7753 RKTST3 7731 S1002 7620 S37 7742 S3700 7616 S400 7743 S4070 7615 S6260 7614 S7600 7736 SCIF 7617 SERRCT 7751 SERROR 7715 SFIELD 7740 SHNDC 7624 SHNDL1 7621 SHNDLR 7607 SOFSET 7747 unreferenced