*DECK     NVFOAPE 
USETEXT    TEXTNVF
USETEXT    TEXTSS 
USETEXT    TXCMDNV
USETEXT    TXTAPSS
PROC NVFOAPE; 
#      TITLE NVFOAPE - ACTION HOP PROTOCOL EVENT.      #
  
      BEGIN    # NVFOAPE #
# 
**    NVFOAPE - ACTION HOP PROTOCOL EVENT.
*     A. LIM.    82/04/07.
* 
*     THIS PROCEDURE-S MAIN FUNCTION IS TO ACTIO THOSE HOP PROTOCOL 
*     EVENTS THIS NVF IS SUPERVISING. 
*     IT IS CALLED INTO EXECUTION WHENEVER THERE IS DATA IN 
*     PROTOCOL-EVENT-QUEUE * PEQ*.
* 
*     PROC NVFOAPE
* 
*     ENTRY    HOP PROTOCOL EVENTS IN * PEQ*. 
* 
*     EXIT     ALL PROTOCOL EVENTS IN * PEQ* PROCESSED
* 
*     METHOD   INCOMING PROTOCOL EVENTS FROM THE C-LAYER ARE: 
*              HOP/START, HOP/END-WARNING, AND HOP/END. 
*              *SSTRQE* IS CALLED TO REMOVE AN ENTRY FROM THE QUEUE.
*              PROTOCOL RESPONSES: HOP/START/N AND HOP/END/N ARE
*              SENT BACK TO THE C-LAYER. (*NVFUMQE* IS USED TO
*              SEND THE RESPONSES TO THE C-LAYER, TAKING ADVANTAGE
*              OF THE FACT THAT *NVFUMQE* IS GOING TO STORE AN
*              SMID INTO THE RESPONSE.) 
*              IT TERMINATES WHEN *PEQ* HAS BEEN EXHAUSTED. 
# 
  
  
# 
****  PROC NVFOAPE XREF LIST
* 
# 
      XREF
        BEGIN 
        PROC NVFOPHC;        # PROCESS HISTORY COMMAND                 #
        PROC NVFUMQE;        # MAKE A QUEUE ENTRY                      #
        PROC SSTAQE;         # SS- ACCEPT A QUEUE ENTRY                #
        PROC SSTRQE;         # SS- REMOVE A QUEUE ENTRY                #
        END 
# 
****
# 
  
  
      ITEM I          I;     # LOOP INDUCTION VARIABLE                 #
      ITEM SMID   S:HPESTAT; # SUBSCRIPT FOR GOTO SWITCH               #
  
  
#     THE FOLLOWING IS A SWITCH LIST OF HOP PROTOCOL EVENTS BY SMID    #
  
      SWITCH HPESWT:HPESTAT 
               LLHOPSRT  : HOPSRT,     # HOP/START                     #
               LLHOPENDW : HOPENDW,    # HOP/END-WARNING               #
               LLHOPEND  : HOPEND;     # HOP/END                       #
  
  
CONTROL EJECT;
  
# 
*     PROCESS ALL ENTRIES IN *PEQ*
# 
  
      FOR I = 0 WHILE PEQL NQ 0 
      DO
        BEGIN 
        SSTRQE(P<PEQ>,WCBUF[0],ABHBUF[0],APSM[0]);
        SPMSG0[1] = 0;         # ZERO REST OF MESSAGE                  #
        SMID = WCB$SMID[0]; 
        GOTO HPESWT[SMID];   # PROTOCOL EVENT SWITCH BY SMID           #
  
LLHOPSRT:                    # HOP/START                               #
# 
*     SAVE THE LEFT AND RIGHT K-DISPLAY PAGE LENGTH.  SEND THE NORMAL 
*     BACK TO THE C-LAYER.
# 
        LEFTPL = HOPLPL[0] - 1; 
        RIGHTPL = HOPRPL[0];
  
        PFCSFC[1] = HOPSRTN$;  # SEND HOP/START/N PROTOCOL RESPONSE    #
        NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,1);   # TO CTQ                 #
# 
*     TRIGGER THE LAST PAGE OF THE RECENT HISTORY BUFFER TO SEND TO 
*     THE K-DISPLAY BY SIMULATING A "HISTORY" COMMAND I.E. BUILD
*     THE PARAMETER LIST, AND WC AND HEADER INFORMATION.
# 
        WCB$WORD[1] = 0;     # CLEAR WC WORD 1                         #
        HDR$WORD[1] = 0;     # CLEAR HDRCMD WORD 1                     #
        WCB$IAF[1] = FALSE; 
        WCB$WC[1] = 2+3;
        HDR$SPCNT[1] = 2; 
        HDR$APCNT[1] = 0; 
        HDR$TXWCNT[1] = 1;
        HDR$VERB[1] = HIL$; 
        HDR$TXCCNT[1] = 8;
        PAR$WORDC[0] = "HISTORY.";
        PAR$ELNAME[1] = HIL$; 
        PAR$PCODE[1] = "VEB"; 
        PAR$PCODE[2] = HISTORY$;
        NVFOPHC;             # PROCESS THE HISTORY COMMAND             #
        GOTO ENDCASE; 
  
LLHOPENDW:                   # HOP/END-WARNING                         #
  
        HOPENDWF = TRUE;     # SET HOP/END-WARNING FLAG TRUE           #
        IF CMDINPGF 
        THEN
          ABORTCMDF = TRUE;  # CMD IN PROGRESS, ABORT THE CMD          #
        GOTO ENDCASE; 
  
LLHOPEND:                    # HOP/END #
  
        HOPENDWF = FALSE;    # CLEAR HOP/END-WARNING FLAG              #
        PFCSFC[1] = HOPENDN$;    # SEND HOP/END/N PROTOCOL RESPONSE    #
        NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,1);   #   TO CTQ               #
  
ENDCASE:  
        END 
  
      END    # NVFOAPE #
  
TERM
