*COMDECK COMFETIO 
FET       TITLE  FET - FET I/O. 
**        FET - FET I/O.
* 
*         ZERO TERMINATION STATUS INDICATORS. 
*         SWITCH TO UCP.
*         VALIDATE FET ADDRESS. 
*         READ FET WORD FIVE. 
*         CALL FUNCTION PROCESSOR.
*         CALL TO COMPLETE FET IF INDICATED BY FUNCTION PROCESSOR.
*         CALL TO RELEASE CHANNEL.
*         CALL TO SWITCH TO RHF.
*         WRITE EVENT AND BLOCK COUNTS. 
*         RETURN. 
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = 1, NORMAL RETURN.
*                      0, ADDRESS ERROR.
* 
*         USES   D.T0 - D.T4, D.REQ3, COMMADR, EVENT, ONE,
*                STATUS.
* 
*         CALLS  FCL, FCP, FRC, FRD, FWC, REL, RHF, UCP.
* 
*         NOTE   NDR DOES NOT CURRENTLY SUPPORT UBC FOR 
*                C6 CHARACTER TRANSFERS.
* 
*                NDR DOES NOT SUPPORT DISPLAY CODE FOR FET I/O
*                ROUTINES - READ, READC, WRITE, WRITEC. 
*                ATTEMPTS TO USE DISPLAY CODE IN THESE ROUTINES 
*                WILL RESULT IN A FET PARAMETER ERROR.
*                (NETXFR C6 TRANSFERS ARE CONVERTED TO/FROM 
*                ASCII BY FIP.) 
  
  
 FET      ENM    X                 ENTRY/EXIT 
 CMD      IF     DEF,CONMODE
          LDN    0
          STM    BLKERR            INITIALIZE FET BLOCK ERROR REPLY 
 CMD      ENDIF 
          LDN    P.ZERO 
          CRD    EVENT             ZERO EVENT, UBC, DBC, DD, AND WDSUSED
          CRM    BLKCNT,ONE        ZERO BLOCK COUNTS
          RJM    UCP               SWITCH TO UCP CONTROL POINT
          NJN    FET1              IF COULD NOT SWITCH
          FETREL 5
          NJN    FET2              IF VALID FET ADDRESS 
          LDK    RC.FPARM          USER PARAMETER ERROR 
 FET1     STD    D.REQ3+C.RC       SAVE RHF RETURN CODE 
          UJN    FET4 
  
 FET2     CRM    FETWD5,ONE        READ FET WORD FIVE 
          IF     DEF,FREAD,1
          RJM    FRD               PERFORM FET I/O READ 
          IF     DEF,FREADC,1 
          RJM    FRC               PERFORM FET I/O READC
          IF     DEF,FWRITE,1 
          RJM    FCL               PERFORM FET I/O WRITE
          IF     DEF,FWRITEC,1
          RJM    FWC               PERFORM FET I/O WRITEC 
          IF     DEF,CMREAD,1 
          RJM    RCM               READ DATA IN CONVERT MODE
          IF     DEF,CMWRITE,1
          RJM    WCM               WRITE DATA IN CONVERT MODE 
          ZJN    FET4              IF FET NOT TO BE COMPLETED 
          PJN    FET3              IF FET ERROR CODE RETURNED 
 CMD      IF     DEF,CONMODE
          LDD    ERROR
          SHN    17-SBERR 
          PJN    FET2.5            IF NOT CONVERT MODE BLOCK ERROR
          RJM    LOG               LOG BLOCK ERROR
          LDM    BLKERR 
          UJN    FET3 
  
 FET2.5   BSS    0
 CMD      ENDIF 
          LDN    0                 SET SUCCESSFUL COMPLETION
 FET3     RJM    FCP               COMPLETE FET 
 FET4     LDN    0                 COMPLETELY 
          RJM    REL               RELEASE CHANNEL
          RJM    RHF               SWITCH TO RHF CONTROL POINT
 CMD      IF     DEF,CONMODE
          LDN    0
          STM    BLKERR            RESET FET BLOCK ERROR
 CMD      ENDIF 
          LDN    P.ZERO 
          CRD    D.T0 
          LDD    EVENT
          ZJN    FET5              IF NO EVENT TO REPORT
          STD    D.T0+C.EVENT      SET EVENT
          LDD    STATUS 
          SHN    -S.CSTOA 
          LPN    3B 
          STD    D.T0+C.STATUS     SET PATH STATUS
 FET5     LDD    COMMADR
          SHN    3
          ADN    W.REQ5 
          ADDRA  ER=FET6
          CWD    D.T0              WRITE EVENT TO RHF COMM. AREA
          SBN    W.REQ5-W.REQ4
          CWM    BLKCNT,ONE        WRITE BLOCK COUNTS TO RHF COMM. AREA 
          LDN    1                 NORMAL RETURN
 FET6     LJM    FETX 
FCP       SPACE  4,10 
**        FCP - COMPLETE FET I/O. 
* 
*         SAVE FET RETURN CODE. 
*         OBTAIN FIELD ACCESS.
*         IF ADDRESS ERROR
*         THEN
*           SET USER PARAMETER ERROR. 
*           RETURN. 
*         READ FIRST FET WORD.
*         SET COMPLETE BIT. 
*         IF READ FUNCTION THEN CALL READ COMPLETE (RCP). 
*         WRITE FIRST FET WORD. 
*         RETURN. 
* 
*         ENTRY  (A) = FET RETURN CODE. 
* 
*         EXIT   NONE.
* 
*         USES   D.Z7 - D.T4, D.REQ3. 
* 
*         CALLS  RCP, R.RAFL. 
  
  
 FCP      ENM    X                 ENTRY/EXIT 
          STD    D.Z7              SAVE FET RETURN CODE 
          IF     -DEF,NOS,1 
          RJM    R.RAFL            OBTAIN FIELD ACCESS
          FETREL 0
          NJN    FCP2              IF NO ADDRESS ERROR
          LDK    RC.FPARM          USER PARAMETER ERROR 
          STD    D.REQ3+C.RC
 FCP1     UJN    FCPX 
  
 FCP2     CRD    D.T0              READ FIRST FET WORD
          LDD    D.T0+C.COMP
          LPC    776B              CLEAR COMPLETE AND RETURN CODE 
          ADN    1                 SET COMPLETE BIT 
          STD    D.T0+C.COMP
          LDD    D.Z7 
          SHN    9
          RAD    D.T0+C.COMP       SET IN RETURN CODE (LOWER PART)
          SHN    -12
          STD    D.Z7 
          LDD    D.T0+C.LVL 
          SCN    77B
          ADD    D.Z7              SET IN UPPER PART OF RETURN CODE 
          STD    D.T0+C.LVL 
          IF     DEF,FREAD,1
          RJM    RCP               CALL READ COMPLETE 
          IF     DEF,CMREAD,1 
          RJM    RCP               READ COMPLETE
          FETREL 0
          CWD    D.T0              WRITE FIRST FET WORD 
          UJN    FCP1              RETURN 
LFT       SPACE  4,10 
**        LFT - LOAD FET ADDRESS. 
* 
*         ENTRY  (A) = FET OFFSET.
* 
*         EXIT   (A) = ABSOLUTE CM ADDRESS. 
*                    = 0, ADDRESS ERROR.
* 
*         USES   D.Z0, D.REQ2.
  
  
 LFT      ENM    X                 ENTRY/EXIT 
          STD    D.Z0              SAVE FET OFFSET
          LDD    D.REQ2+C.FETADR
          LPN    77B               PICK UP FET ADDRESS
          SHN    12 
          LMD    D.REQ2+C.FETADR+1
          ADD    D.Z0 
          ADDRA  ER=0 
          UJN    LFTX 
DEL       SPACE  4,10 
**        DEL    DELAY FOR A WHILE. 
* 
*         ENTRY  (DELA) = RETRY COUNT.
* 
*         EXIT   (A) .GE. 0, SUCCESSFUL DELAY.
*                (A) .LT. 0, RETRIES EXHAUSTED. 
* 
*         USES   NONE.
* 
*         CALLS  REL. 
  
  
 DEL      ENM    X
          SOM    DELA              DECREMENT RETRY COUNTER
          MJN    DELX              IF RETRIES EXHAUSTED 
          LDD    D.REQ1+C.REQFLG
          SHN    17-S.CHNDED
          MJN    DEL0              IF CHANNEL DEDICATED 
          LDN    1                 TEMPORARILY
          RJM    REL               RELEASE CHANNEL
 DEL0     LDK    DELTIM            DELAY TIME 
 DEL1     SBN    1
          NJN    DEL1              IF DELAY NOT DONE
          UJN    DELX 
  
 DELA     BSSZ   1                 RETRY COUNTER
