User Tools

Site Tools


cdc:nos2.source:nam5871:cssadl

CSSADL

Table Of Contents

  • [00008] PROC CSSADL
  • [00009] CSSADL - ACTION DUMP LOAD COMMAND.
  • [00014] ACTION DUMP LOAD COMMAND.
  • [00047] PROC SSTAQE
  • [00048] PROC MESSAGE
  • [00049] PROC ABORT
  • [00050] PROC MOVE

Source Code

CSSADL.txt
  1. *DECK CSSADL
  2. USETEXT TEXTCS;
  3. USETEXT TEXTSS;
  4. USETEXT TXCMDCS;
  5. USETEXT TXTAPSS;
  6. USETEXT TXTSUSS;
  7. USETEXT TXTSMCS;
  8. PROC CSSADL;
  9. # TITLE CSSADL - ACTION DUMP LOAD COMMAND. #
  10.  
  11. BEGIN # CSSADL #
  12.  
  13. #
  14. ** CSSADL - ACTION DUMP LOAD COMMAND.
  15. *
  16. * C. BRION 82/05/26.
  17. *
  18. * THIS PROCEDURE PROCESSES THE DUMP OR THE LOAD COMMAND.
  19. * THE NPU INITIALIZE SM MAY BE SENT TO THE NPU AND/OR
  20. * A SUPERVISION EVENT TO LOG THE COMMAND MAY BE SENT TO
  21. * THE EVENT PROCESSOR.
  22. *
  23. * PROC CSSADL
  24. *
  25. * ENTRY:
  26. * THE ROUTED COMMAND HAS BEEN EXTRACTED FROM THE ROUTED COMMAND
  27. * QUEUE AND STORED INTO THE COMMON STORAGE AS FOLLOWS:
  28. * WCBUF = ONE WORD ENTRY WORD COUNT.
  29. * HDRCMD = ONE WORD COMMAND HEADER DESCRIPTOR.
  30. * PARMS = ARRAY THAT CONTAINS THE COMMAND TEXT, THE SYNTAX
  31. * PARAMETER LIST AND THE ADDRESS PARAMETER LIST.
  32. *
  33. * EXIT:
  34. * A NPU INITIALIZATION SM MAY BE SENT.
  35. * A SUPERVISION EVENT TO LOG THE COMMAND MAY BE SENT.
  36. * THE NPUCB DUMP AND LOAD REQUEST FLAGS MAY BE UPDATED.
  37. *
  38. #
  39.  
  40.  
  41. #
  42. **** PROC CSSADL XREF LIST
  43. #
  44.  
  45. XREF
  46. BEGIN
  47. PROC SSTAQE; # SS - ACCEPT QUEUE ENTRY #
  48. PROC MESSAGE; # MACREL MSG TO DAYFILE #
  49. PROC ABORT; # MACREL ABORT #
  50. PROC MOVE; # MACREL MOVE MEMORY #
  51. END
  52.  
  53. #
  54. ****
  55. #
  56.  
  57. #
  58. * DEFS
  59. #
  60.  
  61. DEF NPUIDX # HDR$TXWCNT[0] + 2 #;# INDEX INTO PARAM LIST FOR NPU #
  62.  
  63.  
  64. #
  65. * ITEMS
  66. #
  67.  
  68. ITEM BEGAPIX U; # START ADDR PARAMETER INDEX #
  69. ITEM BEGNPU I; # STARTING NPUCB ORDINAL #
  70. ITEM ENDNPU I; # ENDING NPUCB ORDINAL #
  71. ITEM I U; # LOOP VARIABLE #
  72. ITEM BEGSYIX U; # START INDEX OF SYNLIST#
  73. ITEM FINSYIX U; # END INDEX OF SYN LIST #
  74. ITEM FINALIX U; # LAST ADDR PARAMETER INDEX #
  75. ITEM MATCH B; # MATCH INDICATOR #
  76. ITEM NPUORD U; # NPU ORDINAL #
  77. ITEM ONF B; # ON FLAG INDICATOR #
  78. ITEM OFFF B; # OFF FLAG INDICATOR #
  79. ITEM MOVCNT U; # MOVE CHAR COUNT #
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86. #
  87. * SET THE INITIAL ADDRESS PARAMETER LIST BEGINNING AND ENDING
  88. * INDEX.
  89. #
  90.  
  91. BEGAPIX = HDR$SPCNT[0] + HDR$TXWCNT[0];
  92. FINALIX = BEGAPIX + HDR$APCNT[0];
  93. BEGSYIX = HDR$TXWCNT[0];
  94. FINSYIX = BEGSYIX + HDR$SPCNT[0];
  95.  
  96. #
  97. * CLEAR THE OUTGOING SM STORAGE AREAS.
  98. #
  99.  
  100. WCB$WORD[1] = 0;
  101. ABHWORD[1] = 0;
  102. SPMSG0[1] = 0;
  103.  
  104.  
  105. #
  106. * IF THIS COMMAND IS FOR ONLY ONE NPU, THEN SEARCH FOR THE NPUCB
  107. * ORDINAL IN THE ADDRESS PARAMETER LIST AND SET THE BEGINNING AND
  108. * ENDING NPU ORDINAL TO THE ORDINAL IN THE PARAMETER LIST.
  109. *
  110. #
  111. IF PAR$PCODE[NPUIDX] EQ "NP0"
  112. THEN
  113. BEGIN
  114.  
  115. FOR I = BEGAPIX STEP 1 WHILE (I LS FINALIX
  116. AND PAR$PCODE[I] NQ "NOR")
  117. DO
  118. BEGIN
  119. END
  120. BEGNPU = PAR$ORD[I];
  121. ENDNPU = BEGNPU;
  122. END
  123.  
  124. #
  125. * IF THIS COMMAND IS FOR MULTIPLE NPUS, THEN SET THE BEGINNING AND
  126. * ENDING NPUCB ORDINALS TO BE THE FIRST AND LAST NPU CONTROL
  127. * BLOCK.
  128. #
  129. ELSE
  130. BEGIN
  131. BEGNPU = 0;
  132. ENDNPU = CSNPCNT - 1;
  133. END
  134.  
  135.  
  136.  
  137. #
  138. * CHECK ADDRESS PARAMETER LIST FOR THE PRESENCE OF THE ON OR OFF
  139. * KEYWORDS.
  140. #
  141.  
  142. OFFF = FALSE;
  143. ONF = FALSE;
  144. FOR I = BEGSYIX STEP 1 WHILE (I LS FINSYIX
  145. AND NOT ONF
  146. AND NOT OFFF)
  147. DO
  148. BEGIN
  149. IF PAR$PCODE[I] EQ "ON0"
  150. THEN
  151. ONF = TRUE;
  152. ELSE IF PAR$PCODE[I] EQ "OFF"
  153. THEN
  154. OFFF = TRUE;
  155. END
  156.  
  157.  
  158. NPIDPP[1] = O"116";
  159. IF ONF
  160. THEN
  161. NPIDPP[1] = O"131"; # SET TO ASCII Y #
  162.  
  163. #
  164. * PREPARE THE OUTGOING NPU INITIALIZATION SM.
  165. #
  166.  
  167. IF HDR$VERB[0] EQ "LO0" # IF LOAD, SET NPI IN PFCSFC #
  168. THEN
  169. BEGIN
  170. PFCSFC[1] = NPIIN;
  171.  
  172. IF NOT ONF AND
  173. NOT OFFF
  174. THEN
  175. BEGIN
  176. NPIDPP[1] = 0;
  177. END
  178. END
  179. ELSE
  180. BEGIN
  181. PFC[1] = NPI;
  182. SFC[1] = DP;
  183. END
  184.  
  185. ABHABT[1] = APPSUP;
  186. ABHBT[1] = APPSUP;
  187. ABHACT[1] = ACTCSNP$;
  188. ABHTLC[1] = NNPI;
  189. WCB$WC[1] = LNPI + 2;
  190. WCB$SMID[1] = SMID"NPIIN";
  191.  
  192. #
  193. * FOR EACH NPUCB SPECIFIED BY THE BEGINNING AND ENDING ORDINALS.
  194. #
  195. FOR NPUORD=BEGNPU STEP 1 UNTIL ENDNPU
  196. DO
  197. BEGIN
  198. NPU$DMPF[NPUORD] = FALSE;
  199.  
  200.  
  201. #
  202. * THE NPU STATE SHOULD BE SUPERVISED. IF SO AND THE DUMP
  203. * ON KEYWORD SPECIFIED, SET THE DUMP OPTION TO ASCII Y IN THE NPU
  204. * INITIALIZATION SM TO BE SENT. OTHERWISE, SET THE DUMP OPTION TO
  205. * ASCII N. IN EITHER CASE SEND THE NPU INITIALIZATION SM TO THE
  206. * OUTGOING TRAFFIC QUEUE.
  207. #
  208.  
  209. IF NPU$STAT[NPUORD] EQ SUPSTAT"SUP"
  210. THEN
  211. BEGIN
  212.  
  213. ABHDN[1] = NPU$NID[NPUORD];
  214. ABHSN[1] = NPU$HID[NPUORD];
  215. SSTAQE(P<OTQ>,WCBUF[1],ABH[1],CSSM[1]); # SEND SM #
  216. END
  217.  
  218. #
  219. * CHECK IF NPU IS IN A NCF MISMATCHED STATE. IF SO, SET THE LOAD
  220. * REQUEST FLAG SINCE THIS MUST BE A LOAD COMMAND FROM THE HOP. A
  221. * SUBSEQUENT SUP/IN SM FROM THE NPU WILL CAUSE THE NEW LOAD REQUEST
  222. * FLAG TO BE SENT TO THE NPU IN THE SUP/IN/A SM.
  223. * SET THE DUMP FLAG ALSO IF SO INDICATED FROM THE DUMP ON KEYWORD
  224. * IN THE COMMAND.
  225. #
  226.  
  227. ELSE IF (NPU$STAT[NPUORD] EQ SUPSTAT"NCFMIS" OR
  228. NPU$STAT[NPUORD] EQ SUPSTAT"LEVMIS") AND
  229. HDR$VERB[0] EQ "LO0"
  230. THEN
  231. BEGIN
  232. NPU$LRF[NPUORD] = TRUE;
  233. IF ONF
  234. THEN
  235. NPU$DMPF[NPUORD] = TRUE;
  236. END
  237. END
  238.  
  239. #
  240. * PREPARE THE COMMAND TEXT PRECEEDED BY THE OPERATOR TERMINAL
  241. * NAME FOR THE LOG FILE. THE LOG FILE ENTRY IS SENT AS A
  242. * SUPERVISION EVENT TO THE EVENT PROCESSOR.
  243.  
  244. #
  245. WCB$WORD[1] = 0;
  246. ABHWORD[1] = 0;
  247. WCB$SMID[1] = SMID"CMDTXT";
  248. WCB$WC[1] = HDR$TXWCNT[0] + 4;
  249. ABHTLC[1] = (HDR$TXWCNT[0] + 2) * 10;
  250. CMD$TNAM[0] = OC$TNAM[HDR$OPORD[0]];
  251. MOVCNT = HDR$TXWCNT[0];
  252. P<MSCMD> = LOC(CMD$TEXT[0]); # SET UP FOR MOVE #
  253. MOVE(MOVCNT,PARMS[0],MSCMD[0]); #MOVE TEXT INTO BUFFER#
  254. SSTAQE(P<EVQ>,WCBUF[1],ABH[1],CMDLINE[0]);
  255.  
  256. #
  257. * NOW SEND THE NULL TERMINAL TEXT ENTRY TO THE OPERATOR WHICH WILL
  258. * CAUSE THE READY.. MESSAGE TO BE SENT TO THE OPERATOR.
  259. #
  260.  
  261. WCB$WORD[1] = 0;
  262. ABHWORD[1] = 0;
  263. WCB$SMID[1] = SMID"TTEXT";
  264. WCB$WC[1] = 2;
  265. WCB$IAF[1] = TRUE; # SET INPUT ALLOWED #
  266. ABHADR[1] = HDR$OPORD[0];
  267. ABHTLC[1] = 0; # ZERO LENGTH TTEXT #
  268. SSTAQE(P<CNQ>,WCBUF[1],ABH[1],CSSM[1]);
  269.  
  270. END # CSSADL #
  271. TERM
cdc/nos2.source/nam5871/cssadl.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator