Table of Contents

DMKCPV Source

References

Source Listing

DMKCPV.ASSEMBLE.txt
  1. CPV TITLE 'DMKCPV (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMKCPV 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * TO HANDLE A, B, AND C PRIVILEGE CLASS COMMANDS THAT ARE NOT 00009000
  10. * SUBSETS OF NON-PRIVILEGED 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. * DMKCPVEN - ENABLE SYSTEM LOW SPEED LINES 00018000
  19. * DMKCPVAE - ENABLE SYSTEM LOW SPEED LINES DURING SYSTEM RESTART 00019000
  20. * DMKCPVDS - DISABLE SYSTEM LOW SPEED LINES 00020000
  21. * DMKCPVLK - LOCK USER PAGES INTO MAIN STORAGE 00021000
  22. * DMKCPVUL - UNLOCK USER PAGES PREVIOUSLY LOCKED 00022000
  23. * DMKCPVAC - CREATE AN ACCOUNTING RECORD FOR THE SPECIFIED 00023000
  24. * USER OR FOR ALL USERS ON THE SYSTEM 00024000
  25. * DMKCPVAA - TO PUNCH ACCOUNTING CARDS 00025000
  26. * 00026000
  27. * ENTRY CONDITIONS - 00027000
  28. * 00028000
  29. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00029000
  30. * GPR11 = ADDRESS OF CALLER'S VMBLOK 00030000
  31. * GPR12 = ADDRESS OF ENTRY POINT 00031000
  32. * GPR13 = ADDRESS OF SAVEAREA 00032000
  33. * 00033000
  34. * EXIT CONDITIONS - 00034000
  35. * 00035000
  36. * NORMAL - 00036000
  37. * GPR2 = 0 00037000
  38. * 00038000
  39. * ERROR - 00039000
  40. * GPR2 = ERROR MESSAGE CODE NUMBER 00040000
  41. * 00041000
  42. * CALLS TO OTHER ROUTINES - 00042000
  43. * 00043000
  44. * DMKGRFIN - TO ENABLE GRAPHIC DEVICES 00044000
  45. * DMKQCNWT - TO WRITE MESSAGE TO CONSOLE 00045000
  46. * DMKFREE - TO OBTAIN STORAGE 00046000
  47. * DMKSCNAU - TO FIND VMBLOK 00047000
  48. * DMKPTRUL - TO UNLOCK A PAGE 00048000
  49. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00049000
  50. * DMKCVTBH - TO CONVERT BINARY TO HEX 00050000
  51. * DMKSCNRN - GET THE REAL DEVICE TYPE 00051000
  52. * DMKSCNFD - LOCATE THE NEXT ARGUMENT ON THE COMMAND LINE 00052000
  53. * DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY 00053000
  54. * DMKSCNRU -LOCATE THE RDEVBLOK FOR THE SPECIFIED REAL DEVICE 00054000
  55. * DMKPTRAN - LOCATE AND FETCH A PAGE OF VIRTUAL STORAGE 00055000
  56. * DMKACOTM - PRINT USER ACCOUNTING MESSAGE GIVING CONNECT AND 00056000
  57. * CPU TIMES 00057000
  58. * DMKACOFF - CREATE AN ACCOUNTING RECORD FOR A USER 00058000
  59. * DMKACODV - CREATE AN ACCOUNTING RECORD FOR A DEDICATED DEVICE 00059000
  60. * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00060000
  61. * DMKSCNRD - GET THE REAL DEVICE ADDRESS (CCU) 00061000
  62. * DMKLOKSW - SWITCH TO ANOTHER VMBLOK IF SYSTEM IS AP-MODE 00061100
  63. * 00062000
  64. * EXTERNAL REFERENCES - 00063000
  65. * 00064000
  66. * DMKDSPNP - NUMBER OF PAGES AVAILABLE IN DYNAMIC PAGING 00065000
  67. * AREA. 00066000
  68. * DMKSCHPU - PAGE USAGE COUNT (TOTAL WORKING SET SIZE 00066200
  69. * OF IN-QUEUE USERS). 00066400
  70. * 00067000
  71. * TABLES / WORKAREAS - 00068000
  72. * 00069000
  73. * CORTABLE 00070000
  74. * 00071000
  75. * REGISTER USAGE - 00072000
  76. * 00073000
  77. * GPR0 = LENGTH OF ARGUMENT (RETURNED BY DMKSCNFD) 00074000
  78. * GPR1 = ADDRESS OF ARGUMENT (RETURNED BY DMKSCNFD) 00075000
  79. * GPR2 = PARMS PASSED TO CALLED ROUTINES 00076000
  80. * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00077000
  81. * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00078000
  82. * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00079000
  83. * GPR6-8 NOT USED 00080000
  84. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00081000
  85. * GPR10 = IOBLOK BASE 00082000
  86. * GPR11 = VMBLOK BASE 00083000
  87. * GPR12 = MODULE BASE 00084000
  88. * GPR13 = SAVEAREA BASE 00085000
  89. * GPR14 = EXTERNAL LINKAGE 00086000
  90. * GPR15 = EXTERNAL LINKAGE 00087000
  91. * 00088000
  92. * OPERATION - 00089000
  93. * 00090000
  94. * THE COMMAND HANDLING ROUTINES IN DMKCPV ARE CALLED FROM DMKCFM 00091000
  95. * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00092000
  96. * THE FORMAT AND OPERATION OF EACH COMMAND IS DESCRIBED IN S 00093000
  97. * SEPARATE COMMAND PROLOGUES BELOW 00094000
  98. *. 00095000
  99. EJECT 00096000
  100. COPY OPTIONS @VA03757 00097000
  101. COPY LOCAL @VA03757 00098000
  102. SPACE 3 00099000
  103. PUNCH 'SPB' @VA03757 00100000
  104. DMKCPV CSECT @VA03757 00101000
  105. MODID DC CL8'DMKCPV' @VA03757 00102000
  106. SPACE 3 00103000
  107. USING PSA,R0 @VA03757 00104000
  108. USING VMBLOK,R11 @VA03757 00105000
  109. USING SAVEAREA,R13 @VA03757 00106000
  110. SPACE 2 00107000
  111. EXTRN DMKSCNFD @VA03757 00108000
  112. EXTRN DMKSCNAU @VA03757 00109000
  113. EXTRN DMKCVTHB @VA03757 00110000
  114. EXTRN DMKSCNRD @VA03757 00111000
  115. EXTRN DMKSCNRU @VA03757 00112000
  116. EXTRN DMKPTRUL @VA03757 00113000
  117. EXTRN DMKACOTM @VA03757 00114000
  118. EXTRN DMKACOFF @VA03757 00115000
  119. EXTRN DMKACODV @VA03757 00116000
  120. EXTRN DMKDSPNP @VA03757 00117000
  121. EXTRN DMKSCHPU @VA04709 00117500
  122. EXTRN DMKCVTBH @VA03757 00118000
  123. EXTRN DMKSCNRN @VA03757 00119000
  124. EXTRN DMKERMSG @VA03757 00120000
  125. EXTRN DMKRNH @VA05061 00120500
  126. EXTRN DMKPTRAN @VA03757 00121000
  127. * DMKPGSPR - RELEASE PAGES IN VIRT=REAL REGION 00122000
  128. EXTRN DMKSTKCP,DMKCNSEN,DMKGRFEN @VA03757 00123000
  129. EXTRN DMKPTRCP,DMKPTRSN @VA08341 00123100
  130. AIF (NOT &VIRREAL).VIRT0 @VA03757 00124000
  131. EXTRN DMKSLC @VA03757 00125000
  132. EXTRN DMKPGSPR @V408246 00126000
  133. .VIRT0 ANOP 00127000
  134. EJECT 00128000
  135. *. 00129000
  136. * SUBROUTINE NAME - 00130000
  137. * 00131000
  138. * DMKCPVEN 00132000
  139. * 00133000
  140. * FUNCTION - 00134000
  141. * 00135000
  142. * TO ENABLE SYSTEM LOW SPEED LINES FOR USER LOGON 00136000
  143. * 00137000
  144. * COMMAND LINE FORMAT - 00138000
  145. * 00139000
  146. * +----------+---------------------------+ 00140000
  147. * | ENABLE | LINE1 LINE2 ... LINEN | 00141000
  148. * | EN | ALL | 00142000
  149. * +----------+---------------------------+ 00143000
  150. * 00144000
  151. * OPERATION - 00145000
  152. * 00146000
  153. * 1. CALL DMKSCNFD TO GET THE NEXT ARGUMENT. IF NONE FOUND, 00147000
  154. * CHECK TO SEE IF ANY ARGUMENTS HAVE BEEN PROCESSED. IF NOT, 00148000
  155. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV026E. IF 00149000
  156. * PROCESSING HAS BEEN DONE, EXIT. 00150000
  157. * 2. IF ARGUMENT = 'ALL', GO TO STEP 6. IF NOT, CALL DMKCVTHB 00151000
  158. * TO CONVERT THE ADDRESS TO BINARY. IF CONVERT FAILS, CALL 00152000
  159. * DMKERMSG TO SEND ERROR MESSAGE DMKCPV021E. 00153000
  160. * 3. ISSUE SWITCH TO INSURE PROCESSING CONTINUES ON THE MAIN 00154100
  161. * PROCESSOR IF THE SYSTEM IS IN AP-MODE. CALL DMKSCNRU 00154200
  162. * TO GET THE DEVICE BLOKS. IF THE BLOKS ARE NOT 00154300
  163. * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV040E. 00155000
  164. * 4. IF DEVICE IS NOT A TERMINAL, GO TO STEP 8. IF IT IS A 00156000
  165. * DEDICATED LINE, GO TO STEP 10. IF DEVICE IS OFFLINE, GO TO 00157000
  166. * STEP 9. ELSE - CONTINUE. 00158000
  167. * 5. IF THIS IS A DISABLE COMMAND, GO TO THE DISABLE ROUTINE 00159000
  168. * AT LABEL DISASUB VIA A BAL R14. THIS ROUTINE IS DESCRIBED 00160000
  169. * IN THE PROLOG FOR DISABLE. IF AN ENABLE COMMAND, RESET THE 00161000
  170. * RDEVDISB FLAG IN THE RDEVBLOK. IF LINE IS ALREADY ENABLED, 00162000
  171. * GO TO STEP 1. IF NOT,BAL TO THE SUBROUTINE LABELED ENABTERM 00163000
  172. * IN STEP 12. UPON RETURN FROM THIS, GO TO STEP 1. 00164000
  173. * 6. CALL DMKSCNFD TO CHECK FOR ANY EXTRANEOUS ARGUMENT. IF 00165000
  174. * ONE FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV003E. 00166000
  175. * PICK UP THE DEVICE BLOKS FOR THE NEXT TERMINAL DEVICE. IF 00167000
  176. * THIS IS A DISABLE COMMAND, BAL TO THE DISABLE ROUTINE AT 00168000
  177. * LABEL DISASUB WHICH IS DESCRIBED IN THE PROLOG FOR THE 00169000
  178. * DISABLE COMMAND. WHEN RETURN, GO TO STEP 7. IF THIS IS AN 00170000
  179. * ENABLE COMMAND, RESET THE RDEVDISB FLAG IN THE RDEVBLOK. 00171000
  180. * THEN BAL TO THE ENABLE ROUTINE IN STEP 12. 00172000
  181. * 7. IF THIS IS 'ALL' PROCESS AND THERE ARE MORE DEVICES TO 00173000
  182. * SCAN, GO BACK TO STEP 6. IF COMMAND IS COMPLETLY 00174000
  183. * PROCESSED, CALL DMKQCNWT TO SEND THE 'COMMAND COMPLETE' 00175000
  184. * MESSAGE AND THEN EXIT. 00176000
  185. * 8. SET UP THE INVALID TYPE MESSAGE(DMKCPV006E) AND GO TO 00177000
  186. * STEP 11. 00178000
  187. * 9. SET UP THE OFFLINE MESSAGE(DMKCPV046E) AND GO TO STEP 11. 00179000
  188. * 10. SET UP THE DEDICATED DEVICE(DMKCPV140E) ERROR MESSAGE. 00180000
  189. * 11. CALL DMKERMSG TO SEND THE ERROR MESSAGE. THEN GO BACK 00181000
  190. * TO STEP 1. 00182000
  191. * 12. CALL DMKFREE TO OBTAIN STORAGE FOR A CPEXBLOK. 00183000
  192. * STACK CPEXBLOK FOR DMKCNSEN OR DMKGRFEN TO ENABLE THE 00184000
  193. * SPECIFIED DEVICE. RETURN ON GR9. 00185000
  194. * 00186000
  195. * RESPONSES - 00187000
  196. * COMMAND COMPLETE 00188000
  197. * 00189000
  198. * ERROR MESSAGES - 00190000
  199. * DMKCPV003E INVALID OPTION - (OPTION) 00191000
  200. * DMKCPV006E INVALID DEVICE TYPE - (ADDR) 00192000
  201. * DMKCPV021E RADDR MISSING OR INVALID 00193000
  202. * DMKCPV026E OPERAND MISSING OR INVALID 00194000
  203. * DMKCPV040E DEV (ADDR) DOES NOT EXIST 00195000
  204. * DMKCPV046E (TYPE RADDR) OFFLINE 00196000
  205. * DMKCPV140E (TYPE RADDR) ATTACHED TO (USERID) 00197000
  206. * 00198000
  207. *. 00199000
  208. EJECT 00200000
  209. DMKCPVEN RELOC @VA03757 00201000
  210. MVC SAVEWRK1(4),ZEROES ZERO FLAG FIELD @VA03757 00202000
  211. SPACE 2 00203000
  212. ENABSCAN EQU * SCAN FOR ENABLE / DISABLE CMD @VA03757 00204000
  213. CALL DMKSCNFD FIND ANOTHER ARGUMENT @VA03757 00205000
  214. BNZ NOARG NO MORE ARGUMENTS @VA03757 00206000
  215. MVI SAVEWRK1,X'FF' INDICATE AT LEAST ONE ARG. @VA03757 00207000
  216. * RECEIVED 00208000
  217. CLC 0(3,R1),=C'ALL' WAS ALL SPECIFIED @VA03757 00209000
  218. BE DOALL YES @VA03757 00210000
  219. CL R0,F3 CAN ONLY HAVE UP TO THREE @VA03757 00211000
  220. * CHARACTERS 00212000
  221. BH CPV021 ERROR IF HAVE MORE @VA03757 00213000
  222. CALL DMKCVTHB CONVERT THE ADDRESS @VA03757 00214000
  223. BNZ CPV021 CONVERT FAILED @VA03757 00215000
  224. CALL DMKSCNRU LOCATE REAL BLOKS FOR DEVICE @VA03757 00216000
  225. BNZ CPV040 NOT FOUND @VA03757 00217000
  226. SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00217100
  227. USING RDEVBLOK,R8 @VA03757 00218000
  228. CLI RDEVTYPC,CLASTERM TEST FOR TERMINAL CLASS @VA03757 00219000
  229. BE TSTTYP YES, TEST ADAPTER TYPE @VA03757 00220000
  230. CLI RDEVTYPC,CLASGRAF IS IT GRAPHIC TYPE ?? @VA03757 00221000
  231. BNE NOTERM NO, INVALID @VA03757 00222000
  232. TM RDEVTYPE,TYP3066+TYP3277+TYP3284+TYP3278 @V60A6B6 00223000
  233. BNZ TSTDED YES - ENABLE IT @VA03757 00224000
  234. B NOTERM INVALID @VA03757 00225000
  235. TSTTYP CLI RDEVTYPE,TYPTTY SUPPORTED DEVICE TYPE ? @VA03757 00226000
  236. BH NOTERM NO -- ERROR @VA03757 00227000
  237. CLI RDEVTYPE,TYPSDLC SDLC ADAPTER? @VA11139 00227100
  238. BE NOTERM YES, IGNORE IT. @VA11139 00227200
  239. TSTDED TM RDEVFLAG,RDEVENAB IS IT ENABLED? @VA03757 00228000
  240. BO ENADISA YES--GO PROCESS @VA03757 00229000
  241. TM RDEVSTAT,RDEVDED DEDICATE DEVICE? @VA03757 00230000
  242. BO DEDDEV YES INFORM OPERATOR @VA03757 00231000
  243. TM RDEVSTAT,RDEVDISA IS DEVICE NOT AVAILABLE? @VA03757 00232000
  244. BO NOTONLNE YES @VA03757 00233000
  245. ENADISA EQU * @VA03757 00234000
  246. BAL R14,ENABSUB GO ENABLE OR DISABLE THE LINE @VA03757 00235000
  247. B ENABSCAN GO GET NEXT ARGUMENT @VA03757 00236000
  248. EJECT 00237000
  249. DOALL EQU * @VA03757 00238000
  250. CL R0,F3 MUST HAVE THREE AND ONLY THREE @VA03757 00239000
  251. * CHARACTERS 00240000
  252. BNE CPV003 ERROR IF IT ISN'T @VA03757 00241000
  253. SPACE 00242000
  254. CPVCPI EQU * ENTER HERE FOR AUTO RE-ENABLE @VA03757 00243000
  255. LA R4,2 LOAD INCREMENT FOR BXLE LOOP @VA03757 00244000
  256. SR R1,R1 ZERO CHANNEL INDEX @VA03757 00245000
  257. LA R5,30 GPR5 POINTS TO END OF INDEX TABLE@VA03757 00246000
  258. ENABNCH L R10,ARIOCT ADDRESS OF CHANNEL INDICES @VA03757 00247000
  259. LH R6,0(R1,R10) LOAD INDEX OF NEXT CHANNEL @VA03757 00248000
  260. LTR R6,R6 IS CHANNEL ALIVE ? @VA03757 00249000
  261. BM ENABCHI NO, TRY NEXT CHANNEL @VA03757 00250000
  262. A R6,ARIOCH ADDRESS OF RCHBLOK IN GPR6 @VA03757 00251000
  263. USING RCHBLOK,R6 @VA03757 00252000
  264. SR R2,R2 ZERO CONTROL UNIT INDEX COUNT @VA03757 00253000
  265. LA R5,62 END OF CONTROL UNIT INDEX TABLE @VA03757 00254000
  266. ENABNCU LH R7,RCHCUTBL(R2) PICK UP INDEX @VA03757 00255000
  267. LTR R7,R7 IS CONTROL UNIT THERE ? @VA03757 00256000
  268. BM ENABCUI NO TRY NEXT CU @VA03757 00257000
  269. A R7,ARIOCU ADDRESS OF RCUBLOK TO GPR7 @VA03757 00258000
  270. USING RCUBLOK,R7 @VA03757 00259000
  271. SR R3,R3 ZERO INDEX FOR DEV INDEX @VA03757 00260000
  272. LA R5,30 SET R5 TO END OF DEVICE INDEX @VA03757 00261000
  273. * TABLE 00262000
  274. ENABNDEV LH R8,RCUDVTBL(R3) PICK UP INDEX @VA03757 00263000
  275. LTR R8,R8 IS DEVICE THERE ? @VA03757 00264000
  276. BM ENABDVI NO TRY NEXT DEVICE @VA03757 00265000
  277. SLL R8,3(0) CONVERT TO BYTE INDEX @VA03757 00266000
  278. A R8,ARIODV ADDRESS OF RDEVBLOK TO GPR8 @VA03757 00267000
  279. USING RDEVBLOK,R8 @VA03757 00268000
  280. TM RDEVSTAT,RDEVDISA AVAILABLE? @VA03757 00269000
  281. BO ENABDVI NO--SKIP IT @VA03757 00270000
  282. SPACE 00271000
  283. CLI RDEVTYPC,CLASTERM SLOW-SPEED TERMINAL ? @VA03757 00272000
  284. BNE TSTGRAF NO -- CHECK FOR GRAPHIC @VA03757 00273000
  285. CLI RDEVTYPE,TYPTTY CHECK FOR SUPPORTED TYPE @VA03757 00274000
  286. BH ENABDVI NO -- SKIP OVER IT @VA03757 00275000
  287. CLI RDEVTYPE,TYPSDLC SDLC ADAPTER @VA11139 00275100
  288. BE ENABDVI YES, IGNORE IT. @VA11139 00275200
  289. BAL R14,ENABSUB ENABLE OR DISABLE THE LINE @VA03757 00276000
  290. B ENABDVI CONTINUE @VA03757 00277000
  291. SPACE 00278000
  292. TSTGRAF EQU * CHECK FOR SUPPORTED GRAPHIC TERMS@VA03757 00279000
  293. CLI RDEVTYPC,CLASGRAF LOCAL GRAPHIC TERMINAL ? @VA03757 00280000
  294. BNE ENABDVI NO -- SKIP OVER IT @VA03757 00281000
  295. TM RDEVTYPE,TYP3066+TYP3277+TYP3284+TYP3278 @V60A6B6 00282000
  296. BZ ENABDVI NO -- SKIP IT @VA03757 00283000
  297. BAL R14,ENABSUB ENABLE OR DISABLE THIS DEVICE @VA03757 00284000
  298. ENABDVI BXLE R3,R4,ENABNDEV @VA03757 00285000
  299. LA R5,62 LOAD END OF CU TABLE @VA03757 00286000
  300. ENABCUI BXLE R2,R4,ENABNCU @VA03757 00287000
  301. LA R5,30 LOAD END OF CH INDEX TABLE @VA03757 00288000
  302. ENABCHI BXLE R1,R4,ENABNCH @VA03757 00289000
  303. TM SAVEWRK1+2,CPICALL+RNHCALL NEED A MSG? @VA05061 00290100
  304. BNZ ENABEXIT NOT THIS TIME @VA05061 00291100
  305. EJECT 00292000
  306. * 00293000
  307. * WHEN FALL THRU - HAVE CHECKED ALL DEVICES 00294000
  308. * 00295000
  309. ALLDONE EQU * HAVE PROCESSED ALL OF COMMAND @VA03757 00296000
  310. MSG 'COMMAND COMPLETE' REASSURANCE MESSAGE @VA03757 00297000
  311. SENDMSG EQU * @VA03757 00298000
  312. CALL DMKQCNWT,PARM=NORET SEND THE MESSAGE @VA03757 00299000
  313. ENABEXIT EQU * RETURN TO DMKCFM @VA03757 00300000
  314. EXIT , @VA03757 00301000
  315. SPACE 2 00302000
  316. NOARG TM SAVEWRK1,X'FF' ANY ARGUMENTS AT ALL ? @VA03757 00303000
  317. BO ALLDONE YES @VA03757 00304000
  318. B CPV026 NO ARGUMENTS @VA03757 00305000
  319. SPACE 00306000
  320. SERRMSG LA R1,SAVEWRK2 ADDRESS OF FIELDS @VA03757 00307000
  321. ICM R0,14,MODID+3 LOAD MODULE IDENTIFIER @VA03757 00308000
  322. CALL DMKERMSG SEND THE MESSAGE @VA03757 00309000
  323. * DMKERM WILL RETURN DIRECTLY TO DMKCFM INSTEAD OF HERE. 00310000
  324. SPACE 00311000
  325. NOTERM EQU * HAVE NON-TERMINAL DEVICE @VA03757 00312000
  326. CALL DMKCVTBH CONVERT THE ADDRESS BACK TO HEX @VA03757 00313000
  327. STCM R1,7,SAVEWRK2 STICK IT IN WIRK AREA @VA03757 00314000
  328. LA R0,3 FIELD LENGTH @VA03757 00315000
  329. LA R2,6 ERROR CODE @VA03757 00316000
  330. B SERRMSG SEND MESSAGE @VA03757 00317000
  331. SPACE 00318000
  332. NOTONLNE BAL R10,GETYPE GO SET UP TYPE FIELD @VA03757 00319000
  333. LA R0,8 FIELD LENGTH @VA03757 00320000
  334. LA R2,46 ERROR CODE @VA03757 00321000
  335. B SERRMSG @VA03757 00322000
  336. SPACE 00323000
  337. DEDDEV EQU * @VA03757 00324000
  338. BAL R10,GETYPE SET UP TYPE FIELD @VA03757 00325000
  339. L R2,RDEVUSER VMBLOK ADDRESS OF USER @VA03757 00326000
  340. MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) MOVE IN USERI @VA03757 00327000
  341. MVI SAVEWRK4,X'00' SEP. FIELDS @VA03757 00328000
  342. LA R0,17 FIELD LENGTH @VA03757 00329000
  343. LA R2,140 ERROR CODE @VA03757 00330000
  344. B SERRMSG ... @VA03757 00331000
  345. SPACE 00332000
  346. GETYPE EQU * DEVELOP TYPE AND RADDR FOR @VA03757 00333000
  347. * ERROR MESSAGE 00334000
  348. CALL DMKCVTBH FIRST GET ADDR @VA03757 00335000
  349. ST R1,SAVEWRK3 AND PUT IN THE MESSAGE @VA03757 00336000
  350. MVI SAVEWRK3,X'00' SEPARATER @VA03757 00337000
  351. CALL DMKSCNRN GET THE REAL NAME @VA03757 00338000
  352. ST R1,SAVEWRK2 SAVE NAME IN WORK AREA @VA03757 00339000
  353. BR R10 RETURN TO CALLER @VA03757 00340000
  354. SPACE 3 00341000
  355. ENABSUB EQU * ENABLE OR DISABLE A DEVICE @VA03757 00342000
  356. CLI RDEVTYPE,TYPSDLC SDLC ADAPTER? @VA11139 00342100
  357. BE NOTERM YES, IGNORE IT. @VA11139 00342200
  358. TM SAVEWRK1+2,DISABLE DISABLE COMMAND ? @VA03757 00343000
  359. BZ ENABLIN NO -- MUST BE ENABLE @VA03757 00344000
  360. TM RDEVFLAG,RDEVENAB IS THIS LINE ENABLED ? @VA03757 00345000
  361. BCR 8,R14 (BZ) NO -- NOTHING NEED BE DONE @VA03757 00346000
  362. OI RDEVFLAG,RDEVDISB SET THE DISABLE FLAG @VA03757 00347000
  363. CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00348000
  364. BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00349000
  365. CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00350000
  366. BNE ENABCPX NO, ALERT THE INTERRUPT HANDLER @VA03757 00351000
  367. NI RDEVFLAG,X'FF'-RDEVENAB CLEAR ENABLE FLAG @VA03757 00352000
  368. BR R14 RETURN TO IN LINE CODE @VA03757 00353000
  369. ENABLIN EQU * @VA03757 00354000
  370. NI RDEVFLAG,255-RDEVDISB TURN OFF DISABLE FLAG @VA05107 00354500
  371. TM RDEVSTAT,RDEVDED DEDICATED DEVICE? @VA03757 00355000
  372. BOR R14 YES--RETURN @VA03757 00356000
  373. TM SAVEWRK1+2,CPICALL+RNHCALL AUTO RE-ENABLE @VA05061 00357100
  374. BZ ENABDEV NO -- CHECK ALREADY ENABLED @VA03757 00358000
  375. TM RDEVFLAG,RDEVENAB SHOULD WE ENABLE THIS LINE ? @VA03757 00359000
  376. BCR 8,R14 NO -- NOTHING TO BE DONE @VA03757 00360000
  377. TM SAVEWRK1+2,RNHCALL WHO CALLED? @VA05061 00360100
  378. BZ ENCPI MUST HAVE BEEN DMKCPI @VA05061 00360200
  379. CLI RDEVTYPC,CLASGRAF NEED WE GO FURTHER? @VA05061 00360300
  380. BER R14 NO - IT'S A GRAPHICS DEVICE @VA05061 00360400
  381. CH R9,RDEVBASE ON THE PROPER 370X? @VA05061 00360500
  382. BE ENABCPX YES - GO TO IT @VA05061 00360600
  383. BR R14 NO - TRY ANOTHER @VA05061 00360700
  384. ENCPI EQU * @VA05061 00360800
  385. CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00361000
  386. BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00362000
  387. CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00363000
  388. BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00364000
  389. BR R14 RETURN TO IN LINE CODE @VA03757 00365000
  390. ENABDEV EQU * @VA03757 00366000
  391. NI RDEVFLAG,255-RDEVDISB TURN OFF DISABLE FLAG @VA03757 00367000
  392. TM RDEVFLAG,RDEVENAB IS THE LINE ALREADY ENABLED @VA03757 00368000
  393. BCR 1,R14 (BO) YES - NOTHING TO BE DONE @VA03757 00369000
  394. OI RDEVFLAG,RDEVENAB DEVICE IS NOW ENABLED @VA03757 00370000
  395. CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00371000
  396. BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00372000
  397. CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00373000
  398. BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00374000
  399. BR R14 RETURN TO IN LINE CODE @VA03757 00375000
  400. ENABCPX EQU * ALERT THE INTERRUPT HANDLER @VA03757 00376000
  401. CLC RDEVUSER(4),ASYSVM IS THERE AN ACTIVE USER ? @VA03757 00377000
  402. BCR 7,R14 (BNE) YES - NOTHING TO BE DONE @VA03757 00378000
  403. TM RDEVTFLG,RDEVLOG LOGON ALREADY STARTED ? @VA03757 00379000
  404. BCR 1,R14 YES - JUST RETURN @VA03757 00380000
  405. STM R14,R5,BALRSAVE SAVE REGISTERS TEMPORARILY @VA03757 00381000
  406. LA R0,CPEXSIZE @VA03757 00382000
  407. CALL DMKFREE GET FREE STORAGE FOR A CPEXBLOK @VA03757 00383000
  408. USING CPEXBLOK,R1 ... @VA03757 00384000
  409. XC CPEXBLOK(16),CPEXBLOK CLEAR HEADER SECTION @VA03757 00385000
  410. STM R0,R15,CPEXREGS SET REGISTERS FOR DMKCNS, DM @VA03757 00386000
  411. L R2,=A(DMKCNSEN) ENABLE START/STOP TERM @VA03757 00387000
  412. CLI RDEVTYPC,CLASTERM IS THAT THE CORRECT ENTRY ? @VA03757 00388000
  413. BE *+8 YES - @VA03757 00389000
  414. L R2,=A(DMKGRFEN) ENABLE GRAPHICS TERM @VA03757 00390000
  415. ST R2,CPEXADD SET AS EXECUTION ADDRESS... @VA03757 00391000
  416. ST R2,CPEXR12 ...AND AS MODULE BASE ADDRESS @VA03757 00392000
  417. CALL DMKSTKCP STACK BLOCK FOR LATER EXECUTION @VA03757 00393000
  418. LM R14,R5,BALRSAVE DMKSTKCP DOES'NT USE BALRSAVE @VA03757 00394000
  419. BR R14 RETURN TO SCAN ROUTINE @VA03757 00395000
  420. EJECT 00396000
  421. *. 00397000
  422. * 00398000
  423. * SUBROUTINE NAME - 00399000
  424. * 00400000
  425. * DMKCPVAE - ENABLE SYSTEM LOW SPEED LINES FOR SYSTEM RESTART 00401000
  426. * OR 370X FAILURE. 00402100
  427. * 00403000
  428. * OPERATION - 00404000
  429. * 00405000
  430. * 1. SET FLAG (CPICALL OR RNHCALL) IN SAVEWRK1+2 TO 00406100
  431. * INDICATE WHERE CALL ORIGINATED. ISSUE SWITCH TO INSURE 00407150
  432. * PROCESSING CONTINUES ON THE MAIN PROCESSOR IF THE SYSTEM 00407250
  433. * IS IN AP-MODE. THEN ENTER ENABLE 00407350
  434. * ROUTINE AT LABEL CPVCPI. 00408000
  435. * 00409000
  436. * 2. THE ENABLE ROUTINE WILL SCAN ALL TERMINAL AND GRAPHIC 00410000
  437. * RDEVBLOKS. ONLY THE RDEVBLOKS HAVING THE ENABLE 00411000
  438. * FLAG ON WILL BE ENABLED. (THE ENABLE FLAG 00412000
  439. * SET ON BY DMKWRM DURING SYSTEM RESTART) 00413000
  440. * 00414000
  441. * 2A. IF THE CALL CAME FROM DMKRNH, ONLY THOSE EMULATOR 00414100
  442. * LINES ON THE AFFECTED 370X WILL BE ENABLED. 00414200
  443. * RESPONSES - 00415000
  444. * 00416000
  445. * N/A 00417000
  446. * 00418000
  447. * ERROR MESSAGES - 00419000
  448. * 00420000
  449. * N/A 00421000
  450. * 00422000
  451. *. 00423000
  452. SPACE 2 00424000
  453. DMKCPVAE RELOC @VA03757 00425000
  454. MVC SAVEWRK1(4),ZEROES ZERO FLAG FIELD @VA03757 00426000
  455. MVI SAVEWRK1+2,CPICALL CALLED FROM DMKCPI @VA03757 00427000
  456. SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00427100
  457. CLC SAVER12(4),=A(DMKRNH) WHO CALLED? @VA05061 00428100
  458. BNE CPVCPI TWAS DMKCPI @VA05061 00428200
  459. SPACE 00428300
  460. * REG 8 CONTAINS A (RDEVBLOK) FOR 370X WHICH HAD PROBLEM 00428400
  461. CALL DMKSCNRD GO GET 'CUU' TYPE ADDRESS @VA05061 00428500
  462. LR R9,R1 PUT IN REG 9 FOR LATER @VA05061 00428600
  463. MVI SAVEWRK1+2,RNHCALL SHOW PROPER CALLER @VA05061 00428700
  464. B CPVCPI JOIN REST OF ENABLE @VA05061 00428800
  465. SPACE 00429000
  466. CPICALL EQU X'80' CALL FROM DMKCPI FLAG @VA03757 00430000
  467. RNHCALL EQU X'40' CALL FROM DMKRNH FLAG @VA05061 00430100
  468. EJECT 00431000
  469. *. 00432000
  470. * SUBROUTINE NAME - 00433000
  471. * 00434000
  472. * DMKCPVDS 00435000
  473. * 00436000
  474. * FUNCTION - 00437000
  475. * 00438000
  476. * TO CAUSE AN ACTIVE LINE TO BE DISABLED AFTER THE CURRENT USER 00439000
  477. * (IF ANY) IS FINISHED WITH IT 00440000
  478. * 00441000
  479. * COMMAND LINE FORMAT - 00442000
  480. * 00443000
  481. * +-----------+-------------------------+ 00444000
  482. * | DISABLE | LINE1 LINE2 ...LINEN | 00445000
  483. * | DISA | ALL | 00446000
  484. * +-----------+-------------------------+ 00447000
  485. * 00448000
  486. * OPERATION - 00449000
  487. * 1. SET FLAG IN SAVEWRK1+2 TO INDICATE A DISABLE OPERATION. 00450000
  488. * ISSUE SWITCH TO INSURE PROCESSING CONTINUES ON THE MAIN 00450100
  489. * PROCESSOR IF THE SYSTEM IS IN AP-MODE. 00450200
  490. * THEN BRANCH TO THE COMMON ROUTINES DESCRIBED IN THE 00451000
  491. * ENABLE PROLOG. 00452000
  492. * 00453000
  493. * RESPONSES - 00454000
  494. * COMMAND COMPLETE 00455000
  495. * 00456000
  496. * ERROR MESSAGE - 00457000
  497. * DMKCPV003E INVALID OPTION - (OPTION) 00458000
  498. * DMKCPV006E INVALID DEVICE TYPE - (ADDR) 00459000
  499. * DMKCPV021E RADDR MISSING OR INVALID 00460000
  500. * DMKCPV026E OPERAND MISSING OR INVALID 00461000
  501. * DMKCPV040E DEV (ADDR) DOES NOT EXIST 00462000
  502. * DMKCPV046E (TYPE RADDR) OFFLINE 00463000
  503. * DMKCPV140E (TYPE RADDR) ATTACHED TO (USERID) 00464000
  504. * 00465000
  505. *. 00466000
  506. SPACE 2 00467000
  507. DMKCPVDS RELOC DISABLE LINE(S) @VA03757 00468000
  508. MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA @VA03757 00469000
  509. MVI SAVEWRK1+2,DISABLE INDICATE DISABLE OPERATION @VA03757 00470000
  510. SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00470100
  511. B ENABSCAN DO SAME AS ENABLE EXCEPT WILL @VA03757 00471000
  512. * DISA LINE 00472000
  513. SPACE 00473000
  514. DISABLE EQU X'01' SAVEWRK1+2 FLAG FOR DISABLE CMD @VA07385 00474500
  515. EJECT 00475000
  516. *. 00476000
  517. * 00477000
  518. * SUBROUTINE NAME - 00478000
  519. * 00479000
  520. * DMKCPVLK 00480000
  521. * 00481000
  522. * FUNCTION - 00482000
  523. * 00483000
  524. * TO LOCK INTO REAL MAIN STORAGE SPECIFIED PAGES OF A USER'S 00484000
  525. * VIRTUAL STORAGE SPACE 00485000
  526. * 00486000
  527. * COMMAND LINE FORMAT - 00487000
  528. * 00488000
  529. * +------+--------------------------------------------+ 00489000
  530. * | LOCK | USERID FIRSTPAGE LASTPAGE (MAP) | 00490000
  531. * | | SYSTEM | 00491000
  532. * +------+--------------------------------------------+ 00492000
  533. * 00493000
  534. * OPERATION - 00494000
  535. * 00495000
  536. * 1. CALL DMKSCNFD TO LOCATE THE USERID. IF NONE FOUND, CALL 00496000
  537. * DMKERMSG TO SEND ERROR MESSAGE DMKCPV020E. 00497000
  538. * 2. CALL DMKSCNAU TO GET THE USERID VMBLOK. IF NOT FOUND, CALL 00498000
  539. * DMKERMSG TO SEND ERROR MESSAGE DMKCPV045E. 00499000
  540. * 3. CALL DMKSCNFD TO GET THE FPAGE ARGUMENT. IF NONE IS 00500000
  541. * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV033E. IF 00501000
  542. * ONE IS FOUND, CALL DMKCVTHB TO CONVERT THE PAGE NUMBER TO 00502000
  543. * BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR 00503000
  544. * MESSAGE DMKCPV004E.IF OK, SAVE THE FPAGE NUMBER. 00504000
  545. * 4. LOCATE AND CONVERT THE LPAGE ARGUMENT IN THE SAME MANNER. 00505000
  546. * 5. VERIFY THAT THE PAGES ARE WITHIN THE USERS STORAGE LIMITS. 00506000
  547. * IF NOT, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV160E. 00507000
  548. * ALSO CHECK THAT THE FIRST PAGE IS EQUAL TO OR LESS THAN 00508000
  549. * THE LAST PAGE. IF NOT, CALL DMKERMSG TO SEND ERROR MESSAGE 00509000
  550. * DMKCPV009E. 00510000
  551. * 6. IF THIS IS AN UNLOCK COMMAND, GO TO THE LABEL 'UNLOCK' 00511000
  552. * TO PROCESS. THIS IS DESCRIBED IN THE PROLOG FOR UNLOCK. 00512000
  553. * IF 'LOCK' CONTINUE WITH NEXT STEP. 00513000
  554. * 7. IF THE PAGE IS NOT IN STORAGE GO TO STEP 8. IF IT IS, 00514000
  555. * FIND THE CORTABLE ENTRY FOR THIS PAGE. IF THE PAGE IS 00515000
  556. * ALREADY LOCKED IN GO TO STEP 9. IF NOT CONTINUE WITH 00516000
  557. * NEXT STEP. 00517000
  558. * 8. TRANS IN THE PAGE AND LOCK. IF THE SYSTEM IS IN AP-MODE 00518100
  559. * AND THE PAGE IS A SHARED PAGE; UNLOCK THE PAGE, CALL 00518200
  560. * DMKERMSG TO ISSUE MESSAGE DMKCPV165I, AND CONTINUE AT 00518300
  561. * STEP 9. OTHERWISE, DECREMENT THE COUNT OF 00518400
  562. * PAGES AVAILABLE, THE USER'S PROJECTED WORKING SET SIZE 00519200
  563. * AND, IF IN QUEUE, THE PAGE USAGE COUNT. 00519400
  564. * 9. IF THE LAST PAGE HAS BEEN PROCESSED, CALL DMKQCNWT TO 00520000
  565. * SEND THE COMMAND COMPLETE MESSAGE AND EXIT. IF MORE PAGES 00521000
  566. * GET THE NEXT PAGE ADDRESS AND GO TO STEP 6. 00522000
  567. * 00523000
  568. * RESPONSES - 00524000
  569. * COMMAND COMPLETE 00525000
  570. * 00526000
  571. * ERROR MESSAGES - 00527000
  572. * DMKCPV004E INVALID HEXLOC - (HEXLOC) 00528000
  573. * DMKCPV009E INVALID RANGE - (RANGE) 00529000
  574. * DMKCPV020E USERID MISSING OR INVALID 00530000
  575. * DMKCPV045E (USERID) NOT LOGGED ON 00531000
  576. * DMKCPV160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00532000
  577. * DMKCPV165I PAGE (HEXLOC) NOT LOCKED; SHARED PAGE 00532100
  578. * 00533000
  579. *. 00534000
  580. SPACE 2 00535000
  581. DMKCPVLK RELOC LOCK USER PAGE INTO CORE @VA03757 00536000
  582. MVI SAVEWRK1,X'00' INDICATE LOCK FUNCTION @VA03757 00537000
  583. LOCKSCAN CALL DMKSCNFD GET USER ID @VA03757 00538000
  584. BNZ CPV020 MISSING ARGUMENT @VA03757 00539000
  585. STM R0,R1,SAVEWRK2 SAVE ARG LENGTH AND ADDRESS @VA03757 00540000
  586. AIF (NOT &VIRREAL).VIRT1 @VA03757 00541000
  587. TM SAVEWRK1,X'01' UNLOCK? @VA05291 00541300
  588. BZ SCANUSER NO.GO SCAN FOR USERID @VA05291 00541700
  589. CLC 0(9,R1),=C'VIRT=REAL' UNLOCKING VIRT=REAL AREA ?@VA03757 00542000
  590. BNE ABBREV SEE IF ABBREVIATION V=R IS USED @VA03757 00543000
  591. CL R0,F9 GREATER THAN NINE CHARACTERS @VA03757 00544000
  592. BH CPV003 YES,INVALID OPTION @VA03757 00545000
  593. B GETBLOK CONTINUE FOR VIRT=REAL @VA03757 00546000
  594. ABBREV CLC 0(3,R1),=C'V=R' V=R SPECIFIED @VA03757 00547000
  595. BNE SCANUSER NO, MUST BE FOR A USERID @VA03757 00548000
  596. CL R0,F3 THREE CHARACTERS INPUTTED @VA03757 00549000
  597. BH SCANUSER NO. CAN'T BE V=R THEN, CAN IT? @VA04681 00550500
  598. GETBLOK L R4,AVMREAL GET VMBLOK OF OWNER OF V=R AREA @VA03757 00551000
  599. LTR R4,R4 IS THE AREA IN USE ? @VA03757 00552000
  600. BP CPV176 IF YES - CAN'T RELEASE IT. @VA03757 00553000
  601. L R2,=A(DMKSLC-4096) WAS IT GENERATED AT LOAD TIME@VA03757 00554000
  602. LTR R2,R2 TEST FOR OPTION @VA03757 00555000
  603. BM CPV202 IF NOT; ITS IMPOSSIBLE TO @VA03757 00556000
  604. * UNLOCK IT. 00557000
  605. L R1,ASYSVM USE THE SYSTEM VMBLOK @V407508 00559100
  606. SWTCHVM OPT=UNLOCK UNLOCK VM & SWITCH TO ASYSVM @V407508 00559200
  607. L R1,F4096 R1 = 1'ST PAGE; R2 = LAST PAGE @VA07236 00560100
  608. CALL DMKPGSPR RELEASE SYSTEM PAGES @V408246 00562000
  609. MVC AVMREAL,F1 IN-USE BY NOBODY @V408246 00564500
  610. L R15,PREFIXB GET PREFIX ADDR OF OTHER PROC @V4M0132 00564600
  611. MVC AVMREAL-PSA(,R15),F1 SET AVMREAL IN BOTH PSA'S @VA07236 00564700
  612. * SET UP SO THAT DMKPTR PAGE SELECTION ROUTINE WILL INCLUDE 00564720
  613. * THESE UNLOCKED V=R PAGES IN ITS SCAN. 00564740
  614. L R1,=A(DMKPTRSN) ADDRESS OF PAGE SELECTION PTRS. @VA08341 00564760
  615. OI 6(R1),VEQRUNLK INDICATE V=R AREA UNLOCKED AND @VA08341 00564780
  616. * TO BE INCLUDED IN PAGE SELECTION SCAN 00564800
  617. L R1,=A(DMKPTRCP) ADDRESS OF FRAME BLOCKS @VA08341 00564820
  618. LA R1,40(R1) POINT TO V=R FULLSCAN BLOCK @VA08341 00564840
  619. L R0,ACORETBL START OF CORE TABLE @VA08341 00564860
  620. A R0,F16 FIRST V=R CORE TABLE ENTRY @VA08341 00564880
  621. BCTR R0,R0 SUBTRACT ONE FOR COMPARE @VA08341 00564900
  622. ST R0,12(R1) STORE IN V=R FULLSCAN BLOCK @VA08341 00564920
  623. L R0,=A(DMKSLC-4096) ADDR. OF LAST V=R PAGE @VA08341 00564940
  624. ST R0,0(R1) SAVE IN V=R FULLSCAN BLOCK @VA08341 00564960
  625. SRL R0,12 GET PAGE NUMBER @VA08341 00564980
  626. SLL R0,4 MULTIPLY BY CORETBL ENTRY LENGTH @VA08341 00565000
  627. A R0,ACORETBL ADD CORE TABLE START ADDRESS @VA08341 00565020
  628. ST R0,4(R1) SAVE CORETBL ENTRY ADDRESS OF @VA08341 00565040
  629. * TOP V=R PAGE IN FULLSCAN1 BLOCK 00565060
  630. L R1,SAVER11 RETURN TO ORIGINAL CALLER @V407508 00565100
  631. SWTCHVM LOCK THIS VMBLOK @V407508 00565200
  632. B ALLDONE SEND RESPONSE MESSAGE. @VA03757 00567000
  633. .VIRT1 ANOP 00568000
  634. SCANUSER CALL DMKSCNAU FIND VMBLOK @VA03757 00569000
  635. BNZ USERNON USER NOT ON @VA03757 00570000
  636. LR R8,R1 SAVE USERS VMBLOK @VA03757 00571000
  637. AIF (NOT &VIRREAL).VIRT1A @VA05290 00571200
  638. CL R8,AVMREAL IS THIS THE V=R USERID ? @VA05290 00571400
  639. BE CPV020 IF YES,CAN'T BE CORRECT @VA05290 00571600
  640. .VIRT1A ANOP 00571800
  641. LOCKSYS DS 0H @VA03757 00572000
  642. CALL DMKSCNFD GET FPAGE ARGUMENT @VA03757 00573000
  643. BNZ CPV033 MISSING ARGUMENT @VA03757 00574000
  644. CL R0,F3 THREE DIGIT MAX @VA03757 00575000
  645. BH CPV033 CAN'T HAVE PAGE THAT SIZE @VA03757 00576000
  646. STM R0,R1,SAVEWRK2 SAVE ARG LENGTH AND ADDRESS @VA03757 00577000
  647. CALL DMKCVTHB CONVERT TO BINARY @VA03757 00578000
  648. BNZ BADPAGE INVALID PAGE NUMBER @VA03757 00579000
  649. LR R4,R1 GPR4 CONTAINS FIRST PAGE @VA03757 00580000
  650. CALL DMKSCNFD GET LPAGE @VA03757 00581000
  651. BNZ CPV033 MISSING ARGUMENT @VA03757 00582000
  652. CL R0,F3 MAX NUM OF DIGITS ALLOWED @VA03757 00583000
  653. BH CPV033 ....... @VA03757 00584000
  654. STM R0,R1,SAVEWRK4 SAVE ARG LEN AND ADDR @VA03757 00585000
  655. CALL DMKCVTHB CONVERT TO BINARY @VA03757 00586000
  656. BNZ BADPAGE1 INVALID PAGE NUMBER @VA03757 00587000
  657. CR R1,R4 IS LAST PAGE LESS THAN FIRST ? @VA03757 00588000
  658. BL BADRANGE INVALID PAGE SEQUENCE @VA03757 00589000
  659. TM SAVEWRK1,X'01' UNLOCK COMMAND? @VA05729 00589050
  660. BO NOCHK YES, BYPASS NO OF DYNAMIC PGS @VA05729 00589150
  661. LR R5,R1 SAVE LAST PAGE NO. @VA05729 00589250
  662. SR R1,R4 GET NO. OF PAGES TO LOCK @VA05729 00589350
  663. A R1,F1 BUMP 1 TO CORRECT NO. PGS @VA05729 00589450
  664. L R3,=A(DMKDSPNP) NO. OF DYNAMIC PGS IN SYSTEM @VA05729 00589550
  665. C R1,0(R3) IS THERE ENOUGH ROOM? @VA05729 00589650
  666. BNL BADRANGE NO, GIVE HIM THE BAD NEWS @V4M0158 00589750
  667. LR R1,R5 PUT BACK AS WE FOUND IT @VA05729 00589850
  668. NOCHK SLL R1,12 FORM ADDRESS @VA05729 00590000
  669. DROP R11 @VA03757 00591000
  670. USING VMBLOK,R8 @VA03757 00592000
  671. L R0,VMSTOR GET VIRTUAL MACHINE SIZE @VA03757 00593000
  672. CL R8,ASYSVM ARE WE LOCKING A SYSTEM PAGE @VA03757 00594000
  673. BNE *+8 NO - R0 ALL SET @VA03757 00595000
  674. L R0,VMSIZE GET SYSTEMS VIRTUAL STORAGE SIZE @VA03757 00596000
  675. CLR R1,R0 IS PAGE WITHIN MACHINE SIZE @VA03757 00597000
  676. BNL CPV160 NO - TAKE BRANCH @VA03757 00598000
  677. DROP R8 @VA03757 00599000
  678. USING VMBLOK,R11 @VA03757 00600000
  679. LR R10,R11 SAVE OPERATORS VMBLOK @VA03757 00601000
  680. LR R5,R1 GPR5 CONTAINS LAST PAGE @VA03757 00605000
  681. SLL R4,12 FORM ADDRESS OF FIRST PAGE @VA03757 00606000
  682. LOCKCHEK TM SAVEWRK1,X'01' IS THIS UNLOCK REQUEST ?? @VA03757 00607000
  683. BO UNLOCK YES. @VA03757 00608000
  684. CALL DMKSCNFD GET MAP OPTION @VA03757 00609000
  685. BNZ LOCKPAGE NOT THERE @VA03757 00610000
  686. LR R2,R0 SET COUNT REGISTER @VA03757 00614000
  687. BCTR R2,R0 DECREMENT FOR EXECUTE @VA03757 00615000
  688. CH R2,F2+2 IS IT 3 CHARS ?? @VA03757 00616000
  689. BNE CPV003 NO, NO GOOD @VA03757 00617000
  690. EX R2,CMAP TEST FOR MAP OPTION @VA03757 00618000
  691. BNE CPV003 INVALID OPTION @VA03757 00619000
  692. OI SAVEWRK1,X'80' INDICTAE MAP @VA03757 00620000
  693. LA R1,LMAPHDR HEADER @VA03757 00621000
  694. LA R0,LMAPHDRL .. @VA03757 00622000
  695. CALL DMKQCNWT,PARM=NORET @VA03757 00623000
  696. LOCKPAGE DS 0H ATTEMPT TO LOCK USER PAGE @V407508 00624100
  697. LR R1,R8 GET ADDRES OF USERS VMBLOK @V407508 00624200
  698. SWTCHVM LOCK THIS VMBLOK @V407508 00624300
  699. LR R1,R4 GET THE VIRTUAL ADDR OF THE PAGE @V407508 00624400
  700. LCTL R1,R1,VMSEG LOAD CONTROL REG 1 @VA03757 00628000
  701. LRA R2,0(,R4) LOAD REAL ADDRESS (IF ANY) @VA03757 00629000
  702. BNZ LOCKTRAN BRANCH IF NOT IN CORE @VA03757 00630000
  703. SRL R2,8 FORM INDEX TO CORETABLE @VA03757 00631000
  704. A R2,ACORETBL CORE TABLE ENTRY @VA03757 00632000
  705. USING CORTABLE,R2 @VA03757 00633000
  706. TM CORFLAG,CORCFLCK IS PAGE ALREADY LOCKED IN ??? @VA03757 00634000
  707. BO MAPCHEK CHECK FOR LOCK MAP @VA03757 00635000
  708. TM SAVEWRK1,X'40' FOOLING WITH THE SYSTEM? @VA03757 00636000
  709. BZ LOCKTRAN NOPE, OK TO CONTINUE @VA03757 00637000
  710. CL R4,APAGCP IS HE IN PAGEABLE CP? @VA10861 00637100
  711. BL MAPCHEK NOPE, RESIDENT PGES ARE ALL SET @VA10861 00637200
  712. CLC CORVM,ASYSVM IS THIS A CP OWNED PAGE? @VA07284 00638100
  713. BNE NOTSYSPG NOPE, NOT A SYSTEM PAGE @VA08031 00639100
  714. B LOCKTRAN HE IS PAGEABLE, LOCK HIM @VA08031 00639700
  715. NOTSYSPG EQU * @VA08031 00639900
  716. CLI CORFPNT,C'F' IS IT A CP FREE PAGE? @VA03757 00640000
  717. BE MAPCHEK YUP, JUST FINE AS IS. @VA03757 00641000
  718. LOCKTRAN LA R2,BRING+DEFER+LOCK USE THESE OPTIONS FOR PAGE @VA03757 00642000
  719. TM SAVEWRK1,X'40' CALL FOR SYSTEM PAGE(S) ? @VA03757 00643000
  720. BZ *+8 NO - OPTIONS OK. @VA03757 00644000
  721. LA R2,SYSTEM(,R2) YES, ADD SYSTEM OPTION @V408246 00645500
  722. CALL DMKPTRAN NOW - LOCK THIS PAGE @VA03757 00646000
  723. LR R6,R2 SAVE REAL ADDRESS @V407508 00646100
  724. SRL R2,8 FORM INDEX INTO CORETABLE @VA03757 00647000
  725. A R2,ACORETBL CORE TABLE TO R2 @VA03757 00648000
  726. USING CORTABLE,R2 @VA03757 00649000
  727. TM CORFLAG,CORCFLCK IS PAGE ALREADY LOCKED IN @VA03757 00650000
  728. BO MAPCHEK CHECK FOR LOCK MAP @VA03757 00651000
  729. TM APSTAT1,APUOPER IS THIS AN AP SYSTEM? @V407508 00651050
  730. BNO LOCKOK NO, CONTINUE NORMALLY @V407508 00651100
  731. TM CORFLAG,CORSHARE IS PAGE A SHARED PAGE? @V407508 00651150
  732. BNO LOCKOK NO, CONTINUE NORMALLY @V407508 00651200
  733. LR R2,R6 RESTORE REAL ADDRESS FOR UNLOCK @V407508 00651250
  734. CALL DMKPTRUL UNLOCK THE SHARED PAGE @V407508 00651300
  735. LR R1,R4 GET VIRTUAL ADDRESS OF PAGE @V407508 00651350
  736. CALL DMKCVTBH CONVERT TO HEX FOR PRINTING @V407508 00651400
  737. STM R0,R1,SAVEWRK2 SAVE CONVERTED VALUE @V407508 00651450
  738. MVC SAVEWRK2(2),=CL2' ' PAD FIELD WITH BLANKS @V407508 00651500
  739. LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00651550
  740. SWTCHVM SWITCH TO THIS VMBLOK @V407508 00651600
  741. LA R0,8 SET UP LENGTH OF DATA @V407508 00651650
  742. ICM R0,B'1110',MODID+3 INSERT MODULE IDENTIFIER @V407508 00651700
  743. LA R1,SAVEWRK2 GET THE ADDRESS OF DATA @V407508 00651750
  744. L R2,ERMR2 SET UP R2 WITH ERM PARMS @V407508 00651800
  745. CALL DMKERMSG WRITE OUT MESSAGE @V407508 00651850
  746. B ENDCHEK GO CHECK FOR MORE PAGES @V407508 00651900
  747. LOCKOK DS 0H PAGE O.K. TO LOCK @V407508 00651950
  748. OI CORFLAG,CORCFLCK TURN ON CF LOCK BIT @VA03757 00652000
  749. L R1,CORFPNT GET POINTER TO PAGE'S OWNER @V408246 00652100
  750. LH R0,VMPAGES-VMBLOK(,R1) DECREMENT @V408246 00652200
  751. BCTR R0,0 IN-CORE PAGE COUNT @V408246 00652300
  752. LTR R0,R0 VMPAGES TO GO NEGATIVE ? @VA07224 00652320
  753. BM CPV1 YES - ABEND CP @VA07224 00652340
  754. STH R0,VMPAGES-VMBLOK(,R1) @V408246 00652400
  755. TM CORFLAG,CORRSV LOCKING RESERVED PAGE? @V408246 00652500
  756. BO MAPCHEK YES, COUNT ALREADY DECREMENTED @V408246 00652600
  757. DROP R2 @VA03757 00653000
  758. L R3,=A(DMKDSPNP) ADDRESS OF PAGE COUNT @VA03757 00654000
  759. L R1,0(,R3) LOAD COUNT @VA03757 00655000
  760. BCTR R1,0 DECREMENT COUNT @VA03757 00656000
  761. ST R1,0(,R3) STORE BACK @VA03757 00657000
  762. TM VMDSTAT,VMINQ USER IN QUEUE ? @VA04709 00661100
  763. BZ MAPCHEK NO -- LEAVE PAGE USAGE ALONE @VA04709 00661200
  764. L R3,=A(DMKSCHPU) GET PAGE USAGE COUNT @VA04709 00661300
  765. L R1,0(,R3) ... @VA04709 00661400
  766. LTR R1,R1 WILL PAGE USAGE GO NEGATIVE @VA08454 00661420
  767. BNP MAPCHEK YES, ZERO IS MINIMUM COUNT @VA08454 00661440
  768. BCTR R1,0 DECREMENT IT @VA04709 00661500
  769. ST R1,0(,R3) ... AND STORE IT BACK @VA04709 00661600
  770. MAPCHEK TM SAVEWRK1,X'80' MAP WANTED ?? @VA03757 00662000
  771. BZ ENDCHEK NO, CONT @VA03757 00663000
  772. S R2,ACORETBL MINUS BASE @VA03757 00664000
  773. SLL R2,8 FORM REAL ADDRESS @VA03757 00665000
  774. LR R1,R2 FOR CONVERT @VA03757 00666000
  775. CALL DMKCVTBH TO HEX @VA03757 00667000
  776. STM R0,R1,SAVEWRK4 SAVE @VA03757 00668000
  777. LR R1,R4 VIRTUAL ADDRESS @VA03757 00669000
  778. CALL DMKCVTBH HEX @VA03757 00670000
  779. STM R0,R1,SAVEWRK2 SAVE @VA03757 00671000
  780. MVC SAVEWRK2(2),=CL2' ' @VA03757 00672000
  781. MVC SAVEWRK4(2),=CL2' ' @VA03757 00673000
  782. LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00673100
  783. SWTCHVM SWITCH TO THIS VMBLOK @V407508 00673200
  784. LA R0,16 SIZE @VA03757 00674000
  785. LA R1,SAVEWRK2 TEXT @VA03757 00675000
  786. CALL DMKQCNWT,PARM=NORET @VA03757 00679000
  787. ENDCHEK CR R4,R5 REACHED END YET ? @VA03757 00683000
  788. BL LOCKBUMP NO, GET NEXT PAGE @VA03757 00684000
  789. LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00685100
  790. SWTCHVM SWITCH TO THIS VMBLOK @V407508 00685200
  791. B ALLDONE . . @VA03757 00688000
  792. LOCKBUMP A R4,F4096 ADD ONE PAGE TO GPR4 @VA03757 00689000
  793. TM SAVEWRK1,X'01' IS IT UNLOCK ?? @VA03757 00690000
  794. BO UNLOCK2 YES, GO UNLOCK THIS PAGE @V407508 00691100
  795. B LOCKPAGE DO LOCK @VA03757 00692000
  796. SPACE 00693000
  797. USERNON LM R0,R1,SAVEWRK2 LEN AND ADDR OF BAD ARG @VA03757 00694000
  798. BC 2,CPV020 USERID LARGER THAN 8 CHAR @VA03757 00695000
  799. AIF (NOT &VIRREAL).VIRT1B @VA05291 00695200
  800. CLC 0(4,R1),=C'V=R ' IS IT LOCK V=R? @VA05702 00695400
  801. BE CPV020 @VA05291 00695600
  802. .VIRT1B ANOP 00695800
  803. CLC 0(7,R1),=CL7'SYSTEM ' IS IT SYSTEM ?? @VA03757 00696000
  804. BNE CPV045 NO, USER NOT ON @VA03757 00697000
  805. L R8,ASYSVM SET SYSTEM VMBLOK @VA03757 00698000
  806. OI SAVEWRK1,X'40' IND WE'RE MESN WITH SYSTEM @VA03757 00699000
  807. B LOCKSYS LOCK @VA03757 00700000
  808. SPACE 2 00701000
  809. CMAP CLC 0(0,R1),=CL3'MAP' EXECUTED COMP @VA03757 00702000
  810. LMAPHDR DC CL16' VIRTPG REALPG' @VA03757 00703000
  811. LMAPHDRL EQU *-LMAPHDR @VA03757 00704000
  812. SPACE 00705000
  813. BADPAGE LM R0,R1,SAVEWRK2 LEN AND ADDR @VA03757 00706000
  814. B CPV004 .... @VA03757 00707000
  815. SPACE 00708000
  816. BADPAGE1 LM R0,R1,SAVEWRK4 LEN AND ADDR @VA03757 00709000
  817. B CPV004 .... @VA03757 00710000
  818. SPACE 00711000
  819. BADRANGE EQU * @VA03757 00712000
  820. LM R2,R3,SAVEWRK2 LEN AND ADDR OF FPAGE @VA03757 00713000
  821. EX R2,MOVEFPG MOVE IN FIRST PAGE NUMBER @VA03757 00714000
  822. LA R1,SAVEWRK2(R2) LOAD ADDRESS OF SEPARATER @VA03757 00715000
  823. MVI 0(R1),X'40' INSERT BLANK @VA03757 00716000
  824. LM R4,R5,SAVEWRK4 LEN AND ADDR OF LPAGE @VA03757 00717000
  825. EX R4,MOVELPG MOVE IN LAST PAGE @VA03757 00718000
  826. LA R0,1(R2,R4) FIELD LENGTH @VA03757 00719000
  827. LA R1,SAVEWRK2 FIELD ADDRESS @VA03757 00720000
  828. B CPV009 ... @VA03757 00721000
  829. SPACE 1 00721100
  830. ABEND 1 VMPAGES NEGATIVE - TERMINATE CP @VA07224 00721200
  831. SPACE 1 00721300
  832. SPACE 00722000
  833. MOVEFPG MVC SAVEWRK2(0),0(R3) EXECUTED MOVE @VA03757 00723000
  834. MOVELPG MVC 1(0,R1),0(R5) EXECUTED MOVE @VA03757 00724000
  835. SPACE 00724100
  836. ERMR2 DC A(X'80C900A5') REG 2 FOR CALL TO DMKERMSG @V407508 00724200
  837. EJECT 00725000
  838. *. 00726000
  839. * 00727000
  840. * SUBROUTINE NAME - 00728000
  841. * 00729000
  842. * DMKCPVUL 00730000
  843. * 00731000
  844. * FUNCTION - 00732000
  845. * 00733000
  846. * TO UNLOCK PAGES LOCKED BY OPERATOR COMMAND 00734000
  847. * 00735000
  848. * COMMAND LINE FORMAT - 00736000
  849. * 00737000
  850. * +--------+------------------------------------------+ 00738000
  851. * | UNLOCK | USERID FIRSTPAGE LASTPAGE | 00738500
  852. * | | SYSTEM | 00739000
  853. * | | VIRT=REAL | 00739500
  854. * | | V=R | 00740000
  855. * +--------+------------------------------------------+ 00740500
  856. * 00742000
  857. * OPERATION - 00743000
  858. * 00744000
  859. * 1. SET A FLAG TO INDICATE AN UNLOCK COMMAND AND GO TO STEP 1 00745000
  860. * OF THE PROLOG FOR THE LOCK COMMAND. 00746000
  861. * 2. UNLOCK - CONTROL IS GIVEN HERE FOR UNLOCKING A PAGE. IF 00747000
  862. * THIS PAGE HAS NOT BEEN LOCKED VIA THE 'LOCK' COMMAND, GO 00748000
  863. * TO STEP 9 OF THE 'LOCK' PROLOG. ELSE RESET THE CFLOCK 00749000
  864. * FLAG IN THE CORTABLE AND INCREMENT THE PAGE COUNT. CALL 00750000
  865. * DMKPTRUL TO UNLOCK THE PAGE. THEN GO TO STEP 9 OF THE 00751000
  866. * 'LOCK' PROLOG. 00752000
  867. * 3. UNLOCK VIRT=REAL : THE AREA IS CHECKED TO SEE IF IT IS 00753000
  868. * ACTIVE AND ALSO THAT IT IN FACT WAS GENERATED. IF IT 00754000
  869. * IS FREE THE ENTIRE AREA IS GIVEN BACK TO THE CONTROL 00755000
  870. * PROGRAM TO BE USED FOR PAGING. THE COUNT OF FREE 00756000
  871. * PAGES IS UPDATED IN DMKDSP TO REFLECT THE NUMBER OF 00757000
  872. * PAGES NOW AVAILABLE. THE CORE TABLE ENTRIES ARE CHANGED 00758000
  873. * FROM *VR* TO *CP* AND THE LOCK COUNT DECREMENTED TO 0. 00759000
  874. * 00760000
  875. * 00761000
  876. * RESPONSES - 00762000
  877. * COMMAND COMPLETE 00763000
  878. * 00764000
  879. * ERROR MESSAGES - 00765000
  880. * DMKCPV003E INVALID OPTION - (OPTION) 00766000
  881. * DMKCPV004E INVALID HEXLOC - (HEXLOC) 00767000
  882. * DMKCPV009E INVALID RANGE - (RANGE) 00768000
  883. * DMKCPV020E USERID MISSING OR INVALID 00769000
  884. * DMKCPV045E (USERID) NOT LOGGED ON 00770000
  885. * DMKCPV160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00771000
  886. * DMKCPV176E VIRT=REAL AREA IN USE BY <USERID | SYSTEM> 00772000
  887. * DMKCPV202E VIRT=REAL AREA NOT AVAILABLE; INSUFFICIENT STORAGE 00773000
  888. * 00774000
  889. * 00775000
  890. *. 00776000
  891. EJECT 00777000
  892. DMKCPVUL RELOC UNLOCK USER PAGE @VA03757 00778000
  893. MVI SAVEWRK1,X'01' INITIALIZE UNLOCK REQUEST @VA03757 00779000
  894. B LOCKSCAN GO SCAN ARGUMENTS @VA03757 00780000
  895. UNLOCK DS 0H SET UP TO PROCESS UNLOCK COMMAND @V407508 00781100
  896. LR R1,R8 GET ADDR OF USERS VMBLOK @V407508 00781200
  897. SWTCHVM SWITCH TO THIS VMBLOK @V407508 00781300
  898. UNLOCK2 DS 0H USERS VMBLOK ALREADY LOCKED @V407508 00781400
  899. LCTL R1,R1,VMSEG SET UP CR1 @V407508 00781500
  900. TRANS 2,4,OPT=(DEFER) GET REAL PAGE ADDRESS @V408246 00782000
  901. LR R7,R2 SAVE REAL CORE ADDRESS @VA03757 00783000
  902. BNZ ENDCHEK THIS PAGE NOT IN CORE @VA03757 00784000
  903. AIF (NOT &VIRREAL).VIRT2 @VA05486 00784050
  904. L R3,=A(DMKSLC) GET V=R END ADDRESS @VA04959 00784100
  905. LTR R3,R3 CHECK IF V=R SYSGENED @VA04959 00784200
  906. BZ NOTVR V=R NOT DEFINED @VA04959 00784300
  907. CLC AVMREAL(4),F1 WAS V=R AREA UNLOCKED? @V408246 00784400
  908. BE NOTVR YES, CONTINUE @VA04959 00784500
  909. CR R2,R3 FIRST PAGE IN V=R AREA? @VA04959 00784600
  910. BNH CPV204 YES, CANT DO UNLOCK - SEND MSG @VA04959 00784700
  911. NOTVR EQU * @VA04959 00784800
  912. .VIRT2 ANOP 00784900
  913. SRL R2,8 SET UP INDEX INTO CORETBL @VA03757 00785000
  914. A R2,ACORETBL GPR2 NOW POINTS TO CORETABLE @VA03757 00786000
  915. * ENTRY 00787000
  916. USING CORTABLE,R2 @VA03757 00788000
  917. TM CORFLAG,CORCFLCK CONSOLE FUNCTION LOCK BIT ON @VA03757 00789000
  918. * ???? 00790000
  919. BZ ENDCHEK BRANCH IF NO @VA03757 00791000
  920. NI CORFLAG,255-CORCFLCK TURN OFF CF LOCK BIT @VA03757 00792000
  921. L R1,CORFPNT GET POINTER TO PAGE'S OWNER @V408246 00792100
  922. LA R0,1 INCREMENT @V408246 00792150
  923. AH R0,VMPAGES-VMBLOK(,R1) IN-CORE PAGE COUNT @V408246 00792200
  924. STH R0,VMPAGES-VMBLOK(,R1) @V408246 00792250
  925. TM CORFLAG,CORRSV UNLOCKING RESERVED PAGE @V408246 00792300
  926. BO UNLCKX YES, HANDLE VIA RESERVED COUNT @V408246 00792350
  927. L R3,=A(DMKDSPNP) @V408246 00792400
  928. LA R1,1 INCREMENT @V408246 00792450
  929. A R1,0(,R3) COUNT OF PAGEABLE PAGES @V408246 00792500
  930. ST R1,0(,R3) @V408246 00792550
  931. UNLCKX DS 0H @V408246 00792600
  932. DROP R2 @VA03757 00793000
  933. LR R2,R7 RESTORE REAL ADDRESS @VA03757 00794000
  934. CALL DMKPTRUL UNLOCK PAGE @VA03757 00795000
  935. B ENDCHEK GET NEXT PAGE TO UNLOCK @VA03757 00800000
  936. EJECT 00801000
  937. *. 00802000
  938. * 00803000
  939. * SUBROUTINE NAME - 00804000
  940. * 00805000
  941. * DMKCPVAC 00806000
  942. * 00807000
  943. * FUNCTION - 00808000
  944. * 00809000
  945. * TO CREATE ACCOUNTING RECORDS FOR LOGGED ON USERS, AND TO RESET 00810000
  946. * ACCUMULATED ACCOUNTING INFORMATION 00811000
  947. * 00812000
  948. * COMMAND LINE FORMAT - 00813000
  949. * 00814000
  950. * +-----------+-------------------------+ 00815000
  951. * | ACNT | USERID1 ... USERIDN | 00816000
  952. * | ACNT | ALL | 00817000
  953. * +-----------+-------------------------+ 00818000
  954. * 00819000
  955. * OPERATION - 00820000
  956. * 00821000
  957. * 1. CALL DMKSCNFD TO GET ARGUMENT. IF NO ARGUMENTS AT ALL ARE 00822000
  958. * FOUND IN THE COMMAND, CALL DMKERMSG TO SEND ERROR MESSAGE 00823000
  959. * DMKCPV020E. IF ARGUMENT IS OVER 8 CHARACTERS, CALL 00824000
  960. * DMKERMSG TO SEND ERROR MESSAGE DMKCPV007E. IF IT IS AN 00825000
  961. * 'ALL' REQUEST, GO TO STEP 5 - ELSE CONTINUE. 00826000
  962. * 2. CALL DMKSCNAU TO GET USERID VMBLOK. IF NOT FOUND, GO TO 00827000
  963. * STEP 7. IF USER IS NOT RECEIVING ACCOUNTING MESSAGES, 00828000
  964. * GO TO STEP 3. IF RECEIVING ACCOUNTING MESSAGES, CALL 00829000
  965. * DMKACOTM TO SEND MESSAGE. 00830000
  966. * 3. CALL DMKACOFF TO CREATE AN ACCOUNTING RECORD FOR THIS 00831000
  967. * USERID. THEN BAL TO STEP 8 TO CHECK FOR DEDICATED DEVICES. 00832000
  968. * 4. IF THIS IS AN 'ALL' REQUEST, GO TO STEP 6. IF NOT, GO TO 00833000
  969. * STEP 1. 00834000
  970. * 5. CHECK FOR ANY OTHER ARGUMENTS IN THE COMMAND LINE. IF ANY 00835000
  971. * ARE FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV003E. 00836000
  972. * ELSE - SET FLAG TO INDICATE ALL REQUEST AND CONTINUE. 00837000
  973. * 6. PICK UP THE NEXT VMBLOK IN THE CHAIN. IF MORE TO BE 00838000
  974. * PROCESSED, GO TO STEP 2. ELSE - CALL DMKQCNWT TO SEND THE 00839000
  975. * 'COMMAND COMPLETE' MESSAGE AND EXIT. 00840000
  976. * 7. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV045E. THEN GO TO 00841000
  977. * STEP 1. 00842000
  978. * 8. THIS IS A SUBROUTINE WHICH SCANS THROUGH ALL THE VIRTUAL 00843000
  979. * DEVICES. FOR EACH ONE THAT IS DEDICATED OR A 'T' DISK, 00844000
  980. * CALL DMKACODV TO BUILD AN ACCOUNTING RECORD FOR THE 00845000
  981. * DEDICATED DEVICE. WHEN ALL DEVICES FOR THIS USER HAVE 00846000
  982. * BEEN SCANNED, RETURN TO THE CALLER. 00847000
  983. * 00848000
  984. * RESPONSES - 00849000
  985. * COMMAND COMPLETE 00850000
  986. * 00851000
  987. * ERROR MESSAGES - 00852000
  988. * DMKCPV003E INVALID OPTION - (OPTION) 00853000
  989. * DMKCPV007E INVALID USERID - (USERID) 00854000
  990. * DMKCPV020E USERID MISSING OR INVALID 00855000
  991. * DMKCPV045E (USERID) NOT LOGGED ON 00856000
  992. * 00857000
  993. *. 00858000
  994. EJECT 00859000
  995. DMKCPVAC RELOC CREATE ACCOUNTING RECORDS @VA03757 00860000
  996. MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA @VA03757 00861000
  997. LR R10,R11 SAVE OPERATORS VMBLOK ADDRESS @VA03757 00862000
  998. ACNTSCAN CALL DMKSCNFD GET NEXT ARGUMENT @VA03757 00863000
  999. BNZ ACNTNARG NO MORE - GO CLEAN UP @VA03757 00864000
  1000. CL R0,F8 CHECK ON THE ARGUMENT @VA03757 00865000
  1001. BH CPV007A TAKE ERROR BRANCH IF MORE THAN 8 @VA03757 00866000
  1002. CL R0,F3 IS ARG LENGTH 3? @VA03757 00867000
  1003. BNE NOTAL NOPE, CANT BE 'ALL' THEN @VA03757 00868000
  1004. CLC 0(3,R1),=C'ALL' IS IT 'ALL' @VA03757 00869000
  1005. BE ACNTALL GO DO ALL @VA03757 00870000
  1006. NOTAL OI SAVEWRK1,X'80' FLAG AS 'USERID . . .' SEQ. @VA03757 00871000
  1007. NOTALL EQU * @VA03757 00872000
  1008. STM R0,R1,SAVEWRK8 SAVE ARGUMENT LENGTH AND ADDRESS @VA03757 00873000
  1009. CALL DMKSCNAU FIND USERS VMBLOK @VA03757 00874000
  1010. BNZ ACNTNUSE USER NOT IN SYSTEM @VA03757 00875000
  1011. SWTCHVM SWITCH TO USERS VMBLOK @V407508 00876100
  1012. ACNTLOFF TM VMRSTAT,VMLOGOFF+VMLOGON IS THE USER LOGING @VA03757 00879000
  1013. BNZ ACNTNUSE YES- GO TELL THE OPERATOR @VA03757 00880000
  1014. TM VMMLEVEL,VMMACCON IS USER RECEIVING ACCOUNT @VA03757 00881000
  1015. * MESSAGES 00882000
  1016. BZ ACNTRECB NO, JUST BUILD ACCOUNT RECORDS @VA03757 00883000
  1017. CALL DMKACOTM GO TELL USER @VA03757 00884000
  1018. ACNTRECB CALL DMKACOFF CREATE AN ACCOUNTING RECORD @VA03757 00885000
  1019. BAL R9,ACNTDED GO CHEK FOR DEDICATED DEVICES @VA03757 00886000
  1020. L R9,SAVEREGS+36 RESTORE REG 9 TO ADR. OF @VA03757 00887000
  1021. * COMMAND LINE 00888000
  1022. TM SAVEWRK1,X'40' IS THIS AN 'ALL' REQUEST? @VA03757 00889000
  1023. BO ACNTBUMP YES GO GET NEXT USER @VA03757 00890000
  1024. B ACNTSCAN NO GO GET NEXT ARGUMENT @VA03757 00891000
  1025. SPACE 2 00892000
  1026. ACNTALL EQU * @VA03757 00893000
  1027. TM SAVEWRK1,X'80' IS NON-ALL CASE ACTIVE? @VA03757 00894000
  1028. BO NOTALL YES, PROCESS 'ALL' AS A USER @VA03757 00895000
  1029. OI SAVEWRK1,X'40' FLAG 'ALL' ACTIVE @VA03757 00896000
  1030. LR R10,R11 SAVE THE OPERATORS VMBLOK ADDRESS@VA03757 00897000
  1031. B ACNTLOFF DO ACCOUNTING FOR THE OPERATOR @VA03757 00898000
  1032. SPACE 00899000
  1033. ACNTBUMP DS 0H GO TO NEXT VMBLOK @V407508 00900100
  1034. L R1,VMPNT GET ADDRESS OF NEXT VMBLOK @V407508 00900200
  1035. SWTCHVM SWITCH TO NEXT VMBLOK @V407508 00900300
  1036. CR R10,R11 HAVE WE COMPLETED THE CYCLE ? @VA03757 00903000
  1037. BNE ACNTLOFF NO - GO PROCESS THIS USER @VA03757 00904000
  1038. SPACE 3 00905000
  1039. ACNTNARG EQU * @VA03757 00906000
  1040. LR R1,R10 GET CALLERS VMBLOK ADDRESS @V407508 00907100
  1041. SWTCHVM SWITCH BACK TO THIS VMBLOK @V407508 00907200
  1042. TM SAVEWRK1,X'C0' IS ANYTHING ACTIVE? @VA03757 00910000
  1043. BZ CPV020 NOPE, ERROR @VA03757 00911000
  1044. B ALLDONE SOMETHING WAS, OK @VA03757 00912000
  1045. SPACE 2 00913000
  1046. CPV007A LR R11,R10 RESTORE VMBLOK POINTER @VA03757 00914000
  1047. B CPV007 AND GO SEND ERROR MESSAGE @VA03757 00915000
  1048. SPACE 00916000
  1049. ACNTNUSE EQU * @VA03757 00917000
  1050. TM SAVEWRK1,X'40' IS 'ALL' ACTIVE? @VA03757 00918000
  1051. BO ACNTBUMP YES - BYPASS MESSAGE @VA03757 00919000
  1052. LR R1,R10 GET CALLERS VMBLOK ADDRESS @V407508 00920100
  1053. SWTCHVM SWITCH BACK TO THIS VMBLOK @V407508 00920200
  1054. LA R2,045 ERROR CODE @VA03757 00923000
  1055. LM R0,R1,SAVEWRK8 LOAD ARGUMENT LENGTH AND ADDRESS @VA03757 00924000
  1056. ICM R0,14,MODID+3 INSERT MODULE ID @VA03757 00925000
  1057. CALL DMKERMSG SEND MESSAGE @VA03757 00926000
  1058. * 00927000
  1059. * ERMSG WILL RETURN TO DMKCFM, NOT HERE. 00928000
  1060. * 00929000
  1061. SPACE 2 00930000
  1062. ACNTDED SR R1,R1 ZERO INDEX FOR CHANNEL @VA03757 00931000
  1063. LA R4,2 LOAD INCREMENT REG @VA03757 00932000
  1064. LA R5,30 LOAD END OF TABLES @VA03757 00933000
  1065. ACNTNCH LH R6,VMCHTBL(R1) NEXT CHANNEL INDEX @VA03757 00934000
  1066. LTR R6,R6 DOES THIS CHAN. EXIST ? @VA03757 00935000
  1067. BM ACNTCHI NO - TRY NEXT CHAN. @VA03757 00936000
  1068. A R6,VMCHSTRT ADDRESS OF VCHBLOK TO R6 @VA03757 00937000
  1069. USING VCHBLOK,R6 @VA03757 00938000
  1070. SR R2,R2 ZERO INDEX FOR CONTROL UNITS @VA03757 00939000
  1071. ACNTNCU LH R7,VCHCUTBL(R2) LOAD NEXT CONTROL UNIT @VA03757 00940000
  1072. LTR R7,R7 DOES IT EXIST ? @VA03757 00941000
  1073. BM ACNTCUI NO - GO TRY NEXT @VA03757 00942000
  1074. A R7,VMCUSTRT ADDRESS OF VMCUBLOK @VA03757 00943000
  1075. USING VCUBLOK,R7 @VA03757 00944000
  1076. SR R3,R3 ZERO INDEX FOR DEVICES @VA03757 00945000
  1077. ACNTNDEV LH R8,VCUDVTBL(R3) GET NEXT DEVICE @VA03757 00946000
  1078. LTR R8,R8 DOES IT EXIST ? @VA03757 00947000
  1079. BM ACNTDEVI NO - GO TRY NEXT @VA03757 00948000
  1080. A R8,VMDVSTRT ADDRESS OF VMDEVBLOK @VA03757 00949000
  1081. USING VDEVBLOK,R8 @VA03757 00950000
  1082. TM VDEVSTAT,VDEVDED IS THIS A DEDICATED DEVICE ? @VA03757 00951000
  1083. BO ACNTCALL BRANCH IF IT IS @VA03757 00952000
  1084. CLI VDEVTYPC,CLASDASD IS THIS A DASD DEVICE ?? @VA03757 00953000
  1085. BNE ACNTDEVI NO -- GO GET NEXT DEVICE @VA03757 00954000
  1086. TM VDEVFLAG,VDEVTDSK 'T' DISK ???? @VA03757 00955000
  1087. BZ ACNTDEVI NO - GO GET NEXT DEVICE @VA03757 00956000
  1088. SPACE 00957000
  1089. ACNTCALL EQU * @VA03757 00958000
  1090. CALL DMKACODV BUILD AN ACCOUNTING CARD FOR @VA03757 00959000
  1091. * THE DEVICE 00960000
  1092. ACNTDEVI BXLE R3,R4,ACNTNDEV @VA03757 00961000
  1093. ACNTCUI BXLE R2,R4,ACNTNCU @VA03757 00962000
  1094. ACNTCHI BXLE R1,R4,ACNTNCH @VA03757 00963000
  1095. SPACE 00964000
  1096. * WHEN FALL THRU - HAVE SCANNAD ALL DEVICES FOR THIS USER 00965000
  1097. BR R9 RETURN TO CALLER @VA03757 00966000
  1098. ********************************************************************** 00967000
  1099. EJECT 00968000
  1100. ********************************************************************* 00969000
  1101. * 00970000
  1102. * SUBROUTINE NAME - 00971000
  1103. * DMKCPVAA 00972000
  1104. * 00973000
  1105. * FUNCTION - 00974000
  1106. * 00975000
  1107. *. 00976000
  1108. * USERID. 00977000
  1109. * 00978000
  1110. * OPERATION - 00979000
  1111. * 00980000
  1112. * DMKCPVAA DOES THE FOLLOWING TO GENERATE ACCOUNT RECORDS 00981000
  1113. * FOR THE USER: 00982000
  1114. * 00983000
  1115. * 1. DMKCPVAA GIVES CONTROL TO DMKACO TO MOVE THE USERID, 00984000
  1116. * ACCOUNT NUMBER AND DISTRIBUTION NUMBER INTO THE RECORD 00985000
  1117. * PROVIDING A POINTER EXIST FOR THE USER ACCOUNTING BLOCK. 00986000
  1118. * IF THE USER ACCOUNTING BLOCK POINTER (VMACOUNT) IS ZERO, 00987000
  1119. * THAN THE USERID, ACCOUNT NUMBER AND DISTRIBUTION NUMBER 00988000
  1120. * ARE MOVE INTO THE RECORD FROM THE VMBLOK AND THE RECORDS 00989000
  1121. * ARE PUNCH FOR THE USER THAT GAVE CONTROL TO DMKHVC. 00990000
  1122. * 00991000
  1123. * 2. ONCE DMKACO RETURNS CONTROL TO DMKCPVAA, THE DEVICE 00992000
  1124. * ACCOUNTING CARDS ARE PUNCH. AFTERWARD, CONTROL IS RETURN 00993000
  1125. * TO DMKHVC TO RELEASE THE STORAGE FOR THE USER ACCOUNTING 00994000
  1126. * BLOCK IF ONE EXIST. 00995000
  1127. * 00996000
  1128. * 00997000
  1129. * RESPONSES - 00998000
  1130. * N/A 00999000
  1131. * 01000000
  1132. * ERROR MESSAGES - 01001000
  1133. * N/A 01002000
  1134. *. 01003000
  1135. ********************************************************************** 01004000
  1136. SPACE 2 01005000
  1137. DMKCPVAA RELOC @VA03757 01006000
  1138. CALL DMKACOFF GO CREATE AN ACCOUNTING CARD @VA03757 01007000
  1139. BAL R9,ACNTDED GO CHECK FOR DEDICATED DEVICES @VA03757 01008000
  1140. EXIT @VA03757 01009000
  1141. EJECT 01010000
  1142. CPV003 LA R2,3 ERROR CODE @VA03757 01011000
  1143. B CALLERM .... @VA03757 01012000
  1144. SPACE 01013000
  1145. CPV004 LA R2,4 ERROR CODE @VA03757 01014000
  1146. B CALLERM .... @VA03757 01015000
  1147. SPACE 01016000
  1148. CPV007 LA R2,7 ERROR CODE @VA03757 01017000
  1149. B CALLERM @VA03757 01018000
  1150. SPACE 01019000
  1151. CPV009 LA R2,9 ERROR CODE @VA03757 01020000
  1152. B CALLERM .... @VA03757 01021000
  1153. SPACE 01022000
  1154. CPV020 LA R2,20 ERROR CODE @VA03757 01023000
  1155. B NOVAR ... @VA03757 01024000
  1156. SPACE 01025000
  1157. CPV021 LA R2,21 ERROR CODE @VA03757 01026000
  1158. B NOVAR .... @VA03757 01027000
  1159. SPACE 01028000
  1160. CPV026 LA R2,26 ERROR CODE @VA03757 01029000
  1161. B NOVAR ..... @VA03757 01030000
  1162. SPACE 01031000
  1163. CPV033 LA R2,33 ERROR CODE @VA03757 01032000
  1164. B NOVAR .... @VA03757 01033000
  1165. SPACE 01034000
  1166. CPV040 EQU * @VA03757 01035000
  1167. CALL DMKCVTBH CONVERT ADDR BACK TO HEX @VA03757 01036000
  1168. N R1,X40FFS BLANK HIGH BYTE @VA03757 01037000
  1169. SLR R0,R0 ZERO GPR0 @VA03757 01038000
  1170. LA R2,40 ERROR CODE @VA03757 01039000
  1171. B CALLERM .... @VA03757 01040000
  1172. SPACE 01041000
  1173. CPV045 LA R2,45 ERROR CODE @VA03757 01042000
  1174. B CALLERM .... @VA03757 01043000
  1175. SPACE 01044000
  1176. CPV160 LM R0,R1,SAVEWRK4 LEN AND ADDRESS OF BAD ARG. @VA03757 01045000
  1177. LA R2,160 ERROR CODE @VA03757 01046000
  1178. B CALLERM .... @VA03757 01047000
  1179. SPACE 01048000
  1180. AIF (NOT &VIRREAL).VIRT3 @VA03757 01049000
  1181. CPV176 LA R2,176 ERROR CODE @VA03757 01050000
  1182. DROP R11 @VA03757 01051000
  1183. C R4,F1 AREA UNLOCKED? @V408246 01051100
  1184. BNE *+8 NO @V408246 01051200
  1185. L R4,ASYSVM YES, GET SYSTEM USERID @V408246 01051300
  1186. USING VMBLOK,R4 @VA03757 01052000
  1187. MVC SAVEWRK2(8),VMUSER USERID WHO OWNS VIRT=REAL @VA03757 01053000
  1188. * AREA 01054000
  1189. DROP R4 @VA03757 01055000
  1190. USING VMBLOK,R11 @VA03757 01056000
  1191. LA R0,8 LENGHT OF DATA PASSED @VA03757 01057000
  1192. LA R1,SAVEWRK2 AND ITS LOCATION. @VA03757 01058000
  1193. B CALLERM SEND MSG DMKCPV176E @VA03757 01059000
  1194. .VIRT3 ANOP 01060000
  1195. SPACE 01061000
  1196. AIF (NOT &VIRREAL).VIRT4 @VA03757 01062000
  1197. CPV202 LA R2,202 ERROR CODE @VA03757 01063000
  1198. B NOVAR ... @VA03757 01064000
  1199. .VIRT4 ANOP 01065000
  1200. SPACE 1 01065100
  1201. AIF (NOT &VIRREAL).VIRT5 @VA05486 01065150
  1202. CPV204 DS 0H @V4M0205 01065210
  1203. CHARGE SWITCH,10 SWITCH TO OPERATOR @V4M0205 01065220
  1204. .VIRT5 ANOP 01065700
  1205. SPACE 3 01066000
  1206. SPACE 01067000
  1207. NOVAR SLR R1,R1 ZIP THE PARM REG @VA03757 01068000
  1208. CALLERM ICM R0,14,MODID+3 INSERT THE MODULE INDENT. @VA03757 01069000
  1209. CALL DMKERMSG SEND THE MESSAGE @VA03757 01070000
  1210. * 01071000
  1211. * ERMSG WILL RETURN DIRECTLY TO DMKCFM -- NOT HERE -- 01072000
  1212. * 01073000
  1213. SPACE 2 01073100
  1214. VEQRUNLK EQU X'40' V=R AREA HAS BEEN UNLOCKED BY @VA08341 01073200
  1215. * THE OPERATOR AND IS AVAILABLE TO THE 01073300
  1216. * PAGE SELECTION SCAN PROCESS 01073400
  1217. EJECT 01074000
  1218. LTORG @VA03757 01075000
  1219. EJECT 01076000
  1220. PSA @VA03757 01077000
  1221. COPY CORE @VA03757 01078000
  1222. COPY DEVTYPES @VA03757 01079000
  1223. COPY EQU @VA03757 01080000
  1224. COPY IOBLOKS @VA03757 01081000
  1225. COPY IOER @VA03757 01082000
  1226. COPY MONBLOKS @VA03757 01083000
  1227. COPY NETWORK @VA03757 01084000
  1228. COPY RBLOKS @VA03757 01085000
  1229. COPY SAVE @VA03757 01086000
  1230. COPY SAVTABLE @VA03757 01087000
  1231. COPY SYSTBL @VA03757 01088000
  1232. COPY VBLOKS @VA03757 01089000
  1233. COPY VMBLOK @VA03757 01090000
  1234. END 01091000