MACRO 00050000 &NAME ASCTR &ID=,&HIGHCTR=,&ROUTE=,&NEXTAS= 00100000 GBLA &IECPCSW(100),&IECPCTS,&IECPCTN,&IECPCTR,&IECCNTR 00150000 .* IECPCTS ID VALUE OF LAST ASCTR MACRO 00200000 .* IECPCTN TOTAL NUMBER OF PULSE COUNTERS DEFINED 00250000 GBLA &IECNXTA 00300000 .* IECNXTA NEXTAS VALUE TO BE CHECKED FOR 00350000 GBLB &IECSWW(2),&IECSW(9),&IECSEQ(10) 00400000 .* IECSWW(1) ON INDICATES NOT FIRST ASCTR MACRO 00450000 .* IECSW(9) ON INDICATES PULSE COUNT 00500000 .* IECSEQ(7) SEQUENCE INDICATOR 00550000 GBLB &IECLNXT,&IECHISW 00600000 .* IECHISW ON INDICATES HIGHCTR=0 DISP ALREADY HANDLED 00650000 LCLA &A,&B,&C,&D,&E,&F,&G,&H 00700000 LCLB &NOCODE,&SWT(5) 00750000 .* SWT(1) ROUTE=CPU 00800000 .* SWT(2) ROUTE=DISK 00850000 .* SWT(3) ROUTE=LOG 00900000 .* SWT(4) ROUTE=ASLOG 00950000 .* SWT(5) ROUTE=EXTALRM 01000000 LCLC &CHAR 01050000 ACTR 1000 01100000 AIF (&IECSWW(1)).SKIPONE 01150000 &IECSEQ(7) SETB 1 01200000 .SKIPONE AIF (&IECSW(9)).SKIPTWO 01250000 MNOTE 12,'ASCTR MACRO NOT VALID BECAUSE PC=YES NOT CODED IN X01300000 CONFIGUR MACRO' 01350000 MEXIT 01400000 .SKIPTWO AIF (&IECSEQ(1) AND &IECSEQ(2) AND &IECSEQ(3) AND &IECSEQ(7) X01450000 AND NOT&IECSEQ(4) AND NOT&IECSEQ(5) AND NOT&IECSEQ(6)).S 01500000 &NOCODE SETB 1 01550000 MNOTE 12,'MACRO SEQUENCE ERROR' 01600000 .S ANOP 01650000 AIF (T'&ID EQ 'N').IDOK 01700000 &CHAR SETC T'&ID 01750000 &NOCODE SETB 1 01800000 MNOTE 12,'REQUIRED OPERAND =ID TYPE ATTRIBUTE =&CHAR IMPROPER' 01850000 AGO .HICTR 01900000 .IDOK ANOP 01950000 AIF (&ID EQ 0 AND NOT&IECSWW(1)).HICTR 02000000 AIF (&ID GT &IECPCTS AND &ID LE 99).HICTR 02050000 &NOCODE SETB 1 02100000 MNOTE 12,'ID IS NOT IN ALLOWED RANGE OR IS OUT OF SEQUENCE' 02150000 .HICTR ANOP 02200000 AIF (T'&HIGHCTR EQ 'N').HICTOK 02250000 &CHAR SETC T'&HIGHCTR 02300000 &NOCODE SETB 1 02350000 MNOTE 12,'REQUIRED OPERAND=HIGHCTR TYPE ATTRIBUTE=&CHAR IS X02400000 IMPROPER' 02450000 AGO .TOTCTR 02500000 .HICTOK ANOP 02550000 AIF (&HIGHCTR GE 0 AND &HIGHCTR LE 63).TOTCTR 02600000 MNOTE 12,'HIGHCTR OPERAND IS NOT IN ALLOWED RANGE OF 1 TO 63' 02650000 .TOTCTR ANOP 02700000 AIF (&HIGHCTR NE 0).TOTCTR1 02750000 AIF (T'&NEXTAS NE 'O').TOTCTR2 02800000 &NOCODE SETB 1 02850000 MNOTE 12,'NEXTAS OPERAND MUST BE CODED IF HIGHCTR EQUAL 0' 02900000 AGO .TOTCTR1 02950000 .TOTCTR2 ANOP 03000000 AIF (&NEXTAS GE 0 AND &NEXTAS LE 99).TOTCTR3 03050000 &NOCODE SETB 1 03100000 MNOTE 12,'NEXTAS OPERAND HAS INVALID VALUE' 03150000 .TOTCTR3 ANOP 03200000 AIF (&NEXTAS EQ 0).TOTCTR1 03250000 AIF (&NEXTAS GT &ID).TOTCTR1 03300000 &NOCODE SETB 1 03350000 MNOTE 12,'NEXTAS OPERAND MUST BE GREATER THAN ID,UNLESS 0' 03400000 .TOTCTR1 ANOP 03450000 AIF (&HIGHCTR EQ 0).TOTCTR4 03500000 AIF (&IECNXTA EQ 0).TOTCTR4 03550000 AIF (&ID EQ &IECNXTA).TOTCTR5 03600000 MNOTE 12,'ID IS NOT EQUAL NEXTAS OF A PREVIOUS ASCTR MACRO X03650000 WITH HIGHCTR=0' 03700000 .TOTCTR5 ANOP 03750000 &IECNXTA SETA 0 03800000 .TOTCTR4 ANOP 03850000 AIF (T'&ROUTE NE 'O').ROUTE1 03900000 &NOCODE SETB 1 03950000 &CHAR SETC T'&ROUTE 04000000 MNOTE 12,'ROUTE TYPE ATTRIBUTE = &CHAR IMPROPER' 04050000 .ROUTE1 ANOP 04100000 &A SETA &A+1 04150000 AIF ('&ROUTE(&A)' EQ 'DISK' OR '&ROUTE(&A)' EQ 'CPU' OR X04200000 '&ROUTE(&A)' EQ 'LOG' OR '&ROUTE(&A)' EQ 'ASLOG').ANEXT 04250000 AIF ('&ROUTE(&A)' EQ 'EXTALRM').ANEXT 04300000 AIF (T'&ROUTE(&A) EQ 'O').ANEXT 04350000 MNOTE 12,'ROUTE=&ROUTE(&A) INVALID' 04400000 &NOCODE SETB 1 04450000 .ANEXT AIF (&A LT 4).ROUTE1 04500000 &A SETA 0 04550000 AIF (&NOCODE).LAST 04600000 .ALAS ANOP 04650000 &A SETA &A+1 04700000 AIF (&SWT(1)).NEXT1 04750000 &SWT(1) SETB ('&ROUTE(&A)' EQ 'CPU') 04800000 .NEXT1 AIF (&SWT(2)).NEXT2 04850000 &SWT(2) SETB ('&ROUTE(&A)' EQ 'DISK') 04900000 .NEXT2 AIF (&SWT(3)).NEXT3 04950000 &SWT(3) SETB ('&ROUTE(&A)' EQ 'LOG') 05000000 .NEXT3 AIF (&SWT(4)).NEXT4 05050000 &SWT(4) SETB ('&ROUTE(&A)' EQ 'ASLOG') 05100000 .NEXT4 AIF (&SWT(5)).NEXT5 05150000 &SWT(5) SETB ('&ROUTE(&A)' EQ 'EXTALRM') 05200000 .NEXT5 AIF (&A NE 4).ALAS 05250000 AIF (&SWT(1) AND &SWT(2)).SAME 05300000 AGO .OK 05350000 .SAME ANOP 05400000 &NOCODE SETB 1 05450000 MNOTE 12,'MUTUALLY EXCLUSIVE OPERANDS DISK AND CPU CODED' 05500000 .OK ANOP 05550000 AIF (&SWT(1) OR &SWT(2) OR &SWT(3) OR &SWT(4) OR &SWT(5)).LAX05600000 ST 05650000 &NOCODE SETB 1 05700000 MNOTE 12,'ROUTE = &ROUTE INVALID' 05750000 .LAST ANOP 05800000 AIF (&IECPCTN LE 1023).LAST1 05850000 &NOCODE SETB 1 05900000 MNOTE 12,'TOTAL NUMBER OF CTRS FOR ALL ASCTR MACROS EXCEEDS X05950000 1023' 06000000 .LAST1 ANOP 06050000 AIF (&ID+1 LE &IECCNTR).LAST2 06100000 MNOTE 12,'ID OPERAND IS HIGHER THAN HIGHEST AS MACRO ID' 06150000 &NOCODE SETB 1 06200000 .LAST2 ANOP 06250000 AIF (NOT &NOCODE).GENCODE 06300000 MNOTE 12,'TEXT GENERATION SUPPRESSED' 06350000 AGO .SET 06400000 .GENCODE ANOP 06450000 AIF (&IECSWW(1)).HA 06500000 SPACE 1 06550000 SPACE 1 06600000 * AREA STATION COUNTER TABLE 06650000 SPACE 1 06700000 SPACE 1 06750000 IECASCTB EQU * 06800000 .HA ANOP 06850000 &A SETA 0 06900000 &B SETA &ID 06950000 &C SETA &IECPCTS 07000000 &D SETA &B-&C 07050000 AIF (&IECPCTS NE 0).WHY1 07100000 AIF (&IECSWW(1)).WHY1 07150000 AGO .WSSS 07200000 .WHY1 ANOP 07250000 AIF (NOT&IECSWW(1)).WHY 07300000 &C SETA &C+1 07350000 .WHY ANOP 07400000 &D SETA &D-1 07450000 .WSSS ANOP 07500000 AIF (&D EQ 0).NONSKIP 07550000 AIF (&HIGHCTR NE 0).SKIP1 07600000 AIF (&IECHISW).SKIP2 07650000 AIF (&NEXTAS EQ 0).SKIP3 07700000 &H SETA &NEXTAS-&IECPCTS-1 07750000 .SKIP6 ANOP 07800000 AIF (&IECPCTS NE 0).SKIP4 07850000 AIF (&IECSWW(1)).SKIP5 07900000 &H SETA &H+1 07950000 AGO .SKIP4 08000000 .SKIP5 ANOP 08050000 .SKIP4 ANOP 08100000 &H SETA (2*&H)+1 08150000 DC AL2(&H) 08200000 &IECHISW SETB 1 08250000 AGO .LOOP1 08300000 .SKIP3 ANOP 08350000 DC YL2((IECCTRGR-*)-1) 08400000 &IECHISW SETB 1 08450000 AGO .LOOP1 08500000 .SKIP2 ANOP 08550000 DC AL2(1) 08600000 AGO .LOOP1 08650000 .SKIP1 ANOP 08700000 &IECHISW SETB 0 08750000 &E SETA (2*&D)+1 08800000 DC AL2(&E) 08850000 .LOOP1 ANOP 08900000 AIF (&B LE 0).WRONG 08950000 &B SETA &B-1 09000000 &D SETA &B-&C 09050000 AIF (&D EQ 0).NONSKIP 09100000 DC AL2(1) 09150000 AGO .LOOP1 09200000 .WRONG ANOP 09250000 DC AL2(1) 09300000 .NONSKIP ANOP 09350000 &F SETA 0 09400000 AIF (NOT &SWT(1)).SET1 09450000 &F SETA 4096 09500000 .SET1 AIF (NOT &SWT(2)).SET2 09550000 &F SETA &F+8192 09600000 .SET2 AIF (NOT &SWT(3)).SET3 09650000 &F SETA &F+16384 09700000 .SET3 AIF (NOT &SWT(4)).SET4 09750000 AIF (&SWT(5)).SET4 09800000 &F SETA &F+32768 09850000 .SET4 AIF (NOT &SWT(5)).SET5 09900000 &F SETA &F+34816 09950000 .SET5 ANOP 10000000 AIF (&HIGHCTR NE 0).NOBIT 10050000 &IECNXTA SETA &NEXTAS 10100000 AIF (&IECHISW).NODISP 10150000 AIF (&NEXTAS NE 0).NODISP1 10200000 DC YL2((IECCTRGR-*)-1+&F) 10250000 &IECHISW SETB 1 10300000 AGO .NOBIT2 10350000 .NODISP1 ANOP 10400000 &H SETA &NEXTAS-&ID 10450000 &H SETA (2*&H)+&F+1 10500000 DC YL2(&H) 10550000 AGO .NOBIT2 10600000 .NODISP ANOP 10650000 &F SETA &F+1 10700000 AGO .NOBIT1 10750000 .NOBIT ANOP 10800000 &IECNXTA SETA 0 10850000 &G SETA 2*&IECPCTN 10900000 &F SETA &F+&G 10950000 &IECHISW SETB 0 11000000 .NOBIT1 ANOP 11050000 DC AL2(&F) 11100000 .NOBIT2 ANOP 11150000 &IECPCTS SETA &ID 11200000 &IECSWW(1) SETB 1 11250000 &A SETA &ID+1 11300000 &IECPCSW(&A) SETA &HIGHCTR 11350000 &A SETA &HIGHCTR 11400000 &IECPCTN SETA &IECPCTN+&A 11450000 .SET ANOP 11500000 MEND 11550000