Table of Contents

DMKDEH Source

References

Source Listing

DMKDEH.ASSEMBLE.txt
  1. DEH TITLE 'DMKDEH (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 00002000
  3. COPY OPTIONS 00003000
  4. COPY LOCAL 00004000
  5. SPACE 2 00005000
  6. *. 00006000
  7. * MODULE NAME - 00007000
  8. * 00008000
  9. * DMKDEH 00009000
  10. * 00010000
  11. * CONTENTS - 00011000
  12. * 00012000
  13. * DMKDEHIN - 'DEFINE' A VIRTUAL CHANNEL OR VIRTUAL STORAGE 00013000
  14. *. 00014000
  15. SPACE 00015000
  16. DMKDEH CSECT 00016000
  17. SPACE 00017000
  18. DC CL8'DMKDEH' PAGEABLE MODULE IDENTIFIER 00018000
  19. SPACE 00019000
  20. USING SAVEAREA,R13 00020000
  21. USING DMKDEH,R12 00021000
  22. USING VMBLOK,R11 00022000
  23. USING PSA,0 00023000
  24. SPACE 2 00024000
  25. EXTRN DMKCVTDB,DMKCVTBD 00025000
  26. EXTRN DMKUDRFU,DMKUDRMD,DMKUDRRV 00026000
  27. EXTRN DMKCFPRR,DMKPGSPO,DMKBLDRL,DMKBLDRT 00027000
  28. EXTRN DMKERMSG 00028000
  29. EXTRN DMKQCNWT @VA01771 00029000
  30. EJECT 00030000
  31. *. 00031000
  32. * SUBROUTINE NAME - 00032000
  33. * 00033000
  34. * DMKDEHIN - 'DEFINE' (OR REDEFINE) A VIRTUAL CHANNEL/STORAGE 00034000
  35. * 00035000
  36. * FUNCTION - 00036000
  37. * 00037000
  38. * TO DYNAMICALLY ALTER OR AUGMENT THE VIRTUAL MACHINE 00038000
  39. * DEVICE CONFIGURATION OR STORAGE SIZE. 00039000
  40. * 00040000
  41. * COMMAND LINE FORMAT - 00041000
  42. * 00042000
  43. * +--------+---------------------------------------+ 00043000
  44. * | DEFINE | STORAGE <AS> NNNNNK | 00044000
  45. * | | STORAGE <AS> NNM | 00045000
  46. * | | | 00046000
  47. * | | CHANNELS <AS> <SEL|BMX> | 00047000
  48. * +--------+---------------------------------------+ 00048000
  49. * 00049000
  50. * ATTRIBUTES - 00050000
  51. * 00051000
  52. * REENTRANT, PAGEABLE, CALLED VIA SVC 00052000
  53. * 00053000
  54. * ENTRY CONDITIONS - 00054000
  55. * 00055000
  56. * GPR 0 = LENGTH OF ARGUMENT IN COMMAND LINE 00056000
  57. * GPR 1 = ADDRESS OF ARGUMENT 00057000
  58. * GPR 9 = ADDRESS OF COMMAND BUFFER 00058000
  59. * GPR 10 = DUMMY UDEVBLOK ADDRESS 00059000
  60. * GPR 11 = ADDRESS OF USER'S VMBLOK 00060000
  61. * GPR 12 = ADDRESS OF DMKDEHIN 00061000
  62. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00062000
  63. * 00063000
  64. * EXIT CONDITIONS - 00064000
  65. * 00065000
  66. * EXIT TO CALLER (DMKDEF) IF SUCCESSFUL, OR TO DMKERMSG WITH 00066000
  67. * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00067000
  68. EJECT 00068000
  69. * CALLS TO OTHER ROUTINES - 00069000
  70. * 00070000
  71. * DMKCVTDB 00071000
  72. * DMKCVTBD 00072000
  73. * DMKERMSG 00073000
  74. * DMKUDRFU 00074000
  75. * DMKUDRRD 00075000
  76. * DMKUDRRV 00076000
  77. * DMKPGSPO 00077000
  78. * DMKCFPRR 00078000
  79. * DMKCFPRD 00079000
  80. * DMKBLDRL 00080000
  81. * DMKBLDRT 00081000
  82. * DMKQCNWT 00082000
  83. * DMKFREE 00083000
  84. * 00084000
  85. * EXTERNAL REFERENCES - 00085000
  86. * 00086000
  87. * NONE 00087000
  88. * 00088000
  89. * TABLES / WORK AREAS - 00089000
  90. * 00090000
  91. * NONE 00091000
  92. * 00092000
  93. * REGISTER USAGE - 00093000
  94. * 00094000
  95. * GPR 9 = ADDRESS OF COMMAND BUFFER 00095000
  96. * GPR 11 = ADDRESS OF USER'S VMBLOK 00096000
  97. * GPR 12 = BASE REGISTER 00097000
  98. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00098000
  99. * 00099000
  100. * GPRS 0-5 AND 14-15 ARE WORK REGISTERS. 00100000
  101. * 00101000
  102. * GPRS 6-8 AND 10 ARE NOT USED. 00102000
  103. * 00103000
  104. * NOTES - 00104000
  105. * 00105000
  106. * THIS MODULE WAS CREATED TO HOLD LOGIC THAT USED TO BE LOCATED 00106000
  107. * IN DMKDEF WHEN THAT MODULE OUTGREW A PAGE. THIS MODULE 00107000
  108. * ALWAYS EXITS BACK TO DMKDEF (ITS ONLY CALLER). 00108000
  109. * 00109000
  110. EJECT 00110000
  111. * OPERATION - 00111000
  112. * 00112000
  113. * STORAGE REDEFINED VIRTUAL STORAGE 00113000
  114. * STOR " " " 00114000
  115. * CHANNELS REDEFINES VIRTUAL CHANNELS 00115000
  116. * CHAN " " " 00116000
  117. * 1. FOR DEFINE STORAGE, AFTER THE USUAL CHECKS FOR COMMAND 00117000
  118. * VALIDITY, THE USER MACHINE BLOCK IN THE CP DIRECTORY FOR THE 00118000
  119. * USER IS CHECKED TO ENSURE THAT THE DESIRED STORAGE SIZE DOES 00119000
  120. * NOT EXCEED THE MAXIMUM STORAGE SIZE PERMITTED TO THE USER. 00120000
  121. * (IF TOO LARGE, ERROR MESSAGE AND CODE RETURNED). IF OK, THEN 00121000
  122. * ALL TABLES PERTAINING TO THE STORAGE PRESENTLY IN USE FOR THE 00122000
  123. * USER'S VIRTUAL MACHINE ARE RETURNED TO FREE STORAGE, AND NEW 00123000
  124. * SEGMENT, PAGE, AND SWAP TABLES ARE CREATED BASED ON THE 00124000
  125. * REQUESTED STORAGE SIZE. 00125000
  126. * 00126000
  127. * 2. FOR DEFINE CHANNELS, AFTER THE VALIDATION OF THE COMMAND, 00127000
  128. * DMKCFPRR IS CALLED TO RESET THE VIRTUAL MACHINE. THE VIRTUAL 00128000
  129. * MACHINES CONTROL BLOCKS (I/O) ARE THE SCANNED, AND THE VIRTUAL 00129000
  130. * CHANNELS ARE FLAGGED ACCORDING TO THE OPTION REQUESTED. ANY 00130000
  131. * VIRTUAL CHANNEL THAT HAS A CTCA ATTACHED TO IT WILL BE FLAGGED 00131000
  132. * AS BEING A SELECTOR CHANNEL. 00132000
  133. * 00133000
  134. * RESPONSES - 00134000
  135. * 00135000
  136. * 'STORAGE = NNNNNK' 00136000
  137. * 'CHANNELS = XXX' 00137000
  138. * 00138000
  139. * NOTE - NORMAL RESPONSES WILL BE SUPPRESSED IF USER ISSUED 00139000
  140. * "SET IMSG OFF" COMMAND. 00140000
  141. * 00141000
  142. * ERROR MESSAGES - 00142000
  143. * 00143000
  144. * DMKDEH025E STORAGE MISSING OR INVALID 00144000
  145. * DMKDEH026E OPERAND MISSING OR INVALID 00145000
  146. * DMKDEH092E DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED 00146000
  147. * DMKDEH094E STORAGE EXCEEDS ALLOWED MAXIMUM 00147000
  148. *. 00148000
  149. EJECT 00149000
  150. DMKDEHIN RELOC , DEFINE OR RE-DEFINE VIRTUAL DEVICE 00150000
  151. USING DMKDEH,R12 00151000
  152. USING UDEVBLOK,R10 .... 00152000
  153. SPACE 00153000
  154. CLI UDEVTYPC,X'FF' IS IT 'DEFINE STORAGE' ? 00154000
  155. BE DEFCORE YES 00155000
  156. B DEFCHAN ONLY OTHER CHOICE IS DEFINE CHAN 00156000
  157. EJECT 00157000
  158. DEFCORE EQU * RE-DEFINE VIRTUAL MEMORY SIZE 00158000
  159. LR R2,R0 PARM LENGTH 00159000
  160. BCTR R2,0 ...MINUS ONE 00160000
  161. LA R3,0(R2,R1) LOOK FOR THE "K" 00161000
  162. LA R4,10(0) SHIFT COUNT FOR 'K' PARM 00162000
  163. CLI 0(R3),C'K' ...WHICH MUST BE THERE 00163000
  164. BE DEFCOREK YES - MULTIPLIER = 1024 BYTES 00164000
  165. LA R4,18(0) SHIFT COUNT FOR 'M' PARM 00165000
  166. CLI 0(R3),C'M' THIS IS THE OTHER CHOICE 00166000
  167. BNE INVCORE SORRY 00167000
  168. DEFCOREK EQU * 00168000
  169. LR R0,R2 COUNT OF PARM - "K" 00169000
  170. C R0,F5 PARM COUNT OVER 5 ? (00000K) 00170000
  171. BH INVCORE YES -- INVALID STORAGE VALUE 00171000
  172. CALL DMKCVTDB CONVERT STORAGE SIZE 00172000
  173. BNZ INVCORE 00173000
  174. LTR R1,R1 STORAGE VALUE OF ZERO ? 00174000
  175. BZ INVCORE YES - INVALID STORAGE VALUE 00175000
  176. CLI 0(R3),C'M' DEFINING BY MEG? 00176000
  177. BNE MUSTBEK @VA04509 00177000
  178. CL R1,F16 ASKING FOR MORE THAN 16 MEG? @VA04509 00178000
  179. BH INVCORE YES - CANT DO @VA04509 00179000
  180. B NOROUND @VA04509 00180000
  181. MUSTBEK CL R1,F8 AT LEAST MINIMUM 8K? @VA04509 00181000
  182. BL INVCORE NO 00182000
  183. CL R1,=F'16384' ASKING FOR MORE THAN 16 MEG? @VA04509 00183000
  184. BH INVCORE YES - CANT DO @VA04509 00184000
  185. LA R1,3(,R1) ROUND UP TO PAGE BOUNDARY 00185000
  186. SRL R1,2(0) ... 00186000
  187. NOROUND EQU * 00187000
  188. SLL R1,2(R4) 'K' = 1024 BYTES, 'M' = 1,048,576 BYTES 00188000
  189. ST R1,DEVADDR SAVE IT HERE FOR NOW 00189000
  190. CL R1,VMSTOR MAYBE I CAN GET AWAY WITH A MSG @VA05181 00190000
  191. BE STORMSG JUST NEEDS MSG @V408246 00191000
  192. BL SKIPDIR IF LESS, THEN NO NEED TO CHECK @V408246 00192000
  193. * DIRECTORY 00193000
  194. * SEE IF SPECIFIED SIZE EXCEEDS USER MAXIMUM 00194000
  195. LA R0,UDBFSIZE DIRECTORY BUFFER BLOCK 00195000
  196. CALL DMKFREE 00196000
  197. LR R2,R1 00197000
  198. USING UDBFBLOK,R2 00198000
  199. XC UDBFVADD(8),UDBFVADD CLEAR LAST DBL-WD 00199000
  200. LA R1,VMUSER POINT TO USERID 00200000
  201. LA R0,8 ...LENGTH 00201000
  202. CALL DMKUDRFU FIND HIS DIRECTORY 00202000
  203. LA R1,UDIRDISP-UDIRBLOK(,R2) POINT TO 'UDIRDISP' 00203000
  204. CALL DMKUDRMD READ NEXT BLOCK (UMACBLOK) @V407466 00204000
  205. L R4,UMACMCOR-UMACBLOK(,R2) GET MAXIMUM CORE SIZE 00205000
  206. DROP R2 00206000
  207. CALL DMKUDRRV RELEASE HIS DIRECTORY 00207000
  208. LR R1,R2 ADDRESS OF UDBFBLOK 00208000
  209. LA R0,UDBFSIZE ITS SIZE 00209000
  210. CALL DMKFRET GIVE IT BACK 00210000
  211. CL R4,DEVADDR CHECK AGAINST SPECIFIED SIZE 00211000
  212. BL EXCESIV HE WANTS TOO MUCH 00212000
  213. SKIPDIR EQU * @V304635 00213000
  214. SLR R2,R2 RELEASE ALL OF USERS STORAGE. @V304635 00214000
  215. CALL DMKCFPRR RESET THE VM @V304635 00215000
  216. OI VMQSTAT,VMINHMIG PREVET MIGRATION @V408246 00216000
  217. CALL DMKPGSPO,PARM=UNLOCK RELEASE ALL STORAGE @V304735 00217000
  218. L R1,VMSIZE GET OLD STORAGE SIZE @V304635 00218000
  219. SRL R1,12 RANGE OF STORAGE SIZE. @V304635 00219000
  220. BCTR R1,R0 MINUS 1 PAGE @V304635 00220000
  221. CALL DMKBLDRL,PARM=DELPAGES+DELSEGS RELEASE OLD .. @V304635 00221000
  222. L R1,DEVADDR NEW STORAGE SIZE @V304635 00222000
  223. ST R1,VMSIZE .... @V304635 00223000
  224. ST R1,VMSTOR SAVE MEMORY SIZE.. @V304635 00224000
  225. SRL R1,12 RANGE FOR 'DMKBLD' @V304635 00225000
  226. BCTR R1,R0 MINUS 1 PAGE. @V304635 00226000
  227. LA R2,NEWSEGS+VRALOC BUILD SEGEMNTS ONLY @V408246 00227000
  228. TM VMPSTAT,VMREAL V=R POSSIBLE ? @V408246 00228000
  229. BZ *+8 NO, R2 ALL SET @V408246 00229000
  230. LA R2,NEWPAGES(,R2) YES, BUILD ALL TABLES @V408246 00230000
  231. CALL DMKBLDRT @V408246 00231000
  232. NI VMQSTAT,255-VMINHMIG ALLOW MIGRATION @V408246 00232000
  233. * TYPE VERIFICATION MSG IF INFO MSGS NOT SUPPRESSED BY USER 00233000
  234. STORMSG EQU * @V2A3663 00234000
  235. TM VMMLVL2,VMMIMSG USER WANT THE MSG? @V2A3663 00235000
  236. BZ DEFEXIT NOPE @V2A3663 00236000
  237. MVI SAVEWRK2,X'40' CLEAR BUFFER 00237000
  238. MVC SAVEWRK2+1(31),SAVEWRK2 ... 00238000
  239. MVC SAVEWRK2(8),DEFLAST "STORAGE " 00239000
  240. MVI SAVEWRK4,C'=' ... 00240000
  241. L R1,VMSTOR NEW CORE SIZE @VA06246 00241000
  242. SRL R1,10(0) DIVIDE BY 1024 00242000
  243. CALL DMKCVTBD 00243000
  244. STC R0,SAVEWRK4+2 USE FIVE-DIGIT NUMBER 00244000
  245. STCM R1,B'1111',SAVEWRK4+3 ... 00245000
  246. MVI SAVEWRK5+3,C'K' ... 00246000
  247. LA R0,SAVEWRK6-SAVEWRK2 MESSAGE LENGTH 00247000
  248. LA R1,SAVEWRK2 MESSAGE ADDRESS @VM01072 00248000
  249. CALL DMKQCNWT,PARM=NORET GO GIVE HIM THE MESSAGE 00249000
  250. B DEFEXIT CLEAN UP AND BEAT IT 00250000
  251. EJECT 00251000
  252. DEFCHAN MVI DEFLAGS,X'00' CLEAR OUT FLAG BYTE @VM01072 00252000
  253. CL R0,F3 ARG = 3 BYTES LONG? @VM01072 00253000
  254. BNE INVTYPE NOPE, TOO BAD @VM01072 00254000
  255. CLC 0(3,R1),=C'SEL' REQUEST FOR SELECTOR CHANNEL @VM01072 00255000
  256. BNE *+8 NOPE, SKIP @VM01072 00256000
  257. MVI DEFLAGS,VCHSEL YUP, SET FOR SELECTOR @VM01072 00257000
  258. CLC 0(3,R1),=C'BMX' REQUEST FOR BLOCK MPX? @VM01072 00258000
  259. BNE *+8 NO - @VA01771 00259000
  260. MVI DEFLAGS,VCHBMX YES - FLAG AS SUCH. @VA01771 00260000
  261. CLI DEFLAGS,X'00' WAS IT SEL OR BMX ? @VA01771 00261000
  262. BE INVTYPE NO - SEND ERROR MESSAGE @VA01771 00262000
  263. CALL DMKCFPRR RESET THE VIRTUAL MACHINE. @VA01771 00263000
  264. NI VMFSTAT,X'FF'-VMFBMX TURN OFF BMX BIT @VA01771 00264000
  265. USING VCHBLOK,R6 @VA01771 00265000
  266. USING VCUBLOK,R7 @VA01771 00266000
  267. CLI DEFLAGS,VCHBMX BLOCK MULTIPLEXER CHANNEL @VA01771 00267000
  268. BNE *+8 NO @VA01771 00268000
  269. OI VMFSTAT,VMFBMX SET UP FOR QUERY COMMAND. @VA01771 00269000
  270. SLR R3,R3 CLEAR @VA01771 00270000
  271. SLR R1,R1 ZERO VMCHTBL INDEX REG. @VA01771 00271000
  272. LA R4,2 LOAD INDEX INCREMENT @VA01771 00272000
  273. LA R5,30 LOAD INDEX COMPARAND @VA01771 00273000
  274. DEFCH LH R6,VMCHTBL(R1) LOAD NEXT CHANNEL BLOK INDEX. @VA01771 00274000
  275. LTR R6,R6 DOES CHANNEL EXIST. @VA01771 00275000
  276. BM DEFXCH NO - INDEX TO NEXT ONE. @VA01771 00276000
  277. AL R6,VMCHSTRT GET ADDRESS OF CHANNEL BLOK @VA01771 00277000
  278. CH R3,VCHADD IS THIS CHANNEL ZERO ? @VA01771 00278000
  279. BE DEFXCH YES - GO GET NEXT CHANNEL BLOK. @VA01771 00279000
  280. MVC VCHTYPE,DEFLAGS SET IT PER DEFINE CMD.. @VA01771 00280000
  281. SLR R2,R2 ZERO VCHCUTBL INDEX @VA01771 00281000
  282. DEFCU LH R7,VCHCUTBL(R2) LOAD NEXT CU BLOK INDEX. @VA01771 00282000
  283. LTR R7,R7 DOES CONTROL UNIT EXIST. @VA01771 00283000
  284. BM DEFXCU NO - INDEX TO NEXT ONE. @VA01771 00284000
  285. AL R7,VMCUSTRT POINT TO VCUBLOK @VA01771 00285000
  286. TM VCUTYPE,VCUCTCA CHANNEL TO CHANNEL ADAPTER CU ? @VA01771 00286000
  287. BZ DEFXCU NO - GET NEXT CONTROL UNIT @VA01771 00287000
  288. MVI VCHTYPE,VCHSEL MARK CHANNEL AS SELECTOR. @VA01771 00288000
  289. B DEFXCH NOW GET NEXT CHANNEL TO PROCESS. @VA01771 00289000
  290. SPACE 1 00290000
  291. DEFXCU BXLE R2,R4,DEFCU BR. IF MORE CU ON THIS CHANNEL. @VA01771 00291000
  292. DEFXCH BXLE R1,R4,DEFCH BR. IF MORE CHANNELS ON THIS VM. @VA01771 00292000
  293. TM VMMLVL2,VMMIMSG USER WANT THE MSG?? @V2A3663 00293000
  294. BZ CHXIT NO @V2A3663 00294000
  295. MVC SAVEWRK2(14),=C'CHANNELS = BMX' ASSUME BMX @V2A3663 00295000
  296. TM VMFSTAT,VMFBMX ARE THEY BLOCK MULTIPLEXER ? @VA01771 00296000
  297. BO *+10 YES - PUT OUT RESPONSE @VA01771 00297000
  298. MVC SAVEWRK2+11(3),=C'SEL' NO - CHANGE TO SELECTOR @VA01771 00298000
  299. LA R0,14 MESSAGE LENGTH @VA01771 00299000
  300. LA R1,SAVEWRK2 SET BUFFER ADDRESS @VA01771 00300000
  301. CALL DMKQCNWT,PARM=NORET @VA01771 00301000
  302. CHXIT EXIT @V2A3663 00302000
  303. EJECT 00303000
  304. DEFEXIT EQU * EXIT WITH NO SPECIAL SETTINGS 00304000
  305. EXIT 00305000
  306. EJECT 00306000
  307. INVTYPE EQU * OPERAND MISSING OR INVALID 00307000
  308. LA R2,026(,0) MSG= DMKDEH026E 00308000
  309. B MSGONLY NO EXTRA DATA 00309000
  310. INVCORE EQU * STORAGE MISSING OR INVALID 00310000
  311. LA R2,025(,0) MSG= DMKDEH025E 00311000
  312. B MSGONLY NO EXTRA DATA 00312000
  313. EXCESIV EQU * STORAGE EXCEEDS ALLOWED MAXIMUM 00313000
  314. LA R2,094(,0) MSG= DMKDEH094E 00314000
  315. SPACE 00315000
  316. MSGONLY EQU * MSG WITHOUT VARIABLE FIELDS 00316000
  317. SLR R0,R0 00317000
  318. SLR R1,R1 00318000
  319. B *+8 SKIP OVER 'LA' FOR R1 00319000
  320. MSGSEND EQU * SEND ERROR MESSAGE 00320000
  321. LA R1,SAVEWRK2 VARIABLE DATA LOCATION 00321000
  322. MSGIDBLD EQU * BUILD MOD ID FOR MSG @V60B6B8 00322000
  323. ICM R0,B'1110',DMKDEH+3 MODULE IDENTIFIER 00323000
  324. CALL DMKERMSG BUILD + TYPE ERROR MESSAGE 00324000
  325. * "DMKERMSG" WILL NOT RETURN 00325000
  326. SPACE 2 00326000
  327. * BITS DEFINED FOR CALL TO DMKPGS 00327000
  328. UNLOCK EQU X'02' UNLOCK ANY 'LOCKED' PAGES @V304735 00328000
  329. SPACE 2 00329000
  330. DEFLAST DC C'STORAGE ' 00330000
  331. DEFENTS EQU *-DEFLAST LENGTH OF ONE ENTRY 00331000
  332. EJECT 00332000
  333. LTORG 00333000
  334. EJECT 00334000
  335. COPY SAVE 00335000
  336. SPACE 00336000
  337. * FIELDS DEFINED WITHIN THE SAVEAREA : 00337000
  338. * 00338000
  339. DEFLAGS EQU SAVEWRK1 INTERNAL FLAGS FOR 'DEFINE' 00339000
  340. DEVADDR EQU SAVEWRK2 DEVICE ADDRESS FOR RE-DEFINE 00340000
  341. * EQUATES DEFINING FIELDS WITHIN THE SAVE AREA 00341000
  342. ************************************************************ 00342000
  343. FIRSTADR EQU SAVEWRK2 @V60B6B8 00343000
  344. LASTADDR EQU SAVEWRK3 @V60B6B8 00344000
  345. CURRADDR EQU SAVEWRK4 @V60B6B8 00345000
  346. FIRSTBUF EQU SAVEWRK5 @V60B6B8 00346000
  347. CURRBUFF EQU SAVEWRK6 @V60B6B8 00347000
  348. RDEVADR1 EQU SAVEWRK7 @V60B6B8 00348000
  349. ADDR2 EQU SAVEWRK8 @V60B6B8 00349000
  350. SPACE 00350000
  351. ************************************************************ 00351000
  352. EJECT 00352000
  353. * 00353000
  354. EJECT 00354000
  355. COPY VMBLOK 00355000
  356. COPY VBLOKS 00356000
  357. COPY RBLOKS 00357000
  358. COPY IOBLOKS 00358000
  359. COPY UDIRECT 00359000
  360. COPY DEVTYPES 00360000
  361. COPY EQU 00361000
  362. PSA 00362000
  363. END DMKDEH 00363000