.TITLE DC DRIVER .MCALL .REGDEF,.INTEN .REGDEF PIC=1 ;PIC CODE RD=105 ;READ OPERATON FOR RCCS WT=103 ;WRITE OPERATION FOR RCCS RCDA=177442 ;DISK ADD. REG RCCS=177446 ;DISK CS RED RCWC=177450 ;WORD COUNT REG RCCA=177452 ;BUFFER ADD REG VEC=210 ;INTERUPT VECTOR ADD PR5=240 ;PRIORITY 5 PR7=340 ;PRIORITY 7 HDERR=1 ;HARD ERROR MONLOW=54 OFFSET=270 .CSECT RC11 .WORD VEC ;INTERUPT VECTOR .WORD RCINT-. ;OFFSET TO INTERUP SERVICE ROUTINE .WORD PR7 ;INITAIL INTERUPT PRIORITY RCLQE: .WORD 0 RCCQE: .WORD 0 RC: MOV RCCQE,R3 ;ENTRY POINT MOV #WT,OP ;DEFALT OPERATION IS WRITE MOV 6(R3),R4 ;MOVE WC TO R4 BLT WRITE ;OP IS A WRITE BEQ SEEK ;OP IS A SEEK NEG R4 ;OP IS A READ-COMLIMNT WORD COUNT MOV #RD,OP ;SET OPERATION TO READ WRITE: MOV R4,@#RCWC ;LOAD WORD COUNT REG MOV (R3),R4 ;MOVE DISK ADDRESS TO R4 ASL R4 ;DC DISK ADDRESSES IN 32 WROD BLOCKS-MULT BY 2 ASL R4 ; MULT BY 2-NOW 128 WORD BLOCKS ASL R4 ; MULT BY 2-NOW 256 WORD BLOCK CORRESPONDENCE MOV R4,@#RCDA ;LOAD DISK ADDRESS REG. MOV 4(R3),@#RCCA ;LOAD BUFFER ADDRESS MOV OP,@#RCCS ;START TRANSFER OPERATION RTS PC SEEK: MOV R4,-(SP) ;ENTER SEEK ROUTINE MOV R5,-(SP) JSR PC,OK MOV (SP)+,R5 MOV (SP)+,R4 RTS PC BR ABORT ;ABORT ROUTINE BRANCH RCINT: .INTEN PR5,PIC ;RESET INTERUP PRIORITY TO 5 BIC #100,@#RCCS ;DISABLE INTERUPT TST @#RCCS ;ANY ERRORS OCCOURED BGE OK ;BRANCH NO ERRORS OCCOURED MOV RCCQE,R5 BIS #HDERR,-2(R5) ;SET HDERR BIT IN CSW OK: MOV PC,R4 ;SET UP EXIT TO COMPLETION ROUTINE ADD #RCCQE-.,R4 MOV @#MONLOW,R5 JMP @OFFSET(R5) ABORT: MOV #400,@#RCCS RTS PC OP: .WORD 0 .WORD 0 .END @```y