Table of Contents

DMKMIA Source

References

Source Listing

DMKMIA.ASSEMBLE.txt
  1. MIA TITLE 'DMKMIA (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 @VA08412 00001500
  3. COPY OPTIONS 00002000
  4. COPY LOCAL 00003000
  5. DMKMIA CSECT 00004000
  6. MODID DC CL8'DMKMIA' I.D. 00005000
  7. USING PSA,R0 00006000
  8. USING VMBLOK,R11 00007000
  9. USING SAVEAREA,R13 00008000
  10. EJECT 00009000
  11. *. 00010000
  12. * 00011000
  13. * MODULE NAME - 00012000
  14. * 00013000
  15. * DMKMIA 00014000
  16. * 00015000
  17. * FUNCTION - 00016000
  18. * 00017000
  19. * TO AUTOMATICALLY START AND STOP MONITOR AND TO PROVIDE 00018000
  20. * ROUTINES FOR WRITING AND CLOSING MONITOR SPOOL FILES. ALSO 00019000
  21. * TO PROVIDE A UTILITY TO START NEW MONITOR SPOOL FILES. 00020000
  22. * 00021000
  23. * ATTRIBUTES - 00022000
  24. * 00023000
  25. * REENTRANT, PAGEABLE, CALLED VIA SVC 00024000
  26. * 00025000
  27. * ENTRY POINTS - 00026000
  28. * DMKMIAIN - TO AUTOMATICALLY START MONITOR 00027000
  29. * DMKMIAMU - TO SEND OUT MESSAGES TO MONITOR USERS 00028000
  30. * DMKMIAKC - ROUTINE TO INITIATE A MONITOR CLOSE 00029000
  31. * DMKMIADL - MONITOR DISPLAY ROUTINE 00030000
  32. * DMKMIAWO - ROUTINE TO WRITE OUT MONITOR SPOOL BUFFS 00031000
  33. * DMKMIARO - ROUTINE TO INITIATE MONITOR SPOOL FILES 00032000
  34. * DMKMIACC - ROUTINE TO CLOSE A MONITOR SPOOL FILE 00033000
  35. * DMKMIAEN - TO AUTOMATICALLY STOP MONITOR 00034000
  36. * DMKMIAST - TO SCHEDULE TRQ'S FOR AUTODISK OPTION 00035000
  37. * 00036000
  38. * ENTRY CONDITIONS - 00037000
  39. * 00038000
  40. * REFER TO THE PROLOG ASSOCIATED WITH EACH ENTRY POINT 00039000
  41. * 00040000
  42. * EXIT CONDITIONS - 00041000
  43. * 00042000
  44. * REFER TO THE PROLOG ASSOCIATED WITH EACH ENTRY POINT 00043000
  45. * 00044000
  46. * EXTERNAL REFERENCES - 00045000
  47. * 00046000
  48. * THE FOLLOWING ARE FUNCTIONAL EXTERNAL REFERENCES 00047000
  49. * OR ROUTINES WHICH ARE CALLED BY THIS ROUTINE. 00048000
  50. * 00049000
  51. EXTRN DMKMCCCL 00050000
  52. EXTRN DMKPRGMC 00051000
  53. EXTRN DMKCVTDT 00052000
  54. EXTRN DMKSYSAT 00053000
  55. EXTRN DMKSYSUR 00054000
  56. EXTRN DMKSYSTE 00055000
  57. EXTRN DMKSYSTS 00056000
  58. EXTRN DMKSYSEN 00057000
  59. EXTRN DMKRSPID 00058000
  60. EXTRN DMKSYSCL 00059000
  61. EXTRN DMKSYSMX 00060000
  62. EXTRN DMKRPAPT 00061000
  63. EXTRN DMKRPAGT,DMKPGTVG,DMKPGTVR 00061100
  64. EXTRN DMKCVTAB 00062000
  65. EXTRN DMKPGTSG 00063000
  66. EXTRN DMKMNISH 00064000
  67. EXTRN DMKCKSPL 00065000
  68. EXTRN DMKPRGC8 00066000
  69. EXTRN DMKCVTBD 00067000
  70. EXTRN DMKSTKCP 00068000
  71. EXTRN DMKSCNFD 00069000
  72. EXTRN DMKUDRFU 00070000
  73. EXTRN DMKMNIDK 00071000
  74. EXTRN DMKERMSG 00072000
  75. EXTRN DMKSCHRT 00073000
  76. EXTRN DMKSCHST 00074000
  77. EXTRN DMKENTST 00075000
  78. EXTRN DMKENTET 00076000
  79. EXTRN DMKENTBS 00077000
  80. EXTRN DMKENTES 00078000
  81. EXTRN DMKENTTE 00079000
  82. EXTRN DMKENTTB 00080000
  83. EXTRN DMKENTSC 00081000
  84. EXTRN DMKENTEC 00082000
  85. EXTRN DMKSCNAU 00083000
  86. EXTRN DMKSYSBF 00084000
  87. EXTRN DMKDSPNP 00085000
  88. EXTRN DMKENTFI 00086000
  89. EXTRN DMKMNIDS 00087000
  90. EXTRN DMKRSPMN 00088000
  91. AIF (NOT &AP).LOKSY5 00088900
  92. EXTRN DMKLOKSY 00089000
  93. EXTRN DMKLOKFR 00090000
  94. EXTRN DMKLOKRL 00091000
  95. EXTRN DMKLOKTR 00092000
  96. EXTRN DMKLOKDS 00093000
  97. EXTRN DMKLOKCT 00094000
  98. .LOKSY5 ANOP 00094100
  99. EXTRN DMKFRENP 00095000
  100. EXTRN DMKSPLSP @VA07887 00095100
  101. EXTRN DMKSPLDL @VA07979 00095150
  102. * 00096000
  103. * REGISTER USAGE IN THIS MODULE - 00097000
  104. * R1 - R10 WORK REGISTERS 00098000
  105. * R11 - VMBLOK 00099000
  106. * R12 - ADDRESSABILITY 00100000
  107. * R13 - SAVE AREA 00101000
  108. * R14 - BALR LINKAGE 00102000
  109. * R15 - BALR LINKAGE 00103000
  110. * 00104000
  111. *. 00105000
  112. EJECT 00106000
  113. *. 00107000
  114. * ENTRY POINT - 00108000
  115. * 00109000
  116. * DMKMIAIN - ENTRY POINT TO START MONITOR AUTOMATICALLY 00110000
  117. * 00111000
  118. * ENTRY CONDITIONS - 00112000
  119. * 00113000
  120. * GPR11 - VMBLOK OF USER 00114000
  121. * GPR13 - SAVE AREA 00115000
  122. * 00116000
  123. * EXIT CONDITIONS - 00117000
  124. * 00118000
  125. * NONE 00119000
  126. * 00120000
  127. * CALLS TO OTHER ROUTINES - 00121000
  128. * 00122000
  129. * DMKFREE - TO ACQUIRE STORAGE FOR A COMMAND BUFFER 00123000
  130. * DMKFRET - TO RELEASE STORAGE CONTAINING A COMMAND 00124000
  131. * DMKMCCCL - TO EXECUTE THE COMMAND IN THE COMMAND BUFFER 00125000
  132. * DMKQCNWT - TO WRITE OUT A WARNING MESSAGE TO THE USER 00126000
  133. * 00127000
  134. * REGISTER USAGE - 00128000
  135. * 00129000
  136. * R6 - LINKAGE TO MESSAGE ROUTINE 00130000
  137. * R11 - VMBLOK 00131000
  138. * R12 - ENTRY POINT 00132000
  139. * R13 - SAVE AREA 00133000
  140. * 00134000
  141. * OPERATION - 00135000
  142. * 00136000
  143. * A BUFFER IS BUILT AND A COMMAND IS INSERTED REFLECTING 00137000
  144. * THE DEFAULT OF THE MONITOR SPOOL ENVIRONMENT. THE 00138000
  145. * COMMAND IS SHIPPED TO DMKMCCCL FOR EXECUTION. 00139000
  146. * 00140000
  147. *. 00141000
  148. SPACE 1 00142000
  149. DMKMIAIN RELOC @V50A2B5 00143000
  150. L R1,=A(DMKSYSBF) SEE HOW MANY @V50A2B5 00144000
  151. LH R1,0(R1) BUFFERS WE NEED @V50A2B5 00145000
  152. C R1,F1 SEE IF EXACTLY ONE @V50A2B5 00146000
  153. BNE CONTIN1 NO, CONTINUE NORMALLY @V50A2B5 00147000
  154. L R1,=A(DMKPRGC8) ONLY PERFORM ALLOWED FOR 1 BUFF@V50A2B5 00148000
  155. L R2,0(R1) SEE IF ANY THERE @V50A2B5 00149000
  156. LTR R2,R2 @V50A2B5 00150000
  157. BZ CHKDFLT NO, CHECK DEFAULT @V50A2B5 00151000
  158. TM 2(R1),X'FF'-PERFCL IS OTHER THAN PERFORM ON? @V50A2B5 00152000
  159. BNE INVBUFFZ SHOULDN'T BE @V50A2B5 00153000
  160. TM 3(R1),X'FF' ANYTHING ELSE ON @V50A2B5 00154000
  161. BNE INVBUFFZ SHOULDN'T BE @V50A2B5 00155000
  162. B CONTIN1 JUST CONTINUE NOW @V50A2B5 00156000
  163. CHKDFLT EQU * @V50A2B5 00157000
  164. L R1,=A(DMKSYSEN) LOOK AT THE ENABLE CLASSES @V50A2B5 00158000
  165. TM 0(R1),X'FF'-PERFCL IS OTHER THAN PERFORM ON? @V50A2B5 00159000
  166. BNE INVBUFFZ SHOULDN'T BE @V50A2B5 00160000
  167. TM 1(R1),X'FF' ANYTHING ELSE ON? @V50A2B5 00161000
  168. BNE INVBUFFZ SHOULDN'T BE @V50A2B5 00162000
  169. CONTIN1 EQU * @V50A2B5 00163000
  170. LA R0,L'STARTMSG GET LENGTH OF START MESSAGE @V50A2B5 00164000
  171. LA R1,STARTMSG GET ADDRESS OF START MESSAGE @V50A2B5 00165000
  172. CALL DMKQCNWT,PARM=NORET+OPERATOR SEND IT OUT @V50A2B5 00166000
  173. LA R0,18 ACQUIRE A MESSAGE WORK AREA @V50A2B5 00167000
  174. CALL DMKFREE FOR A COMMAND BUFFER @V50A2B5 00168000
  175. L R4,=A(DMKSYSUR) GET DEFAULT USER ID @V50A2B5 00169000
  176. MVC STUID(8),0(R4) MOVE IT INTO WORK AREA @V50A2B5 00170000
  177. LR R3,R0 SAVE THESE NUMBERS WHILE @V50A2B5 00171000
  178. LR R4,R1 WE WORK WITH REG(S) @V50A2B5 00172000
  179. MVC BUFFS(5),BLANKS BLANK OUT THE BUFFS FIELD @V50A2B5 00173000
  180. MVC BUFFNO(2),BLANKS HERE BLANK OUT THE BUFFS NUMBER@V50A2B5 00174000
  181. L R1,=A(DMKSYSBF) GET THE BUFFERS @V50A2B5 00175000
  182. LH R1,0(R1) LOAD FROM HALF WORD @V50A2B5 00176000
  183. LTR R1,R1 CHECK OF ZERO @V50A2B5 00177000
  184. BZ SENDASIS IF ZERO, USE MONITOR DEFAULTS @V50A2B5 00178000
  185. MVC BUFFS(5),=C'BUFFS' THEN SAY BUFFS @V50A2B5 00179000
  186. CALL DMKCVTBD CONVERT @V50A2B5 00180000
  187. STCM R1,B'0011',BUFFNO STORE RESULT IN COMMAND @V50A2B5 00181000
  188. SENDASIS LR R0,R3 NOW, RESTORE THE REGISTERS @V50A2B5 00182000
  189. LR R1,R4 AS WE CAN WORK AS BEFORE @V50A2B5 00183000
  190. MVC 0(STMSGSZ,R1),STMSG FILL IN THE MESSAGE @V50A2B5 00184000
  191. LR R9,R1 R9 BECOMES THE WORK AREA @V50A2B5 00185000
  192. ST R1,X'88'(R9) PUT IN THE POINTER @V50A2B5 00186000
  193. LA R5,STMSGSZ PUT IN THE SIZE ALSO @V50A2B5 00187000
  194. BCTR R5,R0 MINUS ONE @V50A2B5 00188000
  195. ST R5,X'8C'(R9) PUT IN THIS COMMAND INDICATOR @V50A2B5 00189000
  196. CALL DMKMCCCL CALL DMKMCCCL TO EXECUTE IT @V50A2B5 00190000
  197. LA R0,18 FREE UP THE WORK MSG AREA @V50A2B5 00191000
  198. CALL DMKFRET AS COMMAND IS EXECUTED @V50A2B5 00192000
  199. LA R0,L'STARTMSG LOAD IN LENGTH OF START MSG @V50A2B5 00193000
  200. LA R1,STARTMSG ALSO THE ADDRESS OF IT @V50A2B5 00194000
  201. BAL R6,MONUMSG LET USER KNOW @V50A2B5 00195000
  202. BAL R6,MONOMSG LET RECEIVER KNOW FOR THE HECK @V50A2B5 00196000
  203. B EXITS FINISHED @V50A2B5 00197000
  204. SPACE 1 00198000
  205. INVBUFFZ EQU * @V50A2B5 00199000
  206. LA R0,L'BADEN SEND OUT BAD ENABLE CLASS MSG @V50A2B5 00200000
  207. LA R1,BADEN FOR ONE BUFFER MONITORING @V50A2B5 00201000
  208. CALL DMKQCNWT,PARM=OPERATOR+NORET GIVE IT TO OPERATOR@V50A2B5 00202000
  209. B EXITS LEAVE @V50A2B5 00203000
  210. SPACE 5 00204000
  211. EJECT 00205000
  212. MONOMSG LR R3,R0 SAVE REGISTER 0 @V50A2B5 00206000
  213. LR R4,R1 AND REGISTER 1 @V50A2B5 00207000
  214. L R1,=A(DMKSYSUR) GET MONITOR USER NAME @V50A2B5 00208000
  215. USING MONCOM,R2 @VA08954 00208100
  216. L R2,=A(DMKPRGMC) GET MONCOM ADDRESS @VA08954 00208200
  217. ICM R2,B'1111',0(R2) IS IT THERE ? @VA08954 00208300
  218. BZ NMONUMSG DOES NOT EXIST - EXIT @VA08954 00208400
  219. CLC MONUSER(8),0(R1) IS RECEIVER EQUAL TO USER? @VA08954 00208500
  220. BE NMONUMSG YES - BYPASS MSG WRITE @VA08954 00208600
  221. DROP R2 @VA08954 00208700
  222. B SCANLEN AND DETERMINE ITS LENGTH @V50A2B5 00209000
  223. MONUMSG EQU * @V50A2B5 00210000
  224. LR R3,R0 SAVE INFORMATION @V50A2B5 00211000
  225. LR R4,R1 NAMELY REGISTERS 0 AND 1 @V50A2B5 00212000
  226. L R1,=A(DMKPRGMC) GET MONCOM ADDRESS @V50A2B5 00213000
  227. ICM R1,B'1111',0(R1) TEST FOR EXISTENCE @V50A2B5 00214000
  228. BZ NMONUMSG DOES NOT EXIST, EXIT @V50A2B5 00215000
  229. USING MONCOM,R1 @V50A2B5 00216000
  230. LA R1,MONUSER GET USER IN MONCOM @V50A2B5 00217000
  231. DROP R1 @V50A2B5 00218000
  232. SCANLEN LR R2,R1 REG 1 WILL BE USED LATER @V50A2B5 00219000
  233. LA R5,8 ACQUIRE LENGTH @V50A2B5 00220000
  234. XBLK CLI 0(R2),C' ' SEE IF BLANK @V50A2B5 00221000
  235. BE YEND YES, THE END @V50A2B5 00222000
  236. LA R2,1(R2) BUMP TO THE NEXT CHARACTER @V50A2B5 00223000
  237. BCT R5,XBLK DECREMENT COUNTER @V50A2B5 00224000
  238. YEND SR R2,R1 COMPUTE LENGTH @V50A2B5 00225000
  239. LR R0,R2 GIVE TO SCNAU CORRECTLY @V50A2B5 00226000
  240. CALL DMKSCNAU SEE IF FELLOW IS LOGGED ON @V50A2B5 00227000
  241. BNZ NMONUMSG NO, HE IS NOT @V50A2B5 00228000
  242. C R1,ASYSVM SEE IF THIS IS THE SYSTEM @V50A2B5 00229000
  243. BE NMONUMSG YES, NOT GOOD ENOUGH @V50A2B5 00230000
  244. C R1,ASYSOP SEE IF THIS IS THE OPERATOR @V50A2B5 00231000
  245. BE NMONUMSG YES, NOT GOOD ENOUGH @V50A2B5 00232000
  246. LR R5,R11 SAVE VMBLOK OF CURRENT USER @V50A2B5 00233000
  247. SWTCHVM STAY SWITCH USERS @VA07887 00234000
  248. LR R0,R3 NOW WE CAN RESTORE REGISTER 0 @V50A2B5 00237000
  249. LR R1,R4 AND REGISTER ONE @V50A2B5 00238000
  250. CALL DMKQCNWT,PARM=NORET PUT OUT A MESSAGE @V50A2B5 00239000
  251. LR R1,R5 SETUP R1 FOR SWITCH @VA07887 00240000
  252. SWTCHVM SWITCH BACK USERS @VA07887 00241000
  253. NMONUMSG EQU * @V50A2B5 00243000
  254. LR R0,R3 RESTORE REGISTER 0 @V50A2B5 00244000
  255. LR R1,R4 AND REGISTER 1 @V50A2B5 00245000
  256. BR R6 RETURN TO CALLER @V50A2B5 00246000
  257. EJECT 00247000
  258. *. 00248000
  259. * 00249000
  260. * ENTRY POINT - 00250000
  261. * 00251000
  262. * DMKMIAMU - ENTRY POINT TO SEND OUT MESSAGE TO USER IN 00252000
  263. * MONCOM AREA. 00253000
  264. * 00254000
  265. * ENTRY CONDITIONS - 00255000
  266. * 00256000
  267. * GPR11 - ADDRESS OF VMBLOK OF USER 00257000
  268. * GPR13 - ENTRY POINT ADDRESS 00258000
  269. * 00259000
  270. * EXIT CONDITIONS - 00260000
  271. * 00261000
  272. * NONE 00262000
  273. * 00263000
  274. * EXTERNAL REFERENCES/EXTERNAL ROUTINES - 00264000
  275. * 00265000
  276. * DMKSYSUR - NAME OF DEFAULT USER OF MONITOR 00266000
  277. * DMKQCNWT - ROUTINE TO WRITE OUT MESSAGE 00267000
  278. * 00268000
  279. * REGISTER USAGE - 00269000
  280. * 00270000
  281. * GPR6 - LINKAGE TO MESSAGE ROUTINE 00271000
  282. * GPR11 - ADDRESS OF VMBLOK OF USER 00272000
  283. * GPR12 - ADDRESSABILITY 00273000
  284. * GPR13 - SAVE AREA 00274000
  285. * 00275000
  286. * OPERATION - 00276000
  287. * 00277000
  288. * THIS ROUTINE SIMPLY SENDS OUT A MESSAGE TO THE 00278000
  289. * MONITOR DEFAULT USER WHOSE NAME IS FOUND IN DMKSYS. 00279000
  290. * A GENERAL ROUTINE DOES THIS, THE IS AN ENTRY POINT 00280000
  291. * FOR OTHER ROUTINES. 00281000
  292. * 00282000
  293. *. 00283000
  294. SPACE 1 00284000
  295. DMKMIAMU RELOC @V50A2B5 00285000
  296. BAL R6,MONOMSG PUT OUT THE MESSAGE @V50A2B5 00286000
  297. L R6,=A(DMKSYSUR) IF HE IS IN FACT THE OPERATOR @V50A2B5 00287000
  298. L R7,ASYSOP BY COMPARING TO THE OPERATOR'S @V50A2B5 00288000
  299. LA R7,VMUSER-VMBLOK(R7) REAL NAME @V50A2B5 00289000
  300. CLC 0(8,R6),0(R7) ROUTINE WOULD SKIP IT @V50A2B5 00290000
  301. BNE EXITS ELSE WE ARE DONE @V50A2B5 00291000
  302. CALL DMKQCNWT,PARM=NORET+OPERATOR SO SEND OUT MSG @V50A2B5 00292000
  303. B EXITS AND EXIT @V50A2B5 00293000
  304. EJECT 00294000
  305. *. 00295000
  306. * 00296000
  307. * ENTRY POINT - 00297000
  308. * 00298000
  309. * DMKMIAKC - ROUTINE TO ISSUE 'MONITOR CLOSE' COMMAND 00299000
  310. * INTERNALLY. 00300000
  311. * 00301000
  312. * ENTRY CONDITIONS - 00302000
  313. * 00303000
  314. * GPR11 - ADDRESS OF VMBLOK OF USER 00304000
  315. * GPR13 - SAVE AREA 00305000
  316. * 00306000
  317. * EXIT CONDITIONS - 00307000
  318. * 00308000
  319. * NONE 00309000
  320. * 00310000
  321. * EXTERNAL REFERENCES - 00311000
  322. * 00312000
  323. * DMKFREE - TO ACQUIRE STORAGE FOR A COMMAND BUFFER 00313000
  324. * DMKFRET - TO RELEASE THE COMMAND BUFFER 00314000
  325. * DMKMCCCL - TO EXECUTE THE COMMAND 00315000
  326. * 00316000
  327. * REGISTER USAGE - 00317000
  328. * 00318000
  329. * GPR11 - ADDRESS OF VMBLOK OF USER 00319000
  330. * GPR12 - ADDRESSABILITY 00320000
  331. * GPR13 - SAVE AREA 00321000
  332. * 00322000
  333. * OPERATION - 00323000
  334. * THIS ROUTINE IS BUILDS A COMMAND BUFFER FOR DMKMCCCL 00324000
  335. * WHICH EXECUTES THE 'MONITOR CLOSE' COMMAND. 00325000
  336. * 00326000
  337. *. 00327000
  338. SPACE 1 00328000
  339. DMKMIAKC RELOC @V50A2B5 00329000
  340. LA R0,18 ACQUIRE 18 DOUBLE WORDS @V50A2B5 00330000
  341. CALL DMKFREE TO BUILD A COMMAND BUFFER @V50A2B5 00331000
  342. MVC 0(CLSMSGSZ,R1),CLSMSG PUT IN THE COMMAND @V50A2B5 00332000
  343. LR R9,R1 IT WILL BE PASSED IN REGISTER 9 @V50A2B5 00333000
  344. ST R1,X'88'(R9) PUT IN BUFFER FIELDS @V50A2B5 00334000
  345. LA R5,CLSMSGSZ SUCH AS THE LENGTH @V50A2B5 00335000
  346. BCTR R5,R0 MINUS ONE @V50A2B5 00336000
  347. ST R5,X'8C'(R9) STORE THAT @V50A2B5 00337000
  348. CALL DMKMCCCL NOW, DO THE EXECUTION @V50A2B5 00338000
  349. LA R0,18 TAKE THOSE 18 DOUBLE WORDS @V50A2B5 00339000
  350. CALL DMKFRET AND FRET THEM @V50A2B5 00340000
  351. B EXITS THEN EXIT @V50A2B5 00341000
  352. EJECT 00342000
  353. *. 00343000
  354. * 00344000
  355. * ENTRY POINT - DMKMIADL 00345000
  356. * 00346000
  357. * ENTRY CONDITIONS - 00347000
  358. * 00348000
  359. * GPR11 - ADDRESS OF VMBLOK OF USER 00349000
  360. * GPR13 - SAVE AREA 00350000
  361. * 00351000
  362. * EXIT CONDITIONS - 00352000
  363. * 00353000
  364. * NONE 00354000
  365. * 00355000
  366. * EXTERNAL REFERENCES - 00356000
  367. * 00357000
  368. * DMKFREE - TO ACQUIRE STORAGE FOR MESSAGES 00358000
  369. * DMKFRET - TO FREE UP THE MESSAGE AREA 00359000
  370. * DMKMNIDS - TO DISPLAY THE MONITOR INFORMATION 00360000
  371. * DMKPRGC8 - ENABLE CLASSES 00361000
  372. * DMKPRGMC - ADDRESS OF MONCOM AREA 00362000
  373. * DMKQCNWT - ROUTINE TO SEND OUT MESSAGES 00363000
  374. * DMKSYSEN - MONITOR DEFAULT ENABLE CLASSES 00364000
  375. * 00365000
  376. * REGISTER USAGE - 00366000
  377. * 00367000
  378. * GPR8 - ROUTINE LINKAGE 00368000
  379. * GPR11 - ADDRESS OF VMBLOK OF USER 00369000
  380. * GPR12 - ADDRESSABILITY 00370000
  381. * GPR13 - SAVE AREA 00371000
  382. * 00372000
  383. * OPERATION - 00373000
  384. * 00374000
  385. * THIS CODE IS ESSENTIALLY THAT FOUND IN DMKMCC FOR MONITOR 00375000
  386. * DISPLAY FUNCTION WITH SOME VARIATIONS. IT WAS MOVED TO SAVE 00376000
  387. * SPACE FOR OTHER CODE. ESSENTIALLY, A BUFFER FIOR THE 00377000
  388. * DISPLAY OUTPUT IS OBTAINED. A LINE IS WRITTEN OUT FOR THE 00378000
  389. * STATUS FO THE INTERNAL TRACE TABLE, AND A LINE FOR EACH 00379000
  390. * ENABLE CLASS SPECIFYING ITS STATUS. A MESSAGE IS ALSO PUT OUT 00380000
  391. * INDICATING WHETHER SPOOL OR TAPE MONITORING IS ACTIVE. 00381000
  392. * OTHER SPOOL MONITOR INFORMATION IS GIVEN BY DMKMNIDS. 00382000
  393. * 00383000
  394. *. 00384000
  395. SPACE 1 00385000
  396. USING SAVEAREA,R13 @V50A2B5 00386000
  397. DMKMIADL RELOC @V50A2B5 00387000
  398. MVC SAVEWRK1(4),F5 KEEP THE DEFAULT (SPOOL) HERE @V50A2B5 00388000
  399. CALL DMKSCNFD ACQUIRE THE LAST PARAMETER @V50A2B5 00389000
  400. BNZ PROCALL NOTHING, GO TO DEFAULT @V50A2B5 00390000
  401. ST R0,SAVEWRK1 THIS VALUE WILL INDICATE @V50A2B5 00391000
  402. CL R0,F3 IF IT IS IN FACT @V50A2B5 00392000
  403. BNE TEST4 MON ALL THAT IS WANTED @V50A2B5 00393000
  404. CLC 0(3,R1),=C'ALL' MAKE SURE IT IS ALL @V50A2B5 00394000
  405. BE PROCALL AND SHIP TO THE PROPER SECTION @V50A2B5 00395000
  406. B MSG002 ELSE WE HAVE AN ERROR @V50A2B5 00396000
  407. TEST4 CL R0,F4 SEE IF THERE ARE FOUR CHARACTERS@V50A2B5 00397000
  408. BNE TEST5 IF FIVE, TRY FIVE @V50A2B5 00398000
  409. CLC 0(4,R1),=C'TAPE' SEE IF TAPE WAS SPECIFIED @V50A2B5 00399000
  410. BE PROCALL AND CONTINUE ON IF SO @V50A2B5 00400000
  411. B MSG002 ELSE WE HAVE AN ERROR @V50A2B5 00401000
  412. TEST5 CL R0,F5 AND IF IN FACT IT IS FIVE @V50A2B5 00402000
  413. BNE MSG002 ELSE WE HAVE AN ERROR @V50A2B5 00403000
  414. CLC 0(5,R1),=C'SPOOL' MAKE SURE IT IS SPOOL @V50A2B5 00404000
  415. BNE MSG002 ELSE WE HAVE AN ERROR @V50A2B5 00405000
  416. PROCALL LA R0,3 3 DOUBLEWORDS FOR DISPLAY REPLY @V2B2638 00406000
  417. CALL DMKFREE GET IT PLEASE @V2B2638 00407000
  418. BAL R8,STATMSG PUT OUT THE STATUS MESSAGE @V50A2B5 00408000
  419. L R3,SAVEWRK1 SEE WHAT KIND OF DISPLAY WANTED @V50A2B5 00409000
  420. C R3,F5 IS THIS SPOOL @V50A2B5 00410000
  421. BE PROCSPL PUT IN NO MESSAGE @V50A2B5 00411000
  422. LR R3,R1 PREPARE TO DO REGULAR CODE @V50A2B5 00412000
  423. LA R0,L'DISPMSG1 LENGTH OF DISPLAY MSG HEADER @V2B2638 00413000
  424. LA R1,DISPMSG1 ADDRESS OF THE MESSAGE @V2B2638 00414000
  425. CALL DMKQCNWT,PARM=NORET WRITE HEADER @V2B2638 00415000
  426. LR R1,R3 RESTORE REGISTER @V50A2B5 00416000
  427. LA R7,MONCLTBL BEGINNING OF CLASS KEYWORD TABLE@V2B2638 00417000
  428. LA R3,MONTBENO GET NO OF ENTRIES TO DO @V2B2638 00418000
  429. LA R4,CLASNOS LIST OF CLASS NUMBERS @V2B2638 00419000
  430. L R6,=A(DMKPRGC8) GET CURRENT CR8 MASK @V2B2638 00420000
  431. L R6,0(R6) FROM DMKPRG FIELD @V2B2638 00421000
  432. SLL R6,15 SHIFT MASK BITS DOWN TO LEFT @V2B2638 00422000
  433. BAL R8,PARSEEN DISPLAY THE ENABLE CLASSES @V50A2B5 00423000
  434. B RESUMETA BRANCH TO RESUME LOGIC @V50A2B5 00424000
  435. SPACE 1 00425000
  436. PARSEEN EQU * @V50A2B5 00426000
  437. IMPTEST MVC 0(2,R1),0(R4) MOVE CLASS NUMBER INTO REPLY @V2B2638 00427000
  438. MVC 2(2,R1),BLANKS 2 BLANKS FOR SEPARATORS @V2B2638 00428000
  439. MVC 4(8,R1),0(R7) MOVE KEYWORD INTO REPLY @V2B2638 00429000
  440. MVI 12(R1),X'40' BLANK SEPARATOR @V2B2638 00430000
  441. SLA R6,1 SHIFT OUT A CLASS ENABLED BIT @V2B2638 00431000
  442. BO OVERFLOW BIT MUST HAVE BEEN SET @V2B2638 00432000
  443. MVC 13(8,R1),DISAB MOVE 'DISABLED' INTO REPLY @V2B2638 00433000
  444. B REPLY @V2B2638 00434000
  445. OVERFLOW MVC 13(8,R1),ENAB MOVE 'ENABLED' INTO REPLY @V2B2638 00435000
  446. REPLY CLI 0(R7),C' ' IS THIS CLASS IMPLEMENTED? @V2B2638 00436000
  447. BE SKIPMSG NOPE, SKIP THE DISPLAY THEN @V2B2638 00437000
  448. LA R0,LENMSG MESSAGE LENGTH @V2B2638 00438000
  449. CALL DMKQCNWT,PARM=NORET OUTPUT REPLY LINE @V2B2638 00439000
  450. SKIPMSG LA R4,2(R4) POINT TO NEXT CLASS NUMBER @V2B2638 00440000
  451. LA R7,9(R7) POINT TO NEXT MONCLTBL ENTRY @V2B2638 00441000
  452. BCT R3,IMPTEST ANY MORE FIELDS TO TEST? @V2B2638 00442000
  453. BR R8 @V50A2B5 00443000
  454. SPACE 1 @V50A2B5 00444000
  455. RESUMETA EQU * @V50A2B5 00445000
  456. MVC 0(13,R1),=C'-- CPTRACE ' INTERNAL TRACE @V2B2638 00446000
  457. L R2,TRACEFLG CHECK THE INTERNAL TRACE FLAGS @V2B2638 00447000
  458. LTR R2,R2 ARE ANY FLAGS ON? @V2B2638 00448000
  459. BZ CPTDISA NOPE, CPTRACE IS DISABLED @V2B2638 00449000
  460. MVC 13(8,R1),ENAB YUP, SOMETHING IS ENABLED @V2B2638 00450000
  461. B WTCPT GO WRITE IT OUT @V2B2638 00451000
  462. SPACE 1 00452000
  463. CPTDISA MVC 13(8,R1),DISAB TRACE IS DISAB, NOTHING ACTIVE @V2B2638 00453000
  464. WTCPT CALL DMKQCNWT,PARM=NORET @V2B2638 00454000
  465. CLC SAVEWRK1(4),F4 SEE IF SPOOL INFO IS ASKED @V50A2B5 00455000
  466. BE EXITDISP NO, SO EXIT DISPLAY @V50A2B5 00456000
  467. PROCSPL CALL DMKMNIDS GATHER THE MONITOR INFORMATION @V50A2B5 00457000
  468. LR R3,R1 KEEP THE VALUE IN REGISTER 3 @V50A2B5 00458000
  469. LA R1,DISPMSG1 ADDRESS OF THE ENABLE HEADER @V50A2B5 00459000
  470. LA R0,L'DISPMSG1 LENGTH OF THE ENABLE HEADER @V50A2B5 00460000
  471. CALL DMKQCNWT,PARM=NORET PUT OUT THE MESSAGE @V50A2B5 00461000
  472. LR R1,R3 RESTORE REGISTER 1 @V50A2B5 00462000
  473. LA R7,MONCLTBL BEGINNING OF CLASS KEYWORD @V50A2B5 00463000
  474. LA R3,MONTBENO GET NUMBER OF ENTRIES TO DO @V50A2B5 00464000
  475. LA R4,CLASNOS LIST OF CLASS NUMBERS @V50A2B5 00465000
  476. L R6,=A(DMKPRGC8) THE ESTABLISHED ENABLE CLASSES @V50A2B5 00466000
  477. L R6,0(R6) GET THEM TO WORK WITH THEM @V50A2B5 00467000
  478. SLL R6,15 SHIFT THEM OVER PROPERLY @V50A2B5 00468000
  479. LTR R6,R6 SEE IF ANY EXIST @V50A2B5 00469000
  480. BNZ DOPARS YES, USE THESE THEN @V50A2B5 00470000
  481. L R6,=A(DMKSYSEN) ELSE USE THE DEFAULTS @V50A2B5 00471000
  482. MVC TIMVAL(4),F0 INITIALIZE A WORK AREA @V50A2B5 00472000
  483. MVC TIMVAL+2(2),0(R6) AND PUT THE DEFAULTS THERE @V50A2B5 00473000
  484. L R6,TIMVAL NOW PUT PLAINLY INTO REG6 @V50A2B5 00474000
  485. SLL R6,15 AND SHIFT ACCORDINGLY @V50A2B5 00475000
  486. DOPARS BAL R8,PARSEEN AND SEND OUT CLASS MESSAGES @V50A2B5 00476000
  487. EXITDISP EQU * @V50A2B5 00477000
  488. LA R0,3 MESSAGE BUFFER SIZE @V2B2638 00478000
  489. CALL DMKFRET GIVE IT BACK @V2B2638 00479000
  490. EXIT ALL DONE @V2B2638 00480000
  491. SPACE 1 00481000
  492. STATMSG EQU * @V50A2B5 00482000
  493. L R6,=A(DMKPRGMC) GET THE MONCOM AREA @V50A2B5 00483000
  494. ICM R6,B'1111',0(R6) AND FIRST SEE IF MONITOR IS ON @V50A2B5 00484000
  495. BNE DETERM YES, DETERMINE IF DISK OR TAPE @V50A2B5 00485000
  496. MVC 0(18,R1),=C'MONITOR NOT ACTIVE' NOT ON MSG @V50A2B5 00486000
  497. LA R0,18 LENGTH OF THIS MESSAGE @V50A2B5 00487000
  498. B SENDMSG GO SEND IT @V50A2B5 00488000
  499. DETERM EQU * @V50A2B5 00489000
  500. USING MONCOM,R6 @V50A2B5 00490000
  501. LA R0,23 LENGTH OF THIS MESSAGE @V50A2B5 00491000
  502. MVC 0(23,R1),=C'TAPE MONITORING ACTIVE' MESSAGE @V50A2B5 00492000
  503. TM MONFLAG3,SPOOLED SEE IF SPOOLING IS ON @V50A2B5 00493000
  504. DROP R6 @V50A2B5 00494000
  505. BNO ASSUMTAP NO, SO USE TAPE @V50A2B5 00495000
  506. MVC 0(5,R1),=C'SPOOL' ELSE DO IT FOR SPOOL @V50A2B5 00496000
  507. ASSUMTAP EQU * @V50A2B5 00497000
  508. SENDMSG CALL DMKQCNWT,PARM=NORET PUT OUT THE MESSAGE @V50A2B5 00498000
  509. BR R8 EXIT OF SUBROUTNE @V50A2B5 00499000
  510. EJECT 00500000
  511. *. 00501000
  512. * 00502000
  513. * ENTRY POINT - DMKMIAWO 00503000
  514. * 00504000
  515. * ENTRY CONDITIONS - 00505000
  516. * 00506000
  517. * GPR1 - REAL ADDRESS OF PAGE TO BE WRITTEN 00507000
  518. * GPR11 - ADDRESS OF VMBLOK OF USER 00508000
  519. * GPR13 - ADDRESS OF SAVE AREA 00509000
  520. * 00510000
  521. * EXIT CONDITIONS - 00511000
  522. * 00512000
  523. * REG1 = 0 NORMAL RETURN 00513000
  524. * = 1 NO MORE DASD 00514000
  525. * = 2 WRITE COMPLETE, AND MONITOR SHUTDOWN EXECUTED 00515000
  526. * = 3 WRITE ERROR 00516000
  527. * 00517000
  528. * EXTERNAL REFERENCES - 00518000
  529. * 00519000
  530. * DMKCKSPL - SPOOL FILE CHECKPOINT ROUTINE 00520000
  531. * DMKMNISH - MONITOR SHUTDOWN ROUTINE 00521000
  532. * DMKPGTSG - ROUTINE TO ACQUIRE DASD SLOTS 00522000
  533. * DMKPRGC8 - MONITOR ENABLE CLASSES 00523000
  534. * DMKPRGMC - ADDRESS OF MONCOM AREA 00524000
  535. * DMKQCNWT - ROUTINE TO WRITE OUT MESSAGES 00525000
  536. * DMKRPAPT - ADDRESS OF WRITE TO DASD ROUTINE 00526000
  537. * 00527000
  538. * REGISTER USAGE - 00528000
  539. * 00529000
  540. * GPR4 - REAL ADDRESS OF PAGE TO BE WRITTEN OUT 00530000
  541. * GPR7 - ADDRESS SFBLOK 00531000
  542. * GPR10 - ADDRESS OF MONCOM AREA 00532000
  543. * GPR11 - ADDRESS OF USER VMBLOK 00533000
  544. * GPR12 - ADDRESSABILITY 00534000
  545. * GPR13 - SAVE AREA 00535000
  546. * 00536000
  547. * OPERATION - 00537000
  548. * 00538000
  549. * A CHECK IF FIRST MADE FOR THE IO TRAP. IF ON, THE FINAL 00539000
  550. * PAGE WRITE OUT TAKES PLACE IN DMKMIACC. OTHERWISE, A NEW 00540000
  551. * DASD SLOT IS OBTAINED AND STORED. THEN THE GIVEN PAGE IS 00541000
  552. * USED TO LOCATE THE CORRESPONDING VIRTUAL PAGE SO THAT IT MAY 00542000
  553. * BE WRITTEN OUT TO DASD. THE SPOOL FILE IS THEN CHECKPOINTED. 00543000
  554. * THEN A CHECK IS MADE TO SEE IF THE NEXT PAGE IS A LAST PAGE OF 00544000
  555. * SPOOL FILE, NOT WRITTEN OUT YET, BUT WHOSE LENGTH FIELD MUST 00545000
  556. * STILL BE FILLED IN. IF SO, THE ROUTINE IN DMKMIACC HANDLES IT 00546000
  557. * IN CASE OF DASD ERROR, THE CURRENT SPOOL FILE IS PUT ON THE 00547000
  558. * READER CHAIN, AND MONITOR IS SUSPENDED AND EVENTUALLY SHUT OFF 00548000
  559. * 00549000
  560. *. 00550000
  561. SPACE 2 00551000
  562. DMKMIAWO RELOC @V50A2B5 00552000
  563. SR R2,R2 CLEAR FLAGS @VA07979 00553300
  564. ST R2,SAVER1 RETURN CODE @VA07979 00553600
  565. ST R2,SAVEWRK3 DASD WRITE INDICATORS @VA07979 00553900
  566. L R10,=A(DMKPRGMC) OBTAIN THE ADDRESS OF @V50A2B5 00554000
  567. L R10,0(R10) THE MONCOM BLOCK @V50A2B5 00555000
  568. USING MONCOM,R10 @V50A2B5 00556000
  569. USING SPLINK,R4 @VA07888 00559200
  570. USING SFBLOK,R7 @VA07888 00559400
  571. L R7,MONSFB SFB ADDR IN MONCOM @VA07888 00559600
  572. LR R4,R1 USE REGISTER 4 FOR PAGE @V50A2B5 00560000
  573. LA R4,0(R4) NULL OUT HIGH BYTE @V50A2B5 00561000
  574. TM 9(R4),TRAP IS THIS THE LAST IO @V50A2B5 00562000
  575. BO CONTCL YES, CLOSE ON THIS @V50A2B5 00563000
  576. L R3,SFBRECNO ADD 1 TO COUNT OF BUFFERS @VA07979 00563050
  577. LA R3,1(R3) IN SPOOL FILE @VA07979 00563100
  578. ST R3,SFBRECNO @VA07979 00563150
  579. MVC 4088(2,R4),SFBFILID IF SYSTEM CRASHES THESE @VA07979 00563200
  580. MVC 4090(6,R4),SFBTIME VALIDATE MONITOR DASD SLOT @VA07979 00563250
  581. MVC SPRECNUM,F1 1 'RECORD' IN MONITOR BUFF @VA07979 00565000
  582. LA R9,10 SET UP ERROR RETRY COUNT IN CASE @VA07979 00566550
  583. WRLOOP EQU * OF PROBLEMS DURING DASD WRITE @VA07979 00566600
  584. MVC MONDAS(4),MONDASA GET PROPER DASD PAGE @V50A2B5 00567000
  585. CALL DMKPGTSG AND OBTAIN ONE FOR NEXT TIME @V50A2B5 00568000
  586. LTR R1,R1 THAT IS, IF DASD EXISTS @V50A2B5 00569000
  587. BNZ LAB1 ONE DOES EXIST @V50A2B5 00570000
  588. MVC SPNXTPAG(4),SFBSTART FWD PTR BACK TO START TO @VA07888 00570200
  589. * INDICATE TO DMKCKS THAT ITS THE LAST SLOT IN FILE 00570400
  590. OI MONFLAG3,EXHAUST TELL USER IT IS EXHAUSTED @V50A2B5 00571000
  591. B LAB2 @VA07888 00572200
  592. LAB1 ST R1,SPNXTPAG FWD PTR TO NXT SLOT @VA07888 00572400
  593. MVC SFBDIST(4),SFBDIST+4 NEW PREVIOUS LAST @VA07979 00572450
  594. ST R1,SFBDIST+4 NEW LAST FOR CLEAN UP IF ERROR @VA07979 00572500
  595. ST R1,SFBLAST NEW LAST FOR SFB @VA07979 00572550
  596. LAB2 ST R1,MONDASA NEW NEXT SLOT IN MONCOM @VA07888 00572600
  597. MVC SPPREPAG,MONDASB BACKWARD POINTER @VA07888 00572800
  598. L R0,MONDAS GET OUR DASD BUFFER @V50A2B5 00586000
  599. LA R5,MONBUF1 AND THE ADDRESS OF 1ST LOCAT. @V50A2B5 00587000
  600. COMPR C R4,0(R5) SEE IF PAGES MATCH @V50A2B5 00588000
  601. BE GETVIRT YES, USE CORRESPONDING VIRT @V50A2B5 00589000
  602. LA R5,8(R5) GO TO NEXT ENTRY @V50A2B5 00590000
  603. B COMPR FOR ONE SHOULD MATCH @V50A2B5 00591000
  604. GETVIRT L R1,4(R5) VIRTUAL PAGE OBTAINED HERE @V50A2B5 00592000
  605. CALL DMKRPAPT,PARM=SYSTEM DO THE ACTUAL WRITE @V50A2B5 00593000
  606. BZ NOERROR @VA07979 00594040
  607. OI SAVEWRK3,MDAER FLAG ERROR FOR LATER SFB CLEANUP @VA07979 00594080
  608. TM MONFLAG3,EXHAUST DID WE RUN OUT OF DASD SLOTS @VA07979 00594120
  609. BO EXHCLOSE YES, STOP MONITOR AS IN CLOSE @VA07979 00594160
  610. BCT R9,WRLOOP TRY WRITE AGAIN @VA07979 00594200
  611. * PERM DASD ERROR WRITING SPOOL FILE BUFFER TO DASD. CLOSE OR PURGE 00594240
  612. CLC SFBPNT,ZEROES DID ERROR OCCUR WITH FIRST WRITE @VA07979 00594280
  613. BE PURGESFB CLEAN UP EASY, JUST PURGE SFB @VA07979 00594320
  614. LA R9,1 SET UP TO JOIN COMMON ERROR @VA07979 00594360
  615. B PERMERR RECOVERY ROUTINE @VA07979 00594400
  616. SPACE 1 00594440
  617. NOERROR OI SAVEWRK3,MNWROK WRITE OK (IN CASE OF ERR RETRY)@VA07979 00594480
  618. TM SAVEWRK3,MDAER ANY ERRORS AT ALL DURING RETRY @VA07979 00594520
  619. BZ NOBUFUP NO CLEAN UP NECESSARY @VA07979 00594560
  620. NI SAVEWRK3,X'FF'-MDAER YES, FIRST CLEAR ERROR FLAG@VA07979 00594600
  621. CLC SFBPNT,ZEROES WAS ERROR DURING FIRST BUFFER @VA07979 00594640
  622. BNE BUFUPDT NO, THE MORE USUAL CASE @VA07979 00594680
  623. MVC SFBSTART,MONDAS YES CORRECT SFB FWD POINTER @VA07979 00594720
  624. B NOBUFUP @VA07979 00594760
  625. BUFUPDT BAL R6,UPDTPAG CORRECT FWD PTR IN PREVIOUS SLOT @VA07979 00594800
  626. NOBUFUP TM MONFLAG3,EXHAUST OUT OF DASD BEFORE WRITE @VA07979 00594840
  627. BO EXHCLOSE YES, STOP MON AS IN CLOSE @VA07979 00594880
  628. XC 4088(8,R4),4088(R4) NULL OUT THIS LINE @V50A2B5 00595000
  629. XC 0(20,R4),0(R4) REPREPARE THIS BUFFER @V50A2B5 00596000
  630. MVC SFBPNT(4),MONDAS INDICATE LAST PAGE WRITTEN @V50A2B5 00597000
  631. OI 8(R4),MONBUFAV TELL THE WORLD IT'S AVAILABLE @V50A2B5 00598000
  632. MVC MONDASB(4),MONDAS KEEP AROUND FOR NEXT BUFFER @V50A2B5 00599000
  633. CLC SFBPNT(4),SFBSTART SEE IF THIS IS THE FIRST PAGE@V50A2B5 00600000
  634. BNE NOTCKS NO, IT IS NOT @V50A2B5 00601000
  635. OI SFBFLAG,SFBINUSE TURN ON INUSE FLAG @VA12826 00601500
  636. CALL DMKCKSPL,PARM=OPNSFB+RDRCHN+ADDSFB CHKPT @V50A2B5 00602000
  637. NI SFBFLAG,X'FF'-SFBINUSE TURN INUSE FLAG OFF @VA12826 00602500
  638. NOTCKS EQU * @V50A2B5 00603000
  639. SPACE 1 00604000
  640. LA R5,8(R5) BUMP TO NEXT ENTRY @V50A2B5 00605000
  641. CLI 0(R5),X'FF' DID IT WRAP HERE @V50A2B5 00606000
  642. BNE *+8 NO, DO THIS SLOT @V50A2B5 00607000
  643. LA R5,MONBUF1 YES, USE THE FIRST PAGE @V50A2B5 00608000
  644. L R5,0(R5) GET THE PAGE ADDRESS @V50A2B5 00609000
  645. TM 9(R5),UNFIN IS THIS UNFINISHED BUSINESS @V50A2B5 00610000
  646. BZ EXITS NO, EXIT NORMALLY @VA07979 00611500
  647. LR R4,R5 USE IT AS REGISTER 4 @V50A2B5 00612000
  648. B CONTCL AND CLOSE ON THIS @V50A2B5 00613000
  649. SPACE 1 00629000
  650. EXHLEAVE EQU * @V50A2B5 00630000
  651. SR R0,R0 USE SOMETHING TO NULL OUT @V50A2B5 00631000
  652. L R1,=A(DMKPRGC8) THE ENABLE CLASSES @V50A2B5 00632000
  653. ST R0,0(R1) NULLING DONE @V50A2B5 00633000
  654. MVC CPCREG8(4),F0 NULL OUT FOR CTRL REG 8 @V50A2B5 00634000
  655. L R8,PREFIXB ALSO IN THE OTHER PREFIX @V50A2B5 00635000
  656. MVC CPCREG8-IPLPSW(4,R8),ZEROES NULL OUT @V50A2B5 00636000
  657. LCTL C8,C8,CPCREG8 AND NULL CTRL REG 8 @V50A2B5 00637000
  658. CLC SAVER1(4),F3 HERE AFTER PERM DASD ERROR? @VA07888 00637100
  659. BNE NODASMS NO, NEED OUT OF DASD MSG @VA07888 00637200
  660. LA R1,WRIDASMG PERM DASD ERROR MSG @VA07888 00637300
  661. LA R0,L'WRIDASMG @VA07888 00637400
  662. B SENDMG @VA07888 00637500
  663. NODASMS EQU * @VA07888 00637600
  664. LA R1,NODASMSG LENGTH OF WARNING MESSAGE @V50A2B5 00638000
  665. LA R0,L'NODASMSG ADDRESS OF WARNING MESSAGE @V50A2B5 00639000
  666. SENDMG CALL DMKQCNWT,PARM=OPERATOR+NORET SEND WARN MESSAGE @V50A2B5 00640000
  667. BAL R6,MONUMSG LET THE USER KNOW @V50A2B5 00641000
  668. BAL R6,MONOMSG ALSO THE RECEIVER @V50A2B5 00642000
  669. CLC SAVER1(4),F0 IF ERROR OR NO SLOTS @VA07979 00642200
  670. BNE ESCAPE NO TRAILER JUST CLEAN UP @VA07979 00642400
  671. LR R9,R10 MNISH NEEDS A(MONCOM) IN R9 @VA07979 00642600
  672. CALL DMKMNISH AND SHUT OFF THE MONITOR @V50A2B5 00643000
  673. B EXITCL AND EXIT AS IF CLOSED @V50A2B5 00644000
  674. SPACE 1 00645000
  675. CLSRETRY CALL DMKPGTSG GET NEW DASD SLOT @VA07979 00658010
  676. LTR R1,R1 DID WE GET A SLOT OK @VA07979 00658020
  677. BNZ CLSWR YES TRY AND WRITE INTO IT @VA07979 00658030
  678. EXHCLOSE MVC SAVER1(4),F1 RETURN CODE AND MSG FLAG @VA07979 00658040
  679. TM SAVEWRK3,MNWROK WAS WRITE SUCCESSFUL @VA07979 00658050
  680. BZ DECRCNT NO, BACK UP COUNT OF SLOTS IN FILE@VA07979 00658060
  681. B IOGOOD YES, NORMAL CLOSE FROM NOW ON @VA07979 00658070
  682. SPACE 1 00658080
  683. PERMERR CLC SFBPNT,ZEROES ANY THING IN FILE AT ALL @VA07979 00658090
  684. BE PURGESFB NO, PURGE FILE @VA07979 00658100
  685. MVC SAVER1(4),F3 RETURN CODE & MSG FLAG FOR ERROR @VA07979 00658110
  686. MVC SFBLAST,SFBPNT THIS INDICATES EOF @VA07979 00658120
  687. DECRCNT L R2,SFBRECNO SUB 1 FROM COUNT OF BUFFERS @VA07979 00658130
  688. SL R2,F1 WRITTEN TO THIS SPOOL FILE 'CAUSE @VA07979 00658140
  689. ST R2,SFBRECNO THE LAST WRITE FAILED @VA07979 00658150
  690. B IOGOOD @VA07979 00658160
  691. SPACE 1 00658170
  692. CLSWR MVC SFBDIST(4),SFBDIST+4 ADJUST SAFETY POINTERS @VA07979 00658180
  693. ST R1,SFBLAST NEW LAST SLOT ON SFB CHAIN @VA07979 00658190
  694. ST R1,SFBDIST+4 NEW LAST SLOT OBTAINED @VA07979 00658200
  695. ST R1,MONDAS SLOT FOR NEXT I/O @VA07979 00658210
  696. CLC SFBPNT,ZEROES ANY BUFFERS WRITTEN YET @VA07979 00658220
  697. BNE SETUPWR NO, NORMAL CASE... MULTI BUFF @VA07979 00658230
  698. ST R1,SFBSTART SPECIAL 1 BUFF FILE @VA07979 00658240
  699. ST R1,SPNXTPAG POINTS TO ITSELF @VA07979 00658250
  700. ST R1,SFBDIST ALSO LAST @VA07979 00658260
  701. SPACE 1 00658270
  702. SETUPWR LR R0,R1 READY FOR WRITE @VA07979 00658280
  703. L R1,4(R5) VIRTUAL ADDR FROM MONCOM @VA07979 00658290
  704. CALL DMKRPAPT,PARM=SYSTEM TRY AND WRITE IT @VA07979 00658300
  705. BNZ CLSERR OUT OF LUCK, JOIN ERROR CODE @VA07979 00658310
  706. CLC SFBSTART,SFBLAST IS IT A 1 PAGE FILE @VA07979 00658320
  707. BE IOGOOD CLEANUP SIMPLIFIED @VA07979 00658330
  708. BAL R6,UPDTPAG MULTI BUFF FILE NEEDS MORE @VA07979 00658340
  709. B IOGOOD CLEAN UP @VA07979 00658350
  710. SPACE 1 00658360
  711. UPDTPAG CALL DMKPGTVG GET SLOT TO READ INTO @VA07979 00658370
  712. L R0,SPPREPAG PREV SUCCESSFULLY WRITTEN SLOT @VA07979 00658380
  713. CALL DMKRPAGT,PARM=SYSTEM+BRING BRING IT BACK IN @VA07979 00658390
  714. LR R4,R2 ADDRESS OF BUFFER @VA07979 00658400
  715. MVC SPNXTPAG,MONDAS ADJUST ITS FWD PTR TO NEW SLOT @VA07979 00658410
  716. CALL DMKRPAPT,PARM=SYSTEM AND WRITE IT BACK @VA07979 00658420
  717. SR R0,R0 @VA07979 00658430
  718. CALL DMKRPAGT,PARM=SYSTEM RELEASE SLOT @VA07979 00658440
  719. CALL DMKPGTVR RELEASE VIRTUAL SLOT @VA07979 00658450
  720. BR R6 @VA07979 00658460
  721. SPACE 1 00658470
  722. EJECT 00659100
  723. EJECT 00826000
  724. *. 00827000
  725. * 00828000
  726. * ENTRY POINT - 00829000
  727. * 00830000
  728. * DMKMIAR0 00831000
  729. * 00832000
  730. * ENTRY CONDITIONS - 00833000
  731. * 00834000
  732. * GPR11 - ADDRESS OF VMBLOK OF USER 00835000
  733. * GPR13 - SAVE AREA 00836000
  734. * 00837000
  735. * EXIT CONDITIONS - 00838000
  736. * 00839000
  737. * REG1 = 0 NORMAL RETURN 00840000
  738. * = 1 NO MORE DASD 00841000
  739. * 00842000
  740. * EXTERNAL REFERENCES - 00843000
  741. * 00844000
  742. * DMKFREE - ROUTINE TO ACQUIRE STORAGE FOR SFBLOK 00845000
  743. * DMKFRET - ROUTINE TO RETURN SFBLOK STORAGE 00846000
  744. * DMKPGTSG - ROUTINE TO OBTAIN A DASD SLOT 00847000
  745. * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00848000
  746. * DMKRSPID - USED TO OBTAIN A SPOOL FILE ID 00849000
  747. * DMKSYSCL - DEFAULT CLASS OF MONITOR SPOOL FILES 00850000
  748. * DMKSYSUR - DEFAULT USER OF MONITOR SPOOL FILES 00851000
  749. * 00852000
  750. * REGISTER USAGE - 00853000
  751. * 00854000
  752. * GPR3 - ADDRESS OF MONITOR COMMUNICATIONS AREA 00855000
  753. * GPR7 - ADDRESS OF SPOOL FILE BLOCK 00856400
  754. * GPR10 - ADDRESS OF MONITOR COMMUNICATIONS AREA 00856800
  755. * GPR11 - ADDRESS OF VMBLOK 00857000
  756. * GPR12 - ADDRESSABILITY 00858000
  757. * GPR13 - ADDRESS OF SAVE AREA 00859000
  758. * 00860000
  759. * OPERATION - 00861000
  760. * 00862000
  761. * STORAGE IS OBTAINED FOR AN SFBLOK. APPROPRIATE FIELDS 00863000
  762. * ARE SET. A DASD PAGE IS OBTAINED, AND THIS FILE IS 00864000
  763. * RECOGNIZED AS THE CURRENT OPEN MONITOR FILE 00865000
  764. * 00866000
  765. *. 00867000
  766. SPACE 1 00868000
  767. DMKMIARO RELOC @V50A2B5 00869000
  768. MVC SAVER1(4),F0 INDICATE NO ERROR @V50A2B5 00870000
  769. L R10,=A(DMKPRGMC) ADDRESS OF MONITOR @VA07979 00871000
  770. L R10,0(R10) COMMUNICATIONS AREA @VA07979 00872000
  771. LA R0,SFBSIZE ACQUIRE AN SFBLOCK @V50A2B5 00874000
  772. CALL DMKFREE GET THE STORAGE @V50A2B5 00875000
  773. ST R1,MONSFB KEEP THE ADDRESS AROUND @V50A2B5 00876000
  774. LR R7,R1 ESTABLISH ADDRESSABILITY FOR SFB @VA07979 00877400
  775. USING SFBLOK,R7 @VA07979 00877800
  776. XC SFBLOK(SFBSIZE*8),SFBLOK ZERO IT OUT @V50A2B5 00879000
  777. L R4,=A(DMKSYSUR) GET THE USER @V50A2B5 00880000
  778. MVC SFBUSER(8),0(R4) PUT AS USER @V50A2B5 00881000
  779. MVC SFBORIG(8),0(R4) AND AS ORIGINATOR @V50A2B5 00882000
  780. MVC SFBDIST(8),ZEROES NULL OUT DIST FOR FILE INTEG @V50A2B5 00883000
  781. SPACE 1 00884000
  782. LA R1,SFBDATE GET ADDRESS FOR THE DATE @V50A2B5 00885000
  783. LA R2,SFBTIME AND THE TIME @V50A2B5 00886000
  784. CALL DMKCVTDT AND LET SYSTEM STORE IT THERE @V50A2B5 00887000
  785. MVI SFBTYPE,TYP2540P TELL IT THE TYPE @V50A2B5 00888000
  786. L R4,=A(DMKSYSCL) TELL IT @V50A2B5 00889000
  787. MVC SFBCLAS(1),0(R4) THE CLASS @V50A2B5 00890000
  788. MVI SFBCOPY+1,X'01' ONE COPY @V50A2B5 00891000
  789. MVC SFBFNAME(12),=C'MONDATA ' STD NAME FOR MON @VA09059 00892000
  790. MVC SFBFTYPE(2),SFBDATE PUT IN A COMPOSITE TYPE @V50A2B5 00893000
  791. MVC SFBFTYPE+2(2),SFBDATE+3 OF DATE @V50A2B5 00894000
  792. MVC SFBFTYPE+4(2),SFBTIME AND @V50A2B5 00895000
  793. MVC SFBFTYPE+6(2),SFBTIME+3 TIME @V50A2B5 00896000
  794. MVC SFBFTYPE+8(4),BLANKS ...FILL IN TYPE FLD... @VA09059 00896500
  795. OI SFBFLAG2,SFBMON FLAG THE FILE AS MONITOR'S @V50A2B5 00897000
  796. L R4,=A(DMKRSPID) GET IT A NUMBER @V50A2B5 00898000
  797. LH R15,0(R4) FROM STANDARD PLACE IN SYSTEM @V50A2B5 00899000
  798. STH R15,SFBFILID PUT IT IN PLACE @V50A2B5 00900000
  799. LA R15,1(R15) BUMP THE COUNT @V50A2B5 00901000
  800. CL R15,=F'9900' ARE WE OVER MAX NUM @V50A2B5 00902000
  801. BNH STCOUNT NO @V50A2B5 00903000
  802. LA R15,1 RESET VALUE TO ONE @V50A2B5 00904000
  803. STCOUNT STH R15,0(R4) STORE FOR POSTERITY @V50A2B5 00905000
  804. L R4,MONCURBF GET REAL ADDRESS OF CURRENT BUF@V50A2B5 00906000
  805. XC 0(16,R4),0(R4) NULL OUT BEGINNING @V50A2B5 00907000
  806. OI 8(R4),MONBUFAC INDICATE THAT IT IS ACCEPTING @V50A2B5 00908000
  807. LA R4,X'10'(R4) TELL FOR NEXT RECORD @V50A2B5 00910000
  808. LA R4,MNBHDLEN(R4) BUMP UP FOR THE LENGTH @V50A2B5 00911000
  809. L R5,PREFIXA STORE INTO APPROPRIATE PSA @V50A2B5 00912000
  810. ST R4,MONNEXT(R5) THE VALUE OF MONNEXT @V50A2B5 00913000
  811. O R4,=F'4088' THIS IS A NEW PAGE END @V50A2B5 00914000
  812. ST R4,PAGEND(R5) STORE IN LOW PSA @V50A2B5 00915000
  813. NI MONFLAG2,255-SUSPEND GET RID OF ANY SUSPEND @V50A2B5 00916000
  814. L R1,MONDAS SEE IF DASD LEFT OVER EARLIER @V50A2B5 00917000
  815. LTR R1,R1 TEST IF ZERO @V50A2B5 00918000
  816. BNZ NOPAGE NO, SOMETHING ALREADY THERE @V50A2B5 00919000
  817. CALL DMKPGTSG GET A DASD PAGE @V50A2B5 00920000
  818. LTR R1,R1 SEE IF A PAGE IS AVAILABLE @V50A2B5 00921000
  819. BZ NODASD1 ERROR, OUT OF DASD @V50A2B5 00922000
  820. NOPAGE ST R1,MONDASA USE THIS AS DASD @V50A2B5 00923000
  821. XC MONDASB(4),MONDASB AND NULL OUT BACK @V50A2B5 00924000
  822. XC MONDAS(4),MONDAS AND CURRENT DASD @V50A2B5 00925000
  823. ST R1,SFBLAST USE THIS AS SFBLAST @V50A2B5 00926000
  824. ST R1,SFBSTART AND AS SFBSTART @V50A2B5 00927000
  825. ST R1,SFBDIST PLACE THIS HERE FOR FILE @V50A2B5 00928000
  826. ST R1,SFBDIST+4 INTEGRITY @V50A2B5 00929000
  827. L R15,=A(DMKRSPMN) THIS INDICATES THE CURRENT FILE@V50A2B5 00930000
  828. ST R7,0(R15) IS OPEN AND THIS IS THE ANCHOR @VA07979 00931500
  829. SPACE 1 00932000
  830. EXITS EXIT EXIT HERE @V50A2B5 00933000
  831. SPACE 1 00934000
  832. PURGESFB EQU * @VA07979 00934400
  833. MVC SFBSTART,SFBLAST STANDARD FOR CLOSED SFB @VA07979 00934800
  834. NODASD1 EQU * NO DASD LEFT ROUTINE @V50A2B5 00935000
  835. MVC SAVER1(4),F1 INDICATE EXHAUST @V50A2B5 00936000
  836. OI MONFLAG3,EXHAUST INDICATE EXHAUSTION @V50A2B5 00937000
  837. MVC SAVEWRK1+2(2),SFBFILID FILE ID FOR LATER MSG @VA07888 00937500
  838. CALL DMKSPLDL PURGE SFB AND FRET @VA07979 00938400
  839. SR R7,R7 @VA07888 00940200
  840. ST R7,MONSFB CLEAR MONCOM POINTER @VA07888 00940400
  841. L R15,=A(DMKRSPMN) OPEN MONITOR SFB ANCHOR @VA12761 00940600
  842. ST R7,0(R15) CLEAR THAT TOO @VA07888 00940800
  843. B EXHLEAVE GO TO THE EXIT ROUTINE @V50A2B5 00942000
  844. EJECT 00945000
  845. *. 00946000
  846. * 00947000
  847. * ENTRY POINT - 00948000
  848. * 00949000
  849. * DMKMIACC 00950000
  850. * 00951000
  851. * ENTRY CONDITIONS - 00952000
  852. * 00953000
  853. * GPR11 - ADDRESS OF VMBLOK OF USER 00954000
  854. * GPR13 - ADDRESS OF SAVE AREA 00955000
  855. * 00956000
  856. * EXIT CONDITIONS - 00957000
  857. * 00958000
  858. * REG1 = 0 NORMAL RETURN 00959000
  859. * = 1 NO MORE DASD 00960000
  860. * = 2 MONITOR SHUTDOWN SCHEDULED 00961000
  861. * = 3 WRITE ERROR 00962000
  862. * 00963000
  863. * EXTERNAL REFERENCES - 00964000
  864. * 00965000
  865. * DMKCKSPL - SPOOL FILE CHECKPOINT ROUTINE 00966000
  866. * DMKDSPNP - FREE PAGE INDICATOR 00967000
  867. * DMKMIARO - ROUTINE TO START A NEW MONITOR FILE 00968000
  868. * DMKMNIDK - ENTRY POINT TO WRITE A HEADER RECORD 00969000
  869. * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00970000
  870. * DMKRPAPT - ROUTINE TO WRITE OUT TO A DASD SLOT 00971000
  871. * DMKSTKCP - ROUTINE TO STACK A CPEXBLOK 00972000
  872. * DMKSYSAT - MONITOR DEFAULT FLAG FIELD 00973000
  873. * 00974000
  874. * REGISTER USAGE - 00975000
  875. * 00976000
  876. * GPR4 - READ ADDRESS OF MONITOR BUFFER 00977000
  877. * GPR10 - ADDRESS OF MONITOR COMMUNICATIONS AREA 00978000
  878. * GPR11 - ADDRESS OF VMBLOK OF USER 00979000
  879. * GPR12 - ADDRESSABILITY 00980000
  880. * GPR13 - ADDRESS OF SAVE AREA 00981000
  881. * 00982000
  882. * OPERATION - 00983000
  883. * 00984000
  884. * IF A CLOSE IS ALREADY IN EFFECT, THIS CODE IS SKIPPED. 00985000
  885. * MONITOR ACTIVATION REGS ARE TURNED OFF AND THE CURRENT 00986000
  886. * BUFFER IS TRAPPED AS THE LAST IO FOR THE FILE. 00987000
  887. * IF THERE IS OUTSTANDING IO, CLOSING WILL BE HANDLED LATER. 00988000
  888. * THE FINAL SPOOL FILE PAGE IS WRITTEN OUT. THE APPROPRIATE 00989000
  889. * CHECKPOINT ROUTINE IS CALLED, AND THE FILE IS PUT OUT TO THE 00990000
  890. * READER CHAIN. A NEW FILE IS OPENED ACCORDING TO CHECKS 00991000
  891. * IN THE DEFAULT ENVIRONMENT FLAG. 00992000
  892. * A HEADER RECORD IS SCHEDULED FOR THE NEW FILE. 00993000
  893. * 00994000
  894. ********************************************************************** 00995000
  895. SPACE 1 00996000
  896. DMKMIACC RELOC @V50A2B5 00997000
  897. USING SPLINK,R4 @VA07979 00997500
  898. MVC SAVER1(4),F0 INDICATE NO ERROR @V50A2B5 00998000
  899. L R10,=A(DMKPRGMC) GET THE MONITOR @V50A2B5 00999000
  900. L R10,0(R10) COMMUNICATIONS AREA @V50A2B5 01000000
  901. LTR R10,R10 SEE IF IT IS ON @V50A2B5 01001000
  902. BZ EXITS INVALID COMMAND @V50A2B5 01002000
  903. USING MONCOM,R10 @V50A2B5 01003000
  904. TM MONFLAG3,SPOOLED SEE IF WE ARE SPOOLING @V50A2B5 01005000
  905. BNO EXITS INVALID COMMAND @V50A2B5 01006000
  906. TM MONFLAG3,CLSUS ALREADY CLOSING? @V50A2B5 01007000
  907. BO EXITS LEAVE, DO NOT CONFLICT @V50A2B5 01008000
  908. OI MONEX,CLCMD FLAG INDICATING CLOSE CMMD @V50A2B5 01009000
  909. MVC CPCREG8(4),ZEROES NULL OUT CPCREG8 IN PSA @V50A2B5 01010000
  910. L R5,PREFIXB LOCATE OTHER PSA @V50A2B5 01011000
  911. MVC CPCREG8-IPLPSW(4,R5),ZEROES AND NULL OUT THERE @V50A2B5 01012000
  912. LCTL C8,C8,ZEROES ALSO TAKE CARE OF CTL REG8 @V50A2B5 01013000
  913. L R4,MONCURBF LOAD IN CURRENT PAGE @V50A2B5 01014000
  914. OI 9(R4),TRAP TRAP THIS AS LAST IO @V50A2B5 01015000
  915. OI MONFLAG3,CLSUS SUSPEND FOR ALL OUT IO @V50A2B5 01016000
  916. NI 8(R4),MONBUFIO SCHEDULE THIS FOR IO @V50A2B5 01017000
  917. TM MONFLAG2,SUSPEND SEE IF WE ARE SUSPENDED @V50A2B5 01018000
  918. BO CHKIO YES WE ARE @V50A2B5 01019000
  919. TM MONFLAG1,MON1BUF ONE BUFFER MONITORING? @V50A2B5 01020000
  920. BO CONTCLU YES @V50A2B5 01021000
  921. CLC X'10'(2,R4),ZEROES SEE IF BUFFER COMPLETED @V50A2B5 01022000
  922. BE SETUNFIN NO, IT IS NOT @V50A2B5 01023000
  923. B CHKIO YES, SO CHECK IO @V50A2B5 01024000
  924. SETUNFIN OI 9(R4),UNFIN INDICATE WE MUST FILL IN @V50A2B5 01025000
  925. CHKIO L R5,MONIOBF ANY OUTSTANDING IO @V50A2B5 01026000
  926. LTR R5,R5 TEST THIS @V50A2B5 01027000
  927. BNZ EXITS YES, WILL BE TAKEN CARE OF @V50A2B5 01028000
  928. SPACE 2 01029000
  929. CONTCLU EQU * @V50A2B5 01030000
  930. CLC X'10'(2,R4),ZEROES SEE IF THIS IS FILLED IN @V50A2B5 01031000
  931. BNE CONTCL YES, DO NOT FILL IN @V50A2B5 01032000
  932. OI 9(R4),UNFIN INDICATE THIS IS NOT @V50A2B5 01033000
  933. CONTCL EQU * @V50A2B5 01034000
  934. L R3,MONSPLCT BUMP THE SPOOL COUNT @V50A2B5 01035000
  935. LA R3,1(R3) BY ONE @V50A2B5 01036000
  936. ST R3,MONSPLCT AND STORE IT @VA08412 01037000
  937. MVC SPRECNUM,F1 INDICATE 1 RCD BUFF @VA08412 01038000
  938. MVC MONDAS(4),MONDASA GET PROPER DASD PAGE @VA08412 01039000
  939. XC MONDASA(4),MONDASA ZERO OUT AHEAD POINTER @V50A2B5 01040000
  940. USING SFBLOK,R7 @VA07888 01041300
  941. L R7,MONSFB SFB ADDR IN MONCOM @VA07888 01041600
  942. MVC SPPREPAG,MONDASB BACKWARD POINTER @VA07888 01041900
  943. MVC SPNXTPAG(4),SFBSTART FWD PTR TO START FOR CLOSE @VA12761 01042200
  944. TM 9(R4),UNFIN IS THIS PAGE COMPLETE @V50A2B5 01044000
  945. BNO NOFILL YES, IT IS @V50A2B5 01045000
  946. CONTCL1 LA R5,X'10'(R4) ADDRESS OF LENGTH LOCATION @V50A2B5 01046000
  947. L R8,PREFIXA GET CORRECT PSA @V50A2B5 01047000
  948. L R8,MONNEXT-IPLPSW(R8) AND OBTAIN MONNEXT @V50A2B5 01048000
  949. SR R8,R5 COMPUTE LENGTH OF DATA @V50A2B5 01049000
  950. STH R8,0(R5) STORE INTO THE BUFFER @V50A2B5 01050000
  951. NOFILL EQU * @V50A2B5 01051000
  952. NI 9(R4),X'FF'-TRAP-UNFIN TURN OFF THE TRAPS, FLAGS@V50A2B5 01052000
  953. XC MONSPLCT(4),MONSPLCT NULL OUT THE SPOOL COUNT @V50A2B5 01053000
  954. L R5,SFBRECNO GET THE SPOOL FILE REC NO @V50A2B5 01056000
  955. LA R5,1(R5) BUMP UP BY ONE @V50A2B5 01057000
  956. ST R5,SFBRECNO AND STORE IT @V50A2B5 01058000
  957. L R0,MONDAS GET THE DASD FOR THE WRITE @V50A2B5 01059000
  958. MVC 4088(2,R4),SFBFILID SET UP THE FILID @V50A2B5 01060000
  959. MVC 4090(6,R4),SFBTIME PUT IN THE TIME @V50A2B5 01061000
  960. XC 8(4,R4),8(R4) NULL OUT THE FLAGS @V50A2B5 01062000
  961. LA R5,MONBUF1 GET ADDRESS OF FIRST BUFFER@V50A2B5 01063000
  962. COMPR1 C R4,0(R5) SEE IF REALS MATCH @V50A2B5 01064000
  963. BE GETVIRT1 YES, DONE SEARCHING @V50A2B5 01065000
  964. LA R5,8(R5) NO, BUMP TO NEXT ENTRY @V50A2B5 01066000
  965. B COMPR1 AND CONTINUE COMPARING @V50A2B5 01067000
  966. GETVIRT1 L R1,4(R5) LOAD IN THE VIRTUAL ADDRESS@V50A2B5 01068000
  967. LA R9,10 RETRY COUNT IN CASE OF I/O ERROR @VA07979 01068500
  968. CALL DMKRPAPT,PARM=SYSTEM DO THE WRITE @V50A2B5 01069000
  969. BZ IOGOOD NO I/O ERROR PROBLEMS @VA07979 01070500
  970. CLSERR BCT R9,CLSRETRY ERR. TRY AGAIN WITH NEW SLOT @VA07979 01070600
  971. B PERMERR AFTER 10 FAILURES ITS PERMANENT @VA07979 01070700
  972. SPACE 1 01070800
  973. IOGOOD EQU * 01070900
  974. XC 4088(8,R4),4088(R4) NULL OUT THIS INFORMATION @V50A2B5 01071000
  975. MVC SFBPNT(4),MONDAS UPDATE SFBPNT @V50A2B5 01072000
  976. XC 0(20,R4),0(R4) NULL OUT FRONT OF BUFFER @V50A2B5 01073000
  977. OI 8(R4),MONBUFAC FLAG IT AS ACCEPTING @V50A2B5 01074000
  978. SPACE 1 01075000
  979. SR R0,R0 USE R0 TO NULL WITH @V50A2B5 01083000
  980. ST R0,MONDAS BLANK OUT DASD PTRS @V50A2B5 01084000
  981. ST R0,MONDASB CURRENT AND BACKWARD @V50A2B5 01085000
  982. MVC SFBDIST(8),BLANKS BLANK OUT THE DIST FIELD @V50A2B5 01086000
  983. MVC SAVEWRK1+2(2),SFBFILID SAVE FILEID FOR CLOSE MSG@VA07888 01086500
  984. BAL R6,CHAINSFB CHAIN SFBLOK AND CLEAR POINTER @VA07887 01088000
  985. OI SFBFLAG,SFBINUSE TURN ON THE INUSE FLAG @VA13688 01088050
  986. CLC SFBRECNO,F1 IF MORE THAN 1 RECORD @VA07888 01088100
  987. BH CHKCHG UPDATE ORIGINAL CHECKPOINT @VA07888 01088200
  988. CALL DMKCKSPL,PARM=RDRCHN+ADDSFB FIRST, ADD NEW @VA07888 01088300
  989. B DONECKS @VA07888 01088400
  990. CHKCHG CALL DMKCKSPL,PARM=CHGSFB UPDATE EARLIER CHECKPOINT @VA07888 01088500
  991. DONECKS EQU * 01088600
  992. BAL R6,CHNGSFB1 GENERATE DE INTERRUPT @VA14769 01088610
  993. NI SFBFLAG,X'FF'-SFBINUSE TURN INUSE FLAG OFF @VA12826 01088620
  994. CLC SAVER1(4),F0 DASD PERM ERROR OR SPOOL EXHAUSTED@VA07979 01088640
  995. BNE EXHLEAVE YES, SHUTDOWN AND SEND MSGS @VA07979 01088680
  996. SPACE 1 01097000
  997. TM MONFLAG1,CFSTOP ARE WE STOPPING @V50A2B5 01098000
  998. BO ESCAPE YES @V50A2B5 01099000
  999. TM MONEX,CLCMD IS THIS THE CLOSE COMMAND @V50A2B5 01100000
  1000. BO YESCLOSE YES, JUST START NEW FILE @V50A2B5 01101000
  1001. L R8,=A(DMKSYSAT) SEE IF AUTOSPL ON @V50A2B5 01102000
  1002. TM 0(R8),AUTOSPL IS IT ON? @V50A2B5 01103000
  1003. BNO ESCAPES CLOSING IMPLIES SHUTDOWN @V50A2B5 01104000
  1004. YESCLOSE EQU * @V50A2B5 01105000
  1005. NI MONEX,X'FF'-CLCMD TURN OFF CLOSE CMD FLAG @V50A2B5 01106000
  1006. CALL DMKMIARO OPEN UP A NEW SPOOL FILE @V50A2B5 01107000
  1007. * WON'T RETURN IF NO DASD SLOTS FOR NEW FILE @VA07979 01108500
  1008. LR R9,R10 LOAD MONCOM TO REG 9 @V50A2B5 01110000
  1009. USING CPEXBLOK,R1 RE ENABLE SUSPEND @V50A2B5 01111000
  1010. LA R0,CPEXSIZE BY SHIPPING @V50A2B5 01112000
  1011. CALL DMKFREE A CPEXBLOK TO @V50A2B5 01113000
  1012. LR R3,R1 DMKMNIDK @V50A2B5 01114000
  1013. L R1,=A(DMKMNIDK) THAT IS, ITS REAL ADDRESS @V50A2B5 01115000
  1014. TRANS R2,R1,OPT=(SYSTEM,BRING,DEFER,LOCK) @V50A2B5 01116000
  1015. LR R1,R3 RESTORE REGISTER 3 @V50A2B5 01117000
  1016. ST R2,CPEXADD USE REAL ADDRESS TO RETURN @V50A2B5 01118000
  1017. STM R0,R15,CPEXR0 STORE THE REGISTERS @V50A2B5 01119000
  1018. ST R2,CPEXR12 ALSO OUR NEW REG 12 @V50A2B5 01120000
  1019. L R0,ASYSVM USE THE SYSTEM @V50A2B5 01121000
  1020. ST R0,CPEXR11 TO THAT THE EXPENSE @V50A2B5 01122000
  1021. L R15,=A(DMKDSPNP) BE SURE TO BUMP THE @V50A2B5 01123000
  1022. L R14,0(R15) FREE PAGE COUNTER @V50A2B5 01124000
  1023. BCTR R14,0 DOWNWARD @V50A2B5 01125000
  1024. ST R14,0(R15) AND STORE @V50A2B5 01126000
  1025. LR R1,R3 SO, TAKE THE CPEXBLOK @V50A2B5 01127000
  1026. CALL DMKSTKCP AND STACK IT @V50A2B5 01128000
  1027. B EXITCL AND EXIT @V50A2B5 01129000
  1028. EJECT 01129100
  1029. CHAINSFB EQU * HERE TO CHAIN SFBLOK ON READER @VA07887 01129120
  1030. * CHAIN AND LOCATE AVAILABLE 01129140
  1031. * VIRTUAL READER 01129160
  1032. L R14,ARSPRD GET RDR CHAIN @VA07887 01129180
  1033. CHAIN1 EQU * @VA07887 01129200
  1034. L R15,0(R14) LOCATE END OF CHAIN @VA07887 01129220
  1035. LTR R15,R15 ADDRESS EQUAL TO ZERO IF LAST @VA07887 01129240
  1036. BZ STSFB BRANCH, END OF CHAIN @VA07887 01129260
  1037. LR R14,R15 POINT TO NEXT BLOCK @VA07887 01129280
  1038. B CHAIN1 KEEP LOOPING @VA07887 01129300
  1039. STSFB EQU * @VA07887 01129320
  1040. ST R7,0(R14) CHAIN THE SPOOL FILE @VA07887 01129340
  1041. L R14,=A(DMKRSPMN) GET THE OPEN FILE HOLDER @VA07887 01129360
  1042. * R15 STILL ZERO 01129380
  1043. ST R15,0(R14) ZERO SFBLOK ADDRESS @VA07887 01129400
  1044. ST R15,MONSFB ZERO LOCAL SFBLOK ADDRESS @VA07887 01129420
  1045. ST R15,SFBPNT CLEAR SFB FWD PTR - LAST ON @VA07888 01129430
  1046. BR R6 COMPLETE CHECKPOINT @VA14769 01129431
  1047. CHNGSFB1 EQU * @VA14769 01129432
  1048. LA R1,SFBUSER GET SFBLOK USER ID @VA07887 01129440
  1049. LA R0,8 LENGTH @VA07887 01129460
  1050. CALL DMKSCNAU LOCATE VMBLOK @VA07887 01129480
  1051. BNZR R6 RETURN, USER NOT LOGGED @VA07887 01129500
  1052. * R7 = ADDRESS OF SFBLOK 01129520
  1053. CALL DMKSPLSP LOCATE AVAILABLE VIRTUAL READER @VA07887 01129540
  1054. BR R6 RETURN TO CALLER @VA07887 01129560
  1055. SPACE 2 01130000
  1056. ESCAPES EQU * @V50A2B5 01131000
  1057. LA R0,L'AUTSPLMG LENGTH OF AUTO/SHUT MSG @V50A2B5 01132000
  1058. LA R1,AUTSPLMG ADDRESS OF AUTO/SHUT MSG @V50A2B5 01133000
  1059. CALL DMKQCNWT,PARM=OPERATOR+NORET SEND OUT MESSAGE @V50A2B5 01134000
  1060. BAL R6,MONUMSG SHIP MESSAGE TO MON USER @V50A2B5 01135000
  1061. BAL R6,MONOMSG AND FILE RECEIVER @V50A2B5 01136000
  1062. SPACE 1 01137000
  1063. ESCAPE LR R9,R10 PUT MONCOM ADDR IN REG 9 @V50A2B5 01138000
  1064. MVC SAVER1(4),F2 INDICATE CLOSURE @V50A2B5 01139000
  1065. LA R0,CPEXSIZE FORM A CPEXBLOK @V50A2B5 01140000
  1066. USING CPEXBLOK,R1 @V50A2B5 01141000
  1067. CALL DMKFREE ACQUIRE STORAGE @V50A2B5 01142000
  1068. STM R0,R15,CPEXR0 STORE THE REGISTERS @V50A2B5 01143000
  1069. L R2,=A(DMKENTFI) ADDRESS OF SHUT OFF RTNE @V50A2B5 01144000
  1070. ST R2,CPEXADD STORE REG 12 @V50A2B5 01145000
  1071. ST R2,CPEXR12 FOR ADDRESSABILITY @V50A2B5 01146000
  1072. L R2,MONAIOB GET THE IOB ADDRESS @V50A2B5 01147000
  1073. ST R2,CPEXR10 AND GIVE TO REG10 @V50A2B5 01148000
  1074. CALL DMKSTKCP STACK THE CPEXBLOK @V50A2B5 01149000
  1075. DROP R1 @V50A2B5 01150000
  1076. EXITCL EQU * @VA07979 01151500
  1077. LH R1,SAVEWRK1+2 GET SPOOL FILE ID @VA07888 01152500
  1078. CALL DMKCVTBD CONVERT TO CHARACTERS @V50A2B5 01153000
  1079. ST R1,TIMVAL PUT HERE ON ALIGN @V50A2B5 01154000
  1080. MVC MSGID(4),TIMVAL PUT IN THE MESSAGE @V50A2B5 01155000
  1081. L R3,=A(DMKSYSUR) GET THE RECEIVER @V50A2B5 01156000
  1082. MVC MSGUR(8),0(R3) PUT IN THE MESSAGE @V50A2B5 01157000
  1083. LA R1,CLOSMSG GET ADDRESS OF CLOSE MSG @V50A2B5 01158000
  1084. LA R0,CLOSMSGS GET LENGTH OF CLOSE MSG @V50A2B5 01159000
  1085. CALL DMKQCNWT,PARM=OPERATOR+NORET PUT OUT MESSAGE @V50A2B5 01160000
  1086. BAL R6,MONUMSG LET USER KNOW @V50A2B5 01161000
  1087. BAL R6,MONOMSG LET RECEIVER KNOW @V50A2B5 01162000
  1088. B EXITS AND EXIT @V50A2B5 01163000
  1089. DROP R7 @V50A2B5 01164000
  1090. EJECT 01165000
  1091. MSG002 LA R2,2 ILLEGAL OPERAND @V50A2B5 01166000
  1092. B CALLERM CALL MESSAGE ROUTINE @V50A2B5 01167000
  1093. SPACE 1 01168000
  1094. MSG225 LA R2,225 ILLEGAL MONITOR USERID @V50A2B5 01169000
  1095. SR R1,R1 ZIP OUT FIELDS @V50A2B5 01170000
  1096. B CALLERM CALL MESSAGE ROUTINE @V50A2B5 01171000
  1097. SPACE 1 01172000
  1098. CALLERM ICM R0,B'1110',MODID+3 MODULE ID FOR MESSAGE @V50A2B5 01173000
  1099. ST R2,WORK2 WORK ON REGISTER 2 @V50A2B5 01174000
  1100. ST R2,SAVER2 TO PUT IN FLAGS @V50A2B5 01175000
  1101. MVI WORK2,X'80' INDICATE TO RETURN HERE @VA07863 01176000
  1102. L R2,WORK2 PULL OUT REGISTER 2 @V50A2B5 01177000
  1103. CALL DMKERMSG PUT OUT THE ERROR MESSAGE @V50A2B5 01178000
  1104. B EXITS AND EXIT @V50A2B5 01179000
  1105. EJECT 01180000
  1106. *. 01181000
  1107. * 01182000
  1108. * ENTRY POINT - 01183000
  1109. * 01184000
  1110. * DMKMIAEN 01185000
  1111. * 01186000
  1112. * ENTRY CONDITIONS - 01187000
  1113. * 01188000
  1114. * GPR11 - ADDRESS OF VMBLOK OF USER 01189000
  1115. * GPR13 - ADDRESS OF SAVE AREA 01190000
  1116. * 01191000
  1117. * EXIT CONDITIONS - 01192000
  1118. * 01193000
  1119. * NONE 01194000
  1120. * 01195000
  1121. * EXTERNAL REFERENCES - 01196000
  1122. * 01197000
  1123. * DMKFREE - ROUTINE TO ACQUIRE STORAGE FOR COMMAND BUFFER 01198000
  1124. * DMKFRET - ROUTINE TO RELEASE STORAGE FOR COMMAND BUFFER 01199000
  1125. * DMKMCCCL - ROUTINE TO EXECUTE COMMAND BUFFER 01200000
  1126. * DMKQCNWT - ROUTINE TO SEND OUT A MESSAGE 01201000
  1127. * 01202000
  1128. * REGISTER USAGE - 01203000
  1129. * 01204000
  1130. * GPR11 - ADDRESS OF VMBLOK OF USER 01205000
  1131. * GPR12 - ADDRESSABILITY 01206000
  1132. * GPR13 - SAVE AREA 01207000
  1133. * 01208000
  1134. * OPERATION - 01209000
  1135. * 01210000
  1136. * A COMMAND BUFFER IS OBTAINED; THE 'MONITOR STOP' COMMAND 01211000
  1137. * IS SIMULATED WITH IT BY A CALL TO DMKMCCCL. ON RETURN, 01212000
  1138. * THE COMMAND BUFFER IS FREED. 01213000
  1139. * 01214000
  1140. *. 01215000
  1141. SPACE 1 01216000
  1142. DMKMIAEN RELOC @V50A2B5 01217000
  1143. LA R0,L'STOPMSG LENGTH OF AUTOSTOP MESSAGE @V50A2B5 01218000
  1144. LA R1,STOPMSG ADDRESS OF AUTOSTOP MESSAGE@V50A2B5 01219000
  1145. CALL DMKQCNWT,PARM=NORET+OPERATOR SEND OUT MESSAGE @V50A2B5 01220000
  1146. BAL R6,MONUMSG LET THE USER KNOW @V50A2B5 01221000
  1147. BAL R6,MONOMSG AND THE RECEIVER @V50A2B5 01222000
  1148. LA R0,18 GET A MESSAGE WORK AREA @V50A2B5 01223000
  1149. CALL DMKFREE ACQUIRE THE STORAGE @V50A2B5 01224000
  1150. MVC 0(SPMSGSZ,R1),SPMSG MOVE IN THE COMMAND @V50A2B5 01225000
  1151. LR R9,R1 R9 POINTS TO THE WORK AREA @V50A2B5 01226000
  1152. ST R1,X'88'(R9) PUT IN POINTER @V50A2B5 01227000
  1153. LA R5,SPMSGSZ ALSO THE SIZE @V50A2B5 01228000
  1154. BCTR R5,R0 MINUS ONE @V50A2B5 01229000
  1155. ST R5,X'8C'(R9) STORE IN THE BUFFER @V50A2B5 01230000
  1156. CALL DMKMCCCL EXECUTE THE COMMAND @V50A2B5 01231000
  1157. LA R0,18 RETURN THE MESSAGE AREA @V50A2B5 01232000
  1158. CALL DMKFRET GET RID OF IT @V50A2B5 01233000
  1159. B EXITS LEAVE @V50A2B5 01234000
  1160. EJECT 01235000
  1161. *. 01236000
  1162. * 01237000
  1163. * THIS IS DISPLACED CODE FROM DMKMON 01238000
  1164. * IT WAS TAKEN OUT TO MAKE ROOM IN THAT MODULE FOR OTHER UPDATES 01239000
  1165. * 01240000
  1166. *. 01241000
  1167. SPACE 1 01242000
  1168. ENTRY DMKMIAX1 01243000
  1169. DMKMIAX1 DC V(DMKPAGPS) NO. OF PAGING SIO'S @V2B2638 01244000
  1170. DC V(DMKPAGCC) NO. OF CALLS TO DMKPAG @V2B2638 01245000
  1171. DC V(DMKPTRFN) NO. PAGE FRAMES ON THE FREE LIST @V2B2638 01246000
  1172. DC V(DMKPTRSW) NO. OF PAGES BEING SWAPPED @V2B2638 01247000
  1173. DC V(DMKPTRPR) NO. OF PAGES FLUSHED BUT RECLAIM @V2B2638 01248000
  1174. DC V(DMKPTRRC) NO. OF RESERVED PAGES @V2B2638 01249000
  1175. DC V(DMKPTRSC) NO. OF SHARED SYSTEM PAGES @V2B2638 01250000
  1176. DC V(DMKPTRF0) NO. OF TIMES FREE LIST WAS EMPTY @V2B2638 01251000
  1177. DC V(DMKPTRFC) NO. OF CALLS TO DMKPTRFR @V2B2638 01252000
  1178. DC V(DMKPTRSS) NO. PAGES STOLEN FROM IN Q USERS @V2B2638 01253000
  1179. DC V(DMKPTRFF) NO. PAGES SWAPPED FROM FLUSH LIST@V2B2638 01254000
  1180. DC V(DMKPTRRF) NO. OF PAGES EXAMINED FOR A STEAL@V2B2638 01255000
  1181. DC V(DMKPTRCS) NO. OF COMPLETE SCANS FOR A STEAL@V2B2638 01256000
  1182. DC V(DMKPSANX) NO. OF REAL EXTERNAL INTERRUPTS @V2B2638 01257000
  1183. DC V(DMKPRVNC) NO. OF CALLS TO DMKPRVLG @V2B2638 01258000
  1184. DC V(DMKVSICT) NO. OF CALLS TO DMKVIOEX @VA05037 01259000
  1185. DC V(DMKVSICW) NO. CALLS TO DMKCCW FROM DMKVSI @VA05037 01260000
  1186. DC V(DMKDSPIT) NO. OF INT TIMER INT. REFLECTED @V2B2638 01261000
  1187. DC V(DMKDSPPT) NO. OF CPU TIMER INT. REFLECTED @V2B2638 01262000
  1188. DC V(DMKDSPCK) NO. OF CLOCK COMP INT REFLECTED @V2B2638 01263000
  1189. DC A(PSASVCCT-IPLPSW) NO. OF SVC INT. REFLECTED @V2B2638 01264000
  1190. DC V(DMKPRGCT) NO. OF PROGRAM INT. HANDLED @V2B2638 01265000
  1191. DC V(DMKIOTCT) NO. OF I/O INTERRUPTS HANDLED @VA09587 01266000
  1192. DC V(DMKDSPCC) NO. OF CALLS DMKDSP (MAIN ENTRY) @V2B2638 01267000
  1193. DC V(DMKDSPAC) NO. OF FAST REFLECTS IN DMKDSP @V2B2638 01268000
  1194. DC V(DMKDSPBC) NO. OF DISPATCHES FOR NEW PSW'S @V2B2638 01269000
  1195. DC V(DMKSCHCT) NO. OF CALLS TO DMKSCHDL @V2B2638 01270000
  1196. DC V(DMKPRVEK) INST COUNT FOR X'08' SSK @V2B2638 01271000
  1197. DC V(DMKPRVIK) INST COUNT FOR X'09' ISK @V2B2638 01272000
  1198. DC V(DMKPRVMS) INST COUNT FOR X'80' SSM @V2B2638 01273000
  1199. DC V(DMKPRVLP) INST COUNT FOR X'82' LPSW @V2B2638 01274000
  1200. DC V(DMKPRVDI) INST COUNT FOR X'83' DIAG @V2B2638 01275000
  1201. DC V(DMKVSISI) INST COUNT FOR X'9CX0' SIO @VA05037 01276000
  1202. DC V(DMKVSISF) INST COUNT FOR X'9CX1' SIOF @VA05037 01277000
  1203. DC V(DMKVSITI) INST COUNT FOR X'9DX0' TIO @VA05037 01278000
  1204. DC V(DMKVSICI) INST COUNT FOR X'9DX1' CLRIO @VA05037 01279000
  1205. DC V(DMKVSJHI) INST COUNT FOR X'9EX0' HIO @VA12128 01280000
  1206. DC V(DMKVSJHD) INST COUNT FOR X'9EX1' HDV @VA12128 01281000
  1207. DC V(DMKVSITC) INST COUNT FOR X'9F' TCH @VA05037 01282000
  1208. DC V(DMKPRVMN) INST COUNT FOR X'AC' STNSM @V2B2638 01283000
  1209. DC V(DMKPRVMO) INST COUNT FOR X'AD' STOSM @V2B2638 01284000
  1210. DC V(DMKPRVLR) INST COUNT FOR X'B1' LRA @V2B2638 01285000
  1211. DC V(DMKPRVCP) INST COUNT FOR X'B202' STIDP @V2B2638 01286000
  1212. DC V(DMKPRVCH) INST COUNT FOR X'B203' STIDC @V2B2638 01287000
  1213. DC V(DMKPRVTE) INST COUNT FOR X'B204' SCK @V2B2638 01288000
  1214. DC V(DMKPRVCE) INST COUNT FOR X'B206' SCKC @V2B2638 01289000
  1215. DC V(DMKPRVCT) INST COUNT FOR X'B207' STCKC @V2B2638 01290000
  1216. DC V(DMKPRVPE) INST COUNT FOR X'B208' SPT @V2B2638 01291000
  1217. DC V(DMKPRVPT) INST COUNT FOR X'B209' STPT @V2B2638 01292000
  1218. DC V(DMKPRVEP) INST COUNT FOR X'B20A' SPKA @V2B2638 01293000
  1219. DC V(DMKPRVIP) INST COUNT FOR X'B20B' IPK @V2B2638 01294000
  1220. DC V(DMKPRVPB) INST COUNT FOR X'B20D' PTLB @V2B2638 01295000
  1221. DC V(DMKPRVRR) INST COUNT FOR X'B213' RRB @V2B2638 01296000
  1222. DC V(DMKPRVTC) INST COUNT FOR X'B6' STCTL @V2B2638 01297000
  1223. DC V(DMKPRVLC) INST COUNT FOR X'B7' LCTL @V2B2638 01298000
  1224. DC V(DMKPRVCS) INST COUNT FOR X'BA' CS @V2B2638 01299000
  1225. DC V(DMKPRVCD) INST COUNT FOR X'BB' CDS @V2B2638 01300000
  1226. DC V(DMKHVCDI) DIAGNOSE I/O SIMULATION COUNT @V2B2638 01301000
  1227. DC V(DMKSYSND) NO. OF USERS DIALED TO A VIRT @V2B2638 01302000
  1228. * MACH 01303000
  1229. DC V(DMKSYSNM) NO. OF USERS LOGGED ON @V2B2638 01304000
  1230. DC A(PGREAD-IPLPSW) NO. OF PAGE READS @V2B2638 01305000
  1231. DC A(PGWRITE-IPLPSW) NO. OF PAGE WRITES @V2B2638 01306000
  1232. DC V(DMKDSPNP) NO. OF SYSTEM PAGABLE PAGES @V2B2638 01307000
  1233. DC V(DMKSCHPU) SUM OF WORKING SETS OF IN Q USERS@V2B2638 01308000
  1234. DC V(DMKSCHN1) NO. OF USERS IN Q1 @V2B2638 01309000
  1235. ENTRY DMKMIAX2 01310000
  1236. DMKMIAX2 DC V(DMKSCHN2) NO. OF USERS IN Q2 @V2B2638 01311000
  1237. *. 01312000
  1238. SPACE 2 01313000
  1239. ENTRY DMKMIAY1 01314000
  1240. DMKMIAY1 DC V(DMKPSANX) NUMBER OF REAL EXT INTERRUPTS @V4075A4 01315000
  1241. DC A(PSASVCCT-IPLPSW) NUM OF SVC INT. REFLECTED @V4075A4 01316000
  1242. DC A(PGREAD-IPLPSW) NUMBER OF PAGE READS @V4075A4 01317000
  1243. DC A(PGWRITE-IPLPSW) NUMBER OF PAGE WRITES @V4075A4 01318000
  1244. AIF (NOT &AP).LOKSY6 01318700
  1245. DC A(DMKLOKSY+8) TOTAL TIME SPIN ON SYSTEM LOCK @V4M0153 01319000
  1246. DC A(DMKLOKSY+12) TOTAL NO. SPINS FOR SYSTEM LOCK @V4M0153 01320000
  1247. DC A(DMKLOKFR+8) TOTAL TIME SPIN ON DMKFRE LOCK @V4M0153 01321000
  1248. DC A(DMKLOKFR+12) TOTAL NO. SPINS FOR DMKFRE LOCK @V4M0153 01322000
  1249. DC A(DMKLOKRL+8) TOTAL TIME SPIN ON RUNLIST LOCK @V4M0153 01323000
  1250. DC A(DMKLOKRL+12) TOTAL NO. SPINS FOR RUNLIST LOCK @V4M0153 01324000
  1251. DC A(DMKLOKTR+8) TOTAL TIME SPIN ON TIMER REQ LOCK@V4M0153 01325000
  1252. DC A(DMKLOKTR+12) TOTAL NO. SPINS FOR TIMER REQ LCK@V4M0153 01326000
  1253. DC A(DMKLOKDS+8) TOTAL TIME SPIN ON DISPATCHER LCK@V4M0153 01327000
  1254. DC A(DMKLOKDS+12) TOTAL NO. SPINS FOR DISPTCHR LOCK@V4M0153 01328000
  1255. AGO .LOKSY7 01328100
  1256. .LOKSY6 ANOP 01328200
  1257. DC 10F'0' RESERVE ENTRIES FOR AP LOCKS @V4M0221 01328300
  1258. .LOKSY7 ANOP 01328400
  1259. DC A(DMKFRENP+8) NO. TIMES CPFRELK SET @V4M0153 01329000
  1260. DC A(DMKFRENP+12) NO. TIMES CPFRESW SET @V4M0153 01330000
  1261. AIF (NOT &AP).LOKCT4 01330900
  1262. DC V(DMKLOKCT) NO. SYS LOCK REQUESTS DEFERRED @V4M0153 01331000
  1263. DC A(DMKLOKCT+4) NO. VMLOCK REQUESTS DEFERRED @V4M0221 01332000
  1264. AGO .LOKCT5 01332600
  1265. .LOKCT4 ANOP 01332700
  1266. DC 2F'0' AP LOCK COUNT ENTRIES @V4M0221 01332800
  1267. .LOKCT5 ANOP 01332900
  1268. ENTRY DMKMIAY2 01333000
  1269. AIF (NOT &AP).DSPRC4 01333750
  1270. DMKMIAY2 DC V(DMKDSPRC) NO. DMKDSPRU ENTRIES @V4M0221 01333800
  1271. AGO .DSPRC5 01333850
  1272. .DSPRC4 ANOP 01333900
  1273. DMKMIAY2 DC F'0' NO (AP) DMKDSPRU ENTRIES @V4M0221 01333950
  1274. .DSPRC5 ANOP 01334000
  1275. EJECT @V50A2B5 01335000
  1276. WORK2 DS F @V50A2B5 01336000
  1277. TIMVAL DS 0D @V50A2B5 01337000
  1278. DC CL8' ' @V50A2B5 01338000
  1279. TIMESTRT DC CL8' ' @V50A2B5 01339000
  1280. TIMEEND DC CL8' ' @V50A2B5 01340000
  1281. STMSG DC C'START SPOOL TO ' @V50A2B5 01341000
  1282. STUID DS CL8 @V50A2B5 01342000
  1283. DC C' ' @V50A2B5 01343000
  1284. BUFFS DC C'BUFFS ' @V50A2B5 01344000
  1285. BUFFNO DC C' ' @V50A2B5 01345000
  1286. DC X'00' @V50A2B5 01346000
  1287. STMSGSZ EQU *-STMSG @V50A2B5 01347000
  1288. SPMSG DC C'STOP SPOOL ' @V50A2B5 01348000
  1289. SPMSGSZ EQU *-SPMSG @V50A2B5 01349000
  1290. CLOSMSG DC C'SPOOL FILE ' @V50A2B5 01350000
  1291. MSGID DS CL4 @V50A2B5 01351000
  1292. DC C' SENT TO ' @V50A2B5 01352000
  1293. MSGUR DS CL8 @V50A2B5 01353000
  1294. CLOSMSGS EQU *-CLOSMSG @V50A2B5 01354000
  1295. SPACE 1 01355000
  1296. ENAB DC CL8'ENABLED ' @V50A2B5 01356000
  1297. DISAB DC CL8'DISABLED' @V50A2B5 01357000
  1298. CLSMSG DC C'CLOSE ' @V50A2B5 01358000
  1299. CLSMSGSZ EQU *-CLSMSG @V50A2B5 01359000
  1300. STARTMSG DC C'MONITOR AUTO STARTING' @VA07979 01360100
  1301. STOPMSG DC C'MONITOR AUTO STOPPING' @VA07979 01361100
  1302. NODASMSG DC C'SPOOL DASD FULL, MONITOR STOPPED' @VA07979 01362100
  1303. WRIDASMG DC C'DASD ERROR, MONITOR STOPPED' @VA07979 01363100
  1304. DISPMSG1 DC C'CLS KEYWORD STATUS' @V50A2B5 01364000
  1305. AUTSPLMG DC C'SPOOL LIMIT REACHED, MONITOR STOPPED' @VA07979 01365100
  1306. BADEN DC C'ONLY PERFORM ALLOWED WITH 1 BUFFER' @VA07979 01366100
  1307. MONCLTBL DS 0F @V50A2B5 01367000
  1308. DC CL8'PERFORM ',X'03' @V50A2B5 01368000
  1309. DC CL8'RESPONSE',X'03' @V50A2B5 01369000
  1310. DC CL8'SCHEDULE',X'02' @V50A2B5 01370000
  1311. DC CL8' ',X'09' @V50A2B5 01371000
  1312. DC CL8'USER ',X'03' @V50A2B5 01372000
  1313. DC CL8'INSTSIM ',X'03' @V50A2B5 01373000
  1314. DC CL8'DASTAP ',X'02' @V50A2B5 01374000
  1315. DC CL8'SEEKS ',X'03' @V50A2B5 01375000
  1316. DC CL8'SYSPROF ',X'02' @V50A2B5 01376000
  1317. MONTBENO EQU (*-MONCLTBL)/9 NUMBER OF ENTRIES IN THE TABLE @V50A2B5 01377000
  1318. CLASNOS DC C'00010203040506070809101112131415' LIST OF @VA08367 01378100
  1319. * CLASS 01378200
  1320. SET24 DC X'000141DD76000000' @V50A2B5 01379000
  1321. LENMSG EQU 21 LENGTH OF DISPLAY MESSAGE @V50A2B5 01380000
  1322. MDAER EQU X'80' MONITOR DASD ERROR @VA07979 01380500
  1323. MNWROK EQU X'40' WRITE COMPLETED OK @VA07979 01380600
  1324. COPY SPOOL @V50A2B5 01381000
  1325. COPY EQU @V50A2B5 01382000
  1326. PSA @V50A2B5 01383000
  1327. COPY VMBLOK @V50A2B5 01384000
  1328. COPY DEVTYPES @V50A2B5 01385000
  1329. COPY MONBLOKS @V50A2B5 01386000
  1330. COPY SAVE @V50A2B5 01387000
  1331. COPY CORE @V50A2B5 01388000
  1332. COPY TIMER @V50A2B5 01389000
  1333. END DMKMIA 01390000