*DECK GPWRDRM 
          IDENT     GPWR$RM 
          COMMENT   CRM SQ SBF GET/PUT ROUTINE
          TITLE     GPWR$RM - SBF GET/PUT 
          LIST      C,F,X 
          SST 
          B1=1
* CALL /PASSLOC/
*CALL /PASSLOC/ 
          TITLE     GPWR$RM - CHECK 
 CHEK$RM  ENTRY$    ,,NOLOAD
          BX2       0              CHEK FLAG
 CHKR$RM  SPACE     4,8 
 CHKR$RM  ENTRY$
          SET.RM    RTJ,X2         STASH RETURN/ZERO
          NE.RM     FOC,#OPE#,=XRM$FOC,B2 ERR IF FNF ON OR OC NOT OPE 
          LGO.RM    PL.CHEK,FO=SQ 
          TITLE     GPWR$RM - SBF GET/PUT 
*#
*1CD  GTWR$RM AND PTWR$RM 
*0D   PURPOSE 
*0        DO GET/PUT USING WSA AS THE BUFFER. 
*0D   REGISTERS 
*0        A0        FIT ADDRESS 
*         X2        WSA - PUT IT IN FIRST 
*         X3        NUMBER OF WORDS TO READ/WRITE 
*         B6        USER RETURN ADDRESS 
*         B1=1
*0D   RESTRICTIONS
*0        APPLIES ONLY TO FO=SQ.
*         REQUIRES OC=OPE (FILE OPEN), FNF=NO (NO FATAL ERROR), 
*         CKS=YES (CHECK/CHECKR DONE), PD APPROPRIATE.
*0D   ACTION
*#
*#
*0        EACH ENTRY CHECKS TO SEE IF IT REALLY SHOULD USE GET$SQ/PUT$SQ
*         IF WSI/RSI IS OFF OR CNF IS ON. 
*#
 GTWR$RM  TITLE     GPWR$RM - GTWR$RM 
 GTWR$RM  ENTRY$
          F.RM      CNF,1 
          F.RM      RSI,4 
          BX7       -X4+X1
          SA4       GT
          SB5       PD.I           FOR RM$PD
          PL        X7,GP1         IF SBF FILE
          IX7       X3+X3 
          LX3       3 
          IX3       X3+X7          *10
          EQ        =XGET$RM       IF CNF OR NOT RSI
  
 GT       VFD       1/0,23/,18/20B,18/#GE#  GET, READSKP, LOP 
 PTWR$RM  TITLE     GPWR$RM - PTWR$RM 
 PTWR$RM  ENTRY$
          F.RM      CNF,1 
          F.RM      WSI,4 
          BX7       -X4+X1
          SB5       PD.O           FOR RM$PD
          PL        X7,PTCK        IF SBF FILE
          IX7       X3+X3 
          LX3       3 
          IX3       X3+X7          *10
          EQ        =XPUT$RM       IF CNF OR NOT WSI
  
 PT       VFD       1/1,23/,18/24B,18/#PU#  PUT, WRITER, LOP
  
 FWRD.RM  MICRO     1,, 999 
*#
*0        FOR PTWR, CHECK FET ERROR CODE (FOR ERR 721). 
*#
 PTCK     SA1       A0
          SX7       34000B
          BX0       X7*X1 
          SX6       721B
          NZ        X0,=XERR$RM    FET ERROR
          SA4       PT
*#
*0        CHECK OC,PD,FNF.
*         CHECK IF PREVIOUS OPERATION WAS CHECKS-ED.
*#
 GP1      RJ        =XRM$PD 
          SX6       111B
          OFF.RM    CKS,=XERR$RM
*#
*0D       FIRST SET BIT 1 OF CS TO THE OPPOSITE OF CM TO ACCOUNT
*         FOR PARITY CHANGES BY THE USER....
* 
*0D       FOR GETWR, POINT FET AT WSA AND ISSUE A CIO READSKP TO GET
*         THE RECORD
*#
          F.RM      CM,X6 
          SA1       A0
          SX7       B1+B1          2B 
          LX6       1 
          BX7       X1+X7          TURN ON
          BX7       X7-X6          TURN OFF IFF CM ON 
          SA7       A0
*#
*0        IF PTWR, CHECK LENGTH IF RT=F.  (ERROR 142/143) 
*         POINT FET AT RSA AND ISSUE WRITER TO PUT THE RECORD.
*#
          SB3       B0
          PL        X4,NOTF        IF GETWR 
          SB3       X3
          F.RM      RT,B2,-#FT# 
          NZ        B2,NOTF 
          F.RM      FL,X6 
          LX1       X3,B1          *2 
          IX7       X6-X1 
          LX1       2              *8 
          IX7       X7-X1 
          ZR        X7,NOTF        IF RL=FL 
          SX6       142B
          PL        X7,=XERR$RM 
          SX6       143B
          EQ        =XERR$RM
 NOTF     BSS 
 .OS      IFC       EQ,/"OS.NAME"/KRONOS/    AVOID NOS WRITER PITFALL 
          SB2       512            MLRS FOR S-TAPE
          LE        B3,B2,SAFE     IF RL @ MLRS ON S-TAPE NO DANGER 
          F.RM      SOL,5 
          F.RM      LBT,1 
          BX1       -X1*X5         SOL BUT NOT LBT
          SX6       720B
          MI        X1,=XERR$RM    IF DEVICE CAPACITY EXCEEDED
 SAFE     BSS       0 
 .OS      ENDIF 
          SET.RM    FIRST,X2,,,712
          IX6       X2+X3 
          SET.RM    OUT,X2,7,1
          SET.RM    IN,B3+X2,7,1
          SET.RM    LIMIT,B1+X6,7,1 
          SX6       X4
          SET.RM    LOP,X6,7,1
          AX4       18
          SX6       X4
          SYSY      X6
          SET.RM    CKS,0 
          JP        B6             RETURN 
  
          END 
