User Tools

Site Tools


cdc:nos2.source:nam5871:cssdnr

CSSDNR

Table Of Contents

  • [00007] PROC CSSDNR
  • [00008] CSSDNR - DETERMINE NPU REQUIREMENT
  • [00014] DETERMINE NPU REQUIREMENT.
  • [00044] PROC CSSRCA
  • [00045] PROC SSTAQE
  • [00046] PROC SSTRQE

Source Code

CSSDNR.txt
  1. *DECK CSSDNR
  2. USETEXT TEXTCS
  3. USETEXT TXTAPSS
  4. USETEXT TEXTSS
  5. USETEXT TXTSMCS
  6. USETEXT TXCMDCS
  7. PROC CSSDNR;
  8. # TITLE CSSDNR - DETERMINE NPU REQUIREMENT #
  9.  
  10. BEGIN # CSSDNR #
  11.  
  12.  
  13. #
  14. ** CSSDNR - DETERMINE NPU REQUIREMENT.
  15. *
  16. * C. BRION 82/06/15.
  17. *
  18. * THIS PROCEDURE IS PART OF THE COMMAND RECOGNITION ELEMENT OF CS.
  19. * ITS PURPOSE IS TO DETERMINE WHETHER A COMMAND THAT HAS BEEN
  20. * SYNTAXICALLY EXAMINED BY THE COMMAND RECOGNIZER IS A COMMAND THAT
  21. * WILL NEED TO HAVE THE PHYSICAL ADDRESSES OF THE NAMED ELEMENTS
  22. * INCORPORATED INTO THE COMMAND, WHETHER THE COMMAND IS GOING TO
  23. * BE ROUTED TO THE COMMAND DISPATCHER FOR PROCESSING.
  24. *
  25. * PROC CSSDNR
  26. *
  27. * ENTRY ONE OR MORE VALID COMMANDS RESIDE IN THE VALID COMMAND
  28. * QUEUE.
  29. *
  30. * EXIT THE VALID COMMAND QUEUE ENTRIES ARE EITHER ROUTED TO
  31. * THE COMMAND DISPATCHER FOR PROCESSING OR THEY ARE
  32. * PASSED TO THE APPROPRIATE SUBROUTINE FOR FURTHER
  33. * COMMAND PARAMETERIZATION OF PHYSICAL ADDRESSES OF
  34. * NAMED ELEMENTS.
  35. *
  36. #
  37.  
  38. #
  39. **** PROC CSSDNR XREF LIST
  40. #
  41.  
  42. XREF
  43. BEGIN
  44. PROC CSSRCA; # RESOLVE SINGLE NPU COMMAND #
  45. PROC SSTAQE; # SS-ACCEPT QUEUE ENTRY #
  46. PROC SSTRQE; # SS-REMOVE QUEUE ENTRY #
  47. END
  48. #
  49. ****
  50. #
  51.  
  52. #
  53. * DEFS
  54. #
  55.  
  56.  
  57. #
  58. * ITEMS
  59. #
  60.  
  61. ITEM I,J; # LOOP VARIABLES #
  62. ITEM MATCH B; # MATCH INDICATOR #
  63. ITEM OCBORD U; # LOCAL OCB ORDINAL #
  64. ITEM STRTINDX U; # START INDX FOR SYNT PARMS #
  65. ITEM MAXINDX U; # MAX INDEX OF PARMS #
  66.  
  67.  
  68. CONTROL EJECT;
  69.  
  70. #
  71. * MAIN PROC START
  72. #
  73.  
  74. #
  75. * CLEAR OUT THE LOCAL COMMAND STORAGE AREAS.
  76. #
  77.  
  78. HDR$WORD[0] = 0;
  79. ABHWORD[1] = 0;
  80. FOR I = 0 STEP 1 UNTIL MCMDL$
  81. DO
  82. BEGIN
  83. PAR$WORD[I] = 0;
  84. END
  85.  
  86. #
  87. * REMOVE THE FIRST ENTRY FROM THE VALID COMMAND QUEUE AND KEEP
  88. * PROCESSING THE ENTRIES UNTIL THE QUEUE IS EMPTY.
  89. #
  90.  
  91. FOR I = 0 WHILE VCQL NQ 0
  92. DO
  93. BEGIN
  94. SSTRQE(P<VCQ>,WCBUF[0],HDRCMD[0],PARMS[0]);
  95.  
  96. OCBORD = HDR$OPORD[0]; # SET LOCAL OCB ORDINAL #
  97. ABHADR[1] = OCBORD; # SET ADDRESS IN ABH #
  98.  
  99. #
  100. * VALID COMMAND ENTRY NOW LOCAL, CHECK TO VERIFY THAT THE OP-
  101. * ERATOR IS STILL ACTIVELY CONNECTED TO CS. IF SO, CHECK TO
  102. * VERIFY THAT A CONNECTION BROKEN ISN'T PENDING. IF SO, SEND
  103. * A NULL TERMINAL TEXT ENTRY TO THE C LAYER TO BE ABLE TO
  104. * PROCEED WITH THE CONNECTION BROKEN.
  105. #
  106.  
  107. IF OC$STATE[OCBORD]
  108. THEN
  109. BEGIN
  110.  
  111. IF OC$CBPD[OCBORD]
  112. THEN
  113. BEGIN
  114. WCB$SMID[1] = SMID"TTEXT";
  115. WCB$WC[1] = 2;
  116. WCB$IAF[1] = TRUE;
  117. ABHTLC[1] = 0;
  118. SSTAQE(P<CNQ>,WCBUF[1],ABH[1],CSSM[1]);
  119. END
  120. ELSE
  121.  
  122. #
  123. * THE OPERATOR IS ACTIVELY CONNECTED.
  124. * SEARCH THE COMMAND PARAMETER LIST FOR THE KEYWORDS THAT WOULD
  125. * QUALIFY THE COMMAND AS A SINGLE NPU COMMAND OR A DUAL NPU
  126. * COMMAND OR A COMMAND THAT IS ALREADY TO BE ROUTED TO THE
  127. * COMMAND DISPATCHER VIA THE ROUTED COMMAND QUEUE.
  128. #
  129.  
  130. BEGIN
  131. MATCH = FALSE;
  132. STRTINDX = HDR$TXWCNT[0] + 1; # SET START INDEX#
  133. MAXINDX = HDR$SPCNT[0] + HDR$TXWCNT[0]; # SET MAX INDEX #
  134.  
  135. FOR J = STRTINDX STEP 1
  136. WHILE J LS MAXINDX AND NOT MATCH
  137. DO
  138.  
  139. BEGIN
  140.  
  141. #
  142. * CHECK THE COMMAND ELEMENT. IF A COMMAND ELEMENT THAT NEEDS
  143. * ELEMENT ADDRESSES RESOLVED, CALL PROC CSSRCA. OTHERWISE THE
  144. * COMMAND ALREADY FOR COMMAND DISPATCHER.
  145. #
  146.  
  147. IF PAR$PCODE[J] EQ "NP0"
  148. OR PAR$PCODE[J] EQ "CP0"
  149. OR PAR$PCODE[J] EQ "LI0"
  150. OR PAR$PCODE[J] EQ "TE0"
  151. OR PAR$PCODE[J] EQ "VC0"
  152. OR PAR$PCODE[J] EQ "TR0"
  153. OR PAR$PCODE[J] EQ "LL0"
  154. OR PAR$PCODE[J] EQ "NPS"
  155. OR PAR$PCODE[J] EQ "AU0"
  156. OR PAR$PCODE[J] EQ "HO0"
  157. THEN
  158. BEGIN
  159. MATCH = TRUE;
  160. CSSRCA(J);
  161. END
  162.  
  163.  
  164. END # FOR J LOOP #
  165.  
  166. #
  167. * IF NONE OF THE PARAMETER LIST KEYWORDS FOR A SINGLE OR DUAL
  168. * NPU TYPE COMMAND WERE FOUND, THEN THE COMMAND IS ALREADY
  169. * FOR THE COMMAND DISPATCHER. GENERATE A ROUTED COMMAND QUEUE
  170. * ENTRY TO THE COMMAND DISPATCHER.
  171. #
  172.  
  173. IF NOT MATCH
  174. THEN
  175. BEGIN
  176. HDR$APCNT[0] = 0;
  177. SSTAQE(P<RCQ>,WCBUF[1],HDRCMD[0],PARMS[0]);
  178. END
  179.  
  180. END # ELSE #
  181. END # IF OC$STATE #
  182.  
  183.  
  184. END # FOR I LOOP #
  185.  
  186. END # CSSDNR #
  187.  
  188. TERM
cdc/nos2.source/nam5871/cssdnr.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator