*DECK NVFTDQE
USETEXT TEXTNVF
USETEXT TEXTSS
USETEXT TXTANVF
USETEXT TXTAPSS
PROC NVFTDQE;
# TITLE NVFTDQE - DISPATCH QUEUE ENTRIES FOR T-A PROCESS. #
BEGIN # NVFTDQE #
#
** NVFTDQE - DISPATCH QUEUE ENTRIES FOR T-A PROCESS.
*
* E. THAVIKULWAT 81/08/17
* C. BRION 83/04/11
*
* THIS PROCEDURE IS THE MAIN MODULE FOR TERMINAL TO APPLICATION
* PROCESSING AND IS CALLED INTO EXECUTION WHENEVER THERE IS DATA
* IN ANY OF ITS INPUT QUEUE . THE PROCEDURE'S MAIN FUNCTION IS TO
* ROUTE EACH ENTRY IN ITS INPUT QUEUE TO THE APPROPRIATE ROUTINES.
*
* PROC NVFTDQE
*
* ENTRY:
* TAINPQ - TERMINAL TO APPLICATION INPUT QUEUE
* VCBRDQ - VCB READ DATA QUEUE
* VDATAQ - VALIDATION DATA QUEUE
*
* EXIT:
* ALL DATA IN ALL QUEUES HAVE BEEN PROCESSED.
*
* NOTES:
* THE 3 INPUT QUEUES ARE PROCESSED IN THE FOLLOWING ORDER:
* 1) TAINPQ
* 2) VCBRDQ
* 3) VDATAQ
* EACH QUEUE IS EMPTIED BEFORE THE NEXT QUEUE IS INTERROGATED.
*
* METHOD:
* CALL *SSTRQE* TO COPY THE FIRST ENTRY FROM A SPECIFIED QUEUE
* INTO THE WORKING BUFFER. EACH ENTRY IS THEN ROUTED TO THE
* APPROPRIATE ROUTINE TO BE PROCESSED.
#
#
**** PROC NVFTDQE - XREF LIST.
#
XREF
BEGIN
PROC NVFTACC; # PROCESS CR/ACC SM #
PROC NVFTBRK; # PROCESS FC/BRK SM #
PROC NVFTCB; # PROCESS CR/CB SM #
PROC NVFTETI; # PROCESS INPUT FROM TERMINAL #
PROC NVFTINA; # PROCESS FC/INACT SM - TIMER EXPIRED #
PROC NVFTITE; # PROCESS CR/ITE SM #
PROC NVFTRCN; # PROCESS CR/RCN SM #
PROC NVFTRVD; # RECEIVE VCB DATA #
PROC NVFTTCH; # PROCESS TCH/TCHAR SM #
PROC NVFTVVD; # VERIFY VALIDATION DATA #
PROC SSTRQE; # TRANSFER QUEUE ENTRY TO FIXED BUFFER #
PROC NVFTSPC; # SWITCH PENDING CONNECTIONS #
END
#
****
#
ITEM I I; # LOOP VARIABLE #
ITEM SMID S:CTQSTAT; # SUBSCRIPT FOR GOTO SWITCH #
SWITCH TASWT:CTQSTAT
LLCRACC : SACC, # LABEL FOR CR/ACC SM #
LLCRCB : SCB, # LABEL FOR CR/CB SM #
LLCRITE : SITE, # LABEL FOR CR/ITE SM #
LLCRRCN : SRCN, # LABEL FOR CR/RCN SM #
LLBRK : SIUSR, # LABEL FOR INTR/USR SM #
LLFCINA : SINA, # LABEL FOR TIMER EXPIRED #
LLTCTCH : STCHAR, # LABEL FOR TCH/TCHAR SM #
LLNETN : SNETN, # LABEL FOR NET/ON/N SM #
LLNETA : SNETA; # LABEL FOR NET/ON/A SM #
#
* DISPATCH ENTRIES FROM *TAINPQ* TO APPROPRIATE ROUTINES.
#
FOR I = 0 WHILE TAQLNGTH NQ 0
DO
BEGIN
SSTRQE(P<TAINPQ>,WCBUF,ABHBUF,MSGBUF); # TRNSFR TO FIX BUFFER #
IF ABHABT[0] EQ APMSG
OR ABHABT[0] EQ APPBLK
THEN # MSG OR BLK DATA BLOCK #
BEGIN
NVFTETI; # EDIT TERMINAL INPUT #
END
ELSE # SUPERVISORY MESSAGE #
BEGIN
SMID = WCB$SMID[0]; # GET INTERNAL SM IDENTIFIER #
GOTO TASWT[SMID];
LLCRACC: # CR/ACC SM #
NVFTACC; # PROCESS CR/ACC SM #
GOTO ENDTAS;
LLCRCB: # CR/CB SM #
NVFTCB; # PROCESS CR/CB SM #
GOTO ENDTAS;
LLCRITE: # CR/ITE SM #
NVFTITE; # PROCESS CR/ITE SM #
GOTO ENDTAS;
LLCRRCN: # CR/RCN SM #
NVFTRCN; # PROCESS CR/RCN SM #
GOTO ENDTAS;
LLBRK: # INTR/USR SM #
NVFTBRK; # PROCESS BREAK SM #
GOTO ENDTAS;
LLFCINA: # FC/INACT SM - NVF TIMER EXP #
NVFTINA; # PROCESS NVF TIMER EXPIRED #
GOTO ENDTAS;
LLTCTCH: # TCH/TCHAR SM #
NVFTTCH; # PROCESS TCH/TCHAR SM #
GOTO ENDTAS;
LLNETN:
LLNETA:
NVFTSPC; # NET/ON/N AND NET/ON/A SM #
GOTO ENDTAS;
ENDTAS: # END OF CASE #
END
END
#
* CALL *NVFTRVD* TO PROCESS ENTRIES FROM *VCBRDQ* QUEUE.
#
FOR I = 0 WHILE VRDLNGTH NQ 0
DO
BEGIN
SSTRQE(P<VCBRDQ>,WCBUF,ABHBUF,MSGBUF); # TRNSFR TO FIX BUFFER #
NVFTRVD; # RECEIVE VCB DATA #
END
#
* CALL *NVFTVVD* TO PROCESS ENTRIES FROM *VDATAQ* QUEUE.
#
FOR I = 0 WHILE VDQLNGTH NQ 0
DO
BEGIN
SSTRQE(P<VDATAQ>,WCBUF,ABHBUF,MSGBUF); # TRNSFR TO FIX BUFFER #
NVFTVVD; # VERIFY VALIDATION DATA #
END
END # END NVFTDQE #
TERM