PRINT GEN TITLE 'ALC$DUMP - CONVERT DATA INTO DISPLAYABLE DUMP FORMAT' R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 R00 EQU 0 R01 EQU 1 R02 EQU 2 R03 EQU 3 R04 EQU 4 R05 EQU 5 R06 EQU 6 R07 EQU 7 R08 EQU 8 R09 EQU 9 EJECT AMODE 31 RMODE ANY ALC$DUMP CSECT USING *,R11,R12 R11,R12=BASE REGISTERS STM R14,R12,12(R13) SAVE REGISTERS LR R11,R15 ADDRESSIBILITY LA R12,2048(0,R11) LA R12,2048(0,R12) LR R1,R13 SAVE SAVE AREA POINTER LA R13,SAVEAREA POINT TO MY SAVEAREA ST R13,8(0,R1) SET FORW CHAIN IN CALLERS SAREA ST R1,4(0,R13) SET BACK CHAIN IN MY SAVEAREA L R1,24(0,R1) REACQUIRE R1 AS IT CAME HERE LM R2,R4,0(R1) R2=LENGTH * R3=INPUT VARIABLE * R4=OUTPUT VARIABLE MVC $$LENGTH,0(R2) SAVE LENGTH ST R3,$$INVAR ST R4,$$RETVAR B START DS 0F DC C'*' PGMID DC CL8'ALC$DUMP' DC C'*' COMPDATE DC CL8'&SYSDATE' COMPTIME DC CL8'&SYSTIME' SAVEAREA DC 18F'0' START EQU * BAL R9,$CHRCHAR CONVERT TO DUMP FORMAT $GOBACK EQU * L R13,4(0,R13) POINT BACK TO CALLERS SAVEAREA LM R14,R12,12(R13) RESTORE REGISTERS XR R15,R15 CLEAR RETURN CODE BR R14 GOBACK TO MOMMA EJECT *---------------------------------------------------------------------* * CONVERT A HEX STRING TO A CHARACTER FORMAT * REGISTERS USED IN THIS PARAGRAPH: * R1 = ADDRESS OF RETURNED TRANSLATED BYTE (FOR TRT) * R2 = TRANSLATED BYTE VALUE (FOR TRT) * R3 = ADDR OF INPUT VARIABLE * R4 = ADDR OF OUTPUT VARIABLE * R5 = INPUT LENGTH * R6 = WORK REGISTER *---------------------------------------------------------------------* $CHRCHAR EQU * STM R1,R9,$TMP$REG SAVE REGISTERS * L R3,$$INVAR POINT TO INPUT VARIABLE L R4,$$RETVAR POINT TO OUTPUT VARIABLE L R5,$$LENGTH GET INPUT LENGTH XR R6,R6 CLEAR WORK AREA * $CHRCHA0 EQU * * TRANSLATE THE WHOLE CHARACTER INTO A DISPLAYBLE/NON-DISPLAY FORMAT MVC BYTEIN,0(R3) XR R1,R1 CLEAR REGISTER XR R2,R2 CLEAR REGISTER TRT BYTEIN,TRANTBL1 XLATE INTO PRINTABLE TERMS STC R2,0(R4) MOVE XLATE'D CHARACTER LA R4,1(R4) POINT TO NEXT OUTPUT BYTE * TRANSLATE HIGH-ORDER HALF-BYTE FIRST IC R6,0(R3) GET A BYTE FROM INPUT SRL R6,4 SHIFT OFF LOW-ORDER BYTE ST R6,BYTEWORD MOVE TO WORK AREA XR R1,R1 CLEAR REGISTER XR R2,R2 CLEAR REGISTER TRT BYTEIN,TRANTBL XLATE INTO PRINTABLE TERMS STC R2,0(R4) MOVE XLATE'D CHARACTER LA R4,1(R4) POINT TO NEXT OUTPUT BYTE * TRANSLATE LOW-ORDER HALF-BYTE NEXT IC R6,0(R3) GET A BYTE FROM INPUT SLL R6,4 SHIFT OF LOW-ORDER BYTE ST R6,BYTEWORD MOVE TO WORK AREA MVC BYTEWORD(3),=3X'00' L R6,BYTEWORD SRL R6,4 ST R6,BYTEWORD MOVE TO WORK AREA XR R1,R1 CLEAR REGISTER XR R2,R2 CLEAR REGISTER TRT BYTEIN,TRANTBL XLATE INTO PRINTABLE TERMS STC R2,0(R4) MOVE XLATE'D CHARACTER LA R4,1(R4) POINT TO NEXT OUTPUT BYTE LA R3,1(R3) POINT TO NEXT INPUT BYTE BCT R5,$CHRCHA0 CONTINUE $CHRCHAX EQU * LM R1,R9,$TMP$REG RESTORE REGISTERS BR R9 RETURN TO MOMMA EJECT LTORG ********************************************************************** * CONSTANTS,DSECTS * ********************************************************************** DS 0D DBLEWORD DS D $$LENGTH DS A LENGTH OF STORAGE $$INVAR DS A INPUT AREA $$RETVAR DS A RETURN AREA $TMP$REG DS 9F SAVE REGS (R1 THRU R9) FOR CONV HEX BYTEWORD DS 0F DS CL3 BYTEIN DS CL1 DS 0F TRANTBL DC C'0123456789ABCDEF' TRANSALATION TABLE DC 240C'?' DS 0D * .0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F TRANTBL1 EQU * TT1000F DC X'4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B' TT1101F DC X'4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B' TT1202F DC X'4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B' TT1303F DC X'4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B' TT1404F DC X'404B4B4B4B4B4B4B4B4B4A4B4C4D4E4F' TT1505F DC X'504B4B4B4B4B4B4B4B4B5A5B5C5D5E5F' TT1606F DC X'60614B4B4B4B4B4B4B4B6A6B6C6D6E6F' TT1707F DC X'4B4B4B4B4B4B4B4B4B797A7B7C7D7E7F' TT1808F DC X'4B8182838485868788894B4B4B4B4B4B' TT1909F DC X'4B9192939495969798994B4B4B4B4B4B' TT1A0AF DC X'4BA1A2A3A4A5A6A7A8A94B4B4B4B4B4B' TT1B0BF DC X'B04B4B4B4B4B4B4B4B4BBABB4B4BBE4B' TT1C0CF DC X'C0C1C2C3C4C5C6C7C8C94B4B4B4B4B4B' TT1D0DF DC X'D0D1D2D3D4D5D6D7D8D94B4B4B4B4B4B' TT1E0EF DC X'E0E1E2E3E4E5E6E7E8E94B4B4B4B4B4B' TT1F0FF DC X'F0F1F2F3F4F5F6F7F8F94B4B4B4B4B4B' EJECT * LAYOUT OF INPUT PARMS FIELDS $$PARMS DSECT END ALC$DUMP