Table of Contents

DMKMCC Source

References

Source Listing

DMKMCC.ASSEMBLE.txt
  1. MCC TITLE 'DMKMCC (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKMCC 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO HANDLE MONITOR CONTROL COMMANDS 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * 00017000
  18. * DMKMCCCL - TO PROCESS THE 'MONITOR' COMMANDS. 00018000
  19. * 00019000
  20. * ENTRY CONDITIONS - 00020000
  21. * 00021000
  22. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00022000
  23. * GPR11 - ADDRESS OF VMBLOK 00023000
  24. * GPR12 - ADDRESS OF ENTRY POINT 00024000
  25. * GPR13 - ADDRESS OF STANDARD SAVEAREA 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * 00028000
  29. * NONE 00029000
  30. * 00030000
  31. * CALLS TO OTHER ROUTINES - 00031000
  32. * 00032000
  33. * DMKSCNFD - TO LOCATE NEXT FIELD IN INPUT LINE 00033000
  34. * DMKQCNWT - TO SEND A MESSAGE TO THE TERMINAL 00034000
  35. * DMKERMSG - TO SEND CANNED ERROR MESSAGE TO TERMINAL 00035000
  36. * DMKPTRFR - TO OBTAIN A PAGE OF STORAGE FOR MONITOR DATA 00036000
  37. * DMKMONSH - MONITOR STOP ROUTINE 00037000
  38. * DMKCVTHB - TO CONVERT DEVICE ADDRESS TO BINARY 00038000
  39. * DMKCVTDB - TO CONVERT INTERVAL TO BINARY 00039000
  40. * DMKSCNRU - TO OBTAIN RDEVBLK ADDRESS FROM DEV. ADDRESS 00040000
  41. * DMKFREE - TO OBTAIN STORAGE FOR MESSAGES 00041000
  42. * DMKFRET - TO RELEASE STORAGE USED FOR MESSAGES 00042000
  43. * DMKSCHST - TO ENQUEUE A TIMER RQST. BLOCK FOR MONITORING 00043000
  44. * DMKSCHRT - TO REMOVE A TIMER RQST. BLOCK FROM QUEUE 00044000
  45. * DMKMONTH - TAPE HEADER ROUTINE 00045000
  46. * 00046000
  47. * EXTERNAL REFERENCES - 00047000
  48. * 00048000
  49. * DMKPRGC8 - STORAGE FOR CONTROL REGISTER 8 00049000
  50. * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00050000
  51. * DMKPRGTI - INTERVAL BETWEEN TIMER INTERRUPTS 00051000
  52. * DMKPRGMI - ADDRESS OF THE MONITOR PROGRAM INTERRUPT HANDLER 00052000
  53. * 00053000
  54. EJECT 00054000
  55. * REGISTER USAGE - 00055000
  56. * 00056000
  57. * GPR0 - COMMAND ARGUMENT LENGTH, AND OUTPUT MSG LENGTH 00057000
  58. * GPR1 - COMMAND ARGUMENT ADDRESS, AND OUTPUT MSG ADDRESS 00058000
  59. * GPR2 - GPR10 - WORK REGISTERS 00059000
  60. * GPR11 - VMBLOK ADDRESS 00060000
  61. * GPR12 - BASE REG 00061000
  62. * GPR13 - SAVE AREA ADDRESS 00062000
  63. * GPR14 - LINKAGE REG 00063000
  64. * GPR15 - LINKAGE REG 00064000
  65. * 00065000
  66. * COMMAND FORMAT - 00066000
  67. * 00067000
  68. * +---------+---------+-------------------------------------+ 00068000
  69. * | MONITOR | | | 00069000
  70. * | MON | | | 00070000
  71. * | | AUTODISK| ON | 00071000
  72. * | | | OFF | 00072000
  73. * | | | | 00073000
  74. * | | CLOSE | | 00074000
  75. * | | | | 00075000
  76. * | | DISPLAY | ALL | 00076000
  77. * | | | TAPE | 00077000
  78. * | | | SPOOL | 00078000
  79. * | | | | 00079000
  80. * | | ENABLE | PERFORM | 00080000
  81. * | | | RESPONSE | 00081000
  82. * | | | SCHEDULE | 00082000
  83. * | | | USER | 00083000
  84. * | | | INSTSIM | 00084000
  85. * | | | DASTAP | 00085000
  86. * | | | SEEKS | 00086000
  87. * | | | SYSPROF | 00087000
  88. * | | | | 00088000
  89. * | | INTERVAL| INT SEC | 00089000
  90. * | | | MIN | 00090000
  91. * | | | | 00091000
  92. * | | LIMIT | NO. | STOP | 00092000
  93. * | | | | NOSTOP | 00093000
  94. * | | | * | | 00094000
  95. * | | | | 00095000
  96. * | | | | 00096000
  97. * | | START | CPTRACE | 00097000
  98. * | | | SPOOL TO USERID BUFFS | 00098000
  99. * | | | TAPE RADDR MODE 800 BUFFS | 00099000
  100. * | | | 1600 | 00100000
  101. * | | | 6250 | 00101000
  102. * | | | | 00102000
  103. * | | STOP | CPTRACE | 00103000
  104. * | | | SPOOL | 00104000
  105. * | | | TAPE | 00105000
  106. * | | | | 00106000
  107. * | | TIME | FROM (HH:SS) TO (HH:SS) | 00107000
  108. * | | | FOR (HH:SS) | 00108000
  109. * | | | ALL | 00109000
  110. * | | | NONE | 00110000
  111. * +---------+---------+-------------------------------------+ 00111000
  112. * 00112000
  113. * OPERATION - 00113000
  114. * 00114000
  115. * MONITOR COMMAND PROCESSING 00115000
  116. * 00116000
  117. * CALL DMKSCNFD TO LOCATE AN ARGUMENT. IF NONE IS 00117000
  118. * FOUND THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00118000
  119. * 00119000
  120. * IF THE ARGUMENT IS DISPLAY THEN GO TO DISPLAY. 00120000
  121. * IF THE ARGUMENT IS ENABLE THEN GO TO ENABLE. 00121000
  122. * IF THE ARGUMENT IS INTERVAL THEN GO TO INTERVAL. 00122000
  123. * IF THE ARGUMENT IS START THEN GO TO START. 00123000
  124. * IF THE ARGUMENT IS TIME THEN GO TO TIME 00123100
  125. * IF THE ARGUMENT IS CLOSE THEN GO TO CLOSE 00123200
  126. * IF THE ARGUMENT IS STOP THEN GO TO STOP. 00124000
  127. * IF THE ARGUMENT IS NONE OF THESE THEN EXIT WITH AN 00125000
  128. * APPROPRIATE ERROR MESSAGE. 00126000
  129. * 00127000
  130. * DISPLAY: 00128000
  131. * 00129000
  132. * OBTRAIN A REPLY BUFFER FROM FREE STORAGE AND OUTPUT 00130000
  133. * A REPLY HEADER VIA A CALL TO DMKQCNWT. 00131000
  134. * 00132000
  135. * SCAN THE MONITOR CLASS TABLE AND MOVE THE CLASS 00133000
  136. * NUMBER AND KEYWORD INTO THE REPLY BUFFER. 00134000
  137. * 00135000
  138. * IN PARALLEL WITH THE SCAN OF THE CLASS TABLE, SCAN 00136000
  139. * THE CURRENT CONTROL REGISTER 8 IN DMKPRGC8. IF THE 00137000
  140. * BIT IN THE MASK IS ONE THEN MOVE 'ENABLED' INTO THE 00138000
  141. * REPLY BUFFER. IF THE BIT IS ZERO THEN MOVE 00139000
  142. * 'DISABLED' INTO THE REPLY BUFFER. 00140000
  143. * 00141000
  144. * OUTPUT THE MESSAGE VIA A CALL TO DMKQCNWT AND LOOP 00142000
  145. * BACK UNTIL ALL ENTRIES HAVE BEEN EXAMINED. 00143000
  146. * 00144000
  147. * FINALLY, RELEASE THE REPLY BUFFER AND EXIT. 00145000
  148. * 00146000
  149. * ENABLE: 00147000
  150. * 00148000
  151. * SCAN THE REMAINING ARGUMENTS OF THE COMMAND LINE. 00149000
  152. * SEARCH THE CLASS TABLE FOR EACH ARGUMENT. IF A 00150000
  153. * MATCHING ENTRY IS NOT FOUND THEN EXIT WITH AN 00151000
  154. * APPROPRIATE ERROR MESSAGE. WHEN A MATCHING ENTRY 00152000
  155. * IS FOUND IN THE CLASS TABLE, SET THE CORRESPONDING 00153000
  156. * MONITOR CALL CLASS BIT IN THE WORK REG BEING 00154000
  157. * CONSTRUCTED FOR CR8. 00155000
  158. * 00156000
  159. * SAVE THE NEW CR8 VALUE IN DMKPRGC8 AND EXIT. 00157000
  160. * 00158000
  161. * INTERVAL: 00159000
  162. * 00160000
  163. * 00161000
  164. * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00161100
  165. * CALL DMKSCNFD TO GET THE INTERVAL VALUE. IF NONE 00162000
  166. * WAS GIVEN THEN EXIT WITH AN APPROPRIATE ERROR 00163000
  167. * MESSAGE. IF THE INTERVAL WAS GIVEN THEN CALL 00164000
  168. * DMKCVTDB TO CONVERT IT TO BINARY. 00165000
  169. * 00166000
  170. * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00167000
  171. * IS 'SEC' THEN GO TO STEP 13. IF IT IS 'MIN' THEN 00168000
  172. * MULTIPLY THE INTERVAL BY 60 TO CONVERT IT TO 00169000
  173. * SECONDS. 00170000
  174. * 00171000
  175. * IF THE SPECIFIED VALUE IS LESS THAN 30 SECONDS OR 00172000
  176. * MORE THAN 9 HOURS, THEN EXIT WITH AN APPROPRIATE 00173000
  177. * ERROR MESSAGE. OTHERWISE, STORE THE INTERVAL IN 00174000
  178. * DMKPRGTI AND EXIT WITH AN ACKNOWLEDGMENT MESSAGE. 00175000
  179. * 00176000
  180. * START: 00177000
  181. * 00178000
  182. * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00179000
  183. * IS 'CPTRACE' THEN GO TO START CPTRACE. IF IT IS 00180000
  184. * 'TAPE' THEN GO TO START TAPE. IF IT IS NEITHER OF 00181000
  185. * THESE THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00182000
  186. * AS OF RELEASE 5, SPOOL IS ALSO A VALID ARGUMENT 00182100
  187. * 00183000
  188. * START CPTRACE: 00184000
  189. * 00185000
  190. * IF THE INTERNAL TRACE TABLE IS ACTIVE THEN EXIT 00186000
  191. * WITH AN APPROPRIATE ERROR MESSAGE. OTHERWISE, 00187000
  192. * START ALL FLAVORS OF INTERNAL TRACING AND EXIT. 00188000
  193. * 00189000
  194. * START TAPE OR SPOOL: 00190100
  195. * 00191000
  196. * IF THE MONITOR IS ALREADY ACTIVE THEN EXIT WITH AN 00192000
  197. * APPROPRIATE ERROR MESSAGE. IF NO CLASSES ARE 00193000
  198. * ENABLED THEN EXIT WITH AN APPROPRIATE ERROR 00194000
  199. * MESSAGE. 00195000
  200. * 00196000
  201. * CALL DMKSCNFD TO LOCATE THE TAPE DRIVE ADDRESS 00197000
  202. * FIELD. IF NO ARGUMENT WAS FOUND THEN EXIT WITH AN 00198000
  203. * APPROPRIATE ERROR MESSAGE. 00199000
  204. * 00200000
  205. * CHECK THE VALIDITY OF THE ADDRESS, CONVERT IT TO 00201000
  206. * BINARY, LOCATE REAL DEVICE BLOCK, AND CHECK THE 00202000
  207. * AVAILABILITY AND SUITABILITY OF THE DEVICE. IF ANY 00203000
  208. * OF THESE CHECKS FAIL, THEN EXIT WITH AN APPROPRIATE 00204000
  209. * ERROR MESSAGE. 00205000
  210. * 00206000
  211. * CALL DMKSCNFD TO SEARCH FOR A MODE OR BUFFS 00207000
  212. * SPECIFICATION. IF EITHER IS FOUND, CHECK VALIDITY. 00208000
  213. * EXIT WITH APPROPRIATE ERROR MESSAGE IF INVALID INPUT 00209000
  214. * HAS BEEN SPECIFIED. IF NO MODE IS SPECIFIED, SET THE 00210000
  215. * DEFAULT TO THE RESET VALUE (X'C3' = 1600 BPI). IF 00211000
  216. * NO BUFFS VALUE IS SPECIFIED, SET THE DEFAULT BUFFS 00212000
  217. * VALUE ACCORDING TO THE CPU MODEL (2 FOR 135-145, 3 FOR 00213000
  218. * 148-158, AND 4 FOR 168). 00214000
  219. * 00215000
  220. * IF ALL OF THE CHECKS ARE PASSED, THEN RESERVE THE 00216000
  221. * DEVICE FOR SYSTEM USE. 00217000
  222. * 00218000
  223. * OBTAIN STORAGE FOR THE MONITOR COMMUNICATIONS AREA 00219000
  224. * (MONCOM) AND SAVE ITS ADDRSS IN DMKPRGMC. 00220000
  225. * 00221000
  226. * CALL DMKPTR TO PAGE IN AND LOCK THE DMKMON MODULE. 00222000
  227. * SAVE ITS ADDRESS IN DMKPRGMI. 00223000
  228. * 00224000
  229. * OBTAIN STORAGE FOR AN IOBLOK TO BE USED FOR THE 00225000
  230. * TAPE I/O REQUESTS. 00226000
  231. * 00227000
  232. * FINISH INITIALIZING THE IOBLOK AND BUILD THE 00228000
  233. * CHANNEL PROGRAMS TO BE USED BY THE MONITOR. 00229000
  234. * 00230000
  235. * OBTAIN STORAGE FOR A CPEXBLOK FOR DEFERED CALLS TO 00231000
  236. * IOS BY DMKMON. OBTAIN TWO PAGES OF FLIP FLOP DATA 00232000
  237. * COLLECTION BY CALLS TO DMKPTRFR. 00233000
  238. * 00234000
  239. * IF ANY TIMER DATA COLLECTION CLASSES ARE ENABLED 00235000
  240. * THEN OBTAIN, INITIALIZE AND SCHEDULE A TRQBLOK. AT 00236000
  241. * THE SAME TIME, INITIALIZE DMKPRGTI IF IT ISN'T 00237000
  242. * ALREADY. 00238000
  243. * 00239000
  244. * CALL DMKMNITH TO ISSUE THE INITIAL CCW SEQUENCE. 00240000
  245. * THE I/O INTERRUPT ASSOCIATED WITH THE INITIAL CCW'S 00241000
  246. * WILL COMPLETE THE INITIATION OF THE MONITOR, 00242000
  247. * INCLUDING THE COLLECTION OF THE HEADER RECORDS, 00243000
  248. * WITHIN DMKMON. 00244000
  249. * 00245000
  250. * EXIT AFTER SENDING THE 'COMMAND COMPLETE' MESSAGE. 00246000
  251. * 00247000
  252. * STOP: 00248000
  253. * 00249000
  254. * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00249100
  255. * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00250000
  256. * IS 'CPTRACE' THEN GO TO STOP CPTRACE. IF IT IS 00251000
  257. * 'TAPE' THEN GO TO STOP TAPE. IF IT IS NEITHER OF 00252000
  258. * THESE THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00253000
  259. * AS OF RELEASE 5, SPOOL IS ALSO A VALID ARGUMENT 00253100
  260. * 00254000
  261. * STOP CPTRACE: 00255000
  262. * 00256000
  263. * IF CP INTERNAL TRACING IS NOT ACTIVE THEN EXIT WITH 00257000
  264. * AN APPROPRIATE ERROR MESSAGE. OTHERWISE, SET THE 00258000
  265. * TRACE FLAGS TO ZEROES AND EXIT AFTER SENDING THE 00259000
  266. * 'COMMAND COMPLETE' MESSAGE. 00260000
  267. * 00261000
  268. * STOP TAPE OR SPOOL: 00262100
  269. * 00263000
  270. * IF MONITORING IS CURRENTLY INACTIVE THEN EXIT WITH 00264000
  271. * AN APPROPRIATE ERROR MESSAGE. 00265000
  272. * 00266000
  273. * IF THE MONITOR IS CURRENTLY IN ERROR RECOVERY OR 00267000
  274. * PROCESSING A 'MONITOR STOP TAPE' COMMAND THEN EXIT 00268000
  275. * WITH AN APPROPRIATE ERROR MESSAGE. 00269000
  276. * 00270000
  277. * CLEAR CONTROL REGISTER 8 TO INHIBIT FURTHER MONITOR 00271000
  278. * CALL INTERRUPTS. INDICATE THAT A 'MONITOR STOP 00272000
  279. * TAPE' COMMAND IS BEING PROCESSED. 00273000
  280. * 00274000
  281. * OBTAIN STORAGE FOR AND INITIALIZE A CPEXBLOK. 00275000
  282. * 'STACK' THE CPEXBLOK ON THE COMMUNICATIONS AREA. 00276000
  283. * IF THE MONITOR TAPE IS CURRENTLY BUSY THEN SKIP THE 00277000
  284. * NEXT STEP. 00278000
  285. * 00279000
  286. * CALL DMKMNISH TO COMPLETE MONITOR SHUTDOWN 00280000
  287. * PROCESSING. WHEN CONTROL RETURNS FROM DMKMNI, EXIT 00281000
  288. * AFTER ISSUING THE 'COMMAND COMPLETE' MESSAGE. 00282000
  289. * 00283000
  290. * SET THE RETURN ADDRESS IN THE CPEXBLOK TO THE 00284000
  291. * 'COMMAND COMPLETE' MESSAGE ROUTINE AND GO TO THE 00285000
  292. * DISPATCHER. SINCE THE TAPE IS BUSY AND THE CFSTOP 00286000
  293. * FLAG HAS BEEN SET, THE MONITOR WILL BE SHUT DOWN 00287000
  294. * WHEN THE NEXT TAPE I/O INTERRUPT OCCURS. FOLLOWING 00288000
  295. * THAT, THE CPEXBLOK WILL BE 'UNSTACKED' AND RETURN 00289000
  296. * WILL BE MADE TO THIS ROUTINE TO TYPE OUT THE 00290000
  297. * 'COMMAND COMPLETE' MESSAGE. 00291000
  298. * 00292000
  299. * TIME 00292010
  300. * 00292020
  301. * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00292030
  302. * 00292040
  303. * LIMIT 00292050
  304. * 00292060
  305. * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00292070
  306. * 00292080
  307. * CLOSE 00292090
  308. * 00292100
  309. * CALL DMKMIACC TO CLOSE THE CURRENT SPOOL FILE 00292110
  310. *. 00293000
  311. EJECT 00294000
  312. DMKMCC CSECT @V2B2638 00295000
  313. MODID DC CL8'DMKMCC' @V2B2638 00296000
  314. SPACE 1 00297000
  315. USING SAVEAREA,R13 @V2B2638 00298000
  316. USING PSA,R0 @V2B2638 00299000
  317. SPACE 1 00300000
  318. EXTRN DMKSCNFD @V2B2638 00301000
  319. EXTRN DMKSCNRU @V2B2638 00302000
  320. EXTRN DMKQCNWT @V2B2638 00303000
  321. EXTRN DMKPRGC8,DMKPRGMC,DMKPRGTI,DMKPRGMI @V2B2638 00304000
  322. EXTRN DMKERMSG @V2B2638 00305000
  323. EXTRN DMKPTRFR @V2B2638 00306000
  324. EXTRN DMKCVTHB @V2B2638 00307000
  325. EXTRN DMKCVTDB @V2B2638 00308000
  326. EXTRN DMKFREE @V2B2638 00309000
  327. EXTRN DMKFRET @V2B2638 00310000
  328. EXTRN DMKSCHST @V2B2638 00311000
  329. EXTRN DMKSCHRT @V2B2638 00312000
  330. EXTRN DMKMONMI,DMKMONTI 00313000
  331. EXTRN DMKSYSAT,DMKSYSTS,DMKSYSTE,DMKSYSMX,DMKSYSUR @V50A2B5 00314000
  332. EXTRN DMKUDRFU,DMKSCNVU,DMKVDSDF,DMKSTKCP,DMKPGTVG @V50A2B5 00315000
  333. EXTRN DMKMIARO,DMKSYSEN @V50A2B5 00316000
  334. EXTRN DMKMNIDK,DMKMIA @V50A2B5 00317000
  335. EXTRN DMKMNISP,DMKMIACC,DMKMNIST,DMKMIAMU @VMD0138 00318000
  336. EXTRN DMKMIADL,DMKRSPMN @V50A2B5 00319000
  337. EXTRN DMKMNITH,DMKMNISH 00320000
  338. EXTRN DMKDSPCH @V2B2638 00321000
  339. EXTRN DMKCVTAB @VA04301 00322000
  340. EXTRN DMKMCDIN,DMKMCDLI,DMKMCDTI,DMKMCDST @VA08291 00322100
  341. EXTRN DMKDSPNP @VA07357 00323000
  342. EXTRN DMKMCDSE @V60BEBC 00323100
  343. EJECT 00324000
  344. COPY OPTIONS @V2B2638 00325000
  345. COPY LOCAL @V2B2638 00326000
  346. EJECT 00327000
  347. *. 00328000
  348. ********************************************************************** 00329000
  349. * 00330000
  350. * MONITOR COMMAND PROCESSING 00331000
  351. * 00332000
  352. * LOCATE THE FIRST ARGUMENT. COMPARE IT AGAINST THE OPERAND 00333000
  353. * TABLE AND GO TO THE APPROPRIATE ROUTINE 00334000
  354. * 00335000
  355. ********************************************************************** 00336000
  356. *. 00337000
  357. DMKMCCCL RELOC @V2B2638 00338000
  358. USING VMBLOK,R11 @V2B2638 00339000
  359. CALL DMKSCNFD LOOK FOR NEXT FIELD @V2B2638 00340000
  360. BNZ MSG026 ERROR IF NO PARM AT ALL @V2B2638 00341000
  361. CL R0,F8 IS IT BIGGER THAN 8? @V2B2638 00342000
  362. BH MSG026 YES, THEN GARBAGE IT IS @V2B2638 00343000
  363. LR R2,R0 SAVE THE SIZE @V2B2638 00344000
  364. BCTR R2,0 DECREMENT BY ONE @V2B2638 00345000
  365. LA R3,OPTABENO GET THE NUMBER OF ENTRIES @V2B2638 00346000
  366. LA R4,MONOPTAB ADDR OF THE TABLE @V2B2638 00347000
  367. COMPLEN CH R2,0(R4) COULD THIS POSSIBLY BE IT? @V2B2638 00348000
  368. BL NEXTARG NOPE, TOO SMALL @V2B2638 00349000
  369. EX R2,COMPARG CHECK IF THIS IS IT @V2B2638 00350000
  370. BE 10(R4) YES, BRANCH TO THE RIGHT PLACE @V2B2638 00351000
  371. NEXTARG LA R4,14(R4) BUMP TO THE NEXT ENTRY @V2B2638 00352000
  372. BCT R3,COMPLEN GO CHECH THE NEXT ENTRY @V2B2638 00353000
  373. B MSG002 SORRY, WE DIDN'T FIND IT @V2B2638 00354000
  374. SPACE 3 00355000
  375. COMPARG CLC 2(0,R4),0(R1) EXECUTED COMPARE OF OPERANDS @V2B2638 00356000
  376. EJECT 00357000
  377. * 00358000
  378. *********************************************************************** 00359000
  379. * 00360000
  380. * MONITOR AUTODISK 00361000
  381. * 00362000
  382. * SET THE AUTO SPOOL MONITOR FLAG IN DMKSYS 00363000
  383. * 00364000
  384. *********************************************************************** 00365000
  385. * 00366000
  386. SPACE 1 00367000
  387. MONAUTO CALL DMKSCNFD FIND THE NEXT FIELD IN COMMAND @V50A2B5 00368000
  388. BNZ MSG026 CARRIAGE RETURN OR ENDBUFF @V50A2B5 00369000
  389. L R4,=A(DMKSYSAT) GET AUTO FLAG @V50A2B5 00370000
  390. C R0,F3 IS IT ILLEGAL? @V50A2B5 00371000
  391. BH MSG002 YES @V50A2B5 00372000
  392. C R0,F2 IS IT EXACTLY TWO? @V50A2B5 00373000
  393. BNZ NOTTWO NO @V50A2B5 00374000
  394. CLC =C'ON',0(R1) IS ON SPECIFIED? @V50A2B5 00375000
  395. BNZ MSG002 NO @V50A2B5 00376000
  396. TM 0(R4),AUTGO SEE IF ALREADY ON @V50A2B5 00377000
  397. BO ACK NO USE STACKING ANY BLOCKS @V50A2B5 00378000
  398. OI 0(R4),AUTGO TURN ON AUTO SPOOL BIT @V50A2B5 00379000
  399. CALL DMKMNIST TURN ON THE TRQS @VMD0138 00380000
  400. B ACK AND EXIT @V50A2B5 00381000
  401. NOTTWO C R0,F3 IS IT EXACTLY THREE @V50A2B5 00382000
  402. BNZ MSG002 NOTHING GOOD @V50A2B5 00383000
  403. CLC =C'OFF',0(R1) IS OFF SPECIFIED? @V50A2B5 00384000
  404. BNZ MSG002 NOT GOOD @V50A2B5 00385000
  405. NI 0(R4),X'FF'-AUTGO TURN OFF AUTO SPOOL BIT @V50A2B5 00386000
  406. B ACK ACKNOWLEDGE COMPLETION @V50A2B5 00387000
  407. EJECT 00388000
  408. *. 00389000
  409. ********************************************************************** 00390000
  410. * 00391000
  411. * MONITOR DISPLAY 00392000
  412. * 00393000
  413. * OBTAIN A BUFFER FOR THE DISPLAY OUTPUT. WRITE OUT A LINE FOR 00394000
  414. * THE STATUS OF THE INTERNAL TRACE TABLE AND A LINE FOR EACH 00395000
  415. * CLASS INDICATING ITS KEYWORD AND ENABLED/DISABLED STATUS. 00396000
  416. * FRET THE BUFFER AND EXIT. 00397000
  417. * 00398000
  418. ********************************************************************** 00399000
  419. *. 00400000
  420. SPACE 1 00401000
  421. MONCLDIS EQU * MONITOR DISPLAY FUNCTION @V50A2B5 00402000
  422. CALL DMKMIADL EXECUTE DISPLACED CODE @V50A2B5 00403000
  423. EXIT AND EXIT @V50A2B5 00404000
  424. EJECT @V50A2B5 00405000
  425. *. 00406000
  426. *********************************************************************** 00407000
  427. * 00408000
  428. * MONITOR ENABLE 00409000
  429. * 00410000
  430. * FOR EACH ARGUMENT, SEARCH THE CLASS TABLE AND TURN ON 00411000
  431. * THE APPROPRIATE MASK BIT IN R3. THE FOLLOWING RULES ARE 00412000
  432. * CHECKED: 00413000
  433. * 00414000
  434. * 1. DASTAP CANNOT BE ENABLED ON THE FLY (BECAUSE OF THE 00415000
  435. * HEADER AND THE DEVICE LIST). 00416000
  436. * 2. IF SYSPROF IS SPECIFIED THEN SCHEDULE AND DASTAP MUST 00417000
  437. * ALSO BE SPECIFIED. 00418000
  438. * 00419000
  439. * IF DATA COLLECTION IS ACTIVE: 00420000
  440. * 00421000
  441. * IF DASTAP WAS ON BEFORE BUT WILL NOT BE AFTER COMMAND 00422000
  442. * COMPLETION, THEN SET A FLAG TO FRET THE DEVICE LIST. 00423000
  443. * IT CANNOT BE FRETTED YET DUE TO POSSIBLE ERROR EXITS. 00424000
  444. * 00425000
  445. * IF TIMER DRIVEN EVENTS WERE ACTIVE BUT WON'T BE ANYMORE 00426000
  446. * THEN DEQUEUE AND FRET THE TRQBLOK. 00427000
  447. * 00428000
  448. * IF TIMER DRIVEN EVENTS WERE NOT ACTIVE BEFORE BUT WILL 00429000
  449. * BE THEN OBTAIN AND ENQUEUE A TRQBLOK. 00430000
  450. * 00431000
  451. * SAVE THE ENABLED MASK IN DMKPRGC8. IF THE MONITOR IS ACTIVE 00432000
  452. * THEN LOAD THE NEW MASK IN CR8. IF NECESSARY FRET THE 00433000
  453. * DEVICE LIST. 00434000
  454. * 00435000
  455. *********************************************************************** 00436000
  456. *. 00437000
  457. SPACE 1 00438000
  458. MONCLEN SR R3,R3 REG FOR BUILDING CR8 MASK @V2B2638 00439000
  459. NEXTPARM CALL DMKSCNFD OBTAIN NEXT FIELD IN COMMAND @V2B2638 00440000
  460. BNZ ENDBUFF CARRIAGE RETURN OR ENDBUFF @V2B2638 00441000
  461. LR R2,R0 BYTE COUNT OF FIELD FOUND @V2B2638 00442000
  462. C R2,F8 IS IT TOO BIG @V2B2638 00443000
  463. BH MSG002 YES, GARBAGE IN, GARBAGE OUT @V2B2638 00444000
  464. BCTR R2,0 LESS 1 FOR EXECUTED COMPARE @V2B2638 00445000
  465. LA R4,MONTBENO NUMBER OF ENTRIES IN TABLE @V2B2638 00446000
  466. LA R5,MONCLTBL BEGINNING OF CLASS KEYWORD TABLE @V2B2638 00447000
  467. L R6,=A(X'00008000') SET FOR CLASS 0 FIRST @V2B2638 00448000
  468. EXECUTE EX R2,COMPLENG COMPARE LENGTH ENT. W/ MIN. @V2B2638 00449000
  469. BH NOTTHIS B:A COMPARE, TOO SMALL, NOT THIS @V2B2638 00450000
  470. EX R2,COMPARE LOOK FOR KEYWORD MATCH @V2B2638 00451000
  471. BNE NOTTHIS NO MATCH IN THIS CLASS, MOVE ON @V2B2638 00452000
  472. OR R3,R6 OR IN CORRESPONDING CLASS FLAG @V2B2638 00453000
  473. B NEXTPARM GO DO SAME WITH NEXT ARGUMENT @V2B2638 00454000
  474. NOTTHIS BCT R4,NEXTCLAS ANY MORE CLASSES? YES @V2B2638 00455000
  475. B MSG002 NO, TOO BAD, NOT IMPLEMENTED @V2B2638 00456000
  476. NEXTCLAS LA R5,9(R5) NEXT CLASS TABLE ENTRY @V2B2638 00457000
  477. SRL R6,1 SET NEXT CLASS FLAG @V2B2638 00458000
  478. B EXECUTE TRY THIS ONE @V2B2638 00459000
  479. EJECT 00460000
  480. * TOP BYTE OF SAVEWRK1 = FLAGS, LOWER 1/2 = CR8 MASK 00461000
  481. ENDBUFF LTR R3,R3 DID WE ENABLE ANYTHING? @V2B2638 00462000
  482. BZ MSG026 NOPE, MUST NOT HAVE SPEC. ANYTH @V2B2638 00463000
  483. ST R3,SAVEWRK1 SAVE CR8 MASK JUST GENERATED @V2B2638 00464000
  484. L R7,=A(DMKPRGMC) LOC'N OF COMMUNIC. AREA ADDR @V2B2638 00465000
  485. L R7,0(R7) ADDRESS OF COMMUNICATIONS AREA @V2B2638 00466000
  486. LTR R7,R7 IS MONITOR ACTIVE @V2B2638 00467000
  487. BZ DASDOK NO, NO NEED TO LOAD CNTRL REG 8 @V2B2638 00468000
  488. USING MONCOM,R7 YES, NEED NEW VALUE & DASD CHECK @V2B2638 00469000
  489. TM SAVEWRK1+2,DASDCL WAS DASDCL JUST SPECIFIED @V2B2638 00470000
  490. BZ NODASD NOPE, GO SEE IF ACTIVE BEFORE @V2B2638 00471000
  491. L R1,MONDVLST YES, WAS IT ON BEFORE? @V2B2638 00472000
  492. LTR R1,R1 ... @V2B2638 00473000
  493. BZ MSG215 NOPE, CAN'T ENABLE ON THE FLY @V2B2638 00474000
  494. B DASDOK YES, NOW AND BEFORE, ALL SET @V2B2638 00475000
  495. SPACE 3 00476000
  496. NODASD L R1,MONDVLST WAS IT ACTIVE BEFORE? @V2B2638 00477000
  497. LTR R1,R1 ... @V2B2638 00478000
  498. BZ DASDOK NOPE, NOT NOW OR BEFORE, ALL SET @V2B2638 00479000
  499. OI SAVEWRK1,X'80' FLAG FRET OF DASTAP LIST REQ. @V2B2638 00480000
  500. * NOTE THAT LEFT HALF OF SAVEWRK1 WAS CLEARED AFTER ENDBUFF 00481000
  501. SPACE 3 00482000
  502. DASDOK TM SAVEWRK1+3,SPROFCL SYSPROF JUST SPECIFIED? @V2B2638 00483000
  503. BZ CHKACTV NOPE, SKIP PREREQ CHECK @V2B2638 00484000
  504. TM SAVEWRK1+2,SCHEDCL+DASDCL PREREQ'S SPEC TOO? @V2B2638 00485000
  505. BNO MSG216 NOPE, BAD NEWS. @V2B2638 00486000
  506. CHKACTV LTR R7,R7 IS MONITOR ACTIVE NOW? @V2B2638 00487000
  507. BZ SETPRG NOPE, SET UP DMKPRG CR8 VALUE @V2B2638 00488000
  508. TM SAVEWRK1+2,PERFCL+USERCL+DASDCL ENAB SAMPLING? @V2B2638 00489000
  509. BNZ PERFEN YES, TRB MAY ALREADY BE ACTIVE @V2B2638 00490000
  510. L R1,MONATRB NO, GET OLD TRB ADDRESS @V2B2638 00491000
  511. LTR R1,R1 IS THERE ONE? @V2B2638 00492000
  512. BZ SETCPCR8 NO, NO CHANGES REQUIRED @V2B2638 00493000
  513. CALL DMKSCHRT REMOVE OLD TRB FROM CHAIN @V2B2638 00494000
  514. LA R0,TRQBSIZE @V2B2638 00495000
  515. CALL DMKFRET AND FRET THE STORAGE @V2B2638 00496000
  516. SLR R1,R1 TRB NO LONGER EXISTS... @V2B2638 00497000
  517. ST R1,MONATRB SO INDICATE SUCH IN MONCOM @V2B2638 00498000
  518. B SETCPCR8 DONE CHECKING @V2B2638 00499000
  519. EJECT 00500000
  520. PERFEN L R1,MONATRB IS THERE A TRB? @V2B2638 00501000
  521. LTR R1,R1 ... @V2B2638 00502000
  522. BNZ SETCPCR8 YES, NO CHANGE REQUIRED @V2B2638 00503000
  523. BAL R8,GETTRB NO, GET TRB AND ENQUEUE IT @V2B2638 00504000
  524. SETCPCR8 ST R3,CPCREG8 SET NEW VALUE FOR CP REG @V2B2638 00505000
  525. L R8,PREFIXB ADDRESS OTHER PROCESSOR'S PSA 00506000
  526. ST R3,CPCREG8(R8) PROPAGATE MC MASK TO OTHER PROCESSOR 00507000
  527. LCTL C8,C8,CPCREG8 AND MAKE IT ACTIVE NOW. @V2B2638 00508000
  528. SETPRG L R2,=A(DMKPRGC8) SAVE IT IN PRG @V2B2638 00509000
  529. ST R3,0(R2) ... @V2B2638 00510000
  530. TM SAVEWRK1,X'80' NEED TO FRET DASTAP LIST? @V2B2638 00511000
  531. BZ ACK NOPE, ALL DONE NOW @V2B2638 00512000
  532. L R1,MONUTRB ADDR OF UTILIZATION TRB @V60BEBC 00512010
  533. LTR R1,R1 IS IT THERE? @V60BEBC 00512020
  534. BZ NOUTFREE NO, NO NEED TO FREE UP @V60BEBC 00512030
  535. CALL DMKSCHRT REMOVE TRB FROM CHAIN @V60BEBC 00512040
  536. LA R0,TRQBSIZE SIZE IN DWORDS @V60BEBC 00512050
  537. CALL DMKFRET FREE IT UP @V60BEBC 00512060
  538. SLR R1,R1 INDICATE NO I/O UTILIZATION @V60BEBC 00512070
  539. ST R1,MONUTRB IN MONCOM @V60BEBC 00512080
  540. L R1,MONCHPTR FREE UP SPACE FOR CHANNEL @V60BEBC 00512090
  541. LA R0,MNCHSIZE SAMPLE FIELDS @V60BEBC 00512100
  542. CALL DMKFRET ... @V60BEBC 00512110
  543. SLR R1,R1 RESET PTR TO CH SAMPLES TO 0 @V60BEBC 00512120
  544. ST R1,MONCHPTR ... @V60BEBC 00512130
  545. NOUTFREE EQU * @V60BEBC 00512140
  546. LH R0,MONDVNUM GET THE NUMBER OF DEVICES @V2B2638 00513000
  547. L R1,MONDVLST GET THE LIST ADDRESS @V2B2638 00516000
  548. CALL DMKFRET AND FRET IT @V2B2638 00517000
  549. SLR R1,R1 DASD LIST STORAGE AINT NOMORE @V2B2638 00518000
  550. ST R1,MONDVLST .... @V2B2638 00519000
  551. STH R1,MONDVNUM ... @V2B2638 00520000
  552. B ACK DONE. @V2B2638 00521000
  553. DROP R7 @V2B2638 00522000
  554. SPACE 4 00523000
  555. COMPLENG CLI 8(R5),X'00' COMPARE ARG LENGTH W/ MINIMUM @V2B2638 00524000
  556. COMPARE CLC 0(0,R1),0(R5) INPUT ARG TO KEYWORD TABLE COMP. @V2B2638 00525000
  557. EJECT 00526000
  558. *. 00527000
  559. *********************************************************************** 00528000
  560. * 00529000
  561. * MONITOR INTERVAL 00530000
  562. * 00531000
  563. * CALCULATE THE INTERVAL IN SECONDS AND STORE IT IN DMKPRGTI. 00532000
  564. * 00533000
  565. * THERE IS A 9 HOUR LIMIT ON THE INTERVAL. THE MONITOR SHOULD 00534000
  566. * NOT BE RUN FOR MORE THAN 9 1/2 HOURS DUE TO THE 5 BYTE TIME 00535000
  567. * STAMP USED IN THE DATA COLLECTION ROUTINES. 00536000
  568. * 00537000
  569. *********************************************************************** 00538000
  570. *. 00539000
  571. SPACE 1 00540000
  572. MONINTVL CALL DMKMCDIN CALL EXTENSION FOR INTERVAL PROC@VA08291 00541000
  573. B ACK ACKNOWLEDGE & RETURN @V2B2638 00569000
  574. EJECT 00570000
  575. * 00571000
  576. *********************************************************************** 00572000
  577. * 00573000
  578. * MONITOR LIMIT 00574000
  579. * 00575000
  580. * SETS THE LIMIT ON THE MONITOR SPOOL FILE SIZE 00576000
  581. * 00577000
  582. *********************************************************************** 00578000
  583. * 00579000
  584. MONMAX CALL DMKMCDLI CALL EXTENSION FOR LIMIT PROCESS@VA08291 00580000
  585. B ACK ACKNOWLEDGE COMPLETION @V50A2B5 00623000
  586. EJECT 00624000
  587. *********************************************************************** 00625000
  588. * 00626000
  589. * MONITOR START 00627000
  590. * 00628000
  591. *********************************************************************** 00629000
  592. SPACE 1 00630000
  593. MONSTART CALL DMKSCNFD GET NEXT PARAMETER @V2B2638 00631000
  594. BNZ ASMSPL ASSUME SPOOL @V50A2B5 00632000
  595. MVC SAVEWRK3(8),BLANKS BLANK OUT PARM AREA @V2B2638 00633000
  596. C R0,F8 IS IT TOO BIG @V2B2638 00634000
  597. BH MSG002 YES, GARBAGE IN, GARBAGE OUT @V2B2638 00635000
  598. LR R2,R0 LENGTH OF PARM INTO R2 @V2B2638 00636000
  599. BCTR R2,0 LESS 1 FOR EXECUTE @V2B2638 00637000
  600. EX R2,PARMOVE MOVE PARM INTO TEMPORARY AREA @V2B2638 00638000
  601. CLC =CL8'TAPE',SAVEWRK3 IS IT PERF MONITOR? @V2B2638 00639000
  602. BE TAPESTRT YES @V2B2638 00640000
  603. CLC =CL8'SPOOL',SAVEWRK3 IS IT SPOOL MONITOR @V50A2B5 00641000
  604. BE TAPESTRT CONTINUE WITH INITIALIZATION @V50A2B5 00642000
  605. AIF (NOT &TRACE(9)).NTR91 @V2B2638 00643000
  606. CLC =CL8'CPTRACE',SAVEWRK3 IS IT INTERNAL TRACE @V2B2638 00644000
  607. .NTR91 ANOP 00645000
  608. BNE MSG002 NO, BAD OPERAND @V2B2638 00646000
  609. SPACE 5 00649000
  610. *. 00650000
  611. *********************************************************************** 00651000
  612. * 00652000
  613. * MONITOR START CPTRACE (INTERNAL TRACE TABLE) 00653000
  614. * 00654000
  615. * IF IT IS ALREADY ACTIVE, EXIT WITH AN ERROR MESSAGE. 00655000
  616. * OTHERWISE TURN ON ALL FLAVORS OF INTERNAL TRACING. 00656000
  617. * 00657000
  618. *********************************************************************** 00658000
  619. *. 00659000
  620. SPACE 1 00660000
  621. L R2,TRACEFLG GET THE TRACE FLAGS @V2B2638 00661000
  622. LTR R2,R2 ANYTHING ACTIVE? @V2B2638 00662000
  623. BNZ MSG213 IF SO, CAN'T START TRACING @V2B2638 00663000
  624. L R2,FFS SET FLAGS TO ALL ONES @V2B2638 00664000
  625. ST R2,TRACEFLG TO START TRACING @V2B2638 00665000
  626. L R8,PREFIXB ADDRESS OTHER PSA, IF ANY 00666000
  627. ST R2,TRACEFLG(R8) PUT TRACE FLAGS IN OTHER PSA 00667000
  628. L R2,TRACSTRT GET ADDRESS OF BEGINNING OF TABLE@V2B2638 00668000
  629. ST R2,TRACCURR SET CURRENT TO BEGINNING OF TABLE@V2B2638 00669000
  630. B ACK SEND ACKNOWLEDGMENT @V2B2638 00670000
  631. EJECT 00671000
  632. *. 00672000
  633. *********************************************************************** 00673000
  634. * 00674000
  635. * MONITOR START TAPE 00675000
  636. * 00676000
  637. * INSURE THAT THE MONITOR IS NOT ACTIVE, VALIDITY CHECK 00677000
  638. * THE TAPE ADDRESS. FLAG THE TAPE AS IN USE BY THE SYSTEM. 00678000
  639. * 00679000
  640. * OBTAIN A COMMUNICATINS AREA. TRANS IN AND LOCK DMKMONIN 00680000
  641. * ALSO OBTAIN VIA A TRANS CALL OTHER NECESSARY DMKMON ADDRESSES. 00681000
  642. * 00682000
  643. * GET AND INITIALIZE AN IOBLOK FOR THE TAPE. 00683000
  644. * OBTAIN A BACK POCKET CPEXBLOK FOR USE BY DMKMON TO CALL IOS 00684000
  645. * CALL DMKPTRFR FOR 2 4K BUFFER PAGES. 00685000
  646. * CALL DMKMONTH TO CREATE HEADER RECORDS. EXIT. 00686000
  647. * 00687000
  648. *********************************************************************** 00688000
  649. *. 00689000
  650. SPACE 1 00690000
  651. ASMSPL MVC SAVEWRK3(8),=CL8'SPOOL' ASSUME SPOOL @VA08104 00690100
  652. TAPESTRT L R2,=A(DMKPRGC8) GET CURRENT CREG 8 @V2B2638 00691000
  653. L R2,0(R2) FROM DMKPRG @V2B2638 00692000
  654. LTR R2,R2 IS ANY CLASS ENABLED? @V2B2638 00693000
  655. BNZ OKGO CONTINUE @V50A2B5 00694000
  656. CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOL SPECIF. @V50A2B5 00695000
  657. BNE MSG217 NO, ERROR @V50A2B5 00696000
  658. OKGO EQU * @V50A2B5 00697000
  659. L R2,=A(DMKPRGMC) YES, IS MONITOR ALREADY ACTIVE @V2B2638 00698000
  660. L R2,0(R2) PICK UP ADDRESS OF MONCOM @V2B2638 00699000
  661. LTR R2,R2 IS THERE ONE @V2B2638 00700000
  662. BNZ MSG211 YES, THEN START IS INVALID PARM @V2B2638 00701000
  663. SR R8,R8 CLEAR OUT REGISTER 8 @V50A2B5 00702000
  664. CLC SAVEWRK3(5),=CL8'SPOOL' IS IT SPOOLED @V50A2B5 00703000
  665. BE SPOOLIT YES, DO FURTHER TESTS @V50A2B5 00704000
  666. CALL DMKSCNFD LOOK FOR TAPE ADDRESS @V2B2638 00705000
  667. BNZ MSG021 NONE, ERROR @V2B2638 00706000
  668. C R0,F3 MUST BE 3 CHARS. OR LESS @V2B2638 00707000
  669. BH MSG021 TOO BIG, TOO BAD. @V2B2638 00708000
  670. LR R4,R1 SAVE FIELD ADDR IN CASE OF ERROR @V2B2638 00709000
  671. CALL DMKCVTHB OK, CONVERT TO BINARY @V2B2638 00710000
  672. BNZ MSG021 UNCONVERTABLE, BAD NEWS. @V2B2638 00711000
  673. CALL DMKSCNRU GET CORRESPONDING RDEV BLOK ADD. @V2B2638 00712000
  674. BNZ MSG040 NO SUCH DEVICE, BAD NEWS. @V2B2638 00713000
  675. USING RDEVBLOK,R8 RDEVBLOK DSECT @V2B2638 00714000
  676. CLI RDEVTYPC,CLASTAPE MUST BE TAPE DRIVE @V2B2638 00715000
  677. BNE MSG006 NOPE, TOO BAD. @V2B2638 00716000
  678. TM RDEVSTAT,RDEVDED IS IT ALREADY DEDICATED @V2B2638 00717000
  679. BO MSG140 YES, TOO BAD. @V2B2638 00718000
  680. TM RDEVSTAT,RDEVDISA IS DEVICE OFFLINE @V2B2638 00719000
  681. BO MSG046 YES, TOO BAD. @V2B2638 00720000
  682. TM RDEVFLAG,RDEVSYS ALREADY IN USE BY SYS? @V2B2638 00721000
  683. BO MSG143 MUST BE SYSTEM DUMP TAPE @V2B2638 00722000
  684. BUFFINIT EQU * @V50A2B5 00723000
  685. SPACE 00724000
  686. LA R5,2 SET DEFAULT OF 2 BUFFERS 00725000
  687. CLC CPUMODEL,TS145A IS CPU BIGGER THAN 145? @VA09802 00726100
  688. BNH DEFTMODE NO, DEFAULT IS ALL SET 00727000
  689. LA R5,1(R5) YES, INCREMENT DEFAULT TO 3 00728000
  690. CLC CPUMODEL,TS158A IS CPU BIGGER THAN 158? @VA09802 00729100
  691. BNH DEFTMODE NO, DEFAULT IS ALL SET 00730000
  692. LA R5,1(R5) YES, INCREMENT DEFAULT TO 4 00731000
  693. DEFTMODE LA R6,X'C3' SET DEFAULT TAPE MODE 00732000
  694. SPACE 00733000
  695. ******************************************************************* 00734000
  696. * * 00735000
  697. * NOW SCAN INPUT FOR POSSIBLE 'BUFFS' OR 'MODE' PARAMETER * 00736000
  698. * * 00737000
  699. ******************************************************************* 00738000
  700. SPACE 00739000
  701. SCNBUFMD CALL DMKSCNFD SCAN INPUT BUFFER 00740000
  702. BNZ NOMODE NONE FOUND, USE DEFAULTS 00741000
  703. MVC SAVEWRK1(8),BLANKS CLEAR WORK AREA @V50A2B5 00742000
  704. C R0,F8 IS LENGTH OF PARM > 8? 00743000
  705. BH MSG002 YES, MUST BE GARBAGE 00744000
  706. LR R2,R0 COPY LENGTH 00745000
  707. BCTR R2,0 SUBTRACT 1 FOR MOVE 00746000
  708. EX R2,PARMOVE1 MOVE INTO PROPER BUFFER @V50A2B5 00747000
  709. CLC =CL8'BUFFS',SAVEWRK1 IS IT BUFFS? @V50A2B5 00748000
  710. BE GETBUFFS YES, GO GET NUMBER OF BUFFERS 00749000
  711. CLC =CL8'MODE ',SAVEWRK1 IS IT BUFFS? @V50A2B5 00750000
  712. BNE MSG002 NO, IT'S GARBAGE 00751000
  713. CLC SAVEWRK3(5),=CL8'SPOOL ' ARE WE SPOOLING @V50A2B5 00752000
  714. BE MSG002 YES, BAD SITUATION @V50A2B5 00753000
  715. CALL DMKSCNFD FIND THE MODE SPECIFICATION @V2B2638 00754000
  716. BNE MSG026 OOPS, HE DIDN'T SAY ANYTHING. @V2B2638 00755000
  717. CL R0,F3 WITHIN ACCEPTABLE LIMITS? @V2B2638 00756000
  718. BL MSG002 NOPE, TOO BAD @V2B2638 00757000
  719. CL R0,F4 ... @V2B2638 00758000
  720. BH MSG002 ... @V2B2638 00759000
  721. MVC SAVEWRK1(4),BLANKS CLEAR A SPOT @V50A2B5 00760000
  722. LR R2,R0 SAVE LENGTH IN AN EXECUTABLE REG @V2B2638 00761000
  723. BCTR R2,0 DECREMENT BY ONE FOR THE EX @V2B2638 00762000
  724. EX R2,PARMOVE1 MOVE INTO PROPER BUFFER @V50A2B5 00763000
  725. LA R3,MONMODTB TABLE BEGINNING @VM01003 00764000
  726. LA R4,5 INCREMENT @VM01003 00765000
  727. LR R2,R5 SAVE NO. OF BUFFERS @V4M0162 00766000
  728. LA R5,MONMODTE TABLE END @VM01003 00767000
  729. TABSRCH CLC SAVEWRK1(4),0(R3) IS THIS THE MODE HE WANTS? @V50A2B5 00768000
  730. BE FOUNDM YES, BR. @V2B2638 00769000
  731. BXLE R3,R4,TABSRCH NOPE, KEEP LOOKING @V2B2638 00770000
  732. B MSG002 DID'NT FIND IT, TOO BAD. @V2B2638 00771000
  733. * 00772000
  734. ********************************************************************* 00773000
  735. * 00774000
  736. * MONITOR START SPOOL TO USER 00775000
  737. * 00776000
  738. * LOGIC TO START THE SPOOLING ACTIVITY TO USER 00777000
  739. * 00778000
  740. ********************************************************************* 00779000
  741. * 00780000
  742. SPOOLIT EQU * @V50A2B5 00781000
  743. CALL DMKMNISP VERIFY THE USER @V50A2B5 00782000
  744. CL R2,F5 IS THIS A FIVE @V50A2B5 00783000
  745. BE GETBUFFS YES, BUFFS ALREADY PARSED @V50A2B5 00784000
  746. LTR R2,R2 SEE IF ERROR OCCURRED @V50A2B5 00785000
  747. BNZ ACK YES, CONTINUE @V50A2B5 00786000
  748. B BUFFINIT OTHERWISE, CARRY ON @V50A2B5 00787000
  749. SPACE 2 00788000
  750. FOUNDM IC R6,4(R3) PICK UP THE MODESET OP CODE @V2B2638 00789000
  751. LR R5,R2 RESTORE BUFFERS VALUE @V4M0162 00790000
  752. SPACE 00791000
  753. B SCNBUFMD GO SCAN FOR THE BUFFS PARAMETER 00792000
  754. GETBUFFS CALL DMKSCNFD GET VALUE TO BE ASSIGNED TO BUFFS 00793000
  755. BNZ MSG026 NONE SPECIFIED, ERROR 00794000
  756. LR R3,R0 SAVE VALUES IN CASE OF ERROR 00795000
  757. LR R4,R1 00796000
  758. CALL DMKCVTDB CONVERT NUMBER OF BUFFS TO BINARY 00797000
  759. BNZ INVBUFFS IF CONVERSION ERROR, REJECT AS INVALID 00798000
  760. C R1,F10 IS BUFFS VALUE GREATER THAN MAX @VA07357 00799000
  761. BH INVBUFFS YES, INVALID 00800000
  762. C R1,F1 IS THIS SPECIAL ONE-BUFFER CASE? 00801000
  763. BE CHK1BUFF YES, MAKE SURE ONLY PERF IS ENABLED 00802000
  764. C R1,F0 WAS ZERO SPECIFIED? 00803000
  765. BE INVBUFFS YES, INVALID 00804000
  766. LR R5,R1 SAVE # OF BUFFS IN R5 FOR GETPAGE ROUTINE 00805000
  767. B SCNBUFMD GO SCAN FOR MODE PARAMETER 00806000
  768. INVBUFFS LR R0,R3 RESTORE VALUES 00807000
  769. LR R1,R4 FOR ERROR MESSAGE ROUTINE 00808000
  770. B MSG002 GO TO SEND ERROR MESSAGE 00809000
  771. SPACE 00810000
  772. CHK1BUFF L R2,=A(DMKPRGC8) GET ADDRESS OF MC MASK 00811000
  773. TM 2(R2),X'FF'-PERFCL ARE ANY CLASSES EXCEPT PERF 00812000
  774. BNZ INVBUFFS ENABLED? IF SO, INVALID 00813000
  775. TM 3(R2),X'FF' 00814000
  776. BNZ INVBUFFS 00815000
  777. L R2,0(R2) LOAD IN NUMBER @V50A2B5 00816000
  778. LTR R2,R2 SEE IF ANYTHING THERE @V50A2B5 00817000
  779. BNZ NOCHKE YES, THEN DON'T BOTHER @V50A2B5 00818000
  780. CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOLING IS ON @V50A2B5 00819000
  781. BNE NOCHKE NO @V50A2B5 00820000
  782. L R2,=A(DMKSYSEN) GET THE DEFAULT ENABLE CLASSE@V50A2B5 00821000
  783. TM 0(R2),X'FF'-PERFCL ARE ANY CLASSES EXCEPT PERF@V50A2B5 00822000
  784. BNZ INVBUFFS ENABLED? IF SO, INVALAD @V50A2B5 00823000
  785. TM 1(R2),X'FF' OTHER CLASSES ENABLED? @V50A2B5 00824000
  786. BNZ INVBUFFS YES @V50A2B5 00825000
  787. NOCHKE EQU * @V50A2B5 00826000
  788. LR R5,R1 SAVE # OF BUFFS IN R5 FOR GETPAGE ROUTINE 00827000
  789. B SCNBUFMD GO SCAN FOR MODE PARAMETER 00828000
  790. NOMODE EQU * @V50A2B5 00829000
  791. CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOLING @V50A2B5 00830000
  792. BE SKIPPARS YES, SKIP FOLLOWING @V50A2B5 00831000
  793. OI RDEVFLAG,RDEVSYS WE HAVE IT, MARK AS SYSTEM'S @V50A2B5 00832000
  794. L R1,ASYSVM I/O WILL BE CHARGED TO SYSTEM @V2B2638 00833000
  795. ST R1,RDEVUSER STORE IN RDEVBLOK @V2B2638 00834000
  796. SKIPPARS DS 0H @V50A2B5 00835000
  797. LA R0,MONSIZE SIZE OF MONITOR COMM. AREA @V2B2638 00836000
  798. LR R15,R5 NO. OF BUFFERS TO WORK REGISTER @VA07357 00837000
  799. SLL R15,3 2 * BUFFS * 4 = NO. OF MONCOM SLOTS @V50A2B5 00838000
  800. LA R15,7(R15) ENSURE DOUBLEWORD IS OBTAINED @VA07357 00839000
  801. AR R0,R15 MONSIZE + MONBUF1 AREA @VA07357 00840000
  802. SRL R0,3 CONVERT TO NUMBER OF DOUBLEWORDS @VA07357 00841000
  803. CALL DMKFREE GET THE STORAGE SPACE FOR IT @V2B2638 00842000
  804. L R2,=A(DMKPRGMC) SAVE ADDR IN DMKPRG @V2B2638 00843000
  805. ST R1,0(R2) POINTER TO MONITOR COMM. AREA @V2B2638 00844000
  806. USING MONCOM,R7 @V2B2638 00845000
  807. LR R7,R1 COMM. DSECT COVER REG. @V2B2638 00846000
  808. XC MONCOM(256),MONCOM CLEAR MONCOM @V60BEBC 00847000
  809. XC 256(MONSIZE-256,R1),256(R1) BASIC SECTION @V60BEBC 00847100
  810. ST R8,MONARDB SAVE TAPE RDEVBLOK ADDR @V2B2638 00848000
  811. DROP R8 DONE WITH RDEVBLOK @V2B2638 00849000
  812. LA R1,1 NON-ZERO VALUE IN MONIOBF 00850000
  813. ST R1,MONIOBF INDICATES TAPE BUSY 00851000
  814. L R1,=A(DMKRSPMN) BLANK OUT THE MONITOR @V50A2B5 00852000
  815. XC 0(4,R1),0(R1) FILE HOLDER FOR FILE RECOV @V50A2B5 00853000
  816. CLC =CL8'SPOOL',SAVEWRK3 SEE IF SPOOL IS INDICATED @V50A2B5 00854000
  817. BNE ARND NO, BRANCH @V50A2B5 00855000
  818. OI MONFLAG3,SPOOLED INDICATE SPOOL @V50A2B5 00856000
  819. L R1,=A(DMKPRGC8) SET THE MONITOR CLASSES @V50A2B5 00857000
  820. L R1,0(R1) LOAD THEM IN @V50A2B5 00858000
  821. LTR R1,R1 SEE IF ANYTHING THERE @V50A2B5 00859000
  822. BNE ARND NO NEED TO PUT IN DEFAULT @V50A2B5 00860000
  823. L R14,=A(DMKSYSEN) PUT IN THE DEFAULT @V50A2B5 00861000
  824. SR R15,R15 PREPARE REGISTER @V50A2B5 00862000
  825. O R15,0(R14) PUT IN STRING @V50A2B5 00863000
  826. SRL R15,16 SHIFT @V50A2B5 00864000
  827. L R1,=A(DMKPRGC8) GET ADDR OF CLASSES @V50A2B5 00865000
  828. ST R15,0(R1) FINALLY, STORE THERE @V50A2B5 00866000
  829. ARND EQU * @V50A2B5 00867000
  830. MVC MONUSER(8),VMUSER GET USER STARTING MON @V2B2638 00868000
  831. L R1,=A(DMKMONMI) ADDRESS OF DMKMON PROGRAM @V2B2638 00869000
  832. * CHECK HANDLER 00870000
  833. TRANS 2,1,OPT=(SYSTEM,BRING,DEFER,LOCK) PAGE IT IN, @V2B2638 00871000
  834. * LOCK IT AND GET ITS ADDRESS 00872000
  835. L R1,=A(DMKPRGMI) GET ADDR OF DMKMON IN PRG @V2B2638 00873000
  836. ST R2,0(R1) AND SET IT UP FOR PRG TO USE @V2B2638 00874000
  837. L R14,=A(DMKDSPNP) ADDR OF PAGEABLE PAGE COUNT @VA07357 00875000
  838. L R15,0(R14) TOTAL PAGEABLE PAGES @VA07357 00876000
  839. BCTR R15,0 LESS 1 FOR LOCK OF DMKMON @VA07357 00877000
  840. ST R15,0(R14) SAVE NEW TOTAL @VA07357 00878000
  841. LA R0,IOBSIZE+CCWSIZE IOB + CCW'S @V2B2638 00879000
  842. CALL DMKFREE GET THE STORAGE SPACE @V2B2638 00880000
  843. ST R1,MONAIOB SAVE ADDR IN COMM. AREA @V2B2638 00881000
  844. LR R10,R1 @V2B2638 00882000
  845. USING IOBLOK,R10 IOBLOK DSECT @V2B2638 00883000
  846. XC IOBLOK(IOBSIZE*8+CCWSIZE*8),IOBLOK CLEAR BLOCKS @V2B2638 00884000
  847. TM MONFLAG3,SPOOLED IS THIS SPOOLING AROUND @V50A2B5 00885000
  848. BO NOCONT YES @V50A2B5 00886000
  849. L R2,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @V2B2638 00887000
  850. ST R2,IOBUSER CHARGE I/O TO THE SYSTEM @V2B2638 00888000
  851. LA R9,IOBSIZE*8+16(R10) ADDRESS OF INIT CCW'S @V2B2638 00889000
  852. ST R9,IOBCAW START OF CHANNEL PROGRAM @V2B2638 00890000
  853. MVC IOBSIZE*8(CCWSIZE*8,R10),CCWS GET MODEL CCWS @V2B2638 00891000
  854. NOCONT EQU * @V50A2B5 00892000
  855. STC R6,IOBSIZE*8+24(R10) PLUG IN CORRECT MODE @V2B2638 00893000
  856. LA R0,CPEXSIZE GET A CPEXBLOK FOR DMKMON... @V2B2638 00894000
  857. CALL DMKFREE ... TO USE IN CALLS TO IOS. @V2B2638 00895000
  858. XC 0(8*CPEXSIZE,R1),0(R1) CLEAR IT OUT. @V2B2638 00896000
  859. ST R1,IOBMISC SAVE ITS ADDRESS IN THE IOB. @V2B2638 00897000
  860. DROP R7,R10 SWITCH MONCOM TO R9, DROP IOB @V2B2638 00898000
  861. USING CORTABLE,R7 ... AND USE R7 FOR CORTABLE @V2B2638 00899000
  862. USING MONCOM,R9 @V2B2638 00900000
  863. LR R9,R7 SAVE MONCOM ADDRESS @V2B2638 00901000
  864. C R5,F1 IS THIS SPECIAL 1-BUFFER CASE? 00902000
  865. BNE INITREGS NO, NO SPECIAL FLAG NEEDED 00903000
  866. OI MONFLAG1,MON1BUF YES, INDICATE 1-BUFFER CASE 00904000
  867. INITREGS EQU * @VA07357 00905000
  868. LA R3,MONBUF1 POINT TO BEGINNING OF BUFF ADDR ENTRIES 00906000
  869. ST R3,MONCRSLT MAKE FIRST BUFFER THE CURRENT COLLECTOR 00907000
  870. GETPAGE SR R2,R2 CLEAR PARM REG FOR CALL TO PTRFR 00908000
  871. CALL DMKPGTVG OBTAIN SYSTEM VIRTUAL PAGE @V50A2B5 00909000
  872. ST R1,4(R3) STORE ITS VIRTUAL ADDRESS @V50A2B5 00910000
  873. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V50A2B5 00911000
  874. ST R2,0(R3) STORE ITS REAL ADDRESS @V50A2B5 00912000
  875. XC 0(20,R2),0(R2) NULL OUT LINE (NOTE 17 IN) @V50A2B5 00913000
  876. TM MONFLAG3,SPOOLED ARE WE SPOOLING @V50A2B5 00914000
  877. BNO *+12 NO @V50A2B5 00915000
  878. OI 8(R2),MONBUFAV YES, SET AT BYTE 8 IN @V50A2B5 00916000
  879. B *+8 FINISHED @V50A2B5 00917000
  880. OI 2(R2),MONBUFAV ELSE SET BYTE 2 IN @V50A2B5 00918000
  881. LR R7,R2 COMPUTE FOR CORETABLE @V50A2B5 00919000
  882. SRL R7,12-4 ADDRESS * 16 @V50A2B5 00920000
  883. A R7,ACORETBL ADDRESS OF CORETABLE @V50A2B5 00921000
  884. OI CORFLAG,CORCP SET FOR SYSTEM DUMPS @V50A2B5 00922000
  885. LA R3,8(R3) BUMP FOR NEXT SETTING @V50A2B5 00923000
  886. L R14,=A(DMKDSPNP) GET PAGEABLE COUNT @V50A2B5 00924000
  887. L R15,0(R14) BUMP IT DOWN @V50A2B5 00925000
  888. BCTR R15,0 HERE @V50A2B5 00926000
  889. ST R15,0(R14) AND STORE IT @V50A2B5 00927000
  890. BCT R5,GETPAGE GO GET ANOTHER PAGE, IF NECESSARY 00928000
  891. MVC 0(4,R3),=X'FFFFFFFF' INDICATE END OF TABLE 00929000
  892. L R2,MONBUF1 INDICATE THAT 1ST BUFF IS CURR COLLECTOR 00930000
  893. ST R2,MONCURBF SET POINTER TO CURRENT COLLECTOR 00931000
  894. SR R2,R2 @VA08803 00932000
  895. CLC SAVEWRK3(5),=C'SPOOL' IS THIS DISK? @VA08803 00932300
  896. BNE MONTP NO - MUST BE TAPE @VA08803 00932600
  897. ST R2,MONIOBF ZERO I/O BUFFER PTRS @VA08605 00933100
  898. MONTP EQU * @VA08803 00933200
  899. ST R2,MONIOSLT 00934000
  900. L R5,PREFIXA GET ADDRESS OF ABSOLUTE PSA 00935000
  901. L R4,MONBUF1 ADDRESS OF FIRST SLOT @V50A2B5 00936000
  902. TM MONFLAG3,SPOOLED ARE WE SPOOLED @V50A2B5 00937000
  903. BNO *+12 NO @V50A2B5 00938000
  904. OI 8(R4),MONBUFAC SET BYTE 8 IN @V50A2B5 00939000
  905. B *+8 CONTINUE @V50A2B5 00940000
  906. OI 2(R4),MONBUFAC SET BYTE 2 IN @V50A2B5 00941000
  907. ST R4,PAGECUR(R5) SET POINTER IN ABS PSA TO CURR COLLECTOR 00942000
  908. LA R4,MNBHDLEN(R4) POINT PAST BLOCK HDR TO FIRST RECORD 00943000
  909. ST R4,MONNEXT(R5) SAVE POINTER TO NEXT RECORD IN ABS PSA 00944000
  910. O R4,=F'4088' CREATE ADDRESS OF LAST BYTE @V50A2B5 00945000
  911. ST R4,PAGEND(R5) SAVE IT IN ABS PSA 00946000
  912. LR R7,R9 R7 = MONCOM, R9 = MONCOM FOR HDR @V2B2638 00947000
  913. DROP R7,R9 DROP CORTABLE AND MONCOM @V2B2638 00948000
  914. USING MONCOM,R7 RE-ESTABLISH MONCOM @V2B2638 00949000
  915. L R2,=A(DMKPRGC8) GET CURRENT CR8 VALUE @V2B2638 00950000
  916. TM 2(R2),PERFCL+USERCL+DASDCL SAMPLING CLASSES TOO?@V2B2638 00951000
  917. BZ HEADER NO, NO TRB REQUIRED @V2B2638 00952000
  918. BAL R8,GETTRB YES, GET TRB AND ENQUEUE IT @V2B2638 00953000
  919. * R9=MONCOM FOR DMKMON 00954000
  920. HEADER EQU * @V50A2B5 00955000
  921. TM MONFLAG3,SPOOLED ARE WE SPOOLED @V50A2B5 00956000
  922. BNO TOHDR NO, GO DO THE HEADER @V50A2B5 00957000
  923. L R2,SAVER12 SEE IF MANUAL COMMAND @V50A2B5 00958000
  924. CLC 0(8,R2),=C'DMKMIA ' BY NOTING PROGRAM HEADER @V50A2B5 00959000
  925. BE AUTONOMG THIS IS AUTOMATIC @V50A2B5 00960000
  926. LR R2,R0 SAVE REGISTER 0 @V50A2B5 00961000
  927. LR R3,R1 SAVE REGISTER 1 @V50A2B5 00962000
  928. LA R0,L'STARTMSG LENGTH OF START MESSAGE @V50A2B5 00963000
  929. LA R1,STARTMSG ADDRESS OF START MESSAGE @V50A2B5 00964000
  930. CALL DMKMIAMU GIVE THE START MESSAGE @V50A2B5 00965000
  931. LR R0,R2 RESTORE REGISTER 0 @V50A2B5 00966000
  932. LR R1,R3 RESTORE REGISTER ONE @V50A2B5 00967000
  933. AUTONOMG EQU * @V50A2B5 00968000
  934. CALL DMKMIARO INITIALIZE SPOOL FILE @V50A2B5 00969000
  935. LTR R1,R1 WAS DMKMIARO SUCCESSFUL @VA13421 00969100
  936. BNE ACK NO, EXIT @VA13421 00969200
  937. USING CPEXBLOK,R1 CPEXBLOK IN REGISTER 1 @V50A2B5 00970000
  938. LA R0,CPEXSIZE SIZE OF CPEXBLOCK @V50A2B5 00971000
  939. CALL DMKFREE ACQUIRE STORAGE @V50A2B5 00972000
  940. STM R0,R15,CPEXR0 SAVE THE REGISTERS @V50A2B5 00973000
  941. LR R3,R1 SAVE REGISTER 1 @V50A2B5 00974000
  942. L R1,=A(DMKMNIDK) ADDRESS OF HEADER RTNE @V50A2B5 00975000
  943. TRANS R2,R1,OPT=(SYSTEM,BRING,DEFER,LOCK) PAGE IT IN @V50A2B5 00976000
  944. L R14,=A(DMKDSPNP) GET PAGEABLE COUNT @V50A2B5 00977000
  945. L R15,0(R14) LOAD IT IN @V50A2B5 00978000
  946. BCTR R15,0 BUMP IT DOWN @V50A2B5 00979000
  947. ST R15,0(R14) AND STORE IT @V50A2B5 00980000
  948. LR R1,R3 RESTORE REGISTER ONE @V50A2B5 00981000
  949. ST R2,CPEXR12 SET UP REGISTER 12 @V50A2B5 00982000
  950. ST R2,CPEXADD AND INTERRUPT ADDRESS @V50A2B5 00983000
  951. L R0,ASYSVM POINT TO SYSTEM VMBLOK @V50A2B5 00984000
  952. ST R0,CPEXR11 CHARGE TO SYSTEM @V50A2B5 00985000
  953. CALL DMKSTKCP STACK THE BLOCK @V50A2B5 00986000
  954. B ACK AND LEAVE @V50A2B5 00987000
  955. DROP R1 @V50A2B5 00988000
  956. TOHDR CALL DMKMNITH DO TAPE HEADER @V50A2B5 00989000
  957. ACK EQU * @V50A2B5 00990000
  958. L R1,SAVER12 IF THIS WAS CALLED BY MIA @V50A2B5 00991000
  959. CLC 0(8,R1),=C'DMKMIA ' IF MIA CALL, SKIP THIS @V50A2B5 00992000
  960. BE NOMSG SEND NO MESSAGE @V50A2B5 00993000
  961. LA R0,L'STAMSG1 GET MESSAGE LENGTH @V50A2B5 00994000
  962. LA R1,STAMSG1 AND LOCATION @V2B2638 00995000
  963. CALL DMKQCNWT,PARM=NORET @V2B2638 00996000
  964. NOMSG EQU * @V50A2B5 00997000
  965. EXIT COMMAND COMPLETE @V2B2638 00998000
  966. EJECT 00999000
  967. * 01000000
  968. ********************************************************************** 01001000
  969. * 01002000
  970. * MONITOR TIME 01003000
  971. * 01004000
  972. * CHANGES THE TIME OPTIONS FOR AUTOMATIC SPOOLING 01005000
  973. * 01006000
  974. ********************************************************************** 01007000
  975. * 01008000
  976. MONTIME CALL DMKMCDTI CALL EXTENSION FOR TIME PROCESS.@VA08291 01009000
  977. B ACK RETURN @V50A2B5 01167000
  978. EJECT 01168000
  979. MONCLOSE EQU * @V50A2B5 01169000
  980. CALL DMKMIACC THE CLOSE ROUTINE @V50A2B5 01170000
  981. B ACK EXIT @V50A2B5 01171000
  982. *********************************************************************** 01172000
  983. * 01173000
  984. * MONITOR STOP 01174000
  985. * 01175000
  986. ********************************************************************** 01176000
  987. SPACE 1 01177000
  988. MONSTOP CALL DMKMCDST CALL EXTENSION FOR STOP PROCESS.@VA08291 01178000
  989. B ACK RETURN @VA08291 01179000
  990. ***************************************************************@V60BEBC 01179100
  991. * @V60BEBC 01179110
  992. * MONITOR SEEKS PROCESSOR @V60BEBC 01179120
  993. * INCLUDE, EXCLUDE, DELETE, DISPLAY OPTIONS HANDLED BY @V60BEBC 01179130
  994. * COMMAND PROCESSOR EXTENSION @V60BEBC 01179140
  995. * @V60BEBC 01179150
  996. ***************************************************************@V60BEBC 01179160
  997. SPACE 1 @V60BEBC 01179170
  998. MONSEEKS CALL DMKMCDSE CALL EXTENSION FOR SEEKS HANDLIN@V60BEBC 01179180
  999. B ACK ACKNOWLEDGE COMMAND COMPLETE @V60BEBC 01179190
  1000. SPACE 4 01213000
  1001. PARMOVE MVC SAVEWRK3(0),0(R1) MOVE ARG TO TEMP AREA @V2B2638 01214000
  1002. PARMOVE1 MVC SAVEWRK1(0),0(R1) MOVE ARG TO TEMP AREA @V50A2B5 01215000
  1003. EJECT 01216000
  1004. EJECT 01291000
  1005. *. 01292000
  1006. *********************************************************************** 01293000
  1007. * 01294000
  1008. * SUBROUTINES: 01295000
  1009. * 01296000
  1010. * GETTRB WILL OBTAIN, INITIALIZE AND ENQUEUE A TRQBLOK. 01297000
  1011. * IT ALSO INITIALIZES THE VALUE IN DMKPRGTI IF IT WASN'T 01298000
  1012. * SET BY A 'MONITOR INTERVAL' COMMAND. 01299000
  1013. * THE DMKPRGTI VALUE IS USED BY DMKMONTI TO SET UP THE 01300000
  1014. * NEXT TIMER REQUEST WHEN ONE OCCURS. 01301000
  1015. * 01302000
  1016. *********************************************************************** 01303000
  1017. *. 01304000
  1018. SPACE 1 01305000
  1019. GETTRB LA R0,TRQBSIZE @V2B2638 01306000
  1020. CALL DMKFREE GET SPACE FOR A TRQBLOK @V2B2638 01307000
  1021. USING TRQBLOK,R6 @V2B2638 01308000
  1022. LR R6,R1 ADDRESS IT VIA R6 @V2B2638 01309000
  1023. ST R6,MONATRB SAVE IN COMMUNICATIONS AREA @V2B2638 01310000
  1024. L R2,ASYSVM CHARGE HANDLING TO SYSTEM @V2B2638 01311000
  1025. ST R2,TRQBUSER @V2B2638 01312000
  1026. STCK TRQBTOD TIME OF DAY FOR REQUEST @V2B2638 01313000
  1027. BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01314000
  1028. GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01315000
  1029. CLOCKOK EQU * @VA04301 01316000
  1030. L R4,=A(DMKPRGTI) ADDRESS OF THE INTERVAL @V2B2638 01317000
  1031. SLR R5,R5 CLEAR FOR ICM @V2B2638 01318000
  1032. ICM R5,B'0011',0(R4) GET THE INTERVAL IN SEC @V2B2638 01319000
  1033. BNZ INTSPEC INTERVAL ALREADY SPECIFIED @V2B2638 01320000
  1034. LA R5,MONTINT SET TO DEFAULT INTERVAL @V2B2638 01321000
  1035. STH R5,0(R4) AND PUT BACK IN PRGTI @V2B2638 01322000
  1036. INTSPEC SR R4,R4 CLEAR FOR MULT. @V2B2638 01323000
  1037. M R4,=F'1000000' IN UNITS OF MICRO SECONDS @V2B2638 01324000
  1038. SLDL R4,12 ALIGN WITH TOD FORMAT @V2B2638 01325000
  1039. AL R5,TRQBTOD+4 ADD IN TOD LOW ORDER BITS @V2B2638 01326000
  1040. BC 12,*+8 SKIP IF NO OVERFLOW @V2B2638 01327000
  1041. AL R4,F1 ADD 1 SEC TO HIGH ORDER TOD @V2B2638 01328000
  1042. AL R4,TRQBTOD ADD IN HIGH ORDER TOD BITS @V2B2638 01329000
  1043. STM R4,R5,TRQBVAL NEXT INTERRUPT DUE AT THIS TIME @V2B2638 01330000
  1044. L R1,=A(DMKMONTI) GET ADDR OF MON TIMER RTN @V2B2638 01331000
  1045. TRANS 2,1,OPT=(SYSTEM,BRING,DEFER) GO GET IT @V2B2638 01332000
  1046. ST R2,TRQBIRA AND PUT IT IN THE TRQBLOK @V2B2638 01333000
  1047. LR R1,R6 FOR CALL TO SCH @V2B2638 01334000
  1048. CALL DMKSCHST INSERT TRB IN REQUEST BLOCK CHAIN@V2B2638 01335000
  1049. BR R8 GO AND COMPLETE COMMAND @V2B2638 01336000
  1050. DROP R6 @V2B2638 01337000
  1051. EJECT 01338000
  1052. *********************************************************************** 01339000
  1053. * 01340000
  1054. * ALL ERROR MESSAGES ARE SENT FROM HERE. 01341000
  1055. * DMKERM RETURNS DIRECTLY TO DMKCFM. 01342000
  1056. * 01343000
  1057. *********************************************************************** 01344000
  1058. SPACE 01345000
  1059. MSG002 LA R2,2 INVALID OPERAND MESSAGE @V2B2638 01346000
  1060. B BADARG @V2B2638 01347000
  1061. SPACE 1 01348000
  1062. MSG003 LA R2,3 INVALID OPTION @V2B2638 01349000
  1063. B BADARG @V2B2638 01350000
  1064. SPACE 01351000
  1065. MSG006 LA R2,6 INVALID DEVICE TYPE XXX @V2B2638 01352000
  1066. LR R1,R4 FIELD ADDRESS @V2B2638 01353000
  1067. LA R0,3 3 BYTES FO SUBSTITUTABLE @V2B2638 01354000
  1068. B BADARG @V2B2638 01355000
  1069. SPACE 01356000
  1070. MSG021 LA R2,21 RADDR MISSING OR INVALID @V2B2638 01357000
  1071. B ZIPR1 @V2B2638 01358000
  1072. SPACE 01359000
  1073. MSG026 LA R2,26 OPERAND MISSING OR INVALID @V2B2638 01360000
  1074. B ZIPR1 @V2B2638 01361000
  1075. SPACE 01362000
  1076. MSG040 LA R2,40 DEV XXX DOES NOT EXIST @V2B2638 01363000
  1077. LR R1,R4 ADDR OF FIELD @V2B2638 01364000
  1078. LA R0,3 3 BYTES OF SUBSTITUTABLE @V2B2638 01365000
  1079. B BADARG @V2B2638 01366000
  1080. SPACE 01367000
  1081. MSG046 LA R2,46 TAPE XXX OFFLINE @V2B2638 01368000
  1082. B MSG143A GO PROCESS SAME AS MSG143 @V2B2638 01369000
  1083. SPACE 01370000
  1084. USING RDEVBLOK,R8 ADDRESSABILITY FROM BEFORE @V2B2638 01371000
  1085. MSG140 LA R0,3 TAPE CCU ATTACHED TO USERID @V2B2638 01372000
  1086. CALL DMKFREE @V2B2638 01373000
  1087. MVC 0(4,R1),=C'TAPE' @V2B2638 01374000
  1088. MVI 4(R1),X'00' SEPARATOR @V2B2638 01375000
  1089. MVC 5(3,R1),0(R4) 3 CHAR. DEV. ADD. @V2B2638 01376000
  1090. MVI 8(R1),X'00' SEPARATOR @V2B2638 01377000
  1091. L R2,RDEVUSER VMBLOCK ADD. OF USER OF TAPE @V2B2638 01378000
  1092. MVC 9(8,R1),VMUSER-VMBLOK(R2) ADD USERID TO MSG @V2B2638 01379000
  1093. LA R2,140 'TAPE ATTACHED' MSG. @V2B2638 01380000
  1094. O R2,=X'40000000' SET 'FRET STG WHEN DONE' FLAG @V2B2638 01381000
  1095. LR R3,R1 ADDRESS OF STORAGE TO BE FRETTED @V2B2638 01382000
  1096. O R3,=X'03000000' 3 DOUBLE WORDS OF IT @V2B2638 01383000
  1097. LA R0,17 17 BYTES OF MESSAGE DATA @V2B2638 01384000
  1098. B BADARG @V2B2638 01385000
  1099. DROP R8 @V2B2638 01386000
  1100. SPACE 01387000
  1101. MSG143 LA R2,143 TAPE CCU IN USE BY SYSTEM @V2B2638 01388000
  1102. MSG143A LA R0,1 @V2B2638 01389000
  1103. CALL DMKFREE @V2B2638 01390000
  1104. MVC 0(4,R1),=C'TAPE' 1ST SUBST. = DEV TYPE @V2B2638 01391000
  1105. MVI 4(R1),X'00' SEPARATOR @V2B2638 01392000
  1106. MVC 5(3,R1),0(R4) 3 CHARACTER DEVICE ADDRESS @V2B2638 01393000
  1107. O R2,=X'40000000' SET 'STG TO BE FRETTED' FLAG @V2B2638 01394000
  1108. LR R3,R1 ADDRESS OF THE STORAGE @V2B2638 01395000
  1109. O R3,=X'01000000' 1 DOUBLE WORD OF IT @V2B2638 01396000
  1110. LA R0,8 8 BYTES OF MSG SUBSTITUTE DATA @V2B2638 01397000
  1111. B BADARG @V2B2638 01398000
  1112. SPACE 01399000
  1113. MSG210 LA R2,210 PERF/USER ACTIVE, CANT CHANGE INT@V2B2638 01400000
  1114. B ZIPR1 @V2B2638 01401000
  1115. SPACE 01402000
  1116. MSG211 EQU * @V50A2B5 01403000
  1117. DROP R7 @V50A2B5 01404000
  1118. USING MONCOM,R2 @V50A2B5 01405000
  1119. LA R1,211 ASSUME MON IS TO TAPE @V50A2B5 01406000
  1120. TM MONFLAG3,SPOOLED ARE WE SPOOLING @V50A2B5 01407000
  1121. BNO *+8 NO @V50A2B5 01408000
  1122. LA R1,221 TELL THAT SPOOL IS ON @V50A2B5 01409000
  1123. LR R2,R1 SET UP REG 2 @V50A2B5 01410000
  1124. DROP R2 @V50A2B5 01411000
  1125. USING MONCOM,R7 @V50A2B5 01412000
  1126. B ZIPR1 @V2B2638 01413000
  1127. SPACE 01414000
  1128. SPACE 01417000
  1129. MSG213 LA R2,213 CP TRACE TABLE IS ALREADY ACTIVE @V2B2638 01418000
  1130. B ZIPR1 @V2B2638 01419000
  1131. SPACE 01420000
  1132. SPACE 01423000
  1133. MSG215 LA R2,215 CANT ENABLE DASD ON THE FLY @V2B2638 01424000
  1134. B ZIPR1 @V2B2638 01425000
  1135. SPACE 01426000
  1136. MSG216 LA R2,216 SYSPROF REQUIRES SCHED AND DASD @V2B2638 01427000
  1137. B ZIPR1 @V2B2638 01428000
  1138. SPACE 01429000
  1139. MSG217 LA R2,217 MON NOT STARTED, NO CLASS ENABLED@V2B2638 01430000
  1140. B ZIPR1 @V2B2638 01431000
  1141. SPACE 01432000
  1142. SPACE 1 01453000
  1143. MSG219 EQU * MSG NO 219 ISSUED FROM DMKMON @V2B2638 01454000
  1144. SPACE 01455000
  1145. MSG220 EQU * MSG NO 220 ISSUED FROM DMKMON @V2B2638 01456000
  1146. SPACE 01457000
  1147. ZIPR1 SLR R1,R1 NO SUBSTITUTABLES FOR ERM @V2B2638 01458000
  1148. SPACE 01459000
  1149. BADARG ICM R0,B'1110',MODID+3 MODULE ID FOR MSG @V2B2638 01460000
  1150. CALL DMKERMSG SEND ERROR MESSAGE @V2B2638 01461000
  1151. SPACE 01462000
  1152. * 01463000
  1153. * AFTER ALL MESSAGES DMKERMSG RETURNS TO DMKCFM DIRECTLY. 01464000
  1154. * 01465000
  1155. EJECT 01466000
  1156. *********************************************************************** 01467000
  1157. * 01468000
  1158. * CONSTANTS, WORK AREAS, EQUATES 01469000
  1159. * 01470000
  1160. *********************************************************************** 01471000
  1161. SPACE 1 01472000
  1162. MONOPTAB DS 0F MONITOR COMMAND OPTION 1 TABLE @V2B2638 01473000
  1163. DC H'2',C'START ' 3 CHAR MIN @V2B2638 01474000
  1164. B MONSTART ROUTINE ADDRESS @V2B2638 01475000
  1165. DC H'3',C'STOP ' 4 CHAR MIN @V2B2638 01476000
  1166. B MONSTOP ROUTINE ADDRESS @V2B2638 01477000
  1167. DC H'0',C'DISPLAY ' 1 CHAR MIN @V2B2638 01478000
  1168. B MONCLDIS ROUTINE ADDRESS @V2B2638 01479000
  1169. DC H'1',C'ENABLE ' 2 CHAR MIN @V2B2638 01480000
  1170. B MONCLEN ROUTINE ADDRESS @V2B2638 01481000
  1171. DC H'2',C'INTERVAL' 3 CHAR MIN @V2B2638 01482000
  1172. B MONINTVL ROUTINE ADDRESS @V2B2638 01483000
  1173. DC H'3',C'AUTODISK' 4 CHARACTER MIN @V50A2B5 01484000
  1174. B MONAUTO ROUTINE ADDRESS @V50A2B5 01485000
  1175. DC H'2',C'LIMIT ' 3 CHARACTER MIN @V50A2B5 01486000
  1176. B MONMAX ROUTINE ADDRESS @V50A2B5 01487000
  1177. DC H'3',C'TIME ' 4 CHARACTER MIN @V50A2B5 01488000
  1178. B MONTIME ROUTINE ADDRESS @V50A2B5 01489000
  1179. DC H'1',C'CLOSE ' 2 CHARACTER MIN @V50A2B5 01490000
  1180. B MONCLOSE @V50A2B5 01491000
  1181. DC H'1',C'SEEKS ' @V60BEBC 01491100
  1182. B MONSEEKS DO SEEKS PROCESSING @V60BEBC 01491200
  1183. OPTABENO EQU (*-MONOPTAB)/14 NUMBER OF ENTRIES @V2B2638 01492000
  1184. SPACE 5 01493000
  1185. * 01494000
  1186. * THE FOLLOWING ENTRIES ARE THE IMPLEMENTED CLASSES OF 01495000
  1187. * THE MONITOR. THIS TABLE MUST BE KEPT IN ORDER 01496000
  1188. * FOLLOWING EACH KEYWORD IS ITS MINIMUM SPECIFIABLE LENGTH -1. 01497000
  1189. * 01498000
  1190. SPACE 01499000
  1191. MONCLTBL DS 0F TABLE OF MC CLASS KEYWORDS @V2B2638 01500000
  1192. DC CL8'PERFORM ',X'03' @V2B2638 01501000
  1193. AIF (&TRACE(1)).TR1ON @V2B2638 01502000
  1194. DC CL8' ',X'09' RESERVED @V2B2638 01503000
  1195. AGO .TR1OFF @V2B2638 01504000
  1196. .TR1ON ANOP 01505000
  1197. DC CL8'RESPONSE',X'03' @V2B2638 01506000
  1198. .TR1OFF ANOP 01507000
  1199. DC CL8'SCHEDULE',X'02' @V2B2638 01508000
  1200. DC CL8' ',X'09' RESERVED @V2B2638 01509000
  1201. DC CL8'USER ',X'03' @V2B2638 01510000
  1202. DC CL8'INSTSIM ',X'03' @V2B2638 01511000
  1203. DC CL8'DASTAP ',X'02' @V2B2638 01512000
  1204. DC CL8'SEEKS ',X'03' @V2B2638 01513000
  1205. DC CL8'SYSPROF ',X'02' @V2B2638 01514000
  1206. MONTBENO EQU (*-MONCLTBL)/9 NUMBER OF ENTRIES IN THE TABLE @V2B2638 01515000
  1207. SPACE 3 01516000
  1208. MONMODTB DC CL4'800',X'CB' MODE = 800, MODE SET = CB @V2B2638 01517000
  1209. DC CL4'1600',X'C3' MODE = 1600, MODE SET = C3 @V2B2638 01518000
  1210. MONMODTE DC CL4'6250',X'D3' MODE = 6250, MODE SET = D3 @V2B2638 01519000
  1211. SPACE 3 01520000
  1212. CLASNOS DC C'00010203040506070809101112131415' LIST OF @V2B2638 01521000
  1213. * CLASS NUMBERS FOR MONITOR DISPLAY 01522000
  1214. TS145A DC X'0145' @VA09802 01522050
  1215. TS158A DC X'0158' @VA09802 01522100
  1216. EJECT 01523000
  1217. CCWS CCW X'01',*,SILI,1 WRITE DATA @V2B2638 01524000
  1218. CCW X'1F',*,CC+SILI,1 WRITE TAPE MARK @V2B2638 01525000
  1219. CCW X'07',*,CC+SILI,1 REWIND CHANGED TO WTM @V2B2638 01526000
  1220. CCW X'C3',*,SILI,1 SET MODE CHANGED TO RUN @V2B2638 01527000
  1221. CCWSIZE EQU (*-CCWS)/8 DBL WD SIZE OF CCW'S @V2B2638 01528000
  1222. SPACE 01529000
  1223. DISPMSG1 DC C'CLS KEYWORD STATUS' @V2B2638 01530000
  1224. ENAB DC CL8'ENABLED ' @V2B2638 01531000
  1225. DISAB DC CL8'DISABLED' @V2B2638 01532000
  1226. STAMSG1 DC C'COMMAND COMPLETE' @V2B2638 01533000
  1227. TIMVAL DS 0D @V50A2B5 01534000
  1228. DC CL8' ' @V50A2B5 01535000
  1229. TEMPSTRT DC CL8' ' @V50A2B5 01536000
  1230. TEMPEND DC CL8' ' @V50A2B5 01537000
  1231. SET24 DC XL8'000141DD76000000' @V50A2B5 01538000
  1232. DS 0F @V50A2B5 01539000
  1233. TIMEFROM DS 4H @V50A2B5 01540000
  1234. TIMETO DS 4H @V50A2B5 01541000
  1235. STARTMSG DC C'MONITOR HAS BEEN MANUALLY STARTED' @V50A2B5 01542000
  1236. STOPMSG DC C'MONITOR HAS BEEN MANUALLY STOPPED' @V50A2B5 01543000
  1237. LENMSG EQU 21 LENGTH OF DISPLAY MESSAGE @V2B2638 01544000
  1238. MONTINT EQU 60 DEFAULT INTERVAL = 60 SEC @V2B2638 01545000
  1239. EJECT 01546000
  1240. LTORG @V2B2638 01547000
  1241. EJECT 01548000
  1242. COPY EQU @V2B2638 01549000
  1243. PSA @V2B2638 01550000
  1244. COPY MONBLOKS @V2B2638 01551000
  1245. COPY VMBLOK @V2B2638 01552000
  1246. COPY SAVE @V2B2638 01553000
  1247. COPY IOBLOKS @V2B2638 01554000
  1248. COPY CORE @V2B2638 01555000
  1249. COPY DEVTYPES @V2B2638 01556000
  1250. COPY RBLOKS @V2B2638 01557000
  1251. COPY TIMER @V2B2638 01558000
  1252. COPY UDIRECT @V50A2B5 01559000
  1253. END 01560000