* /* START OF SPECIFICATIONS **** 00150000 *02* PROCESSOR = ASSEMBLER 00160000 **** END OF SPECIFICATIONS ***/ 00170000 LCLC &TBP TEXT BASE POINTER 00180000 LCLC &BAL LINK REGISTER 00200000 LCLC &OPT OUTPUT POINTER 00300000 LCLC &LEN FIELD LENGTH 00400000 LCLC &SCR SCRATCH REGISTER 00500000 LCLC &SCH ALSO SCRATCH 00600000 LCLC &COM PHASE WORK AREA POINTER 00700000 LCLC &IPT INPUT FIELD ADDRESS 00800000 LCLC &PRN PRINT BUFFER POINTER 00900000 SPACE 5 01000000 &SCR SETC 'R1' 01100000 &COM SETC 'R7' 01200000 &OPT SETC 'R3' 01300000 &IPT SETC 'R4' 01400000 &BAL SETC 'R6' 01500000 &TBP SETC 'R5' 01600000 &LEN SETC 'R14' 01700000 &PRN SETC 'R2' 01800000 &SCH SETC 'R15' 01900000 SPACE 5 02000000 JHEAD 'ASSEMBLY PHASE - PRINT ROUTINE', X02100000 PHASEID=X5P, X02200000 LEVEL=10 02300000 * * 02400000 *FUNCTION/OPERATION- * 02500000 * THIS ROUTINE IS CALLED TO LIST AND PUNCH ALL TEXT OUTPUT FROM * 02600000 * THE ASSEMBLY PORTION OF THE ASSEMBLE. THIS ROUTINE RECONSTRUCTS * 02700000 * THE ASSEMBY PORTION OF THE ASSEMBLER. THIS ROUTINE RECONSTRUCTS * 02800000 * TEXT FOR THE PRINT FILE FROM THE EDITED TEXT RECORD. IT ALSO USES * 02900000 * INPUT FROM LEFTHF TO CONSTRUCT THE LEFT HALF OF THE PRINT IMAGE, * 03000000 * AND TO BUILD PUNCH RECORD FOR THE PUNCH AND LINK FILES. * 03100000 * * 03200000 *ENTRY POINT- * 03300000 * PRN100 * 03400000 * * 03500000 *INPUT- * 03600000 * EDITED TEXT RECORDS ON JINFILE. * 03700000 * THE LEFT HALF VALUES IN A 19 BYTE TABLE CALLED LEFT HALF * 03800000 * * 03900000 *OUTPUT- * 04000000 * ASSEMBLY LISTINGS TO THE PRINT FILE. * 04100000 * RELOCATABLE OBJECT TEXT TO THE PUNCH AND LINK FILES. * 04200000 * * 04300000 *EXTERNAL ROUTINES * 04400000 * JPUTL * 04500000 * JPUNCH * 04600000 * * 04700000 *EXITS, NORMAL- * 04800000 * EXITS TO THE CALLING ROUTINE THROUGH THE JRETURN MACRO. * 04900000 * * 05000000 *EXITS, ERROR- * 05100000 * NONE * 05200000 * * 05300000 *TABLES/WORK AREAS- * 05400000 * THE DEFINITION OF LEFTHF IS: * 05500000 * * 05600000 * BYTES BITS DATA * 05700000 * * 05800000 * * 05900000 * 00-03 LOCATION OF ENTRY * 06000000 * 04-11 DC DATA IF ENTRY IS A DC OR CCW * 06100000 * 04-05 OPCODE IF ENTRY IS A MACHINE OPERATION * 06200000 * BYTE 05 MAY ALSO CONTAIN LENGTH, REGISTERS, IMEDIATE * 06300000 * DATA. * 06400000 * 06-07 BASE-DISPLACEMENT 1 * 06500000 * 08-09 BASE-DISPLACEMENT 2 * 06600000 * 10-11 FLAGS * 06700000 * 0-1 01 ENTRY IS ALIGNMENT. * 06800000 * 10 ENTRY IS A DC * 06900000 * 11 ENTRY IS AN EQUATE * 07000000 * 2 BASE-DISPLACEMENT 1 PRESENT * 07100000 * 3 BASE-DISPLACEMENT 2 PRESENT * 07200000 * 4-7 LENGTH OF ENTRY. (IF ALL BITS ON DON'T PRINT LEFT HALF* 07300000 * 12-15 ADDRESS 1 * 07400000 * 16-19 ADDRESS 2 * 07500000 * TOTAL LENGTH OF LEFT HALF IS 20 BYTES * 07600000 * * 07700000 *ATTRIBUTES- * 07800000 * REFRESHABLE * 07900000 * * 08000000 *NOTES * 08100000 * NONE * 08200000 * * 08300000 * * 08400000 EJECT 08500000 PRINT OFF DON'T PRINT JCOMMON COPY CODE 08550000 COPY JCOMMON INCLUDE COMMON DSECT 08600000 PRINT OFF DON'T PRINT JTEXT COPY CODE 08700000 COPY JTEXT INCLUDED TEXT DSECT 08800000 PRINT OFF DON'T PRINT X5COM COPY CODE 08900000 COPY X5COM INCLUED ASSEMBLY PHASE COMMON 09000000 PRINT ON PRINT PRINT AREA DSECT 09100000 PRNIMG DSECT 09200000 * PRINT WORK AREA 09300000 PRNLN DS 0CL121 LENGTH OF PRINT LINE 09400000 CCTRL DS C CARRIAGE CONTROL 09500000 TITCD DS CL8 TITLE CODE FIELD 09600000 DS C BLANKS 09700000 TITLEO DS CL100 TITLE FROM ASSEMBLY 09800000 DS 2C BLANKS 09900000 PAGEO DS CL4 PAGE FOR HEADING 10000000 PGNO DS CL5 PAGE NUMBER 10100000 ORG PRNIMG RE-ORG FOR HEADING LINE 2 10200000 DS C CARRIAGE CONTROL ALREADY DEFINE 10300000 DS 2C BLANKS 10400000 SNDHDO DS CL56 HEADING 2 10500000 DS 38C BLANKS 10600000 SNDHID DS CL24 ID AND DATE PLUS TIME 10700000 ORG PRNIMG RE-ORG FOR LIST EACH LINE 10800000 DS C CARRIAGE CONTROL 10900000 LOCO DS CL6 LOCATION 11000000 DS C BLANK 11100000 OPCDO DS CL4 OP CODE 11200000 IMEDO EQU OPCDO+2 IMEDIATE, RX, OR LENGTH FIELD 11300000 DS C BLANK 11400000 BDPL1 DS CL4 BASE-DISPLACEMENT 1 11500000 DS C BLANK 11600000 BDPL2 DS CL4 BASE-DISPLACEMENT 2 11700000 ADDR1 DS CL6 ADDRESS 1 11800000 ADDR2 DS CL6 ADDRESS 2 11900000 DS C BLANK 12000000 STMTNO DS CL5 STATEMENT NUMBER 12100000 GENFLG DS C GENERATION INDICATION 12200000 NAMFLD EQU * NAME FIELD 12300000 COMMENT DS 0CL80 COMMENT STATEMENTS COME HERE 12400000 ORG PRNIMG RE-ORG FOR OPCODE 12500000 OPFLD DS 0C OPCODE FIELD 12600000 CMNFLD DS 0C COMMENT FIELD 12700000 OPNFLD DS 0C OPERAND FIELD 12800000 MRGFLD DS 0C MARGIN OR POST END FIELD 12900000 ORG PRNIMG REORG FOR ERROR NOTE 13000000 DS CL(1+9) CARR CTL + BLANK 13100000 ERRLOC DC C'*** ERROR ***' 13200000 ORG 13300000 PEJECT EQU 0 CARRIAGE CONTROL EJECT 13400000 P1SPACE EQU 1 CARRIAGE CONTROL SPACE 1 13500000 P2SPACE EQU 2 CARRIAGE CONTROL SPACE 2 13600000 P3SPACE EQU 3 CARRIAGE CONTROL SPACE 3 13700000 GENIND EQU JPLUS MACRO GENERATED INDICATOR 13800000 JTEXTA DSECT 13900000 ORG JTOCO 14000000 OPTR DSW CDPTR CARD POINTER FLAG 14100000 ORG JTOCO REORG FOR OTHER POINTERS 14200000 OCPTR DS C OUTPUT COLUMN POINTER 14300000 LENGTH DS C FIELD (TRUE) LENGTH 14400000 FIELD EQU * 14500000 EJECT 14600000 CRDSCT DSECT , DSECT FOR TXT CARDS 14700000 CRDID DS CL4 12-2-9 PUNCH AND TXT 14800000 ORG CRDID+1 POINT TO AREA THAT NEEDS TRANS 14900000 CRDTR DS 0CL71 LENGTH OF TRANSLATE 15000000 ORG , ORG BACK TO NEXT BYTE 15100000 DS C BLANK 15200000 CRDVLO DS CL3 ADDRESS OF FIRST BYTE OF TEXT 15300000 DS 2C BLANK 15400000 CRDLEN DS CL2 NUMBER OF BYTES OF TEXT 15500000 DS 2C BLANK 15600000 CRDESD DS CL2 ESD OF TEXT 15700000 CRDTXT DS CL56 TEXT - MAXIMUM OF 56 BYTES 15800000 D80 EQU 80 15850000 PRINT ON THAT'S ALL THE COPY CODE 15950000 EJECT 15960000 JCSECT (X5P00) START MODULE CSECT 16000000 * VS1 RELEASE 2.6 CHANGES 16050002 *D301000-305000 OX00222 16060001 *A194100 OX00412 16070001 * VS1 RELEASE 4 CHANGES 16080002 *C608000,617200 OX01764 16090002 *A633900-633940 OX01764 16092002 *A366120,379500,412500 OX02266 16094031 *C336200,380000 OX02266 16096031 *A219500 @AZ13709 16096100 *D288000 &AZ13795 16098100 *A633360,633380 @AX16963 16098900 *D633380 @AZ29272 16099200 *A633340,633380 @AZ29272 16099500 JMODID , CREAT ROUTINE ID 16100000 USING JTEXT,R5 FIXED TEXT USING 16200000 USING JTEXTA,R4 VARIABLE TEXT USING 16300000 USING X5COM,R7 COMMON USING 16400000 USING PRNIMG,R2 PRINT BUFFER USING 16500000 PRN100 JSAVE BASE=YES SAVE CALLING REGISTERS 16600000 JENTRY (X5P01=PRN100) MAKE ENTRY POINT EXTERNAL 16700000 EJECT 16800000 GOIF (JLIST,JDECK,JLINK), IF DECK, LIST, LINK ARE NOT X16900000 OFF=PRNXIT REQUIRED EXIT 17000000 GOIF LTDECV,ON=PRNXIT EXIT IF LITERAL REFERENCE 17100000 CH R10,=H'4' IS IT PRNCAR PRINT INDEX 17120000 BE PRN110 YES 17140000 SET SPACECC,OFF RESET SPACE CONTROL 17160000 PRN110 EQU * 17180000 GOIF JLIST,OFF=INDEX2(R10) IF LIST IS OF USE BRANCH TABLE X17200000 NUMBER 2 17300000 GOIF PSTMT,OFF=PRN125 IS STATEMENT TO BE PRINTED 17400000 GOIF JGEN,ON=PRN150 IS TEXT GENERATED 17500000 B INDEX1(R10) NO, USE BRANCH TABLE NUMBER1 17600000 INDEX1 B PRNLST ENTRY IS FOR STANDARD LISTING 17700000 B PRNCAR ENTRY IS CARRIAGE CONTROL 17800000 B PRNPUN ENTRY IS FOR PUNCH STATEMENT 17900000 B PRNRPO ENTRY IS FOR REPRO CARD 18000000 B PRNDC ENTRY IS FOR A DC 18100000 B PRNERR ERROR ROUTINE 18200000 B PRNMNO GET BUFFER FOR MNOTE 18300000 INDEX2 B PUNRTN NO LIST - GO CHECK PUNCH OPTION 18400000 B PRNXIT NO LIST - EXIT 18500000 B PRNPUN GO CHECK PUNCH OPTION 18600000 B PRNRPO GO CHECK PUNCH OPTION 18700000 B PUNRTN GO CHECK PUNCH OPTION 18800000 B PRNXIT EXIT IF NOLIST 18900000 B PRNXIT EXIT NO MNOTE 19000000 PRN125 GOIF PRPP,ON=INDEX1(R10) WAS PRINT FORCED ? 19030000 B INDEX2(R10) IF NOT USE BRANCH TABLE NR 2 19060000 PRN150 GOIF PGEN,ON=INDEX1(R10) CHECK PRINT GEN OPTION IF ON 19100000 CLI JTIOP1,JTMNOTE IS IT AN MNOTE? 19200000 BE INDEX1(R10) USE INDEX 1 IF MNOTE 19300000 GOIF JERR,ON=INDEX1(R10) USE INDEX 1 IF STMT FLAGGED 19360000 SET DCMOP,OFF CLEAR SWITCH TO BE SURE OX00412 19410001 B INDEX2(R10) ELSE USE INDEX 2 19420000 PRNXIT SET (DCSWH,DCCOMP,DCMOP,DCSTRT),OFF TURN OFF ALL DC FLAGS 19500000 SET PRPP,OFF RESET FORCED POP PUSH PRINT 19550000 PRN200 XC DCDATA(L'LEFTHF-L'LOCATN),DCDATA ZERO LEFT HALF 19600000 SET COLOVLP,OFF TURN OVERLAP SWITCH OFF 19700000 PRNLEV JRETURN , EXIT 19800000 EJECT 19900000 PRN800 CVD &SCR,DWORD1 CONVERT NUMBER TO DECIMAL 20000000 UNPK DWORD2(L'STMTNO),DWORD1 UNPACK NUMBER 20100000 NC DWORD2(D5),ZMASK MASK OUT ZONE BITS 20200000 LA &SCR,D4 GET MAXIMUM BLANKS TO ADD 20300000 LA &SCH,DWORD2 POINT TO NUMBER 20400000 PRN810 CLI D0(&SCH),J0 IS LEADING DIGIT ZERO 20500000 BNE PRN820 NO 20600000 MVI D0(&SCH),JBLANK YES,BLANK OUT 20700000 LA &SCH,D1(,&SCH) BUMP POIMTER 20800000 BCT &SCR,PRN810 GO BACK IF COUNT NOT DEPLETE 20900000 PRN820 BR R6 RETURN 21000000 SPACE 21100000 PRN600 L R2,PRNSV1 21300000 JPRINT , 21400000 LR &PRN,R11 SAVE NEW BUFFER ADDRESS 21500000 ST R2,PRNSV1 SAVE PRINT BUFFER POINTER 21600000 BR &BAL RETURN 21700000 EJECT 21800000 PRNLST BAL R6,PRINT GO GET PRINT LINE 21900000 SET SPACECC,OFF RESET SPACE CONTROL @AZ13709 21950000 TM LHFLGS,DNTPLH IS LEFT HALF TO BE PRINTED 22000000 BO LIST1 YES, GO PRINT SOURCE 22100000 UNPK LHWORK(D15),LEFTHF(D8) UNPACK THE LEFT HALF OF 22200000 UNPK LHWORK+D14(D15),LEFTHF+D7(D8) THE PRINT LINE FOR 22300000 UNPK LHWORK+D28(D15),LEFTHF+D14(D8) PRINTING 22400000 NC LHWORK,ZMASK MASK OUT ZONE BITS FROM UNPACK 22500000 GOIF EOUBIT,ON=PRL300 BRANCH IF ORG EQU OR USING 22550000 TM LHFLGS,ENTDC+ENTALN 22600000 MVC LOCO,ULOCO+D2 MOVE LOCATION TO PRINT LINE 22700000 BZ PRL200 NOT ALIGNMENT OR DC 22800000 BM PRL100 IS ALIGNMENT OR DC 22900000 B LIST1 GO PRINT SOURCE 23100000 PRL100 IC R14,LHFLGS GET LENGTH OF DATA 23200000 LA R15,JF GET MASK 23300000 NR R14,R15 AND OUT EXTRA BITS 23400000 BZ PRL150 BRANCH IF NO DATA TO MOVE 23500000 SLL R14,D1 DOUBLE FOR PRINT LENGTH 23600000 BCTR R14,0 GET MOVE LENGTH 23700000 EX R14,MVDCDA EXECUTE MOVE TO PRINT LINE 23800000 PRL150 EQU * BRANCH LABEL 23900000 GOIF ENTALN,ON=PUNRTN PRINT COMPLETE FOR ALIGNMENT 24000000 GOIF DCSWH,ON=DC100 DC OR CCW 24100000 B LIST1 GO PRINT CCW 24200000 MVDCDA MVC OPCDO(D0),UOPCOD EXECUTED MOVE OF DC AND ALIGN 24300000 EJECT 24400000 PRL200 TM LHFLGS,DNTPLH IS LENGTH OF ENTRY ZERO 24500000 BZ LIST1 YES, LEFT HALF COMPLETE 24600000 MVC OPCDO,UOPCOD GET OPCODE AND SECOND BYTE 24700000 CLI LHFLGS,D2 IS ENTRY 2 BYTES LONG 24800000 BE LIST1 YES, LEFT HALF COMPLETE 24900000 MVC BDPL1,UBASD1 MOVE BASE-DISPLACEMENT 1 25000000 MVC ADDR1,UADR1+D2 MOVE ADDRESS 1 TO PRINT 25100000 CLI ADDR1,J0 DOES ADDRES 1 HAVE LEADING 0 25200000 BNE PRL250 NO, LEAVE AS IS 25300000 MVI ADDR1,JBLANK YES, BLANK OUT ZERO 25400000 PRL250 CLI LHFLGS,D4 IS ENTRY LENGTH 4 25500000 BE LIST1 YES, LEFT HALF COMPLETE 25600000 MVC BDPL2,UBASD2 MOVE BASE-DISPLACEMENT 2 25700000 MVC ADDR2,UADR2+D2 MOVE ADDRESS 2 TO PRINT 25800000 CLI ADDR2,J0 DOES ADDRESS 2 HAVE LEADING 0 25900000 BNE LIST1 NO, LEAVE AS IS 26000000 MVI ADDR2,JBLANK YES, BLANK LEADING ZERO 26100000 B LIST1 GO PRINT RIGHT HALF 26200000 PRL300 MVI LOCO,X'2F' ZERO OUT LEFTH HALF 26250000 MVC LOCO+D1(D23),LOCO 26260000 MVC ADDR2-D2(D8),UADR2 MOVE VALUE FOR PRINT 26270000 CLI ADDR2-D2,J0 SUPRESS UP TO 3 LEADING ZEROS 26280000 BNE PRL400 26290000 MVI ADDR2-D2,JBLANK 26292000 CLI ADDR2-D1,J0 26294000 BNE PRL400 26296000 MVI ADDR2-D1,JBLANK 26298000 CLI ADDR2,J0 26298400 BNE PRL400 26298800 MVI ADDR2,JBLANK 26299200 PRL400 GOIF JTORG,NE=LIST1 IS IT ORG ? 26299600 MVC LOCO,ULOCO+D2 YES MOVE LOCTR FOR PRINT 26299700 B LIST1 GO PRINT SOURCE 26299800 EJECT 26300000 PRNCAR LR R3,R11 SAVE NUMBER OF LINES TO SPACE 26400000 GOIF (R3),NEG=CAR600 IS IT EJECT 26450000 GOIF JLNCT,LNCNT+D2,NE=CAR025 TOP OF PAGE ? 26500000 GOIF SPACECC,OFF=CAR025 FIRST LINE ON NEW PAGE 26510000 SET SPACECC,OFF RESET NEW PAGE INDICATOR 26520000 LA R3,D1(R3) ADD 1 FOR SPACE IN HEADING 26550000 L R4,LNCNT GET LINES LEFT ON PAGE 26600000 LA R4,D1(R4) COMPENSATE FOR 1 SPACE 26650000 ST R4,LNCNT SAVE NEW LNCNT 26660000 CAR025 GOIF TWASLC,ON=CAR050 BUFF AVAIL SO DO NOT COMP PRT 26670000 L R4,LNCNT PICK UP LNCNT 26680000 LA R4,D1(R4) COMPENSATE FOR PRINT 26690000 ST R4,LNCNT SAVE NEW LNCNT 26700000 CAR050 BAL R6,PRINT GO GET PRINT LINE 26750000 L R4,LNCNT PICK UP LNCNT 26800000 SR R4,R3 SUBTRACT NUMBER OF SPACES 26850000 BNH CAR700 EJECT IF NOT ENOUGH LINES LEFT 26900000 ST R4,LNCNT STORE REMAINING LINES + COMP 26950000 CAR100 BCT R3,CAR200 DOES SPACE = 1 27200000 B PRNXIT YES, EXIT 27300000 CAR200 BCT R3,CAR300 DOES SPACE = 2 27400000 MVI CCTRL,P2SPACE YES, SET CARRIAGE CONTROL 27500000 B PRNXIT EXIT 27600000 CAR300 MVI CCTRL,P3SPACE SET CARRIAGE CONTROL = 3 27700000 BCT R3,CAR400 STILL MORE LINES TO SPACE 27800000 B PRNXIT NO, EXIT 27900000 CAR400 L R4,LNCNT COMP FOR PRT TO PREVENT EJECT 28000000 LA R4,D1(R4) ADD 1 TO COMPENSATE FOR PRINT 28060000 ST R4,LNCNT STORE REMAINING LINES 28070000 BAL R6,PRINT PRINT SPACE 3 28080000 B CAR100 GO CHECK FOR MORE SPACES 28100000 CAR600 GOIF TWASLC,ON=CAR700 WAS EJECT LAST OP 28200000 BAL R6,PRINT GET PRINT LINE 28250000 GOIF JLNCT,LNCNT+D2,NE=CAR700 TOP OF PAGE ? 28300000 SET TWASLC,ON INDICATE BUFFER AVAILABLE 28350000 B PRNXIT SUPRESS EJECT 28400000 CAR700 L R2,PRNSV1 RESTORE BUFFER POINTER 28450000 BAL R6,PRNEJT SET UP RETURN REGISTER 28500000 B PRNXIT RETURN 28600000 PRNEJT ST R6,PRNSAVE SAVE RETURN REGISTER 28700000 SET TWASLC,ON INDICATE BUFFER AVAILABLE 28850000 B PRT150 GO PRINT TITLES 28900000 EJECT 29000000 * LISTSRC 29100000 * 29200000 * THIS ROUTINE RECONSTRUCTS THE SOURCE RECORDS IN THE PRINT AREA 29300000 * AND CALLS PRINT TO LIST ALL CARDS BUT THE LAST IN THE STATEMENT 29400000 * THE LAST(OR,MOST OFTEN,THE ONLY)CARD IS PRINTED AFTER PROCESSING 29500000 SPACE 29600000 LIST1 GOIF JNOCNT,ON=LST100 DOES STATEMENT GET NUMBER 29700000 L R1,STMTN GET STATEMENT NUMBER 29800000 BAL R6,PRN800 GO CONVERT IT FOR LISTING 29900000 MVC STMTNO,DWORD2 MOVE CONVERTED NUMBER TO LIST 30000000 SPACE 30600000 LST100 SET COLOVLP,OFF TURN OFF OVERLAP CHECK BIT 30700000 XC COLSAV,COLSAV ZEROED OUT SAVE AREA 30800000 LH R4,JTNMP GET NAME POINTER 30900000 BAL &BAL,FLDMOVE MOVE NAME TO OUTPUT 31000000 SPACE 31100000 * MOVE OPCODE FIELD 31200000 SPACE 31300000 LH &IPT,JTOCP GET OPCODE POINTER 31400000 BAL &BAL,FLDMOVE MOVE TO OUTPUT 31500000 SPACE 31600000 * MOVE OPERAND FIELD 31700000 SPACE 31800000 LH &IPT,JTOPP GET OPERAND POINTER 31900000 BAL &BAL,FLDMOVE MOVE TO OUTPUT 32000000 SPACE 32100000 * MOVE COMMENTS TO OUTPUT 32200000 SPACE 32300000 LH &IPT,JTCPR GET COMMENTS POINTER 32350000 BAL &BAL,FLDMOVE MOVE TO OUTPUT 32500000 BAL &BAL,STRING INSERT STRINGS INTO PRINT LINE 32520000 GOIF JGEN,OFF=LIST6 GOIF NOT GENERATED 32530000 L &SCR,DWORD1 GET CONTINUATION COLUMN POINTER 32540000 CLI D0(&SCR),JBLANK IS CONTINUATION COL BLANK 32600000 BE LIST6 YES 32620000 MVI D0(&SCR),JBLANK NO, MAKE IT SO 32640000 SPACE 32700000 LIST6 GOIF DCSWH,ON=DC300 IS ENTRY A DC 32800000 GOIF ENTDC,ON=PRNXIT EXIT IF DATA NO TO BE PUNCHED 32900000 TM LHFLGS,DNTPLH ANY PUNCH DATA 33000000 BM PUNRTN YES, GO PACK IN PUNCH CARD 33100000 B PRNXIT RETURN TO MAINLINE 33200000 EJECT 33300000 * FLDMOVE 33400000 * 33500000 * THIS ROUTINE MOVES THE NAME,OPERATION,OPERAND OR COMMENTS FIELD 33600000 * TO THE PRINT AREA.IF THE FIELD IS TOO LONG TO FIT INTO THE CURRENT 33700000 * LINE PART OF THE FIELD IS MOVED AND THE LINE IS PRINTED.THIS 33800000 * PROCESS CONTINUES UNTIL THE WHOLE FIELD IS MOVED. 33900000 * CALL BY BAL BAL,FLDMOVE WITH REG IPT CONTAINIG A POINTER TO THE 34000000 * FIELD GROUP. 34100000 SPACE 34200000 FLDMOVE ST &BAL,FLDSAVE SAVE LINK REGISTER 34300000 AR &IPT,&TBP TURN POINTER INTO ADDRESS 34400000 GOIF CDPTR,OFF=FLD1 TEST IF CARD PTR,GO IF NOT 34500000 SPACE 34600000 * HANDLE CARD POINTER 34700000 SPACE 34800000 MVC CARDP,OPTR SAVE CARD POINTER 34900000 SET CDPTR1,OFF TURN OFF FLAG BIT 35000000 FLD01 SR &SCR,&SCR CLEAR REGISTER 35100000 IC &SCR,CARDP GET CARD POINTER 35200000 SH &SCR,CDSTMT SUBTR CURRENT CARD-WITHIN-STMT 35300000 BNH FLD02 WE ARE DONE IF NOT IN NEW CARD 35400000 BAL &BAL,STRING INSERT STRINGS INTO PRINT LINE 35500000 BAL &BAL,PRINT PRINT CURRENT CARD 35600000 XC COLSAV,COLSAV CLEAR SAVE AREA FOR COLUMN PTR 35700000 SET COLOVLP,OFF TURN OFF OVERLAP CHECK BIT 35800000 B FLD01 GO TEST NEXT CARD 35900000 FLD02 LA &IPT,L'OPTR(,&IPT) POINT TO COLUMN POINTER 36000000 SPACE 36100000 FLD1 SR &OPT,&OPT CLEAR REGOSTER 36200000 IC &OPT,OCPTR GET OUTPUT COLUMN POINYER 36300000 SR &LEN,&LEN CLEAR THIS ONT TOO 36400000 IC &LEN,LENGTH GET FIELD LENGTH 36500000 GOIF (R14),NOTZERO=FLD10 CHECK IF OPERAND LENGTH ZERO 36600000 GOIF JPSOP,OFF=FLD1A CAN IT BE ICTL 36605000 GOIF JTICTL,EQ=FLD2 ICTL STATEMENT ? 36610000 FLD1A GOIF JPRGICTL,OFF=FLD2 USE STD ICTL OX02266 36612031 LH &SCR,JENDCL NOT ICTL -GET END COL-1 OX02266 36620031 B FLD3 GO GET OUT 36630000 FLD2 LA &SCR,D7*D10+D1 USE STANDARD ICTL 36640000 FLD3 LA &SCR,NAMFLD(&SCR) POINT TO END COLUMN 36650000 ST &SCR,DWORD1 SAVE IT 36660000 L R6,FLDSAVE RESTORE LINKAGE REGISTER 36700000 BR R6 RETURN 36800000 SPACE 36900000 * LEN NOW CONTAINS TRUE LENGTH,OPT OUTPUT COLUMN POINTER 37000000 SPACE 37100000 FLD10 BCTR &LEN,0 DECREASE TO MOVE LENGTH 37200000 GOIF COLOVLP,OFF=FLD20 BRANCH IF OVERLAP BIT IS OFF 37300000 CH R3,COLSAV DOES FIELD OVERLAP? 37400000 BNL FLD20 NO,BRANCH AROUND 37500000 LH R3,COLSAV GET COLUMN PTR SAVED 37600000 SPACE 37700000 FLD20 SET COLOVLP,ON TURN OVERLAP CHECK BIT ON 37800000 GOIF JPSOP,OFF=FLD22 CAN IT BE ICTL 37850031 GOIF JTICTL,EQ=FLD30 ICTL STATEMENT? 37900000 FLD22 GOIF JPRGICTL,OFF=FLD30 USE STD ICTL OX02266 37950031 LH &SCR,JENDCL NOT ICTL -GET END COL-1 OX02266 38000031 SPACE 38100000 FLD25 SR &SCR,&OPT GET MAXIMUM MOVE LENGTH 38200000 BM FLD30 TRY STD ICTL 38250000 FLD27 LA R15,D2(R3,R14) COMPUTE NEXT FIELD PTR 38320000 STH R15,COLSAV SAVE COLUMN PTR FOR NXT FIELD 38400000 CR &LEN,&SCR WILL FIELD FIT INTO THIS LINE 38500000 LA &OPT,NAMFLD-D1(&OPT) 38600000 BH FLD100 NO 38700000 EX &LEN,MOVE YES,MOVE IT 38800000 L &BAL,FLDSAVE RESTORE LINK REGISTER 38900000 LA R1,D1(R1,R3) COMPUTE END COL + 1 38930000 ST R1,DWORD1 SAVE IT 38960000 BR &BAL RETURN 39000000 FLD30 LA R1,D7*D10+D1 USE STD ICTL END COL 39100000 SR R1,R3 NOW TRY MAX MOVE LENGTH 39120000 BNM FLD27 BRANCH IF OK 39140000 LA &OPT,NAMFLD-D1(&OPT) PT TO PRINT POSITION 39160000 LA R6,D1(R1,R3) COMPUTE END COLUMN + 1 39180000 LH R1,=H'-1' SET TO -1 (0=1 BYTE,-1=NO BYTE) 39200000 B FLD101 NOW SKIP MOVE 39220000 FLD100 EX &SCR,MOVE MOVE PART OF FIELD 39300000 LA R6,D1(R1,R3) COMPUTE END COLUMN + 1 39360000 FLD101 SR &LEN,&SCR GET (TRUE) LENGTH OF REMAINDER 39420000 STH &LEN,HWD SAVE LENGTH 39500000 LA &IPT,D1(&SCR,&IPT) GET ADDR OF REMAINING PART 39600000 LR R1,R6 TRANSFER END COLUMN+1 TO R1 39700000 GOIF LITRSW,ON=FLD102 SKIP IF LITERAL 39800000 ST R1,DWORD1 SAVE IT 39900000 BAL &BAL,STRING INSERT STRINGS INTO PRINT LINE 40000000 L R1,DWORD1 RESTORE R1 40100000 SPACE 40200000 FLD102 CLI D0(R1),JBLANK IS IT BLANK? 40300000 BNE FLD105 BRANCH AROUND IF NOT EQUAL 40400000 MVI D0(R1),JX PUT IN CONTINUATION CHAR 40500000 SPACE 40600000 FLD105 GOIF DCSWH,ON=DC500 IS ENTRY A DC 40700000 SPACE 40800000 FLD110 BAL &BAL,PRINT PRINT COMPLETED LINE 40900000 SPACE 41000000 FLD120 LH &LEN,HWD GET LENGTH AGAIN 41100000 GOIF JTICTL,EQ=FLD40 ICTL STATEMENT? 41200000 GOIF JPRGICTL,OFF=FLD40 USE STD ICTL OX02266 41250031 LH &OPT,JCNTCL SET OUTPUT COL PTR=CONT COL 41300000 SPACE 41400000 FLD35 XC COLSAV,COLSAV ZEROED OUT SAVE AREA 41500000 SET COLOVLP,OFF TURN OFF OVERLAP CHECK BIT 41600000 B FLD10 GO MOVE REMAINING PART 41700000 FLD40 LA R3,D16 PUT 16 IN R3 41800000 B FLD35 GO BACK 41900000 EJECT 42000000 * STRING 42100000 * 42200000 * EXTRACT STRINGS FROM TEXT RECORD AND INSERT THEM INTO THE 42300000 * CURRENT PRINT LINE. 42400000 * PARAMETER - STRADR CONTAINS ADDRESS OF CURRENT STRING GROUP.THIS 42500000 * FIELD IS UPDATED HERE,AS IS THE CARD-WITHIN-STATEMTNT COUNTER. 42600000 SPACE 42700000 STRING LH &SCR,CDSTMT GET CARD-WITHIN-STMT COUNTER 42900000 LA &SCR,D1(,&SCR) AND 43000000 STH &SCR,CDSTMT UPDATE IT 43100000 GOIF JGEN,OFF=STR050 IS STATEMENT GENERATED 43200000 MVI GENFLG,GENIND YES, INDICATE AS SUCH 43300000 SPACE 43500000 STR050 L &SCH,STRADR GET STRING GROUP ADDRESS 43600000 DROP &IPT 43700000 USING JTEXTA,&SCH DON'T DESTROY IPT-USE SCH 43800000 CLI JTSTC,D0 ANY STRINGS 43900000 BER &BAL NO 44000000 SR &SCR,&SCR ZERO REGISTER 44100000 IC &SCR,JTSTC GET STRING COUNT 44200000 LA &SCH,JTSTO POINT TO OUTPUT POINTER 44300000 STR100 SR &LEN,&LEN CLEAR REGISTER 44400000 IC &LEN,JTSTL2 GET STRING LENGTH 44500000 BCTR &LEN,0 DECREASE TO MOVE LENGTH 44600000 SR &OPT,&OPT CLEAR REGISTER 44700000 IC &OPT,JTSTO2 GET OUTPUT POINTER 44800000 LA &OPT,NAMFLD-D1(&OPT) MAKE IT AN ABS ADDRESS 44900000 EX &LEN,STRMOVE MOVE STRING TO OUTPUT 45000000 LA &SCH,JTSTR2+D1(&LEN) POINT TO NEXT STRING 45100000 BCT R1,STR100 GO BACK IF SECOND STRING 45200000 SPACE 45300000 ST &SCH,STRADR STORE UPDATED STRING POINTER 45400000 DROP &SCH 45500000 USING JTEXTA,&IPT BACK TO NORMAL REGISTER 45600000 BR &BAL RETURN 45700000 EJECT 45800000 * PRINT 45900000 * 46000000 * THE PRINT BUFFER CONTENTS ARE PRINTED.IF THAT LINE WAS THE 46100000 * THE LAST ON A PAGE,HEADINGS ARE WRITTEN ON NEXT PAGE. 46200000 SPACE 46300000 PRINT ST &BAL,PRNSAVE SAVE LINK REGISTER 46500000 GOIF TWASLC,OFF=PRT120 WAS LAST STATEMENT TITLE 46600000 L R2,PRNSV1 RESTORE PRINT BUFFER POINTER 46700000 SET TWASLC,OFF TURN OFF TITLE INDICATOR 46800000 BR R6 PRINT LINE ALREADY AVAILABLE 46900000 PRT120 BAL &BAL,PRN600 GO GET PRINT LINE 47000000 L R1,LNCNT GET LINE COUNT 47100000 BCT R1,PRT200 DECREMENT AND BRANCH IF NOT 1 47200000 PRT150 MVI CCTRL,PEJECT EJECT CARRIAGE CONTROL 47300000 MVC TITCD,JDECKID MOVE DECK ID TO TITLE 47400000 MVC TITLEO,JTITLE MOVE TITLE 47500000 MVC PAGEO,PAGE MOVE PAGE 47600000 LH R1,JPAGENO GET PAGE COUNT 47700000 LA R1,D1(,R1) INCREMENT BY 1 47800000 STH R1,JPAGENO STORE NEW COUNT 47900000 BAL R6,PRN800 GO CONVERT IT FOR PRINT 48000000 MVC PGNO,DWORD2 MOVE TO PRINT LINE 48100000 BAL R6,PRN600 GO PRINT AND GET NEXT LINE 48200000 MVI CCTRL,P3SPACE CARRIAGE CONTROL 3 SPACES 48300000 MVC SNDHDO,SNDHDR GET SECOND HEADER 48400000 MVC SNDHID,JLVTMDT GET MODULE ID AND DATE 48500000 BAL R6,PRN600 GO PRINT 48600000 MVI CCTRL,P2SPACE CARRIAGE CONTROL 2 SPACES 48700000 SET SPACECC,ON INDICATE TOP OF PAGE 48750000 LH R1,JLNCT GET NEW LINE COUNT 48800000 PRT200 ST R1,LNCNT STORE LINES LEFT ON PAGE 48900000 L &BAL,PRNSAVE RESTORE LINK REGISTER 49000000 BR &BAL ..AND RETURN 49100000 EJECT 49200000 PRNERR GOIF PERR,ON=PRNXIT GO IF NOT FIRST ERR THIS STMT 49300000 BAL R6,PRINT GET POINTER TO PRINT BUFFER 49400000 SET PERR,ON REMEMBER ERROR HAS OCCURRED 49500000 MVC ERRLOC,ERRNOTE MOVE ***ERROR*** TO PRINT LINE 49600000 B PRNXIT EXIT 49700000 SPACE 5 49800000 PRNMNO BAL R6,PRINT GET PRINT BUFFER 49900000 TM JTFLGB,JGEN IS IT GENERATED 49950000 BZ PRNMNO1 BRANCH AROUND IF NOT 49960000 MVI GENFLG,GENIND PUT IN FLAG 49970000 SPACE 49980000 PRNMNO1 L R1,STMTN GET STATEMENT NUMBER 50000000 BAL R6,PRN800 CONVERT IT FOR PRINTING 50100000 LR R11,R2 RET BUFFER ADDR TO PRINT RTN 50150000 B PRN200 RETURN TO MNOTE ROUTINE 50200000 EJECT 50300000 PRNDC SET DCSWH,ON TURN ON DC SWITCH 50400000 L R4,OPNADR PICK UP OPERAND POINTER 50500000 GOIF DCMOP,ON=DC200 IS DC COMPLETE 50600000 GOIF DCCOMP,ON=DC220 IS PRINT OF RECORD COMPLETE 50700000 B PRNLST GO PRINT LEFT HALF 50800000 DC100 GOIF DCCOMP,ON=PUNRTN IS LIST OF RECORD COMPLETE 50900000 GOIF DCSTRT,OFF=LIST1,ELSE=FLD120 IS THIS FIRST LINE OF DC 51000000 DC200 GOIF DCCOMP,ON=PRNXIT,ELSE=FLD110 EXIT IF LIST COMPLETE 51100000 DC220 GOIF PDATA,OFF=PUNRTN,ELSE=PRNLST IS PRINT DATA ON 51200000 DC300 GOIF DCMOP,ON=PRNXIT IS STATEMENT COMPLETED 51300000 SET DCCOMP,ON TURN ON LIST COMPLETE 51400000 B PUNRTN GO PUNCH DATA 51500000 DC500 SET DCSTRT,ON SET START LIST OF RECORD 51600000 ST R4,OPNADR SAVE OPERAND POINTER 51700000 GOIF DCMOP,ON=FLD110 ARE WE MOPPING UP? 51800000 TM DCEVSW,DSSW+DXDSW DS OR DXD? 51900000 BZ PUNRTN ID DC GO TO PUNCH RTN 52000000 B PRN200 EXIT 52100000 EJECT 52200000 PUNRTN GOIF (JDECK,JLINK),NONE=PRN200 EXIT IF DECK AND LINK BOTH OFF 52300000 TM EESDI,BIT1+BIT2+BIT3 ARE WE IN DSECT OR COM 52400000 BNZ PRN200 YES, NO PUNCH 52500000 TM LHFLGS,DNTPLH IS THERE ANY DATA TO PUNCH 52600000 BNM PRN200 NO, EXIT 52700000 L R2,CRDPTR GET POINTER TO PUNCH RECORD 52800000 USING CRDSCT,R2 ESTBLISH USING FOR PUNCH RECORD 52900000 LH R1,CRDCNT GET COUNT OF BYTES IN TEXT CARD 53000000 LTR R1,R1 IS IT ZERO 53100000 BZ PUN300 YES GO GET A NEW CARD 53200000 CH R1,=H'56' IS CARD FULL 53300000 BE PUN300 YES GO GET A NEW CARD 53400000 CLC CRDVAL,LOCATN HAS LOCATION COUNTER JUMPED 53500000 BNE PUN500 NO, GO PUNCH NEW RECORD 53600000 CLC CRDESD,EESDI DID ESD ID CHANGE 53630000 BNE PUN500 YES 53660000 PUN100 IC R10,LHFLGS GET LENGTH OF PUNCH DATA 53700000 N R10,=A(X'0F') CLEAR EXTRA BITS 53800000 AR R1,R10 COMPUTE NEW LENGTH 53900000 CH R1,=H'56' WILL NEW DATA FIT IN THIS CARD 54000000 BH PUN400 NO GO SPLIT IT 54100000 AH R2,CRDCNT POINT PAST TEXT ALREADY IN CARD 54200000 LR R11,R10 SAVE LENGTH OF DATA 54300000 BCTR R10,0 GET MOVE LENGTH OF INPUT 54400000 EX R10,CRDMVC MOVE DATA TO CARD 54500000 A R11,CRDVAL ADD TO CARD LOCATION COUNTER 54600000 ST R11,CRDVAL SAVE NEW ADDRESS 54700000 STH R1,CRDCNT SAVE COUNT OF TEXT BYTES 54800000 B PRN200 EXIT 54900000 PUN500 MVC CRDLEN,CRDCNT MOVE TEXT LENGTH 54950000 PUN300 MVC CRDVAL,LOCATN UPDATE CARD LOCATION COUNTER 55000000 BAL R6,PUN800 GO PUNCH CARD 55100000 SR R1,R1 ZERO CARD BYTE COUNT 55200000 XC CRDCNT,CRDCNT INITIALIZE BYTE COUNT 55300000 B PUN100 CONTINUE OUTPUT 55400000 PUN400 LR R4,R1 SAVE BYTE COUNT 55500000 SH R4,=H'56' GET BYTES OVER FIT 55600000 SR R10,R4 GET NUMBER OF BYTES THAT FIT 55700000 LR R11,R10 SAVE COUNT 55800000 STH R10,CRDLAC SAVE NUMBER BYTES PUT THIS CARD 55900000 BCTR R10,0 GET MOVE LENGTH 56000000 AH R2,CRDCNT ADD CARD COUNT 56100000 EX R10,CRDMVC MOVE PART OF INPUT TO TEXT CARD 56200000 A R11,CRDVAL COMPUTE ADDRESS OF NEXT CARD 56300000 ST R11,CRDVAL SAVE NEW ADDRESS 56400000 BAL R6,PUN800 GO PUNCH CARD 56500000 LH R10,CRDLAC GET BYTES PUT LAST CARD 56600000 AR R10,R7 STEP PAST BYTES ALREADY PUT 56700000 LR R11,R4 SAVE LENGTH OF DATA 56800000 BCTR R4,0 GET MOVE LENGTH OF DATA 56900000 EX R4,CRDMV2 MOVE REMAINING OUTPUT DATA 57000000 STH R11,CRDCNT SAVE NEW BYTE COUNT 57100000 A R11,CRDVAL COMPUTE NEXT INPUT ADDRESS 57200000 ST R11,CRDVAL SAVE NEW ADDRESS 57300000 B PRN200 EXIT 57400000 PUN800 JPUNCH SEQ=YES PUNCH RECORD 57700000 LR R2,R11 LOAD TEXT POINTER 57800000 MVC CRDID,TXTID MOVE IDENTIFIER TO TEXT CARD 57900000 TR CRDTR,JTRTABLE TRANSLATE CARD TO EXTERNAL 58000000 ST R11,CRDPTR STORE IT FOR LATER USE 58100000 MVC CRDVLO,CRDVAL+D1 MOVE VALUE TO PRINT 58200000 MVC CRDESD,EESDI MOVE TXT ESD 58300000 MVC CRDLEN,=H'56' MOVE TXT LENGTH 58400000 BR R6 RETURN TO CALLING LOCATION 58500000 TXTID JGENIN '2TXT' INTERNAL TEXT ID 58600000 CRDMVC MVC CRDTXT(0),DCDATA EXECUTED MOVE TO TXT CARD 58700000 DROP R7 INVALIDATE THIS REGISTER 58800000 USING X5COM,R10 ESTABLISH NEW USING 58900000 CRDMV2 MVC CRDTXT(0),DCDATA EXECUTED MOVE TO NEW CARD 59000000 DROP R10 INVALIDATE THIS REGISTER 59100000 USING X5COM,R7 RE-ESTABLISH COMMON USING 59200000 EJECT 59300000 PRNPUN GOIF (JDECK,JLINK),NONE=PRN200 LINK OR DECK MUST BE ON 59400000 NC CRDCNT,CRDCNT IS BYTES IN CARD ZERO 59500000 BZ PPUN10 YES FORGET TEXT CARD 59600000 L R2,CRDPTR POINT TO OUTPUT CARD 59700000 MVC CRDLEN,CRDCNT MOVE NUMBER OF BYTES TO OUTPUT 59800000 XC CRDCNT,CRDCNT ZERO BYTE COUNT 59900000 PPUN10 LR R6,R11 SAVE PUNCH BYTE COUNT 60000000 JPUNCH SEQ=NO GET PUNCH BUFFER 60100000 BCTR R6,0 GET MOVE LENGTH 60200000 EX R6,MOVPUN MOVE DATA TO PUNCH BUFFER 60300000 B PRN200 EXIT 60400000 EJECT 60500000 PRNRPO GOIF JLIST,OFF=PRP030 LIST MUST BE ON OX01764 60800002 GOIF PSTMT,OFF=PRPO25 AND PRINT MUST BE ON 60900000 BAL R6,PRINT GO GET PRINT BUFFER 61000000 GOIF JNOCNT,ON=PRP005 IF NOCOUNT ON THEN SKIP 61100000 L R1,STMTN GET STATEMENT NUMBER 61200000 BAL R6,PRN800 CONVERT IT 61300000 MVC D32+D3(D5,R2),DWORD2 MOVE STMT NUM TO PRINTLINE 61400000 SPACE 61500000 PRP005 LH R4,JTCPR GET COMMENTS POINTER 61600000 AR R4,R5 POINT TO COMMENT FIELD 61650000 MVC D32+D9(D80,R2),D2(R4) MOVE PRINT DATA OF REPRO 61660000 PRP007 GOIF REPCARD,OFF=PRPO10 PRINT ONLY REPRO CARD OX01764 61720002 SET REPCARD,OFF YES, RESET BIT AND EXIT 61780000 GOIF JPRONLY,ON=PRN200 EXIT IF PRINT ONLY 61840000 USING CRDSCT,R2 ESTABLISH PUNCH CARD USING 61900000 PRPO10 GOIF (JDECK,JLINK),NONE=PRN200 ONE AT LEAST MUST BE ON 62000000 GOIF JSYSGEN,OFF=PRP015 DO WE NEED TO TEST 62010000 GOIF JPRESD,ON=PRN200 IF PRE ESD - EXIT 62050000 PRP015 NC CRDCNT,CRDCNT IS BYTES IN CARD ZERO 62100000 BZ PRPO20 YES, NO CARD IN BUFFER 62200000 L R2,CRDPTR POINT TO OUTPUT CARD 62300000 MVC CRDLEN,CRDCNT MOVE NUMBER OF BYTES TO OUTPUT 62400000 XC CRDCNT,CRDCNT ZERO BYTE COUNT 62500000 PRPO20 JPUNCH SEQ=NO GET PUNCH BUFFER 62600000 MVC D0(D80,R11),D2(R4) MOVE REPRO DATA 62650000 B PRN200 EXIT 63300000 PRPO25 SET REPCARD,OFF CLEAR REP PRT ONLY IND 63332000 GOIF JSYSGEN,OFF=PRP027 IF PHASE 4 WAS SKIPPED @AZ29272 63336000 GOIF JPRONLY,ON=PRN200 EXIT IF PRINT ONLY @AX16963 63337000 PRP027 EQU * @AZ29272 63338000 LH R4,JTCPR GET COMMENT POINTER 63340000 AR R4,R5 POINT TO COMMENT FIELD 63360000 B PRPO10 GO PUNCH 63380000 PRP030 LH R4,JTCPR GET COMMENT POINTER OX01764 63390002 AR R4,R5 POINT TO COMMENT FIELD OX01764 63392002 B PRP007 OX01764 63394002 EJECT 63400000 MOVPUN MVC D0(0,R11),D0(R4) EXECUTED MOVE OF PUNCH CARD 63500000 MOVE MVC D0(0,&OPT),FIELD EXECUTED MOVE-FIELD TO PRINT 63600000 DROP &IPT 63700000 USING JTEXTA,&SCH USE SCH FOR STRING MOVE 63800000 STRMOVE MVC D0(0,&OPT),JTSTR2 EXECUTED - STRING TO OUTPUT 63900000 PAGE JGENIN 'PAGE' 64000000 SNDHDR JGENIN 'LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMEX64100000 NT' SECOND HEADER IN INTERNAL CODE 64200000 ERRNOTE JGENIN '*** ERROR ***' TOO WELL KNOWN TO BE EXPLAINED 64300000 ZMASK DC 40X'0F' MASK TO REMOVE ZONE BITS 64500000 JPATCH X5P00,8A2 5% PATCH AREA 64650000 END 64700000