COMSCIO 
COMMON
          CTEXT  COMSCIO - CIO EQUIVALENCES.
          SPACE  4,10 
          BASE   OCTAL
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       COMSCIO - CIO EQUIVALENCES. 
*         G. R. MANSFIELD.  72/03/16. 
*         J. L. LARSON.      80/08/01.
          SPACE  4,10 
***              COMSCIO PROVIDES EQUIVALENCES FOR *CIO*
*         RA+1 CALL PROCESSING. 
          SPACE  4,10 
***       *CIO* CALL. 
* 
*T RA+1   18/ *CIO*, 1/, 1/A, 4/, 18/ SKIP, 18/ FET 
*         A      SET IF AUTO RECALL REQUESTED 
*         SKIP   COUNT FOR SKIP OPERATIONS, DATA PATTERN FLAGS FOR
*                OVERWRITE OPERATION. 
*         FET    ADDRESS OF FET 
          SPACE  4,10 
***       FILE ENVIRONMENT TABLE (FET) DESCRIPTION. 
* 
*T FET+0  42/ LFN, 4/ LN, 5/ AT, 9/ CODE
*T,   +1  12/ DT, 12/ SP, 12/, 6/ L, 18/ FIRST
*T,   +2  42/ 0, 18/ IN 
*T,   +3  42/ 0, 18/ OUT
*T,   +4  12/ FNT, 9/, 3/ AL, 18/ PRU, 18/ LIMIT
*T,   +5  42/, 18/ LIST 
*T,   +6  30/, 6/ UBC, 6/, 18/ MLRS 
*T,   +6  30/ CRI, 1/W, 5/, 24/ RR OR DEC 
*T,   +7  24/, 18/ INDL, 18/ INDEX
* 
*         LFN    LOCAL FILE NAME. 
*         LN     LEVEL NUMBER (0 TO 17B) FOR EOR/EOF OPERATION. 
*                0           EOR OPERATION. 
*                1 - 16B     SAME AS LEVEL 0. 
*                17B         EOF OPERATION. 
*         AT     STATUS INFORMATION RETURNED FOR ABNORMAL TERMINATION.
*                01          END OF INFORMATION.
*                02          END OF REEL/END OF DEVICE. 
*                04          PARITY ERROR.
*                22B         OTHER ERROR (MASS STORAGE ONLY). 
*                23B         RANDOM INDEX TOO LARGE FOR INDEX BUFFER. 
*                FOR ABNORMAL TERMINATION CODES OTHER THAN 01,
*                DETAILED STATUS IS RETURNED IN THE *DEC* FIELD 
*                FOR A MASS STORAGE FILE, IF ERROR PROCESSING IS
*                SELECTED (BIT 44 OF FET+1) AND THE FET IS
*                LONG ENOUGH. 
*         CODE   REQUEST/RETURN CODE. 
*                BITS 4,3    BINARY 10 = EOR, BINARY 11 = EOF.
*                BIT 1       0 = CODED FILE, 1 = BINARY FILE. 
*                BIT 0       COMPLETION BIT (SET WHEN OPERATION 
*                            COMPLETE). 
*         DT     DEVICE TYPE
*         SP     SPECIAL PROCESSING BITS. 
*                BIT 47      RANDOM PROCESSING BIT. 
*                BIT 45      USER PROCESSING BIT (USER PROCESSES
*                            END OF DEVICE (TRACK LIMIT) AND
*                            MAGNETIC TAPE END OF REEL).
*                BIT 44      USER ERROR PROCESSING BIT. 
*                BIT 43      REAL TIME BIT.  (RETURN TO CALLER
*                            FOR CONDITIONS CIO WAITS FOR)
*                BIT 41      EXTENDED TAPE LABEL PROCESSING.
*                BIT 39      ACCESS LEVEL PROCESSING BIT. 
*                BIT 36      FILE FLUSH BIT.
*         L      FET LENGTH - 5.
*         FIRST  FIRST ADDRESS OF BUFFER. 
*         IN     NEXT INPUT ADDRESS.
*         OUT    NEXT OUTPUT ADDRESS. 
*         FNT    RELATIVE ADDRESS OF FNT ORDINAL IN NEGATIVE FL.
*         AL     IF FET+1 BIT 39 SET, ACCESS LEVEL TO BE SET ON FILE
*                WHEN INITIALLY CREATED.  FIELD TO RETURN CURRENT 
*                ACCESS LEVEL OF FILE IF FET+1 BIT 39 SET WHEN
*                FILE ALREADY EXISTS. 
*         PRU    PRU SIZE OF THE DEVICE ON WHICH THE FILE RESIDES.
*         LIMIT  LIMIT ADDRESS OF BUFFER. 
*         LIST   ADDRESS OF A LIST OF RANDOM ADDRESSES TO BE USED WITH
*                THE *READLS* OR *RPHRLS* MASS STORAGE FUNCTIONS. 
*         UBC    UNUSED BIT COUNT FOR S AND L FORMAT TAPES. 
*         MLRS   MAXIMUM LOGICAL RECORD SIZE FOR S AND L FORMAT TAPES.
*         CRI    CURRENT RANDOM INDEX (MASS STORAGE ONLY).  SET BY
*                *CIO* PROCESSOR IF THE RANDOM FILE BIT IS SET. 
*         W      RANDOM RE-WRITE REQUEST (MASS STORAGE ONLY). 
*         RR     RANDOM REQUEST (MASS STORAGE ONLY).
*                IF RR .NE. 0 FOR READ REQUEST, RR IS RANDOM INDEX. 
*                IF RR .NE. 0 AND W = 1 FOR WRITE REQUEST,
*                RR IS RANDOM INDEX.
*                IF RR .NE. 0 AND W = 0 FOR WRITE REQUEST, RR IS
*                ADDRESS FOR RETURN OF RANDOM INDEX (FOR WRITE
*                OPERATION AT CURRENT POSITION).
*         DEC    DETAILED ERROR CODE (MASS STORAGE ONLY). 
*                BITS 12-23 = 0.  BITS 0-11 ARE DEFINED AS FOLLOWS -
*                X001        PARITY ERROR.
*                X002        ADDRESS ERROR. 
*                X003        DEVICE STATUS ERROR. 
*                X004        CONTROLLER FUNCTION REJECT OR TIMEOUT. 
*                X005        DEVICE RESERVED. 
*                X006        DEVICE NOT READY.
*                X007        TRACK LIMIT (DEVICE FULL). 
*                0000        OTHER ERROR. 
*                WHERE X = 0 IF INCORRECT DATA READ HAS BEEN
*                TRANSFERRED TO CIRCULAR BUFFER, X = 1 OTHERWISE. 
*         INDL   LENGTH OF RANDOM INDEX AREA (MASS STORAGE ONLY). 
*         INDEX  FWA OF RANDOM INDEX AREA (MASS STORAGE ONLY).
          SPACE  4,10 
***       FUNCTION DESCRIPTIONS.
* 
*         FUNCTION (OPERATION) CODES ARE SPECIFIED IN THE *CODE* FIELD
*         OF THE FET.  WHEN THE *CIO* OPERATION HAS BEEN COMPLETED, 
*         BIT 0 OF THE *CODE* FIELD IS SET AND THE *LN* AND *CODE*
*         FIELDS (BITS 0 - 17) ARE SET AS INDICATED BELOW.  THE *AT*
*         FIELD IS CLEARED AND APPROPRIATELY SET IF AN ERROR IS 
*         DETECTED. 
          SPACE  4,10 
***       READ FUNCTIONS. 
  
  
***       FUNCTION 000 - *RPHR*.
*         READ PHYSICAL RECORD. 
*         TRANSFERS ONE PRU INTO CIRCULAR BUFFER. 
* 
*         STATUS RESPONSE - 
*         000001   FULL SECTOR TRANSFERRED. 
*         000021   EOR ENCOUNTERED. 
*         740031   EOF ENCOUNTERED. 
*         741031   EOI ENCOUNTERED. 
  
  
***       FUNCTION 010 - *READ*.
*         BUFFER READ.
*         IF BUFFER HAS ROOM FOR AT LEAST ONE FULL PRU, THE READ
*         IS INITIATED AND CONTINUES UNTIL THE BUFFER IS FULL,
*         AN EOR OR EOF IS ENCOUNTERED, EOI IS ENCOUNTERED, 
*         OR FOR S OR L FORMAT TAPE, ONE PRU IS READ. 
* 
*         STATUS RESPONSE - 
*         000011   BUFFER FILLED. 
*         000021   EOR ENCOUNTERED. 
*         740031   EOF ENCOUNTERED. 
*         741031   EOI ENCOUNTERED. 
  
  
***       FUNCTION 020 - *READSKP*. 
*         READ SKIP.
*         READS UNTIL THE BUFFER IS FILLED OR EOR, EOF OR EOI IS
*         ENCOUNTERED.  IF BUFFER IS FILLED, THE FILE IS POSITIONED 
*         TO THE NEXT EOR, EOF OR EOI (WHICHEVER IS ENCOUNTERED 
*         FIRST).  IF LEVEL 17B IS SPECIFIED, READ AND SKIP IS
*         CONTINUED UNTIL EOF OR EOI IS ENCOUNTERED.
* 
*         STATUS RESPONSE - 
*         000021   BUFFER FILLED OR EOR ENCOUNTERED.
*         740031   EOF ENCOUNTERED. 
*         741031   EOI ENCOUNTERED. 
  
  
***       FUNCTION 200 - *READCW*.
*         READ NON-STOP WITH CONTROL WORDS. 
*         PERFORMS NONSTOP READ OF PRUS BOUNDED BY CONTROL WORDS
*         UNTIL BUFFER IS FULL OR EOI IS ENCOUNTERED.  IF LEVEL 
*         17B IS SPECIFIED, READ STOPS AT NEXT EOF. 
* 
*         EACH PHYSICAL RECORD RETURNED TO THE CIRCULAR BUFFER IS 
*         BOUNDED BY CONTROL WORDS.  THIS ALLOWS EORS AND EOFS TO BE
*         READ WITHOUT REISSUING THE *CIO* RA+1 CALL FOR THE NEXT 
*         SEQUENTIAL READ.
* 
*         PRU FORMAT -
*T        1/E, 4/, 1/C, 18/ PRU SIZE, 6/, 6/ UBC, 24/ BYTE COUNT
*T        60/ ... FIRST OF (BYTE COUNT+4)/5 DATA WORDS ...
*T        60/ ....... 
*T        12/ LN, 12/ CH, 12/ EQ, 12/ TK, 12/ SC
*         E = 1              IF PARITY ERROR ENCOUNTERED WHEN READING 
*                            THIS PRU.
*         C = 1              IF CODED OPERATION ON TAPE.
*         PRU SIZE           NUMBER OF 60 BIT WORDS IN EACH PRU.
*         UBC                UNUSED BIT COUNT (0 TO 11).
*                            NONZERO ONLY FOR S AND L FORMAT TAPES. 
*         BYTE COUNT         NUMBER OF 12 BIT DATA BYTES IN THIS PRU. 
*                            IF .LT. 500, THIS IS AN END-OF-RECORD OR 
*                            END-OF-FILE. 
*         LN                 LEVEL NUMBER FOR ZERO-LENGTH PRU.
*                            0         EOR. 
*                            1-16B     SAME AS LEVEL 0. 
*                            17B       EOF. 
*         CH                 CHANNEL USED FOR THE READ. 
*         EQ                 EST ORDINAL OF MASS STORAGE DEVICE.
*         TK                 TRACK NUMBER THAT WAS READ.
*         SC                 SECTOR NUMBER THAT WAS READ. 
* 
*         STATUS RESPONSE - 
*         000201   BUFFER FILLED. 
*         740031   EOF ENCOUNTERED (ONLY IF LEVEL 17B SPECIFIED). 
*         741031   EOI ENCOUNTERED. 
  
  
***       FUNCTION 210 - *READLS*.
*         READ NON-STOP WITH LIST.  (MASS STORAGE ONLY) 
*         READS GROUP OF MASS STORAGE LOGICAL RECORDS AS
*         SPECIFIED BY LIST SUPPLIED BY USER, UNTIL THE LIST
*         IS EXHAUSTED OR THE BUFFER IS FILLED.  THE USER MUST
*         SUPPLY THE ADDRESS OF THE LIST IN BITS 0 - 17 OF FET+5. 
*         THE LIST CONTAINS ONE RANDOM ADDRESS IN BITS 0 - 17 
*         OF EACH WORD AND IS TERMINATED BY A WORD IN WHICH 
*         THESE BITS ARE ZERO.
* 
*         STATUS RESPONSE - 
*         000211   OPERATION NOT COMPLETE.  THE *CIO* PROCESSOR 
*                  ADVANCES THE LIST ADDRESS IN FET+5 TO THE NEXT 
*                  ENTRY IN THE LIST TO BE PROCESSED AND SETS BIT 23
*                  OF FET+5 TO INDICATE A NON-INITIAL *READLS* CALL.
*         740031   OPERATION COMPLETE (ENTIRE LIST READ). 
  
  
***       FUNCTION 230 - *RPHRLS*.
*         READ PRUS WITH LIST.  (MASS STORAGE ONLY) 
*         LIST STRUCTURE IS THE SAME AS FOR *READLS*, 
*         BUT TRANSFERS GROUP OF PRUS SPECIFIED BY LIST 
*         RATHER THAN RECORDS.
* 
*         STATUS RESPONSE - 
*         000231   OPERATION NOT COMPLETE (REFER TO *READLS*).
*         740031   OPERATION COMPLETE (ENTIRE LIST READ). 
  
  
***       FUNCTION 250 - *READNS*.
*         READ NON-STOP.
*         READ DATA UNTIL CM BUFFER IS FULL OR UNTIL EOF OR EOI 
*         IS ENCOUNTERED. 
* 
*         STATUS RESPONSE - 
*         000251   BUFFER FULL. 
*         740031   EOF ENCOUNTERED. 
*         741031   EOI ENCOUNTERED. 
  
  
***       FUNCTION 260 - *READN*. 
*         READ NON-STOP *S* OR *L* FORMAT MAGNETIC TAPE. (TAPE ONLY)
*         READS UNTIL BUFFER IS FULL OR EOF OR EOI IS ENCOUNTERED.
*         EACH PRU IS PRECEDED BY A HEADER WORD OF FORMAT - 
*T        30/, 6/ UBC, 6/, 18/ BS 
*         UBC    UNUSED BIT COUNT (0 - 55). 
*         BS     BLOCK SIZE.  NUMBER OF CM WORDS IN FOLLOWING PRU.
* 
*         STATUS RESPONSE - 
*         000261   BUFFER FULL. 
*         740271   EOF ENCOUNTERED. 
*         741271   EOI ENCOUNTERED. 
  
  
***       FUNCTION 600 - *READEI*.
*         READ TO END OF INFORMATION. 
*         READS UNTIL BUFFER IS FILLED OR EOI IS ENCOUNTERED. 
* 
*         STATUS RESPONSE - 
*         000601   BUFFER FILLED. 
*         741031   EOI ENCOUNTERED. 
          SPACE  4,10 
***       WRITE FUNCTIONS.
* 
*         WRITE FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE
*         FUNCTION CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES
*         THE *LN* FIELD UNALTERED. 
  
  
***       FUNCTION 004 - *WPHR*.
*         WRITE PHYSICAL RECORD.
*         IF THE CIRCULAR BUFFER CONTAINS AT LEAST ONE FULL PRU 
*         OF DATA, *WPHR* WRITES ONE PRU FROM THE BUFFER. 
  
  
***       FUNCTION 014 - *WRITE*. 
*         BUFFER WRITE. 
*         WRITES UNTIL THE CIRCULAR BUFFER CONTAINS LESS THAN 
*         ONE PRU OF DATA.
  
  
***       FUNCTION 024 - *WRITER*.
*         END OF RECORD WRITE.
*         WRITES ALL DATA FROM THE CIRCULAR BUFFER.  THE LAST 
*         PRU IS WRITTEN AS A SHORT PRU TO INDICATE EOR.
*         IF THE DATA EXACTLY FILLS THE LAST PRU, A PRU WITH
*         NO DATA IS ALSO WRITTEN.  A *WRITER* WITH LEVEL 17B 
*         SPECIFIED PERFORMS THE SAME OPERATION AS A *WRITEF*.
  
  
***       FUNCTION 034 - *WRITEF*.
*         END OF FILE WRITE.
*         WRITES ALL DATA FROM THE CIRCULAR BUFFER AS FOR *WRITER*
*         THEN AN EOF PRU IS WRITTEN.  IF THE BUFFER IS EMPTY AND 
*         THE LAST OPERATION WAS AN INCOMPLETE WRITE (LAST PRU
*         WRITTEN WAS NOT EOR OR EOF), AN EOR (PRU WITH NO DATA)
*         AND AN EOF ARE WRITTEN, OTHERWISE ONLY AN EOF IS WRITTEN. 
  
  
***       FUNCTION 204 - *WRITECW*. 
*         WRITE NON-STOP WITH CONTROL WORDS.
*         THE PRUS IN THE CIRCULAR BUFFER ARE IN THE SAME FORMAT
*         AS DESCRIBED FOR *READCW*.  THE UNUSED BIT COUNT
*         (FOR TAPE), BYTE COUNT, AND EOR/EOF LEVEL NUMBER FIELDS 
*         IN THE HEADER AND TRAILER CONTROL WORDS ARE USED TO 
*         WRITE DATA TO THE FILE (CONTROL WORDS ARE NOT WRITTEN 
*         AS PART OF DATA). 
  
  
***       FUNCTION 214 - *REWRITE*. 
*         BUFFER RE-WRITE IN PLACE.  (MASS STORAGE ONLY)
*         PERFORMS SAME FUNCTION AS *WRITE* BUT PROCESSES 
*         OPERATION AS RANDOM FUNCTION (DOES NOT DESTROY PORTION OF 
*         FILE FOLLOWING THAT WRITTEN).  IF RANDOM PARAMETERS ARE 
*         SPECIFED IN THE FET, THE WRITE OCCURS AT THE SPECIFIED
*         RANDOM ADDRESS, OTHERWISE THE WRITE OCCURS AT THE CURRENT 
*         POSITION OF THE FILE. 
  
  
***       FUNCTION 224 - *REWRITER*.
*         END OF RECORD RE-WRITE IN PLACE.  (MASS STORAGE ONLY) 
*         PERFORMS SAME FUNCTION AS *WRITER* BUT PROCESSES
*         OPERATION AS RANDOM FUNCTION (AS NOTED FOR *REWRITE*).
*         A *REWRITER* WITH LEVEL 17B SPECIFIED PERFORMS THE SAME 
*         OPERATION AS A *REWRITEF*.
  
  
***       FUNCTION 234 - *REWRITEF*.
*         END OF FILE RE-WRITE IN PLACE.  (MASS STORAGE ONLY) 
*         PERFORMS THE SAME FUNCTION AS *WRITEF* BUT PROCESSES
*         OPERATION AS RANDOM FUNCTION (AS NOTED FOR *REWRITE*).
  
  
***       FUNCTION 264 - *WRITEN*.
*         WRITE NON-STOP *S* OR *L* FORMAT MAGNETIC TAPES. (TAPE ONLY)
*         WRITES DATA UNTIL BUFFER IS EMPTY OR END-OF-REEL IS 
*         ENCOUNTERED.  A HEADER WORD (SAME FORMAT AS FOR *READN*)
*         MUST PRECEDE EACH PRU IN THE CIRCULAR BUFFER (HEADER
*         IS NOT WRITTEN ON THE TAPE).
          SPACE  4,10 
***       OVERWRITE FUNCTIONS.
  
  
***       FUNCTION 244 - *OVWRITE*. 
*         OVERWRITE FILE WITH BINARY ZEROES (SKIP COUNT = 0)
*         OR DECLASSIFY FILE BY OVERWRITE WITH BINARY ZEROES, 
*         THEN WITH BINARY ONES, AND THEN WITH ALTERNATING
*         ONES AND ZEROES (SKIP COUNT = 3). 
*         FILE IS POSITIONED TO BOI AFTER OPERATION IS COMPLETE.
*         FUNCTION RESPONSE SETS THE COMPLETE BIT OF THE FET, 
*         AND LEAVES THE *LN* FIELD UNALTERED.
  
  
***       FUNCTION 254 - *OVWRITE RETURN*.
*         SAME AS FUNCTION 244 EXCEPT FILE IS RETURNED
*         AFTER OVERWRITE IS COMPLETE.
          SPACE  4,10 
***       POSITION FUNCTIONS. 
  
  
***       FUNCTION 040 - *BKSP*.
*         BACKSPACE RECORD. 
* 
*         STATUS RESPONSE - 
*         000041   OPERATION COMPLETED ON EOR.
*         000051   BOI OR LOAD POINT OF TAPE ENCOUNTERED BEFORE 
*                  OPERATION COMPLETED. 
*         740041   OPERATION COMPLETED ON EOF.
  
  
***       FUNCTION 044 - *BKSPRU*.
*         BACKSPACE USER SPECIFIED NUMBER OF PRUS.
* 
*         STATUS RESPONSE - 
*         000045   OPERATION COMPLETED. 
*         000051   BOI ENCOUNTERED BEFORE OPERATION COMPLETED 
*                  (SPECIFIED NUMBER OF PRUS NOT BACKSPACED). 
  
  
***       FUNCTION 050 - *REWIND*.
*         REWIND FILE.
*         IN AND OUT ARE SET EQUAL TO FIRST.
*         FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE FUNCTION 
*         CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES THE *LN*
*         FIELD UNALTERED.
  
  
***       FUNCTION 054 - *REWIND*.
*         SAME AS FUNCTION 050. 
  
  
***       FUNCTION 060 - *UNLOAD*.
*         UNLOAD FILE.
*         RELEASES FILE ATTACHMENT TO JOB.
*         FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE FUNCTION 
*         CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES THE *LN*
*         FIELD UNALTERED.
  
  
***       FUNCTION 070 - *RETURN*.
*         RETURN FILE.
*         RELEASES FILE ATTACHMENT TO JOB.
*         FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE FUNCTION 
*         CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES THE *LN*
*         FIELD UNALTERED.
  
  
***       FUNCTION 110 - *POSMF*. 
*         POSITION TO SPECIFIED FILE OF MULTI-FILE SET.  (TAPE ONLY)
  
  
***       FUNCTION 114 - *EVICT*. 
*         EVICT FILE. 
*         FOR MASS STORAGE, *EVICT* RELEASES FILE SPACE FOR FILE BUT
*         DOES NOT RELEASE FILE ATTACHMENT TO JOB.  FOR TAPES AND 
*         LOCKED PERMANENT FILES, *EVICT* PERFORMS THE SAME FUNCTION
*         AS *UNLOAD*.
*         FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE FUNCTION 
*         CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES THE *LN*
*         FIELD UNALTERED.
  
  
***       FUNCTION 240 - *SKIPF*/*SKIPFF*/*SKIPEI*. 
*         SKIP SPECIFIED NUMBER OF RECORDS FORWARD (*SKIPF*). 
*         IF LEVEL 17B SPECIFIED, SKIP SPECIFIED NUMBER OF FILES
*         FORWARD (*SKIPFF*). 
*         IF SKIP COUNT = 777777B, SKIP TO EOI (*SKIPEI*).
*         OPERATION TERMINATES WHEN SKIP COUNT IS SATISFIED OR
*         EOI IS ENCOUNTERED. 
* 
*         STATUS RESPONSE - 
*         000261   LAST RECORD SKIPPED WAS EOR. 
*         740271   LAST RECORD SKIPPED WAS EOF. 
*         741271   EOI ENCOUNTERED. 
  
  
***       FUNCTION 640 - *SKIPB*/*SKIPFB*.
*         SKIP SPECIFIED NUMBER OF RECORDS BACKWARD (*SKIPB*).
*         IF LEVEL 17B SPECIFIED, BACKSPACE FILE SPECIFIED
*         NUMBER OF FILES FROM CURRENT POSITION (*SKIPFB*). 
* 
*         STATUS RESPONSE - 
*         000051   BOI OR LOAD POINT OF TAPE ENCOUNTERED BEFORE 
*                  OPERATION COMPLETE FOR RECORD OPERATION. 
*         740051   BOI OR LOAD POINT OF TAPE ENCOUNTERED BEFORE 
*                  OPERATION COMPLETE FOR FILE OPERATION. 
*         000641   OPERATION COMPLETE ON EOR. 
*         740641   OPERATION COMPLETE ON EOF. 
          SPACE  4,10 
***       OPEN FUNCTIONS. 
* 
*         FOR ALL OPEN FUNCTIONS, THE *CIO* PROCESSOR LOADS A RANDOM
*         INDEX INTO THE INDEX AREA SPECIFIED IN THE FET IF THE 
*         RANDOM FILE BIT IS SET.  IF THE INDEX LENGTH IS ZERO, 
*         NO LOAD IS ATTEMPTED AND THE RANDOM FILE BIT IS CLEARED IN
*         THE FET.  THE RANDOM INDEX IS THE LAST RECORD ON THE FILE.
*         IF THIS RECORD IS FOUND TO BE OF ZERO LENGTH, THE RANDOM
*         FILE BIT IS CLEARED.  THE INDEX AREA IS FILLED WITH ZERO
*         WORDS BEFORE THE INDEX IS LOADED.  FOR MASS STORAGE FILES,
*         ALL REWIND FUNCTIONS ARE IDENTICAL (*READ*, *WRITE*,
*         *ALTER*, *REEL*) AND ALL NO REWIND FUNCTIONS ARE IDENTICAL
*         (*READNR*, *WRITENR*, *NR*, *ALTERNR*, *REELNR*). 
*         FOR MAGNETIC TAPE FILES, *READ*, *REEL*, AND *ALTER* ARE
*         IDENTICAL, AS ARE *READNR*, *REELNR*, AND *ALTERNR*.
* 
*         OPEN FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE 
*         FUNCTION CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES
*         THE *LN* FIELD UNALTERED. 
  
  
***       FUNCTION 100 - *READNR*.
*         OPEN - READ, NO REWIND. 
  
  
***       FUNCTION 104 - *WRITENR*. 
*         OPEN - WRITE, NO REWIND.
  
  
***       FUNCTION 120 - *NR* OR *ALTERNR*. 
*         OPEN - NO REWIND. 
*         OPEN - ALTER, NO REWIND.
  
  
***       FUNCTION 140 - *READ*.
*         OPEN - READ, REWIND.
  
  
***       FUNCTION 144 - *WRITE*. 
*         OPEN - WRITE, REWIND. 
  
  
***       FUNCTION 160 - *ALTER*. 
*         OPEN - ALTER, REWIND. 
  
  
***       FUNCTION 300 - *REELNR*.
*         OPEN - READ REEL, NO REWIND.
  
  
***       FUNCTION 340 - *REEL*.
*         OPEN - READ REEL, REWIND. 
          SPACE  4,10 
***       CLOSE FUNCTIONS.
* 
*         FOR ALL CLOSE FUNCTIONS, IF THE FILE IS RANDOM AND HAS BEEN 
*         WRITTEN UPON SINCE THE LAST OPEN, AND AN INDEX AREA IS
*         SPECIFIED, THE RANDOM INDEX IS PLACED ON THE FILE AS THE LAST 
*         RECORD.  THE INDEX IS NOT WRITTEN IF THE FILE IS IN A WRITE 
*         LOCK-OUT STATE.  RETURN AND UNLOAD CLEAR THE ASSIGNMENT OF
*         THE FILE TO THE JOB.
* 
*         CLOSE FUNCTION RESPONSE SETS THE COMPLETE BIT WITH THE
*         FUNCTION CODE IN THE *CODE* FIELD OF THE FET, AND LEAVES
*         THE *LN* FIELD UNALTERED. 
  
  
***       FUNCTION 130 - *NR*.
*         CLOSE - NO REWIND.
  
  
***       FUNCTION 150. 
*         CLOSE - REWIND. 
  
  
***       FUNCTION 170 - *UNLOAD*.
*         CLOSE - UNLOAD. 
  
  
***       FUNCTION 174 - *RETURN*.
*         CLOSE - RETURN. 
  
  
***       FUNCTION 330 - *NR*.
*         CLOSER - NO REWIND. 
  
  
***       FUNCTION 350. 
*         CLOSER - REWIND.
  
  
***       FUNCTION 370 - *UNLOAD*.
*         CLOSER - UNLOAD.
  
  
***       FUNCTION 374 - *RETURN*.
*         CLOSER - RETURN.
          SPACE  4
**        INTERNAL *CIO* FUNCTION CODES.
* 
*         BIT 0 SET IF *FIRST* AND *LIMIT* TO BE VALIDATED
*                SET FOR READ, WRITE, OPEN, REWIND, AND CLOSE/REWIND. 
*         BIT 1 SET IF *IN* AND *OUT* TO BE VALIDATED 
*                SET FOR READ AND WRITE.
*         BITS 2 - 3 = TERMINATION CONDITION
*                (0 = PRU, 1 = EOR, 2 = EOF, 3 = EOI).
*         BIT 4 SET IF *READN*/*WRITEN* FOR MAGNETIC TAPE,
*                OR IF *READLS*/*RPHRLS* FOR MASS STORAGE FILE. 
*         BIT 5 SET IF *READCW*/*WRITECW*.
*         BITS 6 - 9 = INTERNAL FUNCTION CODE.
*         BIT 10 SET IF UNLOAD, SKIP, OR REWRITE OPERATION. 
*                SET FOR *UNLOAD* AND *EVICT* (NOT SET FOR
*                *CLOSE/UNLOAD*), SET FOR ALL SKIP FUNCTIONS
*                AND *READSKP*, SET FOR RANDOM REWRITE OPERATIONS.
*         BIT 11 SET IF BACKWARD OPERATION. 
  
  
          QUAL   CIO
  
*         INTERNAL FUNCTION CODES.
  
 RDF      EQU    0           READ 
 WTF      EQU    1           WRITE
 SKP      EQU    2           SKIP 
 OPE      EQU    3           OPEN 
 CLO      EQU    4           CLOSE
 REW      EQU    5           REWIND 
 RET      EQU    6           RETURN/UNLOAD
 EVI      EQU    7           EVICT
 OVW      EQU    10          OVERWRITE
 MFC      EQU    11          MAXIMUM FUNCTION CODE
  
*         TERMINATION CONDITIONS. 
  
 PRU      EQU    0
 EOR      EQU    4
 EOF      EQU    10B
 EOI      EQU    14B
  
          QUAL   *
          SPACE  4,10 
**        ERROR CODES.
  
  
          QUAL   CIOERR 
  
 BEGIN    BSSN   1
  
*         HANG CONDITIONS.
  
 IEQ      BSSN   1           ILLEGAL EQUIPMENT ON FILE
  
 HMSL     EQU    *           HANG MESSAGE LIMIT 
  
*         WARNING MESSAGES. 
  
 UCF      BSSN   1           UNNECESSARY CIO FUNCTION 
  
 WMSL     EQU    *           WARNING MESSAGE LIMIT
  
*         ERROR MESSAGES. 
  
 ARG      BSSN   1           FET ADDRESS OUT OF RANGE 
 ASD      BSSN   1           ASSIGNED FOR DIAGNOSTICS 
 BLE      BSSN   1           BUFFER CONTROL WORD ERROR
 BUF      BSSN   1           BUFFER ARGUMENT ERROR
 DRE      BSSN   1           DEVICE ERROR 
 EFT      BSSN   1           ERROR FLAG TERMINATION 
 EXO      BSSN   1           I/O ON EXECUTE-ONLY FILE 
 FLN      BSSN   1           ILLEGAL FILE NAME
 FPE      BSSN   1           FET PARAMETER ERROR
 FSQ      BSSN   1           I/O SEQUENCE ERROR 
 FTL      BSSN   1           FILE TOO LONG
 IFM      BSSN   1           ILLEGAL FILE MODIFICATION
 IRQ      BSSN   1           ILLEGAL I/O REQUEST
 ITL      BSSN   1           INDEX TOO LARGE ON OPEN
 IWR      BSSN   1           WRITE ON READ-ONLY FILE
 LFL      BSSN   1           LOCAL FILE LIMIT 
 LNF      BSSN   1           ACCESS LEVEL NOT VALID FOR FILE
 LNJ      BSSN   1           ACCESS LEVEL NOT VALID FOR JOB 
 PRL      BSSN   1           PRU LIMIT
 RAD      BSSN   1           RANDOM ADDRESS NOT ON FILE 
 RUD      BSSN   1           REQUEST UNDEFINED ON DEVICE
 RWT      BSSN   1           INDEX ADDRESS OUT OF RANGE 
 TKL      BSSN   1           TRACK LIMIT
 TNA      BSSN   1           MAGNETIC TAPE NOT AVAILABLE
 WDP      BSSN   1           WRITEDOWN PROHIBITED ON FILE 
  
 MEC      BSSN   0           MAXIMUM ERROR CODE 
 END      BSSN
  
          ERRPL  MEC-100B    LIMIT ERROR CODE FIELD TO 6 BITS 
  
          QUAL   *
          SPACE  4,10 
**        THE FOLLOWING EQUATES DEFINE THE AMOUNT OF I/O PROCESSING 
*         TO BE DONE BY *1MS* BEFORE RELEASING THE PP (ENTERS RECALL
*         STACK IF FUNCTION NOT YET COMPLETE).
*         *RWPC* IS USED TO CALCULATE THE NUMBER OF TRACKS
*         TO PROCESS FOR READ AND BUFFERED WRITE OPERATIONS,
*         BEFORE RELEASING THE PP.
*         *RSPT* DEFINES THE PROCESSING TIME (IN MILLISECONDS)
*         ALLOWED FOR SKIP OPERATIONS (ALSO FOR SKIP PORTION
*         OF *READSKP*) AND FOR A *READLS* (READ RECORDS WITH 
*         LIST) FUNCTION, BEFORE THE PP SHOULD BE RELEASED. 
  
  
 RSPT     EQU    1500D       *1MS* READ/SKIP PROCESSING TIME
  
*         THE VALUE OF *RWPC* HAS BEEN CHOSEN TO ALLOW FOUR TRACKS
*         AT A TIME ON A *DL* AND TWO TRACKS AT A TIME ON A *DQ*. 
  
 RWPC     EQU    227D*3+1 
  
 MSLT     EQU    343B*8D     MAXIMUM SECTORS PER LOGICAL TRACK (DJ-8) 
          ERRNG  7777B-RWPC-MSLT  CHECK IF EXCEEDS 12 BITS
  
*         MAXIMUM NUMBER OF RANDOM ADDRESSES TO PRE-PROCESS 
*         FOR READ WITH LIST FUNCTIONS (*READLS* AND *RPHRLS*). 
*         NOTE THAT *MRAL* ALSO LIMITS THE NUMBER OF PRUS TRANSFERRED 
*         FOR A *RPHRLS* FUNCTION BEFORE THE PP IS RELEASED.
  
 MRAL     EQU    402         MAXIMUM RANDOM ADDRESSES TO PRE-PROCESS
          ERRNG  RWPC-MRAL   LIMIT PRU COUNT
  
*         MAXIMUM NUMBER OF PRUS TO TRANSFER CONSECUTIVELY
*         FOR RECORD BACKSPACE OPERATION. 
  
 MPTB     EQU    200B        MAXIMUM PRUS TO TRANSFER FOR BACKSPACE 
          SPACE  4,10 
**        THE FOLLOWING EQUATES DEFINE THE RECALL TIMES FOR 
*         *1MS*/*CPUCIO* (IN MILLISECONDS). 
  
  
 ACRT     EQU    20D         EXCESSIVE DEVICE ACTIVITY RECALL TIME
 IORT     EQU    6           I/O RECALL TIME
 TIRT     EQU    12D         TRACK INTERLOCK RECALL TIME
 TLRT     EQU    2000D       TRACK LIMIT RECALL TIME
          SPACE  4
          BASE   *
          ENDX
