DIR TITLE 'DMMDIR (IPCS) VM/370 - RELEASE 6' 00001000 * 00002000 * MODULE NAME: 00003000 * DUMPSCAN 00004000 * 00005000 * FUNCTION: 00006000 * FORMAT AND DISPLAY THE DUMP FOR 'DSC' AND 'SCR' 00007000 * 00008000 * ATTRIBUTES: 00009000 * REUSABLE 00010000 * NON-REENTRANT 00011000 * 00012000 * ENTRY POINTS: 00013000 * DMMDIR 00014000 * 00015000 * ENTRY CONDITIONS: 00016000 * R2 POINTS TO THE AREA TO BE DISPLAYED 00017000 * R7 CONTAINS THE DUMP ADDRESS TO BE DISPLAYED 00018000 * 00019000 * EXIT CONDITIONS: 00020000 * RETURN CODE IN R15 0 - GOOD 00021000 * 4 - WARNING 00022000 * 8 - FATAL 00023000 * 00024000 * CALLS TO OTHER ROUTINES: 00025000 * DMMINT TRANSLATE 00026000 * 00027000 * EXTERNAL REFERENCES: 00028000 * BUFF1 DATA AREA 00029000 * CMDINFO HEADER 00030000 * TYPEFLAG TERMINAL TYPE 00031000 * 00032000 * TABLES/WORKAREAS: 00033000 * SCREEN DISPLAY AREA 00034000 * 00035000 * REGISTER USAGE: 00036000 * 00037000 * R15 ADDRESSES OF EXTERNAL ROUTINES 00038000 * R14 RETURNS FROM EXTERNAL ROUTINES 00039000 * R13 SAVE AREA ADDRESS 00040000 * R12 BASE 00041000 * R11,R10 NOT USED 00042000 * R9-R2 WORK REGISTERS 00043000 * 00044000 * NOTES: 00045000 * 00046000 * 00047000 * OPERATION: 00048000 * DIR FIRST CLEARS THE SCREEN WORK AREA. 00049000 * THE INTENT IS TO PUT THE REQUESTED ADDRESS ON 00050000 * LINE 8 OF THE SCREEN. SO, ALLOWING 16 TRANSLATED 00051000 * BYTES TO A LINE THE STARTING AND ENDING ADDRESSES 00052000 * ARE CALCULATED. THE 16 BYTES OF DATA, ALONG WITH 00053000 * THE TRUE, IN-DUMP ADDRESS IS THEN TRANSLATED AND LAID 00054000 * OUT ON THE SCREEN. WHEN THE SCREEN IS FILLED, IT IS 00055000 * WRITTEN OUT BY A DIAGNOSE UNLESS THE TERMINAL IS 00056000 * A 2741. IN THIS CASE, ONLY ONE LINE AT THE REQUESTED 00057000 * ADDRESS IS WRITTEN. 00058000 * 00059000 * ERROR MESSAGES: 00060000 * NONE 00061000 * 00062000 * * * * * * * *------- -------- -------- -------- ------* 00063000 DMMDIR CSECT @VA04250 00064000 ENTRY SCRNAREA DISPLAY AREA @VA04250 00065000 ENTRY INCORE ADDRESS IN CORE OF LAST DISP AREA@V4075A2 00066000 ENTRY DMMDIRLN COMMON WRTERM/PRINT ROUTINE @V4075A2 00067000 EXTRN PRINTSW PRINT ON/OFF STATUS @V4075A2 00068000 ENTRY HEXAD LAST ADDRESS DISPLAYED @VA04250 00069000 EXTRN BUFF1 DUMP DATA @VA04250 00070000 EXTRN DMMINT TRANSLATE @VA04250 00071000 EXTRN CMDINFO HEADER @VA04250 00072000 EXTRN TYPEFLAG TYPE OF TERMINAL @VA04250 00073000 EXTRN CONSOLE VIRT CONS ADDR. @VA04250 00074000 EXTRN PRINTONE ONE-SHOT PRINT SWITCH @V4075A2 00075000 STM R14,R12,SAVEDISP(R13) CALLER SAVE @VA04250 00076000 LR R12,R15 ADDRESS. @VA04250 00077000 USING DMMDIR,R12 USE @VA04250 00078000 LA R11,SCRNAREA ADDRESSABILITY TO @VA04250 00079000 USING SCREEN,R11 SCREEN DSECT @VA04250 00080000 ST R13,SAVEBACK CALLER SAVE PTR @VA04250 00081000 B EYECATCH BYPASS EYECATCHER @VA04250 00082000 DS 0D ALIGN @VA04250 00083000 DC CL8'DMMDIR' EYECATCH @VA04250 00084000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00085000 EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00086000 * * * * * * * *-----------------------------------------* 00087000 * * * * * * * * DIR IS PASSED AN ADDRESS TO BE FORMATTED 00088000 * * * * * * * * AND DISPLAYED ON THE SCREEN. AT THE TIME 00089000 * * * * * * * * HE GETS CONTROL, THE RECORD IS IN CORE IN 00090000 * * * * * * * * BUFF1. 00091000 * * * * * * * * R2 HAS THE IN-CORE ADDRESS OF THE 00092000 * * * * * * * * REQUIRED PART OF THE DUMP. 00093000 * * * * * * * * R7 HAS THE IN-DUMP ADDRESS TO FORMAT. 00094000 * * * * * * * *-----------------------------------------* 00095000 ST R7,HEXAD SAVE REQUESTED ADDRESS @VA04250 00096000 XC RETCODE,RETCODE CLEAR RETURN @VA04250 00097000 LR R9,R2 GET IN CORE ADDRESS @VA04250 00098000 L R2,BUFF1ADD GET PAGE LOWER BOUNDARY @VA04250 00099000 LA R8,SCREEN START OF SCREEN @VA04250 00100000 STM R6,R9,CLEARSAV SAVE REGS THROUGH CLEAR @VA04250 00101000 LA R6,SCREEN START OF SCREEN @VA04250 00102000 LA R7,SCREENSZ 1760 BYTES IN SCREEN @VA04250 00103000 LA R9,BLANKPAD PAD @VA04830 00104000 SLL R9,HIORD PUT PAD CHAR IN HI ORDER @VA04830 00105000 MVCL R6,R8 CLEAR SCREEN @VA04250 00106000 LM R6,R9,CLEARSAV RESTORE REGS @VA04250 00107000 ST R9,INCORE SAVE THE ADDRESS TO BE DISPLAYED @V4075A2 00108000 SH R9,EIGHTY POINT TO FIRST LINE TO BE SCREE @VA04250 00109000 SH R7,EIGHTY KEEP REAL ADDRESS IN STEP @VA04250 00110000 LR R6,R9 GET FIRST LINE @VA04250 00111000 AH R6,ONETIRTY R6 NOW POINTS TO END OF SCREEN @VA04250 00112000 AH R2,ONEK R2 POINTS TO TOP OF PAGE @VA04250 00113000 CR R6,R2 IS TOP OF SCREEN OFF PAGE? @VA04250 00114000 BNH OFFPAGE NO @VA04250 00115000 LR R6,R2 YES - USE LOWER FIGURE @VA04250 00116000 OFFPAGE SH R2,ONEK RESTORE R2 @VA04250 00117000 OFFCOMP CR R2,R9 CURRENT LINE PTR OFF PAGE? @VA04250 00118000 BNH KEEPON NO - PRINT IT. @VA04250 00119000 LA R9,EBCOUT(R9) NEXT LINE ON PAGE @VA04250 00120000 LA R7,EBCOUT(R7) BUMP REAL ADDRESS @VA04250 00121000 LA R8,LINEL(R8) NEXT LINE ON SCREEN @VA04250 00122000 B OFFCOMP GO CHECK NEXT LINE @VA04250 00123000 KEEPON LA R3,TRANL GET LENGTH FOR TRANSLATE - 19 @VA04250 00124000 TRANSLAT MVC TRANLINE+TDAT(L'TRANLINE-TDAT),0(R9) TRANS DATA @VA04250 00125000 ST R7,TRANLINE LOAD ADDRESS FOR TRANS @VA04250 00126000 LA R4,TRANLINE+ONE GET ADDRESS FOR TRANS @VA04250 00127000 L R15,INTADD GO DO IT @VA04250 00128000 BALR R14,R15 LINK @VA04250 00129000 LA R8,FOUR(R8) POINT TO ADDR AREA @VA04250 00130000 MVC 0(TRANADL,R8),0(R5) PLUG ADDRESS @VA04250 00131000 LA R5,SIX(R5) POINT TO DATA @VA04250 00132000 LA R2,FOUR COUNT SLOTS ON LINE @VA04250 00133000 LA R8,TEN(R8) MIDDLE OF SCREEN @VA04250 00134000 MOVEBLOK MVC 0(TRANOUT,R8),0(R5) MOVE XLATED 8 BYTES TO SCRN @VA04250 00135000 LA R8,TEN(R8) NEXT OUTPUT BLOCK @VA04250 00136000 LA R5,EIGHT(R5) NEXT INPUT BLOCK @VA04250 00137000 BCT R2,MOVEBLOK MOVE NEXT BLOK @VA04250 00138000 LA R8,TWO(R8) POINT TO EBCDIC AREA @VA04250 00139000 MVC 0(EBCOUT,R8),0(R9) WRITE EBCDIC @VA04250 00140000 TR 0(EBCOUT,R8),TRTABLE TRANSLATE UNPRINTABLES @VA04250 00141000 LA R8,TWENTYFO(R8) BUMP SCREEN LINE PTR @VA04250 00142000 CR R6,R9 OFF END OF SCREEN? @VA04250 00143000 BL SCRNFULL YES - GO WRITE IT @VA04250 00144000 LA R9,EBCOUT(R9) BUMP PAGELINE PTR @VA04250 00145000 LA R7,EBCOUT(R7) BUMP ADDRESS CTR @VA04250 00146000 B KEEPON GET NEXT LINE @VA04250 00147000 * * * * * * * *-----------------------------------------* 00148000 * * * * * * * * THIS ROUTINE WRITES TO THE SCREEN 00149000 * * * * * * * *-----------------------------------------* 00150000 SCRNFULL MVC SCRNL21(LINEL),BLANKOUT CLEAR READY LINE @VA04830 00151000 MVC SCRNL21(L'READYMSG),READYMSG '*** READY ***' @VA04250 00152000 L R2,CIADD INFO LINE @VA04250 00153000 MVC SCRNL1(LINEL),0(R2) POST ANY ADDITIONAL INFO @VA04250 00154000 MVC 0(LINEL,R2),BLANKOUT CLEAR MESSAGE AREA @VA04830 00155000 L R2,TFLAGADD GET DEVICE TYPE @VA04250 00156000 CLI 0(R2),TYPER TYPER? @VA04250 00157000 BNE SCREENIT NO - GO DISPLAY IT @VA04250 00158000 LA R8,SCRNL9 YES TYPE 1 LINE. GET ADDRESS @VA04250 00159000 LA R9,SHRTLINE LENGTH - 72 @VA04250 00160000 BAL R10,WRTERM GO WRITE ONE LINE @VA04250 00161000 B RETURN GO BACK @VA04250 00162000 SCREENIT MVC SCRNL9(L'ASTS),ASTS FLAG ACTIVE ADDRESS @VA04250 00163000 MVC SCRNL9+LREADY(L'ASTS),ASTS DITTO @VA04250 00164000 MVI CCW1CTL,ON SET ERASE CONTROL BYTE ON @VA04250 00165000 MVI CCW2CTL,LINE1 START WRITE LINE 1 @VA04250 00166000 LA R3,CCWD CCW FOR DIAGNOSE @VA04250 00167000 L R4,CONSADD VIRT CONS ADDRESS @VA04250 00168000 L R4,0(R4) DEVICE ADDRESS @VA04250 00169000 B DISBRENT GO TO BRANCH ENTRY TO DISPLAY @V4075A2 00170000 * * * * * * * * ------- -------- -------- ------- * 00171000 * * * * * * * * WRTERM 00172000 * * * * * * * * ------- -------- -------- ------- * 00173000 WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00174000 ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00175000 LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00176000 L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00177000 BALR R14,R15 GO WRITE THE LINE @V4075A2 00178000 BR R10 AND RETURN @V4075A2 00179000 PARMLIS1 DS F PARM1 @V4075A2 00180000 PARMLIS2 DS F PARM2 @V4075A2 00181000 FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00182000 * * * * * * * * ------- -------- -------- ------- * 00183000 * * * * * * * * CONSTANTS FOR FORMAT 00184000 * * * * * * * *------- -------- -------- -------- ------* 00185000 DS 0F ALIGN @VA04250 00186000 TRANLINE DS CL20 LINE FROM DUMP TO BE TRANSLATED @VA04250 00187000 HEXAD DC 4X'FF' LAST ADDRESS DISPLAYED @VA04250 00188000 ONEK DC X'0FE0' ONE PAGE @VA04250 00189000 EIGHTY DC X'0080' 8 LINES FORMATTED @VA04250 00190000 ONETIRTY DC X'0130' ONE SCREEN FORMATTED @VA04250 00191000 * * * * * * * * ------- -------- -------- ------- * 00192000 * * * * * * * * MISC CONSTANTS 00193000 * * * * * * * * ------- -------- -------- ------- * 00194000 RETCODE DS F RETURN CODE @VA04250 00195000 TYPER EQU X'FF' TYPER DEVICE FLAG @VA04250 00196000 NULL EQU X'00' CLEAR REGS @VA04250 00197000 LINE1 EQU X'01' FIRST SCREEN LINE @VA04250 00198000 ONE EQU 1 THIS AND @VA04250 00199000 TWO EQU 2 THESE ARE NUMERIC EQUATES @VA04250 00200000 FOUR EQU 4 USED IN THE TRANSLATE AND @VA04250 00201000 SIX EQU 6 FORMAT ROUTINE @VA04250 00202000 EIGHT EQU 8 AND REPRESENT THE ARRANGEMENT @VA04250 00203000 TEN EQU 10 OF THE OUTPUT AREA. @VA04250 00204000 TWENTYFO EQU 24 ON THE SCREEN @VA04250 00205000 * * * * * * * * ------- -------- -------- ------- * 00206000 SCREENSZ EQU 1760 SIZE OF SCREEN IN BYTES @VA04250 00207000 MAXTRIES EQU 100 MAX NUMBER OF WRITE TRIES @VA04250 00208000 TRANL EQU 19 LENGTH TO TRANSLATE @VA04250 00209000 TRANADL EQU 6 LENGTH OF TRANSLATED ADDRESS @VA04250 00210000 TRANOUT EQU 8 LENGTH OF OUTPUT BLOCK @VA04250 00211000 EBCOUT EQU 16 LENGTH OF EBCDIC OUTPUT AREA @VA04250 00212000 SHRTLINE EQU 72 LENGTH OF DATA ON OUT LINE @VA04250 00213000 LINEL EQU 80 LENGTH OF OUTPUT LINE @VA04250 00214000 ON EQU X'FF' ON - SWITCH STATUS @VA04250 00215000 ASTS DC CL3'***' ASTERISKS FOR 'CURRENT LINE' @VA04250 00216000 TDAT EQU 4 LENGTH OF DATA TO TRANSLATE @VA04250 00217000 LREADY EQU 11 LENGTH OF FIRST PART OF 'READY' @VA04250 00218000 SAVEDISP EQU 12 DISP INTO SAVEAREA FOR REGS @VA04250 00219000 SAVREG15 EQU 16 DISP INTO SAVAREA FOR R15 @VA04250 00220000 BLANKPAD EQU 64 PAD CHAR FOR LONG CLEAR @VA04830 00221000 HIORD EQU 24 BITS TO GET TO HI ORD BYTE @VA04830 00222000 * * * * * * * * ------- -------- -------- ------- * 00223000 * * * * * * * * SAVEAREA 00224000 * * * * * * * * ------- -------- -------- ------- * 00225000 SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00226000 SAVEUSR DS F USER WORD @VA04250 00227000 SAVEFWD DS F FORWARD POINTER @VA04250 00228000 SAVEBACK DS F BACKWARD POINTER @VA04250 00229000 SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00230000 SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00231000 SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00232000 SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00233000 SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00234000 SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00235000 SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00236000 SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00237000 SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00238000 SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00239000 SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00240000 SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00241000 SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00242000 SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00243000 SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00244000 * * * * * * * * ------- -------- -------- ------- * 00245000 CLEARSAV DS 4F SAVE REGS ACROSS MVCL @VA04250 00246000 BUFF1ADD DC AL4(BUFF1) DUMP DATA @VA04250 00247000 CIADD DC AL4(CMDINFO) HEADER @VA04250 00248000 TFLAGADD DC AL4(TYPEFLAG) DEVICE TYPE @VA04250 00249000 CONSADD DC AL4(CONSOLE) ADDRESS OF VIRT CONSOLE CUU @VA04250 00250000 INTADD DC AL4(DMMINT) TRANSLATE @VA04250 00251000 * * * * * * * * ------- -------- -------- ------- * 00252000 * * * * * * * * TRANSLATE TABLE FOR SCREEN 00253000 * * * * * * * * ------- -------- -------- ------- * 00254000 TRTABLE DS CL256 TRANSLATE TABLE @VA04250 00255000 ORG TRTABLE @VA04250 00256000 DC 64C'.' 64 UNPRINTABLE CHARACTERS @VA04250 00257000 DC C' ' DISPLAY BLANK AS BLANK @VA04250 00258000 DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00259000 DC X'4A4B4C4D4E4F50' 7 '¢.<(+|&' @VA04250 00260000 DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00261000 DC X'5A5B5C5D5E5F6061' 8 '!$*);¬-/' @VA04250 00262000 DC 9C'.' 9 UNPRINTABLE CHARACTERS @VA04250 00263000 DC X'6B6C6D6E6F' 5 ',%_>?' @VA04250 00264000 DC 10C'.' 10 UNPRINTABLE CHARACTERS @VA04250 00265000 DC X'7A7B7C7D7E7F' 6 ':#@'="' @VA04250 00266000 DC C'.' 1 UNPRINTABLE CHARACTER @VA04250 00267000 DC X'818283848586878889' 9 'ABCDEFGHI' LOWER CASE @VA04250 00268000 DC 7C'.' 7 UNPRINTABLE CHARACTERS @VA04250 00269000 DC X'919293949596979899' 9 'JKLMNOPQR' LOWER CASE @VA04250 00270000 DC 8C'.' 8 UNPRINTABLE CHARACTERS @VA04250 00271000 DC X'A2A3A4A5A6A7A8A9' 8 'STUVWXYZ' LOWER CASE @VA04250 00272000 DC 23C'.' 23 UNPRINTABLE CHARACTERS @VA04250 00273000 DC X'C1C2C3C4C5C6C7C8C9' 9 'ABCDEFGHI' UPPER @VA04250 00274000 DC 7C'.' 7 UNPRINTABLE CHARACTERS @VA04250 00275000 DC X'D1D2D3D4D5D6D7D8D9' 9 'JKLMNOPQR' UPPER @VA04250 00276000 DC 8C'.' 8 UNPRINTABLE CHARACTERS @VA04250 00277000 DC X'E2E3E4E5E6E7E8E9' 8 'STUVWXYZ' UPPER @VA04250 00278000 DC 6C'.' 6 UNPRINTABLE CHARACTERS @VA04250 00279000 DC X'F0F1F2F3F4F5F6F7F8F9' 10 '0123456789' @VA04250 00280000 DC 6C'.' 6 UNPRINTABLE CHARACTERS @VA04250 00281000 * * * * * * * * ------- -------- -------- ------- * 00282000 * * * * * * * * 'SCREEN CONSTANTS 00283000 * * * * * * * * ------- -------- -------- ------- * 00284000 READYMSG DC C'*** READY ***' @VA04250 00285000 CCWD CCW X'19',SCRNAREA,X'60',1760 ERASE CCW @VA04250 00286000 CCW X'19',SCRNAREA,X'20',1680 WRITE CCW @VA04250 00287000 CCW1CTL EQU CCWD+5 CCW1 CONTROL BYTE - ERASE @VA04250 00288000 CCW2CTL EQU CCWD+13 CCW2 CTL BYTE - START LINE @VA04250 00289000 BLANKOUT DC CL80' ' FILL CHAR @VA04830 00290000 SCRNAREA DS CL1760 DISPLAY AREA @VA04250 00291000 ************************************************************** @V4075A2 00292000 * COMMON SCREEN WRITE ROUTINE @V4075A2 00293000 * ALSO CHECKS FOR 'PRINT' ON, AND @V4075A2 00294000 * WRITES TO THE VIRTUAL PRTR @V4075A2 00295000 ************************************************************** @V4075A2 00296000 DMMDIRLN STM R14,R12,SAVEDISP(R13) SAVE CALLERS REGS @V4075A2 00297000 DROP R12 @V4075A2 00298000 USING DMMDIRLN,R15 @V4075A2 00299000 L R12,DIRADDR GET START OF THIS MODULE @V4075A2 00300000 B THISBASE AROUND ADCON @V4075A2 00301000 DIRADDR DC AL4(DMMDIR) BASE FOR ENTRY @V4075A2 00302000 DROP R15 GET READY FOR 12 @V4075A2 00303000 USING DMMDIR,R12 @V4075A2 00304000 THISBASE ST R13,SAVEBACK CALLERS SAVE AREA @V4075A2 00305000 LA R13,SAVEAREA HEX SAVEAREA @V4075A2 00306000 DISBRENT XC PRETCODE,PRETCODE CLEAR PRINT RETURN CODE @V4075A2 00307000 * IF THIS IS A REISSUE, DONT DISPLAY. @V4075A2 00308000 L R6,PRINT1AD IS THIS A ONE-SHOT DEAL? @V4075A2 00309000 CLI 0(R6),NOSUBC INDICATING PRINT PREV CMD @V4075A2 00310000 BE GETPRTSW YES - DONT DISPLAY. @V4075A2 00311000 WAITT WAIT FOR ANY SCREEN ACTIVITY. @V4075A2 00312000 LA R6,100 SET MAX RETRY COUNT @V4075A2 00313000 SPLASH DC X'83340058' DIAGNOSE @V4075A2 00314000 BZ GETPRTSW OK - GO CHECK THE PRINT SWITCH @V4075A2 00315000 BCT R6,SPLASH TRY A FEW MORE TIMES @V4075A2 00316000 ************************************************************** @V4075A2 00317000 * NOW LOOK SEE IF WE MUST ALSO PRINT THIS @V4075A2 00318000 ************************************************************** @V4075A2 00319000 GETPRTSW L R2,PRTSWADD POINT TO THE PRINT STATUS SW @V4075A2 00320000 CLI 0(R2),ON SHOULD WE PRINT THIS TOO ? @V4075A2 00321000 BNE RETURN NO @V4075A2 00322000 ************************************************************** @V4075A2 00323000 * SINCE PRINT IS ON WE WILL WRITE THIS TO '00E' @V4075A2 00324000 * R3 POINTS TO THE DIAG CCW CHAIN. GO THERE TO GET @V4075A2 00325000 * THE ADDRESS OF THE DATA TO WRITE, AND THE NUMBER OF @V4075A2 00326000 * BYTES. FROM THIS FIGURE THE NUMBER OF LINES TO WRITE. @V4075A2 00327000 ************************************************************** @V4075A2 00328000 L R4,0(R3) GET THE SCREEN ADDR FROM THE CCW @V4075A2 00329000 LA R4,0(R4) AND CLEAR OUT THE HI BYTE @V4075A2 00330000 L R7,4(R3) GET THE BYTE COUNT @V4075A2 00331000 SLL R7,16 CLEAR OUT THE FLAG AND CNTRL FLDS@V4075A2 00332000 SRL R7,16 AND RESTORE THE COUNT @V4075A2 00333000 LA R5,80 BYTES/LINE @V4075A2 00334000 LA R6,0 CLEAR TOP OF DIVIDEND @V4075A2 00335000 DR R6,R5 FIND NUM. LINES @V4075A2 00336000 ************************************************************** @V4075A2 00337000 * NOW CHECK FOR A REMAINDER AND CORRECT THE LINES. @V4075A2 00338000 * ALSO CHECK FOR A MAX OF 22 LINES @V4075A2 00339000 ************************************************************** @V4075A2 00340000 LTR R6,R6 ANY REMAINDER? @V4075A2 00341000 BZ COUNTRT IF NOT - DONT ADJUST @V4075A2 00342000 LA R7,1(R7) YES - ADD A LINE @V4075A2 00343000 COUNTRT C R7,TWENTY2 SEE IF MORE THAN 22 LINES REMAIN @V4075A2 00344000 BNH COUNTDON NO - DONT SET TO 22 @V4075A2 00345000 L R7,TWENTY2 TOO MANY - SET TO 22 @V4075A2 00346000 ************************************************************** @V4075A2 00347000 * NOW CLEAR THE PRINT LINE TO BLANKS, AND MOVE IN @V4075A2 00348000 * AND THE PRINT THE SET NUMBER OF LINES. @V4075A2 00349000 ************************************************************** @V4075A2 00350000 COUNTDON MVI PRINTLIN,BLANK SET UP TO CLEAR PRINT LINE @V4075A2 00351000 MVC PRINTLIN+ONE(L'PRINTLIN-ONE),PRINTLIN TO BLANKS @V4075A2 00352000 LA R9,L'PRINTLIN-1 SET TO MOVE 80 BYTES @V4075A2 00353000 MOVEX EX R9,MOVEPRTL GET THE LINE @V4075A2 00354000 LA R2,CARRCTRL POINT TO THE CARRAIGE CONTROL @V4075A2 00355000 PRINTL (R2),81,ERROR=PRINTERR WRITE TO VIRT PRINTER @V4075A2 00356000 PRINTOK LA R4,L'PRINTLIN(R4) BUMP TO NEXT LINE @V4075A2 00357000 BCT R7,COUNTDON GO PRINT ANOTHER LINE @V4075A2 00358000 B RETURN GET OUT @V4075A2 00359000 MOVEPRTL MVC PRINTLIN(0),0(R4) MOVE DATA TO THE PRINT LINE @V4075A2 00360000 ************************************************************** @V4075A2 00361000 * RETURN @V4075A2 00362000 ************************************************************** @V4075A2 00363000 RETURN L R13,SAVEBACK @V4075A2 00364000 MVC SAVREG15(L'RETCODE,R13),RETCODE PLUG THE RETURN @V4075A2 00365000 LM R14,R12,SAVEDISP(R13) CALLERS REGS @V4075A2 00366000 BR R14 RETURN @V4075A2 00367000 ************************************************************** @V4075A2 00368000 * THIS HANDLES NON ZERO RETURNS FROM PRINTL @V4075A2 00369000 ************************************************************** @V4075A2 00370000 PRINTERR ST R15,PRTERRCD SAVE THE CODE @V4075A2 00371000 L R2,PRTERRCD GET IT FOR PRINTL @V4075A2 00372000 C R2,CHAN9 3211 VIRTUAL CARR TAPE HOLE? @V4075A2 00373000 BE PRINTOK YES - MAY IGNORE THIS @V4075A2 00374000 C R2,CHAN12 ANOTHER VIRTUAL HOLE? @V4075A2 00375000 BE PRINTOK RIGHT @V4075A2 00376000 LINEDIT TEXT='DMMDSC500S ERROR ''...'' WRITING TO THE VIRTUAL X00377000 PRINTER',SUB=(DEC,(2)) @V4075A2 00378000 MVC RETCODE,CODE4 SET WARNING CODE @V4075A2 00379000 B RETURN AND GO BACK @V4075A2 00380000 ************************************************************** @V4075A2 00381000 * CONSTANTS @V4075A2 00382000 NOSUBC EQU X'0F' 'DONT-DISPLAY' FLAG @V4075A2 00383000 ************************************************************** @V4075A2 00384000 BLANK EQU X'40' BLANK TO CLEAR PRINT LINE @V4075A2 00385000 CARRCTRL DC C' ' CARRIAGE CONTROL CHARACTER @VA08980 00386000 PRINTLIN DS CL80 PRINTED TEXT * DO NOT SEPARATE @V4075A2 00387000 CHAN9 DC F'2' CHANNEL 2 @V4075A2 00388000 CHAN12 DC F'3' CHANNEL 3 FROM CARR TAPE @V4075A2 00389000 PRINT1AD DC AL4(PRINTONE) ONE-SHOT FLAG ADDRESS @V4075A2 00390000 PRTERRCD DS F PRETCODE FROM PRINTL @V4075A2 00391000 PRTSWADD DC AL4(PRINTSW) ADDRESS OF PRINT SW IN DMMDSC @V4075A2 00392000 INCORE DC F'0' IN CORE ADDRESS OF LATEST DATA DISPLAYED@V4075A2 00393000 PRETCODE DS F RETURN TO CALLER @V4075A2 00394000 CODE4 DC F'4' WARNING RETURN @V4075A2 00395000 TWENTY2 DC F'22' SCREEN FULL OF LINES @V4075A2 00396000 PATCH DC 50F'0' PATCH AREA @VA04250 00397000 LTORG @VA04250 00398000 REGEQU @VA04250 00399000 SCREEN DSECT @VA04250 00400000 SCRNL1 DS CL80 @VA04250 00401000 SCRNL2 DS CL80 @VA04250 00402000 SCRNL3 DS CL80 @VA04250 00403000 SCRNL4 DS CL80 @VA04250 00404000 SCRNL5 DS CL80 @VA04250 00405000 SCRNL6 DS CL80 @VA04250 00406000 SCRNL7 DS CL80 @VA04250 00407000 SCRNL8 DS CL80 @VA04250 00408000 SCRNL9 DS CL80 @VA04250 00409000 SCRNL10 DS CL80 @VA04250 00410000 SCRNL11 DS CL80 @VA04250 00411000 SCRNL12 DS CL80 @VA04250 00412000 SCRNL13 DS CL80 @VA04250 00413000 SCRNL14 DS CL80 @VA04250 00414000 SCRNL15 DS CL80 @VA04250 00415000 SCRNL16 DS CL80 @VA04250 00416000 SCRNL17 DS CL80 @VA04250 00417000 SCRNL18 DS CL80 @VA04250 00418000 SCRNL19 DS CL80 @VA04250 00419000 SCRNL20 DS CL80 @VA04250 00420000 SCRNL21 DS CL80 @VA04250 00421000 SCRNL22 DS CL80 @VA04250 00422000 END 00423000