cdc:nos2.source:nam5871:cstitr
Table of Contents
CSTITR
Table Of Contents
- [00007] PROC CSTITR (LASTRSP)
- [00008] CSTITR - ISSUE TERMINAL RESPONSE.
- [00012] ISSUE TERMINAL RESPONSE.
- [00062] PROC SSBEBF
- [00063] PROC SSBSBF
- [00064] FUNC SSDCDA
- [00065] PROC SSTAQE
- [00066] FUNC XCHD
Source Code
- CSTITR.txt
- *DECK CSTITR
- USETEXT TEXTCS
- USETEXT TXTCTCS
- USETEXT TXTSMCS
- USETEXT TXTAPSS
- USETEXT TXTSUSS
- PROC CSTITR (LASTRSP);
- # TITLE CSTITR - ISSUE TERMINAL RESPONSE. #
- BEGIN # CSTITR #
- #
- ** CSTITR - ISSUE TERMINAL RESPONSE.
- *
- * D. G. DEPEW 81/10/22.
- *
- * CSTITR BUILDS AND PLACES IN THE OUTGOING TRAFFIC QUEUE A SINGLE
- * CONFIGURE TERMINAL NORMAL RESPONSE SM (CNF/TE/N).
- *
- * PROC CSTITR (LASTRSP)
- *
- * ENTRY BASED ARRAYS *LINEREC*, *TRMINFO* AND *DEVNTRY* POINT TO
- * THE CORRECT LINE RECORD, TERMINAL ENTRY WITHIN THE LINE
- * RECORD AND DEVICE ENTRY WITHIN THE TERMINAL ENTRY,
- * RESPECTIVELY.
- * LASTRSP = TRUE, IF THIS IS THE LAST CNF/TE/N SM TO BE
- * ISSUED FOR THE LINE.
- * LASTRSP = FALSE, IF THIS IS NOT THE LAST CNF/TE/N SM TO BE
- * ISSUED FOR THE LINE.
- * CERTAIN FIELDS OF THE CNF/TE/N RESPONSE THAT ARE THE SAME
- * FOR ALL DEVICES ON A GIVEN LINE HAVE ALREADY BEEN SET
- * (IN PROC CSTSCT), NAMELY:
- * -IN THE APPLICATION BLOCK HEADER:
- * THE APPLICATION BLOCK TYPE (NO CHG FM INPUT)
- * THE APPLICATION CHARACTER TYPE (NO CHG FM INPUT)
- * THE CONNECTION NUMBER (ZERO - NO CHG FM INPUT)
- * THE DESTINATION NODE
- * THE SOURCE NODE
- * -IN THE SUPERVISORY MESSAGE BODY:
- * THE PFC/SFC CODE
- * THE PORT NUMBER
- * THE SUBPORT NUMBER (ALWAYS ZERO).
- *
- * EXIT A CNF/TE/N RESPONSE SM FOR THE INDICATED DEVICE HAS BEEN
- * PLACED IN THE OUTGOING TRAFFIC QUEUE.
- * ITEM *NRDEV* (IN TXTCTCS) HAS BEEN INCREMENTED BY ONE.
- * THE NCF DATA QUEUE MAY HAVE MOVED, CAUSING BASED ARRAYS
- * *LINEREC*, *TRMINFO* AND *DEVNTRY* TO POINT AT RANDOM
- * CORE LOCATIONS (SEE NOTE).
- *
- * NOTE THIS ROUTINE CALLS PROC SSTAQE (TO QUEUE CNF/TE/N IN OTQ),
- * WHICH IN TURN CALLS PROC SSTATS (TO ALLOCATE CORE IN OTQ),
- * WHICH CAN CAUSE STORAGE (MANAGED TABLES) TO MOVE.
- #
- ITEM LASTRSP B; #LAST CNF/TE/N RESPONSE FOR A LINE FLAG #
- #
- **** PROC CSTITR - XREF LIST.
- #
- XREF
- BEGIN
- PROC SSBEBF; #EXTRACT BITFIELD #
- PROC SSBSBF; #STORE BITFIELD #
- FUNC SSDCDA; #CONVERT DISPLAY CODE TO ASCII #
- PROC SSTAQE; #ACCEPT QUEUE ENTRY #
- FUNC XCHD; #CONV BIN INTEGER TO HEX DSP CODE (MACREL)#
- END
- #
- ****
- #
- ITEM I; #LOOP INDUCTION VARIABLE #
- ITEM OTQSIZ; #LENGTH OF CNF/TE/N IN OUTGOING TRAFFIC Q #
- ITEM DSPORD; #DEV NTRY WD ORD OF DEV NAME OR FN/FV PAIR#
- ITEM DSPBIT; #DEV NTRY ST BIT OF DEV NAME OR FN/FV PAIR#
- ITEM ASCORD; #CNF/TE/N WD ORD OF DEV NAME OR FN/FV PAIR#
- ITEM ASCBIT; #CNF/TE/N ST BIT OF DEV NAME OR FN/FV PAIR#
- ITEM ONECHAR; #SINGLE CHAR OR FNFV RT JUST W/LEAD ZEROES#
- CONTROL FASTLOOP;
- # FIRST MOVE ALL THE FIXED POSITION FIELDS EXCEPT THE DEVICE NAME #
- # INTO THE CNF/TE/A WORKING STORAGE AREA. #
- CNFA1N[1] = TE$A1[0]; # ADDRESS ONE #
- CNFA2DT[1] = DE$A2DT[0]; # ADDRESS TWO, DEVICE TYPE #
- CNFSTIP[1] = TE$STIP[0]; # SUB-TIP TYPE #
- CNFTC[1] = TE$TC[0]; # TERMINAL CLASS #
- CNFST[1] = DE$ISTAT[0]; # INITIAL STATUS OF DEVICE #
- IF LASTRSP
- THEN # LAST CNF/TE/N RESPONSE FOR THE LINE #
- CNFLAST[1] = 1;
- ELSE # MORE CNF/TE/N RESPONSES TO FOLLOW #
- CNFLAST[1] = 0;
- CNFCDN[1] = TE$CSET[0]; # CODE SET #
- # NOW CONVERT (FROM DISPLAY CODE TO ASCII) AND STORE THE DEVICE #
- # NAME. WE MUST TAKE GROUPED LINES INTO ACCOUNT BY APPENDING THE #
- # PORT NUMBER (IN CHARACTER CODED HEXIDECIMAL) TO THE ROOT DEVICE #
- # NAME. #
- IF LR$GC[0] NQ 0
- THEN # THIS LINE PART OF A GROUP #
- DE$SUFFIX[0] = XCHD (CNFP[0]+X"100"); # INSURE LEAD ZEROES #
- DSPORD = 1; # SET UP TO EXTRACT AND STORE CHARACTERS #
- DSPBIT = 0;
- ASCORD = 1;
- ASCBIT = 4;
- FOR I=1 STEP 1 UNTIL 7
- DO # GET, CONVERT, STORE ONE CHAR AT A TIME #
- BEGIN
- SSBEBF (DEVNTRY[0], DSPORD, DSPBIT, 6, ONECHAR);
- IF ONECHAR NQ O"55"
- THEN # STORE NON-BLANK CHAR IN NEXT AVAIL POS #
- BEGIN
- ONECHAR = SSDCDA (ONECHAR);
- SSBSBF (CSSM[1], ASCORD, ASCBIT, 8, ONECHAR);
- END
- END
- IF ASCBIT NQ 0
- THEN # LESS THAN 7 CHAR STORE, MUST BLANK FILL #
- SSBSBF (CSSM[1], ASCORD, ASCBIT, 60-ASCBIT, X"202020202020");
- # NOW MOVE THE FN/FV PAIRS. #
- DSPORD = 2; # SET UP TO EXTRACT AND STORE FN/FV PAIRS #
- DSPBIT = 24;
- ASCORD = 2;
- ASCBIT = 32;
- FOR I=1 STEP 1 UNTIL DE$FNFV[0]
- DO # GET AND STORE ONE FN/FV PAIR AT A TIME #
- BEGIN
- SSBEBF (DEVNTRY[0], DSPORD, DSPBIT, 16, ONECHAR);
- SSBSBF (CSSM[1], ASCORD, ASCBIT, 16, ONECHAR);
- END
- # ALL THAT IS LEFT TO DO IS SET THE TEXT LENGTH IN CHARACTERS IN #
- # THE APPLICATION BLOCK HEADER. THEN, SHIP THE PIG. #
- ABHTLC[1] = NCNFN + 2 * DE$FNFV[0];
- OTQSIZ = 2 + (ABHTLC[1] * 2 + 14) / 15;
- SSTAQE (P<OTQ>, OTQSIZ, ABH[1], CSSM[1]);
- NRDEV = NRDEV + 1; # COUNT NUMBER DEVICES CONFIGURED PER LINE#
- END # CSTITR #
- TERM
cdc/nos2.source/nam5871/cstitr.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator