*COMDECK,COMCCIO
          CTEXT  COMCCIO - I/O FUNCTION PROCESSOR.
 CIO      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCCIO
          BASE   D
*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
 CIO      SPACE  4
***       CIO - I/O FUNCTION PROCESSOR. 
*         G. R. MANSFIELD.  70/10/09. 
 CIO      SPACE  4
***              CIO PERFORMS I/O FUNCTIONS VIA THE PP PROGRAM *CIO*. 
*         OPERATION WILL BE PROCESSED WHEN BUFFER IS NOT BUSY.
*         IF FILE STATUS WORD = 0, OPERATION WILL NOT BE PROCESSED, 
*         AND IN AND OUT WILL BE SET TO FIRST.
* 
*                (X2) (BITS 17 - 0) = ADDRESS OF FET FOR FILE.
*                (X2) (BITS 35 - 18) = SKIP COUNT TO CIO. 
*                (X7) = FUNCTION CODE.
*                IF (X7) < 0, (X7) IS COMPLEMENT OF REQUEST, AND
*                AUTO RECALL WILL BE REQUESTED. 
* 
*         EXIT   (X2) = ADDRESS OF FET FOR FILE.
*                IF ERP$ DEFINED IN CP PROGRAM -
*                CIO= WILL EXIT TO ERP$ WHEN UNRECOVERED PARITY ERROR 
*                OR END OF TAPE STATUS BITS ARE SET.
* 
*         USES   X - 1, 2, 6, 7.
*                B - NONE.
*                A - 1, 6, 7. 
* 
*         CALLS  SYS=.
  
  
 CIO1     RECALL X2          WAIT COMPLETION
 ERP$     IF     -DEF,ERP$
 CIO2     MX6    42 
          SX1    2
 ERP$     ELSE
 CIO2     SA1    X2          READ FILE STATUS 
          SX6    6000B
          BX6    X6*X1
          SX1    2
          NZ     X6,ERP$     IF PARITY ERROR OR END OF REEL 
          MX6    42 
 ERP$     ENDIF 
          BX6    X6+X1
          SA1    X2          READ FILE STATUS 
          BX1    X6*X1       MASK NAME AND MODE 
          SX6    3RCIO       SET CIO REQUEST
          PL     X7,CIO3     IF NO AUTO RECALL WITH REQUEST 
          BX7    -X7
          PX6    X6          SET AUTO RECALL
 CIO3     BX7    X1+X7       ENTER REQUEST IN FILE NAME 
          LX6    42 
          SA7    X2          STORE FILE STATUS
          BX6    X6+X2       MERGE REQUEST AND FET ADDRESS
          SX2    X2 
          RJ     =XSYS= 
  
 CIO=     PS                 ENTRY/EXIT 
          SA1    X2          CHECK BUFFER STATUS
          LX1    59 
          NG     X1,CIO2     IF BUFFER NOT BUSY 
          NZ     X1,CIO1     IF NOT BLANK FILE STATUS 
 QUAL$    IF     DEF,B1=1 
          SA1    X2+B1       SET FIRST = IN = OUT 
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
 QUAL$    ELSE
          SA1    X2+1        SET FIRST = IN = OUT 
          SX6    X1 
          SA6    X2+2 
          SA6    X2+3 
 QUAL$    ENDIF 
          EQ     CIO=        RETURN 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 CIO=     EQU    /COMCCIO/CIO=
 QUAL$    ENDIF 
          ENDX
