COMPRBB 
COMMON
          CTEXT  COMPRBB - READ BINARY BUFFER.
 RBB      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPRBB
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 RBB      SPACE  4
***       RBB - READ BINARY BUFFER. 
*         P. D. HAAS.        75/01/13.
*         P. T. BARNETT.     79/11/01.
 RBB      SPACE  4
***              RBB READS A SPECIFIED NUMBER OF WORDS FROM A 
*         CIRCULAR BUFFER TO A PP BUFFER.  THE CIRCULAR BUFFER
*         MUST CONTAIN THE NUMBER OF WORDS SPECIFIED (COMPCOB CAN 
*         BE USED TO RETURN CIRCULAR BUFFER WORD COUNT).
* 
*         ENTRY  (A) = PP BUFFER ADDRESS. 
*                (T3) = CM WORD COUNT.
*                (FT - FT+1) = FIRST ADDRESS OF CM BUFFER.
*                (OT - OT+1) = NEXT OUTPUT ADDRESS. 
*                (LM - LM+1) = LIMIT ADDRESS OF CM BUFFER.
* 
*         EXIT   (OT - OT+1) UPDATED. 
* 
*         USES   T1.
  
 RBB3     LDD    OT          READ WORDS 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    OT+1 
          CRM    *,T1 
 RBBA     EQU    *-1
          LDD    T1          ADVANCE *OUT*
          RAD    OT+1 
          SHN    -14
          RAD    OT 
          SBD    LM 
          SHN    14 
          LMD    OT+1 
          SBD    LM+1 
          ZJN    RBB2        IF LIMIT REACHED 
  
 RBB      SUBR               ENTRY/EXIT 
          STM    RBBA        SET READ ADDRESS 
          LDD    LM          LIMIT - OUT
          SBD    OT 
          SHN    14 
          LMD    LM+1 
          SBD    OT+1 
          STD    T1          SAVE WORD COUNT
          SBD    T3 
          MJN    RBB3        IF BUFFER WRAP 
          LDD    T3          SET WORD COUNT 
 RBB1     STD    T1 
          UJN    RBB3        ENTER READ LOOP
  
 RBB2     LDD    FT          SET OUT = FIRST
          STD    OT 
          LDD    FT+1 
          STD    OT+1 
          LDD    T1          WORDS READ BEFORE LIMIT REACHED
          SHN    2           CALCULATE BYTES READ 
          ADD    T1 
          RAM    RBBA        ADJUST BUFFER ADDRESS
          LDD    T3 
          SBD    T1 
          ZJN    RBBX        IF TRANSFER COMPLETE 
          UJN    RBB1        LOOP 
 RBB      SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 RBB      EQU    /COMPRBB/RBB 
 QUAL$    ENDIF 
          ENDX
