cdc:nos2.source:nam5871:csccpa
Table of Contents
CSCCPA
Table Of Contents
- [00005] PROC CSCCPA
- [00006] CSCCPA - COMPLETE PROTOCOL ACTION.
- [00010] COMPLETE PROTOCOL ACTION.
- [00051] PROC CSCPNQ
- [00052] PROC SSTAQE
Source Code
- CSCCPA.txt
- *DECK CSCCPA
- USETEXT TEXTCS
- USETEXT TEXTSS
- USETEXT TXTAPSS
- PROC CSCCPA;
- # TITLE CSCCPA - COMPLETE PROTOCOL ACTION. #
- BEGIN # CSCCPA #
- #
- ** CSCCPA - COMPLETE PROTOCOL ACTION.
- *
- * D. G. DEPEW. 82/03/16.
- * D. G. DEPEW. 82/06/03.
- *
- * THIS PROCEDURE PERFORMS ALL THE CONNECTION(C) LAYER PROCESSING
- * REQUIRED FOR ALL CONNECTION/OPERATOR RELATED SUPERVISORY MESSAGES
- * THAT EMANATE FROM THE INNER(I) LAYER (TERMED PROTOCOL RESPONSES).
- *
- * PROC CSCCPA
- *
- * ENTRY WCBUF[0] = WORD COUNT WORD FROM ORIGINAL CONNECTION
- * TRAFFIC QUEUE (*CNQ*) ENTRY.
- * ABHBUF[0] = APPLICATION BLOCK HEADER FOR THE SM (BASED
- * ARRAY *ABH* IN *TXTAPSS* POINTS HERE).
- * MSGBUF[0] = BODY OF THE SM (BASED ARRAY *APSM* IN
- * *TXTAPSS* POINTS HERE). THE POSSIBLE PFC/SFC
- * VALUES ARE: HOP/START/N, CON/REQ/N,
- * CON/END/R. HOWEVER, ONLY THE CON/END/R
- * ACTUALLY HAS AN SM BODY PORTION AT THIS TIME.
- *
- * EXIT ANY OF THE FOLLOWING IN VARIOUS COMBINATIONS ACCORDING TO
- * THE SM (PROTOCOL RESPONSE) RECEIVED AND THE STATE OF THE
- * ACN LIST ENTRY FOR THE OPERATOR IN QUESTION:
- * - THE STATE OF THE ACN LIST ENTRY HAS BEEN UPDATED.
- * - A CON/REQ/N OR CON/END/R SM HAS BEEN PLACED IN THE
- * OUTGOING TRAFFIC QUEUE (*OTQ*).
- * - A HOP/START SM (ESSENTIALLY) HAS BEEN PLACED IN THE
- * PROTOCOL EVENT QUEUE (*PEQ*).
- *
- * NOTES 1. THERE IS NO REAL HOP/START/N SM. THIS IS STRICTLY A
- * CS INTERNAL CODE.
- * 2. THE PROCESSING IS DEFINED BY THE CS/HOP AND CS/NOP
- * STATE DIAGRAMS.
- #
- #
- **** PROC CSCCPA - XREF LIST.
- #
- XREF
- BEGIN
- PROC CSCPNQ; # PURGE NOP QUEUE #
- PROC SSTAQE; # ACCEPT QUEUE ENTRY #
- END
- #
- ****
- #
- ITEM DUM;
- #
- * WE EXECUTE WHAT AMOUNTS TO A CASE CONSTRUCT TO PROCESS THE THREE
- * TYPES OF PROTOCOL RESPONSES.
- #
- IF WCB$SMID[0] EQ SMID"HOPSRTN"
- THEN # HOP/START PROCESSING BY I-LAYER DONE #
- BEGIN
- #
- * SIMPLY UPDATE THE STATE OF THE HOP PSEUDO ACN IN ACCORDANCE
- * WITH ITS EXISTING STATE.
- #
- IF ACN$HOPST[HOPORD$] EQ S"CREATE"
- THEN # MOST USUAL CIRCUMSTANCE #
- ACN$HOPST[HOPORD$] = S"COMMAND"; # HISTORY BUFFER TO FOLLOW #
- ELSE IF ACN$HOPST[HOPORD$] EQ S"STARTEND"
- THEN
- ACN$HOPST[HOPORD$] = S"ENDED"; # WILL END AFTER HIST BUFF #
- ELSE # MUST BE HOP/BRK AFT HOP/START #
- ACN$HOPST[HOPORD$] = S"BREAK"; # WILL DISCARD HIST BUFFER #
- END # HOP/START/N PROTOCOL RESPONSE #
- ELSE IF WCB$SMID[0] EQ SMID"CONREQN"
- THEN # CON/REQ/R PROCESSING BY I-LAYER DONE #
- BEGIN
- #
- * SIMPLY FORMAT AND ISSUE THE CON/REQ/N SM. UPDATE THE STATE.
- #
- WCB$WORD[1] = LCORQR + 2; # ENTRY SIZE #
- ABHWORD[1] = LCORQR; # TEXT LENGTH #
- ABHABT[1] = APPCMD; # BLOCK TYPE #
- ABHACT[1] = CT60TRANS; # CHARACTER TYPE - ABH COMPLETE #
- SPMSG0[0] = 0; # LIST NUMBER + OTHERS #
- PFCSFC[0] = CONREQN; # PFC/SFC #
- CONBDD[0] = TRUE; # DISCARD INPUT UPON BREAK #
- CONNXP[0] = TRUE; # DISCARD TRANSPARENT DATA #
- CONACT[0] = CT6DISPLAY; # INPUT CHARACTER TYPE FOR CN #
- CONACN[0] = ABHADR[0]; # NOP CN NUMBER - SM COMPLETE #
- ACN$NOPST[ABHADR[0]] = S"COMMAND"; # WAIT FOR CS BANNER #
- SSTAQE (P<OTQ>, WCBUF[1], ABHBUF[1], MSGBUF[0]);
- END # CON/REQ/N PROTOCOL RESPONSE #
- ELSE # MUST BE CON/END/R (OP GONE FM I-LAYER) #
- BEGIN
- #
- * FIRST TAKE A MAIN BRANCH DEPENDING UPON WHETHER THIS REQUEST IS
- * FOR THE HOP OR A NOP (THE PROCESSING IS COMPLETELY DIFFERENT).
- #
- IF ABHADR[0] EQ HOPORD$
- THEN # CON/END REQUEST FOR THE HOP #
- BEGIN
- #
- * THE CON/END/R PROTOCOL RESPONSE FOR THE HOP ALWAYS RESULTS
- * FROM A HOP/END SM HAVING BEEN PROCESSED. THERE IS NO DEFINED
- * RESPONSE TO A HOP/END SM. HENCE, FOR THIS CASE THE CON/END/R
- * PROTOCOL RESPONSE IS A CS INTERNAL SIGNAL FROM THE I-LAYER TO
- * THE C-LAYER INDICATING ALL CLEANUP FOR THE HOP IS COMPLETE.
- * IF A SUBSEQUENT HOP/START SM HAS ALREADY BEEN ENCOUNTERED, IT
- * CAN NOW BE SENT TO THE I-LAYER (AS A PROTOCOL EVENT). UPDATE
- * THE STATE OF THE HOP PSEUDO ACN.
- #
- IF ACN$HOPST[HOPORD$] EQ S"ENDED"
- THEN # MOST USUAL CIRCUMSTANCE #
- ACN$HOPST[HOPORD$] = S"INACT";
- ELSE # MUST SND HOP/START TO I-LAYER #
- BEGIN
- WCB$SMID[0] = SMID"HOPSTRT"; # ALL ELSE IS SET #
- SSTAQE (P<PEQ>, WCBUF[0], ABH[0], APSM[0]); # TO I-LAYER #
- IF ACN$HOPST[HOPORD$] EQ S"RESTART"
- THEN
- ACN$HOPST[HOPORD$] = S"CREATE";
- ELSE
- ACN$HOPST[HOPORD$] = S"STARTBRK";
- END
- END # HOP CON/END/R PROTOCOL RESP #
- ELSE # CON/END REQUEST FOR A NOP #
- BEGIN
- #
- * FORMAT AND ISSUE THE CON/END/R SM. PURGE ANY DATA QUEUED FOR
- * THIS NOP. UPDATE THE STATE.
- #
- WCB$WORD[1] = LCONEN + 2; # ENTRY SIZE #
- ABHWORD[1] = LCONEN; # TEXT LENGTH #
- ABHABT[1] = APPCMD; # BLOCK TYPE #
- ABHACT[1] = CT60TRANS; # CHARACTER TYPE - ABH COMPLETE #
- SPMSG0[0] = 0;
- PFCSFC[0] = CONEND; # PFC/SFC #
- IF WCB$WC[0] EQ 2
- THEN # I-LAYER DID NOT PROVIDE ANAME #
- SPMSG1[0] = 0; # INSURE ANAME = 0 #
- CONACN[0] = ABHADR[0]; # NOP CN NUMBER - SM COMPLETE #
- ACN$NOPST[ABHADR[0]] = S"ENDED";
- CSCPNQ (ABHADR[0], DUM); # DELETE NOP'S OUTPUT #
- SSTAQE (P<OTQ>, WCBUF[1], ABHBUF[1], MSGBUF[0]);
- END # NOP CON/END/R PROTOCOL RESP #
- END # CON/END/R PROTOCOL RESPONSE #
- END # CSCCPA #
- TERM
cdc/nos2.source/nam5871/csccpa.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator