*COMDECK /WARDSQ/ 
          ENTRY     WAR$SQ
          COMMENT   CRM SQ PUT AFTER GET ROUTINE
          LIST      F,X,C 
          SST 
          B1=1
 WAR$SQ   TITLE     PUT AFTER GET/SKIP
*#
*1CD  WAR$SQ  CAPSULE 
*0D   PURPOSE 
*0        THIS CAPSULE IS CALLED WHEN PUT DETECTS THAT LOP IS GET/SKIPFL
*         /SKIPBL.  THE PURPOSE OF THE CODE IS TO REPOSITION THE F
*         PHYSICALLY TO THE START OF THE CURRENT PRU AND SET THE
*          LOGICAL POINTERS SO PUT WILL WRITE THE NEXT RECORD 
*         IMMEDIATELY AFTER THE LAST RECORD READ BY GET/SKIPFL OR IN
*         PLACE OF THE LAST RECORD SKIPPED BY SKIPBL. 
*0D   CALL
*0        PROGRAM SHOULD BE CALLED BY - 
*                   SB6   RETURN ADDRESS
*                   EQ    =XWAR$SQ
*0D   PARAMETERS
*0        NO PARAMETERS ARE EXPECTED OTHER THAN THE USUAL - 
*                   A0=FIT
*                   B1=1
*0D   ACTION
*0        IF FP=0 ERROR EXIT IS TAKEN - PUT CANNOT BE DONE MID-RECORD 
*         IF FP"EOR EXIT - DATA EXIT MUST HAVE BEEN TAKEN BY PREVIOUS 
*                          OPERATION AND POINTERS ARE OK
*         IF LOP=SB(SKIPBL) - SET POINTERS FOR PUT, POSITION IS 
*                             CORRECT BECAUSE BACKSPACE DID REPOSITIONIN
*         IF LOP=GET/SKIPFL - THE COMMON DECK /REPODSQ/IS USED TO 
*                             ADJUST PHYSICAL POSITION TO START OF
*                             CURRENT PRU/BLOCK,READ BLOCK INTO FIRST 
*                             AND RETURN LOGICAL OFFSET IN B2 
*         RESET POINTERS FOR PUT
*0D   REGESTERS 
*0        THIS ROUTINE USES ALL REGISTERS EXCEPT
*                   B7
*#
 WAR$SQ   CAP.RM    1 
          RCL.RM    A0,AUTO        WAIT FOR IO QUIET
          F.RM      FP
          SX6       407B
          SB2       B0             CLEAR OFFSET 
          ZR        X1,=XERR$RM    IF FP=0, MID RECORD, ERROR 
          SX1       X1-#EOR#
          NZ        X1,SETPRS1     IF FP"EOR, POS OK, GO SET POINTERS 
* CALL /REPODSQ/               /REPODSQ/*COMDECK /REPODSQ/
*CALL /REPODSQ/ 
          ZR        B2,SETPRS      NOREAD, NO SKIP
          SYSY      44B,R          BACK OVER PRU/BLOCK JUST READ
 SETPRS   BSS       0 
          F.RM      FIRST,4 
          SX2       X4+B2          FIRST PLUS LOGICAL OFFSET
          SET.RM    PIN,X2         GOES TO PIN
          SET.RM    IN,X4          SET IN BACK TO FIRST 
          SA7       A7+B1          SET OUT POINTER
          F.RM      BFS 
          IX2       X4+X1 
          SET.RM    LIMIT,X2       RESET LIMIT ALTERED BY ADJPTRS 
          JP        B6
 SETPRS1  BSS       0 
          F.RM      LOP,3,X2,-#SB#  IF LOP = SKIPBL 
          F.RM      RT,X3,-#WT#     AND RT=W
          BX1       X3+X2 
          ZR        X1,REPO$SQ     REPOSITION FILE
          F.RM      SOL,X2         PICK UP SOL
          SX1       10
          IX2       X1*X2          *10
          F.RM      MBL,3 
          IX2       X3+X2          ADD MBL
          SET.RM    BL,X2          INITIALIZE BL
          EQ        SETPRS
*#
*0D       ADJPTRS.
*         ADJUST CIRCULAR BUFFER POINTERS TO 1 PRU FOR SYSTEM DEVICES 
*         AND TO 1 BLOCK FOR S/L DEVICES BY ADDING PRUSIZ+1 OR MLRS+2 
*         TO FIRST AND SETTING LIMIT TO THAT VALUE.  SET IN=OUT=FIRST.
*#
*         THIS ROUTINE IS CALLED BY CODE IN COMMON DECK /REPODSQ/ 
*         CODE MUST PRESERVE B2 
 ADJPTRS  BSSZ      1 
          F.RM      PRUSIZ,3
          OFF.RM    SOL,ADJ.1ST 
          F.RM      MLRS,1,X3,+B1 
 ADJ.1ST  BSS       0 
          SX3       X3+B1          ADJUST FOR EMPTY WORD
          F.RM      FIRST,4 
          SET.RM    IN,X4 
          SET.RM    OUT,X4
          IX3       X4+X3          ADD SIZE TO FIRST
          SET.RM    LIMIT,X3
          EQ        ADJPTRS        RETURN 
