Table of Contents

DMKMCD Source

References

Source Listing

DMKMCD.ASSEMBLE.txt
  1. MCD TITLE 'DMKMCD (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKMCD 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO HANDLE MONITOR CONTROL COMMANDS, AN EXTENSION TO 00010000
  11. * DMKMCC, THE CONTROLLER OF MONITOR COMMAND PROCESSING 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * REENTRANT, PAGEABLE, CALLED VIA SVC 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * 00018000
  19. * DMKMCDLI - TO PROCESS THE MONITOR LIMIT COMMAND 00019000
  20. * DMKMCDIN - TO PROCESS THE MONITOR INTERVAL COMMAND 00020000
  21. * DMKMCDST - TO PROCESS THE MONITOR STOP COMMAND 00021000
  22. * DMKMCDTI - TO PROCESS THE MONITOR TIME COMMAND 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00026000
  27. * GPR11 - ADDRESS OF VMBLOK 00027000
  28. * GPR12 - ADDRESS OF ENTRY POINT 00028000
  29. * GPR13 - ADDRESS OF STANDARD SAVEAREA 00029000
  30. * 00030000
  31. * EXIT CONDITIONS - 00031000
  32. * 00032000
  33. * NONE 00033000
  34. * 00034000
  35. * CALLS TO OTHER ROUTINES - 00035000
  36. * 00036000
  37. * DMKSCNFD - TO LOCATE NEXT FIELD IN INPUT LINE 00037000
  38. * DMKQCNWT - TO SEND A MESSAGE TO THE TERMINAL 00038000
  39. * DMKERMSG - TO SEND CANNED ERROR MESSAGE TO TERMINAL 00039000
  40. * DMKPTRFR - TO OBTAIN A PAGE OF STORAGE FOR MONITOR DATA 00040000
  41. * DMKMONSH - MONITOR STOP ROUTINE 00041000
  42. * DMKCVTHB - TO CONVERT DEVICE ADDRESS TO BINARY 00042000
  43. * DMKCVTDB - TO CONVERT INTERVAL TO BINARY 00043000
  44. * DMKSCNRU - TO OBTAIN RDEVBLK ADDRESS FROM DEV. ADDRESS 00044000
  45. * DMKFREE - TO OBTAIN STORAGE FOR MESSAGES 00045000
  46. * DMKFRET - TO RELEASE STORAGE USED FOR MESSAGES 00046000
  47. * DMKSCHST - TO ENQUEUE A TIMER RQST. BLOCK FOR MONITORING 00047000
  48. * DMKSCHRT - TO REMOVE A TIMER RQST. BLOCK FROM QUEUE 00048000
  49. * DMKMONTH - TAPE HEADER ROUTINE 00049000
  50. * 00050000
  51. * EXTERNAL REFERENCES - 00051000
  52. * 00052000
  53. * DMKPRGC8 - STORAGE FOR CONTROL REGISTER 8 00053000
  54. * DMKENTUT - ADDRESS OF I/O UTILIZATION INTERVAL 00054000
  55. * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00055000
  56. * DMKPRGTI - INTERVAL BETWEEN TIMER INTERRUPTS 00056000
  57. * DMKPRGMI - ADDRESS OF THE MONITOR PROGRAM INTERRUPT HANDLER 00057000
  58. * 00058000
  59. EJECT 00059000
  60. * REGISTER USAGE - 00060000
  61. * 00061000
  62. * GPR0 - COMMAND ARGUMENT LENGTH, AND OUTPUT MSG LENGTH 00062000
  63. * GPR1 - COMMAND ARGUMENT ADDRESS, AND OUTPUT MSG ADDRESS 00063000
  64. * GPR2 - GPR10 - WORK REGISTERS 00064000
  65. * GPR11 - VMBLOK ADDRESS 00065000
  66. * GPR12 - BASE REG 00066000
  67. * GPR13 - SAVE AREA ADDRESS 00067000
  68. * GPR14 - LINKAGE REG 00068000
  69. * GPR15 - LINKAGE REG 00069000
  70. * 00070000
  71. * COMMAND FORMAT - 00071000
  72. * 00072000
  73. * +---------+---------+-------------------------------------+ 00073000
  74. * | MONITOR | | | 00074000
  75. * | MON | | | 00075000
  76. * | | TIME | FROM H1.M1 TO H2.M2 | 00076000
  77. * | | | FOR HH.MM | 00077000
  78. * | | | ALL | 00078000
  79. * | | | NONE | 00079000
  80. * | | | | 00080000
  81. * | | INTERVAL| INT SEC UTINT | 00081000
  82. * | | | MIN | 00082000
  83. * | | | | 00083000
  84. * | | LIMIT | NO. | STOP | 00084000
  85. * | | | * | NOSTOP | 00085000
  86. * | | | | SAMPLE | 00086000
  87. * | | | 00087000
  88. * | | SEEKS | INCLUDE | 00088000
  89. * | | | EXCLUDE | 00089000
  90. * | | | DELETE | 00090000
  91. * | | | DISPLAY | 00091000
  92. * | | | 00092000
  93. * | | | | 00093000
  94. * | | | | 00094000
  95. * | | STOP | CPTRACE | 00095000
  96. * | | | SPOOL | 00096000
  97. * | | | TAPE | 00097000
  98. * | | | | 00098000
  99. * +---------+---------+-------------------------------------+ 00099000
  100. * 00100000
  101. * OPERATION - 00101000
  102. * 00102000
  103. * MONITOR COMMAND PROCESSING 00103000
  104. * 00104000
  105. * DMKMCC WILL CALL DMKSCNFD TO LOCATE AN ARGUMENT. 00105000
  106. * THIS MODULE WILL BE CALLED FOR THE ARGUMENTS LISTED 00106000
  107. * BELOW. 00107000
  108. * 00108000
  109. * IF THE ARGUMENT IS TIME THEN GO TO DMKMCDTI 00109000
  110. * IF THE ARGUMENT IS INTERVAL THEN GO TO DMKMCDIN. 00110000
  111. * IF THE ARGUMENT IS LIMIT THEN GO TO DMKMCDLI. 00111000
  112. * IF THE ARGUMENT IS STOP THEN GO TO DMKMCDST. 00112000
  113. * IF THE ARGUMENT IS SEEKS THEN GO TO DMKMCDSE. 00113000
  114. * IF THE ARGUMENT IS NONE OF THESE THEN EXIT WITH AN 00114000
  115. * APPROPRIATE ERROR MESSAGE. 00115000
  116. * 00116000
  117. * TIME: 00117000
  118. * 00118000
  119. * BUILDS TRQS TO TO START AND STOP THE MONITOR 00119000
  120. * AUTOMATICALLY. 00120000
  121. * 00121000
  122. * INTERVAL: 00122000
  123. * 00123000
  124. * 00124000
  125. * CALL DMKSCNFD TO GET THE INTERVAL VALUE. IF NONE 00125000
  126. * WAS GIVEN THEN EXIT WITH AN APPROPRIATE ERROR 00126000
  127. * MESSAGE. IF THE INTERVAL WAS GIVEN THEN CALL 00127000
  128. * DMKCVTDB TO CONVERT IT TO BINARY. 00128000
  129. * 00129000
  130. * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00130000
  131. * IS 'SEC' THEN DON'T MULTIPLY. IF IT IS 'MIN' THEN 00131000
  132. * MULTIPLY THE INTERVAL BY 60 TO CONVERT IT TO 00132000
  133. * SECONDS. 00133000
  134. * 00134000
  135. * IF THE SPECIFIED VALUE IS LESS THAN 30 SECONDS OR 00135000
  136. * MORE THAN 9 HOURS, THEN EXIT WITH AN APPROPRIATE 00136000
  137. * ERROR MESSAGE. CALL DMKSCNFD TO CHECK FOR A UTILIZATION 00137000
  138. * INTERVAL. IF NOT SPECIFIED, USE THE DEFAULT IN DMKENTUT. 00138000
  139. * THE UTILIZATION INTERVAL IS ONLY INTERPRETED AS SECONDS. 00139000
  140. * SAVE THE MONITOR SAMPLE INTERVAL IN DMKPRGTI. SAVE THE 00140000
  141. * I/O UTILIZATION INTERVAL IN DMKENTUT. 00141000
  142. * 00142000
  143. * SEEKS: 00143000
  144. * 00144000
  145. * MONITOR SEEKS PROCESSING - OPTIONS ARE: 00145000
  146. * INCLUDE, EXCLUDE, DISPLAY, DELETE 00146000
  147. * 00147000
  148. * STOP: 00148000
  149. * 00149000
  150. * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00150000
  151. * IS 'CPTRACE' THEN GO TO STOP CPTRACE. IF IT IS 00151000
  152. * 'TAPE' THEN GO TO STOP TAPE. IF IT IS NEITHER OF 00152000
  153. * THESE THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00153000
  154. * 00154000
  155. * STOP CPTRACE: 00155000
  156. * 00156000
  157. * IF CP INTERNAL TRACING IS NOT ACTIVE THEN EXIT WITH 00157000
  158. * AN APPROPRIATE ERROR MESSAGE. OTHERWISE, SET THE 00158000
  159. * TRACE FLAGS TO ZEROES AND EXIT AFTER SENDING THE 00159000
  160. * 'COMMAND COMPLETE' MESSAGE. 00160000
  161. * 00161000
  162. * STOP TAPE/SPOOL 00162000
  163. * 00163000
  164. * IF MONITORING IS CURRENTLY INACTIVE THEN EXIT WITH 00164000
  165. * AN APPROPRIATE ERROR MESSAGE. 00165000
  166. * 00166000
  167. * IF THE MONITOR IS CURRENTLY IN ERROR RECOVERY OR 00167000
  168. * PROCESSING A 'STOP SPOOL / TAPE' COMMAND THEN EXIT 00168000
  169. * WITH AN APPROPRIATE ERROR MESSAGE. 00169000
  170. * 00170000
  171. * CLEAR CONTROL REGISTER 8 TO INHIBIT FURTHER MONITOR 00171000
  172. * CALL INTERRUPTS. INDICATE THAT A 'MONITOR STOP 00172000
  173. * TAPE' COMMAND IS BEING PROCESSED. 00173000
  174. * 00174000
  175. * OBTAIN STORAGE FOR AND INITIALIZE A CPEXBLOK. 00175000
  176. * 'STACK' THE CPEXBLOK ON THE COMMUNICATIONS AREA. 00176000
  177. * IF THE MONITOR TAPE IS CURRENTLY BUSY THEN SKIP THE 00177000
  178. * NEXT STEP. 00178000
  179. * 00179000
  180. * CALL DMKMNISH TO COMPLETE MONITOR SHUTDOWN 00180000
  181. * PROCESSING. WHEN CONTROL RETURNS FROM DMKMNI, EXIT 00181000
  182. * AFTER ISSUING THE 'COMMAND COMPLETE' MESSAGE. 00182000
  183. * 00183000
  184. * SET THE RETURN ADDRESS IN THE CPEXBLOK TO THE 00184000
  185. * 'COMMAND COMPLETE' MESSAGE ROUTINE AND GO TO THE 00185000
  186. * DISPATCHER. SINCE THE TAPE IS BUSY AND THE CFSTOP 00186000
  187. * FLAG HAS BEEN SET, THE MONITOR WILL BE SHUT DOWN 00187000
  188. * WHEN THE NEXT TAPE I/O INTERRUPT OCCURS. FOLLOWING 00188000
  189. * THAT, THE CPEXBLOK WILL BE 'UNSTACKED' AND RETURN 00189000
  190. * WILL BE MADE TO THIS ROUTINE TO TYPE OUT THE 00190000
  191. * 'COMMAND COMPLETE' MESSAGE. 00191000
  192. * 00192000
  193. *. 00193000
  194. EJECT 00194000
  195. DMKMCD CSECT @VA08291 00195000
  196. MODID DC CL8'DMKMCD' @VA08291 00196000
  197. SPACE 1 00197000
  198. USING SAVEAREA,R13 @V2B2638 00198000
  199. USING MONCOM,R7 @VA08291 00199000
  200. USING VMBLOK,R11 @VA08291 00200000
  201. USING PSA,R0 @V2B2638 00201000
  202. SPACE 1 00202000
  203. EXTRN DMKSCNFD @V2B2638 00203000
  204. EXTRN DMKPRGC8,DMKPRGMC,DMKPRGTI @V2B2638 00204000
  205. EXTRN DMKERMSG @V2B2638 00205000
  206. EXTRN DMKENTUT UTILIZATION INTERVAL @V60BEBC 00206000
  207. EXTRN DMKSCNRU FIND DEVBLOK ROUTINE @V60BEBC 00207000
  208. EXTRN DMKENTSK PTR TO SEEKS LIST @V60BEBC 00208000
  209. EXTRN DMKCVTHB HEX TO BINARY CONVERT @V60BEBC 00209000
  210. EXTRN DMKCVTBH BINARY TO HEX ROUTINE @V60BEBC 00210000
  211. EXTRN DMKCFCSC SCAN FOR CHARACTER ROUTINE @V60BEBC 00211000
  212. EXTRN DMKCVTDB @V2B2638 00212000
  213. EXTRN DMKSYSAT,DMKSYSTS,DMKSYSTE,DMKSYSMX @V50A2B5 00213000
  214. EXTRN DMKMNIST,DMKMIAMU @VMD0138 00214000
  215. EXTRN DMKMNISH 00215000
  216. EXTRN DMKSCHRT,DMKFRET @VMI0083 00216000
  217. EXTRN DMKSTKOP @VA08291 00217000
  218. EJECT 00218000
  219. COPY OPTIONS @V2B2638 00219000
  220. COPY LOCAL @V2B2638 00220000
  221. EJECT 00221000
  222. *********************************************************************** 00222000
  223. * 00223000
  224. * MONITOR INTERVAL 00224000
  225. * 00225000
  226. * CALCULATE THE INTERVAL IN SECONDS AND STORE IT IN DMKPRGTI. 00226000
  227. * 00227000
  228. * THERE IS A 9 HOUR LIMIT ON THE INTERVAL. THE MONITOR SHOULD 00228000
  229. * NOT BE RUN FOR MORE THAN 9 1/2 HOURS DUE TO THE 5 BYTE TIME 00229000
  230. * STAMP USED IN THE DATA COLLECTION ROUTINES. 00230000
  231. * 00231000
  232. *********************************************************************** 00232000
  233. SPACE 1 00233000
  234. DMKMCDIN RELOC @VA08291 00234000
  235. CALL DMKSCNFD OBTAIN THE INTERVAL VALUE @VM01082 00235000
  236. BNZ MSG026 MUST SPECIFY SOMETHING. @V2B2638 00236000
  237. LR R3,R0 SAVE LENGTH AND ADDR IN CASE... @V2B2638 00237000
  238. LR R4,R1 ... OF AN ERROR @V2B2638 00238000
  239. CALL DMKCVTDB CONVERT INTERVAL TO BINARY @V2B2638 00239000
  240. BZ GETUNIT DONE, NOW GET NEXT ARG @V2B2638 00240000
  241. LR R0,R3 RESTORE LENGTH AND ADDR ... @V2B2638 00241000
  242. LR R1,R4 ... FOR THE ERROR MESSAGE @V2B2638 00242000
  243. B MSG002 GARBAGE IN, GARBAGE OUT @V2B2638 00243000
  244. SPACE 1 00244000
  245. GETUNIT LR R5,R1 SAVE INTERVAL IN R5 @V2B2638 00245000
  246. CALL DMKSCNFD OBTAIN NEXT FIELD @V2B2638 00246000
  247. BNZ DEFINT NOTHING SPECIFIED, DEFAULT TO SEC@V2B2638 00247000
  248. C R0,F3 SEC OR MIN, 3 CHAR REQUIREMENT @V2B2638 00248000
  249. BNE MSG003 GARBAGE IN, GARBAGE OUT. @V2B2638 00249000
  250. CLC =C'SEC',0(R1) IS IT SECONDS? @V2B2638 00250000
  251. BE DEFINT YES, GO HANDLE @V2B2638 00251000
  252. CLC =C'MIN',0(R1) BETTER BE MINUTES THEN @V2B2638 00252000
  253. BNE MSG003 TOO BAD. @V2B2638 00253000
  254. MH R5,F60+2 CONVERT IT TO SECONDS @V2B2638 00254000
  255. DEFINT LR R0,R3 RESTORE LENGTH AND ADDRESS ... @V2B2638 00255000
  256. LR R1,R4 ... IN CASE OF AN ERROR @V2B2638 00256000
  257. CL R5,=A(5) CAN'T BE LESS THAN 5 SECONDS @V60BEBC 00257000
  258. BL MSG002 IT IS, TOO BAD. @V2B2638 00258000
  259. CL R5,=A(9*60*60) CHECK AGAINST 9 HOUR VALUE @V2B2638 00259000
  260. BH MSG002 TOO HIGH, REJECT. @V2B2638 00260000
  261. CALL DMKSCNFD OBTAIN UTILIZATION INTERVAL @V60BEBC 00261000
  262. BNZ NOUTIL ASSUME DEFAULT IF NOT SPECIFIED@V60BEBC 00262000
  263. C R0,F2 MUST NOT BE MORE THAN 2 CHARS @V60BEBC 00263000
  264. BH MSG002 IT IS, SO ISSUE ERROR MSG @V60BEBC 00264000
  265. LR R7,R0 SAVE LENGTH AND ADDR @V60BEBC 00265000
  266. LR R8,R1 IN CASE OF ERROR @V60BEBC 00266000
  267. CALL DMKCVTDB CONVERT TO BINARY @V60BEBC 00267000
  268. BZ CHKRANG OK, CHECK AGAINST SAMPLE INTERV@V60BEBC 00268000
  269. TOOBIG LR R0,R7 RESTORE LENGTH AND ADDRESS @VMI0031 00269000
  270. LR R1,R8 FOR ERROR MSG @V60BEBC 00270000
  271. B MSG002 GARBAGE IN, GARBAGE OUT @V60BEBC 00271000
  272. NOUTIL LA R1,DEFINTVL SEC. DEFAULT FOR NON-SPEC'D UT @V60BEBC 00272000
  273. CHKRANG CR R1,R5 COMPARE SAMPLE INT WITH UT INTER@V60BEBC 00273000
  274. BH TOOBIG RESTORE REGS FOR ERROR MSG @VMI0031 00274000
  275. L R4,=A(DMKENTUT) GET UT INTERVAL ADDRESS @V60BEBC 00275000
  276. STH R1,0(R4) SAVE IT THERE @V60BEBC 00276000
  277. L R4,=A(DMKPRGTI) GET ADDR OF INT. IN DMKPRG @V2B2638 00277000
  278. STH R5,0(R4) STORE INTERVAL IN DMKPRG @V2B2638 00278000
  279. LTR R1,R1 NEW INTERVAL IS 0? @VMI0083 00279000
  280. BNZ ACK NO, SO JUST RETURN @VMI0083 00280000
  281. L R7,=A(DMKPRGMC) IF MONITOR IS ACTIVE @VMI0083 00281000
  282. ICM R7,B'1111',0(R7) THEN FREE CURRENT UTILIZATION @VMI0083 00282000
  283. BZ ACK NO, JUST RETURN @VMI0083 00283000
  284. L R1,MONUTRB IS UTILIZATION ACTIVE?? @VMI0083 00284000
  285. LTR R1,R1 IF SO, RESET AND FREE TRQ @VMI0083 00285000
  286. BZ ACK ELSE JUST RETURN @VMI0083 00286000
  287. CALL DMKSCHRT REMOVE FROM QUEUE @VMI0083 00287000
  288. LA R0,TRQBSIZE SIZE TO FREE @VMI0083 00288000
  289. CALL DMKFRET FREE TRQ @VMI0083 00289000
  290. L R1,MONCHPTR POINT TO CHANNEL SAMPLES @VMI0083 00290000
  291. LA R0,5 CHANNEL SAMPLE DOUBLE WORDS @VMI0083 00291000
  292. CALL DMKFRET FREE CHANNEL SAMPLES @VMI0083 00292000
  293. SR R1,R1 RESET VALUES IN MONCOM @VMI0083 00293000
  294. ST R1,MONUTRB TRQ PT TO 0 @VMI0083 00294000
  295. ST R1,MONCHPTR SET CHANNEL SAMPLES TO 0 @VMI0083 00295000
  296. B ACK ACKNOWLEDGE & RETURN @VA08291 00296000
  297. EJECT 00297000
  298. * 00298000
  299. *********************************************************************** 00299000
  300. * 00300000
  301. * MONITOR LIMIT 00301000
  302. * 00302000
  303. * SETS THE LIMIT ON THE MONITOR SPOOL FILE SIZE 00303000
  304. * 00304000
  305. *********************************************************************** 00305000
  306. * 00306000
  307. DMKMCDLI RELOC 00307000
  308. CALL DMKSCNFD FIND THE NEXT FIELD IN COMMAND @V50A2B5 00308000
  309. BNZ MSG026 CARRIAGE RETURN OR ENDBUFF @V50A2B5 00309000
  310. C R0,F5 IS IT ILLEGAL @V50A2B5 00310000
  311. BH MSG002 YES @V50A2B5 00311000
  312. C R0,F1 SEE IF * SPECIFIED @V50A2B5 00312000
  313. BNE TRYNUM PROBABLY @V50A2B5 00313000
  314. CLI 0(R1),C'*' CHECK IF IN FACT IS * @V50A2B5 00314000
  315. BNE TRYNUM PERHAPS THIS IS A NUMBER @V50A2B5 00315000
  316. L R3,=A(DMKSYSMX) GET THE CURRENT MAX @V50A2B5 00316000
  317. L R5,0(R3) FROM DMKSYS @V50A2B5 00317000
  318. B GETMAX1 USE THIS LATER @V50A2B5 00318000
  319. TRYNUM LR R3,R0 SAVE IN CASE OF ERROR @V50A2B5 00319000
  320. LR R4,R1 REGS 0 AND 1 @V50A2B5 00320000
  321. CALL DMKCVTDB CONVERT TO BINARY @V50A2B5 00321000
  322. BZ GETMAX SUCCESS, NO STORE @V50A2B5 00322000
  323. LR R0,R3 RESTORE FOR ERROR @V50A2B5 00323000
  324. LR R1,R4 REGS 0 AND 1 @V50A2B5 00324000
  325. B MSG002 GARBAGE OUT @V50A2B5 00325000
  326. SPACE 1 @V50A2B5 00326000
  327. GETMAX LR R0,R3 RESTORE FOR ERROR MESSAGE @V50A2B5 00327000
  328. LR R5,R1 STORE IN REGISTER 5 @V50A2B5 00328000
  329. LR R1,R4 RESTORE REGISTER 1 @V50A2B5 00329000
  330. GETMAX1 C R5,=F'10' SHOULD BE OVER 10 AT LEAST @V50A2B5 00330000
  331. BL MSG224 NO, ERROR @V50A2B5 00331000
  332. C R5,=F'50000' SHOULD BE LESS THAN 50000 @V50A2B5 00332000
  333. BH MSG224 NO, ERROR @V50A2B5 00333000
  334. L R6,=A(DMKSYSAT) GET THE FLAG @V50A2B5 00334000
  335. CALL DMKSCNFD GET THE NEXT ARGUMENT @V50A2B5 00335000
  336. BNZ SETNST DEFAULT IS NOSTOP @V50A2B5 00336000
  337. CLC 0(4,R1),=C'STOP' SEE IF STOP SPECIFIED @V60BEBC 00337000
  338. BNE TRY6 NO, CHECK FOR NOSTOP @V60BEBC 00338000
  339. NI 0(R6),X'FF'-AUTOSPL-MONSLMT TURN OFF FLAG @V60BEBC 00339000
  340. B ARND1 SKIP TO LEAVE @V60BEBC 00340000
  341. TRY6 CLC 0(6,R1),=C'NOSTOP' SEE IF NOSTOP SPEC'D @V60BEBC 00341000
  342. BNE TRYSAMP NO, CHECK FOR SAMPLE @V60BEBC 00342000
  343. SETNST OI 0(R6),AUTOSPL SET AUTOSPOOL RESTART FLAG @V60BEBC 00343000
  344. NI 0(R6),X'FF'-MONSLMT TURN REAL TIME FLAG OFF @V60BEBC 00344000
  345. B ARND1 SKIP TO LEAVE @V60BEBC 00345000
  346. TRYSAMP CLC 0(6,R1),=C'SAMPLE' SEE IF SAMPLE SPEC'D @V60BEBC 00346000
  347. BNE MSG002 UNDEFINED PARAMETER @V60BEBC 00347000
  348. OI 0(R6),AUTOSPL+MONSLMT SET LIMIT FLAG @V60BEBC 00348000
  349. ARND1 L R8,=A(DMKSYSMX) GET CURRENT MAX @V60BEBC 00349000
  350. ST R5,0(R8) STORE THE NEW @V60BEBC 00350000
  351. B ACK ACKNOWLEDGE COMPLETION @VA08291 00351000
  352. EJECT 00352000
  353. * 00353000
  354. ********************************************************************** 00354000
  355. * 00355000
  356. * MONITOR TIME 00356000
  357. * 00357000
  358. * CHANGES THE TIME OPTIONS FOR AUTOMATIC SPOOLING 00358000
  359. * 00359000
  360. ********************************************************************** 00360000
  361. * 00361000
  362. DMKMCDTI RELOC @VA08291 00362000
  363. CALL DMKSCNFD FIND THE NEXT FIELD IN COMMAND @V50A2B5 00363000
  364. BNZ MSG026 MUST SPECIFY SOMETHING @V50A2B5 00364000
  365. CL R0,F3 SEE IF ALL IS SPECIFIED @V50A2B5 00365000
  366. BNE CHKNONE NO, SEE IF NONE IS SPECIFIED @V50A2B5 00366000
  367. CLC 0(3,R1),=C'ALL' IS ALL SPECIFIED @V50A2B5 00367000
  368. BZ SETALL YES, GO TO APPROPRIATE SECTION @V50A2B5 00368000
  369. CLC 0(3,R1),=C'FOR' IS FOR SPECIFIED @V50A2B5 00369000
  370. BE SETFOR GO TO THE FOR LOGIC @V50A2B5 00370000
  371. B MSG002 BAD SYNTAX @V50A2B5 00371000
  372. SETALL L R5,=A(DMKSYSTS) GIVE START TIME OF 0 @V50A2B5 00372000
  373. MVC 0(8,R5),ZEROES SET THE ZEROES @V50A2B5 00373000
  374. L R5,=A(DMKSYSTE) SET END TO END OF DAY @V50A2B5 00374000
  375. MVC 0(8,R5),SET24 24 HOUR DAY @V50A2B5 00375000
  376. L R5,=A(DMKSYSAT) GET THE FLAGS @V50A2B5 00376000
  377. TM 0(R5),AUTGO IS AUTO SET @V50A2B5 00377000
  378. BNO ACK JUST LEAVE AND DO NOTHING @V50A2B5 00378000
  379. CALL DMKMNIST TURN ON THE TRQS @VMD0138 00379000
  380. B ACK AND RETURN @V50A2B5 00380000
  381. SPACE 1 @V50A2B5 00381000
  382. CHKNONE CL R0,F4 IS THIS 4 IN LENGTH @V50A2B5 00382000
  383. BNZ MSG002 U. F. O. @V50A2B5 00383000
  384. CLC 0(4,R1),=C'NONE' IS IT IN FACT NONE @V50A2B5 00384000
  385. BZ SETNONE YES, DO NONE CODE @V50A2B5 00385000
  386. CLC 0(4,R1),=C'FROM' IS IT FROM @V50A2B5 00386000
  387. BE SETFROM YES, DO FROM LOGIC @V50A2B5 00387000
  388. B MSG002 NOT UNDERSTOOD @V50A2B5 00388000
  389. SETNONE EQU * @V50A2B5 00389000
  390. L R5,=A(DMKSYSTS) GET TIME START @V50A2B5 00390000
  391. MVC 0(8,R5),SET24 MOVE IN HOUR 24 @V50A2B5 00391000
  392. L R5,=A(DMKSYSTE) GET TIME END @V50A2B5 00392000
  393. MVC 0(8,R5),SET24 SET SAME TIME @V50A2B5 00393000
  394. CALL DMKMNIST TURN ON THE TRQS @VMD0138 00394000
  395. L R5,=A(DMKSYSAT) SEE IF AUTO IS ON @V50A2B5 00395000
  396. TM 0(R5),AUTGO DO THE TEST @V50A2B5 00396000
  397. BNO ACK DO NOT TAKE ANY ACTION @V50A2B5 00397000
  398. L R5,=A(DMKPRGMC) SEE IF MONITOR IS ON @V50A2B5 00398000
  399. ICM R5,B'1111',0(R5) ADDR OF COMMUNICATIONS AREA @V50A2B5 00399000
  400. BZ ACK MONITOR IS OFF,NO ACTION TAKEN @V50A2B5 00400000
  401. B TAPESTP1 STOP MONITOR @V50A2B5 00401000
  402. SPACE 1 00402000
  403. PARSE LR R14,R0 SEE IF THERE @V50A2B5 00403000
  404. LR R15,R1 IS A COLON @V50A2B5 00404000
  405. CHKCOL CLI 0(R15),C':' COLON CHECK @V50A2B5 00405000
  406. BZ DOCONV FOUND IT @V50A2B5 00406000
  407. LA R15,1(R15) NO, LOOK AT NEXT @V50A2B5 00407000
  408. BCT R14,CHKCOL LOOP TO END @V50A2B5 00408000
  409. B MSG002 COULDN'T FIND IT @V50A2B5 00409000
  410. DOCONV LA R7,1(R15) WHERE SECOND FIELD BEGINS @V50A2B5 00410000
  411. LR R15,R7 FIND LENGTH OF FIRST FIELD @V50A2B5 00411000
  412. SR R15,R1 COMPUTATION @V50A2B5 00412000
  413. S R15,F1 MINUS ONE @V50A2B5 00413000
  414. BNH MSG002 MUST BE POSITIVE @V50A2B5 00414000
  415. LR R3,R0 SAVE REGISTER 0 @V50A2B5 00415000
  416. LR R4,R1 AND ONE @V50A2B5 00416000
  417. LR R0,R15 USE THIS LENGTH @V50A2B5 00417000
  418. CALL DMKCVTDB CONVERT TO BINARY @V50A2B5 00418000
  419. BNZ CONVERR CONVERT ERROR @V50A2B5 00419000
  420. STH R1,0(R6) KEEP THIS NUMBER @V50A2B5 00420000
  421. LR R0,R3 RESTORE REGISTER 0 @V50A2B5 00421000
  422. LR R1,R4 RESTORE REGISTER ONE @V50A2B5 00422000
  423. LA R14,0(R3,R4) COMPUTE LENGTH OF SECOND OP @V50A2B5 00423000
  424. SR R14,R7 COMPUTE @V50A2B5 00424000
  425. BNH MSG002 ERROR CONDITION @V50A2B5 00425000
  426. LR R3,R0 SAVE REGISTER 0 @V50A2B5 00426000
  427. LR R4,R1 SAVE REGISTER ONE @V50A2B5 00427000
  428. LR R0,R14 USE THE LENGTH @V50A2B5 00428000
  429. LR R1,R7 AND THE ADDRESS @V50A2B5 00429000
  430. CALL DMKCVTDB CONVERT TO COMPUTER NUMBER @V50A2B5 00430000
  431. BNZ CONVERR ERROR CONDITION @V50A2B5 00431000
  432. STH R1,2(R6) STORE VALUE @V50A2B5 00432000
  433. LR R0,R3 RESTORE REGISTER ZERO @V50A2B5 00433000
  434. LR R1,R4 RESTORE REGISTER ONE @V50A2B5 00434000
  435. BR R8 BRANCH OUT @V50A2B5 00435000
  436. CONVERR LR R0,R3 SEND ERROR MSG @V50A2B5 00436000
  437. LR R1,R4 BUT RESTORE REGS AS BEFORE @V50A2B5 00437000
  438. B MSG002 GO TO ERROR MSG @V50A2B5 00438000
  439. SPACE 1 00439000
  440. CONVTOD EQU * @V50A2B5 00440000
  441. LH R7,0(R5) COMPUTE TOTAL NO OF SECS. @V50A2B5 00441000
  442. CH R7,=H'24' , SEE IF LEGAL @V50A2B5 00442000
  443. BH MSG222 NO, SEND MESSAGE @V50A2B5 00443000
  444. MH R7,=H'3600' CONVERT TO SECONDS @V50A2B5 00444000
  445. ST R7,4(R5) TEMPORARY KEEP AROUND @V50A2B5 00445000
  446. LH R7,2(R5) LOAD IN MINUTES @V50A2B5 00446000
  447. CH R7,=H'60' SEE IF IN 60 MIN RANGE @V50A2B5 00447000
  448. BH MSG222 NO, ERROR CONDITION @V50A2B5 00448000
  449. MH R7,=H'60' CONVERT TO SECONDS @V50A2B5 00449000
  450. A R7,4(R5) GET TOTAL SECONDS @V50A2B5 00450000
  451. SR R2,R2 PREPARE TO MULTIPLY @V50A2B5 00451000
  452. LR R3,R7 MULTIPLY SETUP @V50A2B5 00452000
  453. M R2,=F'1000000' MULTIPLY BY 1000000 @V50A2B5 00453000
  454. SLDL R2,12 SHIFT BY 12 @V50A2B5 00454000
  455. STM R2,R3,0(R5) STORE RESULT @V50A2B5 00455000
  456. BR R8 RETURN @V50A2B5 00456000
  457. SPACE 1 00457000
  458. SETFROM CALL DMKSCNFD DO NEXT PARSE @V50A2B5 00458000
  459. BNZ MSG026 NOTHING LEFT @V50A2B5 00459000
  460. LA R6,TIMEFROM R6 POINTS TO THE VALUES PARSED @V50A2B5 00460000
  461. BAL R8,PARSE CHECK SYSTAX AND VALIDITY @V50A2B5 00461000
  462. CALL DMKSCNFD NOTE THE NEXT PARSING @V50A2B5 00462000
  463. BNZ MSG026 MUST BE SOMETHING @V50A2B5 00463000
  464. CL R0,F2 THIS MUST BE TO @V50A2B5 00464000
  465. BNE MSG002 NO, ERROR @V50A2B5 00465000
  466. CLC 0(2,R1),=C'TO' IS IT TO @V50A2B5 00466000
  467. BNZ MSG002 NO, ERROR @V50A2B5 00467000
  468. CALL DMKSCNFD GET FINAL PARSE @V50A2B5 00468000
  469. BNZ MSG026 MUST BE SUCCESSFUL @V50A2B5 00469000
  470. LA R6,TIMETO THE AREA FOR TO VALUES @V50A2B5 00470000
  471. BAL R8,PARSE PARSE IT OUT @V50A2B5 00471000
  472. LA R5,TIMEFROM PROCESS FROM TIME INFORMATION @V50A2B5 00472000
  473. BAL R8,CONVTOD BY CONVERTING TO TOD FORMAT @V50A2B5 00473000
  474. LA R5,TIMETO PROCESS TO IMFORMATION @V50A2B5 00474000
  475. BAL R8,CONVTOD CONVERT TO TIME TO TOD FORMAT @V50A2B5 00475000
  476. CLC TIMEFROM(4),TIMETO SEE IF THESE MAKE SENSE @V50A2B5 00476000
  477. BNL MSG223 IMPOSSIBLE SITUATION @V50A2B5 00477000
  478. L R6,=A(DMKSYSTS) STORE THE START TIME @V50A2B5 00478000
  479. MVC 0(8,R6),TIMEFROM STORE NEW START TIME @V50A2B5 00479000
  480. L R6,=A(DMKSYSTE) STORE NEW STOP TIME @V50A2B5 00480000
  481. MVC 0(8,R6),TIMETO STORE NEW STOP TIME @V50A2B5 00481000
  482. L R5,=A(DMKSYSAT) FIRST SEE IF AUTO IS ON @V50A2B5 00482000
  483. TM 0(R5),AUTGO TEST AUTO FLAG @V50A2B5 00483000
  484. BNO ACK NOPE, JUST EXIT @V50A2B5 00484000
  485. CALL DMKMNIST TURN ON THE TRQS @VMD0138 00485000
  486. B ACK RETURN @V50A2B5 00486000
  487. SPACE 1 00487000
  488. SETFOR EQU * @V50A2B5 00488000
  489. L R6,=A(DMKPRGMC) FIRST SEE IF ALREADY ON @V50A2B5 00489000
  490. ICM R6,B'1111',0(R6) BY LOOKING AT MONCOM POINTER @V50A2B5 00490000
  491. BNZ MSG228 IT IS ALREADY ON @V50A2B5 00491000
  492. L R6,=A(DMKSYSAT) SEE IF AUTODISK IS ON @V50A2B5 00492000
  493. TM 0(R6),AUTGO TEST THE FLAG @V50A2B5 00493000
  494. BNO MSG227 CANNOT DO THIS @V50A2B5 00494000
  495. CALL DMKSCNFD DO THE FINAL PARSE @V50A2B5 00495000
  496. BNZ MSG002 IT MUST BE THERE @V50A2B5 00496000
  497. LA R6,TIMETO WE WILL USE TIMEFROM AREA @V50A2B5 00497000
  498. BAL R8,PARSE PARSE THE FIELDS @V50A2B5 00498000
  499. LA R5,TIMETO NEXT CHANGE TO TOD FORMAT @V50A2B5 00499000
  500. BAL R8,CONVTOD CALL CONVERSION ROUTINE @V50A2B5 00500000
  501. STCK TEMPSTRT LOAD THE START TIME AS NOW @V50A2B5 00501000
  502. LM R6,R7,TEMPSTRT ACQUIRE THE START TIME @V50A2B5 00502000
  503. SL R7,TODATE+4 FIRST SUBTRACT THE END @V50A2B5 00503000
  504. BC 8+2+1,NOCARRY SEE IF THERE IS A CARRY @V50A2B5 00504000
  505. SL R6,F1 SUBTRACT ONE FROM HIGH ORDER @V50A2B5 00505000
  506. NOCARRY SL R6,TODATE FINISH UP THE SUBTRACTION @V50A2B5 00506000
  507. LR R2,R6 KEEP AROUND UNTIL @V50A2B5 00507000
  508. LR R3,R7 AFTER THE 24 HR TEST @V50A2B5 00508000
  509. A R7,TIMETO+4 COMPUTE END TIME SS+DEL @V50A2B5 00509000
  510. BC 12,*+8 SEE IF THERE IS A CARRY @V50A2B5 00510000
  511. AL R6,F1 ADD THE CARRY @V50A2B5 00511000
  512. AL R6,TIMETO FINISH ADDITION @V50A2B5 00512000
  513. STM R6,R7,TIMETO SEE IF OVER HR 24 @V50A2B5 00513000
  514. CLC TIMETO(8),SET24 WITH THE COMPARE @V50A2B5 00514000
  515. BH MSG226 YES, ERROR @V50A2B5 00515000
  516. L R5,=A(DMKSYSTS) STORE IN DMKSYS @V50A2B5 00516000
  517. STM R2,R3,0(R5) THE START TIME @V50A2B5 00517000
  518. L R5,=A(DMKSYSTE) STORE THE END TIME @V50A2B5 00518000
  519. STM R6,R7,0(R5) IN THE DMKSYS AREA @V50A2B5 00519000
  520. CALL DMKMNIST TURN OFF THE TRQS @VMD0138 00520000
  521. B ACK @VA08291 00521000
  522. EJECT 00522000
  523. *********************************************************************** 00523000
  524. * 00524000
  525. * MONITOR STOP 00525000
  526. * 00526000
  527. ********************************************************************** 00527000
  528. SPACE 1 00528000
  529. DMKMCDST RELOC @VA08291 00529000
  530. CALL DMKSCNFD GET NEXT PARAMETER @V2B2638 00530000
  531. BNZ TAPESTP1 DEFAULT IS TO SHUT OFF MONITOR @V50A2B5 00531000
  532. C R0,F8 TOO BIG? @V2B2638 00532000
  533. BH MSG002 YES, GARBAGE IN, GARBAGE OUT @V2B2638 00533000
  534. MVC SAVEWRK3(8),BLANKS BLANK OUT PARM AREA @V2B2638 00534000
  535. LR R2,R0 LENGTH OF PARM INTO R2 @V2B2638 00535000
  536. BCTR R2,0 LESS 1 FOR EXECUTE @V2B2638 00536000
  537. EX R2,PARMOVE MOVE PARM INTO TEMPORARY AREA @V2B2638 00537000
  538. CLC =CL8'TAPE',SAVEWRK3 IS IT PERF MONITOR? @V2B2638 00538000
  539. BE TAPESTOP YES @V2B2638 00539000
  540. CLC =CL8'SPOOL',SAVEWRK3 SEE IF SPOOL STOP @V50A2B5 00540000
  541. BE TAPESTOP YES, CONTINUE @V50A2B5 00541000
  542. AIF (NOT &TRACE(9)).NTR92 @V2B2638 00542000
  543. CLC =CL8'CPTRACE',SAVEWRK3 IS IT INTERNAL TRACE @V2B2638 00543000
  544. .NTR92 ANOP 00544000
  545. BNE MSG002 NOPE, BAD OPERAND @V2B2638 00545000
  546. B STOPCPTR @V50A2B5 00546000
  547. SPACE 1 00547000
  548. *. 00548000
  549. *********************************************************************** 00549000
  550. * 00550000
  551. * MONITOR STOP CPTRACE (TRACE TABLE) 00551000
  552. * 00552000
  553. * STOP ALL FLAVORS OF INTERNAL TRACING. 00553000
  554. * 00554000
  555. *********************************************************************** 00555000
  556. *. 00556000
  557. SPACE 1 00557000
  558. STOPCPTR EQU * @V50A2B5 00558000
  559. L R2,TRACEFLG GET THE TRACE FLAGS @V2B2638 00559000
  560. LTR R2,R2 IS ANY TRACING ACTIVE? @V2B2638 00560000
  561. BZ MSG214 NO, THEN CAN'T STOP TRACING @V2B2638 00561000
  562. SR R2,R2 CLEAR THE TRACE TABLE FLAG @V2B2638 00562000
  563. ST R2,TRACEFLG TO INDICATE NO TRACING @V2B2638 00563000
  564. L R8,PREFIXB ADDRESS OTHER PSA IF ANY @VA08263 00564000
  565. ST R2,TRACEFLG(R8) AND RESET ITS TRACE FLAGS @VA08263 00565000
  566. B ACK @V2B2638 00566000
  567. SPACE 4 00567000
  568. PARMOVE MVC SAVEWRK3(0),0(R1) MOVE ARG TO TEMP AREA @V2B2638 00568000
  569. PARMOVE1 MVC SAVEWRK1(0),0(R1) MOVE ARG TO TEMP AREA @V50A2B5 00569000
  570. EJECT 00570000
  571. *. 00571000
  572. *********************************************************************** 00572000
  573. * 00573000
  574. * MONITOR STOP TAPE 00574000
  575. * 00575000
  576. * MAKE SURE THAT THE MONITOR DATA COLLECTION IS ACTIVE. 00576000
  577. * IF AN ERROR IS BEING PROCESSED THEN THE MONITOR WILL SHUTDOWN 00577000
  578. * WITH A DMKMON ERROR MESSAGE BY ITSELF. 00578000
  579. * IF THE CFSTOP FLAG HAS ALREADY BEEN SET THEN THINGS ARE 00579000
  580. * SET UP TO STOP ALREADY, SO EXIT WITH AN ERROR MESSAGE. 00580000
  581. * 00581000
  582. * OTHERWISE, SET CFSTOP AND OBTAIN AND INITIALIZE A CPEXBLOK. 00582000
  583. * STORE ITS ADDRESS IN MONCOM. 00583000
  584. * 00584000
  585. * IF THE MONITOR TAPE IS NOT BUSY THEN CALL DMKMONSH TO 00585000
  586. * SHUTDOWN THE MONITOR. 00586000
  587. * DMKMONSH WILL USE THE CPEXBLOK TO RETURN TO ITSELF AFTER 00587000
  588. * THE I/O INTERRUPT ROUTINE HAS RECEIVED THE FINAL INTERRUPT 00588000
  589. * AND CLEANED UP THE VARIOUS BLOCKS. 00589000
  590. * DMKMONSH WILL THEN EXIT BACK TO HERE; WHEREUPON WE ISSUE 00590000
  591. * A 'COMMAND COMPLETE' MESSAGE AND EXIT. 00591000
  592. * 00592000
  593. * IF THE TAPE IS BUSY THEN SET THE CPEXADD (EXECUTION 00593000
  594. * ADDRESS) TO ISSUE THE 'COMMAND COMPLETE' MESSAGE FROM THIS 00594000
  595. * MODULE AND GO TO THE DISPATCHER. 00595000
  596. * THE DMKMONIO TAPE I/O INTERRUPT HANDLER WILL CHECK FOR CFSTOP 00596000
  597. * WHEN THE NEXT I/O INTERRUPT COMES IN. 00597000
  598. * HE WILL THEN CLEAN UP AND EXIT BACK TO HERE WHEN HE'S 00598000
  599. * FINISHED. 00599000
  600. * 00600000
  601. *********************************************************************** 00601000
  602. *. 00602000
  603. SPACE 1 00603000
  604. TAPESTP1 MVC SAVEWRK3(8),BLANKS DO THIS FOR LATER @V50A2B5 00604000
  605. TAPESTOP L R7,=A(DMKPRGMC) SOME KEY FIELDS IN DMKPRG @V2B2638 00605000
  606. L R7,0(R7) PICK UP COMM. AREA ADDRESS @V2B2638 00606000
  607. LTR R7,R7 IS THER ONE @V2B2638 00607000
  608. USING MONCOM,R7 00608000
  609. BZ MSG212 NO, THEN STOP IS INVALID PARM @V2B2638 00609000
  610. CLC SAVEWRK3(8),=CL8'TAPE' VALIDITY CHECK TAPE @V50A2B5 00610000
  611. BNE CHKSPLW SEE IF SPOOL SAID HERE @V50A2B5 00611000
  612. TM MONFLAG3,SPOOLED THIS FLAG BETTER BE OFF @V50A2B5 00612000
  613. BNO OKSTOP FINE STOP @V50A2B5 00613000
  614. B MSG002 ELSE ERROR @V50A2B5 00614000
  615. CHKSPLW CLC SAVEWRK3(8),=CL8'SPOOL' SEE IF SPOOL HERE @V50A2B5 00615000
  616. BNE OKSTOP SHUT OFF ANYTHING @V50A2B5 00616000
  617. TM MONFLAG3,SPOOLED SPOOL BETTER BE ON @V50A2B5 00617000
  618. BNO MSG002 ELSE ERROR @V50A2B5 00618000
  619. OKSTOP EQU * @V50A2B5 00619000
  620. SPACE 1 00620000
  621. TM MONFLAG1,ERROR+CFSTOP IS ERROR OR STOP @V2B2638 00621000
  622. * BEING HANDLED NOW. IF SO CAN'T DO IT TWICE 00622000
  623. BNZ MSG218 YES, CANT STOP IT YET, SORRY @V2B2638 00623000
  624. SLR R0,R0 ZIP FOR STORE @VA03658 00624000
  625. C R0,CPCREG8 MON CURRENTLY SUSPENDED @VA09747 00624100
  626. BE EMSG2 YES, MESSAGE TO RETRY @VA09747 00624200
  627. L R1,=A(DMKPRGC8) ADDRESS ENABLED CLASSES @VA03658 00625000
  628. ST R0,0(R1) SHUT OFF IN CASE OF SUSPEND @VA03658 00626000
  629. ST R0,CPCREG8 SHUT OFF ACTIVE CLASSES @VA03658 00627000
  630. TM APSTAT1,APUOPER APMODE? @VA08291 00628000
  631. BNO CONTINUE NO, GO AROUND AP CODE @VA08291 00629000
  632. L R2,PREFIXB ADDRESS OTHER PROCESSOR'S PSA 00630000
  633. ST R0,CPCREG8(R2) PROPAGATE MC MASK TO OTHER PROCESSOR 00631000
  634. LCTL C8,C8,ZEROES ... @V2B2638 00632000
  635. LA R0,CPEXSIZE SIZE OF CPEXBLOK @VA08291 00633000
  636. CALL DMKFREE GET CPEXBLOK @VA08291 00634000
  637. USING CPEXBLOK,R1 @VA08291 00635000
  638. STM R0,R15,CPEXREGS STORE REGS @VA08291 00636000
  639. LA R2,CONTINUE PLACE TO RETURN FOR OTHER @VA08291 00637000
  640. * PROCESSOR 00638000
  641. ST R2,CPEXADD TO DO LOAD CNTL REG 8 @VA08291 00639000
  642. CALL DMKSTKOP STACK FOR OTHER PROCESSOR @VA08291 00640000
  643. GOTO DMKDSPCH @VA08291 00641000
  644. DROP R1 @VA08291 00642000
  645. CONTINUE EQU * @VA08291 00643000
  646. LCTL C8,C8,ZEROES LOAD CONTROL REG 8 @VA08291 00644000
  647. OI MONFLAG1,CFSTOP INDICATE CONSOLE FUNCTION STOP @V2B2638 00645000
  648. MVC MONUSER(8),VMUSER INDICATE STOP REQUESTORS NAME @VA03693 00646000
  649. L R1,MONIOBF IS TAPE BUSY? 00647000
  650. LTR R1,R1 NON-ZERO VALUE INDICATES IT IS 00648000
  651. BNZ ACK BUSY, DMKMON WILL DO THE REST 00649000
  652. LR R9,R7 R9=MONCOM FOR DMKMON @V2B2638 00650000
  653. CALL DMKMNISH REQUEST MONITOR TO SHUT ITSELF DOWN 00651000
  654. L R1,SAVER12 SEE WHO DOES CALLING @V50A2B5 00652000
  655. CLC 0(8,R1),=C'DMKMIA ' IF IT IS MIA @V50A2B5 00653000
  656. BE GETACK SKIP THIS MESSAGE @V50A2B5 00654000
  657. LA R0,L'STOPMSG GET LENGTH OF MESSAGE @V50A2B5 00655000
  658. LA R1,STOPMSG GET ADDRESS OF MESSAGE @V50A2B5 00656000
  659. CALL DMKMIAMU SEND THE MESSAGE @V50A2B5 00657000
  660. GETACK EQU * @V50A2B5 00658000
  661. ACK XC PARMTYPE(2),PARMTYPE RESET SEEKS ACTIVE FLAG @V60BEBC 00659000
  662. EXIT ACKNOWLEDGE COMPLETE @V60BEBC 00660000
  663. EJECT 00661000
  664. * ENTRY POINT - 00662000
  665. * 00663000
  666. * DMKMCDSE - TO PROCESS THE MONITOR SEEKS COMMAND 00664000
  667. * 00665000
  668. * ENTRY CONDITIONS - 00666000
  669. * 00667000
  670. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00668000
  671. * GPR11 - ADDRESS OF VMBLOK 00669000
  672. * GPR12 - ADDRESS OF ENTRY POINT 00670000
  673. * GPR13 - ADDRESS OF STANDARD SAVEAREA 00671000
  674. * 00672000
  675. * EXIT CONDITIONS - 00673000
  676. * 00674000
  677. * NONE 00675000
  678. * 00676000
  679. * CALLS TO OTHER ROUTINES - 00677000
  680. * 00678000
  681. * DMKSCNFD - TO LOCATE NEXT FIELD IN INPUT LINE 00679000
  682. * DMKQCNWT - TO SEND A MESSAGE TO THE TERMINAL 00680000
  683. * DMKERMSG - TO SEND CANNED ERROR MESSAGE TO TERMINAL 00681000
  684. * DMKCVTHB - TO CONVERT DEVICE ADDRESS TO BINARY 00682000
  685. * DMKSCNRU - TO OBTAIN RDEVBLK ADDRESS FROM DEV. ADDRESS 00683000
  686. * DMKFREE - TO OBTAIN STORAGE FOR MESSAGES 00684000
  687. * DMKCFCSC - SCAN FOR A CHARACTER ROUTINE 00685000
  688. * DMKCVTBH - CONVERT BINARY DEV ADDR TO HEX PRINTABLE 00686000
  689. * DMKFRET - TO RELEASE STORAGE USED FOR MESSAGES 00687000
  690. * 00688000
  691. * EXTERNAL REFERENCES - 00689000
  692. * 00690000
  693. * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00691000
  694. * 00692000
  695. * REGISTER USAGE - 00693000
  696. * 00694000
  697. * GPR0 - COMMAND ARGUMENT LENGTH, AND OUTPUT MSG LENGTH 00695000
  698. * GPR1 - COMMAND ARGUMENT ADDRESS, AND OUTPUT MSG ADDRESS 00696000
  699. * GPR2 - GPR10 - WORK REGISTERS 00697000
  700. * GPR11 - VMBLOK ADDRESS 00698000
  701. * GPR12 - BASE REG 00699000
  702. * GPR13 - SAVE AREA ADDRESS 00700000
  703. * GPR14 - LINKAGE REG 00701000
  704. * GPR15 - LINKAGE REG 00702000
  705. * 00703000
  706. * OPERATION - 00704000
  707. * 00705000
  708. * MONITOR SEEKS PROCESSING - OPTIONS ARE: 00706000
  709. * INCLUDE, EXCLUDE, DISPLAY, DELETE 00707000
  710. * 00708000
  711. *************************************************************** 00709000
  712. DMKMCDSE RELOC @V60BEBC 00710000
  713. TS SEEKACTV SEEKS COMMAND ALREADY ACTIVE? @V60BEBC 00711000
  714. BC 4,EMSG2 YES, GET OUT @V60BEBC 00712000
  715. CALL DMKSCNFD LOOK FOR SPEC'D OPTION @V60BEBC 00713000
  716. BNZ MSG026 NOT THERE, BAD NEWS @V60BEBC 00714000
  717. CL R0,F7 INVALID OPERAND IF @V60BEBC 00715000
  718. BH MSG026 MORE THAN 7 CHARS @V60BEBC 00716000
  719. LR R2,R0 GET LENGTH @V60BEBC 00717000
  720. BCTR R2,0 LESS 1 FOR EXECUTE @V60BEBC 00718000
  721. LA R3,OPTABENO OPERAND TABLE COUNT @V60BEBC 00719000
  722. LA R4,MONOPTAB OPERAND TABLE ADDRESS @V60BEBC 00720000
  723. COMPLEN CH R2,0(R4) CHECK OPERAND LENGTH @V60BEBC 00721000
  724. BL NEXTARG TOO SMALL, NEXT ARGUMENT @V60BEBC 00722000
  725. EX R2,COMPARG CHECK AN OPERAND FOR EQUAL @V60BEBC 00723000
  726. BE 10(R4) GO TO PROPER ROUTINE @V60BEBC 00724000
  727. NEXTARG LA R4,14(R4) NEXT ARGUMENT ADDRESS @V60BEBC 00725000
  728. BCT R3,COMPLEN LOOP THROUGH ALL VALID ARGS @V60BEBC 00726000
  729. B MSG002 NOT FOUND, INVALID OPERAND @V60BEBC 00727000
  730. COMPARG CLC 2(0,R4),0(R1) TARGET OF THE EXECUTE @V60BEBC 00728000
  731. SPACE 1 @V60BEBC 00729000
  732. SEDELETE OI PARMTYPE,DELET INDICATE DELETE PROCESSING @V60BEBC 00730000
  733. FREEUPL L R2,=A(DMKENTSK) SEE IF SEEKS IS ACTIVE @V60BEBC 00731000
  734. ICM R1,B'1111',0(R2) .... @V60BEBC 00732000
  735. USING SEEKLIST,R1 @V60BEBC 00733000
  736. BZ TESTYPE NO, NO NEED TO FREE @V60BEBC 00734000
  737. LH R0,SEEKSIZE GET NUMBER OF DWORDS @V60BEBC 00735000
  738. CALL DMKFRET FREE THE LIST @V60BEBC 00736000
  739. XC 0(4,R2),0(R2) CLEAR THE POINTER IN DMKENT @V60BEBC 00737000
  740. DROP R1 @V60BEBC 00738000
  741. B TESTYPE SEE WHO CALLED @V60BEBC 00739000
  742. SPACE 1 @V60BEBC 00740000
  743. SEINCLUD EQU * @V60BEBC 00741000
  744. OI PARMTYPE,INCLUDE INDICATE INCLUDE @V60BEBC 00742000
  745. B INOREX DELETE OLD LIST @V60BEBC 00743000
  746. SEEXCLUD EQU * @V60BEBC 00744000
  747. OI PARMTYPE,EXCLUDE INDICATE EXCLUDE @V60BEBC 00745000
  748. INOREX LA R10,TEMPTBL SYMBOL TABLE ADDR @V60BEBC 00746000
  749. SLR R5,R5 INIT DEVICE COUNT @V60BEBC 00747000
  750. GETDEVCT CALL DMKSCNFD GET NEXT PARM IN CMD BUFFER @V60BEBC 00748000
  751. BNZ CHECKCNT NONE LEFT, CHECK DEVICE COUNT @V60BEBC 00749000
  752. CL R0,F7 CAN'T BE MORE THAN 7 CHARS @V60BEBC 00750000
  753. BH MSG021 SEND ERROR MSG @V60BEBC 00751000
  754. LA R2,DASH SCAN FOR A DASH @V60BEBC 00752000
  755. CALL DMKCFCSC .... @V60BEBC 00753000
  756. BZ NOTRANGE NO RANGE PROCESSING @V60BEBC 00754000
  757. LR R3,R2 GET LENGTH OF FIRST OPERAND @V60BEBC 00755000
  758. SR R3,R1 .... @V60BEBC 00756000
  759. CL R3,F3 3 CHARACTERS ONLY ALLOWED @V60BEBC 00757000
  760. BNE MSG021 ILLEGAL OPERAND @V60BEBC 00758000
  761. LR R4,R0 TOT OPERAND LENGTH @V60BEBC 00759000
  762. LR R0,R3 1ST OPERAND LENGTH @V60BEBC 00760000
  763. MVI 0(R2),BLANK BLANK OUT DASH @V60BEBC 00761000
  764. CALL DMKCVTHB CONVERT TO BINARY @V60BEBC 00762000
  765. BNZ MSG021 NO GOOD, ERROR MSG @V60BEBC 00763000
  766. STH R1,SAVEWRK6 SAVE FOR LATER @V60BEBC 00764000
  767. LA R1,1(R2) 2ND OPERAND IN RANGE @V60BEBC 00765000
  768. SR R4,R3 LENGTH OF 2ND OPERAND @V60BEBC 00766000
  769. BCTR R4,0 LESS 1 FOR DASH @V60BEBC 00767000
  770. CL R4,F3 SEE IF 3 CHARS @V60BEBC 00768000
  771. BNE MSG021 NO, ISSUE ERROR MSG @V60BEBC 00769000
  772. LR R0,R4 READY FOR CONVERT @V60BEBC 00770000
  773. CALL DMKCVTHB CONVERT TO BINARY @V60BEBC 00771000
  774. BNZ MSG021 BAD CONVERT, ISSUE ERROR MSG @V60BEBC 00772000
  775. LH R4,SAVEWRK6 RESTORE RADDR1 @V60BEBC 00773000
  776. CR R1,R4 RADDR2 > RADDR1 @V60BEBC 00774000
  777. BNH MSG021 NO, INVALID OPERAND @V60BEBC 00775000
  778. STH R4,0(R10) BEGINNING OF RANGE @V60BEBC 00776000
  779. STH R1,2(R10) END OF RANGE TO TABLE @V60BEBC 00777000
  780. OI 0(R10),RANGE INDICATES RANGE @V60BEBC 00778000
  781. SR R1,R4 DIFFERENCE PLUS 1 ADDED TO DEV @V60BEBC 00779000
  782. LA R5,1(R5,R1) COUNT @V60BEBC 00780000
  783. LA R10,4(R10) NEXT POS IN TABLE @V60BEBC 00781000
  784. B GETDEVCT GET NEXT PARM @V60BEBC 00782000
  785. NOTRANGE EQU * @V60BEBC 00783000
  786. CL R0,F3 LENGTH=3? @V60BEBC 00784000
  787. BNE MSG021 NO, ISSUE ERROR MSG @V60BEBC 00785000
  788. CALL DMKCVTHB CONVERT TO BINARY @V60BEBC 00786000
  789. BNZ MSG021 BAD CONVERT @V60BEBC 00787000
  790. STH R1,0(R10) SAVE I/O ADDR @V60BEBC 00788000
  791. LA R10,2(R10) NEXT POS IN TABLE @V60BEBC 00789000
  792. LA R5,1(R5) INCR DEVICE COUNT @V60BEBC 00790000
  793. B GETDEVCT GET NEXT DEVICE @V60BEBC 00791000
  794. SPACE 1 @V60BEBC 00792000
  795. CHECKCNT LTR R5,R5 MORE THAN 0 DEVICES? @V60BEBC 00793000
  796. BZ MSG026 NO, ISSUE ERROR MSG @V60BEBC 00794000
  797. B FREEUPL DELETE OLD LIST ATTEMPT @V60BEBC 00795000
  798. TESTYPE LA R8,SEEKHALF(R5) X HALFWORDS FOR HEADER @V60BEBC 00796000
  799. TM PARMTYPE,DELET WHICH OPTION? @V60BEBC 00797000
  800. BO ACK JUST DELETE, SO LEAVE @V60BEBC 00798000
  801. SLR R9,R9 COMPUTE DOUBLE WORDS @V60BEBC 00799000
  802. SRDL R8,2 FOR SEEKS LIST @V60BEBC 00800000
  803. LTR R9,R9 ANY REMAINDER? @V60BEBC 00801000
  804. BZ NORMDR NO, DON'T ROUND UP @V60BEBC 00802000
  805. LA R8,1(R8) 1 MORE DWORD @V60BEBC 00803000
  806. NORMDR LR R0,R8 GO GET THE STORAGE @V60BEBC 00804000
  807. CALL DMKFREE ... @V60BEBC 00805000
  808. L R2,=A(DMKENTSK) SAVE ADDR OF SEEKS LIST @V60BEBC 00806000
  809. ST R1,0(R2) .... @V60BEBC 00807000
  810. USING SEEKLIST,R1 @V60BEBC 00808000
  811. STH R8,SEEKSIZE SAVE DWORDS IN SEEKS LIST @V60BEBC 00809000
  812. LA R4,SEEKHDR(R1) SKIP OVER HEADER @V60BEBC 00810000
  813. DROP R1 @V60BEBC 00811000
  814. LA R6,0 INIT DEVICE COUNTER @V60BEBC 00812000
  815. LA R2,TEMPTBL TABLE OF ADDRS @V60BEBC 00813000
  816. START TM 0(R2),RANGE RANGE TEST @V60BEBC 00814000
  817. BNO ONEDEV NOT A RANGE @V60BEBC 00815000
  818. NI 0(R2),X'FF'-RANGE TURN OFF RANGE INDICATOR @V60BEBC 00816000
  819. LH R3,2(R2) GET ENDING I/O ADDRESS @V60BEBC 00817000
  820. LH R1,0(R2) GET STARTING I/O ADDRESS @V60BEBC 00818000
  821. LA R2,4(R2) NEXT POS IN TEMPTBL @V60BEBC 00819000
  822. NEXTDEV STM R6,R8,SAVEWRK6 SAVE IN CASE OF ERROR @V60BEBC 00820000
  823. BCTR R5,0 COUNT NUMBER OF SCANS @V60BEBC 00821000
  824. CALL DMKSCNRU SEE IF DEVICE EXISTS @V60BEBC 00822000
  825. BNZ MSG040 NO, ISSUE ERROR MSG @V60BEBC 00823000
  826. LM R6,R8,SAVEWRK6 RESTORE CURRENT I/O ADDRESS @V6OBEBC 00824000
  827. STH R1,0(R4) SAVE IT IN SEEKS LIST @V60BEBC 00825000
  828. LA R6,1(R6) INCR DEV COUNT @V60BEBC 00826000
  829. LA R4,2(R4) NEXT POS IN SEEKS LIST @V60BEBC 00827000
  830. ERRETURN CR R3,R1 TEST FOR COMPLETED RANGE @V60BEBC 00828000
  831. BE TESTDONE CHECK FOR ALL DEVICES COVERED @V60BEBC 00829000
  832. LA R1,1(R1) INCR DEV RANGE ADDRESS @V60BEBC 00830000
  833. B NEXTDEV NEXT DEVICE @V60BEBC 00831000
  834. ONEDEV LH R1,0(R2) GET BIN DEV ADDRESS @V60BEBC 00832000
  835. LA R2,2(R2) INCR TEMPTBL PTR @V60BEBC 00833000
  836. LR R3,R1 ONLY ONE DEVICE @V60BEBC 00834000
  837. B NEXTDEV VALIDITY CHECK & INSERT @V60BEBC 00835000
  838. TESTDONE C R5,F0 COVERED ALL DEVICES? @V60BEBC 00836000
  839. BH START NO, DO NEXT DEVICE @V60BEBC 00837000
  840. SPACE 1 @V60BEBC 00838000
  841. SORTLIST L R3,=A(DMKENTSK) ADDRESS THE LIST @V60BEBC 00839000
  842. ICM R3,B'1111',0(R3) ... @V60BEBC 00840000
  843. USING SEEKLIST,R3 @V60BEBC 00841000
  844. STH R6,SEEKDEVS SAVE NUMBER OF DEVS @V60BEBC 00842000
  845. MVC SEEKTYPE,PARMTYPE INCLUDE/EXCLUDE INDICATOR @V60BEBC 00843000
  846. LA R3,SEEKHDR(R3) SKIP OVER HEADER @V60BEBC 00844000
  847. DROP R3 @V60BEBC 00845000
  848. C R6,F1 MUST BE AT LEAST 2 DEVICES TO S@V60BEBC 00846000
  849. BE ACK ONLY 1, ACKNOWLEDGE COMPLETE @V60BEBC 00847000
  850. BL NODEVS NO GEN'D DEVICES IN LIST @V60BEBC 00848000
  851. S R6,F2 DERIVE LAST OFFSET @V60BEBC 00849000
  852. SLL R6,1 FOR BXLE LOOP @V60BEBC 00850000
  853. LA R5,0(R3,R6) LAST=FIRST+OFFSET @V60BEBC 00851000
  854. NXTPASS LR R2,R3 START ADDRESS @V60BEBC 00852000
  855. LA R4,2 INCREMENT VALUE @V60BEBC 00853000
  856. LA R6,0 CHANGE VARIABLE @V60BEBC 00854000
  857. GOAGAIN CLC 0(2,R2),2(R2) N:N+1 @V60BEBC 00855000
  858. BNH NOSWITCH EXHANGE IF N > N+1 @V60BEBC 00856000
  859. MVC TEMP(2),0(R2) SWITCH CODE @V60BEBC 00857000
  860. MVC 0(2,R2),2(R2) ... @V60BEBC 00858000
  861. MVC 2(2,R2),TEMP ... @V60BEBC 00859000
  862. LR R6,R2 SET CHANGE VARIABLE @V60BEBC 00860000
  863. NOSWITCH BXLE R2,R4,GOAGAIN INNER LOOP @V60BEBC 00861000
  864. LTR R6,R6 ANY CHANGES OCCUR? @V60BEBC 00862000
  865. BZ ACK NO, FINISHED @V60BEBC 00863000
  866. LR R5,R6 NEW UPPER BOUND @V60BEBC 00864000
  867. B NXTPASS FOR NEXT PASS THROUGH TABLE @V60BEBC 00865000
  868. NODEVS OI PARMTYPE,DELET INDICATE DELETE @V60BEBC 00866000
  869. B FREEUPL FREE THE LIST @V60BEBC 00867000
  870. SPACE 1 @V60BEBC 00868000
  871. DISPLAY EQU * @V60BEBC 00869000
  872. LA R9,MSGBUFF GET BUFFER AREA @V60BEBC 00870000
  873. MVI MSGBUFF,BLANK AND CLEAR IT @V60BEBC 00871000
  874. MVC MSGBUFF+1(L'MSGBUFF-1),MSGBUFF ..... @V60BEBC 00872000
  875. L R6,=A(DMKENTSK) IS SEL SEEKS ALIVE? @V60BEBC 00873000
  876. ICM R6,B'1111',0(R6) ... @V60BEBC 00874000
  877. BZ EMSG1 NO, SEEKS NOT ACTIVE @V60BEBC 00875000
  878. MVC MSGBUFF(L'SEEKMSG),SEEKMSG @V60BEBC 00876000
  879. USING SEEKLIST,R6 @V60BEBC 00877000
  880. LH R3,SEEKDEVS NUMBER OF DEVICES TO R3 @V60BEBC 00878000
  881. TM SEEKTYPE,INCLUDE TEST FOR INCLUDE/EXCLUDE @V60BEBC 00879000
  882. BNO EXCLUD NO, MUST BE EXCLUDE @V60BEBC 00880000
  883. MVC MSGBUFF+8(2),INCL FILL MSG HEADER @V60BEBC 00881000
  884. B WRITEOUT AND WRITE TO CONSOLE @V60BEBC 00882000
  885. EXCLUD MVC MSGBUFF+8(2),EXCL FILL MSG HEADER @V60BEBC 00883000
  886. WRITEOUT LA R0,L'MSGBUFF LENGTH OF MSG @V60BEBC 00884000
  887. LA R1,MSGBUFF POINT TO BUFFER @V60BEBC 00885000
  888. CALL DMKQCNWT,PARM=NORET AND WRITE IT @V60BEBC 00886000
  889. LA R6,SEEKHDR(R6) SKIP OVER HEADER @V60BEBC 00887000
  890. DROP R6 @V60BEBC 00888000
  891. LR R4,R3 COMPUTE NUMBER OF WRITES @V60BEBC 00889000
  892. SLR R5,R5 AT 8 DEVS PER LINE @V60BEBC 00890000
  893. SRDL R4,3 SO DIVIDE BY 8 @V60BEBC 00891000
  894. SRL R5,29 MOVE TO LOW ORDER BITS @V60BEBC 00892000
  895. LTR R5,R5 NO REMAINDER ON DIVIDE? @V60BEBC 00893000
  896. BZ NOADD1 NO, DON'T ROUND UP @V60BEBC 00894000
  897. LA R4,1(R4) YES, ROUND @V60BEBC 00895000
  898. NOADD1 LA R8,8 DEVS PER WRITE @V60BEBC 00896000
  899. LA R9,MSGBUFF START OF BUFFER @V60BEBC 00897000
  900. C R4,F1 LAST WRITE?? @V60BEBC 00898000
  901. BNE SKIPIT NO, THEN 8 DEVS ON THIS WRITE @V60BEBC 00899000
  902. LTR R5,R5 ZERO REMAINDER? @V60BEBC 00900000
  903. BZ SKIPIT YES, KEEP AT 8 DEVS PER LINE @V60BEBC 00901000
  904. LR R8,R5 NEW DEV COUNT FOR LAST WRITE @V60BEBC 00902000
  905. SKIPIT MVI MSGBUFF,BLANK BLANK THE LINE @V60BEBC 00903000
  906. MVC MSGBUFF+1(L'MSGBUFF-1),MSGBUFF ...... @V60BEBC 00904000
  907. NXT1 LH R1,0(R6) GET BINARY DEVICE @V60BEBC 00905000
  908. CALL DMKCVTBH BACK TO HEX PRINTABLE @V60BEBC 00906000
  909. N R1,X40FFS BLANK HIGH ORDER BYTE @V60BEBC 00907000
  910. ST R1,0(R9) SAVE IN MSG AREA @V60BEBC 00908000
  911. LA R6,2(R6) NEXT DEVICE IN LIST @V60BEBC 00909000
  912. LA R9,4(R9) NEXT POS IN MSGBUFF @V60BEBC 00910000
  913. BCT R8,NXT1 DO NEXT DEVICE @V60BEBC 00911000
  914. LA R0,L'MSGBUFF GET LENGTH AND @V60BEBC 00912000
  915. LA R1,MSGBUFF ADDR OF MSG @V60BEBC 00913000
  916. CALL DMKQCNWT,PARM=NORET AND WRITE IT @V60BEBC 00914000
  917. BCT R4,NOADD1 INITIALIZE FOR NEXT WRITE @V60BEBC 00915000
  918. B ACK COMPLETE @V60BEBC 00916000
  919. EMSG1 MVC MSGBUFF(L'SEERMSG),SEERMSG SEEKS NOT ACTIVE @V60BEBC 00917000
  920. B DUMPMSG WRITE IT @V60BEBC 00918000
  921. EMSG2 MVC MSGBUFF(L'SEACMSG),SEACMSG CMD IN PROGRESS @V60BEBC 00919000
  922. DUMPMSG LA R0,L'MSGBUFF LENGTH AND @V60BEBC 00920000
  923. LA R1,MSGBUFF ADDR OF MSGBUFF @V60BEBC 00921000
  924. CALL DMKQCNWT,PARM=NORET WRITE MSG @V60BEBC 00922000
  925. B ACK @V60BEBC 00923000
  926. *********************************************************************** 00924000
  927. * 00925000
  928. * ALL ERROR MESSAGES ARE SENT FROM HERE. 00926000
  929. * DMKERM RETURNS DIRECTLY TO DMKCFM. 00927000
  930. * 00928000
  931. *********************************************************************** 00929000
  932. SPACE 00930000
  933. MSG002 LA R2,2 INVALID OPERAND MESSAGE @V2B2638 00931000
  934. XC PARMTYPE(2),PARMTYPE RESET SEEKS FLAGS @V60BEBC 00932000
  935. B BADARG @V2B2638 00933000
  936. SPACE 1 00934000
  937. MSG003 LA R2,3 INVALID OPTION @V2B2638 00935000
  938. B BADARG @V2B2638 00936000
  939. SPACE 00937000
  940. MSG021 LA R2,21 RADDR MISSING OR INVALID @V60BEBC 00938000
  941. XC PARMTYPE(2),PARMTYPE RESET SEEKS FLAGS @V60BEBC 00939000
  942. B ZIPR1 GO ISSUE MSG @V60BEBC 00940000
  943. MSG026 LA R2,26 OPERAND MISSING OR INVALID @V2B2638 00941000
  944. XC PARMTYPE(2),PARMTYPE RESET SEEKS FLAGS @V60BEBC 00942000
  945. B ZIPR1 @V2B2638 00943000
  946. SPACE 00944000
  947. MSG040 STM R1,R2,SAVEWRK4 SAVE REGS FOR RETURN @V60BEBC 00945000
  948. SLR R2,R2 SET UP R2 @V60BEBC 00946000
  949. ICM R2,B'1000',RETURN SET FOR RETURN @V60BEBC 00947000
  950. CALL DMKCVTBH BACK TO HEX @V60BEBC 00948000
  951. N R1,X40FFS BLANK HIGH ORDER BYTE @V60BEBC 00949000
  952. IC R2,FORTY ERROR CODE @V60BEBC 00950000
  953. SLR R0,R0 ..... @V60BEBC 00951000
  954. B BADARG CALL ERROR RTN @V60BEBC 00952000
  955. MSG212 LA R2,212 MON TAPE IS NOT ACTIVE @V2B2638 00953000
  956. B ZIPR1 @V2B2638 00954000
  957. SPACE 00955000
  958. MSG214 LA R2,214 CP TRACE TABLE IS NOT ACTIVE @V2B2638 00956000
  959. B ZIPR1 @V2B2638 00957000
  960. SPACE 00958000
  961. MSG218 LA R2,218 MON NOT STOPPED, TAPE I/O ACTIVE @V2B2638 00959000
  962. B ZIPR1 @V2B2638 00960000
  963. SPACE 00961000
  964. MSG222 LA R2,222 TIME PARAMETER SPECIFIES ILLEGAL @V50A2B5 00962000
  965. B ZIPR1 @V50A2B5 00963000
  966. SPACE 1 00964000
  967. MSG223 LA R2,223 START TIME MUST PRECEDE STOP TIME @V50A2B5 00965000
  968. B ZIPR1 @V50A2B5 00966000
  969. SPACE 1 00967000
  970. MSG224 LA R2,224 LIMIT NOT BETWEEN 10 AND 50000 @V50A2B5 00968000
  971. B ZIPR1 @V50A2B5 00969000
  972. SPACE 1 00970000
  973. MSG226 LA R2,226 FOR VALUE SPANS MIDNIGHT @V50A2B5 00971000
  974. B ZIPR1 @V50A2B5 00972000
  975. SPACE 1 00973000
  976. MSG227 LA R2,227 FOR ILLEGAL WITHOUT AUTODISK ON @V50A2B5 00974000
  977. B ZIPR1 @V50A2B5 00975000
  978. SPACE 1 00976000
  979. MSG228 LA R2,228 FOR ILLEGAL WITH MONITOR ON @V50A2B5 00977000
  980. B ZIPR1 @V50A2B5 00978000
  981. SPACE 1 00979000
  982. ZIPR1 SLR R1,R1 NO SUBSTITUTABLES FOR ERM @V2B2638 00980000
  983. SPACE 00981000
  984. BADARG ICM R0,B'1110',MODID+3 MODULE ID FOR MSG @V2B2638 00982000
  985. CALL DMKERMSG SEND ERROR MESSAGE @V2B2638 00983000
  986. SPACE 00984000
  987. * 00985000
  988. * AFTER ALL MESSAGES DMKERMSG RETURNS TO DMKCFM DIRECTLY. 00986000
  989. * EXCEPT MSG040, WHICH RETURNS HERE AND SUBSEQUENTLY RETURNS @V60BEBC 00987000
  990. * BACK TO THE DEVICE LIST SCAN ROUTINE OF THE SEEKS PROCESSOR @V60BEBC 00988000
  991. * @V60BEBC 00989000
  992. LM R1,R2,SAVEWRK4 RESTORE R1 & R2 @V60BEBC 00990000
  993. LM R6,R8,SAVEWRK6 DITTO IO SCAN REGS @V60BEBC 00991000
  994. B ERRETURN BACK TO SCAN ROUTINE @V60BEBC 00992000
  995. EJECT 00993000
  996. *********************************************************************** 00994000
  997. * 00995000
  998. * CONSTANTS, WORK AREAS, EQUATES 00996000
  999. * 00997000
  1000. *********************************************************************** 00998000
  1001. SPACE 1 00999000
  1002. * 01000000
  1003. * 01001000
  1004. TIMVAL DS 0D @V50A2B5 01002000
  1005. DC CL8' ' @V50A2B5 01003000
  1006. TEMPSTRT DC CL8' ' @V50A2B5 01004000
  1007. TEMPEND DC CL8' ' @V50A2B5 01005000
  1008. SET24 DC XL8'000141DD76000000' @V50A2B5 01006000
  1009. DS 0F @V50A2B5 01007000
  1010. TIMEFROM DS 4H @V50A2B5 01008000
  1011. TIMETO DS 4H @V50A2B5 01009000
  1012. MONOPTAB DS 0F @V60BEBC 01010000
  1013. DC H'1',C'INCLUDE ' @V60BEBC 01011000
  1014. B SEINCLUD @V60BEBC 01012000
  1015. DC H'1',C'EXCLUDE ' @V60BEBC 01013000
  1016. B SEEXCLUD @V60BEBC 01014000
  1017. DC H'2',C'DELETE ' @V60BEBC 01015000
  1018. B SEDELETE @V60BEBC 01016000
  1019. DC H'2',C'DISPLAY ' @V60BEBC 01017000
  1020. B DISPLAY @V60BEBC 01018000
  1021. OPTABENO EQU (*-MONOPTAB)/14 @V60BEBC 01019000
  1022. TEMPTBL DS 40H @V60BEBC 01020000
  1023. TEMP DS H @V60BEBC 01021000
  1024. SEEKMSG DC C'--SEEKS CLUDED DEVICES' @V60BEBC 01022000
  1025. MSGBUFF DS CL40 @V60BEBC 01023000
  1026. EXCL DC C'EX' @V60BEBC 01024000
  1027. INCL DC C'IN' @V60BEBC 01025000
  1028. BLANK EQU C' ' @V60BEBC 01026000
  1029. DASH DC C'-' @V60BEBC 01027000
  1030. FORTY DC AL1(40) @V60BEBC 01028000
  1031. RETURN DC X'80' @V60BEBC 01029000
  1032. PARMTYPE DC X'00' @V60BEBC 01030000
  1033. INCLUDE EQU X'80' @V60BEBC 01031000
  1034. EXCLUDE EQU X'40' @V60BEBC 01032000
  1035. DELET EQU X'20' @V60BEBC 01033000
  1036. SEEKACTV DC X'00' @V60BEBC 01034000
  1037. RANGE EQU X'80' @V60BEBC 01035000
  1038. SEERMSG DC C'SELECTIVE SEEKS NOT CURRENTLY ACTIVE ' @V60BEBC 01036000
  1039. SEACMSG DC C'SEEK,STOP,OR CLOSE CMD IN PROGRESS,RETRY' @VA09747 01037100
  1040. STOPMSG DC C'MONITOR HAS BEEN MANUALLY STOPPED' @V50A2B5 01038000
  1041. LENMSG EQU 21 LENGTH OF DISPLAY MESSAGE @V2B2638 01039000
  1042. MONTINT EQU 60 DEFAULT INTERVAL = 60 SEC @V2B2638 01040000
  1043. EJECT 01041000
  1044. LTORG @V2B2638 01042000
  1045. EJECT 01043000
  1046. SEEKLIST DSECT @V60BEBC 01044000
  1047. SEEKDEVS DS H @V60BEBC 01045000
  1048. SEEKSIZE DS H @V60BEBC 01046000
  1049. SEEKTYPE DS H @V60BEBC 01047000
  1050. SEEKHDR EQU *-SEEKLIST @V60BEBC 01048000
  1051. SEEKENT DS H @V60BEBC 01049000
  1052. ENTLEN EQU *-SEEKENT @V60BEBC 01050000
  1053. SEEKHALF EQU SEEKHDR/2 @V60BEBC 01051000
  1054. COPY EQU @V2B2638 01052000
  1055. PSA @V2B2638 01053000
  1056. COPY MONBLOKS @V2B2638 01054000
  1057. COPY VMBLOK @V2B2638 01055000
  1058. COPY SAVE @V2B2638 01056000
  1059. COPY IOBLOKS @V2B2638 01057000
  1060. COPY CORE @V2B2638 01058000
  1061. COPY DEVTYPES @V2B2638 01059000
  1062. COPY RBLOKS @V2B2638 01060000
  1063. COPY TIMER @V2B2638 01061000
  1064. COPY UDIRECT @V50A2B5 01062000
  1065. END 01063000