*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