TITLE 'IKJEGLST, ''LIST'' SUBCOMMAND OF TEST, FIRST LOAD' 00050002 * /* START OF SPECIFICATIONS **** 00060002 *02* PROCESSOR = ASSEMBLER 00070002 **** END OF SPECIFICATIONS ***/ 00080002 *A375600,375700 @YM06177 00090002 *A453600,453700,635100,635200 @ZA07140 00095003 *C463000 @ZA09259,@ZA07138 00097003 *********************************************************************** 00100002 * 00150002 * STATUS--VERSION NO. 01, OS/VS2 RELEASE NO. 02 00200002 * 00250002 * FUNCTION-- 00300002 * THIS MODULE IS THE FIRST LOAD OF THE 'LIST' SUBCOMMAND OF TEST. 00350002 * IT IS ENTERED INITIALLY WHENEVER A LIST SUBCOMMAND IS ENCOUNTERED 00400002 * BY THE TEST MAINLINE ROUTINE. THE LIST SUBCOMMAND OF TEST 00450002 * DISPLAYS REQUESTED AREAS OF MAIN STORAGE AND/OR THE GENERAL 00500002 * AND FLOATING POINT REGISTERS. THIS MODULE PREFORMS THE LIST 00550002 * INITIALIZATION FUNCTION, THE LIST IN HEXADECIMAL FORMAT FUNCTION, 00600002 * AND THE LIST GENERAL AND FLOATING POINT REGISTERS FUNCTION. 00650002 * 00700002 * ENTRY POINTS-- 00750002 * IKJEGLST 00800002 * 1. ENTERED FROM TEST MAINLINE FOR THE LIST SUB-CMD. 00850002 * 2. ENTERED FROM IKJEGLSA WITH 'PCHLSTVL' SW IN TSTFLGS1 00900002 * SET TO ONE IF THE NEXT ADDRESS IN AN ADDRESS LIST 00950002 * IS REGISTER TYPE OR IF THE FORMAT TYPE IS HEX (X). 01000002 * IKJPARSE TO PARSE THE CUBCOMMAND BUFFER. 01050002 * 01100002 * INPUT-- 01150002 * ONE LINE OF INPUT FROM TERMINAL IN INPUT BUFFER. 01200002 * 01250002 * OUTPUT-- 01300002 * LINES TO THE TERMINAL DISPLAYING REQUESTED DATA, OR, IF THE 01350002 * PRINT KEYWORD WAS SPECIFIED, THE DATA IS WRITTEN TO A DATA SET. 01400002 * 01450002 * EXTERNAL REFERENCES-- 01500002 * IKJEGCVT FOR CONVERSION OF ADDRESSES AND DATA FROM MACHINE 01550002 * FORMAT TO PRINTABLE FORMAT. FOR CONVERSION OF ADDRESSES, 01600002 * CVT IS ENTERED WITH THE HIGH ORDER BIT OF REG 0 SET TO ONE 01650002 * AND REGISTER 1 CONTAINING THE COMPLEMENT OF THE ADDRESS OF 01700002 * AN ADDRESS PDE. THE ADDRESS PDE DESCRIBES THE ADDRESS TO BE 01750002 * CONVERTED. FOR DATA CONVERSIONS, REG 0 IS SET TO ZERO, AND 01800002 * REG 1 CONTAINS THE ADDRESS OF A VALUE PDE DESCRIBING THE 01850002 * DATA TO BE CONVERTED. 01900002 * 01950002 * IKJEGIO TO OUTPUT DATA TO THE TERMINAL OR TO A PRINT DATA 02000002 * SET, AND TO OUTPUT MESSAGES TO THE TERMINAL. 02050002 * IKJPARSE TO PARSE THE SUB-COMMAND CHAIN. 02400002 * 02450002 * EXITS, NORMAL-- 02500002 * BRANCH REGISTER 14 TO THE ORIGINAL CALLER OF LIST WHEN THE 02550002 * LAST ADDRESS PDE HAS BEEN PROCESSED. 02600002 * XCTL TO IKJEGLSA IF TYPE ATTRIBUTE IS ONE OF THE FOLLOWING- 02650002 * A, B, C, D, E, F, H, I, P, Q, S, V, Y, OR Z. 02700002 * 02750002 * EXITS, ERROR-- 02800002 * NONE 02850002 * 02900002 * TABLES/WORK AREAS -- 02950002 * TCOMTAB POINTED AT BY REG 9, IS THE COMMUNICATIONS TABLE FOR THE 03000002 * TEST PROCESSOR. 03050002 * 03100002 * LSTWORK THE MAPPING DSECT FOR THE WORK AREA USED BY IKJEGLST AND 03150002 * IKJEGLSA. IT HOLDS WORKING COPIES OF THE ATTRIBUTES, ADDRESSES 03200002 * FOR THE DATA CURRENTLY BEING LISTED, PARAMETER LISTS FOR CALLING 03250002 * VARIOUS ROUTINES, AND A DATA BUFFER FOR REMOVING BREAKPOINT SVC'S 03300002 * 03350002 * PARAMETER DESCRIPTOR LIST (PDE) SET UP BY PARSE 03400002 * * 03450002 * ATTRIBUTES-- 03500002 * REENTRANT, REFRESHABLE, PROBLEM PROGRAM. 03550002 * 03600002 * CHARACTER CODE DEPENDENCY-- 03650002 * 03700002 * NOTES-- 03750002 * 03757003 * CHANGE-ACTIVITY - 03764003 * APAR OZ07138 - CHANGES TO USE THE CORRECT RB 03771003 * WHEN COPYING REGISTERS. THE CORRECT POINTER 03778003 * IS IN TCOMTAB IN ECBPP+1. 03785003 * APAR OZ09259 - SAME AS ABOVE 03788003 * 03792003 *********************************************************************** 03850002 TITLE 'IKJEGLST, ''LIST'', EUQATES' 03900002 COPY IKJEGSIO OBTAIN IO CALLING MACROS 03910002 IKJEGLST CSECT 03950002 SPACE 1 04000002 *********************************************************************** 04050002 SPACE 1 04100002 * REGISTER EQUATES. 04150002 SPACE 04200002 R0 EQU 0 WORK REG 04250002 R1 EQU 1 PARAMETER REG 04300002 R2 EQU 2 WORK REG 04350002 R3 EQU 3 WORK REG 04400002 R4 EQU 4 IN PROCESS SECTION, LENTH CNTRL CTR 04450002 R5 EQU 5 WORK REG 04500002 R6 EQU 6 IN PROCESS SECTION, CUR BUF PTR 04550002 R7 EQU 7 INTERNAL LINKAGE REGISTER 04600002 R8 EQU 8 POINTS TO CURRENT ADDRESS PDE 04650002 R9 EQU 9 BASE FOR TCOMTAB DSECT 04700002 R10 EQU 10 BASE FOR LSTWORK DSECT 04750002 R11 EQU 11 *** SPARE REGISTER, FOR MAINTAINANCE 04800002 R12 EQU 12 PROGRAM BASE REGISTER 04850002 R13 EQU 13 PROGRAM SAVE AREA 04900002 R14 EQU 14 EXTERNAL LINKAGE REGISTER 04950002 R15 EQU 15 EXTERNAL LINKAGE REGISTER 05000002 SPACE 1 05050002 *********************************************************************** 05100002 SPACE 2 05150002 * DATA EQUATES FOR OPERANDS OF IMMEDIATE TYPE INSTRUCTIONS. 05200002 SPACE 05250002 NULL EQU 0 USED FOR BALR R,0 AND BCTR R,0. 05300002 ZERO EQU 0 SYMBOLIC EQUATE 05350002 ONE EQU 1 SYMBOLIC EQUATE 05400002 TWO EQU 2 SYMBOLIC EQUATE 05450002 THREE EQU 3 USED WHERE AN ABSOLUTE 3 IS REQ'D 05500002 FOUR EQU 4 SYMBOLIC EQUATE 05550002 FIVE EQU 5 SYMBOLIC EQUATE 05600002 EIGHT EQU 8 SYMBOLIC EQUATE 05650002 TWELVE EQU 12 SYMBOLIC FOR 12, USED AS AN RC 05700002 SIXTEEN EQU 16 SYMBOLIC EQUATE 05750002 TWENTY EQU 20 ERROR RETURN CODE 05800002 HEX80 EQU X'80' SYMBOLIC MASK 05850002 HEXFF EQU X'FF' SYMBOLIC MASK 05900002 SPACE 05950002 BLANK EQU C' ' SYMBOLIC FOR BLANK (SPACE). 06000002 PERIOD EQU C'.' SYMBOLIC EQUATE 06050002 CHAR0 EQU C'0' SYMBOLIC FOR CHARACTER 0 06100002 CHAR9 EQU C'9' SYMBOLIC FOR CHARACTER 9 06200002 BALRCODE EQU X'05' OP CODE FOR BALR INSTRUCTION 06250002 BALCODE EQU X'45' OP CODE FOR BAL INSTRUCTION 06300002 SPACE 06350002 CFLDMASK EQU B'00011111' MASK TO ISOLATE REMAINDERS FOR C TYP 06400002 DWBDY EQU B'00000111' USED TO TEST ADDRS FOR DBL WRD BDY. 06450002 FWBDY EQU B'00000011' FULL 06500002 HWBDY EQU B'00000001' HALF 06550002 INSTRLEN EQU B'11000000' FOR TESTING 1ST 2 BITS OF INSTRS 06600002 PACKMSK EQU X'6F' USED TO SET UP LNTHS FOR PACK INSTR 06650002 SPACE 06700002 * SYMBOLIC OFFSETS FOR THE SYMINFO BLOCK. 06750002 SPACE 06800002 SIDATAPT EQU 0 OFFSET TO DATA ADDR IN SI-BLOCK 06850002 SITYPE EQU 4 OFFSET TO TYPE FIELD OF SI-BLOCK 06900002 SIMUL EQU 6 OFFSET TO LAST 2 BYTES OF MLTPLCTY 06950002 SILEN EQU 8 OFFSET TO LNTH IN SYMINFO 07000002 SINXTPTR EQU 12 OFFSET INTO SYMINFO BLK FOR CHAIN PT 07050002 SYMINFOL EQU 16 SYMBOLIC FOR LENGTH OF SYMINFO BLK 07100002 SPACE 07150002 LSTBUFL EQU 82 LENGTH TO BE BLANKED IN BUFFER 07200002 MAXLINE EQU 100 MAX LINE LENGTH FOR OUTPUT 07250002 LSTIBLK EQU 31 LNTH OF DATA MOVED TO HOLD AREA 07300002 LL00LEN EQU 4 SYMBOLIC FOR LENGTH OF LL00 FIELD 07350002 ADDRLEN EQU 7 LENGTH OF AN ADDR FIELD IN THE BUF 07400002 RADDRLEN EQU 3 LENGTH OF REGISTER ADDRESS FIELD 07450002 VPDELEN EQU 8 SYMBOLIC FOR LENGTH OF A VALUE PDE 07500002 MINLL EQU 40 MINIMUM LINE LNTH FORMATTED BY LIST 07550002 STDLL EQU 81 DEFAULT LINE LNTH WHEN TMPLL IS LOW 07600002 SPACE 07650002 H2ND EQU 1 OFFSET TO 2ND BYTE OF A HALFWORD 07700002 F1STHALF EQU 0 OFFSET TO 1ST HALFWORD OF A FIELD 07750002 LL00OFF EQU 0 OFFSET INTO BUFFER FOR LL00 FIELD 07800002 DATAOFF EQU 4 OFFSET TO DATA PORTION OF BUFFER 07850002 R1OFF EQU 24 OFFSET INTO SAVE AREA FOR REG 1 07900002 R6OFF EQU 44 OFFSET INTO SAVE AREA FOR REG 6 07950002 R10OFF EQU 60 OFFSET INTO SAVE AREA FOR R10 08000002 SP1 EQU 1 DISPLACEMENT FOR 1 SPACE IN BUF 08050002 SP2 EQU 2 SYMBOLIC FOR 2 SPACES 08100002 SP4 EQU 4 FOR INCREMENTING PAST 4 SPACES 08150002 SP5 EQU 5 DISPLACEMENT FOR 5 SPACES IN BUF 08200002 CONDATA EQU 1 OFFSET TO DATA IN CONVERT OUTPUT 08250002 CONLFLD EQU 0 OFFSET TO LNTHFLD IN CONVERT OUTPUT 08300002 FOREPTR EQU 8 OFFSET TO FOREWARD PTR IN SAVE AREA 08350002 BACKPTR EQU 4 OFFSET TO BACKWARD PTR IN SAVE AREA 08400002 CVTSPACE EQU 64 OFFSET INTO COMMON WORK AREA FOR LST 08450002 LSTWRKPT EQU 0 OFFSET INTO PARM LIST FOR DSECT BASE 08500002 LSTPDEPT EQU 4 OFFSET INTO PARM LIST FOR PDE ADDR 08550002 SPACE 08600002 ATTNBIT EQU B'01000000' 08650002 EQZERO EQU 8 COND CODE MASK FOR CC OF 0 08700002 NOTONES EQU 14 COND. CODE MASK FOR CC OF 0, 1, OR 2 08750002 SPACE 08800002 GRINCR EQU 1 USED BY LSTREG TO INCRE GEN REG NO. 08850002 GRMAX EQU 15 HIGHEST GENERAL REGISTER NUMBER 08900002 GRFLENO EQU 11 LNTH OF OUTPUT DATA, GEN REG F FRMT 08950002 GRXLENO EQU 8 LNTH OF OUTPUT DATA, GEN REG IN HEX 09000002 RBGRSAVE EQU 32 OFFSET INTO SVRB FOR REG SAVE AREA 09050002 SPACE 09100002 FPRINCR EQU 2 INCREMENT FOR FLOATING POINT REGS 09150002 FPRMAX EQU 6 MAX FLOATING POINT REG NUMBER 09200002 REINLEN EQU 4 LNTH OF INPUT DATA FOR 'RE' ADDRS 09250002 RDINLEN EQU 8 LNTH OF INPUT DATA FOR 'RD' ADDRS 09300002 REXLENO EQU 8 LNTH OF HEX OUTPUT FOR 'RE' ADDRS 09350002 RDXLENO EQU 16 LNTH OF HEX OUTPUT FOR 'RD' ADDRS 09400002 REELENO EQU 15 LNTH OF 'E' FORMAT OUTPUT 09450002 RDDLENO EQU 24 LNTH OF 'D' FORMAT OUTPUT 09500002 SPACE 09550002 HEXDLEN EQU 4 DEFAULT LENGTH FOR HEX FORMAT 09600002 SPACE 2 09650002 * EQUATES FOR THE INTERNAL ASSEMBLER TYPE CODES. 09700002 SPACE 09750002 CHARCODE EQU X'00' TYPE ATTRIBUTE =CHAR 09800002 HEXCODE EQU X'04' '' '' =HEXADECIMAL 09850002 BINCODE EQU X'08' '' '' =BINARY 09900002 ICODE EQU X'0C' '' '' =INSTRUCTION 09950002 FCODE EQU X'10' '' '' =FIXED PT, FULLWORD 10000002 HCODE EQU X'14' '' '' '' '', HALFWORD 10050002 ECODE EQU X'18' '' '' =FLT PT, FULLWORD 10100002 DCODE EQU X'1C' '' '' '' '', DBL WORD 10150002 AQCODE EQU X'20' '' '' =A AND Q ADDR CONST 10200002 YCODE EQU X'24' '' '' =Y ADDR CONST 10250002 SCODE EQU X'28' '' '' =S ADDR CONST 10300002 VCODE EQU X'2C' '' '' =V ADDR CONST 10350002 PACKCODE EQU X'30' '' '' =PACKED DECIMAL 10400002 ZONECODE EQU X'34' '' '' =ZONED DECIMAL 10450002 LCODE EQU X'38' '' '' =FLT PT, EXTENDED 10500002 SPACE 10550002 I0083 EQU 83 NUMBER OF STATIC MESSAGE INSERT 10560002 I0084 EQU 84 NUMBER OF STATIC MESSAGE INSERT 10570002 M0219 EQU 219 NUMBER OF STATIC MESSAGE 10580002 M0220 EQU 220 NUMBER OF STATIC MESSAGE 10590002 M0221 EQU 221 NUMBER OF STATIC MESSAGE 10600002 BADESTAE EQU 24 RETURN CODE FOR UNSUCCESSFUL ESTAE 10610002 TITLE 'IKJEGLST, ''LIST'', INITIALIZATION/COMPLETION ROUTINES' 11000002 *********************************************************************** 11050002 * * 11100002 * PROGRAM BEGINS WITH STANDARD LINKAGE CONVENTIONS. * 11150002 * * 11200002 *********************************************************************** 11250002 SPACE 11300002 LIST SAVE (14,12),,* 11350002 LR R12,R15 R12=BASE REG FOR PROG ADDRESSABILITY 11400002 USING IKJEGLST,R12 11450002 USING TCOMTAB,R9 COMMUNICATION TABLE ADDRESSABILITY. 11500002 L R6,REGSAVE2 R6=NEXT SAVE AREA 11550002 ST R6,FOREPTR(R13) FOREWARD CHAIN SAVE AREAS. 11600002 ST R13,BACKPTR(R6) BACKWARD CHAIN SAVE AREAS. 11650002 LR R13,R6 R13=NEXT REGSAVE AREA ADDR. 11700002 SPACE 11750002 TM TSTFLGS1,PCHLSTVL IS ENTRY FROM IKJEGLSA 11800002 BO IKJEGLSS IF YES, BRANCH AROUND WORKAREA SETUP 11850002 SPACE 11900002 * INITIALIZE WORKING STORAGE 11950002 SPACE 12000002 L R10,WORKAREA PICK UP ADDR OF GENERAL WORK SPACE 12050002 USING TSTCWORK,R10 12100002 LA R10,CWORKCMD SET UP PTR TO WORK CORE FOR SUB-CMDS 12150002 USING LSTWORK,R10 12200002 XC LSTWORK(LWLNTH),LSTWORK CLEAR WORK AREA 12250002 MVC LXCTL(XCTLLEN),XCTLLF MOVE LIST FORM OF XCTL TO DSECT 12300002 XC LSTRETCD,LSTRETCD CLEAR RETURN CODE SAVE AREA 12350002 * 12400002 * SET UP FOR AND ISSUE THE STAE MACRO 12450002 * 12500002 LSTINT10 DS 0H 12550002 LA R1,STAELIST PTR TO LIST FORM MACRO 12700002 L R2,TSTSTAE PTR TO TEST STAE MODULE 12750002 STM R10,R12,R10OFF(R13) SAVE BASE PTR 12800002 ESTAE (R2),CT,PARAM=IKJEGSPL,RECORD=YES,XCTL=NO,MF=(E,(R1)) 12810002 SPACE 12900002 LTR R15,R15 TEST RETURN CODE 12950002 SMTSTAE DS 0H SMT TEST LABEL FOR STAE MACRO 13000002 BZ STAEOK CONTINUE IF ZERO 13050002 SPACE 13100002 STC R15,TSTESTRC SAVE RETURN CODE 13110002 LA R15,BADESTAE PREPARE TO SEND BACK RTN CODE 13120002 ST R15,LSTRETCD SAVE FOR EXIT 13130002 B LSTMN90 EXIT TO CALLER 13140002 SPACE 13200002 *********************************************************************** 13250002 * * 13300002 * INITIALIZE PARAMETER LIST, TEST FOR A SCHEDULED ATTENTION, AND IF * 13350002 * NO ATTENTION IS PENDING, LINK TO PARSE. * 13400002 * * 13450002 *********************************************************************** 13500002 STAEOK DS 0H 13550002 TM TSTFLGS1,PCHLSTVL WAS ENTRY FROM IKJEGLSA 13700002 BO MORE02 IF YES, GO PROCESS 13750002 SPACE 13800002 * IF ENTRY WAS NOT FROM IKJEGLSA, THIS IS THE FIRST ENTRY, INITILIZE. 13850002 SPACE 13900002 LA R1,PARSEPL PTR TO PARSE LIST 13950002 USING PPL,R1 ADDRESSABILITY FOR LIST 14000002 L R2,TSTUPT PTR TO UPT 14050002 L R3,TSTECT PTR TO ECT 14100002 L R4,TSTCPECB PTR TO P/P ECB 14150002 ST R2,PPLUPT PUT PTR TO UPT INTO PARSE LIST 14200002 ST R3,PPLECT PUT PTR TO ECT INTO PARSE LIST 14250002 ST R4,PPLECB PUT PTR TO P/P ECB INTO PARSE LIST 14300002 L R2,PARSEPCL PTR TO PARSE PCL 14350002 LA R3,TSTANSPL PTR TO ANSWER PLACE 14400002 L R4,INBUF PTR TO INPUT BUFFER 14450002 ST R2,PPLPCL PUT PTR TO PARSE PCL INTO PARSE LIST 14500002 ST R3,PPLANS PUT PTR TO ANS PLACE INTO PARSE LIST 14550002 ST R4,PPLCBUF PUT PTR TO INPUT BUF INTO PARSE LIST 14600002 SPACE 14650002 * R6 SHOULD STILL CONTAIN THE SAVE AREA ADDRESS AT THIS POINT. 14700002 SPACE 14750002 ST R6,PPLUWA PUT INTO PARSE LIST 14800002 DROP R1 14850002 SPACE 14900002 LINK EP=IKJPARS,ERRET=LINKFAIL LINK TO THE PARSE ROUTINE 14950002 PARSEBLO DS 0H 14952002 B LINKOK IF OK CONTINUE 14960002 LINKFAIL DS 0H 14970002 LR R6,R1 TRANSFER ABEND CODE 14980002 LR R5,R15 TRANSFER RETURN CODE 14982002 XC TSTIOPRM,TSTIOPRM CLEAR PARM LIST 14990002 IKJEGSIO SVCERR,SVC=6,ABENDRG=(R6),RC=(R5), ISSUE IO CALLING *14992002 INST11=(NUM,I0040),ID=LST20,MF=(E,TSTIOPRM) FOR ERR MSG 14994002 CH R15,H16 TEST RETURN CODE 14996002 BL LSTMN90 RETURN TO MNL RC=0 14998002 ST R15,LSTRETCD SAVE RC FOR MNL 14998402 B LSTMN90 RETURN TO MNL WITH I/O RTN CODE 14998502 LINKOK DS 0H 14998802 SPACE 15000002 SMTPARS DS 0H SMT TEST LABEL FOR PARSE LINK 15050002 SPACE 15100002 SPACE 2 15200002 * TEST THE RETURN CODE FROM PARSE 15250002 SPACE 15300002 LTR R15,R15 TEST FOR RC=0 15350002 BNZ PARSRC(R15) IF NON-ZERO, BRANCH TO BRANCH TABLE 15400002 L R8,TSTANSPL PICK UP ADDRESS OF PDL 15450002 USING IKJPARMD,R8 15500002 SPACE 15550002 *********************************************************************** 15600002 * NEXT EXTRACT THE NECESSARY DATA FROM THE ADDRESS PDE AND SET UP * 15650002 * THE ADDRESS INFORMATION FIELDS. CONVERT THE LENGTH AND MULTIPLICITY* 15700002 * FACTORS TO BINARY IF THEY WERE SUPPLIED. SET THE TSTPRINT SWITCH * 15750002 * IF PRINT HAS BEEN SPECIFIED. * 15800002 *********************************************************************** 15850002 SPACE 15900002 CH R15,PRINT TEST FOR PRINT KEYWORD SPECIFIED 15950002 BE NOPRINT IF NOT, BRANCH AROUND SETUP 16000002 OI TSTFLGS1,TSTPRINT SET THE PRINT SPECIFIED FLAG 16050002 NOPRINT DS 0H 16100002 CH R15,TYPE WAS A TYPE KEYWORD USED 16150002 BE NOTYPE IF NOT, BRANCH 16200002 OI LSTFLGS,TYPEFLG IF TYPE USED, SET FLAG 16250002 NOTYPE DS 0H 16300002 LH R2,TYPE PICK UP NUMBER OF TYPE KEYWORD OR 0 16350002 IC R2,TYPETBL(R2) GET HEX CODE FOR FORMAT TYPE 16400002 STC R2,A1TYPE PLACE TYPE CODE IN ADDR 1 DESCRIPTOR 16450002 STC R2,TYPESAVE SAVE TYPE FOR POSSIBLE ADDR LIST 16500002 CH R15,LATTR WAS THE LENGTH ATTR KEYWORD USED 16550002 BE NOLENGTH IF NOT, BRANCH 16600002 OI LSTFLGS,LNTHFLG IF LENGTH GIVEN, SET FLAG 16650002 NOLENGTH DS 0H 16700002 CH R15,MATTR WAS MULTIPLICITY GIVEN 16750002 BE NOMULTI IF NOT, BRANCH 16800002 OI LSTFLGS,MULTIFLG IF GIVEN, SET FLAG 16850002 NOMULTI DS 0H 16900002 L R2,OUTBUF GET PTR TO THE OUTPUT BUFFER 16950002 XC LL00OFF(LL00LEN,R2),LL00OFF(R2) CLEAR LL00 FLD TO ZERO 17000002 MVI DATAOFF(R2),BLANK MOVE A BLANK TO START OF DATA AREA 17050002 MVC DATAOFF+ONE(LSTBUFL,R2),DATAOFF(R2) BLANK OUT BUFFER 17100002 ST R2,DATAPR SET UP IO PARM LIST 17150002 LA R3,MINLL SET UP TO SEE THAT TMPLL=MIN LINE 17200002 CH R3,TMPLL Q. IS TMPLL GT OR EQ TO MINIMUM 17250002 LA R3,STDLL SET UP STANDARD LINE LNTH DEFAULT 17300002 BH LSTMN02 IF TMPLL LT MINIMUM, BRANCH 17350002 CH R3,TMPLL IS TMPLL GREATER THAN STANDARD LL 17400002 BL LSTMN02 IF SO, USE STANDARD LINE LENGTH 17450002 LH R3,TMPLL IF TMPLL NLT MIN, USE TMPLL 17500002 LSTMN02 DS 0H 17550002 LA R2,DATAOFF(R3,R2) R2=PTR TO END OF BUFFER+1 17600002 ST R2,ENDOBUF SETUP END OF BUFFER ADDRESS 17650002 LA R8,ADDR1 SET UP ADDRESS OF ADDR PDE AS BASE 17700002 USING IKJPARMA,R8 ADDRESSABILITY FOR ADDR PDE DSECT 17750002 EJECT 17800002 *********************************************************************** 17850002 * * 17900002 * BEGINNING OF REPEAT SECTION. THE ROUTINE BELOW IS RE-ENTERED IF * 17950002 * A LIST OF ADDRESSES HAS BEEN GIVEN. * 18000002 * * 18050002 *********************************************************************** 18100002 LSTMN04 DS 0H 18150002 L R2,LMATTR GET LENGTH AND MULTIPLICITY ATTR'S 18200002 ST R2,A1LMATTR AND SET ADDRESS 1 ATTRIBUTES. 18250002 TM PDE2FLG3,AFLG WAS A SECOND ADDRESS GIVEN 18300002 L R15,PDEUSER GET DATA ADDR OR SI PTR 18350002 BO LSTMN05 IF YES, BRANCH 18400002 TM PDE2FLG2,CTNAMFLG WAS 2ND ADDRESS A CSECT NAME 18450002 BNO LSTMN06 BRANCH IF NO 2ND ADDRESS 18500002 LSTMN05 DS 0H 18550002 OI COMFLGS,TWOADDRS SET FLAG TO INDICATE ADDRESS RANGE 18600002 LSTMN06 DS 0H 18650002 LTR R15,R15 IF R15 NEG, R15 POINTS TO SYMINFO 18700002 BM SYM1 IF SYMBOLIC, BRANCH 18750002 LSTMN07 DS 0H 18800002 LA R15,ZERO(R15) ZERO OUT PDE WRITE BIT 18850002 ST R15,A1 SAVE ADDR OF CURRENT INPUT 18900002 TM COMFLGS,TWOADDRS WERE TWO ADDRESSESS SPECIFIED 18950002 BZ ONLYONE IF ONLY ONE ADDR, BRANCH 19000002 L R15,PDE2USER GET SECOND ADDR OR SI PTR 19050002 LTR R15,R15 IF R15 NEG, R15 POINTS TO SYMINFO 19100002 BNM ONLYONE IF ADDR2 IS SYMBOLIC, BRANCH 19150002 L R15,SIDATAPT(R15) PICK UP INPUT ADDR FROM SYMINFO BLK 19200002 ONLYONE DS 0H 19250002 LA R15,ZERO(R15) ZERO OUT PDE WRITE BIT 19300002 ST R15,A2 SET A2 TO CURRENT SECOND ADDR 19350002 LA R15,HOLDAREA MAKE A PTR TO DATA HOLDING AREA 19400002 ST R15,VPDEPT SET UP VALUE PDE FOR DATA CONVERT 19450002 SPACE 19500002 * NEXT TEST WHETHER ADDR IS REGISTER TYPE 19550002 SPACE 19600002 TM PDEFLG4,GENR+LFPR+SFPR IS ADDRESS TYPE REGISTER 19650002 BZ NOTREG IF NOT, BRANCH 19700002 NC PDEINDCT,PDEINDCT IF REG, IS IT INDIRECT 19750002 BZ LSTREG IF REG ADDR NOT INDIRECTED, BR 19800002 SPACE 19850002 * NEXT TEST WHETHER ADDRESS IS RELATIVE 19900002 SPACE 19950002 NOTREG DS 0H 20000002 TM PDEFLG4,CTONLY IS ADDRESS A CSECT ONLY 20050002 BO LSTMN09 IF CSECT ONLY, BRANCH 20100002 TM PDEFLG4,RELADDR IS ADDRESS TYPE RELATIVE 20150002 BZ LSTMN10 IF NOT RELATIVE, BRANCH 20200002 NC PDEINDCT,PDEINDCT IF RELATIVE, IS IT INDIRECTED 20250002 BNZ LSTMN10 IF INDIRECTED, BRANCH 20300002 TM PDEEXPTR,HEXFF IF RELATIVE, IS IT AN EXPRESSION 20350002 BNO LSTMN10 IF START OF AN EXPRESSION, BRANCH 20400002 OI A1FLG,A1REL TURN ON ADDRESS IS RELATIVE FLAG 20450002 TM PDEFLG2,CTNAMFLG IS RELATIVE ADDR QUALIFIED 20500002 BNO LSTMN14 IF NOT QUALIFIED, BRANCH 20550002 SPACE 20600002 *********************************************************************** 20650002 * * 20700002 * IF THE ADDRESS IS A QUALIFIED RELATIVE, CALCULATE THE BASE FOR * 20750002 * RELATIVES BY CONVERTING THE RELATIVE OFFSET TO BINARY AND * 20800002 * SUBTRACTING IT FROM THE RESOLVED CURRENT ADDRESS. THIS BASE * 20850002 * ADDRESS IS KEPT IN 'PPTEMP' FOR USE BY IKJEGCVT. * 20900002 * * 20950002 *********************************************************************** 21000002 XC HOLDAREA(APL),HOLDAREA CLEAR AN AREA FOR AN ADDR PDE 21050002 L R2,PDEUSER GET BINARY START ADDRESS 21100002 LA R2,ZERO(R2) ZERO OUT HIGH ORDER BYTE 21150002 SPACE 21200002 * NEXT MOVE THE ADDRESS POINTER AND THE LENGTH TO THE NEW ADDR PDE. 21250002 SPACE 21300002 MVC HOLDAREA+PDEADRPT-IKJPARMA(PDERSV3-PDEADRPT),PDEADRPT 21350002 MVI HOLDAREA+PDEEXPTR-IKJPARMA,HEXFF INDICATE NOT INDIRECT 21400002 SPACE 21450002 * THE ADDRESS TYPE FIELD IS ZERO WHICH IS THE CODE FOR ABSOLUTE. 21500002 SPACE 21550002 LA R1,HOLDAREA SET UP A POINTER TO NEW PDE. 21600002 L R15,TSTCONVT GET ADDRESS OF CONVERT ROUTINE 21650002 SR R0,R0 MAKE REG 0, ZERO FOR CONVERT TO BIN 21700002 LCR R1,R1 MAKE REG 1 NEGATIVE FOR ADDR CONVERT 21750002 BALR R14,R15 GO CONVERT RELATIVE OFFSET TO BINARY 21800002 LTR R15,R15 IS THE RETURN CODE ZERO 21850002 L R1,HOLDAREA+PDEUSER-IKJPARMA GET CONVERTED DATA 21900002 LA R1,ZERO(R1) ZERO OUT HIGH ORDER BYTE 21950002 BNZ LSTCVTRC IF RC WAS NOT 0, BRANCH 22000002 SR R2,R1 SUBTRACT OFFSET FROM ADDRESS 22050002 ST R2,PPTEMP SET UP DIFFERENCE AS BASE FOR RELS 22100002 B LSTMN14 BRANCH AROUND SET UP FOR ABSOLUTE 22150002 SPACE 22200002 LSTMN09 DS 0H 22250002 OI A1FLG,A1SYM INDICATE ADDRESS IS A SYMBOLIC TYPE 22300002 LSTMN10 DS 0H 22350002 XC APDE(APL),APDE CLEAR ADDRESS PDE, 22400002 OI APDE+(PDEFLG4-IKJPARMA),ABSADDR SET FLAG FOR ABSOLUTE 22450002 OI APDE+(PDEFLG3-IKJPARMA),AFLG SET FLAG, ADDR PRESENT 22500002 SPACE 22550002 * TEST FORMAT TYPE TO BE USED 22600002 SPACE 22650002 LSTMN14 DS 0H 22700002 CLI A1TYPE,HEXCODE IS REQUESTED FORMAT HEX 22750002 BE LSTHEX IF HEX, BRANCH 22800002 SPACE 2 22850002 * THE FOLLOWING XCTL IS EXECUTED TO OBTAIN LSA 22900002 SPACE 2 22950002 NOBLDL DS 0H 23000002 L R13,BACKPTR(R13) PICK UP ADDR OF CALLERS SAVE AREA 23050002 LA R15,LXCTL SET UP PTR TO LIST FORM OF XCTL MAC 23100002 LA R1,LXCTL1 SET UP PTR TO LIST'S PARM LIST 23150002 ST R8,LSTPDEPT(R1) PASS A PTR TO THE CURRENT ADDR PDE 23200002 ST R10,LSTWRKPT(R1) PASS THE BASE ADDR OF LSTWORK DSECT 23250002 OI TSTFLGS2,TSTXCTL INDICATE XCTL WITHIN LIST SUB-CMD 23350002 *********************************************************************** 23400002 * * 23450002 * IF FORMAT TYPE WAS A, B, C, D, E, F, H, I, L, P, S, Y, OR Z--- * 23500002 * XCTL TO SECOND LOAD MODULE OF LIST. * 23550002 * IF THE XCTL FAILS, THE TEST MAINLINE STAE RETRY ROUTINE WILL BE * 23600002 * ENTERED. (FIELD 'TSTRETRY' IN TCOMTAB POINTS TO MAINLINE RTN ACROSS* 23650002 * THE XCTL). * 23700002 * * 23750002 *********************************************************************** 23800002 SPACE 23850002 XCTL (2,12),EP=IKJEGLSA,SF=(E,(15)) 23900002 SPACE 23950002 SMTXCTL DS 0H SMT TEST LABEL FOR XCTL MACRO 24000002 EJECT 24050002 *********************************************************************** 24100002 * * 24150002 * THIS ENTRY POINT IS USED BY IKJEGLSA, THE 2ND LOAD OF LIST, IF * 24200002 * AN ADDRESS LIST IS BEING PROCESSED AND--- * 24250002 * 1 THE NEXT ADDRESS IN THE LIST IS A REG ADDR. 24300002 * 2 THE NEXT ADDRESS IN THE LIST IS SYMBOLIC AND THE SYMBOLS' * 24350002 * TYPE ATTRIBUTE IS HEX AND HAS NOT BEEN OVER-RIDDEN * 24400002 * BY THE USER. 24450002 * 3 THE NEXT ADDRESS HAS NO ASSOCIATED ATTRIBUTES AND DEFAULTS 24500002 * TO HEXADECIMAL FORMAT. 24550002 * AFTER SETUP, CONTROL IS PASSED TO THE REPEAT ROUTINE. * 24600002 * * 24650002 *********************************************************************** 24700002 SPACE 24750002 IKJEGLSS DS 0H 24800002 L R8,LSTPDEPT(R1) PICK UP PTR TO CURRENT ADDR PDE 24850002 L R10,LSTWRKPT(R1) SET UP BASE REG FOR LSTWORK DSECT 24900002 NI TSTFLGS2,HEXFF-TSTXCTL TURN OFF XCTL IN PROGRESS SW 24950002 B LSTINT10 GO ISSUE STAE, THEN PROCESS NXT ADDR 25000002 SPACE 3 25050002 MORE DS 0H 25100002 L R6,OUTBUF LOAD PTR TO OUTPUT BUFFER 25150002 ST R6,DATAPR SET UP THE IO PARM LIST 25200002 BAL R7,LSTIO GO TO OUTPUT ROUTINE 25250002 SPACE 25300002 L R8,PDE2CHAI GET ADDR OF NEXT PDE FROM CHAIN PTR 25350002 MORE02 DS 0H 25400002 XC LSTRPT(RPTSIZE),LSTRPT CLEAR ADDR PORTION OF WORK AREA 25450002 IC R2,TYPESAVE GET TYPE CODE OR DEFAULT TYPE CODE 25500002 STC R2,A1TYPE SET FORMAT TYPE (EXCEPT FOR SYMBOLS) 25550002 B LSTMN04 GO BACK AND PROCESS NEXT ADDR 25600002 EJECT 25650002 *********************************************************************** 25700002 * * 25750002 * COMPLETION ROUTINE, TESTS FOR ADDITIONAL ADDRESSES TO LIST AND * 25800002 * SETS A 0 RETURN CODE. WHEN ALL ADDRESSES HAVE BEEN PROCESSED, * 25850002 * THE ROUTINE RETURNS TO THE CALLER. * 25900002 * * 25950002 *********************************************************************** 26000002 SPACE 26050002 LSTCC0 DS 0H 26100002 TM COMFLGS,OUTCORE WAS THE LAST LIST TRUNCATED 26150002 BZ LSTOK IF LAST LIST COMPLETE, BRANCH 26200002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 26210002 IKJEGSIO MSG,FIRST=M0022,SECOND=M0272,ID=LST20, ISSUE IO CALL*26220002 MF=(E,TSTIOPRM) TO SEND MESSAGE TO USER 26222002 CH R15,H16 TEST THE RTN CODE 26240002 BL LSTOK IF SUCCESSFUL CONTINUE 26250002 ST R15,LSTRETCD SAVE THE RETURN CODE FOR MAINLINE 26260002 B LSTMN90 GO BACK TO MAINLINE 26270002 LSTOK DS 0H 26300002 TM PDE2CHAI,HEXFF IS THERE ANOTHER ADDRESS PDE 26350002 BNO MORE IF YES, BRANCH 26400002 LSTMN90 DS 0H 26450002 NI TSTFLGS1,HEXFF-TSTPRINT-TSTFIRST-PCHLSTVL-RANGESW 26500002 ESTAE 0,OV REMOVE THE ESTAE 26520002 L R15,LSTRETCD PICK UP RETURN CODE 26550002 L R13,BACKPTR(R13) GET ADDR OF PREVIOUS SAVE AREA. 26600002 NI TSTFLGS4,HEXFF-TSTRERTN TURN OFF THE RETRY SW IF ON 26610002 RETURN (14,12),RC=(15) RETURN TO CALLER 26650002 SPACE 2 26700002 LSTCVTRC DS 0H 26750002 CH R15,H16 IS RC=16 26800002 BNE LSTCC0 OTHERWISE, GO CHECK FOR MORE ADDRS 26850002 LSTCC16 DS 0H 26900002 LA R15,SIXTEEN R15=16 26950002 ST R15,LSTRETCD RC=16 27000002 B LSTMN90 GO CLEAN UP AND RETURN 27050002 EJECT 27100002 * BRANCH TABLE ENTERED WHEN THE RETURN CODE FROM IKJPARS IS GREATER * 27150002 * THAN ZERO. * 27200002 SPACE 27250002 ORG *-4 REUSE SPACE FOR ZERO COND CODE 27300002 PARSRC DS 0H 27350002 ORG 27400002 B PRC04 RC = 4, UNABLE TO PROMPT 27450002 B LSTCC16 ATTN SCHEDULED, GO SET RC=16 27500002 B PRC12 INVALID PARM, SHOULD NOT OCCUR 27550002 B PRC16 INSUFFIENT STORAGE FOR PARSE 27600002 B LSTMN90 RC=20, TERMINATE IMMEDIATELY 27650002 SPACE 27700002 PRC04 OI TSTFLGS4,TSTFLUSH INITIALIZE STACK FLUSH FOR 27750002 * MAINLINE 27800002 B LSTMN90 RETURN TO MAINLINE 27850002 SPACE 27900002 PRC12 DS 0H 27950002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 28000002 IKJEGSIO MSG,FIRST=M0104,INST11=(NUM,I0009), ISSUE I/O CALL- *28010002 SECOND=M0277,ID=LST20,MF=(E,TSTIOPRM) ING MACRO 28012002 CH R15,H16 TEST THE RTN CODE 28030002 BL LSTMN90 IF SUCCESSFUL CONTINUE 28040002 ST R15,LSTRETCD SAVE THE RETURN CODE FOR MAINLINE 28050002 B LSTMN90 GO BACK TO MAINLINE 28060002 PRC16 DS 0H 28100002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 28150002 IKJEGSIO MSG,FIRST=M0103,ID=LST20,MF=(E,TSTIOPRM) ISSUE MSG 28184002 CH R15,H16 TEST THE RTN CODE 28190002 BL LSTMN90 IF SUCCESSFUL CONTINUE 28192002 ST R15,LSTRETCD SAVE THE RETURN CODE FOR MAINLINE 28194002 B LSTMN90 GO BACK TO MAINLINE 28196002 EJECT 28800002 *********************************************************************** 28850002 * * 28900002 * SYMBOLIC ADDRESS SETUP ROUTINE. THIS ROUTINE SETS UP THE A1 FIELD * 28950002 * AND FILLS IN ANY ATTRIBUTES NOT OVER-RIDDEN BY THE USER. * 29000002 * AT ENTRY, REGISTER 15 POINTS TO THE SYMINFO BLOCK FOR ADDRESS 1 * 29050002 *********************************************************************** 29100002 SYM1 DS 0H 29150002 TM LSTFLGS,TYPEFLG WAS A TYPE GIVEN BY THE USER 29200002 BO HAVETYPE IF GIVEN, IGNORE ATTRS OF SYMBOL 29250002 SR R2,R2 CLEAR A REG, 29300002 IC R2,SITYPE(R15) PICK UP THE TYPE, 29350002 STC R2,A1TYPE AND MAKE IT THE TYPE FOR A1 29400002 HAVETYPE DS 0H 29450002 TM LSTFLGS,LNTHFLG WAS LNTH ATTR GIVEN BY USER 29500002 BO SYM1L IF GIVEN, IGNORE ATTRS OF SYMBOL 29550002 LH R2,SILEN(R15) PICK UP SYMS LENGTH ATTR 29600002 STH R2,A1L ESTABLISH SYMS LNTH FOR THIS DATA 29650002 SYM1L DS 0H 29700002 TM LSTFLGS,MULTIFLG WAS MULTIPLICITY ATTR GIVEN BY USER 29750002 BO SYM1M IF GIVEN, IGNORE ATTRS OF SYMBOL 29800002 LH R2,SIMUL(R15) PICK UP SYMS MULTIPLICITY FACTOR 29850002 STH R2,A1M EST. SYMS MULTI FOR THIS DATA 29900002 SYM1M DS 0H 29950002 OI A1FLG,A1SYM SET FLAG TO INDICATE ADDR SYMBOLIC 30000002 L R15,SIDATAPT(R15) GET PTR TO INPUT FROM SYMINFO 30050002 B LSTMN07 RETURN TO MAINLINE SETUP ROUTINE 30100002 TITLE 'IKJEGLST, ''LIST'', HEX FORMATTING ROUTINE' 30150002 *********************************************************************** 30200002 * * 30250002 * LIST AREAS OF CORE IN HEX FORMAT. * 30300002 * FIRST ANALYZE THE ADDRESS(ES) AS TO TYPE AND NUMBER. * 30350002 * * 30400002 *********************************************************************** 30450002 SPACE 30500002 LSTHEX DS 0H 30550002 MVI VPDET,HEXCODE SET TYPE CODE FIELD TO HEX 30600002 LH R5,A1L GET USER SPECIFIED LENGTH 30650002 SR R0,R0 CLEAR FOR COMPARE 30700002 CH R0,A1M WAS MULTIPLICITY GIVEN 30750002 BNZ LSTX04 IF YES, BRANCH AROUND DEFAULT 30800002 MVI A1M+H2ND,ONE DEFAULT MULTIPLICITY TO ONE 30850002 LSTX04 DS 0H 30900002 TM COMFLGS,TWOADDRS HOW MANY ADDRESSES WERE GIVEN 30950002 BO LSTX24 IF TWO, BRANCH 31000002 OI COMFLGS,ARTIMSW INDICATE CONTROL IS ARTIFICIAL 31050002 CR R0,R5 WAS A LENGTH GIVEN OR IMPLIED 31100002 BNE LSTX06 IF YES, BRANCH 31150002 LA R5,HEXDLEN SET DEFAULT LNTH FOR HEX 31200002 STH R5,A1L SAVE DEFAULTED LENGTH 31250002 LSTX06 DS 0H 31300002 B LSTX18 GO TO LENGTH SPECIFIED ROUTINE 31350002 LSTX08 DS 0H 31400002 LA R4,ONE SET CONTROL TO 1 GROUP PER LINE 31450002 STH R4,ARTIFMUL SET ARTIFICIAL MULTIPLICITY 31500002 SPACE 31550002 *********************************************************************** 31600002 * * 31650002 * DETERMINE WHETHER ADDRESS IS RELATIVE, SYMBOLIC, OR ABSOLUTE. * 31700002 * * 31750002 *********************************************************************** 31800002 LSTX10 DS 0H 31850002 LA R3,FOUR SET A CONSTANT OF 4 31900002 CR R3,R4 COMPARE IT TO NUMBER OF GRPS TO LIST 31950002 BNH LSTX12 IF 4 OR MORE GROUPS, BRANCH 32000002 L R15,ENDOBUF GET END OF BUFFER ADDRESS 32050002 OI COMFLGS,DATASIZE IF LESS THAN 4 GROUPS, SET SW 32100002 ST R15,ENDOGRP SET END OF GROUP TO END OF BUF 32150002 LSTX12 DS 0H 32200002 STH R5,VPDEL SET LENGTH FIELD OF VALUE PDE 32250002 STH R5,A1L RECORD LENGTH FINALLY CHOSEN 32300002 TM A1FLG,A1SYM TEST ADDR TYPE 32350002 BZ LSTX14 IF ADDR IS ABSOLUTE, BRANCH 32400002 BO LSTX40 IF ONES, ADDR IS SYMBOLIC 32450002 SPACE 32500002 * IF ADDRESS TYPE IS RELATIVE, FALL THROUGH AND SET UP FOR RELATIVES. 32550002 SPACE 32600002 MVC APDE(APL),IKJPARMA MOVE ORIGINAL PDE TO WORK AREA 32650002 LSTX14 DS 0H 32700002 LA R2,A1 GET ADDR OF INPUT DATA PTR 32750002 ST R2,APDE+(PDEADRPT-IKJPARMA) STORE IT IN THE ADDR PDE 32800002 B LSTX50 GO TO MAIN ROUTINE FOR HEX. 32850002 SPACE 32900002 *********************************************************************** 32950002 * * 33000002 * ROUTINE WHEN LNTH WAS SPECIFIED, OR AVAILABLE THRU A SYMBOLIC ADDR.* 33050002 * * 33100002 *********************************************************************** 33150002 LSTX18 DS 0H 33200002 BAL R14,LSTLMTCK GO TEST FOR EXTENSION BEYOND CORE 33250002 BAL R14,ADDRCHK GO CHECK VALIDITY 2ND ADDR 33260002 LTR R15,R15 WAS REMAINING MULTIPLICITY ZERO 33300002 BZ LSTX19 IF MULTIPLICITY NON-ZERO, BRANCH 33350002 MVI A1M+H2ND,ONE SET MULTIPLICITY TO ONE 33400002 LH R5,LASTLEN GET REMAINING LENGTH 33450002 XC LASTLEN,LASTLEN CLEAR LASTLEN TO PREVENT RE-USE 33500002 STH R5,A1L SET REQUEST LENGTH TO LAST LENGTH 33550002 LSTX19 DS 0H 33600002 LA R2,FOUR SET UP TEST VALUE 33650002 CR R5,R2 IS LENGTH GREATER THAN 4 33700002 BNH LSTX08 IF NOT, GO USE ACTUAL LENGTH 33750002 LA R1,FWBDY SET UP TO TEST IF LNTH/4 HAS REMAIN 33800002 LR R4,R5 GET A WORKING COPY OF THE LENGTH 33850002 NR R1,R4 PLACE ANY REMAINDER IN R1 33900002 SRL R4,TWO DIVIDE LENGTH BY 4 33950002 STH R4,ARTIFMUL SAVE ARTIFICIAL MULTIPLICITY 34000002 LSTX20 DS 0H 34050002 LR R5,R2 SET UP LENGTH REGISTER 34100002 STH R1,REMAIN SAVE REMAINDER 34150002 STH R1,REMAIN2 SAVE A COPY OF THE REMAINDER 34200002 B LSTX10 RETURN TO MAINLINE 34250002 SPACE 34300002 *********************************************************************** 34350002 * * 34400002 * ROUTINE TO SET UP FOR TWO ADDRESSES. * 34450002 * * 34500002 *********************************************************************** 34550002 LSTX24 DS 0H 34600002 LA R2,HEXDLEN SET UP DEFAULT LENGTH FOR HEX 34650002 L R4,A2 R4=ADDR OF END OF INPUT DATA FLD. 34700002 S R4,A1 CALCULATE RANGE IN BYTES. 34750002 LA R4,ONE(R4) INCLUDE BYTE AT 2ND ADDRESS 34800002 LA R1,FWBDY SET UP TO DETERMINE REMAINDER OF L/4 34850002 NR R1,R4 PLACE ANY REMAINDER IN R1 34900002 SRA R4,TWO DIVIDE LENGTH BY 4 34950002 BNZ LSTX20 IF QUOTIENT NON-ZERO, BRANCH 35000002 LR R5,R1 SET LENGTH TO REMAINDER 35050002 B LSTX08 RETURN TO MAINLINE 35100002 SPACE 35150002 * ROUTINE TO SET UP FOR SYMBOLIC ADDRESSES 35200002 SPACE 35250002 LSTX40 DS 0H 35300002 BAL R7,LSTSYM GO MOVE SYMBOLIC ADDR TO BUF 35350002 CH R4,HONE HOW MANY FIELDS ARE TO BE LISTED 35400002 BH LSTX42 IF MORE THAN 1 + A REMAINDER, BRANCH 35450002 CH R4,A1M ARE THERE MORE FIELDS TO LIST 35500002 BL LSTX42 IF MORE, BRANCH 35550002 LH R15,A1L GET LENGTH OF PRIMARY FIELD 35600002 AH R15,REMAIN ADD ANY REMAINDER 35650002 AR R15,R15 DOUBLE LENGTH TO GET OUTPUT LENGTH 35700002 LA R15,SP4(R6,R15) CALCULATE BUF PTR AT END OF DATA 35750002 C R15,ENDOBUF WILL DATA FIT 35800002 BNH LSTX57 IF DATA WILL FIT, BRANCH 35850002 SPACE 35900002 * IF DATA WILL NOT FIT, FALL THROUGH AND PUT OUT ADDRESS SEPARATELY. 35950002 SPACE 36000002 LSTX42 DS 0H 36050002 BAL R7,LSTIO GO OUTPUT ADDR ONLY 36100002 B LSTX54 GO OUTPUT DATA 36150002 EJECT 36200002 *********************************************************************** 36250002 * PROCESS LOOP FOR HEX FORMATTING ROUTINE 36300002 * * 36350002 * DURING THE PROCESSING CYCLE, THE REGISTER USAGE IS AS FOLLOWS* 36400002 * R0 CONTAINS A NEG (-) NUMBER TO SHOW CONVERT TO PRINT * 36450002 * R5 CONTAINS THE ADDR OF THE OUTPUT BUFFER. 36500002 * R6 CONTAINS THE ADDR ON THE NEXT AVAILABLE BYTE IN BUF * 36550002 * * 36600002 * OUTPUT IS PLACED IN THE BUFFER IN ONE OF THE FOLLOWING * 36650002 * FORMATS, DEPENDING ON LINE SIZE. (AN X REPRESENTS A GROUP OF * 36700002 * 2, 4, 6, OR 8 CHARACTERS OF DATA AND ADDR IS RELATIVE OR * 36750002 * ABSOLUTE. SYMBOL INDICATES SYMBOLIC ADDR.) * 36800002 * 1. ADDR X X X X X X X X * 36850002 * 2. ADDR X X X X * 36900002 * X X X X * 36950002 * 3. ADDR * 37000002 * X X X X * 37050002 * X X X X * 37100002 * 4. SYMBOL X IF ADDR SYMBOLIC AND ONLY 1 GROUP * 37150002 * 5. SYMBOL * 37200002 * ADDR X X X X X X X X (SEE 1, 2, AND 3 ABOVE) * 37250002 * 6. ADDR X * 37300002 * ADDR X * 37350002 * ETC. (THIS FORMAT RESULTS FROM USING MULTIPLICITY) * 37400002 *********************************************************************** 37450002 LSTX50 DS 0H 37500002 L R6,OUTBUF GET PTR TO OUTPUT BUFFER 37550002 MVI DATAOFF(R6),BLANK MOVE BLANK TO START OF DATA @YM06177 37560002 MVC DATAOFF+ONE(LSTBUFL,R6),DATAOFF(R6) BLANK OUT @YM06177 37570002 LA R6,DATAOFF(R6) INCRE BUF PTR PAST LL00 FIELD 37600002 L R3,CONAREA R3=PTR TO CONVERT OUTPUT AREA 37650002 LSTX52 DS 0H 37700002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 37750002 SPACE 37800002 *********************************************************************** 37850002 * * 37900002 * IF ADDRESS WAS SYMBOLIC AND THERE ARE 2 OR MORE FIELDS THE ROUTINE * 37950002 * IS ENTERED HERE. AFTER THE SYMBOL IS PRINTED ON A SEPARATE LINE. * 38000002 * * 38050002 *********************************************************************** 38100002 LSTX54 DS 0H 38150002 L R15,TSTCONVT PTR TO CONVERT ROUTINE 38200002 LA R1,APDE PTR TO ADDR PDE, ADDR TO CONVERT 38250002 LCR R1,R1 INDICATE ADDR CONVERSION. 38300002 SR R0,R0 SET R0 NEGATIVE TO 38350002 BCTR R0,NULL INDICATE CONVERT TO PRINTABLE 38400002 BALR R14,R15 GO TO CONVERT ROUTINE 38450002 LTR R15,R15 TEST CONVERT RETURN CODE. 38500002 BNZ LSTCVTRC IF NON-ZERO, BRANCH 38550002 MVC ZERO(ADDRLEN,R6),CONDATA(R3) MOVE ADDR TO BUF 38600002 LA R6,ADDRLEN(R6) INCRE BUF PTR PAST ADDR 38650002 TM COMFLGS,DATASIZE ARE THERE 4 FIELDS TO LIST 38700002 BO LSTX57 IF LESS THAN 4, BRANCH 38750002 LR R2,R5 GET LENGTH OF AN OUTPUT FIELD 38800002 SLL R2,TWO+ONE LNTH*4*2 4=NO. OF FLDS, 2=PRINTSIZE 38850002 LA R2,SP5(R6,R2) CALCULATE BUF PTR AFTER 4 FIELDS 38900002 C R2,ENDOBUF WILL 4 GROUPS + ADDR FIT IN BUF 38950002 BNH LSTX56 IF GRPS+ADDR WILL FIT, BRANCH 39000002 OI COMFLGS,NOINDENT SET SW TO PREVENT INDENTATION. 39050002 BAL R7,LSTIO GO OUTPUT ADDR ONLY 39100002 S R2,AFLEN REDUCE OUTPUT LINE LNTH BY ADDR+2SP 39150002 LSTX55 DS 0H 39200002 SR R0,R0 SET R0 TO A (-1) TO SHOW 39250002 BCTR R0,NULL CONVERTION TO PRINTABLE. 39300002 SPACE 39350002 *********************************************************************** 39400002 * * 39450002 * DATA CONVERT LOOP * 39500002 * IF THE NEXT GROUPS OF DATA WILL FIT INTO THE BUFFER OR IF THE ADDR * 39550002 * WAS SYMBOLIC AND THERE IS ONLY ONE GROUP, THIS ROUTINE IS ENTERED. * 39600002 * * 39650002 *********************************************************************** 39700002 LSTX56 DS 0H 39750002 ST R2,ENDOGRP SAVE STOP ADDR FOR 4 GROUPS 39800002 LSTX57 DS 0H 39850002 LA R1,VPDE SET UP FIELDS TO CONVERT A VALUE 39900002 LA R6,SP1(R6) INCRE BUF PTR AN EXTRA SPACE 39950002 LSTX59 DS 0H 40000002 LA R6,SP1(R6) INCRE BUF PTR FOR SPACE BETWN GRPS 40050002 SPACE 40100002 L R15,TSTCONVT GET ADDR OF CONVERT ROUTINE 40150002 BALR R14,R15 GO TO CONVERT ROUTINE 40200002 LTR R15,R15 TEST RETURN CODE 40250002 BNZ LSTCVTRC IF RC=NON-ZERO, BRANCH 40300002 IC R15,CONLFLD(R3) PICK UP LENGTH OF CONVERTED DATA 40350002 BCTR R15,NULL REDUCE LENGTH BY 1 FOR MVC INSTR 40400002 EX R15,DATAMOVE MOVE CONVERTED DATA TO BUF 40450002 LA R6,ONE(R15,R6) INCRE BUF PTR PAST A DATA FIELD 40500002 L R15,VPDEPT R15=ADDR OF LAST INPUT DATA 40550002 AH R15,VPDEL UPDATE DATA PTR BY LNTH OF LAST FLD 40600002 ST R15,VPDEPT SET UP VALUE PDE FOR NEXT DATA 40650002 BCT R4,LSTX62 HAS CONTROL REACHED 0, IF NOT, BRNCH 40700002 CH R4,REMAIN IS REMAINDER 0, (NOTE- R4=0) 40750002 BE LSTX66 IF ZERO, BRANCH TO TEST FOR COMPL 40800002 LH R2,REMAIN PICK UP REMAINDE LENGTH 40850002 STH R2,VPDEL SET VALUE LENGTH AND 40900002 STH R4,REMAIN SET REMAINDER TO 0 (NOTE-- R4=0) 40950002 LA R4,ONE SET A CONTROL VALUE OF 1 41000002 LSTX62 DS 0H 41050002 C R6,ENDOGRP TEST FOR END OF A GROUP OF 4 FIELDS 41100002 BL LSTX59 IF NOT, GO PUT NEXT FIELD IN BUF 41150002 TM COMFLGS,SECOND IS THIS THE 2ND GROUP OF 4 41200002 BO LSTX76 IF 2ND GROUP, BRANCH 41250002 SPACE 2 41300002 *********************************************************************** 41350002 * AT THIS POINT, ONE GROUP OF 4 IS IN THE BUF AND A TEST MUST BE MADE* 41400002 * IF A SECOND GROUP OF 4 WILL FIT. IF IT WILL FIT, AN EXTRA SPACE IS * 41450002 * INSERTED IN THE BUF TO SEPARATE THE GROUPS OF 4. * 41500002 *********************************************************************** 41550002 SPACE 41600002 LR R2,R5 GET LENGTH OF AN OUTPUT FIELD 41650002 SLL R2,TWO+ONE L*4*2, LNTH TIMES FLDS/GRP TIMES 2. 41700002 LA R2,SP5(R6,R2) INCRE BUF PTR BY 2SP+3SP+(4*DATALEN) 41750002 OI COMFLGS,SECOND SET FLAG TO SHOW SECOND GRP 41800002 C R2,ENDOBUF TEST WHETHER RESULT IS PAST BUF END 41850002 BNH LSTX56 IF DATA WILL FIT, BRANCH 41900002 SPACE 41950002 LSTX64 DS 0H 42000002 BAL R7,LSTIO GO OUTPUT DATA IN BUF 42050002 LR R2,R5 GET LENGTH OF AN OUTPUT FIELD 42100002 SLL R2,TWO+ONE L*4*2, LNTH TIMES FLDS/GRP TIMES 2 42150002 LA R2,SP5(R6,R2) CALCULATE BUF PTR AFTER 4 MORE FLDS 42200002 TM COMFLGS,NOINDENT TEST IF DATA TO BE INDENTED 42250002 BO LSTX55 IF NO INDENTATION REQUIRED, BRANCH 42300002 LA R6,ADDRLEN(R6) INCRE BUF PTR FOR INDENTATION 42350002 LA R2,ADDRLEN(R2) INCRE STOP ADDR BY INDENTATION 42400002 B LSTX55 GO BACK TO DATA PROCESS LOOP 42450002 SPACE 42500002 LSTX66 DS 0H 42550002 TM COMFLGS,ARTIMSW WAS CONTROL TRU MULTIPLICITY 42600002 BNO LSTX68 IF TRU, BRANCH 42650002 LH R2,A1M PICK UP TRU MULTIPLICITY 42700002 BCT R2,LSTX72 DECRE IT AND TEST FOR COMPLETION 42750002 LSTX68 DS 0H 42800002 TM COMFLGS,OUTCORE WAS REQUEST TRUNCATED BY TOP ADDR 42850002 BO LSTX84 IF TRUNCATED, BRANCH 42900002 LSTX70 DS 0H 42950002 BAL R7,LSTIO GO OUTPUT LAST BUF 43000002 B LSTCC0 GO BACK TO MAINLINE. 43050002 LSTX72 DS 0H 43100002 STH R2,A1M SAVE REMAINING TRU MULTIPLICITY 43150002 LH R2,REMAIN2 PICK UP SAVED REMAINDER 43200002 STH R2,REMAIN RESTORE IT TO REMAINDER FIELD 43250002 LH R4,ARTIFMUL RESET CONTROL TO ARTIFICIAL MULTIP. 43300002 STH R5,VPDEL RESET INPUT DATA LENGTH 43350002 LSTX76 DS 0H 43400002 BAL R7,LSTIO GO OUTPUT CURRENT BUF LOAD 43450002 NI COMFLGS,HEXFF-SECOND TURN OFF SECOND GRP FLAG 43500002 B LSTX52 GO SET UP ANOTHER LINE. 43550002 SPACE 43600002 LSTX84 DS 0H 43650002 LH R4,LASTLEN PICK UP POSSIBLE SHORT FIELD LENGTH 43700002 LTR R4,R4 IS THERE A SHORT FIELD TO LIST 43750002 BZ LSTX70 IF NOT, OR IF DONE, BRANCH 43800002 LA R5,FOUR SET UP GROUP LENGTH 43850002 CR R4,R5 IS THERE MORE THAN ONE GROUP 43900002 BNH LSTX90 IF NOT, BRANCH 43950002 LA R15,FWBDY PREPARE TO ISOLATE ODD NO. OF BYTES 44000002 NR R15,R4 ISOLATE BYTES NOT A MULTIPLE OF 4 44050002 SRL R4,TWO DIVIDE NO. OF BYTES BY 4 44100002 LSTX86 DS 0H 44150002 STH R15,REMAIN2 SAVE ODD BYTES 44200002 STH R4,ARTIFMUL SAVE QUOTIENT AS ARTIFICIAL MULTI 44250002 LA R2,ONE SET TRUE MULTIPLICITY TO ONE 44300002 XC LASTLEN,LASTLEN MAKE LAST LENGTH ZERO TO STOP LOOP 44350002 B LSTX72 GO FINISH LISTING CORE 44400002 SPACE 44450002 LSTX90 DS 0H 44500002 LR R5,R4 SET FOR LENGTH EQUALS REMAINDER 44550002 SR R15,R15 SET FOR REMAINDER OF ZERO 44600002 LA R4,ONE SET ARTIFICIAL MULTIPLICITY FOR 1 44650002 B LSTX86 GO FINISH SETUP 44700002 TITLE 'IKJEGLST, ''LIST'', REGISTER LISTING ROUTINE' 44750002 *********************************************************************** 44800002 * * 44850002 * LIST REGISTER ROUTINE, LIST THE GENERAL OR FLOATING POINT REGISTERS* 44900002 * IN HEXADECIMAL FORMAT. WILL LIST EITHER A SINGLE REGISTER OR A * 44950002 * RANGE OF REGISTERS. 45000002 * * 45050002 *********************************************************************** 45100002 SPACE 45150002 LSTREG DS 0H 45200002 L R2,A1 GET REG NUMBER OF FIRST ADDRESS 45250002 L R6,OUTBUF ADDR OF OUTPUT BUF 45300002 LA R6,DATAOFF(R6) INCREMENT BUF PTR PAST LL00 FIELD 45350002 MVI ZERO(R6),BLANK MOVE BLANK TO START OF BUF@ZA07140 45360003 MVC ONE(LSTBUFL-DATAOFF,R6),ZERO(R6) BLANK OUT @ZA07140 45370003 TM PDEFLG4,GENR IS ADDR TYPE GENERAL REGISTER 45400002 BNO LSTREG30 IF NOT, BRANCH TO FLOATING PT 45450002 SPACE 45500002 * SETUP ROUTINE FOR LISTING CONTENTS OF GENERAL REGISTERS. 45550002 SPACE 45600002 CLI A1TYPE,FCODE IS REQUESTED FORMAT FIXED PT BINARY 45650002 LA R4,GRFLENO SET UP OUTPUT LNTH FOR FIXED PT 45700002 BE LSTREG08 IF FIXED, SETUP IS COMPLETE, BRANCH 45750002 SPACE 45800002 * IF FORMAT IS NOT F TYPE, DEFAULT TYPE TO HEX 45850002 SPACE 45900002 MVI A1TYPE,HEXCODE SET TYPE FIELD 45950002 LA R4,GRXLENO SET UP OUTPUT LNTH FOR HEX DATA 46000002 SPACE 46050002 * NEXT, SET UP A PTR TO THE GENERAL REGISTER SAVE AREA OF THE * 46100002 * SVRB OF THE BREAKPOINT SVC ON THE TCB OF THE INTERRUPTED PROB PROG * 46150002 SPACE 46200002 LSTREG08 DS 0H 46250002 L R5,ECBPP GET SVC97 SVRB ADDR @ZA07138 46300003 * @ZA09259 46330003 LA R5,RBGRSAVE(R5) SET UP ADDRESS OF REG SAVE AREA 46500002 SPACE 46550002 MVI REMAIN+ONE,GRINCR SET REG NO. INCREMENT FOR GEN REGS 46600002 LA R3,FOUR SET INPUT DATA LENGTH (AND INCRE) 46650002 LA R1,GRMAX SET MAX REG NUMBER FOR GEN REGS 46700002 STH R3,VPDEL SET INPUT DATA LENGTH 46750002 LA R15,RADDRLEN+SP2(R4) LNTH OF 1 OUTPUT FIELD TIMES 46800002 SLL R15,TWO FOUR=REQUIRED LINE LNTH. 46850002 LA R15,THREE*SP2(R15,R6) INCRE LNTH FOR INTER-DATA-GRP SP'S 46900002 MVI REMAIN2+ONE,SP2 SET UP SPACING FACTOR 46950002 EJECT 47000002 *********************************************************************** 47050002 * * 47100002 * COMMON PART OF SETUP ROUTINE, USED BY BOTH FLOATING PT AND GENERAL * 47150002 * REGISTER ROUTINES. AT ENTRY, REGISTERS MUST BE AS FOLLOWS * 47200002 * 1 MAXIMUM REGISTER NUMBER FOR THE REG TYPE BEING LISTED * 47250002 * 2 REGISTER NUMBER OF THE FIRST REGISTER TO BE LISTED * 47300002 * 3 INPUT DATA INCREMENT (FOR INCREMENTING CORE ADDRESSES * 47350002 * OF THE RB OR TCB REG SAVE AREA. * 47400002 * 4 OUTPUT DATA LENGTH OR MAX OUTPUT DATA LENGTH. * 47450002 * 5 ADDRESS OF THE APPROPIATE REGISTER SAVE AREA * 47500002 * 6 PTR TO THE FIRST DATA BYTE OF THE OUTPUT BUFFER * 47550002 * REMAIN CONTAINS APPROPIATE INCREMENT FOR REG NUMBERS * 47600002 * REMAIN2 CONTAINS SPACING FACTOR USED FOR GROUP SEPARATION * 47650002 * * 47700002 *********************************************************************** 47750002 LSTREG20 DS 0H 47800002 C R15,ENDOBUF IS CUR LINE LNTH ENOUGH FOR 4 GRPS 47850002 BNH LSTREG22 IF LINE LNTH IS OK, BRANCH 47900002 SPACE 47950002 *********************************************************************** 48000002 * IF LINE LENGTH TOO SMALL FOR 4 GENERAL REGS OR 2 FLOATING PT REG, * 48050002 * USE THE NORMAL END OF BUFFER ADDRESS AS A STOPPER AND PUT AS MANY * 48100002 * GROUPS ON ONE ONE AS WILL FIT. * 48150002 *********************************************************************** 48200002 SPACE 48250002 L R15,ENDOBUF GET END OF BUFFER ADDRESS 48300002 SPACE 48350002 LSTREG22 DS 0H 48400002 ST R15,ENDOGRP SET END OF LINE (STOPPER) FOR LSTREG 48450002 STH R3,A1L SET INPUT DATA INCREMENT 48500002 LR R3,R2 GET FIRST REG NUMBER TO BE LISTED 48550002 ST R5,REGSTART SAVE START ADDRESS OF REG SAVE AREA 48600002 SLL R3,TWO MULTIPLY REG NUMBER BY 4 FOR OFFSET 48650002 AR R5,R3 ADD OFFSET TO REG SAVE START ADDR 48700002 C R2,A2 COMPARE 1ST ADDR TO LAST (TEST WRAP) 48750002 BNH LSTREG24 IF REGS DO NOT WRAP, BRANCH 48800002 ST R1,A2 IF REGS WRAP, SET 2ND ADDR TO MAX 48850002 OI COMFLGS,WRAPSW REG NUMBER AND TURN ON WRAP SW. 48900002 LSTREG24 DS 0H 48950002 IC R15,A1TYPE GET FORMAT TYPE FOR THIS REQUEST 49000002 MVC APDE(APL),PDELDNAM MOVE THE ADDRESS PDE TO WORKING CORE 49050002 STC R15,VPDET SET VALUE PDE TO PROPER FORMAT TYPE 49100002 LA R1,A1 GET PTR TO CURRENT REG ADDRESS AND 49150002 ST R1,APDE+(PDEADRPT-IKJPARMA) SET ADDR PDE PTR TO IT. 49200002 B LSTREG50 GO PROCESS LIST REG REQUEST 49250002 EJECT 49300002 *********************************************************************** 49350002 * * 49400002 * SETUP ROUTINE FOR LISTING THE CONTENTS OF THE FLOATING POINT REGS. 49450002 * * 49500002 *********************************************************************** 49550002 LSTREG30 DS 0H 49600002 TM PDEFLG4,SFPR TEST REG TYPE FOR RE OR RD 49650002 BO LSTREG40 IF RE, BRANCH 49700002 TM LSTFLGS,TYPEFLG WAS TYPE SPECIFIED BY THE USER 49750002 BZ LSTREG32 IF NOT, BRANCH, AND DEFAULT TO 'D' 49800002 LA R4,RDXLENO SET UP FOR POSSIBLE HEX OUTPUT 49850002 CLI A1TYPE,HEXCODE WAS THE SPECIFIED TYPE HEX 49900002 BE LSTREG34 IF HEX, BRANCH 49950002 LSTREG32 DS 0H 50000002 LA R4,RDDLENO SET UP OUTPUT LENGTH FOR 'D' FORMAT 50050002 MVI A1TYPE,DCODE SET TYPE TO 'D' 50100002 LSTREG34 DS 0H 50150002 MVI VPDEL+ONE,RDINLEN SET INPUT DATA LENGTH FOR 'D' TYPE 50200002 B LSTREG46 GO TO COMMON FLT PT SETUP ROUTINE 50250002 SPACE 50300002 LSTREG40 DS 0H 50350002 TM LSTFLGS,TYPEFLG WAS TYPE SPECIFIED BY THE USER 50400002 BZ LSTREG42 IF NOT, BRANCH, AND DEFAULT TO 'E' 50450002 LA R4,REXLENO SET UP FOR POSSIBLE HEX OUTPUT 50500002 CLI A1TYPE,HEXCODE WAS THE SPECIFIED TYPE HEX 50550002 BE LSTREG44 IF HEX, BRANCH 50600002 LSTREG42 DS 0H 50650002 LA R4,REELENO SETUP OUTPUT LNTH FOR 'E' FORMAT 50700002 MVI A1TYPE,ECODE SET TYPE TO 'E' 50750002 LSTREG44 DS 0H 50800002 MVI VPDEL+ONE,REINLEN SET INPUT DATA LENGTH FOR 'E' TYPE 50850002 SPACE 50900002 *********************************************************************** 50950002 * COMMON SET UP FOR FLOATING POINT REGS. * 51000002 * SET REGISTER NUMBER INCREMENT 51050002 * SET CORE ADDRESS INCREMENT 51100002 * GET REGISTER SAVE AREA ADDRESS FOR FLOATING POINT REGISTERS 51150002 *********************************************************************** 51200002 LSTREG46 DS 0H 51250002 MVI REMAIN+ONE,FPRINCR SET REG NUMBER INCREMENT 51300002 LA R3,RDINLEN SET INPUT DATA ADDR INCREMENT 51350002 LA R1,FPRMAX MAX REG NUMBER 51400002 SPACE 51450002 L R5,PPTCB GET PTR TO TCB FOR BREAKPOINTED TASK 51500002 LA R15,L'TCBFRS LNTH OF TCB FLOATING PT REG SAVE 51550002 SR R5,R15 BACK UP TCB PTR TO TCB PREFIX 51600002 USING TCBFIX,R5 ADDRESSABILITY FOR TCB PREFIX 51650002 LA R5,TCBFRS GET PTR TO FLOATING PT REG SAVE 51700002 DROP R5 51750002 LA R15,RADDRLEN+SP2(R4) CALCULATE LENGTH OF OUTPUT 51800002 AR R15,R15 DOUBLE IT FOR LENTH OF TWO FIELDS 51850002 LA R15,SP4(R15,R6) CALCULATE SPACE FOR 2 REGS IN BUF 51900002 MVI REMAIN2+ONE,SP4 SET SPACING FACTOR FOR FLT PT REGS 51950002 B LSTREG20 RETURN TO LIST REG MAINLINE 52000002 EJECT 52050002 *********************************************************************** 52100002 * * 52150002 * LIST REGISTER MAINPROCESS ROUTINE, AT ENTRY, THE FOLLOWING REGS * 52200002 * ARE INITIALIZED * 52250002 * 2 CURRENT REG NUMBER * 52300002 * 4 LENGTH OF AN OUTPUT DATA FIELD * 52350002 * 5 PTR TO REG SAVE AREA FOR CURRENT REGISTER * 52400002 * 6 CURRENT BUFFER PTR * 52450002 * OTHER REGISTERS WITH CONSTANT USES ARE, * 52500002 * 3 PTR TO CONVERT OUTPUT AREA * 52550002 * * 52600002 *********************************************************************** 52650002 LSTREG50 DS 0H 52700002 L R3,CONAREA SET UP A PTR TO CONAREA 52750002 LSTREG54 DS 0H 52800002 SR R0,R0 CLEAR REG 0 TO 0 THEN MAKE IT NEG 52850002 BCTR R0,NULL TO INDICATE CONVERT TO PRINTABLE 52900002 LSTREG56 DS 0H 52950002 LA R1,APDE R1=ADDR OF ADDRESS PDE 53000002 L R15,TSTCONVT R15=ADDR OF IKJEGCVT 53050002 LCR R1,R1 R1 NEG INDICATES ADDR CONVERSION 53100002 BALR R14,R15 GO CONVERT ADDR 53150002 LTR R15,R15 TEST RETURN CODE 53200002 BNZ LSTCVTRC IF NON-ZERO, BRANCH 53250002 IC R15,CONLFLD(R3) PICK UP LENGTH OF ADDRESS FIELD 53300002 BCTR R15,NULL DECREMENT LENGTH FOR AN MVC INSTR 53350002 EX R15,DATAMOVE MOVE ADDRESS TO BUFFER 53400002 LA R6,ONE(R15,R6) INCREMENT BUF PTR PAST DATA 53450002 ST R5,VPDEPT SET VALUE PDE TO ADDR OF REG CONTENT 53500002 L R15,TSTCONVT R15=ADDR OF CONVERT ROUTINE 53550002 LA R1,VPDE R1=ADDR OF VALUE PDE 53600002 BALR R14,R15 GO CONVERT REG CONTENTS 53650002 LTR R15,R15 TEST RETURN CODE 53700002 BNZ LSTCVTRC IF NON-ZERO, BRANCH 53750002 IC R15,CONLFLD(R3) PICK UP LENGTH OF CONVERTED DATA 53800002 BCTR R15,NULL DECREMENT BY 1 FOR AN MVC INSTR 53850002 EX R15,REGMOVE MOVE CONVERTED DATA TO BUFFER 53900002 LA R6,SP2(R4,R6) INCREMENT BUF PTR PAST DATA 53950002 C R2,A2 IS ADDR JUST PROCESSED END OF RANGE 54000002 BNL LSTREG70 IF YES, BRANCH, AND TEST FOR WRAP 54050002 AH R2,REMAIN INCREMENT REG NUMBER 54100002 AH R5,A1L INCREMENT INPUT DATA PTR 54150002 LSTREG60 DS 0H 54200002 ST R2,A1 STORE ADDR OF NEXT REG TO LIST 54250002 LA R15,SP2+RADDRLEN(R4,R6) CALCULATE PTR AFTER NXT FLD 54300002 AH R15,REMAIN2 ADD APPROPIATE SPACING FACTOR 54350002 C R15,ENDOGRP WILL ANOTHER ADDR + DATA FIT IN BUF 54400002 BH LSTREG62 IF NOT, BRANCH 54450002 AH R6,REMAIN2 INCRE BUF PTR BY INTER-GROUP SPACE 54500002 B LSTREG56 GO PROCESS NEXT REG 54550002 SPACE 54600002 LSTREG62 DS 0H 54650002 BAL R7,LSTIO ELSE, GO OUTPUT BUFFER 54700002 B LSTREG54 GO LIST MORE REGS 54750002 LSTREG70 DS 0H 54800002 TM COMFLGS,WRAPSW ELSE TEST FOR WRAP 54850002 BNO LSTREG80 IF NOT, LISTING IS DONE, BRANCH 54900002 L R5,REGSTART ELSE GET REG SAVE START ADDR 54950002 L R15,PDE2USER GET 2ND REG NUMBER GIVEN BY USER 55000002 SR R2,R2 SET UP ADDR FOR REG 0 55050002 ST R15,A2 SET ADDR2 TO LAST REG ADDR 55100002 NI COMFLGS,HEXFF-WRAPSW TURN OFF WRAP SW 55150002 B LSTREG60 GO PROCESS REMAIN REGS 55200002 LSTREG80 DS 0H 55250002 BAL R7,LSTIO GO OUTPUT LAST DATA 55300002 B LSTCC0 RETURN TO LIST MAINLINE 55350002 REGMOVE MVC SP2(NULL,R6),CONDATA(R3) MOVES DATA TO BUFFER 55400002 TITLE 'IKJEGLST, ''LIST'', COMMON INTERFACE WITH IKJEGIO' 55450002 *********************************************************************** 55500002 * * 55550002 * THIS ROUTINE SETS UP THE PTRS AND CALLS IKJEGIO1 TO OUTPUT A LINE * 55600002 * OF DATA. AT ENTRY, THE FOLLOWING REGS ARE SET. * 55650002 * R6 POINTS TO THE NEXT AVAILABLE BYTE IN THE BUFFER * 55700002 * R7 HAS THE RETURN POINT ADDRESS * 55750002 * * 55800002 * THE CONTENTS OF REGS 0, 1, 6, 14, AND 15 ARE MODIFIED BY THIS RTN * 55850002 * * 55900002 *********************************************************************** 55950002 SPACE 56000002 LSTIO DS 0H 56050002 LR R15,R6 R15=PTR TO 'END OF DATA'+1 56150002 L R6,OUTBUF R6=PTR TO BEGINNING OF BUF 56200002 SR R15,R6 CALCULATE LENGTH OF DATA 56250002 STH R15,F1STHALF(R6) LNTH TO 1ST HALF WORD OF BUFFER 56300002 SPACE 56350002 * COMMON PORTION OF IO ROUTINE. 56400002 SPACE 56450002 LSTIO1 DS 0H 56500002 TM TSTFLGS1,TSTPRINT+TSTFIRST IS OUTPUT TO A DS 1ST TIME 56550002 BM FIRSTIO IF OUTPUT TO DS 1ST TIME, BRANCH 56650002 SR R0,R0 IF NOT 1ST TIME, INDICATE SO BY R0=0 56700002 LSTIO4 DS 0H 56750002 STM R2,R3,WKWORDS SAVE CONTENTS TO WORK REGS 56760002 L R2,DATAPR OBTIAN DATA LINE ADDRESS FOR I/O 56770002 LR R3,R0 TRANSFER CONTENTS OF DSNAME PDE 56780002 XC LSTRETCD,LSTRETCD SET THE RETURN CODE TO 0 56782002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 56790002 IKJEGSIO DATA,DATAPTR=(R2),DSNAME=(R3), ISSUE I/O CALLING MAC*56800002 ID=LST20,MF=(E,TSTIOPRM) RO FOR DATA LINE 56810002 LM R2,R3,WKWORDS RESTORE WORK REGISTERS 56812002 CH R15,H16 TEST THE RTN CODE 56820002 BL LSTIO3 IF NOT SERIOUS CONTINUE 56830002 ST R15,LSTRETCD SAVE THE RETURN CODE FOR MAINLINE 56840002 B LSTMN90 GO BACK TO MAINLINE 56842002 LSTIO3 DS 0H 56844002 LTR R15,R15 SEE IF PROCESSING SHOULD BE CONT'D 56846002 BNZ LSTMN90 IF NOT ZERO RETURN TO MAINLINE 56848002 MVI DATAOFF(R6),BLANK MOVE A BLANK TO START OF DATA AREA 56850002 MVC DATAOFF+ONE(LSTBUFL,R6),DATAOFF(R6) BLANK OUT BUFFER 56900002 LA R6,DATAOFF(R6) INCRE BUF PTR PAST LL00 FIELD 56950002 BR R7 RETURN TO PROCESSING 57000002 SPACE 57400002 *********************************************************************** 57450002 * * 57500002 * THIS ROUTINE IS ENTERED AT THIS POINT WITH R1=COMPLIMENT OF THE * 57550002 * ADDRESS OF THE TWO WORD LIST IF OUTPUT IS A MESSAGE. * 57600002 * * 57650002 *********************************************************************** 57700002 LSTIO2 DS 0H 57750002 L R6,OUTBUF SET R6 TO POINT AT OUTPUT BUF 57800002 B LSTIO1 GO TO COMMON PART OF IO ROUTINE 57850002 SPACE 57900002 FIRSTIO DS 0H 57950002 L R14,TSTANSPL PICK UP BASE ADDR FOR PARSE DSECT 58000002 USING IKJPARMD,R14 ADDRESSABILITY FOR THE PDL 58050002 LA R0,DSNAME SET UP PTR TO THE DSNAME PDE 58100002 OI TSTFLGS1,TSTFIRST SET FIRST TIME SWITCH TO 1 58150002 DROP R14 58200002 B LSTIO4 RETURN TO MAIN IO ROUTINE 58250002 TITLE 'IKJEGLST, ''LIST'', GENERAL SUBROUTINES' 58300002 *********************************************************************** 58350002 * * 58400002 * THIS CLOSED SUBROUTINE CHECKS SEGMENTS OF CORE FOR INSERTED BREAK- * 58450002 * POINTS AND REPLACES THEM WITH THE ORIGINAL CONTENS OF THE LOCATION.* 58500002 * THE ROUTINE MOVES THE NEXT 32 BYTES TO BE LISTED TO A WORKAREA AND * 58550002 * SCANS THE BREAK ELEMENT QUEUE FOR ANY BREAK POINT SVC'S WITHIN THE * 58600002 * 32 BYTE FIELD. WHEN A BREAKPOINT SVC IS FOUND TO BE IN THE RANGE, * 58650002 * THE ORIGINAL INSTRUCTION IS MOVED (1ST 2 BYTES) INTO WORK AREA OVER* 58700002 * THE BREAKPOINT SVC. REGISTERS ARE SAVED AND RESTORED. * 58750002 * * 58800002 * INPUT A1=ORIGINAL START ADDR OF DATA IN HOLD AREA * 58850002 * VPDEPT=ADDR OF NEXT BYTE OF THE HOLD AREA TO BE LISTED. * 58900002 * * 58950002 *********************************************************************** 59000002 SPACE 59050002 LSTBPT DS 0H 59100002 SAVE (14,12) STANDARD SAVE 59150002 SPACE 59200002 * CALCULATE THE NEW DATA ADDRESS. 59250002 SPACE 59300002 L R3,VPDEPT GET ADDR OF NEXT BYTE OF HOLDAREA 59350002 LA R5,HOLDAREA SET UP START ADDR OF HOLDING CORE 59400002 SR R3,R5 DETERMINE NUMBER OF BYTES USED 59450002 A R3,A1 INCRE INPUT CORE ADDR BY AMT LISTED 59500002 LA R4,LSTIBLK(R3) ESTABLISH ADDR OF END OF NEXT BLK 59550002 C R4,ENDADR IS END ADDR GREATER THAN HIGHEST 59600002 BH LSTBPT30 IF OUT OF CORE, BRANCH TO ADJUST RTN 59650002 L R0,A2 OBTAIN LAST ADDRESS 59660002 SR R0,R3 PREPARE TEST LESS THAN FULL 59670002 CH R0,H32 TEST 32 OR MORE BYTES LEFT 59680002 BNL MOVEMAX IF 32 OR MORE BYTES LEFT 59690002 LR R1,R0 ESTAB NUMBER OF BYTES TO MOVE 59694002 B LSTBPT04 BRANCH TO MOVE ROUTINE 59696002 MOVEMAX DS 0H BRANCHED TO 32 CAN BE MOVED 59698002 LA R1,LSTIBLK USE STANDARD LENGTH FOR HOLD DATA 59700002 LSTBPT04 DS 0H 59750002 EX R1,HOLDMVC MOVE DATA TO HOLDING AREA 59800002 SPACE 59850002 * IF THE DATA ADDRESS IS NOT ON A HALF WORD BOUNDARY, R0 WILL CONTAIN 59900002 * A ONE (1), IF THE DATA ADDRESS IS ON A HALFWORD BOUNDARY, R0 WILL 59950002 * CONTAIN A ZERO (0). THE CONTENTS OF R0 WILL THEN BE USED TO ADJUST 60000002 * THE DATA ADDRESS AND THE HOLDAREA ADDRESS. THIS ADJUSTMENT IS TO 60050002 * TAKE CARE OF THE CASE WHERE THE DATA START ADDRESS IS THE SECOND 60100002 * BYTE OF A BREAKPOINT. 60150002 SPACE 60200002 BLOW2 DS 0H ESTABLISH ADDR IF ABEND 60210002 LA R0,ONE SET THE LOW ORDER BIT ON IN REG 0 60250002 NR R0,R3 TEST DATA ADDRESS FOR A HALFWORD BDY 60300002 SR R3,R0 ADJUST DATA START ADDRESS IF NEEDED 60350002 SR R5,R0 MAKE SAME CHANGE FOR HOLDAREA ADDR 60400002 L R6,BREAKTAB GET PTR TO FIRST BREAK ELEMENT 60450002 USING BRKELEM,R6 ADDRESSABILITY FOR BREAK ELEMENT 60500002 LTR R6,R6 IS THERE A 1ST BREAK ELEMENT 60550002 BP LSTBPT12 IF THERE IS A BREAK ELEMENT, BRANCH 60600002 B LSTBPT20 IF NONE, RETURN 60650002 SPACE 60700002 LSTBPT08 DS 0H 60750002 L R6,BRKLINK PICK UP FOREWARD PTR 60800002 LTR R6,R6 TEST FOR ANOTHER 60850002 BNP LSTBPT20 IF NO MORE, BRANCH 60900002 LSTBPT12 DS 0H 60950002 C R3,BRKADDR COMPARE START ADDR TO BREAKPOINT 61000002 BH LSTBPT08 IF BRK-PT LOW, NOT IN RANGE, BRANCH 61050002 C R4,BRKADDR COMPARE END ADDR TO BREAKPOINT 61100002 BNL LSTBPT40 IF END ADDR HI OR EQ, ADDR IN RANGE 61150002 LSTBPT20 DS 0H 61200002 AR R3,R0 RE-ADJUST DATA ADDRESS AS NEEDED 61250002 AR R5,R0 DO THE SAME FOR HOLD AREA ADDRESS. 61300002 ST R3,A1 SAVE ACTUAL CORE ADDR OF CUR DATA 61350002 ST R5,VPDEPT RESET VALUE PDE TO PT AT HOLD AREA 61400002 RETURN (14,12) RETURN TO CALLER 61450002 SPACE 61500002 LSTBPT30 DS 0H 61550002 L R1,ENDADR PICK UP HIGHEST CORE ADDR 61600002 LR R4,R1 SET TOP ADDR AS TOP OF CORE 61650002 SR R1,R3 DETERMINE REMAINING LENGTH IN BYTES 61700002 B LSTBPT04 RETURN TO MAIN LSTBPT FLOW 61750002 SPACE 61800002 *********************************************************************** 61850002 * IF A BREAK POINT IS FOUND IN THE RANGE, THE FOLLOWING CODE 61900002 * WILL REPLACE THE BREAK POINT SVC WITH THE ORIGINAL INSTRUCTION 61950002 *********************************************************************** 62000002 SPACE 62050002 LSTBPT40 DS 0H 62100002 L R2,BRKADDR R2=ADDR OF BREAKPOINT SVC 62150002 SR R2,R3 DETERMINE OFFSET INTO HOLD AREA, 62200002 AR R2,R5 ADD THE ADDR OF HOLDAREA 62250002 SPACE 62300002 * IF THE BREAK ELEMENT IS STILL ACTIVE, REPLACE THE BREAKPOINT SVC 62350002 * WITH THE DATA FROM THE BREAK ELEMENT. 62400002 SPACE 62450002 MVC ZERO(TWO,R2),BRKINST REPLACE SAVED INSTR 62500002 B LSTBPT08 RETURN TO SEARCH LOOP 62550002 SPACE 62600002 BLOW1 DS 0H ESTABLISH ADDR IF ABEND 62610002 HOLDMVC MVC HOLDAREA(NULL),ZERO(R3) MOVE SEGMENT OF CORE TO HOLD. 62650002 DROP R6 62700002 EJECT 62750002 *********************************************************************** 62800002 * * 62850002 * GENERAL SUBROUTINE FOR MOVING SYMBOLIC ADDRESSES TO THE OUTPUT BUF * 62900002 * AT ENTRY, R6 SHOULD POINT TO FIRST BYTE OF OUTPUT AREA * 62950002 * R7 POINTS TO RETURN POINT. * 63000002 *********************************************************************** 63050002 SPACE 63100002 LSTSYM DS 0H 63150002 OI APDE+(PDEFLG2-IKJPARMA),CTNAMFLG TURN ON 'QUALIFIED' SW 63200002 * TURN RELATIVE ADDR FLAG ON, AND ABSOLUTE ADDR SW OFF 63250002 XI APDE+(PDEFLG4-IKJPARMA),RELADDR+ABSADDR 63300002 LA R2,A1 GET ADDR OF INPUT DATA PTR 63350002 ST R2,APDE+(PDEADRPT-IKJPARMA) PUT IT IN THE ADDRESS PDE 63400002 L R6,OUTBUF GET PTR TO THE OUTPUT BUFFER 63450002 LA R6,DATAOFF(R6) INCRE BUFFER PTR PAST LL00 FIELD 63500002 MVI ZERO(R6),BLANK MOVE BLANK TO BUFFER @ZA07140 63510003 MVC ONE(LSTBUFL-DATAOFF,R6),ZERO(R6) BLANK OUT @ZA07140 63520003 BAL R14,LSTAMV GO MOVE THE ADDRESS TO THE BUFFER 63550002 L R15,A1 R15=START ADDR OF DATA 63600002 ST R15,PPTEMP MAKE START OF DATA ADDR BASE FOR REL 63650002 L R3,CONAREA 63700002 SR R0,R0 R0=0 63750002 BCTR R0,NULL MAKE NEG TO SHOW CONVERT TO PRINT 63800002 BAL R14,LSTBPT GO CLEAR BREAKPOINT SVC'S FROM DATA 63850002 BR R7 RETURN TO CALLER 63900002 EJECT 63950002 *********************************************************************** 64000002 * THIS ROUTINE WILL ADD THE PRODUCT OF THE LENGTH AND MULTIPLICITY * 64050002 * TO THE START ADDRESS AND COMPARE THE SUM TO 'ENDADR'. IF THE * 64100002 * SUM EXCEEDS 'ENDADR', A NEW MULTIPLICITY IS CALCULATED AND SWITCH * 64150002 * 'OUTCORE' IN COMFLGS IS SET, THE NUMBER OF BYTES NOT OUT * 64200002 * OF CORE IS PLACED 'LASTLEN', AND THE CALCULATED MULTIPLICITY IS * 64250002 * STORED IN 'A1M'. * 64300002 * RETURN CODES--- 4 IF 'NEW' MULTIPLICITY IS ZERO * 64350002 * 0 FOR ALL OTHER CASES. * 64400002 *********************************************************************** 64450002 LSTLMTCK DS 0H 64500002 SAVE (0,12) 64550002 L R2,A1 GET DATA START ADDR 64600002 LH R3,A1L GET LENGTH FOR THIS REQUEST 64650002 LA R2,ZERO(ZERO,R2) CLEAR HIGH BYTE FOR CALCULATION 64700002 MH R3,A1M MULTIPLY (LENGTH X MULTIPLICITY) 64750002 AR R3,R2 ADD START ADDR TO LENGTH OF REQUEST 64800002 BCTR R3,NULL DECREMENT TO MAKE EXCLUSIVE 64850002 ST R3,A2 STORE 2ND ADDR FOR LATER USE 64860002 C R3,ENDADR COMPARE POTENTIAL END ADDR TO TOP 64900002 BH LSTLMT20 IF REQUEST GOES OUT OF CORE, BRANCH 64950002 LSTLMT10 DS 0H 65000002 SR R15,R15 SET RETURN CODE TO ZERO 65050002 LSTLMT14 DS 0H 65100002 RETURN (0,12) 65150002 SPACE 65200002 LSTLMT20 DS 0H 65250002 L R5,ENDADR GET LAST MACHINE ADDRESS 65300002 ST R5,A2 STORE 2ND ADDR FOR LATER USE 65310002 SR R4,R4 CLEAR EVEN REG FOR DIVIDE 65350002 LH R3,A1L GET LENGTH FOR THIS REQUEST 65400002 SR R5,R2 TOP ADDR - START ADDR 65450002 LA R5,ONE(ZERO,R5) ADD ONE TO MAKE LASTLEN INCLUSIVE 65500002 DR R4,R3 DIVIDE BYTES IN CORE BY LENGTH 65550002 STH R5,A1M SET NEW MULTIPLICITY 65600002 STH R4,LASTLEN SAVE NO. OF BYTES IN CORE 65650002 OI COMFLGS,OUTCORE 65700002 LTR R5,R5 WAS REMAINING MULTI ZERO 65750002 BNZ LSTLMT10 IF NOT, BRANCH 65800002 LA R15,FOUR SET RETURN CODE TO FOUR 65850002 B LSTLMT14 GO RETURN WITH A RC=4 65900002 SPACE 65950002 EJECT 66350002 *********************************************************************** 66400002 * * 66450002 * GENERAL SUBROUTINE FOR MOVING ADDRESSES TO THE OUTPUT BUFFER. * 66500002 * AT ENTRY, R6 SHOULD POINT TO THE NEXT AVAILABLE BUFFER BYTE * 66550002 * R8 SHOULD CONTAIN THE ADDRESS OF THE ADDR PDE. * 66600002 * AT-EXIT, R6 CONTAINS THE UPDATED BUFFER PTR, AND * 66650002 * THE OUTPUT BUFFER CONTAINS THE ADDRESS STRING. * 66700002 * * 66750002 *********************************************************************** 66800002 LSTAMV DS 0H 66850002 SAVE (14,12) SAVE CALLERS REGS 66900002 LA R2,X'40' PUT A BLANK IN REG2 @ZA00914 66910000 STC R2,0(R6) PUT A BLANK IN BUFFER @ZA00914 66920000 MVC ONE(7,R6),0(R6) PROPAGATE BLANKS @ZA00914 66930000 TM PDEFLG1,LDNAMFLG WAS A LOADNAME USED 66950002 BZ LSTAMV04 IF NOT, BRANCH 67000002 LH R2,PDELEN1 PICK UP LENGTH OF LOAD NAME 67050002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR 67100002 L R15,PDELDNAM PICK UP PTR TO LOAD NAME 67150002 EX R2,SYMMOVE MOVE SYMBOL TO OUTPUT LOCATION 67200002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST LOADNAME 67250002 LSTAMV04 DS 0H 67300002 TM PDEFLG2,CTNAMFLG WAS ENTRY NAME SPECIFIED 67350002 BZ LSTAMV08 IF NOT, BRANCH 67400002 MVI ZERO(R6),PERIOD MOVE IN SEPARATOR 67450002 LA R6,L'PERIOD(R6) INCREMENT BUF PTR PAST PREFIX 67500002 LH R2,PDELEN2 GET LENGTH OF ENTRY NAME AND 67550002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR 67600002 L R15,PDECTNAM PICK UP PTR TO ENTRY NAME 67650002 EX R2,SYMMOVE MOVE NAME TO OUTPUT AREA 67700002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST ENTRYNAME 67750002 TM PDEFLG4,CTONLY IS ADDR TYPE STAND ALONE ENTRYNAME 67800002 BO LSTAMV16 IF STAND ALONE ENTRYNAME, BRANCH 67850002 MVI ZERO(R6),PERIOD MOVE IN SEPARATOR 67900002 LA R6,L'PERIOD(R6) INCREMENT BUF PTR PAST PREFIX 67950002 LSTAMV08 DS 0H 68000002 LH R2,PDELEN3 PICK UP LENGTH OF WYMBOL AND 68050002 BCTR R2,NULL DECREMENT BY 1 FOR MVC INSTR 68100002 L R15,PDEADRPT R15=PTR TO SYMBOL 68150002 EX R2,SYMMOVE MOVE SYMBOL TO OUTPUT AREA 68200002 LA R6,ONE(R2,R6) INCREMENT BUF PTR PAST SYMBOL 68250002 LSTAMV16 DS 0H 68300002 ST R6,R6OFF(R13) MODIFY REG 6 CONTENTS (IN SAVE AREA) 68350002 RETURN (14,12) RETRUN TO CALLER WITH HIS REGS 68400002 SYMMOVE MVC ZERO(NULL,R6),ZERO(R15) FOR MOVING NAMES TO BUFFER 68450002 TITLE 'IKJEGLST, ''LIST'', PARSE EXIT SUB-ROUTINES' 68500002 *********************************************************************** 68550002 * * 68600002 * ENTRY POINT FOR LENGTH VALIDITY CHECK EXIT ROUTINE. * 68650002 * * 68700002 *********************************************************************** 68750002 LSTVALEN DS 0H 68800002 SAVE (14,12) SAVE PARSE REGS 68850002 LA R14,OFFSETL1(R15) SET UP ADDR OF LNTH/MULTI ROUTINE 68900002 SR R4,R4 INDICATE LENGTH PARAMETER 68950002 B OFFSET1(R15) GO TO COMMON LINK CONVENTION RTNJ 69000002 SPACE 69050002 *********************************************************************** 69100002 * * 69150002 * ENTRY POINT FOR MULTIPLICITY VALIDITY CHECK EXIT ROUTINE. * 69200002 * * 69250002 *********************************************************************** 69300002 LSTVALMT DS 0H 69350002 SAVE (14,12) SAVE PARSE REGS 69400002 LA R14,OFFSETM1(R15) SET UP ADDR OF LNTH/MULTI ROUTINE 69450002 LA R4,TWO INDICATE MULTIPLICITY PARAMETER 69500002 B OFFSET2(R15) GO TO COMMON LINK CONVENTION RTN 69550002 SPACE 69600002 *********************************************************************** 69650002 * * 69700002 * ENTRY POINT FOR ADDRESS VALIDITY CHECK EXIT ROUTINE. * 69750002 * * 69800002 *********************************************************************** 69850002 LSTVALAD SAVE (14,12) SAVE PARSE PREGS 69900002 LA R14,OFFSETAD(R15) SET UP ADDR OF ADDRESS VALIDITY RTN 69950002 SPACE 70000002 LSTVALCM DS 0H 70050002 OFFSET1 EQU *-LSTVALEN 70100002 OFFSET2 EQU *-LSTVALMT 70150002 L R12,FOUR(R1) R12=PTR TO LIST'S SAVE AREA 70200002 LR R3,R1 SAVE REG1 70250002 LM R6,R12,R6OFF(R12) RESTORE REQUIRED REGS OF LIST 70300002 L R2,REGSAVE3 PTR TO NEW SAVE AREA 70350002 ST R2,FOREPTR(R13) FOREWARD CHAIN SAVE AREAS. 70400002 ST R13,BACKPTR(R2) BACKWARD CHAIN SAVE AREAS. 70450002 LR R13,R2 SET NEW SAVE AREA 70500002 OI TSTFLGS4,TSTVALCK TURN ON VALIDITY CHECK ROUTINE BIT 70510002 SR R0,R0 INDICATE CONVERT TO BINARY 70520002 L R8,OUTBUF OBTAIN ADDRESS TO OUTBUF 70530002 ST R0,ZERO(R8) INITIALIZE SECOND LEVEL LENGTH ZERO 70540002 L R8,ZERO(R3) GET ADDR OF PDE 70550002 BR R14 GO TO PROPER RTN 70700002 EJECT 70750002 *********************************************************************** 70800002 * * 70850002 * ADDRESS VALIDITY ROUTINE. AT ENTRY, R0=0, AND R2=PTR TO ADDR PDE. * 70900002 * * 70950002 *********************************************************************** 71000002 LSTADR DS 0H 71050002 OFFSETAD EQU *-LSTVALAD 71100002 SPACE 71150002 USING IKJPARMA,R8 ADDRESSABILITY FOR THE ADDR PDE 71200002 LCR R1,R8 INDICATE ADDR CONVERSION 71250002 L R15,TSTCONVT GET ADDR OF IKJEGCVT 71300002 OI TSTFLGS1,RANGESW SET SW TO SHOW ADDR MAY BE A RANGE 71350002 BALR R14,R15 GO TO CONVERT ROUTINE 71400002 LTR R15,R15 TEST CONVERT RTN CODE 71450002 BNZ LSTADR12 IF NON-ZERO, BRANCH 71500002 TM PDE2FLG3,AFLG WAS A SECOND ADDR GIVEN 71550002 BO LSTADR04 IF YES, BRANCH 71600002 TM PDE2FLG4,CTONLY WAS A 2ND ADDR GIVEN AS ENTRY NAME 71650002 BZ LSTADR06 IF NO 2ND ADDRESS, BRANCH 71700002 LSTADR04 DS 0H 71750002 TM PDEFLG4,GENR+LFPR+SFPR IS 1ST ADDR A REG TYPE 71800002 BZ LSTADR26 IF NOT, BRANCH 71850002 CH R0,PDEINDCT IS 1ST REG ADDR INDIRECTED 71900002 BNE LSTADR26 IF INDIRECT, BRANCH, ADDR IS CORE 71950002 SPACE 72000002 * ADDRESS 1 IS A REG ADDRESS, NOW TEST ADDRESS 2. 72050002 SPACE 72100002 CH R0,PDE2INDC IS 2ND REG ADDR INDIRECTED 72150002 BNE LSTADR50 IF INDIRECT, ERROR, BRANCH 72200002 CLC PDEFLG4,PDE2FLG4 COMPARE TYPES FOR 1ST AND 2ND ADDRS 72250002 BNE LSTADR24 IF NOT EQ, ERROR, BRANCH 72300002 LSTADR06 DS 0H 72350002 SR R15,R15 SET RETURN CODE TO 0 72400002 LSTADR08 DS 0H 72450002 L R13,BACKPTR(R13) PICK UP CALLERS SAVE AREA ADDRESS 72500002 L R1,R1OFF(R13) PICK UP PTR TO PARM LIST FROM PARSE 72550002 L R8,OUTBUF PICK UP ADDR OF OUTBUF/2ND LEV MSG 72560002 LH R7,ZERO(R8) PICK UP MSG LENGTH 72580002 LTR R7,R7 SEE IF THERE IS A SECOND LEVEL MSG 72590002 BZ NO2NDLEV IF NOT, BRANCH AROUND NEXT INST. 72592002 ST R8,EIGHT(ZERO,R1) PASS PTR TO 2ND LEVEL MSG 72600002 NO2NDLEV DS 0H 72610002 NI TSTFLGS1,HEXFF-RANGESW CLEAR RANGE SW FOR RE-USE 72650002 NI TSTFLGS4,HEXFF-TSTVALCK TURN OFF VALIDITY CHECK SWITCH 72660002 RETURN (14,12),,RC=(15) RETURN TO PARSE 72700002 SPACE 72750002 LSTADR12 DS 0H 72800002 C R15,FSIXTEEN WAS RETURN CODE A 16 OR 20 72850002 BNL LSTADR16 IF 16 OR 20, BRANCH 72900002 TM TSTFLGS1,RANGESW WAS 1ST OR 2ND PDE IN ERROR 72950002 LA R1,PDEUSER ANTICIPATE 1ST PDE IN ERROR 73000002 BO LSTADR14 IF 1ST ADDR IN ERROR, BRANCH 73050002 LA R1,PDE2USER IF 2ND PDE IN ERROR, RE-INITIALIZE 73100002 LSTADR14 DS 0H 73150002 SPACE 73250002 LSTADR15 DS 0H 73300002 LA R15,EIGHT SET RETURN CODE TO 8. 73350002 B LSTADR08 BRANCH TO RETURN RTN 73400002 SPACE 73450002 LSTADR16 DS 0H 73500002 ST R15,LSTRETCD SAVE RC TO PASS BACK TO MAINLINE 73550002 LA R15,TWELVE SET RC=12 TO PARSE 73600002 B LSTADR08 GO RETURN TO PARSE 73650002 SPACE 73700002 LSTADR24 DS 0H 73750002 TM PDE2FLG4,GENR+SFPR+LFPR IS ADDR 2 REGISTER TYPE 73800002 BNM LSTADR50 IF NOT REG TYPE, BRANCH 73850002 LA R6,M0219 OBTAIN MSG NUMBER FOR I/O CALL 73900002 B LSTADR70 GO TO MSG ROUTINE 73950002 SPACE 74000002 * IF ADDRESS 1 IS A CORE ADDRESS AND A RANGE WAS GIVEN, ADDRESS 2 * 74050002 * MUST ALSO BE A CORE ADDRESS. * 74100002 SPACE 74150002 LSTADR26 DS 0H 74200002 TM PDE2FLG4,GENR+LFPR+SFPR IS 2ND ADDR REG TYPE 74250002 BZ LSTADR30 IF NOT REG, BRANCH 74300002 CH R0,PDE2INDC IF 2ND ADDR REG TYPE, IS IT INDIRECT 74350002 BE LSTADR50 IF 2ND ADDR REG TYPE, BRANCH 74400002 SPACE 74450002 * IF AN ADDRESS RANGE HAS BEEN SPECIFIED AND THE ADDRESSES ARE CORE * 74500002 * ADDRESS 1 MUST BE LESS THAN OR EQUAL TO ADDRESS 2. * 74550002 SPACE 74600002 LSTADR30 DS 0H 74650002 L R3,PDEUSER GET 1ST ADDR OR SI PTR (SYM-INFO) 74700002 LTR R3,R3 IS 1ST ADDR AN SI PTR 74750002 BNM LSTADR32 IF NOT AN SI PTR, BRANCH 74800002 L R3,SIDATAPT(R3) GET ACTUAL DATA ADDR FROM SI BLK 74850002 LSTADR32 DS 0H 74900002 LA R3,ZERO(R3) ZERO OUT HIGH ORDER BYTE 74950002 L R4,PDE2USER GET 2ND ADDR OR SI PTR 75000002 LTR R4,R4 IS 2ND ADDR AN SI BLK PTR 75050002 BNM LSTADR36 IF NOT AN SI BLOCK PTR, BRANCH 75100002 L R4,SIDATAPT(R4) GET ACTUAL DATA ADDRESS 75150002 LSTADR36 DS 0H 75200002 LA R4,ZERO(R4) ZERO OUT HIGH ORDER BYTE 75250002 CR R3,R4 COMPARE DATA ADDR 1 WITH DATA ADDR2 75300002 BNH LSTADR06 IF ADDR 1 IS EQUAL OR HIGH, BRANCH 75350002 SPACE 75400002 * IF ADDRESS 2 IS LOWER THAN ADDRESS 1, THE RANGE IS INVALID AND AN * 75450002 * ERROR MESSAGE MUST BE ISSUED. * 75500002 SPACE 75550002 LA R6,M0221 OBTAIN MSG NUMBER FOR I/O CALL 75600002 B LSTADR70 GO TO MSG SETUP ROUTINE 75650002 SPACE 75700002 LSTADR50 DS 0H 75750002 LA R6,M0220 OBTAIN MSG NUMBER FOR I/O CALL 75800002 B LSTADR70 GO TO MESSAGE SET UP ROUTINE 75850002 SPACE 75900002 * INVALID ADDRESS AND ADDRESS RANGE MESSAGE SETUP ROUITNE * 75950002 * AT ENTRY, R15 CONTAINS THE OFFSET TO THE DESIRED MSG LIST. 76000002 SPACE 76050002 LSTADR70 DS 0H 76100002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 76110002 IKJEGSIO MSG,FIRST=M0073,INST11=(APDE,(R8)), ISSUE I/O CALL- *76120002 SECOND=(R6),ID=LST20,MF=(E,TSTIOPRM) ING MACRO 76130002 LSTADR86 DS 0H 76132002 CH R15,H16 TEST THE RTN CODE 76140002 BL LSTADR15 IF SUCCESSFUL CONTINUE WITH PROMPT 76150002 B LSTADR16 GO BACK TO MAINLINE THRUGH PARSE 76170002 DROP R8 78050002 EJECT 78100002 *********************************************************************** 78150002 * * 78200002 * LENGTH/MULTIPLICITY VALIDITY ROUTINE, AT ENTRY, * 78250002 * R0=0, R2=PTR TO THE PDE, AND R4= EITHER 0 FOR LENGTH * 78300002 * VALIDITY CHECK, OR 2 FOR MULTIPLICITY VALIDITY CHECK. * 78350002 * * 78400002 *********************************************************************** 78450002 SPACE 78500002 LSTLM DS 0H 78550002 OFFSETL1 EQU *-LSTVALEN OFFSET FROM LNTH VALIDCK E.P. 78600002 OFFSETM1 EQU *-LSTVALMT OFFSET FROM MULTIPLICITY VALIDCK EP 78650002 LA R1,VPDE SET UP REG 1 TO CONVERT A VALUE 78700002 MVC VPDE(VPDELEN),ZERO(R8) MOVE IDENT PDE TO WORKING CORE 78750002 MVI VPDET,HCODE INDICATE TYPE IS FIXED PT HALFWORD 78800002 L R15,TSTCONVT ADDR OF IKJEGCVT 78850002 BALR R14,R15 GO TO CONVERT RTN 78900002 LTR R15,R15 TEST RETURN CODE 78950002 BNZ LSTADR86 IF NON-ZERO, BRANCH, GO TEST RC 79000002 L R15,CONAREA ADDR OF CONVERT OUTPUT AREA 79050002 LA R15,CONDATA(R15) INCREMENT PTR PAST LENGTH FIELD 79100002 LH R0,ZERO(R15) PICK UP CONVERTED VALUE 79150002 CH R0,H256 COMPARE ATTR TO MAX 79200002 BH LSTERR IF HIGH, ERROR, BRANCH 79250002 LTR R0,R0 TEST FOR LENTH/MULTI EQ 0 79300002 STH R0,LMATTR(R4) SAVE CONVERTED ATTRIBUTE 79350002 BNZ LSTADR06 IF LENTH/MULTI NON-ZERO, BRANCH 79400002 SPACE 79450002 LSTERR DS 0H 79500002 LA R5,I0084 GET INSERT NUMBER INTO REGISTER 79510002 LTR R4,R4 IS THE LENGTH BEING CHECKED 80000002 BZ LENERR BRANCH IF SO 80100002 LA R5,I0083 GET INSERT NUMBER INTO REGISTER 80150002 LENERR DS 0H 80300002 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 80310002 IKJEGSIO MSG,FIRST=M0017,INST11=(NUM,(R5)), ISSUE I/O CALL- *80320002 SECOND=M0278,ID=LST20,MF=(E,TSTIOPRM) ING MACRO 80330002 CH R15,H16 TEST THE RTN CODE 80340002 BL LSTADR15 IF SUCCESSFUL CONTINUE 80350002 B LSTADR16 RETURN TO MAINLINE THROUGH PARSE 80450002 SPACE 80460002 DATAMOVE MVC ZERO(NULL,R6),CONDATA(R3) FOR MOVING DATA TO BUFFER 80470002 EJECT 80600002 *********************************************************************** 80650002 * 80700002 * STAE RETRY ROUTINE 80750002 * 80800002 *********************************************************************** 80850002 SPACE 3 80900002 RETRY DS 0H 80950002 L R4,CVTPTR PTR TO CVT 81000002 USING CVTDSECT,R4 ADDRESSABILITY FOR CVT 81050002 L R4,CVTTCBP TCB PTR 81100002 L R4,FOUR(R4) CURRENT TCB PTR 81150002 DROP R4 81200002 USING TCB,R4 TCB ADDRESSABILITY 81250002 L R9,TCBTRN TCOMTAB PTR 81300002 OI TSTFLGS4,TSTRERTN TURN ON RETRY IN PROCESS SW 81310002 L R13,REGSAVE2 PTR TO SAVE AREA 81350002 LM R10,R12,R10OFF(R13) RESTORE MODULE ADDRESSABILITY 81400002 LA R15,TWENTY INDICATE ERROR RETURN 81650002 ST R15,LSTRETCD SAVE RETURN CODE 81700002 B LSTMN90 RETURN 81750002 EJECT 81752002 ***************************************************************** 81760002 * 81770002 * THIS ROUTINE IS ENTERED AT THIS POINT TO CK THE VALIDITY OF 81780002 * THE CALCULATED STOP ADDRESS FOR THE LIST COMMAID. 81782002 * REGS ARE SAVED AND RESTORED AND THE ROUTINE RETURNS TO CALLER 81784002 * IF THE ADDRESS PROVES TO BE VALID; OTHERWISE, THE ROUTINE 81786002 * BRANCHES TO PRINT MESSAGE AND RETURN TO MAINLINE. 81788002 * 81790002 ***************************************************************** 81792002 ADDRCHK DS 0H 81794002 SAVE (14,12) STANDARD SAVE 81796002 L R6,PPTCB EXTAB PTR TO PROB PROG TCB 81798002 L R7,A2 EXTAB PTR TO STOP ADDR 81798402 IKJEGS9G ADDRCHK,TCBADDR=(R6),VALUE=(R7),MF=(E,WKWORDS) 81798802 C R15,FEIGHT RTN CODE (EIGHT) 81799202 BL GOODADDR OK -- RETURN TO PROCESSING 81799602 BH ERR97 ERROR ENCOUNTERED IN SVC97 81811602 SPACE 81812202 * COMMON PARSE ERROR MESSAGE SETUP ROUTINE. 81822202 SPACE 81824202 XC TSTIOPRM,TSTIOPRM ZERO OUT PARM FIELD FOR I/O CALL 81834202 IKJEGSIO MSG,FIRST=M0018, ISSUE I/O CALLING FOR MSG *81836202 SECOND=M0285,ID=LST20,MF=(E,TSTIOPRM) CALLING MACRO 81838202 CH R15,H16 TEST THE RTN CODE 81840202 BL LSTMN90 IF SUCCESSFUL CONTINUE 81842202 ERR97 DS 0H 81842302 ST R15,LSTRETCD SAVE THE RETURN CODE FOR MAINLINE 81842602 B LSTMN90 CLEAN UP, RTN TO CALLER I/O RC 81844102 GOODADDR RETURN (14,12) RETURN TO PROCESSING 81844402 TITLE 'IKJEGLST, ''LIST'', PARSE DISCRIPTOR MACROS' 81847202 IKJEGPMA IKJPARM 81850002 ADDR1 IKJPOSIT ADDRESS,LIST,RANGE,PROMPT='ADDRESS OR REGISTER', *81900002 VALIDCK=LSTVALAD 81950002 TYPE IKJKEYWD 82000002 IKJNAME 'C' CHARACTER FORMAT 82050002 IKJNAME 'X' HEXADECIMAL 82100002 IKJNAME 'B' BINARY 82150002 IKJNAME 'F' FIXED PT BINARY, FULLWORD 82200002 IKJNAME 'H' FIXED PT BINARY, HALFWORD 82250002 IKJNAME 'E' FLOATING PT, SINGLE PRECISION 82300002 IKJNAME 'D' FLOATING PT, DOUBLE PRECISION 82350002 IKJNAME 'A' ADDRESS CONSTANT, FULLWORD 82400002 IKJNAME 'Y' ADDRESS CONSTANT, HALFWORD 82450002 IKJNAME 'S' ADDRESS CONSTANT, BASE/DISPLACEMENT 82500002 IKJNAME 'P' PACKED DECIMAL 82550002 IKJNAME 'Z' ZONED DECIMAL 82600002 IKJNAME 'I' INSTRUCTION FORMAT 82650002 LATTR IKJKEYWD 82700002 IKJNAME 'LENGTH',SUBFLD=LENCD 82750002 MATTR IKJKEYWD 82800002 IKJNAME 'MULTIPLE',SUBFLD=MULCD 82850002 PRINT IKJKEYWD 82900002 IKJNAME 'PRINT',SUBFLD=DSNAM 82950002 LENCD IKJSUBF 83000002 LENGTH IKJIDENT 'LENGTH',MAXLNTH=3,FIRST=NUMERIC,OTHER=NUMERIC, C83050002 PROMPT='LENGTH',VALIDCK=LSTVALEN 83100002 MULCD IKJSUBF 83150002 MULTI IKJIDENT 'MULTIPLICITY FACTOR',FIRST=NUMERIC,OTHER=NUMERIC, C83200002 PROMPT='MULTIPLICITY FACTOR',VALIDCK=LSTVALMT 83250002 DSNAM IKJSUBF 83300002 DSNAME IKJPOSIT DSNAME,PROMPT='OUTPUT DATA SET NAME' 83350002 IKJENDP 83400002 TITLE 'IKJEGLST, ''LIST'', CONSTANTS AND DSECTS' 83450002 PARSEPCL DC V(IKJEGPMA) PTR TO PARSE PCL 83550002 RETRYAD DC A(RETRY) PTR TO STAE RETRY CODE 83600002 SPACE 83650002 XCTLLF XCTL ,SF=L MODEL FOR LIST FORM OF XCTL MACRO 83700002 XCTLLEN EQU *-XCTLLF LENGTH OF LIST FORM OF XCTL MACRO 83750002 SPACE 83800002 FEIGHT DC F'8' CONSTANT OF EIGHT GENERAL USE 83850002 FSIXTEEN DC F'16' CONSTANT OF 16, GENERAL USE 83900002 SPACE 83950002 LENTH DC C'LENGTH+' KEYWORD TO MOVE IN MESSAGE 84000002 MULTIP DC C'MULTIPLICITY+' '' 84050002 SPACE 84100002 SMTLABL DS 0H SMT TEST LABEL FOR XCTL MACRO 84150002 LSA DC C'LSA' CONSTANT USED BY MAINLINE BLDL RTNE 84200002 SPACE 84250002 CONLEN EQU 13 LENGTH OF THE PREVIOUS CONSTANTS 84300002 DS 0F 84350002 SPMASK DC X'01000000' SUB-POOL NUMBER MASK FOR FREEMAIN 84400002 ENDADR DC X'00FFFFFF' MAXIMUM CORE ADDRESS 84450002 IKJEGSPL IKJEGSPL RTRY=RETRY,ABNTB=LSTABEND,MODNM=IKJEGLST,TNM=LIST 84460002 SUPERZAP DC 50CL1'Z' AREA FOR TEMP UPDATES 84500002 SPACE 84550002 HONE DC H'1' CONSTANT OF 1, GENERAL USE 84600002 H16 DC H'16' CONSTANT OF SIXTEEN, GENERAL USE 84650002 H32 DC H'32' CONSTANT OF THIRTY-TWO GENERAL USE 84660002 H256 DC H'256' CONSTANT OF 256, GENERAL USE 84700002 AFLEN DC A(ADDRLEN+SP1+SP1) LENGTH OF ADDR FLD (+ 2 SPACES) 84750002 SPACE 2 84800002 LSTABEND DS 0F @ZA06225 84850003 DC AL1(97) CODE FOR PROTECTION CHECK 84910002 DC AL3(BLOW1) RESUME ADDRESS FOLLOWING 84920002 DC AL1(97) CODE FOR PROTECTION CHECK 84930002 DC AL3(BLOW2) RESUME ADDRESS FOLLOWING 84940002 DC AL1(97) CODE FOR PROTECTION CHECK 84942002 DC AL3(LSTBPT04) RESUME ADDRESS FOLLOWING 84944002 DC AL1(99) CODE FOR LINK TO PARSE FAILED 84950002 DC AL3(PARSEBLO) ADDRESS OF POTENTIAL ABEND 85000002 DC X'FF' TABLE STOPPER 85050002 SPACE 2 85100002 *********************************************************************** 85150002 * THIS TABLE CONVERTS THE NUMBER OF THE TYPE KEYWORD SPECIFIED, TO * 85200002 * A HEXADECIMAL CODE USED INTERNALLY BY TEST. * 85250002 * THE FIRST CODE BYTE (X'04' FOR HEX) IS PICKED UP IF THE TYPE * 85300002 * KEYWORD WAS NOT SPECIFIED AND THE PDE IS ZERO. THE TYPE CODE * 85350002 * OF X'0C' IS NOT CURRENTLY USED BY THE ASSEMBLER AND IS USED * 85400002 * HERE FOR INSTRUCTION FORMAT, TYPE 'I'. THE ORDER OF THIS * 85450002 * TABLE DIRECTLY CORRESPONDS TO THE ORDER OF THE IKJNAME MACROS* 85500002 * FOR THE TYPE KEYWORD. * 85550002 SPACE 85600002 TYPETBL DS 0H 85650002 DC X'04' CODE FOR HEX FORMAT, DEFAULT TYPE 85700002 DC X'00' '' '' CHARACTER FORMAT 85750002 DC X'04' '' '' HEXFORMAT, USER GIVEN 85800002 DC X'08' '' '' BINARY FORMAT 85850002 DC X'10' '' '' FIXED PT BINARY 'F' 85900002 DC X'14' '' '' '' '' '' 'H' 85950002 DC X'18' '' '' FLOATING PT 'E' 86000002 DC X'1C' '' '' '' '' 'D'(TYPE -DN-) 86050002 DC X'20' '' '' A TYPE ADDRESS CONSTANT 86100002 DC X'24' '' '' Y '' '' '' 86150002 DC X'28' '' '' S '' '' '' 86200002 DC X'30' '' '' PACKED DECIMAL FORMAT 86250002 DC X'34' '' '' ZONED DECIMAL FORMAT 86300002 DC X'0C' '' '' INSTRUCTION FORMAT, TYPE I 86350002 EJECT 86360002 LSTWORK DSECT 86500002 SPACE 86550002 *********************************************************************** 86600002 * * 86650002 * ---NOTICE--- * 86700002 * * 86750002 ***** THERE IS A DUPLICATE OF THIS DSECT IN IKJEGLSA AND ANY CHANGES ** 86800002 ***** TO THE DSECT MUST BE MADE IN BOTH MODULES. ** 86850002 * * 86900002 * THIS DSECT MAPS A SECTION OF THE COMMON WORKING CORE POINTED TO * 86950002 * BY 'WORKAREA' IN TCOMTAB. * 87000002 * * 87050002 *********************************************************************** 87100002 SPACE 87150002 DWORK DS D DOUBLE WORD WORKAREA 87200002 ORG DWORK USE WORK AREA FOR XCTL LIST 87250002 LXCTL1 DS 2A PROBLEM PROG PARAMETER LIST 87300002 PARSEPL DS 7F PARSE CALLING PARAMETER LIST. 87350002 ORG PARSEPL REUSE CORE USED BY PARSE PARM LIST 87400002 LSTRPT DS 0H START OF SECTION REUSED FOR ADDR LST 87450002 APDE DS 9F WORKING COPY OF THE ADDRESS PDE 87500002 A1 DS A CONTAINS CURRENT ADDR OF INPUT 87550002 A1LMATTR DS F LENGTH AND MULTIPLICITY FACTORS 87600002 ORG A1LMATTR PLACE LNTH AND MULTI IN ONE FULLWORD 87650002 A1L DS H LENGTH 87700002 A1M DS H MULTPLICITY FACTOR 87750002 A1FLG DS X FLAG BYTE FOR ADDR1 INFORMATION 87800002 A1FPD EQU X'80' FLOATING PT DBL 87850002 A1FPE EQU X'40' FLOATING PT SINGLE 87900002 A1GEN EQU X'20' GENERAL REG 87950002 A1REG EQU X'10' ADDRESS 1 IS A REG. 88000002 SPACE 88050002 A1ABS EQU X'00' ADDR IS ABSOLUTE 88100002 A1SYM EQU X'03' ADDR IS SYMBOLIC 88150002 A1REL EQU X'01' ADDR IS RELATIVE 88200002 SPACE 88250002 A1TYPE DS X CONTAINS TYPE CODE FOR ADDR1 88300002 REMAIN DS H REMAINDER 88350002 A2 DS A SECOND ADDR IF A RANGE WAS GIVEN 88400002 ARTIFMUL DS H VALUE OF ARTIFICIAL MULTIPLICITY 88450002 DATAINCR EQU ARTIFMUL NAME OF FIELD USED IN LIST REGS 88500002 REMAIN2 DS H BACKUP COPY OF REMAINDER 88550002 REGSTART DS F START ADDR OF REG SAVE AREA TO LIST 88600002 LSTRETCD DS F HOLDS RETURN CODE 88650002 LASTLEN DS H CONTAINS REMAINDER FROM LSTLMTCK 88700002 COMFLGS DS X FLAG BYTES FOR PROCESS CONTROL 88750002 TWOADDRS EQU X'80' 1 INDICATE ADDR RANGE 88800002 ARTIMSW EQU X'40' 1 INDICATE CONTROL IS ARTIFICIAL 88850002 NOINDENT EQU X'20' 1 INDICATES DATA NOT TO BE INDENTED 88900002 SECOND EQU X'10' 1 INDICATES PROCESSING 2ND GROUP 88950002 WRAPSW EQU X'08' 1 INDICATES 2ND REG LOWER THAN 1ST 89000002 PARSEFLG EQU X'04' SW SHOWS IO REQUESTED BY PARSE EXIT 89050002 OUTCORE EQU X'02' REQUEST EXTENDS OUT OF CORE 89100002 DATASIZE EQU X'01' SYMBOLIC FOR NUMBER OF HEX FLDS/GRP 89150002 SPACE 89200002 * THE FOLLOWING FIELDS DEFINE A VALUE PDE FOR CONVERTING DATA. 89250002 VPDE DS 0F VALUE PDE FOR CONVERTING DATA 89300002 VPDEPT DS A PTR TO DATA 89350002 VPDEL DS H LENGTH OF DATA FOR CONVERSION 89400002 VPDEFLG DS X FLAGS 89450002 VPDET DS X HEX TYPE CODE FOR VALUE. 89500002 SPACE 89550002 RPTSIZE EQU *-LSTRPT LNTH OF REUSED SECTION. 89600002 LMATTR DS F LENGTH AND MULTIPLICITY FACTOR FLD'S 89650002 ORG LMATTR PLACE LNTH AND MULTI IN ONE FULLWORD 89700002 BINLEN DS H CONVERTED LENGTH GIVEN BY USER 89750002 BINMUL DS H CONVERTED MLTPLCTY GIVEN BY USER 89800002 LXCTL XCTL ,SF=L RESERVE SPACE FOR LIST FORM OF XCTL 89850002 ENDOBUF DS A CONTAINS MAX BUF ADDR + 1 89900002 ENDOGRP DS A CONTAINS GROUP STOP ADDRESS 89950002 DATAPR DS 2F MSG PTR LIST FOR IKJEGIO1 90000002 SPACE 90050002 TYPESAVE DS X CONTAINS SPECIFIED OR DEFAULTED TYPE 90100002 RETRYSAV DS AL3 CONTAINS MAINLINES STAE RETRY ADDR 90150002 LSTFLGS DS X FLAG BYTES TO SAVE PARSE DATA 90200002 TYPEFLG EQU B'10000000' SET TO ONE IF TYPE KEYWORD USED 90250002 LNTHFLG EQU B'01000000' SET TO ONE IF LENGTH KEYWORD USED 90300002 MULTIFLG EQU B'00100000' SET TO ONE IF MULTIPLICITY GIVEN 90350002 SPACE 90400002 DS X SPILL BYTE FOR HOLDAREA ON ODD ADDR 90450002 DS 0D ALIGN HOLDAREA 90500002 HOLDAREA DS XL32 HOLDS DATA BEING CONVERTED CURRENTLY 90550002 WKWORDS DS 3F 3 FWDS-SVC97 DYNAMIC WK AREA 90560002 * WHEN CALLED 90570002 STAELIST STAE MF=L 90600002 SPACE 90650002 LWLNTH EQU *-LSTWORK LENGTH OF DSECT 90700002 EJECT 90750002 EJECT 96250002 TCOMTAB 96300002 SPACE 3 96350002 IKJPARMA 96400002 APL EQU PDECHAIN-IKJPARMA SYMBOLIC LENGTH OF AN ADDRESS PDE 96450002 SPACE 3 96500002 TSTCWORK 96550002 EJECT 96600002 BRKELEM 96650002 SPACE 3 96700002 IKJPPL 96750002 EJECT 96800002 CVTDSECT DSECT 96850002 CVT 96900002 EJECT 96950002 IKJTCB 97000002 END 97050002