cdc:nos2.source:nam5871:cstsct
Table of Contents
CSTSCT
Table Of Contents
- [00007] PROC CSTSCT
- [00008] CSTSCT - SELECT CORRECT TERMINAL.
- [00012] SELECT CORRECT TERMINAL.
- [00046] PROC CSTSCD
- [00047] PROC MOVE
- [00048] PROC SSTAQE
- [00049] PROC SSTRTS
Source Code
- CSTSCT.txt
- *DECK CSTSCT
- USETEXT TEXTCS
- USETEXT TXTCTCS
- USETEXT TXTSMCS
- USETEXT TXTAPSS
- USETEXT TXTSUSS
- PROC CSTSCT;
- # TITLE CSTSCT - SELECT CORRECT TERMINAL. #
- BEGIN # CSTSCT #
- #
- ** CSTSCT - SELECT CORRECT TERMINAL.
- *
- * D. G. DEPEW. 81/10/12.
- *
- * CSTSCT SELECTS APPROPRIATE TERMINAL ENTRIES FROM THE LINE RECORDS
- * CONTAINED IN THE NCF DATA QUEUE, AND FOR EACH SUCH TERMINAL CALLS
- * PROC CSTSCD TO CONFIGURE ALL DEVICES WHICH ARE APPROPRIATE FOR
- * THAT TERMINAL.
- *
- * PROC CSTSCT
- *
- * ENTRY THE NCF DATA QUEUE CONTAINS ONE OR MORE COMPLETE ENTRIES,
- * WHICH MAY BE FOLLOWED BY AN INCOMPLETE ENTRY.
- *
- * EXIT ALL NCF DATA QUEUE ENTRIES WHICH WERE COMPLETE HAVE BEEN
- * DELETED (AN INCOMPLETE ENTRY, IF THERE WAS ONE, REMAINS
- * UNALTERED AND UNPROCESSED).
- * ALL CONFIGURE TERMINAL RESPONSE SM'S (NORMAL OR ABNORMAL),
- * CORRESPONDING TO THE NCF DATA QUEUE ENTRIES THAT WERE
- * PROCESSED, HAVE BEEN PLACED IN THE OUTGOING TRAFFIC
- * QUEUE.
- *
- * NOTES THIS ROUTINE ALONG WITH PROC CSTSCD PERFORMS THE MATCHING
- * LOGIC FOR AUTORECOGNITION.
- * THE LOGIC OF THE INNER LOOPS OF THIS ROUTINE (INDUCTION
- * VARIABLE J) ARE BASED ON THE FACT THAT NDL GUARANTEES AT
- * LEAST ONE TERMINAL DEFINITION FOR A LINE.
- #
- #
- **** PROC CSTSCT - XREF LIST.
- #
- XREF
- BEGIN
- PROC CSTSCD; #SELECT AND CONFIGURE CORRECT DEVICES #
- PROC MOVE; #MOVE STORAGE DIRECT ADDRESSING (MACREL) #
- PROC SSTAQE; #ACCEPT QUEUE ENTRY #
- PROC SSTRTS; #REMOVE STORAGE ANYWHERE IN TABLE #
- END
- #
- ****
- #
- ITEM I, J; #LOOP INDUCTION VARIABLES #
- ITEM LASTERM B; #LAST TERMINAL FLAG #
- ITEM LTES; #LEN OF ALL TRM NTRYS IN A LINREC (CM WDS)#
- BEGIN
- # WE BEGIN THE PROCESSING OF A SINGLE NCF DATA QUEUE ENTRY BY #
- # INITIALIZING A WHOLE BUNCH OF STUFF. #
- # THE MEMORY MANAGEMENT ROUTINES GUARANTEE ONE ADDITIONAL WORD AT #
- # THE END OF EACH MANAGED TABLE (ABOVE AND BEYOND THE LENGTH OF THE#
- # TABLE). SETTING THIS WORD NON-ZERO FOR THE NCF DATA QUEUE #
- # INSURES THAT THE INNER LOOPS OF THIS ROUTINE AND PROC CSTSCD DO #
- # NOT ACT UPON STORAGE BEYOND THE END OF THE NCF DATA QUEUE. #
- NDQ$WORD[NDQL] = 1; # INSURE CORRECT LOOP TERMINATION #
- NRDEV = 0; # INITIALIZE NUMBER OF DEVICES CONFIGURED #
- LASTERM = FALSE;
- LTES = NDQ$LRSIZE[0] - LRHDRL$; # WORD COUNT OF TRM NTRYS #
- P<LINEREC> = P<NDQ> + NDQ$TCSIZE[0]; # BEGINNING OF LINE REC #
- ABHWORD[0] = NDQ$WORD[1]; # BREAK OUT CNF/TE/R SM ABH #
- MOVE (NDQ$TCSIZE[0]-2, NDQ[2], CSSM[0]); # AND SM BODY #
- # SET UP FIXED FIELDS OF CONFIGURE TERMINAL RESPONSE SM. #
- ABHWORD[1] = NDQ$WORD[1];
- ABHSN[1] = ABHDN[0]; # REVERSE DN AND SN FOR RESPONSE SM #
- ABHDN[1] = ABHSN[0];
- SPMSG0[1] = 0; # START CNF/TE RESPONSE SM BODY #
- PFCSFC[1] = CNFTEN; # DEFINED IN TXTSUSS #
- CNFP[1] = CNFP[0]; # PORT NUMBER. THAT'S IT FOR NOW #
- IF CNFTTA[0] EQ LR$AUTO[0]
- THEN # LINE REC AND CNF/TE/R AGREE ON AUTOREC #
- BEGIN
- P<TRMINFO> = P<LINEREC> + LRHDRL$; # 1ST TERM NTRY IN LINREC#
- IF CNFTTA[0] NQ 0
- THEN # AUTORECOGNITION LINE #
- FOR J=TE$WC[0] STEP TE$WC[0]
- WHILE J LQ LTES AND NOT LASTERM
- DO # LOOP TIL END OF LINREC OR TERMINAL MATCH#
- IF (TE$TIP[0] EQ CNFTTT[0] OR TE$TIP[0] EQ 0)
- AND (TE$STIP[0] EQ CNFSTIP[0] OR TE$STIP[0] EQ 0)
- AND (TE$TSPD[0] EQ CNFLCLS[0] OR TE$TSPD[0] EQ 0)
- AND (TE$CSET[0] EQ CNFLCCD[0] OR TE$CSET[0] EQ 0)
- AND (TE$A1[0] EQ CNFA1[0] OR TE$A1[0] EQ 0)
- THEN # THIS IS IT (THE CORRECT TERMINAL) #
- BEGIN # GO FOR DEVICES #
- LASTERM = TRUE; # ONLY ONE TERM ALLOWED FOR AUTOREC #
- # INSURE VALUES REQUIRED FOR CNF/TE/N ARE IN LINE RECORD FIELDS. #
- TE$STIP[0] = CNFSTIP[0];
- TE$CSET[0] = CNFLCCD[0];
- TE$A1[0] = CNFA1[0];
- CSTSCD (LASTERM); # SELECT AND CONFIGURE DEVICES #
- END
- ELSE # THIS IS NOT IT #
- P<TRMINFO> = P<TRMINFO> + TE$WC[0]; # NXT TERM NTRY #
- ELSE # FIXED CONFIGURATION LINE #
- FOR J=TE$WC[0] STEP TE$WC[0]
- WHILE NOT LASTERM
- DO # LOOP UNTIL END OF LINE RECORD #
- BEGIN
- IF J GQ LTES # NOTE - *J* SHOULD NEVER EXCEED *LTES* #
- THEN # THIS IS LAST TERM ENTRY IN LINE RECORD #
- LASTERM = TRUE;
- CSTSCD (LASTERM); # CONFIGURE ALL DEVICES #
- P<TRMINFO> = P<TRMINFO> + TE$WC[0]; # NXT TERM NTRY #
- END
- END
- IF NRDEV EQ 0
- THEN # NOTHING GOT CONFIGURED #
- BEGIN # ISSUE CNF/TE/A #
- ABHTLC[1] = NCNFA; # DEFINED IN TXTSMCS. ABH COMPLETE #
- PFCSFC[1] = CNFTEA; # DEFINED IN TXTSUSS. SM COMPLETE #
- SSTAQE (P<OTQ>, CTEAQL$, ABH[1], CSSM[1]); # QUEUE CNF/TE/A#
- END
- SSTRTS (P<NDQ>, 0, NDQ$ESIZE[0]); # DEL 1ST NTRY IN NCF DATA Q#
- END
- END # CSTSCT #
- TERM
cdc/nos2.source/nam5871/cstsct.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator