Table of Contents

DMMDIR Source

References

Source Listing

DMMDIR.ASSEMBLE.txt
  1. DIR TITLE 'DMMDIR (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: 00003000
  4. * DUMPSCAN 00004000
  5. * 00005000
  6. * FUNCTION: 00006000
  7. * FORMAT AND DISPLAY THE DUMP FOR 'DSC' AND 'SCR' 00007000
  8. * 00008000
  9. * ATTRIBUTES: 00009000
  10. * REUSABLE 00010000
  11. * NON-REENTRANT 00011000
  12. * 00012000
  13. * ENTRY POINTS: 00013000
  14. * DMMDIR 00014000
  15. * 00015000
  16. * ENTRY CONDITIONS: 00016000
  17. * R2 POINTS TO THE AREA TO BE DISPLAYED 00017000
  18. * R7 CONTAINS THE DUMP ADDRESS TO BE DISPLAYED 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. * DMMINT TRANSLATE 00026000
  27. * 00027000
  28. * EXTERNAL REFERENCES: 00028000
  29. * BUFF1 DATA AREA 00029000
  30. * CMDINFO HEADER 00030000
  31. * TYPEFLAG TERMINAL TYPE 00031000
  32. * 00032000
  33. * TABLES/WORKAREAS: 00033000
  34. * SCREEN DISPLAY AREA 00034000
  35. * 00035000
  36. * REGISTER USAGE: 00036000
  37. * 00037000
  38. * R15 ADDRESSES OF EXTERNAL ROUTINES 00038000
  39. * R14 RETURNS FROM EXTERNAL ROUTINES 00039000
  40. * R13 SAVE AREA ADDRESS 00040000
  41. * R12 BASE 00041000
  42. * R11,R10 NOT USED 00042000
  43. * R9-R2 WORK REGISTERS 00043000
  44. * 00044000
  45. * NOTES: 00045000
  46. * 00046000
  47. * 00047000
  48. * OPERATION: 00048000
  49. * DIR FIRST CLEARS THE SCREEN WORK AREA. 00049000
  50. * THE INTENT IS TO PUT THE REQUESTED ADDRESS ON 00050000
  51. * LINE 8 OF THE SCREEN. SO, ALLOWING 16 TRANSLATED 00051000
  52. * BYTES TO A LINE THE STARTING AND ENDING ADDRESSES 00052000
  53. * ARE CALCULATED. THE 16 BYTES OF DATA, ALONG WITH 00053000
  54. * THE TRUE, IN-DUMP ADDRESS IS THEN TRANSLATED AND LAID 00054000
  55. * OUT ON THE SCREEN. WHEN THE SCREEN IS FILLED, IT IS 00055000
  56. * WRITTEN OUT BY A DIAGNOSE UNLESS THE TERMINAL IS 00056000
  57. * A 2741. IN THIS CASE, ONLY ONE LINE AT THE REQUESTED 00057000
  58. * ADDRESS IS WRITTEN. 00058000
  59. * 00059000
  60. * ERROR MESSAGES: 00060000
  61. * NONE 00061000
  62. * 00062000
  63. * * * * * * * *------- -------- -------- -------- ------* 00063000
  64. DMMDIR CSECT @VA04250 00064000
  65. ENTRY SCRNAREA DISPLAY AREA @VA04250 00065000
  66. ENTRY INCORE ADDRESS IN CORE OF LAST DISP AREA@V4075A2 00066000
  67. ENTRY DMMDIRLN COMMON WRTERM/PRINT ROUTINE @V4075A2 00067000
  68. EXTRN PRINTSW PRINT ON/OFF STATUS @V4075A2 00068000
  69. ENTRY HEXAD LAST ADDRESS DISPLAYED @VA04250 00069000
  70. EXTRN BUFF1 DUMP DATA @VA04250 00070000
  71. EXTRN DMMINT TRANSLATE @VA04250 00071000
  72. EXTRN CMDINFO HEADER @VA04250 00072000
  73. EXTRN TYPEFLAG TYPE OF TERMINAL @VA04250 00073000
  74. EXTRN CONSOLE VIRT CONS ADDR. @VA04250 00074000
  75. EXTRN PRINTONE ONE-SHOT PRINT SWITCH @V4075A2 00075000
  76. STM R14,R12,SAVEDISP(R13) CALLER SAVE @VA04250 00076000
  77. LR R12,R15 ADDRESS. @VA04250 00077000
  78. USING DMMDIR,R12 USE @VA04250 00078000
  79. LA R11,SCRNAREA ADDRESSABILITY TO @VA04250 00079000
  80. USING SCREEN,R11 SCREEN DSECT @VA04250 00080000
  81. ST R13,SAVEBACK CALLER SAVE PTR @VA04250 00081000
  82. B EYECATCH BYPASS EYECATCHER @VA04250 00082000
  83. DS 0D ALIGN @VA04250 00083000
  84. DC CL8'DMMDIR' EYECATCH @VA04250 00084000
  85. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00085000
  86. EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00086000
  87. * * * * * * * *-----------------------------------------* 00087000
  88. * * * * * * * * DIR IS PASSED AN ADDRESS TO BE FORMATTED 00088000
  89. * * * * * * * * AND DISPLAYED ON THE SCREEN. AT THE TIME 00089000
  90. * * * * * * * * HE GETS CONTROL, THE RECORD IS IN CORE IN 00090000
  91. * * * * * * * * BUFF1. 00091000
  92. * * * * * * * * R2 HAS THE IN-CORE ADDRESS OF THE 00092000
  93. * * * * * * * * REQUIRED PART OF THE DUMP. 00093000
  94. * * * * * * * * R7 HAS THE IN-DUMP ADDRESS TO FORMAT. 00094000
  95. * * * * * * * *-----------------------------------------* 00095000
  96. ST R7,HEXAD SAVE REQUESTED ADDRESS @VA04250 00096000
  97. XC RETCODE,RETCODE CLEAR RETURN @VA04250 00097000
  98. LR R9,R2 GET IN CORE ADDRESS @VA04250 00098000
  99. L R2,BUFF1ADD GET PAGE LOWER BOUNDARY @VA04250 00099000
  100. LA R8,SCREEN START OF SCREEN @VA04250 00100000
  101. STM R6,R9,CLEARSAV SAVE REGS THROUGH CLEAR @VA04250 00101000
  102. LA R6,SCREEN START OF SCREEN @VA04250 00102000
  103. LA R7,SCREENSZ 1760 BYTES IN SCREEN @VA04250 00103000
  104. LA R9,BLANKPAD PAD @VA04830 00104000
  105. SLL R9,HIORD PUT PAD CHAR IN HI ORDER @VA04830 00105000
  106. MVCL R6,R8 CLEAR SCREEN @VA04250 00106000
  107. LM R6,R9,CLEARSAV RESTORE REGS @VA04250 00107000
  108. ST R9,INCORE SAVE THE ADDRESS TO BE DISPLAYED @V4075A2 00108000
  109. SH R9,EIGHTY POINT TO FIRST LINE TO BE SCREE @VA04250 00109000
  110. SH R7,EIGHTY KEEP REAL ADDRESS IN STEP @VA04250 00110000
  111. LR R6,R9 GET FIRST LINE @VA04250 00111000
  112. AH R6,ONETIRTY R6 NOW POINTS TO END OF SCREEN @VA04250 00112000
  113. AH R2,ONEK R2 POINTS TO TOP OF PAGE @VA04250 00113000
  114. CR R6,R2 IS TOP OF SCREEN OFF PAGE? @VA04250 00114000
  115. BNH OFFPAGE NO @VA04250 00115000
  116. LR R6,R2 YES - USE LOWER FIGURE @VA04250 00116000
  117. OFFPAGE SH R2,ONEK RESTORE R2 @VA04250 00117000
  118. OFFCOMP CR R2,R9 CURRENT LINE PTR OFF PAGE? @VA04250 00118000
  119. BNH KEEPON NO - PRINT IT. @VA04250 00119000
  120. LA R9,EBCOUT(R9) NEXT LINE ON PAGE @VA04250 00120000
  121. LA R7,EBCOUT(R7) BUMP REAL ADDRESS @VA04250 00121000
  122. LA R8,LINEL(R8) NEXT LINE ON SCREEN @VA04250 00122000
  123. B OFFCOMP GO CHECK NEXT LINE @VA04250 00123000
  124. KEEPON LA R3,TRANL GET LENGTH FOR TRANSLATE - 19 @VA04250 00124000
  125. TRANSLAT MVC TRANLINE+TDAT(L'TRANLINE-TDAT),0(R9) TRANS DATA @VA04250 00125000
  126. ST R7,TRANLINE LOAD ADDRESS FOR TRANS @VA04250 00126000
  127. LA R4,TRANLINE+ONE GET ADDRESS FOR TRANS @VA04250 00127000
  128. L R15,INTADD GO DO IT @VA04250 00128000
  129. BALR R14,R15 LINK @VA04250 00129000
  130. LA R8,FOUR(R8) POINT TO ADDR AREA @VA04250 00130000
  131. MVC 0(TRANADL,R8),0(R5) PLUG ADDRESS @VA04250 00131000
  132. LA R5,SIX(R5) POINT TO DATA @VA04250 00132000
  133. LA R2,FOUR COUNT SLOTS ON LINE @VA04250 00133000
  134. LA R8,TEN(R8) MIDDLE OF SCREEN @VA04250 00134000
  135. MOVEBLOK MVC 0(TRANOUT,R8),0(R5) MOVE XLATED 8 BYTES TO SCRN @VA04250 00135000
  136. LA R8,TEN(R8) NEXT OUTPUT BLOCK @VA04250 00136000
  137. LA R5,EIGHT(R5) NEXT INPUT BLOCK @VA04250 00137000
  138. BCT R2,MOVEBLOK MOVE NEXT BLOK @VA04250 00138000
  139. LA R8,TWO(R8) POINT TO EBCDIC AREA @VA04250 00139000
  140. MVC 0(EBCOUT,R8),0(R9) WRITE EBCDIC @VA04250 00140000
  141. TR 0(EBCOUT,R8),TRTABLE TRANSLATE UNPRINTABLES @VA04250 00141000
  142. LA R8,TWENTYFO(R8) BUMP SCREEN LINE PTR @VA04250 00142000
  143. CR R6,R9 OFF END OF SCREEN? @VA04250 00143000
  144. BL SCRNFULL YES - GO WRITE IT @VA04250 00144000
  145. LA R9,EBCOUT(R9) BUMP PAGELINE PTR @VA04250 00145000
  146. LA R7,EBCOUT(R7) BUMP ADDRESS CTR @VA04250 00146000
  147. B KEEPON GET NEXT LINE @VA04250 00147000
  148. * * * * * * * *-----------------------------------------* 00148000
  149. * * * * * * * * THIS ROUTINE WRITES TO THE SCREEN 00149000
  150. * * * * * * * *-----------------------------------------* 00150000
  151. SCRNFULL MVC SCRNL21(LINEL),BLANKOUT CLEAR READY LINE @VA04830 00151000
  152. MVC SCRNL21(L'READYMSG),READYMSG '*** READY ***' @VA04250 00152000
  153. L R2,CIADD INFO LINE @VA04250 00153000
  154. MVC SCRNL1(LINEL),0(R2) POST ANY ADDITIONAL INFO @VA04250 00154000
  155. MVC 0(LINEL,R2),BLANKOUT CLEAR MESSAGE AREA @VA04830 00155000
  156. L R2,TFLAGADD GET DEVICE TYPE @VA04250 00156000
  157. CLI 0(R2),TYPER TYPER? @VA04250 00157000
  158. BNE SCREENIT NO - GO DISPLAY IT @VA04250 00158000
  159. LA R8,SCRNL9 YES TYPE 1 LINE. GET ADDRESS @VA04250 00159000
  160. LA R9,SHRTLINE LENGTH - 72 @VA04250 00160000
  161. BAL R10,WRTERM GO WRITE ONE LINE @VA04250 00161000
  162. B RETURN GO BACK @VA04250 00162000
  163. SCREENIT MVC SCRNL9(L'ASTS),ASTS FLAG ACTIVE ADDRESS @VA04250 00163000
  164. MVC SCRNL9+LREADY(L'ASTS),ASTS DITTO @VA04250 00164000
  165. MVI CCW1CTL,ON SET ERASE CONTROL BYTE ON @VA04250 00165000
  166. MVI CCW2CTL,LINE1 START WRITE LINE 1 @VA04250 00166000
  167. LA R3,CCWD CCW FOR DIAGNOSE @VA04250 00167000
  168. L R4,CONSADD VIRT CONS ADDRESS @VA04250 00168000
  169. L R4,0(R4) DEVICE ADDRESS @VA04250 00169000
  170. B DISBRENT GO TO BRANCH ENTRY TO DISPLAY @V4075A2 00170000
  171. * * * * * * * * ------- -------- -------- ------- * 00171000
  172. * * * * * * * * WRTERM 00172000
  173. * * * * * * * * ------- -------- -------- ------- * 00173000
  174. WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00174000
  175. ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00175000
  176. LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00176000
  177. L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00177000
  178. BALR R14,R15 GO WRITE THE LINE @V4075A2 00178000
  179. BR R10 AND RETURN @V4075A2 00179000
  180. PARMLIS1 DS F PARM1 @V4075A2 00180000
  181. PARMLIS2 DS F PARM2 @V4075A2 00181000
  182. FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00182000
  183. * * * * * * * * ------- -------- -------- ------- * 00183000
  184. * * * * * * * * CONSTANTS FOR FORMAT 00184000
  185. * * * * * * * *------- -------- -------- -------- ------* 00185000
  186. DS 0F ALIGN @VA04250 00186000
  187. TRANLINE DS CL20 LINE FROM DUMP TO BE TRANSLATED @VA04250 00187000
  188. HEXAD DC 4X'FF' LAST ADDRESS DISPLAYED @VA04250 00188000
  189. ONEK DC X'0FE0' ONE PAGE @VA04250 00189000
  190. EIGHTY DC X'0080' 8 LINES FORMATTED @VA04250 00190000
  191. ONETIRTY DC X'0130' ONE SCREEN FORMATTED @VA04250 00191000
  192. * * * * * * * * ------- -------- -------- ------- * 00192000
  193. * * * * * * * * MISC CONSTANTS 00193000
  194. * * * * * * * * ------- -------- -------- ------- * 00194000
  195. RETCODE DS F RETURN CODE @VA04250 00195000
  196. TYPER EQU X'FF' TYPER DEVICE FLAG @VA04250 00196000
  197. NULL EQU X'00' CLEAR REGS @VA04250 00197000
  198. LINE1 EQU X'01' FIRST SCREEN LINE @VA04250 00198000
  199. ONE EQU 1 THIS AND @VA04250 00199000
  200. TWO EQU 2 THESE ARE NUMERIC EQUATES @VA04250 00200000
  201. FOUR EQU 4 USED IN THE TRANSLATE AND @VA04250 00201000
  202. SIX EQU 6 FORMAT ROUTINE @VA04250 00202000
  203. EIGHT EQU 8 AND REPRESENT THE ARRANGEMENT @VA04250 00203000
  204. TEN EQU 10 OF THE OUTPUT AREA. @VA04250 00204000
  205. TWENTYFO EQU 24 ON THE SCREEN @VA04250 00205000
  206. * * * * * * * * ------- -------- -------- ------- * 00206000
  207. SCREENSZ EQU 1760 SIZE OF SCREEN IN BYTES @VA04250 00207000
  208. MAXTRIES EQU 100 MAX NUMBER OF WRITE TRIES @VA04250 00208000
  209. TRANL EQU 19 LENGTH TO TRANSLATE @VA04250 00209000
  210. TRANADL EQU 6 LENGTH OF TRANSLATED ADDRESS @VA04250 00210000
  211. TRANOUT EQU 8 LENGTH OF OUTPUT BLOCK @VA04250 00211000
  212. EBCOUT EQU 16 LENGTH OF EBCDIC OUTPUT AREA @VA04250 00212000
  213. SHRTLINE EQU 72 LENGTH OF DATA ON OUT LINE @VA04250 00213000
  214. LINEL EQU 80 LENGTH OF OUTPUT LINE @VA04250 00214000
  215. ON EQU X'FF' ON - SWITCH STATUS @VA04250 00215000
  216. ASTS DC CL3'***' ASTERISKS FOR 'CURRENT LINE' @VA04250 00216000
  217. TDAT EQU 4 LENGTH OF DATA TO TRANSLATE @VA04250 00217000
  218. LREADY EQU 11 LENGTH OF FIRST PART OF 'READY' @VA04250 00218000
  219. SAVEDISP EQU 12 DISP INTO SAVEAREA FOR REGS @VA04250 00219000
  220. SAVREG15 EQU 16 DISP INTO SAVAREA FOR R15 @VA04250 00220000
  221. BLANKPAD EQU 64 PAD CHAR FOR LONG CLEAR @VA04830 00221000
  222. HIORD EQU 24 BITS TO GET TO HI ORD BYTE @VA04830 00222000
  223. * * * * * * * * ------- -------- -------- ------- * 00223000
  224. * * * * * * * * SAVEAREA 00224000
  225. * * * * * * * * ------- -------- -------- ------- * 00225000
  226. SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00226000
  227. SAVEUSR DS F USER WORD @VA04250 00227000
  228. SAVEFWD DS F FORWARD POINTER @VA04250 00228000
  229. SAVEBACK DS F BACKWARD POINTER @VA04250 00229000
  230. SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00230000
  231. SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00231000
  232. SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00232000
  233. SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00233000
  234. SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00234000
  235. SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00235000
  236. SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00236000
  237. SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00237000
  238. SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00238000
  239. SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00239000
  240. SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00240000
  241. SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00241000
  242. SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00242000
  243. SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00243000
  244. SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00244000
  245. * * * * * * * * ------- -------- -------- ------- * 00245000
  246. CLEARSAV DS 4F SAVE REGS ACROSS MVCL @VA04250 00246000
  247. BUFF1ADD DC AL4(BUFF1) DUMP DATA @VA04250 00247000
  248. CIADD DC AL4(CMDINFO) HEADER @VA04250 00248000
  249. TFLAGADD DC AL4(TYPEFLAG) DEVICE TYPE @VA04250 00249000
  250. CONSADD DC AL4(CONSOLE) ADDRESS OF VIRT CONSOLE CUU @VA04250 00250000
  251. INTADD DC AL4(DMMINT) TRANSLATE @VA04250 00251000
  252. * * * * * * * * ------- -------- -------- ------- * 00252000
  253. * * * * * * * * TRANSLATE TABLE FOR SCREEN 00253000
  254. * * * * * * * * ------- -------- -------- ------- * 00254000
  255. TRTABLE DS CL256 TRANSLATE TABLE @VA04250 00255000
  256. ORG TRTABLE @VA04250 00256000
  257. DC 64C'.' 64 UNPRINTABLE CHARACTERS @VA04250 00257000
  258. DC C' ' DISPLAY BLANK AS BLANK @VA04250 00258000
  259. DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00259000
  260. DC X'4A4B4C4D4E4F50' 7.<(+|&' @VA04250 00260000
  261. DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00261000
  262. DC X'5A5B5C5D5E5F6061' 8 '!$*);¬-/' @VA04250 00262000
  263. DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00263000
  264. DC X'6B6C6D6E6F' 5 ',%_>?' @VA04250 00264000
  265. DC 10C'.' 10 UNPRINTABLE CHARACTERS @VA04250 00265000
  266. DC X'7A7B7C7D7E7F' 6 ':#@'="' @VA04250 00266000
  267. DC C'.' 1 UNPRINTABLE CHARACTER @VA04250 00267000
  268. DC X'818283848586878889' 9 'ABCDEFGHI' LOWER CASE @VA04250 00268000
  269. DC 7C'.' 7 UNPRINTABLE CHARACTERS @VA04250 00269000
  270. DC X'919293949596979899' 9 'JKLMNOPQR' LOWER CASE @VA04250 00270000
  271. DC 8C'.' 8 UNPRINTABLE CHARACTERS @VA04250 00271000
  272. DC X'A2A3A4A5A6A7A8A9' 8 'STUVWXYZ' LOWER CASE @VA04250 00272000
  273. DC 23C'.' 23 UNPRINTABLE CHARACTERS @VA04250 00273000
  274. DC X'C1C2C3C4C5C6C7C8C9' 9 'ABCDEFGHI' UPPER @VA04250 00274000
  275. DC 7C'.' 7 UNPRINTABLE CHARACTERS @VA04250 00275000
  276. DC X'D1D2D3D4D5D6D7D8D9' 9 'JKLMNOPQR' UPPER @VA04250 00276000
  277. DC 8C'.' 8 UNPRINTABLE CHARACTERS @VA04250 00277000
  278. DC X'E2E3E4E5E6E7E8E9' 8 'STUVWXYZ' UPPER @VA04250 00278000
  279. DC 6C'.' 6 UNPRINTABLE CHARACTERS @VA04250 00279000
  280. DC X'F0F1F2F3F4F5F6F7F8F9' 10 '0123456789' @VA04250 00280000
  281. DC 6C'.' 6 UNPRINTABLE CHARACTERS @VA04250 00281000
  282. * * * * * * * * ------- -------- -------- ------- * 00282000
  283. * * * * * * * * 'SCREEN CONSTANTS 00283000
  284. * * * * * * * * ------- -------- -------- ------- * 00284000
  285. READYMSG DC C'*** READY ***' @VA04250 00285000
  286. CCWD CCW X'19',SCRNAREA,X'60',1760 ERASE CCW @VA04250 00286000
  287. CCW X'19',SCRNAREA,X'20',1680 WRITE CCW @VA04250 00287000
  288. CCW1CTL EQU CCWD+5 CCW1 CONTROL BYTE - ERASE @VA04250 00288000
  289. CCW2CTL EQU CCWD+13 CCW2 CTL BYTE - START LINE @VA04250 00289000
  290. BLANKOUT DC CL80' ' FILL CHAR @VA04830 00290000
  291. SCRNAREA DS CL1760 DISPLAY AREA @VA04250 00291000
  292. ************************************************************** @V4075A2 00292000
  293. * COMMON SCREEN WRITE ROUTINE @V4075A2 00293000
  294. * ALSO CHECKS FOR 'PRINT' ON, AND @V4075A2 00294000
  295. * WRITES TO THE VIRTUAL PRTR @V4075A2 00295000
  296. ************************************************************** @V4075A2 00296000
  297. DMMDIRLN STM R14,R12,SAVEDISP(R13) SAVE CALLERS REGS @V4075A2 00297000
  298. DROP R12 @V4075A2 00298000
  299. USING DMMDIRLN,R15 @V4075A2 00299000
  300. L R12,DIRADDR GET START OF THIS MODULE @V4075A2 00300000
  301. B THISBASE AROUND ADCON @V4075A2 00301000
  302. DIRADDR DC AL4(DMMDIR) BASE FOR ENTRY @V4075A2 00302000
  303. DROP R15 GET READY FOR 12 @V4075A2 00303000
  304. USING DMMDIR,R12 @V4075A2 00304000
  305. THISBASE ST R13,SAVEBACK CALLERS SAVE AREA @V4075A2 00305000
  306. LA R13,SAVEAREA HEX SAVEAREA @V4075A2 00306000
  307. DISBRENT XC PRETCODE,PRETCODE CLEAR PRINT RETURN CODE @V4075A2 00307000
  308. * IF THIS IS A REISSUE, DONT DISPLAY. @V4075A2 00308000
  309. L R6,PRINT1AD IS THIS A ONE-SHOT DEAL? @V4075A2 00309000
  310. CLI 0(R6),NOSUBC INDICATING PRINT PREV CMD @V4075A2 00310000
  311. BE GETPRTSW YES - DONT DISPLAY. @V4075A2 00311000
  312. WAITT WAIT FOR ANY SCREEN ACTIVITY. @V4075A2 00312000
  313. LA R6,100 SET MAX RETRY COUNT @V4075A2 00313000
  314. SPLASH DC X'83340058' DIAGNOSE @V4075A2 00314000
  315. BZ GETPRTSW OK - GO CHECK THE PRINT SWITCH @V4075A2 00315000
  316. BCT R6,SPLASH TRY A FEW MORE TIMES @V4075A2 00316000
  317. ************************************************************** @V4075A2 00317000
  318. * NOW LOOK SEE IF WE MUST ALSO PRINT THIS @V4075A2 00318000
  319. ************************************************************** @V4075A2 00319000
  320. GETPRTSW L R2,PRTSWADD POINT TO THE PRINT STATUS SW @V4075A2 00320000
  321. CLI 0(R2),ON SHOULD WE PRINT THIS TOO ? @V4075A2 00321000
  322. BNE RETURN NO @V4075A2 00322000
  323. ************************************************************** @V4075A2 00323000
  324. * SINCE PRINT IS ON WE WILL WRITE THIS TO '00E' @V4075A2 00324000
  325. * R3 POINTS TO THE DIAG CCW CHAIN. GO THERE TO GET @V4075A2 00325000
  326. * THE ADDRESS OF THE DATA TO WRITE, AND THE NUMBER OF @V4075A2 00326000
  327. * BYTES. FROM THIS FIGURE THE NUMBER OF LINES TO WRITE. @V4075A2 00327000
  328. ************************************************************** @V4075A2 00328000
  329. L R4,0(R3) GET THE SCREEN ADDR FROM THE CCW @V4075A2 00329000
  330. LA R4,0(R4) AND CLEAR OUT THE HI BYTE @V4075A2 00330000
  331. L R7,4(R3) GET THE BYTE COUNT @V4075A2 00331000
  332. SLL R7,16 CLEAR OUT THE FLAG AND CNTRL FLDS@V4075A2 00332000
  333. SRL R7,16 AND RESTORE THE COUNT @V4075A2 00333000
  334. LA R5,80 BYTES/LINE @V4075A2 00334000
  335. LA R6,0 CLEAR TOP OF DIVIDEND @V4075A2 00335000
  336. DR R6,R5 FIND NUM. LINES @V4075A2 00336000
  337. ************************************************************** @V4075A2 00337000
  338. * NOW CHECK FOR A REMAINDER AND CORRECT THE LINES. @V4075A2 00338000
  339. * ALSO CHECK FOR A MAX OF 22 LINES @V4075A2 00339000
  340. ************************************************************** @V4075A2 00340000
  341. LTR R6,R6 ANY REMAINDER? @V4075A2 00341000
  342. BZ COUNTRT IF NOT - DONT ADJUST @V4075A2 00342000
  343. LA R7,1(R7) YES - ADD A LINE @V4075A2 00343000
  344. COUNTRT C R7,TWENTY2 SEE IF MORE THAN 22 LINES REMAIN @V4075A2 00344000
  345. BNH COUNTDON NO - DONT SET TO 22 @V4075A2 00345000
  346. L R7,TWENTY2 TOO MANY - SET TO 22 @V4075A2 00346000
  347. ************************************************************** @V4075A2 00347000
  348. * NOW CLEAR THE PRINT LINE TO BLANKS, AND MOVE IN @V4075A2 00348000
  349. * AND THE PRINT THE SET NUMBER OF LINES. @V4075A2 00349000
  350. ************************************************************** @V4075A2 00350000
  351. COUNTDON MVI PRINTLIN,BLANK SET UP TO CLEAR PRINT LINE @V4075A2 00351000
  352. MVC PRINTLIN+ONE(L'PRINTLIN-ONE),PRINTLIN TO BLANKS @V4075A2 00352000
  353. LA R9,L'PRINTLIN-1 SET TO MOVE 80 BYTES @V4075A2 00353000
  354. MOVEX EX R9,MOVEPRTL GET THE LINE @V4075A2 00354000
  355. LA R2,CARRCTRL POINT TO THE CARRAIGE CONTROL @V4075A2 00355000
  356. PRINTL (R2),81,ERROR=PRINTERR WRITE TO VIRT PRINTER @V4075A2 00356000
  357. PRINTOK LA R4,L'PRINTLIN(R4) BUMP TO NEXT LINE @V4075A2 00357000
  358. BCT R7,COUNTDON GO PRINT ANOTHER LINE @V4075A2 00358000
  359. B RETURN GET OUT @V4075A2 00359000
  360. MOVEPRTL MVC PRINTLIN(0),0(R4) MOVE DATA TO THE PRINT LINE @V4075A2 00360000
  361. ************************************************************** @V4075A2 00361000
  362. * RETURN @V4075A2 00362000
  363. ************************************************************** @V4075A2 00363000
  364. RETURN L R13,SAVEBACK @V4075A2 00364000
  365. MVC SAVREG15(L'RETCODE,R13),RETCODE PLUG THE RETURN @V4075A2 00365000
  366. LM R14,R12,SAVEDISP(R13) CALLERS REGS @V4075A2 00366000
  367. BR R14 RETURN @V4075A2 00367000
  368. ************************************************************** @V4075A2 00368000
  369. * THIS HANDLES NON ZERO RETURNS FROM PRINTL @V4075A2 00369000
  370. ************************************************************** @V4075A2 00370000
  371. PRINTERR ST R15,PRTERRCD SAVE THE CODE @V4075A2 00371000
  372. L R2,PRTERRCD GET IT FOR PRINTL @V4075A2 00372000
  373. C R2,CHAN9 3211 VIRTUAL CARR TAPE HOLE? @V4075A2 00373000
  374. BE PRINTOK YES - MAY IGNORE THIS @V4075A2 00374000
  375. C R2,CHAN12 ANOTHER VIRTUAL HOLE? @V4075A2 00375000
  376. BE PRINTOK RIGHT @V4075A2 00376000
  377. LINEDIT TEXT='DMMDSC500S ERROR ''...'' WRITING TO THE VIRTUAL X00377000
  378. PRINTER',SUB=(DEC,(2)) @V4075A2 00378000
  379. MVC RETCODE,CODE4 SET WARNING CODE @V4075A2 00379000
  380. B RETURN AND GO BACK @V4075A2 00380000
  381. ************************************************************** @V4075A2 00381000
  382. * CONSTANTS @V4075A2 00382000
  383. NOSUBC EQU X'0F' 'DONT-DISPLAY' FLAG @V4075A2 00383000
  384. ************************************************************** @V4075A2 00384000
  385. BLANK EQU X'40' BLANK TO CLEAR PRINT LINE @V4075A2 00385000
  386. CARRCTRL DC C' ' CARRIAGE CONTROL CHARACTER @VA08980 00386000
  387. PRINTLIN DS CL80 PRINTED TEXT * DO NOT SEPARATE @V4075A2 00387000
  388. CHAN9 DC F'2' CHANNEL 2 @V4075A2 00388000
  389. CHAN12 DC F'3' CHANNEL 3 FROM CARR TAPE @V4075A2 00389000
  390. PRINT1AD DC AL4(PRINTONE) ONE-SHOT FLAG ADDRESS @V4075A2 00390000
  391. PRTERRCD DS F PRETCODE FROM PRINTL @V4075A2 00391000
  392. PRTSWADD DC AL4(PRINTSW) ADDRESS OF PRINT SW IN DMMDSC @V4075A2 00392000
  393. INCORE DC F'0' IN CORE ADDRESS OF LATEST DATA DISPLAYED@V4075A2 00393000
  394. PRETCODE DS F RETURN TO CALLER @V4075A2 00394000
  395. CODE4 DC F'4' WARNING RETURN @V4075A2 00395000
  396. TWENTY2 DC F'22' SCREEN FULL OF LINES @V4075A2 00396000
  397. PATCH DC 50F'0' PATCH AREA @VA04250 00397000
  398. LTORG @VA04250 00398000
  399. REGEQU @VA04250 00399000
  400. SCREEN DSECT @VA04250 00400000
  401. SCRNL1 DS CL80 @VA04250 00401000
  402. SCRNL2 DS CL80 @VA04250 00402000
  403. SCRNL3 DS CL80 @VA04250 00403000
  404. SCRNL4 DS CL80 @VA04250 00404000
  405. SCRNL5 DS CL80 @VA04250 00405000
  406. SCRNL6 DS CL80 @VA04250 00406000
  407. SCRNL7 DS CL80 @VA04250 00407000
  408. SCRNL8 DS CL80 @VA04250 00408000
  409. SCRNL9 DS CL80 @VA04250 00409000
  410. SCRNL10 DS CL80 @VA04250 00410000
  411. SCRNL11 DS CL80 @VA04250 00411000
  412. SCRNL12 DS CL80 @VA04250 00412000
  413. SCRNL13 DS CL80 @VA04250 00413000
  414. SCRNL14 DS CL80 @VA04250 00414000
  415. SCRNL15 DS CL80 @VA04250 00415000
  416. SCRNL16 DS CL80 @VA04250 00416000
  417. SCRNL17 DS CL80 @VA04250 00417000
  418. SCRNL18 DS CL80 @VA04250 00418000
  419. SCRNL19 DS CL80 @VA04250 00419000
  420. SCRNL20 DS CL80 @VA04250 00420000
  421. SCRNL21 DS CL80 @VA04250 00421000
  422. SCRNL22 DS CL80 @VA04250 00422000
  423. END 00423000