Table of Contents

DMKCFO Source

References

Source Listing

DMKCFO.ASSEMBLE.txt
  1. CFO TITLE 'DMKCFO (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT @V326538 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCFO 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * PROCESS PRIVILEGED SET 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. * DMKCFOEX - ENTRY FOR 'SET' COMMANDS (CLASS A,B,C AND F) 00018000
  19. * 00019000
  20. * ENTRY CONDITIONS - 00020000
  21. * 00021000
  22. * GPR0 = LENGTH OF THE SET OPERAND 00022000
  23. * GPR1 = ADDRESS OF THE SET OPERAND 00023000
  24. * GPR6 = OPERAND INDEX FROM DMKCFC 00024000
  25. * GPR9 = COMMAND LINE ADDRESS 00025000
  26. * GPR12 = ADDRESS OF ENTRY POINT 00026000
  27. * GPR13 = ADDRSS OF THE SAVEAREA 00027000
  28. * 00028000
  29. * EXIT CONDITIONS - 00029000
  30. * 00030000
  31. * NORMAL - 00031000
  32. * GPR2 = 0 00032000
  33. * 00033000
  34. * ERROR - 00034000
  35. * GPR2 = ERROR MESSAGE CODE NUMBER 00035000
  36. * 00036000
  37. * 00037000
  38. * CALLS TO OTHER ROUTINES - 00038000
  39. * 00039000
  40. * DMKSCNFD - LOCATE ARGUMENTS IN THE COMMAND LINE 00040000
  41. * DMKQCNWT - TO OUTPUT MESSAGES TO TERMINAL 00041000
  42. * DMKSCNAU - TO FIND USERS VMBLOK ADDRESS 00042000
  43. * DMKCVTBH - TO CONVERT BINARY TO HEX 00043000
  44. * DMKCVTDB - TO CONVERT DECIMAL TO BINARY 00044000
  45. * DMKCVTHB - TO CONVERT HEX TO BINARY 00045000
  46. * DMKSCNRU - TO GET RDEVBLOK ADDRESS 00046000
  47. * DMKSCNRA - TO GET THE DEVICE ADDRESS IN CCU FORM 00046100
  48. * DMKFREE - TO OBTAIN A BLOCK OF FREE STORAGE 00047000
  49. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00048000
  50. * DMKQCNRD - TO READ A RESPONSE FROM THE TERMINAL 00049000
  51. * DMKCVTDT - TO GET THE DATE AND TIME 00050000
  52. * DMKSTKIO - TO STACK A TIMER REQUEST BLOK (TRQBLOK) 00051000
  53. * DMKSTKOP - TO RESUME EXECUTION ON THE OTHER PROCESSOR (AP) 00051100
  54. * DMKMCIMS - TO ENABLE MACHINE CHECK RECORDING 00052050
  55. * GPR2 - MESSAGE INDICATOR 00052100
  56. * DMKERMSG - TO SEND AN ERROR MESSAGE 00053000
  57. * DMKSCHRT - TO FREE A TIMER REQUEST BLOK 00054000
  58. * 00055000
  59. * TABLES/WORKAREAS - 00056000
  60. * 00057000
  61. * VMBLOK 00058000
  62. * MICBLOK 00059000
  63. * 00060000
  64. * REGISTER USAGE - 00061000
  65. * 00062000
  66. * GPR0 = ARGUMENT LENGTH (RETURN BY DMKSCNFD) 00063000
  67. * GPR1 = ADDRESS OF ARGUMENT (RETURN BY DMKSCNFD) 00064000
  68. * GPR9 = ADDRESS OF COMMAND LINE 00065000
  69. * GPR11 = ADDRESS OF USERS VMBLOK 00066000
  70. * GPR12 = BASE REGISTER 00067000
  71. * GPR13 = ADDRESS OF SAVEAREA 00068000
  72. * 00069000
  73. * COMMAND LINE FORMAT - 00070000
  74. * 00071000
  75. * CLASS A 00072000
  76. * +-------+-------------------------+ 00073000
  77. * | SET | FAVORED USERID <XX> | 00074000
  78. * | | <OFF> | 00075000
  79. * | | | 00076000
  80. * | | RESERVE USERID XX | 00077000
  81. * | | OFF | 00078000
  82. * | | SASSIST ON <<PROC> XX>| 00079100
  83. * | | OFF | 00080000
  84. * ' ' CPASSIST ON <<PROC> XX>' @V5DAACD 00080110
  85. * | | OFF | 00080200
  86. * | | | 00080300
  87. * | | MAX NN | 00080400
  88. * +-------+-------------------------+ 00081000
  89. * 00082000
  90. * 00083000
  91. * CLASS B 00084000
  92. * +-------+-------------------------+ 00085000
  93. * | SET | LOGMSG N | 00086000
  94. * | | NULL | 00087000
  95. * | | | 00088000
  96. * | | DUMP AUTO | 00089000
  97. * | | RADDR | 00090000
  98. * +-------+-------------------------+ 00091000
  99. * 00092000
  100. * 00093000
  101. * CLASS C 00094000
  102. * +-------+-------------------------+ 00095000
  103. * | SET | PRIORITY USERID NN | 00098000
  104. * +-------+-------------------------+ 00099000
  105. * 00100000
  106. * 00101000
  107. * CLASS F 00102000
  108. * 00103000
  109. * +-------+--------------------------------------------------+ 00104000
  110. * | SET | RECORD ON RADDR LIMIT NN BYTE NN BIT N | 00105000
  111. * | | AND BYTE NN BIT NN | 00106000
  112. * | | OR | 00107000
  113. * | | OFF | 00108000
  114. * | | MODE MAIN/RETRY RECORD/QUIET CPUID | 00109100
  115. * +-------+--------------------------------------------------+ 00110000
  116. * 00111000
  117. * OPERATION - 00112000
  118. * 00113000
  119. * 1. CALL DMKSCNFD TO SEE IF THERE IS A SECOND ARGUMENT. IF 00114000
  120. * NONE IS FOUND, SET A FLAG TO INDICATE THIS AND CONTINUE. 00115000
  121. * IF HAVE ONE, SAVE IT IN SAVEWRK5/6. 00116000
  122. * 2. USING THE INDEX SET BY DMKCFC, BRANCH TO THE APPROPRIATE 00117000
  123. * ROUTINE TO HANDLE THE REQUEST. 00118000
  124. * 00119000
  125. * TSTONOFF - THIS IS THE SUBROUTINE TO TEST THE ON/OFF 00120000
  126. * ARGUMENT. IF THE ARGUMENT = ON, RETURN ON REGISTER 8. 00121000
  127. * IF THE ARGUMENT = OFF, RETURN ON REGISTER 10. IF NO 00122000
  128. * OTHER ARGUMENTS ARE LEGAL, CALL DMKERMSG TO SEND ERROR 00123000
  129. * MESSAGE DMKCFS026E. IF SOMETHING ELSE LEGAL, RETURN 00124000
  130. * ON REGISTER 7. 00125000
  131. * 00126000
  132. * SET PRIORITY 00127000
  133. * 1. SETPRIOR - THIS ROUTINE WILL PROCESS THE SET PRIORITY 00128000
  134. * REQUEST. FIRST CALL DMKSCNFD TO GET THE 'NN' ARGUMENT. 00129000
  135. * IF NONE IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00130000
  136. * DMKCFO026E. 00131000
  137. * 2. CALL DMKSCNAU TO FIND THE USER VMBLOK. IF BLOK NOT 00132000
  138. * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO045E. 00133000
  139. * 3. CALL DMKCVTDB TO CONVERT THE 'NN' ARGUMENT TO BINARY. 00134000
  140. * IF THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE 00135000
  141. * DMKCFO003E. 00136000
  142. * 4. STORE THE 'NN' VALUE IN THE VMBLOK. 00137000
  143. * 5. EXIT - RETURN TO DMKCFM 00138000
  144. * 00139000
  145. * SET DUMP 00140000
  146. * 1. SETDUMP - THIS ROUTINE WILL PROCESS THE SET DUMP REQUEST. 00141000
  147. * CALL DMKSCNFD TO GET NEXT ARGUMENT. IF NONE FOUND, GO TO 00142000
  148. * STEP 3. 00143000
  149. * 2. IF ARGUMENT IS 'ALL' TURN ON THE ALL FLAG AND GO TO 00144000
  150. * STEP 4. IF NOT ALL, CONTINUE WITH NEXT STEP. 00145000
  151. * 3. RESET THE ALL FLAG. 00146000
  152. * 4. IF A DEVICE IS ALREADY ACTIVE AS A DUMP DEVICE, RETURN IT 00147000
  153. * TO THE SYSTEM. THEN IF THIS IS AN AUTO REQUEST, GO TO 00148000
  154. * STEP 9. 00149000
  155. * 5. CALL DMKCVTHB TO CONVERT THE RADDR TO BINARY. IF THE 00150000
  156. * CONVERT FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE 00151000
  157. * DMKCFO021E. 00152000
  158. * 6. CALL DMKSCNRU TO FIND THE DEVICE BLOKS. IF NOT FOUND, 00153000
  159. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO040E. 00154000
  160. * 7. IF THE DEVICE IS A TAPE THAT IS DEDICATED, CALL DMKERMSG 00155000
  161. * TO SEND ERROR MESSAGE DMKCFO140E. IF A NONPRINTER TYPE 00156000
  162. * UR DEVICE, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO006E. 00157000
  163. * IF THE DEVICE IS OFFLINE, CALL DMKERMSG TO SEND ERROR 00158000
  164. * MESSAGE DMKCFO046E. 00159000
  165. * 8. STORE THE DEVICE ADDRESS IN THE DUMP DEVICE WORD 00160000
  166. * AND EXIT. 00161000
  167. * 9. GET THE DEVICE ADDRESS FOR THE AUTO DASD DEVICE 00162000
  168. * AND GO TO STEP 8. 00163000
  169. * 00164000
  170. * SET LOGMSG 00165000
  171. * 1. SETLOGM - ROUTINE TO PROCESS SET LOGMSG REQUEST. IF NO 00166000
  172. * SECOND ARGUMENT , GO TO STEP 5. IF THE SECOND ARGUMENT 00167000
  173. * IS A NULL REQUEST, GO TO STEP 8. 00168000
  174. * 2. CALL DMKCVTDB TO CONVERT THE LINE NUMBER TO BINARY. IF 00169000
  175. * THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE 00170000
  176. * DMKCFO026E. 00171000
  177. * 3. SEARCH FOR THE LINE NUMBER. IF NOT FOUND, CALL DMKERMSG 00172000
  178. * TO SEND ERROR MESSAGE DMKCFO041E. IF THE LINE IS FOUND, 00173000
  179. * BAL TO STEP 9 TO READ THE INPUT LINE. IF A NULL LINE 00174000
  180. * IS ENTERED, GO TO NEXT STEP. ELSE - OVERLAY THE OLD 00175000
  181. * MESSAGE WITH THE NEW AND GO TO STEP 10. 00176000
  182. * 4. CALL DMKFRET TO FRET THE OLD MESSAGE BLOK AND THEN GO 00177000
  183. * TO STEP 10. 00178000
  184. * 5. FIND THE LAST LOGMSG IN THE CHAIN. THEN BAL TO STEP 9 00179000
  185. * TO READ THE INPUT LINE. IF RECEIVE A NULL LINE, GO TO 00180000
  186. * STEP 7. ELSE CONTINUE WITH NEXT STEP. 00181000
  187. * 6. CALL DMKFREE TO GET STORAGE FOR A NEW MESSAGE BLOK. MOVE 00182000
  188. * THE MESSAGE INTO THE BLOK AND GO TO STEP 5. 00183000
  189. * 7. CALL DMKFRET TO FRET THE READ BUFFER AND GO TO STEP 10. 00184000
  190. * 8. FOR EACH EXISTING MESSAGE BLOK, CALL DMKFRET TO RETURN 00185000
  191. * THE BLOK TO FREE STORAGE. THEN GO TO STEP 10. 00186000
  192. * 9. CALL DMKQCNWT TO SEND THE PROMPT MESSAGE 'LOGMSG:'. 00187000
  193. * THEN CALL DMKFREE TO OBTAIN STORAGE FOR A READ BUFFER. 00188000
  194. * SET UP THE RETURN FROM THE READ TO POINT TO THE ADDRESS 00189000
  195. * CONTAINED IN THE BAL REGISTER 10. THEN CALL DMKQCNRD 00190000
  196. * TO READ THE INPUT LINE. 00191000
  197. * 10. RESEQUENCE THE LINE NUMBERS IN ALL EXISTING MESSAGE 00192000
  198. * BLOKS. THEN CALL DMKCVTDT TO GET THE DATE AND TIME. 00193000
  199. * UPDATE THE DATE AND TIME FOR CHANGING THE LOGMSG. THIS 00194000
  200. * WILL BE USED BY LOGON. THEN EXIT. 00195000
  201. * 00196000
  202. * SET RESERVED 00197000
  203. * 1. SETRESRV - SET FLAG TO INDICATE A RESERVE REQUEST AND 00198000
  204. * GO TO STEP 2. 00199000
  205. * 00200000
  206. * SET FAVORED 00201000
  207. * 2. SETFAVOR - ROUTINE TO PROCESS THE SET FAVORED REQUEST. 00202000
  208. * IF THERE IS NO SECOND ARGUMENT, CALL DMKERMSG TO SEND 00203000
  209. * ERROR MESSAGE DMKCFO026E. IF HAVE ONE, CALL DMKSCNAU TO 00204000
  210. * FIND USERID VMBLOK. IF CAN'T FIND, CALL DMKERMSG TO 00205000
  211. * SEND ERROR MESSAGE DMKCFO045E. IF HAVE USER, CALL DMKSCNFD 00206000
  212. * TO FIND NEXT ARGUMENT. IF NONE IS FOUND, GO TO STEP 5. 00207000
  213. * IF ARGUMENT=OFF, GO TO STEP 6 - ELSE CONTINUE. 00208000
  214. * 3. CALL DMKCVTDB TO CONVERT THE XX TO BINARY. IF THE 00209000
  215. * CONVERT FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE 00210000
  216. * DMKCFO026E. IF OK, CHECK IF THIS IS A RESERVE REQUEST. 00211000
  217. * IF IT IS, GO TO STEP 7 - ELSE CONTINUE. 00212000
  218. * 4. IF A FAVORED PERCENTAGE USER IS ALREADY ACTIVE, CALL 00213000
  219. * DMKERMSG TO SEND ERROR MESSAGE DMKCFO175E. IF NOT CALL 00214000
  220. * DMKFREE TO OBTAIN STORAGE FOR A TRQBLOK(TIMER BLOK). 00215000
  221. * INITIALIZE THE TIMER BLOK AND SET THE FAVORED AND 00216000
  222. * PERCENTAGE FLAGS IN THE VMBLOK. THEN CALL DMKSTKIO TO 00217000
  223. * PUT THE TIMER BLOK ON THE QUEUE. THEN EXIT. 00218000
  224. * 5. IF THIS IS A RESERVE REQUEST, CALL DMKERMSG TO SEND 00219000
  225. * ERROR MESSAGE DMKCFO026E. IF FAVORED REQUEST, SET THE 00220000
  226. * FAVORED FLAG IN THE VMBLOK AND EXIT. 00221000
  227. * 6. IF THIS IS A RESERVE REQUEST, GO TO STEP 8. IF FAVORED, 00222000
  228. * RESET THE FAVORED FLAG IN THE VMBLOK AND EXIT. 00223000
  229. * 7. IF RESERVE IS ALREADY ACTIVE FOR OTHER THAN THIS USER 00224000
  230. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO175E. IF NOT, 00225000
  231. * CHECK IF THE NUMBER OF PAGES SPECIFIED WILL FIT IN THIS 00226000
  232. * VIRTUAL MACHINE. IF NOT CALL DMKERMSG TO SEND ERROR 00227000
  233. * MESSAGE DMKCFO026E. IF THIS IS OK, TURN ON THE RESERVE 00228000
  234. * FLAG IN THE USERS VMBLOK. THEN GO TO STEP 9. 00229000
  235. * 8. TURN OFF THE RESERVE FLAG IN THE VMBLOK. 00230000
  236. * 9. RESET THE RESERVE FLAGS IN THE CORTABLE AND EXIT. 00231000
  237. * 00232000
  238. * SET RECORD 00233000
  239. * 1. SETRECD - ROUTINE FOR THE SET RECORD REQUEST. 00234000
  240. * IF RECORDING ALREADY ACTIVE, CALL DMKSCNRU TO GET THE 00235000
  241. * RDEVBLOK ADDRESS FOR THE ACTIVE DEVICE. IF NOT ACTIVE 00236000
  242. * JUST GO TO NEXT STEP. 00237000
  243. * 2. SET UP FOR RETURN FRON THE SUBROUTINE LABELED TSTONOFF 00238000
  244. * AND BAL R10 TO THAT ROUTINE. 00239000
  245. * 3. IF RETURN FOR OFF, RESET THE IRMFLAGS IN THE RDEVBLOK 00240000
  246. * AND CALL DMKFRET TO FRET THE IRMBLOK. THEN EXIT. 00241000
  247. * 4. IF THE RETURN IS FOR 'CPU', CALL DMKMCIMS THEN EXIT. 00242100
  248. * 5. IF RETURN FOR ON, CHECK IF IRM IS ACTIVE. IF NOT ,CALL 00243000
  249. * DMKFREE TO OBTAIN STORAGE FOR AN IRMBLOK. IN ANY EVENT 00244000
  250. * CLEAR THE IRMBLOK TO BINARY ZERO. 00245000
  251. * 7. CALL DMKSCNFD TO GET THE NEXT ARGUMENT WHICH SHOULD BE 00246000
  252. * A RADDR. IF ARGUMENT IS NOT FOUND, CALL DMKERMSG TO 00247000
  253. * SEND ERROR MESSAGE DMKCFO07. IF FOUND, CALL 00248000
  254. * DMKCVTHB TO CONVERT THE ADDRESS TO BINARY. IF CONVERT 00249000
  255. * FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO07. 00250000
  256. * IF CONVERT IS GOOD CALL DMKSCNRU TO GET THE DEVICE BLOK 00251000
  257. * ADDRESSES. IF CAN'T FIND, CALL DMKERMSG TO SEND ERROR 00252000
  258. * MESSAGE DMKCFO040E. 00253000
  259. * 7. CALL DMKSCNFD TO GET THE NEXT ARGUMENT. IF NONE FOUND, 00254000
  260. * GO TO STEP 14. IF ONE IS FOUND, CHECK THE ARGUMENT. IF 00255000
  261. * ARGUMENT=LIMIT, GO TO STEP 8; FOR 'AND', GO TO STEP 00256000
  262. * 9; FOR 'OR', GO TO STEP 10; FOR 'BYTE', GO TO STEP 00257000
  263. * 11; FOR 'BIT', GO TO STEP 12; AND IF NONE OF THESE, 00258000
  264. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO003E. 00259000
  265. * 8. BAL R10 TO STEP 13 TO GET THE 'NN' ARGUMENT. STORE THE 00260000
  266. * LIMIT VALUE IN THE IRMBLOK AND GO TO STEP 7. 00261000
  267. * 9. IF 'OR' HAS BEEN PREVIOSLY PROCCESSED, CALL DMKERMSG TO 00262000
  268. * SEND ERROR MESSAGE DMKCFO013E. ELSE SET THE 'AND' FLAG 00263000
  269. * IN THE IRMBLOK AND GO TO STEP 7. 00264000
  270. * 10. IF THE 'AND' OPTION HAS BEEN PREVIOSLY PROCCESSED, CALL 00265000
  271. * DMKERMSG TO SEND ERROR MESSAGE DMKCFO013E. ELSE SET THE 00266000
  272. * 'OR' FLAG IN THE IRMBLOK AND GO TO STEP 7. 00267000
  273. * 11. BAL R10 TO STEP 13 TO GET THE BYTE NUMBER. IF NO BYTES 00268000
  274. * HAVE BEEN STORED, STORE THIS VALUE INTO IRMBYT1 00269000
  275. * OF THE IRMBLOK. IF THE SECOND BYTE ARGUMENT, STORE INTO 00270000
  276. * IRMBYT2 OF THE IRMBLOK. THEN GO TO STEP 7. IF THIS IS 00271000
  277. * THE THIRD REQUEST FOR A BYTE IN THE COMMAND LINE, CALL 00272000
  278. * DMKERMSG TO SEND ERROR MESSAGE DMKCFO003E. 00273000
  279. * 12. BAL R10 TO STEP 13 TO GET THE BIT NUMBER. IF THIS IS 00274000
  280. * THE FIRST BIT REQUEST, STORE THE VALUE INTO IRMBIT1 00275000
  281. * OF THE IRMBLOK. IF THE SECOND NUMBER, STORE IT 00276000
  282. * INTO IRMBIT2 OF THE IRMBLOK. THEN GO TO STEP 00277000
  283. * 7. IF THIS IS THE THIRD REQUEST IN THE COMMAND LINE, 00278000
  284. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO003E. 00279000
  285. * 13. CALL DMKSCNFD TO GET 'NN' ARGUMENT. IF NO ARGUMENT 00280000
  286. * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFO026E. 00281000
  287. * IF FOUND, CALL DMKCVTDB TO CONVERT THE NUMBER TO BINARY. 00282000
  288. * IF THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR 00283000
  289. * MESSAGE DMKCFO026E. IF GOOD CONVERT, RETURN ON REG. 10. 00284000
  290. * 14. IF 'LIMIT' AND AT LEAST ONE 'BYTE/BIT' HAVE NOT BEEN 00285000
  291. * PROCCESSED, CALL DMKERMSG TO SEND ERROR MESSAGE 00286000
  292. * DMKCFO026E. IF OK, SET THE RECORD FLAG IN THE RDEVBLOK 00287000
  293. * AND EXIT. 00288000
  294. * 00289000
  295. * SET SASSIST 00290000
  296. * 1. SETSAS - ROUTINE TO PROCESS SET SASSIST . SET UP FOR 00291000
  297. * RETURN FROM TSTONOFF ROUTINE, AND BAL R10 TO THAT RTN. 00292000
  298. * 2. REMEMBER IF ON|OFF, SET DEFAULT EXIT = SETCOMP 00293100
  299. * 3. IF WE ARE IN UP MODE, GO DIRECTLY TO STEP 7 00293140
  300. * 3. SCAN FOR MORE PARAMETERS. IF NONE, DO 7 FOR BOTH PROCESSOR 00293180
  301. * 4. IF THERE ARE MORE PARAMETERS, BYPASS 'PROC' IF SPECIFIED, 00293220
  302. * TRY TO CONVERT PARAMETER TO BINARY. EXIT WITH 00293260
  303. * DMKCFO003 ON ERROR 00293300
  304. * 5. IF PARAMETER = OUR PROCESSOR ADDRESS, GO TO STEP 7 00293340
  305. * 6. IF PARAMETER = OTHER PROCESSOR ADDRESS, STACK A CPEXBLOK 00293380
  306. * TO RESUME ON THE OTHER PROCESSOR, 00293420
  307. * ELSE EXIT WITH ERROR MESSAGE DMKCFO188. 00293460
  308. * 7. IF OFF,TURN OFF CPMICON IN PSA 00293500
  309. * IF ON, 00293540
  310. * A) IF VM ASSIST IS AVAILABLE FOR THE PROCESSOR, TURN ON 00293580
  311. * CPMICON, ELSE ISSUE DMKCFO184, ADDING OPTIONAL TEXT IF 00293620
  312. * WE ARE IN AP MODE 00293660
  313. * IF WE ARE IN UP MODE, EXIT. ELSE, WHEN BOTH PROCESSORS 00293700
  314. * ARE TO BE SET, COMPARE PROC ADDR TO DETERMINE WHETHER 00293740
  315. * OR NOT TO SWITCH AND REPEAT 7 A SECOND TIME 00293780
  316. * 00296100
  317. * SET CPASSIST 00296200
  318. * 1. SETCPA - ROUTINE TO PROCESS SET CPASSIST. SET UP FOR 00296300
  319. * RETURN FROM TSTONOFF ROUTINE, AND BAL R10 TO THAT RTN. 00296400
  320. * 2. IF RETURN FOR OFF, TURN OFF CPASTON BIT IN PSA AND CHAIN 00296500
  321. * THROUGH VMBLOKS, TURNING OFF THE CP ASSIST FLAG IN VMMCR6, 00296600
  322. * EXITING WHEN BACK TO THE STARTING VMBLOK. 00296700
  323. * 3. IF RETURN FOR ON, SEE IF CP ASSIST IS AVAILABLE ON THE 00296800
  324. * COMPUTER. IF IT ISN'T, ISSUE MSG DMKCFO186E. IF IT IS 00296900
  325. * AVAILABLE, TURN ON CPASTON BIT IN PSA AND CHAIN THROUGH 00297000
  326. * VMBLOKS, TURNING ON THE CP ASSIST FLAG IN VMMCR6, EXIT 00297100
  327. * AFTER RETURNING TO THE STARTING VMBLOK. 00297200
  328. * 00297300
  329. * SET MODE 00297310
  330. * 1. CLEAR MESSAGE INDICATORS. 00297320
  331. * 2. IF SET MODE MAIN, CALL DMKMCIMS. 00297335
  332. * 3. IF SET MODE RETRY, SET THE RETRY MESSAGE SWITCH AND 00297340
  333. * CALL DMKMCIMS. 00297355
  334. * 00297360
  335. * SET MAX 00297361
  336. * 1. IF NO SECOND ARGUEMENT IS SPECIFIED, DEFAULT TO ZERO. 00297362
  337. * OTHERWISE CALL DMKCVTDB TO CONVERT DECIMAL NUMBER TO 00297363
  338. * BINARY. 00297364
  339. * 2. STORE THE MAXIMUM NUMBER OF USERS ALLOWED ON THE SYSTEM 00297365
  340. * 00297366
  341. * ERROR MESSAGES - 00298000
  342. * DMKCFO003E INVALID OPTION - (OPTION) 00299000
  343. * DMKCFO006E INVALID DEVICE TYPE - (ADDR) 00300000
  344. * DMKCFO013E CONFLICTING OPTION - (OPTION) 00301000
  345. * DMKCFO020E USERID MISSING OR INVALID 00302000
  346. * DMKCFO021E RADDR MISSING OR INVALID 00303000
  347. * DMKCFO026E OPERAND MISSING OR INVALID 00304000
  348. * DMKCFO040E DEV (ADDR) DOES NOT EXIST 00305000
  349. * DMKCFO041E LOGMSG (NN) DOES NOT EXIST 00306000
  350. * DMKCFO045E (USERID) NOT LOGGED ON 00307000
  351. * DMKCFO046E (TYPE RADDR) OFFLINE 00308000
  352. * DMKCFO140E (TYPE RADDR) ATTACHED TO (USERID) 00309000
  353. * DMKCFO143E (TYPE RADDR) IN USE BY SYSTEM 00310000
  354. * DMKCFO175E (FAVORED/RESERVED) ALREADY IN USE BY (UESRID) 00311000
  355. * DMKCFO184E VM ASSIST NOT AVAILABLE ( ON PROC XX) @V4075A0 00312050
  356. * DMKCFO186E CP ASSIST NOT AVAILABLE 00312100
  357. * DMKCFO188E SPECIFIED PROCESSOR UNAVAILABLE @V4075A0 00312150
  358. *. 00313000
  359. EJECT 00314000
  360. COPY OPTIONS @V326538 00315000
  361. COPY LOCAL @V326538 00316000
  362. SPACE 3 00317000
  363. DMKCFO CSECT @V326538 00318000
  364. SPACE 00319000
  365. MODID DC CL8'DMKCFO' @V326538 00320000
  366. SPACE 00321000
  367. SPACE 00322000
  368. USING VMBLOK,R11 @V326538 00323000
  369. USING SAVEAREA,R13 @V326538 00324000
  370. USING PSA,R0 @V326538 00325000
  371. USING BUFFER,R9 @V326538 00326000
  372. SPACE 3 00327000
  373. EXTRN DMKERMSG,DMKCVTBH @V326538 00328000
  374. EXTRN DMKSCNFD @V326538 00329000
  375. EXTRN DMKMCIMS @VA10453 00330100
  376. EXTRN DMKSCHAP,DMKSCHAU @V326538 00331000
  377. EXTRN DMKSCHQ1,DMKSCHQ2,DMKSCHDL @V326538 00332000
  378. EXTRN DMKPTRRL @V326538 00333000
  379. EXTRN DMKIOEIR @V326538 00334000
  380. EXTRN DMKSCNAU @V326538 00335000
  381. EXTRN DMKCVTDB @V326538 00336000
  382. EXTRN DMKSCHPG,DMKDSPNP @V326538 00337000
  383. EXTRN DMKCFPRR,DMKBLDEC @V326538 00338000
  384. EXTRN DMKQCNRD @V326538 00339000
  385. EXTRN DMKDMPDV @V326538 00340000
  386. EXTRN DMKDMPAU,DMKDMPSW @V326538 00341000
  387. EXTRN DMKCVTHB @V326538 00342000
  388. EXTRN DMKSCNRU @V326538 00343000
  389. EXTRN DMKCVTDT @V326538 00344000
  390. EXTRN DMKSCHRT,DMKSCH80 @V326538 00345000
  391. EXTRN DMKPTRRU,DMKPTRRC,DMKSYSRV @V326538 00346000
  392. EXTRN DMKSCNRA @V407438 00348000
  393. EXTRN DMKSTKOP @V4075A0 00348100
  394. EXTRN DMKVATAB HRC068DK 00348120
  395. EXTRN DMKVATBC HRC068DK 00348140
  396. EXTRN DMKVATMD HRC068DK 00348160
  397. EXTRN DMKSLC HRC068DK 00348180
  398. EJECT 00349000
  399. * 00350000
  400. * EQUATES FOR SAVEWRK1 00351000
  401. * 00352000
  402. NARGTWO EQU X'80' NO SECOND ARGUMENT FOUND @V326538 00353000
  403. RESRVTYP EQU X'40' RESERVE REQUEST @V326538 00354000
  404. FRSTBYTE EQU X'20' FIRST BYTE FOR RECORDING @V326538 00355000
  405. SECBYTE EQU X'10' SECOND BYTE FOR RECORDING @V326538 00356000
  406. FRSTBIT EQU X'08' FIRST BIT FOR RECORDING @V326538 00357000
  407. SECBIT EQU X'04' SECOND BIT FOR RECORDING @V326538 00358000
  408. WASON EQU X'02' PARM WAS 'ON' @V4075A0 00358050
  409. SPACE 00359000
  410. DMKCFOEX RELOC @V326538 00360000
  411. SVC 16 DROP CFC --> CFO SAVE AREA @V326538 00361000
  412. MVC SAVEWRK1(4),ZEROES ZERO OUT FLAG AREA @V326538 00362000
  413. MVC SAVEWRK2(8),BLANKS BLANK OUT WORK AREA @V326538 00363000
  414. MVC SAVEWRK4(24),SAVEWRK2 . . @V326538 00364000
  415. LR R3,R0 LENGTH OF ARG. TO GPR3 @V326538 00365000
  416. BCTR R3,0 REDUCE FOR EX @V326538 00366000
  417. EX R3,MOVEARG1 MOVE FIRST ARG TO SAVEWRK2 @V326538 00367000
  418. LM R0,R1,BUFNXT GET BUFFER COUNTERS @V326538 00368000
  419. STM R0,R1,SAVEWRK7 SAVE FOR RESCAN AND DATA @V326538 00369000
  420. CALL DMKSCNFD GET SECOND IF ANY @V326538 00370000
  421. BNZ NOARG2 BRANCH IF NOT THERE @V326538 00371000
  422. LR R4,R0 LENGTH OF ARG TO GPR4 @V326538 00372000
  423. C R4,F8 ARG. MORE THAN 8 CHAR. ? @V326538 00373000
  424. BH CFO026 BRANCH IF MORE THAN EIGHT @V326538 00374000
  425. BCTR R4,0 @V326538 00375000
  426. EX R4,MOVEARG2 MOVE SECOND ARG TO SAVEWRK5 @V326538 00376000
  427. B SETBRTAB NOW GO TO APPROPRIATE ROUTINE @V326538 00377000
  428. EJECT 00378000
  429. NOARG2 OI SAVEWRK1,NARGTWO INDICATE NO SECOND ARGUMENT @V326538 00379000
  430. SPACE 00380000
  431. SETBRTAB B SETTAB(R6) GO TO APPROPRIATE ROUTINE @V326538 00381000
  432. SPACE 00382000
  433. SETTAB DS 0F BRANCH TABLE @V326538 00383000
  434. B SETPRIOR SET PRIORITY @V326538 00384000
  435. B SETFAVOR SET FAVOR @V326538 00385000
  436. B SETRESRV SET RESERVED @V326538 00386000
  437. B SETSAS SET SYSTEM ASSIST @V326538 00387000
  438. B SETCPA SET CP ASSIST @V386198 00387100
  439. B SETRECD SET RECORDING @V326538 00388000
  440. B RECDCPU SET MCHK MODE @V326538 00389000
  441. B SETDUMP SET DUMP @V326538 00390000
  442. B SETLOGM SET LOG MESSAGE @V326538 00391000
  443. B SETMAX SET MAX USERS HRC018DK 00391100
  444. B SETSTB SET STBYPASS VR/OFF HRC068DK 00391120
  445. SETTABE EQU * END OF BRANCH TABLE @V326538 00392000
  446. SPACE 00393000
  447. SETCOMP EQU * COMMAND COMPLETE - NO MESSAGE @V326538 00394000
  448. EXIT @V326538 00395000
  449. SPACE 00396000
  450. MOVEARG1 MVC SAVEWRK2(0),0(R1) @V326538 00397000
  451. MOVEARG2 MVC SAVEWRK5(0),0(R1) @V326538 00398000
  452. EJECT 00399000
  453. ***** 00400000
  454. * 00401000
  455. * SET PRIORITY COMMAND 00402000
  456. * 00403000
  457. ***** 00404000
  458. SPACE 00405000
  459. SETPRIOR EQU * SET USER DISPATCH PRIORITY @V326538 00406000
  460. TM SAVEWRK1,NARGTWO WAS USERID SPECIFIED ? @V326538 00407000
  461. BO CFO020 NO -- USERID MISSING @V326538 00408000
  462. CALL DMKSCNAU R0,R1 STILL O.K. FROM SCAN @V326538 00409000
  463. BNZ CFO045 USERID NOT LOGGED ON @V326538 00410000
  464. LR R10,R1 VMBLOK ADDRESS TO GR10 @V326538 00411000
  465. CALL DMKSCNFD LOCATE 'NN' PARAMETER @V326538 00412000
  466. BNZ CFO026 OPERAND MISSING OR INVALID @V326538 00413000
  467. CL R0,F2 CANNOT BE MORE THAN TWO CHARS @V326538 00414000
  468. BH CFO026 . . .ELSE IT IS INVALID @V326538 00415000
  469. CALL DMKCVTDB CONVERT TO BINARY @V326538 00416000
  470. BNZ CFO026 WASN'T VALID DECIMAL INPUT @V326538 00417000
  471. STC R1,VMUPRIOR-VMBLOK(,R10) SET USER PRIORITY @V326538 00418000
  472. B SETCOMP ALL DONE - NO MESSAGE @V326538 00419000
  473. EJECT 00420000
  474. ***** 00421000
  475. * 00422000
  476. * SET FAVOR COMMAND 00423000
  477. * 00424000
  478. ***** 00425000
  479. SPACE 00426000
  480. SETFAVOR TM SAVEWRK1,NARGTWO USERID SPECIFIED ??? @V326538 00427000
  481. BO CFO020 USERID MISSING @V326538 00428000
  482. CALL DMKSCNAU GET USERID VMBLOK ADDRESS @V326538 00429000
  483. BNZ CFO045 NOT LOGGED ON @V326538 00430000
  484. LR R8,R1 SAVE VMBLOK ADDRESS @V326538 00431000
  485. CALL DMKSCNFD GET NEXT ARGUMENT @V326538 00432000
  486. BNZ SETFAVNP BRANCH IF NONE FOUND @V326538 00433000
  487. STM R0,R1,SAVEWRK8 SAVE ARGUMENT LENGTH AND ADDRESS @V326538 00434000
  488. CLC 0(3,R1),=C'OFF ' WAS 'OFF' SPECIFIED ? @V326538 00435000
  489. BE SETFAVOF YES - TAKE BRANCH @V326538 00436000
  490. CALL DMKCVTDB CONVERT TO BINARY @V326538 00437000
  491. BNZ BADFAVXX BRANCH IF BAD CONVERT @V326538 00438000
  492. TM SAVEWRK1,RESRVTYP RESERVE REQUEST ???? @V326538 00439000
  493. BO SETRESXX BRANCH IF IT IS @V326538 00440000
  494. LA R0,100 ... FOR ARITHMETIC @V326538 00441000
  495. LR R3,R0 COMPLEMENT AND TEST @V326538 00442000
  496. SR R3,R1 PERCENTAGE @V326538 00443000
  497. BM BADFAVXX PERCENTAGE .GT. 100 --- @V326538 00444000
  498. LTR R9,R1 ANY PERCENT GIVEN @V326538 00445000
  499. BZ BADFAVXX ZERO - NOT ALLOWED @V326538 00446000
  500. L R6,=A(DMKSCHAU) ASSURED EXCUTION USER @V326538 00447000
  501. L R7,0(,R6) CHECK IF ALL READY IN USE @V326538 00448000
  502. LTR R7,R7 IN USE NOW @V326538 00449000
  503. BZ FAVMCH NO - GIVE IT TO USER @V326538 00450000
  504. CLR R7,R8 IN USE BY THIS SAME USER @V326538 00451000
  505. BNE FAVINUSE NO - SEND ERROR MESSAGE @V326538 00452000
  506. FAVMCH ST R8,0(,R6) SAVE VMBLOK ADDR OF FAVORED USER @V326538 00453000
  507. LR R1,R8 SWITCH VMBLOKS @V407510 00454100
  508. SWTCHVM OPT=NOUPDT SWITCH TO FAVORED VMBLOK @V407510 00454200
  509. OI VMRSTAT,VMIDLE FORCE A QUEUE DROP SO @V326538 00457000
  510. CALL DMKSCHDL ACCOUNTING IS CORRECT @V326538 00458000
  511. NI VMRSTAT,X'FF'-VMIDLE REMOVE FROM IDLE STATE @V326538 00459000
  512. OI VMQLEVEL,VMAEX+VMAEXP FLAG ASSURED USER @V326538 00460000
  513. L R6,=A(DMKSCHQ1) ADDRESS OF QUE 1 TIME SLICE @V326538 00461000
  514. LM R2,R3,0(R6) GET QUE 1 TIME SLICE VALUE @V326538 00462000
  515. SRDL R2,12 DROP LOW 12 BITS @V326538 00463000
  516. MR R2,R9 MULTI BY PERCENT VALUE @V326538 00464000
  517. D R2,=F'100' GET PERCENT OF TIME SLICE @V326538 00465000
  518. SLR R2,R2 CLEAR HI ORDER @V326538 00466000
  519. SLDL R2,12 CONVERT BACK TO MICRO SECS @V326538 00467000
  520. L R7,=A(DMKSCHAP) ADDRESS OF QUE 1 PERCENTAGE @V326538 00468000
  521. STM R2,R3,0(R7) SAVE PERCENT IN MICRO SECS @V326538 00469000
  522. LM R0,R1,0(R6) RELOAD QUEUE 1 TIME SLICE @V326538 00470000
  523. SLR R1,R3 SUBTRACT OUT PERCENT FAVORED @V326538 00471000
  524. BC 8+2+1,*+8 SO THAT @V326538 00472000
  525. SL R0,F1 THE RESULT IS THAT PERCENT USER @V326538 00473000
  526. SLR R0,R2 WILL BE AT NORMAL PRIORITY @V326538 00474000
  527. STM R0,R1,8(R7) SAVE NORMAL PRIORITY TIME SLICE @V326538 00475000
  528. SPACE 1 00476000
  529. L R6,=A(DMKSCHQ2) GET ADDRESS OF QUE 2 TIME SLICE @V326538 00477000
  530. LM R2,R3,0(R6) PICK UP QUE 2 TIME SLICE VALUE @V326538 00478000
  531. SRDL R2,12 DROP LOW 12 BITS @V326538 00479000
  532. MR R2,R9 MULTI BY PERCENTAGE @V326538 00480000
  533. D R2,=F'100' GET ACTUAL PERCENT OF TIME SLICE @V326538 00481000
  534. SLR R2,R2 CLEAR OUT REMAINDER @V326538 00482000
  535. SLDL R2,12 CONVERT TO MICRO SECS @V326538 00483000
  536. L R7,=A(DMKSCHAP+16) ADDRESS OF QUE 2 PERCENTAGE @V326538 00484000
  537. STM R2,R3,0(R7) SAVE PERCENT IN MICRO SECS @V326538 00485000
  538. LM R0,R1,0(R6) RELOAD QUEUE 2 TIME SLICE @V326538 00486000
  539. SLR R1,R3 SUBTRACT OUT THE FAVORED @V326538 00487000
  540. BC 8+2+1,*+8 PERCENTAGE, SO THAT @V326538 00488000
  541. SL R0,F1 THE REMAINING PORTION OF THE @V326538 00489000
  542. SLR R0,R2 TIME SLICE IS AT NORMAL PRIORITY @V326538 00490000
  543. STM R0,R1,8(R7) SAVE PERCENT OF NORMAL PRIORITY @V326538 00491000
  544. OI VMQLEVEL,VMHIPRI GIVE USER HIGHEST PRIORITY @V326538 00492000
  545. CALL DMKSCHDL PUT FAV USER IN Q IF POSSIBLE @V326538 00493000
  546. L R1,SAVER11 RESTORE CALLERS VMBLOK @V407510 00494100
  547. SWTCHVM SWITCH BACK TO CALLER @V407510 00494200
  548. SPACE 1 00497000
  549. B SETCOMP RETURN @V326538 00498000
  550. SPACE 00499000
  551. SETFAVNP EQU * HERE IF NO PERCENTAGE SPECIFIED @V326538 00500000
  552. TM SAVEWRK1,RESRVTYP RESERVE REQUEST ???? @V326538 00501000
  553. BO CFO026 NO GOOD @V326538 00502000
  554. OI VMQLEVEL-VMBLOK(R8),VMAEX SET ASSURED EXECUT @V326538 00503000
  555. B SETCOMP RETURN @V326538 00504000
  556. SPACE 00505000
  557. SETFAVOF EQU * COME HERE TO SET FAVOR OFF @V326538 00506000
  558. CL R0,F3 PROPER LENGTH ??? @V326538 00507000
  559. BNE CFO003 NOT IF WE BRANCH --- @V326538 00508000
  560. TM SAVEWRK1,RESRVTYP RESERVE REQUEST ??? @V326538 00509000
  561. BO SETRESOF BRANCH IF IT IS @V326538 00510000
  562. NI VMQLEVEL-VMBLOK(R8),255-(VMAEX+VMAEXP+VMHIPRI) @V326538 00511000
  563. L R7,=A(DMKSCHAU) ADDRESS OF USER GETTING ASSURED @V326538 00512000
  564. C R8,0(,R7) WAS THIS USER RUNNING @V326538 00513000
  565. BNE SETCOMP BRANCH IF NOT @V326538 00514000
  566. SR R0,R0 ZERO REG @V326538 00515000
  567. ST R0,0(,R7) ZERO ADDRESS @V326538 00516000
  568. B SETCOMP FINISHED @V326538 00517000
  569. EJECT 00518000
  570. ***** 00519000
  571. * 00520000
  572. * SET RESERVE COMMAND 00521000
  573. * 00522000
  574. ***** 00523000
  575. SPACE 00524000
  576. SETRESRV OI SAVEWRK1,RESRVTYP FLAG AS RESERVE REQUEST @V326538 00525000
  577. L R10,=A(DMKPTRRU) ADDRESS OF PRESENT USER(IF ANY)@V326538 00526000
  578. L R5,=A(DMKPTRRL) ADDRESS OF PAGE LIMIT WORD @V326538 00527000
  579. B SETFAVOR GO SCAN ARGUMENTS @V326538 00528000
  580. SPACE 00529000
  581. SETRESXX EQU * @V326538 00530000
  582. ICM R7,15,0(R10) CHECK FOR ALREADY IN USE @V326538 00531000
  583. BZ RESCKXX BRANCH IF NOT - GO PROCESS @V326538 00532000
  584. CLR R8,R7 RESETTING SAME USER ?? @V326538 00533000
  585. BNE RESINUSE NO - AND THAT'S A NO NO !!!!! @V326538 00534000
  586. SPACE 00535000
  587. RESCKXX LR R6,R1 CHK IF REQ NO OF PAGES FIT IN V.M@V326538 00536000
  588. SLL R6,12 FORM MAX ADDRESS @V326538 00537000
  589. SPACE 00538000
  590. DROP R11 @V326538 00539000
  591. USING VMBLOK,R8 @V326538 00540000
  592. SPACE 00541000
  593. CL R6,VMSTOR WILL IT FIT IN VM STORAGE @V326538 00542000
  594. BH BADFAVXX BRANCH IF IT DOESNT @V326538 00543000
  595. ST R1,0(,R5) STORE NEW PAGE COUNT @V326538 00544000
  596. ST R8,0(,R10) STORE VMBLOK ADDRESS @V326538 00545000
  597. OI VMPSTAT,VMRPAGE SET RESERVE FLAG @V326538 00546000
  598. B RSVRESET GO RESET RESERVE BITS IN CORTABLE@V326538 00547000
  599. SPACE 00548000
  600. SETRESOF ICM R7,15,0(R10) CHECK TO SEE IF IN USE @VA04904 00548300
  601. BZ SETCOMP RESERVE IS ALREADY OFF @VA04904 00548600
  602. CLR R8,R7 RESETTING PRESENT RESERVE USER? @VA04904 00548900
  603. BNE RESINUSE NO, WRONG USERID SPECIFIED @VA04904 00549200
  604. SR R0,R0 .... @VA04904 00549500
  605. ST R0,0(,R5) ZERO PAGE LIMIT @V326538 00550000
  606. ST R0,0(,R10) ZERO VMBLOK ADDRESS @V326538 00551000
  607. NI VMPSTAT,255-VMRPAGE TURN OFF RESERVE FLAG @V326538 00552000
  608. SPACE 00553000
  609. DROP R8 @V326538 00554000
  610. USING VMBLOK,R11 @V326538 00555000
  611. SPACE 00556000
  612. RSVRESET EQU * TURN OFF RESERVE FLAG IN CORTABLE@V326538 00557000
  613. L R3,ACORETBL ADDRESS OF START OF CORTABLE @V326538 00558000
  614. LA R4,16 LENGTH OF ONE ENTRY @V326538 00559000
  615. L R5,=A(DMKSYSRV) ADDRESS OF SYSGEN MEMORY SIZE @V326538 00560000
  616. L R5,0(,R5) GET SIZE OF MAIN STORAGE @V326538 00561000
  617. SRL R5,8 GET INDEX TO END OF CORTABLE @V326538 00562000
  618. SLR R5,R4 GET INDEX TO LAST ENTRY @V326538 00563000
  619. ALR R5,R3 POINT TO LAST ENTRY @V326538 00564000
  620. SPACE 00565000
  621. USING CORTABLE,R3 @V326538 00566000
  622. RSVRLOOP NI CORFLAG,X'FF'-CORRSV RESET RESERVED PAGE FLAG @V326538 00567000
  623. BXLE R3,R4,RSVRLOOP LOOP THROUGH THE CORTABLE @V326538 00568000
  624. DROP R3 @V326538 00569000
  625. SPACE 00570000
  626. L R14,=A(DMKDSPNP) ADDRESS OF DYNAMIC PAGE COUNTER@V326538 00571000
  627. L R15,=A(DMKPTRRC) ADDRESS OF RESRVD PAGE COUNTER @V326538 00572000
  628. L R4,0(,R14) GET NO OF AVAILABLE PAGE FRAMES @V326538 00573000
  629. AL R4,0(,R15) ADD RESERVED PAGES NOW AVAIALBLE @V326538 00574000
  630. ST R4,0(,R14) AND SAVE NEW TOTAL @V326538 00575000
  631. SLR R4,R4 CLEAR OUT @V326538 00576000
  632. ST R4,0(,R15) RESERVED PAGE COUNT @V326538 00577000
  633. B SETCOMP AND EXIT @V326538 00578000
  634. SPACE 4 00579000
  635. BADFAVXX LM R0,R1,SAVEWRK8 LENGTH AND ADR. OF ARG. @V326538 00580000
  636. B CFO003 SEND ERROR MESSAGE @V326538 00581000
  637. SPACE 00582000
  638. FAVINUSE EQU * @V326538 00583000
  639. MVC SAVEWRK2(7),=C'FAVORED ' SET RESPONSE @V326538 00584000
  640. SPACE 00585000
  641. IDSETUP MVI SAVEWRK3+3,X'00' SEPARATER @V326538 00586000
  642. MVC SAVEWRK4(8),VMUSER-VMBLOK(R7) MOVE USERID @V326538 00587000
  643. LA R0,16 FIELD LENGTH @V326538 00588000
  644. LA R1,SAVEWRK2 FIELD ADDRESS @V326538 00589000
  645. B CFO175 SEND ERROR MESSAGE @V326538 00590000
  646. SPACE 00591000
  647. RESINUSE EQU * @V326538 00592000
  648. MVC SAVEWRK2(7),=C'RESERVE ' SET RESPONSE @V326538 00593000
  649. B IDSETUP GO FINISH MESSAGE @V326538 00594000
  650. EJECT 00595000
  651. ***** 00596000
  652. * 00597000
  653. * SET SASSIST COMMAND 00598000
  654. * 00599000
  655. ***** 00600000
  656. SPACE 00601000
  657. SETSAS EQU * SET SYSTEM ASSIST ON / OFF @V326538 00602000
  658. SR R7,R7 INDICATE ON/OFF ONLY LEGAL PARMS @V326538 00603000
  659. LA R8,SETSAS1 SET UP FOR ON @V326538 00604000
  660. BAL R10,TSTONOFF GO - TEST FOR ON/OFF @V326538 00605000
  661. NI SAVEWRK1,X'FF'-WASON THEY SAID 'OFF' @V4075A0 00606010
  662. B BYPROC @V4075A0 00606030
  663. SETSAS1 OI SAVEWRK1,WASON THEY SAID 'ON' @V4075A0 00606050
  664. BYPROC LA R8,SETCOMP MAKE SURE ALL PATHS GO OUT @V4075A0 00606070
  665. TM APSTAT1,APUOPER IF NOT IN AP MODE, @V4075A0 00606090
  666. BNO SASUS JUST DO OUR OWN PSA @V4075A0 00606110
  667. CALL DMKSCNFD @V4075A0 00606130
  668. BNZ SASBOTH DO BOTH PROCESSORS IF NO MORE PARMS@V4075A0 00606150
  669. CLI 0(R1),C'P' OPTIONAL 'PROC' IN COMMAND? @V4075A0 00606170
  670. BNE SASPRCAD NOT EVEN CLOSE @V4075A0 00606190
  671. CALL DMKSCNFD YES, LOOK FOR PROC SPECIFICATION @V4075A0 00606210
  672. BNZ CFO026 THEY FORGOT TO TELL US WHICH ONE! @V4075A0 00606230
  673. SASPRCAD CALL DMKCVTDB @V4075A0 00606250
  674. BNZ CFO026 WHAT THEY GAVE US WASN'T NUMERIC@V4075A0 00606270
  675. C R1,F63 LARGEST PROC ADDR WE HANDLE @V4075A0 00606290
  676. BH CFO026 TOO BIG @V4075A0 00606310
  677. CH R1,IPUADDR IS IT PROCESSOR RUNNING US? @V4075A0 00606330
  678. BE SASUS O.K., JUST DO OURSELF @V4075A0 00606350
  679. CH R1,IPUADDRX OTHER PROCESSOR? @V4075A0 00606370
  680. BNE CFO188 NO, WE DON'T HAVE WHAT THEY WANT @V4075A0 00606390
  681. SASOTHER LA R0,CPEXSIZE GET OVER TO THE OTHER PROCESSOR @V4075A0 00606410
  682. CALL DMKFREE @V4075A0 00606430
  683. USING CPEXBLOK,R1 @V4075A0 00606450
  684. STM R2,R13,CPEXR2 DON'T NEED THE OTHER REG VALUES @V4075A0 00606470
  685. LA R0,SASUS @V4075A0 00606490
  686. ST R0,CPEXADD JUST RESUME RIGHT IN PLACE @V4075A0 00606510
  687. CALL DMKSTKOP WHEN WE GET RESTARTED @V4075A0 00606530
  688. GOTO DMKDSPCH BUT FIRST GET OFF OF THIS PROCESSOR @V4M0122 00606540
  689. SPACE 1 00606542
  690. SASUS EQU * @V4075A0 00606550
  691. TM SAVEWRK1,WASON NOW, DID THEY WANT ON|OFF @V4075A0 00606570
  692. BO SASON @V4075A0 00606590
  693. NI CPSTAT2,X'FF'-CPMICON STOP USE OF VM ASSIST @V4075A0 00606610
  694. BR R8 @V4075A0 00606630
  695. SASON TM CPSTAT2,CPMICAVL DO WE HAVE VM ASSIST? @V4075A0 00606650
  696. BNO CFO184 @V4075A0 00606670
  697. OI CPSTAT2,CPMICON ALLOW EVERYONE TO USE VM ASSIST@V4075A0 00606690
  698. BR R8 @V4075A0 00606710
  699. SPACE 2 @V4075A0 00606730
  700. SASBOTH LH R7,IPUADDR ADDR OF PROC WE'RE DOING NOW. @V4075A0 00606750
  701. BAL R8,SASUS WORK ON CPMICON FOR OUR PROCSR @V4075A0 00606770
  702. LA R8,SETCOMP SET RETURN VECTOR TO EXIT AFTER: @V4075A0 00606790
  703. CH R7,IPUADDR IF WE ARE STILL ON THE SAME PROC @V4075A0 00606810
  704. BE SASOTHER WE MUST SWITCH FIRST & THEN @V4075A0 00606830
  705. B SASUS WORK ON CPMICON FOR 2ND PROC @V4075A0 00606850
  706. SPACE 2 @V4075A0 00606870
  707. CFO184 LA R2,184 MESSAGE NUMBER @V4075A0 00606890
  708. TM APSTAT1,APUOPER ARE WE IN AP MODE? @V4075A0 00606910
  709. BNO NOVAR NO, QUICK EXIT AFTER MESSAGE @V4075A0 00606930
  710. MVC SAVEWRK2(9),OPT184 SET UP OPTIONAL PART OF MSG @V4075A0 00606950
  711. LH R1,IPUADDR CONVERT PROCESSOR ADDRESS @V4075A0 00606970
  712. CALL DMKCVTBH @V4075A0 00606990
  713. STCM R1,B'0011',SAVEWRK4+1 AND PLACE IN MESSAGE @V4075A0 00607010
  714. LA R1,SAVEWRK2 TELL ERM WHERE OPTIONAL DATA IS @V4075A0 00607030
  715. LA R0,11 ALSO HOW MUCH TO USE @V4075A0 00607050
  716. ICM R2,B'1000',X80 FLAG FOR ERM TO RETURN TO US SO @V4075A0 00607070
  717. B CALLERM WE CAN DECIDE WHETHER TO DO 2ND @V4075A0 00607090
  718. SPACE 2 @V4075A0 00607110
  719. CFO188 LA R2,188 WE DON'T HAVE WHAT THEY WANT @V4075A0 00607130
  720. B NOVAR @V4075A0 00607150
  721. SPACE 2 @V4075A0 00607170
  722. F63 DC F'63' @V4075A0 00607190
  723. OPT184 DC C' ON PROC ' @V4075A0 00607210
  724. X80 DC X'80' @V4075A0 00607230
  725. DS 0H @V4075A0 00607250
  726. EJECT 00609300
  727. ***** 00609400
  728. * 00609500
  729. * SET CPASSIST COMMAND 00609600
  730. * 00609700
  731. ***** 00609800
  732. SPACE 00609900
  733. SETCPA EQU * SET CP ASSIST ON / OFF @V386198 00610000
  734. BAL R8,SETONOFF GO CK FOR ON/OFF @V5DAACD 00610110
  735. BAL R10,SETPROC GO CK 'PROC' OPTION @V5DAACD 00610130
  736. B SETCPA2 UP MODE OR THIS PROCESSOR @V5DAACD 00610150
  737. B SETBOTH AP MODE SET BOTH PROCESSORS @V5DAACD 00610170
  738. SETCPASW EQU * **RETURN +8 SET OTHER PROCESSOR @V5DAACD 00610190
  739. BAL R6,SETOTHER GO SETUP FOR SWITCH @V5DAACD 00610210
  740. SETCPA2 EQU * 00610230
  741. L R11,SAVER11 R11-ADDR. OF USER VMBLOK @V5DAACD 00610250
  742. LR R9,R11 ON ENTRY. SAVE FOR COMPARE. @V5DAACD 00610270
  743. TM SAVEWRK1,WASON NOW DID THEY SAY ON OR OFF? @V5DAACD 00610290
  744. BO SETCPA1 THEY SAID ON.. @V5DAACD 00610310
  745. SLR R7,R7 ZERO R7 FOR CREG 6 @V5DAACD 00610330
  746. * @V5DAACD 00610350
  747. NI CPSTAT2,X'FF'-CPASTON TURN CP ASSIST FLAG OFF @V386198 00610500
  748. SETCPAL1 L R11,VMPNT POINT TO NEXT VMBLOK IN CHAIN @V386198 00610600
  749. NI VMMCR6,X'FF'-VMMCPAST RESET CP ASSIST FLAG @V386198 00610700
  750. CR R9,R11 HAVE WE BEEN HERE BEFORE ? @V386198 00610800
  751. BE SETCPAC6 EXIT IF YES... @V386198 00610900
  752. B SETCPAL1 DO FOR ALL THE VMBLOKS @V386198 00611000
  753. SPACE 00611100
  754. SETCPA1 TM CPSTAT2,CPASTAVL IS THE CP ASSIST AVAILABLE ? @V386198 00611200
  755. BZ CFO186 NO - SEND ERROR MESSAGE @V386198 00611300
  756. OI CPSTAT2,CPASTON INDICATE USING THE CP ASSIST @V386198 00611400
  757. L R7,=A(X'02000000') ENABLE MASK FOR 'CPCREG6' @V386198 00611500
  758. SETCPAL2 L R11,VMPNT GET NEXT VMBLOK ADDRESS @V386198 00611600
  759. OI VMMCR6,VMMCPAST FLAG AS ON IN CR6 COPY @V386198 00611700
  760. CR R9,R11 BACK TO STARTING VMBLOK ? @V386198 00611800
  761. BNE SETCPAL2 NO, CONTINUING WITH THE LOOP @V386198 00611900
  762. SPACE 00612000
  763. SETCPAC6 ST R7,CPCREG6 RESET CP ASSIST ENABLE MASK @V386198 00612100
  764. LCTL C6,C6,CPCREG6 AND RESET CREG. 6 FOR CP ASSIST @V386198 00612200
  765. BR R8 @V5DAACD 00612310
  766. SETBOTH EQU * @V5DAACD 00612320
  767. BAL R8,SETCPA2 GO SETUP THIS PROCESSOR @V5DAACD 00612330
  768. LA R8,SETCOMP SET EXIT ADDR. UPON RETURN. @V5DAACD 00612340
  769. B SETCPASW AND GO SWITCH PROC. @V5DAACD 00612350
  770. EJECT 00612400
  771. ***** 00613000
  772. * 00614000
  773. * SET RECORDING COMMAND 00615000
  774. * 00616000
  775. ***** 00617000
  776. SPACE 00618000
  777. USING RDEVBLOK,R8 @V326538 00619000
  778. USING IRMBLOK,R5 @V326538 00620000
  779. SPACE 00621000
  780. SETRECD L R3,=A(DMKIOEIR) GET ADDRESS OF IRMBLOK(IF ANY) @V326538 00622000
  781. ICM R5,15,0(R3) IS RECORDING IN PROGRESS ? @V326538 00623000
  782. BZ CKRECARG NO - TAKE BRANCH @V326538 00624000
  783. LH R1,IRMRLADD LOAD DEVICE ADDRESS @V326538 00625000
  784. CALL DMKSCNRU GET RDEVBLOK ADDRESS @V326538 00626000
  785. CKRECARG LR R6,R8 SAVE RDEVBLOK ADDRESS @V326538 00627000
  786. LA R8,RECDON RETURN IF ON @V326538 00628000
  787. SR R7,R7 CLEAR REGISTER 7 @V326538 00629000
  788. SWITCH SWITCH TO MAIN PROCESSSOR @V407510 00629100
  789. BAL R10,TSTONOFF GO - TEST @V326538 00630000
  790. * 00631000
  791. * RETURN HERE IF OFF SPECIFIED 00632000
  792. * 00633000
  793. LR R8,R6 RESTORE RDEVBLOK ADDRESS @V326538 00634000
  794. LTR R5,R5 IRM ACTIVE ? @V326538 00635000
  795. BZ SETCOMP NO - SO NOTHING TO DO @V326538 00636000
  796. NI RDEVSTAT,255-RDEVIRM TURN OFF IRM FOR DEVICE @V326538 00637000
  797. LA R0,IRMSIZE LENGTH OF IRMBLOK @V326538 00638000
  798. LR R1,R5 ADDRESS OF IRMBLOK @V326538 00639000
  799. CALL DMKFRET RETURN STORAGE @V326538 00640000
  800. SR R1,R1 ZERO REG @V326538 00641000
  801. ST R1,0(,R3) ZERO IRMBLOK POINTER @V326538 00642000
  802. B SETCOMP RETURN @V326538 00643000
  803. SPACE 3 00644000
  804. RECDON EQU * @V326538 00645000
  805. LR R8,R6 RESTORE RDEVBLOK ADDRESS @V326538 00646000
  806. LTR R5,R5 IRM IN PROGRESS ? @V326538 00647000
  807. BZ GETIRM NO - MUST GET STORAGE FOR IRMBLOK@V326538 00648000
  808. NI RDEVSTAT,255-RDEVIRM TURN OFF PRESENT IRM @V326538 00649000
  809. B IRMCLEAR @V326538 00650000
  810. GETIRM LA R0,IRMSIZE LOAD IRMBLOK SIZE @V326538 00651000
  811. CALL DMKFREE GET THE STORAGE @V326538 00652000
  812. ST R1,0(,R3) STORE ADDRESS OF BLOK IN DMKIOEIR@V326538 00653000
  813. LR R5,R1 ADDR. TO GPR5 @V326538 00654000
  814. IRMCLEAR XC IRMBLOK(IRMSIZE*8),IRMBLOK ZERO BLOK @V326538 00655000
  815. CALL DMKSCNFD LOCATE NXT ARG; SHOULD BE RADDR @V326538 00656000
  816. BNZ NORADDR BRANCH IF NONE FOUND @V326538 00657000
  817. CALL DMKCVTHB CONVERT TO BINARY @V326538 00658000
  818. BNZ NORADDR MISSING REAL ADDRESS @V326538 00659000
  819. STH R1,IRMRLADD STORE INTO IRMBLOK @V326538 00660000
  820. CALL DMKSCNRU GET RDEVBLOK @V326538 00661000
  821. BNZ NORADDR2 CAN'T FIND UNIT @V326538 00662000
  822. SPACE 00663000
  823. RECDSCAN CALL DMKSCNFD LOCATE NEXT ARGUMENT @V326538 00664000
  824. BNZ RECDFINI GO CLEAN UP AND EXIT @V326538 00665000
  825. LR R2,R0 LENGTH TO GPR2 @V326538 00666000
  826. BCTR R2,0 MINUS ONE FOR EX @V326538 00667000
  827. EX R2,COMPLIM LIMIT REQUEST ??? @V326538 00668000
  828. BE SETRLIM YES @V326538 00669000
  829. EX R2,COMPAND 'AND' REQUEST ???? @V326538 00670000
  830. BE SETRAND YES ---- @V326538 00671000
  831. EX R2,COMPOR 'OR' REQUEST ???? @V326538 00672000
  832. BE SETROR YEP --- @V326538 00673000
  833. EX R2,COMPBYTE 'BYTE' ????? @V326538 00674000
  834. BE SETRBYTE YEP @V326538 00675000
  835. EX R2,COMPBIT 'BIT' ???? @V326538 00676000
  836. BE SETRBIT YES ---- @V326538 00677000
  837. B CFO003 MUST BE BAD ARGUMENT @V326538 00678000
  838. SPACE 00679000
  839. COMPLIM CLC 0(0,R1),=C'LIMIT ' EXECUTED COMPARE @V326538 00680000
  840. COMPAND CLC 0(0,R1),=C'AND ' DITTO @V326538 00681000
  841. COMPOR CLC 0(0,R1),=C'OR ' " @V326538 00682000
  842. COMPBYTE CLC 0(0,R1),=C'BYTE ' " @V326538 00683000
  843. COMPBIT CLC 0(0,R1),=C'BIT ' " @V326538 00684000
  844. SPACE 3 00685000
  845. SETRLIM CL R0,F5 RIGHT LENGTH ???? @V326538 00686000
  846. BNE CFO003 NOPE - SEND ERROR MESSGAE @V326538 00687000
  847. BAL R10,RECGETNN GO GET 'NN' ARGUMENT @V326538 00688000
  848. STH R1,IRMLMT STORE LIMIT @V326538 00689000
  849. B RECDSCAN GO GET NEXT ARGUMENT @V326538 00690000
  850. SPACE 00691000
  851. SETRAND CL R0,F3 PROPER LENGTH ???? @V326538 00692000
  852. BNE CFO003 NOPE --- @V326538 00693000
  853. TM IRMFLG,IRMOR HAS 'OR' BEEN FOUND @V326538 00694000
  854. BO CFO013 BRANCH IF SO - CAN'T HAVE BOTH @V326538 00695000
  855. MVI IRMFLG,IRMAND SET 'AND' FLAG @V326538 00696000
  856. B RECDSCAN GO SCAN SOME MORE @V326538 00697000
  857. SPACE 00698000
  858. SETROR CL R0,F2 RIGHT LENGTH ???? @V326538 00699000
  859. BNE CFO003 NOPE --- @V326538 00700000
  860. TM IRMFLG,IRMAND HAS 'AND' BEEN FOUND ??? @V326538 00701000
  861. BO CFO013 BRANCH IF SO - CAN'T HAVE BOTH @V326538 00702000
  862. MVI IRMFLG,IRMOR SET 'OR' FLAG @V326538 00703000
  863. B RECDSCAN GO DO MORE @V326538 00704000
  864. SPACE 00705000
  865. SETRBYTE CL R0,F4 RIGHT LENGTH ??? @V326538 00706000
  866. BNE CFO003 NO --- @V326538 00707000
  867. TM SAVEWRK1,SECBYTE DO WE HAVE TWO BYTES ALREADY?? @V326538 00708000
  868. BO CFO003 YES - CAN'T LET THAT HAPPEN @V326538 00709000
  869. BAL R10,RECGETNN GET 'NN' ARGUMENT @V326538 00710000
  870. C R1,=F'23' OVER 23 ???? @V326538 00711000
  871. BH BADRECNN BAD NEWS !!!! @V326538 00712000
  872. TM SAVEWRK1,FRSTBYTE HAS FIRST BYTE BEEN PROCESSED @V326538 00713000
  873. BO STBYTE2 YES - MUST BE BYTE TWO @V326538 00714000
  874. STC R1,IRMBYT1 STORE INTO BYTE ONE @V326538 00715000
  875. OI SAVEWRK1,FRSTBYTE INDICATE FIRST BYTE PROCESSED @V326538 00716000
  876. B RECDSCAN TRY AGAIN @V326538 00717000
  877. STBYTE2 EQU * @V326538 00718000
  878. STC R1,IRMBYT2 STOR E INTO IRMBLOK @V326538 00719000
  879. OI SAVEWRK1,SECBYTE INDICATE SECOND BYTE PROCESSED @V326538 00720000
  880. B RECDSCAN GET NEXT ARG @V326538 00721000
  881. SETRBIT CL R0,F3 PROPER LENGTH @V326538 00722000
  882. BNE CFO003 NO --- @V326538 00723000
  883. TM SAVEWRK1,SECBIT DO WE HAVE SECOND BIT ALREADY?? @V326538 00724000
  884. BO CFO003 THAT'S AGAINST THE LAW @V326538 00725000
  885. BAL R10,RECGETNN GET 'NN' ARGUMENT @V326538 00726000
  886. C R1,F7 OVER 7 ????? @V326538 00727000
  887. BH BADRECNN IS A NO-NO !!! @V326538 00728000
  888. TM SAVEWRK1,FRSTBIT FIRST BIT BEEN PROCESSED ? @V326538 00729000
  889. BO STBIT2 YES - MUST BE SECOND BIT @V326538 00730000
  890. STC R1,IRMBIT1 STORE BIT NUMBER @V326538 00731000
  891. OI SAVEWRK1,FRSTBIT INDICATE FIRST BIT PROCESSED @V326538 00732000
  892. B RECDSCAN GO GET NEXT ARG. @V326538 00733000
  893. STBIT2 EQU * @V326538 00734000
  894. STC R1,IRMBIT2 STORE BIT NUMBER @V326538 00735000
  895. OI SAVEWRK1,SECBIT INDICATE SEC BIT PROCESSED @V326538 00736000
  896. B RECDSCAN . . @V326538 00737000
  897. SPACE 00738000
  898. RECGETNN CALL DMKSCNFD GET NN @V326538 00739000
  899. BNZ CFO026 SEND ERROR MESSAGE @V326538 00740000
  900. STM R0,R1,SAVEWRK8 SAVE LENGTH AND ADDRESS @V326538 00741000
  901. CALL DMKCVTDB CONVERT TO BINARY @V326538 00742000
  902. BNZ BADRECNN BAD CONVERT @V326538 00743000
  903. BR R10 RETURN @V326538 00744000
  904. SPACE 00745000
  905. RECDFINI LH R0,IRMLMT CHECK IF LIMIT ARGUMENT @V326538 00746000
  906. LTR R0,R0 HAS BEEN FOUND @V326538 00747000
  907. BZ RECDERR SOMEBODY GOOFED @V326538 00748000
  908. TM SAVEWRK1,FRSTBYTE NEED AT LEAST ONE BYTE @V326538 00749000
  909. BZ RECDERR BAD IF WE DON'T HAVE IT @V326538 00750000
  910. TM SAVEWRK1,FRSTBIT NOW CHECK FOR A BIT @V326538 00751000
  911. BZ RECDERR ALMOST MADE IT @V326538 00752000
  912. OI RDEVSTAT,RDEVIRM IT'S OK TO SET THE FLAG @V326538 00753000
  913. B SETCOMP .... @V326538 00754000
  914. DROP R5,R8 NO MORE IRMBLOK, RDEVBLOK @V326538 00755000
  915. EJECT 00756000
  916. ***** 00757000
  917. * 00758000
  918. * SET MODE COMMAND 00759000
  919. * 00760000
  920. ***** 00761000
  921. SPACE 00762000
  922. RECDCPU EQU * @V326538 00763000
  923. RETRYMSG EQU X'80' RETRY MESSAGE INDICATOR @V407510 00764100
  924. SR R2,R2 CLEAR MESSAGE INDICATOR @V407510 00764200
  925. CLC SAVEWRK5(5),=C'MAIN ' IS ARGUMENT VALID ? @V326538 00768000
  926. BNE RETRYTST NO, GO TEST FOR RETRY ARGUMENT @V5088AB 00768110
  927. USING MCHAREA,R2 SET UP ADDRESSABILITY TO THE MCHAREA 00768210
  928. * @V5088AB 00768310
  929. L R2,AMCHAREA GET MCH COMMON AREA ADDRESS @V5088AB 00768410
  930. CLI MCHMODEL,MOD3033 IS THIS A 3033, 3032 OR @V5088AB 00768510
  931. * 3031 PROCESSOR? @V5088AB 00768610
  932. * SET MODE MAIN IS NOT ALLOWED FOR EITHER OF THESE PROCESSORS @V5088AB 00768710
  933. BE BADONOFF YES, ISSUE ERROR MESSAGE. @V5088AB 00768810
  934. SR R2,R2 CLEAR MESSAGE INDICATOR @VA08643 00768860
  935. B MCHMCH OK, 'SET MODE MAIN' IS VALID @V5088AA 00768910
  936. RETRYTST CLC SAVEWRK5(6),=C'RETRY ' IS ARGUMENT VALID? @V5088AB 00769010
  937. BNE BADONOFF NO -- ERROR MESSAGE @V326538 00771000
  938. LA R2,RETRYMSG SET THE RETRY MESSAGE SWITCH @V407510 00772100
  939. MCHMCH EQU * @V326538 00774000
  940. CALL DMKMCIMS @VA10453 00775100
  941. B SETCOMP GO TO SET CODE @V326538 00776000
  942. EJECT 00777000
  943. ***** 00778000
  944. * 00779000
  945. * SET DUMP COMMAND 00780000
  946. * 00781000
  947. ***** 00782000
  948. SPACE 00783000
  949. SETDUMP TM SAVEWRK1,NARGTWO ARE THERE ANY ARGUMENTS ? @V326538 00784000
  950. BO CFO026 SEND ERROR MESSAGE @V326538 00785000
  951. L R3,=A(DMKDMPSW) LOAD ADDRESS OF DUMP SWITCHES @V326538 00786000
  952. CALL DMKSCNFD FIND NEXT ARGUMENT @V326538 00787000
  953. BNZ SETDMCP NO OPERAND - SET DUMP CP @V326538 00788000
  954. CL R0,F3 CANNOT BE MORE THAN THREE CHARS @V326538 00789000
  955. BH CFO003 INVALID OPERAND IF IT IS @V326538 00790000
  956. CLC 0(3,R1),=C'ALL' DUMP ALL STORAGE ? @V326538 00791000
  957. BE SETDALL YES - TURN ON 'ALL' FLAG @V326538 00792000
  958. CLC 0(3,R1),=C'CP ' DUMP CP ? @V326538 00793000
  959. BE SETDMCP YES--DUMP CP STORGE ONLY @V326538 00794000
  960. CL R0,F2 ARE THERE 2 CHARACTERS? @V326538 00795000
  961. BNE CFO003 NO-- INVALID OPTION @V326538 00796000
  962. CLC 0(2,R1),=C'CP' DUMP CP ONLY? @V326538 00797000
  963. BNE CFO003 NO -- INVALID OPERAND @V326538 00798000
  964. SETDMCP EQU * @V326538 00799000
  965. NI 0(R3),255-DUMPALL DUMP ONLY CP STORAGE @V326538 00800000
  966. B SETDMP1 @V326538 00801000
  967. SPACE 00802000
  968. SETDALL EQU * SET DUMP ALL SPECIFIED @V326538 00803000
  969. OI 0(R3),DUMPALL DUMP ALL OF REAL STORAGE @V326538 00804000
  970. SPACE 00805000
  971. SETDMP1 DS 0H @V407510 00806100
  972. SWITCH @V407510 00806200
  973. L R3,=A(DMKDMPDV) ADDRESS OF DUMP DEVICE WORD @V407510 00806300
  974. ICM R1,B'1111',0(R3) IS THERE A DUMP DEVICE? @V407438 00806500
  975. BZ SETDMP2 NOPE, BR. @V407438 00807000
  976. CALL DMKSCNRU GO GET RBLOKS @V407438 00807500
  977. USING RCHBLOK,R6 ADDRESS THE CHANNEL BLOCK @V407438 00808000
  978. USING RCUBLOK,R7 ADDRESS THE CTLUNIT BLOCK @V407438 00808500
  979. USING RDEVBLOK,R8 ADDRESS THE DEVICE BLOCK @V407438 00809000
  980. CLI RDEVTYPC,CLASTAPE TAPE DEVICE ???? @V326538 00810000
  981. BNE SETDMP2 BRANCH IF NOT @V326538 00811000
  982. NI RDEVFLAG,255-RDEVSYS REMOVE SYSTEM FLAG @V326538 00812000
  983. SETDMP2 EQU * @V326538 00813000
  984. LA R1,SAVEWRK5 LOAD ADDRESS OF ARGUMENT @V326538 00814000
  985. LA R0,1(,R4) LOAD LENGTH OF ARGUMENT @V326538 00815000
  986. CL R0,F4 MAYBE 'AUTO' SPECIFIED @V326538 00816000
  987. BE DUMPAUTO GO FIND OUT IF IT WAS @V326538 00817000
  988. BH CFO003 INVALID IF MORE THAN 4 CHARS @V326538 00818000
  989. CALL DMKCVTHB CONVERT ADDRESS @V326538 00819000
  990. BNZ CFO021 BAD CONVERT @V326538 00820000
  991. CALL DMKSCNRU GET BLOK ADDRESSES @V326538 00821000
  992. BNZ CFO040 DOES NOT EXIST @V326538 00822000
  993. CLI RDEVTYPC,CLASTAPE IS THIS A TAPE DEVICE ? @V326538 00823000
  994. BNE PTRCHEK NO - GO CHEK FOR PRINTER @V326538 00824000
  995. TM RDEVSTAT,RDEVDED IS TAPE ALREADY DEDICATED @V326538 00825000
  996. BO CFO140 DEVICE DEDICATED @V326538 00826000
  997. LA R10,RCUCHA ADDRESS OF FIRST CHANNEL @VA08156 00826051
  998. LA R4,4 INCREMENT @V407438 00826100
  999. LA R5,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00826150
  1000. NEXTCH CL R6,0(R10) R6 PRESENT THIS CU ->CH PATH? @VA08156 00826210
  1001. BE *+8 YES, PATH FOUND, BR. @V407438 00826250
  1002. BXLE R10,R4,NEXTCH NOPE, LOOK AT ALL CHANNEL PATHS @VA08156 00826310
  1003. LA R4,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00826350
  1004. SLR R10,R4 FIND HOW FAR DOWN WE FOUND IT @VA08156 00826400
  1005. SRL R10,2 CONVERT TO INDEX FROM 0 TO 3 @VA08156 00826450
  1006. IC R5,DISATBL(R10) GET CORRECTPATH OFFLINE BIT @VA08156 00826500
  1007. EX R5,CUCHDISA (TM RCUSTAT,RCUCHXOF) PTH AVAIL? @V407438 00826550
  1008. BO CFO046 NOPE, OFFLINE... ERROR @V407438 00826600
  1009. TM RCUSTAT,RCUDISA ... DON'T BE FOOLED BY... @V407438 00826650
  1010. BO CFO046 ... ALTERNATE PATHS @V407438 00826700
  1011. TM RDEVSTAT,RDEVDISA TAPE OFFLINE ?? @V326538 00827000
  1012. BO CFO046 YEP ----- @V326538 00828000
  1013. TM RDEVFLAG,RDEVSYS SYSTEM VOLUME NOW? @V326538 00829000
  1014. BO CFO143 YUP, MUST BE DUE TO MONITOR @V326538 00830000
  1015. OI RDEVFLAG,RDEVSYS TURN ON SYSTEM FLAG @V326538 00831000
  1016. STODEV ST R1,0(R3) STORE DEVICE ADDRESS (CCU) @V407438 00832000
  1017. B SETCOMP @V326538 00833000
  1018. SPACE 2 00834000
  1019. PTRCHEK CLI RDEVTYPC,CLASURO IS THIS UR OUTPUT DEVICE ? @V326538 00835000
  1020. BNE CFO006 INVALID DEVICE TYPE --- @V326538 00836000
  1021. TM RDEVTYPE,TYPPRT IS THIS A PRINTER DEVICE ? @V326538 00837000
  1022. BZ CFO006 NO - SEND INVALID TYPE MSG @V326538 00838000
  1023. B STODEV GO SET UP DUMP DEVICE WORD @V326538 00839000
  1024. SPACE 2 00840000
  1025. DUMPAUTO EQU * @V326538 00841000
  1026. CLC SAVEWRK5(4),=C'AUTO' SET DUMP AUTO ? @V326538 00842000
  1027. BNE CFO003 NO -- INVALID OPERAND @V326538 00843000
  1028. L R1,=A(DMKDMPAU) GET CCU FOR AUTO DEVICE @V407438 00844000
  1029. L R1,0(R1) ... @V407438 00845000
  1030. B STODEV --- @V326538 00846000
  1031. DROP R8 @V326538 00847000
  1032. SPACE 3 00848000
  1033. DUMPALL EQU X'80' FLAG FOR DUMP ALL @V326538 00849000
  1034. SPACE 00849100
  1035. * RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 00849200
  1036. DISATBL DC AL1(RCUCHAOF,RCUCHBOF,RCUCHCOF,RCUCHDOF) @V407438 00849300
  1037. CUCHDISA TM RCUSTAT,0 CHECK RCU -> RCH PATH AVAILBILITY@V407438 00849400
  1038. EJECT 00850000
  1039. ***** 00851000
  1040. * 00852000
  1041. * SET LOGMSG COMMAND 00853000
  1042. * 00854000
  1043. ***** 00855000
  1044. SPACE 00856000
  1045. SETLOGM L R8,ASYSLC ADDRESS OF SYSLOCS @V326538 00857000
  1046. USING SYSLOCS,R8 @V326538 00858000
  1047. LA R8,DMKSYSLG ADDRESS OF FIRST LOG MESSAGE @V326538 00859000
  1048. DROP R8 @V326538 00860000
  1049. TM SAVEWRK1,NARGTWO WAS THERE ANY ARGUMENT @V326538 00861000
  1050. BO ADDLOG NO - ADD TO LOG MSG @V326538 00862000
  1051. CLC SAVEWRK5(5),=C'NULL ' NULL REQUEST ???? @V326538 00863000
  1052. BE NULLOG YES - TAKE BRANCH @V326538 00864000
  1053. LA R1,SAVEWRK5 POINT R1 TO ARG @V326538 00865000
  1054. LA R0,1(,R4) LENGTH TO R0 @V326538 00866000
  1055. CALL DMKCVTDB CONVERT @V326538 00867000
  1056. BNZ CFO026 HAVE AN ERROR @V326538 00868000
  1057. LR R3,R1 REMEMBER IT @VA08818 00868100
  1058. BAL R10,LOGFND FIND THE LOGMSG LINE @VA08818 00869100
  1059. BZ CFO041 LINE NUMBER NOT FOUND @VA08818 00869110
  1060. LR R9,R5 REMEMBER THIS ADDRESS @VA08818 00869120
  1061. LA R0,11 LOAD THE SIZE OF THE MSG BLOK @VA08818 00869130
  1062. CALL DMKFREE GET CORE FOR NEW MSG BLOK @VA08818 00869140
  1063. LR R8,R1 ADDRESS OF BUFFER TO R8 @VA08818 00869150
  1064. STH R3,6(,R8) PUT LINE MUNBER IN NEW BUFFER @VA08818 00869160
  1065. BAL R10,READLOG GO READ LOG MESSAGE @V326538 00875000
  1066. BZ DELINE NULL INPUT - DELETE LINE @V326538 00876000
  1067. BAL R10,LOGFND IS OUR LINE NUMBER STILL THERE @VA08818 00876100
  1068. BZ FRETNEW NO, SOMEONE DELETED IT @VA08818 00876110
  1069. CR R5,R9 SAME STORAGE LOCATION ? @VA08818 00876120
  1070. BNE FRETNEW NO, LEAVE IT ALONE @VA08818 00876130
  1071. MVC 0(4,R8),0(R5) POINTER TO THE NEXT LINE @VA08818 00876140
  1072. ST R8,0(0,R6) CHAIN LINE TO PREVIOUS LINE @VA08818 00876150
  1073. LR R8,R5 FRET THE OLD MSG BUFFER @VA08818 00876160
  1074. FRETNEW BAL R10,FRETLOG @VA08818 00876170
  1075. B LOGFINI GET OUT @V326538 00877000
  1076. SPACE 00878000
  1077. DELINE EQU * @V326538 00879000
  1078. BAL R10,LOGFND IS OUR LINE NUMBER STILL THERE @VA08818 00879100
  1079. BZ FRNEW NO, IT'S GONE @VA08818 00879110
  1080. CR R5,R9 SAME STORAGE LOCATION @VA08818 00879120
  1081. BNE FRNEW NO, LEAVE IT ALONE @VA08818 00879130
  1082. MVC 0(4,R6),0(R5) UP CHAIN PTR TO BYPASS BLOK @VA08818 00879140
  1083. LA R0,11 LENGTH OF BUFFER FOR FRET @VA08818 00879150
  1084. LR R1,R5 START OF LOGMSG BUFFER @VA08818 00879160
  1085. CALL DMKFRET FRET THE LOGMSG BUFFER @VA08818 00879170
  1086. FRNEW BAL R10,FRETLOG FRET NEW LOGMSG BLOK @VA08818 00879180
  1087. B SEQLOG GO RESEQUENCE MESSAGES @V326538 00882000
  1088. SPACE 00883000
  1089. ADDLOG LR R6,R8 SAVE PREVIOUS POINTER @V326538 00884000
  1090. ICM R8,15,0(R8) REACHED THE END YET ? @V326538 00885000
  1091. BNZ ADDLOG NO - KEEP GOING @V326538 00886000
  1092. NXTLOG EQU * READ NEXT LOGMSG LINE @V326538 00887000
  1093. LA R0,11 LOAD SIZE OF MESSAGE BLOK @V326538 00888000
  1094. CALL DMKFREE GET CORE FOR NEW MESSAGE BLOK @V326538 00889000
  1095. XC 0(4,R1),0(R1) ZERO POINTER @V326538 00890000
  1096. LR R8,R1 BUFFER FOR NEXT LINE @V326538 00891000
  1097. BAL R10,READLOG READ NEXT LOGMSG LINE @V326538 00892000
  1098. BZ DONE NULL LINE = END OF INPUT @VA08818 00892100
  1099. ST R8,0(0,R6) CHAIN NEW LINE TO PREVIOUS @V326538 00894000
  1100. LR R6,R8 THIS IS NOW THE LAST LINE @V326538 00895000
  1101. B NXTLOG GO GET ANOTHER BUFFER @V326538 00896000
  1102. SPACE 2 00896100
  1103. DONE DS 0H @VA08818 00896200
  1104. MVC 0(4,R6),0(R8) UPD CHAIN TO BYPASS THIS BLOK @VA08818 00896300
  1105. BAL R10,FRETLOG FRET LOGMSG LINE BUFFER @VA08818 00896400
  1106. B SEQLOG GO SEQUENCE MESSAGES @VA08818 00896500
  1107. SPACE 2 00896600
  1108. EJECT 00897000
  1109. NULLOG EQU * SET LOGMSG NULL @V326538 00898000
  1110. L R7,0(0,R8) POINTER TO FIRST LINE (IF ANY) @V326538 00899000
  1111. MVC 0(4,R8),ZEROES CLEAR LOGMSG POINTER @V326538 00900000
  1112. NULLOG1 EQU * DELETE ALL LOGMSG LINES @V326538 00901000
  1113. LTR R8,R7 NEXT LOGMSG LINE, MAYBE @V326538 00902000
  1114. BNP LOGFINI JUMP OUT WHEN FINISHED @V326538 00903000
  1115. L R7,0(0,R8) SAVE FORWARD POINTER @V326538 00904000
  1116. BAL R10,FRETLOG FRET ONE LOGMSG LINE BUFFER @V326538 00905000
  1117. B NULLOG1 CONTINUE FOR THEM ALL @V326538 00906000
  1118. SPACE 00907000
  1119. READLOG LA R0,8 LOAD SIZE OF PROMPT @V326538 00908000
  1120. LA R1,=C'LOGMSG: ' PROMPT MESSAGE @V326538 00909000
  1121. CALL DMKQCNWT,PARM=NORET+NOAUTO @V326538 00910000
  1122. LA R0,76 LOAD MAX LENGTH @V326538 00911000
  1123. LA R1,8(0,R8) START OF LOGMSG DATA @V326538 00912000
  1124. CALL DMKQCNRD,PARM=UCASE+EDIT READ MESSAGE @V326538 00913000
  1125. BZ GOODQCN BRANCH, IF CONDITION CODE=0 @VA10128 00913200
  1126. SR R0,R0 MAKE IT LOOK LIKE NULL LINE @VA10128 00913400
  1127. GOODQCN DS 0H @VA10128 00913600
  1128. STH R0,4(0,R8) SET DATA LENGTH IN BUFFER @V326538 00914000
  1129. LTR R0,R0 SET CONDITION CODE @V326538 00915000
  1130. BR R10 RETURN TO CALLER @V326538 00916000
  1131. SPACE 00917000
  1132. LOGFND L R5,ASYSLC ADDRESS OF SYSLOCS @VA08818 00917100
  1133. USING SYSLOCS,R5 @VA08818 00917110
  1134. LA R5,DMKSYSLG ADDRESS OF FIRST LOGMSG @VA08818 00917120
  1135. DROP R5 @VA08818 00917130
  1136. LOOP LR R6,R5 SAVE POINTER @VA08818 00917140
  1137. L R5,0(,R5) GET NEXT MSG BLOK @VA08818 00917150
  1138. LTR R5,R5 END REACHED? @VA08818 00917160
  1139. BZR R10 LINE NUMBER NOT FOUND @VA08818 00917170
  1140. CH R3,6(,R5) IS THIS REQUESTED LINE NUMBER ? @VA08818 00917180
  1141. BNE LOOP NO, TRY NEXT ONE @VA08818 00917190
  1142. LTR R5,R5 SET CONDITION CODE @VA08818 00917200
  1143. BR R10 AND RETURN TO CALLER @VA08818 00917210
  1144. SPACE 2 00917220
  1145. SEQLOG L R8,ASYSLC ADDRESS OF SYSLOCS @V326538 00918000
  1146. USING SYSLOCS,R8 @V326538 00919000
  1147. LA R8,DMKSYSLG ADDRESS OF FIRST LOG MESSAGE @V326538 00920000
  1148. DROP R8 @V326538 00921000
  1149. LA R1,1 START OF SEQUENCE @V326538 00922000
  1150. SEQLOG1 L R8,0(,R8) GET NEXT MESSAGE BLOK @V326538 00923000
  1151. LTR R8,R8 END REACHED ? @V326538 00924000
  1152. BZ LOGFINI YES @V326538 00925000
  1153. STH R1,6(,R8) SET SEQUENCE NUMBER @V326538 00926000
  1154. LA R1,1(,R1) BUMP SEQUENCE NUMBER @V326538 00927000
  1155. B SEQLOG1 GO DO NEXT @V326538 00928000
  1156. SPACE 00929000
  1157. LOGFINI L R4,ASYSLC ADDRESS OF SYSLOCS @V326538 00930000
  1158. USING SYSLOCS,R4 @V326538 00931000
  1159. LA R1,DMKSYSDT POINT TO LOG DATE @V326538 00932000
  1160. LA R2,DMKSYSTM POINT TO LOG TIME @V326538 00933000
  1161. CALL DMKCVTDT GET DATE/TIME @V326538 00934000
  1162. MVC DMKSYSLW(12),DMKSYSDW MOVE IN DAY/WEEK @V326538 00935000
  1163. B SETCOMP @V326538 00936000
  1164. DROP R4 @V326538 00937000
  1165. EJECT 00938000
  1166. FRETLOG EQU * RELEASE A LOGMSG BUFFER @V326538 00939000
  1167. LR R1,R8 START OF BUFFER @V326538 00940000
  1168. LA R0,11 SIZE = 11 DBL-WDS @V326538 00941000
  1169. CALL DMKFRET RETURN IT TO FREE STORAGE @V326538 00942000
  1170. BR R10 RETURN @V326538 00943000
  1171. EJECT 00944000
  1172. ***** 00944010
  1173. * 00944020
  1174. * SET MAX NN COMMAND 00944030
  1175. * 00944040
  1176. ***** 00944050
  1177. SPACE 1 HRC018DK 00944060
  1178. SETMAX L R8,ASYSLC GET SYSLOCS ADDRESS HRC018DK 00944070
  1179. USING SYSLOCS,R8 HRC018DK 00944080
  1180. SLR R2,R2 ZERO R2 JUST IN CASE HRC018DK 00944090
  1181. TM SAVEWRK1,NARGTWO TEST FOR 'NN' NOT FOUND HRC018DK 00944100
  1182. BO SETMAX0 IF YES USE DEFAULT OF 0 HRC018DK 00944110
  1183. CALL DMKCVTDB CONVERT TO BINARY HRC018DK 00944120
  1184. BNZ CFO026 BAD OPTION HRC018DK 00944130
  1185. LR R2,R1 COPY 'NN' HRC018DK 00944140
  1186. SETMAX0 ST R2,DMKSYSMA SET IN SYSLOCS HRC018DK 00944150
  1187. B SETCOMP ALL DONE - NO MESSAGE HRC018DK 00944160
  1188. EJECT , HRC018DK 00944170
  1189. ***** HRC068DK 00944180
  1190. * HRC068DK 00944190
  1191. * SET STBYPASS VR/OFF COMMAND HRC068DK 00944200
  1192. * HRC068DK 00944210
  1193. ***** HRC068DK 00944220
  1194. SETSTB EQU * HRC068DK 00944230
  1195. TM SAVEWRK1,NARGTWO Are there any arguments?HRC068DK 00944240
  1196. BO CFO026 No, send error msg HRC068DK 00944250
  1197. * 00944260
  1198. C R11,AVMREAL Am I the V=R user? HRC068DK 00944270
  1199. BNE CFO063 No, send message HRC068DK 00944280
  1200. TM VMFSTAT,VMSTFRST User has STFIRST auth? HRC068DK 00944290
  1201. BZ CFO063 No, OPTION STFIRST req'dHRC068DK 00944300
  1202. TM VMPSTAT,VMV370R User is ECMODE capable? HRC068DK 00944310
  1203. BZ CFO062 No, ECMODE must be ON HRC068DK 00944320
  1204. CLC SAVEWRK5(3),=C'OFF' Set bypass off? HRC068DK 00944330
  1205. BE STBOFF Yes HRC068DK 00944340
  1206. CLC SAVEWRK5(3),=C'VR ' Set bypass vr? HRC068DK 00944350
  1207. BNE CFO026 N, invalid argument HRC068DK 00944360
  1208. TM VMCXSTAT,VMSTBYPS STBYPASS VR already set?HRC068DK 00944370
  1209. BO SETCOMP Y, no action, no responsHRC068DK 00944380
  1210. TM VMESTAT,VMSHADT Shadow tables present? HRC068DK 00944390
  1211. BZ CFO063 No, STB not allowed HRC068DK 00944400
  1212. CALL DMKVATBC Release old shadow tbls HRC068DK 00944410
  1213. * VMSTBYPS must be set *AFTER* DMKVATBC is called! HRC068DK 00944420
  1214. OI VMCXSTAT,VMSTBYPS Turn on STBYPASS VR HRC068DK 00944430
  1215. CALL DMKVATAB Set up guest CR1 & PG 0 HRC068DK 00944440
  1216. TM VMCXSTAT,VMSTBYPS STBYPS VR off after VAT?HRC068DK 00944450
  1217. BZ CFO063 Y, bad CR0/1, set off. HRC068DK 00944460
  1218. SR R15,R15 Clear for ICM HRC068DK 00944470
  1219. ICM R15,7,VMMADDR -> MICBLOK HRC068DK 00944480
  1220. BZ STBON None, ECPS:VM not activeHRC068DK 00944490
  1221. USING MICBLOK,R15 HRC068DK 00944500
  1222. MVI MICEVMA2,MICSTBAL Set on all STB ECPS asstHRC068DK 00944510
  1223. DROP R15 HRC068DK 00944520
  1224. * HRC068DK 00944530
  1225. STBON EQU * HRC068DK 00944540
  1226. MVC STBMSGA,=CL8'BYPASSED' Set msg HRC068DK 00944550
  1227. B STBMSGS Send msg HRC068DK 00944560
  1228. * HRC068DK 00944570
  1229. STBOFF EQU * HRC068DK 00944580
  1230. TM VMCXSTAT,VMSTBYPS STBYPASS VR already off?HRC068DK 00944590
  1231. BZ SETCOMP Y, no action, no responsHRC068DK 00944600
  1232. L R1,VMECEXT -> ECBLOK HRC068DK 00944610
  1233. L R1,EXTCR1-ECBLOK(,R1) Get V=R user's STO HRC068DK 00944620
  1234. TM 3(R1),X'01' Segment invalid? HRC068DK 00944630
  1235. BO STBRES Yes HRC068DK 00944640
  1236. L R1,0(,R1) -> PTE for page 0 HRC068DK 00944650
  1237. TM 1(R1),X'08' Page invalid? HRC068DK 00944660
  1238. BO STBRES Yes HRC068DK 00944670
  1239. L R15,=A(DMKSLC-4096) Get real addr of page 0 HRC068DK 00944680
  1240. SRL R15,8 Put addr in PTE format HRC068DK 00944690
  1241. ICM R0,3,0(R1) Load the page 0 PTE HRC068DK 00944700
  1242. N R0,=X'0000FFF0' Keep only address bits HRC068DK 00944710
  1243. CR R0,R15 PTE point to V=R page 0?HRC068DK 00944720
  1244. BNE STBRES Not V=R relocated page 0HRC068DK 00944730
  1245. NC 0(2,R1),F15+2 Set back to user page 0 HRC068DK 00944740
  1246. * HRC068DK 00944750
  1247. STBRES EQU * HRC068DK 00944760
  1248. NI VMCXSTAT,255-VMSTBYPS Reset STBYPASS HRC068DK 00944770
  1249. CALL DMKVATMD Get new shadow tables HRC068DK 00944780
  1250. CALL DMKVATAB And mark them invalid HRC068DK 00944790
  1251. MVC STBMSGA,=CL8'RESUMED ' Set msg HRC068DK 00944800
  1252. SR R15,R15 Clear for ICM HRC068DK 00944810
  1253. ICM R15,7,VMMADDR -> MICBLOK HRC068DK 00944820
  1254. BZ STBMSGS None, ECPS:VM not activeHRC068DK 00944830
  1255. USING MICBLOK,R15 HRC068DK 00944840
  1256. MVI MICEVMA2,0 Set off all STB assists HRC068DK 00944850
  1257. DROP R15 HRC068DK 00944860
  1258. * HRC068DK 00944870
  1259. STBMSGS LA R0,STBMSGL Msg size HRC068DK 00944880
  1260. LA R1,STBMSG Msg data HRC068DK 00944890
  1261. CALL DMKQCNWT,PARM=NORET Send response HRC068DK 00944900
  1262. B SETCOMP Done HRC068DK 00944910
  1263. * HRC068DK 00944920
  1264. STBMSG DC CL25'SHADOW TABLE MAINTENANCE ' HRC068DK 00944930
  1265. STBMSGA DC CL8' ' HRC068DK 00944940
  1266. STBMSGL EQU *-STBMSG HRC068DK 00944950
  1267. ***** 00945000
  1268. * 00946000
  1269. * COMMON SUBROUTINES 00947000
  1270. * 00948000
  1271. ***** 00949000
  1272. SPACE 00950000
  1273. EXECONF EQU * TEST FOR ON OR OFF (SINGLE BIT) @V326538 00951000
  1274. SLR R7,R7 NOTHING ELSE IS VALID @V326538 00952000
  1275. LA R8,EXECSON RETURN IF 'ON' SPECIFIED @V326538 00953000
  1276. BAL R10,TSTONOFF GO TEST @V326538 00954000
  1277. EX 0,4(0,R9) TURN OFF WHATEVER IT IS @V326538 00955000
  1278. B SETCOMP @V326538 00956000
  1279. SPACE 00957000
  1280. EXECSON EX 0,0(0,R9) TURN ON WHATEVER IT IS @V326538 00958000
  1281. B SETCOMP @V326538 00959000
  1282. SPACE 3 00960000
  1283. * TEST FOR ON/OFF ARGUMENT. WASON BIT SET @V5DAACD 00960100
  1284. * TO 1 IF ON SPECIFIED.ISSUE MSG IF ON/OFF @V5DAACD 00960110
  1285. * NOT SPECIFIED. @V5DAACD 00960120
  1286. SETONOFF EQU * @V5DAACD 00960130
  1287. TM SAVEWRK1,NARGTWO ANY 2ND ARGUMENT? @V5DAACD 00960140
  1288. BO CFO026 NO-GO ISSUE ERROR MSG. @V5DAACD 00960150
  1289. CLC SAVEWRK5(3),=C'OFF' OFF SPECIFIED? @V5DAACD 00960160
  1290. BCR 8,R8 YES - WASON BIT=0 ON ENTRY. @V5DAACD 00960170
  1291. CLC SAVEWRK5(3),=C'ON ' ON SPECIFIED? @V5DAACD 00960180
  1292. BNE BADONOFF NEITHER ON AND/OR OFF SPECIFIED @V5DAACD 00960190
  1293. OI SAVEWRK1,WASON SET ON INDICATOR FOR @V5DAACD 00960200
  1294. BR R8 LATER USE AND RETURN @V5DAACD 00960210
  1295. SPACE 3 00960220
  1296. * TEST FOR OPTIONAL 'PROC' IN COMMAND. @V5DAACD 00960230
  1297. * RETURN +0-UP MODE OR THIS PROCESSOR @V5DAACD 00960240
  1298. * +4-AP SET BOTH PROCESSOR'S @V5DAACD 00960250
  1299. * +8-AP AND OTHER PROCESSOR SPECIFIED. @V5DAACD 00960260
  1300. SETPROC EQU * @V5DAACD 00960270
  1301. LA R8,SETCOMP SETUP EXIT. @V5DAACD 00960280
  1302. TM APSTAT1,APUOPER AP MODE? @V5DAACD 00960290
  1303. BCR 14,R10 NO RETURN R10+0 @V5DAACD 00960300
  1304. * @V5DAACD 00960310
  1305. CALL DMKSCNFD LOCATE PROC IF GIVEN @V5DAACD 00960320
  1306. BNZ 4(R10) DO BOTH PROC'S IF PROC NOT SPECIFIED @V5DAACD 00960330
  1307. CLI 0(R1),C'P' OPTIONAL 'PROC' IN COMMAND? @V5DAACD 00960340
  1308. BNE SETPROC1 NO @V5DAACD 00960350
  1309. CALL DMKSCNFD YES,LOOK FOR PROC SPECIFIED. @V5DAACD 00960360
  1310. BNZ CFO026 THEY FORGOT TO TELL US WHICH ONE @V5DAACD 00960370
  1311. SETPROC1 EQU * @V5DAACD 00960380
  1312. CALL DMKCVTDB @V5DAACD 00960390
  1313. BNZ CFO026 VALUE GIVEN WASEN'T NUMERIC @V5DAACD 00960400
  1314. L R0,F63 LARGEST PROCESSOR ADDRESS POSSIBLE @V5DAACD 00960410
  1315. CR R1,R0 @V5DAACD 00960420
  1316. BH CFO026 TOO TOO BIG.. @V5DAACD 00960430
  1317. CH R1,IPUADDR IS IT PROCESSOR RUNNING US? @V5DAACD 00960440
  1318. BE 0(R10) YES RETURN +0 @V5DAACD 00960450
  1319. CH R1,IPUADDRX THE OTHER PROCESSOR? @V5DAACD 00960460
  1320. BE 8(R10) YES RETURN +8 @V5DAACD 00960470
  1321. LA R2,188 NO WE DON'T HAVE IT.. @V5DAACD 00960480
  1322. B NOVAR @V5DAACD 00960490
  1323. SPACE 3 00960500
  1324. * ROUTINE TO GET OVER TO THE OTHER @V5DAACD 00960510
  1325. * PROCESSOR.R6 CONTAINS RETURN ADDRESS. @V5DAACD 00960520
  1326. SETOTHER EQU * @V5DAACD 00960530
  1327. LA R0,CPEXSIZE @V5DAACD 00960540
  1328. CALL DMKFREE @V5DAACD 00960550
  1329. USING CPEXBLOK,R1 @V5DAACD 00960560
  1330. STM R2,R13,CPEXR2 SAVE NEEDED REG'S @V5DAACD 00960570
  1331. ST R6,CPEXADD SETUP RETURN ADDRESS. @V5DAACD 00960580
  1332. CALL DMKSTKOP FROM WHICH WE GET RESTARTED @V5DAACD 00960590
  1333. GOTO DMKDSPCH 1ST GET OFF OF THIS PROCESSOR. @V5DAACD 00960600
  1334. TSTONOFF EQU * @V326538 00961000
  1335. TM SAVEWRK1,NARGTWO ANY SECOND ARGUMENT @V326538 00962000
  1336. BO CFO026 BAD NEWS @V326538 00963000
  1337. CLC SAVEWRK5(3),=C'ON ' WAS 'ON' SPECIFIED @V326538 00964000
  1338. BCR 8,R8 YES, TAKE BRANCH ON R8 @V326538 00965000
  1339. CLC SAVEWRK5(4),=C'OFF ' 'OFF' SPECIFIED ??? @V326538 00966000
  1340. BCR 8,R10 BRANCH IF YES @V326538 00967000
  1341. LTR R7,R7 ANYTHING ELSE LEGAL ? @V326538 00968000
  1342. BCR 7,R7 YES - RETURN TO SUBROUTINE @V326538 00969000
  1343. SPACE 00970000
  1344. BADONOFF LA R1,SAVEWRK5 ARGUMENT ADDRESS @V326538 00971000
  1345. LA R0,1(,R4) LENGTH @V326538 00972000
  1346. B CFO003 GO SEND ERROR MESSAGE @V326538 00973000
  1347. SPACE 3 00974000
  1348. IRMFRET LA R0,IRMSIZE SIZE OF IRMBLOK IN D. W. @V326538 00975000
  1349. LR R1,R5 ADDRESS OF BLOK @V326538 00976000
  1350. CALL DMKFRET RETURN TO STORAGE @V326538 00977000
  1351. SR R1,R1 ZERO REG. @V326538 00978000
  1352. ST R1,0(,R3) ZERO DMKIOEIR @V326538 00979000
  1353. BR R10 RETURN @V326538 00980000
  1354. SPACE 3 00981000
  1355. BLDADR EQU * @V326538 00982000
  1356. CALL DMKSCNRA GET THE 'CCU' DEVICE ADDRESS @V407438 00983000
  1357. CALL DMKCVTBH CONVERT IT TO HEX @V326538 00984000
  1358. BR R10 RETURN TO CALLER @V326538 00985000
  1359. EJECT 00986000
  1360. ***** 00987000
  1361. * 00988000
  1362. * ERROR MESSAGES 00989000
  1363. * 00990000
  1364. ***** 00991000
  1365. SPACE 00992000
  1366. SETNTERR EQU * @V326538 00993000
  1367. LA R0,1(,R3) LENGTH @V326538 00994000
  1368. LA R1,SAVEWRK2 AND ADDRESS @V326538 00995000
  1369. B CFO003 OF BAD ARGUMENT @V326538 00996000
  1370. SPACE 00997000
  1371. BADRECNN LM R0,R1,SAVEWRK8 LENGTH AND ADDRESS OF BAD ARG. @V326538 00998000
  1372. SPACE 00999000
  1373. CFO003 LA R2,3 INVALID OPTION - OPTN @V326538 01000000
  1374. B CALLERM ... @V326538 01001000
  1375. SPACE 2 01002000
  1376. CFO006 LA R2,6 INVALID DEVICE TYPE - RADDR @V326538 01003000
  1377. BAL R10,BLDADR GO BUILD DEVICE ADDRESS @V326538 01004000
  1378. STCM R1,7,SAVEWRK2 STUFF INTO SAVE AREA @V326538 01005000
  1379. LA R0,3 LENGTH @V326538 01006000
  1380. LA R1,SAVEWRK2 ADDRESS @V326538 01007000
  1381. B CALLERM ... @V326538 01008000
  1382. SPACE 2 01009000
  1383. CFO013 LA R2,13 CONFLICTING OPTION - OPTN @V326538 01010000
  1384. B CALLERM ... @V326538 01011000
  1385. SPACE 2 01012000
  1386. CFO020 LA R2,20 USERID MISSING OR INVALID @V326538 01013000
  1387. B NOVAR ... @V326538 01014000
  1388. SPACE 2 01015000
  1389. NORADDR BAL R10,IRMFRET RETURN IRMBLOK @V326538 01016000
  1390. SPACE 01017000
  1391. CFO021 LA R2,21 RADDR MISSING OR INVALID @V326538 01018000
  1392. B NOVAR ... @V326538 01019000
  1393. SPACE 2 01020000
  1394. RECDERR BAL R10,IRMFRET GET RID OF IRMBLOK @V326538 01021000
  1395. SPACE 01022000
  1396. CFO026 LA R2,26 OPERAND MISSING OR INVALID @V326538 01023000
  1397. B NOVAR ... @V326538 01024000
  1398. SPACE 2 01025000
  1399. NORADDR2 LR R9,R1 SAVE BAD ARG. @V326538 01026000
  1400. BAL R10,IRMFRET RETURN IRMBLOK @V326538 01027000
  1401. LR R1,R9 RESTORE BAD ARG. @V326538 01028000
  1402. SPACE 01029000
  1403. CFO040 CALL DMKCVTBH CONVERT BACK TO HEX @V326538 01030000
  1404. N R1,X40FFS BLANK HIGH BYTE @V326538 01031000
  1405. SLR R0,R0 ZERO LENGTH REG @V326538 01032000
  1406. LA R2,40 DEV ADDR DOES NOT EXIST @V326538 01033000
  1407. B CALLERM ... @V326538 01034000
  1408. SPACE 2 01035000
  1409. CFO041 LA R2,41 LOGMSG NN DOES NOT EXIST @V326538 01036000
  1410. LA R0,1(,R4) ARG. LENGTH @V326538 01037000
  1411. LA R1,SAVEWRK5 ARG. ADDRESS @V326538 01038000
  1412. B CALLERM ... @V326538 01039000
  1413. SPACE 2 01040000
  1414. CFO045 LA R2,45 USERID NOT LOGGED ON @V326538 01041000
  1415. LA R0,1(,R4) LENGTH @V326538 01042000
  1416. LA R1,SAVEWRK5 ADDRESS @V326538 01043000
  1417. B CALLERM ... @V326538 01044000
  1418. SPACE 2 01045000
  1419. CFO046 LA R2,46 TYPE RADDR OFFLINE @V326538 01046000
  1420. MVC SAVEWRK2(4),=C'TAPE' MOVE IN TYPE @V326538 01047000
  1421. MVI SAVEWRK3,X'00' SEPARATER @V326538 01048000
  1422. BAL R10,BLDADR BUILD REAL ADDRESS @V326538 01049000
  1423. STCM R1,7,SAVEWRK3+1 STUFF IT INTO FIELD @V326538 01050000
  1424. LA R0,8 FIELD LENGTH @V326538 01051000
  1425. LA R1,SAVEWRK2 ADDRESS @V326538 01052000
  1426. B CALLERM ... @V326538 01053000
  1427. CFO062 EQU * HRC068DK 01053010
  1428. LA R2,62 ECMODE not set on HRC068DK 01053020
  1429. B NOVAR Go send message HRC068DK 01053030
  1430. CFO063 EQU * HRC068DK 01053040
  1431. LA R2,63 STBYPASS not set HRC068DK 01053050
  1432. B NOVAR Go send message HRC068DK 01053060
  1433. SPACE 2 01054000
  1434. USING RDEVBLOK,R8 @V326538 01055000
  1435. CFO140 LA R2,140 TYPE RADDR ATTACHED TO USERID @V326538 01056000
  1436. MVC SAVEWRK2(4),=C'TAPE' MOVE TYPE TO MESSAGE @V326538 01057000
  1437. MVI SAVEWRK3,X'00' SEP. BYTE @V326538 01058000
  1438. BAL R10,BLDADR BUILD REAL ADDRESS @V326538 01059000
  1439. STCM R1,B'0111',SAVEWRK3+1 STORE INTO FIELD @V326538 01060000
  1440. MVI SAVEWRK4,X'00' SEP. BYTE @V326538 01061000
  1441. L R1,RDEVUSER USERS VMBLOK ADDRESS @V326538 01062000
  1442. MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R1) INSERT USERID @V326538 01063000
  1443. LA R0,17 LENGTH @V326538 01064000
  1444. LA R1,SAVEWRK2 ADDRESS OF FIELD @V326538 01065000
  1445. B CALLERM ... @V326538 01066000
  1446. DROP R8 NO MORE RDEVBLOK @V326538 01067000
  1447. SPACE 2 01068000
  1448. CFO143 MVC SAVEWRK3+3(4),=C'TAPE' SET UP THE SUBSTITUTES @V326538 01069000
  1449. MVC SAVEWRK4+3,X'00' DELIMITER @V326538 01070000
  1450. LA R0,8 LENGTH OF SUBSTITUTE DATA @V326538 01071000
  1451. LA R1,SAVEWRK3+3 ADDRESS OF THE SUBSTITUTABLES @V326538 01072000
  1452. LA R2,143 TYPE RADDR IN USE BY SYSTEM @V326538 01073000
  1453. B CALLERM GO DO IT @V326538 01074000
  1454. SPACE 2 01075000
  1455. CFO175 LA R2,175 FAV|RES ALREADY IN USE BY USERID @V326538 01076000
  1456. B CALLERM @V326538 01077000
  1457. SPACE 01079200
  1458. CFO186 LA R2,186 ERROR CODE: CP ASSIST NOT AVAIL. @V386198 01079300
  1459. SPACE 01079400
  1460. NOVAR SLR R1,R1 ZERO PARM REG @V326538 01081000
  1461. SPACE 01082000
  1462. CALLERM ICM R0,14,MODID+3 INSERT MODULE IDENTITY @V326538 01083000
  1463. CALL DMKERMSG SEND MESSAGE @V326538 01084000
  1464. * 01085000
  1465. * ERMSG WILL RETURN TO DMKCFM INSTEAD OF HERE 01086000
  1466. SPACE 1 @V4075A0 01086100
  1467. * EXCEPT FOR SASSIST IN AP ENVIRONMENT @V4075A0 01086200
  1468. BR R8 @V4075A0 01086300
  1469. * 01087000
  1470. EJECT 01088000
  1471. LTORG @V326538 01089000
  1472. EJECT 01090000
  1473. PSA @V326538 01091000
  1474. COPY CONBUF @V326538 01092000
  1475. COPY CORE @V326538 01093000
  1476. COPY DEVTYPES @V326538 01094000
  1477. COPY EQU @V326538 01095000
  1478. COPY IOER @V326538 01096000
  1479. COPY RBLOKS @V326538 01098000
  1480. COPY SAVE @V326538 01099000
  1481. SYSLOCS @V326538 01100000
  1482. COPY VMBLOK @V326538 01101000
  1483. COPY MICBLOK HRC068DK 01101050
  1484. COPY MCHAREA @V5088AB 01101110
  1485. EJECT 01102000
  1486. * 01103000
  1487. * EQUATES FOR CLASSES 01104000
  1488. * 01105000
  1489. A EQU VMCLASSA @V326538 01106000
  1490. B EQU VMCLASSB @V326538 01107000
  1491. C EQU VMCLASSC @V326538 01108000
  1492. D EQU VMCLASSD @V326538 01109000
  1493. E EQU VMCLASSE @V326538 01110000
  1494. F EQU VMCLASSF @V326538 01111000
  1495. G EQU VMCLASSG @V326538 01112000
  1496. END DMKCFO 01113000