*COMDECK  COMCRDO            READ ONE WORD.                              COMCRDO
 RDO      CTEXT  COMCRDO - READ ONE WORD.                                COMCRDO
 RDO      SPACE  4,10                                                    COMCRDO
          IF     -DEF,QUAL$,1                                            COMCRDO
          QUAL   COMCRDO                                                 COMCRDO
          BASE   D                                                       COMCRDO
*         COMMENT COPYRIGHT CONTROL DATA CORPORATION. 1970, 1978.        COMCRDO
 RDO      SPACE  4,10                                                    COMCRDO
***       RDO - READ ONE WORD.                                           COMCRDO
*                                                                        COMCRDO
*         D. A. CAHLANDER.   70/10/09.                                   COMCRDO
* 
*         ******************************************************* 
*         * THIS COMMON DECK IS PART OF THE COMMON COMMON DECKS * 
*         * RESIDING ON THE COMPASS PROGRAM LIBRARY, AND BEING  * 
*         * MAINTAINED BY THE COMPASS PROJECT.  ANY CHANGES     * 
*         * REQUIRED SHOULD BE DIRECTED TO THE COMPASS PROJECT  * 
*         * THROUGH THE PROPER PROCEDURE.                       * 
*         ******************************************************* 
* 
*                                                                        COMCRDO
*         RDO READS ONE WORD FROM A CIO BUFFER INTO X6.                  COMCRDO
 RDO      SPACE  4,10                                                    COMCRDO
***       RDO READS ONE WORD FROM A CIO BUFFER TO X6.                    COMCRDO
*                                                                        COMCRDO
*         ENTRY  (A1) = ADDRESS OF IN POINTER.                           COMCRDO
*                (X1) = IN.                                              COMCRDO
*                                                                        COMCRDO
*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.                         COMCRDO
*                (X1) = -1 IF EOF DETECTED ON FILE.                      COMCRDO
*                (X1) = -2 IF EOI DETECTED ON FILE.                      COMCRDO
*                (X1) = 1 IF EOR DETECTED ON FILE.                       COMCRDO
*                (X2) = ADDRESS OF FET FOR FILE.                         COMCRDO
*                (X6) = WORD READ.                                       COMCRDO
*                (B1) = 1.                                               COMCRDO
*                                                                        COMCRDO
*         USES   X - 1, 2, 3, 4, 6, 7.                                   COMCRDO
*                B - 1.                                                  COMCRDO
*                A - 1, 2, 3, 4, 6, 7.                                   COMCRDO
*                                                                        COMCRDO
*         CALLS  CIO=.                                                   COMCRDO
* 
*         MACROS RECALL.
                                                                         COMCRDO
                                                                         COMCRDO
 RDO1     SX7    X3+B1       INCREMENT OUT                               COMCRDO
          BX6    X4                                                      COMCRDO
          MX1    0           RESPONSE = 0                                COMCRDO
          SA7    A3          UPDATE OUT                                  COMCRDO
                                                                         COMCRDO
 RDO=     SUBR               ENTRY/EXIT                                  COMCRDO
 RDO2     BSS    0                                                       COMCRDO
          IF     -DEF,B1=1,1                                             COMCRDO
          SB1    1                                                       COMCRDO
          SA3    A1+B1       READ OUT                                    COMCRDO
          IX7    X3-X1       OUT - IN                                    COMCRDO
          SX2    A1-2                                                    COMCRDO
          SA4    X3          READ WORD                                   COMCRDO
          NG     X7,RDO1     IF NO WRAP AROUND                           COMCRDO
          SA1    A3+B1       READ LIMIT                                  COMCRDO
          SX6    X1                                                      COMCRDO
          ZR     X7,RDO3     IF BUFFER EMPTY                             COMCRDO
          SX7    X3+B1       ADVANCE OUT                                 COMCRDO
          IX1    X7-X6                                                   COMCRDO
          NZ     X1,RDO1     IF OUT .NE. LIMIT                           COMCRDO
          SA1    X2+B1       READ FIRST                                  COMCRDO
          SX3    X1-1                                                    COMCRDO
          EQ     RDO1        RETURN                                      COMCRDO
                                                                         COMCRDO
*         LOAD CIRCULAR BUFFER.                                          COMCRDO
                                                                         COMCRDO
 RDO3     SA1    X2          CHECK BUFFER STATUS                         COMCRDO
          LX1    59-0                                                    COMCRDO
          NG     X1,RDO5     IF BUFFER NOT BUSY                          COMCRDO
          RECALL                                                         COMCRDO
 RDO4     SA1    X2+2        READ IN                                     COMCRDO
          EQ     RDO2        CONTINUE READ                               COMCRDO
                                                                         COMCRDO
 RDO5     SA4    A3-B1       READ IN                                     COMCRDO
          IX7    X4-X3                                                   COMCRDO
          NZ     X7,RDO4     IF BUFFER NOT EMPTY                         COMCRDO
          LX1    -4                                                      COMCRDO
          NG     X1,RDO6     IF EOR SET                                  COMCRDO
          LX1    4           ISSUE PREVIOUS READ FUNCTION                COMCRDO
          SX6    740770B/2                                               COMCRDO
          BX7    X6*X1                                                   COMCRDO
          LX7    1                                                       COMCRDO
          RJ     =XCIO=                                                  COMCRDO
          EQ     RDO4        CONTINUE READ                               COMCRDO
                                                                         COMCRDO
 RDO6     LX3    X1,B1                                                   COMCRDO
          SA1    A1+B1       SET IN = OUT = FIRST                        COMCRDO
          SX7    X1                                                      COMCRDO
          SA7    A1+B1                                                   COMCRDO
          SA7    A7+B1                                                   COMCRDO
          SX1    B1          RESPONSE = 1                                COMCRDO
          PL     X3,RDO=     IF NOT EOF, RETURN                          CPSA104
          LX3    3-9                                                     COMCRDO
          SX1    -B1         RESPONSE = -1                               COMCRDO
          PL     X3,RDO=     IF NOT EOI, RETURN                          CPSA104
          SX1    -2          RESPONSE = -2                               COMCRDO
          EQ     RDO=        RETURN                                      CPSA104
 RDO      SPACE  4,10                                                    COMCRDO
          BASE   *                                                       COMCRDO
 QUAL$    IF     -DEF,QUAL$                                              COMCRDO
          QUAL   *                                                       COMCRDO
 RDO=     EQU    /COMCRDO/RDO=                                           COMCRDO
 QUAL$    ENDIF                                                          COMCRDO
 RDO      ENDX                                                           COMCRDO
