Table of Contents

DMSSAB Source

References

Source Listing

DMSSAB.ASSEMBLE.txt
  1. SAB TITLE 'DMSSAB (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * MODULE NAME: 00006000
  7. * 00007000
  8. * DMSSAB (SOABEND) 00008000
  9. * 00009000
  10. * FUNCTION: 00010000
  11. * 00011000
  12. * THE CMS SOABEND ROUTINE HANDLES OS ABEND MACROS. 00012000
  13. * 00013000
  14. * ATTRIBUTES: 00014000
  15. * 00015000
  16. * REENTRANT, NUCLEUS RESIDENT 00016000
  17. * 00017000
  18. * ENTRY POINTS: 00018000
  19. * 00019000
  20. * DMSSAB - SVC 13 00020000
  21. * EXIT CONDITIONS: 00021000
  22. * 00022000
  23. * CONTROL IS PASSED TO DMSABNUA. 00023000
  24. * 00024000
  25. * CALLS TO OTHER ROUTINES: 00025000
  26. * 00026000
  27. * DMSABNUA, GETMAIN, DMSKEY, STAE EXIT AND STAE RETRY ROUTINES 00027000
  28. * 00028000
  29. * EXTERNAL REFERENCES: 00029000
  30. * 00030000
  31. * NONE. 00031000
  32. * 00032000
  33. * TABLES/WORKAREAS: 00033000
  34. * 00034000
  35. * NONE. 00035000
  36. * 00036000
  37. * REGISTER USAGE: 00037000
  38. * 00038000
  39. * R15 - BASE REGISTER 00039000
  40. * R4 - STAE DSECT 00040000
  41. * R0-R3 - WORK 00041000
  42. * R5-R10 - WORK 00042000
  43. * R11 - PGMSECT DSECT 00043000
  44. * R13 - SAVE AREA 00044000
  45. * R14-R15 - WORK 00045000
  46. * 00046000
  47. * OPERATION: 00047000
  48. * 00048000
  49. * UPON ENTRY TO DMSSAB, A CHECK IS MADE TO DETERMINE IF 00049000
  50. * A STAE IS OUTSTANDING. IF SO, A WORKAREA 00050000
  51. * IS BUILT WITH THE PROPER REGISTERS IN IT AND CONTROL 00051000
  52. * IS PASSED TO THE STAE EXIT ROUTINE. CONTROL IS NEXT 00052000
  53. * PASSED TO A STAE RETRY ROUTINE IF ONE IS SPECIFIED. 00053000
  54. * IF A RETRY ROUTINE IS NOT SPECIFIED OR IF THE RETRY ROUTINE 00054000
  55. * RETURNS TO DMSSAB, CONTROL IS PASSED TO DMSABNUA. 00055000
  56. * IF WHEN CONTROL IS FIRST PASSED 00056000
  57. * TO DMSSAB, THERE ARE NO OUTSTANDING STAE REQUESTS, 00057000
  58. * CONTROL IS PASSED TO DMSABNUA. 00058000
  59. * 00059000
  60. * 00060000
  61. * 00061000
  62. *. 00062000
  63. EJECT 00063000
  64. DMSSAB START 0 00064000
  65. USING DMSSAB,R12 00065000
  66. USING NUCON,R0 00066000
  67. USING PGMSECT,R11 00067000
  68. USING SSAVE,R13 00068000
  69. TERMSTEP EQU X'40' STEP TERMINATION INDICATOR 00069000
  70. L R13,CURRSAVE 00070000
  71. L R11,APGMSECT GET PGMSECT ADDR 00071000
  72. STM R12,R14,SCBSAV12 SAVE REGS 12 TO 14 00072000
  73. LR R3,R1 PUT INPUT CODE IN R3 @VMQ3222 00073000
  74. SRL R3,24 SHIFT OUT COMPLETION CODE @VMQ3222 00074000
  75. C R3,=F'128' WAS DUMP SPECIFIED? @VMQ3222 00075000
  76. BNE NODUMP NO, SKIP DUMP @VMQ3222 00076000
  77. USING FCBSECT,R7 @VMQ3222 00077000
  78. L R7,FCBFIRST GET START OF FCB CHAIN @VMQ3222 00078000
  79. DUMP1 EQU * @VMQ3222 00079000
  80. LTR R7,R7 ANY MORE FCB'S? @VMQ3222 00080000
  81. BZ NODUMP NO, PROPER FCB NOT FOUND @VMQ3222 00081000
  82. CLC FCBDD(8),=C'SYSUDUMP' IS THIS SYSUDUMP FCB? @VMQ3222 00082000
  83. BE DOSNAP YES, GO TAKE SNAP @VMQ3222 00083000
  84. CLC FCBDD(8),=C'SYSABEND' IS THIS SYSABEND FCB? @VMQ3222 00084000
  85. BE DOSNAP YES, GO TAKE SNAP @VMQ3222 00085000
  86. L R7,0(,R7) GET NEXT FCB @VMQ3222 00086000
  87. B DUMP1 LOOP @VMQ3222 00087000
  88. DOSNAP EQU * @VMQ3222 00088000
  89. CLI FCBDEV,FCBDUM IS IT A DUMMY DEVICE ?? @VA05383 00088100
  90. BE NODUMP YES DON'T BOTHER TO DUMP IT @VA05383 00088200
  91. L R7,DEBDCBAD GET DCB ADDR. @VMQ3222 00089000
  92. LTR R7,R7 GOT A DCB?? @VA05383 00089100
  93. BNZ GOTDCB YES SKIP A LINE @VA05383 00089200
  94. L R7,=4X'FF' NO DUMMY UP THE DCB FOR DMSSVT @VA05383 00089300
  95. * VA05383 00089400
  96. GOTDCB EQU * @VA05383 00089500
  97. DROP R7 @VMQ3222 00090000
  98. DMSFREE DWORDS=2,TYPE=NUCLEUS,TYPCALL=BALR @VMQ3222 00091000
  99. XC 0(16,R1),0(R1) CLEAR GOTTEN AREA @VA02872 00091100
  100. LR R3,R1 SAVE GOTTON AREA @VMQ3222 00092000
  101. SNAP DCB=(R7),PDATA=ALL,MF=(E,(R3)) @VMQ3222 00093000
  102. LR R1,R3 RESTORE GOTTON AREA @VMQ3222 00094000
  103. DMSFRET DWORDS=2,LOC=(1),TYPCALL=BALR @VMQ3222 00095000
  104. SPACE 1 00096000
  105. NODUMP EQU * @VMQ3222 00097000
  106. LM R3,R4,SCBPTR GET SCB PTRS 00098000
  107. LTR R3,R3 WAS A STAE ISSUED 00099000
  108. BZ GETCODE NO, BYPASS STAE RTN 00100000
  109. TM SCBPTR,STAEBIT+STAIBIT ABEND IN STAE OR STAI? @V1D1709 00101000
  110. BZ STAI NO @V1D1709 00102000
  111. LA R7,RESET3 @VA04449 00102500
  112. BAL R10,CNCLSTAE YES, MUST CLEAR LAST STAI SCB@V1D1709 00103000
  113. RETRYABN EQU * @V1D1709 00104000
  114. TM 12(R3),X'20' IS THIS ONE A STAI? @V1D1709 00105000
  115. BO STAI YES, USE IT @V1D1709 00106000
  116. BAL R10,CNCLSTAE GET NEXT SCB @V1D1709 00107000
  117. B RETRYABN YES, CHECK FOR STAI @V1D1709 00108000
  118. STAI LTR R1,R4 IS THERE A WORK AREA V0015 00109000
  119. BNZ SETUP YES, BYPASS GETMAIN 00110000
  120. L R5,USAVEPTR USER SAVE USED FOR GETMAIN @V1D1709 00111000
  121. LA R4,SCBWORK SCBWORK IN PGMSECT @V1D1709 00112000
  122. GETMAIN EC,LV=104,A=(R4),MF=(E,(R5)) @V1D1709 00113000
  123. L R1,0(,R4) PUT WORK AREA ADDR IN R1 @V1D1709 00114000
  124. USING STAEBLK,R1 @V1D1709 00115000
  125. LTR R15,R15 REQUESTED STORAGE GOTTON? @V1D1709 00116000
  126. BZ SETUP YES, NORMAL SETUP @V1D1709 00117000
  127. L R2,8(,R3) NO, SET R2 TO EXIT PARA. LIST@V1D1709 00118000
  128. L R1,EGPR1 R1 = ABEND COMP. CODE @V1D1709 00119000
  129. LR R5,R1 ABEND CODE IN REG 5 ALSO @VA07762 00119050
  130. CLC OLDPSW+5(3),USERA USER ABEND? @V305665 00120100
  131. BL SHIFT1 YES, IF BELOW USER AREA @VA04440 00121100
  132. TM DCSSFLAG,DCSSAVAL CMSSEG IS SYSTEM CODE @VA04440 00121200
  133. BNO CHKSVT1 BR, IF NO CMSSEG @VA04440 00121300
  134. L R0,ACMSSEG GET ADDRESS OF CMSSEG @VA04440 00121400
  135. B CHKSYS1 AND MAKE THE DECISION @VA04440 00121500
  136. SPACE 1 00121600
  137. CHKSVT1 TM DCSSFLAG,DCSSVTLD OS SIMULATION LOADED ? @VA04440 00121700
  138. BNO NOSHIFT NO, MUST BE USER ABEND @VA04440 00121800
  139. L R0,AOSMODL GET ADDRESS OF DMSSVT LOAD @VA04440 00121900
  140. SPACE 1 00122000
  141. CHKSYS1 CLM R0,ADR3,OLDPSW+5 USER OR SYSTEM ABEND ? @VA04440 00122100
  142. BH NOSHIFT SKIP IF USER @VA04440 00122200
  143. SPACE 1 00122300
  144. SHIFT1 SLL R5,12 ALIGN SYSTEM CODE @VA04440 00122400
  145. NOSHIFT EQU * @V1D1709 00123000
  146. LA R0,12 INDICATE NO WORKAREA @V1D1709 00124000
  147. B GOSTAE GO TO STAE OR STAI @V1D1709 00125000
  148. SETUP MVC PARAM(4),8(R3) FILL IN ADR OF PARM LIST 00126000
  149. L R5,EGPR1 GET ABEND CODE 00127000
  150. C R5,=F'192' IS ABEND CODE '0CX'? @VM03223 00128000
  151. BNH NOT0CX NO @VM03223 00129000
  152. C R5,=F'208' @VM03223 00130000
  153. BNL NOT0CX @VM03223 00131000
  154. MVC PROBPSW(8),PGMOPSW YES, USE PGM OLD PSW @VM03223 00132000
  155. B SETUP2 @VM03223 00133000
  156. NOT0CX EQU * @VM03223 00134000
  157. L R13,SSAVEPRV GET PREVIOUS SAVE AREA ADDR @VM03223 00135000
  158. MVC PROBPSW(8),OLDPSW NOT '0CX', USE PREV. TASK PSW@VM03223 00136000
  159. L R13,CURRSAVE RESTORE R13 TO THIS SAVE AREA@VM03223 00137000
  160. SETUP2 EQU * @VM03223 00138000
  161. CLC OLDPSW+5(3),USERA IS THIS A USER ABEND? @V305665 00139100
  162. BL SHIFT2 YES, IF BELOW USER AREA @VA04440 00140100
  163. TM DCSSFLAG,DCSSAVAL CMSSEG IS SYSTEM CODE @VA04440 00140200
  164. BNO CHKSVT2 BR, IF NO CMSSEG @VA04440 00140300
  165. L R0,ACMSSEG GET ADDRESS OF CMSSEG @VA04440 00140400
  166. B CHKSYS2 AND MAKE THE DECISION @VA04440 00140500
  167. SPACE 1 00140600
  168. CHKSVT2 TM DCSSFLAG,DCSSVTLD OS SIMULATION LOADED ? @VA04440 00140700
  169. BNO SETCODE NO, MUST BE USER ABEND @VA04440 00140800
  170. L R0,AOSMODL GET ADDRESS OF DMSSVT LOAD @VA04440 00140900
  171. SPACE 1 00141000
  172. CHKSYS2 CLM R0,ADR3,OLDPSW+5 USER OR SYSTEM ABEND ? @VA04440 00141100
  173. BH SETCODE SKIP IF USER @VA04440 00141200
  174. SPACE 1 00141300
  175. SHIFT2 SLL R5,12 ALIGN SYSTEM CODE @VA04440 00141400
  176. SETCODE ST R5,ERRCODE SET ABEND CODE IN WORKAREA 00142000
  177. MVI ERRCODE,TERMSTEP INDICATE STEP IS BEING TERMINATED 00143000
  178. MVC SVCPSW(8),OLDPSW FILL IN WORKAREA 00144000
  179. MVC REGS(64),EGPRS FILL IN REGS 00145000
  180. XC CLEAR(16),CLEAR CLEAR RTN ADDRESSES 00146000
  181. LA R0,4 FILL IN ACTION CODE 00147000
  182. GOSTAE EQU * @V1D1709 00148000
  183. OI SCBPTR,STAEBIT INDICATE TAKING STAE EXIT @V1D1709 00149000
  184. TM 12(R3),X'20' IS IT REALLY A STAI? @V1D1709 00150000
  185. BNO GOSTAE2 NO @V1D1709 00151000
  186. XI SCBPTR,STAEBIT+STAIBIT YES, INDICATE STAI @V1D1709 00152000
  187. GOSTAE2 EQU * @V1D1709 00153000
  188. OI TYPFLAG,TPFUSR INDICATE USER PGM @V1D1709 00154000
  189. L R13,USAVEPTR GET SAVE AREA 00155000
  190. DMSKEY LASTUSER SET USER KEY 00156000
  191. L R15,4(,R3) GET EXIT ROUTINE ADDRESS 00157000
  192. BALR R14,R15 GO TO STAE EXIT RTN 00158000
  193. L R11,APGMSECT GET ADDR OF PGMSECT 00159000
  194. LM R12,R14,SCBSAV12 RESTORE REGS 12,13 14 @V1D1709 00160000
  195. LTR R15,R15 RETRY REQUESTED @V1D1709 00161000
  196. BZ CK0RET NO @V1D1709 00162000
  197. CH R15,=H'12' ANY RETRY REQUEST @V1D1709 00163000
  198. BH RESET NO, STAI CONTINUE ABEND @V1D1709 00164000
  199. DMSKEY RESET @V1D1709 00165000
  200. CLEARSAV EQU * @VM03223 00166000
  201. MVC EGPR9(4),OLDPSW SAVE PSW KEY @VM03223 00167000
  202. ST R14,EGPR14 SAVE R14 AROUND SAVE CLEAN @VM03223 00168000
  203. ST R11,EGPR11 SAVE R11 IN CURRENT SAVE @V1D1709 00169000
  204. ST R12,EGPR12 SAVE R12 IN CURRENT SAVE @V1D1709 00170000
  205. ST R0,EGPR0 AND R0 @V1D1709 00171000
  206. MVC OLDPSW,=A(0,RETRY) MODIFY RESTART BACK TO ME @V1D1709 00172000
  207. BR R14 GO BACK TO DMSITS @V1D1709 00173000
  208. RETRY EQU * @V1D1709 00174000
  209. L R3,SCBPTR RESTORE SCB ADDRESS @VA06345 00174500
  210. L R13,CURRSAVE GET CURRENT SAVE AREA ADDR @VM03223 00175000
  211. CLC CALLEE(4),=C'SVC ' IS THIS AN OS SVC? @VM03223 00176000
  212. BNE RETRY2 NO, DONE CLEARING SAVE AREAS @VM03223 00177000
  213. ST R1,EGPR1 YES, SAVE R1 (ABEND CODE) @VM03223 00178000
  214. B CLEARSAV GO CLEAR THIS SAVE AREA @VM03223 00179000
  215. RETRY2 EQU * @VM03223 00180000
  216. L R8,SCBWORK GET WORK AREA ADDR. @VM03223 00181000
  217. LTR R8,R8 IS THERE ONE? @VM03223 00182000
  218. BNZ RETRY3 YES, USE SAVE AREA PSW @VM03223 00183000
  219. C R1,=F'192' NO, IS THIS A '0CX'? @VM03223 00184000
  220. BNH RETRY4 NO, R9 CONTAINS PSW @VM03223 00185000
  221. C R1,=F'208' ARE WE SURE THIS IS NOT '0CX'@VM03223 00186000
  222. BNL RETRY4 YES WE ARE SURE @VM03223 00187000
  223. L R9,PGMOPSW IT IS A '0CX', USE PGM OLD @VM03223 00188000
  224. B RETRY4 GO @VM03223 00189000
  225. RETRY3 EQU * @VM03223 00190000
  226. L R9,16(,R8) USE SAVE AREA PSW IN SCBWORK @VM03223 00191000
  227. RETRY4 EQU * @VM03223 00192000
  228. L R13,USAVEPTR GET USER SAVE AREA ADDR. @VM03223 00193000
  229. ST R9,0(,R13) BUILD PSW FOR RETRY RTN IN IT@VM03223 00194000
  230. OI SCBPTR,RETRYBIT INDICATE RETRY @V1D1709 00195000
  231. LR R9,R0 RETRY ADDR. IN R9 @V1D1709 00196000
  232. LR R2,R1 SAVE ABEND CODE @VM03223 00197000
  233. BAL R10,CNCLSTAE GO CANCEL STAE/STAI @V1D1709 00198000
  234. LA R0,0 INDICATE WORKAREA PRESENT @V1D1709 00199000
  235. L R1,SCBWORK WORKAREA ADDR. @V1D1709 00200000
  236. LTR R1,R1 WAS THERE REALLY A WORKAREA? @V1D1709 00201000
  237. BNZ NOSHIFT2 YES, GO TO RETRY @V1D1709 00202000
  238. LR R1,R2 RESTORE ABEND CODE TO R1 @VM03223 00203000
  239. LA R0,12 NO, INDICATE NO WORKAREA @V1D1709 00204000
  240. LA R2,0 INDICATE NO I/O RECOVERABLE @V1D1709 00205000
  241. L R13,CURRSAVE @V1D1709 00206000
  242. CLC OLDPSW+5(3),USERA USER ABEND? @V305665 00207100
  243. BNL NOSHIFT2 YES @V1D1709 00208000
  244. SLL R1,12 NO, SHIFT SYSTEM ABEND CODE @V1D1709 00209000
  245. NOSHIFT2 EQU * @V1D1709 00210000
  246. NI SCBPTR,X'00' TURN OFF STAE/STAI BIT @V1D1709 00211000
  247. XC SCBWORK(4),SCBWORK CLEAR WORKAREA POINTER @VM03223 00212000
  248. GORETRY EQU * @V1D1709 00213000
  249. LTR R0,R0 IF NOT ZERO, NO SCBWORK AREA @V1D1709 00214000
  250. BNZ GORETRY2 IS AVAILABLE @V1D1709 00215000
  251. L R13,CURRSAVE GET CURRENT SAVE AREA ADDR @V1D1709 00216000
  252. L R13,USAVEPTR GET USER SAVE AREA ADDR @V1D1709 00217000
  253. GORETRY2 EQU * @V1D1709 00218000
  254. ST R9,4(,R13) SET RETRY ADDR. FOR LPSW @V1D1709 00219000
  255. LA R14,EXIT SET R14 @V1D1709 00220000
  256. LPSW 0(R13) GO TO RETRY ROUTINE @V1D1709 00221000
  257. SPACE 3 00222000
  258. CK0RET EQU * @V1D1709 00223000
  259. DMSKEY RESET @V1D1709 00224000
  260. LA R7,RESET3 SET R7 @VA01311 00224500
  261. BAL R10,CNCLSTAE GO CLEAR STAE/STAI @V1D1709 00225000
  262. TM 12(R3),X'20' IS THIS ONE A STAI? @V1D1709 00226000
  263. BNO CK0RET NO, CANCEL @V1D1709 00227000
  264. B STAI YES @V1D1709 00228000
  265. RESET EQU * @V1D1709 00229000
  266. DMSKEY RESET @V1D1709 00230000
  267. LA R7,RESET3 SET ADDR TO CONTINUE @VA01311 00230500
  268. RESET2 EQU * @V1D1709 00231000
  269. NI TYPFLAG,255-TPFUSR RESET USER PGM RUNNING @V1D1709 00232000
  270. LM R12,R14,SCBSAV12 RESTORE REGS 12 TO 14 00233000
  271. BR R7 IF R7 = RECOVER ,GO THERE @VA01311 00233300
  272. RESET3 EQU * ELSE R3 POINTS HERE @VA01311 00233600
  273. L R3,SCBPTR RETURN FROM STAI EXIT V0015 00234000
  274. LTR R3,R3 ANY MORE SCBS? @V1D1709 00235000
  275. BZ GETCODE NO @V1D1709 00236000
  276. TM 12(R3),X'20' STAI FLAG IN SCB V0015 00237000
  277. BO RECOVER YES, TRY TO REDISPATCH ATTACHER V0015 00238000
  278. LA R10,CNCL2 @V1D1709 00239000
  279. CNCLSTAE EQU * @V1D1709 00240000
  280. LA R8,CNCL11 @V1D1709 00241000
  281. TM SCBPTR,RETRYBIT IN RETRY? @V1D1709 00242000
  282. BNO CNCL1 NO @V1D1709 00243000
  283. LR R8,R10 @V1D1709 00244000
  284. CNCL1 TM 12(R3),X'20' IS THIS A STAI? @VA01311 00245000
  285. BNO CNCL12 NO @VA01311 00245200
  286. LA R7,RECOVER YES, SET R7 TO RECOVER RTN @VA01311 00245400
  287. CNCL12 STAE 0,OV @VA01311 00245600
  288. LM R3,R4,SCBPTR GET SCB PARMS @V1D1709 00246000
  289. BR R8 @V1D1709 00247000
  290. CNCL11 EQU * @V1D1709 00248000
  291. LTR R3,R3 ANY MORE SCB'S V0015 00249000
  292. BZ RESET2 NO, EXIT @V1D1709 00250000
  293. BR R10 @V1D1709 00251000
  294. CNCL2 EQU * @V1D1709 00252000
  295. TM 12(R3),X'20' IS NEXT A STAI SCB V0015 00253000
  296. BNO CNCLSTAE NO, CANCEL IT V0015 00254000
  297. B STAI YES, GO TO STAI EXIT V0015 00255000
  298. GETCODE EQU * 00256000
  299. XC SCBWORK(4),SCBWORK CLEAR WORK AREA PTR V0015 00257000
  300. LM R12,R14,SCBSAV12 SET REGS V0015 00258000
  301. L R15,AABNSVC GET ADDR OF CMS ABEND ROUT @V305665 00259100
  302. BR R15 AND GO TO DMSABN 00260000
  303. RECOVER L R6,LINKLAST LAST LINK/XCTL/ATTACH V0015 00261000
  304. CLI 23(R6),42 WAS IT ATTACH? @VA01311 00262000
  305. BNE GETCODE NO, OMIT RECOVERY V0015 00263000
  306. L R13,CURRSAVE ABEND'S SAVE AREA V0015 00264000
  307. LA R3,EXIT POINT RESUME PSW TO AN EXIT V0015 00265000
  308. ST R3,OLDPSW+4 V0015 00266000
  309. MVC EGPR15(4),ERRCODE PUT ABEND CODE IN R15 FOR POST V0015 00267000
  310. BR R14 EXIT TO ATTACHER V0015 00268000
  311. EXIT SVC 3 V0015 00269000
  312. SPACE 3 00269100
  313. USERA DC X'020000' START OF USER REGION @VM03125 00269300
  314. SPACE 1 00269320
  315. ADR3 EQU B'0111' @VA04440 00269340
  316. EJECT 00270000
  317. REGEQU 00271000
  318. PGMSECT 00272000
  319. CMSAVE 00273000
  320. NUCON 00274000
  321. CMSCB @VMQ3222 00275000
  322. * 00276000
  323. STAEBLK DSECT 00277000
  324. PARAM DS 1F ADDRESS OF PARAMETERS 00278000
  325. ERRCODE DS 1F ERROR CODE FOR ABEND 00279000
  326. SVCPSW DS 2F OLD SVC PSW 00280000
  327. PROBPSW DS 2F OLD PROBLEM PSW 00281000
  328. REGS DS 16F REG. SAVE AREA R0-R15 @V1D1709 00282000
  329. CLEAR DS 4F CALL RTN ADDRESSES 00283000
  330. END 00284000