*COMDECK /B2R1DSQ/
 SKBL$SQ  TITLE     BK2RD1
*#
*0        BK2RD1. 
*         BACKSPACE 2 PRU-S AND READ 1 PRU. 
*         CALLED BY THE BACKSPACE RT ROUTINES WHEN THE BUFFER IS
*         EMPTY DURING THEIR BACKWARD SEARCH TO FIND THE BEGINNING
*         OF A RECORD.
* 
*         IF B2 IS NEGATIVE THEN REPODSQ MUST BE CALLED TO ADJUST 
*         FOR READ AHEAD
* 
*         MUST PRESERVE X4,X0 
*#
 BK2RD1   BSS       0 
          NG        B2,=XREPO$SQ   IF REPO NOT YET CALLED 
          SX3       B1+B1 
          NZ        B2,DO2         IF REPO BACKED OVER1 
          SX3       B1             ELSE, ONLY BACK UP 1 
          SET.RM    RSC,B0         RESET RSC AT 1ST REVERSE READ
 DO2      BSS       0 
          SB2       B1             SET STATUS FOR 2 
          SYSY      44B,R,3        BACKSPACE 2 PRU-S
          F.RM      FIRST,X2       MAKE BUFFER EMPTY SO READ WILL READ
          SET.RM    IN,X2 
          SET.RM    OUT,X2
          SET.RM    PIN,X2
          BOI.RM    BK2.JPB6
          SB4       B0             INITIALIZE FP RETURN 
          F.RM      SOL            IF S/L ISSUE 260,ELSE ISSUE 10 
          SX2       250B
          AX1       59             ALL 1-S IF S/L, ELSE 0 
          BX2       X1*X2          250 IF S/L, ELSE 0 
          SX2       X2+10B         260 IF S/L, ELSE 10
          SYSY      X2,R
          SA2       A0             GET FET C/S
          SX7       30B            MASK 
          BX2       X7*X2 
          SX2       X2-20B
*#
*         RT"W.  IF C/S = 1X, A FULL PRU WAS READ SO JUST RETURN. 
*#
          NG        X2,BK2.XIT
          NZ        X2,BK2.3X      JUMP IF C/S=3X 
*#
*         IF C/S = 2X AND THE DEVICE IS AN S/L TAPE, A NORMAL READ
*         WAS DONE SO JUST RETURN ALSO. 
*#
          OFF.RM    SOL,BK2.SC2X   JUMP FOR EOR READ ON SCOPE DEVICE
          F.RM      FIRST,2        GET ADR OF NEXT SLCW 
          SA1       X2
          SX3       X1
          AX1       24
          SX6       X1-55 
          NG        X6,BK2.UBC     NOT GREATER THAN 54, OK
          SX6       B0-B1 
          IX3       X3+X6 
          F.RM      IN
          IX7       X1+X6 
          SET.RM    IN,X7 
 BK2.UBC  BSS       0 
          SX2       X2+B1          SET OVER SOL CONTROL WORD
          SET.RM    PIN,X2         SAVE IN PIN FOR RTJ
          IX6       X2+X3 
          SET.RM    BLP,X6
          EQ        BK2.XIT 
*#
*         THE C/S=2X AND IN=LIMIT- 1 WE READ A FULL PRU OF DATA AND 
*         A ZERO-LENGTH PRU AFTER IT SO BACK OVER THE ZERO-LENGTH 
*         PRU AND RETURN TO PROCESS THE DATA WITH B4=0. 
*         IF C/S=2X AND IN"LIMIT-1 WE BACKED INTO AN EOS. SET FILE
*         POSITION AND RETURN.
*#
 BK2.SC2X BSS       0 
          F.RM      IN,2
          F.RM      LIMIT,X3,-1 
          IX7       X2-X3 
          NZ        X7,BK2.PAE     IN<>LIMIT-1, HIT EOS 
          SYSY      44B,R          BACK OVER ZERO-LENGTH PRU
          SB4       B0
          EQ        BK2.XIT 
 BK2.PAE  BSS       0 
          OFF.RM    PAE,BK2.XIT    EOS ALREADY TAKEN
          SB4       #EOS# 
          EQ        BK2.XIT 
*#
*         IF C/S = 3X, AN END-OF-PARTITION WAS ENCOUNTERED. BACK OVER 
*         THE EOP. SET FILE POSITION. GO TO BK2.DX. 
*#
 BK2.3X   BSS       0 
          SB4       #EOP# 
 BK2.XIT  BSS       0                                                   004040
************************************************************************
*** THIS IS THE END OF COMMON CODE**************************************
************************************************************************
* END /B2B1DSQ/ 
