.TITLE UEFBLK .IDENT /V01/ ; ; THIS SUBROUTINE IS CALLED TO SET OR RETRIEVE THE END-OF-FILE BLOCK ; NUMBER OF A SPECIFIED DISK FILE. THE CALLING SEQUENCE IS: ; CALL UEFBLK(LUN,BLOCKS) ; 'LUN' IS THE LOGICAL UNIT NUMBER OF THE FILE TO BE REFERENCED (THIS ; FILE MUST BE OPEN ON THIS LUN BEFORE THE CALL TO UEFBLK) ; 'BLOCKS' IS EITHER AN INPUT OR AN OUTPUT PARAMETER. IF LESS THAN ; ZERO, IT INDICATES THE END-OF-FILE BLOCK COUNT IS TO BE RETRIEVED ; FROM THE FILE AND RETURNED INTO 'BLOCKS'. IF GREATER THAN OR EQUAL TO ; ZERO, IT INDICATES THAT ITS VALUE IS TO BE STORED AS A NEW END-OF-FILE ; BLOCK COUNT. THE DEC CONVENTION OF STORING ONE MORE THAN THE ACTUAL ; NUMBER OF BLOCKS USED IS FOLLOWED HERE, BOTH IN STORAGE AND RETRIEVAL. ; UEFBLK:: MOV @2(R5),R2 ;MOVE 'LUN' TO R2 CALL $FCHNL ;$FCHNL MOVES ADDRESS OF LUB INTO R0 ADD #14,R0 ;OFFSET TO BEGINNING OF FDB TST @4(R5) ;TEST IF 'BL0CKS' IS NEGATIVE BLT GETEFB ;IF SO, RETRIEVE EOF BLOCK COUNT MOV @4(R5),F.EFBK+2(R0) ;ELSE, SET EOF BLOCK COUNT INC F.EFBK+2(R0) ;INCREMENT EOF BLOCK COUNT PER DEC RETURN GETEFB: MOV F.EFBK+2(R0),@4(R5) ;RETRIEVE EOF BLOCK COUNT DEC @4(R5) ;DECREMENT EOF BLOCK COUNT PER DEC RETURN .END