*COMDECK NP$NWL 
      #* * * * * * * ---------- NP$NWL  ---------- * * * * * * * * * * #
      DEF AWLID     #35#;               # WORK LIST ID                 #
      DEF AWLESIZE  # 2#;               # AWL ENTRY SIZE               #
      DEF GMMSCN    # 0#;               # SEARCH AIP DATA BUF FOR CON  #
      DEF GMMSLN    # 1#;               # SEARCH AIP DATA BUF FOR LIST #
      DEF GMMDCN    # 2#;               # DISCARD CON DATA IN AIP BUF  #
      DEF GMMDLN    # 3#;               # DISCARD LIST DATA IN AIP BUF #
      DEF GMMLOF    # 4#;               # LIST OFF PROCESS IN AIP BUF  #
      DEF GMMLON    # 5#;               # LIST ON PROCESS IN AIP BUF   #
      DEF GMMLHX    # 6#;               # LIST HALF DUPLEX PROCESS     #
      DEF GMMLFX    # 7#;               # LIST FULL DUPLEX PROCESS     #
      DEF LWL       #62#;               # LENGTH OF NWL, NOT INCLUDING #
                                        # NCTL AND NHDR WORDS          #
      DEF MAXABSIZE #4095#;             # MAX SIZE OF DOWNLINE BUFFER  #
      DEF MINABSIZE #500#;              # MIN SIZE OF DOWNLINE BUFFER  #
      DEF NCTL      #0#;                # NWL CONTROL WORD INDEX       #
      DEF NHDR      #1#;                # NWL HEADER INDEX             #
      DEF NNTR      #2#;                # NWL START OF WORKLIST INDEX  #
      DEF FIRST     #64#;               # FIRST WORD OF NP$SMB- NO  HDR#
      DEF LAST      #127#;              # INDEX OF LAST WORD =WLLEN    #
      DEF WLS       #64#;               # SIZE   OF NETSMB WORK LIST   #
      DEF WLLEN     #127#;              # TOTAL WORKLIST LENGTH-1      #
      DEF NONBSIZE  # 5#;               # NETON ENTRY SIZE             #
      DEF NRRBSIZE  # 2#;               # NETRR ENTRY SIZE             #
      DEF GMMSIZE   # 2#;               # SIZE OF GMM ENTRY            #
      DEF XFRBSIZE  # 2#;               # LENGTH OF XFR WOKRLIST       #
      DEF NTRYSIZ3  # 3#;               # 3 WORD ENTRY/ OP,ABH,NULL WD #
      DEF NXTSIZE   # 4#;               # OP WD + ABH + 2W GSM + 2W GMM#
      DEF OPABHSIZ  # 2#;               # SPACE FOR OP WORD PLUS ABH   #
  
      COMMON NP$NWL;
      BEGIN 
      ITEM
*IF,DEF,STAT
        IAM             I,              # ROUTINE CURRENTLY EXECUTING  #
*ENDIF
        BS              I,              # NWL ENTRY SIZE               #
        GMBLN           I,              # APP LIST NO FOR GMM BUF DATA #
        GMBCN           I,              # APP CON NO FOR GMM BUF DATA  #
        GMBHEAD         I,              # BEGINNING OF DATA IN GMM BUF #
        GMBFOOT         I,              # END OF DATA IN GMM BUF       #
        GMBLAST         I,              # INDEX FOR LWA OF GMM BUF     #
        GMBTRUNC        B=FALSE,        # TRUNCATE DATA FROM GMM BUF   #
        GMMESIZE        I,              # SIZE OF GMM ENTRY            #
        NEXT            I=0,            # INDEX OF NEXT WORD IN NWL.   #
        HEAD            I,              # START OF SUPERVISORY MESSAGES#
        FOOT            I,              # NEXT FREE WORD IN SMB        #
        LTAA            I=0,            # LENGTH OF TEXT AREA ARRAY    #
        PN              I,              # PROCESS NO. ASSIGNED BY NIP  #
        LOC$APBUF       I,              # LOC OF DOWNLINE MSG BUFFER   #
        LOC$HA          I,              # LAST LOC(ABH)                #
        LOC$TA          I,              # LAST LOCATION OF TEXT ARRAY  #
        NP$ANAM         C(7),           # APPLICATION NAME             #
*IF DEF,DEBUG 
        NP$NA           I,              # NUMBER OF TAA AREAS          #
*ENDIF
        NEXTSMLEN       I,              # LENGTH OF NEXT SUP MSG IN NIP#
        SPACE$LEFT      I,              # NO. OF WORDS LEFT IN NWL     #
        TLMX            I;              # APPLICATIONS MAX BLOCK LENGTH#
  
      BASED ARRAY NSUPWRD[0:0]S(1); 
        BEGIN 
  
        ITEM C$FLAG    B (0,0,1);       # COMPLETED PROCESSING FLAG    #
        ITEM N$FLAG    B (0,2,1);       # NAM AVAILABLE FLAG.          #
        ITEM I$FLAG    B (0,3,1);       # TRUE-IF DATA IN NIP AVAILABLE#
        ITEM S$FLAG    B (0,4,1);       # TRUE IF SUPERVISORY DATA AVAL#
        ITEM D$FLAG    B (0,5,1);       # TRUE IF DATA IS DELIVERABLE  #
                                        # ON AT LEAST ONE OF           #
                                        # APPLICATIONS LIST            #
        ITEM MSGCNT    I (0,30,30);     # NUM OF MSG ON DEBUG LOG FILE #
#                                                                      #
        END #NSUPWRD# 
  
      ARRAY APPDATA S(1); 
        BEGIN 
        ITEM DAWORD     U (0,0,WL);     # DATA AVAILABILITY WORD       #
        ITEM WD$FLAG   B(0,5,1);        # WAIT DELIVER FLAG            #
        ITEM ID$FLAG    I (0,6,18);     # INPUT DATA AVAILABLE FLAG    #
        ITEM SD$FLAG    I (0,42,18);    # SUPERVISORY DATA AVAIL FLAG  #
        END 
  
      ARRAY AWLFLAGS S(1);
        BEGIN                # AWL RESPONSE INDICATORS                 #
        ITEM N$AWL        U(0,00,60);  # NON-ZERO IF AWL TO PROCESS    #
        ITEM N$GMMAWL     I(0,00,06);  # NON-ZERO OF A GMM AWL         #
        ITEM N$NETONAWL   I(0,06,12);  # NON-ZERO IF A NETON AWL       #
        ITEM N$XFRAWL     I(0,18,6) ;  # NON-ZERO IF A XFR AWL         #
        ITEM N$GETAWL     I(0,24,18);  # NON-ZERO IF A GET AWL         #
        ITEM N$GSMAWL     I(0,42,18);  # NON-ZERO IF A GSM AWL         #
        END 
  
      BASED ARRAY APPBUFHDR S(1);      # HEADER OF APPL-SUPPLIED       #
        BEGIN                          # BUFFER FOR DOWNLINE MESSAGES  #
        ITEM AB$FLAG    B(0,35,1);     # ON/OFF FLG FOR DWNLINE FEATURE#
        ITEM AB$SIZE    U(0,48,12);    # SIZE OF DOWNLINE MESSAGE AREA #
        END 
  
      ARRAY NWLBUF [0:WLLEN] S(1);     # INTERNAL AIP WORKLIST BUFFER # 
        ITEM
          CTL           I (0),
            CTL$FLAGS   U (0,48,11),    #SCP FLAGS                    # 
            CTL$BUSY    B (0,57,1),     #TRUE IF NIP IS BUSY          # 
            CTL$NONAM   B (0,58,1),     #TRUE IF NAM NOT INITIALIZED  # 
            CTL$CB      B (0,59,1),     #NWL COMPLETION BIT           # 
  
          HDR           I (0),
            HDR$P       U (0,9,12),     #PROCESS NUMBER               # 
            HDR$N       U (0,22,8),     #NO. OF ENTRIES IN WORKLIST   # 
            HDR$W       U (0,30,12),    #NO. OF WORDS IN WORKLIST     # 
            HDR$AWL     U (0,42,18),    #ADDR WHERE WORKLIST RETURNED # 
  
          GSM           I(0), 
            GSM$ABT     U (0,0,6),      #APPL. BLOCK TYPE             # 
            GSM$ADR     U (0,6,12),     #ADDRESS (ACN OR PROCESS NO.) # 
            GSM$ACT     U (0,36,4),     #APPL. CHARACTER TYPE         # 
            GSM$IBU     B (0,40,1),     # INPUT BLOCK UNDELIVERABLE    #
            GSM$TLC     U (0,48,12);    #TEXT LENGTH IN ACT UNITS      #
  
  
      BASED ARRAY WORKLIST S(1);        # TEMPLATE FOR WORKLIST ENTRIES#
        ITEM
          NWL           I (0),
            NWL$ID      U (0,0,6),      #UNPROCESSED WORK LIST ID=35  # 
            NWL$RC      U (0,0,6),      #RESPONSE CODE                # 
            NWL$NIN     C (0,36,03),    # CURRENT NIN OF NETWORK      # 
            NWL$BS      U (0,6,AL),     # BLOCK SIZE                  # 
            NWL$LTAA    U (0,30,6),     #LENGTH OF TEXT AREA ARRAY    # 
            NWL$MOR     B (0,17,1),     #MORE SUPERVISORY MESSAGES/NIP# 
            NWL$TA      U (0,36,18),    #TEXT ADDRESS                 # 
            NWL$OP      U (0,54,5),     #OP CODE                      # 
            NWL$CB      B (0,59,1),     #COMPLETION BIT               # 
  
          NON           I (0),
            NON$AN      C (0,0,7),      # APPLICATION NAME             #
  
          WT            I (0),
            WT$FLAG     B (0,0,1),      #TIMER EXPIRED/INPUT AVAILABLE# 
            WT$WD       B (0,1,1),      #WAITDEL FOR NIP TO SWAP OUT   #
                                        # APPLICATION WHEN SET         #
  
            WT$I        B (0,3,1),      #INPUT AVAILABLE /ACN NQ 0    # 
            WT$TIME     I (0,42,18),    #MAXIMUM LENGTH OF WAIT (SECS)# 
  
          GMM           I (0),          # GETMM WORKLIST TEMPLATE      #
                                        # FIRST WORD OF WORKLIST       #
            GMM$NM      U (0,27,09),    # NUMBER OF MESSAGES RETURNED  #
            GMM$ADR     U (0,36,18),    # ADDR OF 1ST FREE WD IN BUFFER#
                                        # SECOND WORD OF WORKLIST      #
            GMM$ACN     U (0,0,12),     # CONNECTION NO FOR GETTING DAT#
            GMM$ALN     U (0,12,12),    # LIST NO FOR GETTING DATA     #
            GMM$NFW     U (0,48,12),    # NUMBER OF FREE WORDS IN BUF  #
            GMM$NW      U (0,48,12),    # NUMBER OF WORDS RETURNED     #
  
          PUTQ          I(0),           # PUTQ WORKLIST TEMPLATE       #
                                        # FIRST WORD OF WORKLIST       #
            PQ$ID       U(0,0,6),       # UNPROCESSED WORKLIST ID = 35 #
            PQ$TA       U(0,36,18),     # TEXT ADDRESS                 #
            PQ$OP       U(0,54,5),      # OP CODE = 18                 #
                                        # SECOND WORD OF WORKLIST      #
            PQ$N        U(0,24,18),     # NO. OF ENTRIES IN DWNLINE BUF#
            PQ$W        U(0,42,18),     # NO. OF WORDS IN DOWNLINE BUF #
  
          ABH           I (0),
            ABH$ABT     U (0,0,6),      #APPL. BLOCK TYPE             # 
            ABH$ADR     U (0,6,12),     #ADDRESS (ACN OR PROCESS NO.) # 
            ABH$ACT     U (0,36,4),     #APPL. CHARACTER TYPE         # 
            ABH$IBU     B (0,40,1),     # INPUT BLOCK UNDELIVERABLE    #
            ABH$TLC     U (0,48,12),    #TEXT LENGTH IN ACT UNITS      #
  
          AWL           I (0),
            AWL$NEXT    U (0,24,3),     # AWL WORD COUNT               #
            AWL$CB      B (0,59,1);     # AWL COMPLETION BIT           #
      END                    # NP$NWL                                  #
#                                                                      #
