MACRO &LABEL XSTOP &N=2,&GOTO= .*--> MACRO: XSTOP CONTROL PROGRAM LOOPS . . . . . . . . . . . . . .* JOHN R. MASHEY - FEB 1970 - V.4.0 * .* XSTOP IS USED TO STOP INFINITE LOOPS IN ASSEMBLER * .* N=NUMBER WILL CAUSE THE PROGRAM TO ABEND THE NUMBER'TH * .* TIME THROUGH THE XSTOP. DEFAULT IS N=2, * .* WHICH MEANS THE XSTOP CAN ONLY BE ENCOUNTERED ONCE * .* BEFORE IT ABENDS. * .* GOTO=LABEL BRANCH TO LABEL INSTEAD OF ABENDING * .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * GBLB &XSTOPST XSTOP GENERATION STATUS,ON=0,OFF=1 LCLC &XNAM NAME FOR CONSTANTS AIF (&XSTOPST).XXNOG SKIP IF NOGEN &XNAM SETC 'XX&SYSNDX.V' GET UNIQUE LABEL &LABEL ST 0,&XNAM SAVE WORK REGISTER L 0,&XNAM+4 LOAD CURRENT COUNTER VALUE BCT 0,&XNAM+8 BRANCH IF STILL OK,DECREMENT REG L 0,&XNAM RESTORE WORK REGISTER AIF ('&GOTO' EQ '').XXAB SKIP IF NO GOTO USED B &GOTO TAKE DESIRED BRANCH AGO .XXDC SKIP TO GENERATE DC'S .XXAB EX 0,* Cause program interrupt .XXDC ANOP &XNAM DC A(0,&N) REGISTER SAVE AREA, COUNTER ST 0,&XNAM+4 SAVE DECREMENTED COUNTER VALUE L 0,&XNAM RESTORE WORK REGISTER SPACE 2 MEXIT .XXNOG AIF (T'&LABEL EQ 'O').XXEXIT SKIP IF NO LABEL &LABEL DS 0H .XXEXIT MEND