User Tools

Site Tools


cdc:nos2.source:nam5871:cstitr

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
  1. *DECK CSTITR
  2. USETEXT TEXTCS
  3. USETEXT TXTCTCS
  4. USETEXT TXTSMCS
  5. USETEXT TXTAPSS
  6. USETEXT TXTSUSS
  7. PROC CSTITR (LASTRSP);
  8. # TITLE CSTITR - ISSUE TERMINAL RESPONSE. #
  9.  
  10. BEGIN # CSTITR #
  11. #
  12. ** CSTITR - ISSUE TERMINAL RESPONSE.
  13. *
  14. * D. G. DEPEW 81/10/22.
  15. *
  16. * CSTITR BUILDS AND PLACES IN THE OUTGOING TRAFFIC QUEUE A SINGLE
  17. * CONFIGURE TERMINAL NORMAL RESPONSE SM (CNF/TE/N).
  18. *
  19. * PROC CSTITR (LASTRSP)
  20. *
  21. * ENTRY BASED ARRAYS *LINEREC*, *TRMINFO* AND *DEVNTRY* POINT TO
  22. * THE CORRECT LINE RECORD, TERMINAL ENTRY WITHIN THE LINE
  23. * RECORD AND DEVICE ENTRY WITHIN THE TERMINAL ENTRY,
  24. * RESPECTIVELY.
  25. * LASTRSP = TRUE, IF THIS IS THE LAST CNF/TE/N SM TO BE
  26. * ISSUED FOR THE LINE.
  27. * LASTRSP = FALSE, IF THIS IS NOT THE LAST CNF/TE/N SM TO BE
  28. * ISSUED FOR THE LINE.
  29. * CERTAIN FIELDS OF THE CNF/TE/N RESPONSE THAT ARE THE SAME
  30. * FOR ALL DEVICES ON A GIVEN LINE HAVE ALREADY BEEN SET
  31. * (IN PROC CSTSCT), NAMELY:
  32. * -IN THE APPLICATION BLOCK HEADER:
  33. * THE APPLICATION BLOCK TYPE (NO CHG FM INPUT)
  34. * THE APPLICATION CHARACTER TYPE (NO CHG FM INPUT)
  35. * THE CONNECTION NUMBER (ZERO - NO CHG FM INPUT)
  36. * THE DESTINATION NODE
  37. * THE SOURCE NODE
  38. * -IN THE SUPERVISORY MESSAGE BODY:
  39. * THE PFC/SFC CODE
  40. * THE PORT NUMBER
  41. * THE SUBPORT NUMBER (ALWAYS ZERO).
  42. *
  43. * EXIT A CNF/TE/N RESPONSE SM FOR THE INDICATED DEVICE HAS BEEN
  44. * PLACED IN THE OUTGOING TRAFFIC QUEUE.
  45. * ITEM *NRDEV* (IN TXTCTCS) HAS BEEN INCREMENTED BY ONE.
  46. * THE NCF DATA QUEUE MAY HAVE MOVED, CAUSING BASED ARRAYS
  47. * *LINEREC*, *TRMINFO* AND *DEVNTRY* TO POINT AT RANDOM
  48. * CORE LOCATIONS (SEE NOTE).
  49. *
  50. * NOTE THIS ROUTINE CALLS PROC SSTAQE (TO QUEUE CNF/TE/N IN OTQ),
  51. * WHICH IN TURN CALLS PROC SSTATS (TO ALLOCATE CORE IN OTQ),
  52. * WHICH CAN CAUSE STORAGE (MANAGED TABLES) TO MOVE.
  53. #
  54.  
  55. ITEM LASTRSP B; #LAST CNF/TE/N RESPONSE FOR A LINE FLAG #
  56.  
  57. #
  58. **** PROC CSTITR - XREF LIST.
  59. #
  60. XREF
  61. BEGIN
  62. PROC SSBEBF; #EXTRACT BITFIELD #
  63. PROC SSBSBF; #STORE BITFIELD #
  64. FUNC SSDCDA; #CONVERT DISPLAY CODE TO ASCII #
  65. PROC SSTAQE; #ACCEPT QUEUE ENTRY #
  66. FUNC XCHD; #CONV BIN INTEGER TO HEX DSP CODE (MACREL)#
  67. END
  68. #
  69. ****
  70. #
  71.  
  72.  
  73. ITEM I; #LOOP INDUCTION VARIABLE #
  74. ITEM OTQSIZ; #LENGTH OF CNF/TE/N IN OUTGOING TRAFFIC Q #
  75. ITEM DSPORD; #DEV NTRY WD ORD OF DEV NAME OR FN/FV PAIR#
  76. ITEM DSPBIT; #DEV NTRY ST BIT OF DEV NAME OR FN/FV PAIR#
  77. ITEM ASCORD; #CNF/TE/N WD ORD OF DEV NAME OR FN/FV PAIR#
  78. ITEM ASCBIT; #CNF/TE/N ST BIT OF DEV NAME OR FN/FV PAIR#
  79. ITEM ONECHAR; #SINGLE CHAR OR FNFV RT JUST W/LEAD ZEROES#
  80.  
  81.  
  82.  
  83.  
  84.  
  85. CONTROL FASTLOOP;
  86.  
  87. # FIRST MOVE ALL THE FIXED POSITION FIELDS EXCEPT THE DEVICE NAME #
  88. # INTO THE CNF/TE/A WORKING STORAGE AREA. #
  89.  
  90. CNFA1N[1] = TE$A1[0]; # ADDRESS ONE #
  91. CNFA2DT[1] = DE$A2DT[0]; # ADDRESS TWO, DEVICE TYPE #
  92. CNFSTIP[1] = TE$STIP[0]; # SUB-TIP TYPE #
  93. CNFTC[1] = TE$TC[0]; # TERMINAL CLASS #
  94. CNFST[1] = DE$ISTAT[0]; # INITIAL STATUS OF DEVICE #
  95. IF LASTRSP
  96. THEN # LAST CNF/TE/N RESPONSE FOR THE LINE #
  97. CNFLAST[1] = 1;
  98. ELSE # MORE CNF/TE/N RESPONSES TO FOLLOW #
  99. CNFLAST[1] = 0;
  100. CNFCDN[1] = TE$CSET[0]; # CODE SET #
  101.  
  102. # NOW CONVERT (FROM DISPLAY CODE TO ASCII) AND STORE THE DEVICE #
  103. # NAME. WE MUST TAKE GROUPED LINES INTO ACCOUNT BY APPENDING THE #
  104. # PORT NUMBER (IN CHARACTER CODED HEXIDECIMAL) TO THE ROOT DEVICE #
  105. # NAME. #
  106.  
  107. IF LR$GC[0] NQ 0
  108. THEN # THIS LINE PART OF A GROUP #
  109. DE$SUFFIX[0] = XCHD (CNFP[0]+X"100"); # INSURE LEAD ZEROES #
  110. DSPORD = 1; # SET UP TO EXTRACT AND STORE CHARACTERS #
  111. DSPBIT = 0;
  112. ASCORD = 1;
  113. ASCBIT = 4;
  114. FOR I=1 STEP 1 UNTIL 7
  115. DO # GET, CONVERT, STORE ONE CHAR AT A TIME #
  116. BEGIN
  117. SSBEBF (DEVNTRY[0], DSPORD, DSPBIT, 6, ONECHAR);
  118. IF ONECHAR NQ O"55"
  119. THEN # STORE NON-BLANK CHAR IN NEXT AVAIL POS #
  120. BEGIN
  121. ONECHAR = SSDCDA (ONECHAR);
  122. SSBSBF (CSSM[1], ASCORD, ASCBIT, 8, ONECHAR);
  123. END
  124. END
  125. IF ASCBIT NQ 0
  126. THEN # LESS THAN 7 CHAR STORE, MUST BLANK FILL #
  127. SSBSBF (CSSM[1], ASCORD, ASCBIT, 60-ASCBIT, X"202020202020");
  128.  
  129. # NOW MOVE THE FN/FV PAIRS. #
  130.  
  131. DSPORD = 2; # SET UP TO EXTRACT AND STORE FN/FV PAIRS #
  132. DSPBIT = 24;
  133. ASCORD = 2;
  134. ASCBIT = 32;
  135. FOR I=1 STEP 1 UNTIL DE$FNFV[0]
  136. DO # GET AND STORE ONE FN/FV PAIR AT A TIME #
  137. BEGIN
  138. SSBEBF (DEVNTRY[0], DSPORD, DSPBIT, 16, ONECHAR);
  139. SSBSBF (CSSM[1], ASCORD, ASCBIT, 16, ONECHAR);
  140. END
  141.  
  142. # ALL THAT IS LEFT TO DO IS SET THE TEXT LENGTH IN CHARACTERS IN #
  143. # THE APPLICATION BLOCK HEADER. THEN, SHIP THE PIG. #
  144.  
  145. ABHTLC[1] = NCNFN + 2 * DE$FNFV[0];
  146. OTQSIZ = 2 + (ABHTLC[1] * 2 + 14) / 15;
  147. SSTAQE (P<OTQ>, OTQSIZ, ABH[1], CSSM[1]);
  148. NRDEV = NRDEV + 1; # COUNT NUMBER DEVICES CONFIGURED PER LINE#
  149.  
  150. END # CSTITR #
  151.  
  152. TERM
cdc/nos2.source/nam5871/cstitr.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator