* /* START OF SPECIFICATIONS **** 00070000 *02* PROCESSOR = ASSEMBLER 00140000 **** END OF SPECIFICATIONS ***/ 00210000 LCLC &TBP TEXT BASE POINTER 00300000 LCLC &BAL LINK REGISTER 00600000 LCLC &OPT OUTPUT POINTER 00900000 LCLC &LEN FIELD LENGTH 01200000 LCLC &SCR SCRATCH REGISTER 01500000 LCLC &SCH ALSO SCRATCH 01800000 LCLC &COM PHASE WORK AREA POINTER 02100000 LCLC &IPT INPUT FIELD ADDRESS 02400000 LCLC &PRN PRINT BUFFER POINTER 02700000 SPACE 5 03000000 GBLC &COMPNM,&ASMID 03050000 SPACE 5 03100000 &SCR SETC 'R1' 03300000 &COM SETC 'R7' 03600000 &OPT SETC 'R3' 03900000 &IPT SETC 'R4' 04200000 &BAL SETC 'R6' 04500000 &TBP SETC 'R5' 04800000 &LEN SETC 'R14' 05100000 &PRN SETC 'R2' 05400000 &SCH SETC 'R15' 05700000 SPACE 5 06000000 JHEAD 'ASSEMBLY PHASE - MAINLINE CONTROL - PROLOG', X06300000 PHASEID=X5C, X06600000 LEVEL=10 06900000 *FUNCTION/OPERATION- * 07200000 * THIS PHASE ACCEPTS THE MACRO GENERATION PHASE AND THE SYMBOL * 07500000 * RESOLUTION PHASE OUTPUT AND COMPLETES THE ASSEMBLY PROCESS. THIS * 07800000 * IS THE MAINLINE CONTROL FOR THE ASSEMBLY PHASE. CONTROL IS PASSED * 08100000 * TO THE ASSEMBLY PHASE BY THE SYMBOL RESOLUTION INTERLUDE PHASE. * 08400000 * PHASE INITIALIZE ROUTINE IS CALLED TO ALLOCATE ALL OF THE NEC- * 08700000 * ESSARY WORK STORAGE AND BUFFERS, AND SET ANY REQUIRED ENTRY CON- * 09000000 * DITIONS. THE GET TEXT ROUTINE IS THEN CALLED TO BRING IN THE FIRST* 09300000 * TEXT RECORD. CONTROL IS THEN PASSED TO THE APPROPIATE ROUTINES TO * 09600000 * PERFORM THE ASSEMBLY FOR THAT RECORD. THE RECORD IS THEN OUTPUT * 09900000 * THROUGH THE PRINT AND PUNCH ROUTINE. THE GET TEXT ROUTINE IS * 10200000 * CALLED TO GET THE NEXT RECORD AND THE PROCESS IS REPEATED. * 10500000 * * 10800000 *ENTRY POINT- * 11100000 * MLC100 * 11400000 *INPUT- * 12000000 * INTERNAL TEXT FILE FROM THE GENERATOR PHASE. * 12300000 * RESOLVED SYMBOLS IN ORDER OF OCCURANCE FROM THE SYMBOL RESOLUTION * 12600000 * PHASE. * 12900000 * * 13200000 *OUTPUT- * 13500000 * RELOCATABLE OBJECT TEXT TO THE PUNCH FILE. * 13800000 * ASSEMBLY LISTINGS TO THE PRINT FILE. * 14100000 * RELOCATION DICTIONARY ENTRIES TO THE POST PROCESSOR. * 14400000 * CROSS REFERENCE ENTRIES TO THE POST PROCESSOR. * 14700000 * ERROR RECORDS TO THE DIAGNOSTIC PHASE. * 15000000 * * 15300000 *EXTERNAL ROUTINES- * 15600000 * TEXT GET * 15900000 * ASSEMBLER OPCODE PROCESSOR * 16200000 * MACHINE OPCODE PROCESSOR * 16500000 * * 16800000 *EXITS, NORMAL- * 17100000 * EXITS TO THE POST PROCESS PHASE. * 17400000 *EXITS, ERROR- * 18000000 * N/A * 18300000 * * 18600000 *TABLES/WORK AREAS- * 18900000 * THESE ARE ALLOCATED IN THE INITIALIZATION MODULE AND ARE * 19200000 * DESCRIBED THERE. * 19500000 * * 19800000 *ATTRIBUTES- * 20100000 * REFRESHABLE * 20400000 * * 20700000 *NOTES- * 21000000 * N/A * 21300000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - JCOX21900000 MMON COPY CODE' 21950000 COPY JCOMMON INCLUDE COMMON DSECT 22200000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - JTEX22500000 XT COPY CODE' 22550000 COPY JTEXT 22800000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - X5CX23100000 OM COPY CODE' 23150000 COPY X5COM 23400000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - DSEX23700000 CT10 DEFINITION (RSYMRCD)' 23750000 DSECT10 DSECT 24000000 COPY RSYMRCD GET DSECT10 DEFINITION 24300000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - POSX24350000 T PROCESSOR RECORD DEFNS (BMDSECTS)' 24400000 COPY BMDSECTS GET POST PROCESSOR RECORD DEFNS 24600000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - JERX24900000 MSGCD COPY CODE' 24950000 COPY JERMSGCD DEFINE ERROR CODES AND SEVERITY 25200000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL' 25500000 JCSECT (X5C00) INITIALIZE MODULE CSECT 25800000 * VS1 REL 3.1 CHANGES 25900031 *C714000 @OX02675 25950005 *A714500 @OX10362 26000005 *A369000 @OX08876 26050005 JMODID , CREATE OBJECT PHASE ID 26100000 * USINGS FOR- 26400000 USING JTEXT,&TBP FIXED TEXT PART 26700000 USING JTEXTA,&IPT VARIABLE TEXT PART 27000000 USING X5COM,&COM PHASE COMMON AREA 27300000 USING DSECT10,R11 ESTABLISH DEFINITION FILE USING 27600000 EJECT 27900000 MLC100 JSAVE BASE=YES SAVE CALLING REGISTERS 28200000 JENTRY (X5C01=MLC100) DEFINE ENTRY 28500000 B INIT INITIALIZE PHASE 28800000 MLC200 B TEXTGET GO GET TEXT RECORD 29100000 MLC250 GOIF JPRONLY,ON=MLC275 IS RECORD PRINT ONLY 29400000 GOIF JPSOP,OFF=MLC285 IS STATEMENT A PSEUDO OP? 29700000 CLI JTIOP1,JTERROR IS IT AN ERROR RECORD? 30000000 BE MLC275 BRANCH AROUND IF YES 30300000 BAL R6,GETDFN GO GET NAME DEFINITION DATA 30600000 MLC275 JCALL ASMOP CALL ASSEMBLER OP ROUTINE 30900000 B MLC200 GO GET NEXT RECORD 31200000 MLC285 BAL R6,GETDFN GO GET NAME DEFINITION DATA 31500000 JCALL MACHOP CALL MACHINE OP ROUTINE 31800000 B MLC200 GO GET NEXT TEXT RECORD 32100000 JEXTRN (X5M01=MACHOP) DEFINE MACHINE OP ENTRY 32400000 JEXTRN (X5A01=ASMOP) DEFINE ASSEMBLER OP ENTRY 32700000 SPACE 33000000 MLC900 JRETURN , EXIT TO CONTROLLER 33300000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - PHAX33600000 SE INITIALIZATION' 33650000 * INIT 33900000 * 34200000 * THIS ROUTINE PERFORMS INITIALIZATION FOR THE ASSEMBLY PHASE 34500000 SPACE 34800000 INIT JGETCORE DBL=X5COMLEN GET WORK STORAGE 35400000 LR &COM,R10 LOAD BASE FOR COMMON 35700000 * INITIALIZE COMMON 36000000 XC PRPU,PRPU ZERO PRINT PUSH LEVEL COUNTER 36300000 SET PRDEFREQ,OFF TURN OFF PRIOR DEFINITION REQ. 36600000 XC USINGT(USSL),USINGT INITIALIZE USING TABLE 36900000 MVI USINGT+D6,X'0F' IND END USING TABLE @OX08876 36950005 XC LITPID,LITPID INITIALIZE LITERAL POOL ID 37200000 TS SELFDEFN SET SELF DEFINITION FLAG ON 37500000 XC ELCTR(FLDEND-ELCTR),ELCTR INITIALIZE TO ZERO 37800000 MVI JSEVER,D0 SET HIGH.SEV.CODE TO 0 38100000 SET XRFNO,ON TURN ON XREF SWITCH 38400000 MVC EESDI,JESDID INITIALIZE ESDID 38700000 LA R1,TERMS INITIALIZE 39000000 ST R1,ATPTR EVALUATION 39300000 LA R1,RLIST WORK 39600000 ST R1,ALPTR AREA 39900000 LA R1,OPRNS-1 POINTERS 40200000 ST R1,AOPTR FOR ASSEMBLY 40500000 MVI LNCNT+D3,D1 INITIALIZE LINE COUNT TO 1 40800000 MVI JTITLE,JBLANK BLANK OUT 41100000 MVC JTITLE+D1(L'JTITLE-D1),JTITLE THE TITLE BUFFER 41400000 MVI LISTSW,BITFF INITIALIZE LIST SWITCH 41700000 GOIF JLIST,ON=INIT1 LEAVE ON IF JLIST IS ON 42000000 NI LISTSW,BITFF-PSTMT TURN OFF LIST SWITCH 42300000 INIT1 SET (JRLDCHK,JXREFCHK,JERRCHK),OFF ASSUME NO RLDS,ERRS,XREFS 42600000 SPACE 42900000 L &SCR,JBEGCL GET BEGIN COLUMN-1 43200000 LA &SCR,D1(,&SCR) ADD 1 43500000 STH &SCR,JBGNCL STORE BEGIN COL PTR 43800000 L &SCR,JCTBGN GET CONTINUE COLUMN-1 44100000 LA &SCR,D1(,&SCR) ADD 1 44400000 STH &SCR,JCNTCL STORE CONT COL PTR 44700000 L &SCR,JBEGCL GET BEGIN COLUMN-1 45000000 A &SCR,JSRCLN ADD SOURCE FIELD MOVE LENGTH 45300000 LA &SCR,D1(,&SCR) AND 1 45600000 STH &SCR,JENDCL JENDCL NOW CONTAINS END COL-1 45900000 SPACE 46200000 SET (PSTMT,PGEN),ON INITIALIZE PRINT SWITCH 46500000 NC PRINTSW,LISTSW TURN OFF PSTMT IF JLIST IS OFF 46800000 JPOINT FILE=FILE2,NEXT=START REWIND FILE2 47100000 B MLC200 GO GET FIRST TEXT RECORD 47400000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - GETX47450000 DEFINITION RECORD ROUTINE' 47700000 GETDFN LH R4,JTNMP GET NAME FIELD POINTER 48000000 SET NAMPRS,OFF TURN OF NAME PRESENT SWITCH 48300000 AR R4,R5 ADD TEXT RECORD POINTER 48600000 GOIF JTNML,D0,EQ=(R6) IS NAME PRESENT 48900000 GOIF JPSOP,OFF=GT100 CHECK FOR MACHINE OPERATION 49200000 GOIF JTEND,LT=(R6) DO WE WORRY ABOUT NAME 49500000 GOIF JTTITLE,EQ=(R6) EXIT IF TITLE 49800000 GT100 CLI JTNAME,JALFAMAX SEE IF REAL NAME 50000000 BHR R6 EXIT IF NOT 50200000 GOIF JNMERR,ON=(R6) IS NAME VALID? 50400000 LH R10,JINFILE YES, GET FILE NUMBER 50700000 JGETL FILE=(R10) GET DEFINITION DATA 51000000 ST R11,SYMDEF SAVE DATA POINTER 51300000 SET NAMPRS,ON TURN ON NAME PRESENT SWITCH 51600000 SR R2,R2 CLEAR REGISTER 52200000 IC R2,JTNML GET NAME LENGTH 52500000 BCTR R2,0 SUBTRACT 1 FOR EXECUTE 52800000 EX R2,COMPNAME GO TO COMPARE NAME 53100000 BE GT150 BRANCH IF EQUAL 53400000 X5ERRL 167,0 SYMBOL FILE OUT OF PHASE 53700000 LA R10,LSTOUT GET PRINT LISTING INDEX 54000000 JCALL OUTPUT CALL PRINT 54300000 LA R10,ERROUT GET ERROR FLAG INDEX 54600000 JCALL OUTPUT CALL PRINT 54900000 B TEXTGET GO BACK TO GET TEXT RECORD 55200000 JEXTRN (X5P01=OUTPUT) 55500000 SPACE 55800000 GT150 GOIF JXREF,OFF=GT250 DO WE MAKE CROSS REFERENCES 56100000 SET JXREFCHK,ON YES, TURN ON XREF MADE 56400002 LR R4,R11 SAVE DEFINITION POINTER 56700000 LH R10,JOUTFILE GET OUTPUT FILE NUMBER 57000000 JPUTL FILE=(R10),BUFREQ=XRFVAL-XRFIN+L'XRFVAL GET XRF OUTPUT 57300000 USING XRFIN,R11 ESTABLISH USING FOR XREF 57600000 USING DSECT10,R4 CHANGE USING FOR DEFN DATA 57900000 MVC XRECLN(D6),=AL2(XRFND,0,XRFTYPE*256) MOVE HEADER DATA 58200000 MVC XRFSYM,RNAME MOVE NAME TO RECORD 58500000 MVI XRFFLG,BASE SET DEFINITION DATA FLAG 58800000 MVC XRFSTM,STMTN+D2 MOVE STATEMENT DATA TO RECORD 59100000 MVC XRFLEN,RLNGQ MOVE LENGTH OF DATA ITEM 59400000 MVC XRFVAL,RLCTR VALUE OR ADDRESS OF ITEM 59700000 GOIF PRIORDEF,OFF=GT200 IS THIS A MULTIPLE DEFINITION 60000000 MVI XRFFLG,DUPL YES, CHANGE DEFINITION FLAG 60300000 ST R4,ERRPTR SAVE DEFINITION DATA POINTER 60600000 X5ERRL 196,DTAPTR LOG ERROR 60900000 BR R6 EXIT 61200000 COMPNAME CLC 2(0,R4),12(R11) COMPARE NAME IN TEXT & SYMFILE 61500000 GT200 GOIF DEFINED,OFF=(R6) HAS IT BEEN DEFINED BEFORE 61800000 MVI XRFFLG,REF 62100000 BR R6 62400000 GT250 LR R4,R11 SAVE SYMBOL DEFINITION POINTER 62410000 GOIF PRIORDEF,OFF=(R6) IS THIS A PRIOR DEFINITION 62450000 ST R4,ERRPTR SAVE DEFINITION DATA POINTER 62500000 X5ERRL 196,DTAPTR LOG ERROR 62550000 BR R6 RETURN TO MAINLINE 62600000 JEXTRN (X5L01=LOGERR) DEFINE EXTERNAL SYMBOL 62700000 USING JTEXTA,R4 RESET USING FOR VARIABLE TEXT 63000000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - PHAX63300000 SE WRAP-UP FUNCTIONS' 63350000 * CLOSE 63600000 * 63900000 * THIS ROUTINE PERFORMS PHASE WRAP-UP FUNCTIONS 64200000 SPACE 64500000 CLOSE NC CRDCNT,CRDCNT IS BYTES IN PUNCHED CARD ZERO 65100000 BZ CLOSE0 YES, DON'T PLACE IN TEXT CARD 65400000 L R1,CRDPTR GET POINTER TO PUNCH CARD 65700000 MVC D10(D2,R1),CRDCNT MOVE NUMBER BYTES TO CARD 66000000 SPACE 66300000 CLOSE0 GOIF (JERRCHK,JXREFCHK,JRLDCHK),OFF=CLOSE1 IS EOF RECORD NEC 66600000 LH R10,JOUTFILE GET OUTPUT FILE POINTER 66900000 JPUTM FILE=(R10),ADDR=ERREOF OUTPUT EOF RECORD 67200000 CLOSE1 JFRECORE ADDR=(&COM) RELEASE WORK STORAGE 67500000 LH R10,JINFILE SWITCH INPUT AND 67800000 MVC JINFILE,JOUTFILE OUTPUT FILES 68100000 STH R10,JOUTFILE FOR NEXT PHASE 68400000 JPOINT FILE=FILE1,NEXT=START REPOSITION 68700000 JPOINT FILE=FILE2,NEXT=START ALL 69000000 JPOINT FILE=FILE3,NEXT=START WORK FILES 69300000 B MLC900 THUS ENDETH THE ASSEMBLY 69600000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - TEXX69900000 T RECORD GET ROUTINE' 69950000 * TEXT GET ROUTINE 70200000 * GETS A TEXT RECORD AND INITIALIZES FOR PROCESSING OF IT 70500000 SPACE 70800000 TEXTGET L R1,SYMXRF GET NBR OF SYMB XREFED OX02675 71400031 MVI DUMSW,X'00' CLEAR SW FOR X5L @OX10362 71450005 SR R4,R4 ZERO REGISTER FOR NEXT USE 71700000 IC R4,SYMCNT GET NUMBER OF SYMBOLS THIS CARD 72000000 SR R4,R1 DETERMINE SYMBOLS REMAINING 72300000 BNH TXT040 ALL SYMBOLS REFERENCED 72600000 TXT010 LH R10,JINFILE GET FILE NUMBER 72900000 JGETL FILE=(R10) GET REFERENCE DATA 73200000 BCT R4,TXT010 GO BACK IF MORE SYMBOLS 73500000 TXT040 XC SYMXRF,SYMXRF RESET REFERENCE COUNT 73800000 JGETL FILE=FILE2 GET TEXT RECORD 74100000 LR &TBP,R11 LOAD TEXT BASE REGISTER 74400000 ST R5,TXTPTR SAVE TEXT POINTER 74700000 GOIF JTEOF,EQ=CLOSE GO CLOSE PHASE IF END-OF-FILE 75000000 GOIF JPSOP,OFF=TXT045 BRANCH IF NOT PSEUDO OP 75048800 GOIF JTERROR,EQ=MLC275 GET OUT IF ERROR 75049200 TXT045 OC JTFLGB,JPRTONLY OR IN X4 CATASTROPHIC FLAG 75049700 * THE FOLLOWING CARDS ARE FOR TSO 75050000 GOIF JTERM,OFF=TXT050 DO WE PRINT TO TERMINAL? 75100000 SET ERRBIT,OFF TURN ERRBIT OFF 75200000 GOIF TERR,ON=TXT047 CAN THIS BE CONTINUATION 75250000 GOIF JTCALL,EQ=ERRSCAN CAN IT BE MACRO CALL 75251000 GOIF JTPROTO,EQ=ERRSCAN OR A PROTOTYPE 75252000 TXT0455 GOIF JPRONLY,OFF=TXT048 CAN IT BE MODEL 75253000 GOIF (JSUBNAME,JSUBOPCD,JSUBOPND),OFF=TXT048 OK IF SUBST REQ 75254000 TXT046 BAL R6,RECSAVE SAVE RECORD 75255000 B TXT048 CONTINUE 75256000 ERRSCAN GOIF JNOCNT,ON=TXT0455 NOT BEGIN OF PROTO OR CALL 75257000 JNOTE FILE=FILE2 SAVE POSITION OF CALL OR PROTO 75258000 MVC MODNOTV,JNOTEVAL SAVE VALUE 75259000 GOIF JERR,ON=ERRSCAN1 RECORD IN ERROR 75260000 ERRSCAN0 JGETL FILE=FILE2 GET NEXT RECORD 75261000 LR R5,R11 GET RECORD ADDRESS 75262000 GOIF JTCALL,EQ=ERRSCAN1 CALL ? 75263000 GOIF JTPROTO,EQ=ERRSCAN1 PROTOTYPE ? 75264000 JPOINT FILE=FILE2,NEXT=GET,ADDR=MODNOTV POSITION BACK TO START 75265000 JGETL FILE=FILE2 READ 1ST RECORD AGAIN 75266000 LR R5,R11 ESTABLISH RECORD BASE 75267000 GOIF JTCALL,NE=TXT048 IF CALL SAVE RECORD 75268000 GOIF JGEN,ON=TXT048 DO NOT SAVE IF INNER CALL 75268100 BAL R6,RECSAVE SAVE CALL 75269000 B TXT048 CONTINUE 75270000 ERRSCAN1 GOIF JERR,OFF=ERRSCAN0 READ NEXT RECORD IF NO ERROR 75271000 JPOINT FILE=FILE2,NEXT=GET,ADDR=MODNOTV POSITION BACK 75272000 JGETL FILE=FILE2 GET 1ST RECORD 75273000 LR R5,R11 GET RECORD ADDRESS 75274000 SET TERR,ON INDICATE REST TO TERM 75275000 GOIF JTCALL,NE=TXT049 SAVE RECORD IF CALL 75276000 GOIF JGEN,ON=TXT049 IF INNER CALL DO NOT SAVE 75286000 BAL R6,RECSAVE ELSE CONTINUE 75300000 B TXT049 CONTINUE SCAN 75301000 RECSAVE LH R4,JTRLI GET RECORD LENGTH 75302000 LA R3,MODEL GET SAVE ADDRESS 75303000 LR R2,R5 SAVE RECORD POINTER 75304000 SH R4,=H'256' CHECK MOVE LENGTH 75305000 BM RECSAVE1 OK 75306000 MVC D0(256,R3),D0(R2) MOVE 256 FIRST CHAR 75307000 AH R3,=H'256' UPDATE BOTH POINTERS 75308000 AH R2,=H'256' 75309000 RECSAVE1 EX R4,RECMOVE MOVE REST 75310000 L R1,STMTN GET STATEMENT NUMBER OF 75311000 LA R1,D1(R1) NOTED RECORD 75312000 STH R1,MODSTMT SAVE IT 75313000 BR R6 CONTINUE 75314000 RECMOVE MVC D0(R0,R3),D0(R2) MOVE MODEL STATEMENT 75315000 TXT047 GOIF JNOCNT,ON=TXT049 PRINT ALL LINES OF STMT ON TSO 75316000 SET TERR,OFF INDICATE ALL PRINTED 75317000 B TXT045 DO ORDINARY CHECK 75318000 TXT048 GOIF JERR,OFF=TXT050 ANY ERROR RECORD EEXPECTED 75319000 GOIF JGEN,OFF=TXT049 SHALL WE GET NOTED STMT 75320000 TXT0485 LH R10,JOUTFILE GET FILE UNDEX 75321000 JPUTM FILE=(R10),ADDR=MODEL OUTPUT MODEL STMT 75322000 MVC D4(,R11),=AL1(JT,J0) INDICATE TEXT RECORD 75323000 MVC D16(D1,R11),D3(R11) SAVE FLAGB 75324000 MVC D2(D2,R11),MODSTMT MOVE IN STATEMENT NUMBER 75325000 TXT049 LH R10,JOUTFILE GET FILE INDEX 75326000 SET TERR,ON INDICATE MORE LINES CAN COME 75327000 JPUTM FILE=(R10),ADDR=JTEXT WRITE OUT TEXT RECORD 75350000 MVC D4(,R11),=AL1(JT,J0) MOVE IN TEXT RECORD OPCODE 75400000 MVC D16(D1,R11),D3(R11) SAVE JTFLGB 75450000 L R1,STMTN GET STMT NUMBER 75500000 LA R1,D1(,R1) INCREMENT 1 75550000 STH R1,D2(R11) SAVE STMNT NUMBER 75600000 SET ERRBIT,ON YES, TURN 1ST TIME SWITCH OFF 75650000 * TSO ENDS HERE 75750000 TXT050 LH R4,JTOPP GET OPERAND POINTER 75900000 AR R4,R5 ADD TEXT POINTER 76200000 GOIF JTOPOCD,OFF=TXT100 BRANCH IF CARD POINTER 76500000 LA R4,D1(,R4) STEP PAST CARD POINTER 76800000 TXT100 SR R14,R14 ZERO WORK REGISTER 77100000 SET OPNPRS,OFF INDICATE OPERAND NOT PRESENT 77400000 GOIF JTOPL,D0,EQ=TXT200 ZERO OPERAND LENGTH - NO OPND 77700000 CLC JTOPND(D2),=AL1(JCOMMA,JBLANK) IS OPERAND ONLY A COMMA 78000000 BE TXT200 YES, NO OPERAND LEAVE INDICATOR 78300000 SET OPNPRS,ON NO, INDICATE OPERAND PRESENT 78600000 TXT200 IC R14,JTOPL GET OPERAND LENGTH 78900000 LA R4,JTOPND POINT TO FIRST CHAR OF OPERAND 79200000 AR R14,R4 POINT TO END OF OPERAND 79500000 ST R4,OPNADR SAVE OPERAND POINTER 79800000 ST R14,OPNEND SAVE POINTER TO END OF OPERAND 80100000 MVC CDSTMT,=H'1' RESET CARD-WITHIN-STMT COUNTER 80400000 MVC CLCLNG,=H'1' DEFAULT LENGTH TO 1 FOR L'* 80500000 SPACE 80700000 LH &SCR,JTSPR GET STRING GROUP POINTER 81000000 AR &SCR,&TBP ADD TEXT BASE POINTER 81300000 ST &SCR,STRADR STORE STRING GROUP ADDRESS 81600000 TM JPRTONLY,BIT0 IS X4 CATASTROPHIC ON 81700000 BO TXT250 YES, NO SYMBOLS TO XREF 81800000 MVC SYMCNT,JTSYMCNT SAVE OPERAND SYMBOL COUNT 81900000 TXT250 SET PERR,OFF TURN OFF ERROR SWITCH 82200000 GOIF JNOCNT,ON=MLC250 BRANCH IF STATEMENT NOT COUNTED 82500000 L &SCR,STMTN GET STATEMENT NUMBER 82800000 LA &SCR,D1(,&SCR) STEP IT BY 1 83100000 C R1,=F'65535' IS IT THE LIMIT ? 83400000 BNH TXT300 NO,BRANCH AROUND 83700000 SR R1,R1 YES,START FROM ZERO 84000000 TXT300 ST &SCR,STMTN SAVE IT 84600000 B MLC250 RETURN TO MAINLINE 84900000 TITLE '&COMPNM&ASMID - ASSEMBLY PHASE - MAINLINE CONTROL - CONX85200000 STANTS AND PATCH AREA' 85250000 ERREOF DS 0CL8 EOF RECORD TO OVERFLOW FILE 85800000 DC AL2(L'ERREOF) RECORD LENGTH 86100000 DC AL1(JPSOP,0) FLAGS 86400000 DC AL1(JTEOF,X'EE',X'00',X'FF') FLAGS 86700000 SPACE 2 86710000 JPATCH X5C00,520 5% PATCH AREA 86750000 END MLC100 87000000