*COMDECK COMAFET
#     COMAFET - FET DEFINITIONS.  # 
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL ENDIF; 
      COMMON COMAFET; 
  
      BEGIN  # COMAFET COMMON AREA #
  
  
  
# 
*     ARRAY LFET - BASED ARRAY USED IN THE CREATION AND USE OF LOCAL
*     FILE FET I/O. 
# 
  
      BASED 
      ARRAY LFET [0:0] S(LEN$LFET); 
        BEGIN 
        ITEM LFETWD      U(00,00,60);  # WORD IN LFET # 
        ITEM LFETWDC     C(00,00,10);  # WORD IN LFET # 
        ITEM LFETLFN     U(00,00,42);  # LFN #
        ITEM LFETLFNC    C(00,00,07);  # LFN #
        ITEM LFETLEVEL   U(00,42,04);  # LEVEL NUMBER # 
        ITEM LFETEC      U(00,46,05);  # ERROR CODE # 
        ITEM LFET$EOR    B(00,55,01);  # END OF RECORD BIT #
        ITEM LFET$EOF    B(00,55,02);  # END OF FILE BITS # 
        ITEM LFETCIOF    U(00,51,09);  # CIO FUNCTION # 
        ITEM LFETCOMP    B(00,59,01);  # COMPLETE BIT # 
        ITEM LFETDEVTP   U(01,00,06);  # DEVICE TYPE #
        ITEM LFETUP      B(01,14,01);  # USER PROCESSING BIT #
        ITEM LFETEP      B(01,15,01);  # ERROR PROCESSING BIT # 
        ITEM LFETRNDM    B(01,12,01);  # RANDOM FILE BIT #
        ITEM LFETFETL    U(01,36,06);  # LFET LENGTH #
        ITEM LFETFIR     U(01,42,18);  # FIRST POINTER #
        ITEM LFETIN      U(02,42,18);  # IN POINTER # 
        ITEM LFETOUT     U(03,42,18);  # OUT POINTER #
        ITEM LFETPRUSZ   U(04,26,16);  # CIO PRU SIZE # 
        ITEM LFETLIM     U(04,42,18);  # LIMIT POINTER #
        ITEM LFET$UBC    U(06,30,06);  # UNUSED BIT COUNT # 
        ITEM LFETIDXLEN  U(07,24,18);  # INDEX LENGTH # 
        ITEM LFETIDXFWA  U(07,42,18);  # FWA OF INDEX # 
        END 
  
# 
*     ARRAY RFET - BASED ARRAY USED IN THE CREATION AND USE OF RHF FET
*     I/O.
# 
  
      BASED 
      ARRAY RFET [0:0] S(LEN$RFET); 
        BEGIN 
        ITEM RFETWD      U(00,00,60);  # WORD IN RFET # 
        ITEM RFETWDC     C(00,00,10);  # WORD IN RFET # 
        ITEM RFETLFN     U(00,00,42);  # LFN #
        ITEM RFETLFNC    C(00,00,07);  # LFN #
        ITEM RFETLEVEL   U(00,42,04);  # LEVEL NUMBER # 
        ITEM RFETEC      U(00,46,05);  # ERROR CODE # 
        ITEM RFETRHFF    U(00,51,09);  # RHF FUNCTION # 
        ITEM RFET$EOR    B(00,55,01);  # END OF RECORD BIT #
        ITEM RFET$EOF    B(00,55,02);  # END OF FILE BITS # 
        ITEM RFETCOMP    B(00,59,01);  # COMPLETE BIT # 
        ITEM RFETEP      B(01,15,01);  # ERROR PROCESSING BIT # 
        ITEM RFETRNDM    B(01,12,01);  # RANDOM FILE BIT #
        ITEM RFETFETL    U(01,36,06);  # RFET LENGTH #
        ITEM RFETFIR     U(01,42,18);  # FIRST POINTER #
        ITEM RFETIN      U(02,42,18);  # IN POINTER # 
        ITEM RFETOUT     U(03,42,18);  # OUT POINTER #
        ITEM RFETLIM     U(04,42,18);  # LIMIT POINTER #
        ITEM RFETDD      U(05,00,12);  # DATA DECLARATION # 
        ITEM RFET$UBC    U(05,12,12);  # UNUSED BIT COUNT # 
        ITEM RFETABN     I(05,42,18);  # APLICATION BLOCK NUMBER #
        END 
  
  
  
# 
*  FOLLOWING TWO ARRAYS ARE USED ALTERNATE ACCESS TO THE FET'S
*  BY USE--INPUT OR OUTPUT. 
# 
  
      BASED ARRAY GETFET [0:0] S(6);   # INPUT FET #
        BEGIN 
        ITEM GFETLEVEL U(00,42,04);    # SECTION LEVEL    # 
        ITEM GFETEC    U(00,46,05);    # ERROR CODE       # 
        ITEM GFETFUNC  U(00,51,09);    # FUNCTION CODE    # 
        ITEM GFET$EOR   B(00,55,01);  # EOR FLAG #
        ITEM GFETCOMPL B(00,59,01);    # COMPLETION FLAG  # 
        ITEM GFETFIR   U(01,42,18);    # FIRST POINTER    # 
        ITEM GFETIN    U(02,00,60);    # IN POINTER       # 
        ITEM GFETOUT   U(03,00,60);    # OUT POINTER      # 
        ITEM GFETLIM   U(04,42,18);    # LIMIT POINTER    # 
        END    # ARRAY GETFET # 
  
      BASED ARRAY PUTFET [0:0] S(6);   # OUTPUT FET # 
        BEGIN 
        ITEM PFETLEVEL U(00,42,04);    # EOR LEVEL NO.    # 
        ITEM PFETEC    U(00,46,05);    # ERROR CODE       # 
        ITEM PFETFUNC  U(00,51,09);    # FUNCTION CODE    # 
        ITEM PFET$EOR  U(00,55,01);    # EOR FLAG         # 
        ITEM PFETCOMPL B(00,59,01);    # COMPLETION FLAG  # 
        ITEM PFETFIR   U(01,42,18);    # FIRST POINTER    # 
        ITEM PFETIN    U(02,00,60);    # IN POINTER       # 
        ITEM PFETOUT   U(03,00,60);    # OUT POINTER      # 
        ITEM PFETLIM   U(04,42,18);    # LIMIT POINTER    # 
        END    # ARRAY PUTFET # 
  
  
  
# 
*  ARRAY XFRHOLD IS USED TO HOLD DATA AND POINTERS ACCROSS BOUNDARY 
*  CONDITIONS--CONDITIONS WHEN XLATE MUST GIVE UP CONTROL FOR A 
*  WHILE.  THE DATA ARE STORED IN THE BUFFER BLOCK FOR THE FILE 
*  BEING TRANSFERRED. 
# 
  
      BASED ARRAY XFRHOLD [0:0] S(LEN$XTRA);
        BEGIN 
        ITEM CVTTYPE    U(00,00,60);  # CONVERSION TYPE 
                                          1 = CN -> C6
                                          2 = CN -> C8
                                          3 = C6 -> CN
                                          4 = C8 -> CN  # 
        ITEM CVTSTATE   U(01,00,60);  # CONVERSION STATE
                                          0 = NORMAL
                                            <> RECALL CVT  #
        ITEM INPTR      U(02,00,60);  # PREVIOUS INPUT WORD POINTER  #
        ITEM INBLKBYT   U(03,00,60);  # NUMBER OF BYTES WITHIN INPUT  # 
        ITEM INWDBYT    U(04,00,60);  # SEE CVT # 
        ITEM OUTPTR     U(05,00,60);  # PREVIOUS OUTPUT WORD POINTER  # 
        ITEM OUTBLKBYT  U(06,00,60);  # NUMBER OF BYTES FREE  # 
        ITEM OUTWDBYT   U(07,00,60);  # BYTES USED IN OUTPUT WORD # 
        ITEM CVTTBLPTR  U(08,00,60);  # CONVERSION TABLE POINTER  # 
        ITEM CURINWD    U(09,00,60);  # SEE CVT # 
        ITEM INDATSTATE U(10,00,03);  # IN DATA STATE # 
        ITEM INIOSTATE  U(10,03,03);  # IN I/O STATE #
        ITEM INTAPE     B(10,07,01);  # TAPE READ # 
        ITEM INTAPERTRY B(10,08,01);  # TAPE READ RETRY # 
        ITEM INCWS      B(10,09,01);  # INPUT CONTROL WORDS FLAG #
        ITEM INWRAP     B(10,10,01);  # IN WRAP AROUND FLAG # 
        ITEM INLEVEL    U(10,11,04);  # IN EOR LEVEL #
        ITEM INCHARPWD  U(10,17,04);  # INPUT CHARACTERS PER WORD # 
        ITEM INFUNC     U(10,21,09);  # BASIC READ FUNCTION # 
        ITEM INWDSIZE   U(10,30,12);  # WORD SIZE OF INPUT EXTENT # 
        ITEM INPART2    U(10,42,18);  # CHARACTERS IN EXTENT PART 2 # 
        ITEM INTOTBITS  U(11,00,60);  # TOTAL INPUT BIT COUNT # 
        ITEM INBLKBITS  U(12,00,18);  # BIT COUNT IN FULL EXTENT #
        ITEM INMINSPACE U(12,18,12);  # MINIMUM INPUT SPACE BEFORE I/O #
        ITEM INBITSBYT  U(12,30,06);  # INPUT BITS PER CHARACTER #
        ITEM INNUMCWS   U(12,36,06);  # INPUT NUMBER OF CONTROLWORDS #
        ITEM INBUFSIZE  U(12,42,18);  # INPUT BUFFER SIZE # 
  
        ITEM OTDATSTATE U(13,00,03);  # OUT DATA STATE #
        ITEM OTIOSTATE  U(13,03,03);  # OUT I/O STATE # 
        ITEM OTCWS      B(13,09,01);  # OUTPUT CONTROL WORDS FLAG # 
        ITEM OTWRAP     B(13,10,01);  # OUT WRAP AROUND FLAG #
        ITEM OTLEVEL    U(13,11,04);  # OUT EOR LEVEL # 
        ITEM OTCHARPWD  U(13,17,04);  # OUTPUT CHARACTERS PER WORD #
        ITEM OTFUNC     U(13,21,09);  # BASIC WRITE FUNCTION #
        ITEM OTWDSIZE   U(13,30,12);  # WORD SIZE OF OUTPUT EXTENT #
        ITEM OTPART2    U(13,42,18);  # CHARACTERS IN EXTENT PART 2 # 
        ITEM OTTOTBITS  U(14,00,60);  # TOTAL OUTPUT BIT COUNT #
        ITEM OTBLKBITS  U(15,00,18);  # BIT COUNT IN FULL EXTENT #
        ITEM OTMINDATA  U(15,18,12);  # MINIMUM OUTPUT DATA BEFORE I/O #
        ITEM OTBITSBYT  U(15,30,06);  # OUTPUT BITS PER CHARACTER # 
        ITEM OTNUMCWS   U(15,36,06);  # OUTPUT NUMBER OF CONTROLWORDS # 
        ITEM OTBUFSIZE  U(15,42,18);  # OUTPUT BUFFER SIZE #
        ITEM OTFULLCW   U(16,00,60);  # PRESET FULL OUTPUT CONTROL WD # 
#     NOTE - THE FOLLOWING FIELD IS DEFINED TWICE:  # 
#       OTEXTBYT IS USED ONLY DURING 2-BUFFER I-O,  # 
#       OTDATAWDS IS USED ONLY DURING 1-BUFFER I-O. # 
      ITEM OTEXTBYT   U(17,00,18);  # CURRENT OUTPUT EXTENT BYTE COUNT #
        ITEM OTDATAWDS  I(17,00,18);  # DATA WORDS AWAITING OUTPUT #
      CONTROL IFEQ OS$NOSBE;
        ITEM OTPUTRNDA  B(17,18,01);  # SEND RANDOM ATTRIBUTE # 
        ITEM OTGETRNDA  B(17,19,01);  # RECEIVE RANDOM ATTRIBUTE #
        ITEM OTRANDOM   B(17,20,01);  # RECEIVED FILE IS RANDOM # 
        ITEM INRANDOM   B(17,21,01);  # SENDING FILE IS RANDOM #
      CONTROL ENDIF;
        ITEM INBITSCHR  U(17,30,06);  # INPUT VALID BITS PER CHARACTER #
        ITEM OTBITSCHR  U(17,36,06);  # OUTPUT VALID BITS PER CHAR #
        ITEM OTFULLBYT  U(17,42,18);  # SIZE OF OUTPUT EXTENT IN CHARS #
        ITEM OLDTOTBITS U(18,00,60);  # PREVIOUS OTTOTBITS VALUE #
#     NOTE - THE FOLLOWING WORD IS DEFINED TWICE:                  #
#         PREVCWPTR FOR 1-BUFFER I/O,  PREVINFULL FOR 2-BUFFER I/O #
        ITEM PREVCWPTR  U(19,00,60);  # PREVIOUS CW POINTER # 
        ITEM PREVINFULL B(19,00,60);  # PREVIOUS INPUT (PRU) WAS FULL # 
        END   # ARRAY XFRHOLD # 
  
      BASED ARRAY CW [0:0]; 
        BEGIN 
        ITEM CWWORD     U(0,00,60); 
      CONTROL IFEQ OS$NOSBE;
        ITEM CWRNDA     B(0,00,01);  # RANDOM ATTR (FIRST CW ONLY) #
      CONTROL ENDIF;
        ITEM CWPRU      U(0,06,18); 
        ITEM CWUBC      U(0,30,06); 
      CONTROL IFEQ OS$NOS;
        ITEM CWBYTC     U(0,36,24); 
      CONTROL ENDIF;
      CONTROL IFEQ OS$NOSBE;
        ITEM CWBYTC     U(0,48,12); 
      CONTROL ENDIF;
        END 
  
      BASED ARRAY LVLCW [0:0];
        BEGIN 
        ITEM LVLCWLVL   U(0,00,12); 
        END 
  
      CONTROL IFEQ OS$NOSBE;
      ARRAY [0:VALDTMAX] S(1);     # VALID LOCAL FILE DEVICE TYPES #
        BEGIN 
        ITEM VALDT      U(00,00,06) = [ 0            # UNASSIGNED # 
                                      ,AY 
                                      ,AZ 
                                      ,AH 
                                      ,AJ 
                                      ,AX 
                                      ,MT 
                                      ,NT 
                                      ,MTMF 
                                      ,NTMF 
                                      ];
        END 
      CONTROL ENDIF;
  
      END  # COMAFET COMMON AREA #
                                               CONTROL LIST;
