Table of Contents

DMMGRC Source

References

Source Listing

DMMGRC.ASSEMBLE.txt
  1. GRC TITLE 'DMMGRC (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: DMMGRC 00003000
  4. * 00004000
  5. * 00005000
  6. * FUNCTION: GIVEN AN ADDRESS READS THE DUMP RECORD CONTAINING 00006000
  7. * THE DATA AT THAT ADDRESS AND PASSES THE DATA BACK TO THE 00007000
  8. * CALLER. 00008000
  9. * 00009000
  10. * ATTRIBUTES: REUSABLE 00010000
  11. * NON-REENTRANT 00011000
  12. * 00012000
  13. * 00013000
  14. * ENTRY POINTS: DMMGRC 00014000
  15. * 00015000
  16. * 00016000
  17. * ENTRY CONDITIONS: SHARED CONSTANT AREA CONTAINS AN ADDRESS AT 00017000
  18. * GRCPARM WHICH IS THE REQUESTED DATA ADDRESS 00018000
  19. * 00019000
  20. * 00020000
  21. * EXIT CONDITIONS: NORMAL -- R1 POINTS TO DATA READ FROM DUMP 00021000
  22. * ERROR RETURN -- TO DMMPRM TO PROMPT USER FOR 00022000
  23. * INFORMATION BEFORE QUITTING. 00023000
  24. * 00024000
  25. * 00025000
  26. * CALLS TO OTHER ROUTINES: DMMPRM IF ERROR ENCOUNTERED 00026000
  27. * (DMMPRM WILL NOT RETURN TO DMMGRC). 00027000
  28. * 00028000
  29. * 00029000
  30. * EXTERNAL REFERENCES: WRKBUF (COMMON 4K WORK BUFFER) 00030000
  31. * EXINREC (COMMON 4K INPUT AREA) 00031000
  32. * EXCONST (COMMON CONSTANT AREA) 00032000
  33. * 00033000
  34. * 00034000
  35. * TABLES/WORKAREAS: 00035000
  36. * 00036000
  37. * 00037000
  38. * REGISTER USAGE: R14 RETURN REGISTER 00038000
  39. * R13 SAVEAREA POINTER 00039000
  40. * R12 BASE REGISTER 00040000
  41. * R10 INPUT RECORD POINTER 00041000
  42. * R8 WRKBUF POINTER (COMMON WORK BUFFER) 00042000
  43. * R7 COMMON SHARED CONSTANT AREA POINTER 00043000
  44. * R2-R6 WORK 00044000
  45. * 00045000
  46. * 00046000
  47. * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00047000
  48. * 00048000
  49. * 00049000
  50. * OPERATION: 00050000
  51. * 00051000
  52. * I. TAKE ADDRESS SUPPLIED BY THE CALLER AND LOCATE WHICH 00052000
  53. * DUMP RECORD CONTAINS THE DATA AT THE GIVEN ADDRESS. 00053000
  54. * II. READ IN THE RECORD WHICH CONTAINS THE DATA. 00054000
  55. * III. CALCULATE WHERE IN THE REC. THE DATA REQUESTED BY THE 00055000
  56. * CALLER RESIDES. 00056000
  57. * IV. RETURN TO CALLER WITH R1 POINTING TO THE DATA. 00057000
  58. * ERROR MESSAGES: 00058000
  59. * DMMGRC100S ERROR 'NNN' READING FILE 'PRBNNNNN DUMP A1' 00059000
  60. * DMMGRC809S REQUESTED ADDRESS NOT IN DUMP 00060000
  61. * 00061000
  62. * 00062000
  63. EJECT 00063000
  64. DMMGRC CSECT @VA04250 00064000
  65. USING DMMGRC,R15 TEMPORARY ADDRESSABILITY @VA04250 00065000
  66. B START BRANCH AROUND EYECATCHER @VA04250 00066000
  67. DS 0D @VA04250 00067000
  68. MODNAME DC C'DMMGRC ' MODULE NAME @VA04250 00068000
  69. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00069000
  70. START STM R14,R12,12(R13) SAVE CALLER'S REGISTERS @VA04250 00070000
  71. DROP R15 @VA04250 00071000
  72. LR R12,R15 ESTABLISH OUR BASE @VA04250 00072000
  73. USING DMMGRC,R12 @VA04250 00073000
  74. ST R13,SAVEAREA+8 CALLER'S SAVEAREA POINTER @VA04250 00074000
  75. LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00075000
  76. EXTRN WRKBUF SYSTEM WORK BUFFER (4K) @VA04250 00076000
  77. L R9,VWRKBUF POINT TO COM WRK BUFFER @VA04250 00077000
  78. USING WRKBUF,R9 @VA04250 00078000
  79. L R7,VEXCON POINT TO COMMON AREA @VA04250 00079000
  80. USING SHARECON,R7 @VA04250 00080000
  81. L R10,VINREC POINT TO INPUT AREA @VA04250 00081000
  82. USING DMPINREC,R10 @VA04250 00082000
  83. *************************************************************** 00083000
  84. * START BY FINDING WHERE IN THE DUMP THE DATA ASSOCIATED 00084000
  85. * WITH THE ADDRESS SUPPLIED BY THE CALLER IS LOCATED (WHICH 00085000
  86. * RECORD NUMBER). 00086000
  87. *************************************************************** 00087000
  88. L R2,GRCPARM GET ADDR SUPPLIED BY CALLER @VA04250 00088000
  89. LA R2,0(R2) HIGH ORDER BYTE OFF @VA04250 00089000
  90. LA R3,PAGEMAP POINT TO PAGE MAP @VA04250 00090000
  91. LR R4,R2 WORK REG WITH USER ADDRESS @VA04250 00091000
  92. SRL R4,12 GET PAGE NUMBER @VA04250 00092000
  93. LA R5,RECORD5 START REC NUMBER AT 5 @VA04250 00093000
  94. * (PREVIOUS RECORDS ARE CONTROLS AND TABLES) 00094000
  95. LA R6,MAXCOUNT TO INSURE WE DON'T LOOP @VA04250 00095000
  96. GETENTRY CH R4,0(R3) FOUND THE REQUESTED PAGE? @VA04250 00096000
  97. BE GOTPAGE YES - GOT IT @VA04250 00097000
  98. LA R3,ISIZE(R3) BUMP ITEM TBL PTR @VA04250 00098000
  99. LA R5,NEXTREC(R5) BUMP RECORD NUMBER @VA04250 00099000
  100. CLC FOXES,0(R3) END OF ITEM TABLE? @VA04250 00100000
  101. BE MSGITEND YES - GO WRITE ABOUT IT @VA04250 00101000
  102. BCT R6,GETENTRY TRY AGAIN IF NOT TOO FAR @VA04250 00102000
  103. B MSGITEND DIDN'T FIND END OF ITEM TBL @VA04250 00103000
  104. *************************************************************** 00104000
  105. * WE NOW KNOW THE REC NUMBER IN THE DUMP WHERE THE DATA 00105000
  106. * EXISTS. NOW READ IT IN, CALCULATE WHERE THE DATA THE USER 00106000
  107. * REQUESTED IS IN THE BUFFER, AND RETURN TO HIM. 00107000
  108. *************************************************************** 00108000
  109. GOTPAGE L R3,DMPFSCB POINT OT FSCB OF DUMP FILE @VA04250 00109000
  110. FSREAD FSCB=(R3),BUFFER=WRKBUF,RECNO=(R5) @VA04250 00110000
  111. LR R6,R15 RETURN CODE FROM FSWRITE @VA04250 00111000
  112. FSCLOSE FSCB=(R3) @VA04250 00112000
  113. LTR R6,R6 GOOD RETURN FROM FSREAD? @VA04250 00113000
  114. BNZ RDERROR NO, GO PROCESS ERROR @VA04250 00114000
  115. LR R4,R2 LOAD WORK REG @VA04250 00115000
  116. SRL R4,12 ROUNDS R4 DOWN TO @VA04250 00116000
  117. SLL R4,12 START OF THIS PAGE @VA04250 00117000
  118. SR R2,R4 NOW R2 HAS OFFSET INTO BUFF @VA04250 00118000
  119. *************************************************************** 00119000
  120. * ALL PROCESSING HAS BEEN SUCCESSFUL. RETURN TO CALLER WITH 00120000
  121. * ADDRESS OF DATA REQUESTED IN R1. 00121000
  122. *************************************************************** 00122000
  123. LA R1,WRKBUF START OF BUFFER TO R1 @VA04250 00123000
  124. AR R1,R2 R1 POINTS TO THE REQ DATA @VA04250 00124000
  125. GRCRET L R13,SAVEAREA+8 RESTORE CALLER'S SAVEAREA @VA04250 00125000
  126. LM R14,R0,12(R13) RESTORE REGISTERS @VA04250 00126000
  127. LM R2,R12,28(R13) PRESERVING R1 @VA04250 00127000
  128. SR R15,R15 RETURN CODE ZERO @VA04250 00128000
  129. BR R14 GO BACK TO CALLER @VA04250 00129000
  130. *************************************************************** 00130000
  131. * ISSUE MESSAGE AND THEN GO TO PROMPTING ROUTINE 00131000
  132. * DMMGRC809S REQUESTED ADDRESS NOT IN DUMP 00132000
  133. *************************************************************** 00133000
  134. MSGITEND LA R2,MSGEND POINT TO MESSAGE TEXT @VA04250 00134000
  135. LA R3,MSGENDL LENGTH OF MESSAGE @VA04250 00135000
  136. MVC TEXT5(L'MSGEND),MSGEND MOVE MESSAGE TO TEXT @VA04250 00136000
  137. B NOPAGE GO WRITE MESSAGE @VA04250 00137000
  138. *************************************************************** 00138000
  139. * ISSUE MESSAGE: 00139000
  140. * DMMGRC100S ERROR 'NNN' READING 'PRBNNNNN DUMP A1' 00140000
  141. * WE WILL THEN GO DIRECTLY TO PROMPT WHO WILL RETURN TO DMMEDM 00141000
  142. *************************************************************** 00142000
  143. RDERROR CVD R6,WKDWD CONVERT RET CODE TO DECIMAL @VA04250 00143000
  144. UNPK RDCODE,PACKED(TWO) UNPACK INTO MESSAGE @VA04250 00144000
  145. OI RDCODE2,NUMERIC MAKE IT READABLE @VA04250 00145000
  146. MVC FNAME,DUMPNUM MOVE 'PRBNNNNN' TO MSG @VA04250 00146000
  147. LA R2,MSGREAD POINT TO MESSAGE @VA04250 00147000
  148. LA R3,MSGREADL LENGTH OF MESSAGE @VA04250 00148000
  149. MVC TEXT5(MSGREADL),MSGREAD MOVE MESSAGE TO TEXT @VA04250 00149000
  150. NOPAGE WRTERM (R2),(R3) @VA04250 00150000
  151. *************************************************************** 00151000
  152. * CALL DMMPRM (HE WILL NOT RETURN HERE BUT RETURN TO DMMEDM) 00152000
  153. *************************************************************** 00153000
  154. GRCQUIT2 OI TYPESW,PROCERR SET PROCESS ERROR SWITCH @VA04250 00154000
  155. CALL DMMPRM CALL PROMPTING ROUTINE @VA04250 00155000
  156. EJECT 00156000
  157. *************************************************************** 00157000
  158. * CONSTANTS SAVEAREAS AND EQUATES 00158000
  159. *************************************************************** 00159000
  160. SAVEAREA DS 18F OUR SAVEAREA @VA04250 00160000
  161. WKDWD DS D DOUBLE WORD WORK AREA @VA04250 00161000
  162. VEXCON DC V(SHARECON) POINTER TO COMMON CONSTANTS @VA04250 00162000
  163. VINREC DC V(EXTINREC) DUMP RECORD INPUT AREA @VA04250 00163000
  164. VWRKBUF DC V(WRKBUF) POINTER TO WORKBUFFER @VA04250 00164000
  165. FOXES DC X'FFFF' @VA04250 00165000
  166. MSGEND DC C'DMMGRC809S REQUESTED ADDRESS NOT IN DUMP' @VA04250 00166000
  167. MSGENDL EQU *-MSGEND LENGTH OF MESSAGE @VA04250 00167000
  168. *************************************************************** 00168000
  169. * DMMGRC100S ERROR 'NNN' READING 'FILENAME FILETYPE FM' 00169000
  170. *************************************************************** 00170000
  171. MSGREAD DC C'DMMGRC100S ERROR ''' @VA04250 00171000
  172. RDCODE DS CL3 FSREAD RETURN CODE @VA04250 00172000
  173. DC C''' READING FILE ''' @VA04250 00173000
  174. FNAME DS CL8 DUMP FILE NAME @VA04250 00174000
  175. DC C' DUMP A1''' @VA04250 00175000
  176. MSGREADL EQU *-MSGREAD LENGTH OF MESSAGE @VA04250 00176000
  177. PATCH DC 50F'0' PATCH AREA @VA04250 00177000
  178. NUMERIC EQU X'F0' MASK TO INSURE NUMERICS @VA04250 00178000
  179. ISIZE EQU 2 LENGTH ITEM TABLE ENTRY @VA04250 00179000
  180. RECORD5 EQU 5 FIRST VALID DUMP DATA RECD @VA04250 00180000
  181. RDCODE2 EQU RDCODE+2 LOW ORDER BYTE OF RET CODE @VA04250 00181000
  182. MAXCOUNT EQU 1792 MAX DUMP RECORDS POSSIBLE @VA04250 00182000
  183. NEXTREC EQU 1 INCREMENT VALUE FOR MAP @VA04250 00183000
  184. TWO EQU 2 VALUE FOR MOVE COUNT ETC. @VA04250 00184000
  185. PACKED EQU WKDWD+6 RETURN CODE AFTER CVD @VA04250 00185000
  186. LTORG @VA04250 00186000
  187. COPY DMPBLOKS @VA04250 00187000
  188. PAGEMAP EQU DMPPGMAP+56 PAGE MAP LOC IN DMPINREC @V4075A1 00188000
  189. COPY EXCONST @VA04250 00189000
  190. REGEQU @VA04250 00190000
  191. END 00191000