Table of Contents

DMKHVC Source

References

Source Listing

DMKHVC.ASSEMBLE.txt
  1. HVC TITLE 'DMKHVC (CP) VM/370 - RELEASE 6' 00001000
  2. COPY OPTIONS 00003000
  3. COPY LOCAL 00004000
  4. *. 00005000
  5. * MODULE NAME - 00006000
  6. * 00007000
  7. * DMKHVC 00008000
  8. * 00009000
  9. * CONTENTS - 00010000
  10. * 00011000
  11. * DMKHVCAL - VIRTUAL DIAGNOSE INSTRUCTION PROCESSING 00012000
  12. * DMKHVCPC - DATA TABLE - DASD PAGES/CYLINDER 00013000
  13. *. 00014000
  14. SPACE 2 00015000
  15. DMKHVC START 00016000
  16. SPACE 00017000
  17. ENTRY DMKHVCAL,DMKHVCPC @VM03170 00018000
  18. ENTRY DMKHVCDI 00020000
  19. SPACE 00021000
  20. EXTRN DMKSSSHV @V60B6B8 00021010
  21. EXTRN DMKDRDSY,DMKPRGSM 00022000
  22. EXTRN DMKCCWTR,DMKUNTFR @VA10860 00023100
  23. EXTRN DMKDGDDK,DMKCFMEN 00024000
  24. EXTRN DMKCFGCL,DMKPGSSS @VM03170 00025000
  25. EXTRN DMKPSASP @V202232 00026000
  26. EXTRN DMKGIOEX @VM03170 00027000
  27. EXTRN DMKSCNVU @VM03170 00029000
  28. EXTRN DMKCVTDB @V213135 00031000
  29. EXTRN DMKTMRPT 00033000
  30. EXTRN DMKHVDAL @VM03170 00034000
  31. EXTRN DMKHVEAL @VA11268 00034100
  32. EXTRN DMKCFMBK,DMKCVTDT 00035000
  33. EXTRN DMKVSIEX @VA05037 00036000
  34. EXTRN DMKVMCFC @V387045 00037100
  35. EXTRN HDKD7CEX HRC065DK 00037500
  36. EXTRN HDKD8CDC HRC072DK 00037600
  37. EJECT 00038000
  38. *. 00039000
  39. * SUBROUTINE NAME - 00040000
  40. * 00041000
  41. * DMKHVCAL 00042000
  42. * 00043000
  43. * FUNCTION - 00044000
  44. * 00045000
  45. * TO PERFORM SERVICES FOR VIRTUAL MACHINES AS REQUESTED 00046000
  46. * VIA THE DIAGNOSE INSTRUCTION. 00047000
  47. * 00048000
  48. * ATTRIBUTES - 00049000
  49. * 00050000
  50. * REENTRANT, RESIDENT, ENTERED VIA 'GOTO' FROM DMKPRVLG 00051000
  51. * 00052000
  52. * ENTRY POINTS - 00053000
  53. * 00054000
  54. * DMKHVCAL 00055000
  55. * 00056000
  56. * ENTRY CONDITIONS - 00057000
  57. * 00058000
  58. * GPR 12 = ADDRESS OF DMKHVCAL 00059000
  59. * GPR 11 = ADDRESS OF VMBLOK 00060000
  60. * 'VMINST' FIELD CONTAINS THE DIAGNOSE INSTRUCTION IMAGE 00061000
  61. * 00062000
  62. * EXIT CONDITIONS - 00063000
  63. * 00064000
  64. * DEPENDENT ON THE SERVICE PERFORMED. CONTROL RETURNS 00065000
  65. * TO THE USER VIA DMKDSPCH. 00066000
  66. * 00067000
  67. * CALLS TO OTHER ROUTINES - 00068000
  68. * 00069000
  69. * DMKCFMBK - TO PUT VIRTUAL MACHINE IN CONSOLE FUNCTION MODE 00070000
  70. * DMKCFMEN - TO EXECUTE VIRTUAL CONSOLE FUNCTIONS 00071000
  71. * DMKCVTDT - TO OBTAIN THE DATE AND TIME IN EBCDIC 00072000
  72. * DMKDGDDK - TO PERFORM STANDARD DASD I/O 00073000
  73. * DMKDSPCH - TO RE-DISPATCH THE SERVICED USER 00074000
  74. * DMKFREE - TO OBTAIN FREE STORAGE FOR BUFFERS 00075000
  75. * DMKGIOEX - TO PERFORM GENERAL SHORT-CUT I/O 00076000
  76. * DMKPGSSS - TO RELEASE A PORTION OF VIRTUAL STORAGE 00077000
  77. * DMKCGFCL - TO PROCESS THE REQUEST FOR A NAMED SYSTEM 00078000
  78. * DMKCVTDB - TO CONVERT DECIMAL RELEASE NUMBERS TO BINARY 00079000
  79. * DMKPRGSM - TO SIMULATE A PROGRAM INTERRUPT 00080000
  80. * DMKPSASP - TO EXAMINE VIRTUAL STORAGE PROTECTION KEYS 00081000
  81. * DMKPTRAN - TO PROCESS PAGING REQUESTS 00082000
  82. * DMKRPAGT - TO PROVIDE A USER WITH ONE PAGE OF SYSTEM DATA 00083000
  83. * DMKSCNRU - TO LOCATE THE SYSRES RDEVBLOK 00084000
  84. * DMKSCNVU - TO LOCATE VIRTUAL I/O BLOCKS 00085000
  85. * DMKTMRPT - TO GET USER'S VIRTUAL PROBLEM TIME USED 00086000
  86. * DMKVSIEX - TO PERFORM DIAG 3270 WRITE 00087000
  87. * DMKHVDAL - PROCESS DIAGNOSE CALLS NOT HANDLED IN THIS MODULE 00088000
  88. * CONTROL PROGRAM IMAGE 00089000
  89. * DMKHVEAL - PROCESS DIAGNOSE X'002C' AND X'0030' 00089050
  90. * DMKVMCFC - PROCESS VMCF REQUEST 00089100
  91. * HDKD7CEX - PROCESS LDF REQUEST HRC065DK 00089200
  92. * HDKD8CDC - GET 3270 DEVICE DEPENDENT CHARACTERISTICS HRC072DK 00089300
  93. EJECT 00090000
  94. * 00091000
  95. * EXTERNAL REFERENCES - 00092000
  96. * 00093000
  97. * DMKSYSRM - REAL MACHINE SIZE IN BYTES 00094000
  98. * DMKCPEID - VM/370 RELEASE AND VERSION NUMBER FOR STIDX 00095000
  99. * 00096000
  100. * TABLES / WORK AREAS - 00097000
  101. * 00098000
  102. * VMBLOK, VDEVBLOK, RDEVBLOK, VMCPARM 00099000
  103. * 00100000
  104. * 00101000
  105. * REGISTER USAGE - 00102000
  106. * 00103000
  107. * GPR 12 = BASE REGISTER FOR DMKHVCAL 00104000
  108. * GPR 11 = VMBLOK ADDRESSABILITY 00105000
  109. * GPR 9 = INTERNAL LINK REGISTER 00106000
  110. * GPR 6 = ADDRESS OF DIAGNOSE 'R2' VALUE 00107000
  111. * GPR 5 = ADDRESS OF DIAGNOSE 'R1' VALUE 00108000
  112. * 00109000
  113. * NOTES - 00110000
  114. * 00111000
  115. * AN ARTIFICIAL PROGRAM INTERRUPT (PRIVILEGED OPERATION 00112000
  116. * EXCEPTION WHILE IN VIRTUAL SUPERVISOR STATE) IS GENER- 00113000
  117. * ATED BY DMKHVCAL WHENEVER A VIRTUAL MACHINE REQUESTS 00114000
  118. * A SERVICE WHICH IS RESTRICTED TO COMMAND CLASSES OTHER 00115000
  119. * THAN THOSE ALLOWED TO THE VIRTUAL MACHINE. 00116000
  120. * 00117000
  121. * OPERATION - 00118000
  122. * 00119000
  123. * THE FUNCTION CODE CONTAINED IN THE ADDRESS FIELD OF THE 00120000
  124. * DIAGNOSE INSTRUCTION IS EXAMINED FOR VALIDITY. 00121000
  125. * A SPECIFICATION EXECPTION IS REFLECTED TO THE VIRTUAL 00122000
  126. * MACHINE IF THE CODE IS UNRECOGNIZED OR NOT A MULTIPLE 00123000
  127. * OF 4. A PRIVILEGED-OPERATION INTERRUPT IS GENERATED IF A 00124000
  128. * RESTRICTED SERVICE IS REQUESTED BY THE VIRTUAL MACHINE. 00125000
  129. * 00126000
  130. * SERVICES AVAILABLE VIA VIRTUAL DIAGNOSE ARE AS FOLLOWS: 00127000
  131. * 00128000
  132. * CODE = X'0000' STORE EXTENDED ID - STIDX - (ANY CLASS) 00129000
  133. * 'R1' = ADDRESS OF A DOUBLE WORD ALIGNED BUFFER IN VIRTUAL 00130000
  134. * STORAGE 00131000
  135. * 'R2' = BYTE COUNT OF INFORMATION TO BE STORED AT THE VIRTUAL 00132000
  136. * STORAGE ADDRESS SPECIFIED BY 'R1' IN THE FOLLOWING FORMAT: 00133000
  137. * +---------------------------------------+ 00134000
  138. * | VM/370 | 00135000
  139. * +--------------+----+---------+---------+ 00136000
  140. * | LEVEL | VC | MCEL | IPUADDR | 00137000
  141. * +--------------+----+---------+---------+ 00138000
  142. * | USERID | 00139000
  143. * +---------------------------------------+ 00140000
  144. * 00141000
  145. * THE FIELDS STORED ARE DEFINED AS FOLLOWS: 00142000
  146. * VM/370 - APPEARS AS SHOWN, LEFT JUSTIFIED AND PADDED 00143000
  147. * WITH BLANKS 00144000
  148. * LEVEL - THE VERSION, LEVEL AND PLC TAPE NUMBER 00145000
  149. * OF THE HYPERVISOR IN HEX. EACH FIELD OCCUPIES 00146000
  150. * ONE BYTE AND IS OBTAINED FROM THE SYSTEM ID FIELD 00147000
  151. * IN THE MODULE DMKCPEID 00148000
  152. * VC - THE VERSION CODE RETURNED BY A STIDP EXECUTED 00149000
  153. * BY THE HYPERVISOR (VM/370) 00150000
  154. * MCEL - THE MAXIMUM MCEL RETURNED BY THE STIDP 00151000
  155. * IPUADDR - THE PROCESSOR ADDRESS RETURNED BY A STAP 00152000
  156. * EXECUTED BY THE HYPERVISOR - = TO 0 IF EXECUTED ON 00153000
  157. * A VIRTUAL OR REAL UNIPROCESSOR 00154000
  158. * USERID - THE VM USERID OF THE VIRTUAL MACHINE EXECUTING 00155000
  159. * THE STIDX 00156000
  160. * 00157000
  161. * IF THE HYPERVISOR ITSELF IS EXECUTING IN A VIRTUAL MACHINE, 00158000
  162. * THE EXTENDED ID RETURNED BY A STIDX EXECUTED BY THE 00159000
  163. * HYPERVISOR IS APPENDED TO THE INFORMATION DESCRIBED ABOVE. 00160000
  164. * NOTE THAT THIS DEFINITION DIFFERS FROM THAT DESCRIBED IN 00161000
  165. * AR3799-01 IN THE AREA OF ALIGNMENT; ALSO, AN ARBITRARY LIMIT 00162000
  166. * OF FIVE LEVELS OF HYPERVISION HAS BEEN IMPOSED. 00163000
  167. * 00164000
  168. * 00165000
  169. * CODE = X'0004' EXAMINE REAL STORAGE LOCATIONS (CLASS C OR E) 00166000
  170. * 'R1' = ADDRESS OF A LIST OF REQUESTED DATA WORD ADDRESSES 00167000
  171. * 'R2' = COUNT OF FULL-WORD ENTRIES IN THE LIST 00168000
  172. * 'R2'+1 = ADDRESS OF A RESULT TABLE 00169000
  173. * 00170000
  174. * SPECIAL NOTE: SINCE THIS DIAGNOSE SERVICE IS INTENDED FOR 00171000
  175. * SYSTEM PERFORMANCE MONITORING, THE REQUEST AND RESULT TABLES 00172000
  176. * MUST BE IN THE SAME PAGE OF VIRTUAL STORAGE, AND THAT PAGE 00173000
  177. * MUST BE RESIDENT IN REAL STORAGE AT THE TIME THE DIAGNOSE IS 00174000
  178. * EXECUTED ( THIS IS GUARANTEED IF THE INSTRUCTION ITSELF IS 00175000
  179. * ALSO IN THE SAME PAGE). BRINGING VIRTUAL STORAGE PAGES INTO 00176000
  180. * REAL STORAGE FOR PROCESSING THIS REQUEST WOULD AT BEST 00177000
  181. * INFLUENCE, IF NOT INVALIDATE, ANY PERFORMANCE DATA GATHERED. 00178000
  182. * 00179000
  183. * FOR EACH ADDRESS ENTRY IN THE REQUEST TABLE, DMKHVC WILL 00180000
  184. * PLACE A FULL-WORD OF DATA FROM THE SPECIFIED LOCATION 00181000
  185. * IN REAL STORAGE, INTO THE RESULT TABLE SLOT CORRESPON- 00182000
  186. * DING TO THE ADDRESS ENTRY. WHEN EITHER ALL REQUESTS ARE 00183000
  187. * PROCESSED, THE END OF THE VIRTUAL STORAGE PAGE IS REACHED, 00184000
  188. * OR AN ADDRESS OUTSIDE OF REAL STORAGE IS ENCOUNTERED, 00185000
  189. * PROCESSING IS TERMINATED AND THE VIRTUAL MACHINE IS 00186000
  190. * RE-DISPATCHED VIA DMKDSPCH. 00187000
  191. * 00188000
  192. * CODE = X'0008' VIRTUAL CONSOLE FUNCTION INTERFACE (CLASS G) 00189000
  193. * 'R1' = ADDRESS OF A COMMAND-LINE BUFFER 00190000
  194. * 'R2' = BYTE 0 - FLAGS 00190600
  195. * BYTES 1-3 - BUFFER LENGTH 00191200
  196. * 00192000
  197. * THE FLAG BITS ARE USED AS FOLLOWS: 00192200
  198. * BIT MEANING 00192400
  199. * --- ----------------------------------- 00192600
  200. * 0 THE VIRTUAL MACHINE ISSUING THIS 00192800
  201. * DIAGNOSE DESIRES PASSWORD-ON-THE- 00193000
  202. * COMMAND-LINE SUPPRESSION. 00193200
  203. * 1-7 RESERVED 00193400
  204. * 00193600
  205. * IF FLAG BIT 0 IS ON, THE VMNPWOCL BIT IN THE 00193800
  206. * VMBLOK IS TURNED ON. 00194000
  207. * 00194010
  208. * IF FLAG BIT 1 IS ON, THE COMMAND RESPONSE IS TO BE PLACED 00194020
  209. * INTO VIRTUAL MEMORY RATHER THAN WRITTEN TO THE CONSOLE. IN 00194030
  210. * THIS CASE NEITHER 'R1' OR 'R2' CAN BE R15, AND 00194040
  211. * 00194050
  212. * 'R1' = ADDRESS OF COMMAND STRING 00194060
  213. * 'R2' = LENGTH OF COMMAND STRING 00194070
  214. * 'R1+1' = ADDRESS OF BUFFER TO RECEIVE COMMAND RESPONSES 00194080
  215. * ADDRESS CANNOT = 0, BUT CAN CROSS A PAGE 00194090
  216. * 'R2+1' = LENGTH OF 'R1+1' BUFFER. MUST BE >0 AND =<8192 00194100
  217. * 00194110
  218. * THE BUFFER ADDRESS AND DATA LENGTH ARE THEN EXAMINED 00194200
  219. * FOR VALIDITY. IF BIT 1 OF THE FLAG BYTE IS ON, THEN VALIDITY 00194400
  220. * CHECK RESPONSE BUFFER ADDRESS AND LENGTH AS SPECIFIED IN 00194500
  221. * 'R1+1' AND 'R2+1'. IF LENGTH OF THE COMMAND BUFFER >132, 00194600
  222. * A SPECIFICATION EXCEPTION IS GENERATED. IF THE ADDRESS 00195000
  223. * IS INVALID, AN ADRESSING EXCEPTION IS GENERATED. 00196000
  224. * IF A ZERO LENGTH FIELD IS SPECIFIED, THE VIRTUAL 00197000
  225. * MACHINE IS PLACED IN CONSOLE FUNCTION MODE VIA A CALL TO 00198000
  226. * DMKCFMBK, AND EXIT IS VIA DMKDSPCH. 00199000
  227. * FOR A VALID, NON-ZERO BUFFER LENGTH, THE COMMAND 00200000
  228. * DATA IS MOVED FROM VIRTUAL STORAGE INTO REAL FREE STORAGE 00201000
  229. * AND THE CONSOLE FUNCTION IS EXECUTED VIA A CALL TO 00202000
  230. * DMKCFMEN. ANY ERROR CODE RESULTING FROM THE EXECUTION 00203000
  231. * IS PASSED BACK TO THE VIRTUAL MACHINE IN THE 'R2' FIELD. 00204000
  232. * IF ALL RESPONSES FIT INTO THE RESPONSE BUFFER, THEN 00204100
  233. * SET CC = 0, ADN 'R2+1' = NUMBER OF CHARACTERS IN RESPONSE 00204200
  234. * IF RESPONSES DID NOT FIT IN THE BUFFER, THEN SET CC = 1, 00204300
  235. * AND 'R2=1' = AMOUNT OF THE OVERFLOW. 00204400
  236. * 00205000
  237. * CODE = X'000C' VIRTUAL "CHRONOLOG" CLOCK (CLASS G) 00206000
  238. * 'R1' = ADDRESS OF A 32-BYTE BUFFER AREA, DBL-WD ALIGNED 00207000
  239. * 00208000
  240. * DMKHVCAL PLACES INTO THE SPECIFIED AREA 32 BYTES 00209000
  241. * OF INFORMATION, IN THE FOLLOWING FORMAT: 00210000
  242. * +----------+----------+----------+----------+ 00211000
  243. * | MM/DD/YY | HH:MM:SS | VIRTCPU | TOTALCPU | 00212000
  244. * +----------+----------+----------+----------+ 00213000
  245. * WHERE THE DATE AND TIME ARE EBCDIC DOUBLE-WORD FIELDS, 00214000
  246. * AND VIRTUAL AND TOTAL CPU TIME ARE DBL-WORD, UNSIGNED 00215000
  247. * INTEGERS IN MICRO-SECOND UNITS. RETURN IS VIA DMKDSPCH. 00216000
  248. * 00217000
  249. * CODE = X'0010' RELEASE VIRTUAL STORAGE PAGES (CLASS G) 00218000
  250. * 'R1' = START ADDRESS OF FIRST PAGE TO BE RELEASED 00219000
  251. * 'R2' = START ADDRESS OF LAST PAGE TO BE RELEASED 00220000
  252. * 00221000
  253. * BOTH ADDRESSES ARE EXAMINED FOR ALIGNMENT AND VALIDITY. 00222000
  254. * DMKPGSPP IS CALLED TO PERFORM THE ACTUAL PAGE RELEASE. 00223000
  255. * 00224000
  256. * CODE = X'0014' INTERFACE TO INPUT SPOOL FILES (CLASS G) 00225000
  257. * 'R1','R2' AS REQUIRED BY DMKDRDER 00226000
  258. * 00227000
  259. * A CALL IS MADE TO DMKDRDER FOR SUB-FUNCTION DECODING 00228000
  260. * AND ACTUAL PROCESSING. ON RETURN, THE ERROR CODE IS TESTED 00229000
  261. * AND EITHER A PROGRAM INTERRUPT IS REFLECTED OR THE 00230000
  262. * VIRTUAL MACHINE IS RE-DISPATCHED WITH THE CONDITION CODE 00231000
  263. * INDICATING THE RESULTS OF THE OPERATION. 00232000
  264. * 00233000
  265. * CODE = X'0018' "STANDARD" DASD I/O W/O INTERRUPTS (CLASS G) 00234000
  266. * 'R1' = VIRTUAL DEVICE ADDRESS, DASD DEVICE 00235000
  267. * 'R2' = ADDRESS OF A DASD CCW STRING (FIXED FORMAT) 00236000
  268. * 00237000
  269. * CODE '18' IS PROCESSED VIA GOTO DMKDGDDK 00238000
  270. * 00239000
  271. * CODE = X'001C' CLEAR I/O AND M/C RECORDING AREA (CLASS F) 00240000
  272. * 'R1' = CODE 1,2,3 INDICATING CLEAR OF I/O, M/C, OR BOTH 00241000
  273. * 00242000
  274. * THE 'R1' CODE VALUE IS PASSED TO DMKIOEFM IN GPR 2. 00243000
  275. * 00244000
  276. * CODE = X'0020' GENERAL VIRTUAL I/O W/O INTERRUPTS (CLASS G) 00245000
  277. * 'R1' = VIRTUAL DEVICE ADDRESS 00246000
  278. * 'R2' = ADDRESS OF A CCW STRING TO BE EXECUTED 00247000
  279. * 00248000
  280. * CODE '20' IS PROCESSED VIA GOTO DMKGIOEX. 00249000
  281. * 00250000
  282. * CODE = X'0024' VIRTUAL DEVICE TYPE INFORMATION (CLASS G) 00251000
  283. * 'R1' = VIRTUAL DEVICE ADDRESS OR -1 IF VIRTUAL CONSOLE 00252000
  284. * ON RETURN: 00253000
  285. * 'R1' = VIRTUAL DEVICE ADDRESS 00254000
  286. * 'R2' = VIRTUAL DEVICE INFORMATION 00255000
  287. * 'R2'+1 = REAL DEVICE INFORMATION (IF ANY) 00256000
  288. * 00257000
  289. * THE VIRTUAL DEVICE INFORMATION CONSISTS OF THE FIELDS 00258000
  290. * VDEVTYPC, VDEVTYPE, VDEVSTAT, AND VDEVFLAG, IN THAT ORDER, 00259000
  291. * FROM THE VDEVBLOK OF THE SPECIFIED DEVICE. THE REAL DEVICE 00260000
  292. * INFORMATION CONSISTS OF THE FIELDS RDEVTYPC, RDEVTYPE, 00261000
  293. * RDEVMDL, AND RDEVFTR, IN THAT ORDER, FROM THE RDEVBLOK OF 00262000
  294. * THE ASSOCIATED REAL DEVICE (IF THERE IS ONE). IF THE DEVICE 00263000
  295. * IS A VIRTUAL CONSOLE, THE RDEVFTR FIELD OF 'R2+1' IS FILLED 00264000
  296. * WITH THE INFORMATION FROM RDEVLLEN. THE INFORMATION 00265000
  297. * IS PLACED IN THE 'R2' REGISTER AND THE FOLLOWING 'R2'+1, AS 00266000
  298. * INDICATED BELOW: 00267000
  299. * +----------+----------+----------+----------+ 00268000
  300. * 'R2' | VDEVTYPC | VDEVTYPE | VDEVSTAT | VDEVFLAG | 00269000
  301. * +----------+----------+----------+----------+ 00270000
  302. * 'R2+1' | RDEVTYPC | RDEVTYPE | RDEVMDL | RDEVFTR | 00271000
  303. * +----------+----------+----------+----------+ 00272000
  304. * EACH FIELD IS A SINGLE-BYTE FLAG, WHOSE VALUES MAY BE 00273000
  305. * DETERMINED FROM THE COPY FILES 'DEVTYPES', 'VBLOKS', AND 00274000
  306. * 'RBLOKS' IN THE VM/370 MACRO LIBRARY. THE VIRTUAL 00275000
  307. * CONDITION CODE IS SET AS FOLLOWS: 00276000
  308. * CC = 0 => ALL DATA IS VALID 00277000
  309. * CC = 2 => NO REAL DEVICE DATA, VIRTUAL TYPE OK 00278000
  310. * CC = 3 => DEVICE DOES NOT EXIST 00279000
  311. * 00280000
  312. * CODE = X'0028' DYNAMIC CHANNEL PROGRAM MODIFICATION (CLASS G) 00281000
  313. * 'R1' = SPECIFIES A REGISTER GIVING THE ADDRESS OF THE 00282000
  314. * CCW THAT HAS BEEN MODIFIED. 00283000
  315. * 'R2' = SPECIFIES ANOTHER REGISTER GIVING THE DEVICE 00284000
  316. * ADDRESS (IN BITS 16-31). 00285000
  317. * 00286000
  318. * THE MODIFIED CCW AND DEVICE ADDRESS ARE EXAMINED FOR 00287000
  319. * VALIDITY. IF THE MODIFIED CCW OR DEVICE ADDRESS IS INVALID, 00288000
  320. * DMKHVC RETURNS CONTROL TO THE USER WITH A RETURN CODE AND 00289000
  321. * CONDITION CODE OF ONE IN PSW. FOR A VALID MODIFIED CCW AND 00290000
  322. * DEVICE ADDRESS, A CHANGE IS MADE TO THE REAL CCW THAT 00291000
  323. * CORRESPONDS TO THE MODIFIED VIRTUAL CCW, IN ORDER FOR 00292000
  324. * MODIFICATION OF THE VIRTUAL CCW LIST TO HAVE ANY REAL 00293000
  325. * EFFECT ON VM/370. 00294000
  326. * ANY ERROR CODE RESULTING FROM THE EXECUTION IS 00295000
  327. * PASSED BACK TO THE VIRTUAL MACHINE IN REGISTER 15 AND A 00296000
  328. * CONDITION CODE IS SET IN THE PSW TO INDICATE TO THE VIRTUAL 00297000
  329. * MACHINE WHETHER THE NECESSARY MODIFICATION TO THE REAL 00298000
  330. * CCW LIST WAS MADE SUCCESSFULLY. IN GENERAL, A CONDITION 00299000
  331. * CODE OF 0 INDICATES SUCCESS, 1 INDICATES A PROBABLE 00300000
  332. * PROGRAMMING ERROR IN ISSUING THE DIAGNOSE CALL, AND 00301000
  333. * 2 INDICATES THAT IT WAS TOO LATE TO CHANGE THE REAL CCW 00302000
  334. * LIST BECAUSE OF CHANNEL END OR DEVICE END HAS ALREADY 00303000
  335. * OCCURRED. 00304000
  336. * 00305000
  337. * CODE = X'002C' SUPPORTED VIA CALL TO DMKHVE 00306000
  338. * RETURN DASD START ADDR OF ERROR RECORDING 00306100
  339. * DATA AREA (CLASS C, E, OR F) 00307000
  340. * 'R1' = ON RETURN: COMPRESSED DASD ADDRESS (CCPD) OF 00308000
  341. * FIRST RECORD IN ERROR RECORDING AREA. 00309000
  342. * 00310000
  343. * THE COMPRESSED DASD ADDRESS IS CONTRUCTED FROM THE 00311000
  344. * START CYLINDER NUMBER OF THE ERROR RECORDING AREA (FROM 00312000
  345. * DMKSYSER) AND THE DEVICE CODE (RDEVCODE) FROM THE SYSTEM 00313000
  346. * IPL DEVICE RDEVBLOK. THE VIRTUAL CONDITION CODE IS SET 00314000
  347. * TO ZERO AND RETURN IS VIA DMKDSPCH. 00315000
  348. * 00316000
  349. * CODE = X'0030' SUPPORTED VIA CALL TO DMKHVE 00317000
  350. * READ ONE RECORD OF ERROR RECORDING AREA 00317100
  351. * (CLASS C, E, OR F) 00318000
  352. * 'R1' = COMPRESSED DASD ADDRESS (CCPD) OF REQUESTED DATA 00319000
  353. * 'R2' = START ADDRESS OF A VIRTUAL STORAGE FULL-PAGE BUFFER 00320000
  354. * 00321000
  355. * THE DASD ADDRESS IS EXAMINED FOR VALIDITY, AND IF 00322000
  356. * IT IS O.K., THE DATA RECORD IS MADE AVAILABLE VIA A CALL 00323000
  357. * TO DMKRPAGT. THE VIRTUAL CONDITION CODE IS SET AS FOLLOWS: 00324000
  358. * CC = 0 SUCCESSFUL READ, DATA IS AVAILABLE 00325000
  359. * CC = 1 END OF CYLINDER REACHED, NO DATA 00326000
  360. * CC = 2 => FATAL I/O ERROR READING DATA PAGE 00327000
  361. * CC = 3 INVALID CYLINDER, OUTSIDE OF RECORDING AREA 00328000
  362. * 00329000
  363. * CODE = X'0034' READ SYSTEM DUMP SPOOL FILE (CLASS C OR E) 00330000
  364. * 'R1','R2' AS REQUIRED BY DMKDRDMP 00331000
  365. * 00332000
  366. * CODE '34' IS PROCESSED VIA A CALL TO DMKDRDMP. 00333000
  367. * ON RETURN, THE ERROR CODE IS EXAMINED AND EITHER A PROGRAM 00334000
  368. * INTERRUPT IS REFLECTED OR THE VIRTUAL MACHINE IS 00335000
  369. * RE-DISPATCHED WITH A CONDITION CODE SET. 00336000
  370. * 00337000
  371. * CODE = X'0038' READ SYSTEM SYMBOL TABLE (CLASS C OR E) 00338000
  372. * 'R1','R2' AS REQUIRED BY DMKDRDSY 00339000
  373. * 00340000
  374. * CODE '38' IS PROCESSED VIA A CALL TO DMKDRDSY. 00341000
  375. * RETURN HANDLING IS THE SAME AS FOR CODES '14' AND '34'. 00342000
  376. * 00343000
  377. * CODE = X'003C' DYNAMIC UPDATE OF SYSTEM USER DIRECTORY 00344000
  378. * (CLASS A, B, OR C) 00345000
  379. * 'R1','R2' IMMATERIAL 00346000
  380. * 00347000
  381. * CODE '3C' IS PROCESSED VIA A CALL TO DMKUDRDS. 00348000
  382. * RETURN HANDLING IS THE SAME AS FOR CODES '14','34','38'. 00349000
  383. * 00350000
  384. * 00351000
  385. * CODE = X'0040' RESERVED FOR FUTURE USE 00352000
  386. * 00353000
  387. * CODE = X'0044' RESERVED FOR FUTURE USE 00354000
  388. * CODE = X'0048' NOTIFY FIRST LEVEL CP THIS IS A SECOND LEVEL VM 00355010
  389. * SYSTEM AND THAT THIS VIRTUAL MACHINE HAS ISSUED AN SVC76 00355020
  390. * CODE = X'0048' RESERVED FOR FUTURE USE 00356000
  391. * 00357000
  392. * CODE = X'004C' PUNCH ACCOUNTING CARDS 00358000
  393. * (THE ACCOUNTING OPTION MUST BE SET) 00359000
  394. * 00360000
  395. * 'R1' = CONTAINS THE ADDRESS OF THE PARAMETER LIST OR ZERO. 00361000
  396. * 'R2' = CONTAINS AFUNCTION HEXADECIMAL CODE INTERPRETED BY 00362000
  397. * DMKCPVAA. 00363000
  398. * 00364000
  399. * CODE X'004C' IS PROCESSED VIA A CALL TO DMKCPVAA. ON 00365000
  400. * RETURN, IF THE USER ACCOUNTING BLOCK EXIST, THE STORAGE 00366000
  401. * IS RELEASED. DMKHVC CHECKS THE PARAMETER LIST ADDRESS TO 00367000
  402. * ASSURE THAT THE ADDRESS IS VALID AND ALIGNED ON A DOUBLEWORD 00368000
  403. * BOUNDARY. IF THE PARAMETER LIST ADDRESS IS ZERO, DMKHVC 00369000
  404. * RETURN CONTROL TO THE USER WITH CONDITION CODE ZERO 00370000
  405. * SET IN THE PSW. IF THE PARAMETER LIST ADDRESS IS INVALIDED OR 00371000
  406. * NOT ALIGNED ON A DOUBLEWORD BOUNDARY, THAN AN ADDRESSING 00372000
  407. * OR SPECIFICATION EXECPTION IS GENERATED RESPECTIVELY. 00373000
  408. * FOR A PARAMETER LIST ADDRESS THAT'S NON-ZERO AND VALID, THE 00374000
  409. * USERID IN THE PARAMETER LIST IS CHECK AGAINST THE DIRECTORY 00375000
  410. * LIST AND THE FUNCTION HEXADECIMAL CODE IS CHECK TO DETERMINE 00376000
  411. * IF THEY ARE VALID. IF NOT, DMKHVC RETURN CONTROL TO THE USER 00377000
  412. * WITH CONDITION CODE ONE OR THREE SET IN THE PSW RESPECTIVELY. 00378000
  413. * IF THE USERID AND FUNCTION HEXADECIMAL CODE ARE VALID, THE 00379000
  414. * USER ACCOUNTING BLOCK IS BUILDED AND THE USERID, ACCOUNT 00380000
  415. * NUMBER AND DISTRIBUTION NUMBER ARE MOVE INTO THE BLOCK FROM 00381000
  416. * THE PARAMETER LIST OR THE USER MACHINE BLOCK AND CONTROL 00382000
  417. * IS RETURNED TO THE USER WITH A CONDITION CODE ZERO 00383000
  418. * SET IN THE PSW. 00384000
  419. * 00385000
  420. * CODE = X'0050' SAVE 370X CONTROL PROGRAM IMAGE 00386000
  421. * (CLASS A, B, OR C) 00387000
  422. * 'R1', 'R2' AS REQUIRED BY DMKSNCP 00388000
  423. * 00389000
  424. * PROCESSED VIA A CALL TO DMKSNCP. ON RETURN AN ERROR 00390000
  425. * CODE (OR ZERO) IS RETURNED IN THE USER'S 'R2' REGISTER. 00391000
  426. * 00392000
  427. * CODE = X'0058' DIAG CONSOLE 3270 WRITE 00393000
  428. * 00394000
  429. * CODE = X'0054' DIAG PA2 CONSOLE INTERRUPT ENABLE 00395000
  430. * 00396000
  431. * 00397000
  432. * CODE = X'005C' EDIT AN ERROR MESSAGE ACCORDING TO USER'S 00398000
  433. * EMSG SETTING (CLASS G) 00399000
  434. * 'R1' = ADDRESS OF MESSAGE TO BE EDITED 00400000
  435. * 'R2' = LENGTH OF MESSAGE (INCLUDING CODE AND TEXT) 00401000
  436. * ON RETURN: 00402000
  437. * 'R1' = ADDRESS OF MESSAGE THAT USER SHOULD SEND 00403000
  438. * 'R2' = LENGTH OF MESSAGE THAT USER SHOULD SEND; 00404000
  439. * OR 0 IF NO MSG SHOULD BE SENT 00405000
  440. * 00406000
  441. * EMSG SETTING FOR THE USER IS TESTED BY TESTING VMMLEVEL 00407000
  442. * FOR VMMCODE AND VMMTEXT. 00408000
  443. * IF EMSG IS OFF, 'R2' IS SET TO 0. 00409000
  444. * IF EMSG IS ON, 'R2' AND 'R1' ARE LEFT ALONE. 00410000
  445. * IF EMSG IS CODE, 'R2' IS SET TO 10, WHICH IS LENGTH OF 00411000
  446. * CODE ALONE. 00412000
  447. * IF EMSG IS TEXT, 'R1' IS SET TO POINT TO TEXT PART OF MESSAGE, 00413000
  448. * AND 'R2' IS DECREMENTED TO LENGTH OF TEXT ONLY. (IF 00414000
  449. * RESULTING LENGTH IS NOT POSITIVE, 0 LENGTH IS RETURND.) 00415000
  450. * ON RETURN FROM DIAGNOSE 5C, CALLER SHOULD CHECK 'R2'. 00416000
  451. * IF A ZERO LENGTH WAS PASSED BACK, THE CALLER SHOULD 00417000
  452. * NOT ISSUE A STARTIO AT ALL (I.E., THE MESSAGE SHOULD 00418000
  453. * NOT BE SENT). IF A NON-0 LENGTH WAS PASSED BACK, 00419000
  454. * HE SHOULD ISSUE A STARTIO USING THE 'R1' ADDRESS AND 00420000
  455. * THE 'R2' LENGTH THAT WERE RETURNED BY THE DIAGNOSE 5C. 00421000
  456. * 00422000
  457. * CODE = X'0060' RETURN VIRTUAL MACHINE STORAGE SIZE (CLASS G) 00423000
  458. * ON RETURN: 00424000
  459. * 'R1' = SIZE OF VIRTUAL STORAGE 00425000
  460. * 00426000
  461. * CODE = X'0064' LOAD/FIND OR PURGE A NAMED SYSTEM (CLASS G) 00427000
  462. * 'R1' = ADDRESS OF THE NAMED SYSTEM 00428000
  463. * 'R2' = CODE FUNCTION: 00429000
  464. * 00 = LOAD A NAMED SYSTEM IN SHARED MODE 00430000
  465. * 04 = LOAD A NAMED SYSTEM IN NON-SHARED MODE 00431000
  466. * 08 = PURGE A PREVIOUS LOADED NAMED SYSTEM 00432000
  467. * 0C = FIND THE NAMED SYSTEM IN THE USERS VIRTUAL STORAGE 00433000
  468. * 00433010
  469. * CODE = X'0068' VIRTUAL MACHINE COMMUNICATION FACILITY 00433020
  470. * 00433030
  471. * 'RX' = VIRTUAL ADDRESS OF THE USER PARAMETER LIST 'VMCPARM'. 00433040
  472. * 'RY' = RETURN CODE REGISTER 00433050
  473. * 00433060
  474. * VMCPARM - VM COMMUNICATION PARMLIST 00433070
  475. * 00433080
  476. * 0 +-----+-----+-----------+-----------------------+ 00433090
  477. * | V*1 | V*2 | VMCPFUNC | VMCPMID | 00433100
  478. * 8 +-----+-----+-----------+-----------------------+ 00433110
  479. * | VMCPUSER | 00433120
  480. * 10 +-----------------------+-----------------------+ 00433130
  481. * | VMCPVADA | VMCPLENA | 00433140
  482. * 18 +-----------------------+-----------------------+ 00433150
  483. * | VMCPVADB | VMCPLENB | 00433160
  484. * 20 +-----------------------+-----------------------+ 00433170
  485. * | VMCPUSE | 00433180
  486. * 28 +-----------------------------------------------+ 00433190
  487. * 00433200
  488. * 00433210
  489. * THIS MODULE INITIALLY VALIDITY CHECKS THE VIRTUAL ADDRESS 00433220
  490. * SPECIFIED FOR VMCPARM AS FOLLOWS: 00433230
  491. * 00433240
  492. * 1. IF THE ADDRESS IS NOT WITHIN VIRTUAL STORAGE OR EXTENDS 00433250
  493. * BEYOND VIRTUAL STORAGE AN ADDRESSING EXCEPTION IS 00433260
  494. * REFLECTED TO THE VIRTUAL MACHINE. 00433270
  495. * 00433280
  496. * 2. IF THE VMCPARM ADDRESS IS NOT DOUBLEWORD ALIGNED A 00433290
  497. * SPECIFICATION EXCEPTION IS REFLECTED TO THE VIRTUAL 00433300
  498. * MACHINE. 00433310
  499. * 00433320
  500. * 3. IF THE ABOVE TESTS SUCCEED A 'CALL' IS MADE TO MODULE 00433330
  501. * DMKVMCFC WHO WILL PROCESS THE VMCF REQUEST. 00433340
  502. * 00433350
  503. * 4. UPON RETURN FROM DMKVMCFC 'R2' CONTAINS A DIAGNOSE 00433360
  504. * RETURN CODE. THE RETURN CODE IS PASSED BACK TO THE 00433370
  505. * USER IN HIS 'RY' REGISTER. 00433380
  506. * 00433390
  507. * 00434000
  508. * DMKCFGCL - IS CALLED TO PROCESS THE REQUEST 00435000
  509. * 00435100
  510. * CODE = X'70' RESERVED FOR FUTURE IBM USE 00435200
  511. * 00435300
  512. * CODE = X'74' SAVE 3800 PRINTER IMAGE LIBRARY 00435400
  513. * 00435500
  514. * THIS CODE SAVES A 3800 IMAGE LIBRARY IN A SAVED SYSTEM 00435600
  515. * 00435700
  516. * 00436000
  517. * CODE = X'0078' COMMUNICATION FROM DMKMSS RUNNING IN A 00437100
  518. * VIRTUAL MACHINE. 00437110
  519. * 00437120
  520. * A VALUE OF 16 (X'10') IS PLACED IN REGISTER 00437130
  521. * 0 AND MODULE DMKSSS IS CALLED TO PROCESS 00437140
  522. * THE REQUEST. 00437150
  523. * 00437160
  524. * CODES = X'007C' AND X'0080' RESERVED FOR IBM USE 00437200
  525. * CODE = X'0084' UPDATE DIRECTORY ENTRY IN PLACE 00437300
  526. * 00437400
  527. * 'RX' = VIRTUAL ADDRESS OF USER PARAMETER LIST 00437500
  528. * 'RY' = LENGTH OF USER PARAMETER LIST 00437600
  529. * 00437700
  530. * ON RETURN 'RY' CONTAINS A RETURN CODE 00437800
  531. * 00437900
  532. * CODES = X'0088' THRU X'00FC' RESERVED FOR IBM USE 00438000
  533. *. 00439000
  534. EJECT 00440000
  535. *---------------------------------------------------------------------* 00441000
  536. * * 00442000
  537. * PROCESS VIRTUAL DIAGNOSE FOR VIRTUAL MACHINES * 00443000
  538. * * 00444000
  539. *---------------------------------------------------------------------* 00445000
  540. DMKHVCAL DS 0D PROCESS DIAGNOSE - X'83RR0NNN' 00446000
  541. USING *,R12 00447000
  542. USING PSA,0 00448000
  543. USING VMBLOK,R11 00449000
  544. SPACE 2 00450000
  545. TM VMINST+3,X'03' IS CODE MULTIPLE OF 4? 00451000
  546. BNZ SPECERR NO - SPECIFICATION 00452000
  547. IC R5,VMINST+1 GET REGISTERS SPECIFIED 00453000
  548. LR R6,R5 00454000
  549. SLL R6,2(0) USER'S 'R2' NUMBER 00455000
  550. N R6,F60 ... 00456000
  551. SRL R5,2(0) ... 00457000
  552. N R5,F60 REGISTER NO. * 4 00458000
  553. LA R5,VMGPRS(R5) ADDR OF 'R1' IN VMBLOK 00459000
  554. LA R6,VMGPRS(R6) ADDR OF 'R2' IN VMBLOK 00460000
  555. LH R4,VMINST+2 GET FUNCTION CODE FROM INSTRUCTIO@V200820 00461000
  556. CL R4,=A(HVCMAXC) WITHIN SYSTEM SUPPORTED RANGE ? @V200820 00462000
  557. BH HVCUSER NO -- CHECK FOR INSTALLATION CODE@V200820 00463000
  558. B HVCODER(R4) JUMP INTO IT 00464000
  559. SPACE 2 00465000
  560. HVCODER EQU * DECODING TABLE FOR HVC'S 00466000
  561. B CALLHVD '000' - STORE EXTENDED ID @VM03170 00467000
  562. B CALLHVD '004' - READ CP CORE @VM03170 00468000
  563. B HVCONFN '008' - CONSOLE FUNCTION 00469000
  564. B HVCHRON '00C' - PSEUDO-CLOCK 00470000
  565. B HVCPGRL '010' - PAGEREL 00471000
  566. B CALLHVD '014' - SPOOL INPUT FILE @VM03170 00472000
  567. * MANIPULATE 00473000
  568. B HVCDISK '018' - DASD I/O 00474000
  569. B CALLHVD '01C' - CLEAR RECORDING AREA @VM03170 00475000
  570. B HVCFAKE '020' - GENERAL I/O WITHOUT INTERRUPTS 00476000
  571. B CALLHVD '024' - DEVICE TYPE INQUIRY @VM03170 00477000
  572. B HVCDCPM '028' - DYNAMIC CHANNEL @V1D0631 00478000
  573. * MODIFICATION 00479000
  574. B CALLHVE '02C' - GET DASD START OF @VA11268 00480000
  575. * LOGREC AREA 00480100
  576. B CALLHVE '030' - READ ONE PAGE OF LOGREC @VA11268 00480200
  577. * DATA 00480300
  578. B CALLHVD '034' - READ SYSTEM DUMP SPOOL @VM03170 00484000
  579. * FILE 00485000
  580. B CALLHVD '038' - READ SYSTEM SYMBOL TABLE @VM03170 00486000
  581. B CALLHVD '03C' - DYNAMIC DIRECTORY UPDATE @VM03170 00487000
  582. B HVCEXIT '040' - RESERVED FOR FUTURE USE 00488000
  583. B HVCEXIT '044' - RESERVED FOR FUTURE USE 00489000
  584. B HVCVMCP @VA09952 00490010
  585. B CALLHVD '04C' - PUNCH ACCOUNTING CARDS @VM03170 00491000
  586. B CALLHVD '050' - SAVE 370X CONTROL PROGRAM@VM03170 00492000
  587. B CALLHVD '054' - DIAG PA2 CONSOLE ENABLE @VM03170 00493000
  588. B HVCGRAF '058' - DIAG CONSOLE 3270 WRITE @V200730 00494000
  589. B HVCEMSG '05C' - EDIT MSG BY EMSG SETTING @VA01388 00495000
  590. B HVCSTOR '060' GET VIRTUAL MACHINE @V304635 00496000
  591. * STORAGE SIZE 00497000
  592. B HVCSYS '064' LOADSYS/PURGESYS/FINDSYS @V304635 00498000
  593. B HVCVMCF '068' VM COMMUNICATION @V60B9BA 00498500
  594. B HVCEXIT '06C' RESERVED FOR FUTURE USE @V60B9BA 00498600
  595. B HVCEXIT '070' RESERVED FOR FUTURE USE @V60B9BA 00498700
  596. B CALLHVD '074' SAVE 3800 IMAGE LIBRARY @V60B9BA 00498800
  597. B HVCMSS '078' CALL DMKSSS - MSS REQUEST @V60B6B8 00498810
  598. B HVCLDF '07C' Logical Dev Support FaciltyHRC065DK 00498820
  599. B HVCEXIT '080' RESERVED FOR FUTURE IBM USE@VMI0048 00498830
  600. B CALLHVD '084' DIRECTORY UPDATE IN PLACE @VMI0048 00498840
  601. B HVCEXIT '088' RESERVED FOR FUTURE USE HRC072DK 00499000
  602. B HVC3270 '08C' 3270 DEV CHARACTERISTICS HRC072DK 00499100
  603. HVCMAXC EQU *-HVCODER-4 MAXIMUM CODE NUMBER DEFINED HRC072DK 00499200
  604. EJECT 00500000
  605. CALLHVE CALL DMKHVEAL LET DMKHVE HANDLE @VA11268 00500100
  606. BNZ PROGINT IF NON-ZERO REFLECT PROG. CHECK @VA11268 00500200
  607. B HVCEXIT EXIT TO DISPATCHER @VA11268 00500300
  608. SPACE 2 00500400
  609. HVCUSER EQU * DECODING FOR INSTALLATION-DEFINED CODES@V200820 00501000
  610. S R4,F256 WITHIN INSTALLATION-DEFINED RANGE@V200820 00502000
  611. BM SPECERR NO -- SPECIFICATION EXCEPTION @V200820 00503000
  612. CL R4,=A(USRMAXC) VALID CODE FOR THIS TABLE ? @V200820 00504000
  613. BH SPECERR NO -- SPECIFICATION EXCEPTION @V200820 00505000
  614. B USRCODE(R4) BRANCH TO PROCESSING ROUTINE @V200820 00506000
  615. SPACE 2 00507000
  616. USRCODE EQU * DECODING TABLE FOR INSTALLATION CODES @V200820 00508000
  617. B SPECERR (PROTOTYPE) @V200820 00509000
  618. USRMAXC EQU *-USRCODE-4 HIGHEST INSTALLATION CODE DEFINED@V200820 00510000
  619. CALLHVD CALL DMKHVDAL LET HVD HANDLE THESE @VM03170 00511000
  620. BNZ PROGINT IF NON-ZERO REFLECT PROGRAM CHECK@VM03170 00512000
  621. SPACE 2 00513000
  622. HVCEXIT EQU * RE-DISPATCH VIRTUAL MACHINE 00514000
  623. NI VMRSTAT,X'FF'-(VMIOWAIT+VMEXWAIT) 00515000
  624. HVCDISP GOTO DMKDSPCH PASS CONTROL TO DISPATCHER @VA05376 00516000
  625. EJECT 00517000
  626. EJECT 00518000
  627. *---------------------------------------------------------------------* 00519000
  628. * VIRTUAL CONSOLE FUNCTION - CODE '008' FOR ANYBODY * 00520000
  629. *---------------------------------------------------------------------* 00521000
  630. HVCONFN EQU * 00522000
  631. TM VMOSTAT,VMCF EXECUTING A CONSOLE FUNCTION ?? @V200930 00523000
  632. BZ HVCON1 NO, CONT @V200930 00524000
  633. OI VMRSTAT,VMCFWAIT STOP MACHINE, WAIT TIL DONE @V200930 00525000
  634. L R2,VMPSW+4 GET PSW ADDRESS @V200930 00526000
  635. SL R2,F4 BACKUP TO RE-EXECUTE WHEN RUN @VA01587 00527000
  636. ST R2,VMPSW+4 SET ADDRESS @V200930 00528000
  637. B HVCEXIT RETURN @V200930 00529000
  638. HVCON1 DS 0H @V200930 00530000
  639. SLR R2,R2 ZERO WORK REGISTER 00531000
  640. SR R7,R7 INDICATE NO RESPONSE BUFFER @V60C2B8 00531100
  641. ICM R2,B'0111',1(R6) GET COMMAND LENGTH @V60BBBB 00531800
  642. BZ HVBREAK ZERO LENGTH = GO TO CP MODE @V60BBBB 00532000
  643. TM 0(R6),X'FF' ANY FLAGS SET? @V60BBBB 00532200
  644. BZ HVNFLAG BR IF NOT @V60BBBB 00532400
  645. BO SPECERR BR IF THEY'RE ALL ON - ERROR @V60BBBB 00532600
  646. TM 0(R6),PASSSUP PASSWORD SUPPRESSION? @V60BBBB 00532800
  647. BZ NFLAG0 BR IF NOT @V60BBBB 00533000
  648. OI VMFSTAT,VMNPWOCL INDICATE PASSWORD SUPPRESSION @V60BBBB 00533200
  649. NI 0(R6),X'FF'-PASSSUP TURN OFF FLAG BIT @V60BBBB 00533400
  650. NFLAG0 DS 0H @V60BBBB 00533800
  651. TM 0(R6),RESPBUF RESPONSE IN BUFFER? @V60C2B8 00534010
  652. BNO NFLAG1 NO - GO CHECK FOR ANY MORE BITS @V60C2B8 00534020
  653. LA R15,VMGPRS+R15*4 SET ADDRESS OF VIRTUAL R15 @V60C2B8 00534030
  654. CR R5,R15 RX CANNOT BE R15, @V60C2B8 00534040
  655. BNL SPECERR SINCE RX+1 IS RESPONSE BUFFER ADD@V60C2B8 00534050
  656. CR R6,R15 RY CANNOT BE R15 @V60C2B8 00534060
  657. BNL SPECERR SINCE RY+1 IS RESPONSE BUFFER LEN@V60C2B8 00534070
  658. LPR R8,R2 MAKE COMMAND LENGTH >0 AND SAVE @V60C2B8 00534080
  659. ICM R2,15,4(R6) SET RESPONSE BUFFER LENGTH @V60C2B8 00534090
  660. BNP SPECERR LENGTH MUST BE >0 @V60C2B8 00534100
  661. C R2,=F'8192' AND =< 8192 @V60C2B8 00534110
  662. BH SPECERR ELSE GIVE ERROR @V60C2B8 00534120
  663. SR R1,R1 CLEAR FOR ICM @V60C2B8 00534130
  664. ICM R1,B'0111',5(R5) GET RESPONSE BUFFER ADDRESS @V60C2B8 00534140
  665. BZ SPECERR ADDRESS OF 0 NOT A VALID BUFFER @V60C2B8 00534150
  666. LR R7,R1 SAVE THE RESPONSE BUFFER ADDRESS @V60C2B8 00534160
  667. LA R10,HVCNO1 SKIP 2ND PAGE KEY CK IF NO CROSS @V60C2B8 00534170
  668. BAL R9,ADDCHEK AND VERIFY THE BUFFER @V60C2B8 00534180
  669. LR R1,R14 GET ADDRESS OF LAST PAGE @V60C2B8 00534190
  670. HVCON1A BAL R13,KEYTRAN CHECK KEY ON THIS PAGE @V60C2B8 00534200
  671. SL R1,F4096 BACK UP 1 PAGE @V60C2B8 00534210
  672. CLR R1,R7 ANY MORE PAGES TO CHECK @V60C2B8 00534220
  673. BH HVCON1A YES, CONTINUE KEY CHECKING @V60C2B8 00534230
  674. LR R1,R7 RESTORE ADDRESS OF 1ST PAGE @V60C2B8 00534240
  675. HVCNO1 BAL R13,KEYTRAN CHECK KEY OF VIRTUAL BUFFER @V60C2B8 00534250
  676. LR R2,R8 RESTORE COMMAND LENGTH (>0) @V60C2B8 00534260
  677. NFLAG1 DS 0H @V60C2B8 00534270
  678. HVNFLAG DS 0H CHECK COMMAND BUFFER @V60C2B8 00534280
  679. CL R2,=F'132' EXCEED MAX? @VA03197 00535000
  680. BH SPECERR YES - ERROR @VA03197 00536000
  681. LR R3,R2 SAVE LENGTH @VA03197 00537000
  682. L R1,0(,R5) START ADDRESS OF USER'S BUFFER 00538000
  683. LR R8,R3 SAVE FULL BUFFER LENGTH 00539000
  684. LA R10,GETBUFF RETURNS HERE IF NO PAGE CROSS 00540000
  685. BAL R9,ADDCHEK VALIDATE + TEST VIRTUAL ADDRESS 00541000
  686. SLR R9,R9 INDICATE THAT PAGE BND WAS CROSSED 00542000
  687. LR R4,R3 FULL COUNT ALSO IN R4 00543000
  688. SLR R14,R1 COMPUTE FIRST SEGMENT LENGTH 00544000
  689. SLR R4,R14 COMPUTE SECOND SEGMENT LENGTH 00545000
  690. LR R3,R14 PUT FIRST LENGTH IN GPR 3 00546000
  691. GETBUFF EQU * GET FREE STORAGE FOR CFMEN BUFFER 00547000
  692. OI VMOSTAT,VMCF CONSOLE FUNCTION EXECUTING @VA03286 00548000
  693. OI VMOSTAT,VMVIRCF FLAG AS VIRTUAL CONS FUNC @V200930 00549000
  694. MVC VMCONLN,4+2(R6) SET RESPONSE BUFFER LENGTH @V60C2B8 00549100
  695. * WILL BE IGNORED IF ADDRESS = 0 00549200
  696. ST R7,VMCONBUF STORE VIRTUAL ADDRESS OF RESP BUF@V60C2B8 00549300
  697. LA R0,18(0) DBL-WDS FOR FULL BUFFER 00550000
  698. CALL DMKFREE GET FREE STORAGE FOR BLOCK 00551000
  699. LR R7,R1 SAVE BLOCK ADDRESS 00552000
  700. MVC 0(8,R7),BLANKS FILL BUFFER WITH BLANKS 00553000
  701. MVC 8(17*8,R7),0(R7) ... 00554000
  702. L R1,0(0,R5) USER'S BUFFER ADDRESS 00555000
  703. TRANS 2,1,OPT=(BRING,DEFER) 00556000
  704. EJECT 00557000
  705. BCTR R3,0 DECREMENT CHARACTER COUNT... 00558000
  706. EX R3,CONFUNY MOVE DATA TO FREE STORAGE @V200820 00559000
  707. LTR R9,R9 IS THERE A SECOND SEGMENT 00560000
  708. BNZ CFNEXEC NO - ALL DONE NOW 00561000
  709. LA R1,1(R3,R1) NEXT PAGE VIRTUAL STORAGE 00562000
  710. TRANS 2,1,OPT=(BRING,DEFER) GET SECOND SEGMENT 00563000
  711. LA R5,1(R3,R7) NEXT REAL STORAGE ADDRESS 00564000
  712. BCTR R4,0 R4 HAS LENGTH OF 2ND SEGMENT 00565000
  713. EX R4,CONFUNX MOVE SECOND HALF TO BUFFER 00566000
  714. CFNEXEC EQU * EXECUTE VIRTUAL CONSOLE FUNCTION 00567000
  715. LR R0,R8 FULL LINE LENGTH TO R0 00568000
  716. LR R1,R7 BUFFER START ADDR TO R1 00569000
  717. CALL DMKCFMEN EXECUTE VIRTUAL CONSOLE FUNCTION 00570000
  718. C R11,ASYSVM IS USER STILL WITH US? @VA05376 00570300
  719. BE HVCDISP NO, DON'T MODIFY VMBLOK STATUS @VA05376 00570700
  720. LTR R2,R2 WAS THERE A NON-ZERO RETURN CODE?@VA04144 00571000
  721. BNZ CFNSETRC YES. THEN SET IT. @VA04144 00572000
  722. CLC VMCOMND(4),=CL4'IPL ' WAS THIS AN 'IPL' COMMAND?@VA04144 00573000
  723. BE CFNIPLEX IF SO, DON'T SET RETURN CODE. @VA04144 00574000
  724. CFNSETRC EQU * @VA04144 00575000
  725. ST R2,0(0,R6) SEND RETURN CODE IN USER'S 'R2' 00576000
  726. CFNIPLEX EQU * @VA03685 00577000
  727. NI VMFSTAT,X'FF'-VMNPWOCL RESET PASSWORD @V60BBBB 00577300
  728. * SUPPRESSION FLAG. @V60BBBB 00577600
  729. TM VMOSTAT,VMSLEEP IS MACHINE SLEEPING ?? @V200930 00578000
  730. BO HVCCKBUF YES, SKIP FLAG RESET @V60C2B8 00579100
  731. NI VMOSTAT,X'FF'-VMVIRCF RESET DIAG CONS FUNC @V200930 00580000
  732. HVCCKBUF CLC VMCONBUF,ZEROES WAS THERE A RESPONSE BUFFER @V60C2B8 00581010
  733. BE HVCEXIT NO, THEN EXIT NOW @V60C2B8 00581020
  734. MVC VMCONBUF,ZEROES CLEAR RESPONSE BUFFER ADDRESS @V60C2B8 00581030
  735. NI VMPSW+2,X'FF'-X'30' SET CC = 0 @V60C2B8 00581040
  736. NI VMPSW+4,X'FF'-X'30' SET CC = 0 @V60C2B8 00581050
  737. LH R4,VMCONLN GET BYTES LEFT IN BUFFER @V60C2B8 00581060
  738. LTR R4,R4 AND TEST @V60C2B8 00581070
  739. BM EXCC1 <0 , MEANS BUFFER OVERFLOW @V60C2B8 00581080
  740. L R2,4(,R6) GET ORIGINAL COUNT @V60C2B8 00581090
  741. SR R2,R4 - COUNT LEFT = VALID CHAR COUNT @V60C2B8 00581100
  742. ST R2,4(,R6) RETURN COUNT @V60C2B8 00581110
  743. B HVCEXIT EXIT, CC=0 ALL SET @V60C2B8 00581120
  744. EXCC1 LPR R4,R4 GET COUNT OF OVERFLOW CHARACTERS @V60C2B8 00581130
  745. ST R4,4(,R6) AND RETURN TO USER @V60C2B8 00581140
  746. B HVCDTC1 NOW EXIT WITH CC=1 @V60C2B8 00581150
  747. SPACE 2 00582000
  748. HVBREAK EQU * ENTER CONSOLE FUNCTION MODE 00583000
  749. MVI 0(R6),X'00' ZERO FLAG BYTE @VA11382 00583500
  750. CALL DMKCFMBK ENTER CFWAIT 00584000
  751. B HVCEXIT ...AND GO TO DISPATCH 00585000
  752. SPACE 00586000
  753. CONFUNY MVC 0(*-*,R7),0(R2) @V200820 00587000
  754. CONFUNX MVC 0(*-*,R5),0(R2) 00588000
  755. SPACE 1 @V60BBBB 00588300
  756. *-------------------------------------------------------------*@V60BBBB 00588600
  757. * BITS DEFINED IN BYTE 0 OF RY (LENGTH REG) *@V60BBBB 00588900
  758. *-------------------------------------------------------------*@V60BBBB 00589200
  759. PASSSUP EQU X'80' VM REQUESTS PASSWORD SUPPRESSION @V60BBBB 00589500
  760. RESPBUF EQU X'40' USER REQUESTS RESPONSE IN BUFFER @V60C2B8 00589600
  761. EJECT 00590000
  762. *---------------------------------------------------------------------* 00591000
  763. * PSEUDO-CHRONOLOG CLOCK - CODE '00C' FOR ANYBODY * 00592000
  764. * ------------------------------- * 00593000
  765. * AT ENTRY, R1 MUST POINT TO A 32 BYTE DATA AREA THAT * 00594000
  766. * MUST BE DOUBLE-WORD ALIGNED. THE DATA AREA WILL BE * 00595000
  767. * FILLED IN IN THE FOLLOWING FORMAT -- * 00596000
  768. * * 00597000
  769. * +----------+----------+----------+----------+ * 00598000
  770. * | MM/DD/YY | HH:MM:SS | VIRTCPU | TOTALCPU | * 00599000
  771. * +----------+----------+----------+----------+ * 00600000
  772. * * 00601000
  773. * WHERE THE VIRTUAL AND TOTAL CPU TIMES ARE DOUBLE-WORD, * 00602000
  774. * UNSIGNED INTEGERS EXPRESSED IN MICRO-SECOND UNITS. * 00603000
  775. *---------------------------------------------------------------------* 00604000
  776. HVCHRON EQU * 00605000
  777. TM 3(R5),X'07' CHECK ADDRESS ALIGNMENT 00606000
  778. BNZ SPECERR NO GOOD 00607000
  779. L R1,0(,R5) GET USER'S DATA ADDRESS (VIRTUAL) 00608000
  780. LA R2,32(0) FIELD LENGTH 00609000
  781. LA R9,GETDATE DON'T CARE ABOUT PAGE CROSSINGS 00610000
  782. BAL R10,ADDCHEK CHECK PAGE CROSS, VALIDITY 00611000
  783. GETDATE EQU * CONVERT DATE AND CURRENT TIME 00612000
  784. LA R1,TEMPR6 PUT THE DATE HERE 00613000
  785. LA R2,TEMPR8 ...AND THE TIME HERE 00614000
  786. CALL DMKCVTDT ... 00615000
  787. L R5,0(0,R5) VIRTUAL ADDRESS OF BUFFER 00616000
  788. LA R1,0(0,R5) FIRST DOUBLE-WORD TO R1 00617000
  789. LM R7,R10,TEMPR6 PICK UP DATE, TIME 00618000
  790. BAL R13,KEYTRAN TRANSLATE FIRST ADDRESS 00619000
  791. STM R7,R8,0(R2) ...DATE MM/DD/YY 00620000
  792. LA R1,8(0,R5) ...2-ND DBL-WD 00621000
  793. BAL R13,KEYTRAN TRANSLATE... 00622000
  794. STM R9,R10,0(R2) ...TIME HH:MM:SS 00623000
  795. CALL DMKTMRPT OBTAIN UP-TO-DATE VTIME @V2B2638 00624000
  796. LR R9,R0 SAVE PROBLEM TIME 00625000
  797. LR R10,R1 ... 00626000
  798. SPACE 00627000
  799. SRDL R0,12(0) CONVERT IT TO MICRO-SECONDS 00628000
  800. STM R0,R1,TEMPR6 PUT IT HERE TEMPORARILY 00629000
  801. LM R7,R8,VMTTIME CALCULATE TOTAL CPU TIME USED 00630000
  802. SLR R8,R10 SUBTRACT OUT HIS PROBLEM TIME 00631000
  803. BC 8+2+1,*+8 BR. IF NO-CARRY 00632000
  804. SL R7,F1 ADJUST FOR CARRY CONDITION 00633000
  805. SLR R7,R9 ... 00634000
  806. LM R0,R1,=X'7FFFFFFFFFFFF000' MAXIMUN POSITIVE NUMBER. 00635000
  807. SLR R1,R8 FIND TOTAL TIME USED BY USER 00636000
  808. BC 8+2+1,*+8 BR. IF NO CARRY 00637000
  809. SL R0,F1 ADJUST FOR CARRY CONDITION 00638000
  810. SLR R0,R7 TOTAL CPU TIME NOW IN R0-1 00639000
  811. SRDL R0,12(0) CONVERT IT TO MICRO-SECONDS 00640000
  812. SPACE 00641000
  813. STM R0,R1,TEMPR8 ... 00642000
  814. LA R1,16(0,R5) 3-RD DBL-WD 00643000
  815. LM R7,R10,TEMPR6 PICK UP BOTH CPU TIMES 00644000
  816. BAL R13,KEYTRAN TRANSLATE THIRD ADDR. 00645000
  817. STM R7,R8,0(R2) VIRT. CPU TIME - MIC-SECS 00646000
  818. LA R1,24(0,R5) 4-TH DBL-WD 00647000
  819. BAL R13,KEYTRAN TRANSLATE... 00648000
  820. STM R9,R10,0(R2) TOTAL CPU TIME - MIC-SECS 00649000
  821. B HVCEXIT RE-DISPATCH 00650000
  822. SPACE 2 00651000
  823. KEYTRAN EQU * GET DATA PAGE, TEST PROTECTION KEYS 00652000
  824. TRANS 2,1,OPT=(BRING,DEFER) GET THE REQUIRED PAGE 00653000
  825. CALL DMKPSASP TEST VIRTUAL STORAGE KEYS @V202232 00654000
  826. BNZ PROTERR OOPS 00655000
  827. BR R13 ... 00656000
  828. EJECT 00657000
  829. *---------------------------------------------------------------------* 00658000
  830. * RELEASE VIRTUAL PAGES - CODE '010' FOR ANYBODY * 00659000
  831. * ------------------------------- * 00660000
  832. * HERE TO RELEASE A CONTIGUOUS AREA OF USER VIRTUAL * 00661000
  833. * MEMORY. BOTH MAIN STORAGE AND SECONDARY STORAGE ARE * 00662000
  834. * RELEASED. AT ENTRY, 'R1' MUST CONTAIN THE PAGE ADDRESS * 00663000
  835. * OF THE FIRST PAGE TO BE RELEASED, AND 'R2' MUST CONTAIN * 00664000
  836. * THE ADDRESS OF THE LAST PAGE. THE ADDRESSES IN EACH * 00665000
  837. * REGISTER MUST BE PAGE BOUNDARY ALIGNED, AND 'R2' MUST BE * 00666000
  838. * GREATER THAN OR EQUAL TO 'R1'. * 00667000
  839. *---------------------------------------------------------------------* 00668000
  840. HVCPGRL EQU * 00669000
  841. L R2,0(,R6) GET ADDRESS OF LAST PAGE TO BE RELEASED 00670000
  842. CL R2,VMSTOR IS IT WITHIN VIRTUAL STORAGE ? @V304635 00671000
  843. BNL ADDRERR NO -- REFLECT INVALID ADDRESS 00672000
  844. LR R1,R2 SAVE ADDRESS 00673000
  845. N R1,F4095 TEST FOR PAGE ALIGNMENT 00674000
  846. BNZ SPECERR ALIGNMENT ERROR -- SPECIFICATION EXCEP. 00675000
  847. L R1,0(,R5) TEST LOW ADDRESS ALSO 00676000
  848. LTR R1,R1 ADDRESS MUST BE GE 0 00677000
  849. BM SPECERR IF NOT, SPECIFICATION EXCEPTION 00678000
  850. CR R1,R2 1ST PAGE MUST .LE. 2ND 00679000
  851. BH SPECERR IF NOT, ERROR 00680000
  852. LR R0,R1 SAVE 1ST PAGE 00681000
  853. N R0,F4095 TEST ALIGNMENT 00682000
  854. BNZ SPECERR ALIGNMENT ERROR 00683000
  855. OI VMQSTAT,VMPRIDSP CHECK QUEUE STAT @VA08721 00683410
  856. * OF SHARED SYSTEMS, AND DON'T 00683900
  857. * CHANGE KEYS 00684400
  858. CALL DMKPGSSS RELEASE PAGES IN ADDRESS RANGE @V304635 00686000
  859. B HVCEXIT RETURN TO VM USER 00687000
  860. SPACE 00688000
  861. HVCDTC1 EQU * SET CONDITION CODE = 1 00689000
  862. LA R2,X'10' CONDITION CODE WILL BE ONE 00690000
  863. B HVCCSET GO SET CONDITION CODE 00691000
  864. HVCDTC2 EQU * SET CONDITION CODE = 2 00692000
  865. LA R2,X'20' CONDITION CODE WILL BE TWO 00693000
  866. B HVCCSET GO SET CONDITION CODE 00694000
  867. HVCDTC3 EQU * SET CONDITION CODE = 3 00695000
  868. LA R2,X'30' CONDITION CODE WILL BE THREE 00696000
  869. HVCCSET EQU * SET VIRTUAL CONDITION CODE 00697000
  870. LA R1,VMPSW+4 POSITION IF IN BC MODE 00698000
  871. TM VMESTAT,VMEXTCM (IT'S DIFFERENT FOR ECMODE) 00699000
  872. BZ *+8 00700000
  873. LA R1,VMPSW+2 POSITION IF IN EC MODE 00701000
  874. NI 0(R1),B'11001111' CLEAR ANY EXITING CC @VA02203 00702000
  875. EX R2,HVCSETCC SET THE CONDITION CODE IN VMPSW 00703000
  876. B HVCEXIT 00704000
  877. SPACE 00705000
  878. HVCSETCC OI 0(R1),*-* EXECUTED FOR COND. CODE SETTING 00706000
  879. HVCVMCP DS 0H @VA09952 00706010
  880. *-------------------------------------------------------------- 00706020
  881. * DO THE X'48' DIAGNOSE FOR CP UNDER CP 00706030
  882. * R5 ADDRESS OF DIAGNOSE RX 00706040
  883. * R11 ACCRESS OF CALLER VMBLOK 00706050
  884. * RX=04 SVC76 SWITCH ON 00706060
  885. * RX=08 CP VIRTUAL SWITCH ON 00706070
  886. *-------------------------------------------------------------- 00706080
  887. SPACE 3 00706090
  888. CLC 0(3,R5),ZEROES FIRST 3 BYTES OF RX MUST BE ZERO @VA09952 00706100
  889. BNE SPECERR NO ERROR @VA09952 00706110
  890. CLI 3(R5),X'04' SVC76 REQUEST @VA09952 00706120
  891. BE SVC76ON YES SWITCH ON @VA09952 00706130
  892. CLI 3(R5),X'08' CP VIRTUAL REQUEST @VA09952 00706140
  893. BE VMCPON YES SWITCH ON @VA09952 00706150
  894. B SPECERR OTHERWISE YOU GOTS ERROR @VA09952 00706160
  895. SVC76ON DS 0H @VA09952 00706170
  896. OI VMSPMFLG,VMCPSV76 SVC76 OUT OF CP VIRT @VA09952 00706180
  897. B HVCEXIT @VA09952 00706190
  898. VMCPON DS 0H @VA09952 00706200
  899. OI VMSPMFLG,VMCPVIRT ON SWITCH CP VIRTUAL @VA09952 00706210
  900. B HVCEXIT @VA09952 00706220
  901. EJECT 00707000
  902. SPACE 2 00708000
  903. *---------------------------------------------------------------------* 00709000
  904. * STANDARD-FORM DISK I/O - CODE '018' FOR ANYBODY * 00710000
  905. *---------------------------------------------------------------------* 00711000
  906. HVCDISK EQU * 00712000
  907. L R1,DMKHVCDI ADD 1 TO COUNT OF DIAGNOSE I/O'S 00713000
  908. A R1,F1 00714000
  909. ST R1,DMKHVCDI AND RESTORE 00715000
  910. LR R1,R5 ADDRESS OF REGISTER FIELDS 00716000
  911. LR R2,R6 ADDRESS OF SECOND REGISTER 00717000
  912. GOTO DMKDGDDK GO PERFORM I/O 00718000
  913. SPACE 2 00719000
  914. SPACE 2 00720000
  915. *---------------------------------------------------------------------* 00721000
  916. * GENERAL I/O WITHOUT INTERRUPTS - CODE '020' FOR ANYBODY * 00722000
  917. *---------------------------------------------------------------------* 00723000
  918. HVCFAKE EQU * 00724000
  919. L R1,DMKHVCDI GET COUNT OF DIAGNOSE I/O'S @VA05513 00724250
  920. A R1,F1 INCREMENT BY ONE @VA05513 00724500
  921. ST R1,DMKHVCDI RESTORE UPDATED COUNT @VA05513 00724750
  922. LR R1,R5 ADDRESS OF REGISTER FIELDS 00725000
  923. LR R2,R6 SECOND REGISTER ADDRESS 00726000
  924. CALL DMKGIOEX GO PERFORM SIMPLIFIED I/O @V200820 00727000
  925. B HVCEXIT @V200820 00728000
  926. SPACE 2 00728010
  927. *---------------------------------------------------------------------* 00728020
  928. * VIRTUAL MACHINE COMMUNICATION - CODE '068' FOR ANYBODY 00728030
  929. *---------------------------------------------------------------------* 00728040
  930. HVCVMCF EQU * @V387045 00728050
  931. TM 3(R5),X'07' VMCPARM ADDRESS D/W ALIGNED ? @V387045 00728060
  932. BNZ SPECERR NO..REFLECT SPECIFICATION @V387045 00728070
  933. * EXCEPTION.. 00728080
  934. L R1,0(,R5) VIRTUAL ADDRESS OF VMCPARM @V387045 00728090
  935. LA R2,VMCPLEN AND ITS LENGTH @V387045 00728100
  936. LA R9,HVCCVMC ALLOW TO CROSS PAGE BOUNDARY @V387045 00728110
  937. BAL R10,ADDCHEK VALIDITY CHECK ADDRESS @V387045 00728120
  938. HVCCVMC EQU * @V387045 00728130
  939. CALL DMKVMCFC PROCESS VMCF REQUEST @V387045 00728140
  940. ST R2,0(,R6) PASS BACK RETURN CODE @V387045 00728150
  941. B HVCEXIT EXIT TO DISPATCH @V387045 00728160
  942. EJECT 00729000
  943. *--------------------------------------------------------------HRC065DK 00729100
  944. * LOGICAL DEVICE SUPPORT FACILITY- CODE '07C' FOR ANYBODY HRC065DK 00729120
  945. *--------------------------------------------------------------HRC065DK 00729140
  946. HVCLDF EQU * HRC065DK 00729160
  947. CALL HDKD7CEX Process LDF request HRC065DK 00729180
  948. B HVCEXIT Exit to dispatcher HRC065DK 00729200
  949. *--------------------------------------------------------------HRC072DK 00729500
  950. * 3270 DEVICE CHARACTERISTICS - CODE '08C' FOR ANYBODY HRC072DK 00729520
  951. *--------------------------------------------------------------HRC072DK 00729540
  952. HVC3270 EQU * HRC072DK 00729560
  953. CALL HDKD8CDC Process 3270 dev characteristics HRC072DK 00729580
  954. B HVCEXIT Exit to dispatcher HRC072DK 00729600
  955. EJECT 00730000
  956. HVCGRAF L R1,0(R6) GET DEVICE ADDRESS @V200730 00731000
  957. CALL DMKSCNVU FIND CONTROL BLOKS @V200730 00732000
  958. BNZ HVCDTC3 NOT FOUND @V200730 00733000
  959. L R14,DMKHVCDI GET COUNT OF DIAGNOSE I/O'S @VA05513 00733250
  960. A R14,F1 INCREMENT BY ONE @VA05513 00733500
  961. ST R14,DMKHVCDI RESTORE UPDATED COUNT @VA05513 00733750
  962. L R5,0(R5) GET CCW ADDRESS IN R5 @V200730 00734000
  963. GOTO DMKVSIEX PROCESS @VA05037 00735000
  964. EJECT 00736000
  965. *---------------------------------------------------------------------* 00737000
  966. * EDIT MESSAGE ACCORDING TO EMSG SETTING - CODE '05C' FOR ANYBODY * 00738000
  967. *---------------------------------------------------------------------* 00739000
  968. HVCEMSG EQU * @VA01388 00740000
  969. L R2,0(,R6) GET MSG LENGTH @VA01388 00741000
  970. TM VMMLEVEL,VMMCODE+VMMTEXT TEST EMSG SETTING @VA01388 00742000
  971. BZ EMSGOFF EMSG OFF - SEND NO MSG @VA01388 00743000
  972. BO EMSGLAST EMSG ON - SEND ENTIRE MSG @VA01388 00744000
  973. TM VMMLEVEL,VMMCODE CODE ONLY? @VA01388 00745000
  974. BO EMSGCODE YES, BRANCH @VA01388 00746000
  975. S R2,=F'11' GET LENGTH OF TEXT ONLY @VA01388 00747000
  976. BNP EMSGOFF NOTHING BUT A CODE @VA01388 00748000
  977. L R1,0(,R5) GET MSG ADDRESS @VA01388 00749000
  978. LA R1,11(,R1) POINT TO TEXT PART OF MSG @VA01388 00750000
  979. ST R1,0(,R5) GIVE TEXT ADDRESS BACK TO USER @VA01388 00751000
  980. B EMSGLAST IN HIS 'R1' @VA01388 00752000
  981. EMSGOFF SR R2,R2 ZERO LENGTH @VA01388 00753000
  982. B EMSGLAST @VA01388 00754000
  983. EMSGCODE LA R2,10 LENGTH FOR CODE ONLY @VA01388 00755000
  984. EMSGLAST ST R2,0(,R6) GIVE PROPER LENGTH BACK TO USER @VA01388 00756000
  985. B HVCEXIT IN HIS 'R2' @VA01388 00757000
  986. SPACE 1 00758000
  987. *---------------------------------------------------------------------* 00759000
  988. * RETURN VIRTUAL STORAGE SIZE - CODE '060' FOR ANYBODY * 00760000
  989. *---------------------------------------------------------------------* 00761000
  990. HVCSTOR L R1,VMSTOR PASS VIRTUAL MEMORY SIZE @V304635 00762000
  991. ST R1,0(,R5) BACK IN USER'S R1 REGISTER. @V304635 00763000
  992. B HVCEXIT NOW RETURN TO USER. @V304635 00764000
  993. SPACE 1 00765000
  994. *---------------------------------------------------------------------* 00766000
  995. * LOADSYS-PURGESYS-LOADSYS FOR ANYBODY - CODE '064' 00767000
  996. *---------------------------------------------------------------------* 00768000
  997. HVCSYS L R1,0(,R5) GET ADDRESS OF DATA FIELD @V304635 00769000
  998. LRA R1,0(,R1) CHECK IF VALID VIRTUAL ADDR. @V304635 00770000
  999. BC 8+2,HVCSYS1 IF IT'S NOT A SEG EXCEPTION @V408246 00771100
  1000. * CONTINUE 00771300
  1001. L R1,0(,R5) RESTORE R1 FOR CALL TO PTRAN @V408246 00771500
  1002. CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00771700
  1003. BC 2,ADDRERR ADDRESSING PROBLEM @V408246 00771900
  1004. HVCSYS1 DS 0H @V408246 00772100
  1005. L R3,0(,R6) GET CODE FUNCTION BYTE @V304635 00773000
  1006. CL R3,=F'12' MUST NOT BE GREATER THAN 12 @V304635 00774000
  1007. BH SPECERR IF IT IS - HE GETS SPEC. CHECK @V304635 00775000
  1008. TM 3(R6),X'03' MUST BE A MULTIPLE OF 4 @V304635 00776000
  1009. BNZ SPECERR ERROR IF IT ISN'T. @V304635 00777000
  1010. TM 3(R5),X'07' MUST BE ON DOUBLE-WORD BOUND. @V304635 00778000
  1011. BNZ SPECERR ERROR IF IT ISN'T @V304635 00779000
  1012. L R1,0(,R5) GET ADDRESS OF NAMED SYSTEM @V304635 00780000
  1013. TRANS 2,1,OPT=(BRING,DEFER) GET VIRTUAL PAGE @V304635 00781000
  1014. NI VMPSW+4,X'CF' SET CONDITION CODE TO ZERO @V304635 00782000
  1015. NI VMPSW+2,X'CF' ALSO SAME FOR EXTENDED MODE PSW @V304635 00783000
  1016. LM R1,R2,0(R2) GET NAME OF NAMED SYSTEM @V304635 00784000
  1017. CALL DMKCFGCL CALL LOADSYS PROCESSOR @V304635 00785000
  1018. B HVCEXIT RETURN TO DISPATCHER. @V304635 00786000
  1019. *---------------------------------------------------------------------* 00786010
  1020. * CALL DMKSSS TO PROCESS AN MSS REQUEST - CODE '078' * 00786020
  1021. *---------------------------------------------------------------------* 00786030
  1022. HVCMSS DS 0H @VA11354 00786041
  1023. ICM R15,15,=A(DMKSSSHV) PICK UP THE ADCON @VA11354 00786042
  1024. BZ PROTERR THE MODULE ISNT HERE @VA11354 00786043
  1025. L R1,0(,R5) GET BUFFER ADDRESS @VA11354 00786044
  1026. LA R2,MSSSIZE*8 GET LENGTH INTO R2 @VA11354 00786045
  1027. LA R9,SPECERR IF BAD GIVE SPEC CHECK @VA11354 00786046
  1028. BAL R10,ADDCHEK GO CHECK FOR PAGE BOUNDARY CROSS @VA11354 00786047
  1029. CALL DMKSSSHV @V60B6B8 00786050
  1030. B HVCEXIT RETURN TO ISSUER OF DIAGNOSE @V60B6B8 00786060
  1031. EJECT 00787000
  1032. * STARTING ADDRESSES AND LENGTH PASSED IN R1 & R2 00787100
  1033. * REGISTERS USED: R0, R13, R14, AND R15 00787300
  1034. ADDCHEK EQU * EXAMINE ADDRESS FOR VALIDITY 00788000
  1035. LA R1,0(,R1) 24 BITS ONLY 00789000
  1036. LRA R0,0(,R1) VALID START ADDRESS ? @V304635 00790000
  1037. BC 8+2,ADDCHEK1 IF IT'S NOT SEG EXCEPTION @V408246 00791100
  1038. * CONTINUE 00791200
  1039. LR R0,R2 SAVE R2 ACCROSS CALL TO PTRAN @V408246 00791300
  1040. CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00791400
  1041. BC 2,ADDRERR ADDRESSING ERROR @V408246 00791500
  1042. LR R2,R0 RESTORE R2 @V408246 00791600
  1043. ADDCHEK1 DS 0H @V408246 00791700
  1044. LA R14,0(R2,R1) R2 CONTAINS FIELD LENGTH 00792000
  1045. BCTR R14,0 BACK UP TO LAST BYTE OF FIELD 00793000
  1046. L R15,XPAGNUM PAGE NUMBER MASK 00794000
  1047. NR R14,R15 ENDING PAGE ADDRESS 00795000
  1048. LRA R0,0(,R14) IS ENDING ADDRESS VALID ? @V304635 00796000
  1049. BC 8+2,ADDCHEK2 IF IT'S NOT SEG EXCEPTION @V408246 00797010
  1050. * CONTINUE 00797060
  1051. LR R13,R1 SAVE STARTING ADDRESS @V408246 00797110
  1052. LR R0,R2 SAVE R2 FOR CALL TO PTRAN @V408246 00797160
  1053. LR R1,R14 VIRT ADDR INTO R1 FOR PTRAN @V408246 00797210
  1054. CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00797260
  1055. BC 2,ADDRERR ADDRESSING PROBLEM @V408246 00797310
  1056. LR R1,R13 RESTORE STARTING ADDRESS @V408246 00797360
  1057. LR R2,R0 RESTORE LENGTH @V408246 00797410
  1058. B ADDCHEK1 TRY AGAIN @V408246 00797460
  1059. ADDCHEK2 DS 0H @V408246 00797510
  1060. NR R15,R1 STARTING PAGE ADDRESS 00798000
  1061. CLR R14,R15 CHECK FOR PAGE BOUNDARY CROSSING 00799000
  1062. BCR 7,R9 YUP -- TAKE THE GR9 EXIT 00800000
  1063. BR R10 RETURN - EVERYTHING IS O.K. 00801000
  1064. EJECT 00804000
  1065. *---------------------------------------------------------------------* 00805000
  1066. * DYNAMIC CCW MODIFICATION - CODE '028' FOR ANYBODY * 00806000
  1067. * 'R1' = ADDRESS OF MODIFIED 'TIC' CCW * 00807000
  1068. * 'R2' = ADDRESS OF THE AFFECTED VIRTUAL DEVICE * 00808000
  1069. *---------------------------------------------------------------------* 00809000
  1070. HVCDCPM EQU * @V1D0631 00810000
  1071. USING IOBLOK,R9 @VA10860 00811100
  1072. USING VDEVBLOK,R13 @VA10860 00812100
  1073. USING RCWTASK,R7 @VA10860 00813100
  1074. NI VMPSW+2,X'FF'-X'30' SET CC TO 0 @VA10860 00814100
  1075. NI VMPSW+4,X'FF'-X'30' SET CC TO 0 @VA10860 00815100
  1076. CR R5,R6 RX SAME AS RY @VA10860 00816100
  1077. BE ERROR1 YES @VA10860 00817100
  1078. TM 3(R5),X'07' DW ALIGNED ? @VA10860 00818100
  1079. BNZ ERROR4 NO @VA10860 00819100
  1080. L R4,0(0,R5) CONTENTS OF RX, CCW ADDRESS @VA10860 00820100
  1081. L R1,0(0,R6) CONTENTS OF RY, DEV ADDRESS @VA10860 00821100
  1082. CALL DMKSCNVU FIND VDEVBLOK @VA10860 00822100
  1083. BNZ ERROR2 VDEVBLOK NOT FOUND @VA10860 00823100
  1084. LR R13,R8 VDEVBLOK IN R13 @VA10860 00824100
  1085. LA R1,0(R4) CCW ADDRESS LESS 1ST BYTE @VA10860 00825100
  1086. TRANS 2,1,OPT=(BRING,DEFER),ADEX=ERROR3 @VA10860 00826100
  1087. CLI 0(R2),X'03' NOOP ? @VA10860 00827100
  1088. BE NOOP YES @VA10860 00828100
  1089. TM 0(R2),X'08' TIC ? @VA10860 00829100
  1090. BZ ERROR6 NO @VA10860 00830100
  1091. TM 0(R2),X'07' TIC ? @VA10860 00831100
  1092. BNZ ERROR6 NO @VA10860 00832100
  1093. NOOP EQU * @VA10860 00833100
  1094. ICM R9,B'1111',VDEVIOB OLD IOBLOK @VA10860 00834100
  1095. BZ ERROR9 ISIN'T THERE @VA10860 00835100
  1096. ICM R7,B'0111',IOBCAW+1 ADDRESS OF CCW'S @VA10860 00836100
  1097. BZ RETURNC NO CCW'S NOT A SIO @VA10860 00837100
  1098. SL R7,F16 BEGINNING OF RCWTASK @VA10860 00838100
  1099. CLC RCWHEAD,FFS RCWTASK ? @VA10860 00839100
  1100. BNE RETURNC NO @VA10860 00840100
  1101. CLC RCWRCNT,ZEROES DMKCCW DO TRANSLATION YET ? @VA10860 00841100
  1102. BE RETURNC NO, HE WILL @VA10860 00842100
  1103. LR R5,R7 PRESERVE 1ST OLD RCWTASK @VA10860 00843100
  1104. SR R10,R10 @VA10860 00844100
  1105. FINDRCW EQU * @VA10860 00845100
  1106. L R6,RCWVCAW VIRTUAL,CCW ADDRESS @VA10860 00846100
  1107. CR R1,R6 BELOW THIS RCW @VA10860 00847100
  1108. BL NEXTRCW YES, NEXT RCW @VA10860 00848100
  1109. LH R0,RCWVCNT VIRTUAL CCW COUNT @VA10860 00849100
  1110. SLL R0,3 CONVERT TO BYTES @VA10860 00850100
  1111. AR R6,R0 END OF VIRTUAL CCW'S @VA10860 00851100
  1112. CR R1,R6 ABOVE THIS RCW ? @VA10860 00852100
  1113. BNL NEXTRCW YES, NEXT @VA10860 00853100
  1114. LR R10,R7 FOUND RCW @VA10860 00854100
  1115. NEXTRCW EQU * @VA10860 00855100
  1116. L R7,RCWPNT NEXT RCW @VA10860 00856100
  1117. LTR R7,R7 END OF RCW'S ? @VA10860 00857100
  1118. BNZ FINDRCW NO, KEEP LOOKING @VA10860 00858100
  1119. LTR R10,R10 FIND RCW ? @VA10860 00859100
  1120. BZ ERROR5 NO @VA10860 00860100
  1121. LR R7,R10 OLD RCW WITH MODIFIED CCW @VA10860 00861100
  1122. LA R3,RCWCCW START OF REAL CCW'S @VA10860 00862100
  1123. L R6,RCWVCAW START OF VIRTUAL CCW'S @VA10860 00863100
  1124. LH R0,RCWVCNT COUNT OF VIRTUAL CCW'S @VA10860 00864100
  1125. CH R0,RCWRCNT VIRTUAL COUNT=REAL COUNT @VA10860 00865100
  1126. BNE CPGEN NO, MUST BE CP GEN. CCW'S @VA10860 00866100
  1127. LR R8,R1 VIRTUAL CCW ADDRESS @VA10860 00867100
  1128. SR R8,R6 R8=DISPLACEMENT TO CCW @VA10860 00868100
  1129. AR R3,R8 DISPL + START =REAL CCW ADDRESS @VA10860 00869100
  1130. B FOUNDCCW @VA10860 00870100
  1131. CPGEN EQU * @VA10860 00871100
  1132. LA R0,8 @VA10860 00872100
  1133. FINDCCW EQU * @VA10860 00873100
  1134. TM RCWCTL-RCWCCW(R3),RCWGEN CP GENERATED ? @VA10860 00874100
  1135. BO BUMPREAL YES, NEXT REAL CCW @VA10860 00875100
  1136. CLR R1,R6 THIS CCW ? @VA10860 00876100
  1137. BE FOUNDCCW YES @VA10860 00877100
  1138. ALR R6,R0 NEXT VIRTUAL CCW @VA10860 00878100
  1139. BUMPREAL EQU * @VA10860 00879100
  1140. ALR R3,R0 NEXT REAL CCW @VA10860 00880100
  1141. B FINDCCW LOOP @VA10860 00881100
  1142. FOUNDCCW EQU * @VA10860 00882100
  1143. CLI 0(R3),X'03' REAL A NOOP ? @VA10860 00883100
  1144. BE NOOPCCW YES @VA10860 00884100
  1145. TM 0(R3),X'08' REAL A TIC ? @VA10860 00885100
  1146. BZ ERROR6 NO @VA10860 00886100
  1147. TM 0(R3),X'07' REAL A TIC ? @VA10860 00887100
  1148. BNZ ERROR6 NO @VA10860 00888100
  1149. NOOPCCW EQU * @VA10860 00889100
  1150. CLI 0(R2),X'03' VIRTUAL CCW NOOP ? @VA10860 00890100
  1151. BNE TICCHECK NO, MUST BE TIC @VA10860 00891100
  1152. BAL R14,TESTCSW TEST FOR I/O END @VA10860 00892100
  1153. LM R7,R8,0(R2) GET NOOP CCW @VA10860 00893100
  1154. STM R7,R8,0(R3) STORE NOOP CCW WE COULD GET CPC @VA10860 00894100
  1155. * IF CHANNEL FETCHES AS WE STORE 00895100
  1156. MVI 5(R3),X'00' ZERO DMKCCW'S FLAG BYTE @VA10860 00896100
  1157. B RETURNC DONE @VA10860 00897100
  1158. TICCHECK EQU * @VA10860 00898100
  1159. TM 3(R2),X'07' TIC TO ADDRESS DW ALIGNED ? @VA10860 00899100
  1160. BNZ ERROR8 NO @VA10860 00900100
  1161. LR R6,R2 PRESERVE REAL ADDR VIRT CCW @VA10860 00901100
  1162. ICM R2,B'0111',1(R6) TIC TO ADDRESS @VA10860 00902100
  1163. LRA R1,0(R2) IN USER CORE ? @VA10860 00903100
  1164. BC 2,ERROR7 NO @VA10860 00904100
  1165. LA R0,IOBSIZE @VA10860 00905100
  1166. CALL DMKFREE @VA10860 00906100
  1167. ICM R9,B'1111',VDEVIOB GET OLD IOB @VA10860 00907100
  1168. BZ FRTIOB TO LATE @VA10860 00908100
  1169. TM IOBCSW+4,CE+DE+UC+UE ENDING STATUS ? @VA10860 00909100
  1170. BNZ FRTIOB TO LATE @VA10860 00910100
  1171. TM IOBCSW+5,255-(IL+PCI) @VA10860 00911100
  1172. BNZ FRTIOB TO LATE @VA10860 00912100
  1173. MVC 0(IOBSIZE*8,R1),IOBLOK COPY OLD @VA10860 00913100
  1174. ST R2,IOBCAW-IOBLOK(0,R1) POIT TO NEW CCW'S @VA10860 00914100
  1175. ICM R2,B'1000',IOBCAW ADD 1ST BYTE @VA10860 00915100
  1176. LA R9,0(R2) DMKCCWTR REG9 @VA10860 00916100
  1177. LR R8,R13 VDEVBLOK @VA10860 00917100
  1178. SL R8,VMDVSTRT DMKCCWTR REG8 @VA10860 00918100
  1179. LR R10,R1 DMKCCWTR REG10 @VA10860 00919100
  1180. CALL DMKCCWTR TRANSLATE NEW CH PROGRAM @VA10860 00920100
  1181. L R8,IOBCAW-IOBLOK(0,R10) NEW CAW @VA10860 00921100
  1182. LA R8,0(R8) LESS 1ST BYTE @VA10860 00922100
  1183. SL R8,F16 NEW RCW ADDRESS @VA10860 00923100
  1184. NEXTOLD EQU * @VA10860 00924100
  1185. L R5,RCWPNT NEXT @VA10860 00925100
  1186. LTR R5,R5 LAST OLD RCW ? @VA10860 00926100
  1187. BZ TICCHAIN YES @VA10860 00927100
  1188. LR R7,R5 NEXT @VA10860 00928100
  1189. B NEXTOLD LOOP @VA10860 00929100
  1190. TICCHAIN EQU * @VA10860 00930100
  1191. ICM R9,B'1111',VDEVIOB @VA10860 00931100
  1192. BZ CSWIORCW @VA10860 00932100
  1193. TM IOBCSW+4,CE+DE ENDING STATUS ? @VA10860 00933100
  1194. BNZ CSWIORCW TO LATE @VA10860 00934100
  1195. TM IOBCSW+5,PRGC+PRTC+CCC+CDC+IFCC+CHC END STATUS? @VA10860 00935100
  1196. BNZ CSWIORCW TO LATE @VA10860 00936100
  1197. ST R8,RCWPNT CHAIN IN NEW RCW'S @VA10860 00937100
  1198. AL R8,F16 POINT TO CCW'S @VA10860 00938100
  1199. STCM R8,B'0111',1(R3) ADDRESS IN TIC @VA10860 00939100
  1200. MVI 0(R3),X'08' MAKE SURE CCW IS TIC @VA10860 00940100
  1201. LA R0,IOBSIZE @VA10860 00943100
  1202. CALL DMKFRET @VA10860 00944100
  1203. RETURNC EQU * @VA10860 00945100
  1204. SR R15,R15 ZERO @VA10860 00946100
  1205. CLI CPUID,X'FF' RUNNING SECOND LEVEL?? @VA11698 00947000
  1206. BE DIAGNOSE YES, ISSUE DIAGNOSE TO 1ST LEVEL @VA11698 00947100
  1207. R15SET EQU * @VA10860 00949100
  1208. ST R15,VMGPRS+4*R15 RETURN CODE @VA10860 00950100
  1209. B HVCEXIT @VA10860 00951100
  1210. DROP R7 @VA10860 00952100
  1211. EJECT 00953100
  1212. DIAGNOSE EQU * @V1D0631 00989000
  1213. BAL R14,TESTCSW GO TEST FOR CHANNEL OR DEVICE END@V1D0631 00990000
  1214. LH R6,IOBRADD GET DEVICE ADDRESS @VA11698 00991100
  1215. DC X'83360028' ISSUE DIAGNOSE TO CP @VA11698 00992100
  1216. BZ R15SET GO SAVE THE RETURN CODE @V1D0631 00993000
  1217. BC 2,SETCC2 GO SET CONDITION CODE TWO @V1D0631 00994000
  1218. SETCC1 EQU * @V1D0631 00995000
  1219. LA R2,X'10' SET CONDITION CODE 1 @V1D0631 00996000
  1220. SETCCODE EQU * @V1D0631 00997000
  1221. LA R1,VMPSW+4 GET THE BC PSW CONDITION CODE @V1D0631 00998000
  1222. * FIELD 00999000
  1223. TM VMESTAT,VMEXTCM IS THIS IN EC MODE ? @V1D0631 01000000
  1224. BZ NOECMODE NO, GO SET CONDITION CODE @V1D0631 01001000
  1225. LA R1,VMPSW+2 GET THE EC PSW CONDITION CODE @V1D0631 01002000
  1226. * FIELD 01003000
  1227. NOECMODE EQU * @V1D0631 01004000
  1228. EX R2,HSETCC SET CONDITION CODE @V1D0631 01005000
  1229. B R15SET GO SET THE RETURN CODE @V1D0631 01006000
  1230. HSETCC EQU * @V1D0631 01007000
  1231. OI 0(R1),*-* SET THE CONDITION CODE @V1D0631 01008000
  1232. ERROR1 EQU * @V1D0631 01009000
  1233. LA R15,1 'R1' AND 'R2' REGISTERS ARE THE @V1D0631 01010000
  1234. * SAME 01011000
  1235. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01012000
  1236. ERROR2 EQU * @V1D0631 01013000
  1237. LA R15,2 DEVICE SPECIFIED BY 'R2' @V1D0631 01014000
  1238. * REGISTER WAS 01015000
  1239. * NOT FOUND 01016000
  1240. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01017000
  1241. ERROR3 EQU * @V1D0631 01018000
  1242. LA R15,3 ADDRESS GIVEN BY 'R1' REGISTER @V1D0631 01019000
  1243. * WAS NOT 01020000
  1244. * WITHIN USER'S STORAGE SPACE 01021000
  1245. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01022000
  1246. ERROR4 EQU * @V1D0631 01023000
  1247. LA R15,4 ADDRESS GIVEN BY 'R1' REGISTER @V1D0631 01024000
  1248. * WAS NOT 01025000
  1249. * DOUBLE-WORD ALIGNED. 01026000
  1250. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01027000
  1251. ERROR5 EQU * @V1D0631 01028000
  1252. LA R15,5 CCW STRING CORRESPONDING TO @V1D0631 01029000
  1253. * 'R2' DEVICE 01030000
  1254. * AND 'R1' ADDRESS WAS NOT FOUND 01031000
  1255. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01032000
  1256. ERROR6 EQU * @V1D0631 01033000
  1257. LA R15,6 CCW AT ADDRESS SPECIFIED BY @V1D0631 01034000
  1258. * 'R1' IS 01035000
  1259. * NOT A TIC OR A NO-OP CCW 01036000
  1260. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01037000
  1261. ERROR7 EQU * @V1D0631 01038000
  1262. LA R15,7 NEW ADDRESS IN TIC IS NOT @V1D0631 01039000
  1263. * WITHIN USER'S 01040000
  1264. * STORAGE SPACE 01041000
  1265. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01042000
  1266. ERROR8 EQU * @V1D0631 01043000
  1267. LA R15,8 NEW ADDRESS IN TIC IS NOT @V1D0631 01044000
  1268. * DOUBLE-WORD 01045000
  1269. * ALIGNED 01046000
  1270. B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01047000
  1271. CSWIORCW EQU * @V1D0631 01048000
  1272. LR R8,R13 VDEVBLOK FOR DMKUNTFR @VA10860 01048500
  1273. CALL DMKUNTFR GO RELEASE RCWTASKS @V1D0631 01049000
  1274. FRTIOB LA R0,IOBSIZE GET THE SIZE OF IOB @VA03292 01050000
  1275. CALL DMKFRET GO RELEASE SPACE FOR IOBLOK @V1D0631 01051000
  1276. ERROR9 EQU * @V1D0631 01052000
  1277. LA R15,9 TOO LATE TO CHANGE THE CCW STRING@V1D0631 01053000
  1278. * (CHANNEL END OR DEVICE END HAS 01054000
  1279. * ALREADY OCCURRED) 01055000
  1280. SETCC2 EQU * @V1D0631 01056000
  1281. LA R2,X'20' SET CONDITION CODE TO 2 @V1D0631 01057000
  1282. B SETCCODE GO SET CONDITION CODE @V1D0631 01058000
  1283. SPACE 2 01059000
  1284. TESTCSW EQU * @V1D0631 01060000
  1285. ICM R9,15,VDEVIOB GET THE ADDRESS OF THE IOBLOK @V1D0631 01061000
  1286. BZ ERROR9 IF ADDRESS IS ZERO, GO SET RETURN@V1D0631 01062000
  1287. * CODE TO 9 01063000
  1288. TM IOBCSW+4,CE+DE IS THIS CHANNEL OR DEVICE END ? @V1D0631 01064000
  1289. BNZ ERROR9 YES, GO SET RETURN CODE TO 9 @V1D0631 01065000
  1290. TM IOBCSW+5,PRGC+PRTC+CCC+CDC+IFCC+CHC ARE STATUS @V1D0631 01066000
  1291. * FLAGS ON 01067000
  1292. BNZ ERROR9 YES, GO SET RETURN CODE 9 @V1D0631 01068000
  1293. BR R14 RETURN TO IN LINE CODE @V1D0631 01069000
  1294. DROP R9,R13 DROP BASE REG. FOR IOBLOK & @V1D0631 01070000
  1295. * VDEVBLOK 01071000
  1296. SPACE 4 01072000
  1297. SPECERR EQU * @V1D0631 01073000
  1298. LA R0,X'06' INTERRUPT CODE 01074000
  1299. B PROGINT 01075000
  1300. SPACE 01076000
  1301. ADDRERR EQU * REFLECT ADDRESSING ERROR 01077000
  1302. LA R0,X'05' INTERRUPT CODE 01078000
  1303. B PROGINT 01079000
  1304. SPACE 01080000
  1305. PROTERR EQU * REFLECT PROTECTION CHECK 01081000
  1306. LA R0,X'04' INTERRUPT CODE 01082000
  1307. B PROGINT 01083000
  1308. SPACE 01084000
  1309. PRIVLGD EQU * REFLECT PRIVILEGED OPERATION 01085000
  1310. LA R0,X'02' INTERRUPT CODE 01086000
  1311. SPACE 01087000
  1312. PROGINT EQU * 01088000
  1313. GOTO DMKPRGSM SIMULATE PROGRAM INTERRUPT 01089000
  1314. EJECT 01090000
  1315. DMKHVCPC DS 0D PAGES PER CYLINDER - PAGING + SPOOLING 01131000
  1316. DC AL1(24) REC/CYL 2305-1 (SAME AS 2305-2) @V200538 01132000
  1317. DC AL1(24) 2305-2 01133000
  1318. DC AL1(57) 3330 01134000
  1319. DC AL1(57) 3330-11 (SAME AS 3330) @V200538 01135000
  1320. DC AL1(120) PAGE LIMIT FOR 3350 @V304498 01136000
  1321. DC AL1(32) 2314, 2319 01137000
  1322. DC AL1(24) PAGE LIMIT FOR 3340 (35MB) @V2A2029 01138000
  1323. DC AL1(24) PAGE LIMIT FOR 3340 (70MB) @V2A2029 01139000
  1324. SPACE 2 01140000
  1325. DMKHVCDI DC F'0' COUNT OF DIAGNOSE I/O'S 01141000
  1326. LTORG 01142000
  1327. EJECT 01143000
  1328. COPY EQU 01144000
  1329. COPY VMBLOK 01145000
  1330. COPY IOBLOKS (R9) @V1D0631 01146000
  1331. PSA 01147000
  1332. COPY UDIRECT 01148000
  1333. COPY ACCOUNT 01149000
  1334. COPY RBLOKS 01150000
  1335. COPY VBLOKS 01151000
  1336. COPY DEVTYPES 01152000
  1337. EJECT 01153000
  1338. COPY NETWORK @VA03785 01154000
  1339. COPY VMCBLOKS @V387045 01154500
  1340. OSVSCOM MSSCOM @VA11354 01154550
  1341. END DMKHVCAL 01155000