*COMDECK COMCRDO  READ ONE WORD 
          CTEXT  COMCRDO - READ ONE WORD. 
 RDO      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCRDO
          BASE   D
*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
 RDO      SPACE  4
***       RDO - READ ONE WORD.
*         D. A. CAHALANDER.  70/10/09.
 RDO      SPACE  4
***              RDO READS 1 WORD FROM A CIO BUFFER TO (X6) 
* 
*         ENTRY  (A1) = ADDRESS OF IN POINTER.
*                (X1) = IN. 
* 
*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.
*                (X1) = -1 IF EOF DETECTED ON FILE. 
*                (X1) = -2 IF EOI DETECTED ON FILE. 
*                (X1) = 1 IF EOR DETECTED ON FILE.
*                (X2) = ADDRESS OF FET FOR FILE.
*                (X6) = WORD READ.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                B - 1. 
*                A - 1, 2, 3, 4, 6, 7.
* 
*         CALLS  CIO=.
  
  
 RDO1     SX7    X3+B1       INCREMENT OUT
          BX6    X4 
          MX1    0           RESPONSE = 0 
          SA7    A3          UPDATE OUT 
  
 RDO=     PS                 ENTRY/EXIT 
 RDO2     BSS    0
  
          IF     -DEF,B1=1,1
          SB1    1
  
          SA3    A1+B1       READ OUT 
          IX7    X3-X1       OUT - IN 
          SX2    A1-2 
          SA4    X3          READ WORD
          NG     X7,RDO1     IF NO WRAP AROUND
          SA1    A3+B1       READ LIMIT 
          SX6    X1 
          ZR     X7,RDO3     IF BUFFER EMPTY
          SX7    X3+B1       ADVANCE OUT
          IX1    X7-X6
          NZ     X1,RDO1     IF OUT " LIMIT 
          SA1    X2+B1       READ FIRST 
          SX3    X1-1 
          EQ     RDO1        RETURN 
  
*         LOAD CIRCULAR BUFFER. 
  
 RDO3     SA1    X2          CHECK BUFFER STATUS
          LX1    59-0 
          NG     X1,RDO5     IF BUFFER NOT BUSY 
          RECALL
 RDO4     SA1    X2+2        READ IN
          EQ     RDO2        CONTINUE READ
  
 RDO5     LX1    -4 
          NG     X1,RDO6     IF EOR SET 
          LX1    4           ISSUE PREVIOUS READ FUNCTION 
          SX6    740770B/2
          BX7    X6*X1
          LX7    1
          RJ     =XCIO= 
          EQ     RDO4        CONTINUE READ
  
 RDO6     LX3    X1,B1
          SA1    A1+B1       SET IN = OUT = FIRST 
          SX7    X1 
          SA7    A1+B1
          SA7    A7+B1
          SX1    B1          RESPONSE = 1 
          PL     X3,RDO=     IF NOT EOF 
          LX3    3-9
          SX1    -B1         RESPONSE = -1
          PL     X3,RDO=     RETURN - IF NOT EOI
          SX1    -2          RESPONSE= -2 
          EQ     RDO=        RETURN 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 RDO=     EQU    /COMCRDO/RDO=
 QUAL$    ENDIF 
          ENDX
