*DECK CPUCIO
          IDENT  CPUCIO 
          ENTRY  CIO= 
*#
* *   CPUCIO - ISSUE SYSTEM REQUESTS             PAGE  1
* 
* DC  PURPOSE 
*     PROVIDE ENTRY POINT CIO= ON NOS/BE. (THIS IS COMMON DECK COMCCIO) 
*     NOTE - CIO= IS SCHEDULED TO BE INCLUDED IS SYSLIB IN CPS R5.
*#
          BASE   D
          CODE   D
 CIO      SPACE  4,10 
***       CIO - I/O FUNCTION PROCESSOR. 
* 
*         G. R. MANSFIELD.   70/10/09.
* 
*         CIO ISSUES SYSTEM REQUESTS FOR I/O OPERATIONS.
 CIO      SPACE  4,10 
***       CIO PERFORMS I/O FUNCTIONS VIA THE PP PROGRAM *CIO*.
*         THE OPERATION WILL BE PROCESSED WHEN THE BUFFER IS NOT BUSY.  003370
*         IF THE FILE STATUS WORD = 0, THE OPERATION WILL NOT BE        003380
*         PROCESSED AND IN AND OUT WILL BE SET TO FIRST.                003390
* 
*         ENTRY  (X2) (BITS 17 - 0) = ADDRESS OF FET FOR FILE.
*                (X2) (BITS 35 - 18) = SKIP COUNT TO CIO. 
*                (X7) = FUNCTION CODE.
*                IF (X7) .LT. 0, (X7) IS COMPLEMENT OF REQUEST, AND 
*                AUTO RECALL WILL BE REQUESTED. 
* 
*         EXIT   (X2) = ADDRESS OF FET FOR FILE.
*                (X7) = 0.
* 
*                IF *ERP$* IS DEFINED - 
*                (X2) = FET ADDRESS.
*                (X7) = 0 IF NO ERROR CODE IN FET.  FUNCTION ISSUED.
*                       NORMAL EXIT.
*                (X7) = ERROR CODE FROM FET.  FUNCTION NOT ISSUED.
*                       EXIT TO *ERP$*. 
* 
*                IF *ERP1$* IS DEFINED -
*                (X2) = FET ADDRESS.
*                (X7) = 0 IF NO ERROR CODE IN FET.  FUNCTION ISSUED.
*                       NORMAL EXIT.
*                (X7) = ERROR CODE FROM FET.  FUNCTION NOT ISSUED.
*                       NORMAL EXIT.
* 
*         USES   X - 1, 2, 6, 7.
*                B - NONE.
*                A - 1, 6, 7. 
* 
*         CALLS  NONE.                                                  003680
  
  
 ERP$     IF     DEF,ERP$ 
 CIO1     BX7    X1          SET ERROR STATUS 
          SX2    X2          UNPACK FET ADDRESS 
          EQ     ERP$        EXIT TO ERROR PROCESSOR
 ERP$     ELSE
 ERP$     IF     DEF,ERP1$
 CIO1     BX7    X1          SET ERROR STATUS 
          SX2    X2          UNPACK FET ADDRESS 
          EQ     CIOX        RETURN 
 ERP$     ENDIF 
  
 CIO2     RECALL X2          WAIT COMPLETION OF LAST REQUEST
 CIO3     MX6    42          FILE NAME MASK 
 ERP$     IF     -DEF,ERP$
 ERP$     IF     -DEF,ERP1$ 
          SX1    2           FILE MODE MASK 
 ERP$     ELSE
          SX1    36002B      ERROR CODE AND FILE MODE MASK
 ERP$     ENDIF 
          BX6    X6+X1
          SA1    X2          SET FILE NAME, MODE AND ERROR CODE 
          BX1    X6*X1
          SX6    3RCIO       SET *CIO* REQUEST
          PL     X7,CIO4     IF NO AUTO RECALL WITH REQUEST 
          BX7    -X7
          PX6    X6          SET AUTO RECALL
 CIO4     BX7    X1+X7       MERGE FUNCTION CODE WITH FILE NAME 
          LX6    42 
 ERP$     IF     -DEF,ERP$
 ERP$     IF     -DEF,ERP1$ 
          SA7    X2          STORE FET STATUS 
          BX6    X6+X2       MERGE *CIO* REQUEST AND FET ADDRESS
 ERP$     ELSE
          SX1    X1          UNPACK ERROR CODE
          BX6    X6+X2       MERGE *CIO* REQUEST AND FET ADDRESS
          AX1    10 
          NZ     X1,CIO1     IF ERROR ON LAST OPERATION 
          SA7    X2          STORE FET STATUS 
 ERP$     ENDIF 
          SX2    X2          UNPACK FET ADDRESS 
          BX7    X7-X7       CLEAR ERROR STATUS 
          SYSTEM             MAKE REQUEST TO *CIO*
  
 CIO=     SUBR               ENTRY/EXIT 
          SA1    X2          CHECK FET STATUS 
          LX1    59-0 
          NG     X1,CIO3     IF FET NOT BUSY
          NZ     X1,CIO2     IF NOT BLANK FET 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     CIOX        RETURN 
 CIO      SPACE  4,10 
          BASE   *
          CODE   *
          END 
