User Tools

Site Tools


ibm:vm370-lib:cp:dmkcfg.assemble_src

DMKCFG Source

References

Source Listing

DMKCFG.ASSEMBLE.txt
  1. CFG TITLE 'DMKCFG (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCFG 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO HANDLE GENERAL COMMANDS 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * CONTENTS - 00016000
  17. * 00017000
  18. * DMKCFGCL - TO HANDLE DIAGNOSE CODE X'64' 00018000
  19. * DMKCFGII - ENTRY TO IPL FROM LOGON (DMKLOG) 00019000
  20. * DMKCFGIP - ENTRY TO IPL FROM COMMAND LINE (DMKCFM) 00020000
  21. * 00021000
  22. * ENTRY CONDITIONS FOR DMKCFGIP 00022000
  23. * 00023000
  24. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00024000
  25. * GPR11 = ADDRESS OF CALLER'S VMBLOK 00025000
  26. * GPR12 = ADDRESS OF ENTRY POINT 00026000
  27. * GPR13 = ADDRESS OF SAVEAREA 00027000
  28. * 00028000
  29. * ENTRY CONDITIONS FOR DMKCFGII 00029000
  30. * 00030000
  31. * GPR0 = LENGTH OF INPUT ARGUMENT 00031000
  32. * GPR1 = ADDRESS OF INPUT ARGUMENT 00032000
  33. * GPR11 = ADDRESS OF CALLER'S VMBLOK 00033000
  34. * GPR12 = ADDRESS OF ENTRY POINT 00034000
  35. * GPR13 = ADDRESS OF SAVEAREA 00035000
  36. * 00036000
  37. * ENTRY CONDITIONS FOR DMKCFGCL - 00037000
  38. * GPR 1-2 = NAME OF THE NAMED SYSTEM ISSUED FOR DIAG, X'64' 00038000
  39. * GPR3 = CODE FUNCTION BYTE 00039000
  40. * 00040000
  41. * EXIT CONDITIONS FOR DMKCFGII & DMKCFGIP 00041000
  42. * 00042000
  43. * NORMAL - 00043000
  44. * THE USERS VMBLOK HAS BEEN UPDATED TO RESUME EXECUTION 00044000
  45. * AT THE SAVE POINT IN THE NEWLY IPL'D SYSTEM 00045000
  46. * 00046000
  47. * ERROR - 00047000
  48. * DMKERMSG HAS BEEN CALLED TO SEND AN ERROR MESSAGE 00048000
  49. * 00049000
  50. * EXIT CONDITIONS FOR DMKCFGCL - 00050000
  51. * 00051000
  52. * NORMAL - 00052000
  53. * THE USERS CONDITION CODE IN THE PSW IS SET TO ZERO 00053000
  54. * THE USERS VIRTUAL REG'S 1-2 IS SET ACCORDING TO THE 00054000
  55. * DIAGNOSE FUNCTION SELECTED. 00055000
  56. * 00056000
  57. * ERROR - 00057000
  58. * THE USER'S CONDITION CODE IS NON-ZERO, AND INDICATES THE TYPE 00058000
  59. * OF ERROR CONDITION. 00059000
  60. * THE USER'S REG'S. REMAIN UNCHANGED. 00060000
  61. * 00061000
  62. * CALLS TO OTHER ROUTINES - 00062000
  63. * 00063000
  64. * DMKCVTBH - CONVERT HEX TO BINARY 00064000
  65. * DMKCVTDB - CONVERT DECIMAL TO BINARY 00065000
  66. * DMKFREE - TO OBTAIN STORAGE 00066000
  67. * DMKPTRUL - TO UNLOCK A PAGE 00067000
  68. * DMKPTRLK - TO LOCK A PAGE 00068000
  69. * DMKSCNVS - TO FIND A VOLUME 00069000
  70. * DMKSCNVU - TO FIND A VIRTUAL UNIT 00070000
  71. * DMKVATMD - ALLOCATE & INITIALIZE SHADOW TABLES 00071000
  72. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00072000
  73. * DMKRPAGT - TO GET A PAGE FROM BACKING STORAGE 00073000
  74. * DMKCVTBH - TO CONVERT BINARY TO HEX 00074000
  75. * DMKSCNFD - LOCATE THE NEXT ARGUMENT ON THE COMMAND LINE 00075000
  76. * DMKPTRAN - LOCATE AND FETCH A PAGE OF VIRTUAL STORAGE 00076000
  77. * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00077000
  78. * DMKBLDRT - TO BUILD PAGE/SWAP AND SEGMENT TABLES 00078000
  79. * DMKPGSPR - TO RELEASE AND UNLOCK A RANGE OF VIRTUAL STORAGE 00079000
  80. * DMKPGSPO - TO RELEASE ALL OF VIRTUAL STORAGE 00080000
  81. * DMKPGSFS - TO LOCATE A NAMED SYSTEM IN THE USER'S VIRT. STOR. 00081000
  82. * DMKPGSPS - TO RELEASE A NAMED SYSTEM FROM THE USER 00082000
  83. * DMKPGSPP - TO RELEASE A VIRTUAL PAGE 00083000
  84. * DMKCFPRR - TO PERFORM A VIRTUAL SYSTEM RESET 00084000
  85. * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 00085000
  86. * DMKVMAS2 - ANCHOR FOR NAMED SYSTEMS (SHRTABLE POINTER) 00086000
  87. * 00087000
  88. * EXTERNAL REFERENCES - 00088000
  89. * 00089000
  90. * 00090000
  91. * TABLES / WORKAREAS - 00091000
  92. * 00092000
  93. * DMKSNTBL - SYSTEM NAME TABLE 00093000
  94. * 00094000
  95. * 00095000
  96. * REGISTER USAGE - 00096000
  97. * 00097000
  98. * GPR0 = LENGTH OF ARGUMENT (RETURNED BY DMKSCNFD) 00098000
  99. * GPR1 = ADDRESS OF ARGUMENT (RETURNED BY DMKSCNFD) 00099000
  100. * GPR2 = PARMS PASSED TO CALLED ROUTINES 00100000
  101. * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00101000
  102. * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00102000
  103. * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00103000
  104. * GPR6-8 NOT USED 00104000
  105. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00105000
  106. * GPR10 = IOBLOK BASE 00106000
  107. * GPR11 = VMBLOK BASE 00107000
  108. * GPR12 = MODULE BASE 00108000
  109. * GPR13 = SAVEAREA BASE 00109000
  110. * GPR14 = EXTERNAL LINKAGE 00110000
  111. * GPR15 = EXTERNAL LINKAGE 00111000
  112. * 00112000
  113. * OPERATION - 00113000
  114. * 00114000
  115. * THE COMMAND HANDLING ROUTINES IN DMKCFG ARE CALLED FROM DMKCFM 00115000
  116. * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00116000
  117. * THE FORMAT AND OPERATION OF EACH COMMAND IS DESCRIBED IN S 00117000
  118. * SEPARATE COMMAND PROLOGUES BELOW 00118000
  119. * 00119000
  120. *. 00120000
  121. EJECT 00121000
  122. COPY OPTIONS 00122000
  123. COPY LOCAL 00123000
  124. DMKCFG CSECT 00124000
  125. MODID DC CL8'DMKCFG' MODULE NAME @VM03098 00125000
  126. USING DMKCFG,R12 00126000
  127. SPACE 3 00127000
  128. USING PSA,R0 00128000
  129. USING VMBLOK,R11 00129000
  130. USING SAVEAREA,R13 00130000
  131. SPACE 2 00131000
  132. EXTRN DMKSCNFD 00132000
  133. EXTRN DMKSYSAP 00132002
  134. EXTRN DMKPTRUL 00133000
  135. EXTRN DMKCVTBH 00134000
  136. EXTRN DMKSNTBL 00135000
  137. EXTRN DMKSCNVS 00136000
  138. EXTRN DMKSCNVU 00137000
  139. EXTRN DMKRPAGT 00138000
  140. EXTRN DMKERMSG 00139000
  141. EXTRN DMKCVTHB,DMKPGSPO,DMKPGSPR,DMKVMI 00140000
  142. EXTRN DMKBLDRT,DMKVATMD,DMKCVTDB,DMKCFPRR @VM03171 00141000
  143. EXTRN DMKPGSPS @VA11919 00142100
  144. EXTRN DMKVMAS1,DMKVMAS2 @VM03171 00143000
  145. EXTRN DMKPGSPP @VA05638 00144000
  146. EJECT 00145000
  147. *. 00146000
  148. * 00147000
  149. * SUBROUTINE NAME - 00148000
  150. * 00149000
  151. * DMKCFGIP 00150000
  152. * FUNCTION - 00151000
  153. * 00152000
  154. * TO INITIATE AN INITIAL PROGRAM LOAD FUNCTION FOR THE 00153000
  155. * VIRTUAL MACHINE. 00154000
  156. * 00155000
  157. * ENTRY POINTS - 00156000
  158. * DMKCFGII - ENTRY TO IPL FROM LOGON (DMKLOG). 00157000
  159. * DMKCFGIP - ENTRY TO IPL FROM COMMAND PROCESSING (DMKCFM). 00158000
  160. * 00159000
  161. * COMMAND LINE FORMAT - 00160000
  162. * 00161000
  163. * +-----+---------------------------------------------------+ 00162000
  164. * | IPL | VADDR <CYL-NO> <STOP> <CLEAR> | 00163000
  165. * | I | <NOCLEAR> | 00164000
  166. * | | <PARM P1 P2 ...> | 00165000
  167. * | | SYSTEM NAME | 00166000
  168. * +-----+---------------------------------------------------+ 00167000
  169. * 00168000
  170. * OPERATION - 00169000
  171. * 00170000
  172. * 1. DMKCFGII - ENTRY FROM LOGON. SET FLAG TO INDICATE 00171000
  173. * THIS AND GO TO STEP 3. 00172000
  174. * 2. DMKCFGIP - ENTRY FROM DMKCFM. SET DEFAULT FLAG (NOCLEAR). 00173000
  175. * CALL DMKSCNFD TO LOCATE THE FIRST ARGUMENT. IF NONE FOUND, 00174000
  176. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG026E. 00175000
  177. * 3. IF THE LENGTH OF THE FIRST ARGUMENT IS OVER THREE 00176000
  178. * CHARACTERS, IT MUST BE A NAME(NOT A DEVICE ADDRESS) SO GO 00177000
  179. * TO STEP 10. IF THREE CHARACTERS OR LESS, IT COULD BE 00178000
  180. * EITHER. CALL DMKCVTHB TO CONVERT THE ARGUMENT TO BINARY. 00179000
  181. * 4. IF THE CONVERT FAILS, IT IS ASSUMED TO BE AN IPL BY NAME 00180000
  182. * SO GO TO STEP 10. 00181000
  183. * 5. IF THE CONVERT IS SUCCESSFUL, IT IS ASSUMED TO BE AN IPL 00182000
  184. * BY DEVICE ADDRESS. IF ENTERED FROM LOGON, GO STEP 15. 00183000
  185. * 6. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF NONE ARE 00184000
  186. * FOUND, GO TO STEP 12. 00185000
  187. * 6A. IF ARGUMENT IS 'STOP' SET UP FLAG ACCORDINGLY AND GO 00186000
  188. * BACK TO STEP 6. 00187000
  189. * 7. IF THE ARGUMENT IS 'CLEAR', GO TO STEP 8. IF IT IS NOT 00188000
  190. * 'NOCLEAR', GO TO STEP 9. IF 'NOCLEAR', CHECK FOR THE PROPER 00189000
  191. * ABREVIATION AND IF IN ERROR CALL DMKERMSG TO SEND ERROR 00190000
  192. * MESSAGE DMKCFG002E. IF 'CLEAR' HAD PREVIOSLY BEEN ENTERED, 00191000
  193. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG013E. IF NOCLEAR 00192000
  194. * HAS BEEN ENTERED TWICE, CALL DMKERMSG TO SEND ERROR 00193000
  195. * MESSAGE DMKCFG003E. IF OK, SET THE NOCLEAR FLAG AND GO 00194000
  196. * BACK TO STEP 6. 00195000
  197. * 8. IF 'NOCLEAR' HAS PREVIOSLY BEEN ENTERED, CALL DMKERMSG 00196000
  198. * TO SEND ERROR MESSAGE DMKCFG013E. IF 'CLEAR' HAS BEEN 00197000
  199. * ENTERED TWICE, CALL DMKERMSG TO SEND ERROR MESSAGE 00198000
  200. * DMKCFG003E. IF OK, SET CLEAR FLAG AND GO BACK TO STEP 6. 00199000
  201. * 9. BAL TO STEP 44 TO CHECK FOR 'PARM'. IF A PARM WAS PROCESSED 00200000
  202. * GO TO STEP 12. IF NOT, CALL DMKCVTDB TO CONVERT THE CYL-NO 00201000
  203. * TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND 00202000
  204. * ERROR MESSAGE DMKCFG002E. IF A CYL-NO HAD BEEN ENTERED 00203000
  205. * PREVIOUSLY, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG002E. 00204000
  206. * IF OK, SAVE THE CYL-NO IN SAVEWRK4 AND GO BACK TO STEP 6. 00205000
  207. * 10.SET THE FLAG TO INDICATE A NAMED IPL. IF ENTERED FROM 00206000
  208. * LOGON, GO TO STEP 19. IF NOT, CALL DMKSCNFD TO CHECK FOR 00207000
  209. * 11.IF ONE IS FOUND, BAL TO STEP 44 TO CHECK FOR 'PARM'. IF NO 00208000
  210. * ARGUMENT IS FOUND, GO TO STEP 13. WHEN RETURN FROM 00209000
  211. * STEP 44, TEST IF 'PARM' WAS PROCESSED. IF NOT WE HAVE AN 00210000
  212. * ERROR. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG003E -ELSE 00211000
  213. * GO TO STEP 13. 00212000
  214. * 12. SET UP THE PARAMETER REG 2 FOR DMKPGS - EITHER CLEAR OR 00213000
  215. * NOCLEAR. 00214000
  216. * 13 CALL DMKPSGPO TO CLEANUP FROM ANY PREVIOUS IPL. 00215000
  217. * 14. CALL DMKCFPRR TO RESET THE VIRTUAL MACHINE. IF IPL BY 00216000
  218. * NAME GO TO STEP 20 - ELSE CONTINUE. 00217000
  219. * 15. IF THE VIRTUAL MACHINE SIZE IS 64 PAGES OR LARGER, USE 00218000
  220. * ADDRESS 40000 HEX FOR THE ADDRESS FOR THE IPL SIMULATOR. 00219000
  221. * GO STEP 17. 00220000
  222. * 16. IF THE VIRTUAL MACHINE SIZE IS LESS THAN 64 PAGES, 00221000
  223. * CALCULATE THE ADDRESS OF THE MIDDLE PAGE OF THE VIRTUAL 00222000
  224. * MACHINE TO BE USED FOR THE IPL SIMULATOR. 00223000
  225. * 17. CALL DMKRPAGT TO BRING THE IPL SIMULATOR (DMKVMI) INTO 00224000
  226. * THE ALLOCATED PAGE. 00225000
  227. * 18. CALL DMKSCNVU TO INSURE THE VIRTUAL ADDRESS WAS VALID. IF 00226000
  228. * NOT VALID, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG040E. 00227000
  229. * IF OK, SET UP USER PAGE ZERO WITH THE IPL DEVICE ADDRESS 00228000
  230. * CONSOLE ADDRESS, AND THE CYLINDER NUMBER. 00229000
  231. * 18A. IF 'STOP' WAS REQUESTED, SET THE IPL STOP FLAG TO 00230000
  232. * ONE AT LOCATION 'E'. 00231000
  233. * 19. IF IPL-ING A SHARED SYSTEM, TURN OFF VM ASSIST. IF IPL-ING 00232000
  234. * A NONSHARED SYSTEM AND IF USER WANTS VM ASSIST ON, AND IF 00233000
  235. * TRACING IS NOT IN EFFECT, AND IF USER HAS NO DEDICATED 00234000
  236. * CHANNELS, THEN TURN ON VM ASSIST. 00235000
  237. * 19A. IF ENTERED FROM LOGON, EXIT. IF ENTERED FROM DMKCFM, 00236000
  238. * SET UP TO RETURN PLUS 4 AND EXIT. 00237000
  239. * 20. TRANS AND LOCK DMKSNT. IF THE NAME ENTERED IS IN 00238000
  240. * EXCESS OF 8 CHARACTERS, BAL TO STEP 43 TO UNLOCK 00239000
  241. * DMKSNT AND CALL DMKERMSG TO SEND ERROR MESSAGE 00240000
  242. * DMKCFG044E. 00241000
  243. * 21. COMPARE THE ARGUMENT TO THE SYSNAME IN THE SYSTBL. 00242000
  244. * IF THEY COMPARE SKIP TO STEP 23A 00243000
  245. * 22. IF LAST ENTRY IN SYSTBL, BAL TO STEP 43 TO UNLOCK THE 00244000
  246. * SYSTBL. THEN CALL DMKERMSG TO SEND ERROR MESSAGE 00245000
  247. * DMKCFG044. IF NOT THE LAST ENTRY - CONTINUE. 00246000
  248. * 23. GET NEXT ENTRY FROM SYSTBL AND GO TO STEP 21. 00247000
  249. * 23A IF ENTRY FOR IPL, GO TO STEP 24 00248000
  250. * ELSE CALL DMKPGSPR AND SKIP TO STEP 24A. 00249000
  251. * 24. IF THE MINIMUM SYSTEM SIZE IS GREATER THAN THE SIZE OF 00250000
  252. * THE VIRTUAL MACHINE, BAL TO STEP 42 TO UNLOCK THE SYSTBL 00251000
  253. * AND THEN CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG170E. 00252000
  254. * 24A CALL DMKBLDRT TO BUILD PAGE AND SWAP TABLES 00253000
  255. * FROM THE 1ST SAVED PAGE TO THE SYSSIZE 00254000
  256. * 25. CALL DMKSCNVS TO FIND IF VIRTUAL SYSRES VOLUME IS 00255000
  257. * MOUNTED. IF NOT MOUNTED, GO TO STEP 42. 00256000
  258. * 26.CALL DMKSCNVU TO FIND VIRTUAL DEVICE BLOKS FOR THE VADDR 00257000
  259. * OF VSYSRES. IF NOT FOUND, DMKERMSG TO SEND ERROR 00258000
  260. * MESSAGE DMKCFG173E. 00259000
  261. * 27. CALL DMKSCNVS TO FIND IF SYSVOL IS MOUNTED. IF NOT 00260000
  262. * MOUNTED, GO TO STEP 42. 00261000
  263. * 28. CALL DMKRPAGT TO BRING IN THE SAVTABLE. 00262000
  264. * 29. INITIALIZE THE VIRTUAL REGISTERS AND VIRTUAL PSW. 00263000
  265. * 30. INITIALIZE THE NEXT RANGE OF PAGES TO PROCESS. 00264000
  266. * 31. COMPUTE THE ADDRESS OF THE NEXT SWPTABLE ENTRY. 00265000
  267. * 32. STORE THE 'CCPD' FOR THE SAVED PAGE AND THE SAVED KEYS 00266000
  268. * INTO THE SWPTABLE ENTRY. IF THERE ARE MORE PAGES TO THIS 00267000
  269. * GROUP, GO BACK TO STEP 31 - ELSE CONTINUE. 00268000
  270. * 33. IF THERE ARE MORE RANGES TO PROCESS, GO TO STEP 30. 00269000
  271. * 34. IF THERE ARE NO SHARE SEGMENTS TO PROCESS, GO TO STEP 41. 00270000
  272. * IF SHARED SYSTEM DOES NOT ALREADY EXIST, GO TO STEP 37. 00271000
  273. * 35. GET THE NEXT SHARED SEGTABLE ENTRY. 00272000
  274. * 36. POINT THE SEGTABLE TO THE SHARED PAGTABLE AND CALL 00273000
  275. * DMKFRET TO FRET THE ORIGINAL PAG AND SWPTABLES. IF THERE 00274000
  276. * ARE MORE SHARED SEGMENTS TO PROCESS, GO BACK TO STEP 35. 00275000
  277. * IF NO MORE, GO TO STEP 40. 00276000
  278. * 37. COME HERE IF HAVE TO BUILD NEW SHRTABLE. CALL DMKFREE TO 00277000
  279. * GET STORAGE FOR SHRTABLE. 00278000
  280. * 38. GET NEXT SHARED SEGTABLE ENTRY. 00279000
  281. * 39. FLAG THE SWPTABLE FOR THIS SEGMENT AS SHARED. IF MORE 00280000
  282. * SEGMENTS ARE TO BE PROCESSED, GO BACK TO STEP 38. IF NOT, 00281000
  283. * INSERT THE SHRTABLE INTO THE CHAIN OF SHRTABLES. 00282000
  284. * 40. STORE THE SHRTABLE ADDRESS IN THE VMBLOK. 00283000
  285. * 41. BAL TO STEP 43 TO UNLOCK DMKSNT. IF VIRTUAL SYSTEM IS IN 00284000
  286. * ECMODE WITH TRANSLATE ON, CALL DMKVATMD TO SET UP SHADOW 00285000
  287. * TABLES. THEN GO TO STEP 19. 00286000
  288. * 42. BAL TO STEP 43 TO UNLOCK DMKSNT AND THEN CALL DMKERMSG 00287000
  289. * TO SEND ERROR MESSAGE DMKCFG171E. 00288000
  290. * 43. SUBROUTINE TO UNLOCK DMKSNT. CALL DMKPTRUL TO 00289000
  291. * DO THE UNLOCK. THEN RETURN ON REG 9. 00290000
  292. * 44. SUBROUTINE TO PROCESS 'PARM' FIELDS. FIRST CHECK IF THE 00291000
  293. * ARGUMENT PASSED IS 'PARM'. IF NOT, RETURN ON REG 8. IF IT 00292000
  294. * IS, CALL DMKSCNFD TO LOCATE THE FIRST CHARACTER OF THE 00293000
  295. * PARM FIELD. CALCULATE THE NUMBER OF CHARACTERS IN THE PARM 00294000
  296. * FIELD. IF THERE ARE MORE THAN 64 CHARACTERS, CALL DMKERMSG 00295000
  297. * TO SEND ERROR MESSAGE DMKCFG177E - ELSE SET THE PARM FLAG, 00296000
  298. * MOVE THE PARM INTO THE VIRTUAL GENEREAL PURPOSE REGISTERS, 00297000
  299. * AND STORE THE BYTE COUNT INTO SAVEWRK1 -- THEN RETURN ON 00298000
  300. * REG 8. 00299000
  301. * 00300000
  302. * RESPONSES - 00301000
  303. * 'TRACE ENDED' MESSAGE IS GIVEN IF V.M. TRACING PREVIOUSLY IN 00302000
  304. * EFFECT WAS TERMINATED UPON THE IPL OF A SHARED NAME SYSTEM. 00303000
  305. * 00304000
  306. * IN ALL OTHER CASES FOR A SUCCESSFUL IPL, ANY RESPONSE WILL 00305000
  307. * COME ONLY FROM THE IPL'ED SYSTEM. 00306000
  308. * 00307000
  309. * ERROR MESSAGES - 00308000
  310. * DMKCFG002E INVALID OPERAND - (OPERAND) 00309000
  311. * DMKCFG003E INVALID OPTION - (OPTION) 00310000
  312. * DMKCFG006E INVALID DEVICE TYPE - (VADDR) 00311000
  313. * DMKCFG013E CONFLICTING OPTION - (OPTION) 00312000
  314. * DMKCFG022E VADDR MISSING OR INVALID 00313000
  315. * DMKCFG026E OPERAND MISSING OR INVALID 00314000
  316. * DMKCFG040E DEV (ADDR) DOES NOT EXIST 00315000
  317. * DMKCFG044E SYSTEM (NAME) DOES NOT EXIST 00316000
  318. * DMKCFG170E SYSTEM (NAME) EXCEEDS STORAGE 00317000
  319. * DMKCFG171E SYSTEM (NAME) VOLID (VOLID) NOT MOUNTED 00318000
  320. * DMKCFG172E SYSTEM (NAME) DASD (VADDR) INCOMPATIBLE SYSRES 00319000
  321. * DMKCFG173E SYSTEM (NAME) REQUIRES DASD (VADDR) 00320000
  322. * DMKCFG174E PAGING I/O ERROR; IPL FAILED 00321000
  323. * DMKCFG177E PARM EXCEEDS 64 CHARACTERS 00322000
  324. *. 00323000
  325. * DMKCFG203E V=R AREA REQUIRES IPL BY DEVICE ADDRESS 00323100
  326. EJECT 00324000
  327. * EQUATES USE IN FLAG BYTE IN SAVEWRK1 00325000
  328. SPACE 00326000
  329. FRMLOGON EQU X'80' INDICATES IPL CALLED FROM LOGON @V304635 00327000
  330. * PROCESS 00328000
  331. NOCLEAR EQU X'40' DO NOT CLEAR STORAGE @V304635 00329000
  332. NAMEDIPL EQU X'20' PROCESSING IPL BY NAME @V304635 00330000
  333. IPLST EQU X'10' SET ADSTOP AFTER IPL @V304635 00331000
  334. CLEARFND EQU X'08' FLAG FOR CLEAR FOUND IN COMMAND @V304635 00332000
  335. NOCLFND EQU X'04' FLAG NOCLEAR FOUND IN COMMAND @V304635 00333000
  336. CYLFND EQU X'02' FLAG CYL NO FOUND IN COMMAND @V304635 00334000
  337. PARMFND EQU X'01' FLAGS EXISTENCE OF A PARM FIELD @V304635 00335000
  338. SPACE 2 00336000
  339. * EQUATES USE IN FLAG BYTE SAVEWRK1+2 00337000
  340. SPACE 1 00338000
  341. NONSHARE EQU X'08' REQUEST FOR NONSHARED MODE @V304635 00339000
  342. PURFLG EQU X'04' PURGESYS FUNCTION @V304635 00340000
  343. FINDFLG EQU X'02' FINDSYS FUNCTION @V304635 00341000
  344. LOADFLG EQU X'01' LOADSYS FUNCTION @V304635 00342000
  345. SPACE 2 00343000
  346. * THIS IS THE ENTRY POINT FROM LOGON 00344000
  347. SPACE 00345000
  348. DMKCFGII RELOC @V304635 00346000
  349. XC SAVEWRK1,SAVEWRK1 CLEAR FLAGS @V304635 00347000
  350. MVI SAVEWRK1,FRMLOGON+NOCLEAR SET UP FLAG BYTE @V304635 00348000
  351. B IPLSAVE . . . @V304635 00349000
  352. SPACE 4 00350000
  353. * ENTER HERE FROM CFM 00351000
  354. SPACE 00352000
  355. DMKCFGIP RELOC @V304635 00353000
  356. XC SAVEWRK1,SAVEWRK1 CLEAR FLAGS @V304635 00354000
  357. XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @VM03100 00355000
  358. * WORKSAVE AREA 00356000
  359. NI VMSPMFLG,X'FF'-VMCPVIRT RESET CP VIRT @VA09952 00356100
  360. MVI SAVEWRK1,NOCLEAR SET DEFAULT @V304635 00357000
  361. CALL DMKSCNFD LOCATE DEVICE ADDRESS OR NAME @V304635 00358000
  362. BNZ CFG026 BRANCH IF NOTHING FOUND @V304635 00359000
  363. MVC VMCOMND+4(LEN4),0(R1) SAVE DEV NAME IPL'ED @VM03100 00360000
  364. NI VMQSTAT,X'FF'-VMPA2APL CLEAR PA2 FLAG @VM03116 00361000
  365. SPACE 2 00362000
  366. IPLSAVE XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @VM03100 00363000
  367. * THEM ALL 00364000
  368. STM R0,R1,SAVEWRK2 SAVE LENGTH AND ADDRESS OF @V304635 00365000
  369. * ARGUMENT 00366000
  370. CL R0,F3 IF THE ARGUMENT OVER 3 CHAR.= @V304635 00367000
  371. * NAME 00368000
  372. BH IPLNAME SO GO PROCESS AS SUCH @V304635 00369000
  373. CALL DMKCVTHB TRY TO CONVERT TO BINARY @V304635 00370000
  374. BNZ IPLNAME BRANCH IF CONVERT FAILED-MUST @V304635 00371000
  375. * BE NAME 00372000
  376. ST R1,SAVEWRK2 SAVE VIRTUAL ADDRESS FOR LATER @V304635 00373000
  377. TM SAVEWRK1,FRMLOGON ENTERED FROM LOGON ???? @V304635 00374000
  378. BZ IPLSCNLP BRANCH IF NOT-SCAN FOR REST OF @V304635 00375000
  379. * ARGS. 00376000
  380. B IPLBYDEV GO STRAIGHT TO DEVICE IPL @V304635 00377000
  381. SPACE 2 00378000
  382. IPLSCNLP CALL DMKSCNFD LOCATE NEXT ARGUMENT @V304635 00379000
  383. BNZ IPLSETR2 BRANCH IF NO MORE ARGUEMNTS @V304635 00380000
  384. STM R0,R1,SAVEWRK7 SAVE LENGTH AND ADDRESS OF @V304635 00381000
  385. * ARGUEMNT 00382000
  386. CLC =C'STOP',0(R1) DOES HE WANT IPL STOP ? @VM03100 00383000
  387. BNE NOCLRCHK NO - TEST FOR NOCLEAR @V304635 00384000
  388. CL R0,F4 WAS IT FOUR BYTES LONG? @V304635 00385000
  389. BNE NOCLRCHK NO - TEST FOR NOCLEAR @V304635 00386000
  390. TM SAVEWRK1,IPLST DID HE SPECIFY STOP ALREADY? @V304635 00387000
  391. BO CFG003 YES - NOT ALLOWED @V304635 00388000
  392. OI SAVEWRK1,IPLST SET FLAG FOR IPL STOP @V304635 00389000
  393. B IPLSCNLP LOOP BACK FOR MORE OPTIONS @V304635 00390000
  394. NOCLRCHK EQU * @V304635 00391000
  395. LR R2,R0 LENGTH TO R2 FOR EX @V304635 00392000
  396. CL R2,F2 TWO OR MORE CHARACTERS ???? @V304635 00393000
  397. BL IPLCYLCV IF ONLY ONE, MUST BE CYLINDER @V304635 00394000
  398. * NUMBER 00395000
  399. BCTR R2,0 MINUS ONE FOR EX @V304635 00396000
  400. EX R2,CLEARCMP IS IT 'CLEAR' @V304635 00397000
  401. BE IPLSETCL BRANCH IF IT IS @V304635 00398000
  402. EX R2,NOCLRCMP NOCLEAR ???? @V304635 00399000
  403. BNE IPLPARM NO -- GO CHECK FOR A PARM @V304635 00400000
  404. CLC =C'NOCL',0(R1) ABREV. CORRECT ???? @VM03100 00401000
  405. BNE CFG002 NO GOOD - GO SEND ERROR MESSAGE @V304635 00402000
  406. TM SAVEWRK1,CLEARFND HAS CLEAR BEEN FOUND ????? @V304635 00403000
  407. BO CFG013 CAN'T HAVE BOTH @V304635 00404000
  408. TM SAVEWRK1,NOCLFND HAS NOCLEAR ALREADY BEEN @V304635 00405000
  409. * FOUND ONCE 00406000
  410. BO CFG003 BRANCH IF IT HAS --- @V304635 00407000
  411. OI SAVEWRK1,NOCLFND FLAG NOCLEAR AS BEING SPEC. @V304635 00408000
  412. * ONCE 00409000
  413. B IPLSCNLP LOOP BACK-NOCLEAR ALREADY SET @V304635 00410000
  414. SPACE 2 00411000
  415. IPLSETCL NI SAVEWRK1,X'FF'-NOCLEAR RESET NOCLEAR FLAG @VM03100 00412000
  416. TM SAVEWRK1,NOCLFND HAS NOCLEAR BEEN SPECIFIED ????@V304635 00413000
  417. BO CFG013 ERROR IF IT HAS @V304635 00414000
  418. TM SAVEWRK1,CLEARFND HAS CLEAR BEEN FOUND BEFORE @V304635 00415000
  419. BO CFG003 CAN'T LET THEM DO THAT @V304635 00416000
  420. OI SAVEWRK1,CLEARFND FLAG IT AS BEING FOUND ONCE @V304635 00417000
  421. B IPLSCNLP LOOP BACK @V304635 00418000
  422. SPACE 2 00419000
  423. IPLPARM EQU * @V304635 00420000
  424. BAL R8,CHKPARM GO CHECK FOR PARM @V304635 00421000
  425. TM SAVEWRK1,PARMFND IS THERE ONE ???? @V304635 00422000
  426. BO IPLSETR2 YES - NO MORE SCANNING TO DO @V304635 00423000
  427. LM R0,R1,SAVEWRK7 RESTORE THE ORIGINAL STUFF @V304635 00424000
  428. IPLCYLCV CALL DMKCVTDB CONVERT CYL NO. TO BINARY @V304635 00425000
  429. BNZ IPLINVCY BRANCH IF CONVERT FAILS @V304635 00426000
  430. CL R1,=XL4'FFFF' NUMBER EXCEED MAX. HALF WORD @V304635 00427000
  431. * VALUE ? 00428000
  432. BH IPLINVCY BRANCH IF IT DOES @V304635 00429000
  433. ST R1,SAVEWRK4 SAVE CYLINDER NUMBER FOR LATER @V304635 00430000
  434. TM SAVEWRK1,CYLFND HAVE WE BEEN HERE BEFORE ??? @V304635 00431000
  435. BO IPLINVCY YES -- AND THATS A NO NO @V304635 00432000
  436. OI SAVEWRK1,CYLFND FLAG AS BEING HERE ONCE @V304635 00433000
  437. B IPLSCNLP LOOP BACK @V304635 00434000
  438. SPACE 2 00435000
  439. IPLINVCY LM R0,R1,SAVEWRK7 RESTORE ARGUMENT LENGTH AND @V304635 00436000
  440. * ADDRESS 00437000
  441. B CFG002 GO SEND ERROR MESSAGE @V304635 00438000
  442. SPACE 2 00439000
  443. CLEARCMP CLC 0(*-*,R1),=C'CLEAR ' EXECUTED COMPARE @VM03100 00440000
  444. NOCLRCMP CLC 0(*-*,R1),=C'NOCLEAR ' EXECUTED COMPARE @VM03100 00441000
  445. SPACE 2 00442000
  446. IPLNAME CL R11,AVMREAL IS USER THE V=R USER ? @V304735 00443000
  447. BE CFG203 YES - CAN'T IPL BY NAME @V304735 00444000
  448. OI SAVEWRK1,NAMEDIPL SET NAME BIT IN FLAGS @V304735 00445000
  449. TM SAVEWRK1,FRMLOGON DID WE IPL FROM LOGON ????? @V304635 00446000
  450. BO IPLBYNAM BR. IF YES-NO NEED TO CLEANUP @V304635 00447000
  451. CALL DMKSCNFD ANY MORE ARGUMENTS @V304635 00448000
  452. BNZ IPLSETR2 NO --- @VA11699 00449100
  453. BAL R8,CHKPARM GO CHECK FOR A PARM @V304635 00450000
  454. TM SAVEWRK1,PARMFND WAS A PARM FOUND @V304635 00451000
  455. BZ CFG003 IF ANYTHING ELSE - HAVE AN ERROR @V304635 00452000
  456. SPACE 2 00455000
  457. IPLSETR2 SR R2,R2 ASSUME CLEAR @V304635 00456000
  458. TM SAVEWRK1,NOCLEAR NOCLEAR SET ???? @V304635 00457000
  459. BZ CALLPGS BRANCH IF NOT @V304635 00458000
  460. LA R2,NOCLEAR TELL PGS NOT TO CLEAR @V304635 00459000
  461. SPACE 2 00460000
  462. CALLPGS CALL DMKCFPRR RESET THE VM. @V304635 00461000
  463. TM SAVEWRK1,NAMEDIPL IPL BY NAME????? @VA11699 00462100
  464. BO IPLBYNAM BRANCH IF YES -- @VA11699 00463100
  465. CALL DMKPGSPO CLEAR STORAGE (MAYBE) @VA11699 00464100
  466. SPACE 2 00465000
  467. IPLBYDEV L R1,VMSIZE LOAD SIZE OF STORAGE @V304635 00466000
  468. CL R1,=X'00040000' IS IT LESS THAN 64 PAGES ? @V304635 00467000
  469. BL IPLHALF NO, TAKE BRANCH @V304635 00468000
  470. L R1,=X'00040000' YES, SET TO PAGE 64 @V304635 00469000
  471. IPLHALF SRL R1,1 USE MIDDLE PAGE OF VIRT. @V304635 00470000
  472. * STORAGE FOR IPL 00471000
  473. N R1,=X'0007F000' REMOVE HALF PAGE @V304635 00472000
  474. ST R1,VMPSW+4 SET ADDRESS OF IPL SIMULATOR IN @V304635 00473000
  475. * PSW 00474000
  476. * 00475000
  477. * FOLLOWING ROUTINE FINDS THE ENTRY IN CP'S SWPTABLE FOR THE 00476000
  478. * IPL SIMULATOR - DMKVMI. AFTER IT FINDS THIS, A CALL 00477000
  479. * TO RPAGEGET - DMKRPAGT- IS MADE TO RELEASE USER PAGE, 00478000
  480. * IF IT IS IN STORAGE, AND BRING IN THE IPL SIMULATOR IN 00479000
  481. * ITS PLACE. THE USERS SWAPTABLE IS ALSO UPDATED TO POINT 00480000
  482. * TO THE IPL SIMULATORS PAGE ON DASD BY RPAGEGET. 00481000
  483. * 00482000
  484. * FOR 65K SEGMENTS - VIRT. ADDR. = | SEG | PG | DISP | 00483000
  485. * | 8 | 4 | 12 | 00484000
  486. * 00485000
  487. * 00486000
  488. GETVMI L R4,ASYSVM ADDRESS OF SYSTEM VMBLOK @VA13054 00487000
  489. L R4,VMSEG-VMBLOK(,R4) ADDRESS OF CP SEGTABLE @V304635 00488000
  490. L R2,=A(DMKVMI) ADDRESS OF THE IPL SIMULATOR @V304635 00489000
  491. SRDL R2,16 SEGMENT TO LOW ORDER OF GPR2, @V304635 00490000
  492. * PAGE TO GPR3 00491000
  493. SLL R2,2 SET UP R2 TO INDEX INTO SEGTABLE @V304635 00492000
  494. AR R4,R2 GPR4 NOW POINTS TO THE ADDRESS @V304635 00493000
  495. * OF PAGETBL 00494000
  496. L R4,0(,R4) GPR4 NOW CONTAINS ADDRESS OF @V304635 00495000
  497. * PAGE TABLE 00496000
  498. N R4,=A(X'FFFFFE') CLEAR UNWANTED BITS @V408246 00497000
  499. SRL R3,25 SET PAGE NUMBER *8 @V304635 00498000
  500. S R4,F4 POINT TO SWPTABLE POINTER @V304635 00499000
  501. L R4,0(,R4) GPR4 NOW ADDRESSES THE CP @V304635 00500000
  502. * SWPTABLE 00501000
  503. L R0,PAGCORE-PAGSWP(R3,R4) PICK DASD ADDRESS OF @VM03100 00502000
  504. * IPL SIMULATOR 00503000
  505. * IF MSS DEVICE, IT IS POSSIBLE R1-IPL PAGE ADDR WAS ZEROED 00503500
  506. L R1,VMPSW+4 GET ADDR OF IPL PAGE @VA13054 00503900
  507. CALL DMKRPAGT,PARM=BRING @V304635 00504000
  508. BNZ CFG174 IF GET I/O ERROR, GET OUT @V304635 00505000
  509. SR R1,R1 PAGE ZERO @V304635 00506000
  510. TRANS 2,1,OPT=(BRING,DEFER) BRING IN USER PAGE ZERO @V304635 00507000
  511. L R1,SAVEWRK2 LOAD VADDR @V304635 00508000
  512. CALL DMKSCNVU FIND VBLOKS @V304635 00509000
  513. BNZ CHKMOUNT COULD BE A MSS DEVICE WITH AN @VA13054 00510500
  514. * OUTSTANDING MOUNT PENDING 00510700
  515. USING USERSTOR,R2 @VM03100 00511000
  516. MVC DEVAREA,SAVEWRK2+2 IPL DEVICE ADDRESS TO PAGE @VM03100 00512000
  517. * ZERO 00513000
  518. MVC MSGBYTE,VMMLEVEL SAVE EMSGOR MSG STATE BYTE @VM03100 00514000
  519. MVC CYLAREA,SAVEWRK4+2 MOVE CYL-NO TO PAGE ZERO @VM03100 00515000
  520. MVI STOPBYTE,NOSTOP SPECIFY NO STOP FOR DEFAULT @VM03100 00516000
  521. TM SAVEWRK1,IPLST DID HE SPECIFY STOP ? @VM03100 00517000
  522. BZ IPLEXIT NO - CONTINUE AS USUAL @VM03100 00518000
  523. OI STOPBYTE,IPLSTOP INDICATE IPL STOP @VM03100 00519000
  524. IPLEXIT MVI VMPSW+1,X'00' TAKE OUT OF WAIT @VM03100 00520000
  525. IPLEXIT1 NI VMRSTAT,X'FF'-VMIOWAIT TAKE OFF WAIT @VM03100 00521000
  526. TM SAVEWRK1,FRMLOGON COME HERE FROM LOGON ??? @VM03100 00522000
  527. BO RETURN BRANCH IF SO @VM03100 00523000
  528. TM SAVEWRK1+2,LOADFLG+PURFLG+FINDFLG @VM03100 00524000
  529. BNZ RETURN YES, RETURN NORMALLY (PSW WAS @VM03100 00525000
  530. * NOT CHANGED) 00526000
  531. L R5,SAVERETN LOAD CFM'S RETURN ADDRESS @VM03100 00527000
  532. LA R5,RETPLUS4(,R5) BUMP BY 4 TO ALLOW VM TO RUN @VM03100 00528000
  533. ST R5,SAVERETN STORE BACK @V304635 00529000
  534. B RETURN EXIT TO CALLER @V304635 00530000
  535. CHKMOUNT EQU * @VA13054 00531020
  536. * 00531040
  537. * AT THIS POINT WE ARE ABOUT TO RETURN TO THE CALLER 00531060
  538. * WITH A CONDITION CODE 3 (DEVICE NOT AVAILABLE). 00531080
  539. * IF THE MSS IS IN THE SYSTEM, THE DEVICE MAY 00531100
  540. * BE "NOT AVAILABLE" BECAUSE AN MSS MOUNT IS IN 00531120
  541. * PROCESS. IF THAT IS THE CASE, STACK THIS VIRTUAL 00531140
  542. * REQUEST UNTIL THE MOUNT COMPLETES. 00531160
  543. * 00531180
  544. TM PSAMSS,MSSPRES IS THE MSS IN THIS SYSTEM @VA13054 00531200
  545. BZ CFG040 NO, THEN THE DEVICE DOES EXIST @VA13054 00531220
  546. L R2,SAVEWRK2 GET IPL VADRR @VA13054 00531240
  547. L R3,=V(DMKSSSMQ) WAIT Q FOR MSS MOUNTS @VA13054 00531260
  548. L R3,0(R3) PICK UP ACTUAL QUEUE @VA13054 00531280
  549. USING OSVSCOM,R3 ASSEMBLER ADDRESSABILITY @VA13054 00531300
  550. TESTCOM EQU * IS THERE A MSSCOM BLOCK @VA13054 00531320
  551. LTR R3,R3 IS THE CHAIN PTR 0 @VA13054 00531340
  552. BZ CFG040 YES, WERE NOT WAITING ON MSS @VA13054 00531360
  553. CLC VMUSER(VMUSERL),MSSUSER ARE WE WAITING @VA13054 00531380
  554. BNE NXTCOM NOT ON THIS BLOCK @VA13054 00531400
  555. L R4,MSSTASK1 TASK THAT IS WAITING @VA13054 00531420
  556. CH R2,CPEXMISC-CPEXBLOK(R4) VIRT DEV WAITING @VA13054 00531440
  557. BNE NXTCOM THIS VIRT DEV NOT WAITING @VA13054 00531460
  558. LA R0,CPEXSIZE SIZE OF A CPEXBLOK @VA13054 00531480
  559. CALL DMKFREE GET DYNAMIC STORAGE @VA13054 00531500
  560. USING CPEXBLOK,R1 @VA13054 00531520
  561. ST R1,MSSTASK3 @VA13054 00531540
  562. STM R0,R15,CPEXREGS SAVE REGS FOR LATER DISPATCH @VA13054 00531560
  563. LA R0,MSSRETRN RE-DISPATCH ADDRESS @VA13054 00531580
  564. ST R0,CPEXADD FIELD FOR DISPATCHER LATER @VA13054 00531600
  565. ST R2,CPEXMISC SAVE VADDR WHICH IS WAITING @VA13054 00531620
  566. LR R2,R12 GET MODULE ADDRESS FOR LOCK @VA13054 00531640
  567. CALL DMKPTRLK PAGEABLE MODULE - BETTER LOCK IT @VA13054 00531660
  568. GOTO DMKDSPCH WAIT FOR THE MSS @VA13054 00531680
  569. DROP R1 @VA13054 00531700
  570. NXTCOM EQU * GET NEXT MSSCOM BLOCK @VA13054 00531720
  571. L R3,MSSNEXT CHAIN PTR @VA13054 00531740
  572. B TESTCOM SEE IF THERE IS ONE @VA13054 00531760
  573. DROP R3 @VA13054 00531780
  574. MSSRETRN LR R2,R12 ALSO NEED BASE ADDR TO UNLOCK @VA13054 00531800
  575. CALL DMKPTRUL GO UNLOCK PAGE @VA13054 00531820
  576. B GETVMI MAKE IT LOOK LIKE WE NEVER LEFT @VA13054 00531840
  577. EJECT 00531860
  578. IPLBYNAM LM R1,R2,SAVEWRK2 LENGTH AND ADDRESS OF REQUESTED @V304635 00532000
  579. * NAME 00533000
  580. BCTR R1,0 MINUS ONE ON LENGTH FOR EX @V304635 00534000
  581. CL R1,F7 NAME OVER EIGHT CHARACTERS ???? @V304635 00535000
  582. BH CFG044A SEND ERROR MESSAGE IF IT IS @V304635 00536000
  583. MVC SAVEWRK2(L'SAVEWRK2+L'SAVEWRK3),BLANKS BLANK @VM03100 00537000
  584. * WORK AREA 00538000
  585. EX R1,MOVENAME MOVE NAME INTO WORK AREA @V304635 00539000
  586. SPACE 00540000
  587. LOADSYS DS 0H @V408246 00541000
  588. TM VMRSTAT,VMLOGOFF OTHER ACTIVITY STARTED? @V408246 00542000
  589. BO CFG001 YES, GET OUT AS FAST AS POSSIBLE @V408246 00543000
  590. BAL R5,GETSNTBL GET THE SYSTEM NAME TABLE @V408246 00544000
  591. USING SYSTBL,R4 ADDRESSABIILTY @V304635 00545000
  592. * GPR4 - WILL HOLD THE ADDRESS OF THE SYSTABLE THROUGH OUT 00546000
  593. * THE NAMED SYSTEM PROCESSING. 00547000
  594. SPACE 1 00548000
  595. NAMELOOP CLC SYSNAME,SAVEWRK2 COMPARE THE NAMES @VM03100 00549000
  596. BE NAMEHIT BRANCH IF HAVE A MATCH @V304635 00550000
  597. L R3,SYSPNT LOAD DISPLACEMENT TO NEXT @V304635 00551000
  598. * SYSTABLE ENTRY 00552000
  599. AR R4,R3 GET ACTUAL LOCATION ADDRESS OF @V304635 00553000
  600. * NEXT ENTRY 00554000
  601. LTR R3,R3 LAST ENTRY ??? @V304635 00555000
  602. BZ CFG044 CAN'T FIND NAME IN TABLE @V304635 00556000
  603. B NAMELOOP NO - GO TRY AGAIN @V304635 00557000
  604. SPACE 00557500
  605. NAMEHIT DS 0H @VA11699 00558000
  606. TM SAVEWRK1+2,LOADFLG ARE WE HERE ON A LOADSYS? @VA11699 00558500
  607. BO CKVOL YES, NO NEED TO CLEAN UP @VA11699 00559000
  608. TM SAVEWRK1,FRMLOGON ENTERED FROM LOGON??? @VA11699 00559500
  609. BO NOPGS YES, NO NEED TO CLEAN UP @VA11699 00560000
  610. SR R2,R2 PARM FOR DMKPGS @VA11699 00560500
  611. CALL DMKPGSPO @VA11699 00561000
  612. NOPGS DS 0H @VA11699 00561500
  613. L R5,VMSTOR FOR IPL, CHECK STORAGE SIZE @V304635 00562000
  614. CL R5,SYSSIZE COMPARE TO MIN. SIZE FROM @V304635 00563000
  615. * SYSTABLE 00564000
  616. BL CFG170 CORE NOT BIG ENOUGH @V304635 00565000
  617. CKVOL LH R1,SYSVADDR LOAD VIRTUAL ADDRESS OF SYSRES @V304635 00566000
  618. LTR R1,R1 REQUESTED 'IGNORE' VOLUME CHECK ?@V304635 00567000
  619. BM SKIPVOL IF 'FFFF' - DON'T CHECK FOR @V304635 00568000
  620. * MOUNTED 00569000
  621. LA R1,VSYSRES ADDR. FOR VOL. SER. OF VIRT. @V304635 00570000
  622. * SYSRES 00571000
  623. LA R0,L'VSYSRES SERIAL LENGTH @VM03100 00572000
  624. CALL DMKSCNVS SEARCH FOR VOLUME @V304635 00573000
  625. BNZ NOSYSRES 'VSYSRES' NOT MOUNTED @VM03201 00574000
  626. SPACE 00575000
  627. LR R5,R1 R5 NOW CONTAINS RDEVBLOK FOR @V304635 00576000
  628. * SYSRES 00577000
  629. LH R1,SYSVADDR LOAD VIRTUAL ADDRESS OF SYSRES @V304635 00578000
  630. CALL DMKSCNVU SEE IF THERE @V304635 00579000
  631. BNZ BLD173 ERROR IF NOT FOUND @VM03201 00580000
  632. SPACE 00581000
  633. USING VDEVBLOK,R8 @V304635 00582000
  634. SPACE 00583000
  635. LH R1,SYSCYL LOAD CYLINDER DISPLACEMENT @V304635 00584000
  636. CH R1,VDEVRELN DOES IT MATCH THIS DEVICE ??? @V304635 00585000
  637. BNE BLD172 NO - INCOMPATIBLE 'VSYSRES' @VM03201 00586000
  638. L R8,VDEVREAL LOAD ADDRESS OF RDEVBLOK @V304635 00587000
  639. USING RDEVBLOK,R8 @V304635 00588000
  640. CLC VSYSRES,RDEVSER IS VADDR ON THE RIGHT @VM03100 00589000
  641. * VOLUME ???? 00590000
  642. BNE BLD172 NOPE - @VM03201 00591000
  643. DROP R8 @V304635 00592000
  644. SPACE 00593000
  645. SKIPVOL LA R1,SYSVOL ADDRESS OF VOL. SERIAL FOR SYSVOL@V304635 00594000
  646. LA R0,L'SYSVOL SERIAL LENGTH @VM03100 00595000
  647. CALL DMKSCNVS SEARCH FOR THIS VOLUME @V304635 00596000
  648. BNZ NOSYSVOL SYSVOL NOT MOUNTED @V304635 00597000
  649. SPACE 00598000
  650. USING RDEVBLOK,R1 @V304635 00599000
  651. SPACE 00600000
  652. TM RDEVFLAG,RDEVOWN MAKE SURE DISK IS CPOWNED @V304635 00601000
  653. BZ NOSYSOWN IF NOT, CAN'T DO IT @V407511 00602000
  654. L R5,SYSSTART LOAD CCPD FOR START OF SYSTEM @V304635 00603000
  655. * ON SYSVOL 00604000
  656. IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST @V304635 00605000
  657. * FOR SYSVOL 00606000
  658. LA R0,PAGE2314 MAXIMUM PAGES/CYL ON 2314 @VM03100 00607000
  659. TM RDEVTYPE,TYP2314 IS THIS 2314 ???? @V304635 00608000
  660. BO SAVMAXPG YES ----- @V304635 00609000
  661. LA R0,PAGE3330 MAXIMUM PAGES/CYL ON 3330 @VM03100 00610000
  662. TM RDEVTYPE,TYP3330 IS IT ???? @V304635 00611000
  663. BO SAVMAXPG YES ----- @V304635 00612000
  664. LA R0,PAGE3350 MAXIMUM PAGES/CYL ON 3350 @VM03100 00613000
  665. CLI RDEVTYPE,TYP3350 IS IT ???? @V304498 00614000
  666. BE SAVMAXPG YES ----- @V304498 00615000
  667. LA R0,PAGE3375 Maximum pages/cyl on 3375 HRC106DK 00615100
  668. TM RDEVTYPE,TYP3375 Is this a 3375 HRC106DK 00615200
  669. BO SAVMAXPG Yes ----- HRC106DK 00615300
  670. LA R0,PAGE3380 Maximum pages/cyl on 3380 HRC106DK 00615400
  671. TM RDEVTYPE,TYP3380 Is this a 3380 HRC106DK 00615500
  672. BO SAVMAXPG Yes ----- HRC106DK 00615600
  673. LA R0,PAGE2305 PAGES/CYL FOR 2305 AND 3340 @VM03100 00616000
  674. SPACE 00617000
  675. SAVMAXPG SLL R0,8 SET UP FOR LATER COMPARE @V304635 00618000
  676. ST R0,SAVEWRK5 STORE IT AWAY FOR LATER USE @V304635 00619000
  677. SPACE 00620000
  678. DROP R1 @V304635 00621000
  679. SPACE 00622000
  680. * THE FOLLOWING CODE WILL TRANS IN THE FIRST SAVED DASD PAGE 00623000
  681. * FROM SYSVOL. THIS PAGE CONTAINS THE SAVED PSW,REGISTERS, 00624000
  682. * AND KEYS. THE VMBLOK IS THEN UPDATED WITH THIS SAVED DATA. 00625000
  683. * THEN THE SWPTABLES ARE UPDATED WITH THE SAVED KEYS 00626000
  684. * AND THE CCPD'S FOR SYSVOL. 00627000
  685. * REGISTER USAGE IN THIS ROUTINE ARE AS FOLLOWS: 00628000
  686. * GPR3 - INDEX COUNT TO STEP THRU SYSPAGNM ENTRIES 00629000
  687. * GPR4 - ADDRESS OF PROPER SYSTABLE ENTRY 00630000
  688. * GPR5 - CCPD OF CURRENT PAGE ON SYSVOL 00631000
  689. * GPR6 - CONSTANT USED TO INCREMENT CCPD IN R5 00632000
  690. * GPR7 - COUNT OF SYSPAGNM ENTRIES LEFT TO PROCESS 00633000
  691. * GPR8 - CURRENT PAGE ADDRESS 00634000
  692. * GPR9 - ENDING PAGE ADDRESS(OF SYSPAGNM ENTRY BEING PROCESSED) 00635000
  693. * GPR 10 -ADDRESS OF 1ST SAVED PAGE 00636000
  694. SPACE 3 00637000
  695. TM SAVEWRK1+2,LOADFLG LOADSYS COMMAND @V304635 00638000
  696. BO PAGRELCK YES - RELEASE THE ORIGINAL PAGES @V304735 00639000
  697. LH R1,SYSPAGLN CALC. ADDR. OF SYSHRSEG @V304735 00640000
  698. SLL R1,2 TIMES FOUR @V407511 00641000
  699. LA R1,SYSPAGNM(R1) R1 = POINTER TO SYSSEGLN @V304735 00642000
  700. USING SYSSEGLN,R1 @V304735 00643000
  701. LH R1,SYSSEGLN TEST FOR SHARED NAMED SYSTEM @V304735 00644000
  702. LTR R1,R1 IPL'ING A SHARED SYSTEM? @V304735 00645000
  703. BZ SKIPREL IF NOT - BYPASS PAGE RELEASE @V304735 00646000
  704. DROP R1 @V304735 00647000
  705. PAGRELCK LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V304735 00648000
  706. SLR R3,R3 CLEAR @V304635 00649000
  707. PAGRELNM LH R1,SYSPAGNM(R3) GET BEGINNING PAGE ADDRESS @V304635 00650000
  708. SRL R1,4 FORCE LOGICAL PAGE ZERO @VA07252 00651200
  709. SLL R1,16 FORM FULL PAGE ADDRESS @VA07252 00651400
  710. LH R2,SYSPAGNM+2(R3) GET ENDING PAGE ADDRESS @V304635 00652000
  711. O R2,F15 MAKE IT A COMPLETE SEGMENT @VA07252 00652500
  712. SLL R2,12 FORM ENDING PAGE ADDRESS @V304635 00653000
  713. CALL DMKPGSPR RELEASE PAGES FROM RANGE IN R1-R2@VA04764 00654000
  714. LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM @VM03100 00655000
  715. BCT R7,PAGRELNM RELEASE ALL PAGES REFERENCED IN @V304635 00656000
  716. * SYSTABLE 00657000
  717. SPACE 1 00658000
  718. LM R1,R2,SYSNAME IDENT. OF NAMED SYSTEM @V304635 00659000
  719. CALL DMKPGSPS PURGE THE NAMED SYSTEM @V304635 00660000
  720. LH R7,SYSPAGLN RESTORE NUMBER ENTRIES IN @V304635 00661000
  721. * SYSTABLE 00662000
  722. SLR R3,R3 CLEAR INDEX REGISTER @V304635 00663000
  723. PAGBLDTB L R1,SYSPAGNM(R3) BUILD NECESSARY PAGE TABLES @V304635 00664000
  724. N R1,=X'FFF0FFFF' RESET FIRST PAGE NUMBER @V304635 00665000
  725. LR R2,R1 SAVE BLD PARM @V408246 00666000
  726. N R2,XRIGHT16 ISOLATE ENDING PAGE NO. @V408246 00667000
  727. LA R2,1(,R2) ENDING PAGE NO. (BASE 1) @V408246 00668000
  728. SLL R2,12 ENDING ADDRESS @V408246 00669000
  729. CL R2,VMSTOR ENDING ADDRESS > STORE SIZE? @V408246 00670000
  730. BNH NXTSYS NO, DONE @V408246 00671000
  731. CALL DMKBLDRT,PARM=OLDVMSEG+KEEPSEGS+NEWPAGES @V304635 00672000
  732. N R1,XRIGHT16 CLEAR OUT FIRST ADDRESS @V304635 00673000
  733. SLL R1,12 GET A FULL ADDRESS @V304635 00674000
  734. AL R1,F4096 PLUS 1 MORE PAGE @V304635 00675000
  735. CL R1,VMSIZE IS NEW ADDRESS > OLD ? @V304635 00676000
  736. BNH NXTSYS NO - LEAVE AS IS @VM03097 00677000
  737. ST R1,VMSIZE SAVE NEW STORAGE SIZE @V304635 00678000
  738. NXTSYS LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM @VM03100 00679000
  739. BCT R7,PAGBLDTB PROCESS ALL ENTRIES @V304635 00680000
  740. SPACE 1 00681000
  741. SKIPREL LH R1,SYSPAGNM USERS 1ST SAVED PAGE @V304635 00682000
  742. SLL R1,12 FORM PAGE ADDRESS @V304635 00683000
  743. LR R10,R1 SAVE COPY IN R10 @V304635 00684000
  744. LR R0,R5 CCPD @V304635 00685000
  745. CALL DMKRPAGT,PARM=BRING ... @V304635 00686000
  746. BNZ NAMPERR1 CLEAR UP TABLES AND EXIT @VA05638 00687000
  747. SPACE 00688000
  748. USING SAVTABLE,R2 @V304635 00689000
  749. TM SAVEWRK1+2,LOADFLG ENTRY FOR LOADSYS ? @V304635 00690000
  750. BO KEYMOVE YES, THEN JUST MOVE KEYS @V304635 00691000
  751. SPACE 00692000
  752. MVC VMPSW,SAVPSW UPDATE PSW IN VMBLOK @VM03100 00693000
  753. MVC VMFPRS(L'VMFPRS*4),SAVFPRES FLOATING POINT @VM03100 00694000
  754. * REGISTERS 00695000
  755. TM SAVEWRK1,PARMFND CAN WE RESTORE ALL THE REGS @V304635 00696000
  756. BZ MOVEGPRS YES - GO TO IT @V304635 00697000
  757. SLR R1,R1 ZERO REG @V304635 00698000
  758. LA R0,L'SAVGREGS*16 LOAD MAX NUM OF BYTES CAN MOVE @VM03100 00699000
  759. IC R1,SAVEWRK1+3 LOAD THE PARM CHARACTER COUNT @V304635 00700000
  760. LA R14,VMGPRS(R1) BUMP PAST PARM FIELD IN VMBLOK @V304635 00701000
  761. LA R15,SAVGREGS(R1) BUMP TO START OF RESTORABLE @V304635 00702000
  762. * REGS 00703000
  763. SR R0,R1 GET BYTE COUNT @V304635 00704000
  764. LTR R1,R0 INTO R1 @V304735 00705000
  765. BZ TESTEC IF MAX. ON PARM (64) - SKIP MOVE @V304735 00706000
  766. BCTR R1,0 FOR EXECUTED MOVE @V304635 00707000
  767. EX R1,MOVGPRS RESTORE GPRS @V304635 00708000
  768. B TESTEC AND CONTINUE @V304635 00709000
  769. MOVEGPRS EQU * @V304635 00710000
  770. MVC VMGPRS(L'VMGPRS*16),SAVGREGS RESTORE ALL REGS @VM03100 00711000
  771. TESTEC EQU * @V304635 00712000
  772. TM VMPSTAT,VMV370R DO WE HAVE CONTROL REGS ??? @V304635 00713000
  773. BZ KEYMOVE NO - GO DO THE KEYS @V304635 00714000
  774. L R14,VMECEXT ADR OF VM ECBLOK @V304635 00715000
  775. USING ECBLOK,R14 @V304635 00716000
  776. SPACE 00717000
  777. MVC EXTCR0(L'EXTCR0*16),SAVCREGS RESTORE @VM03100 00718000
  778. * CONTROL REGISTERS 00719000
  779. DROP R14 @V304635 00720000
  780. SPACE 00721000
  781. KEYMOVE L R0,SYSPAGCT LOAD NUMBER OF SAVED PAGES @V304635 00722000
  782. SRL R0,2 DIVIDE BY 4 @V304635 00723000
  783. AH R0,F1+2 ADJUST FOR POSSIBLE LOST BITS @V304635 00724000
  784. ST R0,SAVEWRK9 SAVE THIS NUMBER FOR FRET @V304635 00725000
  785. CALL DMKFREE GET CORE @V304635 00726000
  786. SR R0,R0 ZIP THIS REGISTER @V304635 00727000
  787. STM R0,R1,SAVEWRK2 SAVE FOR LATER USE @V304635 00728000
  788. LR R14,R1 BUFFER ADDRESS TO R14 @V304635 00729000
  789. L R7,SYSPAGCT LOAD NUMBER OF PAGES @V304635 00730000
  790. AR R7,R7 TIMES TWO (2 KEYS PER PAGE ) @V304635 00731000
  791. LR R15,R7 BYTES COUNTS ARE NOW SET UP FOR @V304635 00732000
  792. * MVCL 00733000
  793. LA R6,SAVKEYS ADDRESS OF THE SAVED KEYS @V304635 00734000
  794. MVCL R14,R6 NOW MOVE THE KEYS TO THE BUFFER @V304635 00735000
  795. SPACE 00736000
  796. DROP R2 @V304635 00737000
  797. TM VMPSW+1,EXTMODE IS VM IN EXTENDED MODE @V60BC11 00737100
  798. BZ ZEROR3 NO, OK TO IPL SHARED @V60BC11 00737200
  799. TM VMPSW,TRANMODE IS VM IN TRANSLATE MODE @V60BC11 00737300
  800. BZ ZEROR3 NO, OK TO IPL SHARED @V60BC11 00737400
  801. OI SAVEWRK1+2,NONSHARE YES, FORCE NONSHARED IPL @V60BC11 00737500
  802. SPACE 00738000
  803. * NOW SET UP THE SWPTABLES WITH THE SAVED DATA... 00739000
  804. SPACE 00740000
  805. ZEROR3 SR R3,R3 WILL BE USED TO INDEX THRU @V304635 00741000
  806. * SYSPAGNM ENTRIE 00742000
  807. L R6,F256 INCREMENT CONSTANT FOR CCPD'S @V304635 00743000
  808. LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V304635 00744000
  809. SPACE 00745000
  810. PAGLOOP L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @V304635 00746000
  811. SRDL R8,16 START PAGE TO LOW ORDER OF R8 @V304635 00747000
  812. SRL R9,16 END PAGE TO LOW ORDER OF R9 @V304635 00748000
  813. SLL R8,12 FORM PAGE ADDRESS @V304635 00749000
  814. SLL R9,12 END PAGE ADDRESS @V304635 00750000
  815. SWAPLOOP AR R5,R6 BUMP TO NEXT CCPD @V304635 00751000
  816. LR R1,R5 CCPD TO R1 @V304635 00752000
  817. N R1,=X'0000FF00' SAVE ONLY PAGE NUMBER @V304635 00753000
  818. CL R1,SAVEWRK5 NEED WE BUMP TO NEXT CYLINDER @V304635 00754000
  819. * ???? 00755000
  820. BNH CKPAG NOT YET ----- @V304635 00756000
  821. A R5,=X'00010000' ADD ONE TO CYLINDER NUMBER @V304635 00757000
  822. ICM R5,B'0010',F1+3 RESET PAGE NUMBER TO ONE @VM03100 00758000
  823. SPACE 00759000
  824. CKPAG CR R8,R10 PROCESSING 1ST SAVED PAGE @V304635 00760000
  825. BNE SWAPCONT NO- CONTINUE @V304635 00761000
  826. LR R1,R10 BRING IN 1ST PAGE TO OVERLAY @V304635 00762000
  827. * THE SAVED DATA(PSW,REGS,ANDKEYS) 00763000
  828. LR R0,R5 PROPER CCPD FOR PAGE ZERO(SAVED) @V304635 00764000
  829. CALL DMKRPAGT,PARM=0 @V304635 00765000
  830. BNZ NAMPERR2 CLEAR UP TABLES AND EXIT @VA05638 00766000
  831. SPACE 00767000
  832. SWAPCONT DS 0H @V408246 00768000
  833. LR R2,R8 PAGE ADDRESS @V408246 00769000
  834. SRL R2,16 SEGMENT NO. ONLY @V408246 00770000
  835. ALR R2,R2 SEGMENT NO. * 4 FOR INDEX @V408246 00771000
  836. ALR R2,R2 . . @V408246 00772000
  837. AL R2,VMSEG STE POINTER @V408246 00773000
  838. TM 3(R2),SEGINV SEGMENT OK? @V408246 00774000
  839. BZ SWAPCNTA YES @V408246 00775000
  840. TRANS 2,8,OPT=DEFER NO, LET PTR RESOLVE @V408246 00776000
  841. B SWAPCONT AND THEN RETRY @V408246 00777000
  842. SWAPCNTA DS 0H @V408246 00778000
  843. L R2,0(,R2) POINT TO PAGTABLE @V304635 00779000
  844. N R2,=A(X'FFFFFE') CLEAR UNWANTED BITS @V408246 00780000
  845. LR R1,R8 VIRTUAL ADDRESS @V408246 00781000
  846. SRL R1,12 PAGE NO. @V408246 00782000
  847. N R1,F15 PAGE NO. WITHIN SEGMENT @V408246 00783000
  848. SLL R1,3 PAGE NO. *8 FOR SWAPTABLE ENTRY @V408246 00784000
  849. * INDEX 00785000
  850. LA R2,16*2+8(R1,R2) POINT TO SWAPTABLE ENTRY @V408246 00786000
  851. LM R0,R1,SAVEWRK2 INDEX AND ADDRESS OF KEYS @V304635 00787000
  852. AR R1,R0 POINT TO PROPER SET OF KEYS @V304635 00788000
  853. A R0,F2 ADD TO INDEX FOR NEXT GO AROUND @V304635 00789000
  854. ST R0,SAVEWRK2 SAVE IT @V304635 00790000
  855. SPACE 00791000
  856. USING SWPFLAG,R2 @V304635 00792000
  857. SPACE 00793000
  858. MVC SWPKEY1(L'SWPKEY1+L'SWPKEY2),0(R1) MOVE KEYS @VM03100 00794000
  859. * TO SWPTABLE 00795000
  860. ST R5,SWPCYL STORE CCPD @V304635 00796000
  861. OI SWPFLAG,SWPCHG1 TURN ON CHANGE BIT @V408246 00797000
  862. A R8,F4096 BUMP PAGE ADDRESS @V304635 00798000
  863. CR R8,R9 THIS PAGNM ENTRY COMPLETE????? @V304635 00799000
  864. BH TSTPAGLN BRANCH IF YES @V304635 00800000
  865. B SWAPLOOP NO - KEEP GOING @V304635 00801000
  866. SPACE 2 00802000
  867. TSTPAGLN A R3,F4 BUMP INDEX TO NEXT SYSPAGNM ENTRY@V304635 00803000
  868. BCT R7,PAGLOOP PROCESS NEXT ENTRY (IF ANY) @V304635 00804000
  869. L R0,SAVEWRK9 LOAD SIZE OF BUFFER @V304635 00805000
  870. L R1,SAVEWRK3 ADDRESS OF BUFFER @V304635 00806000
  871. CALL DMKFRET ..... @V304635 00807000
  872. EJECT 00808000
  873. * NOW DO THE SHARED SEGMENT BIT 00809000
  874. * 00810000
  875. * THERE CAN BE THREE CONDITIONS ON SEGMENTS ON A SAVED SYSTEM. 00811000
  876. * ONE - THERE ARE NO SHARED SEGMENTS, THEREFORE WE ARE FINISHED 00812000
  877. * WITH THE NAMED IPL. 00813000
  878. * SECOND - THE NAMED SYSTEM IPL'ED MAY HAVE BEEN PREVIOUSLY 00814000
  879. * IPL'ED, THUS, A SHRTABLE HAS ALREADY BEEN BUILT FOR THE 00815000
  880. * SHARED SEGMENTS. THIS SHRTABLE WILL HAVE TO BE UPDATED AND 00816000
  881. * SEGTABLES ALTERED TO POINT TO THE EXISTING SHARED PAGTABLES. 00817000
  882. * ALSO THE PAG AND SWPTABLES THAT ARE NOT GOING TO BE 00818000
  883. * USED MUST BE FRET'ED. 00819000
  884. * THIRD - THE NAMED SYSTEM ISN'T IN USE. THE SWPTABLES FOR THE 00820000
  885. * SHARED SEGMENTS MUST BE FLAGGED AS SHARED AND A SHRTABLE MUST 00821000
  886. * BE BUILT AND PLACED ON THE CHAIN OF SHRTABLES. 00822000
  887. * NOTE - IN THE SECOND AND THIRD CASES, IF THE USER HAD V.M. 00823000
  888. * INSTRUCTION AND|OR BRANCH TRACING IN EFFECT, IT IS RESET, AS 00824000
  889. * THIS OPTION IS INVALID FOR A SHARED SYSTEM. IF ANY TRACING 00825000
  890. * FLAGS ARE STILL ON, THE MODIFIED TRACING IS LEFT IN EFFECT; 00826000
  891. * BUT IF ALL FLAGBITS ARE NOW CLEAR, ALL TRACING IS TERMINATED 00827000
  892. * AND A 'TRACE ENDED' MESSAGE IS SENT TO THE USER TO NOTIFY HIM 00828000
  893. * THAT HIS PREVIOUS TRACING IS NO LONGER IN EFFECT. 00829000
  894. SPACE 3 00830000
  895. LH R6,SYSPAGLN CALCULATE ADDRESS OF SYSHRSEG @V304635 00831000
  896. * ENTRIES 00832000
  897. SLL R6,2 TIMES FOUR @V4M0179 00833000
  898. LA R6,SYSPAGNM(R6) R6 NOW POINTS TO SYSSEGLN @V304635 00834000
  899. SPACE 00835000
  900. USING SYSSEGLN,R6 @V304635 00836000
  901. SPACE 00837000
  902. LH R3,SYSSEGLN NUMBER OF SYSHRSEG ENTRIES @V304635 00838000
  903. LTR R3,R3 ANY ENTRIES ??? @V304635 00839000
  904. BZ BLDNSHR BRANCH IF NO SHARED SEGMENTS @V304635 00840000
  905. TM SAVEWRK1+2,NONSHARE REQUEST FOR NON-SHARE MODE @V304635 00841000
  906. BO BLDNSHR YES - SKIP SHARED PROCESSING. @V304635 00842000
  907. SPACE 2 00843000
  908. SR R8,R8 ZERO INDEX REGS @V304635 00844000
  909. SR R9,R9 .............. @V304635 00845000
  910. SPACE 00846000
  911. * SCAN TO SEE IF SHRTABLE ALREADY EXISTS 00847000
  912. L R2,=A(DMKVMAS1) ADDRESS OF SHRTABLE ANCHOR @VM03171 00848000
  913. L R5,0(,R2) ADDRESS OF SHRTABLE @V304635 00849000
  914. SPACE 00850000
  915. USING SHRTABLE,R5 @V304635 00851000
  916. SPACE 00852000
  917. SHRTSCAN CR R5,R2 END OF CHAIN ??? @V304635 00853000
  918. BE SHRTBLD BRANCH IF IT IS @V304635 00854000
  919. CLC SYSNAME,SHRNAME DO WE HAVE A MATCH ???? @VM03100 00855000
  920. BE SHRTFND BRANCH IF FOUND ONE @V304635 00856000
  921. L R5,SHRFPNT ADDRESS OF NEXT SHRTABLE @V304635 00857000
  922. LA R5,0(,R5) CLEAR FLAG BYTE @V60BC11 00857100
  923. B SHRTSCAN KEEP TRYING !!! @V304635 00858000
  924. EJECT 00859000
  925. * THIS ROUTINE TO HANDLE THE CONDITION WHERE A SHRTABLE ALREADY 00860000
  926. * EXISTS. 00861000
  927. SPACE 00862000
  928. SHRTFND EQU * @V304635 00863000
  929. SPACE 00864000
  930. * NOW STEP THRU SHRPAGE AND SYSHRSEG ADJUSTING SEGTABLES 00865000
  931. SPACE 00866000
  932. LR R14,R3 NUMBER OF SEGMENTS TO R14 @V304635 00867000
  933. LA R8,SHRSEGNM SET UP TO FIND ADDRESS OF FIRST @V304635 00868000
  934. * SHRPAGE 00869000
  935. SPACE 00870000
  936. FNDSHRPG LA R8,L'SHRPAGE(,R8) GET NEXT POSSIBLE SHRPAGE @VM03100 00871000
  937. * ADDRESS 00872000
  938. S R14,F4 MINUS FOUR(UP TO FOUR SEG. @V304635 00873000
  939. * NUMS. TO WORD) 00874000
  940. BP FNDSHRPG BRANCH BACK IF MORE SEGMENT @V304635 00875000
  941. * NUMBERS 00876000
  942. SPACE 00877000
  943. USING SHRPAGE,R8 @V304635 00878000
  944. SPACE 00879000
  945. SHRSLOOP L R2,SHRPAGE LOAD ENTRY FROM SHRTABLE @V304635 00880000
  946. LR R7,R2 SAVE PTO @V408246 00881000
  947. SL R7,F16 BACK-UP TO HEADER @V408246 00882000
  948. LH R1,PAGTOT-PAGTABLE(,R7) INCREMENT @V408211 00883000
  949. LA R1,1(,R1) TOTAL SEGMENT USE COUNT @V408246 00884000
  950. STH R1,PAGTOT-PAGTABLE(,R7) @V408211 00885000
  951. TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V407511 00886000
  952. BZ SLOOP1 NO, DON'T HAVE TO UPDATE ATTACHED@V407511 00887000
  953. TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00887100
  954. BO SLOOP1 YES, SKIP AROUND @V60BC11 00887200
  955. STH R1,PAGBMP+PAGTOT-PAGTABLE(,R7) UPDATE ATTACHED @V407511 00888000
  956. * PAGTABLE TOTAL COUNT @V407511 00889000
  957. SLOOP1 DS 0H @V407511 00890000
  958. SR R7,R7 . . . @V304635 00891000
  959. IC R7,SYSHRSEG(R9) LOAD SEGMENT NUMBER FROM SYSTBL @V304635 00892000
  960. SLL R7,2 GET INDEX INTO SEGTABLE @V304635 00893000
  961. L R1,VMSEG LOAD ADDRESS OF SEGTABLE @V304635 00894000
  962. L R10,0(R7,R1) LOAD OLD SEGTABLE ENTRY @V304635 00895000
  963. O R2,F1 ASSURE SEGINV FLAG @V408246 00896000
  964. ST R2,0(R7,R1) STORE ENTRY FROM SHRTABLE @V304635 00897000
  965. LA R8,L'SHRPAGE(,R8) LOAD ADDRESS OF NEXT SHRPAGE @VM03100 00898000
  966. * ENTRY 00899000
  967. LA R9,SEGINDEX(,R9) BUMP SHRSEG INDEX @VM03100 00900000
  968. SPACE 00901000
  969. DROP R8 @V304635 00902000
  970. SPACE 00903000
  971. * NOW MUST FRET ORIGINAL PAGTABLE AND SWPTABLE 00905000
  972. SPACE 00906000
  973. LA R1,0(,R10) PTO @V408246 00907000
  974. SL R1,F16 BACK-UP TO SEGMENT HEADER @V408246 00908000
  975. LA R0,PAGBMP/8 NO. DBLWDS IN ORIGIN TABLES @VA07235 00909100
  976. L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00909200
  977. CLI 0(R15),YES Is AP enabled? HRC066DK 00909300
  978. BNE *+6 No HRC066DK 00909400
  979. AR R0,R0 Double table size for APHRC066DK 00909500
  980. CALL DMKFRET RETURN TABLES TO AVAILABLE @V408246 00913000
  981. * STORAGE 00914000
  982. L R15,PREFIXA PREFIX VALUE TO ADDRESS PSA @VA13356 00914100
  983. * AT ABSOLUTE 0 00914200
  984. L R0,TTSEGCNT-PSA(,R15) NUM OF PG/SWP TBLS IN SYS @VA13356 00914300
  985. BCTR R0,R0 DECREMENT PAG/SWP TABLE COUNT @VA13356 00914400
  986. ST R0,TTSEGCNT-PSA(,R15) STORE IT BACK IN PSA @VA13356 00914500
  987. BCT R3,SHRSLOOP DO NEXT ENTRY IF ANY @V304635 00915000
  988. B SETVMSHR GO CLEAN UP AND GET OUT @V304635 00916000
  989. EJECT 00917000
  990. * 00918000
  991. * THIS ROUTINE USED IF NO EXISTING SHRTABLE. WILL BUILD AND 00919000
  992. * PLACE IN CHAIN. 00920000
  993. * 00921000
  994. SPACE 00922000
  995. SHRTBLD EQU * @V304635 00923000
  996. LR R2,R3 NUMBER OF SHARED SEGMENTS TO R2 @V304635 00924000
  997. SR R7,R7 ZERO REG @V304635 00925000
  998. SPACE 00926000
  999. * NOW FIND SIZE OF SHRTABLE 00927000
  1000. LA R0,SHRSEGNM-SHRFPNT LOAD SIZE OF FIXED PART OF @V304635 00928000
  1001. * AHRTABE 00929000
  1002. SPACE 00930000
  1003. FINDSIZE A R0,F4 ADD ONE WORD FOR EACH FOUR @V304635 00931000
  1004. * SEGMENTS 00932000
  1005. LA R7,INDEX4(,R7) INDEX CONTANT FOR LATER USE @VM03100 00933000
  1006. S R2,F4 SUBTRACT 4 FROM NUMBER OF @V304635 00934000
  1007. * SEGMENTS LEFT 00935000
  1008. BP FINDSIZE BRANCH BACK IF MORE SEGMENTS @V304635 00936000
  1009. LR R2,R3 RELOAD R2 WITH NUMBER OF SEGMENTS@V304635 00937000
  1010. SLL R2,2 TIMES FOUR FOR EACH SHRPAGE ENTRY@V304635 00938000
  1011. AR R0,R2 NOW HAVE SIZE OF SHRTABLE IN @V304635 00939000
  1012. * BYTES 00940000
  1013. A R0,F7 ROUND UP TO NEXT EIGHT BYTES @V304635 00941000
  1014. SRL R0,3 CONVERT TO DOUBLE WORDS @V304635 00942000
  1015. LR R2,R0 SAVE SIZE @V304635 00943000
  1016. CALL DMKFREE GET STORAGE FOR SHRTABLE @V304635 00944000
  1017. LR R5,R1 POINT R5 TO SHRTABLE @V304635 00945000
  1018. LR R0,R2 SAVE SIZE OF SHRTABLE @V4M0179 00946000
  1019. SLL R2,3 TIMES 8 FOR ZEROING @V4M0179 00947000
  1020. BCTR R2,0 MINUS ONE FOR EXECUTE @VA07233 00947100
  1021. EX R2,ZEROSHR ZERO OUT THE SHRTABLE @V4M0179 00948000
  1022. STH R0,SHRTSIZE STORE SIZE OF THIS BLOCK @V4M0179 00949000
  1023. LA R8,4(,R8) INCREMENT SHRPAGE INDEX @V4M0179 00950000
  1024. MVC SHRNAME,SYSNAME MOVE NAME TO SHRTABLE @VM03100 00951000
  1025. ST R3,SHRSEGCT STORE COUNT OF SHARED SEGMENTS @V304635 00952000
  1026. TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00952100
  1027. BZ CONTCK NO @V60BC11 00952200
  1028. OI SHRFLAG,SHRNOPRT YES, SET SHRTABLE INDICATOR @V60BC11 00952300
  1029. CONTCK DS 0H @V60BC11 00952400
  1030. SPACE 00953000
  1031. * NOW STORE SEGMENT NUMBERS IN SHRTABLE 00954000
  1032. LR R2,R3 COUNT TO R2 @V304635 00955000
  1033. BCTR R2,0 MINUS ONE FOR EX @V304635 00956000
  1034. EX R2,MOVESEGS @V304635 00957000
  1035. LA R14,SHRSEGNM(R7) LOAD ADDRESS OF FIRST SHRPAGE @V304635 00958000
  1036. * ENTRY 00959000
  1037. SPACE 00960000
  1038. USING SHRPAGE,R14 @V304635 00961000
  1039. SPACE 00962000
  1040. SPACE 00963000
  1041. SLR R8,R8 ZERO SHRPAGE INDEX @V4M0183 00964000
  1042. SEGLOOP DS 0H 00965000
  1043. TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00965100
  1044. BO UPSEGLP YES, SKIP AROUND @V60BC11 00965200
  1045. * DETERMINE IF IT IS NECESSARY TO BUILD TWO SETS OF PAGE AND 00966010
  1046. * SWAP TABLES. THE MP FEATURE MUST BE INSTALLED AND THE SYSTEM MUST 00966060
  1047. * BE GENERATED FOR AP MODE. 00966110
  1048. TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED? @V5BC0AB 00966160
  1049. BNO UPSEGLP NO, BUILD ONE SET OF PGT/SWPT @V5BC0AB 00966210
  1050. L R7,CFGSYSAP EST. ADDRESSABILITY TO DMKSYSAP @V5BC0AB 00966260
  1051. CLI 0(R7),YES IS SYSTEM GENED FOR AP? @V5BC0AB 00966310
  1052. BE APSEGLP YES BUILD TWO SETS OF PGT/SWPT @V5BC0AB 00966360
  1053. UPSEGLP DS 0H @V5BC0AB 00966410
  1054. SLR R7,R7 CLEAR REGISTER 7 @V5BC0AB 00966460
  1055. IC R7,SYSHRSEG(R9) PICK UP NEXT SEGMENT NUMBER @V304635 00970000
  1056. SLL R7,2 INDEX INTO SEGTABLE @V304635 00971000
  1057. AL R7,VMSEG ADDRESS OF SEGTABLE @V408246 00972000
  1058. L R10,0(,R7) LOAD STE @V408246 00973000
  1059. OI 3(R7),SEGINV MAKE SURE INVALID ON @V408246 00974000
  1060. N R10,=AL4(X'FFFFFFFF'-SEGINV) CLEAR INVALID FLAG @V408246 00975000
  1061. ST R10,SHRPAGE(R8) STORE SEGTABLE ENTRY INTO @V304635 00976000
  1062. * SHRTABLE 00977000
  1063. LR R2,R10 PAGTABLE ADDRESS TO R2 @V304635 00978000
  1064. SRL R2,28 NUMBER OF PAGTABLE ENTRIES TO @V304635 00979000
  1065. * LOW ORDER 00980000
  1066. LA R2,ONE(,R2) PLUS ONE FOR COUNT LOOP @VM03100 00981000
  1067. SL R10,F16 BACK-UP TO HEADER @V408246 00982000
  1068. MVC 4(4,R10),F1 ACTIVE CNT = 0, TOTAL CNT. = 1 @V408246 00983000
  1069. ST R5,8(,R10) POINT TO SHRTABLE @V408246 00984000
  1070. MVC 16+16*2(4,R10),ASYSVM RE-ASIGN SEGMENT TO SYSTEM@V408246 00985000
  1071. LA R10,16+16*2+8(,R10) POINT TO 1ST SWAPTABLE ENTRY@V408246 00986000
  1072. SPACE 00987000
  1073. USING SWPFLAG,R10 @V304635 00988000
  1074. SPACE 00989000
  1075. FLAGLOOP OI SWPFLAG,SWPSHR TURN ON SHARE BIT @V304635 00990000
  1076. A R10,F8 BUMP TO NEXT SWP ENTRY @V304635 00991000
  1077. BCT R2,FLAGLOOP KEEP DOING UNTIL RUN THRU @V304635 00992000
  1078. * SWPTABLE 00993000
  1079. A R8,F4 BUMP INDEX REG. @V304635 00994000
  1080. LA R9,INDEX1(,R9) INDEX BY ONE @VM03100 00995000
  1081. BCT R3,SEGLOOP PROCESS NEXT SEGMENT @V304635 00996000
  1082. B COMMON SKIP OVER AP CODE @V407511 00997000
  1083. APSEGLP DS 0H @V407511 00998000
  1084. DROP R10,R14 @V407511 00999000
  1085. USING PAGTABLE,R1 ADDRESSABILITY TO PAGTABLE @V407511 01000000
  1086. USING SHRPAGE,R8 ADDRESSABILITY TO SHRPAGE ENTRY @V407511 01001000
  1087. USING SWPTABLE,R2 ADDRESSABILITY TO SWPTABLE @V407511 01002000
  1088. SLR R9,R9 ZERO SYSHRSEG INDEX REG @V407511 01003000
  1089. LR R8,R14 GET POINTER TO 1ST SHRPAGE @V407511 01004000
  1090. APSEGLP1 DS 0H @V407511 01005000
  1091. SLR R7,R7 ZERO WORK REG @V407511 01006000
  1092. IC R7,SYSHRSEG(R9) PICK UP NEXT SEGMENT NUMBER @V407511 01007000
  1093. SLL R7,2 TIMES 4 TO INDEX SEGTABLE @V407511 01008000
  1094. AL R7,VMSEG GET ADDR SEGTABLE ENTRY @V407511 01009000
  1095. LA R0,(PAGBMP+PAGBMP)/8 GET NUMBER OF DBLWRDS @V407511 01010000
  1096. * NEED FOR SHARED PAGE & SWPTABLES @V407511 01011000
  1097. CALL DMKFREE OBTAIN PAGE & SWAP TABLES @V407511 01012000
  1098. L R10,0(R7) GET ADDR OLD PTO @V407511 01013000
  1099. LA R0,PAGCORE LOAD ADDRESS OF PTO @V407511 01014000
  1100. STCM R0,B'0111',1(R7) STORE NEW PTO IN STE @V407511 01015000
  1101. OI 3(R7),SEGINV FLAG STE AS INVALID @V407511 01016000
  1102. ST R0,SHRPAGE STORE PTO INTO SHRTABLE @V407511 01017000
  1103. STCM R10,8,SHRPAGE STORE NUMBER OF PAGES IN @V407511 01018000
  1104. * SEGMENT INTO SHRTABLE @V407511 01019000
  1105. N R10,=AL4(X'00FFFFFE') CLEAR COUNT AND INV BITS @V407511 01020000
  1106. SL R10,F16 BACKUP TO HEADER @V407511 01021000
  1107. LA R14,PAGBMP(,R1) GET ADDR OF AP PAGTABLE @V407511 01022000
  1108. * @V407511 01023000
  1109. MVC PAGTABLE(PAGBMP),0(R10) COPY PAGE&SWAP - CPU @V407511 01024000
  1110. MVC 0(PAGBMP,R14),0(R10) COPY PAGE&SWAP - AP @V407511 01025000
  1111. * @V407511 01026000
  1112. LA R2,PAGTSWP(,R1) GET ADDR OF CPU SWPTABLE @V407511 01027000
  1113. MVC SWPVM-SWPTABLE(4,R2),ASYSVM ASG SWPTABLE ASYSVM @V407511 01028000
  1114. MVC PAGBMP+SWPVM(4),ASYSVM ASG SWPTABLE ASYSVM @V407511 01029000
  1115. ST R0,SWPPAG HOOK SWAP - PAGE @V407511 01030000
  1116. LA R0,SWPFLAG GET ADDR SWPTABLE ENT @V407511 01031000
  1117. ST R0,PAGSWP HOOK PAGE - SWAP @V407511 01032000
  1118. ST R5,PAGSHR HOOK PAGE - SHRTABLE @V407511 01033000
  1119. ST R5,PAGBMP+PAGSHR HOOK PAGE - SHRTABLE @V407511 01034000
  1120. LA R0,PAGBMP+PAGCORE GET ADDR AP PTO @V407511 01035000
  1121. ST R0,PAGBMP+SWPPAG HOOK SWAP - PAGE @V407511 01036000
  1122. OI PAGBMP+SWPFLAG2,SWPAPP SET ATTACHED INDICATOR@V407511 01037000
  1123. * (INDICATES 2ND SET OF PG/SWAP TABLES) 01037100
  1124. LA R0,PAGBMP+SWPFLAG ADDR AP SWPTABLE ENTRY@V407511 01038000
  1125. ST R0,PAGBMP+PAGSWP HOOK PAGE - SWAP @V407511 01039000
  1126. OI PAGBMP+PAGSWP,X'80' Indicate AP table HRC066DK 01039100
  1127. MVC PAGACT(4),F1 CPU PAGACT = 0 @V407511 01040000
  1128. * CPU PAGTOT = 1 @V407511 01041000
  1129. MVC PAGBMP+PAGACT(4),F1 AP PAGACT = 0 @V407511 01042000
  1130. * AP PAGTOT = 1 @V407511 01043000
  1131. L R15,0(R7) GET SEGTABLE ENTRY @V407511 01044000
  1132. SRL R15,28 OBTAIN PTE COUNT @V407511 01045000
  1133. LA R15,1(R15) BUMP FOR LOOP CONTROL @V407511 01046000
  1134. LA R14,SWPFLAG POINT TO 1ST SWPTABLE ENTRY @V407511 01047000
  1135. APSEGFL DS 0H @V407511 01048000
  1136. USING SWPFLAG,R14 @V407511 01049000
  1137. OI SWPFLAG,SWPSHR TURN ON CPU SHARE BIT @V407511 01050000
  1138. OI PAGBMP+SWPFLAG,SWPSHR TURN ON AP SHARE BIT @V407511 01051000
  1139. LA R14,8(,R14) BUMP TO NEXT SWPTABLE ENTRY @V407511 01052000
  1140. BCT R15,APSEGFL KEEP DOING UNTIL ALL FLAGGED @V407511 01053000
  1141. LR R1,R10 GET ADDR OF OLD PAGTABLE @V407511 01054000
  1142. L R14,0(R7) GET SEGTABLE ENTRY @V407511 01055000
  1143. SRL R14,28 OBTAIN NUMBER PTE'S @V407511 01056000
  1144. LA R0,PAGBMP+PAGBMP Size of tables for AP HRC066DK 01056500
  1145. SRL R0,3 CHANGE TO NO OF DWORDS @VA07675 01057500
  1146. CALL DMKFRET RETURN OLD PAGE & SWAP TABLES @V407511 01058000
  1147. LA R8,4(,R8) INCREMENT SHRPAGE INDEX @V4M0183 01059000
  1148. LA R9,1(R9) INCR SYSHRSEG INDEX @V407511 01060000
  1149. L R14,SAVEWRK7 RESTORE SHRPAGE POINTER @V407511 01061000
  1150. BCT R3,APSEGLP1 PROCESS NEXT SEGMENT @V407511 01062000
  1151. * RESUME COMMON PROCESSING @V407511 01063000
  1152. DROP R1,R2,R8,R14 @V407511 01064000
  1153. USING SWPFLAG,R10 @V407511 01065000
  1154. USING SHRPAGE,R14 @V407511 01066000
  1155. SPACE 01067000
  1156. * WHEN FALL THRU HAVE FINISHED PROCESS SO PUT SHRTABLE IN CHAIN 01068000
  1157. COMMON DS 0H @V407511 01069000
  1158. SPACE 01070000
  1159. L R8,=A(DMKVMAS1) ADDRESS OF ANCHOR @VM03171 01071000
  1160. L R7,0(,R8) ANCHOR CONTENTS @V304635 01072000
  1161. ST R5,0(,R8) ANCHOR NOW POINTS TO NEW BLOK @V304635 01073000
  1162. STCM R7,B'0111',SHRFPNT+1 STORE FORWARD POINTER @V60BC11 01074200
  1163. ST R8,SHRBPNT STORE BACKWARD POINTER @V60BC11 01074400
  1164. ST R5,SHRBPNT-SHRTABLE(,R7) CHANGE BKWD POINTER @VM03100 01076000
  1165. * IN PREVIOUS BLOK 01077000
  1166. SETVMSHR LH R7,VMSHRSYS GET COUNT OF SHARED SYSTEMS @V304635 01078000
  1167. * FOR THIS USER 01079000
  1168. LA R7,ONE(,R7) ADD ONE @VM03100 01080000
  1169. STH R7,VMSHRSYS STORE NEW COUNT @V304635 01081000
  1170. OI VMOSTAT,VMSHR FLAG RUNNING SHARED SYSTEM @V304635 01082000
  1171. MVC VMSHRPRC,LPUADDR+1 INIT LAST SERVICED IDENT @V407511 01083000
  1172. LH R7,SHRUSECT LOAD COUNT OF USERS FOR THIS @V304635 01084000
  1173. * SYSTEM 01085000
  1174. LA R7,ONE(,R7) BUMP BY ONE @VM03100 01086000
  1175. STH R7,SHRUSECT STORE BACK @V304635 01087000
  1176. TM SHRFLAG,SHRNOPRT UNPROTECTED NAMED SYSTEM @V60BC11 01087200
  1177. BO SKIPVMA YES, SKIP BUILDING A VMABLOK @V60BC11 01087400
  1178. LA R0,VMASIZE GET SIZE OF VMABLOK FOR @V304735 01088000
  1179. CALL DMKFREE CALL TO FREE STORAGE MANAGER @V304735 01089000
  1180. USING VMABLOK,R1 @V304735 01090000
  1181. L R0,VMASSIST FORWARD CHAIN POINTER OF VMABLOKS@V304735 01091000
  1182. ST R1,VMASSIST MAKE THIS BLOK FIRST ON CHAIN @V304735 01092000
  1183. ST R0,VMAFPNT PUT OLD ONE BACK IN CHAIN @V304735 01093000
  1184. ST R5,VMASHRBK STORE POINTER TO (SHRTABLE) @V304735 01094000
  1185. MVC VMANAME,SHRNAME SAVE SHARED SYSTEM NAME @V304735 01095000
  1186. DROP R1 @V304735 01096000
  1187. SKIPVMA DS 0H @V60BC11 01096100
  1188. TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 01097100
  1189. BO BLDNSHR YES, NO NEED TO UPDATES STE'S @V407511 01098000
  1190. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SYSTEM? @VMI0032 01098200
  1191. BO BLDNSHR YES, NO NEED TO UPDATE STE'S @VMI0032 01098400
  1192. * SINCE ONLY ONE SET OF PG. TABLES @VMI0032 01098600
  1193. L R2,SHRSEGCT LOAD NUMBER OF SHARED SEGMENTS @V407511 01099000
  1194. BCTR R2,0 DECREMENT FOR INDEXING @V407511 01100000
  1195. REBUILD DS 0H @V407511 01101000
  1196. SLR R7,R7 ZIP REG FOR INSERT @V4M0212 01102000
  1197. IC R7,SHRSEGNM(R2) LOAD SHARED SEGMENT NUMBER @V407511 01103000
  1198. SLL R7,2 TIMES FOUR FOR INDEXING @V407511 01104000
  1199. AL R7,VMSEG LOAD ADDRESS OF STE @V407511 01105000
  1200. USING SEGPAGE,R7 @V407511 01106000
  1201. L R1,SEGPAGE ADDR. OF MAIN (IPL) PROC PAGTABLE@V60B7AA 01107100
  1202. LA R1,PAGBMP(,R1) BUMP TO 2ND SET OF PG/SWP TABLES @V60B7AA 01108100
  1203. STCM R1,B'0111',SEGPAGE+1 ADJUST TO ATTACHED PAGTABLE@V407511 01109000
  1204. S R2,F1 DECREMENT SEGMENT COUNTER @V407511 01110000
  1205. BNM REBUILD CONTINUE REBUILDING @V407511 01111000
  1206. SPACE 1 01112000
  1207. BLDNSHR DS 0H HERE TO BUILD THE PAGE TABLE @V304635 01113000
  1208. * THAT ARE FOR NON-SHARED SYSTEMS. 01114000
  1209. L R2,=A(DMKVMAS2) ADDRESS OF NON-SHARED SYSTEMS @VM03171 01115000
  1210. L R5,0(,R2) ADDRESS OF FIRST NAMED TABLE @V304635 01116000
  1211. NSHRSCAN CR R2,R5 END OF CHAIN REACHED ? @V304635 01117000
  1212. BE NSHRBLD YES - BUILD NECESSARY NAME TABLE @V304635 01118000
  1213. CLC SYSNAME,SHRNAME NON-SHARED NAME SYSTEM FOUND ? @VM03100 01119000
  1214. BE NSHRFND YES - R5 HAS ADDRESS OF NON-SHR @V304635 01120000
  1215. * TABLE 01121000
  1216. L R5,SHRFPNT ADDRESS OF NEXT NON-SHARED SYSTEM@V304635 01122000
  1217. B NSHRSCAN KEEP SEARCHING THE CHAIN . @V304635 01123000
  1218. SPACE 1 01124000
  1219. NSHRBLD DS 0H BUILD NON-SHARED NAMED SYSTEM @V304635 01125000
  1220. * ENTRY. 01126000
  1221. LA R0,0+(SHRSEGNM-SHRFPNT)/8 NUMBER OF DW'S @V304635 01127000
  1222. CALL DMKFREE GET TABLE FROM FREE STORAGE @V304635 01128000
  1223. LR R5,R1 SET INTO PROPER REGISTER @V304635 01129000
  1224. XC SHRTABLE(SHRSEGNM-SHRFPNT),SHRTABLE ZERO IT. @V304635 01130000
  1225. MVC SHRNAME,SYSNAME SAVE THE NON-SHARED SYSTEM NAME @VM03100 01131000
  1226. L R1,0(,R2) ANCHOR OF FIRST NON-SHARED NAME @V304635 01132000
  1227. ST R5,0(,R2) ANCHOR POINTS TO NEW BLOCK @V304635 01133000
  1228. STM R1,R2,SHRFPNT SET UP FWD/BKWD POINTERS @V304635 01134000
  1229. ST R5,SHRBPNT-SHRTABLE(,R1) CHG BKWD IN PREVIOUS @VM03100 01135000
  1230. * BLOCK 01136000
  1231. NSHRFND LH R1,SHRUSECT COUNT OF USERS FOR THIS SYSTEM @V304635 01137000
  1232. LA R1,ONE(,R1) INCREASE BY 1 @VM03100 01138000
  1233. STH R1,SHRUSECT SAVE NEW COUNT OF USERS'S @V304635 01139000
  1234. SPACE 01140000
  1235. L R10,VMSEG ADDRESS OF SEGMENT TABLE @V304635 01141000
  1236. SLR R3,R3 CLEAR INDEX REGISTER @V304635 01142000
  1237. LH R2,SYSPAGLN NUMBER OF FULL WORDS IN SYSNAME @V304635 01143000
  1238. * TABLE 01144000
  1239. NSHRPAGE LH R1,SYSPAGNM(R3) GET ADDRESS OF FIRST SAVE PAGE @V304635 01145000
  1240. SLR R9,R9 NUMBER OF SEGMENTS PER (SYSPAGNM @V304635 01146000
  1241. LH R9,SYSPAGNM+2(R3) LOAD LAST ADDRESS @V304635 01147000
  1242. SH R9,SYSPAGNM(R3) CALC. NUMBER OF SEG(S) @V304635 01148000
  1243. SRL R9,4 16 PAGES PER SEG @V304635 01149000
  1244. LA R9,ONE(,R9) BASE OF 1 @VM03100 01150000
  1245. SRL R1,4 LEAVE ONLY SEGMENT NUMBER @V304635 01151000
  1246. SLL R1,2 TIMES 4 FOR INDEX INTO SEGTABLE @V304635 01152000
  1247. NAMESEG L R7,0(R1,R10) GET PAGE TABLE ADDRESS @V304635 01153000
  1248. N R7,=AL4(X'00FFFFFE') CLEAR EXTENSION BITS @VA10481 01154200
  1249. SL R7,F16 BACK UP TO PAGE TABLE HEADER @V407511 01155000
  1250. CLC PAGSHR-PAGTABLE(,R7),F0 SHARED SEGMENT ENTRY ? @VM03100 01156000
  1251. BNZ SEGSHR YES - LEAVE AS IS @V304635 01157000
  1252. OI VMPSTAT,VMNSHR RUNNING NON-SHARED SYSTEM @V304635 01158000
  1253. ST R5,PAGSHR-PAGTABLE(,R7) SAVE POINTER TO @V407511 01159000
  1254. * NON-SHARED SYSTEM NAME @V407511 01160000
  1255. SEGSHR LA R1,L'SEGPAGE(,R1) INDEX OF NEXT SEG. TABLE ENTRY@VM03100 01161000
  1256. BCT R9,NAMESEG PROCESS NEXT CONTIGUOUS SEG. @V304635 01162000
  1257. * ENTRY 01163000
  1258. LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM ENTRY @VM03100 01164000
  1259. BCT R2,NSHRPAGE PROCESS NEXT ENTRY @V304635 01165000
  1260. NAMEXIT TM VMPSTAT,VMV370R ECMODE CAPABILITIES ??? @V304635 01166000
  1261. BZ IPLEXIT1 GO NO FURTHER IF NOT @V304635 01167000
  1262. TM VMPSW+1,EXTMODE IN EXTENDED MODE ??? @V304635 01168000
  1263. BZ IPLEXIT1 IF NOT - WE ARE FINISHED HERE @V304635 01169000
  1264. OI VMESTAT,VMEXTCM FLAG AS ECMODE PSW @V304635 01170000
  1265. TM VMPSW,TRANMODE TRANSLATE ON ??? @V304635 01171000
  1266. BZ IPLEXIT1 NOPE -- OK TO RUN @V304635 01172000
  1267. CALL DMKVATMD ENTER THE TRANSLATE MODE @V304635 01173000
  1268. B IPLEXIT1 AND GO TO IT @V304635 01174000
  1269. SPACE 2 01175000
  1270. RETURN TM SAVEWRK1+2,LOADFLG REQUEST FOR 'LOADSYS' @V304635 01176000
  1271. * FUNCTION ? 01177000
  1272. BZ CFGEXIT NO - RETURN TO CALLER @V304635 01178000
  1273. L R1,SAVER5 ADDRESS OF USER'S RX REG. @V304635 01179000
  1274. LH R2,SYSPAGLN NUMBER OF FW'D IN SYSNAME TABLE @V304635 01180000
  1275. SLL R2,2 TIMES 4 FOUR BYTES FOR INDEXING @V304635 01181000
  1276. LH R3,SYSPAGNM GET ADDRESS OF FIRST SAVED PAGE @V304635 01182000
  1277. SLL R3,12 FORM FULL ADDRESS @V304635 01183000
  1278. ST R3,0(,R1) GIVE IT TO USER @V304635 01184000
  1279. L R1,SAVER6 ADDRESS OF USER'S RY REGISTER @V304635 01185000
  1280. LH R3,SYSPAGNM-2(R2) ADDRESS OF LAST SAVED PAGE @V304635 01186000
  1281. SLL R3,12 FULL ADDRESS @V304635 01187000
  1282. AL R3,F4095 ADD IN HI PAGE BYTE BOUNDARY @V304635 01188000
  1283. ST R3,0(,R1) INTO USER'S RY @V304635 01189000
  1284. L R1,SAVER5 GET ADDRESS OF USER'S RX @V304635 01190000
  1285. CLC 0(L'VMSTOR,R1),VMSTOR WAS USER'S STORAGE @VM03100 01191000
  1286. * OVERLAYED ? 01192000
  1287. BNL CFGEXIT NO - RETURN TO CALLER @V304635 01193000
  1288. L R1,SAVER6 USER'S RY REGISTER @V304635 01194000
  1289. CLC 0(L'VMSTOR,R1),VMSTOR OVERLAY ALL OF USER'S @VM03100 01195000
  1290. * STORAGE ? 01196000
  1291. BNH SETCC1 IF NOT - LIMIT TO TOP OF SAVED @V304635 01197000
  1292. * SYSTEM 01198000
  1293. MVC 0(L'VMSTOR,R1),VMSTOR LIMIT TOP OF USER'S @VM03100 01199000
  1294. * STORAGE 01200000
  1295. B SETCC1 SET CONDITION CODE OF 1 FOR USER @V304635 01201000
  1296. CFGEXIT BAL R10,SYSTUNLC UNLOCK SYSTEM NAME TABLE(DMKSNT) @V304635 01202000
  1297. EXIT RETURN TO CALLER @V304635 01203000
  1298. SPACE 2 01204000
  1299. MOVESEGS MVC SHRSEGNM(*-*),SYSHRSEG 'EX' SYSTBL TO SHRTABLE @VM03100 01205000
  1300. ZEROSHR XC SHRTABLE(*-*),SHRTABLE 'EX' ZERO SHRTABLE @V4M0179 01206000
  1301. DROP R5,R6,R10,R14 @V304635 01207000
  1302. SPACE 01208000
  1303. SPACE 01209000
  1304. SPACE 01210000
  1305. SPACE 01211000
  1306. CHKPARM EQU * @V304635 01212000
  1307. CLC =C'PARM',0(R1) PARM KEYWORK EQUAL TO 'PARM' @VM03100 01213000
  1308. BCR 7,R8 IF NOT - RETURN @V304635 01214000
  1309. CL R0,F4 CORRECT BYTE COUNT ??? @V304635 01215000
  1310. BCR 7,R8 IF NOT RETURN @V304635 01216000
  1311. SPACE 01217000
  1312. USING BUFFER,R9 @V304635 01218000
  1313. SPACE 01219000
  1314. CALL DMKSCNFD GET THE START OF THE PARMS @V304635 01220000
  1315. BNZ ZEROLEN SET UP FOR ZERO LENGTH PARM @V304635 01221000
  1316. LM R2,R3,BUFNXT GET ADDRESS AND COUNT IN BUFFER @V304635 01222000
  1317. AR R3,R0 GET TOTAL LENGTH @V304635 01223000
  1318. C R3,=F'64' OVER 64 CHARACTERS @V304635 01224000
  1319. BH CFG177 IF SO - GO SEND ERROR MESSAGE @V304635 01225000
  1320. STC R3,SAVEWRK1+3 SAVE THE BYTE COUNT @V304635 01226000
  1321. BCTR R3,0 MINUS ONE FOR THE EX MOVE @V304635 01227000
  1322. EX R3,MOVEPARM MOVE 'EM @V304635 01228000
  1323. OI SAVEWRK1,PARMFND FLAG HAVE A PARM FOR REST OF @V304635 01229000
  1324. * IPL 01230000
  1325. BR R8 AND RETURN @V304635 01231000
  1326. SPACE 01232000
  1327. ZEROLEN MVI SAVEWRK1+3,LEN0 STORAGE ZERO LENGTH @VM03100 01233000
  1328. OI SAVEWRK1,PARMFND SET PARM FLAG @V304635 01234000
  1329. BR R8 AND RETURN @V304635 01235000
  1330. SPACE 01236000
  1331. DROP R9 @V304635 01237000
  1332. SPACE 01238000
  1333. GETSNTBL L R4,SAVEWRK6 IS SYSNAME TABLE ALLREADY IN @V304635 01239000
  1334. * STORAGE 01240000
  1335. LTR R4,R4 ..... @V304635 01241000
  1336. BNZR R5 IF IT IS - RETURN TO CALLER @V304635 01242000
  1337. L R1,=A(DMKSNTBL) ADDRESS OF SYSNAME TABLE @V304635 01243000
  1338. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V304635 01244000
  1339. LR R4,R2 ADDRESS OF SYSTABLE TO R4 @V304635 01245000
  1340. ST R2,SAVEWRK6 SAVE ADDRESS OF SYSNAME TABLE @V304635 01246000
  1341. BR R5 RETURN TO CALLER @V304635 01247000
  1342. EJECT 01248000
  1343. SYSTUNLC ST R2,SAVEWRK9 SAVE ERROR CODE REGISTER @V304635 01249000
  1344. L R2,SAVEWRK6 TEST IF DMKSNT TABLE IN STORAGE @V304635 01250000
  1345. LTR R2,R2 IS IT ? @V304635 01251000
  1346. BNZ PTRUL IF IS - UNLOCK IT. @V304635 01252000
  1347. L R2,SAVEWRK9 RESTORE R2 @V304635 01253000
  1348. BR R10 RETURN TO CALLER @V304635 01254000
  1349. PTRUL CALL DMKPTRUL UNLOCK THE SYSNAME TABLE @V304635 01255000
  1350. XC SAVEWRK6,SAVEWRK6 ZERO OUT ADDRESS OF SYSNAME @V304635 01256000
  1351. * TABLE 01257000
  1352. L R2,SAVEWRK9 RESTORE ERROR CODE REGISTER @V304635 01258000
  1353. BR R10 RETURN TO CALLER @V304635 01259000
  1354. SPACE 2 01260000
  1355. FREEKBUF L R0,SAVEWRK9 BUFFER LENGTH @VA04160 01261000
  1356. L R1,SAVEWRK4 BUFFER ADDRESS @VA04160 01262000
  1357. CALL DMKFRET FRET THE BUFFER @VA04160 01263000
  1358. BR R10 RETURN @VA04160 01264000
  1359. NOSYSOWN EQU * VOLID NOT CP OWNED @V200820 01265000
  1360. MVC SAVEWRK4+1(L'SYSVOL),SYSVOL MOVE IN VOLID @VM03100 01266000
  1361. MVI SAVEWRK4,SEP00 MOVE IN FIELD DELIMITER @VM03100 01267000
  1362. LA R0,LEN15 LOAD LENGTH OF ERROR MSG PARM @VM03100 01268000
  1363. LA R1,SAVEWRK2 LOAD PARM REG WITH ADDRESS OF MSG@VM03100 01269000
  1364. B CFG179 GO WRITE ERROR MSG DMKCFG179 @VM03100 01270000
  1365. NOSYSVOL MVC SAVEWRK4+1(L'SYSVOL),SYSVOL VOL SER FOR ERR MSG @VM03100 01271000
  1366. B LOADLEN GO SET UP LENGTH PARM REG @VM03100 01272000
  1367. NOSYSRES MVC SAVEWRK4+1(L'VSYSRES),VSYSRES VIRT SYSRES VOL @VM03100 01273000
  1368. * SER FOR MSG 01274000
  1369. LOADLEN MVI SAVEWRK4,SEP00 MOVE IN FIELD SEPARATOR @VM03100 01275000
  1370. LA R0,LEN15 LOAD PARM REG LENGTH OF PARMS @VM03100 01276000
  1371. LA R1,SAVEWRK2 LOAD ADDRESS OF ERROR MSG PARMS @VM03100 01277000
  1372. B CFG171 GO TO WRITE ERROR MSG ROUTINE @VM03100 01278000
  1373. BLD172 EQU * INCOMPATIBLE VSYSRES 01279000
  1374. BAL R10,GETVADDR BUILD VADDR 01280000
  1375. B CFG172 GO TO WRITE ERROR MSG ROUTINE @VM03100 01281000
  1376. SPACE 01282000
  1377. BLD173 EQU * VADDR REQUIRED 01283000
  1378. BAL R10,GETVADDR BUILD VADDR 01284000
  1379. B CFG173 GO TO WRITE ERROR MSG ROUTINE @VM03100 01285000
  1380. SPACE 01286000
  1381. GETVADDR LH R1,SYSVADDR LOAD VADDR FROM SYSTBL 01287000
  1382. CALL DMKCVTBH CONVERT IT 01288000
  1383. ICM R1,8,F0 INSERT THE SEPARATER 01289000
  1384. ST R1,SAVEWRK4 STORE DEV ADDRESS IN MSG TEXT 01290000
  1385. LA R0,12 FIELD LENGTH 01291000
  1386. LA R1,SAVEWRK2 FIELD ADDRESS 01292000
  1387. BR R10 RETURN 01293000
  1388. MOVEPARM MVC VMGPRS(0),0(R1) EXECUTED MOVE @V304635 01294000
  1389. MOVGPRS MVC 0(0,R14),0(R15) DITTO @V304635 01295000
  1390. SAVENAME MVC SAVEWRK2(0),0(R1) @V304635 01296000
  1391. MOVENAME MVC SAVEWRK2(0),0(R2) EXECUTED MOVE @V304635 01297000
  1392. SETFLGS OI SAVEWRK1+2,*-* SET USER'S CONDITION CODE IS PSW @VM03100 01298000
  1393. SETPSWCC OI 0(R1),*-* SET USER'S CONDITION CODE IN PSW @V304635 01299000
  1394. SETCC1 LA R2,CC1 SET CONDITION CODE 1 @VM03100 01300000
  1395. B SETCCODE PUT CC IN USER'S PSW @VM03100 01301000
  1396. SETCC2 LA R2,CC2 SET CONDITION CODE 2 @VM03100 01302000
  1397. B SETCCODE PUT CC IN USER'S PSW @VM03100 01303000
  1398. SETCCODE LA R1,VMPSW+4 BC MODE PSW COND. CODE @V304635 01304000
  1399. TM VMESTAT,VMEXTCM VM IN EC MODE NOW ? @V304635 01305000
  1400. BZ NOECMODE NO - SET BC MODE CC @V304635 01306000
  1401. LA R1,VMPSW+2 TARGET FOR EC MODE PSW CC @V304635 01307000
  1402. NOECMODE EX R2,SETPSWCC SET PSW CONDITION CODE @V304635 01308000
  1403. B CFGEXIT RETURN TO CALLER @V304635 01309000
  1404. MASKFLGS DC AL1(LOADFLG,LOADFLG+NONSHARE,PURFLG,FINDFLG) @V304635 01310000
  1405. EJECT 01311000
  1406. *. 01312000
  1407. * 01313000
  1408. * SUBROUTINE NAME - 01314000
  1409. * 01315000
  1410. * DMKCFGCL 01316000
  1411. * 01317000
  1412. * FUNCTION - 01318000
  1413. * 01319000
  1414. * TO PROCESS THE DIAGNOSE X'64' INSTRUCTION 01320000
  1415. * 01321000
  1416. * SUBFUNCTION CODES - 01322000
  1417. * 01323000
  1418. * X'00' - LOADSYS - LOADS A NAMED SYSTEM IN SHARED MODE 01324000
  1419. * 01325000
  1420. * X'04' - LOADSYS - LOAD A NAMED SYSTEM IN NONSHARED MODE 01326000
  1421. * 01327000
  1422. * X'08' - PURGESYS - RELEASES THE NAMED SYSTEM FROM USER'S 01328000
  1423. * VIRTUAL STORAGE 01329000
  1424. * 01330000
  1425. * X'0C' - FINDSYS - FINDS THE STARTING AND ENDING ADDRESS 01331000
  1426. * OF A NAMED SYSTEM IN USER'S MEMORY 01332000
  1427. * 01333000
  1428. * OPERATION - 01334000
  1429. * 01335000
  1430. * 1. SAVE THE SYSTEM NAME IN SAVEAREA 01336000
  1431. * 01336100
  1432. * 2. DIVIDE THE SUBFUNCTION CODE BY FOUR AND SET THE 01337000
  1433. * APPROPRIATE INTERNAL FLAG IN THE WORKAREA: LOADSYS, 01338000
  1434. * FINDSYS OR PURGESYS. 01339000
  1435. * 01339100
  1436. * 3. IF THIS IS A LOADSYS COMMAND, JOIN CODE AT LOADSYS 01340000
  1437. * LABEL (STEP 20 IN PROLOGUE) OF DMKCFGIP. 01341000
  1438. * 01341100
  1439. * 4. IF IT WASN'T A VALID SUBFUNCTION CODE ISSUE ABEND 10. 01342000
  1440. * 01342100
  1441. * 5. IF THIS USER IS THE V=R USER, RETURN TO CALLER WITH 01343100
  1442. * CONDITION CODE 2. 01343600
  1443. * 01344100
  1444. * 6. IF LOGOFF HAS STARTED, CALL DMKERMSG TO SEND ERROR 01345000
  1445. * MESSAGE DMKCFG001E. 01346000
  1446. * 01346100
  1447. * 7. TRANS AND LOCK THE SYSTEM NAME TABLE (SYSTBL). 01347000
  1448. * 01347100
  1449. * 8. LOOP THRU THE SYSTEM NAME TABLE TRYING TO FIND THE 01348000
  1450. * REQUESTED NAME. IF THE NAME IS NOT FOUND, CALL 01349000
  1451. * DMKERMSG TO SEND ERROR MESSAGE DMKCFG044E. 01350000
  1452. * 01350100
  1453. * 9. IF THIS IS A PURGESYS OPERATION, SKIP TO STEP 12. 01351000
  1454. * 01351100
  1455. * 10. USE THE PAGE NUMBERS IN THE SYSTBL TO CALCULATE THE 01352000
  1456. * STARTING AND ENDING ADDRESS RANGE OF THE NAMED SYSTEM 01353000
  1457. * AND STORE THEM IN THE USER'S PARAMETER AREA. 01354000
  1458. * 01354100
  1459. * 11. DO A DIRECT ADDRESS LOOKUP TO SEE IF USER IS RUNNING 01355100
  1460. * WITH THIS NAMED SYSTEM.IF THE 01355200
  1461. * SYSTEM WAS NOT FOUND IN THE USER'S ADDRESS SPACE, SET 01356000
  1462. * ITS PSW TO CONTAIN A CONDITION CODE OF ONE AND GOTO 01357000
  1463. * STEP 13. IF IT WAS FOUND, GOTO STEP 13. 01358000
  1464. * 12. CALL DMKPGSPS TO PURGE THE NAMED SYSTEM FROM THE USER'S 01359000
  1465. * ADDRESS SPACE. IF THE NAMED SYSTEM WASN'T FOUND, SET 01360000
  1466. * THE USER'S PSW TO CONTAIN A CONDITION CODE OF ONE. 01361000
  1467. * 01361100
  1468. * 13. CALL DMKPTRUL TO UNLOCK THE SYTEM NAME TABLE. 01362000
  1469. * 01362100
  1470. * 14. RETURN TO CALLER 01363000
  1471. *. 01364000
  1472. SPACE 2 01365000
  1473. DMKCFGCL RELOC @V304635 01366000
  1474. XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES. @V304635 01367000
  1475. XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR ALL@VM03100 01368000
  1476. STM R1,R2,SAVEWRK2 SAVE THE 'NAMED' SYSTEM @V304635 01369000
  1477. SRL R3,2 DIVIDE BY 4 @V304635 01370000
  1478. IC R3,MASKFLGS(R3) GET PROPER INDICATOR FLAGS @V304635 01371000
  1479. EX R3,SETFLGS TURN ON APPRO. FLAGS @V304635 01372000
  1480. CL R11,AVMREAL IS USER IN A V=R AREA ? @VA12820 01372100
  1481. BE CFG203 YES.. CAN'T ISSUE THIS FUNCTION @VA12820 01372200
  1482. TM SAVEWRK1+2,LOADFLG LOADSYS FUNCTION. @V304635 01373000
  1483. BO LOADSYS YES - PROCESS IT. @V304635 01374000
  1484. TM SAVEWRK1+2,PURFLG+FINDFLG VALID FUNCTION ? @V304635 01375000
  1485. BNZ VALIDREQ YES - PROCESS IT @V304635 01376000
  1486. SPACE 1 01377000
  1487. ABEND 10 CONDITION SHOULD NEVER HAPPEN. @V304635 01378000
  1488. VALIDREQ DS 0H LOCATE THE DESIRED NAMED SYSTEM @V304635 01379000
  1489. * FUNCTION 01382000
  1490. TM VMRSTAT,VMLOGOFF OTHER ACTIVITY STARTED? @V408246 01383000
  1491. BO CFG001 YES, GET OUT AS FAST AS POSSIBLE @V408246 01384000
  1492. BAL R5,GETSNTBL BRING IN SYSTEM NAME TABLE @V304635 01385000
  1493. USING SYSTBL,R4 @V304635 01386000
  1494. NXTNAME CLC SYSNAME,SAVEWRK2 LOOK FOR NAMED SYSTEM @VM03100 01387000
  1495. BE CHKUSE FOUND IT. @V304635 01388000
  1496. L R3,SYSPNT GET DISP. TO NEXT BLOK @V304635 01389000
  1497. AR R4,R3 CALC. ACTUAL NEXT ADDRESS. @V304635 01390000
  1498. LTR R3,R3 NAME TABLE EXHAUSTED @V304635 01391000
  1499. BZ CFG044 YES - UNKNOWN NAME. @V304635 01392000
  1500. B NXTNAME TRY NEXT ENTRY IN TABLE @V304635 01393000
  1501. CHKUSE DS 0H @V304635 01394000
  1502. TM SAVEWRK1+2,PURFLG PURGESYS FUNCTION ? @V304635 01395000
  1503. BO CHKFUNCT LOAD UP NAME AND CALL DMKPGS @V304635 01396000
  1504. LH R2,SYSPAGNM USER FIRST PAGE @V304635 01397000
  1505. SLL R2,12 ADD DISPLACEMENT TO IT @V304635 01398000
  1506. L R5,SAVER5 GET USERS R1 REGISTER @V304635 01399000
  1507. ST R2,0(,R5) SAVE FIRST ADDRESS FOR CALLER. @V304635 01400000
  1508. LH R3,SYSPAGLN GET NUMBER OF ENTRIES IN TABLE. @V304635 01401000
  1509. BCTR R3,0 DECREMENT FOR INDEX @V304635 01402000
  1510. SLL R3,2 4 BYTES PER ENTRY @V304635 01403000
  1511. LH R2,SYSPAGNM+2(R3) GET ENDING ADDRESS OF SAVED @V304635 01404000
  1512. * SYSTEM 01405000
  1513. SLL R2,12 ADD IN PROPER DISPLACEMENT @V304635 01406000
  1514. AL R2,F4095 ROUND TO LAST BYTE IN THE PAGE @V304635 01407000
  1515. L R5,SAVER6 GET USER'S R2 REGISTER @V304635 01408000
  1516. ST R2,0(,R5) SAVE ENDING ADDRESS FOR CALLER. @V304635 01409000
  1517. CHKFUNCT LM R1,R2,SYSNAME NAME OF 'NAMED' SYSTEM @V304635 01410000
  1518. TM SAVEWRK1+2,PURFLG PURGESYS FUNCTION ? @V304635 01411000
  1519. BO PGSPS YES - ISSUE CALL TO DMKPGSPS @V304635 01412000
  1520. SPACE 1 01413000
  1521. L R1,SAVER5 GET USERS R1 REGISTER @V60BC11 01414100
  1522. L R1,0(,R1) GET STARTING ADDR OF NAMED SYSTEM@V60BC11 01414200
  1523. SRL R1,16 GET SEGMENT NUMBER ONLY @V60BC11 01414300
  1524. SLR R2,R2 ZERO REGISTER @V60BC11 01414400
  1525. IC R2,VMSEG GET SEGMENT TABLE LENGTH @V60BC11 01414500
  1526. LA R2,1(,R2) CHANGE TO BASE OF ONE @V60BC11 01414600
  1527. SLL R2,4 TIMES 16 FOR STE COUNT @V60BC11 01414700
  1528. CR R1,R2 ADDRESS WITHIN USER STORAGE @V60BC11 01414800
  1529. BNL SETCC1 NO, CANNOT HAVE NAMED SEGMENT @VA09458 01414900
  1530. SLL R1,2 SEGMENT NUMBER * 4 @V60BC11 01415000
  1531. AL R1,VMSEG GET ADDRESS OF STE @V60BC11 01415100
  1532. ICM R6,B'0110',(SEGPAGE+1)-SEGTABLE(R1) ANY PTE PT @VA09458 01415225
  1533. BZ SETCC1 NO,CANNOT HAVE NAMED SEGMENT @VA09458 01415250
  1534. IC R6,(SEGPAGE+3)-SEGTABLE(,R1) GET REST OF PTE @VA09458 01415275
  1535. * POINTER 01415300
  1536. N R6,=A(X'00FFFFFF'-SEGINV) CLEAR UNWANTED BITS @VA09458 01415325
  1537. SL R6,F16 BACKUP TO PAGTABLE HEADER @VA09458 01415350
  1538. L R10,PAGSHR-PAGTABLE(,R6) GET ADDR OF SHRTABLE @VA09458 01415375
  1539. LTR R10,R10 IS THERE ONE @V60BC11 01415500
  1540. BZ SETCC1 NO, CANNOT BE RUNNING NAMED SYS @V60BC11 01415600
  1541. USING SHRTABLE,R10 ADDRESSABILITY TO SHRTABLE @V60BC11 01415700
  1542. CLC SHRNAME,SAVEWRK2 NAMES MATCH @V60BC11 01415800
  1543. BZ CFGEXIT YES, RETURN TO CALLER @V60BC11 01415900
  1544. B SETCC1 NO, NOT RUNNING NAMED SYSTEM @V60BC11 01416000
  1545. DROP R10 @V60BC11 01416100
  1546. EJECT 01416200
  1547. PGSPS CALL DMKPGSPS LET PGS PURGE SYSNAME @V304635 01419000
  1548. BNZ SETCC1 IF NOT IN USE SET CC=1 @V304635 01420000
  1549. B RETURN RETURN TO CALLER. @V304635 01421000
  1550. SPACE 1 01422000
  1551. CFG001 LA R2,EMSG001 LOAD ERROR CODE @VM03100 01423000
  1552. B CALLERM GO SET UP ERROR MSG DMKCFG001 @VM03099 01424000
  1553. SPACE 1 01425000
  1554. CFG002 LA R2,EMSG002 LOAD ERROR CODE @VM03100 01426000
  1555. B CALLERM GO SET UP ERROR MSG DMKCFG002 @VM03099 01427000
  1556. SPACE 1 01428000
  1557. CFG003 LA R2,EMSG003 LOAD ERROR CODE @VM03100 01429000
  1558. B CALLERM GO SET UP ERROR MSG DMKCFG003 @VM03099 01430000
  1559. SPACE 1 01431000
  1560. CFG013 LM R0,R1,SAVEWRK7 ARGUMENT LENGTH AND ADDRESS @V304635 01432000
  1561. LA R2,EMSG013 LOAD ERROR CODE @VM03100 01433000
  1562. B CALLERM GO SET UP ERROR MSG DMKCFG013 @VM03099 01434000
  1563. SPACE 1 01435000
  1564. CFG026 LA R2,EMSG026 LOAD ERROR CODE @VM03100 01436000
  1565. B NOVAR GO SET UP ERROR MSG DMKCFG026 @VM03099 01437000
  1566. CFG040 CALL DMKCVTBH CONVERT TO PRINTABLE CHAR'S @V304635 01438000
  1567. N R1,X40FFS BLANK HIGH BYTE @V304635 01439000
  1568. SLR R0,R0 ZERO LENGTH @V304635 01440000
  1569. LA R2,EMSG040 LOAD ERROR CODE @VM03100 01441000
  1570. B CALLERM GO SET UP ERROR MSG DMKCFG044 @VM03099 01442000
  1571. SPACE 1 01443000
  1572. SPACE 01444000
  1573. SPACE 01445000
  1574. CFG044 LA R0,L'SYSNAME LOAD LENGTH OF FIELD @VM03100 01446000
  1575. LA R1,SAVEWRK2 FIELD ADDRESS 01447000
  1576. LA R2,EMSG044 LOAD ERROR CODE @VM03100 01448000
  1577. B CALLERM GO SET UP ERROR MSG DMKCFG044 @VM03099 01449000
  1578. SPACE 1 01450000
  1579. CFG044A LM R0,R1,SAVEWRK2 ADDRESS OF BAD NAME @V304635 01451000
  1580. LA R2,EMSG044 LOAD ERROR CODE @VM03100 01452000
  1581. B CALLERM GO SET UP ERROR MSG DMKCFG170 @VM03099 01453000
  1582. SPACE 01454000
  1583. CFG170 LA R0,L'SYSNAME LOAD LENGTH OF FIELD @VM03201 01455000
  1584. LA R1,SAVEWRK2 FIELD ADDRESS @VM03201 01456000
  1585. LA R2,EMSG170 LOAD ERROR CODE @VM03201 01457000
  1586. B CALLERM ..... 01458000
  1587. SPACE 01459000
  1588. CFG171 LA R2,EMSG171 LOAD ERROR CODE @VM03100 01460000
  1589. B CALLERM GO SET UP ERROR MSG DMKCFG171 @VM03099 01461000
  1590. SPACE 01462000
  1591. CFG172 LA R2,EMSG172 LOAD ERROR CODE @VM03100 01463000
  1592. B CALLERM GO SET UP ERROR MSG DMKCFG172 @VM03099 01464000
  1593. SPACE 01465000
  1594. CFG173 LA R2,EMSG173 LOAD ERROR CODE @VM03100 01466000
  1595. B CALLERM GO SET UP ERROR MSG DMKCFG173 @VM03099 01467000
  1596. SPACE 1 01468000
  1597. CFG174 LA R2,EMSG174 LOAD ERROR CODE @VM03100 01469000
  1598. B NOVAR GO SET UP ERROR MSG DMKCFG174 @VM03099 01470000
  1599. SPACE 1 01471000
  1600. CFG177 LA R2,EMSG177 LOAD ERROR CODE @VM03100 01472000
  1601. B NOVAR GO SET UP ERROR MSG DMKCFG177 @VM03099 01473000
  1602. SPACE 01474000
  1603. CFG179 LA R2,EMSG179 LOAD ERROR CODE @VM03100 01475000
  1604. B CALLERM GO SET UP ERROR MSG DMKCFG179 @VM03099 01476000
  1605. SPACE 1 01477000
  1606. CFG203 LA R2,EMSG203 LOAD ERROR CODE @VM03100 01478000
  1607. SLR R0,R0 CLEAR PARM REG @VM03099 01479000
  1608. B NOVAR GO SET UP ERROR MSG DMKCFG203 @VM03099 01480000
  1609. SPACE 01481000
  1610. SPACE 1 01482000
  1611. NAMPERR2 L R0,SAVEWRK9 LENGTH OF KEY TABLE @VA05638 01483000
  1612. L R1,SAVEWRK3 ADDRESS OF KEY TABLE @VA05638 01484000
  1613. CALL DMKFRET GET RID OF IT @VA05638 01485000
  1614. SPACE 1 01486000
  1615. NAMPERR1 LR R1,R10 STARTING ADDRESS OF SYSTEM @VA05638 01487000
  1616. LR R2,R1 ALSO IS ENDING ADDRESS @VA05638 01488000
  1617. CALL DMKPGSPP CLEAR ONLY POSSIBLE PAGE @VA05638 01489000
  1618. SR R1,R1 INDICATE NO SHRTABLE @VA05638 01490000
  1619. CALL DMKPGSPS FRET TABLES AND REDO VMSIZE @VA05638 01491000
  1620. LA R2,EMSG174 LOAD ERROR CODE @VA05638 01492000
  1621. SPACE 1 01493000
  1622. SPACE 3 01494000
  1623. NOVAR SLR R1,R1 ZIP THE PARM REG 01495000
  1624. CALLERM BAL R10,SYSTUNLC UNLOCK SYSNAME TABLE @V304635 01496000
  1625. ICM R0,B'1110',MODID+3 INSERT MODULE IDENT. @VM03100 01497000
  1626. TM SAVEWRK1+2,LOADFLG+PURFLG+FINDFLG DIAG. @V304635 01498000
  1627. * FUNCTION ? 01499000
  1628. BZ ERMSG NO - CALL ERROR MESSAGE MODULE @V304635 01500000
  1629. L R6,SAVER6 GET ADDRESS OF USERS R2 REGISTER @V304635 01501000
  1630. ST R2,0(,R6) YES - SAVE ERROR RETURN CODE @V304635 01502000
  1631. B SETCC2 SET CC=2 AND RETURN TO CALLER @V304635 01503000
  1632. ERMSG CALL DMKERMSG SEND THE ERROR MESSAGE @V304635 01504000
  1633. * 01505000
  1634. * ERMSG WILL RETURN DIRECTLY TO DMKCFM -- NOT HERE -- 01506000
  1635. * 01507000
  1636. DS 0F 01507010
  1637. CFGSYSAP DC A(DMKSYSAP) ADDRESS OF DMKSYSAP @V5BC0AB 01507110
  1638. YES EQU C'Y' @V5BC0AB 01507210
  1639. SPACE 3 01508000
  1640. PAGE2314 EQU 32 NUMBER OF PAGES PER CYLINDER @VM03100 01509000
  1641. * (2314/2319). 01510000
  1642. PAGE3330 EQU 57 NUMBER OF PAGES PER CYLINDER @VM03100 01511000
  1643. * (3330). 01512000
  1644. PAGE3350 EQU 120 NUMBER OF PAGES PER CYLINDER @VM03100 01513000
  1645. * (3350). 01514000
  1646. PAGE3375 EQU 96 Number of pages per cylinder HRC106DK 01514100
  1647. * (3375) HRC106DK 01514200
  1648. PAGE3380 EQU 150 Number of pages per cylinder HRC106DK 01514300
  1649. * (3380) HRC106DK 01514400
  1650. PAGE2305 EQU 24 NUMBER OF PAGES PER CYLINDER @VM03100 01515000
  1651. * (2305/3340). 01516000
  1652. * 01517000
  1653. LEN0 EQU 0 LENGTH VALUE OF 0 @VM03100 01518000
  1654. LEN3 EQU 3 LENGTH VALUE OF 3 @VM03100 01519000
  1655. LEN4 EQU 4 LENGTH VALUE OF 4 @VM03100 01520000
  1656. LEN15 EQU 15 LENGTH VALUE OF 15 @VM03100 01521000
  1657. * 01522000
  1658. CC0 EQU X'00' VALUE FOR CONDITION CODE 0 @VM03100 01523000
  1659. CC1 EQU X'10' VALUE FOR CONDITION CODE 1 @VM03100 01524000
  1660. CC2 EQU X'20' VALUE FOR CONDITION CODE 2 @VM03100 01525000
  1661. CC3 EQU X'30' VALUE FOR CONDITION CODE 3 @VM03100 01526000
  1662. * 01527000
  1663. ONE EQU 1 VALUE OF ONE @VM03100 01528000
  1664. * 01529000
  1665. SEGINDEX EQU 1 SEGMENT INDEX VALUE OF 1 @VM03100 01530000
  1666. * 01531000
  1667. INDEX1 EQU 1 INDEXING BY 1 @VM03100 01532000
  1668. INDEX4 EQU 4 INDEXING BY 4 @VM03100 01533000
  1669. * 01534000
  1670. RETPLUS4 EQU 4 VALUE USED FOR RETURNING PLUS 4 @VM03100 01535000
  1671. * 01536000
  1672. SEP00 EQU X'00' SEPARATOR CHARACTER @VM03100 01537000
  1673. * 01538000
  1674. HEX00 EQU X'00' VALUE OF X'00' @VM03100 01539000
  1675. HEXC4 EQU X'C4' HEX VALUE OF X'C4' @VM03100 01540000
  1676. HEX02 EQU X'02' HEX VALUE OF X'02' @VM03100 01541000
  1677. * 01542000
  1678. PAGHDR EQU 2 LENGTH OF PAGHDR @VM03100 01543000
  1679. SWPHDR EQU 8 LENGTH OF SWPHDR @VM03100 01544000
  1680. * 01545000
  1681. EMSG001 EQU 1 ERROR MESSAGE NUMBER 001 @VM03100 01546000
  1682. EMSG002 EQU 2 ERROR MESSAGE NUMBER 002 @VM03100 01547000
  1683. EMSG003 EQU 3 ERROR MESSAGE NUMBER 003 @VM03100 01548000
  1684. EMSG006 EQU 6 ERROR MESSAGE NUMBER 006 @VM03100 01549000
  1685. EMSG013 EQU 13 ERROR MESSAGE NUMBER 013 @VM03100 01550000
  1686. EMSG026 EQU 26 ERROR MESSAGE NUMBER 026 @VM03100 01551000
  1687. EMSG040 EQU 40 ERROR MESSAGE NUMBER 040 @VM03100 01552000
  1688. EMSG044 EQU 44 ERROR MESSAGE NUMBER 044 @VM03100 01553000
  1689. EMSG170 EQU 170 ERROR MESSAGE NUMBER 170 @VM03100 01554000
  1690. EMSG171 EQU 171 ERROR MESSAGE NUMBER 171 @VM03100 01555000
  1691. EMSG172 EQU 172 ERROR MESSAGE NUMBER 172 @VM03100 01556000
  1692. EMSG173 EQU 173 ERROR MESSAGE NUMBER 173 @VM03100 01557000
  1693. EMSG174 EQU 174 ERROR MESSAGE NUMBER 174 @VM03100 01558000
  1694. EMSG177 EQU 177 ERROR MESSAGE NUMBER 177 @VM03100 01559000
  1695. EMSG179 EQU 179 ERROR MESSAGE NUMBER 179 @VM03100 01560000
  1696. EMSG203 EQU 203 ERROR MESSAGE NUMBER 203 @VM03100 01561000
  1697. EMSG300 EQU 300 ERROR MESSAGE NUMBER 300 @VM03100 01562000
  1698. EMSG435 EQU 435 ERROR MESSAGE NUMBER 435 @VM03100 01563000
  1699. VMUSERL EQU 8 LENGHT OF VMUSER FIELD @VA13054 01563500
  1700. SPACE 2 01564000
  1701. LTORG * @VM03100 01565000
  1702. SPACE 01566000
  1703. USERSTOR DSECT @VM03100 01567000
  1704. CYLAREA DS XL2 FILLER @VM03100 01568000
  1705. DEVAREA DS XL2 PLACE FOR DEVICE ADDRESS @VM03100 01569000
  1706. DS 4X FILLER @VM03100 01570000
  1707. MSGBYTE DS XL2 PLACE FOR MESSAGE INFORMATION @VM03100 01571000
  1708. STOPBYTE DS 1X STOP FLAG @VM03100 01572000
  1709. * 01573000
  1710. * BITS DEFINED IN STOPBYTE 01574000
  1711. NOSTOP EQU X'00' NO STOP ON IPL @VM03100 01575000
  1712. IPLSTOP EQU X'80' STOP ON IPL @VM03100 01576000
  1713. EJECT 01577200
  1714. OSVSCOM MSSCOM @VA13054 01577400
  1715. SPACE 1 01577600
  1716. COPY CONBUF @VM03100 01578000
  1717. COPY TREXT @VM03100 01579000
  1718. COPY SHRTABLE @VM03100 01580000
  1719. PSA , @V306638 01581000
  1720. COPY CORE @V306638 01582000
  1721. COPY DEVTYPES @V306638 01583000
  1722. COPY EQU @V306638 01584000
  1723. COPY IOBLOKS @V306638 01585000
  1724. COPY RBLOKS @V306638 01586000
  1725. COPY SAVE @V306638 01587000
  1726. COPY SAVTABLE @V306638 01588000
  1727. COPY SYSTBL @V306638 01589000
  1728. COPY VBLOKS @V306638 01590000
  1729. COPY VMBLOK @V306638 01591000
  1730. END 01592000
ibm/vm370-lib/cp/dmkcfg.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator