.TITLE SKERR - SEEK ERROR ; ; .SKERR - FIND ERROR IN EDF ; ;INPUTS: ; R0 FDB OF EDF (MUST BE OPENFOR BLOCK I/O WITH BUFFER, LENGTH, ; STATUS BLOCK, EVENT FLAG, LUN, AND BLOCK MODE I/O SPECIFIED) ; R1 ERROR NUMBER (NEGATIVE) ; ;OUTPUTS: ; R0 PRESERVED ; R1 PRESERVED ; R2 ADDRESS OF ERROR RECORD WITHIN BUFFER ; CARRY SET IFF NO ERROR MESSAGE CORRESPONDING TO ERROR ; NUMBER IN R1 ; ; .MCALL ENTER,LEAVE,READ$,WAIT$ ; ; .SKERR::ENTER R1 COM R1 ;GET POSITIVE ERROR NUMBER - 1 BMI 1$ ;NO SUCH ERROR (COM SETS CARRY) CLR R2 ;SET UP TO SPLIT INTO BLOCK #/DISPLACEMENT ASR R1 ROR R2 ASR R1 ROR R2 ASR R1 ;R1 NOW CONTAINS BLOCK NUMBER INC R1 ;RELOCATE INTO 1 ORIGIN INDEXING ROR R2 ;R2 NOW CONTAINS RECORD # WITHIN BLOCK ;SHIFTED 13 PLACES SWAB R2 ;NOW SHIFTED 5 PLACES ROL R2 ;AND FINALLY 6 BITS, WHICH IS DISPLACEMENT ADD F.BKDS+2(R0),R2 ;ADD IN BUFFER ADDRESS CLR F.BKVB(R0) ;INSERT BLOCK NUMBER INTO FDB MOV R1,F.BKVB+2(R0) READ$ R0 ;READ BLOCK BCS 1$ ;REPORT ANY ERROR BACK TO CALLER WAIT$ R0 ;WAIT FOR DATA BCS 1$ ;NOT HANDLING ANY ERRORS TST (R2) ;NOW SEE IF SLOT FILLED IN BNE 1$ ;YES, RETURN (TST CLEARS CARRY) SEC ;TROUBLE 1$: LEAVE RETURN ; ; .END