Table of Contents

DMSDOS Source

References

Source Listing

DMSDOS.ASSEMBLE.txt
  1. DOS TITLE 'DMSDOS (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. * 00003000
  4. * * 00004000
  5. * MODULE NAME: * 00005000
  6. * * 00006000
  7. * DMSDOS ( CMS/DOS SVC HANDLER ) * 00007000
  8. * * 00008000
  9. * FUNCTION: * 00009000
  10. * * 00010000
  11. * PROVIDES THE INTERFACE CAPABILITIES IN THE CMS/DOS * 00011000
  12. * SEGMENT TO PROCESS DOS/VS SVCS. DMSDOS WILL PROCESS * 00012000
  13. * DOS/VS SVCS IN LINE OR WILL CALL OTHER ROUTINES THAT * 00013000
  14. * WILL SIMULATE THE SVC (E.G. OPEN, CLOSE, FETCH, EXCP). * 00014000
  15. * * 00015000
  16. * ATTRIBUTES: * 00016000
  17. * * 00017000
  18. * CMSDOS SEGMENT RESIDENT * 00018000
  19. * REENTRANT * 00019000
  20. * * 00020000
  21. * ENTRY POINT: * 00021000
  22. * * 00022000
  23. * DMSDOS * 00023000
  24. * * 00024000
  25. * ENTRY CONDITIONS: * 00025000
  26. * * 00026000
  27. * ENTERED VIA 'LPSW' FROM DMSITS * 00027000
  28. * * 00028000
  29. * R12 = A(DMSDOS) * 00029000
  30. * R14 = RETURN ADDRESS * 00030000
  31. * * 00031000
  32. * EXIT CONDITIONS: * 00032000
  33. * * 00033000
  34. * RETURN TO CALLER WITH RETURN CODE IN R15 * 00034000
  35. * * 00035000
  36. * RETURN CODES AND MESSAGES: * 00036000
  37. * * 00037000
  38. * 28 - SPECIFIED PHASE NOT FOUND * 00038000
  39. * 100 - UNSUPPORTED SVC XX CALLED FROM XXXXXX * 00039000
  40. * 100 - UNSUPPORTED FUNCTION IN A LIOCS ROUTINE * 00040000
  41. * 100 - SAVEAREA ADDR IN PART. PIB NOT EQUAL LTA SAVEAREA * 00041000
  42. * 100 - MVCOM ATTEMPTING TO ALTER OTHER THAN LOC 12-23 * 00042000
  43. * 100 - MVCOM FROM ADDRESS IS INVALID * 00043000
  44. * 100 - INVALID ADDRESS XXXXXX * 00044000
  45. * 100 - STXIT SAVEAREA ADDRESS INVALID * 00045000
  46. * 104 - V.M. SIZE CANNOT EXCEED SEGMENT START ADDRESS * 00046000
  47. * XXX - JOB CANCELLED DUE TO PROGRAM REQUEST * 00047000
  48. * * 00048000
  49. * CALLS TO OTHER ROUTINES: * 00049000
  50. * * 00050000
  51. * DMSERR, DMSFRE, DMSXCP, DMSFCH, DMSBOP, DMSOPL * 00051000
  52. * DMSOR1, DMSOR2, DMSOR3, DMSDMP, DMSCLS, DMSBAB * 00052000
  53. * * 00053000
  54. * EXTERNAL REFERENCES: * 00054000
  55. * * 00055000
  56. * NUCON, CMSAVE, BGCOM, SYSCOM * 00056000
  57. * PIBTAB, DOSAVE, FCHTAB, ANCHTAB * 00057000
  58. * * 00058000
  59. * REGISTER USAGE: * 00059000
  60. * * 00060000
  61. * R0 NUCON ADDRESSABILITY & WORK * 00061000
  62. * R1 WORK * 00062000
  63. * R2 SYSCOM ADDRESSABILITY & WORK * 00063000
  64. * R3 WORK * 00064000
  65. * R4 WORK * 00065000
  66. * R5 BGCOM ADDRESSABILITY & WORK * 00066000
  67. * R6 WORK * 00067000
  68. * R7 WORK * 00068000
  69. * R8 WORK * 00069000
  70. * R9 WORK * 00070000
  71. * R10 PIBTAB ADDRESSABILITY & WORK * 00071000
  72. * R11 WORK * 00072000
  73. * R12 DMSDOS ADDRESSABILITY * 00073000
  74. * R13 SVC SAVE AREA ADDRESSABILITY * 00074000
  75. * R14 EXTERNAL LINKAGE & RETURN REGISTER * 00075000
  76. * R15 EXTERNAL LINKAGE & RETURN CODE * 00076000
  77. * * 00077000
  78. * OPERATION: * 00078000
  79. * * 00079000
  80. * SVC SUPPORT ROUTINES AND THEIR OPERATION: * 00080000
  81. * * 00081000
  82. * * 00082000
  83. * EXCP-SVC 0: USED TO READ FROM CMS OR DOS/OS FORMATTED DISKS. * 00083000
  84. * * 00084000
  85. * THE CCW'S ARE CONVERTED TO APPROPIATE CMS'S I/O * 00085000
  86. * REQUESTS (E.G. RDBUF/WRBUF, CARDRD/CARDPH, ETC.) * 00086000
  87. * AND TO POST THE CCB ACCORDING TO THE CMS RETURN * 00087000
  88. * INFORMATION. DMSDOS WILL CALL DMSXCP ROUTINE TO * 00088000
  89. * PERFORM THE I/O OPERATION. IF A NON-ZERO RETURN * 00089000
  90. * CODE IS RETURNED FROM DMSXCP, A CANCEL IS DONE. * 00090000
  91. * * 00091000
  92. * FETCH-SVC 1: USED TO BRING A PROBLEM PROGRAM PHASE INTO USER * 00092000
  93. * STORAGE, AND TO START EXECUTION OF THE PHASE IF * 00093000
  94. * THE PHASE WAS FOUND. * 00094000
  95. * * 00095000
  96. * IF THE USER DID SPECIFY A DIRECTORY LIST, A CALL * 00096000
  97. * TO DMSFCH IS MADE. OTHERWISE, DMSDOS WILL BUILD * 00097000
  98. * A DIRECTORY LIST USING THE SPECIFIED PHASE NAME. * 00098000
  99. * ONCE THE DIRECTORY LIST IS PREPARED, A CALL TO * 00099000
  100. * DMSFCH IS MADE. UPON RETURN FROM DMSFCH, IF THE * 00100000
  101. * PHASE WAS FOUND, THE ENTRY POINT ADDRESS OF THE * 00101000
  102. * PHASE IS SAVED IN THE 'SVC' SAVE AREA OLDPSW SO * 00102000
  103. * THAT UPON RETURN TO CMS, DMSITS WILL THEN GIVE * 00103000
  104. * CONTROL TO THE PHASE JUST LOADED. IF UPON RETURN * 00104000
  105. * FROM DMSFCH THERE WHERE ANY ERRORS, A CANCEL IS * 00105000
  106. * DONE. IF THE PHASE WAS NOT FOUND, A MESSAGE IS * 00106000
  107. * ISSUED AND A CANCEL IS DONE. * 00107000
  108. * * 00108000
  109. * FETCH-SVC 2: USED TO BRING A $$B-TRANSIENT PHASE INTO THE CMS * 00109000
  110. * TRANSIENT AREA (OR IF THE PHASE IS IN THE CMSDOS * 00110000
  111. * SEGMENT, NOT TO LOAD IT), AND START EXECUTION OF * 00111000
  112. * THE PHASE IF THE PHASE WAS FOUND. * 00112000
  113. * * 00113000
  114. * A SEARCH IS MADE THROUGH THE INCORE SEGMENT (S) * 00114000
  115. * IN AN ATTEMPT TO LOCATE THE SPECIFIED TRANSIENT. * 00115000
  116. * IF THE PHASE IS FOUND IN ONE OF THE SEGMENTS, A * 00116000
  117. * CALL TO DMSFCH IS NOT NEEDED. IF THE PHASE WAS * 00117000
  118. * NOT FOUND, A CALL TO DMSFCH IS MADE IN A SIMILAR * 00118000
  119. * WAY AS IN SVC 1 ABOVE. ONCE THE TRANSIENT ENTRY * 00119000
  120. * POINT IS OBTAINED (FROM INCORE OR LOADED), THE * 00120000
  121. * ADDRESS IS SAVED IN THE SVC SAVE AREA (AS ABOVE * 00121000
  122. * SVC 1) SO THAT DMSITS GIVES IMMEDIATE CONTROL TO * 00122000
  123. * THE PHASE WANTED. ERRORS OR NOT FOUND CONDITIONS * 00123000
  124. * ARE HANDLED AS ABOVE SVC 1. (SEE NOTE1 FOR * 00124000
  125. * ADDITIONAL INFORMATION ABOUT SVC 2 PROCESSING). * 00125000
  126. * * 00126000
  127. * LOAD-SVC 4: USED TO BRING A PROBLEM PROGRAM PHASE INTO USER * 00127000
  128. * STORAGE, AND RETURN THE CALLER THE ENTRY POINT * 00128000
  129. * ADDRESS OF THE PHASE JUST LOADED. * 00129000
  130. * * 00130000
  131. * LOADING OF THE REQUESTED PHASE IS DONE EXACTLY AS * 00131000
  132. * FETCH (SVC 1) CALLING DMSFCH. ANY ERRORS RETURNED * 00132000
  133. * FROM DMSFCH ARE PROCESSED EXACTLY AS IN FETCH. A * 00133000
  134. * DIFFERENCE BETWEEN FETCH (SVC 1) AND LOAD (SVC 4), * 00134000
  135. * IS THAT UPON RETURN FROM DMSFCH, ASSUMING THERE IS * 00135000
  136. * NO ERRORS, THE USER'S REGISTER 0 AND 1 ARE UPDATED * 00136000
  137. * TO CONTAIN THE ADDRESS OF THE DIRECTORY LIST (FOR * 00137000
  138. * THE USER TO TEST IF THE PHASE WAS FOUND), AND THE * 00138000
  139. * ENTRY POINT ADDRESS OF THE PHASE, RESPECTIVELY. * 00139000
  140. * * 00140000
  141. * MVCOM-SVC 5: USED TO PROVIDE THE USER WITH A MEANS OF ALTERING * 00141000
  142. * POSITIONS 12 THROUGH 23 OF THE PARTITION COMMUNI- * 00142000
  143. * CATIONS REGION. * 00143000
  144. * * 00144000
  145. * BEFORE MOVING THE SPECIFIED INFORMATION, A TEST IS * 00145000
  146. * MADE TO ENSURE THAT THE RANGE (USER'S TO ADDRESS, * 00146000
  147. * PLUS LENGTH OF FIELD TO MOVE) WILL NOT EXCEED THE * 00147000
  148. * ALLOWED RANGE. ONCE THE SPECIFIED RANGE IS FOUND TO * 00148000
  149. * BE WITHIN THE ALLOWED LIMITS, THE USER'S SPECIFIED * 00149000
  150. * INFORMATION IS MOVED TO THE PARTITION COMMUNICATIONS * 00150000
  151. * REGION. * 00151000
  152. * * 00152000
  153. * CANCL-SVC 6: USED TO CANCEL A DOS/VS SESSION EITHER BY A DOS/VS * 00153000
  154. * PROGRAM REQUEST, OR BY REQUEST FROM ANY OF THE CMS * 00154000
  155. * ROUTINES HANDLING CMS/DOS. * 00155000
  156. * * 00156000
  157. * CANCEL WILL ISSUE THE MESSAGE 'JOB CANCELLED DUE TO * 00157000
  158. * PROGRAM REQUEST'. A TEST WILL BE MADE TO SEE IF THE * 00158000
  159. * VALUE OF REGISTER 15 UPON ENTRY TO CANCEL IS BELOW * 00159000
  160. * 256. IF BELOW, THAT WILL BE THE RETURN CODE TO CMS. * 00160000
  161. * IF EQUAL OR GREATER, A SPECIAL RETURN CODE OF 101 * 00161000
  162. * WILL BE USED TO DENOTE THAT THE CANCEL WASS ISSUED * 00162000
  163. * FROM A USER PROGRAM (RETURN CODE OF 101 IS NOT USED * 00163000
  164. * FOR CMS ERROR MESSAGES). PROCESSING THEN CONTINUES * 00164000
  165. * USING THE 'EOJ' CODE. (SEE EOJ - SVC 14 BELOW FOR A * 00165000
  166. * DESCRIPTION OF THE COMMON EOJ/CANCEL CODE). * 00166000
  167. * * 00167000
  168. * WAIT-SVC 7: USED TO WAIT ON A CCB, ECB OR TECB. (NOTE THAT CMS/ * 00168000
  169. * DOS DOES NOT SUPPORT ECB'S OR TECB'S). IN THE CASE * 00169000
  170. * OF CCB'S, THEY WILL ALWAYS BE POSTED BY THE DMSXCP * 00170000
  171. * ROUTINE BEFORE RETURNING TO THE CALLER. * 00171000
  172. * * 00172000
  173. * THE WAIT SUPPORT UNDER CMS/DOS WILL EFFECTIVELY BE * 00173000
  174. * A BRANCH TO THE CMS/DOS POST ROUTINE. THIS IS DONE * 00174000
  175. * BECAUSE IF THE USER EXPECTS TO WAIT ON A CCB, MAY * 00175000
  176. * BE BECAUSE HE DID NOT TEST TO SEE IF THE WAIT BIT * 00176000
  177. * WAS ON (WHICH SHOULD BE IF HE DID ANY I/O, OR MAY * 00177000
  178. * NOT BE ON IF HE DID NOT DO ANY I/O, IN WHICH CASE * 00178000
  179. * IT DOES NOT MATTER). IN THE CASE OF A ECB OR TECB, * 00179000
  180. * SINCE CMS/DOS DOES NOT SUPPORT THEM, THE USER MUST * 00180000
  181. * THEREFORE KNOW WHAT HE IS DOING. * 00181000
  182. * * 00182000
  183. * SVC 8: TEMPORARILY RETURN CONTROL FROM A $$B-TRANSIENT TO * 00183000
  184. * THE PROBLEM PROGRAM. * 00184000
  185. * * 00185000
  186. * IF A $$B-TRANSIENT HAS TO TEMPORARILY GIVE CONTROL * 00186000
  187. * THE PROBLEM PROGRAM, THE $$B-TRANSIENT WILL ISSUE * 00187000
  188. * AN SVC 8 PASSING IN REGISTER 0 THE PROBLEM PROGRAM * 00188000
  189. * ADDRESS TO GAIN CONTROL. SVC 8 ROUTINE WILL STORE * 00189000
  190. * THIS ADDRESS ON THE SVC WORK AREA OLDPSW, REMEMBER * 00190000
  191. * THE ADDRESS FROM WHERE THE SVC 8 WAS ISSUED (FOR * 00191000
  192. * LATER RETURN), AND RETURNS BACK TO CMS SVC HANDLER. * 00192000
  193. * (SEE NOTE1 FOR ADDITIONAL INFORMATION ABOUT SVC 8 * 00193000
  194. * PROCESSING). * 00194000
  195. * * 00195000
  196. * SVC 9: RETURN TO A $$B-TRANSIENT AFTER AN SVC 8 WAS ISSUED * 00196000
  197. * TO GIVE CONTROL TO THE PROBLEM PROGRAM. * 00197000
  198. * * 00198000
  199. * THE ADDRESS SAVED BEFORE (SVC 8 ABOVE) IS STORED * 00199000
  200. * IN THE SVC WORK AREA OLDPSW, SO THAT WHEN DMSDOS * 00200000
  201. * RETURNS TO THE CMS SVC HANDLER, CONTROL IS GIVEN * 00201000
  202. * TO THE $$B-RANSIENT THAT ISSUED THE SVC 8. (SEE * 00202000
  203. * NOTE 1 FOR ADDITIONAL INFORMATION ABOUT * 00203000
  204. * SVC 9 PROCESSING). * 00204000
  205. * * 00205000
  206. * SVC 11: RETURN FROM A $$B-TRANSIENT TO THE CALLING PROBLEM * 00206000
  207. * PROGRAM. * 00207000
  208. * * 00208000
  209. * THE ADDRESS SAVED WHEN THE INITIAL SVC 2 (FETCH A * 00209000
  210. * $$B-TRANSIENT) WAS ISSUED, IS STORED IN THE CMS'S * 00210000
  211. * SVC WORK AREA OLDPSW. NOW, WHEN DMSDOS RETURNS TO * 00211000
  212. * THE CMS'S SVC HANDLER, CONTROL WILL RETURN TO THE * 00212000
  213. * PROBLEM PROGRAM THAT ISSUED THE SVC 2 CALLING THE * 00213000
  214. * $$B-TRANSIENT. (SEE NOTE1 FOR ADDITIONAL INFORMATION * 00214000
  215. * ABOUT SVC 11 PROCESSING). * 00215000
  216. * * 00216000
  217. * SVC 12: RESETS FLAGS TO 0 IN THE LINKAGE CONTROL BYTE IN * 00217000
  218. * BGCOM (COMMUNICATION REGION). IF R1 = 0, SVC 12 * 00218000
  219. * HAS ANOTHER MEANING. BIT 5 OF JCSW4 (COMREG BYTE * 00219000
  220. * 59) IS TURNED OFF. * 00220000
  221. * * 00221000
  222. * IF R1 CONTAINS A NONZERO VALUE, THE FUNCTION * 00222000
  223. * DEPENDS ON BIT 8 OF THIS REGISTER. IF THIS BIT * 00223000
  224. * IS 0, THIS SVC SUPPLIES SUPERVISORY SUPPORT * 00224000
  225. * TO RESET FLAGS IN THE LINKAGE CONTROL BYTE * 00225000
  226. * (DISPLACEMENT 57 IN BGCOM - COMMUNICATION REGION). * 00226000
  227. * THE USER HAS PROVIDED THE ADDRESS OF A * 00227000
  228. * MASK (1 BYTE) IN R1. THIS MASK IS ANDED WITH THE * 00228000
  229. * LINKAGE CONTROL BYTE. IF BIT 8 OF R1 IS ONE, * 00229000
  230. * THIS SVC SUPPLIES THE SUPERVISORY SUPPORT TO * 00230000
  231. * RESET FLAGS IN A SPECIFIED BYTE OF BGCOM * 00231000
  232. * (COMMUNICATION REGION). THE USER HAS * 00232000
  233. * PROVIDED A DISPLACEMENT IN BYTE 2 AND A MASK * 00233000
  234. * IN BYTE 3 OF R1. THE MASK IS ANDED WITH THE * 00234000
  235. * BYTE AT THE SPECIFIED DISPLACEMENT IN THE PARTITION * 00235000
  236. * COMMUNICATION REGION. * 00236000
  237. * * 00237000
  238. * * 00238000
  239. * EOJ-SVC 14: USED TO NORMALLY TERMINATE EXECUTION OF A PROBLEM * 00239000
  240. * PROGRAM. * 00240000
  241. * * 00241000
  242. * THE LAST SVC SAVE WORK AREA IS UNSTACKED. CLEANUP * 00242000
  243. * IS DONE BY: * 00243000
  244. * 1. CLEARING THE CMS DOSLIB CMSCB * 00244000
  245. * 2. RESETTING THE JOBNAME IN BGCOM * 00245000
  246. * * 00246000
  247. * THE LATEST RETURN CODE IS LOADED INTO REGISTER 15, * 00247000
  248. * AND CONTROL RETURNS TO DMSITS (CMSRET). * 00248000
  249. * * 00249000
  250. * SVC 16: ESTABLISH OR TERMINATE LINKAGE TO A USER'S * 00250000
  251. * PROGRAM CHECK ROUTINE. * 00251000
  252. * * 00252000
  253. * LOCATE THE APPROPRIATE PC OPTION TABLE ENTRY. * 00253000
  254. * THEN DETERMINE BY TESTING R0 WHETHER ESTABLISHING OR * 00254000
  255. * TERMINATING LINKAGE TO USER'S PC ROUTINE. * 00255000
  256. * IF R0 HAS A ZERO VALUE (TERMINATE LINKAGE), DETERMINE * 00256000
  257. * IF PC ROUTINE IS ACTIVE (PC ROUTINE ADDRESS IN PC * 00257000
  258. * OPTION TABLE IS NEGATIVE) AND IF IT IS, TERMINATE * 00258000
  259. * LINKAGE BY STORING ZERO IN ROUTINE ADDRESS FIELD OF PC* 00259000
  260. * OPTION TABLE. IF ROUTINE IS NOT ACTIVE PRESENTLY, * 00260000
  261. * STORE ZEROS IN PC ROUTINE ADDRESS FIELD AND SAVEAREA * 00261000
  262. * ADDRESS FIELD IN PC OPTION TABLE. * 00262000
  263. * IF R0 IS NOT ZERO, THE STXIT MACRO PASSED PARAMETERS. * 00263000
  264. * (USER PC ROUTINE ADDRESS AND SAVEAREA ADDRESS) * 00264000
  265. * IN THIS CASE, THE LIMITS OF THE SAVEAREA ARE * 00265000
  266. * VALIDATED (CANNOT BE LESS THAN 20000 OR GREATER THAN * 00266000
  267. * PARTITION END). NEXT, IF A STXIT PC ROUTINE IS * 00267000
  268. * ACTIVE, THE COMPLEMENT OF THE NEW ROUTINE ADDRESS * 00268000
  269. * IS PLACED IN THE PC OPTION TABLE. IF NO STXIT * 00269000
  270. * PC ROUTINE IS ACTIVE, THE NEW PC ROUTINE ADDRESS AND * 00270000
  271. * SAVEAREA ADDRESS ARE STORED IN THE PC OPTION TABLE. * 00271000
  272. * * 00272000
  273. * SVC 17: USED TO PROVIDE SUPERVISORY SUPPORT FOR THE * 00273000
  274. * EXIT MACRO. SVC 17 PROVIDES A RETURN FROM THE * 00274000
  275. * USER'S PC ROUTINE TO THE NEXT SEQUENTIAL INSTRUCTION * 00275000
  276. * IN THE PROGRAM THAT WAS INTERRUPTED DUE TO A * 00276000
  277. * PROGRAM CHECK. * 00277000
  278. * * 00278000
  279. * LOCATE APPROPRIATE PC OPTION TABLE ENTRY. RESTORE * 00279000
  280. * USER'S REGISTERS AND PSW. STORE THE COMPLEMENT * 00280000
  281. * OF THE PC ROUTINE ADDRESS IN THE PC OPTION TABLE * 00281000
  282. * (CHANGE ROUTINE ADDRESS FROM NEGATIVE TO POSITIVE). * 00282000
  283. * RETURN TO NEXT SEQUENTIAL INSTRUCTION IN THE * 00283000
  284. * PROGRAM THAT WAS INTERRUPTED. * 00284000
  285. * * 00285000
  286. * SVC 26: VALIDATE ADDRESS LIMITS. THE UPPER ADDRESS MUST * 00286000
  287. * BE SPECIFIED IN GENERAL REGISTER 2 AND THE LOWER * 00287000
  288. * ADDRESS MUST BE SPECIFIED IN GENERAL REGISTER 1. * 00288000
  289. * * 00289000
  290. * FIRST THE LOWER ADDRESS MUST NOT BE NEGATIVE. * 00290000
  291. * AN ERROR MESSAGE DMSDOS005E IS ISSUED IF IT IS. * 00291000
  292. * SECOND, THE HIGH ADDRESS CANNOT BE NEGATIVE. * 00292000
  293. * IF IT IS, THE SAME ERROR MESSAGE IS ISSUED. * 00293000
  294. * IF THE LOW OR HIGH ADDRESS IS GREATER THAN THE * 00294000
  295. * END OF PARTITION ADDRESS IN BGCOM, THE SAME ERROR * 00295000
  296. * MESSAGE IS ISSUED. OTHERWISE, CONTROL * 00296000
  297. * RETURNS TO THE CALLER. * 00297000
  298. * * 00298000
  299. * COMRG-SVC 33: USED TO PROVIDE THE CALLER WITH THE ADDRESS OF THE * 00299000
  300. * PARTITION COMMUNICATIONS REGION. * 00300000
  301. * * 00301000
  302. * DMSDOS WILL PROVIDE THE CALLER WITH THE ADDRESS OF * 00302000
  303. * THE PARTITION COMMUNICATIONS REGION, IN THE USER'S * 00303000
  304. * REGISTER 1. * 00304000
  305. * * 00305000
  306. * SVC 34: PROVIDES SUPPORT FOR THE GETIME MACRO. * 00306000
  307. * SVC 34 UPDATES THE DATE FIELD IN THE COMMUNICATIONS * 00307000
  308. * REGION. UPON RETURN, GENERAL REGISTER 1 * 00308000
  309. * CONTAINS THE TIME OF DAY IN TIMER UNITS (1/300 SEC). * 00309000
  310. * * 00310000
  311. * SVC 37: ESTABLISH OR TERMINATE LINKAGE TO A USER'S * 00311000
  312. * ABNORMAL TERMINATION ROUTINE. * 00312000
  313. * * 00313000
  314. * LOCATE THE APPROPRIATE AB OPTION TABLE ENTRY. * 00314000
  315. * THEN DETERMINE BY TESTING R0 WHETHER ESTABLISHING OR * 00315000
  316. * TERMINATING LINKAGE TO USER'S AB ROUTINE. * 00316000
  317. * IF R0 HAS A ZERO VALUE (TERMINATE LINKAGE), DETERMINE * 00317000
  318. * IF AB ROUTINE IS ACTIVE (AB ROUTINE ADDRESS IN AB * 00318000
  319. * OPTION TABLE IS NEGATIVE), AND IF IT IS, TERMINATE * 00319000
  320. * LINKAGE BY STORING ZERO IN ROUTINE ADDRESS FIELD OF AB* 00320000
  321. * OPTION TABLE. IF ROUTINE IS NOT ACTIVE PRESENTLY, * 00321000
  322. * STORE ZEROS IN AB ROUTINE ADDRESS FIELD AND SAVEAREA * 00322000
  323. * ADDRESS FIELD IN AB OPTION TABLE. * 00323000
  324. * IF R0 IS NOT ZERO, THE STXIT MACRO PASSED PARAMETERS. * 00324000
  325. * (USER AB ROUTINE ADDRESS AND SAVEAREA ADDRESS) * 00325000
  326. * IN THIS CASE, THE LIMITS OF THE SAVEAREA ARE * 00326000
  327. * VALIDATED (CANNOT BE LESS THAN 20000 OR GREATER THAN * 00327000
  328. * PARTITION END). NEXT, IF A STXIT AB ROUTINE IS * 00328000
  329. * ACTIVE, THE COMPLEMENT OF THE NEW ROUTINE ADDRESS * 00329000
  330. * IS PLACED IN THE AB OPTION TABLE. IF NO STXIT * 00330000
  331. * AB ROUTINE IS ACTIVE, THE NEW AB ROUTINE ADDRESS AND * 00331000
  332. * SAVEAREA ADDRESS ARE STORED IN THE AB OPTION TABLE. * 00332000
  333. * * 00333000
  334. * POST-SVC 40: USED TO POST AN ECB, TECB OR CCB. * 00334000
  335. * * 00335000
  336. * BYTE 2, BIT 0 OF THE SPECIFIED CONTROL BLOCK WILL * 00336000
  337. * BE TURNED 'ON' BY DMSDOS. * 00337000
  338. * * 00338000
  339. * SVC 50: ISSUED BY A LOGICAL IOCS ROUTINE WHEN THE LIOCS IS * 00339000
  340. * CALLED TO PERFORM AN OPERATION FOR WHICH THE LIOCS * 00340000
  341. * WAS NOT GENERATED TO PERFORM. * 00341000
  342. * * 00342000
  343. * THE ERROR MESSAGE 'UNSUPPORTED FUNCTION IN A LIOCS * 00343000
  344. * ROUTINE' WILL BE ISSUED, AND THE SESSION WILL THEN * 00344000
  345. * BE TERMINATED. * 00345000
  346. * * 00346000
  347. * SVC 61: GETVIS: USED BY VSAM TO OBTAIN FREE STORAGE FOR * 00347000
  348. * SCRATCH USE OR FOR OBTAINING AN AREA INTO WHICH A * 00348000
  349. * RELOCATABLE VSAM PROGRAM MAY BE LOADED. * 00349000
  350. * * 00350000
  351. * A FREE STORAGE SUBROUTINE SIMILAR TO THAT IN THE * 00351000
  352. * "DMSSMN" ROUTINE IS CALLED TO OBTAIN THE NEEDED * 00352000
  353. * SPACE (FROM THE USER AREA). IF SUCCESSFUL, THE * 00353000
  354. * ADDRESS IS RETURNED IN REGISTER 1, AND REGISTER 15 * 00354000
  355. * IS CLEARED. IF THE REQUEST CANNOT BE SATISFIED, A * 00355000
  356. * RETURN-CODE OF 12 IS PASSED BACK IN REGISTER 15. * 00356000
  357. * * 00357000
  358. * THE "PAGE", "POOL", AND "SVA" GETVIS OPTIONS ARE * 00358000
  359. * IGNORED. * 00359000
  360. * * 00360000
  361. * SVC 62: FREEVIS: USED TO RETURN THE FREE STORAGE OBTAINED * 00361000
  362. * VIA AN EARLIER GETVIS CALL. * 00362000
  363. * * 00363000
  364. * THE FREE STORAGE SUBROUTINE SIMILAR TO THAT IN * 00364000
  365. * THE "DMSSMN" ROUTINE IS CALLED TO RETURN THE AREA * 00365000
  366. * DESIGNATED BY REGISTER 1. * 00366000
  367. * * 00367000
  368. * SVC 63: USE: USED BY VSAM ROUTINES TO ENSURE THAT SYSTEM * 00368000
  369. * RESOURCES ARE MODIFIED SERIALLY, SO THAT TWO OR * 00369000
  370. * MORE ATTEMPTS TO MODIFY THE SAME DATA AT THE SAME * 00370000
  371. * TIME CANNOT SUCCEED. * 00371000
  372. * * 00372000
  373. * A TABLE OF COUNTERS ("RURTBL") IS KEPT FOR THE * 00373000
  374. * VARIOUS RESOURCES. IF THE COUNTER CORRESPONDING * 00374000
  375. * TO THE SPECIFIED RESOURCE IS 0, IT IS INCREMENTED * 00375000
  376. * BY ONE, AND A VALUE OF 0 IS RETURNED IN REGISTER 0. * 00376000
  377. * IF THE COUNTER WAS ALREADY > 0, IT IS INCREMENTED * 00377000
  378. * BY ONE, AND A VALUE OF 8 IS RETURNED IN REGISTER 0. * 00378000
  379. * * 00379000
  380. * SVC 64: RELEASE: USED BY VSAM ROUTINES TO "RELEASE" A * 00380000
  381. * RESOURCE FOR WHICH A PREVIOUS "USE" WAS ISSUED. * 00381000
  382. * * 00382000
  383. * THE COUNTER PERTAINING TO THE RESOURCE IS DECREMENTED * 00383000
  384. * BY ONE. IF THIS SHOULD MAKE THE COUNTER NEGATIVE, * 00384000
  385. * IT IS CLEARED INSTEAD. * 00385000
  386. * * 00386000
  387. * SVC 65: CDLOAD: USED TO LOAD A RELOCATABLE VSAM PHASE INTO * 00387000
  388. * STORAGE, UNLESS THE PROGRAM HAS ALREADY BEEN LOADED. * 00388000
  389. * * 00389000
  390. * IF AN ANCHOR TABLE IS AVAILABLE, IT IS SEARCHED * 00390000
  391. * FOR THE GIVEN PHASE; IF FOUND, ITS LOAD POINT, * 00391000
  392. * ENTRY POINT, AND LENGTH ARE RETURNED IN THE CALLER'S * 00392000
  393. * 0, 1, AND 14 RESPECTIVELY, WITH REGISTER 15 = 0. * 00393000
  394. * * 00394000
  395. * IF NOT, DMSFCH IS CALLED TO FIND THE GIVEN PHASE; * 00395000
  396. * IF FOUND IN A DISCONTINUOUS SHARED SEGMENT, REGISTERS * 00396000
  397. * 0, 1, AND 14 ARE LOADED AS ABOVE AND RETURN MADE. * 00397000
  398. * * 00398000
  399. * IF THE PHASE WAS FOUND BUT IS NOT LOADED, STORAGE * 00399000
  400. * IS OBTAINED (IF AVAILABLE) FROM THE GETVIS CODE; * 00400000
  401. * THEN DMSFCH IS CALLED AGAIN TO LOAD THE PROGRAM INTO * 00401000
  402. * THAT STORAGE AREA. THEN AN ANCHOR TABLE IS BUILT IN * 00402000
  403. * THE USER AREA (UNLESS ONE ALREADY EXISTS), THE * 00403000
  404. * APPROPRIATE ENTRIES MADE THEREIN, AND REGISTERS * 00404000
  405. * 0, 1, AND 14 LOADED AS ABOVE, WITH RETURN TO CALLER. * 00405000
  406. * * 00406000
  407. * IF THE PROGRAM CANNOT BE FOUND, OR IF STORAGE IS * 00407000
  408. * UNAVAILABLE FOR EITHER LOADING THE PROGRAM OR FOR * 00408000
  409. * BUILDING THE ANCHOR TABLE, AN ERROR CODE 22 (X'16') * 00409000
  410. * IS RETURNED TO THE CALLER IN REGISTER 15. * 00410000
  411. * * 00411000
  412. * SVC 66: RUNMODE: USED BY A PROBLEM PROGRAM TO FIND OUT IF * 00412000
  413. * THE PROGRAM IS RUNNING IN REAL OR VIRTUAL MODE. * 00413000
  414. * * 00414000
  415. * THE CALLER'S REGISTER 0 WILL BE ZEROED TO INDICATE * 00415000
  416. * THAT THE PROGRAM IS RUNNING IN VIRTUAL MODE. * 00416000
  417. * * 00417000
  418. * SVC 75: SECTVAL: USED BY VSAM I/O ROUTINES (E.G. IKQIOA) TO * 00418000
  419. * OBTAIN A SECTOR NUMBER FOR A 3330, 3330-11, 3340, * 00419000
  420. * OR 3350 DEVICE * 00420000
  421. * 00421000
  422. * THE APPROPRIATE SECTOR VALUE IS CALCULATED FROM THE * 00422000
  423. * INPUT DATA SUPPLIED BY THE USER'S REGISTER 0 AND 1; * 00423000
  424. * IF THE CALCULATION IS SUCCESSFUL, THE SECTOR NUMBER * 00424000
  425. * (FROM 0 TO 127) IS RETURNED IN REGISTER 0. * 00425000
  426. * * 00426000
  427. * IF ANY ERRORS WERE DETECTED, THE NO-OP SET-SECTOR * 00427000
  428. * VALUE OF 255 (X'FF') IS RETURNED. * 00428000
  429. * * 00429000
  430. * 00430000
  431. * SVC 95: EXIT AB: EXIT FROM ABNORMAL TASK TERMINATION 00431000
  432. * ROUTINE AND CONTINUE THE TASK. 00432000
  433. * 00433000
  434. * THE LINKAGE TO EITHER THE PC OR AB ROUTINE IS 00434000
  435. * REESTABLISHED, AND THE CANCEL CONDITION IS RESET 00435000
  436. * BY CLEARING THE ABEND INDICATION IN THE PART- 00436000
  437. * ITION PIB EXTENSION. CONTROL IS RETURNED TO THE 00437000
  438. * INSTRUCTION FOLLOWING THE EXIT AB MACRO. 00438000
  439. * 00439000
  440. * THE FOLLOWING SVC'S ARE HANDLED AS A NO-OP; IN EACH CASE, * 00440000
  441. * REGISTER 15 IS CLEARED TO SIMULATE SUCCESSFUL OPERATION, * 00441000
  442. * AND ALL OTHER REGISTERS ARE RETURNED UNCHANGED, UNLESS * 00442000
  443. * OTHERWISE NOTED: * 00443000
  444. * * 00444000
  445. * SVC 10: SET TIMER INTERVAL * 00445000
  446. * SVC 18: STXIT (IT) * 00446000
  447. * SVC 20: ESTABLISH LNKGE TO OC * 00447000
  448. * SVC 22: SEIZE (INTERRUPT ENABLE/DISABLE) * 00448000
  449. * SVC 24: SET TIMER INTERVAL * 00449000
  450. * SVC 35: HOLD A TRACK * 00450000
  451. * SVC 36: FREE A TRACK * 00451000
  452. * SVC 41: DEQUEUE A RESOURCE * 00452000
  453. * SVC 42: ENQUEUE A RESOURCE * 00453000
  454. * SVC 52: RETURN REMAINING TIMER INTERVAL * 00454000
  455. * (REGISTER 0 IS ALSO CLEARED) * 00455000
  456. * SVC 67: PFIX, FIX PAGES IN REAL STORAGE * 00456000
  457. * SVC 68: PFREE, FREE PAGES IN REAL STORAGE * 00457000
  458. * SVC 71: SETPFA * 00458000
  459. * SVC 85: RELPAG * 00459000
  460. * SVC 86: FCEPGOUT * 00460000
  461. * SVC 87: PAGEIN * 00461000
  462. * * 00462000
  463. * THE FOLLOWING SVC'S ARE NOT SUPPORTED BY DMSDOS; * 00463000
  464. * IF ANY OF THEM IS ISSUED, AN ERROR MESSAGE WILL BE * 00464000
  465. * GIVEN, AND THE SVC WILL BE TREATED AS A "CANCEL": * 00465000
  466. * * 00466000
  467. * SVC 3: FORCE DEQUEUE * 00467000
  468. * SVC 13: SET SWITCHES IN BGCOM * 00468000
  469. * SVC 15: HEADQUEUE & EXECUTE CHANNEL PGM. * 00469000
  470. * SVC 19: RETURN FROM USER'S IT * 00470000
  471. * SVC 23: LOAD PHASE HEADER * 00471000
  472. * SVC 25: ISSUE HALT I/O * 00472000
  473. * SVC 27: SPECIAL HALT I/O * 00473000
  474. * SVC 28: RETURN FROM USER'S MR * 00474000
  475. * SVC 29: MULTIPLE WAITM SUPPORT * 00475000
  476. * SVC 30: WAIT FOR QTAM ELEMENT * 00476000
  477. * SVC 31: POST A QTAM ELEMENT * 00477000
  478. * SVC 32: RESERVED * 00478000
  479. * SVC 38: INITIALIZE A SUBSTASK * 00479000
  480. * SVC 39: TERMINATE A SUBSTASK * 00480000
  481. * SVC 43: RESERVED * 00481000
  482. * SVC 44: EXTERNAL UNIT CHECKS RECORD * 00482000
  483. * SVC 45: EMULATOR INTERFACE * 00483000
  484. * SVC 46: OLTEP IN SUPERVISOR STATE * 00484000
  485. * SVC 47: MULTIPLE WAITF SUPPORTATE * 00485000
  486. * SVC 48: FETCH A CRT TRANS * 00486000
  487. * SVC 49: RESERVED * 00487000
  488. * SVC 51: RETURN PHASE HEADER * 00488000
  489. * SVC 53: RESERVED * 00489000
  490. * SVC 54: FREE REAL PAGE FRAMES * 00490000
  491. * SVC 55: GET REAL PAGE FRAMES * 00491000
  492. * SVC 56: GET/FREE PUB OF POWER DEVICE * 00492000
  493. * SVC 57: MAKE POWER DISPATCHABLE * 00493000
  494. * SVC 58: INT. BETWEEN JCL AND SUPVSOR * 00494000
  495. * SVC 59: INT. BETWEEN EOJ AND SUPVSOR * 00495000
  496. * SVC 60: EREP AND CRT I/O AREAS ADDR. * 00496000
  497. * SVC 69: REALAD * 00497000
  498. * SVC 70: VIRTAD * 00498000
  499. * SVC 72: GETCBUF/FREECBUF * 00499000
  500. * SVC 73: SETAPP * 00500000
  501. * SVC 74: FIX PAGES IN REAL STORAGE FOR RESTART * 00501000
  502. * SVC 76: INIT. RECORD. OF RMSR IO ERROR * 00502000
  503. * SVC 77: TRANSCSW * 00503000
  504. * SVC 78: RESERVED * 00504000
  505. * SVC 79: RESERVED * 00505000
  506. * SVC 80: RESERVED * 00506000
  507. * SVC 81: RESERVED * 00507000
  508. * SVC 82: RESERVED * 00508000
  509. * SVC 83: RESERVED * 00509000
  510. * SVC 84: RESERVED * 00510000
  511. * SVC 88 AND UP: RESERVED * 00511000
  512. * * 00512000
  513. * NOTE1: SVC 2, 8, 9, AND 11 ALL PASS CONTROL TO OR * 00513000
  514. * FROM A LOGICAL TRANSIENT. IN ADDITION, THEY * 00514000
  515. * ALL PERFORM ANOTHER COMMON FUNCTION. * 00515000
  516. * THE INTERRUPT INFORMATION AT THE TIME OF THE SVC * 00516000
  517. * IS STORED IN THE PARTITION PIB EXTENSION TABLE. * 00517000
  518. * THE USER'S REGISTERS AND PSW ARE SAVED IN THE * 00518000
  519. * PROBLEM PROGRAM SAVE AREA OR LTA SAVE AREA, * 00519000
  520. * DEPENDING ON THE SAVE AREA ADDRESS SPECIFIED * 00520000
  521. * IN THE PARTITION PIB. * 00521000
  522. * UNDER CMS/DOS THERE IS A PARTITION PIB AND AN * 00522000
  523. * ATTENTION PIB. EACH OF THE PIBS CONTAINS A * 00523000
  524. * SAVEAREA ADDRESS (PPSAVE OR LTASAVE). WHEN ANY * 00524000
  525. * OF THE ABOVE SVC'S ARE EXECUTED, PART OF THE * 00525000
  526. * SUPPORT IS THE SWAPPING OF THESE SAVE AREA * 00526000
  527. * ADDRESSES. (IE.; * 00527000
  528. * THE SAVEAREA ADDRESS IN THE PARTITION PIB * 00528000
  529. * IS SWAPPED WITH THE SAVEAREA ADDRESS IN THE * 00529000
  530. * ATTENTION PIB). THE SAME HOLDS FOR THE PIB * 00530000
  531. * EXTENSIONS ( THE INTERRUPT INFORMATION IN THE * 00531000
  532. * PARTITION PIB EXTENSION IS SWAPPED WITH THE * 00532000
  533. * INTERRUPT INFORMATION IN THE ATTENTION PIB * 00533000
  534. * EXTENSION). * 00534000
  535. *. * 00535000
  536. EJECT 00536000
  537. SPACE 3 00537000
  538. MACRO 00538000
  539. JTBL &SVC,&ADD 00539000
  540. DC S(&ADD) 00540000
  541. MEND 00541000
  542. EJECT 00542000
  543. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00543000
  544. * * 00544000
  545. * INITIALIZATION: SET-UP NEEDED REGISTERS, AND ESTABLISH * 00545000
  546. * COMMON ADDRESSABILITIES. USE THE SVC NUMBER FROM THE * 00546000
  547. * SVC OLDPSW TO LOCATE THE ROUTINE THAT WILL PROCESS * 00547000
  548. * THIS PARTICULAR SVC CALL. * 00548000
  549. * * 00549000
  550. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00550000
  551. SPACE 1 00551000
  552. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00552000
  553. SPACE 1 00553000
  554. DMSDOS CSECT @V305001 00554000
  555. USING NUCON,R0 ADDRESSABILITIES @V305001 00555000
  556. USING DMSDOS,R12 ... @V305001 00556000
  557. USING SSAVE,R13 ... @V305001 00557000
  558. USING BGCOM,R5 @V305001 00558000
  559. L R13,CURRSAVE GET CURRENT SSAVE ADDRESS @V305001 00559000
  560. ST R14,OSTEMP SAVE RETURN ADDRESS @V305001 00560000
  561. LM R0,R11,EGPR0 RESTORE REGS @V305001 00561000
  562. LM R14,R15,EGPR14 TO VALUE AT TIME OF SVC @V305001 00562000
  563. L R5,ASYSREF R5 CONTAINS ADDRESS OF BGCOM @V305001 00563000
  564. SR R4,R4 CLEAR R4 @V305001 00564000
  565. IC R4,OLDPSW+3 GET SVC NUMBER @V305001 00565000
  566. ALR R4,R4 MULTIPLY BY 2 @V305001 00566000
  567. C R4,SVCMAX EXCEEDS MAX ALLOWED ? @V305001 00567000
  568. LH R4,SVCTAB(R4) GET S-CON VECTOR (PRESERVES C.C.)@V305001 00568000
  569. BL DMSDOS(R4) IF < MAX, GO TO SPECIFIED ROUTINE@V305001 00569000
  570. B NOTSUP SVC NUMBERS > MAX NOT SUPPORTED. @V305001 00570000
  571. EJECT 00571000
  572. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00572000
  573. * * 00573000
  574. * THE FOLLOWING CODE STORES INTERRUPT INFORMATION IN THE * 00574000
  575. * PIB EXTENSION AFTER AN SVC HAS BEEN ISSUED. * 00575000
  576. * THIS ROUTINE ALSO STORES THE OLD PSW AND THE USER REGISTERS * 00576000
  577. * IN THE USER SAVEAREA. * 00577000
  578. * * 00578000
  579. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00579000
  580. SPACE 1 00580000
  581. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00581000
  582. SPACE 1 00582000
  583. COMMON CLC ABTERM,0(R1) FETCH FOR ABNORM TERM ROUT. @V305066 00583000
  584. BNE REGFETCH NO, NORMAL FETCH PROCESSING @V305066 00584000
  585. L R14,OSTEMP GET RETURN VALUE IN R14 @V305066 00585000
  586. L R12,ABTERM+8 ABNORM TERM ROUT. ADD @V305066 00586000
  587. BR R12 BR TO THIS ROUTINE @V305066 00587000
  588. REGFETCH LH R10,PIK PROGRAM INTERRUPT KEY @V305066 00588000
  589. USING PIBADR,R10 ESTABLISH ADDRESSABILITY @V305066 00589000
  590. AH R10,PIBPT INCREM R10 BY ADD OF PIB @V305066 00590000
  591. * 00591000
  592. * R10 NOW POINTS TO THE PARTITION PIB 00592000
  593. * 00593000
  594. SH R10,PIBDIFF @V305066 00594000
  595. * 00595000
  596. * R10 NOW POINTS TO THE PARTITION PIB EXTENSION 00596000
  597. * 00597000
  598. SR R4,R4 CLEAR WORK REG @V305066 00598000
  599. * 00599000
  600. * THE FOLLOWING INSTRUCTIONS PLACE THE INTERRUPT INFORMATION 00600000
  601. * IN THE PARTITION PIB EXTENSION 00601000
  602. * THE FORMAT OF THE INTERRUPT INFORMATION IN THE PIB EXTENSION 00602000
  603. * IS AS FOLLOWS: 00603000
  604. * 00604000
  605. * BYTE 0 - X'00' 00605000
  606. * BYTE 1 - ILC IN BITS 5,6; OTHER BITS ARE ZERO 00606000
  607. * BYTES 2,3 - INTERRUPTION CODE 00607000
  608. * 00608000
  609. IC R4,OLDPSW+4 INSERT ILC @V305066 00609000
  610. SRL R4,6 SHIFT RIGHT TO ELIMINATE GARBAGE @V305066 00610000
  611. SLL R4,17 SHIFT LEFT TO POSITION IN REG @V305066 00611000
  612. IC R4,OLDPSW+3 COMPLETE INTERRUPT CODE @V305066 00612000
  613. ST R4,INTINFO STORE SVC INTRPT INFO IN PIB EXT @V305066 00613000
  614. EJECT 00614000
  615. LAPIB LA R10,32(R10) RE-ESTABLISH PIB POINTER @V305066 00615000
  616. PIBDIFF EQU LAPIB+2 DISPLACEMT BETWN PIB AND PIB EXT @V305066 00616000
  617. L R8,PIBSAVE GET SAVE AREA ADDRESS @V305066 00617000
  618. USING SVEARA,R8 ESTABLISH ADDRESSABILITY @V305066 00618000
  619. MVC SVEPSW(8),OLDPSW SAVE OLD PSW @V305066 00619000
  620. MVC SVER09(28),EGPR9 USER'S REGS TO PPSAVE/LTASAVE @V305066 00620000
  621. MVC SVER00(36),EGPR0 STORE REST OF USER'S REGS @V305066 00621000
  622. SR R4,R4 CLEAR WORK REG AGAIN @V305066 00622000
  623. IC R4,OLDPSW+3 GET SVC NUMBER @V305066 00623000
  624. CH R4,TWO SVC 2 ? @V305066 00624000
  625. BE FETCHB YES, GO TO FETCHB ROUTINE @V305066 00625000
  626. CH R4,EIGHT SVC 8 ? @V305066 00626000
  627. BE SVC08 GO TO SVC08 ROUTINE @V305066 00627000
  628. CH R4,NINE SVC 9 ? @V305066 00628000
  629. BE SVC09 YES, GO TO SVC09 ROUTINE @V305066 00629000
  630. CH R4,ELEVEN SVC 11 ? @V305066 00630000
  631. BE SVC011 YES, GO TO SVC 11 ROUTINE @V305066 00631000
  632. SPACE 2 00632000
  633. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00633000
  634. * * 00634000
  635. * NOT SUPPORTED ERROR * 00635000
  636. * * 00636000
  637. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00637000
  638. SPACE 1 00638000
  639. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00639000
  640. SPACE 1 00640000
  641. NOTSUP SR R4,R4 GET SVC NUMBER AGAIN @V305001 00641000
  642. IC R4,OLDPSW+3 AND GIVE A DESCRIPTIVE ERROR MSG @V305001 00642000
  643. DMSERR NUM=121,LET=S,MF=(E,'SYS'),TEXTA=ERRMSG0, @V305001*00643000
  644. SUB=(DEC,(R4),HEX,(R4),HEXA,CALLER) @V305001 00644000
  645. LA R0,ABEND21 DOS/VS ABEND CODE @V305001 00645000
  646. LA R15,RC100 MESSAGE RETURN CODE @V305001 00646000
  647. B BABEND CALL $$BABEND @V305001 00647000
  648. EJECT 00648000
  649. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00649000
  650. * * 00650000
  651. * EXECUTE CHANNEL PROGRAM. * 00651000
  652. * * 00652000
  653. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00653000
  654. SPACE 1 00654000
  655. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00655000
  656. SPACE 1 00656000
  657. EXCP L R2,ASYSCOM GET SYSTEM COM.REGION ADDR. @V305001 00657000
  658. USING SYSCOM,R2 @V305001 00658000
  659. L R11,IJBCCWT GET EXCP WORK AREA ADDRESS @V305001 00659000
  660. DROP R2 @V305001 00660000
  661. L R15,=V(DMSXCP) GET DMSXCP ADDRESS @V305001 00661000
  662. BALR R14,R15 GO TO EXCP EXECUTOR @V305001 00662000
  663. LTR R15,R15 ANY ERRORS IN DMSXCP ? @V305001 00663000
  664. BZ DOSRET NO, RETURN TO CALLER @V305001 00664000
  665. LA R0,ABEND1A DOS/VS ABEND CODE @V305001 00665000
  666. B BABEND CALL $$BABEND @V305001 00666000
  667. SPACE 2 00667000
  668. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00668000
  669. * * 00669000
  670. * FETCH A PROBLEM PROGRAM PHASE INTO USER STORAGE * 00670000
  671. * * 00671000
  672. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00672000
  673. SPACE 1 00673000
  674. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00674000
  675. SPACE 1 00675000
  676. FETCHA SR R0,R0 NO USER ENTRY POINT @V305001 00676000
  677. BAL R14,LOAD2 GO PREPARE LIST FOR FETCH @V305001 00677000
  678. LTR R15,R15 ANY ERRORS ? @V305001 00678000
  679. BNZ FCHERRS YES, CALL $$BABEND @V305001 00679000
  680. LR R2,R0 R0 TO USABLE REGISTER @V305001 00680000
  681. USING DIRNAME,R2 @V305001 00681000
  682. TM DIRC,PNOTFND PHASE FOUND ? @V305001 00682000
  683. BO ERR06E NO, GIVE MSG AND CANCEL @V305001 00683000
  684. DROP R2 @V305001 00684000
  685. ICM R2,M7,EGPR0+1 ANY USER ENTRY POINT ? @V305001 00685000
  686. BZ FETCHA2 NO, USE DEFAULT @V305001 00686000
  687. LR R1,R2 USE USER'S ENTRY POINT THEN.. @V305001 00687000
  688. FETCHA2 ST R1,OLDPSW+4 SET UP PSW FOR NEW PHASE @V305001 00688000
  689. MVI OLDPSW+4,HEX00 ... @V305001 00689000
  690. B DOSRET RETURN TO CMS @V305001 00690000
  691. EJECT 00691000
  692. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00692000
  693. * * 00693000
  694. * FETCH A $$B-TRANS INTO CMS TRANSIENT AREA * 00694000
  695. * * 00695000
  696. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00696000
  697. SPACE 1 00697000
  698. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00698000
  699. SPACE 1 00699000
  700. FETCHB LA R9,DCSSTAB GET TABLE OF RESIDENT $$B-TRANS @V305001 00700000
  701. L R8,0(,R9) GET END ADDRESS OF TABLE @V305001 00701000
  702. LA R9,4(,R9) POINT TO 1ST. PHASE @V305001 00702000
  703. FETLUP CR R9,R8 ARE WE AT END OF TABLE @V305001 00703000
  704. BNL FETCHIT YES, PHASE NOT IN DCSS @V305001 00704000
  705. CLC 0(8,R9),0(R1) PHASE NAME MATCH ? @V305001 00705000
  706. BE DCSSPHS YES, PHASE IN DCSS AREA @V305001 00706000
  707. LA R9,12(,R9) BUMP TO NEXT PHASE @V305001 00707000
  708. B FETLUP KEEP LOOKING @V305001 00708000
  709. DCSSPHS CLC 0(8,R9),BOSDEV FEOVD MACRO NOT SUPPORTED @V305001 00709000
  710. BE FEOVDERR EQUAL TO $$BOSDEV @V305001 00710000
  711. CLC 0(8,R9),BCEOV1 SEOV/FEOV NOT SUPPORTED @V305001 00711000
  712. BE SEOVFEOV EQUAL TO ONE OF THESE MACROS @V305001 00712000
  713. L R9,8(,R9) GET PHASE LOAD PT @V305001 00713000
  714. B FETCOMM GO TO COMMON CODE @V305001 00714000
  715. FEOVDERR LA R2,FEOVD PREPARE MESSAGE @V305001 00715000
  716. B ERR140S BR TO PRINT MSG @V305001 00716000
  717. SEOVFEOV LA R2,SEOV PREPARE MESSAGE @V305001 00717000
  718. B ERR140S BR TO PRINT MESSAGE @V305001 00718000
  719. EJECT 00719000
  720. FETCHIT SR R0,R0 ... @V305001 00720000
  721. CLC 0(8,R1),BEOJ4 $$BACLOS CALLING? @V305001 00721000
  722. BNE TRANSADR NO, CONTINUE AS USUAL @V305106 00722000
  723. L R9,AVSREOJ YES, GO BACK TO DMSVSR @V305106 00723000
  724. B SAVENTRY PLAY THE GAME... @V305106 00724000
  725. TRANSADR ICM R0,M7,DOSTRANS+1 GET A(DOS TRANS AREA) @V305106 00725000
  726. LR R7,R10 SAVE REG. 10 TEMP @V305001 00726000
  727. BAL R14,LOAD2 GO PREPARE FETCH LIST @V305001 00727000
  728. LR R2,R0 REG. 0 TO USABLE REGISTER @V305001 00728000
  729. USING DIRNAME,R2 @V305001 00729000
  730. TM DIRC,PNOTFND PHASE FOUND ? @V305001 00730000
  731. BO ERR06E NO, GIVE MSG AND CANCEL @V305001 00731000
  732. DROP R2 @V305001 00732000
  733. FETFND L R5,ABGCOM RESTORE BGCOM POINTER @V305001 00733000
  734. LR R10,R7 ALSO R10 THAT WE SAVED BEFORE... @V305001 00734000
  735. LTR R15,R15 ANY ERRORS IN DMSFCH ? @V305001 00735000
  736. BNZ FCHERRS IF ERRORS, CALL $$BABEND @V305001 00736000
  737. L R9,DOSTRANS GET LOAD POINT IN R9 @V305106 00737000
  738. SAVENTRY EQU * @VA05918 00738000
  739. ST R9,EGPR15 @VA05918 00739000
  740. L R9,AFVS @VA05918 00740000
  741. USING FVSECT,R9 @VA05918 00741000
  742. TM UFDBUSY,ABNBIT WAS HX ENTERED? @VA05918 00742000
  743. L R9,EGPR15 RESTORE THE REGISTER @VA05918 00743000
  744. BNZ TESTVSAM YES @VA12124 00744000
  745. DROP R9 @VA05918 00745000
  746. FETCOMM L R8,ALTASAVE ADDRESS OF LTA SAVEAREA @V305001 00746000
  747. L R15,EGPR15 RESTORE USER'S R15 @V305001 00747000
  748. LM R0,R1,EGPR0 RESTORE USER'S R0 AND R1 @V305001 00748000
  749. STM R15,R1,SVER0F STORE REGS 0, 1, 15 IN LTASAVE @V305001 00749000
  750. LA R9,8(,R9) EPA IN TRANSIENT PHASE = EPA+8 @V305001 00750000
  751. ST R9,SVEPSW2 MOVE THIS EPA INTO SEC HALF PSW @V305001 00751000
  752. NI OLDPSW+1,RESETSK RESET PSW STORAGE KEY @V305001 00752000
  753. ST R9,OLDPSW+4 SAME AS ABOVE FOR CMS PSW @V305001 00753000
  754. MVI PIBFLG,READY MAKE TASK READY TO RUN @V305001 00754000
  755. CLC ALTASAVE+1(3),PIBSAVE+1 REQUEST FROM LOG.TRANS?@V305001 00755000
  756. BE DOSRET YES, RETURN @V305001 00756000
  757. BAL R6,SWAP SET/RESET PIB AND PIB EXT INFO @V305001 00757000
  758. B DOSRET RETURN @V305001 00758000
  759. TESTVSAM EQU * @VA12124 00758200
  760. TM VSAMFLG1,VSAMRUN ARE WE HERE FOR VSAM ? @VA12124 00758400
  761. BO FETCOMM YES,BRANCH @VA12124 00758600
  762. B DOSRET NO,GO TO DOSRET @VA12124 00758800
  763. EJECT 00759000
  764. FETVSAM LR R4,R2 SAVE TRANS NAME POINTER @V305001 00760000
  765. L R0,DOSTRANS GET DOS TRANS AREA BEGIN @V305106 00761000
  766. LR R2,R1 POINT TO VSAM TRANS BEGIN @V305001 00762000
  767. L R1,20(,R3) GET ADDRESS NEXT PHASE IN SEGMENT@V305001 00763000
  768. SR R1,R2 AND COMPUTE THIS PHASE LENGTH. @V305001 00764000
  769. BNP FETVSAME IF NOT VALID LENGTH, DO LONG WAY.@V305001 00765000
  770. LR R3,R1 SAME FOR R2 + 1 REGISTER @V305001 00766000
  771. MVCL R0,R2 MOVE VSAM TRANS TO TRANS AREA @V305001 00767000
  772. LR R2,R4 RESTORE TRANS NAME POINTER @V305001 00768000
  773. SR R15,R15 ZERO FOR ABOVE TEST @V305001 00769000
  774. B FETFND CONTINUE AS IF DMSFCH FOUND IT @V305001 00770000
  775. FETVSAME LR R1,R4 RESET R1 TO POINT TO PHASE NAME. @V305001 00771000
  776. L R0,DOSTRANS AND R0 TO DOS TRANSIENT AREA @V305001 00772000
  777. B LOAD7 NOW TRY TO LOAD THROUGH DMSFCH. @V305001 00773000
  778. SPACE 1 00774000
  779. LOADAMS CLI OLDPSW+3,SVC2CALL WAS CALL FROM SVC 2 ? @V305001 00775000
  780. BE FETVSAM YES, CONTINUE ABOVE @V305001 00776000
  781. CLI OLDPSW+3,SVC4CALL WAS CALL FROM SVC 4 ? @V305001 00777000
  782. BNER R14 IF NOT, RETURN TO CALLER @V305001 00778000
  783. LR R4,R1 SAVE SEGMENT PHASE LOAD ADDRESS @V305001 00779000
  784. ICM R2,15,EGPR0 GET USER'S LOAD POINT ADDRESS @V305001 00780000
  785. BNP VSAMPNF INVALID ADDRESS - NOT FOUND @VA12893 00781000
  786. L R3,20(,R3) GET ADDRESS NEXT PHASE IN SEGMENT@V305001 00782000
  787. SR R3,R4 COMPUTE LOADED PHASE LENGTH @V305001 00783000
  788. BNP VSAMPNF INVALID LENGTH - NOT FOUND @VA12893 00784000
  789. LR R5,R0 GET ADDRESS OF PHASE NAME @VM03230 00785000
  790. CLC 0(8,R5),BTRANS IS IT $$BOMSG7 ? @VM03230 00786000
  791. BNE LENOK NO, DON'T CHANGE LENGTH @VM03230 00787000
  792. SH R3,FOUR ADJUST LENGTH - 4 @VM03230 00788000
  793. LENOK LR R5,R3 SET R5 TO CONTAIN LENGHT TOO @VM03230 00789000
  794. LR R1,R2 SAVE LOAD ADDRESS FOR NOW... @V305001 00790000
  795. MVCL R2,R4 MOVE PHASE FROM SGT TO USER AREA @V305001 00791000
  796. SR R15,R15 SET RETURN CODE OF ZERO @V305001 00792000
  797. LR R2,R0 GET ADDRESS OF PHASE DIRECTORY @V305001 00793000
  798. CLC 0(8,R2),IKQVDCN IS IT SPECIAL CASE ? @V305001 00794000
  799. BNER R14 NO, JUST RETURN TO LOAD MAINLINE @V305001 00795000
  800. LA R3,24(,R1) POINT TO CCW(S) ADDRESS IN DTF @V305001 00796000
  801. ST R3,8(,R1) AND SAVE IN PROPER SLOT IN DTF @V305001 00797000
  802. LA R3,48(,R1) GET ADDRESS OF DTFCN LIOCS @V305106 00798000
  803. STCM R3,M7,17(R1) AND SAVE IN PROPER SLOT IN DTF @V305106 00799000
  804. BR R14 RETURN TO LOAD MAINLINE @V305001 00800000
  805. EJECT 00801000
  806. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00802000
  807. * * 00803000
  808. * THIS ROUTINE PERFORMS THE FOLLOWING FUNCTIONS: * 00804000
  809. * * 00805000
  810. * SET/RESETS THE LOGICAL TRANSIENT KEY (LTK) * 00806000
  811. * * 00807000
  812. * SWAPS THE SAVE AREA ADDRESSES IN THE ATTENTION * 00808000
  813. * PIB WITH THE ADDRESSES IN THE PARTITION PIB. * 00809000
  814. * * 00810000
  815. * SWAPS INTERRUPT INFORMATION IN THE ATTENTION PIB EXT * 00811000
  816. * WITH INTERRUPT INFORMATION IN THE PARTITION PIB EXT. * 00812000
  817. * * 00813000
  818. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00814000
  819. SPACE 1 00815000
  820. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00816000
  821. SPACE 1 00817000
  822. SWAP XC LTK+1(1),PIK+1 SET/RESET LTK @V305066 00818000
  823. SETLT L R8,PIBSAVE GET SAVEAREA ADDRESS @V305066 00819000
  824. LH R2,PIBPT ADDRESS OF PIB @V305066 00820000
  825. MVC PIBSAVE+1(3),9(R2) SWAP SAVE AREA ADDRESSES @V305066 00821000
  826. STCM R8,M7,9(R2) @V305066 00822000
  827. LH R2,PIB2PTR GET ATTENTION PIB EXT @V305066 00823000
  828. SH R10,PIBDIFF ADJ. R10 POINTER TO PART PIB2TAB @V305066 00824000
  829. L R8,INTINFO GET INTERRUPT INFOR AND SWAP @V305066 00825000
  830. MVC INTINFO,4(R2) W/INTRPT INFO IN ATTEN. PIB2TAB @V305066 00826000
  831. ST R8,4(R2) SWAP INTERRUPT INFORMATION @V305066 00827000
  832. AH R10,PIBDIFF RESTORE ORIG PIB PTR @V305066 00828000
  833. BR R6 RETURN TO MAINLINE @V305066 00829000
  834. SPACE 2 00830000
  835. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00831000
  836. * * 00832000
  837. * LOAD A PROBLEM PROGRAM PHASE INTO USER STORAGE * 00833000
  838. * * 00834000
  839. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00835000
  840. SPACE 1 00836000
  841. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00837000
  842. SPACE 1 00838000
  843. LOAD BAL R14,LOAD2 GO TO COMMON ROUTINE @V305001 00839000
  844. LTR R15,R15 ANY ERRORS ? @V305001 00840000
  845. BNZ FCHERRS YES, CALL $$BABEND @V305001 00841000
  846. ST R1,EGPR1 SAVE ENTRY POINT @V305001 00842000
  847. LR R2,R0 DIRECTORY TO USABLE REGISTER @V305001 00843000
  848. USING DIRNAME,R2 @V305001 00844000
  849. TM DIRC,NOTEXT+DACTIVE TXT=NO WITH DE=YES / LIST=?@V305001 00845000
  850. BO LOADOK YES, GIVE USER DIRECTORY ADDR. @V305001 00846000
  851. TM DIRC,PNOTFND WAS PHASE FOUND ? @V305001 00847000
  852. BZ DOSRET YES, RETURN TO CALLER @V305001 00848000
  853. B ERR06E ELSE GIVE MESSAGE AND CANCEL @V305001 00849000
  854. DROP R2 @V305001 00850000
  855. LOADOK ST R0,EGPR0 SAVE DIRECTORY ADDRESS @V305001 00851000
  856. B DOSRET RETURN TO CALLER @V305001 00852000
  857. EJECT 00853000
  858. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00854000
  859. * * 00855000
  860. * SUBROUTINE TO DECODE FETCH/LOAD PARAMETER LIST. VALID * 00856000
  861. * PARAMETERS ARE: DE = YES, TXT = NO, OR LIST = LISTNAME. * 00857000
  862. * * 00858000
  863. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00859000
  864. SPACE 1 00860000
  865. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 00861000
  866. SPACE 1 00862000
  867. LOAD2 CLI 0(R1),ANYPARM ANY PARAMETERS SPECIFIED ? @V305001 00863000
  868. BNE ONLINE NO, NO ON-LINE LIST THEN.. @V305001 00864000
  869. TM 4(R1),DEEQYES DE = YES ? @V305001 00865000
  870. BO DEYES YES, BRANCH @V305001 00866000
  871. ONLINE L R2,ASYSCOM GET SYSCOM ADDRESS @V305001 00867000
  872. USING SYSCOM,R2 @V305001 00868000
  873. L R2,IJBFTTAB GET FETCH WORK TABLE @V305001 00869000
  874. DROP R2 @V305001 00870000
  875. USING FCHTAB,R2 @V305001 00871000
  876. LA R2,DIRNAME POINT TO IN-CORE DIRECTORY @V305001 00872000
  877. DROP R2 @V305001 00873000
  878. USING DIRNAME,R2 @V305001 00874000
  879. XC 0(34,R2),0(R2) ZERO DIRECTORY @V305001 00875000
  880. MVI DIRN,LENGTH SET UP LENGTH IN H-WORDS @V305001 00876000
  881. CLI 0(R1),ANYPARM ANY PARAMETERS SPECIFIED ? @V305001 00877000
  882. BNE NOLIST NO, NO ON-LINE LIST THEN.. @V305001 00878000
  883. SR R5,R5 .... @V305001 00879000
  884. L R6,0(,R1) POINT TO PHASE NAME @V305001 00880000
  885. ICM R5,M7,5(R1) ANY LIST POINTER ? @V305001 00881000
  886. BZ LOAD4 NO, BRANCH @V305001 00882000
  887. LA R3,2(,R5) POINT TO 1ST. LIST ELEMENT @V305001 00883000
  888. LA R4,ELEMLEN GET LIST ELEMENT LENGTH @V305001 00884000
  889. AH R5,0(,R5) POINT TO PARAM LIST END @V305001 00885000
  890. SH R5,TWO COMPENSATE FOR 2 BYTES LENGTH @V305001 00886000
  891. SR R5,R4 POINT TO LAST ITEM @V305001 00887000
  892. LOAD3 CLC 0(8,R6),0(R3) FOUND A LIST MATCH ? @V305001 00888000
  893. BE LISTFND YES, BRANCH @V305001 00889000
  894. BXLE R3,R4,LOAD3 KEEP LOOKING @V305001 00890000
  895. LOAD4 MVC DIRNAME,0(R6) MOVE PHASE NAME TO OUR LIST @V305001 00891000
  896. LOAD5 NI DIRC,255-NOTEXT RESET TXT=NO @VA05888 00892000
  897. TM 4(R1),NOTEXT TXT=NO SPECIFIED? @VA05888 00893000
  898. BNO LOAD6 NO, BRANCH AROUND @V305001 00894000
  899. OI DIRC,NOTEXT SET FLAG IN DIRECTORY @V305001 00895000
  900. LOAD6 LR R1,R2 DIRECTORY TO R1 @V305001 00896000
  901. BAL R6,VSAMDS SEE IF AMS OR VSAM PHASE @V305001 00897000
  902. BZ LOADAMS IF VSAM OR AMS, THEN RETURN @V305001 00898000
  903. LOAD7 L R15,=V(DMSFCH) GET DMSFCH ADDRESS @V305001 00899000
  904. BR R15 GO TO FETCH ROUTINE @V305001 00900000
  905. DEYES L R2,0(,R1) POINT TO ON-LINE LIST @V305001 00901000
  906. OI DIRC,DACTIVE SET DIRECTORY ACTIVE @V305001 00902000
  907. B LOAD5 GO CHECK TXT = NO @V305001 00903000
  908. NOLIST MVC DIRNAME,0(R1) MOVE PHASE NAME TO DUMMY LIST @V305001 00904000
  909. B LOAD6 GO TO DMSFCH CALL @V305001 00905000
  910. LISTFND LR R2,R3 USER LIST TO R2 @V305001 00906000
  911. OI DIRC,DACTIVE SET DIRECTORY ACTIVE @V305001 00907000
  912. B LOAD5 GO CHECK TXT = NO @V305001 00908000
  913. DROP R2 @V305001 00909000
  914. EJECT 00910000
  915. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00911000
  916. * * 00912000
  917. * SVC5: PROVIDES USER WITH MEANS OF ALTERING POSITIONS * 00913000
  918. * 12-23 OF THE PARTITION COMMUNICATION REGION * 00914000
  919. * * 00915000
  920. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00916000
  921. SPACE 1 00917000
  922. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00918000
  923. SPACE 1 00919000
  924. MVCOM SR R3,R3 CLEAR REGISTER @V305066 00920000
  925. IC R3,1(,R1) INSERT LENGTH FIELD @V305066 00921000
  926. SR R4,R4 CLEAR REGISTER @V305066 00922000
  927. IC R4,3(,R1) INSERT RELATIVE 'TO ADDRESS' @V305066 00923000
  928. CH R4,TWELVE RELATIVE 'TO ADDRESS' INVALID IF @V305066 00924000
  929. BL ERR03E LESS THAN 12 @V305066 00925000
  930. LA R2,0(R3,R4) PT TO UPMOST BYTE OF COMREG FIELD@V305066 00926000
  931. CH R2,TWENTY4 ONLY VALID TO ALTER POS. 12-23 @V305066 00927000
  932. BNL ERR03E OF COMREG @V305066 00928000
  933. LR R1,R0 COPY 'FROM ADDRESS' @V305066 00929000
  934. LA R2,0(R1,R3) POINT TO LAST BYTE 'FROM' FIELD @V305066 00930000
  935. C R2,PPBEG INSURE 'FROM ADDRESS' IS WITHIN @V305066 00931000
  936. BL ERR04E USER PARTITION LIMITS @V305066 00932000
  937. TM DOSFLAGS,DOSVSAM IS VSAM SET ON ? @VA07500 00932300
  938. BO CKMAINHI YES CHECK MAINHIGH @VA07500 00932600
  939. C R2,PPEND EXCEED END OF PARTITION? @V305066 00933000
  940. BH ERR04E YES @V305066 00934000
  941. B MVCOM1 CONTINUE IF NOT HIGH @VA07500 00934030
  942. CKMAINHI EQU * @VA07500 00934060
  943. C R2,MAINHIGH LAST BYTE 'FROM' EXCEED @VA07500 00934090
  944. * MAINHIGH ? 00934120
  945. BH ERR04E YES, ERROR @VA07500 00934150
  946. L R8,MAINLIST GET FREELIST POINTER @VA07500 00934180
  947. LA R8,0(R8) CLEAR HIGH ORDER BYTE @VA07500 00934210
  948. LTR R8,R8 IS POINTER ZERO ? @VA07500 00934240
  949. BZ MVCOM1 YES, NO MORE CHECKING NEEDED @VA07500 00934270
  950. CHKFREE EQU * @VA07500 00934300
  951. LR R15,R8 LOAD POINTER TO WORK REG @VA13128 00934330
  952. CR R15,R1 IS IT HIGHER THAN FROM ADDR @VA13128 00934360
  953. BH CHKMORE1 YES, CHECK SOME MORE @VA07500 00934390
  954. A R15,4(R15) ADD FREEAREA LENGTH @VA13128 00934420
  955. BCTR R15,R0 SUB 1 FOR TRUE LENGTH @VA13128 00934450
  956. CR R15,R1 IS IT HIGHER THAN FROM ADDR @VA13128 00934480
  957. BH ERR04E YES, ERROR @VA07500 00934510
  958. L R8,0(R8) GET NEXT POINTER @VA07500 00934540
  959. LA R8,0(R8) CLEAR HIGH ORDER BYTE @VA07500 00934570
  960. LTR R8,R8 IS POINTER ZERO ? @VA07500 00934600
  961. BZ MVCOM1 YES (END OF FREELIST) @VA07500 00934630
  962. B CHKFREE CHECK NEXT AREA @VA07500 00934660
  963. CHKMORE1 EQU * @VA07500 00934690
  964. CR R15,R2 HIGHER THAN LAST BYTE OF @VA13128 00934720
  965. * 'FROM' ? 00934750
  966. BNH ERR04E NO,ERROR @VA07500 00934780
  967. MVCOM1 AR R4,R5 CALCULATE RIGHT DISP IN COMREG @VA07500 00935000
  968. EX R3,MVC MOVE INFORMATION TO COMREG @V305066 00936000
  969. B DOSRET @V305066 00937000
  970. MVC MVC 0(0,R4),0(R1) MVCOM @V305066 00938000
  971. SPACE 2 00939000
  972. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00940000
  973. * * 00941000
  974. * SVC08 - TEMPORARILY RETURN FROM A B-TRANSIENT TO * 00942000
  975. * THE PROBLEM PROGRAM. * 00943000
  976. * * 00944000
  977. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00945000
  978. SPACE 1 00946000
  979. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00947000
  980. SPACE 1 00948000
  981. SVC08 LH R2,PIBPT POINT TO ATTENTION PIB @V305066 00949000
  982. DROP R10 @V305066 00950000
  983. USING PIBADR,R2 PIB BASE REGISTER @V305066 00951000
  984. L R8,ARFLG POINT TO PP SAVEAREA BYTES 9-11 @V305066 00952000
  985. USING PIBADR,R10 OF ATTENTION PIB @V305066 00953000
  986. L R7,PIBSAVE PTR TO LTA SAVE @V305066 00954000
  987. MVC 44(4,R7),SVEPSW2 SAVE PP PSW ADDR IN LTA R0 @V305066 00955000
  988. MVC SVEPSW2+1(3),37(R7) STOR ADDR PASSD BY TRANSIENT@V305066 00956000
  989. STM R0,R1,SVER00 STORE REGISTERS @V305066 00957000
  990. ST R15,SVER0F DITTO... @V305066 00958000
  991. BAL R6,SETLT BRANCH TO SWAP SAVE ADDRESSES @V305066 00959000
  992. B STOREPSW CONTROL MUST RETURN TO PROB PROG @V305066 00960000
  993. EJECT 00961000
  994. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00962000
  995. * * 00963000
  996. * SVC09 - RETURN TO A LOGICAL TRANSIENT AFTER AN SVC 08 * 00964000
  997. * * 00965000
  998. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00966000
  999. SPACE 1 00967000
  1000. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00968000
  1001. SPACE 1 00969000
  1002. SVC09 LH R2,PIBPT POINT TO ATTENTION PIB @V305066 00970000
  1003. DROP R10 @V305066 00971000
  1004. USING PIBADR,R2 R10 BASE REG @V305066 00972000
  1005. L R8,ARFLG POINT TO LTA SAVE AREA @V305066 00973000
  1006. USING PIBADR,R10 @V305066 00974000
  1007. L R7,PIBSAVE GET PTR TO PP SAVE AREA @V305066 00975000
  1008. MVC 12(4,R7),SVER00 RESTORE PP PSW ADDRESS @V305066 00976000
  1009. STM R0,R1,SVER00 PASS REGS 0,1 @V305066 00977000
  1010. BAL R6,SETLT @V305066 00978000
  1011. B STOREPSW CONTROL MUST RETURN TO TRANSIENT @V305066 00979000
  1012. SPACE 2 00980000
  1013. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00981000
  1014. * * 00982000
  1015. * SVC11 - RETURNS FROM A LOGICAL B-TRANSIENT * 00983000
  1016. * TO THE PROBLEM PROGRAM. * 00984000
  1017. * * 00985000
  1018. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00986000
  1019. SPACE 1 00987000
  1020. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 00988000
  1021. SPACE 1 00989000
  1022. SVC011 CLC ALTASAVE+1(3),PIBSAVE+1 REQUEST FROM LTA? @V305066 00990000
  1023. BNE ERR01E ILLEGAL SVC @V305066 00991000
  1024. BAL R6,SWAP GO TO FLIP-FLOP SAVE AREA ADDRS @V305066 00992000
  1025. STOREPSW L R8,PIBSAVE ADDR OF PART PIB SAVEAREA ADDR @V305066 00993000
  1026. MVC OLDPSW(8),SVEPSW WHEN DMSITS GETS CONTROL IT @V305066 00994000
  1027. MVC EGPR0(36),SVER00 WILL RETURN CNTL TO INSTRUC @V305066 00995000
  1028. MVC EGPR9(28),SVER09 INDICATED IN OLDPSW @V305066 00996000
  1029. B DOSRET @V305066 00997000
  1030. EJECT 00998000
  1031. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00999000
  1032. * * 01000000
  1033. * SVC12: RESETS FLAGS TO 0 IN THE LINKAGE CONTROL * 01001000
  1034. * BYTE OF COMREG. * 01002000
  1035. * IF R1 = 0, SVC12 HAS ANOTHER MEANING. * 01003000
  1036. * BIT 5 OF JCSW4 (COMREG BYTE 59 IS TURNED OFF * 01004000
  1037. * * 01005000
  1038. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01006000
  1039. SPACE 1 01007000
  1040. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01008000
  1041. SPACE 1 01009000
  1042. SVC012 LTR R1,R1 IF R1 IS NOT ZERO @V305066 01010000
  1043. BNZ SVC12A GO TO NORMAL SVC12 ROUTINE @V305066 01011000
  1044. NI JCSW4,JC59OFF TURN OFF BIT 5 OF BYTE 59 @V305066 01012000
  1045. B DOSRET @V305066 01013000
  1046. SVC12A BAL R6,SVC1213 TEST FOR GEN PURPOSE SVC @V305066 01014000
  1047. NC 0(1,R1),SVC12SAV+3 @V305066 01015000
  1048. * RETURN HERE FOR 'OLD' DEFINITION OF SVC12 01016000
  1049. NC JCSW2,0(R1) TURN OFF BITS SPECIFIED BY R1 @V305066 01017000
  1050. B DOSRET @V305066 01018000
  1051. SVC1213 ST R1,SVC12SAV STORE R1 IN WORK @V305066 01019000
  1052. CLI SVC12SAV,XFF NEW DEFINITION? @V305066 01020000
  1053. BNE 6(R6) NO, OLD SVC12/13 DEFINITION @V305066 01021000
  1054. SR R1,R1 ZERO R1 @V305066 01022000
  1055. IC R1,SVC12SAV+2 GET COMREG DISPLACEMENT @V305066 01023000
  1056. AR R1,R2 ADD COMREG ADDRESS @V305066 01024000
  1057. EX R0,0(R6) TURN OFF BITS @V305066 01025000
  1058. B DOSRET @V305066 01026000
  1059. EJECT 01027000
  1060. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01028000
  1061. * * 01029000
  1062. * CANCEL THE JOB. ISSUE MESSAGE 'JOB CANCELLED DUE TO * 01030000
  1063. * PROGRAM REQUEST' , AND GO TO DMSABN. * 01031000
  1064. * * 01032000
  1065. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01033000
  1066. SPACE 1 01034000
  1067. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01035000
  1068. SPACE 1 01036000
  1069. CANCELS ST R15,EGPR15 SET UP RETURN CODE IN SAVE AREA @V305001 01037000
  1070. CANCEL L R5,ASYSREF RE-INITIALIZE BGCOM ADDRESS @V305001 01038000
  1071. LA R15,ERR12 SET AMSERV RETURN CODE @VM03230 01039000
  1072. TM VSAMFLG1,VSAMSERV IS AMSERV RUNNING ? @VM03230 01040000
  1073. BO BABEND YES, GO EXIT THROUGH STXIT. @VM03230 01041000
  1074. DMSERR NUM=160,LET=S,SUB=(CHARA,COMNAME), @V305001*01042000
  1075. TEXT='JOB ''........'' CANCELLED DUE TO PROGRAM REQUEST' 01043000
  1076. L R10,EGPR15 GET USER'S R15 @V305001 01044000
  1077. CH R10,H255 EXCEEDS MAX. CMS RET CODE ? @V305001 01045000
  1078. BNH SETRETC NO, USE THIS RETURN CODE @V305001 01046000
  1079. LA R10,RC101 SPECIAL CODE @V305001 01047000
  1080. SETRETC STC R10,DOSRC SAVE IN NUCON @V305001 01048000
  1081. EOJ XC LTK(2),LTK ZERO LOG TRANS. KEY @V305001 01049000
  1082. LH R10,PIBPT PIB ADDRESS @V305001 01050000
  1083. L R6,ALTASAVE LTA SAVE AREA ADDRESS @V305001 01051000
  1084. ST R6,8(,R10) STORE IN ATTEN. PIB @V305001 01052000
  1085. L R6,APPSAVE PPSAVE ADDRESS @V305001 01053000
  1086. LA R10,16(,R10) POINT TO PART. PIB @V305001 01054000
  1087. ST R6,4(,R10) STORE IN PART. PIB @V305001 01055000
  1088. LH R10,PCPTR PTR TO BEG PC OPT. TABLE @V305001 01056000
  1089. LH R6,PIK PROGRAM INTERRUPT KEY @V305001 01057000
  1090. SRL R6,1 8-BYTE TABLE ENTRY BUT @V305001 01058000
  1091. AR R10,R6 TABLES OFFSET BY 8 BYTES @V305001 01059000
  1092. XC 0(4,R10),0(R10) ZERO PC OPT. TAB. ENTRY @V305001 01060000
  1093. L R1,ASYSCOM SYSCOM ADDRESS @V305001 01061000
  1094. USING SYSCOM,R1 ADDRESSABILITY @V305001 01062000
  1095. L R10,IJBABTAB BEG ADD AB OPT. TAB. @V305001 01063000
  1096. AR R10,R6 TAB. OFFSET BY 8 BYTES @V305001 01064000
  1097. XC 0(4,R10),0(R10) ZERO ROUT. ADD. IN TABLE @V305001 01065000
  1098. EJECT 01066000
  1099. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01067000
  1100. * * 01068000
  1101. * EOJ (NORMAL END OF JOB) * 01069000
  1102. * UNSTACK LAST SVC WORK AREA, AND RETURN TO CMS * 01070000
  1103. * * 01071000
  1104. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01072000
  1105. SPACE 1 01073000
  1106. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01074000
  1107. SPACE 1 01075000
  1108. EOJ1 LA R1,EOJ2 GET FINAL END ADDRESS @V305001 01076000
  1109. ST R1,OLDPSW+4 SAVE AS OLD PSW @V305001 01077000
  1110. NI OLDPSW+1,RESETSK RESET PSW STORAGE KEY @V305001 01078000
  1111. B DOSRET RETURN TO CMS @V305001 01079000
  1112. EOJ2 BALR R15,0 ESTABLISH ADDRESSABILITY @V305001 01080000
  1113. USING *,R15 @V305001 01081000
  1114. L R12,=A(DMSDOS) RESTORE ADDRESSABILITY TO R12 @V305001 01082000
  1115. DROP R15 @V305001 01083000
  1116. LA R1,FCLEAR GET FILEDEF CLEAR LIST ADDRESS @V305001 01084000
  1117. SVC 202 CLEAR DOSLIB FCB @V305001 01085000
  1118. DC AL4(*+4) ... @V305001 01086000
  1119. TM VSAMFLG1,VSAMRUN+VIPINIT IF NOT VSAM JOB OR... @V305106 01087000
  1120. BNM NOVSAM OS VSAM JOB, SKIP CLEANUP @V305106 01088000
  1121. LA R1,VSRLIST YES, CALL DMSVSR TO @V305106 01089000
  1122. SVC 202 CLEANUP AFTER AND RELEASE VSAM @V305106 01090000
  1123. DC AL4(*+4) ... @V305106 01091000
  1124. NOVSAM L R5,ABGCOM GET COMM. REGION ADDRESS @V305106 01092000
  1125. MVC COMNAME,NONAME RE-INITIALIZE JOB NAME @V305001 01093000
  1126. SR R15,R15 ... @V305001 01094000
  1127. ST R15,PPEND CLEAR PPEND @VA04646 01095000
  1128. IC R15,DOSRC GET LAST RETURN CODE @V305001 01096000
  1129. MVI DOSRC,HEX00 AND CLEAR DOSRC @VM03230 01097000
  1130. L R14,ACMSRET GET CMSRET ADDRESS @V305001 01098000
  1131. L R13,CURRSAVE GET CURRENT SAVE AREA POINTER @V305001 01099000
  1132. TM TYPFLAG,TPFSVO IS THIS CMS SVC ? @V305001 01100000
  1133. BZR R14 YES, JUST RETURN @V305001 01101000
  1134. L R14,AOSRET THEN GET OSRET ADDRESS @V305001 01102000
  1135. BR R14 RETURN TO DMSITS @V305001 01103000
  1136. EJECT 01104000
  1137. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01105000
  1138. * * 01106000
  1139. * DETERMINE WHICH DOS/VS ABEND CODE TO USE FOR LOAD/FETCH * 01107000
  1140. * ERRORS, AND ISSUE SVC 2 TO $$BABEND TO PROCESS ANY USER * 01108000
  1141. * ACTIVE STIXIT AB'S. * 01109000
  1142. * * 01110000
  1143. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01111000
  1144. SPACE 1 01112000
  1145. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01113000
  1146. SPACE 1 01114000
  1147. FCHERRS LA R0,ABEND2B I/O ERROR ABEND CODE @V305001 01115000
  1148. CH R15,H100 WAS IT I/O ERROR ? @V305001 01116000
  1149. BE BABEND YES, BRANCH @V305001 01117000
  1150. LA R0,ABEND25 MUST BE STORAGE EXCEEDED @V305001 01118000
  1151. BABEND ST R0,EGPR0 SAVE ABEND CODE FOR NOW.. @V305001 01119000
  1152. ST R15,EGPR15 SAVE RETURN CODE @V305001 01120000
  1153. LA R1,BABEND2 GET RETURN ADDRESS @V305001 01121000
  1154. ST R1,OLDPSW+4 SAVE AS OLD PSW @V305001 01122000
  1155. NI OLDPSW+1,RESETSK RESET PSW STORAGE KEY @V305001 01123000
  1156. B DOSRET RETURN TO CMS @V305001 01124000
  1157. BABEND2 BALR R14,0 ESTABLISH ADDRESSABILITY @V305001 01125000
  1158. USING *,R14 @V305001 01126000
  1159. LA R1,ABTERM POINT TO $$BABEND LITERAL @V305001 01127000
  1160. DROP R14 @V305001 01128000
  1161. SVC SVC2 CALL $$BABEND @V305001 01129000
  1162. DC H'0' SHOULD NEVER COME BACK HERE @V305001 01130000
  1163. EJECT 01131000
  1164. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01132000
  1165. * * 01133000
  1166. * SVC16: STORE THE ADDRESS OF THE USER'S PC ROUTINE * 01134000
  1167. * AND SAVEAREA ADDRESS IN THE PC OPTION TABLE * 01135000
  1168. * * 01136000
  1169. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01137000
  1170. SPACE 1 01138000
  1171. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01139000
  1172. SPACE 1 01140000
  1173. STXITPC BAL R6,GETPC GET ADDRESS OF PC OPTION TABLE @V305066 01141000
  1174. B COMSVCE LOCATE APPROPRIATE ENTRY @V305066 01142000
  1175. SPACE 2 01143000
  1176. GETPC LH R2,PCPTR POINTER TO BEG. PC OPTION TABLE @V305066 01144000
  1177. B COMTABA GO CALCULATE APPROPRIATE ENTRY @V305066 01145000
  1178. SPACE 2 01146000
  1179. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01147000
  1180. * * 01148000
  1181. * SVC17: PROVIDES A RETURN FROM THE USER'S PC ROUTINE * 01149000
  1182. * TO THE PROGRAM INTERRUPTED DUE TO A PROGRAM * 01150000
  1183. * CHECK. * 01151000
  1184. * * 01152000
  1185. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01153000
  1186. SPACE 1 01154000
  1187. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01155000
  1188. SPACE 1 01156000
  1189. EXITPC BAL R6,GETPC GET PC OPTION TABLE ADDRESS @V305066 01157000
  1190. LH R10,PIK PROGRAM INTERRUPT KEY @V305066 01158000
  1191. USING PIBADR,R10 ADDRESSABILITY FOR PIB @V305066 01159000
  1192. AH R10,PIBPT POINT TO PARTITION PIB @V305066 01160000
  1193. L R7,PIBSAVE PPSAVE AREA ADDRESS @V305066 01161000
  1194. USING SVUARA,R4 USER SAVE AREA ADDRESSABILITY @V305066 01162000
  1195. DROP R8 @V305066 01163000
  1196. USING SVEARA,R7 PPSAVE ADDRESSABILITY @V305066 01164000
  1197. MVC SVEPSW2,SVUPSW2 RESTORE PSW AND REGISTERS @V305066 01165000
  1198. MVC SVER09(28),SVUR09 REGISTERS TO USER SAVE AREA @V305066 01166000
  1199. MVC SVER00(36),SVUR00 IN SEQUENCE R9 TO R8 @V305066 01167000
  1200. LCR R3,R3 CONVERT ROUTINE ADDRESS @V305066 01168000
  1201. ST R3,0(R2) STORE ROUT ADD IN PC TABLE @V305066 01169000
  1202. MVC OLDPSW(8),SVEPSW WHEN DMSITS GETS CONTROL, @V305066 01170000
  1203. MVC EGPR0(36),SVER00 IT WILL RETURN CONTROL TO @V305066 01171000
  1204. MVC EGPR9(28),SVER09 INST INDICATED IN OLDPSW @V305066 01172000
  1205. B DOSRET @V305066 01173000
  1206. EJECT 01174000
  1207. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01175000
  1208. * * 01176000
  1209. * SVC37: STORE THE ADDRESS OF THE USER'S PC ROUTINE * 01177000
  1210. * AND SAVEAREA ADDRESS IN THE PC OPTION TABLE * 01178000
  1211. * * 01179000
  1212. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01180000
  1213. SPACE 1 01181000
  1214. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01182000
  1215. SPACE 1 01183000
  1216. STXITAB BAL R6,GETAB GET ADDRESS OF AB OPTION TABLE @V305066 01184000
  1217. COMSVCE LTR R0,R0 SEE IF MACRO PASSED PARAMETERS ? @V305066 01185000
  1218. BZ SKPVALID BRANCH IF PARMS NOT SPECIFIED @V305066 01186000
  1219. LA R7,71(R1) POINT TO END OF SAVEAREA @V305066 01187000
  1220. C R7,PPBEG VALIDATE SAVEAREA LIMITS @V305066 01188000
  1221. BL ERR02E ERROR IS SAVEAREA ADDR LESS 20000@V305066 01189000
  1222. TM DOSFLAGS,DOSVSAM IS VSAM SET ON ? @VA07500 01189300
  1223. BO CHKMNHI YES, CHECK MAINHIGH @VA07500 01189600
  1224. C R7,PPEND COMPARE WITH END PARTITION ADDR @V305066 01190000
  1225. BH ERR02E ERROR HIGHER THAN PARTITION END @V305066 01191000
  1226. B SKPVALID CONTINUE IF NOT HIGH @VA07500 01191030
  1227. CHKMNHI EQU * @VA07500 01191060
  1228. C R7,MAINHIGH DOES SAVEAREA END EXCEED @VA07500 01191090
  1229. * MAINHIGH ? 01191120
  1230. BH ERR02E YES, ERROR @VA07500 01191150
  1231. L R8,MAINLIST GET FREELIST POINTER @VA07500 01191180
  1232. LA R8,0(R8) CLEAR HIGH ORDER BYTE @VA07500 01191210
  1233. LTR R8,R8 IS POINTER ZERO ? @VA07500 01191240
  1234. BZ SKPVALID YES - NO MORE CHECKING NEEDED @VA07500 01191270
  1235. CHKFRE EQU * @VA07500 01191300
  1236. LR R4,R8 LOAD POINTER INTO WORK REG @VA07500 01191330
  1237. CR R4,R1 IS IT HIGHER THAN SAVEAREA ? @VA07500 01191360
  1238. BH CHKMORE YES - SEE IF SAVEAREA FITS @VA07500 01191390
  1239. A R4,4(R4) ADD FREEAREA LENGTH @VA07500 01191420
  1240. BCTR R4,R0 SUBTRACT '1' FOR TRUE LENGTH @VA07500 01191450
  1241. CR R4,R1 IS IT HIGHER THAN SAVEAREA ? @VA07500 01191480
  1242. BNL ERR02E YES, ERROR @VA07500 01191510
  1243. L R8,0(R8) GET NEXT POINTER @VA07500 01191540
  1244. LA R8,0(R8) CLEAR HIGH ORDER BYTE @VA07500 01191570
  1245. LTR R8,R8 IS POINTER ZERO ? @VA07500 01191600
  1246. BZ SKPVALID YES (END OF FREELIST) @VA07500 01191630
  1247. B CHKFRE CHECK NEXT AREA @VA07500 01191660
  1248. CHKMORE EQU * @VA07500 01191690
  1249. CR R4,R7 IS IT HIGHER THAN SAVEAREA END ? @VA07500 01191720
  1250. BNH ERR02E NO, ERROR @VA07500 01191750
  1251. SKPVALID LTR R3,R3 IS ROUTINE ACTIVE NOW ? @V305066 01192000
  1252. BNM STOREPC NO, STORE PARAMETERS @V305066 01193000
  1253. LCR R0,R0 INVERT NEW ROUTINE ADDRESS @V305066 01194000
  1254. LR R1,R4 DON'T DESTROY SAVEAREA POINTER @V305066 01195000
  1255. STOREPC STM R0,R1,0(R2) STORE RTNE & SAVEAREA ADDR IN TAB@V305066 01196000
  1256. B DOSRET @V305066 01197000
  1257. SPACE 2 01198000
  1258. GETAB L R9,ASYSCOM GET ADDRESS OF SYSCOM @VA15167 01199000
  1259. USING SYSCOM,R9 ESTABLISH SYSCOM ADDRESSABILIY @V305066 01200000
  1260. L R2,IJBABTAB GET ADDRESS OF AB OPTION TABLE @V305066 01201000
  1261. COMTABA LH R8,PIK GET PROGRAM INTERRUPT KEY @V305066 01202000
  1262. SRL R8,1 ONE ONE 8-BYTE TABLE ENTRY BUT @V305066 01203000
  1263. AR R2,R8 TABLES ARE OFFSET BY 8 BYTES @V305066 01204000
  1264. LM R3,R4,0(R2) LOAD ROUTINE AND SAVEAREA ADDRS @V305066 01205000
  1265. BR R6 RETURN TO MAIN LINE @V305066 01206000
  1266. SPACE 01207000
  1267. DROP R9 (THRU W/SYSCOM ADDR'BILITY HERE) @V305066 01208000
  1268. EJECT 01209000
  1269. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01210000
  1270. * * 01211000
  1271. * SVC95: EXIT AB * 01212000
  1272. * RETURN CONTROL TO SUPERVISOR AND CONTINUE TASK * 01213000
  1273. * * 01214000
  1274. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01215000
  1275. SPACE 01216000
  1276. EXITAB BAL R6,GETPC GET PC OPT TAB ENTRY @V387274 01217000
  1277. LTR R3,R3 EXIT FROM PC ROUTINE? @V387274 01218000
  1278. BNM ESTAB NO, IT WAS AN AB ROUTINE @V387274 01219000
  1279. LCR R3,R3 REESTABLISH PC LINKAGE @V387274 01220000
  1280. B SETLKGE AND GO PUT IN TAB @V387274 01221000
  1281. ESTAB BAL R6,GETAB GET AB OPT TAB ADDR IN R2 @V387274 01222000
  1282. LH R10,PIK GET PROG INTERRUPT KEY @V387274 01223000
  1283. AH R10,PIBPT PIB TABLE @V387274 01224000
  1284. USING PIBADR,R10 ADDRESSABILITY @V387274 01225000
  1285. L R8,PIBSAVE PPSAVE ADDRESS @V387274 01226000
  1286. USING SVEARA,R8 ADDRESSABILITY @V387274 01227000
  1287. L R3,SVEPSW2 GET AB RTN ADDR FROM SAVE AREA @V387274 01228000
  1288. SETLKGE ST R3,0(,R2) RESTORE ADDR IN OPTION TABLE @V387274 01229000
  1289. * RESET ABEND INDICATIONS @V387274 01230000
  1290. * CLEAR INTERRUPT INFORMATION IN PARTITION PIB EXTENSION @V387274 01231000
  1291. LH R10,PIB2PTR PT TO PART PIB EXTENSION @V387274 01232000
  1292. XC INTINFO(4),INTINFO CLEAR FIELD @V387274 01233000
  1293. * RETURN TO INSTR FOLLOWING EXIT AB MACRO @V387274 01234000
  1294. B DOSRET RETURN @V387274 01235000
  1295. DROP R8,R10 @V387274 01236000
  1296. EJECT 01237000
  1297. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01238000
  1298. * * 01239000
  1299. * SVC34: GET TIME OF DAY IN TIMER UNITS * 01240000
  1300. * * 01241000
  1301. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01242000
  1302. SPACE 1 01243000
  1303. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01244000
  1304. SPACE 1 01245000
  1305. USING NUCON,R0 REF. DATE/TIME STUFF IN NUCON @V305066 01246000
  1306. GETIME MVC JOBDATE(8),CURRDATE SAVE THE DATE (MM/DD/YY) @VA09246 01247000
  1307. L R2,EGPR0 SAVE EGPR0 (NEED SCRATCH DBLWORD)@V305066 01248000
  1308. STCK EGPR0 TELL ME THE TIME RIGHT NOW @V305066 01249000
  1309. LM R0,R1,EGPR0 OBTAIN IT IN REGS 0-1 @V305066 01250000
  1310. ST R2,EGPR0 RESTORE EGPR0 @V305066 01251000
  1311. SL R1,CLKVALMD+4 SUBT LOW-ORDR PART OF ELAPSD TIME@V305066 01252000
  1312. BC 2+1,*+6 X-FER IF CC=2 OR 3 (CARRY OCC'RD)@V305066 01253000
  1313. BCTR R0,0 FOR CC=1, DECRMT HIGH ORDER PART @V305066 01254000
  1314. SL R0,CLKVALMD SUBT HIGH ORDR PRT OF ELAPSD TIME@V305066 01255000
  1315. LR R2,R0 SAVE THIS VALUE @V305066 01256000
  1316. LR R3,R1 ... @V305066 01257000
  1317. SLDL R0,1 DOUBLE IT, @V305066 01258000
  1318. ALR R0,R2 & ADD - TO GET 3 TIMES ITS VALUE @V305066 01259000
  1319. ALR R1,R3 ... @V305066 01260000
  1320. BC 8+4,*+8 TRANSFER IF NO CARRY OCCURRED, @V305066 01261000
  1321. AL R0,ADD1 IF CARRY, ADD 1 TO HIGH-ORDR PART@V305066 01262000
  1322. * NOW HAVE TIME IN STCK UNITS TIMES 3 ... 01263000
  1323. D R0,CON4096 DIVIDE BY TEN THOUSAND (X 4096) @V305066 01264000
  1324. TWFRCK EQU * 01264250
  1325. C R1,TWFRTMUS COMPARE AGAINST 24 HOURS @VA09246 01264500
  1326. BH ADJUSTME IF ELLAPS TIME MORE,ADJUST @VA09246 01264750
  1327. ST R1,EGPR1 STORE ANSWER IN CALLER'S R1 @V305066 01265000
  1328. L R7,OLDPSW+4 RETURN INST ADDRESS @V305066 01266000
  1329. CLI 0(R7),NEWGET NEW GETIME MACRO @V305066 01267000
  1330. BE DOSRET YES, RETURN @V305066 01268000
  1331. LA R7,10(,R7) SKIP SEVERAL INSTS @V305066 01269000
  1332. ST R7,OLDPSW+4 STORE UPD INST ADDRESS @V305066 01270000
  1333. B DOSRET @V305066 01271000
  1334. ADJUSTME EQU * 01271200
  1335. S R1,TWFRTMUS SUBTRACT 24 HOURS IN TIMER @VA09246 01271400
  1336. * UNITS FROM ELAPSED TIME 01271600
  1337. B TWFRCK AND GO CHECK AGAIN @VA09246 01271800
  1338. EJECT 01272000
  1339. * * 01297000
  1340. * COMREG .. GIVE ADDRESS OF BGCOM IN R1 * 01298000
  1341. * * 01299000
  1342. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01300000
  1343. SPACE 1 01301000
  1344. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01302000
  1345. SPACE 1 01303000
  1346. COMREG L R1,ASYSREF GET ADDRESS BGCOM @V305001 01304000
  1347. ST R1,EGPR1 SAVE IN USER'S R1 @V305001 01305000
  1348. B DOSRET RETURN TO CMS @V305001 01306000
  1349. SPACE 2 01307000
  1350. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01308000
  1351. * * 01309000
  1352. * WAIT ON A CCB, ECB OR TECB. THIS CONDITION SHOULD NOT * 01310000
  1353. * OCCUR, SINE CMS/DOS DOES NOT SUPPORT ECB'S OR TECB'S. * 01311000
  1354. * IN CASE OF CCB, THEY WILL ALWAYS BE POSTED BY EXCP, * 01312000
  1355. * THUS WAIT BECOMES AN EFFECTIVE POST. * 01313000
  1356. * * 01314000
  1357. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01315000
  1358. SPACE 1 01316000
  1359. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01317000
  1360. SPACE 1 01318000
  1361. WAIT EQU * @V305001 01319000
  1362. SPACE 2 01320000
  1363. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01321000
  1364. * * 01322000
  1365. * POST .. SVC 40 .. POST ECB .. (BYTE 2, BIT 0) * 01323000
  1366. * * 01324000
  1367. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01325000
  1368. SPACE 1 01326000
  1369. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01327000
  1370. SPACE 1 01328000
  1371. POST OI 2(R1),POSTECB POST ECB (BYTE 2, BIT 0) @V305001 01329000
  1372. B DOSRET GO TO EXIT @V305001 01330000
  1373. EJECT 01331000
  1374. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01332000
  1375. * * 01333000
  1376. * SVC 50 IN OUR CASE MEANS THAT LIOCS HAS ENCOUNTERED * 01334000
  1377. * AN OPERATION NOT SUPPORTED BY THE XXMOD. * 01335000
  1378. * * 01336000
  1379. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01337000
  1380. SPACE 1 01338000
  1381. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01339000
  1382. SPACE 1 01340000
  1383. LIOCS LR R2,R1 POINT TO CCB @V305001 01341000
  1384. DMSFREE DWORDS=2,TYPCALL=BALR @V305001 01342000
  1385. LR R6,R1 SAVE LOCATION POINTER @V305001 01343000
  1386. BAL R4,CONVERT @V305001 01344000
  1387. DMSERR NUM=96,LET=S,SUB=(CHARA,(R6)), @V305001*01345000
  1388. TEXT='UNSUPPORTED FUNCTION IN A LIOCS ROUTINE FOR ''....*01346000
  1389. ..''' @V305001 01347000
  1390. LR R1,R6 RESTORE LOCATION TO FREE @V305001 01348000
  1391. DMSFRET DWORDS=2,LOC=(1),TYPCALL=BALR @V305001 01349000
  1392. B NOTSUP GIVE NOT SUPPORTED MSG ALSO @V305001 01350000
  1393. EJECT 01351000
  1394. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01352000
  1395. * * 01353000
  1396. * ROUTINE TO SEARCH THROUGH THE AMS OR VSAM SEGMENTS * 01354000
  1397. * LOOKING FOR A SPECIFIED PHASE OR $$B-TRANS. * 01355000
  1398. * * 01356000
  1399. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01357000
  1400. SPACE 1 01358000
  1401. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01359000
  1402. SPACE 1 01360000
  1403. VSAMDS LR R2,R1 LET R2 POINT TO PHASE NAME, @V305001 01361000
  1404. LR R8,R1 SAVE PHASE NAME ADDRESS @VA12893 01361500
  1405. LR R15,R0 SAVE CONTENTS OF REG. 0 @V305001 01362000
  1406. TM DOSFLAGS,DOSVSAM IS VSAM SUPPOSED TO BE RUNNING?@V305106 01363000
  1407. BZ VSAMPNF NO, GO TO NOT FOUND EXIT. @V305106 01364000
  1408. LM R0,R1,0(R2) LOAD PHASE-NAME INTO HANDY REGS. @V305001 01365000
  1409. CLM R0,M14,IDC AMS PHASE TO BE LOADED ? @V305001 01366000
  1410. BNE VSAMSEG NOPE - SEE IF IT IS VSAM PHASE. @V305001 01367000
  1411. ICM R3,15,AAMSSYS GET ADDRESS OF AMS SEGMENT @V305001 01368000
  1412. BNZ VSAMLKP IF EXISTS, GO START SEARCH. @V305001 01369000
  1413. B VSAMPNF IF NOT THERE, THEN NOT FOUND EXIT@V305001 01370000
  1414. VSAMSEG CL R0,IKQV VSAM PHASE TO BE LOADED ? @V305001 01371000
  1415. BE VSAMLDS YES, START SEARCH ON VSAM SEGMENT@V305066 01372000
  1416. CLM R0,M14,BTRANS VSAM TRANSIENT TO BE LOADED ? @V305001 01373000
  1417. BNE VSAMPNF NOPE - GO THROUGH NOT FOUND EXIT.@V305001 01374000
  1418. VSAMLDS ICM R3,15,AVSAMSYS GET ADDRESS OF VSAM SEGMENT @V305001 01375000
  1419. BNZ VSAMLKP IF THERE, START SEARCH FOR PHASE @V305001 01376000
  1420. L R11,=A(LDVSAM) GET ADDRESS OF VSAM LOAD ROUTINE @V305001 01377000
  1421. BALR R10,R11 GO TO LOAD VSAM SEGMENT @V305001 01378000
  1422. BNZ VSAMPNF IF NO SEGMENT, PHASE NOT FOUND. @V305001 01379000
  1423. VSAMLKP LA R4,BXLE12 12 FOR BXLE USE SEARCHING TABLES @V305001 01380000
  1424. L R5,0(,R3) ENDING ADDR INTO R5 FOR BXLE USE,@V305001 01381000
  1425. LA R3,4(,R3) AND START WITH FIRST PHASE NAME @V305001 01382000
  1426. * 01383000
  1427. * SPEEDY LOOP TO FIND THE DESIRED 01384000
  1428. * PHASE-NAME IN VSAM OR AMS SEGMENT: 01385000
  1429. * 01386000
  1430. VSAMLUP CL R1,4(,R3) DOES 2ND HALF OF PHASE NAME MTCH?@V305001 01387000
  1431. BE VSAMCK1 YES - BET FIRST HALF MATCHES TOO @V305001 01388000
  1432. BXLE R3,R4,VSAMLUP NO - KEEP CHECKING. @V305001 01389000
  1433. B VSAMNXT GO SEE IF THERE'S ANOTHER TABLE. @V305001 01390000
  1434. VSAMCK1 CL R0,0(,R3) DOES 1ST HALF OF PHASE NAME MTCH?@V305001 01391000
  1435. BE VSAMFND AHA - I WAS RIGHT. @V305001 01392000
  1436. BXLE R3,R4,VSAMLUP NO (GUESSED WRONG) - KEEP CHKNG @V305001 01393000
  1437. VSAMNXT SR R3,R4 BACK TO LAST 16-BYTE NAME,ADDR.. @V305001 01394000
  1438. CLC 0(8,R3),FENCE8 WE SHOULD BE AT AN 8-BYTE 'FENCE'@V305001 01395000
  1439. BNE VSAMPNF IF NOT, THEN NOT FOUND EXIT. @V305001 01396000
  1440. ICM R3,15,8(R3) GET ADDRESS OF NEXT SECTION @V305001 01397000
  1441. BNZ VSAMLKP IF IT EXISTS GO CHECK IT ALSO. @V305001 01398000
  1442. EJECT 01399000
  1443. * 01400000
  1444. * DID NOT FIND THE DESIRED PHASE NAME: 01401000
  1445. * 01402000
  1446. VSAMPNF EQU * PHASE NOT FOUND @VA12893 01403300
  1447. LTR R1,R8 POINT TO PHASE NAME @VA12893 01403600
  1448. LR R0,R15 RESTORE REG. 0 @V305001 01404000
  1449. BR R6 RETURN TO CALLER. @V305001 01405000
  1450. * 01406000
  1451. * FOUND THE DESIRED PHASE NAME: 01407000
  1452. * 01408000
  1453. VSAMFND L R1,8(,R3) LOAD POINT INTO R1 @V305001 01409000
  1454. LR R0,R2 REG. 0 POINTS TO PHASE NAME. @V305001 01410000
  1455. SR R4,R4 ZERO CONDITION CODE, @V305001 01411000
  1456. BR R6 RETURN TO CALLER. @V305001 01412000
  1457. EJECT 01413000
  1458. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01414000
  1459. * * 01415000
  1460. * ROUTINE TO CONVERT THE 2-BYTE LOGICAL UNIT IN THE * 01416000
  1461. * CCB TO AN EBCDIC SYSXXX LITERAL. UPON ENTRY, REG. 2 * 01417000
  1462. * POINTS TO THE CCB, AND REG. 6 POINTS TO A 16 BYTE * 01418000
  1463. * DOUBLE WORD ALIGNED AREA FOR INTERNAL WORK. * 01419000
  1464. * * 01420000
  1465. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01421000
  1466. SPACE 1 01422000
  1467. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01423000
  1468. SPACE 1 01424000
  1469. CONVERT SR R5,R5 CLEAR @V305001 01425000
  1470. IC R5,7(,R2) GET UNIT NUMBER @V305001 01426000
  1471. TM 6(R2),PROG IS IT PROGRAMMER UNIT ? @V305001 01427000
  1472. BO CNVPROG YES, BRANCH @V305001 01428000
  1473. SLL R5,2 MULTIPLY BY 4 @V305001 01429000
  1474. LA R5,SYSTAB(R5) INDEX TO CORRECT XXX @V305001 01430000
  1475. MVC 3(3,R6),0(R5) MOVE XXX TO AREA @V305001 01431000
  1476. CONVERT2 MVC 0(3,R6),SYS MOVE THE SYS TO AREA @V305001 01432000
  1477. BR R4 RETURN TO CALLER @V305001 01433000
  1478. CNVPROG CVD R5,8(,R6) CONVERT UNIT NUMBER @V305001 01434000
  1479. UNPK 0(6,R6),8(8,R6) UNPACK TO AREA @V305001 01435000
  1480. OI 5(R6),ZONE SET LAST ZONE @V305001 01436000
  1481. B CONVERT2 GO TO MOVE SYS TO AREA @V305001 01437000
  1482. SPACE 1 01438000
  1483. * 01439000
  1484. * SYSXXX CONSTANTS FOR SYSTEM LOGICAL UNITS 01440000
  1485. * 01441000
  1486. SYSTAB DS 0H @V305001 01442000
  1487. DC CL4'RDR' 00 @V305001 01443000
  1488. DC CL4'IPT' 01 @V305001 01444000
  1489. DC CL4'PCH' 02 @V305001 01445000
  1490. DC CL4'LST' 03 @V305001 01446000
  1491. DC CL4'LOG' 04 @V305001 01447000
  1492. DC CL4'LNK' 05 @V305001 01448000
  1493. DC CL4'RES' 06 @V305001 01449000
  1494. DC CL4'SLB' 07 @V305001 01450000
  1495. DC CL4'RLB' 08 @V305001 01451000
  1496. DC CL4'USE' 09 @V305001 01452000
  1497. DC CL4'REC' 0A @V305001 01453000
  1498. DC CL4'CLB' 0B @V305001 01454000
  1499. DC CL4'VIS' 0C @V305001 01455000
  1500. DC CL4'CAT' 0D @V305001 01456000
  1501. EJECT 01457000
  1502. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01458000
  1503. * * 01459000
  1504. * GETVIS (SVC 61) = GET VIRTUAL STORAGE * 01460000
  1505. * LIMITED IMPLEMENTATION AS NEEDED FOR VSAM UNDER CMS * 01461000
  1506. * * 01462000
  1507. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01463000
  1508. SPACE 1 01464000
  1509. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01465000
  1510. SPACE 1 01466000
  1511. GETVIS DS 0H "GETVIS" - LMTED IMPLEMENTATTION @V305132 01467000
  1512. LA R11,GETVISCN SET R11 TO CONT AFTER GETBLK CALL@V305132 01468000
  1513. * CAN ENTER HERE (VIA BAL R11,GETVISUB") TO GET INTERNAL GETVIS: 01469000
  1514. GETVISUB L R10,=A(GETBLK) NEEDED ADDRESSABILITY IN R10, @V305132 01470000
  1515. BALR R14,R10 CALL "GETBLK" SUBROUTINE @V305132 01471000
  1516. BR R11 EITHER EXIT TO CALLER, OR CONT...@V305132 01472000
  1517. GETVISCN ST R1,EGPR1 RETURN THE ADDRESS, @V305132 01473000
  1518. ST R15,EGPR15 AND THE RETURN-CODE TO THE CALLER@V305132 01474000
  1519. B DOSRET AND GO EXIT. @V305132 01475000
  1520. EJECT 01476000
  1521. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01477000
  1522. * * 01478000
  1523. * FREEVIS (SVC 62) = RETURN VIRTUAL STORAGE * 01479000
  1524. * LIMITED IMPLEMENTATION AS NEEDED FOR VSAM UNDER CMS * 01480000
  1525. * * 01481000
  1526. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01482000
  1527. SPACE 1 01483000
  1528. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01484000
  1529. SPACE 1 01485000
  1530. FREEVIS DS 0H "FREEVIS" - LMTD IMPLEMENT'TN @V305132 01486000
  1531. LA R11,DOSRET SET R11 = EXIT AFTER FREBLK CALL @V305132 01487000
  1532. * CAN ENTER HERE (VIA BAL R11,FREVISUB") TO GET INTERNAL FREEVIS: 01488000
  1533. FREVISUB CL R1,ADIKQLAB IS 'IKQLAB' BEING FREVIS'D ? @V305132 01489000
  1534. BNE FREVISOK NOPE - NO SPECIAL HANDLING NEEDED@V305132 01490000
  1535. L R14,=A(X'FFFFFF') YES (=IKQLAB) - SET ADIKQLAB @V305132 01491000
  1536. SR R15,R15 TO '00FFFFFF', AND NDIKQLAB TO 0 @V305132 01492000
  1537. STM R14,R15,ADIKQLAB (INDC'TNG IKQLAB NOT IN STOR) @V305132 01493000
  1538. FREVISOK L R10,=A(GETBLK) COMMON ADDR'BTY FOR GETBLK/FREBLK@V305132 01494000
  1539. DROP R12 (BRIEFLY) @V305132 01495000
  1540. USING GETBLK,R10 ... @V305132 01496000
  1541. BAL R14,FREBLK CALL "FREBLK" SUBROUTINE @V305132 01497000
  1542. DROP R10 RESTORE NORMAL ADDRESSABILITY @V305132 01498000
  1543. USING DMSDOS,R12 ... @V305132 01499000
  1544. BR R11 RETURN TO CALLER OR "B DOSRET" @V305132 01500000
  1545. SPACE 2 01501000
  1546. * GETVIS/FREEVIS OPTIONS (SPECIFIED BY CALLER) 01502000
  1547. * (PASSED IN LOW-ORDER BYTE OF R15 AT ENTRY) 01503000
  1548. SPACE 01504000
  1549. EQBIT31 EQU 1 "PAGE" - GET STORG ON PAGE BNDARY@V305132 01505000
  1550. EQBIT30 EQU 2 "POOL" - GET STORG FROM USER-POOL@V305132 01506000
  1551. EQBIT29 EQU 4 "SVA" - GET STORAGE FROM SVA @V305132 01507000
  1552. EJECT 01508000
  1553. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01576000
  1554. * * 01577000
  1555. * "RELEASE" = SVC 64 * 01578000
  1556. * LIMITED IMPLEMENTATION AS NEEDED FOR VSAM UNDER CMS * 01579000
  1557. * * 01580000
  1558. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01581000
  1559. SPACE 1 01582000
  1560. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01583000
  1561. SPACE 1 01584000
  1562. SVC64 DS 0H "RELEASE" - LIMITED IMPLEMENT'TN @V305132 01585000
  1563. LTR R1,R1 IS R1 PERCHANCE 0 ? @V305132 01586000
  1564. BZ SVC64CLR YES - RELEASE ALL RESOURCES. @V305132 01587000
  1565. L R3,SYSE000 NO - LOOK FOR KEY OF 'E000' @V305132 01588000
  1566. CLM R3,M3,2(R1) ... @V305132 01589000
  1567. BE SVC64B IF = 'E000', HANDLE R0 ALSO. @V305132 01590000
  1568. CLI 2(R1),KEYC0 IF NOT E000, MUST BE C0 @V305132 01591000
  1569. BNE ERROR64 ERROR SOMEWHERE IF NOT. @V305132 01592000
  1570. CLI 3(R1),HEX07 AND LAST BYTE MUST NOT EXCEED 07 @V305132 01593000
  1571. BH ERROR64 ERROR SOMEWHERE IF IT DOES. @V305132 01594000
  1572. SR R2,R2 CLEAR, @V305132 01595000
  1573. IC R2,3(,R1) GET LAST 3 BITS OF RESOURCE CODE @V305132 01596000
  1574. ALR R2,R2 "MULTIPLY BY 4" @V305132 01597000
  1575. ALR R2,R2 ... @V305132 01598000
  1576. A R2,ARURTBL FORM ADDRESS OF RUR-TABLE ENTRY @V305132 01599000
  1577. SVC64A L R3,0(,R2) GET OLD VALUE (CTR) FRM RUR-TABLE@V305132 01600000
  1578. SH R3,ONE MINUS ONE; @V305132 01601000
  1579. BNM SVC64X IF ZERO OR PLUS IT'S OK. @V305132 01602000
  1580. SR R3,R3 NO NEGATIVE NUMBERS PLEASE @V305132 01603000
  1581. SVC64X ST R3,0(,R2) STORE DEC'MTD RUR-TABLE COUNTER @V305132 01604000
  1582. B DOSRET GO CLEAR R15 AND EXIT. @V305132 01605000
  1583. SPACE 01606000
  1584. SVC64B EQU * CODE WAS X'E000' ... @V305132 01607000
  1585. LA R2,RURDISP FORM ADDRESS OF SECTION OF RURTBL@V305132 01608000
  1586. A R2,ARURTBL CONTAINING E000 ENTRIES @V305132 01609000
  1587. L R1,EGPR0 REF 8-BYTE RESOURCE PER USER'S R0@V305132 01610000
  1588. L R0,FENCE ENDING SENTINEL @V305132 01611000
  1589. SVC64C CLC 4(8,R2),0(R1) DOES RESOURCE MATCH THAT IN TABLE@V305132 01612000
  1590. BE SVC64D YES - MAKE ONE MORE CHECK BELOW @V305132 01613000
  1591. LA R2,12(,R2) NO - POINT TO NEXT 12-BYTE ENTRY,@V305132 01614000
  1592. CL R0,0(,R2) HAVE WE HIT ENDING SENTINEL ? @V305132 01615000
  1593. BNE SVC64C NOPE - KEEP LOOKING. @V305132 01616000
  1594. B DOSRET YES - IGNORE NOT FOUND @V305132 01617000
  1595. SVC64D LA R3,COUNT1 SEE IF COUNTER IS 1 @V305132 01618000
  1596. CL R3,0(,R2) ... @V305132 01619000
  1597. BL SVC64A NOPE - GENERAL CASE. @V305132 01620000
  1598. XC 4(8,R2),4(R2) YES - CLEAR RESOURCE NAME @V305132 01621000
  1599. B SVC64A AND GO JOIN GENERAL-CASE HANDLER.@V305132 01622000
  1600. SPACE 01623000
  1601. * R1 = 0 AT INPUT MEANS TO RELEASE ALL RESOURCES: 01624000
  1602. SVC64CLR L R2,ARURTBL ADDRESS OF RURTBL @V305132 01625000
  1603. LA R3,RURLENG LENGTH (IN BYTES) @V305132 01626000
  1604. * NOTE: R1 = 0; R0 IS IMMATERIAL 01627000
  1605. MVCL R2,R0 CLEAR ENTIRE RURTBL @V305132 01628000
  1606. B DOSRET FOURTH DOWN - PUNT. @V305132 01629000
  1607. SPACE 01630000
  1608. ERROR64 EQU * SOME KIND OF ERROR IN "RELEASE" @V305132 01631000
  1609. B DOSRET NONFATAL; RETURN TO CALLER. @V305132 01632000
  1610. SPACE 01633000
  1611. * THE HALFWORD AT 2(R1) HAS A KEY OF THE FOLLOWING KIND: 01634000
  1612. * SYSOPN =X'C000'; SYSSPM =X'C004'; SYSMCO =X'C005'; SYSCTLG =X'C006'; 01635000
  1613. SPACE 01636000
  1614. SYSE000 DC A(X'E000') ALL OTHERS = THIS TWO-BYTE SIGNAL@V305132 01637000
  1615. FENCE DC X'FFFFFFFF' ENDNG SENTINEL FOLLOWNG RUR-TABLE@V305132 01638000
  1616. SPACE 01639000
  1617. * NOTE: MAKE SURE THE FOLLOWING IS KEPT CURRENT (SEE DMSNUC): 01640000
  1618. RURLENG EQU 32*4 LENGTH OF RURTBL (IN BYTES) @V305132 01641000
  1619. EJECT 01642000
  1620. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01643000
  1621. * * 01644000
  1622. * "CDLOAD" = SVC 65 * 01645000
  1623. * IMPLEMENTATION AS APPROPRIATE FOR VSAM UNDER CMS * 01646000
  1624. * * 01647000
  1625. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01648000
  1626. SPACE 1 01649000
  1627. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01650000
  1628. SPACE 1 01651000
  1629. CDLOAD DS 0H CDLOAD = SVC 65: @V305132 01652000
  1630. TM DOSFLAGS,DOSVSAM DOS SET WITH 'VSAM'? @V305106 01653000
  1631. BZ NOVSAMS NO, CANCEL THE JOB... @V305106 01654000
  1632. BAL R6,VSAMDS GO SEE IF VSAM OR AMS PHASE. @V305132 01655000
  1633. BNZ CDHRDWAY IF NOT FOUND, TRY THE HARD WAY. @V305132 01656000
  1634. LR R0,R1 PUT LOAD POINT IN R0. @V305132 01657000
  1635. LR R3,R2 R3 PT TO PHASE NAME INSTEAD OF R2@V305132 01658000
  1636. SR R2,R2 LENGTH OF 0 MEANS LENGTH UNAVAIL @V305132 01659000
  1637. CLC 0(8,R3),IKQVLAB PERCHANCE 'IKQLAB' PHASE ? @V305132 01660000
  1638. BE CDIKQLAB YES - DO SPECIAL HANDLING. @V305132 01661000
  1639. CLC 0(8,R3),IKQVLASF PERCHANCE 'IKQLASF' PHASE ? @VM03158 01662000
  1640. BE CDIKQLAS YES - DO SPECIAL HANDLING. @VM03158 01663000
  1641. STM R0,R1,EGPR0 RETN LOADPT & ENTRY PT IN R0/R1, @V305132 01664000
  1642. ST R2,EGPR14 AND "LENGTH" IN CALLER'S R14 @V305132 01665000
  1643. SR R15,R15 CLEAR RETURN-CODE TO = SUCCESS @V305132 01666000
  1644. ST R15,EGPR15 STORE RETURN-CODE IN CALLER'S R15@V305132 01667000
  1645. B DOSRET AND RETURN TO CALLER OF CDLOAD. @V305132 01668000
  1646. EJECT 01669000
  1647. * 01670000
  1648. * COULDN'T FIND WHAT WE WANTED IN D.C.S.S. STUFF - DO IT THE HARD WAY: 01671000
  1649. * R2 STILL POINTS TO THE GIVEN PHASE NAME: 01672000
  1650. * 01673000
  1651. DROP R5 @V305132 01674000
  1652. CDHRDWAY L R3,ABGCOM REFERENCE BGCOM @V305132 01675000
  1653. USING BGCOM,R3 @V305132 01676000
  1654. ICM R3,15,PPEND DO WE HAVE AN ANCHOR-TABLE ? @VM03158 01677000
  1655. BZ CDLOAD00 NOPE - NOTHING TO SEARCH @V305132 01678000
  1656. LA R0,1(,R3) YES - PPEND+1 INTO R0, @VM03158 01679000
  1657. BAL R14,SRCHANCH SEARCH ANCHOR-TABLE FOR A MATCH @V305132 01680000
  1658. BZ CDLOADOK SUCCESS - LOAD UP REGS AND EXIT. @V305132 01681000
  1659. CDLOAD00 L R3,ASYSCOM REFERENCE SYSCOM @V305132 01682000
  1660. USING SYSCOM,R3 ... @V305132 01683000
  1661. L R3,IJBFTTAB GET ADDRESS OF FETCH WORK TABLE @V305132 01684000
  1662. XC 0(FCHLENG,R3),0(R3) CLEAR IT, @V305132 01685000
  1663. USING FCHTAB,R3 AND REFERENCE VIA R3 @V305132 01686000
  1664. MVC DIRNAME(8),0(R2) MOVE PHASE NAME TO DIRNAME, @V305132 01687000
  1665. MVI DIRN,LENGTH SET UP LENGTH IN HALFWORDS @V305132 01688000
  1666. SR R0,R0 R0=0 WHEN WE'RE NOT GOING TO LOAD@V305132 01689000
  1667. OI DIRC,NOTEXT SIGNAL TXT=NO PLEASE @V305132 01690000
  1668. LA R1,DIRNAME R1 POINTS TO DIRNAME & FOLLOWING @V305132 01691000
  1669. L R15,=V(DMSFCH) INVOKE THE 'FETCH' ROUTINE @V305132 01692000
  1670. BALR R14,R15 ... @V305132 01693000
  1671. LTR R15,R15 DID FETCH FIND IT SOMEPLACE ? @V305132 01694000
  1672. BNZ ERR22 IF NOT, GIVE UP @V305132 01695000
  1673. TM DIRC,PNOTFND WAS THE PHASE FOUND ? @V305132 01696000
  1674. BO ERR22 BRANCH IF NOT. @V305132 01697000
  1675. LH R0,DIRTT GET "NUMBER OF TEXT BLOCKS", @V305132 01698000
  1676. SH R0,ONE LESS ONE, @V305132 01699000
  1677. BNM CDLOAD01 MAKE SURE NOT MINUS @V305132 01700000
  1678. SR R0,R0 (IF MINUS REPLACE WITH 0) @V305132 01701000
  1679. CDLOAD01 SLL R0,10 (DIRTT-1) TO 10TH POWER = X 1024,@V305132 01702000
  1680. AH R0,DIRLL + LGTH OF LAST BLOCK = NO. BYTES @V305132 01703000
  1681. LR R4,R0 KEEP SIZE (FOR LATER USE), @V305132 01704000
  1682. BAL R11,GETVISUB GET STOR TO LOAD NEEDED PHASE @V305132 01705000
  1683. BNZ ERR22 IF NO FREE STOR AVAIL, GIVE UP. @V305132 01706000
  1684. LR R6,R1 OK - REMEMBER ADDRESS, @V305132 01707000
  1685. LR R0,R1 AND R0 PTS TO WHERE LOAD PHASE, @V305132 01708000
  1686. NI DIRC,255-NOTEXT SIGNAL TXT=YES THIS TIME @V305132 01709000
  1687. LA R1,DIRNAME R1 POINTS TO DIRNAME ETC. AGAIN @V305132 01710000
  1688. L R15,=V(DMSFCH) INVOKE THE 'FETCH' ROUTINE AGAIN @V305132 01711000
  1689. BALR R14,R15 (TO REALLY LOAD IT THIS TIME) @V305132 01712000
  1690. LTR R15,R15 DID IT GET LOADED OK ? @V305132 01713000
  1691. BNZ ERR22P IF NOT, GIVE UP. @V305132 01714000
  1692. LR R3,R1 NOW SAVE THE PHASE ENTRY POINT. @V305132 01715000
  1693. DROP R3 @V305132 01716000
  1694. EJECT 01717000
  1695. * 01718000
  1696. * LOAD SUCCEEDED - BUILD ANCHOR-TABLE (IF NECESSARY) & INSERT THE DATA: 01719000
  1697. * 01720000
  1698. CDLOAD0X L R5,ABGCOM REFERENCE BGCOM @VM03158 01721000
  1699. USING BGCOM,R5 @V305132 01722000
  1700. ICM R1,15,PPEND DO WE HAVE AN ANCHOR-TABLE ? @V305132 01723000
  1701. BNZ CDLOAD02 YES - GO TO IT. @V305132 01724000
  1702. LA R1,DMSSMNAT IF NOT, CREATE AN ANCHOR-TABLE @V305132 01725000
  1703. SVC 202 ... @V305132 01726000
  1704. DC AL4(ERR22P) IF NO LUCK, EXIT "GRACEFULLY". @V305132 01727000
  1705. L R1,PPEND NOW GET PPEND @V305132 01728000
  1706. DROP R5 @V305132 01729000
  1707. CDLOAD02 LA R1,1(,R1) PPEND+1 = ADDRESS OF ANCHOR TABLE@V305132 01730000
  1708. USING ANCHSECT,R1 REFERENCE THE ANCHTAB DSECT, @V305132 01731000
  1709. L R0,ANCHENDA POINT TO END OF ANCHOR TABLE, @V305132 01732000
  1710. SR R15,R15 CLEAR A REGISTER, @V305132 01733000
  1711. LA R5,ANCHPHNM POINT TO THE FIRST ENTRY POINT @V305132 01734000
  1712. DROP R1 NOW SEARCH FOR AN EMPTY SLOT: @V305132 01735000
  1713. CDLOAD03 CL R15,0(,R5) EMPTY SLOT FOUND ? @V305132 01736000
  1714. BE CDLOAD04 YES - GOOD SHOW. @V305132 01737000
  1715. LA R5,ANCHLENG(,R5) NO, ADVANCE TO NEXT SLOT, @V305132 01738000
  1716. CR R5,R0 CHECK AGAINST ENDING ADDRESS, @V305132 01739000
  1717. BL CDLOAD03 IF NOT EXCEEDED, THERE'S HOPE. @V305132 01740000
  1718. B ERR22P IF NONE LEFT, GIVE UP (FOR NOW). @V305132 01741000
  1719. * 01742000
  1720. * EMPTY SLOT FOUND - FILL IN THE ANCHOR-TABLE ENTRY (AS NEEDED): 01743000
  1721. * 01744000
  1722. USING ANCHPHNM,R5 REF 20-BYTE ANCHOR-TABLE ENTRY: @V305132 01745000
  1723. CDLOAD04 MVC ANCHPHNM(8),0(R2) MOVE THE PHASE NAME, @V305132 01746000
  1724. ST R6,ANCHLDPT THE LOAD POINT, @V305132 01747000
  1725. ST R3,ANCHENTP THE ENTRY POINT, @V305132 01748000
  1726. ST R4,ANCHPHLN-1 THE LENGTH OF THE PHASE @V305132 01749000
  1727. MVI ANCHSTSW,ANCHINST AND SET THE STATUS SWITCH @V305132 01750000
  1728. * 01751000
  1729. * CDLOAD SUCCESSFUL, RETURN THE "ANSWERS" TO THE CALLER: 01752000
  1730. * 01753000
  1731. SVC65OK LM R0,R2,ANCHLDPT GET ANCHLDPT,ANCHENTP,&ANCHPHLN @V305132 01754000
  1732. DROP R5 AND ... @V305132 01755000
  1733. SVC65STR LA R2,0(,R2) STRIP STATUS BYTE FROM HI END @V305132 01756000
  1734. STM R0,R1,EGPR0 RETN LOADPT & ENTRY PT IN R0/R1, @V305132 01757000
  1735. ST R2,EGPR14 AND LENGTH IN CALLER'S R14 @V305132 01758000
  1736. SR R15,R15 CLEAR RETURN-CODE TO = SUCCESS @V305132 01759000
  1737. * FINISH UP AND RETURN FROM CDLOAD: 01760000
  1738. SVC65RTN ST R15,EGPR15 STORE RETURN-CODE IN CALLER'S R15@V305132 01761000
  1739. B DOSRET AND RETURN TO CALLER OF CDLOAD. @V305132 01762000
  1740. EJECT 01763000
  1741. ERR22P LR R0,R4 SIZE OF GETVIS'D AREA INTO R0, @V305132 01764000
  1742. LR R1,R6 AND ADDRESS INTO R1, @V305132 01765000
  1743. BAL R11,FREVISUB GIVE BACK AREA (WE WON'T NEED IT)@V305132 01766000
  1744. * NOTE R6 IS "LOST"; CONTINUE TO ERR22: 01767000
  1745. ERR22 LA R15,ERROR22 ERROR 22 (X'16') MEANS NOT FOUND @V305132 01768000
  1746. B SVC65RTN THE GIVEN PHASE - GIVE UP. @V305132 01769000
  1747. SPACE 01770000
  1748. CDIKQLAB LR R3,R0 YES - GET LOAD POINT @V305132 01771000
  1749. LTR R4,R2 AND LENGTH @V305132 01772000
  1750. BP CDAR43 MAKE SURE POSITIVE @V305132 01773000
  1751. LA R4,CON2048 IF NOT, GET KNOWN (SAFE) LENGTH @V305132 01774000
  1752. CDAR43 AR R4,R3 END = BEGINNING PLUS LENGTH @V305132 01775000
  1753. STM R3,R4,ADIKQLAB STORE CURRENT VALUES @V305132 01776000
  1754. B SVC65STR AND GO RETURN ANSWERS TO CALLER. @V305132 01777000
  1755. SPACE 1 01778000
  1756. CDIKQLAS LR R4,R2 GET LENGTH OF PHASE, @VM03158 01779000
  1757. LR R2,R3 POINTER TO PHASE NAME, @VM03158 01780000
  1758. LR R3,R1 PHASE ENTRY POINT, @VM03158 01781000
  1759. LR R6,R3 PHASE LOAD POINT (SAME AS E.P.), @VM03158 01782000
  1760. L R1,ABGCOM REFERENCE BGCOM @VM03158 01783000
  1761. USING BGCOM,R1 @VM03158 01784000
  1762. ICM R1,15,PPEND DO WE HAVE AN ANCHOR-TABLE ? @VM03158 01785000
  1763. BZ CDLOAD0X NO - GO BUILD ANCHOR TABLE ENTRY.@VM03158 01786000
  1764. LA R0,1(,R1) PPEND+1 INTO R0, @VM03158 01787000
  1765. LR R1,R2 PHASE NAME POINTER INTO R1 @VM03158 01788000
  1766. BAL R14,SRCHANCH SEARCH ANCHOR-TABLE FOR MATCH @VM03158 01789000
  1767. BZ CDLOADOK SUCCESS - LOAD REGS. AND EXIT @VM03158 01790000
  1768. B CDLOAD0X IF NOT, BUILD ANCHOR TABLE ENTRY.@VM03158 01791000
  1769. DROP R1 @VM03158 01792000
  1770. SPACE 01793000
  1771. CDLOADOK EQU * SUCCESS ON INIT CALL TO SRCHANCH @V305132 01794000
  1772. LR R5,R0 A (ANCHOR-TABLE-ENTRY) INTO R5, @V305132 01795000
  1773. B SVC65OK GO LOAD & STORE REGS, THEN EXIT @V305132 01796000
  1774. EJECT 01797000
  1775. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01798000
  1776. * * 01799000
  1777. * SRCHANCH = INTERNAL SUBROUTINE TO SEARCH AN ANCHOR TABLE * 01800000
  1778. * * 01801000
  1779. * ENTRY CONDITIONS: * 01802000
  1780. * R0 = ADDRESS OF ANCHOR TABLE (IN "ANCHTAB" FORMAT) * 01803000
  1781. * R1 = ADDRESS OF PHASE-NAME TO BE SEARCHED FOR * 01804000
  1782. * R14 = RETURN REGISTER * 01805000
  1783. * EXIT CONDITIONS: * 01806000
  1784. * R1 = UNCHANGED (IN ANY CASE); * 01807000
  1785. * ENTRY FOUND: * 01808000
  1786. * R0 = ADDRESS OF ANCHOR-TABLE-ENTRY * 01809000
  1787. * R15 = 0 * 01810000
  1788. * CONDITION-CODE = 0 * 01811000
  1789. * ENTRY NOT FOUND: * 01812000
  1790. * R0 = SCRATCH VALUE * 01813000
  1791. * R15 = 1 * 01814000
  1792. * CONDITION-CODE = NONZERO * 01815000
  1793. * * 01816000
  1794. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01817000
  1795. SPACE 1 01818000
  1796. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01819000
  1797. SPACE 1 01820000
  1798. SRCHANCH LTR R15,R0 PUT A(ANCHOR-TABLE) IN USABLE REG@V305132 01821000
  1799. BNP SRCHNG NO GOOD IF R0 NOT > 0. @V305132 01822000
  1800. USING ANCHSECT,R15 OK - REFERENCE ANCHOR TABLE @V305132 01823000
  1801. L R0,ANCHENDA END-ADDR INTO R0 FOR ENDING-TEST @V305132 01824000
  1802. LA R15,ANCHPHNM AND PT TO 1ST ANCHOR-TABLE ENTRY @V305132 01825000
  1803. USING ANCHPHNM,R15 REFERENCE ONE ANCHOR-TABLE-ENTRY @V305132 01826000
  1804. SRCHLOOP CLC 0(8,R15),0(R1) DESIRED PHASE-NAME FOUND ? @V305132 01827000
  1805. BE SRCHOK YES-GOOD SHOW-LOAD R0 AND EXIT. @V305132 01828000
  1806. LA R15,ANCHLENG(,R15) NO, ADVANCE TO NEXT ENTRY, @V305132 01829000
  1807. CR R15,R0 HAVE WE EXHAUSTED THE TABLE ? @V305132 01830000
  1808. BL SRCHLOOP NO - KEEP LOOKING. @V305132 01831000
  1809. DROP R15 YES - GIVE UP: @V305132 01832000
  1810. * MATCHING ANCHOR-TABLE-ENTRY WAS NOT FOUND: 01833000
  1811. SRCHNG LA R15,CON1 NO GOOD - R15=1 PER SPECS @V305132 01834000
  1812. LTR R15,R15 SET CONDITION CODE, @V305132 01835000
  1813. BR R14 AND RETURN. @V305132 01836000
  1814. SPACE 01837000
  1815. * MATCHING ANCHOR-TABLE-ENTRY WAS FOUND: 01838000
  1816. SRCHOK LR R0,R15 ADDR OF ANCHOR-TABLE ENTRY TO R0,@V305132 01839000
  1817. SR R15,R15 CLEAR R15 AND CONDITION CODE, @V305132 01840000
  1818. BR R14 AND RETURN. @V305132 01841000
  1819. EJECT 01842000
  1820. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01843000
  1821. * * 01844000
  1822. * ERROR MESSAGES * 01845000
  1823. * * 01846000
  1824. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01847000
  1825. SPACE 1 01848000
  1826. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01849000
  1827. SPACE 1 01850000
  1828. ERR01E DMSERR NUM=91,LET=E,TEXT='SAVEAREA ADDRESS IN PARTITION PIB *01851000
  1829. NOT EQUIVALENT TO LTA SAVE ADDRESS' @V305066 01852000
  1830. LA R15,RC100 MESSAGE RETURN CODE @V305066 01853000
  1831. B CANCELS CANCEL THE SESSION @V305066 01854000
  1832. SPACE 2 01855000
  1833. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01856000
  1834. SPACE 1 01857000
  1835. ERR02E DMSERR NUM=92,LET=E,TEXT='STXIT SAVEAREA ADDRESS INVALID' 01858000
  1836. LA R15,RC100 MESSAGE RETURN CODE @V305066 01859000
  1837. B CANCELS CANCEL THE SESSION @V305066 01860000
  1838. EJECT 01861000
  1839. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01862000
  1840. SPACE 1 01863000
  1841. ERR03E DMSERR NUM=93,LET=E,TEXT='MVCOM MACRO ATTEMPTING TO ALTER OTHE*01864000
  1842. R THAN POSITION 12-23 OF COMREG' @V305066 01865000
  1843. LA R15,RC100 MESSAGE RETURN CODE @V305066 01866000
  1844. B CANCELS CANCEL THE SESSION @V305066 01867000
  1845. SPACE 2 01868000
  1846. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01869000
  1847. SPACE 1 01870000
  1848. ERR04E DMSERR NUM=94,LET=E,TEXT='FROM ADDRESS ON MVCOM MACRO INVALID' 01871000
  1849. LA R15,RC100 MESSAGE RETURN CODE @V305066 01872000
  1850. B CANCELS CANCEL THE SESSION @V305066 01873000
  1851. EJECT 01874000
  1852. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01875000
  1853. SPACE 1 01876000
  1854. ERR05E DMSERR NUM=95,LET=E,SUB=(HEX,(R2)),TEXT='INVALID ADDRESS ''...*01877000
  1855. .....''' @V305066 01878000
  1856. LA R15,RC100 MESSAGE RETURN CODE @V305066 01879000
  1857. B CANCELS CANCEL THE SESSION @V305066 01880000
  1858. SPACE 2 01881000
  1859. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01882000
  1860. SPACE 1 01883000
  1861. ERR06E DMSERR NUM=04,LET=E,SUB=(CHARA,(R2)), @V305001*01884000
  1862. TEXT='PHASE ''........'' NOT FOUND' @V305001 01885000
  1863. LA R0,ABEND22 DOS/VS ABEND CODE @V305001 01886000
  1864. LA R15,RC28 MESSAGE RETURN CODE @V305001 01887000
  1865. B BABEND CALL $$BABEND @V305001 01888000
  1866. SPACE 1 01889000
  1867. VSRLIST DC CL8'DMSVSR' FOR VSAM CLEANUP AND RELEASE @V305106 01890000
  1868. DC 8X'FF' @V305106 01891000
  1869. EJECT 01892000
  1870. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01893000
  1871. SPACE 01894000
  1872. NOVSAMS EQU * @V305106 01895000
  1873. DMSERR NUM=413,LET=S, @V305106*01896000
  1874. TEXT='STORAGE NOT INITIALIZED FOR VSAM PROCESSING' 01897000
  1875. LA R15,RC104 @V305106 01898000
  1876. B CANCELS NOW CANCEL THE JOB @V305106 01899000
  1877. SPACE 1 01900000
  1878. ERR140S DMSERR NUM=140,LET=S,SUB=(CHARA,(R2)),TEXT='......... MACRO NO*01901000
  1879. T SUPPORTED' @V305001 01902000
  1880. LA R15,RC100 MESSAGE RETURN CODE @V305001 01903000
  1881. B CANCELS CANCEL THE ROUTINE @V305001 01904000
  1882. EJECT 01905000
  1883. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01906000
  1884. * * 01907000
  1885. * RUNMODE .. SVC 66 .. RETURN R1 = 0 INDICATING ISSUING * 01908000
  1886. * PROGRAM RUNNING IN VIRTUAL MODE * 01909000
  1887. * * 01910000
  1888. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01911000
  1889. SPACE 1 01912000
  1890. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305066 01913000
  1891. SPACE 1 01914000
  1892. RUNMODE SR R1,R1 ZERO REGISTER 1 @V305066 01915000
  1893. ST R1,EGPR1 RETURN R1 = 0 TO USER @V305066 01916000
  1894. B DOSRET GO TO EXIT WITH R15 = 0 @V305066 01917000
  1895. SPACE 2 01918000
  1896. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01919000
  1897. * * 01920000
  1898. * DOSNOOP = SVC'S TO BE HANDLED AS A "NO-OP" * 01921000
  1899. * * 01922000
  1900. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01923000
  1901. SPACE 1 01924000
  1902. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 01925000
  1903. SPACE 1 01926000
  1904. DOSNOOP SR R0,R0 HERE TO RETURN R0 = 0 TO CALLER @V305132 01927000
  1905. ST R0,EGPR0 ... @V305132 01928000
  1906. SPACE 2 01929000
  1907. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01930000
  1908. * * 01931000
  1909. * RETURN TO CMS * 01932000
  1910. * * 01933000
  1911. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01934000
  1912. SPACE 1 01935000
  1913. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01936000
  1914. SPACE 1 01937000
  1915. DOSRET DS 0H CLEAR R15 AND RETURN: @V305001 01938000
  1916. SR R15,R15 ZERO ERROR CODE FOR CMS @V305001 01939000
  1917. DOSRET2 L R14,OSTEMP RESTORE RETURN REGISTER, @V305001 01940000
  1918. BR R14 RETURN TO CMS @V305001 01941000
  1919. EJECT 01942000
  1920. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01943000
  1921. * * 01944000
  1922. * CMS/DOS TABLE OF SEGMENT RESIDENT ROUTINES * 01945000
  1923. * * 01946000
  1924. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01947000
  1925. SPACE 1 01948000
  1926. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01949000
  1927. SPACE 1 01950000
  1928. DCSSTAB DS 0F TABLE OF ROUTINES IN DOS DCSS @V305001 01951000
  1929. DC AL4(DCSSEND) END ADDRESS OF TABLE @V305001 01952000
  1930. DC CL8'$$BOPEN',V(DMSBOP) @V305001 01953000
  1931. DC CL8'$$BOPNLB',V(DMSOPL) @V305001 01954000
  1932. DC CL8'$$BOPENR',V(DMSOR1) @V305001 01955000
  1933. DC CL8'$$BOPNR2',V(DMSOR2) @V305001 01956000
  1934. DC CL8'$$BOPNR3',V(DMSOR3) @V305001 01957000
  1935. DC CL8'$$BDUMP',V(DMSDMP) @V305001 01958000
  1936. DC CL8'$$BPDUMP',V(DMSPDP) @V305001 01959000
  1937. DC CL8'$$BJDUMP',V(DMSDMP) @V305001 01960000
  1938. DC CL8'$$BCLOSE',V(DMSCLS) @V305001 01961000
  1939. ABTERM DC CL8'$$BABEND',V(DMSBAB) @V305001 01962000
  1940. DC CL12'$$BOSDEV' @V305001 01963000
  1941. DC CL12'$$BCEOV1' @V305001 01964000
  1942. DCSSEND EQU * @V305001 01965000
  1943. EJECT 01966000
  1944. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01967000
  1945. * * 01968000
  1946. * CONSTANTS, PLISTS, AND EQUATES * 01969000
  1947. * * 01970000
  1948. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01971000
  1949. SPACE 1 01972000
  1950. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305001 01973000
  1951. SPACE 1 01974000
  1952. ERRMSG0 DC AL1(ENDMSG0-ERRMSG0-1) @V305001 01975000
  1953. DC C'UNSUPPORTED SVC ... (HEX ..) CALLED FROM ......' 01976000
  1954. ENDMSG0 DS 0X @V305001 01977000
  1955. SPACE 2 01978000
  1956. DS 0D @V305001 01979000
  1957. FCLEAR DC CL8'FILEDEF' COMMAND NAME @V305001 01980000
  1958. DC CL8'DOSLIB' DDNAME @V305001 01981000
  1959. DC CL8'CLEAR' FUNCTION @V305001 01982000
  1960. FENCE8 DC 8X'FF' 8-BYTE FENCE @V305001 01983000
  1961. SPACE 2 01984000
  1962. FEOVD DC CL9'FEOVD ' @V305001 01985000
  1963. SEOV DC CL5'SEOV/' @V305001 01986000
  1964. FEOV DC CL4'FEOV' @V305001 01987000
  1965. BOSDEV DC CL8'$$BOSDEV' @V305066 01988000
  1966. BCEOV1 DC CL8'$$BCEOV1' @V305066 01989000
  1967. BEOJ4 DC CL8'$$BEOJ4' @V305066 01990000
  1968. IKQVDCN DC CL8'IKQVDCN' @V305066 01991000
  1969. NONAME DC CL8'NO NAME' DEFAULT JOBNAME @V305066 01992000
  1970. IDC DC CL3'IDC' @V305066 01993000
  1971. SYS DC CL3'SYS' @V305066 01994000
  1972. IKQV DC CL4'IKQV' @V305066 01995000
  1973. IKQVLAB DC CL8'IKQVLAB' @V305066 01996000
  1974. IKQVLASF DC CL8'IKQVLASF' @VM03158 01997000
  1975. DMSSMNAT DC CL8'DMSSMNAT' @V305066 01998000
  1976. BTRANS DC CL8'$$BOMSG7' @VM03230 01999000
  1977. SPACE 2 02000000
  1978. ONE DC H'1' @V305001 02001000
  1979. TWO DC H'2' @V305001 02002000
  1980. THREE DC H'3' @V305001 02003000
  1981. FOUR DC H'4' @VM03230 02004000
  1982. SEVEN DC H'7' @V305001 02005000
  1983. EIGHT DC H'8' @V305001 02006000
  1984. NINE DC H'9' @V305001 02007000
  1985. ELEVEN DC H'11' @V305001 02008000
  1986. TWELVE DC H'12' @V305001 02009000
  1987. TWENTY4 DC H'24' @V305001 02010000
  1988. H255 DC H'255' MAX. CMS RETCODE @V305066 02011000
  1989. H100 DC H'100' @V305001 02012000
  1990. H8192 DC H'8192' @V305001 02013000
  1991. ADD1 DC F'1' @V305066 02014000
  1992. CON4096 DC F'40960000' TEN THOUSAND (TIMES 4096) @V305066 02015000
  1993. F127 DC F'127' @V305001 02016000
  1994. MASKB DC X'00FFFFF8' @VA06270 02017000
  1995. TWFRTMUS DC XL4'018B8200' 24 HRS IN TIMER UNITS @VA09246 02017500
  1996. * 02018000
  1997. * VARIOUS EQUATES: 02019000
  1998. * 02020000
  1999. XFF EQU X'FF' @V305001 02021000
  2000. JC59OFF EQU X'FB' @V305001 02022000
  2001. M7 EQU B'0111' FOR CLM/ICM/STCM USE-LOW 3 BYTES @V305001 02023000
  2002. M3 EQU B'0011' FOR CLM/ICM USE - LOW 2 BYTES @V305001 02024000
  2003. M14 EQU B'1110' FOR CLM/ICM/STCM USE-HI 3 BYTES @V305001 02025000
  2004. READY EQU X'83' IND TASK READY TO RUN (IN PIBTAB)@V305001 02026000
  2005. ABEND25 EQU X'25' ERROR CODE PASSED TO $$BABEND @V305066 02027000
  2006. ABEND2B EQU X'2B' I/O ERROR ABEND @V305066 02028000
  2007. ABEND21 EQU X'21' ERROR CODE PASSED TO $$BABEND @V305066 02029000
  2008. ABEND22 EQU X'22' ERROR CODE PASSED TO $$BABEND @V305066 02030000
  2009. ABEND1A EQU X'1A' ERROR CODE PASSED TO $$BABEND @V305066 02031000
  2010. RC100 EQU 100 @V305066 02032000
  2011. RC101 EQU 101 @V305066 02033000
  2012. RC8 EQU 8 @V305066 02034000
  2013. RC12 EQU 12 @V305066 02035000
  2014. RC28 EQU 28 @V305066 02036000
  2015. RESETSK EQU X'0F' RESET PSW STORAGE KEY @V305066 02037000
  2016. SVC2CALL EQU 2 @V305066 02038000
  2017. SVC4CALL EQU 4 @V305066 02039000
  2018. ANYPARM EQU X'00' ANY PARAMETERS @V305066 02040000
  2019. DEEQYES EQU X'02' DE = YES ON FETCH/LOAD @V305066 02041000
  2020. ELEMLEN EQU 34 LIST ELEMENT LENGTH @V305066 02042000
  2021. SVC2 EQU 2 SVC 2 @V305066 02043000
  2022. NEWGET EQU X'07' NEW GETIME MACRO @V305066 02044000
  2023. POSTECB EQU X'80' POST ECB AFTER EXCP @V305066 02045000
  2024. BXLE12 EQU 12 @V305066 02046000
  2025. PROG EQU X'01' PROGRAMMER LOGICAL UNIT @V305066 02047000
  2026. ZONE EQU X'F0' @V305066 02048000
  2027. KEYC0 EQU X'C0' @V305066 02049000
  2028. HEX07 EQU X'07' @V305066 02050000
  2029. COUNT1 EQU 1 @V305066 02051000
  2030. LENGTH EQU 11 LENGTH IN HALFWORDS @V305066 02052000
  2031. ERROR22 EQU 22 @V305066 02053000
  2032. CON2048 EQU 2048 @V305066 02054000
  2033. CON1 EQU 1 @V305066 02055000
  2034. HEX00 EQU X'00' @V305001 02056000
  2035. RURDISP EQU 32 DISP INTO RURTABL @V305001 02057000
  2036. NOOP EQU 255 @V305001 02058000
  2037. TYP3330 EQU X'04' @V305001 02059000
  2038. TYP3340 EQU X'08' @V305001 02060000
  2039. TYP3340B EQU X'0A' @V305001 02061000
  2040. TYP333B EQU X'05' 3330-11 DTF DEV TYPE @V505098 02062000
  2041. TYP3350 EQU X'07' 3350 DTF DEV TYPE @V505098 02063000
  2042. FINDSYS EQU 12 @V305001 02064000
  2043. RC104 EQU 104 @V305001 02065000
  2044. ERR12 EQU 12 @V305001 02066000
  2045. EJECT 02067000
  2046. LTORG @V305001 02068000
  2047. EJECT 02069000
  2048. DROP R12 ADDRESSABILITY REQUIREMENTS... @V305001 02070000
  2049. USING DMSDOS,R0,R1 FOR S-CONSTANTS IN VECTOR-TABLE @V305001 02071000
  2050. SPACE 02072000
  2051. SVCMAX DC A(SVCTABE) LENGTH OF TABLE (IN BYTES) @V305001 02073000
  2052. SVCTAB DS 0F VECTOR-TABLE FOR SUPPRTD DOS SVCS@V305001 02074000
  2053. JTBL 0,EXCP EXCP @V305001 02075000
  2054. JTBL 1,FETCHA FETCH ANY PHASE @V305001 02076000
  2055. JTBL 2,COMMON FETCH $$B TRANS @V305001 02077000
  2056. JTBL 3,NOTSUP FORCE DEQUEUE @V305001 02078000
  2057. JTBL 4,LOAD LOAD ANY PHASE @V305001 02079000
  2058. JTBL 5,MVCOM MODIFY SYSCOM @V305001 02080000
  2059. JTBL 6,CANCEL CANCEL PROBLEM PROGRAM @V305001 02081000
  2060. JTBL 7,WAIT WAIT FOR A CCB @V305001 02082000
  2061. JTBL 8,COMMON TRANSFER CONTROL TO PROGRAM @V305001 02083000
  2062. JTBL 9,COMMON RETURN TO $$B TRANSIENT @V305001 02084000
  2063. JTBL 10,DOSRET SET TIMER INTERVAL @V305001 02085000
  2064. JTBL 11,COMMON RETURN FROM $$B TRANSIENT @V305001 02086000
  2065. JTBL 12,SVC012 RESET SWITCHES IN BGCOM @V305001 02087000
  2066. JTBL 13,NOTSUP SET SWITCHES IN BGCOM @V305001 02088000
  2067. JTBL 14,EOJ TERMINATE JOB @V305001 02089000
  2068. JTBL 15,NOTSUP HEADQUEUE & EXECUTE CHANNEL PGM. @V305001 02090000
  2069. JTBL 16,STXITPC ESTABLISH LNKGE TO PC @V305001 02091000
  2070. JTBL 17,EXITPC RETURN FROM USER'S PC @V305001 02092000
  2071. JTBL 18,DOSRET STXIT (IT) @V305001 02093000
  2072. JTBL 19,NOTSUP RETURN FROM USER'S IT @V305001 02094000
  2073. JTBL 20,DOSRET ESTABLISH LNKGE TO OC @V305001 02095000
  2074. JTBL 21,NOTSUP RETURN FROM USER'S OC @V305001 02096000
  2075. JTBL 22,DOSRET SEIZE (INTERRUPT ENABLE/DISABLE) @V305001 02097000
  2076. JTBL 23,NOTSUP LOAD PHASE HEADER @V305001 02098000
  2077. JTBL 24,DOSRET SET TIMER INTERVAL @V305001 02099000
  2078. JTBL 25,NOTSUP ISSUE HALT I/O @V305001 02100000
  2079. JTBL 26,VALADDR VALIDATE ADDRESS LIMITS @V305001 02101000
  2080. JTBL 27,NOTSUP SPECIAL HALT I/O @V305001 02102000
  2081. JTBL 28,NOTSUP RETURN FROM USER'S MR @V305001 02103000
  2082. JTBL 29,NOTSUP MULTIPLE WAITM SUPPORT @V305001 02104000
  2083. JTBL 30,NOTSUP WAIT FOR QTAM ELEMENT @V305001 02105000
  2084. JTBL 31,NOTSUP POST A QTAM ELEMENT @V305001 02106000
  2085. JTBL 32,NOTSUP RESERVED @V305001 02107000
  2086. JTBL 33,COMREG VERIFY ADDRESS OF BGCOMM @V305001 02108000
  2087. JTBL 34,GETIME PROVIDE TIME OF DAY @V305001 02109000
  2088. JTBL 35,DOSRET HOLD A TRACK @V305001 02110000
  2089. JTBL 36,DOSRET FREE A TRACK @V305001 02111000
  2090. JTBL 37,STXITAB ESTABLISH LNKGE TO AB @V305001 02112000
  2091. JTBL 38,NOTSUP INITIALIZE A SUBSTASK @V305001 02113000
  2092. JTBL 39,NOTSUP TERMINATE A SUBSTASK @V305001 02114000
  2093. JTBL 40,POST POST TASK EVENT @V305001 02115000
  2094. JTBL 41,DOSRET DEQUEUE A RESOURCE @V305001 02116000
  2095. JTBL 42,DOSRET ENQUEUE A RESOURCE @V305001 02117000
  2096. JTBL 43,NOTSUP RESERVED @V305001 02118000
  2097. JTBL 44,NOTSUP EXTERNAL UNIT CHECKS RECORD @V305001 02119000
  2098. JTBL 45,NOTSUP EMULATOR INTERFACE @V305001 02120000
  2099. JTBL 46,NOTSUP OLTEP IN SUPERVISOR STATE @V305001 02121000
  2100. JTBL 47,NOTSUP MULTIPLE WAITF SUPPORT @V305001 02122000
  2101. JTBL 48,NOTSUP FETCH A CRT TRANS @V305001 02123000
  2102. JTBL 49,NOTSUP RESERVED @V305001 02124000
  2103. EJECT 02125000
  2104. JTBL 50,LIOCS RESERVED FOR LIOCS @V305001 02126000
  2105. JTBL 51,NOTSUP RETURN PHASE HEADER @V305001 02127000
  2106. JTBL 52,DOSNOOP RETURN REMAINING TIMER INTERVAL @V305001 02128000
  2107. JTBL 53,NOTSUP RESERVED @V305001 02129000
  2108. JTBL 54,NOTSUP FREE REAL PAGE FRAMES @V305001 02130000
  2109. JTBL 55,NOTSUP GET REAL PAGE FRAMES @V305001 02131000
  2110. JTBL 56,NOTSUP GET/FREE PUB OF POWER DEVICE @V305001 02132000
  2111. JTBL 57,NOTSUP MAKE POWER DISPATCHABLE @V305001 02133000
  2112. JTBL 58,NOTSUP INT. BETWEEN JCL AND SUPVSOR @V305001 02134000
  2113. JTBL 59,NOTSUP INT. BETWEEN EOJ AND SUPVSOR @V305001 02135000
  2114. JTBL 60,NOTSUP EREP AND CRT I/O AREAS ADDR. @V305001 02136000
  2115. JTBL 61,GETVIS GET VIRTUAL STORAGE @V305001 02137000
  2116. JTBL 62,FREEVIS FREE VIRTUAL STORAGE @V305001 02138000
  2117. JTBL 63,SVC63 USE A RESOURCE @V305001 02139000
  2118. JTBL 64,SVC64 RELEASE A RESOURCE @V305001 02140000
  2119. JTBL 65,CDLOAD LOAD VSAM @V305001 02141000
  2120. JTBL 66,RUNMODE RUNMODE @V305001 02142000
  2121. JTBL 67,DOSRET PFIX, FIX PAGES IN REAL STORAGE @V305001 02143000
  2122. JTBL 68,DOSRET PFREE, FREE PAGES IN REAL STOR @V305001 02144000
  2123. JTBL 69,NOTSUP REALAD @V305001 02145000
  2124. JTBL 70,NOTSUP VIRTAD @V305001 02146000
  2125. JTBL 71,DOSRET SETPFA @V305001 02147000
  2126. JTBL 72,NOTSUP GETCBUF/FREECBUF @V305001 02148000
  2127. JTBL 73,NOTSUP SETAPP @V305001 02149000
  2128. JTBL 74,NOTSUP FIX PAGES IN REAL STOR FOR RESTRT@V305001 02150000
  2129. EJECT 02151000
  2130. JTBL 75,SECTVAL SECTVAL @V305001 02152000
  2131. JTBL 76,NOTSUP INIT. RECORD. OF RMSR IO ERROR @V305001 02153000
  2132. JTBL 77,NOTSUP TRANSCSW @V305001 02154000
  2133. JTBL 78,NOTSUP RESERVED @V305001 02155000
  2134. JTBL 79,NOTSUP RESERVED @V305001 02156000
  2135. JTBL 80,NOTSUP RESERVED @V305001 02157000
  2136. JTBL 81,NOTSUP RESERVED @V305001 02158000
  2137. JTBL 82,NOTSUP RESERVED @V305001 02159000
  2138. JTBL 83,NOTSUP RESERVED @V305001 02160000
  2139. JTBL 84,NOTSUP RESERVED @V305001 02161000
  2140. JTBL 85,DOSRET RELPAG @V305001 02162000
  2141. JTBL 86,DOSRET FCEPGOUT @V305001 02163000
  2142. JTBL 87,DOSRET PAGEIN @V305001 02164000
  2143. JTBL 88,NOTSUP RESERVED @V387274 02165000
  2144. JTBL 89,NOTSUP RESERVED @V387274 02166000
  2145. JTBL 90,NOTSUP RESERVED @V387274 02167000
  2146. JTBL 91,NOTSUP RESERVED @V387274 02168000
  2147. JTBL 92,NOTSUP RESERVED @V387274 02169000
  2148. JTBL 93,NOTSUP RESERVED @V387274 02170000
  2149. JTBL 94,NOTSUP RESERVED @V387274 02171000
  2150. JTBL 95,EXITAB EXIT AB @V387274 02172000
  2151. SVCTABE EQU *-SVCTAB LENGTH OF TABLE (IN BYTES). @V305001 02173000
  2152. SPACE 02174000
  2153. USING NUCON,R0 RESTORE NORMAL ADDRESSABILITY @V305001 02175000
  2154. USING DMSDOS,R12 ... @V305001 02176000
  2155. DROP R1 ... @V305001 02177000
  2156. EJECT 02178000
  2157. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02179000
  2158. * * 02180000
  2159. * "SECTVAL" = SVC 75 * 02181000
  2160. * * 02182000
  2161. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02183000
  2162. SPACE 1 02184000
  2163. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 02185000
  2164. SPACE 1 02186000
  2165. SECTVAL DS 0H COMPUTE DESIRED SECTOR VALUE: @V305132 02187000
  2166. BALR R11,0 ADDRESSABILITY IN CASE NEEDED @V305132 02188000
  2167. USING *,R11 ... @V305132 02189000
  2168. LA R4,PARM3330 SET R4 (DEFAULT) = 3330 PARM TABL@V305132 02190000
  2169. CLI EGPR1,TYP3330 BYTE 0 OF REG 1 = DEV TYPE CODE @V305132 02191000
  2170. BE SECTVAL1 = X'04' - IT'S A 3330 @V305132 02192000
  2171. CLI EGPR1,TYP333B IS DEV TYPE A 3330-11?? @V505098 02193000
  2172. BE SECTVAL1 YES, GO CAL. SECTOR VALUE @V505098 02194000
  2173. LA R4,PARM3350 SET UP 3350 SECTOR CONSTANTS @V505098 02195000
  2174. CLI EGPR1,TYP3350 IS DEV TYPE A 3350?? @V505098 02196000
  2175. BE SECTVAL1 YES, GO CAL. SECTOR VALUE @V505098 02197000
  2176. CLI EGPR1,TYP3340 NO - '08'/'09'/'0A' MEANS 3340...@V305132 02198000
  2177. BL SECTNG NO GOOD - SOMEBODY GOOFED. @V305132 02199000
  2178. CLI EGPR1,TYP3340B ... @V305132 02200000
  2179. BH SECTNG NO GOOD - SORRY ABOUT THAT. @V305132 02201000
  2180. LA R4,PARM3340 OK - IT'S A 3340 - SET R4. @V305132 02202000
  2181. SECTVAL1 SR R0,R0 CLEAR REGS FOR MULTIPLY, DIVIDE, @V305132 02203000
  2182. SR R2,R2 AND IC USE @V305132 02204000
  2183. SR R3,R3 ... @V305132 02205000
  2184. IC R2,EGPR0+2 GET 'K' FIELD = KEY LENGTH @V305132 02206000
  2185. IC R3,EGPR0+3 GET 'R' FIELD = RECORD NUMBER @V305132 02207000
  2186. LH R1,EGPR0 GET THE 2-BYTE 'DD' FIELD @V305132 02208000
  2187. LTR R1,R1 CK SIGN AFTER LH TO CHECK 1ST BIT@V305132 02209000
  2188. BM SECTVAR IF MINUS, MEANS VAR. LENGTH RECS @V305132 02210000
  2189. AL R1,8(,R4) ADD VALUE OF 135(3330)/167(3340) @V305132 02211000
  2190. BC 11,SECTNG ERR IF CC ¬= 1 (PLUS W/NO CARRY) @V305132 02212000
  2191. LTR R2,R2 KEY GIVEN ? @V305132 02213000
  2192. BZ SECTMULT NO - CONTINUE SHORTLY BELOW. @V305132 02214000
  2193. ALR R1,R2 YES - ADD KEY LENGTH, @V305132 02215000
  2194. BC 11,SECTNG ERR IF CC ¬= 1 (PLUS W/NO CARRY) @V305132 02216000
  2195. AL R1,12(,R4) PLUS ADDL ADJ'TR FOR NONZERO KEYS@V305132 02217000
  2196. BC 11,SECTNG ERR IF CC ¬= 1 (PLUS W/NO CARRY) @V305132 02218000
  2197. SECTMULT S R3,ADD1 SUBTRACT ONE FROM RECORD NUMBER, @V305132 02219000
  2198. BM SECTZERO IF IT WAS RCD R0, MAKE ANSWER=0. @V305132 02220000
  2199. MR R0,R3 OK - MULT R1 BY RCD NUMBER (-1) @V305132 02221000
  2200. LTR R0,R0 MAKE SURE NO RIDICULOUS PRODUCT @V305132 02222000
  2201. BNZ SECTNG ... @V305132 02223000
  2202. LTR R1,R1 ... @V305132 02224000
  2203. BM SECTNG ... @V305132 02225000
  2204. AL R1,4(,R4) ADD NUMTR CONSTANT OF 237 OR 353,@V305132 02226000
  2205. BC 4,SECTDIV CC SHOULD = 1 FOR PLUS W/NO CARRY@V305132 02227000
  2206. B SECTNG OTHERWISE WE'VE GOT FISHY ANSWER @V305132 02228000
  2207. SPACE 02229000
  2208. SECTVAR ICM R1,M3,EGPR0 FOR VAR LENGTH RCDS, GET NO. OF @V305132 02230000
  2209. N R1,=A(X'7FFF') BYTES USED ON TRACK UPTO CURR.RCD@V305132 02231000
  2210. SECTDIV D R0,0(,R4) DIV BY 105 (3330) OR 140 (3340) @V305132 02232000
  2211. * (REMAINDER NOW IN R0, QUOTIENT IN R1) 02233000
  2212. SECTCHEK CL R1,F127 IS CALCULATED ANSWER > 127? @V305132 02234000
  2213. BH SECTNG YES - USE NO-OP VALUE OF X'FF'. @V305132 02235000
  2214. SECTSTOR ST R1,EGPR0 STORE ANSWER IN CALLER'S GPR0, @V305132 02236000
  2215. B DOSRET AND RETURN TO CALLER. @V305132 02237000
  2216. SPACE 02238000
  2217. * INPUT PARAMETERS ARE FAULTY, OR CALCULATED ANSWER IS > 127: 02239000
  2218. SECTNG LA R1,NOOP USE NO-OP VALUE OF X'FF', @V305132 02240000
  2219. B SECTSTOR AND GO RETURN SAME TO CALLER. @V305132 02241000
  2220. SPACE 02242000
  2221. * RECORD NUMBER WAS 0: 02243000
  2222. SECTZERO SR R1,R1 USE VALUE OF 0, @V305132 02244000
  2223. B SECTSTOR AND GO RETURN SAME TO CALLER. @V305132 02245000
  2224. SPACE 02246000
  2225. * PARAMETERS FOR CALCULATING 3330 SECTOR NUMBERS: 02247000
  2226. PARM3330 DC F'105' 0 - DENOMINATOR @V305132 02248000
  2227. DC F'237' 4 - NUMERATOR CONSTANT @V305132 02249000
  2228. DC F'135' 8 - ADDITION CONSTANT IF KL = 0 @V305132 02250000
  2229. DC A(191-135) 12 - ALSO ADD THIS IF KL > 0 @V305132 02251000
  2230. SPACE 02252000
  2231. * PARAMETERS FOR CALCULATING 3340 SECTOR NUMBERS: 02253000
  2232. PARM3340 DC F'140' 0 - DENOMINATOR @V305132 02254000
  2233. DC F'353' 4 - NUMERATOR CONSTANT @V305132 02255000
  2234. DC F'167' 8 - ADDITION CONSTANT IF KL = 0 @V305132 02256000
  2235. DC A(242-167) 12 - ALSO ADD THIS IF KL > 0 @V305132 02257000
  2236. SPACE 02258000
  2237. * PARAMETERS FOR CALCULATING 3350 SECTOR NUMBERS 02259000
  2238. PARM3350 DC F'156' 0 - DENOMINATOR @V505098 02260000
  2239. DC F'389' 4 - NUMERATOR CONSTANT @V505098 02261000
  2240. DC F'185' 8 - ADDITION CONSTANT IF KL=0 @V505098 02262000
  2241. DC A(267-185) 12 - ALSO ADD THIS IF KL > 0 @V505098 02263000
  2242. SPACE 02264000
  2243. DROP R11 (THRU WITH LOCAL ADDRESSABILITY) @V305132 02265000
  2244. EJECT 02266000
  2245. * 02267000
  2246. * NECESSARY TO LOAD VSAM SEGMENT (E.G. TO DO A CALL FOR GENCB/MODCB): 02268000
  2247. * 02269000
  2248. LDVSAM DS 0F @V305132 02270000
  2249. USING LDVSAM,R11 TEMP. ADDRESSABILITY @V305132 02271000
  2250. L R3,ASYSNAMS GET A(SAVED SYS TABLE) @V305106 02272000
  2251. USING SYSNAMES,R3 AND MAP IT... @V305106 02273000
  2252. LA R4,CMSVSAM POINT TO SAVED VSAM NAME @V305106 02274000
  2253. LA R5,FINDSYS USE 'FINDSYS' CODE @V305132 02275000
  2254. DC X'83450064' FIND SAVED SYSTEM @V305132 02276000
  2255. BC 8,LOADED CC=0, ALREADY LOADED (STRANGE) @V305132 02277000
  2256. BC 4,LOADIT CC=1, EXISTS BUT NOT LOADED @V305132 02278000
  2257. BR R10 OTHER ERRORS--RETURN TO CALLER. @V305132 02279000
  2258. SPACE 1 02280000
  2259. LOADIT C R4,VMSIZE WILL IT OVERLAY USER'S VIRT MACH?@V305132 02281000
  2260. BL CDOVRLAY ERROR - SGMT WAS GEN'D INCORR. @V305132 02282000
  2261. LA R4,CMSVSAM POINT TO VSAM NAME AGAIN @V305106 02283000
  2262. DROP R3 @V305132 02284000
  2263. SR R5,R5 R5=0 FOR SHARED COPY @V305132 02285000
  2264. DC X'83450064' LOAD THE SHARED SYSTEM @V305132 02286000
  2265. BCR 7,R10 ANY ERROR - RETURN TO CALLER. @V305132 02287000
  2266. LOADED EQU * VSAM SEGMENT LOADED (ADDR IN R4) @V305132 02288000
  2267. C R4,VMSIZE WILL IT OVERLAY USER'S VIRT MACH?@V305132 02289000
  2268. BL CDOVRLAY ERROR - SEGT WAS GEN'D INCORR. @V305132 02290000
  2269. ST R4,AVSAMSYS OK-STOR "AVSAMSYS" ADDR(IN NUCON)@V305132 02291000
  2270. OI VSAMFLG1,VSAMRUN AND SIGNAL VSAM SYSTEM LOADED. @V305132 02292000
  2271. LR R3,R4 ADDRESS OF VSAM SEGMENT TO R3. @V305132 02293000
  2272. SR R4,R4 CC=0 (MEANS PHASE FOUND ON SEGT) @V305132 02294000
  2273. BR R10 RETURN TO CALLER. @V305132 02295000
  2274. EJECT 02296000
  2275. * 02297000
  2276. * ATTEMPT TO LOAD VSAM SEGMENT WOULD OVERLAY USER'S VIRTUAL MACHINE: 02298000
  2277. * VMSIZE HOLDS USERS VIRTUAL MACHINE SIZE 02299000
  2278. * VSAMNAME HOLDS NAME OF SEGMENT GENERATED INCORRECTLY 02300000
  2279. * R4 (BINARY NO.) HOLDS ADDRESS AT WHICH SEGMENT WAS GENERATED 02301000
  2280. SPACE 1 02302000
  2281. * NOTE: SUPPORT CODE FOR THIS SECTION = @V305132 02303000
  2282. SPACE 1 02304000
  2283. CDOVRLAY L R2,VMSIZE LOAD VMSIZE @V305132 02305000
  2284. L R3,ASYSNAMS GET A(SAVED SYS TABLE) @V305106 02306000
  2285. USING SYSNAMES,R3 AND MAP IT... @V305106 02307000
  2286. LA R3,CMSVSAM POINT TO SAVED VSAM NAME @V305106 02308000
  2287. DROP R3 @V305132 02309000
  2288. DMSERR MF=(E,'SYS'),LET=S,NUM=401,TEXTA=CDOVMSGL, @V305132X02310000
  2289. SUB=(HEX,(R2),CHARA,(R3),HEX,(R4)) @V305132 02311000
  2290. LA R15,RC104 RETURN ABEND CODE NUMBER 104 @V305132 02312000
  2291. TM VSAMFLG1,VSAMSERV IS AMSERV RUNNING ? @V305106 02313000
  2292. BO BABEND YES, THEN EXIT THROUGH STXIT @V305106 02314000
  2293. B CANCELS OTHERWISE CANCEL THE SESSION. @V305106 02315000
  2294. DROP R11 (THRU WITH LOCAL ADDRESSABILITY) @V305132 02316000
  2295. SPACE 02317000
  2296. CDOVMSGL DC AL1(L'CDOVRMSG) @V305132 02318000
  2297. CDOVRMSG DC C'V.M. SIZE (......) CANNOT EXCEED ''........'' START ADX02319000
  2298. DRESS (......)' @V305132 02320000
  2299. DS 0H @V305132 02321000
  2300. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02321030
  2301. * * 02321060
  2302. * SVC 26: VALIDATE ADDRESS LIMITS * 02321090
  2303. * R1 CONTAINS LOW ADDRESS * 02321120
  2304. * R2 CONTAINS HIGH ADDRESS * 02321150
  2305. * * 02321180
  2306. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02321210
  2307. SPACE 1 02321240
  2308. USING BGCOM,R5 @VA07500 02321270
  2309. VALADDR L R4,PPEND END PARTITION ADDRESS FROM BGCOM @VA07500 02321300
  2310. BALR R10,0 @VA07500 02321330
  2311. USING *,R10 @VA07500 02321360
  2312. LTR R1,R1 LOW ADDRESS MUST NOT BE NEGATIVE @VA07500 02321390
  2313. BNM TESTHIGH 0 OR POSITIVE, CHECK HIGH ADDRESS@VA07500 02321420
  2314. BADAD LR R2,R1 PREPARE TO ISSUE MESSAGE @VA07500 02321450
  2315. B ERR05E ISSUE ERROR MSG @VA07500 02321480
  2316. TESTHIGH LTR R2,R2 HIGH ADDRESS CANNOT BE NEGATIVE @VA07500 02321510
  2317. BM ERR05E ERROR IF IT IS @VA07500 02321540
  2318. CR R1,R4 LOW ADDRESS > PPEND @VA07500 02321570
  2319. BNH CHKR2 CHECK HIGH ADDRESS @VA12390 02321600
  2320. CL R1,MAINHIGH LOW ADDR > GETVIS @VA12390 02321610
  2321. BH BADAD ERROR IF IT IS @VA12390 02321620
  2322. CHKR2 EQU * @VA12390 02321630
  2323. CR R2,R4 HIGH ADDR > PPEND @VA12390 02321640
  2324. BNH DOSRET ADDRESS IS OKAY @VA12390 02321650
  2325. CL R2,MAINHIGH HIGH ADDR > GETVIS @VA12390 02321660
  2326. BNH DOSRET ADDRESS IS OKAY @VA12390 02321670
  2327. B ERR05E GO TO PRINT MESSAGE @VA07500 02321690
  2328. DROP R10 @VA07500 02321720
  2329. DROP R5 @VA07500 02321750
  2330. EJECT 02321780
  2331. EJECT 02322000
  2332. * GET BLOCK OF STORAGE 02323000
  2333. * (THIS CODE DELIBERATELY LIFTED FROM DMSSMN FOR COMPATIBILITY) 02324000
  2334. * 02325000
  2335. * R0 = SIZE OF FREE AREA DESIRED 02326000
  2336. * R14 = RETURN REGISTER 02327000
  2337. * NOTE: R7 THRU R9 USED FOR SCRATCH (NOT PRESERVED) 02328000
  2338. USING GETBLK,R10 ADDR'BILITY PROVIDED BY CALLER @V305132 02329000
  2339. USING NUCON,R0 MUST BE STILL IN EFFECT @V305132 02330000
  2340. GETBLK LA R8,MAINLIST POINT TO FIRST BLOCK POINTER @V305132 02331000
  2341. AH R0,SEVEN ROUND BLOCK LENGTH TO @VA06270 02332000
  2342. N R0,MASKB DOUBLEWORD BOUNDARY @VA06270 02333000
  2343. GTNXTG LR R9,R8 UPDATE CHAIN PTR FOR "NEXT" BLOCK@V305132 02334000
  2344. L R8,0(,R9) GET BLOCK ADDRESS @V305132 02335000
  2345. LA R8,0(,R8) REMOVE HIGH ORDER BYTE @V305132 02336000
  2346. LTR R8,R8 IS THIS THE LAST BLOCK IN CHAIN? @V305132 02337000
  2347. BZ CKHIMAIN YES - TRY GET BLOCK FROM "HIMAIN"@V305132 02338000
  2348. CL R0,FRELEN(,R8) TEST SIZE OF FREE AREA @V305132 02339000
  2349. BH GTNXTG IF NOT BIG ENOUGH GET NEXT BLOCK @V305132 02340000
  2350. LR R1,R8 SAVE ADDRESS OF FREE AREA @V305132 02341000
  2351. BE ELIMBLK IF COMPLET AREA USED ELIM. BLOCK @V305132 02342000
  2352. LR R7,R8 A(START OF FREE BLOCK) @V305132 02343000
  2353. ALR R7,R0 + L'DESIRED AMOUNT @V305132 02344000
  2354. ST R7,0(,R9) = A(START OF REMAINING BLOCK) @V305132 02345000
  2355. L R15,0(,R8) RESET CHAIN OF POINTERS @V305132 02346000
  2356. ST R15,0(,R7) ... @V305132 02347000
  2357. L R8,FRELEN(,R8) ADJ FOR AMT USED FROM THIS BLOCK @V305132 02348000
  2358. SLR R8,R0 L'FREE BLOCK - L'DESIRED AMOUNT @V305132 02349000
  2359. ST R8,FRELEN(,R7) = L'REMAINING FREE BLOCK @V305132 02350000
  2360. B GETEXIT ZERO OUT BLOCK AND GET OUT @V305132 02351000
  2361. SPACE 02352000
  2362. ELIMBLK EQU * WHOLE BLOCK WAS GIVEN UP. @V305132 02353000
  2363. L R15,0(,R8) REMOVE BLOCK FROM CHAIN, @V305132 02354000
  2364. ST R15,0(,R9) BY UPDATING BACK POINTERS @V305132 02355000
  2365. B GETEXIT ZERO OUT BLOCK AND GET OUT @V305132 02356000
  2366. SPACE 02357000
  2367. CKHIMAIN L R1,MAINHIGH @V305132 02358000
  2368. LR R7,R1 A(PROPOSED BLOCK) = A(HIMAIN) @V305132 02359000
  2369. AR R7,R0 + L'DESIRED BLOCK @V305132 02360000
  2370. AH R7,H8192 KEEP 2 PAGES FOR EXTENTS @V305132 02361000
  2371. CL R7,FREELOWE A(PROP AREA) > A(EXTENDED AREA)? @V305132 02362000
  2372. BH NOBLOCK YES - NO BLOCK AVAILABLE @V305132 02363000
  2373. SH R7,H8192 SAVE 2 PAGES @V305132 02364000
  2374. ST R7,MAINHIGH RESET HIMAIN POINTER @V305132 02365000
  2375. GETEXIT SR R15,R15 ZERO OUT THE RETURN CODE. @V305132 02366000
  2376. BR R14 RETURN (W/ADDR OF BLOCK IN R1). @V305132 02367000
  2377. SPACE 2 02368000
  2378. NOBLOCK EQU * COULDN'T OBTAIN THE STORAGE ... @V305132 02369000
  2379. L R1,=A(X'FFFFFF') MAKE SURE R1 IS AN INVAL ADDR @V305132 02370000
  2380. * (SO USER CAN'T USE INADVERTENTLY) 02371000
  2381. LA R15,ERR12 ERROR 12 (X'0C') MEANS "NO GOTS" @V305132 02372000
  2382. LTR R15,R15 ENSURE NON-ZERO CONDITION CODE, @V305132 02373000
  2383. BR R14 AND PUNT OUT OF BOUNDS. @V305132 02374000
  2384. EJECT 02375000
  2385. * RETURN A FREED BLOCK(FB) TO THE CHAIN OF AVAILABLE CORE BLOCKS(CB) 02376000
  2386. * (THIS CODE DELIBERATELY LIFTED FROM DMSSMN FOR COMPATIBILITY) 02377000
  2387. * 02378000
  2388. * ENTRY: C(R0)=SIZE OF FB. C(R1)=V(FB) 02379000
  2389. * R14 = RETURN REGISTER 02380000
  2390. * NOTE: R6 THRU R9 USED FOR SCRATCH (NOT PRESERVED) 02381000
  2391. * 02382000
  2392. * "LOWER" MEANS "TOWARD CORE LOCATION ZERO." 02383000
  2393. USING GETBLK,R10 (SIC) ALSO IN EFFECT FOR "FREBLK"@V305132 02384000
  2394. USING NUCON,R0 (STILL IN EFFECT) @V305132 02385000
  2395. FREBLK LTR R0,R0 A VALID BLOCK LENGTH SPECIFIED? @V305132 02386000
  2396. BNP FREBLKNG NO - ERROR RETURN @V305132 02387000
  2397. CL R1,MAINSTRT VERIFY FB NOT BELOW FIRST CB @V305132 02388000
  2398. BL FREBLKNG LOWER - ERROR RETURN. @V305132 02389000
  2399. LA R9,MAINLIST GET FIRST BLOCK POINTER @V305132 02390000
  2400. AH R0,SEVEN ROUND BLOCK LENGTH TO @VA06270 02391000
  2401. N R0,MASKB DOUBLEWORD BOUNDARY @VA06270 02392000
  2402. NEXTF L R8,0(,R9) GET BLOCK ADDRESS @V305132 02393000
  2403. LA R8,0(,R8) REMOVE HIGH ORDER BYTE @V305132 02394000
  2404. LTR R6,R8 VER. THAT THIS CORE BLOCK EXISTS @V305132 02395000
  2405. BZ CKMAIN NO BLOCK - END OF CHAIN. @V305132 02396000
  2406. CLR R1,R8 EXAMINE V(FB) RELATIVE TO V(CB) @V305132 02397000
  2407. BNH FRABVE CB HIGHER THAN FB @V305132 02398000
  2408. AL R6,FRELEN(,R8) CB < FB - GET V(END IF CB) @V305132 02399000
  2409. CLR R1,R6 COMP A(FB) TO A(END OF CB) @V305132 02400000
  2410. BE FRBLOW FREED BLOCK CONTIG. AT END OF CB @V305132 02401000
  2411. BL FREBLKNG ERR - FREED BLCK IN MIDDLE OF CB @V305132 02402000
  2412. LR R9,R8 FREE AREA ¬ RELATED TO THIS AREA @V305132 02403000
  2413. B NEXTF TRY AGAIN @V305132 02404000
  2414. SPACE 02405000
  2415. CKMAIN EQU * FB MUST BR RELATIVE TO LAST CB @V305132 02406000
  2416. LR R7,R1 GET V(LOCATION OF FREED BLOCK) @V305132 02407000
  2417. ALR R7,R0 ADDRESS + SIZE @V305132 02408000
  2418. CL R7,MAINHIGH VERIFY END OF FB IS < HIMAIN @V305132 02409000
  2419. BH FREBLKNG ERROR - VERY FISHY @V305132 02410000
  2420. BL ADDBLK FREED BLCK SOMEWHERE W/I MAINHIGH@V305132 02411000
  2421. ST R1,MAINHIGH FB CONTIG. TO HIMAIN-RESET HIMAIN@V305132 02412000
  2422. SR R15,R15 CLEAR RETURN CODE, @V305132 02413000
  2423. BR R14 AND RETURN TO CALLER. @V305132 02414000
  2424. SPACE 02415000
  2425. FRABVE LR R6,R1 FIND END OF NEW AREA @V305132 02416000
  2426. ALR R6,R0 A(FB)+L'FB = A(END OF FREED BLK) @V305132 02417000
  2427. CLR R6,R8 A(END OF FRED BLOCK) <> A(CB) @V305132 02418000
  2428. BH FREBLKNG @V305132 02419000
  2429. BL ADDBLK ADD NEW AREA ABOVE THIS AREA @V305132 02420000
  2430. ST R1,0(,R9) NEW AREA CONTIGUOUS TO THIS AREA @V305132 02421000
  2431. L R7,FRELEN(,R8) MODIFY THIS BLOCK @V305132 02422000
  2432. ALR R7,R0 REFLECT ADDED FREED BLOCK AMOUNT @V305132 02423000
  2433. ST R7,FRELEN(,R1) @V305132 02424000
  2434. L R15,0(,R8) MOVE POINTER TO NEW @V305132 02425000
  2435. ST R15,0(,R1) BEGINNING OF BLOCK @V305132 02426000
  2436. SR R15,R15 CLEAR RETURN CODE, @V305132 02427000
  2437. BR R14 AND RETURN TO CALLER. @V305132 02428000
  2438. EJECT 02429000
  2439. ADDBLK EQU * CREATE ANOTHER CHAINED BLOCK. @V305132 02430000
  2440. ST R1,0(,R9) POINT TO FREED BLOCK @V305132 02431000
  2441. ST R8,0(,R1) SET CONTROL WORDS FOR NEW BLOCK. @V305132 02432000
  2442. ST R0,FRELEN(,R1) SET ADDR & SIZE OF THIS NEW BLK @V305132 02433000
  2443. SR R15,R15 CLEAR RETURN CODE, @V305132 02434000
  2444. BR R14 AND RETURN TO CALLER. @V305132 02435000
  2445. SPACE 02436000
  2446. FRBLOW EQU * FREED BLOCK IS HIGHER THAN ITS CB@V305132 02437000
  2447. L R7,FRELEN(,R8) L'CB @V305132 02438000
  2448. ALR R7,R0 + L'FB = SIZE OF TOTAL CORE BLOCK@V305132 02439000
  2449. L R15,0(,R8) GET A(NEXT BLOCK) @V305132 02440000
  2450. LR R6,R7 L'ENTIRE RETURNING CORE BLOCK @V305132 02441000
  2451. ALR R6,R8 + AA(CB) = A(END OF TOT CORE BLK)@V305132 02442000
  2452. LTR R15,R15 IS THERE ANOTHER BLOCK @V305132 02443000
  2453. BZ CMAIN NO - NEW FB LOWER THAN LAST BLOCK@V305132 02444000
  2454. CLR R6,R15 A(END OF CB)<> A(NEXT BLOCK) @V305132 02445000
  2455. BH FREBLKNG ERR--A(END OF TOT CB) > A(NXT BL)@V305132 02446000
  2456. BL KPBLK NEW AREA DOESN'T TOUCH NEXT BLK @V305132 02447000
  2457. MVC 0(4,R8),0(R15) TOTAL CB & NEXT BLK ARE CONTIG. @V305132 02448000
  2458. AL R7,FRELEN(,R15) INCLUDE L'NEXT CORE BLOCK @V305132 02449000
  2459. KPBLK ST R7,FRELEN(,R8) RESET LGTH OF CB TO INC FB & NXT @V305132 02450000
  2460. SR R15,R15 CLEAR RETURN CODE, @V305132 02451000
  2461. BR R14 AND RETURN TO CALLER. @V305132 02452000
  2462. SPACE 02453000
  2463. CMAIN CL R6,MAINHIGH COMP A(END OF BLOCK) TO MAINHIGH @V305132 02454000
  2464. BNE KPBLK NE - FB MUST BE WITHIN MAINHIGH @V305132 02455000
  2465. L R6,MAINHIGH VALUE OF MAINHIGH @V305132 02456000
  2466. SR R6,R7 - L'ENTIRE RETURNING BLOCK @V305132 02457000
  2467. ST R6,MAINHIGH RESET HIMAIN TO REFLECT FREED BLK@V305132 02458000
  2468. SR R15,R15 CLEAR RETURN CODE, @V305132 02459000
  2469. ST R15,0(,R9) ELIMINATE OLD BLOCK @V305132 02460000
  2470. BR R14 AND RETURN TO CALLER. @V305132 02461000
  2471. SPACE 1 02462000
  2472. FREBLKNG LA R15,CON1 ERROR IN BLOCK BEING RETURNED @V305132 02463000
  2473. LTR R15,R15 ENSURE NONZERO CONDITION CODE @V305132 02464000
  2474. BR R14 AND PUNT OVER THE GOAL LINE. @V305132 02465000
  2475. SPACE 02466000
  2476. FREPTR EQU 0 POINTER TO NEXT BLOCK (IF ANY) @V305132 02467000
  2477. FRELEN EQU 4 LENGTH OF THIS BLOCK @V305132 02468000
  2478. SPACE 02469000
  2479. DROP R10 THRU WITH LOCAL ADDRESSABILITY @V305132 02470000
  2480. EJECT 02470010
  2481. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02470020
  2482. * * 02470030
  2483. * "USE" = SVC 63 * 02470040
  2484. * LIMITED IMPLEMENTATION AS NEEDED FOR VSAM UNDER CMS * 02470050
  2485. * * 02470060
  2486. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02470070
  2487. SPACE 1 02470080
  2488. * NOTE: USES "RURTBL" (IN DMSNUC) OF THE FOLLOWING FORM: 02470090
  2489. * (1) 8 FULLWORDS SERVING AS COUNTERS FOR RESOURCE CODES 02470100
  2490. * (HALFWORD 2 BYTES BEYOND R1 GIVEN BY USER) OF 02470110
  2491. * THE FORM X'C000' TO X'C007' 02470120
  2492. * (2) 8 GROUPS OF 12 BYTES EACH FOR RESOURCE CODES OF X'E000' 02470130
  2493. * GIVEN BY CALLER, WHERE R0 POINTED TO AN 8-BYTE RESOURCE-NAME, 02470140
  2494. * THE 12 BYTES BEING IN THE FOLLOWING FORM: 02470150
  2495. * FIRST 4 BYTES: COUNTER 02470160
  2496. * NEXT 8 BYTES: 8-BYTE RESOURCE NAME 02470170
  2497. SPACE 2 02470180
  2498. SVC63 DS 0H "USE" - LIMITED IMPLEMENTATION: @VA07500 02470190
  2499. BALR R10,0 @VA07500 02470200
  2500. USING *,R10 ADDRESSABILITY @VA07500 02470210
  2501. L R3,SYSE000 LOOK FOR KEY OF 'E000' @VA07500 02470220
  2502. CLM R3,M3,2(R1) ... @VA07500 02470230
  2503. BE SVC63B IF = 'E000', HANDLE R0 ALSO. @VA07500 02470240
  2504. CLI 2(R1),KEYC0 IF NOT E000, MUST BE C0 @VA07500 02470250
  2505. BNE ERROR63 ERROR SOMEWHERE IF NOT. @VA07500 02470260
  2506. CLI 3(R1),HEX07 AND LAST BYTE MUST NOT EXCEED 07 @VA07500 02470270
  2507. BH ERROR63 ERROR SOMEWHERE IF IT DOES. @VA07500 02470280
  2508. SR R2,R2 CLEAR, @VA07500 02470290
  2509. IC R2,3(,R1) GET LAST 3 BITS OF RESOURCE CODE @VA07500 02470300
  2510. ALR R2,R2 "MULTIPLY BY 4" @VA07500 02470310
  2511. ALR R2,R2 ... @VA07500 02470320
  2512. A R2,ARURTBL FORM ADDRESS OF RUR-TABLE ENTRY @VA07500 02470330
  2513. SVC63A L R3,0(,R2) GET OLD VALUE FROM RUR-TABLE @VA07500 02470340
  2514. LA R4,1(,R3) PLUS ONE; @VA07500 02470350
  2515. ST R4,0(,R2) STORE INCREMENTED VALUE (COUNTER)@VA07500 02470360
  2516. LTR R0,R3 OLD VALUE INTO R0 AND SET C.C. @VA07500 02470370
  2517. BZ SVC63X IF 0, EXIT (WITH R0 = 0). @VA07500 02470380
  2518. LA R0,RC8 IF > 0, SET RETURN-CODE = 8 @VA07500 02470390
  2519. SVC63X ST R0,EGPR0 RETURN R0 VALUE TO THE USER @VA07500 02470400
  2520. B DOSRET AND GO EXIT. @VA07500 02470410
  2521. SPACE 02470420
  2522. SVC63B EQU * CODE WAS X'E000' ... @VA07500 02470430
  2523. LA R2,RURDISP FORM ADDRESS OF SECTION OF RURTBL@VA07500 02470440
  2524. A R2,ARURTBL CONTAINING E000 ENTRIES @VA07500 02470450
  2525. LR R3,R2 REMEMBER FOR LATER; @VA07500 02470460
  2526. L R1,EGPR0 REF 8-BYTE RESOURCE PER USER'S R0@VA07500 02470470
  2527. L R0,FENCE ENDING SENTINEL @VA07500 02470480
  2528. SVC63C CLC 4(8,R2),0(R1) DOES RESOURCE MATCH THAT IN TABLE@VA07500 02470490
  2529. BE SVC63A YES-GO HANDLE VIA GENL CASE LOGIC@VA07500 02470500
  2530. LA R2,12(,R2) NO - POINT TO NEXT 12-BYTE ENTRY,@VA07500 02470510
  2531. CL R0,0(,R2) HAVE WE HIT ENDING SENTINEL ? @VA07500 02470520
  2532. BNE SVC63C NOPE - KEEP LOOKING. @VA07500 02470530
  2533. LR R2,R3 START AT BEG'NG OF SECTION AGAIN @VA07500 02470540
  2534. SR R3,R3 AND LOOK FOR AN EMPTY SLOT: @VA07500 02470550
  2535. SVC63D CL R3,0(,R2) EMPTY SLOT FOUND ? @VA07500 02470560
  2536. BE SVC63E YES - GOOD SHOW. @VA07500 02470570
  2537. LA R2,12(,R2) NO - POINT TO NEXT 12-BYTE ENTRY,@VA07500 02470580
  2538. CL R0,0(,R2) HAVE WE HIT ENDING SENTINEL ? @VA07500 02470590
  2539. BNE SVC63D NOPE - KEEP LOOKING. @VA07500 02470600
  2540. B ERROR63 ERROR IF NOTHING LEFT IN RURTBL. @VA07500 02470610
  2541. SVC63E MVC 4(8,R2),0(R1) MOVE RESOURCE-NAME TO EMPTY SLOT,@VA07500 02470620
  2542. B SVC63A AND GO JOIN GENERAL-CASE HANDLER.@VA07500 02470630
  2543. SPACE 02470640
  2544. ERROR63 EQU * AN ERROR IN "USE" ... @VA07500 02470650
  2545. LA R0,RC12 VALUE OF 12 INDICATES A USE ERROR@VA07500 02470660
  2546. B SVC63X GO RETURN SAME TO CALLER & EXIT. @VA07500 02470670
  2547. DROP R10 @VA07500 02470680
  2548. EJECT 02470690
  2549. SPACE 2 02471000
  2550. * NOTE: NO MORE CODE BEYOND THIS POINT PLEASE. 02472000
  2551. EJECT 02473000
  2552. LTORG *** HERE ENDETH DMSDOS *** @V305132 02474000
  2553. ENTRY DOS$END *** SHOW END OF DMSDOS CODE *** @V305132 02475000
  2554. DOS$END DS 0C *** ENDOF DMSDOS CODE BEF "ORG" @V305132 02476000
  2555. SPACE 02477000
  2556. EJECT 02478000
  2557. NUCON @V305132 02479000
  2558. CMSAVE @V305132 02480000
  2559. BGCOM @V305132 02481000
  2560. SYSCOM @V305132 02482000
  2561. PIBTAB @V305132 02483000
  2562. DOSAVE @V305132 02484000
  2563. SPACE 2 02485000
  2564. SVUARA DSECT USER SAVE AREA @V305132 02486000
  2565. SVUPSW DS F FIRST HALF PSW @V305132 02487000
  2566. SVUPSW2 DS F SECOND HALF PSW @V305132 02488000
  2567. SVUR00 DS 9F REGISTERS 0-8 @V305132 02489000
  2568. SVUR09 DS 7F REGISTERS 9-15 @V305132 02490000
  2569. EJECT 02491000
  2570. FCHTAB @V305132 02492000
  2571. REGEQU @V305132 02493000
  2572. ANCHTAB @V305132 02494000
  2573. SPACE 02495000
  2574. SYSNAMES @V305132 02496000
  2575. FVS @VA05918 02497000
  2576. END 02498000