TITLE 'IKJEGLSA, ''LIST'' SUBCOMMAND OF TEST, SECOND LOAD' 00146702 * /* START OF SPECIFICATIONS **** 00147102 *02* PROCESSOR = ASSEMBLER 00147502 **** END OF SPECIFICATIONS ***/ 00147902 *********************************************************************** 00148702 * 00150002 * STATUS -- 00200002 * VERSION NO. 00, OS/VS2 RELEASE NO. 02 00210002 * 00700002 * FUNCTION -- 00750002 * THIS MODULE IS THE SECOND LOAD OF IKJEGLST, THE LIST SUBCOMMAND. 00800002 * IT IS ENTERED WHEN THE OUTPUT TYPE IS ONE OF THE FOLLOWING- A, B, 00850002 * C, D, E, F, H, I, L, P, Q, S, V, Y, OR Z. THE ROUTINE CALLS 00900002 * IKJEGCVT TO CONVERT THE DATA (EXCEPT FOR CHARACTER, BINARY, OR 00950002 * ZONED FORMATS WHICH ARE DONE WITHIN THIS MODULE), FORMATS THE 01000002 * DATA IN THE BUFFER, AND GOES TO IKJEGIO TO OUTPUT THE DATA. THIS 01050002 * MODULE LISTS AREAS OF CORE IN ONE OF THE ABOVE NAMED FORMATS. 01100002 * 01150002 * ENTRY POINTS -- 01200002 * IKJEGLSA MAIN ENTRY PT, ENTERED BY XCTL FROM IKJEGLST 01250002 * 01300002 * INPUT -- 01350002 * REG 1 POINTS TO A 2 WORD LIST, THE FIRST WORD IS A POINTER TO 01400002 * THE CURRENT ADDRESS PDE AND THE SECOND WORD IS A POINTER TO THE 01450002 * 'LSTWORK' DSECT WHICH HAS ALREADY BEEN INITIALIZED. 01500002 * REG 9 CONTAINS THE ADDRESS OF 'TCOMTAB', THE COMMUNICATIONS DSECT 01550002 * 01600002 * OUTPUT -- 01650002 * LINES TO THE TERMINAL DISPLAYING REQUESTED DATA OR, IF THE PRINT 01700002 * KEYWORD HAS BEEN SPECIFIED, THE REQUESTED DATA IS WRITTEN TO THE 01750002 * DESIGNATED DATA SET. 01800002 * 01850002 * EXTERNAL REFERENCES -- 01900002 * IKJEGCVT FOR CONVERSION OF ADDRESSES AND DATA FROM MACHINE 01950002 * FORMAT TO PRINTABLE FORMAT. FOR CONVERSION OF ADDRESSES, 02000002 * CVT IS ENTERED WITH THE HIGH ORDER BIT OF REG 0 SET TO ONE 02050002 * AND REGISTER 1 CONTAINING THE COMPLEMENT OF THE ADDRESS OF 02100002 * AN ADDRESS PDE. THE ADDRESS PDE DESCRIBES THE ADDRESS TO BE 02150002 * CONVERTED. FOR DATA CONVERSIONS, REG 0 IS SET TO ZERO, AND 02200002 * REG 1 CONTAINS THE ADDRESS OF A VALUE PDE DESCRIBING THE 02250002 * TO BE CONVERTED. 02300002 * 02350002 * IKJEGIO TO OUTPUT DATA TO THE TERMINAL OR TO A PRINT DATA 02400002 * 02800002 * EXITS, NORMAL -- 02850002 * BR 14 TO THE ORIGINAL CALLER OF IKJEGLST WHEN THE LAST 02900002 * ADDRESS PDE HAS BEEN PROCESSED. 02950002 * XCTL TO IKJEGLST IF THE NEXT ADDRESS IN A LIST OF ADDRESSES 03000002 * IS REGISTER TYPE, OR IF THE FORMAT TYPE IS HEX (X). 03050002 * 03100002 * EXITS, ERROR -- 03150002 * NONE 03200002 * 03250002 * TABLES/WORK AREAS -- 03300002 * TCOMTAB POINTED AT BY REG 9, IS THE COMMUNICATIONS TABLE FOR THE 03350002 * TEST PROCESSOR. 03400002 * 03450002 * LSTWORK THE MAPPING DSECT FOR THE WORK AREA USED BY IKJEGLST AND 03500002 * IKJEGLSA. IT HOLDS WORKING COPIES OF THE ATTRIBUTES, ADDRESSES 03550002 * FOR THE DATA CURRENTLY BEING LISTED, PARAMETER LISTS FOR CALLING 03600002 * VARIOUS ROUTINES, AND A DATA BUFFER FOR REMOVING BREAKPOINT SVC'S 03650002 * 03700002 * PARAMETER DESCRIPTOR LIST (PDE) SET UP BY PARSE 03750002 * 03800002 * ATTRIBUTES -- 03850002 * REENTRANT, REFRESHABLE, PROBLEM PROGRAM. 03900002 * 03950002 * CHARACTER CODE DEPENDENCY -- 04000002 * 04050002 * NOTES -- 04100002 * 04110003 * CHANGE ACTIVITY -- 04120003 * ADDED CODE TO SUBROUTINE ADDRCHK TO CLEAR OUTPUT BUFFER @ZA11395 04125003 * UPON RETURN FROM SVC 97. @ZA11395 04130003 *********************************************************************** 04200002 EJECT 04250002 COPY IKJEGSIO OBTAIN I/O CALLING MACROS 04260002 IKJEGLSA CSECT 04300002 *D562500,D563000 YA00087 04310002 SPACE 1 04350002 *********************************************************************** 04400002 * REGISTER EQUATES. 04450002 SPACE 04500002 R0 EQU 0 WORK REG 04550002 R1 EQU 1 WORK REG 04600002 R2 EQU 2 WORK REG 04650002 R3 EQU 3 WORK REG 04700002 R4 EQU 4 USED IN PROCESS SECTION FOR CONTROL 04750002 R5 EQU 5 WORK REG 04800002 R6 EQU 6 IN PROCESS SECTION, CUR BUF PTR 04850002 R7 EQU 7 INTERNAL LINKAGE REGISTER 04900002 R8 EQU 8 POINTS TO CURRENT ADDRESS PDE 04950002 R9 EQU 9 BASE FOR TCOMTAB DSECT 05000002 R10 EQU 10 BASE FOR LSTWORK DSECT 05050002 R11 EQU 11 SPACE REGISTER 05100002 R12 EQU 12 PROGRAM BASE REGISTER 05150002 R13 EQU 13 PROGRAM SAVE AREA 05200002 R14 EQU 14 EXTERNAL LINKAGE REGISTER 05250002 R15 EQU 15 EXTERNAL LINKAGE REGISTER 05300002 *********************************************************************** 05350002 SPACE 2 05400002 * DATA EQUATES FOR OPERANDS OF IMMEDIATE TYPE INSTRUCTIONS. 05450002 SPACE 05500002 NULL EQU 0 USED FOR BALR R,0 AND BCTR R,0. 05550002 ZERO EQU 0 SYMBOLIC EQUATE 05600002 ONE EQU 1 SYMBOLIC EQUATE 05650002 TWO EQU 2 SYMBOLIC EQUATE 05700002 THREE EQU 3 SYMBOLIC EQUATE 05750002 FOUR EQU 4 SYMBOLIC EQUATE 05800002 FIVE EQU 5 SYMBOLIC EQUATE 05850002 SIX EQU 6 USED AS THE MAX INSTRUCTION LENGTH 05900002 EIGHT EQU 8 SYMBOLIC EQUATE 05950002 SIXTEEN EQU 16 SYMBOLIC EQUATE 06000002 HEX0A EQU X'0A' USED IN SIGNTBL FOR ZONED FORMAT 06050002 HEX80 EQU X'80' SYMBOLIC MASK 06100002 HEXFF EQU X'FF' SYMBOLIC MASK 06150002 SPACE 06200002 BLANK EQU C' ' SYMBOLIC FOR BLANK (SPACE). 06250002 PERIOD EQU C'.' SYMBOLIC FOR PERIOD (.) 06300002 CHAR0 EQU C'0' SYMBOLIC FOR CHARACTER 0 06400002 CHAR1 EQU C'1' SYMBOLIC FOR A CHARACTER 1 06450002 CHAR9 EQU C'9' SYMBOLIC FOR CHARACTER 9 06500002 SPACE 06550002 CFLDMASK EQU B'00011111' MASK TO ISOLATE REMAINDERS FOR C TYP 06600002 DWBDY EQU B'00000111' USED TO TEST ADDRS FOR DBL WRD BDY. 06650002 FWBDY EQU B'00000011' FULL 06700002 HWBDY EQU B'00000001' HALF 06750002 INSTRLEN EQU B'11000000' FOR TESTING 1ST 2 BITS OF INSTRS 06800002 PACKMSK EQU X'6F' USED TO SET UP LNTHS FOR PACK INSTR 06850002 SPACE 06900002 * EQUATES FOR OFFSETS INTO A SYMINFO BLOCK. 06950002 SPACE 07000002 SIDATAPT EQU 0 OFFSET INTO SYMINFO BLK FOR DATA PTR 07050002 SITYPE EQU 4 OFFSET INTO SYMINFO FOR TYPE 07100002 SIMUL EQU 6 OFFSET TO LAST 2 BYTES OF MLTPLCTY 07150002 SILEN EQU 8 OFFSET TO LNTH IN SYMINFO 07200002 SINXTPTR EQU 12 OFFSET INTO SYMINFO BLK FOR CHAIN PT 07250002 SYMINFOL EQU 16 SYMBOLIC FOR LENGTH OF SYMINFO BLK 07300002 SPACE 07350002 LL00LEN EQU 4 SYMBOLIC FOR LENGTH OF LL00 FIELD 07400002 LSTBUFL EQU 82 LENGTH TO BE BLANKED IN BUFFER 07450002 MINLL EQU 40 MINIMUM LINE LNTH FORMATTED BY LIST 07500002 STDLL EQU 81 DEFAULT LINE LNTH WHEN TMPLL IS LOW 07550002 CHARLEN EQU 32 LENGTH OF AN OUTPUT FLD, CHAR FORMAT 07600002 SP1 EQU 1 USED TO INCREMENT BY 1 SPACE 07650002 SP2 EQU 2 USED TO INCREMENT BY 2 SPACES 07700002 SP4 EQU 4 FOR INCREMENTING PAST 4 SPACES 07750002 SPACE 07800002 H2ND EQU 1 OFFSET TO 2ND BYTE OF A HALFWORD 07850002 F1STHALF EQU 0 OFFSET TO 1ST HALFWORD OF A FIELD 07900002 LL00OFF EQU 0 OFFSET INTO BUFFER FOR LL00 FIELD 07950002 ADDRLEN EQU 7 SYMBOLIC LNTH OF ABS/REL ADDRESSES 08000002 BFLDLEN EQU 8 SYMBOLIC LNTH OF 1 BINARY FIELD 08050002 BDATALEN EQU 1 SYMBOLIC LNTH OF INPUT FOR 1 BIN FLD 08100002 SIGNLEN EQU 1 LENGTH OF A SING FIELD 08150002 DATAOFF EQU 4 OFFSET TO DATA PORTION OF BUFFER 08200002 MSGOFFST EQU 80 OFFSET INTO BUFFER FOR PLACING MSG 08250002 R6OFF EQU 44 OFFSET INTO SAVE AREA FOR REG 6 08300002 R10OFF EQU 60 OFFSET INTO SAVE AREA FOR R10 08350002 TYPELEN EQU 1 SYMBOLIC LNTH OF TYPE FIELD IN MSG 08400002 SPACE 08450002 LSTWRKPT EQU 0 PARM LIST OFFSET TO LSTWORK BASE 08500002 LSTPDEPT EQU 4 PARM LIST OFFSET TO CUR ADDR PDE 08550002 SPACE 08600002 L0AOFF EQU DATAOFF+ADDRLEN OFFSET TO FIRST INSTR FROM BUF BEGIN 08650002 FOREPTR EQU 8 OFFSET TO FOREWARD PTR IN SAVE AREA 08700002 BACKPTR EQU 4 OFFSET TO BACKWARD PTR IN SAVE AREA 08750002 FIRSTI EQU DATAOFF+ADDRLEN+SP4 OFFSET INTO BUF OF 1ST INSTR, I TYPE 08800002 CONLNTH EQU 0 OFFSET INTO CONVERT AREA FOR LENGTH 08850002 CONDATA EQU 1 OFFSET INTO CONAREA TO START OF DATA 08900002 MAXLINE EQU 100 MAX LINE LENGTH FOR OUTPUT 08950002 LSTIBLK EQU 31 LNTH OF DATA MOVED TO HOLD AREA 09000002 CVTSPACE EQU 64 OFFSET INTO COMMON WORK AREA FOR LST 09050002 ATTNBIT EQU B'01000000' 09100002 EQZERO EQU 8 COND CODE MASK FOR CC OF 0 09150002 NOTONES EQU 14 COND. CODE MASK FOR CC OF 0, 1, OR 2 09200002 SPACE 09250002 MAXPLEN EQU 16 LENGTH LIMIT FOR P,Z,L TYPES 09300002 POUTMAX EQU 32 MAX OUTPUT LNTH FOR P TYPE 09350002 ZOUTMAX EQU 17 MAX OUTPUT LNTH FOR Z TYPE 09400002 LOUTMAX EQU 32 MAX OUTPUT LNTH FOR L TYPE 09450002 MAXFLEN EQU 8 LENGTH LIMIT FOR F,E,H,D TYPES 09500002 FOUTMAX EQU 20 MAX OUTPUT LNTH FOR F,H TYPES 09550002 EOUTMAX EQU 23 MAX OUTPUT LNTH FOR E,D TYPES 09600002 MAXALEN EQU 4 LENGTH LIMIT FOR A,Q,V TYPE 09650002 AOUTMAX EQU 11 MAX OUTPUT LNTH FOR A,V,Q TYPES 09700002 MAXYLEN EQU 2 LENGTH LIMIT FOR Y,S TYPES 09750002 YOUTMAX EQU 6 MAX OUTPUT LNTH FOR Y TYPE 09800002 SOUTMAX EQU 8 MAX OUTPUT LNTH FOR S TYPE 09850002 MAXGENR EQU 15 MAXIMUM GENERAL REGISTER NUMBER 09900002 TWENTY EQU 20 NUMBER FOR COMPARE 09950002 MAXFPR EQU 6 MAXIMUM FLOATING PT REG NUMBER 10000002 ELEVEN EQU 11 GENERAL EQUATE FOR 11 10010002 BADESTAE EQU 24 RTN CODE IF BAD ESTAE 10020002 M0019 EQU 19 NUMBER OF ERROR MESSAGE 10030002 M0020 EQU 20 NUMBER OF ERROR MESSAGE 10040002 M0021 EQU 21 NUMBER OF ERROR MESSAGE 10040402 SPACE 2 10050002 * EQUATES FOR INTERNAL ASSEMBLER-TYPE-CODES. 10100002 SPACE 10150002 CHARCODE EQU X'00' TYPE ATTRIBUTE =CHAR 10200002 HEXCODE EQU X'04' '' '' =HEXADECIMAL 10250002 BINCODE EQU X'08' '' '' =BINARY 10300002 ICODE EQU X'0C' '' '' =INSTRUCTION 10350002 FCODE EQU X'10' '' '' =FIXED PT, FULLWORD 10400002 HCODE EQU X'14' '' '' '' '', HALFWORD 10450002 ECODE EQU X'18' '' '' =FLT PT, FULLWORD 10500002 DCODE EQU X'1C' '' '' '' '', DBL WORD 10550002 AQCODE EQU X'20' '' '' =A AND Q ADDR CONST 10600002 YCODE EQU X'24' '' '' =Y ADDR CONST 10650002 SCODE EQU X'28' '' '' =S ADDR CONST 10700002 VCODE EQU X'2C' '' '' =V ADDR CONST 10750002 PACKCODE EQU X'30' '' '' =PACKED DECIMAL 10800002 ZONECODE EQU X'34' '' '' =ZONED DECIMAL 10850002 LCODE EQU X'38' '' '' =FLT PT, EXTENDED 10900002 SPACE 10950002 TITLE 'IKJEGLSA, ''LIST'', INITIALIZATION SECTION.' 11300002 *********************************************************************** 11350002 * * 11400002 * PROGRAM BEGINS WITH STANDARD LINKAGE CONVENTIONS. * 11450002 * * 11500002 *********************************************************************** 11550002 SPACE 11600002 LIST SAVE (14,12),,* 11650002 LR R12,R15 R12=BASE REG FOR PROG ADDRESSABILITY 11700002 USING LIST,R12 11750002 USING TCOMTAB,R9 COMMUNICATION TABLE ADDRESSABILITY. 11800002 L R4,REGSAVE2 R4=NEXT SAVE AREA 11850002 ST R4,FOREPTR(R13) FOREWARD CHAIN SAVE AREAS. 11900002 ST R13,BACKPTR(R4) BACKWARD CHAIN SAVE AREAS. 11950002 LR R13,R4 R13=NEXT REGSAVE AREA ADDR. 12000002 SPACE 1 12050002 L R8,LSTPDEPT(R1) GET PTR TO CURRENT ADDRESS PDE 12100002 L R10,LSTWRKPT(R1) GET BASE ADDR FOR LSTWORK DSECT 12150002 USING IKJPARMA,R8 ADDRESSABILITY FOR ADDR PDE DSECT 12200002 USING LSTWORK,R10 12250002 SPACE 12300002 * 12350002 * ISSUE STAE MACRO 12400002 * 12450002 NI TSTFLGS2,HEXFF-TSTXCTL TURN OFF XCTL IN PROGRESS SW 12500002 LA R1,STAELIST PTR TO LIST FORM MACRO 12600002 L R2,TSTSTAE PTR TO TEST STAE MODULE 12650002 STM R10,R12,R10OFF(R13) SAVE BASE PTR 12700002 ESTAE (R2),CT,PARAM=IKJEGSPL,RECORD=YES,XCTL=NO,MF=(E,(R1)) 12710002 SPACE 12800002 LTR R15,R15 TEST RETURN CODE 12850002 SMTSTAE DS 0H SMT TEST LABEL FOR STAE MACRO 12900002 BZ STAEOK CONTINUE IF ZERO 12950002 STC R15,TSTESTRC SAVE RTN CODE FOR MAINLINE 12960002 LA R15,BADESTAE PREPARE TO RETURN BAD ESTAE RTN CODE 12970002 ST R15,LSTRETCD SAVE FOR EXIT 12980002 B LSTMN90 BRANCH TO EXIT 12990002 SPACE 13050002 STAEOK DS 0H 13100002 SPACE 13150002 *********************************************************************** 13200002 * * 13250002 * BEGINNING OF REPEAT SECTION. THE ROUTINE BELOW IS RE-ENTERED IF * 13300002 * A LIST OF ADDRESSES HAS BEEN GIVEN. * 13350002 * * 13400002 *********************************************************************** 13450002 LSTMN04 DS 0H 13500002 L R2,LMATTR GET LENGTH AND MULTIPLICITY ATTR'S 13550002 ST R2,A1LMATTR AND SET ADDRESS 1 ATTRIBUTES. 13600002 SPACE 13650002 TM PDE2FLG3,AFLG WAS A SECOND ADDRESS GIVEN 13700002 L R15,PDEUSER GET DATA ADDR OR SI PTR 13750002 BO LSTMN05 IF YES, BRANCH 13800002 TM PDE2FLG2,CTNAMFLG WAS 2ND ADDRESS A CSECT NAME 13850002 BNO LSTMN06 BRANCH IF NO 2ND ADDRESS 13900002 LSTMN05 DS 0H 13950002 OI COMFLGS,TWOADDRS SET FLAG TO INDICATE ADDRESS RANGE 14000002 LSTMN06 DS 0H 14050002 LTR R15,R15 IF R15 NEG, R15 POINTS TO SYMINFO 14100002 BM SYM1 IF SYMBOLIC, BRANCH 14150002 LSTMN07 DS 0H 14200002 LA R15,ZERO(R15) ZERO OUT THE PDE WRITE BIT 14250002 ST R15,A1 SAVE ADDR OF CURRENT INPUT 14300002 TM COMFLGS,TWOADDRS WERE TWO ADDRESSESS SPECIFIED 14350002 BZ ONLYONE IF ONLY ONE ADDR, BRANCH 14400002 L R15,PDE2USER GET SECOND ADDR OR SI PTR 14450002 LTR R15,R15 IF R15 NEG, R15 POINTS TO SYMINFO 14500002 BNM ONLYONE IF ADDR2 IS SYMBOLIC, BRANCH 14550002 L R15,SIDATAPT(R15) PICK UP INPUT ADDR FROM SI BLOCK 14600002 ONLYONE DS 0H 14650002 LA R15,ZERO(R15) ZERO OUT THE PDE WRITE BIT 14700002 ST R15,A2 SET A2 TO CURRENT SECOND ADDR 14750002 LA R15,HOLDAREA MAKE A PTR TO DATA HOLDING AREA 14800002 ST R15,VPDEPT SET UP VALUE PDE FOR CONVERT 14850002 SPACE 14900002 * NEXT TEST WHETHER ADDR IF REG TYPE 14950002 SPACE 15000002 TM PDEFLG4,GENR+LFPR+SFPR IS ADDRESS TYPE REGISTER 15050002 BZ NOTREG IF NOT, BRANCH 15100002 NC PDEINDCT,PDEINDCT IF REG, IS IT INDIRECT 15150002 BZ LSTREG IF REG IS NOT INDIRECTED, BRANCH 15200002 SPACE 15250002 * NEXT TEST WHETHER ADDRESS IS RELATIVE 15300002 SPACE 15350002 NOTREG DS 0H 15400002 TM PDEFLG4,CTONLY IS ADDRESS A CSECT NAME 15450002 BO LSTMN09 IF CSECT NAME, BRANCH 15500002 TM PDEFLG4,RELADDR IS ADDRESS TYPE RELATIVE 15550002 BZ LSTMN10 IF NOT RELATIVE, BRANCH 15600002 NC PDEINDCT,PDEINDCT IF RELATIVE, IS IT INDIRECTED 15650002 BNZ LSTMN10 IF INDIRECTED, BRANCH 15700002 TM PDEEXPTR,HEXFF IF RELATIVE, IS IT AN EXPRESSION 15750002 BNO LSTMN10 IF START OF AN EXPRESSION, BRANCH 15800002 OI A1FLG,A1REL TURN ON ADDRESS IS RELATIVE FLAG 15850002 TM PDEFLG2,CTNAMFLG IS RELATIVE ADDR QUALIFIED 15900002 BNO LSTMN14 IF NOT QUALIFIED, BRANCH 15950002 SPACE 16000002 *********************************************************************** 16050002 * * 16100002 * IF THE ADDRESS IS A QUALIFIED RELATIVE, CALCULATE THE BASE FOR * 16150002 * RELATIVES BY CONVERTING THE RELATIVE OFFSET TO BINARY AND * 16200002 * SUBTRACTING IT FROM THE RESOLVED CURRENT ADDRESS. THIS BASE * 16250002 * ADDRESS IS KEPT IN 'PPTEMP' FOR USE BY IKJEGCVT. * 16300002 * * 16350002 *********************************************************************** 16400002 XC HOLDAREA(APL),HOLDAREA CLEAR AN AREA FOR AN ADDR PDE 16450002 L R2,PDEUSER GET BINARY START ADDRESS 16500002 LA R2,ZERO(R2) ZERO OUT HIGH ORDER BIT 16550002 SPACE 16600002 * NEXT MOVE THE ADDRESS POINTER AND THE LENGTH TO THE NEW ADDR PDE. 16650002 SPACE 16700002 MVC HOLDAREA+PDEADRPT-IKJPARMA(PDERSV3-PDEADRPT),PDEADRPT 16750002 MVI HOLDAREA+PDEEXPTR-IKJPARMA,HEXFF INDICATE NOT INDIRECT 16800002 SPACE 16850002 * THE ADDRESS TYPE FIELD IS ZERO WHICH IS THE CODE FOR ABSOLUTE. 16900002 SPACE 16950002 LA R1,HOLDAREA SET UP A POINTER TO NEW PDE. 17000002 L R15,TSTCONVT GET ADDRESS OF CONVERT ROUTINE 17050002 SR R0,R0 MAKE REG 0, ZERO FOR CONVERT TO BIN 17100002 LCR R1,R1 MAKE REG 1 NEGATIVE FOR ADDR CONVERT 17150002 BALR R14,R15 GO CONVERT RELATIVE OFFSET TO BINARY 17200002 LTR R15,R15 IS THE RETURN CODE ZERO 17250002 L R1,HOLDAREA+PDEUSER-IKJPARMA GET CONVERTED DATA 17300002 LA R1,ZERO(R1) ZERO OUT HIGH ORDER BIT 17350002 BNZ LSTCVTRC IF RC WAS NOT 0, BRANCH 17400002 SR R2,R1 SUBTRACT OFFSET FROM ADDRESS 17450002 ST R2,PPTEMP SET UP DIVVERENCE AS BASE FOR RELS 17500002 B LSTMN14 BRANCH AROUND SET UP FOR ABSOLUTE 17550002 SPACE 17600002 LSTMN09 DS 0H 17650002 OI A1FLG,A1SYM TURN ON ADDR IS SYMBOLIC FLAG 17700002 LSTMN10 DS 0H 17750002 XC APDE(APL),APDE CLEAR ADDRESS PDE, 17800002 OI APDE+(PDEFLG3-IKJPARMA),AFLG SET FLAG, ADDR PRESENT 17850002 OI APDE+(PDEFLG4-IKJPARMA),ABSADDR SET FLAG FOR ABSOLUTE 17900002 LSTMN14 DS 0H 17950002 SPACE 18000002 * NOW PICK UP TYPE FIELD AND USE AS INDEX INTO BRANCH TABLE. 18050002 SR R15,R15 CLEAR REG 18100002 IC R15,A1TYPE PICK UP TYPE CODE 18150002 B TYPEBTBL(R15) AND BRANCH INTO BRANCH TABLE 18200002 SPACE 18250002 TYPEBTBL DS 0H 18300002 B LSTCHAR CODE X'00' FOR CHAR 18350002 B LSTHEX CODE X'04' FOR HEXADECIMAL 18400002 B LSTBIN CODE X'08' FOR BINARY 18450002 B LSTINSTR CODE X'0C' INSTRUCTION FORMAT 18500002 B FCON CODE X'10' FOR FULLWORD FIXED PT 18550002 B HCON CODE X'14' FOR HALFWORD FIXED PT 18600002 B ECON CODE X'18' FOR SHORT FLT PT 18650002 B DCON CODE X'1C' FOR LONG FLT PT 18700002 B ACON CODE X'20' FOR A AND Q ADDR CNSTNTS 18750002 B YCON CODE X'24' FOR Y ADDR CONSTANTS 18800002 B SCON CODE X'28' FOR S ADDR CONSTANTS 18850002 B ACON CODE X'2C' FOR V ADDR CONSTANTS 18900002 B PACKED CODE X'30' FOR PACKED DECIMAL 18950002 B ZONED CODE X'34' FOR ZONED DECIMAL 19000002 B LCON CODE X'38' FOR EXTENDED FLT PT 19050002 TITLE 'IKJEGLSA, ''LIST'', XCTL FOR REG ADDR OR HEX FORMAT' 19100002 * IF FORMAT TYPE IS HEX (X), OR, IF THE ADDRESS TYPE IS REG, XCTL TO * 19150002 * IKJEGLST WITH THE 'PCHLSTVL' SW IN 'TCOMTAB(TSTFLGS1)' SET TO 1 * 19200002 * TO SHOW ENTRY FROM IKJEGLSA 19250002 SPACE 19300002 LSTHEX DS 0H 19350002 LSTREG DS 0H 19400002 SPACE 19450002 * THE FOLLOWING XCTL IS EXECUTED TO OBTAIN LST 19500002 SPACE 2 19550002 NOBLDL DS 0H 19600002 L R13,BACKPTR(R13) PICK UP ADDR OF CALLERS SAVE AREA 19650002 LA R15,LXCTL SET UP PTR TO LIST FORM OF XCTL MAC 19700002 LA R1,LXCTL1 SET UP PTR TO LIST XCTL PARM LIST 19750002 ST R8,LSTPDEPT(R1) PASS PTR TO CUR ADDR PDE 19800002 ST R10,LSTWRKPT(R1) PASS BASE ADDR OF LSTWORK DSECT 19850002 OI TSTFLGS1,PCHLSTVL INDICATE CALL IS FROM IKJEGLSA 19900002 OI TSTFLGS2,TSTXCTL INDICATE XCTL WITHIN LIST SUB-CMD 19950002 SPACE 20050002 XCTL (2,12),EP=IKJEGLST,SF=(E,(15)) 20100002 SPACE 20150002 SMTXCTL DS 0H SMT TEST LABEL FOR XCTL MAC 20200002 TITLE 'IKJEGLSA, ''LIST'', WRAPUP AND NON-ZERO RETURN CODES' 20250002 *********************************************************************** 20300002 * * 20350002 * COMPLETION ROUTINE, TESTS FOR ADDITIONAL ADDRESSES TO LIST AND * 20400002 * SETS A 0 RETURN CODE. WHEN ALL ADDRESSES HAVE BEEN PROCESSED, * 20450002 * THE ROUTINE RETURNS TO THE CALLER. * 20500002 * * 20550002 *********************************************************************** 20600002 SPACE 20650002 LSTCC0 DS 0H 20700002 TM COMFLGS,OUTCORE WAS THERE AN OUT OF CORE REQUEST 20750002 BZ LSTOK BRANCH IF NOT 20800002 BAL R7,LSTOUT GO PUT OUT MESSAGE IF SO 20850002 LSTOK DS 0H 20900002 TM PDE2CHAI,HEXFF IS THERE ANOTHER ADDRESS PDE 20950002 BNO MORE IF YES, BRANCH 21000002 LSTMN90 DS 0H 21050002 * TURN OFF ALL SWITCH'S WHICH MAY HAVE BEEN USED. 21100002 NI TSTFLGS1,HEXFF-TSTPRINT-TSTFIRST-PCHLSTVL-RANGESW 21150002 ESTAE 0,OV REMOVE ESTAE 21160002 L R15,LSTRETCD PICK UP RETURN CODE 21200002 L R13,BACKPTR(R13) GET ADDR OF PREVIOUS SAVE AREA. 21250002 NI TSTFLGS4,HEXFF-TSTRERTN TURN OFF RETRY IN PROCESS IF ON 21260002 RETURN (14,12),RC=(15) RETURN TO CALLER 21300002 SPACE 21350002 MORE DS 0H 21400002 L R6,OUTBUF GET ADDR OF OUTPUT BUFFER 21450002 ST R6,DATAPT SET UP THE IO PARM LIST 21500002 BAL R7,LSTIO GO TO IO RTN TO VERTICAL SPACE 1 21550002 SPACE 21600002 XC LSTRPT(RPTSIZE),LSTRPT CLEAR ADDR PORTION OF WORK AREA 21650002 L R8,PDE2CHAI GET ADDR OF NEXT PDE FROM CHAIN PTR 21700002 IC R2,TYPESAVE GET TYPE CODE OR DEFAULT TYPE CODE 21750002 STC R2,A1TYPE SET FORMAT TYPE (EXCEPT FOR SYMBOLS) 21800002 B LSTMN04 GO BACK AND PROCESS NEXT ADDR 21850002 SPACE 21900002 LSTCC16 DS 0H 21950002 LA R15,SIXTEEN R15=16 22000002 ST R15,LSTRETCD RC=16 22050002 B LSTMN90 GO CLEAN UP AND RETURN 22100002 SPACE 22150002 LSTCVTRC DS 0H 22200002 CH R15,H16 IS RC=16 22250002 BE LSTCC16 IF EQUAL, ATTN, BRANCH 22300002 B LSTCC0 OTHERWISE, GO CHECK FOR MORE ADDRS 22350002 EJECT 22400002 *********************************************************************** 22450002 * * 22500002 * SYMBOLIC ADDRESS SETUP ROUTINE. THIS ROUTINE SETS UP THE A1 FIELD * 22550002 * AND FILLS IN ANY ATTRIBUTES NOT OVER-RIDDEN BY THE USER. * 22600002 * * 22650002 *********************************************************************** 22700002 SYM1 DS 0H 22750002 TM LSTFLGS,TYPEFLG WAS A TYPE GIVEN BY THE USER 22800002 BO HAVETYPE IF GIVEN, IGNORE ATTRS OF SYMBOL 22850002 SR R2,R2 CLEAR A REG, 22900002 IC R2,SITYPE(R15) PICK UP THE TYPE, 22950002 STC R2,A1TYPE AND MAKE IT THE TYPE FOR A1 23000002 HAVETYPE DS 0H 23050002 TM LSTFLGS,LNTHFLG WAS LNTH ATTR GIVEN BY USER 23100002 BO SYM1L IF GIVEN, IGNORE ATTRS OF SYMBOL 23150002 LH R2,SILEN(R15) PICK UP SYMS LENGTH ATTR 23200002 STH R2,A1L ESTABLISH SYMS LNTH FOR THIS DATA 23250002 SYM1L DS 0H 23300002 TM LSTFLGS,MULTIFLG WAS MULTIPLICITY ATTR GIVEN BY USER 23350002 BO SYM1M IF GIVEN, IGNORE ATTRS OF SYMBOL 23400002 LH R2,SIMUL(R15) PICK UP SYMS MULTIPLICITY FACTOR 23450002 STH R2,A1M EST. SYMS MULTI FOR THIS DATA 23500002 SYM1M DS 0H 23550002 L R15,SIDATAPT(R15) GET PTR TO INPUT FROM SYMINFO BLOCK 23600002 OI A1FLG,A1SYM SET FLAG TO INDICATE ADDR SYMBOLIC 23650002 B LSTMN07 RETURN TO MAINLINE SETUP ROUTINE 23700002 TITLE 'IKJEGLSA, ''LIST'', CHARACTER FORMATTING ROUTINE' 23750002 *********************************************************************** 23800002 * * 23850002 * CHARACTER FORMATTING ROUTINE. * 23900002 * * 23950002 *********************************************************************** 24000002 SPACE 24050002 LSTCHAR DS 0H 24100002 TM COMFLGS,TWOADDRS TEST FOR 1 OR 2 ADDRESSES 24150002 BO LSTC20 IF TWO, BRANCH 24200002 SR R0,R0 SET UP A CONSTANT OF 0 24250002 CH R0,A1M WAS MULTIPLICITY GIVEN 24300002 BNE LSTC04 IF GIVEN, BRANCH 24350002 MVI A1M+H2ND,ONE DEFAULT MULTIPLICITY TO ONE 24400002 LSTC04 DS 0H 24450002 CH R0,A1L WAS A LENGTH GIVEN 24500002 BNE LSTC06 IF GIVEN, BRANCH 24550002 MVI A1L+H2ND,ONE DEFAULT LENGTH TO ONE 24600002 SPACE 24650002 LSTC06 DS 0H 24700002 BAL R14,LSTLMTCK GO CHECK UPPER ADDR OF THIS REQUEST 24750002 BAL R14,ADDRCHK GO CHECK VALIDITY 2ND ADDR 24760002 LTR R15,R15 HAS THE MULTIPLICITY BECOME ZERO 24800002 BNZ LSTCC0 IF ZERO, BRANCH 24850002 LH R1,A1L GET LENGTH GIVEN BY USER 24900002 CH R1,H32 COMPARE IT TO MAX-CHARS/LINE 24950002 BH LSTC24 IF GREATER THAN MAX, BRANCH 25000002 LSTC08 DS 0H 25050002 XC REMAIN,REMAIN SET REMAINDER TO 0 25100002 LH R4,A1M SET CONTROL TO MULTIPLICITY 25150002 LSTC10 DS 0H 25200002 STH R1,VPDEL PUT LENGTH IN VALUE PDE AND 25250002 STH R1,A1L IN LENGTH FIELD. 25300002 TM A1FLG,A1SYM TEST ADDRESS TYPE OF ADDR 1. 25350002 BZ LSTC12 IF TYPE IS ABSOLUTE, BRANCH 25400002 BO LSTC40 IF TYPE IS SYMBOLIC, BRANCH 25450002 SPACE 25500002 * SETUP ROUTINE FOR RELATIVE TYPE ADDRESSES 25550002 SPACE 25600002 MVC APDE(APL),IKJPARMA MOVE ORIGINAL PDE TO WORK AREA 25650002 SPACE 25700002 LSTC12 DS 0H 25750002 LA R2,A1 SET UP PTR TO CURRENT ADDRESS FLD 25800002 ST R2,APDE+(PDEADRPT-IKJPARMA) STORE IT IN THE ADDR PDE 25850002 B LSTC50 GO TO CHAR PROCESS ROUTINE 25900002 SPACE 3 25950002 * SETUP ROUTINE FOR TWO ADDRESSES 26000002 SPACE 26050002 LSTC20 DS 0H 26100002 L R1,A2 R3=ADDR2 26150002 S R1,A1 ADDR2-ADDR1=LNTH EXCLUDING END BYTE 26200002 LA R1,ONE(R1) ADD 1 TO INCLUDE BYTE AT END 26250002 STH R1,A1L SET LENGTH TO A2-A1+1 26300002 MVI A1M+H2ND,ONE SET MULTIPLICITY TO ONE 26350002 CH R1,H32 IS COMPUTED LNTH GT MAX-CHARS/LINE 26400002 BNH LSTC08 IF NOT GREATER THAN MAX, BRANCH 26450002 B LSTC26 BRANCH TO ROUTINE FOR MULTIPLE LINES 26500002 SPACE 26550002 LSTC24 DS 0H 26600002 OI COMFLGS,ARTIMSW TURN ON ARTIFICIAL MULTIPLICITY SW 26650002 LSTC26 DS 0H 26700002 LA R2,CFLDMASK MASK TO ISOLATE REMAINDER 26750002 LH R4,A1L R4=LENGTH TO BE LISTED 26800002 NR R2,R4 R2=REMAINDER OF LNTH/CHARLEN 26850002 SRL R4,FIVE DIVIDE LNTH BY 32 26900002 STH R2,REMAIN SAVE REMAINDER 26950002 STH R2,REMAIN2 SAVE A COPY OF THE REMAINDER 27000002 STH R4,ARTIFMUL SAVE CONTROL, (QUOTIENT). R4=CONTROL 27050002 LA R1,CHARLEN SET UP MAX-CHARS/LINE AS LENGTH 27100002 B LSTC10 RETURN TO COMMON SETUP RTN 27150002 SPACE 2 27200002 * SETUP ROUTINE FOR SYMBOLIC ADDRESSES 27250002 SPACE 27300002 LSTC40 DS 0H 27350002 BAL R7,LSTSYM GO MOVE SYMBOL TO BUF 27400002 L R3,CONAREA SET UP PTR TO CONVERT OUTPUT AREA 27450002 CH R4,HONE IS CONTROL = 1 27500002 BH LSTC42 IF GREATER THAN 1 BRANCH 27550002 SR R15,R15 MAKE A ZERO CONSTANT 27600002 CH R15,ARTIFMUL IS THERE AN ARTIFICIAL MULTIPLICITY 27650002 BNE LSTC42 IF YES, BRANCH 27700002 CH R15,REMAIN IS THERE A REMAINDER 27750002 BNE LSTC42 IF YES, BRANCH 27800002 LH R15,A1L GET LENGTH OF OUTPUT FIELD 27850002 LA R15,SP2(R6,R15) CALCULATE BUF PTR AT END OF DATA 27900002 C R15,ENDOBUF WILL ADDR + DATA FIT IN THE BUFFER 27950002 BNH LSTC58 IF DATA WILL FIT, BRANCH 28000002 SPACE 28050002 LSTC42 DS 0H 28100002 BAL R7,LSTIO GO OUTPUT ADDR ON A SEPARATE LINE 28150002 B LSTC54 GO OUTPUT REL ADDRS AND DATA. 28200002 SPACE 28250002 *********************************************************************** 28300002 * * 28350002 * PROCESS LOOP OF LSTCHAR SUBROUTINE. CALLS 'LSTBPT' TO REMOVE ANY * 28400002 * BREAKPOINTS FROM THE INPUT DATA, THEN CALLS IKJEGCVT TO CONVERT * 28450002 * THE DATA ADDRESS TO PRINTABLE, AND THEN TRANSLATES UNPRINTABLES TO * 28500002 * PERIODS. WHER BUF IS READY, LSTIO IS CALLED TO OUTPUT A LINE OF * 28550002 * DATA. IF THE ADDRESS WAS SYMBOLIC, THE ROUTINE MAY BE ENTERED AT * 28600002 * LSTC54 OR LSTC58, NORMAL ENTRY IS TO LSTC50. * 28650002 * AT THIS POINT, THE ADDRESS IS IN THE BUFFER AND THE DATA MUST BE * 28700002 * MOVE TO THE BUFFER AND HAVE THE UNPRINTABLES TRANSLATED TO PERIODS * 28750002 * * 28800002 *********************************************************************** 28850002 LSTC50 DS 0H 28900002 L R6,OUTBUF GET PTR TO OUTPUT BUFFER 28950002 LA R6,DATAOFF(R6) INCRE BUF PTR PAST LL00 FIELD 29000002 LSTC52 DS 0H 29050002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 29100002 LSTC54 DS 0H 29150002 L R15,TSTCONVT ADDR OF CONVERT ROUTINE 29200002 LA R1,APDE R1=ADDR OF ADDR PDE 29250002 SR R0,R0 R0=0 29300002 LCR R1,R1 MAKE NEGATIVE FOR ADDR CONVERSION 29350002 BCTR R0,NULL R0 NEGATVE FOR CONVERT TO PRINTABLE 29400002 BALR R14,R15 GO CONVERT AN ADDR TO PRINTABLE 29450002 LTR R15,R15 TEST RETURN CODE 29500002 BNZ LSTCVTRC IF RC IS NON-ZERO, GO ANALYZE. 29550002 L R1,CONAREA ADDR OF CONVERT OUTPUT AREA 29600002 MVC ZERO(ADDRLEN,R6),CONDATA(R1) MOVE CONVERTED ADDR 29650002 LA R6,ADDRLEN(R6) INCRE BUF PTR PAST ADDR 29700002 LSTC58 DS 0H 29750002 LH R1,A1L GET PERMANENT DATA LENGTH 29800002 LH R2,VPDEL PICK UP LENGTH OF THIS DATA FIELD 29850002 LA R1,SP2(R1,R6) CALCULATE POTENTIAL END OF LINE ADDR 29900002 C R1,ENDOBUF WILL DATA + ADDR FIT IN THE BUFFER 29950002 BNH LSTC64 IF ADDR+DATA WILL FIT, BRANCH 30000002 BAL R7,LSTIO OTHERWISE, GO OUTPUT ADDR ON SEP LN 30050002 LSTC64 DS 0H 30100002 MVC TWO*SP1(CHARLEN,R6),HOLDAREA MOVE MAX POSSIBLE BYTES 30150002 TR TWO*SP1(CHARLEN,R6),TRTABLE TRANSLATE TO PRINTABLE 30200002 LA R6,TWO*SP1(R2,R6) INCRE BUF PTR PAST DATA 30250002 BAL R7,LSTIO GO OUTPUT THE DATA 30300002 A R2,VPDEPT CALCULATE NEW INPUT ADDR 30350002 ST R2,VPDEPT SET NEW INPUT ADDRESS 30400002 BCT R4,LSTC52 TEST AND DECREMTN CNTRL 30450002 CH R4,REMAIN IS REMAINDER NON-ZERO 30500002 BE LSTC70 IF NOT, BRANCH 30550002 LH R1,REMAIN R1=REMAINDER LENGTH 30600002 STH R1,VPDEL SET VALUE PDE FOR REMAINDED LNTH 30650002 STH R4,REMAIN SET REMAINDER TO ZERO 30700002 LA R4,ONE SET CONTROL TO 1 FIELD. 30750002 B LSTC52 GO BACK AND PROCESS REMAINDER 30800002 SPACE 30850002 LSTC70 DS 0H 30900002 TM COMFLGS,ARTIMSW WAS CONTROL AN ARTIFICIAL MLTPLCTY 30950002 BNO LSTCC0 IF NOT, RETURN TO LIST MAINLINE 31000002 LH R15,A1M R15=TRUE MULTIPLICITY 31050002 BCT R15,LSTC74 TEST AND DECRE MULTIPLICITY 31100002 B LSTCC0 IF NO MORE TO DO, RETURN TO MAINLINE 31150002 LSTC74 DS 0H 31200002 STH R15,A1M SAVE DECREMENTED VALUE 31250002 LH R1,A1L R1=LENGTH OF AN OUTPUT FIELD. 31300002 LH R2,REMAIN2 PICK UP REMAINDER 31350002 LH R4,ARTIFMUL RESET CONTROL TO ARTIFICIAL MLTPLCTY 31400002 STH R1,VPDEL RESET LENGTH OF OUTPUT FIELD 31450002 STH R2,REMAIN RESET REMAINDER 31500002 B LSTC52 GO PROCESS NEXT FIELD 31550002 TITLE 'IKJEGLSA, ''LIST'', FORMAT INITIALIZATION' 31600002 *********************************************************************** 31650002 * * 31700002 * THE FOLLOWING ROUTINES SET UP LIMITS AND DEFAULT VALUES FOR THEIR * 31750002 * RESPECTIVE ASSEMBLER TYPES. AFTER SETUP, CONTROL IS PASSED TO * 31800002 * A COMMON ROUTINE TO CHECK VALUES AND SET ANY NECESSARY DEFAULTS. * 31850002 * * 31900002 *********************************************************************** 31950002 SPACE 32000002 PACKED DS 0H 32050002 LA R0,MAXPLEN R0= LNTH LIMIT 32100002 SR R1,R1 R1=SHIFT VALUE TO DIVIDE BY 1 32150002 LA R2,ONE R2=DEFAULT LNTH 32200002 LA R3,POUTMAX R3=LNTH MAX FOR OUTPUT 32250002 B LSTGEN00 GO TO COMMAN ROUTINE 32300002 SPACE 32350002 ZONED DS 0H 32400002 LA R0,MAXPLEN SAME LIMIT AS PACKED 32450002 SR R1,R1 R1=SHIFT VALUE TO DIVIDE BY 1 32500002 LA R2,ONE DEFAULT LNTH 32550002 LA R3,ZOUTMAX MAX FLD SIZE FOR Z OUTPUT 32600002 B LSTGEN00 GO TO COMMON ROUTINE 32650002 SPACE 32700002 LCON DS 0H 32750002 LA R15,HEXCODE CONVERT TO HEX CHAR FOR PRINTING 32800002 LA R0,MAXPLEN SAME LIMIT AS PACKED 32850002 LA R1,FOUR R1=SHIFT VALUE TO DIVIDE BY 16 32900002 LA R2,SIXTEEN DEFAULT LENGTH 32950002 LA R3,LOUTMAX MAX FLD SIZE FOR L OUTPUT 33000002 B LSTGEN00 GO TO COMMON ROUTINE 33050002 SPACE 33100002 FCON DS 0H 33150002 LA R0,MAXFLEN R0=LENGTH LIMIT 33200002 LA R1,TWO R1=SHIFT VALUE TO DIVIDE BY 4 33250002 LA R2,FOUR DEFAULT LENGTH 33300002 LA R3,FOUTMAX MAX OUTPUT LNTH 33350002 B LSTGEN00 GO TO COMMON ROUTINE 33400002 SPACE 33450002 ECON DS 0H 33500002 LA R0,MAXFLEN SAME LIMIT AS F TYPE 33550002 LA R1,TWO R1=SHIFT VALUE TO DIVDIE BY 4 33600002 LA R2,FOUR DEFAUT LENGTH 33650002 LA R3,EOUTMAX MAX OUTPUT FIELD SIZE 33700002 B LSTGEN00 GO TO COMMON ROUTINE 33750002 SPACE 33800002 HCON DS 0H 33850002 LA R0,MAXFLEN SAME LIMIT AS F TYPE 33900002 LA R1,ONE R1=SHIFT VALUE TO DIVIDE BY 2 33950002 LA R2,TWO DEFAULT LENGTH 34000002 LA R3,FOUTMAX SAME LIMIT AS F TYPE 34050002 B LSTGEN00 GO TO COMMON ROUTINE 34100002 SPACE 34150002 DCON DS 0H 34200002 LA R0,MAXFLEN SAME LIMIT AS F TYPE 34250002 LA R1,THREE R1=SHIFT VALUE TO DIVIDE BY 8 34300002 LA R2,EIGHT DEFAULT LENGTH 34350002 LA R3,EOUTMAX SAME LIMIT AS E TYPE 34400002 B LSTGEN00 GO TO COMMON ROUTINE 34450002 SPACE 34500002 ACON DS 0H ALSO Q AND V FORMATS 34550002 LA R0,MAXALEN R0=LNTH LIMIT 34600002 LA R1,TWO R1=SHIFT VALUE TO DIVIDE BY 4 34650002 LA R2,FOUR DEFAULT LENGTH 34700002 LA R3,AOUTMAX MAX OUTPUT FLD SIZE 34750002 B LSTGEN00 GO TO COMMON ROUTINE 34800002 SPACE 34850002 YCON DS 0H 34900002 LA R0,MAXYLEN LENGTH LIMIT 34950002 LA R1,ONE R1=SHIFT VALUE TO DIVIDE BY 2 35000002 LA R2,TWO DEFAULT LENGTH 35050002 LA R3,YOUTMAX MAX OUTPUT FLD SIZE 35100002 B LSTGEN00 GO TO COMMON ROUTINE 35150002 SPACE 35200002 SCON DS 0H 35250002 LA R0,MAXYLEN SAME LIMIT AS Y TYPE BUT MUST BE EQ 35300002 TM LSTFLGS,LNTHFLG DID USER SPECIFY LENGTH 35350002 BNO SCON04 IF NOT, USE DEFAULT LENGTH 35400002 CH R0,A1L IS LNTH EXACTLY TWO 35450002 BNE LSTSERR IF LENGTH NOT 2, BRANCH 35500002 SCON04 DS 0H 35550002 LA R1,ONE R1=SHIFT VALUE TO DIVIDE BY TWO 35600002 LA R2,TWO DEFAULT LENGTH 35650002 LA R3,SOUTMAX MAX OUTPUT FIELD SIZE 35700002 B LSTGEN00 GO TO COMMON ROUTINE 35750002 LSTSERR DS 0H 35800002 L R7,OUTBUF PICK UP ADDRESS FOR MSG INSERT 35850002 MVC ZERO(TWO,R7),LENFIVE MOVE IN MESSAGE INSERT LENGTH 35880002 MVI FOUR(R7),C'S' MOVE INTO INSERT INSERT TEXT 35890002 LA R2,M0019 PUT MESSAGE TO ISSUE NUMBER IN REG 35900002 LA R3,ZERO INDICATE - NO SECOND LEVEL 35910002 B MSGOUT GO ISSUE MESSAGE 36150002 TITLE 'IKJEGLSA, ''LIST'', GENERAL FORMATTING ROUTINE' 36200002 *********************************************************************** 36250002 * * 36300002 * GENERAL ROUTINE FOR LISTING DATA IN P, S, AQV, H, F, E, D, AND L * 36350002 * FORMATS. THE ROUTINE IS ENTERED FROM THE SETUP ROUTINE FOR THE * 36400002 * REGUESTED TYPE. AT ENTRY THE FOLLOWING REGS MUST BE SET. * 36450002 * R0=MAXIMUM LENGTH FOR THE PARTICULAR CONSTANT TYPE. * 36500002 * R1=A SHIFT VALUE FOR DIVIDING A RANGE INTO DEFAULT SIZED FLDS* 36550002 * R2=THE DEFAULT LENGTH TO BE USED IF NONE GIVEN BY USER * 36600002 * R3=MAXIMUM LENGTH FOR OUTPUT IN THE GIVEN DATA TYPE. * 36650002 * R15=HEX CODE FOR REQUESTED TYPE * 36700002 * * 36750002 *********************************************************************** 36800002 SPACE 36850002 LSTGEN00 DS 0H 36900002 STC R15,VPDET TYPE CODE TO PDE FOR CONVERT 36950002 TM COMFLGS,TWOADDRS TEST FOR ONE ON TWO ADDRS 37000002 BO LSTGEN20 IF TWO, BRANCH 37050002 * SET UP FOR 1 ADDRESS 37100002 SR R15,R15 GET A ZERO COMPAREND 37150002 CH R15,A1M WAS MULTIPLICITY GIVEN 37200002 BNE LSTGEN04 IF GIVEN, BRANCH 37250002 MVI A1M+H2ND,ONE DEFAULT MULTIPLICITY TO ONE 37300002 LSTGEN04 DS 0H 37350002 CH R15,A1L WAS LENGTH GIVEN 37400002 BE LSTGEN08 IF NOT, BRANCH AND USE DEFAULT LNTH 37450002 LH R2,A1L PICK UP GIVEN LENGTH 37500002 LSTGEN08 DS 0H 37550002 CR R2,R0 TEST REQUESTED FIELD LENGTH 37600002 STH R2,VPDEL LENGTH TO VALUE PDE, ANTICIPATE OK. 37650002 BH LSTGEN90 IF LENGTH GREATER THAN MAX, BRANCH 37700002 STH R2,A1L SAVE LENGTH TO BE USED IN THIS LIST 37750002 BAL R14,LSTLMTCK GO CHECK UPPER ADDR OF THIS REQUEST 37800002 BAL R14,ADDRCHK GO CK VALIDITY OF 2ND ADDR 37810002 LTR R15,R15 WAS REMAINING MULTIPLICITY ZERO 37850002 BNZ LSTCC0 IF ZERO, BRANCH 37900002 LH R4,A1M SET CONTROL TO MULTIPLICITY 37950002 LSTGEN10 DS 0H 38000002 TM A1FLG,A1SYM WHAT IS THE ADDRESS TYPE 38050002 BZ LSTGEN12 IF ADDRESS IS ABSOLUTE, BRANCH 38100002 BO LSTGEN40 IF SYMBOLIC, BRANCH 38150002 SPACE 38200002 * IF THE ADDRESS TYPE IS RELATIVE, FALL THRU AND SET UP FOR RELATIVES 38250002 SPACE 38300002 MVC APDE(APL),IKJPARMA MOVE ORIGINAL PDE TO WORK AREA 38350002 LSTGEN12 DS 0H 38400002 LA R2,A1 GET PTR TO INPUT DATA ADDRESS 38450002 ST R2,APDE+(PDEADRPT-IKJPARMA) STORE IT IN THE ADDR PDE 38500002 CLI A1TYPE,ZONECODE IS REQUESTED FORMAT ZONED 38550002 BE LSTZ50 IF ZONED, BRANCH TO SPECIAL RTN 38600002 B LSTGEN50 GO PROCESS DATA 38650002 SPACE 38700002 * SET UP FOR 2 ADDRESSES 38750002 LSTGEN20 DS 0H 38800002 STH R2,VPDEL FOR ADDR RANGE, USE DEFAULT LNTH 38850002 L R4,A2 R4=2ND ADDRESS IN RANGE 38900002 AR R4,R2 INCLUDE FIELD AT 2ND ADDRESS 38950002 C R4,ENDADR DOES THIS ADDR EXCEED HIGHEST ADDR 39000002 BNH LSTGEN24 IF NOT, BRANCH 39050002 SR R4,R2 EXCLUDE LAST FIELD IF OUT OF CORE 39100002 LSTGEN24 DS 0H 39150002 S R4,A1 CALCULATE RANGE IN BYTES 39200002 SRA R4,ZERO(R1) DIVIDE RANGE BY FIELD LENGTH 39250002 B LSTGEN10 GO BACK TO COMMON RTN. 39300002 SPACE 39350002 LSTGEN40 DS 0H 39400002 BAL R7,LSTSYM GO MOVE SYMBOLS TO BUF 39450002 CH R4,HONE TEST CONTROL FOR MORE THAN 1 FIELD 39500002 BH LSTGEN42 IF MORE THAN 1, BRANCH 39550002 LA R15,ONE(R3,R6) R15=MAX POSSIBLE NEEDED LNTH 39600002 C R15,ENDOBUF WOULD THIS BE OUT OF BUF. 39650002 BH LSTGEN42 IF OUT OF BUF, BRANCH 39700002 L R3,CONAREA SET UP PTR TO CONVERT OUTPUT AREA 39750002 CLI A1TYPE,ZONECODE IS OUTPUT FORMAT TO BE ZONED 39800002 BE LSTZ58 IF ZONED, BRANCH TO SPECIAL RTN 39850002 B LSTGEN58 OTHERWISE, DATA WILL FIT, PROCESS IT 39900002 LSTGEN42 DS 0H 39950002 BAL R7,LSTIO GO OUTPUT THE SYMBOLIC ADDRESS 40000002 CLI A1TYPE,ZONECODE IS OUTPUT FORMAT TO BE ZONED 40050002 BE LSTZ54 IF ZONED, BRANCH TO SPECIAL RTN 40100002 B LSTGEN54 GO PROCESS ADDRESSES AND DATA 40150002 SPACE 2 40200002 *********************************************************************** 40250002 * * 40300002 * MAIN PROCESS PORTION OF THE GENERAL LIST ROUTINE 40350002 * FIRST, GO CONVERT THE ADDRESS TO PRINTABLE * 40400002 * AT THIS POINT, THE ADDRESS HAS BEEN PLACED IN THE BUFFER. * 40450002 * NEXT, GO CONVERT THE DATA TO THE PROPER FORMAT AND MOVE IT * 40500002 * TO THE BUFFER. * 40550002 *********************************************************************** 40600002 LSTGEN50 DS 0H 40650002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 40700002 LA R6,DATAOFF(R6) INCRE BUFFER PTR PAST LL00 FIELD 40750002 LSTGEN52 DS 0H 40800002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 40850002 LSTGEN54 DS 0H 40900002 SR R0,R0 R0=0 40950002 LA R1,APDE R1=ADDR OF ADDRESS PDE 41000002 L R15,TSTCONVT R15=ADDR OF CONVERT ROUTINE 41050002 BCTR R0,NULL R0=NEGATIVE FOR CONVERT TO PRINTABLE 41100002 LCR R1,R1 R1=NEG TO SHW ADDRESS CONVERSION 41150002 BALR R14,R15 GO TO CONVERT ROUTINE 41200002 LTR R15,R15 TEST RETURN CODE FROM IKJEGCVT 41250002 BNZ LSTCVTRC IF NON-ZERO, GO ANALYZE 41300002 L R3,CONAREA ADDR OF CONVERT OUTPUT AREA 41350002 MVC ZERO(ADDRLEN,R6),CONDATA(R3) MOVE CONVERTED ADDR TO BUF 41400002 LA R6,ADDRLEN(R6) INCREMENT BUF PTR PAST ADDRESS 41450002 LSTGEN58 DS 0H 41500002 L R15,TSTCONVT R15=ADDR OF CONVERT ROUTINE 41550002 LA R1,VPDE R1=ADDR OF VALUE PDE 41600002 BALR R14,R15 GO CONVERT DATA TO PROPER FORMAT 41650002 LTR R15,R15 TEST RETURN CODE FROM IKJEGCVT 41700002 BNZ LSTCVTRC IF NON-ZERO, BRANCH AND ANALYZE 41750002 IC R15,CONLNTH(R3) GET LENGTH OF CONVERTED DATA 41800002 BCTR R15,NULL DECREMENT LENGTH FOR MVC INSTR 41850002 EX R15,DATAMOVE MOVE CONVERTED DATA TO BUF 41900002 LA R6,SP2+ONE(R15,R6) INCREMENT BUF PTR PAST SPACE+DATA 41950002 L R15,VPDEPT R15=PTR TO LAST DATA 42000002 AH R15,VPDEL ADD LNTH OF DATA JUST PROCESSED 42050002 ST R15,VPDEPT STORE UPDATE DATA PTR 42100002 BAL R7,LSTIO GO OUTPUT ADDR AND 1 FIELD 42150002 BCT R4,LSTGEN52 IF MORE FIELDS, LOOP BACK 42200002 B LSTCC0 OTHERWISE, GO TO COMPLETION RTN 42250002 SPACE 42300002 SPACE 42350002 * MGS FORMATTING ROUTINE FOR LSTGEN AND LST I ROUTINES. 42400002 LSTGEN90 DS 0H 42450002 SR R5,R5 CLEAR OUT REGISTER 42452002 IC R5,VPDET PICK UP TYPE CODE FOR DATA 42460002 SRL R5,TWO DIVIDE HEX TYPE CODE BY 4 FOR INDEX 42470002 L R4,OUTBUF PICK UP ADDRESS TO BUILD INSERT 42480002 MVC ZERO(TWO,R4),LENFIVE MOVE THE CONTROL LENGTH IN 42490002 LA R5,LSTTYPE(R5) SET UP PTR TO TYPE CODE 42500002 MVC FOUR(TYPELEN,R4),ZERO(R5) MOVE TYPE CODE TO INSERT 42510002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM LIST 43050002 IKJEGSIO MSG,FIRST=M0019,INST11=(ADDR,(R4)),ID=LSA19, *43410002 MF=(E,TSTIOPRM) CALL I/O TO ISSUE ERROR MESSAGE 43420002 CH R15,H16 TEST FOR SERIOUS ERROR CONDITION 43430002 BL LSTCC0 IF NOT SERIOUS TRY NEXT ADDRESS 43440002 ST R15,LSTRETCD SAVE RETURN CODE FOR MAINLINE 43440402 B LSTMN90 IF SERIOUS GO BACK TO MAINLINE 43442002 TITLE 'IKJEGLSA, ''LIST'', ZONED DECIMAL FORMATTING ROUTINE' 43500002 *********************************************************************** 43550002 * * 43600002 * AFTER BEING SETUP BY THE COMMON ROUTINE, CONTROL IS PASSED TO THIS * 43650002 * ROUTINE IF THE FORMAT IS TO BE ZONED. ENTRY IS AS FOLLOWS * 43700002 * TO LSTZ50 FOR RELATIVE AND ABSOLUTEADDRESSES * 43750002 * TO LSTZ54 FOR SYMBOLIC ADDRESSES WITH MULTIPLE OUTPUT LINES * 43800002 * TO LSTZ58 FOR SYMBOLIC ADDRESSES WITH ONLY ONE OUTPUT LINE * 43850002 * * 43900002 * THIS ROUTINE VALIDITY CHECKS THE DATA TO ASSURE ZONED FORMAT, MOVES* 43950002 * THE CORRECT SIGN TO THE BUFFER, THE DATA TO THE BUFFER, AND SETS * 44000002 * THE ZONE FIELD OF THE RIGHTMOST BYTE. * 44050002 * * 44100002 *********************************************************************** 44150002 SPACE 44200002 LSTZ50 DS 0H 44250002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 44300002 LA R6,DATAOFF(R6) INCRE BUFFER PTR PAST LL00 FIELD 44350002 LSTZ52 DS 0H 44400002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 44450002 LSTZ54 DS 0H 44500002 SR R0,R0 R0=0 44550002 LA R1,APDE R1=ADDR OF ADDRESS PDE 44600002 L R15,TSTCONVT ADDR OF CONVERT ROUTINE 44650002 BCTR R0,NULL R0=-1 TO INDICATE CONVERT TO PRNTBL 44700002 LCR R1,R1 R1=NEG TO INDICATE ADDR CONVERSION 44750002 BALR R14,R15 GO TO CONVERT ROUTINE 44800002 LTR R15,R15 TEST RETURN CODE FROM IKJEGCVT 44850002 BNZ LSTCVTRC IF NON-ZERO, GO ANALYZE 44900002 L R3,CONAREA R3=ADDR OF CONVERT OUTPUT AREA 44950002 MVC ZERO(ADDRLEN,R6),CONDATA(R3) MOVE ADDRESS TO BUF 45000002 LA R6,ADDRLEN(R6) INCREMENT BUF PTR PAST ADDR 45050002 LSTZ58 DS 0H 45100002 LH R15,VPDEL R15=DATA FIELD LENGTH 45150002 LR R3,R15 SAVE A COPY OF THE LENGTH 45200002 BCTR R15,NULL REDUCE LENGTH BY 1 FOR SS INSTR 45250002 L R1,VPDEPT R1=PTR TO DATA 45300002 SR R2,R2 CLEAR A REG 45350002 IC R2,ZERO(R15,R1) PICK UP LAST BYTE OF DATA FIELD 45400002 CH R2,SIGNPAT TEST FOR VAL ZONE 45450002 BL LSTZ90 IF SIGN FLD LESS THAN X'A0', BRANCH 45500002 SRL R2,FOUR DISCARD RIGHT HALF OF BYTE 45550002 IC R2,SIGNTBL(R2) PICK UP CORRECT SIGN 45600002 STC R2,SP2(R6) PLACE SIGN IN BUFFER 45650002 LA R6,SP2+SIGNLEN(R6) INCREMENT BUF PTR PAST SIGN 45700002 AR R15,R1 R15=ADDR OF LAST DATA BYTE IN BUF 45750002 MVZ ZERO(ONE,R15),VALZONE MOVE A VALID ZONE TO SIGN BYTE 45800002 LR R15,R3 SET SAVED COPY OF THE DATA LENGTH 45850002 LA R3,ZERO(R3,R1) INCREMENT DATA PTR TO NEXT DATA 45900002 ST R3,VPDEPT SAVE UPDATED PTR 45950002 SPACE 46000002 * NEXT, ELIMINATE LEADING ZEROS (EXCEPT IF CONSTANT EQUALS). 46050002 SPACE 46100002 BCT R15,LSTZ66 IF LNTH GREATER THAN ONE, BRANCH 46150002 LSTZ62 DS 0H 46200002 EX R15,ZDATAMVC MOVE DATA TO BUF 46250002 LA R15,ONE(R15) INCREMENT DATA LNTH BY ONE 46300002 LSTZ64 DS 0H 46350002 CLI ZERO(R6),CHAR0 CHAR MUST BE 0 OR GREATER 46400002 BL LSTZ90 IF LOW, BRANCH 46450002 CLI ZERO(R6),CHAR9 CHAR MUST BE 9 OR LESS 46500002 BH LSTZ90 IF GREATER THAN 9, ERROR, BRANCH 46550002 LA R6,ONE(R6) INCREMENT BUF PTR TO NEXT DATA 46600002 BCT R15,LSTZ64 DECRE REMAINING LNTH, TEST FOR DONE 46650002 BAL R7,LSTIO IF DONE, GO OUTPUT DATA 46700002 BCT R4,LSTZ52 TEST FOR MORE TO DO 46750002 B LSTCC0 GO TO COMPLETION ROUTINE 46800002 SPACE 46850002 LSTZ66 DS 0H 46900002 CLI ZERO(R1),CHAR0 IS THIS CHAR A ZERO 46950002 BNE LSTZ62 IF NOT, BRANCH 47000002 LA R1,ONE(R1) INCREMENT DATA PTR TO NEXT BYTE 47050002 BCT R15,LSTZ66 DECRE BYTE COUNT AND CHECK FOR DONE 47100002 B LSTZ62 IF ONLY ONE BYTE REMAINS, BRANCH 47150002 SPACE 47200002 LSTZ90 DS 0H 47250002 LA R2,M0020 OBTAIN FIRST LEVEL MSG NUMBER 47300002 LA R3,ZERO INDICATE NO SECOND LEVEL MSG 47410002 L R7,OUTBUF OBTAIN POINTER TO AREA TO BUILD INST 47460002 MVC ZERO(TWO,R7),LENFIVE MOVE INSERT LENGTH TO INSERT 47466002 MVI FOUR(R7),C'Z' MOVE Z AS THE INSERT TEXT 47468002 B MSGOUT BRANCH TO CALL I/O TO MESSAGE 47468802 SPACE 47470002 ZDATAMVC MVC ZERO(NULL,R6),ZERO(R1) FOR MOVING RAW DATA TO BUFFER 47500002 TITLE 'IKJEGLSA, ''LIST'', BINARY FORMATTING ROUTINE' 47550002 *********************************************************************** 47600002 * * 47650002 * THE FOLLOWING SUBROUTINE LIST AREAS OF CORE IN THE BINARY OUTPUT * 47700002 * FORMAT. CONVERSION TO PRINTABLE IS DONE IN THIS ROUTINE. * 47750002 *********************************************************************** 47800002 LSTBIN DS 0H 47850002 TM COMFLGS,TWOADDRS TEST FOR 1 OR 2 ADDRESSES 47900002 BO LSTB20 IF TWO, BRANCH 47950002 SR R0,R0 R0=0 48000002 CH R0,A1M WAS A MULTIPLICITY GIVEN 48050002 BNE LSTB04 IF GIVEN, BRANCH 48100002 MVI A1M+H2ND,ONE DEFAULT MULTIPLICITY TO ONE 48150002 LSTB04 DS 0H 48200002 CH R0,A1L WAS A LNTH GIVEN 48250002 BNE LSTB06 IF GIVEN, BRANCH 48300002 MVI A1L+H2ND,ONE DEFAULT LENGTH TO ONE 48350002 LSTB06 DS 0H 48400002 BAL R14,LSTLMTCK GO CHECK UPPER ADDR OF THIS REQUEST 48450002 BAL R14,ADDRCHK GO CK VALIDITY OF 2ND ADDR 48460002 LTR R15,R15 IS REMAINING MULTIPLICITY ZERO 48500002 BNZ LSTB80 IF ZERO, BRANCH 48550002 LH R4,A1M SET UP CONTROL 48600002 LH R5,A1L SET UP LENGTH CTR 48650002 LSTB10 DS 0H 48700002 TM A1FLG,A1SYM WAS ADDR SYMBOLIC, REL, OR ABS. 48750002 BZ LSTB12 IF ADDRESS IS ABSOLUTE, BRANCH 48800002 BO LSTB40 IF SYMBOLIC, BRANCH 48850002 SPACE 48900002 * IF THE ADDRESS TYPE IS RELATIVE, FALL THRU AND SET UP FOR RELATIVES 48950002 SPACE 49000002 MVC APDE(APL),IKJPARMA MOVE ORIGINAL PDE TO WORK AREA 49050002 LSTB12 DS 0H 49100002 LA R1,A1 GET PTR TO INPUT DATA ADDRESS 49150002 ST R1,APDE+(PDEADRPT-IKJPARMA) SET UP PTR IN ADDRESS PDE 49200002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 49250002 LA R6,DATAOFF(R6) INCRE BUFFER PTR PAST LL00 FIELD 49300002 LSTB52 DS 0H 49350002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 49400002 LA R1,APDE R1=ADDR OF ADDRESS PDE 49450002 L R15,TSTCONVT R15=ADDR OF CONVERT ROUTINE 49500002 SR R0,R0 ZERO REG 49550002 BCTR R0,NULL MAKE REG 0 NEG FOR CONVERT TO PRINT 49600002 LCR R1,R1 R1=NEG, SHOW CONVERT AN ADDRESS 49650002 BALR R14,R15 GO TO CONVERT ROUTINE 49700002 LTR R15,R15 TEST RETURN CODE FROM CONVERT 49750002 BNZ LSTCVTRC IF NON-ZERO, GO ANALYZE FURTHER 49800002 L R3,CONAREA R3=ADDR OF CONVERT OUTPUT AREA 49850002 MVC ZERO(ADDRLEN,R6),CONDATA(R3) MOVE CONVERTED ADDR TO BUF 49900002 LA R6,ADDRLEN(R6) INCRE BUF PTR PAST ADDR FIELD 49950002 LSTB58 DS 0H 50000002 LA R1,BFLDLEN+SP2(R6) COMPUTE BUF PTR AFTER 1 FLD + 2 SP'S 50050002 C R1,ENDOBUF WILL A DATA BYTE FIT. 50100002 BNH LSTB60 IF MORE DATA WILL FIT, GO PROCESS 50150002 BAL R7,LSTIO IF DATA WONT FIT, GO OUTPUT BUF 50200002 B LSTB52 GO CONVERT ANOTHER ADDR 50250002 SPACE 50300002 LSTB60 DS 0H 50350002 L R1,VPDEPT R1=PTR TO CUR BYTE OF INPUT DATA 50400002 LA R15,EIGHT SET UP LOOP CONTROL 50450002 LA R2,HEX80 INITIALIZE TEST MASK 50500002 LA R6,SP2(R6) INCRE BUF PTR FOR 2 BLANKS 50550002 LSTB62 DS 0H 50600002 EX R2,BTM TEST BIT FOR 1 OR 0 50650002 BO LSTB68 IF ONE, BRANCH 50700002 MVI ZERO(R6),CHAR0 MOVE A ZERO TO THE BUF FOR THIS BIT 50750002 LSTB64 DS 0H 50800002 LA R6,BDATALEN(R6) INCRE BUF PTR PAST DATA 50850002 SRL R2,ONE MOVE MASK TO TEST NEXT BIT 50900002 BCT R15,LSTB62 TEST FOR DONE 50950002 LA R1,BDATALEN(R1) INCREMENT DATA PTR TO NEXT BYTE 51000002 ST R1,VPDEPT SAVE UPDATED DATA ADDRESS 51050002 BCT R5,LSTB58 IF MORE BYTES TO DO,BRANCH 51100002 BAL R7,LSTIO ELSE, GO OUTPUT BUF 51150002 LH R5,A1L RELOAD LENGTH IN CASE MORE TO LIST 51200002 BCT R4,LSTB52 IF MULTIPLICITY NOT ZERO DO MORE 51250002 B LSTCC0 IF DONE, RETURN TO MAIN ROUTINE 51300002 LSTB68 DS 0H 51350002 MVI ZERO(R6),CHAR1 MOVE A ONE TO THE BUF FOR THIS BIT 51400002 B LSTB64 RETURN TO INCRE PTRS 51450002 BTM TM ZERO(R1),NULL FOR TESTING BITS FOR 0 OR 1. 51500002 SPACE 51550002 LSTB20 DS 0H 51600002 L R1,A1 GET START ADDR 51650002 L R5,A2 GET ENDING ADDR 51700002 BCTR R1,NULL DECREMENT A1 TO GET INCLUSIVE LENGTH 51750002 SR R5,R1 COMPUTE LNTH, R5 IS LNTH CNTRL REG 51800002 STH R5,A1L STORE LENGTH FOR LATER 51850002 LA R4,ONE SET MULTIPLICITY CONTROL TO 1. 51900002 B LSTB10 GO SET UP ADDRESSES. 51950002 SPACE 52000002 LSTB40 DS 0H 52050002 BAL R7,LSTSYM GO INITIALIZE BUF WITH SYMBOL 52100002 B LSTB58 GO TO BINARY PROCESS ROUTINE 52150002 SPACE 52200002 LSTB80 DS 0H 52250002 LH R5,LASTLEN AMT OF REQUEST STILL IN CORE 52300002 LA R4,ONE SET MULTIPLICITY CNTRL TO ONE 52350002 STH R4,A1M SAVE MULTIPLICITY CNTRL 52400002 STH R5,A1L SAVE REMAINING LENGTH 52450002 B LSTB10 GO LIST QUANTITY WITHIN CORE 52500002 TITLE 'IKJEGLSA, ''LIST'', INSTRUCTION FORMATTING ROUTINE' 52550002 *********************************************************************** 52600002 * * 52650002 * THIS ROUTINE WILL OUTPUT DATA IN THE INSTRUCTION FORMAT. * 52700002 * CONTROL CAN BE BY LNTH (INCLUDING RANGE), BY MULTIPLICITY, OR BY * 52750002 * BOTH, WITH THE ROUTINE ENDING WHEN EITHER MULTIPLICITY REACHES 0, * 52800002 * OR WHEN THE NEXT-INSTR-ADDR IS INCRE PAST THE STOP ADDRESS. * 52850002 * WITHIN THE PROCESS SECTION (BEGINS AT LSTI50) REGS AND CONTROLS * 52900002 * ARE SET AS FOLLOWS. * 52950002 * * 53000002 * R2 CONTAINS THE STOP ADDR * 53050002 * R3 CONTAINS THE CURRENT TRUE DATA ADDRESS * 53100002 * R4 CONTAINS THE MULTIPLICITY OR 32767. * 53150002 * R5 CONTAINS A COUNTER FOR REFRESHING HOLDAREA. * 53200002 * R6 IS THE CURRENT BUFFER PTR * 53250002 * * 53300002 *********************************************************************** 53350002 LSTINSTR DS 0H 53400002 NI LASTINST,TURNOFF TURN OFF SW IN CASE SW ON 53410002 STC R15,VPDET TYPE CODE TO VALUE PDE. 53450002 L R3,A1 SET UP CURRENT TRUE DATA ADDR 53500002 LA R3,ZERO(ZERO,R3) CLEAR HIGH ORDER BYTE FOR CALCULATE 53550002 TM COMFLGS,TWOADDRS IF ADDRESS RANGE WAS NOT GIVEN 53600002 BNO LSTI05 ... THEN BRANCH 53650002 * PROCESS ADDRESS RANGE 53700002 L R2,A2 SET 2ND ADDRESS IN ANTICIPATION 53750002 LA R2,ONE(R2) ADD 1 TO MAKE RANGE INCULSIVE 53800002 LH R4,MAXHWRD SET MULTI=32767 FOR LOOP CONTROL 53850002 B LSTI20 SKIP SINGLE ADDR PROCESSING 53900002 * PROCESS SINGLE ADDRESS 53950002 LSTI05 DS 0H 54000002 SR R15,R15 CONSTANT OF 0 FOR COMPARE 54050002 LH R4,A1M R4=MULTPLICITY OR 0 54100002 LH R2,A1L R2=LENGTH OR 0 54150002 TM LSTFLGS,LNTHFLG IF LENGTH WAS GIVEN 54200002 BO LSTI06 ... THEN BRANCH 54250002 TM LSTFLGS,MULTIFLG IF MULTIPLICITY WAS NOT GIVEN 54300002 BNO LSTI06 ... THEN BRANCH 54350002 LA R2,SIX SET REG 2 VALUE 6 FOR MULT 54360002 MH R2,A1M MULT BY THE NUMBER OF INST 54370002 B LSTI07 GO TO NEXT PROCESS INSTR 54450002 LSTI06 DS 0H 54500002 LH R4,MAXHWRD SET MULTI=32767 FOR LOOP CONTROL 54550002 LSTI07 DS 0H 54600002 AR R2,R3 CALCULATE STOP ADDR AS ADDR1+LENGTH 54650002 LSTI20 DS 0H 54700002 C R2,ENDADR IS STOP ADDRESS OUT OF CORE 54750002 BNH LSTI21 IF STOP ADDR WITHIN CORE, BRANCH 54800002 L R2,ENDADR GET HIGHEST CORE ADDR FOR STOPPER 54850002 LA R2,ONE(ZERO,R2) INCRE BY ONE FOR USE AS A STOPPER 54900002 EJECT 54950002 LSTI21 DS 0H 55000002 ST R2,A2 ADDR2 IS STOP ADDR 55050002 BAL R14,ADDRCHK GO TEST VALIDITY ENDING ADDR 55060002 TM A1FLG,A1SYM TEST ADDR TYPE 55100002 BZ LSTI22 IF ADDRESS IS ABSOLUTE, BRANCH 55150002 BO LSTI40 IF SYMBOLIC, BRANCH 55200002 SPACE 55250002 * IF THE ADDRESS TYPE IS RELATIVE, FALL THRU AND SET UP FOR RELATIVES 55300002 SPACE 55350002 MVC APDE(APL),IKJPARMA MOVE ORIGINAL PDE TO WORK AREA 55400002 LSTI22 DS 0H 55450002 LA R2,APDE+PDEUSER-IKJPARMA GET PTR TO DATA ADDRESS 55500002 ST R2,APDE+(PDEADRPT-IKJPARMA) STORE IT IN THE ADDR PDE 55550002 B LSTI50 GO PROCESS. 55600002 SPACE 55650002 LSTI40 DS 0H 55700002 BAL R7,LSTSYM GO MOVE SYM TO BUF 55750002 LA R2,APDE+PDEUSER-IKJPARMA GET PTR TO DATA ADDRESS 55800002 ST R2,APDE+(PDEADRPT-IKJPARMA) STORE IT IN THE ADDR PDE 55850002 TM COMFLGS,TWOADDRS TEST FOR 1 OR 2 ADDRS 55900002 L R2,CONAREA GET ADDR OF CONVERT OUTPUT AREA 55950002 BO LSTI42 IF AN ADDR RANGE WAS USED, BRANCH 56000002 LA R15,ONE MAKE A CONSTANT OF 1 FOR COMPARISON 56050002 CH R15,A1M IF MULTIPLICITY GT ONE 56100002 BL LSTI42 ...THEN BRANCH 56150002 ST R3,APDE+PDEUSER-IKJPARMA STORE CURRENT DATA ADDR 56200002 EJECT 56350002 LSTI42 DS 0H 56400002 BAL R7,LSTIO GO OUTPUT SYMBOLIC ADDRESS 56450002 B LSTI51 GO PROCESS LIST REQUEST 56500002 SPACE 2 56550002 * PROCESS ADDRESS FOR THE FIRST LINE OF OUTPUT. 56600002 SPACE 56650002 LSTI50 DS 0H 56700002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 56750002 LA R6,DATAOFF(R6) INCREMENT BUF PTR PAST LL00 FIELD 56800002 BAL R14,LSTBPT GO REMOVE BREAKPOINT SVC'S FROM DATA 56850002 L R2,CONAREA ADDR OF CONVERT OUTPUT AREA 56900002 LSTI51 DS 0X 56950002 LA R5,L'HOLDAREA/SIX SET UP COUNTER FOR DATA IN HOLDAREA 57000002 LSTI52 DS 0H 57050002 ST R3,APDE+PDEUSER-IKJPARMA STORE CUR DATA ADDRESS 57100002 SR R0,R0 R0=0 57150002 LA R1,APDE R1=ADDR OF THE ADDRESS PDE 57200002 L R15,TSTCONVT R15=ADDR OF CONVERT ROUTINE 57250002 BCTR R0,NULL MAKE R0 NEG FOR CONVERT TO PRINTABLE 57300002 LCR R1,R1 R1 NEG TO SHOW ADDR CONVERSION 57350002 BALR R14,R15 GO TO CONVERT ROUTINE 57400002 LTR R15,R15 TEST RETURN CODE. 57450002 BNZ LSTCVTRC IF NON-ZERO, BRANCH 57500002 MVC ZERO(ADDRLEN,R6),CONDATA(R2) CONVERTED DATA TO BUF 57550002 LA R6,ADDRLEN(R6) INCRE BUF PTR PAST LL00 FIELD 57600002 EJECT 57650002 * CONVERT ONE INSTRUCTION, AND MOVE IT INTO THE BUFFER. 57700002 LSTI54 DS 0H 57750002 LA R1,VPDE ADDR OF THE VALUE PDE 57800002 L R15,TSTCONVT ADDR OF CONVERT ROUTINE. 57850002 BALR R14,R15 GO TO CONVERT ROUTINE 57900002 LTR R15,R15 TEST RETURN CODE 57950002 BNZ LSTI80 IF NON-ZERO, BRANCH 58000002 IC R15,CONLNTH(R2) PICK UP LENGTH OF CONVERTED DATA 58050002 BCTR R15,NULL DECREMENT LNTH FOR MVC INSTR 58100002 TM LASTINST,INSTSW TEST FOR LAST INSTR IN BUFFER 58110002 BZ CONT BRANCH AROUND AND CONTINUE 58120002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 58130002 LA R6,ELEVEN(R6) INCREMENT BUF PTR PAST ADDR 58130402 CONT DS 0H LABEL TO BRANCH TO CONT PROC 58140002 EX R15,INSTRMVC MOVE CONVERTED DATA TO BUF 58150002 LA R6,ONE+SP4(R15,R6) INCRE BUF PTR PAST DATA AND SPACES 58200002 SPACE 58250002 * NEXT, INCREMENT THE POINTERS PAST THE INSTRUCITON JUST PROCESSED. 58300002 SPACE 58350002 LSTI66 DS 0H 58410002 L R15,VPDEPT R15=ADDR OF DATA JUST CONVERTED 58450002 TM LASTINST,INSTSW TEST FOR LAST INSTR IN BUFFER 58452002 BO CONTINUE BRANCH BY SPECIAL HANDLING 58454002 LR R1,R3 PREPARE TEST NEAR END OF PG 58460002 TM ZERO(R15),INSTRLEN TEST FOR INST. SIZE 58470002 BZ ADJUST1 IF INSTR BEGINS 00, LNTH=2 58472002 BM ADJUST2 IF BEGINS 10 OR 01, LNTH=4 58474002 BO ADJUST3 IF INSTR BEGINS 11, LNTH=6 58476002 TESTOUT DS 0H BRANCH BACK TO AFTER ADJUSTED 58478002 C R1,A2 TEST FOR LAST INSTR IN BUFFER 58480002 BL CONTINUE BRANCH BY SPECIAL HANDLING 58490002 OI LASTINST,INSTSW TURN ON THE LAST INST SWITCH 58490402 ST R1,A2 ESTABLISH ENDING ADDRESS 58492402 BAL R14,ADDRCHK GO TEST VALIDITY ENDING ADDR 58494402 B LOADBUFF BRANCH TO MOVE LAST INST 58496402 CONTINUE DS 0H BRANCHED TO IF INST LEFT 58498002 TM ZERO(R15),INSTRLEN TEST INSTR LENGTH FOR 2, 4, OR 6 58500002 BM LSTI68 IF INSTR BEGINS 10 OR 01, LNTH=4, GO 58550002 LA R15,TWO(R15) INCRE DATA PTR BY 2 IF LNTH 2 OR 6 58600002 LA R3,TWO(R3) ALSO INCRE TRUE ADDR BY 2 58650002 BZ LSTI70 IF INSTR BEGINS 00, LNTH=2, BRANCH 58700002 SPACE 58750002 * IF THE INSTRUCITON BEGINS 11, THE LNTH=6, 2 HAS ALREADY BEEN ADDED 58800002 * SO FALL THRU AND ADD 4 MORE. THIS INSTR IS BRANHCED TO IF LNTH=4. 58850002 SPACE 58900002 LSTI68 DS 0H 58950002 LA R15,FOUR(R15) INCRE DATA PTR BY 4 IF LNTH 4 OR 6 59000002 LA R3,FOUR(R3) ALSO INCRE TRUE ADDR BY 4 59050002 LSTI70 DS 0H 59100002 C R3,A2 COMPARE UPDATED ADDR TO STOP ADDR 59150002 ST R15,VPDEPT STORE UPDATED ADDR IN VALUE PDE 59200002 BNL LSTI74 IF PAST LIMIT, BRANCH TO FINALE 59250002 TM LASTINST,INSTSW TEST FOR LAST INSTR IN BUFFER 59260002 BO LSTI74 BRANCH TO PRINT OUT LAST INST 59270002 BCT R4,LSTI64 IF CONTROL-1 NOT ZERO, DO ANOTHER 59300002 LSTI74 DS 0H 59350002 NI LASTINST,TURNOFF TURN OFF LAST INSTR SWITCH 59360002 BCTR R3,NULL DECRE ADDR TO TEST FOR OUT-OF-CORE 59400002 C R3,ENDADR WAS LISTING STOPPED BY TOP OF CORE 59450002 BH LSTI78 IF INSTR IN BUF OUT-OF-CORE, BRANCH 59500002 BAL R7,LSTIO GO OUTPUT FINAL DATA 59550002 B LSTCC0 RETURN TO MAIN ROUTINE 59600002 ADJUST1 DS 0H BRANCHED TO FOR 2 BYTE INST 59600402 LA R1,ONE(R1) INCREMENT BY 1 BYTES FOR MOVE 59601202 B TESTOUT BRANCH TO TEST LAST INST 59601302 ADJUST2 DS 0H BRANCHED TO FOR 4 BYTE INST 59602002 LA R1,THREE(R1) INCREMENT BY 3 BYTES FOR MOVE 59620002 B TESTOUT BRANCH TO TEST LAST INST 59640002 ADJUST3 DS 0H BRANCHED TO FOR 6 BYTE INST 59642002 LA R1,FIVE(R1) INCREMENT BY 5 BYTES FOR MOVE 59646002 B TESTOUT BRANCH TO TEST LAST INST 59648402 SPACE 59650002 LSTI78 DS 0H 59700002 OI COMFLGS,OUTCORE SET REQUEST EXTENDS OUT OF CORE SW 59750002 B LSTCC0 GO TO COMPLETION ROUTINE 59800002 EJECT 59810002 ***************************************************************** 59870002 * 59880002 * THIS ROUTINE IS ENTERED AT THIS POINT TO CHECK THE VALIDITY OF 59890002 * THE CALCULATED STOP ADDRESS FOR THE LIST COMMAND. 59892002 * REGS ARE SAVE AND RESTORED AND THE ROUTINE RETURNS TO CALLER 59892402 * IF THE ADDRESS PROVES TO BE VALID; OTHERWISE, THE ROUTINE 59892802 * BRANCHES TO PRINT MESSAGE AND RETURN TO MAINLINE. 59893202 * 59894002 ***************************************************************** 59896002 ADDRCHK DS 0H 59896402 SAVE (14,12) STANDARD SAVE 59896802 L R6,PPTCB ESTAB PTR TO PROB PROG TCB 59897202 L R7,A2 ESTAB PTR TO STOP ADDR 59897702 IKJEGS9G ADDRCHK,TCBADDR=(R6),VALUE=(R7),MF=(E,WKWORDS) 59897802 L R1,OUTBUF RE INIT OUTPUT BUFFER @ZA11395 59901803 MVI DATAOFF(R1),C' ' TO BLANKS...IT HAS BEEN @ZA11395 59906903 MVC DATAOFF+1(OUTBUFRL-5,R1),DATAOFF(R1) CLOBBERED @ZA11395 59907903 C R15,FEIGHT RTN CODE(ZERO/FOUR GOOD ADDR) 59908903 BL GOODADDR OK - - RETURN TO PROCESSING 59910902 BH ERR97 ERROR IN SVC97 59911302 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM LIST 59912902 IKJEGSIO MSG,FIRST=M0018,SECOND=M0285,ID=LSA19, ISSUE CALL *59914902 MF=(E,TSTIOPRM) CALL I/O TO ISSUE ERROR MESSAGE 59916902 CH R15,H16 TEST FOR SERIOUS ERROR CONDITION 59918902 BL LSTCC0 IF NOT SERIOUS TRY NEXT ADDRESS 59919302 ERR97 DS 0H 59919402 ST R15,LSTRETCD SAVE RETURN CODE FOR MAINLINE 59919702 B LSTMN90 IF SERIOUS GO BACK TO MAINLINE 59920102 EJECT 59920802 GOODADDR RETURN (14,12) RETURN TO PROCESSING 59922902 EJECT 59924002 LSTI64 DS 0H 59937002 BAL R7,LSTIO GO OUTPUT DATA 59950002 BCT R5,LSTI52 IF MODE DATA IN HOLDAREA, BRANCH 60000002 LOADBUFF DS 0H BRANCHED TO FOR LAST INST 60010002 BAL R14,LSTBPT GO REMOVE BREAKPOINT SVC'S 60050002 LA R5,L'HOLDAREA/SIX RESET HOLDAREA COUNTER 60100002 B LSTI52 GO UPDATE THE CURRENT DATA ADDRESS 60150002 SPACE 60200002 LSTI80 DS 0H 60250002 C R15,FFOUR IS THE RETURN CODE 4 60300002 BNE LSTCVTRC IF NOT 4, GO ANALYZE 60350002 SPACE 60400002 * IF THE RETURN CODE WAS 4, AN INVALID OP CODE WAS ENCOUNTERED, AND 60450002 * A MESSAGE INDICATING WHERE MUST BE PUT OUT. 60500002 SPACE 60550002 L R15,OUTBUF GET START ADDRESS OF OUTPUT BUFFER 60600002 LR R14,R15 SAVE START ADDRESS OF BUFFER 60650002 LA R15,DATAOFF(R15) INCREMENT ADDRESS PAST LL00 FIELD 60700002 SR R6,R15 CALCUALTE LENGTH OF ADDRESS IN BUF 60750002 SPACE 60800002 * NEXT, BYPASS ANY LEADING BLANKS IN THE ADDRESS ALREADY IN THE BUF. 60850002 SPACE 60900002 LSTI84 DS 0H 60950002 BCTR R6,NULL REDUCE LENGTH BY ONE FOR MVC INSTR 61000002 CLI ZERO(R15),BLANK IS THE NEXT CHARACTER IN BUF A BLANK 61050002 BNE LSTI86 IF NOT A BLANK, BRANCH 61100002 LA R15,ONE(R15) INCREMENT BUF ADDR TO NEXT CHAR 61150002 B LSTI84 LOOP BACK TO CHECK NEXT CHARACTER 61200002 SPACE 61250002 LSTI86 DS 0H 61300002 LA R14,FOUR(R14) POINT TO BYTE AFTER INST HEADER 61310002 L R7,OUTBUF POINT TO BEGINNING OF INSERT 61320002 EX R6,MSGMOVE3 MOVE ADDRESS INTO 1ST LVL MSG 61600002 LA R6,FIVE(R6) CALCUALTE TOTAL LENGTH OF INSERT 61750002 STH R6,ZERO(R7) STORE LENGTH IN MSG LENGTH FIELD 61800002 LA R2,M0021 OBTAIN FIRST LEVEL MSG NUMBER 61812002 LA R3,ZERO INDICATE NO SECOND LEVEL MSG 61814002 MSGOUT DS 0H 61820002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM FIELD 61830002 IKJEGSIO MSG,FIRST=(R2),INST11=(ADDR,(R7)),SECOND=(R3), CALL *61840002 ID=LSA19,MF=(E,TSTIOPRM) FOR OUTPUT OF MESSAGE 61842002 CH R15,H16 TEST FOR SERIOUS ERROR 61844002 BL LSTCC0 IF NOT CONTINUE 61846002 ST R15,LSTRETCD SAVE RETURN CODE FOR MAINLINE 61848002 B LSTMN90 RETURN TO MAINLINE 61848402 SPACE 61900002 MSGMOVE3 MVC ZERO(NULL,R14),ZERO(R15) MOVES ADDR INTO MESS 62000002 BLOW1 DS 0H ESTABLISH ADDR IF ABEND 62010002 INSTRMVC MVC SP4(NULL,R6),CONDATA(R2) MOVES INSTRUCTIONS TO BUF 62050002 TITLE 'IKJEGLSA, ''LIST'', LSTIO SUBROUTINE FOR OUTPUT' 62100002 *********************************************************************** 62150002 * * 62200002 * THES ROUTINE SETS UP THE PTRS AND CALLS IKJEGIO1 TO OUTPUT A LINE * 62250002 * OF DATA. AT ENTRY, THE FOLLOWING REGS ARE SET. * 62300002 * R6 POINTS TO THE NEXT AVAILABLE BYTE IN THE BUFFER * 62350002 * R7 HAS THE RETURN POINT ADDRESS * 62400002 * * 62450002 * THE CONTENTS OF REGS 0, 1, 6, 14, AND 15 ARE MODIFIED BY THIS RTN * 62500002 * * 62550002 *********************************************************************** 62600002 SPACE 62650002 LSTIO DS 0H 62700002 STM R2,R3,WKWORDS SAVE CONTENTS OF WORK REGISTERS 62710002 L R2,DATAPT SET UP PTR TO 2 WORD LIST 62750002 LR R15,R6 R15=PTR TO 'END OF DATA'+1 62800002 L R6,OUTBUF R6=PTR TO BEGINNING OF BUF 62850002 SR R15,R6 CALCULATE LENGTH OF DATA 62900002 STH R15,F1STHALF(R6) LNTH TO 1ST HALF WORD OF BUFFER 62950002 SPACE 63000002 * COMMON PORTION OF IO ROUTINE. 63050002 LSTIO1 DS 0H 63100002 TM TSTFLGS1,TSTPRINT+TSTFIRST IS OUTPUT TO A DS 1ST TIME 63150002 BM FIRSTIO IF OUTPUT TO DS 1ST TIME, BRANCH 63250002 SR R3,R3 IF NOT 1ST TIME, INDICATE SO BY R0=0 63300002 LSTIO4 DS 0H 63350002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM AREA 63400002 IKJEGSIO DATA,DATAPTR=(R2),DSNAME=(R3),ID=LSA19, *63430002 MF=(E,TSTIOPRM) CALL I/O TO OUTPUT DATA LINE 63440002 LM R2,R3,WKWORDS RESTORE WORK REGISTERS 63442002 MVI DATAOFF(R6),BLANK MOVE A BLANK TO START OF DATA AREA 63450002 MVC DATAOFF+ONE(LSTBUFL,R6),DATAOFF(R6) BLANK OUT BUFFER 63500002 LA R6,DATAOFF(R6) INCRE BUF PTR PAST LL00 FIELD 63550002 LTR R15,R15 TEST RETURN CODE 63600002 BCR EQZERO,R7 IF ZERO, RETURN TO CALLER 63650002 CH R15,H16 TEST FOR SERIOUS ERROR 63660002 BL LSTIO3 IF NOT SERIOUS CONTINUE 63850002 ST R15,LSTRETCD SAVE RETURN CODE FOR MAINLINE 63870002 B LSTMN90 RETURN TO MAINLINE 63872002 LSTIO3 DS 0H 63880002 XC LSTRETCD,LSTRETCD SET THE RETURN CODE TO 0 63900002 LTR R15,R15 SEE IF PROCESSING SHOULD BE CONT'D 63910002 BNZ LSTMN90 RETURN TO MAINLINE 63930002 B LSTCC0 GO CLEAN UP AND RETURN 63950002 SPACE 64500002 FIRSTIO DS 0H 64550002 L R14,TSTANSPL PICK UP BASE ADDR FOR PARSE DSECT 64600002 USING IKJPARMD,R14 ADDRESSABILITY FOR THE PDL 64650002 LA R3,DSNAME SET UP PTR TO THE DSNAME PDE 64700002 OI TSTFLGS1,TSTFIRST SET FIRST TIME SWITCH TO 1 64750002 DROP R14 64800002 B LSTIO4 RETURN TO MAIN IO ROUTINE 64850002 TITLE 'IKJEGLSA, ''LIST'', GENERAL USE SUBROUTINES' 64900002 *********************************************************************** 64950002 * * 65000002 * THIS CLOSED SUBROUTINE CHECKS SEGMENTS OF CORE FOR INSERTED BREAK- * 65050002 * POINTS AND REPLACES THEM WITH THE ORIGINAL CONTENTS OF THE LOCATION* 65100002 * THE ROUTINE MOVES THE NEXT 32 BYTES TO BE LISTED TO A WORKAREA AND * 65150002 * SCANS THE BREAK ELEMENT QUEUE FOR ANY BREAK POINT SVC'S WITHIN THE * 65200002 * 32 BYTE FIELD. WHEN A BREAKPOINT SVC IS FOUND TO BE IN THE RANGE, * 65250002 * THE ORIGINAL INSTRUCTION IS MOVED (1ST 2 BYTES) INTO WORK AREA OVER* 65300002 * THE BREAKPOINT SVC. REGISTERS ARE SAVED AND RESTORED. * 65350002 * INPUT A1=ORIGINAL START ADDR OF DATA IN HOLD AREA * 65400002 * VPDEPT =ADDR OF NEXT BY OF HOLD AREA TO BE LISTED * 65450002 * * 65500002 *********************************************************************** 65550002 SPACE 65600002 LSTBPT DS 0H 65650002 SAVE (14,12) STANDARD SAVE 65700002 SPACE 65750002 * CALCULATE THE NEW DATA ADDRESS. 65800002 SPACE 65850002 L R3,VPDEPT GET ADDR OF NEXT BYTE OF HOLDAREA 65900002 LA R5,HOLDAREA SET UP START ADDR OF HOLDING CORE 65950002 SR R3,R5 DETERMINE NUMBER OF BYTES USED 66000002 A R3,A1 INCRE INPUT CORE ADDR BY AMT LISTED 66050002 LA R4,LSTIBLK(R3) ESTABLISH ADDR OF END OF NEXT BLK 66100002 C R4,ENDADR IS END ADDR GREATER THAN HIGHEST 66150002 BH LSTBPT30 IF OUT OF CORE, BRANCH TO ADJUST RTN 66200002 L R0,A2 OBTAIN LAST ADDRESS 66210002 SR R0,R3 PREPARE TEST LESS THAN FULL 66220002 CH R0,H32 TEST FOR 32 OR MORE LEFT 66240002 BNL MOVEMAX IF MORE THAN 32 BRANCH AROUND 66242002 LR R1,R0 ESTAB NUMBER OF BYTES TO MOVE 66244002 B LSTBPT04 BRANCH TO MOVE ROUTINE 66246002 MOVEMAX DS 0H BRANCHED TO IF CAN MOVE 32 66248002 LA R1,LSTIBLK USE STANDARD LENGTH FOR HOLD DATA 66250002 LSTBPT04 DS 0H 66300002 EX R1,HOLDMVC MOVE DATA TO HOLDING AREA 66350002 SPACE 66400002 * IF THE DATA ADDRESS IS NOT ON A HALF WORD BOUNDARY, R0 WILL CONTAIN 66450002 * A ONE (1), IF THE DATA ADDRESS IS ON A HALFWORD BOUNDARY, R0 WILL 66500002 * CONTAIN A ZERO (0). THE CONTENTS OF R0 WILL THEN BE USED TO ADJUST 66550002 * THE DATA ADDRESS AND THE HOLDAREA ADDRESS. THIS ADJUSTMENT IS TO 66600002 * TAKE CARE OF THE CASE WHERE THE DATA START ADDRESS IS THE SECOND 66650002 * BYTE OF A BREAKPOINT. 66700002 SPACE 66750002 BLOW2 DS 0H ESTABLISH ADDR IF ABEND 66760002 LA R0,ONE SET THE LOW ORDER BIT ON IN REG 0 66800002 NR R0,R3 TEST DATA ADDRESS FOR A HALFWORD BDY 66850002 SR R3,R0 ADJUST DATA START ADDRESS IF NEEDED 66900002 SR R5,R0 MAKE SAME CHANGE FOR HOLDAREA ADDR 66950002 L R6,BREAKTAB GET PTR TO FIRST BREAK ELEMENT 67000002 USING BRKELEM,R6 ADDRESSABILITY FOR KREAK ELEMENT 67050002 LTR R6,R6 IS THERE A 1ST BREAK ELEMENT 67100002 BP LSTBPT12 IF THERE IS A BREAK ELEMENT, BRANCH 67150002 B LSTBPT20 IF NONE, RETURN 67200002 SPACE 67250002 LSTBPT08 DS 0H 67300002 L R6,BRKLINK PICK UP FOREWARD PTR 67350002 LTR R6,R6 TEST FOR ANOTHER 67400002 BNP LSTBPT20 IF NO MORE, BRANCH 67450002 LSTBPT12 DS 0H 67500002 C R3,BRKADDR COMPARE START ADDR TO BREAKPOINT 67550002 BH LSTBPT08 IF BRK-PT LOW, NOT IN RANGE, BRANCH 67600002 C R4,BRKADDR COMPARE END ADDR TO BREAKPOINT 67650002 BNL LSTBPT40 IF END ADDR HI OR EQ, ADDR IN RANGE 67700002 LSTBPT20 DS 0H 67750002 AR R3,R0 RE-ADJUST DATA ADDRESS AS NEEDED 67800002 AR R5,R0 DO THE SAME FOR HOLD AREA ADDRESS. 67850002 ST R3,A1 SAVE ACTUAL CORE ADDR OF CUR DATA 67900002 ST R5,VPDEPT RESET VALUE PDE TO PT AT HOLD AREA 67950002 RETURN (14,12) RETURN TO CALLER 68000002 SPACE 68050002 LSTBPT30 DS 0H 68100002 L R1,ENDADR PICK UP HIGHEST CORE ADDR 68150002 LR R4,R1 SET TOP ADDR AS TOP OF CORE 68200002 SR R1,R3 DETERMINE REMAINING LENGTH IN BYTES 68250002 B LSTBPT04 RETURN TO MAIN LSTBPT FLOW 68300002 SPACE 68350002 * IF A BREAK POINT IS FOUND IN THE RANGE, THE FOLLOWING CODE 68400002 * WILL REPLACE THE BREAK POINT SVC WITH THE ORIGINAL INSTRUCTION 68450002 SPACE 68500002 LSTBPT40 DS 0H 68550002 L R2,BRKADDR R2=ADDR OF BREAKPOINT SVC 68600002 SR R2,R3 DETERMINE OFFSET INTO HOLD AREA, 68650002 AR R2,R5 ADD THE ADDR OF HOLDAREA 68700002 SPACE 68750002 * IF THE BREAK ELEMENT IS STILL ACTIVE, REPLACE THE BREAKPOINT SVC 68800002 * WITH THE DATA FROM THE BREAK ELEMENT. 68850002 SPACE 68900002 MVC ZERO(TWO,R2),BRKINST REPLACE SAVED INSTR 68950002 B LSTBPT08 RETURN TO SEARCH LOOP 69000002 BLOW3 DS 0H ESTAB ADDR IF ABEND 69010002 HOLDMVC MVC HOLDAREA(NULL),ZERO(R3) MOVE SEG OF CORE TO HOLD 69050002 DROP R6 69100002 EJECT 69150002 *********************************************************************** 69200002 * * 69250002 * GENERAL SUBROUTINE FOR MOVING SYMBOLIC ADDRESSES TO THE OUTPUT BUF * 69300002 * AT ENTRY, R6 SHOULD POINT TO FIRST BYTE OF OUTPUT AREA * 69350002 * R7 POINTS TO RETURN POINT. * 69400002 *********************************************************************** 69450002 SPACE 69500002 LSTSYM DS 0H 69550002 OI APDE+(PDEFLG2-IKJPARMA),CTNAMFLG TURN ON 'QUALIFIED' SW 69600002 * TURN RELATIVE ADDR FLAG ON, AND ABSOLUTE ADDR SW OFF 69650002 XI APDE+(PDEFLG4-IKJPARMA),RELADDR+ABSADDR 69700002 LA R2,A1 GET ADDR OF INPUT DATA PTR 69750002 ST R2,APDE+(PDEADRPT-IKJPARMA) PUT IT IN THE ADDRESS PDE 69800002 L R6,OUTBUF GET PTR TO START OF OUTPUT BUFFER 69850002 LA R6,DATAOFF(R6) INCREMENT PTR PAST LL00 FIELD 69900002 BAL R14,LSTAMV GO MOVE THE ADDRESS TO THE BUFFER 69950002 L R15,A1 R15=START ADDR OF DATA 70000002 ST R15,PPTEMP MAKE START OF DATA ADDR BASE FOR REL 70050002 SR R0,R0 R0=0 70100002 BCTR R0,NULL MAKE REG 0 NEG FOR CNVRT TO PRINT 70150002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 70200002 BR R7 RETURN TO CALLER 70250002 EJECT 70300002 *********************************************************************** 70350002 * THIS ROUTINE WILL ADD THE PRODUCT OF THE LENGTH AND MULTIPLICITY * 70400002 * TO THE START ADDRESS AND COMPARE THE SUM TO 'ENDADR'. IF THE * 70450002 * SUM EXCEEDS 'ENDADR', A NEW MULTIPLICITY IS CALCULATED AND SWITCH * 70500002 * 'OUTCORE' IN COMFLGS IS SET, THE NUMBER OF BYTES NOT OUT * 70550002 * OF CORE IS PLACED 'LASTLEN', AND THE CALCULATED MULTIPLICITY IS * 70600002 * STORED IN 'A1M'. * 70650002 * RETURN CODES--- 4 IF 'NEW' MULTIPLICITY IS ZERO * 70700002 * 0 FOR ALL OTHER CASES. * 70750002 *********************************************************************** 70800002 LSTLMTCK DS 0H 70850002 SAVE (0,12) 70900002 L R2,A1 GET DATA START ADDR 70950002 LH R3,A1L GET LENGTH FOR THIS REQUEST 71000002 LA R2,ZERO(ZERO,R2) CLEAR HIGH BYTE FOR CALCULATION 71050002 MH R3,A1M MULTIPLY (LENGTH X MULTIPLICITY) 71100002 AR R3,R2 ADD START ADDR TO LENGTH OF REQUEST 71150002 BCTR R3,NULL DECREMENT TO MAKE EXCLUSIVE 71200002 ST R3,A2 STORE 2ND ADDR FOR LATER USE 71210002 C R3,ENDADR COMPARE POTENTIAL END ADDR TO TOP 71250002 BH LSTLMT20 IF REQUEST GOES OUT OF CORE, BRANCH 71300002 LSTLMT10 DS 0H 71350002 SR R15,R15 SET RETURN CODE TO ZERO 71400002 LSTLMT14 DS 0H 71450002 RETURN (0,12) 71500002 SPACE 71550002 LSTLMT20 DS 0H 71600002 L R5,ENDADR GET LAST MACHINE ADDRESS 71650002 ST R5,A2 STORE 2ND ADDR FOR LATER USE 71660002 SR R4,R4 CLEAR EVEN REG FOR DIVIDE 71700002 LH R3,A1L GET LENGTH FOR THIS REQUEST 71750002 SR R5,R2 TOP ADDR - START ADDR 71800002 LA R5,ONE(ZERO,R5) MAKE LASTLEN INCLUSIVE 71850002 DR R4,R3 DIVIDE BYTES IN CORE BY LENGTH 71900002 STH R5,A1M SET NEW MULTIPLICITY 71950002 STH R4,LASTLEN SAVE NO. OF BYTES IN CORE 72000002 OI COMFLGS,OUTCORE 72050002 LTR R5,R5 WAS REMAINING MULTI ZERO 72100002 BNZ LSTLMT10 IF NOT, BRANCH 72150002 LA R15,FOUR SET RETURN CODE TO FOUR 72200002 B LSTLMT14 GO RETURN WITH A RC=4 72250002 SPACE 72300002 LSTOUT DS 0H 72350002 XC TSTIOPRM,TSTIOPRM ZERO OUT I/O PARM LIST 72360002 IKJEGSIO MSG,FIRST=M0022,INST11=(APDE,(R8)),ID=LSA19, *72370002 SECOND=M0272,MF=(E,TSTIOPRM) CALL I/O ISSUE ERROR MSG 72380002 CH R15,H16 TEST FOR SERIOUS ERROR CONDITION 72390002 BL LSTMN90 IF NOT SERIOUS TRY NEXT ADDRESS 72400002 ST R15,LSTRETCD SAVE RETURN CODE FOR MAINLINE 72410002 B LSTMN90 IF SERIOUS GO BACK TO MAINLINE 72420002 EJECT 72700002 *********************************************************************** 72750002 * * 72800002 * GENERAL SUBROUTINE FOR MOVING ADDRESSES TO THE OUTPUT BUFFER. * 72850002 * AT ENTRY, R6 SHOULD POINT TO THE NEXT AVAILABLE BUFFER BYTE * 72900002 * R8 SHOULD CONTAIN THE ADDRESS OF THE ADDR PDE. * 72950002 * AT-EXIT, R6 CONTAINS THE UPDATED BUFFER PTR, AND * 73000002 * THE OUTPUT BUFFER CONTAINS THE ADDRESS STRING. * 73050002 * * 73100002 *********************************************************************** 73150002 LSTAMV DS 0H 73200002 SAVE (14,12) SAVE CALLERS REGS 73250002 TM PDEFLG1,LDNAMFLG WAS A LOADNAME USED 73300002 BZ LSTAMV04 IF NOT, BRANCH 73350002 LH R2,PDELEN1 PICK UP LENGTH OF LOAD NAME 73400002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR. 73450002 L R15,PDELDNAM PICK UP PTR TO LOAD NAME 73500002 EX R2,SYMMOVE MOVE SYMBOL TO BUFFER 73550002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST NAME 73600002 LSTAMV04 DS 0H 73650002 TM PDEFLG2,CTNAMFLG WAS ENTRY NAME SPECIFIED 73700002 BZ LSTAMV08 IF NOT, BRANCH 73750002 MVI ZERO(R6),PERIOD MOVE IN ENTRY NAME PREFIX 73800002 LA R6,L'PERIOD(R6) INCREMENT BUF PTR PAST PREFIX 73850002 LH R2,PDELEN2 GET LENGTH OF ENTRY NAME AND 73900002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR. 73950002 L R15,PDECTNAM PICK UP PTR TO ENTRY NAME 74000002 EX R2,SYMMOVE MOVE NAME TO OUTPUT AREA 74050002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST ENTRY NAME 74100002 TM PDEFLG4,CTONLY IS ADDR TYPE STAND ALONE ENTRYNAME 74150002 BO LSTAMV16 IF STAND ALONE ENTRYNAME, BRANCH 74200002 MVI ZERO(R6),PERIOD MOVE IN SYMBOL SEPARATOR 74250002 LA R6,L'PERIOD(R6) INCREMENT BUF PTR PAST PREFIX 74300002 LSTAMV08 DS 0H 74350002 LH R2,PDELEN3 PICK UP LENGTH OF WYMBOL AND 74400002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR. 74450002 L R15,PDEADRPT R15=PTR TO SYMBOL 74500002 EX R2,SYMMOVE MOVE SYMBOL TO OUTPUT AREA 74550002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST SYMBOL 74600002 LSTAMV16 DS 0H 74650002 ST R6,R6OFF(R13) MODIFY REG 6 CONTENTS (IN SAVE AREA) 74700002 RETURN (14,12) RETRUN TO CALLER WITH HIS REGS 74750002 SPACE 74800002 SYMMOVE MVC ZERO(NULL,R6),ZERO(R15) FOR MOVING NAMES TO BUFFER 74850002 DATAMOVE MVC SP2(NULL,R6),CONDATA(R3) MOVES CONVERTED DATA TO BUFFER 74900002 SPACE 2 74950002 *********************************************************************** 75000002 * 75050002 * STAE RETRY ROUTINE 75100002 * 75150002 *********************************************************************** 75200002 SPACE 3 75250002 RETRY DS 0H 75300002 L R4,CVTPTR PTR TO CVT 75350002 USING CVTDSECT,R4 ADDRESSABILITY FOR CVT 75400002 L R4,CVTTCBP TCB PTR 75450002 L R4,FOUR(R4) CURRENT TCB PTR 75500002 DROP R4 75550002 USING TCB,R4 TCB ADDRESSABILITY 75600002 L R9,TCBTRN TCOMTAB PTR 75650002 OI TSTFLGS4,TSTRERTN TURN ON RETRY IN PROCESS SW 75660002 L R13,REGSAVE2 PTR TO SAVE AREA 75700002 LM R10,R12,R10OFF(R13) RESTORE MODULE ADDRESSABILITY 75750002 LA R15,TWENTY INDICATE ERROR RETURN 76000002 ST R15,LSTRETCD SAVE RETURN CODE 76050002 B LSTMN90 RETURN 76100002 EJECT 76150002 RETRYAD DC A(RETRY) PTR TO STAE RETRY ROUTINE 77000002 FFOUR DC F'4' CONSTANT OF 4, GENERAL USE 77050002 FEIGHT DC F'8' CONSTANT OF 8, GENERAL USE 77052002 TWELVE DC F'12' CONSTANT OF 12, GERERAL USE 77060002 LENFIVE DC H'5' LENGTH FOR MESSAGE INSERTS 77070002 DS 0F 77100002 SPMASK DC X'01000000' SUBPOOL NUMBER MASK FOR FREEMAIN 77150002 ENDADR DC X'00FFFFFF' MAXIMUM CORE ADDRESS 77200002 HONE DC H'1' CONSTANT OF 1, GENERAL USE 77250002 H16 DC H'16' CONSTANT OF 16, GENERAL USE 77300002 H32 DC H'32' CONSTANT OF 32 77350002 MAXHWRD DC H'32767' MAX POSITIVE HALFWORD VALUE 77400002 SPACE 77450002 SMTLABL DS 0H SMT TEST LABEL FOR XCTL MACRO 77500002 LST DC C'LST' CONSTANT USED BY MAINLINE BLDL RTNE 77550002 SPACE 77600002 ORG *-HEX0A ACCOUNT FOR X'00H TO X'09' IN TABLE 77650002 SIGNTBL DS 0H TABLE FOR CONVERTING A ZONE TO SIGN 77700002 ORG *+HEX0A RESET LOC CTR TO ACTUAL TABLE 77750002 DC C'+-+-++' ACTUAL SIGN TABLE 77800002 SPACE 77850002 DS 0H 77900002 SIGNPAT DC X'00A0' USED TO TEST FOR VALID SIGN 77950002 VALZONE DC C'0' USED TO GET A NUMERIC ZONE 78000002 SPACE 2 78050002 *********************************************************************** 78100002 * * 78150002 * THIS TABLE IS USED TO CONVERT THE HEX TYPE CODES TO THEIR CHARACTER 78200002 * EQUIVALENT FOR PLACING THE FORMAT TYPE IN MESSAGES. 78250002 * * 78300002 *********************************************************************** 78350002 SPACE 78400002 LSTTYPE DC C'CXBIFHEDAYSVPZ' EBCDIC FOR DATA TYPE CODES 78450002 IKJEGSPL IKJEGSPL RTRY=RETRY,ABNTB=ABENDTAB,MODNM=IKJEGLSA,TNM=LIST 78460002 SUPERZAP DC 50CL1'Z' AREA FOR TEMP UPDATES 78500002 ABENDTAB DS 0F FULL WORD ALIGNMENT @ZA06225 78510003 DC AL1(97) CODE FOR PROTECTION CHECK 78520002 DC AL3(BLOW3) RESUME ADDRESS FOLLOWING 78530002 DC AL1(97) CODE FOR PROTECTION CHECK 78532002 DC AL3(BLOW1) RESUME ADDRESS FOLLOWING 78534002 DC AL1(97) CODE FOR PROTECTION CHECK 78540002 DC AL3(BLOW2) RESUME ADDRESS FOLLOWING 78542002 DC AL1(97) CODE FOR PROTECTION CHECK 78544002 DC AL3(LSTBPT04) RESUME ADDRESS FOLLOWING 78546002 DC X'FF' END OF TABLE 78548002 EJECT 78550002 *********************************************************************** 78600002 * 78650002 * THE FOLLOWING TABLE IS USED TO TRANSLATE UNPRINTABLE CHARACTERS * 78700002 * TO PERIODS (.) SO THAT THEY WILL BE ACCEPTABLE TO THE TERMINAL. * 78750002 * USED WHEN OUTPUT TYPE IS 'C'. * 78800002 *********************************************************************** 78850002 SPACE 78900002 TRTABLE DS 0H 78950002 DC 256C'.' ALL CHARS NOT OTHERWISE DEFINED ='.' 79000002 ORG TRTABLE+X'40' BLANK OR SPACE 79050002 DC AL1(*-TRTABLE) DEFINE 79100002 ORG TRTABLE+X'4A' CENT, PERIOD, LT, LEFT PAREND, 79150002 * PLUS, VERTICAL BAR, AMPERSAND 79200002 DC 7AL1(*-TRTABLE) DEFINE 79250002 ORG TRTABLE+X'5A' EXCLAMATION, DOLLAR, PERIOD, 79300002 * RIGHT PAREND, SEMICOLON, 79350002 * LOGICAL NOT, DASH, SLASH 79400002 DC 8AL1(*-TRTABLE) DEFINE 79450002 ORG TRTABLE+C',' COMMA, PERCENT, UNDERLINE, GT, QUES. 79500002 DC 5AL1(*-TRTABLE) DEFINE 79550002 ORG TRTABLE+C':' COLON, LB., AT, APSTRPHE, EQ, DBL Q. 79600002 DC 6AL1(*-TRTABLE) DEFINE 79650002 ORG TRTABLE+C'A'-C' ' LOWER CASE 'A' TO 'I' 79700002 DC 9AL1(*-TRTABLE) DEFINE 79750002 ORG TRTABLE+C'J'-C' ' LOWER CASE 'J' TO 'R' 79800002 DC 9AL1(*-TRTABLE) DEFINE 79850002 ORG TRTABLE+C'S'-C' ' LOWER CASE 'S' TO 'Z' 79900002 DC 8AL1(*-TRTABLE) DEFINE 79950002 ORG TRTABLE+C'A' UPPER CASE 'A' TO 'I' 80000002 DC 9AL1(*-TRTABLE) DEFINE 80050002 ORG TRTABLE+C'J' UPPER CASE 'J' TO 'R' 80100002 DC 9AL1(*-TRTABLE) DEFINE 80150002 ORG TRTABLE+C'S' UPPER CASE 'S' TO 'Z' 80200002 DC 8AL1(*-TRTABLE) DEFINE 80250002 ORG TRTABLE+C'0' NUMERALS '0' TO '9' 80300002 DC 10AL1(*-TRTABLE) DEFINE 80350002 ORG TRTABLE+256 SET LOCATION CTR TO END OF TRTABLE 80400002 EJECT 80450002 *********************************************************************** 80500002 * 80550002 * 80600002 * ---NOTICE--- THIS DSECT IS A COPY OF THE ONE PRODUCED BY THE PARSE 80650002 * MACROS IN IKJEGLST. THIS DSECT MUST BE UPDATED 80700002 * WHENEVER THE PARSE MACROS ARE CHANGED OR WHEN THEIR 80750002 * EXPANSION CHANGES. 80800002 *********************************************************************** 80850002 IKJPARMD DSECT 80900002 DS 2A CHAIN PTR 80950002 ADDR1 DS 9A ADDRESS PDE FOR 1ST ADDR OF RANGE 81000002 DS 9A ADDRESS PDE FOR 2ND ADDR OF RANGE 81050002 DS A CHAIN ADDRESS 81100002 TYPE DS AL2 TYPE KEYWORD PDE 81150002 LATTR DS AL2 LENGTH ATTRIBUTE PDE 81200002 MATTR DS AL2 MULTIPLICITY ATTRIBUTE PDE 81250002 PRINT DS AL2 PRINT KEYWORD PDE 81300002 LENGTH DS 2A LENGTH SUBFIELD 81350002 MULTI DS 2A MULTIPLICITY SUBFIELD 81400002 DSNAME DS 6A DSNAME SUBFIELD OF PRINT KEYWORD 81450002 DS 0D ALIGNMENT FOR STORAGE PURPOSES 81500002 SPACE 81550002 EJECT 81560002 IKJEGLSA CSECT 81600002 EJECT 81650002 LSTWORK DSECT 81700002 SPACE 81750002 *********************************************************************** 81800002 * * 81850002 * ---NOTICE--- * 81900002 * * 81950002 ***** THERE IS A DUPLICATE OF THIS DSECT IN IKJEGLST AND ANY CHANGES ** 82000002 ***** TO THE DSECT MUST BE MADE IN BOTH MODULES. ** 82050002 * * 82100002 * THIS DSECT MAPS A SECTION OF THE COMMON WORKING CORE POINTED TO * 82150002 * BY 'WORKAREA' IN TCOMTAB. * 82200002 * * 82250002 *********************************************************************** 82300002 SPACE 82350002 DWORK DS D DOUBLE WORD WORKAREA 82400002 ORG DWORK USE WORK AREA FOR XCTL LIST 82450002 LXCTL1 DS 2A LIST PARM LIST FOR XCTL 82500002 PARSEPL DS 7F PARSE CALLING PARAMETER LIST. 82550002 ORG PARSEPL REUSE CORE USED BY PARSE PARM LIST 82600002 LSTRPT DS 0H START OF SECTION REUSED FOR ADDR LST 82650002 APDE DS 9F WORKING COPY OF THE ADDRESS PDE 82700002 A1 DS A CONTAINS CURRENT ADDR OF INPUT 82750002 A1LMATTR DS F LENGTH AND MULTIPLICITY FACTORS 82800002 ORG A1LMATTR PLACE LNTH AND MULTI IN ONE FULLWORD 82850002 A1L DS H LENGTH 82900002 A1M DS H MULTPLICITY FACTOR 82950002 A1FLG DS X FLAG BYTE FOR ADDR1 INFORMATION 83000002 A1FPD EQU X'80' FLOATING PT DBL 83050002 A1FPE EQU X'40' FLOATING PT SINGLE 83100002 A1GEN EQU X'20' GENERAL REG 83150002 A1REG EQU X'10' ADDRESS 1 IS A REG. 83200002 SPACE 83250002 A1ABS EQU X'00' ADDR IS ABSOLUTE 83300002 A1SYM EQU X'03' ADDR IS SYMBOLIC 83350002 A1REL EQU X'01' ADDR IS RELATIVE 83400002 SPACE 83450002 A1TYPE DS X CONTAINS TYPE CODE FOR ADDR1 83500002 REMAIN DS H REMAINDER 83550002 A2 DS A SECOND ADDR IF A RANGE WAS GIVEN 83600002 ARTIFMUL DS H VALUE OF ARTIFICIAL MULTIPLICITY 83650002 REMAIN2 DS H BACKUP COPY OF REMAINDER 83700002 REGSTART DS F START ADDR OF REG SAVE AREA TO LIST 83750002 LSTRETCD DS F HOLDS RETURN CODE 83800002 LASTLEN DS H CONTAINS REMAINDER FROM LSTLMTCK 83850002 COMFLGS DS X FLAG BYTES FOR PROCESS CONTROL 83900002 TWOADDRS EQU X'80' 1 INDICATE ADDR RANGE 83950002 ARTIMSW EQU X'40' 1 INDICATE CONTROL IS ARTIFICIAL 84000002 NOINDENT EQU X'20' 1 INDICATES DATA NOT TO BE INDENTED 84050002 SECOND EQU X'10' 1 INDICATES PROCESSING 2ND GROUP 84100002 WRAPSW EQU X'08' 1 INDICATES 2ND REG LOWER THAN 1ST 84150002 PARSEFLG EQU X'04' SW SHOWS IO REQUESTED BY PARSE EXIT 84200002 OUTCORE EQU X'02' REQUEST EXTENDS OUT OF CORE 84250002 DATASIZE EQU X'01' SYMBOLIC FOR NUMBER OF HEX FLDS/GRP 84300002 SPACE 84350002 * THE FOLLOWING FIELDS DEFINE A VALUE PDE FOR CONVERTING DATA. 84400002 VPDE DS 0F VALUE PDE FOR CONVERTING DATA 84450002 VPDEPT DS A PTR TO DATA 84500002 VPDEL DS H LENGTH OF DATA FOR CONVERSION 84550002 VPDEFLG DS X FLAGS 84600002 VPDET DS X HEX TYPE CODE FOR VALUE. 84650002 SPACE 84700002 RPTSIZE EQU *-LSTRPT LNTH OF REUSED SECTION. 84750002 LMATTR DS F LENGTH AND MULTIPLICITY FACTOR FLD'S 84800002 ORG LMATTR PLACE LNTH AND MULTI IN ONE FULLWORD 84850002 BINLEN DS H CONVERTED LENGTH GIVEN BY USER 84900002 BINMUL DS H CONVERTED MLTPLCTY GIVEN BY USER 84950002 LXCTL XCTL ,SF=L RESERVE SPACE FOR LIST FORM OF XCTL 85000002 ENDOBUF DS A CONTAINS MAX BUF ADDR + 1 85050002 ENDOGRP DS A CONTAINS GROUP STOP ADDRESS 85100002 DATAPT DS 2F DATA PTR LIST FOR IKJEGIO1 85150002 SPACE 85200002 TYPESAVE DS X CONTAINS SPECIFIED OR DEFAULTED TYPE 85250002 RETRYSAV DS AL3 CONTAINS MAINLINES STAE RETRY ADDR 85300002 LSTFLGS DS X FLAG BYTES TO SAVE PARSE DATA 85350002 TYPEFLG EQU B'10000000' SET TO ONE IF TYPE KEYWORD USED 85400002 LNTHFLG EQU B'01000000' SET TO ONE IF LENGTH KEYWORD USED 85450002 MULTIFLG EQU B'00100000' SET TO ONE IF MULTIPLICITY GIVEN 85500002 SPACE 85550002 DS X SPILL BYTE FOR HOLDAREA ON ODD ADDR 85600002 LASTINST DS X BYTE FOR INSTR FORMATTING 85610002 TURNOFF EQU B'00000000' USED TO TURN OFF LAST INST SW 85620002 INSTSW EQU B'11111111' USED TO COMPARE IF LAST INST 85630002 DS 0D ALIGN HOLDAREA 85650002 HOLDAREA DS XL32 HOLDS DATA BEING CONVERTED CURRENTLY 85700002 WKWORDS DS 3F FWDS-DYNAMIC WK AREA 85710002 * WHEN CALLED TO CK VAL. OF ADD 85730002 STAELIST STAE MF=L 85750002 SPACE 85800002 LWLNTH EQU *-LSTWORK LENGTH OF DSECT 85850002 EJECT 85900002 TITLE 'IKJEGLSA, ''LIST'', TCOMTAB, COMMUNICATIONS DSECT' 89050002 TCOMTAB 89100002 TITLE 'IKJEGLSA, ''LIST'', IKJPARMA, ADDRESS PDE MAP DSECT' 89150002 IKJPARMA 89200002 APL EQU PDECHAIN-IKJPARMA SYMBOLIC LENGTH OF AN ADDRESS PDE 89250002 TITLE 'IKJEGLSA, ''LIST'', BRKELEM, BREAK ELEMENT MAP DSECT' 89300002 BRKELEM 89350002 CVTDSECT DSECT 89400002 CVT 89450002 IKJTCB 89500002 END 89550002