/RK8E SYSTEM HANDLER FOR OS/8 BUILD /DEC-S8-URK8A-A-LA HJ /COPYRIGHT 1973 /DIGITAL EQUIPMENT CORPORATION /MAYNARD, MASSACHUSETTS 01754 /JANUARY 4, 1973 /ONE RK8E IS TREATED AS TWO LOGICAL DISKS /EACH OF 3248 OS/8 BLOCKS. /THIS HANDLER CONTAINS ENTRY POINTS FOR THE SYSTEM DEVICE /AND RKA1. DCLR=6742 DLAG=6743 DLDC=6746 DRST=6745 DSKP=6741 DLCA=6744 RKEBLK=7750 /12 BITS OF BLOCK NUMBER SERRCT=7751 /HOLDS RETRY COUNT PAGCNT=7752 /PAGE COUNT RKECMD=7753 /BASE OF DLDC COMMAND CHKHED=7754 /CHECK HEADER FLAG SOFSET=7747 /OS/8 FUDGE LOCATION RK8E=3640 /OVER RK8 SYSTEM HANDLER *RK8E 6 4040 -3353 NOPUNCH *7607 ENPUNCH SHNDLR, 0 /SYSTEM HANDLER ENTRY POINT CLA CLL /GUARD AGAINST RANDOM AC TAD SHNDLR DCA SHNDL1 /SETUP COMMON EXIT AND PARM ADDR'S JMP SHNDC /JUMP TO COMMON CODE /VARIOUS CONSTANTS TO PAD E.P. FOR RKA1 TO 7621 S6260, 6260 /SIZE OF ONE LOGICAL DISK S4070, 4070 /USED TO GET READ/WRITE AND DF BITS S3700, 3700 / " TO GET PAGE COUNT SCIF, CIF 0 / " TO RESTORE USERS FIELD S1002, 1002 / " TO CHECK FOR RECALIBRATE ERRORS IFNZRO .-7621 SHNDL1, 0 /2ND E.P. FOR RKB1 AND TEMPORARY CLA /GUARD AGAINST NON-ZERO AC TAD S6260 /RKB1 IS SECOND HALF OF PACK SHNDC, DCA SHNDLR /SET BLOCK DISPLACEMENT ACCORDING TO SYS OR RKB0 CLA CLL CMA RTL /AC=-3 DCA SERRCT /RETRY COUNT RDF TAD SCIF DCA SFIELD /RESET USER INST FIELD FOR EXIT RETRY, TAD SHNDL1 /AC=-2 IF ERROR ENRTY DCA SHNDL1 TAD I SHNDL1 /GET ARG1 AND S4070 /GET R/W AND DF BITS DCA RKECMD /BASE COMMAND TO RK8E(DLDC) TAD I SHNDL1 /GET ARG1 AGAIN ISZ SHNDL1 /POINT TO ARG2 AND S3700 DCA PAGCNT /SAVE PAGE COUNT TAD I SHNDL1 /GET ARG2 ISZ SHNDL1 /POINT TO ARG3 DLCA /LOAD CURRENT ADDRESS REGISTER TAD I SHNDL1 /GET ARG3 CLL TAD SHNDLR /SYS OR RKB0 DISPLACMENT DCA RKEBLK /LOW PART OF RK8E BLOCK NUMBER SZL /STILL OFF IF BELOW BLOCK 10000 OVRFLO, ISZ RKECMD /TURN ON EXTENDED BIT IF OVERFLOWED RELOOP, DCA CHKHED /SET CHECK HEADER FLAG TO EITHER /0 OR 4000(WHICH GETS RTR'D BEFORE USED) /AND CAUSES EITHER A "DATA" OR "ALL" /TRANSFER DCLR /CLEAR STATUS REGISTER TAD PAGCNT /TEST TO SEE IF ONLY 1 PAGE WANTED AND S7600 SNA CLA TAD S400 /100 WAS IN PAGCNT TAD CHKHED /ADD IN CHECK HEADER FLAG CLL RTR /SHIFT TO CORRECT BITS TAD RKECMD /ADD IN BASE COMMAND DLDC /LOAD COMMAND REGISTER TAD PAGCNT /CHECK TO SEE IF DONE SPA SNA JMP RKDONE /NO MORE TO DO, 0 REQUEST IS CAUGHT HERE TAD S7600 /DEDUCT 2 PAGES FORM TOTAL DCA PAGCNT /SAVE FOR NEXT TIME TAD RKEBLK DLAG /LOAD BLOCK REGISTER AND GO DSKP /WAIT ON FLAG JMP .-1 DRST /READ COMPLETION REGISTER IFNZRO .-7700 SKP /PROTECTION AGAINST JMS I7700 FIELD 0 HLT /HE'S HAD IT CLL RAL /GET RID OF SUCCESS BIT SZA /AND SEE IF ANYTHING LEFT JMP SERROR /AN ERROR TAD RKEBLK CMA AND S37 /IF BLOCK IS AT A 37 MAKE /NEXT OPERATION DO A CHECK HEADER SZA CLA STL RAR /SET AC TO "ALL" FLAG ISZ RKEBLK /BUMP BLOCK NUMBER JMP RELOOP /TRANSFER SOME MOE JMP OVRFLO /PAST BLOCK 7777-SET EXTENDED BIT SERROR, AND S1002 /AC WAS RAL'D AND WE WANT TO SEE IF /DRIVE SEEK FAILED OR CYLINDER ADDR ERROR SNA CLA JMP RKTST3 /WE TRY 3 TIMES /WE HAVE TO RECALIBRATE DRIVE DCLR /CLEAR STAUS REGISTER STL RTL /AC=2 DCLR /RECALIBRATE DRIVE DSKP /WAIT ON FLAG JMP .-1 DCLR /CLEAR STATUS REGISTER DRST /WAIT FOR STATUS TO CLEAR SZA CLA JMP .-2 /STILL DOING RECALIBRATE RKTST3, CLA CLL CMA RAL /AC=-2 ISZ SERRCT /SKIP IF WE TRIED 3 TIMES JMP RETRY /TRY AGAIN JMP .+3 /ERROR EXIT RKDONE, ISZ SHNDL1 /NORMAL RETURN S7600, 7600 /GROUP 2 CLA ISZ SHNDL1 /IF JUMPED TO HERE- ERROR RETURN SFIELD, HLT /RESET USERS INST FIELD- WE NEVER TOUCHED DF JMP I SHNDL1 /EXIT S37, 37 /USED TO CHECK FOR CYLINDER CHANGE S400, 400 / " FOR 128 WORD TRANSFER MODE(RTR'D IN CODE) *RK8E+140 NOPUNC *0 ENPUNC BOOT, TAD I BOOTX1 DCA I BOOTX2 TAD I BOOTX3 CDF 10 DCA I BOOTX4 CDF 0 TAD BOOTX2 SZA CLA JMP BOOT JMP I B7605 BOOTX1, 177 BOOTX2, 7577 BOOTX3, 46 BOOTX4, 7646 B7605, 7604 /BECAUSE AUTO INDEXED ZBLOCK 30-. /DSKP GOES OVER 30 IFNZRO .-30 DSKP JMP .-1 JMP BOOT /THE BOOTSTRAP IS RK8E ONLY /30 6743 /31 5031 /LOAD ADDRESS 30 AND START /FOLLOWING ARE VARIOUS PATCHES TO BUILD TO MAKE /IT WORK PROPERLY WITH RK8E HANDLER *7336 7005 /MAKE RK8 - RK8E/ WAS 7000 *6041 7621 /MAKE RKA1 RESIDENT *6170 21 /TEST FOR 7621 ENTRY POINT *5545 4747 /JMS PUTRES FOR SECOND ENTRY POINT 5756 /JMP I (NOSYS- WAS AT 5545 6030 /POINTER TO PUTRES ROUTINE /THE FOLLOWING FIXES THE BUILD OVERLAY PROBLEM *4053 1750 *4056 2350 5750 *4063 3350 *4065 2350 *5557 4150 *6172 4150 *4150 0 4777 6240 5235 5256 $$$$