COMCRDC 
COMMON
          CTEXT  COMCRDC - READ CODED LINE, -C- FORMAT. 
 RDC      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCRDC
          BASE   D
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 RDC      SPACE  4
***       RDC - READ CODED LINE, -C- FORMAT.
*         G. R. MANSFIELD.  70/10/09. 
 RDC      SPACE  4
***              RDC READS 1 CODED LINE FROM A CIO BUFFER TO A
*         WORKING BUFFER. 
* 
*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.
*                (B6) = FWA WORKING BUFFER. 
*                (B7) = WORD COUNT OF WORKING BUFFER. 
* 
*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.
*                (X1) = -1 IF EOF DETECTED ON FILE. 
*                (X1) = -2 IF EOI DETECTED ON FILE. 
*                (X1) = (B6) IF EOR WAS DETECTED ON FILE BEFORE 
*                             TRANSFER WAS COMPLETED. 
*                (B6) = ADDRESS PLUS ONE OF LAST WORD TRANSFERRED TO
*                             WORKING BUFFER. 
*                (X2) = ADDRESS OF FET FOR FILE.
*                (X4) = CONTENTS OF LAST DATA WORD TRANSFERRED
*                            BEFORE EOL GUARANTEED, IF TRANSFER 
*                            COMPLETED ((X1)=0).
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                B - 1, 2, 3, 4, 5, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
* 
*         CALLS  LCB=, RDX=.
  
  
 +        EQ     RDC1 
  
 RDC=     PS                 ENTRY/EXIT 
          SA4    *-1         SET RETURN ADDRESS 
  
          IF     -DEF,B1=1,1
          SB1    1
  
          SA1    X2+4        (B5) = LIMIT 
          SA3    X2+B1       (X3) = FIRST 
          SB7    B6+B7       (B7) = LWA+1 WORKING BUFFER
          MX4    -12         (X4) = BYTE MASK 
          SB5    X1 
  
*         INITIALIZE REGISTERS FOR TRANSFER.
  
 RDC1     SA1    A3+B1       (B3) = IN
          SA2    A1+B1       (B4) = OUT 
          SB3    X1 
          SB4    X2 
  
*         TRANSFER DATA FROM CIRCULAR BUFFER TO WORKING BUFFER. 
  
 RDC2     EQ     B4,B3,=XLCB= LOAD CIRCULAR BUFFER IF OUT = IN
          SA1    B4          READ WORD
          BX6    X1 
          SB4    B4+B1       (OUT+1)
          EQ     B4,B5,RDC5  IF (OUT+1) = LIMIT 
          SA6    B6          STORE WORD 
 RDC3     BX7    -X4*X6      CHECK LOWER BYTE 
          SB6    B6+B1       ADVANCE WORKING BUFFER 
          ZR     X7,RDC4     IF END OF LINE ENCOUNTERED 
          NE     B6,B7,RDC2  LOOP TO FILL WORKING BUFFER
          BX7    X4*X6       CLEAR LAST BYTE
          SA7    A6 
 RDC4     BX4    X6          RETURN LAST WORD BEFORE EOL CLEARED
          EQ     =XRDX=      EXIT 
  
 RDC5     SB4    X3          (OUT+1) = FIRST
          SA6    B6          STORE WORD 
          EQ     RDC3        LOOP 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 RDC=     EQU    /COMCRDC/RDC=
 QUAL$    ENDIF 
          ENDX
