COMKFIO 
COMMON
          CTEXT  COMKFIO - RANDOM FILE INPUT/OUTPUT.
          SPACE  4,10 
          IF     -DEF,QUAL$ 
          QUAL   COMKFIO
          ENDIF 
          BASE   DECIMAL
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 FIO      SPACE  4,10 
**        FIO - RANDOM FILE INPUT/OUTPUT. 
* 
*         R. G. PARKHOUSE.   80/04/15.
          SPACE  4,25 
**        FIO - FILE INPUT/OUTPUT.
* 
*         INITIALIZE THE FET USING THE ENTRY PARAMETER, AND BEGIN 
*         THE RANDOM I/O OPERATION.  THIS ROUTINE ADJUSTS THE *IN*
*         OR *OUT* POINTER TO COMTROL THE AMOUNT OF DATA WRITTEN
*         OR READ.  THE BUFFER ASSOCIATED WITH THE FET SHOULD BE AT 
*         LEAST N*100B+2 WORDS LONG (N=X2).  NO CHECK IS PERFORMED IN 
*         *FIO* TO INSURE THIS IS THE CASE. 
* 
*         ENTRY  (X1) = *CIO* OPERATION CODE  (READ, REWRITE).
*                (X2) = NUMBER OF PRU-S TO READ OR WRITE. 
*                (X5) = FET ADDRESS.
*                (X6) = PRU ADDRESS.
*                     = 0 IF CURRENT RANDOM INDEX TO BE USED. 
* 
*         EXIT   INPUT/OUTPUT OPERATION BEGUN.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 4, 6, 7.
*                B - 3, 5, 6. 
* 
*         MACROS SYSTEM.
  
  
 FIO      SUBR               ENTRY/EXIT 
          BX7    X6          SAVE PRU ADDRESS 
          LX4    X2 
          BX3    X1          SAVE *CIO* OPERATION CODE
          RECALL X5          WAIT FOR *CIO* 
          BX1    X3 
          LX2    X4 
          BX6    X7 
          SA4    X5 
          MX3    42 
          BX7    X3*X4       CLEAR OLD STATUS 
          BX7    X7+X1       ADD *CIO* CODE 
          SA7    A4          STORE IN FET 
          SB6    X1-CIORW 
          SA1    X5+6 
          MX3    30 
          BX1    X3*X1       RETAIN CURRENT RANDOM INDEX
          BX7    X7-X7
          SA4    X5+B1
          SX4    X4          FIRST
          LX2    6           CONVERT PRU-S TO WORDS 
          SX2    X2+B1
          IX2    X4+X2       *IN* OR *OUT* POINTER
          NZ     X6,FIO1     IF PRU ADDRESS SUPPLIED
          BX6    X1          USE CURRENT RANDOM ADDRESS 
          LX6    30 
 FIO1     SB3    X5+2        ADDRESS OF *IN* POINTER
          SB5    B3+B1       ADDRESS OF *OUT* POINTER 
          NE     B6,FIO2     IF NOT REWRITE 
          SX7    B1 
          LX7    29-0        REWRITE BIT
          SB3    B3+B1
          SB5    B5-B1
 FIO2     BX6    X1+X6
          BX6    X6+X7
          SA6    X4-1        SAVE RANDOM ADDRESS IN FIRST - 1 
          SA6    A1          STORE RANDOM SECTOR ADDRESS
          BX6    X4 
          BX7    X2 
          SA6    B3          SET IN/OUT POINTERS
          SA7    B5 
          SYSTEM  CIO,,X5    CALL *CIO* 
          EQ     FIOX        RETURN 
 CES      SPACE  4,10 
**        CES - CHECK ERROR STATUS. 
* 
*         CHECK THE STATUS OF THE LAST *CIO* OPERATION. 
* 
*         ENTRY  (X5) = FET ADDRESS.
* 
*         EXIT   (X1) = 0 IF NO ERROR.
* 
*         USES   X - 1, 2.
*                A - 1. 
  
  
 CES      SUBR               ENTRY/EXIT 
          SA1    X5 
          MX2    8
          LX1    59-17
          BX1    X2*X1       EXTRACT STATUS 
          EQ     CESX        RETURN 
          SPACE  4,10 
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 FIO      EQU    /COMKFIO/FIO 
 CES      EQU    /COMKFIO/CES 
 QUAL$    ENDIF 
 FIO      ENDX
