*COMDECK  COMCCIO            I/O FUNCTION PROCESSOR.                     COMCCIO
 CIO      CTEXT  COMCCIO - I/O FUNCTION PROCESSOR.                       COMCCIO
 CIO      SPACE  4,10                                                    COMCCIO
          IF     -DEF,QUAL$,1                                            COMCCIO
          QUAL   COMCCIO                                                 COMCCIO
          BASE   D                                                       COMCCIO
          CODE   D                                                       COMCCIO
*         COMMENT COPYRIGHT CONTROL DATA CORPORATION. 1970, 1978.        COMCCIO
 CIO      SPACE  4,10                                                    COMCCIO
***       CIO - I/O FUNCTION PROCESSOR.                                  COMCCIO
*                                                                        COMCCIO
*         G. R. MANSFIELD.   70/10/09.                                   COMCCIO
* 
*         ******************************************************* 
*         * 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.                       * 
*         ******************************************************* 
* 
*                                                                        COMCCIO
*         CIO ISSUES SYSTEM REQUESTS FOR I/O OPERATIONS.                 COMCCIO
 CIO      SPACE  4,10                                                    COMCCIO
***       CIO PERFORMS I/O FUNCTIONS VIA THE PP PROGRAM *CIO*.           COMCCIO
*         THE OPERATION WILL BE PROCESSED WHEN THE BUFFER IS NOT BUSY.   COMCCIO
*         IF THE FILE STATUS WORD = 0, THE OPERATION WILL NOT BE         COMCCIO
*         PROCESSED AND IN AND OUT WILL BE SET TO FIRST.                 COMCCIO
*                                                                        COMCCIO
*         ENTRY  (X2) (BITS 17 - 0) = ADDRESS OF FET FOR FILE.           COMCCIO
*                (X2) (BITS 35 - 18) = SKIP COUNT TO CIO.                COMCCIO
*                (X2) (BIT 59) = 1 IF ASTERISK OPTION SPECIFIED ON
*                     *CPCOM* MACRO FOR WHICH THE FUNCTION CODE IS
*                     SET IN THE FET BUT *CIO* IS NOT CALLED (THAT
*                     IS, THE I/O FUNCTION IS NOT PERFORMED). 
*                (X7) = FUNCTION CODE.                                   COMCCIO
*                IF (X7) .LT. 0, (X7) IS COMPLEMENT OF REQUEST, AND      COMCCIO
*                AUTO RECALL WILL BE REQUESTED.                          COMCCIO
*                                                                        COMCCIO
*         EXIT   (X2) = ADDRESS OF FET FOR FILE.                         COMCCIO
*                (X7) = 0.                                               COMCCIO
*                                                                        COMCCIO
*                IF *ERP$* IS DEFINED -                                  COMCCIO
*                (X2) = FET ADDRESS.                                     COMCCIO
*                (X7) = 0 IF NO ERROR CODE IN FET.  FUNCTION ISSUED.     COMCCIO
*                       NORMAL EXIT.                                     COMCCIO
*                (X7) = ERROR CODE FROM FET.  FUNCTION NOT ISSUED.       COMCCIO
*                       EXIT TO *ERP$*.                                  COMCCIO
*                                                                        COMCCIO
*                IF *ERP1$* IS DEFINED -                                 COMCCIO
*                (X2) = FET ADDRESS.                                     COMCCIO
*                (X7) = 0 IF NO ERROR CODE IN FET.  FUNCTION ISSUED.     COMCCIO
*                       NORMAL EXIT.                                     COMCCIO
*                (X7) = ERROR CODE FROM FET.  FUNCTION NOT ISSUED.       COMCCIO
*                       NORMAL EXIT.                                     COMCCIO
*                                                                        COMCCIO
*         USES   X - 1, 2, 6, 7.                                         COMCCIO
*                B - NONE.                                               COMCCIO
*                A - 1, 6, 7.                                            COMCCIO
*                                                                        COMCCIO
*         MACROS RECALL, SYSTEM.
                                                                         COMCCIO
                                                                         COMCCIO
 ERP$     IF     DEF,ERP$                                                COMCCIO
 CIO1     BX7    X1          SET ERROR STATUS                            COMCCIO
          SX2    X2          UNPACK FET ADDRESS                          COMCCIO
          EQ     ERP$        EXIT TO ERROR PROCESSOR                     COMCCIO
 ERP$     ELSE                                                           COMCCIO
 ERP$     IF     DEF,ERP1$                                               COMCCIO
 CIO1     BX7    X1          SET ERROR STATUS                            COMCCIO
          SX2    X2          UNPACK FET ADDRESS                          COMCCIO
          EQ     CIO=        RETURN                                      CPSA104
 ERP$     ENDIF                                                          COMCCIO
                                                                         COMCCIO
 CIO2     RECALL X2          WAIT COMPLETION OF LAST REQUEST             COMCCIO
 CIO3     MX6    42          FILE NAME MASK                              COMCCIO
 ERP$     IF     -DEF,ERP$                                               COMCCIO
 ERP$     IF     -DEF,ERP1$                                              COMCCIO
          SX1    2           FILE MODE MASK                              COMCCIO
 ERP$     ELSE                                                           COMCCIO
          SX1    36002B      ERROR CODE AND FILE MODE MASK               COMCCIO
 ERP$     ENDIF                                                          COMCCIO
          BX6    X6+X1                                                   COMCCIO
          SA1    X2          SET FILE NAME, MODE AND ERROR CODE          COMCCIO
          BX1    X6*X1                                                   COMCCIO
          SX6    3RCIO       SET *CIO* REQUEST                           COMCCIO
          PL     X2,CIO4     IF NOT ASTERISK OPTION 
          BX7    X1+X7       MERGE FUNCTION CODE WITH FILE NAME 
          SX2    X2          CLEAR BIT 2**59
          SA7    A1          STORE FET STATUS 
          BX7    X7-X7       CLEAR ERROR STATUS 
          EQ     CIO=        RETURN 
  
 CIO4     PL     X7,CIO5     IF NO AUTO RECALL WITH REQUEST 
          BX7    -X7                                                     COMCCIO
          PX6    X6          SET AUTO RECALL                             COMCCIO
 CIO5     BX7    X1+X7       MERGE FUNCTION CODE WITH FILE NAME 
          LX6    42                                                      COMCCIO
 ERP$     IF     -DEF,ERP$                                               COMCCIO
 ERP$     IF     -DEF,ERP1$                                              COMCCIO
          SA7    X2          STORE FET STATUS                            COMCCIO
          BX6    X6+X2       MERGE *CIO* REQUEST AND FET ADDRESS         COMCCIO
 ERP$     ELSE                                                           COMCCIO
          SX1    X1          UNPACK ERROR CODE                           COMCCIO
          BX6    X6+X2       MERGE *CIO* REQUEST AND FET ADDRESS         COMCCIO
          AX1    10                                                      COMCCIO
          NZ     X1,CIO1     IF ERROR ON LAST OPERATION                  COMCCIO
          SA7    X2          STORE FET STATUS                            COMCCIO
 ERP$     ENDIF                                                          COMCCIO
          SX2    X2          UNPACK FET ADDRESS                          COMCCIO
          BX7    X7-X7       CLEAR ERROR STATUS                          COMCCIO
          SYSTEM             MAKE REQUEST TO *CIO*                       COMCCIO
                                                                         COMCCIO
 CIO=     SUBR               ENTRY/EXIT                                  COMCCIO
          SA1    X2          CHECK FET STATUS                            COMCCIO
          LX1    59-0                                                    COMCCIO
          NG     X1,CIO3     IF FET NOT BUSY                             COMCCIO
          NZ     X1,CIO2     IF NOT BLANK FET STATUS                     COMCCIO
 QUAL$    IF     DEF,B1=1                                                COMCCIO
          SA1    X2+B1       SET FIRST = IN = OUT                        COMCCIO
          SX6    X1                                                      COMCCIO
          SA6    A1+B1                                                   COMCCIO
          SA6    A6+B1                                                   COMCCIO
 QUAL$    ELSE                                                           COMCCIO
          SA1    X2+1        SET FIRST = IN = OUT                        COMCCIO
          SX6    X1+
          SA6    X2+2                                                    COMCCIO
          SA6    X2+3                                                    COMCCIO
 QUAL$    ENDIF                                                          COMCCIO
          SX2    X2+         SET FET ADDRESS
          EQ     CIO=        RETURN                                      CPSA104
 CIO      SPACE  4,10                                                    COMCCIO
          BASE   *                                                       COMCCIO
          CODE   *                                                       COMCCIO
 QUAL$    IF     -DEF,QUAL$                                              COMCCIO
          QUAL   *                                                       COMCCIO
 CIO=     EQU    /COMCCIO/CIO=                                           COMCCIO
 QUAL$    ENDIF                                                          COMCCIO
 CIO      ENDX                                                           COMCCIO
