*COMDECK COMRNDR
#     COMRNDR - NDR COMMUNICATION DESCRIPTION. #
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
# 
***   COMRNDR - NDR COMMUNICATION DESCRIPTION.
* 
*     COMRNDR CONTAINS THE ARRAY DEFINITIONS FOR NDR COMMUNICATION. 
*     EACH NDR HAS A UNIQUE COMMUNICATION AREA WITHIN THE RHF FIELD 
*     LENGTH.  THE FIRST TWO WORDS OF THE COMMUNICATION AREA ARE
*     PARAMETERS PASSED TO NDR.  THE REMAINING WORDS ARE PARAMETERS 
*     PASSED TO RHF.
# 
  
      BEGIN  # COMRNDR COMDECK #
  
      DEF RHF$MAXNDRS  #4#;          # SUBSYSTEM MAXIMUM NDRS # 
      DEF NDR$LENGTH #8#;            # LENGTH OF NDR COMM. AREA # 
      DEF NDR$LASTF  #O"30"#;        # LAST FUNCTION CODE # 
      DEF NF$IDLE    #1#;            # IDLE FUNCTION #
      DEF NF$STATUS  #2#;            # STATUS FUNCTION #
      DEF NF$DROP    #3#;            # DROPOUT FUNCTION # 
      DEF NF$REQCON  #4#;            # REQUEST CONNECTION # 
      DEF NF$OBTCONR #5#;            # OBTAIN CONNECT REQUEST # 
      DEF NF$CONRRPY #6#;            # CONNECT REQUEST REPLY #
      DEF NF$SNDCTL  #7#;            # SEND CONTROL MESSAGE # 
      DEF NF$READ    #O"10"#;        # READ PATH DATA # 
      DEF NF$WRITE   #O"11"#;        # WRITE PATH DATA #
      DEF NF$DISCON  #O"12"#;        # DISCONNECT PATH #
      DEF NF$FLUSH   #O"13"#;        # FLUSH PATH # 
      DEF NF$INITNAD #O"14"#;        # INITIALIZE NAD # 
      DEF NF$FREAD   #O"15"#;        # FET I/O READ # 
      DEF NF$FWRITE  #O"16"#;        # FET I/O WRITE #
      DEF NF$FWRITER #O"17"#;        # FET I/O WRITER # 
      DEF NF$FWRITEF #O"20"#;        # FET I/O WRITEF # 
      DEF NF$FCLOSE  #O"21"#;        # FET I/O CLOSE #
      DEF NF$FREADC  #O"22"#;        # FET I/O READC #
      DEF NF$FWRITEC #O"23"#;        # FET I/O WRITEC # 
      DEF NF$SELCM   #O"24"#;        # SELECT CONVERT MODE #
      DEF NF$EXITCM  #O"25"#;        # EXIT CONVERT MODE #
      DEF NF$CMREAD  #O"26"#;        # CONVERT MODE READ #
      DEF NF$CMWRITE #O"27"#;        # CONVERT MODE WRITE # 
      DEF NF$START   #O"30"#;        # START NDR #
      DEF RTN$OFF    #1#;            # NAD OFF #
      DEF RTN$REISSU #2#;            # REISSUSE # 
      DEF RC$QACK    #3#;            # QUEUE ACK #
      DEF RC$NOMATCH #4#;            # NO LID MATCH # 
      DEF VERYSHORT  #4#;            # VERY SHORT IDLE (4 MILLISEC) # 
      DEF SHORTIDLE  #20#;           # SHORT IDLE (20 MILLISECONDS) # 
      DEF LONGIDLE   #200#;          # LONG IDLE (200 MILLISECONDS) # 
      DEF SHORTRECAL #4#;            # MAXIMUM VERY SHORT IDLES # 
      DEF MAXRECALLS #29#;           # MAXIMUM SHORT AND VERY SHORT IDL#
  
# 
*     CONVERT MODE FET I/O FUNCTIONS. 
# 
  
      DEF CM$READ    #0#;            # FET I/O READ # 
      DEF CM$READC   #1#;            # FET I/O READC #
      DEF CM$WRITE   #0#;            # FET I/O WRITE #
      DEF CM$WRITER  #1#;            # FET I/O WRITER # 
      DEF CM$WRITEF  #2#;            # FET I/O WRITEF # 
      DEF CM$CLOSE   #3#;            # FET I/O CLOSE #
      DEF CM$WRITEC  #4#;            # FET I/O WRITEC # 
      DEF NULLSFC    #0#;            # NULL SUB-FUNCTION #
  
# 
*     CONVERT MODE CONTROL FUNCTIONS. 
# 
  
      DEF NOCONMODE  #0#;            # NO CODE CONVERSION # 
      DEF ENACONMODE #1#;            # ENABLE CODE CONVERSION # 
      DEF DISCONMODE #2#;            # DISABLE CODE CONVERSION #
  
      COMMON COMRNDR; 
      BEGIN  # COMRNDR COMMON AREA #
  
      ITEM ACTIVENDRS I = 0;         # ACTIVE NDRS #
      ITEM REQ$DROPIL B;             # REQUEST AND DROP INTERLOCK FLAG #
  
      BASED ARRAY NDR$COMMUN S(NDR$LENGTH); 
        BEGIN # NDR FUNCTION DESCRIPTIONS # 
  
# 
*     GENERAL COMMUNICATION FORMAT
# 
  
#       ITEM NDR$RES    I(00,00,12)    RESERVED FOR INSTALLATION #
        ITEM NDR$RQCHG  B(00,12,01); # REQUEST AREA BEING CHANGED # 
        ITEM NDR$CHDED  B(00,13,01); # CHANNEL DEDICATED #
        ITEM NDR$ACTIVE B(00,14,01); # NDR ACTIVE # 
        ITEM NDR$ESTORD U(00,15,09); # EST ORDINAL #
        ITEM NDR$CHAN   U(00,24,06); # CHANNEL NUMBER # 
        ITEM NDR$QADDR  U(00,30,18); # QUEUE ADDRESS #
        ITEM NDR$NADORD U(00,48,06); # LOCAL NAD ORDINAL #
        ITEM NDR$FUNC   I(00,54,06); # NDR FUNCTION # 
        ITEM NDR$UPERR  U(02,24,12); # USER PARAMETER ERROR # 
        ITEM NDR$PTHERR B(02,36,01); # PATH ERROR # 
        ITEM NDR$RTNCOD I(02,37,11); # RETURN CODE #
        ITEM NDR$FUNCOM I(02,48,12); # FUNCTION COMPLETED # 
  
# 
*     IDLE
# 
  
        ITEM NDR$RECALL I(01,00,12); # STATUS RECALL COUNT #
        ITEM NDR$IDLTIM I(01,48,12); # IDLE TIME IN MILLISECONDS #
  
# 
*     STATUS
# 
  
        ITEM NDR$CTLMSG B(02,00,01); # CONTROL MESSAGE INPUT #
        ITEM NDR$CONREQ B(02,01,01); # CONNECT REQUEST AVAILABLE #
        ITEM NDR$ESTOFF B(02,02,01); # EST IS OFF # 
  
# 
*     REQUEST CONNECTION
# 
  
        ITEM NDR$RTNPTH U(02,24,12); # PATH ID #
  
# 
*     CONNECT REQUEST REPLY 
# 
  
        ITEM NDR$REPLY  U(01,48,12); # REPLY #
  
# 
*     SEND CONTROL MESSAGE
# 
  
        ITEM NDR$BYLGTH I(01,48,12); # BYTE LENGTH OF CTL MSG # 
# 
*     READ PATH DATA AND SEND ACK 
# 
  
        ITEM NDR$PATHID I(01,00,12); # PATH ID #
        ITEM NDR$JDTORD I(01,12,12); # JDT ORDINAL #
        ITEM NDR$ACT    I(01,24,06); # ACT #
        ITEM NDR$ACKQ   I(01,30,18); # ACK QUEUE ADDRESS #
        ITEM NDR$ACN    I(01,48,12); # ACN #
  
# 
*     WRITE PATH DATA 
# 
  
      ITEM NDR$ABN      I(02,06,18); # ABN #
  
# 
*     INITIALIZE NAD. 
# 
  
        ITEM NDR$CMCSF  U(01,24,12); # CONVERT MODE CONTROL FUNCTION #
        ITEM NDR$CMBUFF U(01,36,12); # CONVERT MODE BUFFERS # 
        ITEM NDR$CMPATH U(01,48,12); # CONVERT MODE PATHS # 
        ITEM NDR$CMPTHA U(02,12,12); # CONVERT MODE PATHS AVAILABLE # 
        ITEM NDR$CMBFFA U(02,24,12); # CONVERT MODE BUFFERS ALLOCATED # 
  
# 
*     FET I/O (READ, WRITE, WRITER, WRITEF, CLOSE, READC, WRITEC) 
# 
  
        ITEM NDR$FETSFC U(01,24,06); # FET SUB FUNCTION CODE #
        ITEM NDR$FETADR I(01,30,18); # FET ADDRESS #
        ITEM NDR$RETRY  U(01,48,12); # RETRY COUNT #
        ITEM NDR$BLKRED I(03,12,24); # BLOCKS READ #
        ITEM NDR$BLKWRT I(03,36,24); # BLOCKS WRITTEN # 
  
# 
*     SELECT CONVERT MODE.
# 
  
        ITEM NDR$CMTYPE U(01,48,12); # CONVERT MODE TYPE #
  
# 
*     EXIT CONVERT MODE.
# 
  
        ITEM NDR$CMSTAT U(03,12,12); # CONVERT MODE EXIT STATUS # 
        ITEM NDR$CMNABN U(03,24,18); # CONVERT MODE NETWORK ABN # 
        ITEM NDR$CMHABN U(03,42,18); # CONVERT MODE HOST ABN #
  
        END # NDR FUNCTION DESCRIPTIONS # 
  
      CONTROL IFEQ RHF$MAXNDRS; 
      DEF RHF$MAXNDRS  #1#;          # SUBSYSTEM MAXIMUM NDRS # 
      CONTROL ENDIF;
# 
*               *** CAUTION *** 
*     THE NDR COMMUNICATION ADDRESS PASSED TO NDR MUST BE A MULTIPLE
*     OF 10B. AN EXTRA ENTRY IS GENERATED TO ALLOW ROUNDING UP.  THE
*     LENGTH OF AN ENTRY IS ASSUMED TO BE .GE. 10B. 
*             NDRCOM = (LOC(NDRCOMAREA) + 7) / O"10" * O"10"
* 
# 
      ARRAY NDRCOMAREA [0:RHF$MAXNDRS] S(NDR$LENGTH); 
        ; 
  
      END  # COMRNDR COMMON AREA #
  
      END  # COMRNDR COMDECK #
                                               CONTROL LIST;
