Table of Contents

DMMFEX Source

References

Source Listing

DMMFEX.ASSEMBLE.txt
  1. FEX TITLE 'DMMFEX (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: 00003000
  4. * DMMFEX SUBROUTINE OF DUMPSCAN 00004000
  5. * 00005000
  6. * FUNCTION: 00006000
  7. * DISPLAY X'130' BYTES OF THE DUMP IN RESPONSE 00007000
  8. * TO A REQUEST OF THE FORM 'DISPLAY HEXLOC' 00008000
  9. * 00009000
  10. * ATTRIBUTES: 00010000
  11. * REUSABLE 00011000
  12. * NON-REENTRANT 00012000
  13. * 00013000
  14. * ENTRY POINTS: 00014000
  15. * DMMFEX 00015000
  16. * 00016000
  17. * ENTRY CONDITIONS: 00017000
  18. * R2 POINTS TO PLIST CONTAINING TOKENIZED INPUT 00018000
  19. * 00019000
  20. * EXIT CONDITIONS: 00020000
  21. * RETURN CODE IN R15 0 - GOOD 00021000
  22. * 4 - WARNING 00022000
  23. * 8 - FATAL 00023000
  24. * 00024000
  25. * CALLS TO OTHER ROUTINES: 00025000
  26. * DMMDIR TO FORMAT AND DISPLAY THE DATA 00026000
  27. * 00027000
  28. * EXTERNAL REFERENCES: 00028000
  29. * BUFF1 DMMGET'S BUFFER 00029000
  30. * 00030000
  31. * TABLES/WORKAREAS: 00031000
  32. * 00032000
  33. * 00033000
  34. * REGISTER USAGE: 00034000
  35. * R15 ADDRESSES OF EXTERNAL ROUTINES 00035000
  36. * R14 RETURNS FROM EXTERNAL ROUTINES 00036000
  37. * R13 SAVE AREA ADDRESS 00037000
  38. * R12 BASE 00038000
  39. * R10-R8 NOT USED 00039000
  40. * R7-R2 WORK REGISTERS 00040000
  41. * R2 POINTS TO PLIST 00041000
  42. * 00042000
  43. * NOTES: 00043000
  44. * 00044000
  45. * 00045000
  46. * OPERATION: 00046000
  47. * 00047000
  48. * THE PLIST ADDRESS IS PASSED IN R2 00048000
  49. * THIS ROUTINE MOVES THE EBCDIC ADDRESS FROM THE 00049000
  50. * THE PLIST, TRANSLATES IT TO HEX, CHECKING 00050000
  51. * FOR INDIRECT REQUESTS. IT FETCHES THE 00051000
  52. * NEEDED RECORD INTO CORE AND FORMATS AND 00052000
  53. * DISPLAYS IT USING GETREC AND DIR. 00053000
  54. * ERROR MESSAGES: 00054000
  55. * 00055000
  56. * 00056000
  57. DMMFEX CSECT @VA04250 00057000
  58. EXTRN DMMDIR FORMAT AND DISPLAY @VA04250 00058000
  59. EXTRN DMMGET FETCH THE DUMP INTO CORE @VA04250 00059000
  60. EXTRN CMDINFO HEADER @VA04250 00060000
  61. EXTRN INPUT INPUT LINE @VA04250 00061000
  62. STM R14,R12,SAVEDISP(R13) CALLERS REGS @VA04250 00062000
  63. LR R12,R15 ADDRESSABILITY @VA04250 00063000
  64. USING DMMFEX,R12 ADDRESSABILITY @VA04250 00064000
  65. ST R13,SAVEBACK CALLERS SAVE AREA PTR @VA04250 00065000
  66. B EYECATCH SKIP EYECATCHER @VA04250 00066000
  67. DS 0D ALIGN @VA04250 00067000
  68. DC CL8'DMMFEX' EYECATCHER @VA04250 00068000
  69. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00069000
  70. EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00070000
  71. XC RETCODE,RETCODE CLEAR RETURN CODE @VA04250 00071000
  72. MVC ADDRESS,CZEROS SET ADRESS TO ZEROS @VA04250 00072000
  73. LA R4,PLENT COUNT BYTES OF INPUT @VA04250 00073000
  74. LA R2,PL2L(R2) LAST BYTE OF INPUT @VA04250 00074000
  75. LA R3,ADDRESS+5 LAST BYTE OF OUTPUT @VA04250 00075000
  76. COMPR CLI 0(R2),BLANK IS IT BLANK @VA04250 00076000
  77. BE BUMP YES - TRY NEXT @VA04250 00077000
  78. CLI 0(R2),T AS IN 'D T1000...' @VA04250 00078000
  79. BNE PCCHECK NO - CHECK FOR INDIRECT @VA04250 00079000
  80. MVI 0(R2),ZERO REPLACE IT WITH A ZERO @VA04250 00080000
  81. B VALID GO PLUG IT @VA04250 00081000
  82. PCCHECK CLI 0(R2),HEXPC IS IT A %? @VA04250 00082000
  83. BNE MOVEIT NO ITS A CHARACTER @VA04250 00083000
  84. MVI PCSW,ON TURN ON INDIRECT SW @VA04250 00084000
  85. B BUMP AND TRY NEXT @VA04250 00085000
  86. * * * * * * * *------- -------- -------- -------- ------* 00086000
  87. * * * * * * * * FIRST CHECK INPUT VALIDITY 00087000
  88. * * * * * * * *------- -------- -------- -------- ------* 00088000
  89. MOVEIT CLI 0(R2),A IS BELOW 'A' @VA04250 00089000
  90. BL BADIN NON HEX @VA04250 00090000
  91. CLI 0(R2),F ABOVE 'F' @VA04250 00091000
  92. BH HICHEK SO FAR @VA04250 00092000
  93. B VALID OK - USE IT @VA04250 00093000
  94. HICHEK CLI 0(R2),ZERO BELOW '0' @VA04250 00094000
  95. BL BADIN NON HEX @VA04250 00095000
  96. CLI 0(R2),I9 ABOVE '9' @VA04250 00096000
  97. BH BADIN NON HEX @VA04250 00097000
  98. VALID MVC 0(ONE,R3),0(R2) MOVE THE CHAR @VA04250 00098000
  99. BCTR R3,R0 BACK UP OUTPUT PTR @VA04250 00099000
  100. BUMP BCTR R2,R0 BACK UP INPUT PTR @VA04250 00100000
  101. BCT R4,COMPR TRY ANOTHER @VA04250 00101000
  102. B TRANADD GOT EM - NOW TRANSLATE EM @VA04250 00102000
  103. * * * * * * * * ------- -------- -------- ------- * 00103000
  104. * * * * * * * * BAD INPUT WAS DETECTED 00104000
  105. * * * * * * * * ------- -------- -------- ------- * 00105000
  106. BADIN LA R8,ERMSG704 ADDRESS @VA04250 00106000
  107. LA R9,L'ERMSG704 AND LENGTH @VA04250 00107000
  108. BAL R10,WRTERM NON-HEX CHARACTER IN ADDRESS @VA04250 00108000
  109. MVC RETCODE,CODE4 RETURN CODE 4 AFTER ERMSG @VA04422 00108500
  110. B RETURN GIVE IT BACK @VA04250 00109000
  111. * * * * * * * *------- -------- -------- -------- ------* 00110000
  112. * * * * * * * * NOW THE ADDRESS IS RIGHT JUSTIFIED IN THE 00111000
  113. * * * * * * * * 'ADDRESS' FIELD, AND WILL BE TRANSLATED 00112000
  114. * * * * * * * * TO HEX FOR THE GETREC ROUTINE. 00113000
  115. * * * * * * * *------- -------- -------- -------- ------* 00114000
  116. TRANADD LA R4,ADDRESS SET UP FOR CONVERT @VA04250 00115000
  117. LA R6,L'ADDRESS COUNT ADDRESS BYTES @VA04250 00116000
  118. TEST TM 0(R4),ZERO NUMERIC? @VA04250 00117000
  119. BNO ADDNINE NO - FIX IT UP @VA04250 00118000
  120. LA R4,ONE(R4) NEXT BYTE @VA04250 00119000
  121. BCT R6,TEST IF NOT ALL DONE @VA04250 00120000
  122. B ALLDONE GO PACK EM @VA04250 00121000
  123. ADDNINE MVC REGLOAD+LORD(ONE),0(R4) ADD A BINARY @VA04250 00122000
  124. L R7,REGLOAD NINE TO ANY @VA04250 00123000
  125. AH R7,NINE ALPHA DIGIT @VA04250 00124000
  126. ST R7,REGLOAD PLUG IT BACK INTO ADDRESS @VA04250 00125000
  127. MVC 0(ONE,R4),REGLOAD+LORD INTO ADDRESS @VA04250 00126000
  128. LA R4,ONE(R4) GET NEXT BYTE @VA04250 00127000
  129. BCT R6,TEST NEXT BYTE @VA04250 00128000
  130. ALLDONE PACK HEXAD(HEXL),ADDRESS(ADL) STRIP OFF ZONES @VA04250 00129000
  131. SCROLL L R2,HEXAD GET THE REAL ADDRESS @VA04250 00130000
  132. CLI PCSW,INDIRECT INDIRECT REQ? @VA04250 00131000
  133. BE NOROUND YES - DONT ROUND IT @VA04250 00132000
  134. SRL R2,4 NO - ROUND TO 16 BYTE BOUND @VA04250 00133000
  135. SLL R2,4 AND RESTORE @VA04250 00134000
  136. NOROUND SRL R2,2 ROUND ONLY TO A WORD FOR INDIR. @VA04250 00135000
  137. SLL R2,2 AND RESTORE @VA04250 00136000
  138. LR R7,R2 GET THE DISPLAY ADDRESS @VA04250 00137000
  139. L R15,GETADD GETREC @VA04250 00138000
  140. BALR R14,R15 GO GET RECORD INTO CORE @VA04250 00139000
  141. LTR R15,R15 HOW WAS IT? @VA04250 00140000
  142. BZ INDIR OK @VA04250 00141000
  143. ST R15,RETCODE SAVE THE RETURN @VA04250 00142000
  144. B RETURN BACK TO DX @VA04250 00143000
  145. INDIR CLI PCSW,INDIRECT INDIRECT REQUEST ? @VA04250 00144000
  146. BNE DIRECT NO @VA04250 00145000
  147. L R2,0(R2) YES, GO AROUND AGAIN. @VA04250 00146000
  148. LA R2,0(R2) CLEAR HI-ORDER BYTE @VA04250 00147000
  149. SRL R2,4 NOW ROUND THE ADDRESS @VA04250 00148000
  150. SLL R2,4 TO A QUAD WORD @VA04250 00149000
  151. ST R2,HEXAD SAVE THE ADDRESS FOR SCROLL @VA04250 00150000
  152. LR R7,R2 GET REAL ADDRESS FOR SCREEN. @VA04250 00151000
  153. MVI PCSW,OFF TURN OFF INDIRECT SW. @VA04250 00152000
  154. L R15,GETADD GET READY TO GO AGAIN. @VA04250 00153000
  155. BALR R14,R15 GO @VA04250 00154000
  156. LTR R15,R15 HOW WAS IT? @VA04250 00155000
  157. BZ DIRECT OK @VA04250 00156000
  158. ST R15,RETCODE SAVE BAD RETURN @VA04250 00157000
  159. B RETURN BACK TO CALLER @VA04250 00158000
  160. * * * * * * * *-----------------------------------------* 00159000
  161. * * * * * * * * NOW THE CORRECT RECORD IS IN CORE 00160000
  162. * * * * * * * * THIS CODE FORMATS THE REQUIRED PORTION OF 00161000
  163. * * * * * * * * THE DUMP WITH ADDRESSES 00162000
  164. * * * * * * * *-----------------------------------------* 00163000
  165. DIRECT L R3,CIADD HEADER @VA04250 00164000
  166. L R4,INPUTADD INPUT LINE @VA04250 00165000
  167. MVC 0(LINEL,R3),0(R4) PLUG INPUT LINE @VA04250 00166000
  168. L R15,DIRADD FORMAT AND DISPLAY @VA04250 00167000
  169. BALR R14,R15 GO @VA04250 00168000
  170. ST R15,RETCODE PASS IT TO DSC @VA04250 00169000
  171. B RETURN AND GO BACK @VA04250 00170000
  172. * * * * * * * * ------- -------- -------- ------- * 00171000
  173. * * * * * * * * WRTERM ROUTINE 00172000
  174. * * * * * * * * ------- -------- -------- ------- * 00173000
  175. WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00174100
  176. ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00174200
  177. LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00174300
  178. L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00174400
  179. BALR R14,R15 GO WRITE THE LINE @V4075A2 00174500
  180. BR R10 AND RETURN @V4075A2 00174600
  181. PARMLIS1 DS F PARM1 @V4075A2 00174700
  182. PARMLIS2 DS F PARM2 @V4075A2 00174800
  183. FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00174900
  184. * * * * * * * * ------- -------- -------- ------- * 00176000
  185. * * * * * * * * RETURN 00177000
  186. * * * * * * * * ------- -------- -------- ------- * 00178000
  187. RETURN L R13,SAVEBACK HIS PTR @VA04250 00179000
  188. MVC SAVREG15(L'RETCODE,R13),RETCODE RETCODE IN R15 @VA04250 00180000
  189. LM R14,R12,SAVEDISP(R13) AND HIS REGS @VA04250 00181000
  190. BR R14 RETURN @VA04250 00182000
  191. * * * * * * * * ------- -------- -------- ------- * 00183000
  192. * * * * * * * * CONSTANTS 00184000
  193. * * * * * * * * ------- -------- -------- ------- * 00185000
  194. REGLOAD DS F WORK AREA TO ADD 9 TO ALPH DIGI @VA04250 00186000
  195. HEXAD DS 2F ADDRESS CONVERTED TO HEX @VA04250 00187000
  196. RETCODE DS F RETURN CODE @VA04250 00188000
  197. * * * * * * * * ------- -------- -------- ------- * 00189000
  198. * * * * * * * * SAVEAREA 00190000
  199. * * * * * * * * ------- -------- -------- ------- * 00191000
  200. SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00192000
  201. SAVEUSR DS F USER WORD @VA04250 00193000
  202. SAVEFWD DS F FORWARD POINTER @VA04250 00194000
  203. SAVEBACK DS F BACKWARD POINTER @VA04250 00195000
  204. SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00196000
  205. SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00197000
  206. SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00198000
  207. SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00199000
  208. SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00200000
  209. SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00201000
  210. SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00202000
  211. SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00203000
  212. SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00204000
  213. SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00205000
  214. SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00206000
  215. SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00207000
  216. SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00208000
  217. SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00209000
  218. SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00210000
  219. * * * * * * * * ------- -------- -------- ------- * 00211000
  220. DIRADD DC AL4(DMMDIR) FORMAT AND DISPLAY ROUTINE @VA04250 00212000
  221. GETADD DC AL4(DMMGET) FETCH DUMP INTO CORE @VA04250 00213000
  222. CIADD DC AL4(CMDINFO) HEADER @VA04250 00214000
  223. INPUTADD DC AL4(INPUT) INPUT LINE @VA04250 00215000
  224. * * * * * * * * ------- -------- -------- ------- * 00216000
  225. * * * * * * * * STANDARDS EQUATES 00217000
  226. * * * * * * * * ------- -------- -------- ------- * 00218000
  227. PCSW DC X'00' INDIRECT REQUEST SWITCH @VA04250 00219000
  228. INDIRECT EQU X'FF' INDIRECT REQUEST @VA04250 00220000
  229. ON EQU X'FF' SWITCH ON STATUS @VA04250 00221000
  230. OFF EQU X'00' OFF STATUS @VA04250 00222000
  231. BLANK EQU X'40' BLANK @VA04250 00223000
  232. T EQU X'E3' ALPHA 'T' @VA04250 00224000
  233. ZERO EQU X'F0' NUMERIC '0' @VA04250 00225000
  234. HEXPC EQU X'6C' PERCENT @VA04250 00226000
  235. A EQU X'C1' ALPHA 'A' @VA04250 00227000
  236. F EQU X'C6' ALPHA 'F' @VA04250 00228000
  237. ONE EQU X'01' LENGTH OF ONE BYTE @VA04250 00229000
  238. LORD EQU 3 LO ORD BYTE OF ADDRESS @VA04250 00230000
  239. HEXL EQU 5 FIVE @VA04250 00231000
  240. ADL EQU 7 SEVEN @VA04250 00232000
  241. PLENT EQU 8 LENGTH OF A PLIST ENTRY @VA04250 00233000
  242. SAVEDISP EQU 12 REGS IN SAVE AREA @VA04250 00234000
  243. PL2L EQU 15 DISP TO LAST BYTE 2ND ENTRY @VA04250 00235000
  244. SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00236000
  245. LINEL EQU 80 LENGTH OF THE LINE @VA04250 00237000
  246. I9 EQU X'F9' ONE BYTE OF '9' FOR IMMEDIATES @VA04250 00238000
  247. CODE4 DC F'4' WARNING RET CODE @VA04422 00238500
  248. NINE DC H'9' ADD TO ALPHA DIGITS TO PRINT EM @VA04250 00239000
  249. PADADD DS H PADD FOR ADDRESS SPILL @VA04250 00240000
  250. ADDRESS DS CL6 WORK AREA TO CONVERT TO HEX @VA04250 00241000
  251. CZEROS DC 6C'0' ZEROS FOR ADDRESS @VA04250 00242000
  252. ERMSG704 DC C'DMMFEX704I NON-HEX CHARACTER IN ADDRESS - RETRY' 00243000
  253. PATCH DC 50F'0' PATCH @VA04250 00244000
  254. LTORG @VA04250 00245000
  255. REGEQU @VA04250 00246000
  256. END 00247000