TITLE 'IEAVAD31 - ABDUMP FORMAT AND FORMAT01 ROUTINES' 00050000 * /* START OF SPECIFICATIONS **** 00150000 * 00200000 *01* MODULE-NAME = IEAVAD31 ( VS2 ) WITH SU33 G33SPHW 00250043 * 00300000 *01* DESCRIPTIVE-NAME = ABDUMP FORMAT AND FORMAT01 ROUTINES 00400000 * 00450000 *01* COPYRIGHT = NONE 00500000 * 00550000 *01* STATUS = OS/VS2 REL 3.7 WITH SU33 G33SPHW 00600043 * 00650000 *01* CHANGE-ACTIVITY = AS FOLLOWS 00700000 * 00750000 *02* D = 113600-113800 YM2513 00800000 *02* APAR ZA13835 - PIE ADDR G33SPHW 00820043 * 00850000 *01* FUNCTION = TO UNPACK DATA INTO THE OUTPUT LINE WHILE ASSOCIATING 01250000 * A LABEL WITH EACH PIECE OF THE DATA 01260000 * 01310000 *01* NOTES 01350000 * 01400000 *02* CHARACTER-CODE-DEPENDENCIES = THIS MODULE IS EBCDIC CHARACTER 01450000 * CODE DEPENDENT. 01500000 * 01510000 *02* DEPENDENCIES = NONE 01550000 * 01600000 *02* PERFORMANCE = TO CONVERT DATA TO DECIMAL AND UNPACK IT INTO 01650000 * ABDLINEA WITH LABELS AND AN OPTIONAL INDENTATION FACTOR. 01700000 * 01710000 *02* RESTRICTIONS = NONE 01750000 * 01800000 *02* REGISTER-CONVENTIONS = THE REGISTER CONVENTIONS ARE DESCRIBED 01850000 * UNDER REGISTER EQUATES. 01860000 * 01910000 *02* PATCH-LABEL = NONE 01950000 * 02000000 *01* MODULE-TYPE = MODULE 02050000 * 02052000 *02* PROCESSOR = ASSEMBLER-370R 02060000 * 02070000 *02* MODULE-SIZE = 300 BYTES 02092000 * 02094000 *02* ATTRIBUTES = REENTERABLE 02096000 * 02098000 *01* ENTRY = IEAVAD31 02098800 * 02099200 *02* PURPOSE = TO CONVERT DATA TO DECIMAL AND UNPACK IT INTO ABDLINE 02099600 * ASSOCIATING LABELS WITH THE FIELDS. IT ALSO ALLOWS AN 02099700 * INDENTATION FACTOR TO LOCATION IN ABDLINE WHERE THE DATA IS 02103000 * TO BE PLACED. 02103400 * 02105400 *02* LINKAGE = BALR 02110000 * 02120000 *02* INPUT = GPR1 CONTAINS THE ADDRESS OF ABDAREA,GPR13 THE ADDRESS 02126600 * OF THE CALLERS SAVE AREA, GPR14 THE RETURN ADDRESS AND GPR15 02127000 * THE ADDRESS OF IEAVAD31. IN ADDITION, ABDBPTR MUST CONTAIN THE 02127400 * ADDRESS OF THE DATA TO BE PLACED INTO ABDLINE AND ABDLLINE 02127800 * MUST CONTAIN THE ADDRESS OF THE LAYOUT LINE TO BE USED TO 02129800 * CONTROL THE PLACEMENT. 02130200 * 02130300 *02* OUTPUT = ALL REGISTERS EXCEPT GPR 15 ARE PRESERVED. GPR15 WILL 02130600 * CONTAIN ZERO IF NO PROBLEMS WERE ENCOUNTERED AND EIGHT IF AN 02131000 * ANTICIPATED UPR OCCURRED. IF GPR15 IS ZERO THEN ABDBPTR WILL BE 02131400 * POSITIONED AT ONE PAST THE LAST FORMATTED FIELD, ABDLLINE 02131800 * WILL POINT TO THE BYTE FOLLOWING THE END OF THE LAYOUT LINE AND 02132200 * ABDLPTR WILL CONTAIN THE NEXT AVAILABLE ADDRESS IN ABDLINE. 02132300 * OTHERWISE, THESE FIELDS ARE UNPREDICTABLE. 02132600 * 02132700 *02* EXIT-NORMAL = BACK TO CALLER 02133000 * 02135000 *02* EXIT-ERROR = AN 0C4 ABEND WILL OCCUR IF AN UNEXPECTED UPR 02138800 * OCCURS. 02140800 * 02142800 *01* ENTRY = IEAVAD41 02142900 * 02143000 *02* PURPOSE = SAME AS FOR IEAVAD31 EXCEPT THAT NO INDENTATION 02143100 * FACTOR IS ANTICIPATED IN THE LAYOUT LINE. IN OTHER WORDS, 02143500 * PLACEMENT OF DATA IN ABDLINE STARTS WITH THE ADDRESS 02143600 * IN ABDLPTR. 02143900 * 02144300 *02* LINKAGE = BALR 02145900 * 02147900 *02* INPUT = SAME AS FOR IEAVAD31 EXCEPT THAT GPR15 CONTAINS ADDRESS 02150700 * OF IEAVAD41 AND ABDLPTR MUST CONTAIN ADDRESS OF POSITION WITHIN 02150800 * ABDLINE WHERE DATA IS TO BE PLACED. NORMALLY, A CALL TO 02150900 * IEAVAD41 IS PRECEDED BY A CALL TO IEAVAD31 WHICH ESTABLISHES 02151000 * THIS FIELD. 02151400 * 02151800 *02* OUTPUT = SAME AS FOR IEAVAD31 02153000 * 02153400 *02* EXIT-NORMAL = BACK TO CALLER 02153800 * 02154200 *02* EXIT-ERROR = SAME AS IEAVAD31 02155400 * 02155800 *01* EXTERNAL-REFERENCES = NONE 02156200 * 02166200 *01* TABLES = ABDAREA - ABDUMP WORK AREA 02184200 * 02184600 *01* MACROS = IHAABDA 02185000 * 02195000 * 02197000 **** END OF SPECIFICATIONS ***/ 02200000 IEAVAD31 CSECT 03850000 ENTRY IEAVAD41 03900000 * REGISTER EQUATES 03950000 R0 EQU 0 REGISTER 0 04000000 R1 EQU 1 REGISTER 1 ZA13835 04020043 PARAM EQU 1 ADDRESS OF ABDAREA 04050000 PIEADDR EQU 1 ADDRESS OF PIE 04100000 R2 EQU 2 REGISTER 2 ZA13835 04120043 * LABELM1 AND FIELDM1 MUST REMAIN AN EVEN-ODD REGISTER PAIR 04150000 LABELM1 EQU 2 LENGTH OF LABEL MINUS 1 04200000 FIELDM1 EQU 3 LENGTH OF DATA FIELD MINUS 1 04250000 * OFFSET AND SEPBLNKS MUST REMAIN AN EVEN-ODD REGISTER PAIR 04300000 OFFSET EQU 4 INCREMENT TO ABDBPTR TO FIELD 04350000 * TO BE FORMATTED 04400000 SEPBLNKS EQU 5 NUMBER OF SPACES BETWEEN LABEL 04450000 * AND FIELD 04500000 * REGISTERS DATAREG, LAYOUT AND OUTLINE MUST REMAIN CONSECTIVE 04550000 DATAREG EQU 6 ADDR OF BLOCK TO BE FORMATTED 04600000 LAYOUT EQU 7 ADDR OF LAYOUT LINE 04650000 OUTLINE EQU 8 NEXT AVAIL POSITION IN ABDLINE 04700000 WORK EQU 9 GENERAL WORK REGISTER 04750000 BASE EQU 12 BASE REGISTER 04800000 SAVEAREA EQU 13 POINTER TO CALLERS SAVE AREA 04850000 RETREG EQU 14 RETURN ADDR 04900000 BASEIN EQU 15 BASE TO BRANCH BY ID FIELD 04950000 RETCODE EQU 15 RETURN CODE REGISTER 05000000 * 05050000 * GENERAL EQUATES 05100000 ZERO EQU 0 CONSTANT 05150000 ONE EQU 1 CONSTANT 05200000 TWO EQU 2 CONSTANT 05250000 THREE EQU 3 CONSTANT 05300000 FOUR EQU 4 CONSTANT 05350000 FIVE EQU 5 CONSTANT 05400000 EIGHT EQU 8 CONSTANT 05450000 NINE EQU 9 CONSTANT 05500000 TWELVE EQU 12 CONSTANT 05550000 TWENTY EQU 20 CONSTANT 05600000 TWENTY4 EQU 24 CONSTANT 05650000 TWENTY8 EQU 28 CONSTANT 05700000 K240 EQU 240 CONSTANT 05750000 INDENT EQU 0 OFFSET IN LAYOUT LINE TO 05800000 * INDENTATION FACTOR 05850000 ENDING EQU X'FF' END OF LAYOUT LINE INDICATOR 05900000 ALL EQU X'FF' ALL BITS ON IN BYTE MASK 05950000 USING *,BASEIN 06000000 MODID BR=YES 06050002 DROP BASEIN 06250000 STM RETREG,BASE,TWELVE(SAVEAREA) SAVE CALLERS REGISTERS 06300000 BALR BASE,ZERO ESTABLISH ADDRESSIBILITY 06350000 USING *,BASE 06400000 * ESTABLISH ADDR FOR ABDAREA BASED ON USER PARAM IN R1 06450000 USING ABDAREA,PARAM 06500000 OLDVAL LM DATAREG,LAYOUT,ABDBPTR OBTAIN VALUES FROM ABDAREA FOR 06550002 * LAYOUT LINE ADDR AND BLOCK ADDR 06600000 LA OUTLINE,ABDLINE SET INIT PRNT POS TO START LINE 06650000 SR WORK,WORK ESTABLISH ZERO VALUE 06700000 IC WORK,INDENT(LAYOUT) OBTAIN INDENTATION VALUE 06750000 AR OUTLINE,WORK INDENT BEGINNING OF LINE 06800000 LA LAYOUT,ONE(LAYOUT) ADVANCE OVER INDENTATION VALUE 06850000 COMMON CLI ZERO(LAYOUT),ENDING END OF LAYOUT LINE REACHED 06900000 BE DONE YES, BRANCH 06950000 SR LABELM1,LABELM1 INIT VALUE 07000000 SR OFFSET,OFFSET INIT VALUE 07050000 IC LABELM1,ZERO(LAYOUT) OBTAIN LABEL SIZE AND FIELD SIZE 07100000 SRDL LABELM1,FOUR ISOLATE THE TWO VALUES 07150000 SRL FIELDM1,TWENTY8 INTO SEPARATE REGISTERS 07200000 IC OFFSET,ONE(LAYOUT) GET OFFSET AND SEPBLNKS FIELDS 07250000 SRDL OFFSET,FOUR ISOLATE THE TWO VALUES 07300000 SRL SEPBLNKS,TWENTY8 INTO SEPARATE REGISTERS 07350000 AR DATAREG,OFFSET INCREMENT TO FIELD TO BE DUMPED 07400000 EX LABELM1,MOVE1 MOVE LABEL TO OUTPUT LINE 07450000 AR OUTLINE,LABELM1 BUMP LINE POS BY LABEL LNG - 1 07500000 LA OUTLINE,ONE(OUTLINE,SEPBLNKS) BUMP LINE POS BY ONE 07550000 * MORE THAN NUMBER OF 07600000 * BLANKS BETWEEN LABEL 07650000 * AND DATA 07700000 TM ABDUPRF,UPRFMAT IS UPR ANTICIPATED BY CALLER 07750000 BZ NOUPR NO, BRANCH 07800000 LA WORK,FORMATX ADDR OF UPR HANDLER ROUTINE 07850000 ST WORK,ABDUPRXT SET INTO ABDAREA 07900000 NOUPR EX FIELDM1,MOVE2 MOVE DATA TO WORK AREA 07950000 XC ABDUPRXT,ABDUPRXT NO UPR EXIT ANY MORE 08000000 UNPK ABDFMTWK(NINE),ABDFMTWK(FIVE) UNPACK DATA IN WA 08050000 TR ABDFMTWK(EIGHT),TBL-K240 TRANSLATE TO PRNTABLE CHAR 08100000 LA FIELDM1,ONE(FIELDM1,FIELDM1) CALC SIZE OF CONVERTED FLD 08150000 EX FIELDM1,MOVE3 MOVE FORMATTED DATA TO ABDLINE 08200000 TM ABDBLNKS,ABDBLKN3 FIELDS TO BE SEPARATED BY 08250000 * THREE BLANKS 08300000 BO SPECSPAC NO, BRANCH 08350000 LA OUTLINE,FOUR(FIELDM1,OUTLINE) BUMP TO NEXT AVAIL 08400000 * PRINT POS IN LINE 08450000 * LEAVING 3 BLANKS 08500000 * BETWEEN FIELDS 08550000 BUMPLINE LA LAYOUT,THREE(LAYOUT,LABELM1) BUMP TO NEXT LAYOUT ENTRY 08600000 B COMMON LOOP 08650000 SPECSPAC SR WORK,WORK ZERO VALUE 08700000 IC WORK,ABDBLNKS OBTAIN COUNT OF BLANKS 08750000 N WORK,S4TO7 ZERO MEANINGLESS BITS 08800000 * THE RESIDUAL COUNT IS THEN THE NUMBER OF BLANKS TO BE LEFT BETWEEN 08850000 * FIELDS 08900000 AR OUTLINE,WORK CALCULATE NEXT AVAIL PRINT POS 08950000 LA OUTLINE,ONE(FIELDM1,OUTLINE) LEAVING NUMBER OF BLANKS 09000000 * RQUESTED BY USER 09050000 B BUMPLINE RESUME NORMAL PATH 09100000 DONE LA LAYOUT,ONE(LAYOUT) POS OVER END INDICATOR 09150000 LA RETCODE,ZERO INDICATE NORMAL COMPLETION 09200000 EXIT STM DATAREG,OUTLINE,ABDBPTR UPDATE ABDAREA FIELDS 09250000 NI ABDUPRF,ALL-UPRFMAT RESET UPR ANTICIPATED BIT 09300000 L RETREG,TWELVE(SAVEAREA) RESTORE CALLERS REGISTERS 09350000 LM R0,BASE,TWENTY(SAVEAREA) RESTORE CALLERS REGISTERS 09400000 BR RETREG RETURN TO CALLER 09450000 * THE FOLLOWING ENTRY POINT IS USED TO BYPASS INDENTATION PROCESSING 09500000 * AND TO POSITION THE FIRST PRINT POSITION AT OTHER THAN THE BEGINNING 09550000 * OF THE LINE 09600000 DROP BASE 09650000 USING *,BASEIN 09700000 IEAVAD41 STM RETREG,BASE,TWELVE(SAVEAREA) 09750000 BALR BASE,ZERO OBTAIN ADDRESS OF KNOWN LOCATION 09800000 NEWVAL LA WORK,NEWVAL-OLDVAL DIFFERENCE IN BASE ADDRESSES 09850000 SR BASE,WORK BASE OF IEAVAD31 IS IN REG 09900000 DROP BASEIN 09950000 USING OLDVAL,BASE 10000000 LM DATAREG,OUTLINE,ABDBPTR OBTAIN VALUES FOR MAINLINE 10050000 B COMMON ENTER MAINLINE CODE AFTER 10100000 * INDENTATION PROCESSING 10150000 * THIS SECTION OF CODE RECEIVES CONTROL WHEN A UPR INTERRUPT OCCURS 10200000 * AND THE USER REQUESTED THAT THE ROUTINE FIELD THE EVENT 10250000 FORMATX LR R1,R2 RESTORE ABDUMP PARM ADDRESS 10300043 * ZA13835 10310043 LA RETCODE,EIGHT SET RETURN CODE TO CALLER 10350000 B EXIT EXECUTE CLEANUP 10400000 * 10450000 * EXECUTED INSTRUCTIONS 10500000 * 10550000 MOVE1 MVC ZERO(ONE,OUTLINE),TWO(LAYOUT) EXECUTED TO MOVE LABEL 10600000 * TO LINE 10650000 MOVE2 MVC ABDFMTWK(ONE),ZERO(DATAREG) EXECUTED TO MOVE DATA 10700000 * TO WORK AREA 10750000 MOVE3 MVC ZERO(ONE,OUTLINE),ABDFMTWK EXECUTED TO MOVE DATA TO 10800000 * OUTPUT LINE 10850000 * 10900000 * CONSTANTS 10950000 * 11000000 DS 0F 11050000 S4TO7 DC X'0000000F' MASK TO ZERO RSET OF BITS 11100000 * THE ORIGIN OF TBL MUST BE AT LEAST 240 BYTES FROM THE POINT OF 11150000 * ADDRESSIBILITY SINCE IT IS REFERENCED AS TBL-240 11200000 DC 2F'0' SPACE TO INSURE TABLE CAN BE 11250000 * ADDRESSED 11300000 TBL DC C'0123456789ABCDEF' TABLE TO TRANSLATE DATA 11350000 * THE FOLLOWING MACRO PRODUCES THE MAPPING OF THE ABDUMP WORK AREA 11400000 IHAABDA 11450000 END 11500000