User Tools

Site Tools


ibm:vm370-lib:cp:dmkcdb.assemble_src

DMKCDB Source

References

Source Listing

DMKCDB.ASSEMBLE.txt
  1. CDB TITLE 'DMKCDB (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * DMKCDB 00005000
  6. * FUNCTION - 00006000
  7. * TO EXECUTE THE DISPLAY AND DCP COMMANDS 00007100
  8. * 00008000
  9. * ATTRIBUTES - 00009000
  10. * REENTRANT, PAGEABLE, CALLED VIA SVC 00010000
  11. * 00011000
  12. * ENTRY POINTS - 00012000
  13. * DMKCDBDC - TO DISPLAY REAL STORAGE. 00013000
  14. * DMKCDBDI - TO DISPLAY VIRTUAL STORAGE. 00014000
  15. * 00017000
  16. * ENTRY CONDITIONS - 00018000
  17. * GPR9 - ADDRESS OF THE COMMAND LINE. 00019000
  18. * GPR11 - ADDRESS OF THE USERS VMBLOK. 00020000
  19. * GPR12 - ADDRESS OF THE ENTRY POINT. 00021000
  20. * GPR13 - ADDRESS OF THE STANDARD SAVE AREA. 00022000
  21. * 00023000
  22. * EXIT CONDITIONS - 00024000
  23. * NORMAL - 00025000
  24. * GPR2 = 0 00026000
  25. * 00027000
  26. * ERROR - 00028000
  27. * GPR2 = ERROR MESSAGE CODE NUMBER 00029000
  28. * 00030000
  29. * CALLS TO OTHER ROUTINES - 00031000
  30. * DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND LINE 00032000
  31. * DMKCVTBD - CONVERT BINARY NUMBER TO DECIMAL 00033000
  32. * DMKCVTBH - CONVERT BINARY NUMBER TO HEXADECIMAL 00034000
  33. * DMKCVTDB - CONVERT DECIMAL NUMBER TO BINARY 00035000
  34. * DMKCVTHB - CONVERT HEXADECIMAL NUMBER TO BINARY 00036000
  35. * DMKCVTFP - CONVERT FLOATING POINT NUMBER TO PRINTABLE FORM 00037000
  36. * DMKFREE - TO GET STORAGE FOR AN OUTPUT BUFFER 00038000
  37. * DMKFRET - TO RETURN STORAGE TO THE SYSTEM 00039000
  38. * DMKVATAB - TO MAINTAIN SHADOW PAGE AND SEGMENT TABLES 00040000
  39. * DMKQCNWT - TO SEND MESSAGES TO THE TERMINAL 00041000
  40. * DMKVSPRT - PRINT LINE OF DUMP TO THE SPOOL PRINTER 00042000
  41. * DMKPTRAN - TO BRING USER PAGE INTO STORAGE 00043000
  42. * DMKERMSG - TO TYPE ERROR MESSAGES 00044000
  43. * 00045000
  44. * TABLES/WORKAREAS 00046000
  45. * ECBLOK 00047000
  46. * PSA 00048000
  47. * SAVEAREA 00049000
  48. * VMBLOK 00050000
  49. * OUTPUT BUFFER CONTAINS CONTROL INFORMATION 00051000
  50. * THE FORMAT AND DESCRIPTION OF THE BUFFER ARE IN A DSECT BELOW 00052100
  51. * 00054000
  52. * REGISTER USAGE - 00055000
  53. * GPR0 - FIELD LENGTH REGISTER 00056000
  54. * GPR1 - POINTER TO NEXT FIELD IN BUFFER AND REAL STORAGE ADDR. 00057000
  55. * GPR2 - PARAMETER REGISTER FOR CALLED ROUTINES. 00058000
  56. * GPR3 - ADDRESS OF THE PAGE TABLE 00059000
  57. * GPR4 - BAL REGISTER (3RD LEVEL) 00060000
  58. * GPR5 - POINTER TO THE NEXT ARGUMENT IN THE INPUT BUFFER 00061000
  59. * GPR6 - LENGTH ON NEXT ARGUMENT IN THE INPUT BUFFER 00062000
  60. * GPR7 - BAL REGISTER (1ST LEVEL) 00063000
  61. * GPR8 - BAL REGISTER (2ND LEVEL) 00064000
  62. * GPR9 - ADDRESS OF THE COMMAND LINE 00065000
  63. * GPR10 - BASE REGISTER FOR THE OUTPUT BUFFER 00066000
  64. * GPR11 - ADDRESS OF THE VMBLOK 00067000
  65. * GPR12 - BASE REGISTER FOR THIS PROGRAM 00068000
  66. * GPR13 - ADDRESS OF THE STANDARD SAVEAREA 00069000
  67. * GPR14 - LINKAGE REGISTER 00070000
  68. * GPR15 - LINKAGE REGISTER 00071000
  69. * 00072000
  70. * NOTES - 00073000
  71. * NONE 00074000
  72. * 00075000
  73. * OPERATION - 00076000
  74. * THE COMMAND ROUTINES ARE CALLED BY THE COMMAND 00077000
  75. * ANALYSIS ROUTINE DMKCFM. 00078000
  76. * THE FORMAT AND DESCRIPTION OF EACH COMMAND IS LISTED IN 00079000
  77. * SEPARATE PROLOGUES BELOW. 00080000
  78. *. 00081000
  79. EJECT 00082000
  80. ISEQ 73,80 00083000
  81. COPY OPTIONS 00084000
  82. EJECT 00085000
  83. COPY LOCAL 00086000
  84. EJECT 00087000
  85. PUNCH 'SPB' 00088000
  86. SPACE 2 00089000
  87. DMKCDB START 00090000
  88. SPACE 00091000
  89. MODID DC CL8'DMKCDB' 00092000
  90. USING PSA,R0 00093000
  91. USING VMBLOK,R11 00094000
  92. USING SAVEAREA,R13 00095000
  93. SPACE 3 00096000
  94. EXTRN DMKERMSG 00097000
  95. EXTRN DMKVSPRT @V200820 00098000
  96. EXTRN DMKCVTBD,DMKCVTBH,DMKCVTDB,DMKCVTHB,DMKCVTFP 00099000
  97. EXTRN DMKSYSRM 00100000
  98. EXTRN DMKSCNFD 00101000
  99. EXTRN DMKDMPTR 00102000
  100. EXTRN DMKVATAB @V200820 00103000
  101. EXTRN DMKSYSAP @V4075A0 00103100
  102. EJECT 00104000
  103. * 00105000
  104. * OUTPUT BUFFER DSECT 00106000
  105. * 00107000
  106. SPACE 00108000
  107. USING DISPBFR,R10 00109000
  108. SPACE 00110000
  109. DISPBFR DSECT 00111000
  110. BUFBUF DS CL132 132 CHARACTER BUFFER 00112000
  111. BUFPNT DS F POINTER TO NEXT AVAILABLE BYTE 00113000
  112. BFRCNT DS H BYTE COUNT OF CHARACTERS IN BUFFER 00114000
  113. BUFMAX DS H MAXIMUM VALUE OF BUFCNT 00115000
  114. BUFTRC DS H NUMBER OF BYTES TO BE TRANSLATED 00116000
  115. BUFLAG DS XL1 FLAG BYTE 00117000
  116. * 00118000
  117. * X'80' - THE OUTPUT IS TO BE PRINTED 00119000
  118. * X'40' - THIS IS THE 1ST LINE OF OUTPUT 00120000
  119. * X'20' - THIS DUMP LINE IS THE SAME AS THE LAST LINE 00121000
  120. * X'10' - THIS LINE HAS BEEN TRANSLATED TO EBCDIC 00122000
  121. * X'08' - INVALID VIRTUAL PAGE WITHIN ADDRESS RANGE 00123000
  122. * 00124000
  123. LINECNT DS XL1 COUNT OF LINES ON PAGE OF DUMP 00125000
  124. INCRMT DS H ADDRESS INCREMENT 00126000
  125. DS H 00127000
  126. IDCHAR DS CL3 LINE IDENTIFICATION CHARACTERS 00128000
  127. DS XL1 00129000
  128. NXTADD DS F NEXT ADDRESS TO BE DISPLAYED 00130000
  129. ENDADD DS F LAST ADDRESS TO BE DISPLAYED 00131000
  130. TBEGADD DS F TRUE BEGIN ADDRESS @VM08524 00132000
  131. TENDADD DS F TRUE END ADDRESS @VM08524 00133000
  132. ENDMAX DS F MAXIMUM END ADDRESS @VM08524 00134000
  133. FLDLEN DS F MAXIMUM ADDRESS LENGTH @VM08524 00135000
  134. FIELD DS 3D WORK AREA 00136000
  135. LNSAVE DS XL32 DUMP SAVE AREA 00137000
  136. WRKLINE DS XL32 WORK AREA FOR LINE COMP TEST @VA05405 00137500
  137. REGSAVE DS 4F TEMPORARY SAVE AREA FOR R0-R3 00138000
  138. BFRSIZE EQU (*-BUFBUF+7)/8 BUFFER SIZE IN DOUBLE WORDS @VM08524 00139000
  139. SPACE 3 00140000
  140. * EQUATES FOR BUFLAG 00141000
  141. PRINTER EQU X'80' 00142000
  142. FIRSTL EQU X'40' 00143000
  143. NFIRSTL EQU X'BF' 00144000
  144. SAMEL EQU X'20' 00145000
  145. NSAMEL EQU X'DF' 00146000
  146. TRANSLAT EQU X'10' 00147000
  147. INVLD EQU X'08' INVALID VIRTUAL PAGE WITHIN @V304635 00148000
  148. * ADDRESS RANGE 00149000
  149. EJECT 00150000
  150. DMKCDB CSECT 00151000
  151. SPACE 2 00152000
  152. * EQUATES FOR SAVEWRK1 ON DUMP OR DISPLAY 00153000
  153. DISPC EQU X'00' 00154000
  154. DUMPC EQU X'80' 00155000
  155. REALC EQU X'00' 00156000
  156. VIRTC EQU X'40' 00157000
  157. RANGE EQU X'20' 00158000
  158. DISLEN EQU X'10' LENGTH RANGE INDICATION @V200930 00159000
  159. HEXLOC EQU X'08' INDICATES A LOCATION REQUEST 00160000
  160. BYPGPR EQU X'02' BYPAS DUMP REGS ON NEXT ARG @V200930 00161000
  161. PROC1 EQU X'01' INDICATE AT LEAST ONE OPERAND PROCESSED 00162000
  162. SPACE 00163000
  163. * EQUATES FOR SAVEWRK1+1 ON DUMP OR DISPLAY 00164000
  164. CONVLEN EQU X'80' INDICATE TO CONVERT LENGTH @V200930 00165000
  165. MPREF EQU X'08' @V4075A0 00165100
  166. NPREF EQU X'04' @V4075A0 00165200
  167. CHEX EQU X'01' 00166000
  168. SPACE 2 00167000
  169. ********************************************************************* 00168000
  170. * SAVEWRK1 SWITCH USAGE DURING DUMP OR DISPLAY 00169000
  171. * SAVEWRK1 00170000
  172. * X'80' - 0 = DISPLAY, 1 = DUMP 00171000
  173. * X'40' - 0 = REAL MACHINE, 1 = VIRTUAL MACHINE 00172000
  174. * X'20' - 0 = ONLY ONE ADDRESS, 1 = RANGE OF ADDRESSES 00173000
  175. * X'10' - 0 = NO LENGTH, 1 = LENGTH RANGE 00174000
  176. * 00175000
  177. * 00176000
  178. * 00177000
  179. * SAVEWRK1+1 00178000
  180. * X'80' - FIELD CONTAINS AN ARGUMENT 00179000
  181. * X'40' - LOGICAL CARRIAGE RETURN FOUND 00180000
  182. * X'08' - 1= TREAT ADDRESS AS MAIN PREFIXED @V4075A0 00180100
  183. * X'04' - 1= TREAT ADDRESS AS ATTACHED PROC PREFIXED @V4075A0 00180200
  184. * X'01' - HEXIDECIMAL FIELD CONVERSION 00181000
  185. ********************************************************************9 00182000
  186. EJECT 00183000
  187. *********************************************************************** 00245000
  188. * * 00246000
  189. * 'DISPLAY' * 00247000
  190. * * 00248000
  191. *********************************************************************** 00249000
  192. *. 00250000
  193. * SUBROUTINE NAME - 00251000
  194. * DMKCDBDI 00252000
  195. * FUNCTION - 00253000
  196. * TO DISPLAY AT THE TERMINAL VIRTUAL STORAGE LOCATIONS, REGISTER 00254000
  197. * AND PSW. 00255000
  198. * 00256000
  199. * COMMAND FORMAT - 00257000
  200. * +---------+-----------------------------------------+ 00258000
  201. * | DISPLAY | LHEXLOC1 <<-> > | 00259000
  202. * | D | THEXLOC1 <<:> > | 00260000
  203. * | | KHEXLOC1 <<-HEXLOC2> > | 00261000
  204. * | | 0 <<:HEXLOC2> > | 00262000
  205. * | | <<-END> > | 00263000
  206. * | | <<:END> > | 00264000
  207. * | | <<.> > | 00265000
  208. * | | <<.BYTECOUNT> > | 00266000
  209. * | | <<.END> > | 00267000
  210. * | | | 00268000
  211. * | | GREG1 <<-> > | 00269000
  212. * | | XREG1 <<:> > | 00270000
  213. * | | YREG1 <<-REG2> > | 00271000
  214. * | | 0 <<:REG2> > | 00272000
  215. * | | <<-END> > | 00273000
  216. * | | <<:END> > | 00274000
  217. * | | <<.> > | 00275000
  218. * | | <<.REGCOUNT> > | 00276000
  219. * | | <<.END> > | 00277000
  220. * | | | 00278000
  221. * | | PSW | 00279000
  222. * | | CSW | 00280000
  223. * | | CAW | 00281000
  224. * +---------+-----------------------------------------+ 00282000
  225. * 00283000
  226. * OPERATION - 00284000
  227. * 00285000
  228. * 1. SET A FLAG IN SAVEWRK1 TO INDICATE A VIRTUAL DISPLAY 00286000
  229. * OPERATION. THEN BRANCH TO THE ROUTINES COMMON TO ALL 00287000
  230. * 00289000
  231. * THE FOLLOWING IS A DESCRIPTION OF THE OPERATION OF 00290100
  232. * DISPLAY REFERED TO BY THE OTHER PROLOGS IN THIS LISTING. 00291000
  233. * 00292000
  234. * 2. CALL DMKFREE TO OBTAIN A BUFFER. THIS BUFFER WILL CONTAIN 00293000
  235. * THE DATA,FLAGS,ADDRESS INCREMENT COUNTS, AND POINTERS USED 00294000
  236. * IN CONSTRUCTING A LINE OF OUTPUT. 00295000
  237. * 3. SET UP THE NUMBER OF CHARACTERS PER LINE AND TRANSLATE COUN 00296100
  238. * 4. GO TO STEP 20 TO OUTPUT A LINE AND REINITIALIZE THE BUFFER. 00298000
  239. * 5. CALL DMKSCNFD TO LOCATE THE TYPE OF REQUEST(E.G. PSW,X,T). 00299000
  240. * IF NO ARGUMENTS AT ALL HAVE BEEN PROCESSED, CALL DMKERMSG 00300000
  241. * TO SEND ERROR MESSAGE DMKCDB026E ON A DISPLAY OR DMKCDB033E 00301000
  242. * FOR A DCP. IF PROCESSING HAS BEEN DONE, EXIT. 00302100
  243. * 6. CHECK THE ARGUMENT FOR A VALID TYPE. IF NONE FOUND 00305000
  244. * ASSUME THE SAME TYPE AS THE LAST VALID ARGUMENT. 00306000
  245. * IF LAST ARGUMENT WAS PSW, CSW, OR CAW THAN ASSUME TYPE L 00307000
  246. * AND INSERT THE VALID TYPE AND RESCAN. 00308000
  247. * GO TO THE SUBROUTINE TO HANDLE THE PARTICULAR TYPE. 00309000
  248. * 7. DISCSW-CHECK IF THIS IS A DISPLAY VIRTUAL REQUEST. IF NOT, 00310000
  249. * CALL DMKERMSG TO OUTPUT ERROR MESSAGE DMKCDB003E. IF OK, 00311000
  250. * TRANS IN USER PAGE ZERO. CONVERT THE DOUBLE WORD AT LOC. 00312000
  251. * 64 TO PRINTABLE FORM VIA CALLS TO DMKCVTBH. PLACE CONVERTED 00313000
  252. * DATA INTO BUFFER, SET UP BYTE COUNT, AND GO TO STEP 4. 00314000
  253. * 8. DISCAW-CHECK IF DISPLAY VIRTUAL COMMAND. IF NOT, CALL 00315000
  254. * DMKERMSG TO SEND ERROR MESSAGE DMKCDB003E. IF OK, TRANS IN 00316000
  255. * USER PAGE ZERO. CONVERT THE DATA AT LOCATION 72 TO 00317000
  256. * PRINTABLE FORM VIA CALL TO DMKCVTBH. PLACE THIS DATA INTO 00318000
  257. * THE BUFFER, SET UP THE BYTE COUNT, AND GO TO STEP 4. 00319000
  258. * 9. DISPSW WHEN 'P' IS ENTERED IN THE COMMAND LINE, CHECK 00320100
  259. * TO SEE IF THIS A VIRTUAL DISPLAY REQUEST. IF NOT, CALL 00324000
  260. * DMKERMSG TO SEND ERROR MESSAGE DMKCDB003E. IF OK, CONVERT 00325000
  261. * THE PSW FROM THE VMBLOK TO PRINTABLE FORM VIA CALLS TO 00326000
  262. * DMKCVTBH. PLACE THIS DATA IN THE OUTPUT BUFFER,SET THE BYTE 00327000
  263. * COUNT, AND GO TO STEP 4. 00328000
  264. * 10. DISGPR WHEN 'G' IS ENTERED IN THE COMMAND LINE, CHECK 00332100
  265. * IF THIS IS A DISPLAY VIRTUAL DISPLAY REQUEST. IF NOT, CALL 00336000
  266. * DMKERMSG TO SEND ERROR MESSAGE DMKCDB003E. THEN GOSTEP 16 00337100
  267. * TO INITIALIZE THE BEGINNING END ENDING ADDRESSES. GO 00337200
  268. * TO STEP 10A. 00337300
  269. * 10A. DISCOMM-THIS IS A SUBROUTINE USED BY SEVERAL OTHERS TO 00344000
  270. * SET UP THE DATA IN THE BUFFER. FIRST CHECK IF AT THE 00345000
  271. * BEGINNING OF THE BUFFER. IF NOT GO TO STEP 10B. IF SO, 00346000
  272. * GO TO STEP 19 TO BUILD A LINE HEADER. THEN CONTINUE. 00347000
  273. * 10B. CONVERT THE NEXT PIECE OF DATA TO BE DISPLAYED VIA A CALL 00348000
  274. * TO DMKCVTBH. PLACE THIS DATA IN THE BUFFER. ADJUST THE 00349000
  275. * BUFFER POINTER AND BUFFER COUNT. THEN IF THE BUFFER IS 00350000
  276. * FULL, GO TO STEP 20 TO OUTPUT THE BUFFER AND REINITIALIZE 00351000
  277. * IT. IF THE BUFFER IS NOT FULL, GO TO STEP 17 TO GET THE 00352000
  278. * NEXT ADDRESS TO DISPLAY. 00353000
  279. * 11. DISFPR-IF ENTERED FROM FINDING 'Y' REQUEST IN THE COMMAND 00354000
  280. * LINE, CHECK IF THIS IS A VIRTUAL DISPLAY. IF NOT, CALL 00355000
  281. * DMKERMSG TO SEND ERROR MESSAGE DMKCDB003E. GO TO 16 00356100
  282. * TO INITIALIZE THE BEGINNING AND ENDING ADDRESSES. 00356200
  283. * THEN VIA CALLS TO DMKCVTBH, CONVERT THE VIRTUAL FLOATING 00361000
  284. * POINT REGISTERS FOUND IN THE VMBLOK TO PRINTABLE 'HEX' AND 00362000
  285. * ALSO CALL DMKCVTFP TO GET THE FLOATING POINT FORMAT. PLACE 00363000
  286. * THIS IN THE BUFFER AND GO TO STEP 20 TO OUTPUT. 00364000
  287. * 12. DISECR-IF 'X' WAS FOUND IN THE COMMAND LINE, CHECK IF THIS 00365000
  288. * IS A VIRTUAL DISPLAY. IF NOT, CALL DMKERMSG TO SEND 00366000
  289. * ERROR MESSAGE DMKCDB003E. THEN CHECK IF RUNNING A 00367100
  290. * VIRTUAL CP SYSTEM. IF NOT, CONVERT CR0 FOUND IN THE VMBLOK 00369000
  291. * AND GO TO STEP 20 TO OUTPUT IT. IF RUNNING A VIRTUAL CP, 00370000
  292. * GO TO STEP 16 TO INITIALIZE BEGINNING AND ENDING ADDRESS. 00371000
  293. * LOAD THE VALUE OF THE NEXT CONTROL 00373100
  294. * REGISTER AND GO TO STEP 10B TO FORMAT AND PROCESS. 00374000
  295. * WHEN THE NEXT REGISTER IS NEEDED CONTROL WILL BE RETURNED 00375000
  296. * TO THIS ROUTINE TO GET THE DATA. 00376000
  297. * 13. DISLOC SET A FLAG TO INDICATE A HEXLOC REQUEST. SET UP 00377100
  298. * THE MAXIMUM ENDING ADDRESS FOR EITHER THE VIRTUAL 00377200
  299. * MACHINE OR REAL MACHINE DEPENDING ON REQUEST. THEN GO TO 00385000
  300. * STEP 16 TO INITIALIZE BEGINNING AND ENDING ADDRESSES. 00386000
  301. * IF A VIRTUAL REQUEST, TRANS IN THE NEXT ADDRESS TO BE 00387000
  302. * DISPLAYED. IF A REAL REQUEST, JUST PICK UP THE NEXT REAL 00388000
  303. * ADDRESS. IN AN AP SYSTEM THE ADDRESS IS TRANSLA 00389100
  304. * BASED UPON THE M/N SPECIFICATION AND WHICH PROC R WE ARE 00389200
  305. * ON. THE PURPOSE IS TO REACH THE PROPER PAGE GIV HE 00389300
  306. * VALUES OF THE TWO PREFIX REGISTERS. 00389400
  307. * GO TO STEP 10A. TO FORMAT THE OUTPUT. CONTROL W BE 00389500
  308. * RETURNED TO THIS STEP FOR EACH ADDRESS UNTIL HAVE DIS- 00390000
  309. * PLAYED ALL THE REQUESTED LOCATIONS. 00391000
  310. * IN AN AP SYSTEM THE PARAMETER PREFIX 'M' CAUSES 00391100
  311. * ADDRESS TO BE TREATED AS SEEN THROUGH THE MAIN ESSOR'S 00391200
  312. * PREFIX REGISTER. THE LETTER 'N' DESIGNATES THE CHED 00391300
  313. * PROCESSOR. OTHERWISE THE ADDRESS IS TREATED AS BSOLUTE 00391400
  314. * ADDRESS. 'N' IS VALID ONLY WHEN THE ATTACHED PR SOR IS 00391500
  315. * IN OPERATION. 'M' IS VALID IF THE SYSTEM HAS BE EN'D 00391600
  316. * FOR AP OPERATION 00391700
  317. * 14. DISLOCT - IF A 'T' REQUEST IS FOUND, SET A FLAG TO 00392000
  318. * INDICATE THAT EBCDIC TRANSLATION FOR EACH LINE OF PRINT 00393000
  319. * IS TO TAKE PLACE. THEN GO TO STEP 13. 00394000
  320. * 15. DISKEY-IF ENTERED VIA FINDING 'K' IN THE COMMAND, CHECK 00395000
  321. * IF THIS IS A DISPLAY VIRTUAL. IF NOT, CALL DMKERMSG TO 00396000
  322. * SEND ERROR MESSAGE DMKCDB003E. GO TO STEP 16 TO ILIZE THE 00397100
  323. * ADDRESSES.THEN SCAN THE SWPTABLES FOR THE REQUESTED 00401000
  324. * ADDRESSES FORMATTING THE LINES OF OUTPUT. FOR EACH LINE 00402000
  325. * GO TO STEP 20 TO OUTPUT. 00403000
  326. * 16. DISINIT-THIS IS THE SUBROUTINE USED TO INITIALIZE THE 00404000
  327. * RANGE OF ADDRESSES FOR LOC,REGISTER, AND KEY REQUESTS. 00405000
  328. * FIRST CHECK IF ANY ADDRESS HAS BEEN SPECIFIED. IF NOT, 00406000
  329. * SET THE BEGINNING ADDRESS TO ZERO AND RETURN. IF HAVE AN 00407000
  330. * ADDRESS, SCAN THRU THE ARGUMENT CHECKING FOR ':','_', OR 00408000
  331. * BLANK. IF BLANK IS FOUND GO TO STEP 16A. IF ':' OR '-' 00409000
  332. * AND THE ENDING FIELD IS IN THE SAME ARGUMENT, COMPUTE THE 00410000
  333. * LENGTHS OF THE BEGINNING AND ENDING FIELDS AND GO TO 00411000
  334. * STEP 16B. 00412000
  335. * IF THE DELIMITER IS NOT : OR - THEN TEST FOR A DOT '.' 00413000
  336. * IF IT IS A DOT CHECK NEXT ARGUMENT. IF IT IS BLANK 00414000
  337. * THEN GO TO STEP 16C FOR DEFUALT END, ELSE CONVERT 00415000
  338. * THE FIELD AS A HEX LENGTH AND SAVE TO CALCULATE 00416000
  339. * THE END ADDRESS. 00417000
  340. * 16A. - CALL DMKSCNFD TO SEE IF HAVE A ':' OR '-' AS THE NEXT 00418000
  341. * ARGUMENT. IF THERE IS AND THE 'HEXLOC2' IS IN THE 00419000
  342. * SAME ARGUMENT, GO TO STEP 16B. IF HAVE ':' OR'-' WITH 00420000
  343. * NOTHING ELSE, CALL DMKSCNFD TO PICK UP NEXT ARGUMENT. 00421000
  344. * IF NONE FOUND, GO TO STEP 16C. IF HAVE ONE, CONTINUE. 00422000
  345. * IF THE DELIMITER WAS A DOT '.' THEN THE FIELD IS A 00423000
  346. * LENGTH SPECIFICATION. CONVERT IT FROM HEX AND GIVE AN 00424000
  347. * ERROR MESSAGE IF THAT FAILS. IF THE CONVERTION 00425000
  348. * IS GOOD SAVE THE VALUE TO CALCULATE THE END ADDRESS. 00426000
  349. * 16B. CHECK IF THE ENDING ADDRESS IS THE WORD 'END'. IF SO GO 00427000
  350. * TO STEP 16C. IF A 'HEXLOC', CALL DMKCVTHB TO CONVERT 00428000
  351. * TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND 00429000
  352. * ERROR MESSAGE DMKCDB004E. IF THE CONVERT IS OK, USE THE 00430000
  353. * NUMBER TO INITIALIZE THE ENDING ADDRESS AND CONTINUE. 00431000
  354. * 16C. CALL DMKCVTHB TO CONVERT THE BEGINNING ADDRESS TO BINARY. 00432000
  355. * IF THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR 00433000
  356. * MESSAGE DMKCDB004E. IF CONVERT IS GOOD, INITIALIZE THE 00434000
  357. * BEGINNING ADDRESS WITH THIS NUMBER. THEN CHECK IF 00435000
  358. * BEGINNING ADDRESS IS LARGER THAN THE ENDING NUMBER. IF 00436000
  359. * IT IS , CALL DMKERMSG TO SEND ERROR MESSAGE DMKCDB009E. 00437000
  360. * IF THE ADDRESS IS LARGER THAN THE MAXIMUM AND IT IS 00438000
  361. * A HEXLOC, CALL DMKERM TO SEND ERROR MESSAGE DMKCDB160E. 00439000
  362. * IF IT IS A REGISTER, SEND ERROR MESSAGE DMKCDB010E. IF 00440000
  363. * ADDRESS IS OK - RETURN. 00441000
  364. * 17. DISNEXTA-THIS IS THE SUBROUTINE TO GET THE NEXT ADDRESS. 00442000
  365. * FIRST - ADD THE INCREMENT VALUE TO THE PRESENT ADDRESS. 00443000
  366. * IF THE RESULT IS LARGER THAN THE ENDING ADDRESS,GO TO 00444000
  367. * STEP 17A. IF NOT STORE THE NEW ADDRESS IN THE BUFFER AND 00445000
  368. * RETURN. 00446000
  369. * 19. DISHEAD-THIS SUBROUTINE FORMATS THE LINE HEADER AND 00462000
  370. * TRAILER. FIRST CHECK IF THIS IS A LOCATION REQUEST. IF IT 00463000
  371. * IS, GO TO STEP 19A. IF NOT, CALL DMKCVTBD TO CONVERT THE 00464000
  372. * REGISTER NUMBER TO DECIMAL. SET REGISTER NUMBER IN THE 00465000
  373. * BUFFER AND RETURN. 00466000
  374. * 19A. IF THIS IS THE FIRST LINE, GO TO STEP 19C. IF LINES ARE 00467000
  375. * ALREADY BEING SUPPRESSED, GO TO STEP 19D. IF NEITHER OF 00468000
  376. * THESE, CHECK IF THIS LINE IS THE SAME AS THE LAST. IF NOT 00469000
  377. * GO TO STEP 19C. IF IT IS, SET UP THE SUPPRESSED LINES 00470000
  378. * MESSAGE. 00471000
  379. * 19B. DUMP THE ADDRESS TO THE NEXT LINE. CALL DMKCVTBH 00472000
  380. * TO CONVERT THIS ADDRESS TO HEX AND INSERT THIS ADDRESS 00473000
  381. * INTO THE BUFFER. THEN GO TO STEP 17 TO CONTINUE. 00474000
  382. * 19C. CALL DMKCVTBH TO CONVERT THE ADDRESS TO HEX. THEN IF 00475000
  383. * THIS IS A TRANSLATE REQUEST, TRANSLATE THE LINE TO EBCDIC 00476000
  384. * AND RETURN. IF NOT TRANSLATE, JUST RETURN. 00477000
  385. * 19D. IF THIS LINE IS THE SAME AS THE LAST ONE, GO TO STEP 19B. 00478000
  386. * IF NOT, GO TO STEP 20 TO OUTPUT THE SUPPRESSED LINES 00479000
  387. * MESSAGE. THEN GO TO STEP 19C. 00480000
  388. * 20. DISWRITE-THIS SUBROUTINE WILL OUTPUT A LINE OF DATA TO 00481000
  389. * THE TERMINAL. IF THE BYTE COUNT FOR THE DATA IN THFFER IS 00482100
  390. * GREATER THAN ZERO, CALL DMKQCNWT TO SEND THE DATA. 00482200
  391. * 20B. RESET THE BUFFER POINTER TO THE START OF THE BUFFER. 00489000
  392. * BLANK OUT THE DATA PORTION OF THE BUFFER AND RETURN. 00490000
  393. * 00491000
  394. * RESPONSES - 00492000
  395. * 00493000
  396. * THE FOLLOWING ARE TYPICAL RESPONSES TO THE VARIOUS 00494000
  397. * DISPLAY COMMANDS: 00495000
  398. * 00496000
  399. * HEXLOCS - 00497000
  400. * XXXXXX = WORD1 WORD2 WORD3 WORD4 * EBCIDIC TRANSLATION * 00498000
  401. * 00499000
  402. * KEYS - 00500000
  403. * XXXXXX TO XXXXXX KEY = XX 00501000
  404. * 00502000
  405. * GREG - 00503000
  406. * GPR 0 = GREG0 GREG1 GREG2 GREG3 00504000
  407. * GPR 4 = GREG4 GREG5 00505000
  408. * 00506000
  409. * YREGS - 00507000
  410. * FPR 0 = XXXXXXXXXXXXXXXX .XXXXXXXXXXXXXXXXX E XX 00508000
  411. * FPR 2 = XXXXXXXXXXXXXXXX .XXXXXXXXXXXXXXXXX E XX 00509000
  412. * 00510000
  413. * XREGS - 00511000
  414. * ECR 0 = XXXXXXXX 00512000
  415. * 00513000
  416. * PSW - 00514000
  417. * PSW = XXXXXXXX XXXXXXXX 00515000
  418. * 00516000
  419. * CAW - 00517000
  420. * CAW XXXXXXXX 00518000
  421. * 00519000
  422. * CSW - 00520000
  423. * CSW XXXXXXXX XXXXXXXX 00521000
  424. * 00522000
  425. * 00523000
  426. * ERROR MESSAGES - 00524000
  427. * DMKCDB004E INVALID HEXLOC - (HEXLOC) 00525000
  428. * DMKCDB009E INVALID RANGE - (RANGE) 00526000
  429. * DMKCDB010E INVALID REGISTER - (REGISTER) 00527000
  430. * DMKCDB026E OPERAND MISSING OR INVALID 00528000
  431. * DMKCDB160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00529000
  432. *. 00530000
  433. SPACE 4 00531000
  434. DMKCDBDI RELOC DISPLAY VIRTUAL MACHINE 00532000
  435. MVI SAVEWRK1,DISPC+VIRTC REMEMBER TO DISPLAY VIRTUAL STORAG 00533000
  436. B DISGETB 00534000
  437. EJECT 00535000
  438. *********************************************************************** 00585000
  439. * * 00586000
  440. * 'DCP' * 00587000
  441. * * 00588000
  442. *********************************************************************** 00589000
  443. *. 00590000
  444. * 00591000
  445. * SUBROUTINE NAME - 00592000
  446. * DMKCDBDC 00593000
  447. * FUNCTION - 00594000
  448. * 00595000
  449. * TO DISPLAY REAL STORAGE LOCATIONS. 00596000
  450. * 00597000
  451. * COMMAND FORMATS - 00598000
  452. * +--------+------------------------------------------+ 00599000
  453. * | DCP | <M|N>LHEXLOC1 <<-> > | 00600000
  454. * | DCP | <M|N>THEXLOC1 <<:> > | 00601000
  455. * | | <M|N>HEXLOC1 <<-HEXLOC2> > | 00602000
  456. * | | 0 <<:HEXLOC2> > | 00603000
  457. * | | <<-END> > | 00604000
  458. * | | <<:END> > | 00605000
  459. * | | <<.> > | 00606000
  460. * | | <<.BYTECOUNT>> | 00607000
  461. * | | <<.END> > | 00608000
  462. * +--------+------------------------------------------+ 00609000
  463. * 00610000
  464. * OPERATION - 00611000
  465. * 1. SET A BIT IN SAVEWRK1 TO INDICATE THAT THIS IS A 00612000
  466. * DISPLAY OF REAL STORAGE. THE SAME ROUTINES 00613000
  467. * FOR DISPLAY ARE USED FOR DCP AND ARE DESCRIBED IN 00614000
  468. * THE PROLOGUE FOR DISPLAY. 00615000
  469. * 00616000
  470. * ERROR MESSAGES - 00617000
  471. * DMKCDB003E INVALID OPTION - (OPTION) 00618000
  472. * DMKCDB004E INVALID HEXLOC - (HEXLOC) 00619000
  473. * DMKCDB009E INVALID RANGE - (RANGE) 00620000
  474. * DMKCDB033E HEXLOC MISSING OR INVALID 00621000
  475. * DMKCDB160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00622000
  476. *. 00623000
  477. EJECT 00624000
  478. DMKCDBDC RELOC DISPLAY REAL STORAGE 00625000
  479. MVI SAVEWRK1,DISPC+REALC REMEMBER TO DISPLAY REAL STORAGE 00626000
  480. B DISGETB 00627000
  481. EJECT 00628000
  482. DISGETB LA R0,BFRSIZE LOAD SIZE OF BUFFER 00629000
  483. CALL DMKFREE GET OUTPUT BUFFER 00630000
  484. STCM R1,7,SAVEWRK4+1 SAVE ADDRESS OF BUFFER 00631000
  485. STC R0,SAVEWRK4 AND THE LENGTH IN DOUBLE WORDS 00632000
  486. LR R10,R1 LOAD BASE REGISTER 00633000
  487. MVI SAVEWRK1+1,X'00' CLEAR @V200930 00634000
  488. MVI SAVEWRK1+2,X'00' CLEAR LAST REQ @V200930 00635000
  489. XC BFRCNT(8),BFRCNT ZERO COUNT AND FLAGS 00636000
  490. MVC BUFMAX,=H'50' SET MAX BYTE COUNT 00639000
  491. MVC BUFTRC,F16+2 SET TRANSLATE COUNT @VA03720 00640000
  492. DISGETN BAL R4,DISWRITE WRITE OUT BUFFER & REINITIALIZE 00647000
  493. CALL DMKSCNFD GET NEXT OPERAND @VM08515 00648000
  494. BNZ DISEND NO MORE ARGUMENTS 00649000
  495. OI SAVEWRK1,PROC1 FLAG AS PROCESS AT LEAST ONE 00650000
  496. DISRSTFL STM R0,R1,SAVEWRK8 SAVE ARG. LENGTH AND ADDRESS 00656000
  497. MVC FLDLEN(4),F6 SET MAX FIELD LENGTH @VM08524 00657000
  498. NI SAVEWRK1,X'FF'-HEXLOC RESET FLAG @V200930 00658000
  499. LR R5,R1 STARTING ADDRESS TO R5 00659000
  500. LR R6,R0 LENGTH TO R6 00660000
  501. * 00661000
  502. * GPR 5 CONTAINS THE ADDRESS OF THE FIRST BYTE OF THE FIELD. 00662000
  503. * GPR 6 CONTAINS THE LENGTH (IN BYTES) OF THE FIELD. 00663000
  504. * 00664000
  505. TM VMRSTAT,VMLOGOFF GONE INTO LOGOFF WHILE OUT? 00665000
  506. BO EXIT YES, GET OUT 00666000
  507. NI BUFLAG,0 RESET ALL FLAGS @V4075A0 00667100
  508. DISGTYPE CLI 0(R5),C'P' MAYBE PSW ? 00674000
  509. BE DISPSWX YES 00675000
  510. CLI 0(R5),C'G' GENERAL PURPOSE REGISTER(S) ? 00676000
  511. BE DISGPR YES 00677000
  512. CLI 0(R5),C'Y' FLOATING POINT REGISTER(S) ? 00678000
  513. BE DISFPR YES 00679000
  514. CLI 0(R5),C'L' LOCATION REQUEST ? 00680000
  515. BE DISPTEST YES @V4075A0 00681100
  516. CLI 0(R5),C'T' PREVENT D T COMMAND WITHOUT HRC023DK 00681200
  517. BNE DISPT STARTING LOCATION HRC023DK 00681300
  518. LA R0,1 HRC023DK 00681400
  519. CR R0,R6 HRC023DK 00681500
  520. BE CDB026 HRC023DK 00681600
  521. DISPT EQU * HRC023DK 00681700
  522. CLI 0(R5),C'T' STORAGE LOCATION(S) + EBCDIC ? 00682000
  523. BE DISLOCT YES 00683000
  524. CLI 0(R5),C'K' STORAGE KEY(S) ? 00684000
  525. BE DISKEY YES 00685000
  526. CLC 0(3,R5),=C'CSW=' CSW ? 00686000
  527. BE DISCSW YES 00687000
  528. CLC 0(3,R5),=C'CAW=' CAW ? 00688000
  529. BE DISCAW YES 00689000
  530. CLI 0(R5),C'X' CONTROL REGISTERS ? 00690000
  531. BE DISECR YES 00691000
  532. CLI 0(R5),C'N' IF USER SPECIFIED M|N, @V4075A0 00691100
  533. BE ITSN @V4075A0 00691150
  534. CLI 0(R5),C'M' @V4075A0 00691200
  535. BE ITSM CHECK VALIDITY AND SET FLAGS @V4075A0 00691250
  536. CLI SAVEWRK1+2,X'00' PREVIOUS REQ VALID ?? @V200930 00692000
  537. BNE SETR5 YES, DEFAULT TO LAST REQ @V200930 00693000
  538. DEFAULTL EQU * @V4075A0 00693100
  539. MVI SAVEWRK1+2,C'L' DEFAULT TO LOCATION @V200930 00694000
  540. SETR5 BCTR R5,R0 BACKUP 1 POSITION @V200930 00695000
  541. LA R6,1(R6) UP COUNT BY ONE @V200930 00696000
  542. MVC 0(1,R5),SAVEWRK1+2 SET REQ CHARACTER @V200930 00697000
  543. B DISGTYPE ANALYSE TYPE @V200930 00698000
  544. SPACE 4 00699000
  545. DISEND EQU * 00700000
  546. TM SAVEWRK1,PROC1 ANY PROCESSING DONE ??? 00701000
  547. BO EXIT YES, JUST EXIT WITHOUT ERROR MSG @V4075A0 00702100
  548. TM SAVEWRK1,VIRTC WAS IT DCP? (NOT VIRTC) @V4075A0 00702200
  549. BZ CDB033 YES - SEND CDB033 MESSAGE 00708000
  550. B CDB026 MUST BE DISPLAY 00711000
  551. SPACE 2 00711100
  552. ITSM L R15,=A(DMKSYSAP) IF NOT GEN'D FOR AP, @V4075A0 00711125
  553. CLI 0(R15),C'Y' VIA SYSCOR MACRO @V4075A0 00711150
  554. BNE CDB026 M,N NOT ACCEPTABLE @V4075A0 00711175
  555. OI SAVEWRK1+1,MPREF USER SPECIFIED 'M' @V4M0120 00711210
  556. MNCOMM TM SAVEWRK1,VIRTC M,N ONLY FOR CP STORAGE @V4075A0 00711225
  557. BO CDB026 ERROR IF VIRTUAL DIS/DUMP @V4075A0 00711250
  558. LA R5,1(R5) POINT TO NEXT CHAR IN PARM @V4075A0 00711275
  559. BCT R6,DISGTYPE REDUCE COUNT & RESCAN PARM @V4075A0 00711300
  560. B DEFAULTL NO MORE CHARS, DEFAULT TO 'L'@V4075A0 00711325
  561. SPACE 2 @V4075A0 00711350
  562. ITSN TM APSTAT1,APUOPER 'N' IS NOT VALID WHEN THE @V4075A0 00711375
  563. BNO CDB026 ATTACHED PROCESSOR NOT UP @V4075A0 00711400
  564. OI SAVEWRK1+1,NPREF USER SPECIFIED 'N' @V4075A0 00711425
  565. B MNCOMM @V4075A0 00711450
  566. SPACE 2 @V4075A0 00711475
  567. EJECT 00712000
  568. * 00713000
  569. * DISPLAY CSW 00714000
  570. * 00715000
  571. DISCSW TM SAVEWRK1,VIRTC DCP? (NOT VIRTC) @V4075A0 00716100
  572. BZ CDB003 YES - CSW NOT ALLOWED 00717000
  573. MVI SAVEWRK1+2,X'00' DEFAULT TO LOC @V200930 00720000
  574. CL R6,F3 OVER THREE CHARACTERS IN ARGUMENT ???? 00721000
  575. BH CDB003 BRANCH TO ERROR MESSAGE IF THERE IS 00722000
  576. MVC BUFBUF(4),=C'CSW=' . . 00723000
  577. LA R1,0 SET UP TO BRING IN PAGE ZERO 00724000
  578. TRANS 2,1,OPT=(BRING,DEFER) BRING IN PAGE ZERO 00725000
  579. L R1,64(,R2) LOAD FIRST HALF OF CSW 00726000
  580. CALL DMKCVTBH CONVERT TO PRINTABLE FORM 00727000
  581. STCM R0,B'1111',BUFBUF+6 @V4075A0 00728100
  582. STCM R1,B'1111',BUFBUF+10 @V4075A0 00729100
  583. L R1,68(,R2) LOAD SECOND HALF OF CSW 00730000
  584. CALL DMKCVTBH CONVERT 00731000
  585. STCM R0,B'1111',BUFBUF+15 @V4075A0 00732100
  586. STCM R1,B'1111',BUFBUF+19 @V4075A0 00733100
  587. MVC BFRCNT,=H'23' SET UP BYTE COUNT 00734000
  588. B DISGETN OUTPUT BUFFER & GET NEXT ARGUMENT 00735000
  589. EJECT 00736000
  590. * 00737000
  591. * DISPLAY CAW 00738000
  592. * 00739000
  593. DISCAW TM SAVEWRK1,VIRTC DCP? (NOT VIRTC) @V4075A0 00740100
  594. BZ CDB003 YES - NOT ALLOWED 00741000
  595. MVI SAVEWRK1+2,X'00' DEFUALT TO LOC @V200930 00744000
  596. CL R6,F3 OVER THREE CHARACTERS IN THE ARGUMENT 00745000
  597. BH CDB003 BRANCH TO ERROR MESSAGE IF THERE IS 00746000
  598. MVC BUFBUF(4),=C'CAW=' 00747000
  599. LA R1,0 SET UP TO BRING IN PAGE ZERO 00748000
  600. TRANS 2,1,OPT=(BRING,DEFER) BRING IN USER PAGE ZERO 00749000
  601. L R1,72(,R2) LOAD CAW 00750000
  602. CALL DMKCVTBH CONVERT TO PRINTABLE FORM 00751000
  603. STCM R0,B'1111',BUFBUF+6 @V4075A0 00752100
  604. STCM R1,B'1111',BUFBUF+10 @V4075A0 00753100
  605. MVC BFRCNT,=H'14' SET UP BYTE COUNT 00754000
  606. B DISGETN OUTPUT LINE & GET NEXT ARGUMENT 00755000
  607. EJECT 00756000
  608. * 00757000
  609. * DISPLAY PSW 00758000
  610. * 00759000
  611. DISPSWX BCTR R6,0 MINUS ONE FOR 'EX' 00760000
  612. EX R6,CLCPSW IS IT REALLY PSW REQUEST ???? 00761000
  613. BNE CDB003 BRANCH IF IN ERROR 00762000
  614. TM SAVEWRK1,VIRTC VIRTUAL REQUEST ???? 00763000
  615. BZ CDB003 PSW NOT ALLOWED FOR THIS 00764000
  616. MVI SAVEWRK1+2,X'00' DEFAULT TO LOC @V200930 00767000
  617. MVC BUFBUF(5),CPSWEQ PUT IN 'PSW =' @V4075A0 00771100
  618. L R1,VMPSW LOAD 1ST HALF OF VIRTUAL PSW 00772000
  619. TM VMESTAT,VMEXTCM IN EXTENDED-MODE? 00773000
  620. BO *+8 YES - DISPLAY ENTIRE PSW 00774000
  621. N R1,=XL4'FFFF0000' ZERO INTERUPTION CODE 00775000
  622. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 00776000
  623. STCM R0,B'1111',BUFBUF+6 @V4075A0 00777100
  624. STCM R1,B'1111',BUFBUF+10 @V4075A0 00778100
  625. L R1,VMPSW+4 LOAD 2ND HALF OF VIRTUAL PSW 00779000
  626. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 00780000
  627. STCM R0,B'1111',BUFBUF+15 @V4075A0 00781100
  628. STCM R1,B'1111',BUFBUF+19 @V4075A0 00782100
  629. MVC BFRCNT,=H'23' SET LINE LENGTH 00783000
  630. B DISGETN GO FLUSH BUFFER AND CONTINUE @V4075A0 00784100
  631. EJECT 00787000
  632. * 00788000
  633. * DISPLAY GENERAL PURPOSE REGISTER(S) 00789000
  634. * 00790000
  635. DISGPR TM SAVEWRK1,VIRTC IS COMMAND DCP OR DMCP ? 00791000
  636. BZ CDB003 GPR NOT ALLOWED 00792000
  637. MVI SAVEWRK1+2,C'G' DEFAULT TO G @V200930 00795000
  638. MVC IDCHAR,=C'GPR' SAVE IDENTIFICATION CHARACTERS @V4075A0 00799100
  639. MVC ENDADD(4),F15 SET DEFUALT END REGISTER 00800000
  640. MVC INCRMT(2),F1+2 SET ADDRESS INCREMENT 00801000
  641. MVC ENDMAX(4),F15 SET MAXIMUM REG VALUE @VM08524 00802000
  642. MVC FLDLEN(4),F2 SET MAX FIELD LENGTH @VM08524 00803000
  643. BAL R7,DISINIT INITIALIZE BEGIN & END ADDRESSES @V4075A0 00810100
  644. GPRRET SLA R1,2 CONVERT TO FULL WORD DISPLACEMENT 00811000
  645. L R3,VMGPRS(R1) LOAD VALUE IN REGISTER 00812000
  646. SPACE 2 00813000
  647. DISCOMM CL R10,BUFPNT IS POINTER AT BEGINNING OF BUFFER ? 00814000
  648. BNE DISCOMMC BRANCH IF NO 00815000
  649. L R1,NXTADD LOAD DATA ADDRESS 00816000
  650. BAL R8,DISHEAD YES - BUILD LINE HEADER 00817000
  651. DISCOMMC LR R1,R3 LOAD DATA TO BE DISPLAYED 00818000
  652. CALL DMKCVTBH CONVERT DATA TO PRINTABLE CHARACTERS 00819000
  653. STM R0,R1,FIELD STORE IN WORK AREA 00820000
  654. L R1,BUFPNT LOAD BUFFER POINTER 00821000
  655. MVC 0(8,R1),FIELD MOVE DATA 00822000
  656. LA R1,10(R1) BUMP POINTER BY 10 00823000
  657. LH R14,BFRCNT GET BUFFER COUNT 00824000
  658. LA R14,10(R14) UP THE COUNT 00825000
  659. NOSHFT ST R1,BUFPNT SET NEW POINTER 00832000
  660. STH R14,BFRCNT SET NEW COUNT 00833000
  661. CH R14,BUFMAX AT END OF BUFFER ?? 00834000
  662. BL DISNEXTA NO - CONTINUE DISPLAY 00835000
  663. SH R14,F2+2 ADJUST LENGTH 00836000
  664. STH R14,BFRCNT SET COUNT 00837000
  665. LA R4,DISNEXTA LOAD RETURN ADDRESS 00838000
  666. B DISWRITE YES - OUTPUT LINE 00839000
  667. EJECT 00840000
  668. * 00841000
  669. * DISPLAY FLOATING POINT REGISTER(S) 00842000
  670. * 00843000
  671. DISFPR TM SAVEWRK1,VIRTC IS COMMAND DCP ? (NOT VIRTC) @V4075A0 00844100
  672. BZ CDB003 FPR NOT ALLOWED 00845000
  673. MVI SAVEWRK1+2,C'Y' DEFAULT TO Y @V200930 00848000
  674. MVC IDCHAR,=C'FPR' SAVE IDENTIFICATION CHARACTERS @V4075A0 00852100
  675. MVC ENDADD(4),F6 SET DEFAULT END REGISTER 00853000
  676. MVC INCRMT(2),F2+2 SET ADDR INCREMENT 00854000
  677. MVC ENDMAX(4),F6 SET MAXIMUM REG VALUE @VM08524 00855000
  678. MVC FLDLEN(4),F1 SET MAX FIELD LENGTH @VM08524 00856000
  679. BAL R7,DISINIT INITIALIZE BEGIN & END ADDRESSES @V4075A0 00863100
  680. FPRRET BAL R8,DISHEAD BUILD LINE HEADER 00864000
  681. L R1,NXTADD RELOAD REGISTER NUMBER 00865000
  682. SLA R1,2 CONVERT TO DOUBLE WORD BISPLACEMENT 00866000
  683. LA R2,VMFPRS(R1) POINT TO VIRTUAL FPR 00867000
  684. L R1,0(R2) LOAD 1ST HALF OF VIRTUAL REGISTER 00868000
  685. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 00869000
  686. STCM R0,B'1111',BUFBUF+10 @V4075A0 00870100
  687. STCM R1,B'1111',BUFBUF+14 @V4075A0 00871100
  688. L R1,4(R2) LOAD 2ND HALF OF VIRTUAL REGISTER 00872000
  689. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 00873000
  690. STCM R0,B'1111',BUFBUF+18 @V4075A0 00874100
  691. STCM R1,B'1111',BUFBUF+22 @V4075A0 00875100
  692. LA R1,BUFBUF+30 LOAD OUTPUT POINTER 00876000
  693. CALL DMKCVTFP CONVERT TO PRINTABLE FLOATING POINT 00877000
  694. MVC BFRCNT,=H'54' SET LINE LENGTH 00878000
  695. LA R4,DISNEXTA LOAD RETURN ADDRESS 00879000
  696. B DISWRITE OUTPUT LINE 00880000
  697. EJECT 00881000
  698. * 00882000
  699. * DISPLAY CONTROL REGISTER(S) 00883000
  700. * 00884000
  701. DISECR EQU * DISPLAY C-REG VALUES 00885000
  702. TM SAVEWRK1,VIRTC IS COMMAND DCP ? (NOT VIRTC) @V4075A0 00886100
  703. BZ CDB003 CREG REQUEST NOT ALLOWED 00887000
  704. MVI SAVEWRK1+2,C'X' DEFAULT TO X @V200930 00890000
  705. MVC IDCHAR,=C'ECR' SAVE IDENTIFICATION CHARACTERS @V4075A0 00894100
  706. MVC INCRMT,F1+2 SET BYTE COUNT = 1 @V4075A0 00895100
  707. MVC ENDADD,F15 DEFAULT END REG 00896000
  708. MVC ENDMAX(4),F15 SAVE MAXIMUM REG ADDRESS @VM08524 00897000
  709. MVC FLDLEN(4),F2 SET MAX FIELD LENGTH @VM08524 00898000
  710. BAL R7,DISINIT INITIALIZE BEGIN & END ADDRESSES @V4075A0 00905100
  711. CRRET EQU * 00906000
  712. TM VMPSTAT,VMV370R IS THIS A VIRTUAL 370 ??? 00907000
  713. BZ DISECR0 NO- DISPLAY CREG 0 ONLY 00908000
  714. SLA R1,2 CONVERT TO FULL WORD DISPLACMENT 00909000
  715. L R14,VMECEXT LOAD VMBLOK EXTENTION ADDRESS 00910000
  716. USING ECBLOK,R14 00911000
  717. L R3,EXTCR0(R1) LOAD VALUE IN REGISTER 00912000
  718. DROP R14 00913000
  719. B DISCOMM PUT IN BUFFER & DISPLAY 00914000
  720. DISECR0 EQU * DISPLAY ONLY C-REG 0 00915000
  721. SLR R1,R1 C-REG 0 00916000
  722. ST R1,ENDADD ...ONLY 00917000
  723. ST R1,NXTADD ... 00918000
  724. LA R7,DISGETN @V4075A0 00919100
  725. L R3,VMVCR0 DATA TO BE DISPLAYED 00920000
  726. B DISCOMM PUT IN BUFFER + DISPLAY 00921000
  727. EJECT 00922000
  728. * 00923000
  729. * DISPLAY STORAGE 00924000
  730. * 00925000
  731. DISPTEST OI SAVEWRK1,HEXLOC INDICATE A LOCATION REQUEST@V4075A0 00926100
  732. MVI SAVEWRK1+2,C'L' DEFAULT TO LOC @V200930 00927000
  733. DISPTST DS 0H @V4075A0 00928100
  734. TM SAVEWRK1,VIRTC DISPLAY VIRTUAL STORAGE ? 00929000
  735. BZ DISLOCR BRANCH IF NO - REAL STORAGE 00930000
  736. L R2,VMSIZE LOAD VIRTUAL MACHINE SIZE 00931000
  737. DISLOCS BCTR R2,0 -1 @VM08524 00932000
  738. ST R2,TENDADD SAVE MAX ADDRESS @VM08524 00933000
  739. ST R2,ENDMAX .. @VM08524 00934000
  740. S R2,F3 SUBTRACT 3 @VA03720 00935000
  741. ST R2,ENDADD SET DEFAULT ENDING ADDRESS 00936000
  742. OI SAVEWRK1+1,CHEX HEX ADDRESS CONVERT @V200930 00937000
  743. MVC INCRMT(2),F4+2 SET WORD INCREMENT @V200930 00938000
  744. BAL R7,DISINIT INITIALIZE BEGINNING & ENDING ADDRESSES 00939000
  745. NI SAVEWRK1+1,255-CHEX TURN OFF HEX CONVERSION SWITCH 00940000
  746. DISLOCD MVC INCRMT(2),F4+2 SET WORD INCREMENT @V200930 00956000
  747. OI BUFLAG,FIRSTL FLAG FIRST LINE @V200930 00957000
  748. MVC IDCHAR,=C'LOC' 'LOC' ID FOR DATA @V4075A0 00958100
  749. TM BUFLAG,TRANSLAT IS OUTPUT TO BE TRANSLATED ? 00959000
  750. BZ DISLOCA BRANCH IF NO 00960000
  751. L R1,ENDADD GET END ADDRESS 00961000
  752. LH R0,BUFTRC GET TRANSLATE COUNT 00962000
  753. BCTR R0,R0 DECREMENT BY 1 00963000
  754. OR R1,R0 ALIGN TO END 00964000
  755. ST R1,ENDADD SET NEW END 00965000
  756. L R1,NXTADD GET START ADDRESS 00966000
  757. LH R0,BUFTRC LOAD TRANSLATE COUNT 00967000
  758. LCR R0,R0 LOAD ITS COMPLEMENT 00968000
  759. NR R1,R0 TRUNCATE TO 16 OR 32 BYTE BOUNDARY 00969000
  760. ST R1,NXTADD STORE NEW BEGINNING ADDRESS 00970000
  761. DISLOCA LA R7,DISLOCA+4 RESET RETURN ADDRESS 00971000
  762. LR R2,R1 LOAD ADDRESS TO BE DISPLAYED 00972000
  763. TM SAVEWRK1,VIRTC DISPLAY VIRTUAL STORAGE ? 00973000
  764. BZ PREFLOC NO, REAL, MAY HAVE TO RECOMP ADDR@V4075A0 00974100
  765. TRANS 2,1,OPT=(BRING,DEFER) GET USER PAGE ADDRESS 00975000
  766. DISLOCL L R3,0(R2) LOAD WORD TO BE DISPLAYED 00976000
  767. BZ DISCOMM PUT DATA INTO BUFFER & DISPLAY @V304635 00977000
  768. OI BUFLAG,INVLD INDICATE INVALID PAGE @V304635 00978000
  769. BAL R4,DISWRITE OUTPUT LINE @V304635 00979000
  770. L R1,NXTADD CONVERT ADDRESS TO PRINTABLE @V304635 00980000
  771. CALL DMKCVTBH @V304635 00981000
  772. STCM R0,B'0011',BUFBUF @V4075A0 00982100
  773. STCM R1,B'1111',BUFBUF+2 @V4075A0 00983100
  774. * BUFFER 00984000
  775. MVC BUFBUF+7(2),=C'TO' @V304635 00985000
  776. MVC BUFBUF+19(23),=C'NON-ADDRESSABLE STORAGE' @V304635 00986000
  777. MVC BFRCNT,=AL2(19+23) SET BYTE COUNT @V304635 00987000
  778. L R1,NXTADD RELOAD ADDRESS @V304635 00988000
  779. NXTINVLD AL R1,F4096 BUMP TO NEXT PAGE ADDRESS @V304635 00989000
  780. N R1,XPAGNUM DROP DISPLACEMENT @V304635 00990000
  781. ST R1,NXTADD SAVE IT AS CURRENT ADDRESS @V304635 00991000
  782. CALL DMKCVTBH CONVERT IT TO HEX PRINTABLE @V304635 00992000
  783. STCM R0,B'0011',BUFBUF+10 @V4075A0 00993100
  784. STCM R1,B'1111',BUFBUF+12 @V4075A0 00994100
  785. L R1,NXTADD RESTORE CURRENT ADDRESS @V304635 00995000
  786. CL R1,VMSIZE STILL WITHIN VM STORAGE SIZE @V304635 00996000
  787. BNL GETOUT IF NOT - GET OUT @V304635 00997000
  788. LCTL C1,C1,VMSEG GET SEGMENT TABLE @V304635 00998000
  789. LRA R0,0(,R1) EXAMINE NEXT PAGE @V304635 00999000
  790. BC 8+2,NXTINV1 CONTINUE IF NOT A SEG EXCEPTION @V408246 01000100
  791. CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 01000300
  792. BC 2,NXTINVLD ADDRESSING ERROR @V408246 01000500
  793. NXTINV1 DS 0H @V408246 01000700
  794. CL R1,ENDADD AT END OF DISPLAY ? @V304635 01001000
  795. BNL GETOUT IF YES - FINISH UP @V304635 01002000
  796. BAL R4,DISWRITE NOW DISPLAY THIS LINE @V304635 01003000
  797. BAL R7,DISNCOMM IF DUMPING DISPLAY RESPONSE @VA04637 01003100
  798. B DISLOCA LOAD UP THE DATA @V304635 01004000
  799. GETOUT BAL R4,DISWRITE DISPLAY THE LINE AND FRET THE @V304635 01005000
  800. * BUFFER 01006000
  801. B DISGETN BACK TO USER'S INPUT LINE @V4075A0 01007100
  802. SPACE 01008000
  803. DISLOCR L R2,=A(DMKSYSRM) GET REAL MACHINE SIZE 01009000
  804. L R2,0(R2) .. 01010000
  805. B DISLOCS 01011000
  806. SPACE 3 01012000
  807. * 01013000
  808. * DISPLAY STORAGE + EBCDIC TRANSLATION 01014000
  809. * 01015000
  810. DISLOCT OI BUFLAG,TRANSLAT INDICATE TRANSLATE TO EBCDIC 01016000
  811. OI SAVEWRK1,HEXLOC HEX LOC REQUEST @V200930 01017000
  812. MVI SAVEWRK1+2,C'T' DEFAULT TO T @V200930 01018000
  813. B DISPTST CONTINUE @V4075A0 01019100
  814. SPACE 2 01019115
  815. PREFLOC EQU * @V4075A0 01019130
  816. L R15,=A(DMKSYSAP) CHECK THAT @V4075A0 01019145
  817. CLI 0(R15),C'Y' USER'S SYSCOR MACRO HA@V4075A0 01019160
  818. BNE FETCHRL AP OPTION, WE CHECK AND@V4075A0 01019175
  819. L R0,XPAGNUM @V4075A0 01019190
  820. TM SAVEWRK1+1,MPREF+NPREF PERHAPS RECOMPUTE THE @V4075A0 01019205
  821. BZ ABSPEC EFFECTIVE ADDRESS @V4075A0 01019220
  822. TM SAVEWRK1+1,NPREF DID USER SAY 'M' OR 'N' @V4075A0 01019235
  823. BO RWEN GO FIX UP FOR 'N' SPECIFIED @V4075A0 01019250
  824. RWEM TM APSTAT1,PROCIO HE SAID 'M', ARE WE 'M' ? @V4075A0 01019265
  825. BO FETCHRL YES, DO NOT RECOMPUTE ADDRES@V4075A0 01019280
  826. PFIXCOMP NR R0,R1 GET PAGE NUMBER @V4075A0 01019295
  827. BZ ADDPREFB OTHER PROCESSOR'S PSA. POINT 2 IT@V4075A0 01019310
  828. C R0,PREFIXB ABSOLUTE 0 IN OTHER PROCESSOR'S @V4075A0 01019325
  829. BNE ISITPRFA NO. GO SEE IF IT IS OUR PSA! @V4075A0 01019340
  830. GETABS0 S R1,PREFIXB YES, POINT TO ABSOLUTE 0 VIA OUR @V4075A0 01019355
  831. ADDPREFA A R1,PREFIXA PREFIX REGISTER @V4075A0 01019370
  832. B FETCHRL @V4075A0 01019385
  833. SPACE 2 @V4075A0 01019400
  834. ADDPREFB A R1,PREFIXB POINT TO OTHER PROCESSOR PSA @V4075A0 01019415
  835. B FETCHRL @V4075A0 01019430
  836. SPACE 2 @V4075A0 01019445
  837. RWEN TM APSTAT1,PROCIO USER SAID 'N'. ARE WE 'N' ? @V4075A0 01019460
  838. BNO FETCHRL YES @V4075A0 01019475
  839. B PFIXCOMP NO. SEE ABOUT RECOMPUTING @V4075A0 01019490
  840. SPACE 2 @V4075A0 01019505
  841. ABSPEC NR R0,R1 ABSOLUTE 0 ? @V4075A0 01019520
  842. BZ ADDPREFA YES, UNDO EFFECT OF PREFIX REG @V4075A0 01019535
  843. ISITPRFA C R0,PREFIXA OUR PSA ? @V4075A0 01019550
  844. BNE FETCHRL NO @V4075A0 01019565
  845. SUBPREFA S R1,PREFIXA YES, UNDO OUR PREFIX REG @V4075A0 01019580
  846. FETCHRL L R3,0(R1) FETCH THE DATA WORD ! @V4075A0 01019595
  847. LR R2,R1 SAVE ADDR IN R2 FOR LATER USE @VA09347 01019596
  848. B DISCOMM PUT DATA INTO BUFFER & SHOW IT @V4075A0 01019610
  849. EJECT 01020000
  850. * 01021000
  851. * DISPLAY STORAGE KEY 01022000
  852. * 01023000
  853. DISKEY TM SAVEWRK1,VIRTC IS COMMAND DCP ? (NOT VIRTC) @V4075A0 01024100
  854. BZ CDB003 KEY NOT ALLOWED 01025000
  855. MVI SAVEWRK1+2,C'K' DEFAULT TO K @V200930 01028000
  856. DUMPKEY OI SAVEWRK1+1,CHEX TURN ON HEX CONVERSION SWITCH 01029000
  857. OI SAVEWRK1,HEXLOC FLAG AS BEING HEXLOC REQUEST 01030000
  858. OI BUFLAG,FIRSTL TURN ON FIRST LINE SWITCH 01031000
  859. MVC IDCHAR,KEYEQ SAVE IDENTIFICATION CHARACTERS 01032000
  860. LA R15,2048 LOAD ADDRESS INCREMENT @VA03720 01033000
  861. STH R15,INCRMT SET INCREMENT VALUE 01034000
  862. L R2,VMSIZE LOAD VIRTUAL MACHINE SIZE 01035000
  863. BCTR R2,0 MAKE IT LAST ADDRESS @VM08524 01036000
  864. ST R2,TENDADD SAVE END ADDRESS @VM08524 01037000
  865. ST R2,ENDMAX SET MAXIMUM ADDRESS @VM08524 01038000
  866. S R2,=F'2047' BACK UP TO LAST PAGE ADDR @VM08854 01039000
  867. ST R2,ENDADD SET DEFAULT ENDING ADDRESS 01040000
  868. BAL R7,DISINIT INITIALIZE BEGIN & END ADDRESSES @V4075A0 01047100
  869. KEYRET NI SAVEWRK1+1,255-CHEX TURN OFF HEX CONVERSION SWITCH 01048000
  870. LA R15,HAVEKEY SET RETURN ADDRESS @VM08553 01049000
  871. GETKEY EQU * HERE TO CALCULATE KEY VALUES @VM08553 01050000
  872. ST R15,SAVEWRK5 SAVE RETURN ADDR @VM08553 01051000
  873. LR R14,R1 LOAD CURRENT ADDRESS 01052000
  874. L R3,VMSEG OBTAIN STO @V408246 01053500
  875. SRDL R14,16 GET SEGMENT NUMBER 01054000
  876. SLL R14,2 MULTIPLY BY 4 01055000
  877. LA R3,0(R14,R3) INDEX TO STE FOR THIS SEGMENT @V408246 01056100
  878. TM 3(R3),1 IS THE STE INVALID? @V408246 01056300
  879. BZ VLDKEY NO, PNTR ALL RIGHT @V408246 01056500
  880. LR R0,R15 SAVE 2ND PART @V408246 01056700
  881. TRANS 2,1,OPT=(DEFER) LET PTR CHECK ON SEGMENT @V408246 01056900
  882. LR R15,R0 RESTORE 2ND PART @V408246 01057100
  883. TM 3(R3),1 DID PTR CLEAR UP PAGE TABLE @V408246 01057300
  884. * POINTER? 01057500
  885. BZ VLDKEY NO, RETURN ZERO KEY @V408246 01057700
  886. INVDKEY L R1,FFS INDICATE MINUS IF NON-ADDRESSABLE@VA09057 01059500
  887. B NOKEY PROCESS NON-ADDRESSABLE KEY @V304635 01060000
  888. VLDKEY EQU * HERE FOR ADDRESSABLE STORAGE @V304635 01061000
  889. L R3,0(,R3) GET PAGE TABLE POINTER @V408246 01062200
  890. LA R2,16*2+8(,R3) GET SWAPTABLE ORIGIN @V408246 01063200
  891. SR R14,R14 ZERO WORK REGISTER 01066000
  892. SLDL R14,4 GET PAGE NUMBER 01067000
  893. SLL R14,3 MULTIPY BY 8 @VA09057 01068100
  894. LR R0,R3 LOAD SEG TABLE POINTER @VA09057 01068200
  895. SRL R0,4 LINE IT UP @VA09057 01068300
  896. LA R1,1(R14,R2) GET SWAP TABLE ADDRESS @VA09057 01068400
  897. CLM R0,B'1000',0(R1) COMPARE THEM @VA09057 01068500
  898. BL INVDKEY THATS MORE THAN WE HAVE - BRANCH @VA09057 01068600
  899. SRL R14,1 SET UP FOR 2ND HALF PAGE @VA09057 01068700
  900. SLDL R14,1 ADD 1 IF 2ND HALF OF PAGE 01069000
  901. SR R1,R1 ZERO REGISTER 01070000
  902. IC R1,2(R14,R2) INSERT STORAGE KEY 01071000
  903. SRDL R14,1 GET PAGE NUMBER X 2 01072000
  904. SRL R14,1 .. 01073000
  905. LA R3,0(R14,R3) LOAD PAGE TABLE ENTRY ADDRESS 01074000
  906. SR R2,R2 CLEAR FOR ISK (OR LACK OF IT) @VM08553 01075000
  907. TM 1(R3),X'08' IS THE PAGE IN STORAGE ? 01076000
  908. BO GOTPART BRANCH IF NO @VM08553 01077000
  909. LH R14,0(,R3) LOAD REAL PAGE ADDRESS 01078000
  910. SRL R14,4 .. 01079000
  911. SLDL R14,12 ADD DISPLACEMENT ADDRESS 01080000
  912. ISK R2,R14 GET THE REAL STORAGE KEY 01081000
  913. GOTPART TM VMOSTAT,VMSHR IS THIS A SHARED SYSTEM? @VA01666 01082000
  914. BZ *+8 NOPE, SKIP @VA01666 01083000
  915. N R2,=A(X'0E') SHUT OFF PHONEY KEY @VA01666 01084000
  916. OR R1,R2 PUT REAL AND VIRT TOGETHER @VA01666 01085000
  917. LA R3,X'FE' SET FOR ECMODE @VA01666 01086000
  918. TM VMPSTAT,VMV370R DOES THIS MACHINE HAVE EC? @VA01666 01087000
  919. BO *+8 YES, MASK OK @VA01666 01088000
  920. LA R3,X'F8' SET MASK FOR BC TYPE MACHINE @VA01666 01089000
  921. NR R1,R3 SHUT OFF WHATEVER IS NECESSARY. @VA01666 01090000
  922. NOKEY L R15,SAVEWRK5 RESTORE RETURN ADDRESS @V304635 01091000
  923. BR R15 RETURN @VM08553 01092000
  924. HAVEKEY EQU * @VM08553 01093000
  925. TM BUFLAG,FIRSTL IS THIS THE FIRST LINE ? 01094000
  926. BO DISK1STL BRANCH IF YES 01095000
  927. CL R1,LNSAVE SAME AS LAST KEY ? 01096000
  928. BE DISKBUMP BRANCH IF YES 01097000
  929. BAL R4,DISWRITE OUTPUT PREVIOUS LINE 01098000
  930. DISK1STL NI BUFLAG,NFIRSTL TURN OFF IST LINE SWITCH 01099000
  931. MVC BUFBUF+18(5),KEYEQ MOVE 'KEY =' TO BUFFER 01100000
  932. ST R1,LNSAVE SAVE KEY 01101000
  933. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 01102000
  934. STH R1,BUFBUF+24 STORE KEY IN BUFFER 01103000
  935. LA R1,26 STANDARD LINE LENGTH @V304635 01104000
  936. CLI LNSAVE,X'FF' IS IT NON-ADDRESSABLE STORAGE ? @V304635 01105000
  937. BNE SETBUFLG NO - SET UP BUFFER LENGTH @V304635 01106000
  938. MVC BUFBUF+18(23),=C'NON-ADDRESSABLE STORAGE' @V304635 01107000
  939. LA R1,15(,R1) LENGTH-EN MESSAGE LINE @V304635 01108000
  940. SETBUFLG STH R1,BFRCNT SET LINE LENGTH. @V304635 01109000
  941. L R1,NXTADD LOAD BEGINNING ADDRESS 01110000
  942. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 01111000
  943. STCM R0,B'0011',BUFBUF @V4075A0 01112100
  944. STCM R1,B'1111',BUFBUF+2 @V4075A0 01113100
  945. MVC BUFBUF+7(2),=C'TO' 01114000
  946. DISKBUMP L R1,NXTADD LOAD CURRENT ADDRESS 01115000
  947. LA R1,2047(R1) ADD 2047 01116000
  948. CALL DMKCVTBH CONVERT TO PRINTABLE CHARACTERS 01117000
  949. STCM R0,B'0011',BUFBUF+10 @V4075A0 01118100
  950. STCM R1,B'1111',BUFBUF+12 @V4075A0 01119100
  951. B DISNEXTA GET NEXT ADDRESS 01120000
  952. EJECT 01121000
  953. * THE FOLLOWING TWO SUBROUTINES ARE USED TO INITIALIZE AND 01122000
  954. * CONTROL THE DISPLAYING OF A RANGE OF ADDRESSES. REGISTER 7 IS 01123000
  955. * LOADED BY A BAL TO DISINIT FROM THE VARIOUS DISPLAY ROUTINES. 01124000
  956. * IT IS LATER USED BY DISNEXTA TO RETURN TO THE ROUTINE THAT 01125000
  957. * LAST CALLED DISINIT TO DISPLAY THE NEXT ADDRESS. 01126000
  958. * 01127000
  959. * INITIALIZE BEGINNING AND ENDING ADDRESSES SUBROUTINE 01128000
  960. * 01129000
  961. DISINIT EQU * 01130000
  962. MVC TENDADD(4),ENDMAX SET UP TRUE END DEFAULT @VM08524 01131000
  963. NI SAVEWRK1,X'FF'-RANGE-DISLEN RESET FLAGS @V200930 01132000
  964. LA R1,1(,R5) BUMP PAST TYPE CODE 01133000
  965. CH R6,F1+2 ANY ADDRESS SPECIFIED ???? 01134000
  966. BH DISISCAN BRANCH IF YES 01135000
  967. SPACE 01136000
  968. OI SAVEWRK1,RANGE INDICATE RANGE OF OPERANDS @VM08515 01137000
  969. B DISIBLNK GO SET DEFAULTS 01138000
  970. SPACE 01139000
  971. * NOW CHECK FOR A COLON OR HYPHEN 01140000
  972. SPACE 01141000
  973. DISISCAN EQU * 01142000
  974. LR R14,R6 LENGTH TO R14 01143000
  975. BCTR R14,0 MINUS ONE FOR TYPE CODE BYPASS 01144000
  976. DISICOLN CLI 0(R1),C':' CHECK FOR A COLON 01145000
  977. BE DISIHYPH BRANCH IF YES 01146000
  978. CLI 0(R1),C'-' HYPHEN ???? 01147000
  979. BE DISIHYPH YES --- 01148000
  980. CLI 0(R1),C'.' IS IT A LENGTH ?? @V200930 01149000
  981. BE DISDOT YES, FLAG AND CONTINUE @V200930 01150000
  982. CLI 0(R1),C' ' BLANK ??? 01151000
  983. BNH DISIBLNK BRANCH IF IT IS @VM08515 01152000
  984. LA R1,1(,R1) BUMP TO NEXT CHAR. 01153000
  985. BCT R14,DISICOLN LOOP BACK IF HAVE MORE CHARACTERS TO CHK. 01154000
  986. B DISIBLNK NO MORE - TREAT AS BLANK @VM08515 01155000
  987. SPACE 01156000
  988. DISDOT OI SAVEWRK1,DISLEN FLAG LENGTH RANGE @V200930 01157000
  989. DISIHYPH OI SAVEWRK1,RANGE SET RANGE SWITCH 01158000
  990. BCTR R6,0 MINUS ONE FROM LENGTH FOR HYPHEN 01159000
  991. LA R0,1(R5,R6) COMPUTE LENGTH OF ENDING FIELD 01160000
  992. LA R1,1(,R1) . . . 01161000
  993. SR R0,R1 . . . 01162000
  994. BNP DISIBLNK NO ENDING FIELD - TREAT AS BLANK @VM08515 01163000
  995. SR R6,R0 COMPUTE LENGTH OF BEGINNING FIELD 01164000
  996. SPACE 01165000
  997. CL R0,F3 THREE CHARACTERS ???? 01166000
  998. BNE DISICNVT NOT 'END' - BRANCH @VM08515 01167000
  999. LR R14,R0 COUNT TO GPR 14 01168000
  1000. BCTR R14,0 LESS ONE FOR 'EX' 01169000
  1001. EX R14,ENDCOMP IS IT 'END' ???? 01170000
  1002. BE DISIBLNK BRANCH IF IT IS 01171000
  1003. DISICNVT STM R0,R1,SAVEWRK8 SAVE FOR POSSIBLE ERROR MSG 01172000
  1004. NI SAVEWRK1+1,X'FF'-CONVLEN RESET FLAG @V200930 01173000
  1005. TM SAVEWRK1,RANGE+DISLEN LENGTH RANGE ?? @V200930 01174000
  1006. BNO *+8 NO, NOT LENGTH FIELD @V200930 01175000
  1007. OI SAVEWRK1+1,CONVLEN INDICATE CONVERT LENGTH @V200930 01176000
  1008. BAL R4,CNVTBIN CONVERT END ADDRESS TO BINARY 01177000
  1009. BNZ BADADDR BRANCH IF BAD CONVERT 01178000
  1010. ST R15,TENDADD SAVE TRUE END ADDRESS @VM08524 01179000
  1011. CLI SAVEWRK1+2,C'Y' FLOATING POINT FUNCTION @VM08524 01180000
  1012. BNE REMEND NO -- @VM08524 01181000
  1013. TM SAVEWRK1,DISLEN+RANGE REG COUNT @VM08524 01182000
  1014. BO YREGCNT YES - VALIDATE REG COUNT @VM08524 01183000
  1015. TM TENDADD+3,X'01' VALID Y REG NUMBER @VM08524 01184000
  1016. BO CDB010 NO - REG ODD ERROR @VA01634 01185000
  1017. CL R15,F6 Y REG 0 2 4 6 @VM08524 01186000
  1018. BH CDB010 NO - Y REG ERROR @VA01634 01187000
  1019. B REMEND CONT @VM08524 01188000
  1020. YREGCNT SLL R15,1 X 2 (0 2 4 6) @VA01634 01189000
  1021. BCTR R15,0 -1 FOR LENGTH COUNT @VM08524 01190000
  1022. ST R15,TENDADD UPDATE NEW LENGTH COUNT @VM08524 01191000
  1023. LR R1,R15 CORRECT LENGTH REG @VM08524 01192000
  1024. REMEND LR R2,R1 REMEMBER END ADDRESS @VM08524 01193000
  1025. NI SAVEWRK1+1,X'FF'-CONVLEN RESET LENGTH FLAG @V200930 01194000
  1026. DISTRT LR R0,R6 GET LENGTH OF START CODE @VM08524 01195000
  1027. BCT R0,DISIBGNA SUBTRACT 1 FROM LENGTH FOR TYPE CODE 01196000
  1028. SR R1,R1 SET DEFAULT BEGINNING ADDRESS TO ZERO 01197000
  1029. ST R1,NXTADD .. 01198000
  1030. ST R1,TBEGADD SAVE TRUE BEGIN ADDRESS @VM08524 01199000
  1031. B DISTDOT TEST FOR LENGTH RANGE @V200930 01200000
  1032. DISIBGNA LA R1,1(R5) LOAD ADDRESS OF BEGINNING FIELD 01201000
  1033. STM R0,R1,SAVEWRK6 SAVE FOR POSSIBLE ERROR @VM08524 01202000
  1034. BAL R4,CNVTBIN CONVERT BEGINNING ADDRESS 01203000
  1035. BNZ BADADDR1 BRANCH IF BAD CONVERSION @VM08524 01204000
  1036. ST R15,TBEGADD SAVE TRUE BEGIN ADDRESS @VM08524 01205000
  1037. CL R15,ENDMAX IS IT ABOVE MAXIMUM ? @VM08524 01206000
  1038. BNH RANGOK1 NO, CONTINUE... @VA01634 01207000
  1039. MVC SAVEWRK8(8),SAVEWRK6 FOR ERROR MESSAGE @VA03060 01208000
  1040. TM SAVEWRK1,HEXLOC WHICH KIND OF ERROR? @VA01634 01209000
  1041. BO CDB160 HEXADDR ERROR @VA01634 01210000
  1042. B CDB010 REG ERROR. @VA01634 01211000
  1043. RANGOK1 EQU * @VA01634 01212000
  1044. ST R1,NXTADD INITIALIZE BEGINNING ADDRESS 01213000
  1045. CLI SAVEWRK1+2,C'Y' YREG PROCESSING @VM08524 01214000
  1046. BNE DISTDOT NO -- @VM08524 01215000
  1047. TM TBEGADD+3,X'01' YREG 0 2 4 6 @VM08524 01216000
  1048. BO BADADDR1 NO - YREG ERROR @VM08524 01217000
  1049. DISTDOT TM SAVEWRK1,RANGE+DISLEN IS IT LENGTH RANGE ?? @V200930 01218000
  1050. BNO DISENDA NO, SAVE END ADDRESS @V200930 01219000
  1051. L R15,TENDADD GET BYTE OR REG COUNT VALUE @VM08524 01220000
  1052. A R15,TBEGADD UPDATE TRUE END ADDRESS @VM08524 01221000
  1053. BCTR R15,0 -1 @VM08524 01222000
  1054. ST R15,TENDADD .. @VM08524 01223000
  1055. AL R2,TBEGADD ADD TO THE TRUE BEGIN ADDR @VA03502 01224000
  1056. DISENDA ST R2,ENDADD SET END ADDRESS @VM08524 01225000
  1057. CLC TBEGADD(4),TENDADD START LARGER THAN END @VM08524 01226000
  1058. BH CKRANGE YES, ERROR @VM08524 01227000
  1059. CLC TENDADD(4),ENDMAX END ADDRESS ABOVE MAXIMUM @VM08524 01228000
  1060. BH CKRANGE YES, ERROR @VM08524 01229000
  1061. TM SAVEWRK1,RANGE DISPLAY A RANGE OF ADDRESSES ? 01230000
  1062. BCR 1,R7 YES - RETURN 01231000
  1063. MVC ENDADD,NXTADD MAKE ENDING ADDRESS SAME AS BEGINNING 01232000
  1064. BR R7 RETURN 01233000
  1065. SPACE 01234000
  1066. CKRANGE TM SAVEWRK1,RANGE RANGE OF ADDRESSES ??? 01235000
  1067. BO CDB009 SEND BAD RANGE MESSAGE 01236000
  1068. MVC SAVEWRK8(8),SAVEWRK6 FOR ERROR MESSAGE @VA03060 01237000
  1069. TM SAVEWRK1,HEXLOC LOCATION OR REGISTER ???? 01238000
  1070. BO CDB160 BRANCH IF LOCATION 01239000
  1071. B CDB010 MUST BE REGISTER 01240000
  1072. DISIBLNK L R2,ENDADD SET DEFAULT END ADDRESS @V200930 01241000
  1073. NI SAVEWRK1,X'FF'-DISLEN NO LENGTH ON DEFAULT @V200930 01242000
  1074. B DISTRT CONTINUE @V200930 01243000
  1075. EJECT 01244000
  1076. * 01245000
  1077. * GET NEXT ADDRESS SUBROUTINE 01246000
  1078. * 01247000
  1079. DISNEXTA L R1,NXTADD LOAD CURRENT ADDRESS @V4075A0 01250100
  1080. AH R1,INCRMT GET NEXT ADDRESS @VA03720 01251000
  1081. DISNCOMM TM VMRSTAT,VMLOGOFF IS USER LOGGING OFF ? 01256000
  1082. BO EXIT YES TERMINATE THE DUMP OR DISPLAY 01257000
  1083. CL R1,ENDADD GREATER THAN ENDING ADDRESS ? 01258000
  1084. BH DISGETN LOOK FOR MORE USER INPUT @V4075A0 01259100
  1085. ST R1,NXTADD STORE NEXT ADDRESS 01260000
  1086. BR R7 CONTINUE 01279000
  1087. ENDCOMP CLC 0(0,R1),=C'END ' EXECUTED COMPARE 01346000
  1088. EJECT 01347000
  1089. ********************************************************************* 01348000
  1090. * 01349000
  1091. * SUBROUTINE TO FORMAT LINE HEADER & TRAILER 01350000
  1092. * 01351000
  1093. ********************************************************************* 01352000
  1094. DISHEAD L R1,NXTADD GET NEXT ADDRESS 01353000
  1095. CLC IDCHAR,=C'LOC' DISPLAY STORAGE COMMAND? @V4075A0 01354100
  1096. BE DISHCORE BRANCH IF YES 01355000
  1097. MVC BUFBUF(3),IDCHAR MOVE IDENTIFICATION TO BUFFER 01356000
  1098. CALL DMKCVTBD CONVERT REGISTER NUMBER TO DECIMAL 01357000
  1099. STH R1,BUFBUF+4 STORE IN BUFFER 01358000
  1100. CLI BUFBUF+4,C'0' LEADING ZERO ? 01359000
  1101. BNE DISHSETP BRANCH IF NO 01360000
  1102. MVI BUFBUF+4,C' ' YES - REPLACE WITH A BLANK 01361000
  1103. DISHSETP MVI BUFBUF+7,C'=' 01362000
  1104. DISHSETC LA R1,BUFBUF+10 SET ADDRESS 01363000
  1105. ST R1,BUFPNT STORE POINTER 01364000
  1106. MVC BFRCNT,F10+2 SET COUNT = 10 @V4075A0 01365100
  1107. BR R8 RETURN 01366000
  1108. SPACE 2 01367000
  1109. DISHCORE EQU * 01368000
  1110. TM BUFLAG,FIRSTL IS THIS THE 1ST LINE ? 01369000
  1111. BO DISH1STL BRANCH IF YES 01370000
  1112. TM BUFLAG,SAMEL LINES ALREADY SUPPRESSED ? 01371000
  1113. BO DISHSUPP BRANCH IF YES 01372000
  1114. BAL R15,SETR14 GO SET UP 'EX' REG. 01373000
  1115. L R1,NXTADD RELOAD NEXT ADDRESS 01374000
  1116. EX R14,DISHCLCL SAME AS LAST LINE ? 01375000
  1117. BNE DISHSAVE BRANCH IF NO 01376000
  1118. OI BUFLAG,SAMEL TURN ON SAME AS LAST LINE SWITCH 01377000
  1119. CALL DMKCVTBH CONVERT ADDRESS TO HEX 01378000
  1120. STCM R0,B'0011',BUFBUF @V4075A0 01379100
  1121. STCM R1,B'1111',BUFBUF+2 @V4075A0 01380100
  1122. L R1,NXTADD RELOAD CURRENT ADDRESS 01381000
  1123. MVC BUFBUF+7(2),=C'TO' 01382000
  1124. MVC BUFBUF+19(L'SUPPLMSG),SUPPLMSG MOVE MESSAGE TEXT 01383000
  1125. MVC BFRCNT,=AL2(L'SUPPLMSG+19) SET BYTE COUNT 01384000
  1126. DISHBUMP AH R1,BUFTRC BUMP TO NEXT LINE ADDRESS 01385000
  1127. TM SAVEWRK1,VIRTC REAL OR VIRTUAL 01386000
  1128. BO DISHVIRT BRANCH AROUND IF IT'S VIRTUAL 01387000
  1129. L R14,=A(DMKSYSRM) GET ADDRESS OF TOP 01388000
  1130. L R14,0(,R14) LOAD THE ADDRESS 01389000
  1131. B DISHCKR1 GO SEE IF IT WILL FIT 01390000
  1132. DISHVIRT EQU * 01391000
  1133. L R14,VMSIZE LOAD VIRTUAL MACHINE SIZE 01392000
  1134. DISHCKR1 EQU * 01393000
  1135. CR R1,R14 ADDRESS IN R1 TOO HIGH 01394000
  1136. BNH DISHSTR1 BRANCH IF IT ISN'T 01395000
  1137. LR R1,R14 MAKE IT VALID 01396000
  1138. DISHSTR1 EQU * 01397000
  1139. ST R1,NXTADD SAVE NEW ADDRESS 01398000
  1140. CALL DMKCVTBH CONVERT ADDRESS TO HEX 01399000
  1141. STCM R0,B'0011',BUFBUF+10 @V4075A0 01400100
  1142. STCM R1,B'1111',BUFBUF+12 @V4075A0 01401100
  1143. L R1,NXTADD RELOAD NEXT ADDRESS 01402000
  1144. B DISNCOMM CHECK NEXT ADDRESS 01403000
  1145. EJECT 01404000
  1146. DISH1STL NI BUFLAG,NFIRSTL TURN OFF 1ST LINE SWITCH 01405000
  1147. DISHSAVE NI BUFLAG,NSAMEL TURN OFF SUPPRESSED LINES SWITCH 01406000
  1148. CALL DMKCVTBH CONVERT ADDRESS TO HEX @VM08515 01407000
  1149. STCM R0,B'0011',BUFBUF @V4075A0 01408100
  1150. STCM R1,B'1111',BUFBUF+2 @V4075A0 01409100
  1151. BAL R15,SETR14 GO SET UP 'EX' REG. 01410000
  1152. EX R14,DISHMVCL SAVE NEXT 16 OR 32 BYTES 01411000
  1153. TM BUFLAG,TRANSLAT TRANSLATE TO EBCDIC ???? 01412000
  1154. BZ DISHSETC NO .. 01413000
  1155. LA R1,BUFBUF+92 POINT TO KEY AREA 01414000
  1156. CH R14,=H'31' LONG LINE ?? 01415000
  1157. BE *+8 YES 01416000
  1158. LA R1,BUFBUF+49 POINT TO KEY IN SHORT LINE @V200930 01417000
  1159. LR R4,R1 SAVE BUFFER ADDRESS 01418000
  1160. LR R1,R2 GET DATA ADDRESS 01419000
  1161. N R1,=F'2047' AT 2K BOUNDARY ?? 01420000
  1162. BNZ BUFUP NO .. 01421000
  1163. ST R14,REGSAVE SAVE ACROSS SUBROUTINE @VM08553 01422000
  1164. STM R2,R3,REGSAVE+4 ... @VM08553 01423000
  1165. L R1,NXTADD GET THE ADDRESS OF THIS PAGE @VM08854 01424000
  1166. TM SAVEWRK1,VIRTC IS THIS VIRT STORAGE? @VM08854 01425000
  1167. BO CDBK01 VIRT, LET SUBROUTINE DO IT @VM08854 01426000
  1168. SR R1,R1 CLEAR OUT FOR CVT ROUTINE @VM08854 01427000
  1169. ISK R1,R2 GET THE REAL STUFF @VM08854 01428000
  1170. B CDBK02 AND CONTINUE NORMALLY @VM08854 01429000
  1171. SPACE 01430000
  1172. CDBK01 BAL R15,GETKEY GO GET THE KEY @VM08854 01431000
  1173. CDBK02 CALL DMKCVTBH CONVERT @VM08854 01432000
  1174. L R14,REGSAVE RESTORE FOR RETURN 01433000
  1175. LM R2,R3,REGSAVE+4 RESTORE THE REGS @VM08553 01434000
  1176. STH R1,0(R4) PUT KEY IN LINE 01435000
  1177. BUFUP LR R1,R4 RESTORE BUFFER ADDRESS 01436000
  1178. LA R1,4(R1) POINT TO TRANSLATE AREA 01437000
  1179. MVI 0(R1),C'*' 01438000
  1180. EX R14,DISHMVCB MOVE LINE TO BUFFER 01439000
  1181. L R15,=A(DMKDMPTR) LOAD TRANSLATE TABLE ADDRESS 01440000
  1182. EX R14,DISHTRLN TRANSLATE TO PRINTABLE CHARACTERS 01441000
  1183. LA R1,2(R14,R1) BUMP POINTER TO NEXT BYTE 01442000
  1184. MVI 0(R1),C'*' 01443000
  1185. B DISHSETC SET POINTER AND COUNT 01444000
  1186. SPACE 2 01445000
  1187. DISHSUPP EQU * 01446000
  1188. BAL R15,SETR14 GO SET UP 'EX' REG. 01447000
  1189. L R1,NXTADD RELOAD NEXT ADDRESS 01448000
  1190. EX R14,DISHCLCL SAME AS LAST LINE ? 01449000
  1191. BE DISHBUMP BRANCH IF YES 01450000
  1192. BAL R4,DISWRITE OUTPUT SUPPRESSED LINES MESSAGE 01451000
  1193. TM SAVEWRK1,VIRTC VIRTUAL REQUEST ????? 01452000
  1194. BZ DISHSAVE NO -- NO NEED TO DO TRANS 01453000
  1195. TRANS 2,1,OPT=(BRING,DEFER) MAKE SURE ADDRESS STILL IN !! 01454000
  1196. B DISHSAVE SAVE THIS LINE 01455000
  1197. SPACE 2 01456000
  1198. ********************************************************************* 01457000
  1199. * * 01458000
  1200. * THIS SUBROUTINE INSURES THAT R14 WHICH IS USED FOR EXECUTED * 01459000
  1201. * COMPARES AND MOVES DOES NOT CONTAIN A COUNT THAT WILL * 01460000
  1202. * GO PAST THE END OF REAL STORAGE * 01461000
  1203. * * 01461100
  1204. * THIS ROUTINE WILL ALSO INSURE THAT NON-CONTIGUOUS V-STORAGE * 01461200
  1205. * DATA WILL BE COLLECTED INTO A CONTIGUOUS AREA CALLED * 01461300
  1206. * WRKLINE FOR DUPLICATE LINE PROCESSING * 01461400
  1207. * * 01462000
  1208. ********************************************************************** 01463000
  1209. SPACE 2 01464000
  1210. SETR14 LH R14,BUFTRC LOAD NORMAL TRANSLAT COUNT 01465000
  1211. L R1,=A(DMKSYSRM) ADDRESS OF TOP OF STORAGE CONST. 01466000
  1212. L R0,0(,R1) TOP OF STORAGE TO R0 01467000
  1213. SR R0,R2 DIFFERENCE BETWEEN PRESENT AND TOP 01468000
  1214. CR R0,R14 COMPARE THE COUNTS 01469000
  1215. BH SETR14A IF R14 IS VALID CONTINUE.... @VA05405 01470000
  1216. LR R14,R0 IF NOT - MAKE IT VALID 01471000
  1217. SETR14A EQU * @VA05405 01471005
  1218. ST R3,REGSAVE SAVE R3 @VA05405 01471010
  1219. LA R3,WRKLINE POINT TO WORK LINE BUFFER @VA05405 01471015
  1220. ST R14,REGSAVE+8 SAVE R14 @VA05405 01471020
  1221. LR R4,R2 SAVE OLD (REAL) PAGE ADDRESS @VA05405 01471025
  1222. TM SAVEWRK1,VIRTC VIRTUAL REQUEST ? @VA05405 01471030
  1223. BZ R14OK IF SO, MUST BE CONTIGUOUS @VA05405 01471035
  1224. L R1,NXTADD GET ADDRESS OF THIS PAGE @VA05405 01471040
  1225. N R1,F4095 SAVE PAGE DISPLACEMENT ONLY @VA05405 01471045
  1226. AR R1,R14 ADD LENGTH TO DISP @VA05405 01471050
  1227. C R1,F4096 CROSS OVER 4K PAGE BOUNDARY ? @VA05405 01471055
  1228. BNH R14OK IF NOT, ALL SET @VA05405 01471060
  1229. N R1,F4095 NUMBER OF BYTES INTO SECOND PAGE @VA07075 01471065
  1230. LR R0,R1 SAVE IT ... @VA05405 01471070
  1231. SR R14,R0 NUMBER OF BYTES IN 1ST PAGE @VA05405 01471075
  1232. BCTR R14,0 -1 @VA05405 01471080
  1233. EX R14,MOVEWRK GET 1ST PAGE DATA @VA05405 01471085
  1234. LA R3,1(R14,R3) UPDATE WORK LINE POINTER @VA05405 01471090
  1235. L R1,NXTADD CALC NEXT PAGE ADDRESS @VA05405 01471095
  1236. LA R1,1(R14,R1) EST VOILA, 2ND PAGE ADDRESS @VA05405 01471100
  1237. ST R15,REGSAVE+4 SAVE RETURN ADDRESS ACROSS CALL @VA05405 01471105
  1238. TRANS 2,1,OPT=(BRING,DEFER) @VA05405 01471110
  1239. L R15,REGSAVE+4 RESTORE RETURN ADDRESS @VA05405 01471115
  1240. LR R14,R0 SECOND PAGE LENGTH .... @VA05405 01471120
  1241. R14OK BCTR R14,0 MINUS ONE FOR THE EXECUTES 01472000
  1242. EX R14,MOVEWRK MOVE TO WORK AREA @VA05405 01472100
  1243. L R3,REGSAVE RESTORE R3 @VA05405 01472200
  1244. L R14,REGSAVE+8 RESTORE R14 @VA05405 01472300
  1245. LR R2,R4 RESTORE OLD (REAL) PAGE ADDRESS @VA05405 01472400
  1246. BCTR R14,0 -1 FOR EXECUTES @VA05405 01472500
  1247. BR R15 GO BACK 01473000
  1248. SPACE 6 01474000
  1249. * EXECUTED INSTRUCTIONS 01475000
  1250. SPACE 01476000
  1251. DISHCLCL CLC LNSAVE(*-*),WRKLINE @VA05405 01477000
  1252. DISHMVCL MVC LNSAVE(*-*),WRKLINE @VA05405 01477500
  1253. MOVEWRK MVC 0(*-*,R3),0(R2) @VA05405 01478000
  1254. DISHMVCB MVC 1(*-*,R1),WRKLINE @VA05405 01479000
  1255. DISHTRLN TR 1(0,R1),0(R15) 01480000
  1256. MOVEID MVC BUFBUF+25(*-*),0(R3) EXECUTED FOR DUMP ID @V200930 01481000
  1257. CLCPSW CLC 0(0,R5),CPSWEQ @V4075A0 01482100
  1258. EJECT 01483000
  1259. * 01484000
  1260. * OUTPUT SUBROUTINE 01485000
  1261. * 01486000
  1262. DISWRITE TM VMRSTAT,VMLOGOFF IS USER LOGGING OFF ? 01487000
  1263. BO EXIT YES TERMINATE THE DUMP OR DISPLAY 01488000
  1264. TM VMOSTAT,VMKILL IS USER BEING FORCED OFF @VA05493 01488350
  1265. BO EXIT YES, TERMINATE DUMP OR DISPLAY @VA05493 01488700
  1266. STM R0,R3,REGSAVE SAVE REGISTERS 01489000
  1267. LH R0,BFRCNT LOAD BUFFER BYTE COUNT 01490000
  1268. LTR R0,R0 IS IT ZERO ? 01491000
  1269. BZ DISWRTOK YES - NOTHING TO OUTPUT 01492000
  1270. LR R1,R10 LOAD BUFFER ADDRESS 01493000
  1271. TM BUFLAG,TRANSLAT TRANSLATED OUTPUT ALSO ? 01496000
  1272. BZ DISWRTC NO - DON'T CHANGE LENGTH 01497000
  1273. LA R0,71 SIZE FOR SHORT TRANS OUTPUT @V200930 01498000
  1274. DISWRTC EQU * @V200820 01499000
  1275. CALL DMKQCNWT,PARM=0 SEND LINE TO TERMINAL 01500000
  1276. BNZ EXIT QUIT IF 'ATTN' OR LINE DROP @V200820 01501000
  1277. DISWRTOK ST R10,BUFPNT RESET BUFFER POINTER 01502000
  1278. MVC BFRCNT(2),ZEROES ZERO THE BYTE COUNT 01503000
  1279. MVI BUFBUF,C' ' CLEAR BUFFER 01504000
  1280. MVC BUFBUF+1(131),BUFBUF 01505000
  1281. LM R0,R3,REGSAVE RESTORE REGISTERS 01506000
  1282. BR R4 RETURN 01507000
  1283. EJECT 01508100
  1284. ********************************************************************* 01530000
  1285. * SUBROUTINE TO CONVERT AN ADDRESS TO BINARY 01531000
  1286. * 01532000
  1287. * ON ENTRY - R0 = LENGTH OF FIELD 01533000
  1288. * R1 = LOCATION OF FIELD 01534000
  1289. * ON EXIT - R1 = RESULT OF CONVERSION TRUNCATED 01535000
  1290. * TO INCREMENT BOUNDARY 01536000
  1291. * CC = 0 IF CONVERSION IS SUCCESSFUL 01537000
  1292. * CC = 1 IF CONVERSION ERROR 01538000
  1293. * 01539000
  1294. ********************************************************************* 01540000
  1295. CNVTBIN CL R0,FLDLEN LENGTH GREATER THAN MAX ? @VM08524 01541000
  1296. BH CDB003 YES - ERROR DMKCDB003 @VM08524 01542000
  1297. STM R0,R1,REGSAVE SAVE INPUT CONDITIONS @VM08524 01543000
  1298. TM SAVEWRK1+1,CHEX HEXADECIMAL FIELD ? 01544000
  1299. BO CNVTHEX BRANCH IF YES 01545000
  1300. CALL DMKCVTDB CONVERT TO BINARY 01546000
  1301. BZ CNVTCOMM BRANCH IF CONVERSION OK 01547000
  1302. LM R0,R1,REGSAVE RESTORE INPUT CONDITIONS 01548000
  1303. CNVTHEX CALL DMKCVTHB CONVERT TO BINARY 01549000
  1304. BCR 7,R4 RETURN IF BAD CONVERSION 01550000
  1305. CNVTCOMM LH R0,INCRMT LOAD ADDRESS INCREMENT 01551000
  1306. LCR R0,R0 LOAD COMPLEMENT OF INCREMENT 01552000
  1307. LR R15,R1 SAVE TRUE ADDRESS @VM08524 01553000
  1308. TM SAVEWRK1+1,CONVLEN CONVERT LENGTH FIELD ?? @V200930 01554000
  1309. BZ TRUNC NO, TRUNC FOR ALIGN @V200930 01555000
  1310. LTR R1,R1 IS LENGTH ZERO ?? @V200930 01556000
  1311. BZ BADADDR YES, INVALID LENGTH @VM08524 01557000
  1312. BCTR R1,R0 ONE LESS IN R1 FOR RANGE @V200930 01558000
  1313. TRUNC DS 0H @V200930 01559000
  1314. NR R1,R0 TRUNCATE TO INCREMENT BOUNDARY 01560000
  1315. SR R0,R0 SET CC = 0 01561000
  1316. BR R4 RETURN TO CALLER 01562000
  1317. EJECT 01563000
  1318. CONFMSG MSG 'COMMAND COMPLETE' 01564000
  1319. CALL DMKQCNWT,PARM=NORET 01565000
  1320. B EXIT 01566000
  1321. BADADDR1 LM R0,R1,SAVEWRK6 LEN AND ADDRESS OF STARTING FIELD@VM08524 01567000
  1322. B *+8 CHECK WHICH ERROR @VM08524 01568000
  1323. BADADDR LM R0,R1,SAVEWRK8 LOAD LEN. AND ADDRESS OF BAD ARGUMENT 01569000
  1324. TM SAVEWRK1+1,CONVLEN CONVERT LENGTH ERROR? @VA03060 01570000
  1325. BO CDB003 BRANCH IF YES @VA03060 01571000
  1326. TM SAVEWRK1,HEXLOC LOCATION REQUEST 01572000
  1327. BO CDB004 BR. IF YES 01573000
  1328. CDB003 LA R2,3 ERROR CODE 01574000
  1329. B PARMLEN SET PARM LENGTH @VM08524 01575000
  1330. SPACE 01576000
  1331. CDB004 LA R2,4 ERROR CODE 01577000
  1332. B PARMLEN SET PARM LENGTH @VM08524 01578000
  1333. SPACE 01579000
  1334. CDB009 LA R2,009 ERROR CODE 01580000
  1335. L R1,TBEGADD GET TRUE BEGIN ADDRESS @VM08524 01581000
  1336. TM SAVEWRK1,HEXLOC HEX LOC OR REGISTER ?? @V200930 01582000
  1337. BO CVTH1 HEX @V200930 01583000
  1338. CALL DMKCVTBD CONVERT TO DEC @V200930 01584000
  1339. B STCM1 SAVE VALUES @V200930 01585000
  1340. CVTH1 CALL DMKCVTBH CONVERT TO HEX @V200930 01586000
  1341. STCM1 DS 0H @V200930 01587000
  1342. STCM R0,3,BUFBUF STORE HEXLOC 01588000
  1343. STCM R1,15,BUFBUF+2 . . . 01589000
  1344. MVI BUFBUF+6,C'-' INSERT HYPHEN 01590000
  1345. L R1,TENDADD LOAD TRUE END ADDRESS @VM08524 01591000
  1346. TM SAVEWRK1,HEXLOC HEX OR DEC CONVERT ?? @V200930 01592000
  1347. BO CVTH2 HEX @V200930 01593000
  1348. CALL DMKCVTBD CONVERT TO DEC @V200930 01594000
  1349. B STCM2 SAVE VALUES @V200930 01595000
  1350. CVTH2 CALL DMKCVTBH CONVERT TO HEX @V200930 01596000
  1351. STCM2 DS 0H @V200930 01597000
  1352. STCM R0,3,BUFBUF+7 STORE AWAY 01598000
  1353. STCM R1,15,BUFBUF+9 . . . 01599000
  1354. TM SAVEWRK1,HEXLOC HEX LOCATION ?? @V200930 01600000
  1355. BO STCM3 YES, CONT @V200930 01601000
  1356. STCM R1,3,BUFBUF+7 SET VALUE FOR REG @V200930 01602000
  1357. LA R0,5 SIZE @V200930 01603000
  1358. LA R1,BUFBUF+4 DATA ADDRESS @V200930 01604000
  1359. B CALLERM DO ERROR MESSAGE @V200930 01605000
  1360. STCM3 DS 0H @V200930 01606000
  1361. LA R0,13 LENGTH OF FIELD 01607000
  1362. LA R1,BUFBUF SET DATA ADDRESS @V200930 01608000
  1363. B CALLERM 01609000
  1364. SPACE 01610000
  1365. CDB010 LA R2,010 ERROR CODE - MESSAGE DMKCDB010 @VM08524 01611000
  1366. B ERRPARM GO SET UP ERROR PARM @VM08524 01612000
  1367. SPACE 01613000
  1368. CDB026 LA R2,26 ERROR CODE 01614000
  1369. B NOVAR . . . 01615000
  1370. SPACE 01616000
  1371. CDB033 LA R2,33 ERROR CODE 01617000
  1372. B NOVAR . . . 01618000
  1373. SPACE 01619000
  1374. CDB160 LA R2,160 ERROR CODE - MESSAGE DMKCDB160 @VM08524 01626000
  1375. ERRPARM LM R0,R1,SAVEWRK8 COUNT AND ADDRESS OF ERROR OPTION@VM08524 01627000
  1376. PARMLEN C R0,F24 COUNT OVER MAX @VM08524 01628000
  1377. BNH *+8 NO - @VM08524 01629000
  1378. LA R0,24 SET MAX COUNT @VM08524 01630000
  1379. B CALLERM . . . 01631000
  1380. SPACE 01632000
  1381. NOVAR SR R1,R1 ZERO PARM REG 01633000
  1382. SPACE 01634000
  1383. SPACE 01635000
  1384. CALLERM ICM R0,14,MODID+3 INSERT MODULE ID 01636000
  1385. ICM R2,B'1000',X40FFS FLAG TO FRET BUFFER, NOT RTN@V4075A0 01637100
  1386. L R3,SAVEWRK4 LOAD ADDRESS AND LENGTH OF BUFFER 01638000
  1387. CALL DMKERMSG . . . 01639000
  1388. * 01640000
  1389. * DMKERM MODULE WILL FRET THE BUFFER, SVC16 THE SAVEAREA OUT, 01641000
  1390. * AND RETURN DIRECTLY TO DMKCFM TO PROCESS THE NEXT COMMAND. 01642000
  1391. * 01643000
  1392. EJECT 01644000
  1393. EXIT EQU * 01645000
  1394. TM VMPSTAT,VMV370R EXTENDED-CONTROL MACHINE? 01646000
  1395. BZ EXITOUT NO - CONTINUE 01647000
  1396. TM VMESTAT,VMNEWCR0+VMINVSEG+VMINVPAG 01648000
  1397. BZ EXITOUT NOTHING NEEDS CLEANUP 01649000
  1398. CALL DMKVATAB CLEAN UP SHADOW TABLES 01650000
  1399. EXITOUT LA R0,BFRSIZE FRET OUTPUT BUFFER @VM08524 01651000
  1400. LR R1,R10 ADDRESS OF BUFFER @VM08524 01652000
  1401. CALL DMKFRET .. @VM08524 01653000
  1402. EXIT @VM08515 01654000
  1403. EJECT 01655000
  1404. *********************************************************************** 01656000
  1405. * 01657000
  1406. * CONSTANTS * 01658000
  1407. * * 01659000
  1408. KEYEQ DC C'KEY =' 01660000
  1409. SUPPLMSG DC C'SUPPRESSED LINE(S) SAME AS ABOVE .....' 01661000
  1410. CPSWEQ DC C'PSW =' @V4075A0 01661100
  1411. SPACE 01662000
  1412. LTORG 01663000
  1413. EJECT 01664000
  1414. PSA , @V306638 01665000
  1415. COPY CONBUF @V306638 01666000
  1416. COPY EQU @V306638 01667000
  1417. COPY SAVE @V306638 01668000
  1418. COPY VMBLOK @V306638 01669000
  1419. END 01670000
ibm/vm370-lib/cp/dmkcdb.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator