* /* START OF SPECIFICATIONS**** 00000703 *01* MODULE-NAME = EVENTS 00001403 *01* DESCRIPTIVE-NAME = FAST MULTIPLE WAIT USER MACRO 00002103 *01* COPYRIGHT = NA 00002803 *01* PROCESSOR = ASSEM 00003503 **** END OF SPECIFICATIONS ***/ 00004203 MACRO 00004903 &NAME EVENTS &ENTRIES=,&TABLE=,&WAIT=,&LAST=,&ECB=,&BRANCH=NO 00005603 .* @Y30HPVA 00006303 .* @X31ED32 00007003 LCLA &X @X31ED32 00007703 LCLB &B(7) @X30HPVA 00008403 LCLC &C(7),&PCHAR @X30HPVA 00009103 .* @X31ED32 00009803 &B(1) SETB (('&ENTRIES' NE '') AND ('&ENTRIES' NE 'DEL')) @X31ED32 00010503 &B(2) SETB ('&ENTRIES' EQ 'DEL') @X31ED32 00011203 &B(3) SETB ('&WAIT' NE '') @X31ED32 00011903 &B(4) SETB ('&TABLE' NE '') @X31ED32 00012603 &B(5) SETB ('&LAST' NE '') @X31ED32 00013303 &B(6) SETB ('&ECB' NE '') @X31ED38 00014003 &B(7) SETB ('&BRANCH' NE 'NO') @Y30HPVA 00014703 .* @X31ED32 00015403 &C(3) SETC 'WAIT' @X31ED32 00016103 &C(4) SETC 'TABLE' @X31ED32 00016803 &C(5) SETC 'LAST' @X31ED32 00017503 &C(6) SETC 'ECB' @X31ED38 00018203 &C(7) SETC 'BRANCH=YES' @Y30HPVA 00018903 .* @X31ED32 00019603 .************************************************************* @X31ED32 00020303 .* * @X31ED32 00021003 .**** CHECK FOR MUTUALLY EXCLUSIVE PARAMETERS *** @X31ED32 00021703 .* * @X31ED32 00022403 .************************************************************* @X31ED32 00023103 .* @X31ED32 00023803 &X SETA 3 @X31ED32 00024503 .EVLOOP1 ANOP @X31ED32 00025203 AIF (&B(1) AND &B(&X)).ERROR1 @X31ED32 00025903 &X SETA &X+1 @X31ED32 00026603 AIF (&X LE 7).EVLOOP1 @X30HPVA 00027303 AIF (&B(2) AND &B(3)).ERROR2 @X31ED32 00028003 AIF (&B(2) AND &B(5)).ERROR3 @X31ED32 00028703 AIF (&B(2) AND &B(6)).ERROR8 @X31ED38 00029403 AIF (&B(2) AND &B(7)).ERROR10 @Y30HPVA 00030103 AIF (&B(5) AND &B(6)).ERROR7 @X31ED38 00030803 .* @X31ED32 00031503 .************************************************************* @X31ED32 00032203 .* * @X31ED32 00032903 .**** CHECK FOR INCOMPLETE PARAMETER COMBINATIONS *** @X31ED32 00033603 .* * @X31ED32 00034303 .************************************************************* @X31ED32 00035003 .* @X31ED32 00035703 AIF (&B(4) AND NOT(&B(2) OR &B(3) OR &B(6))).ERROR4 @X31ED38 00036403 AIF (&B(3) AND NOT (&B(4))).ERROR4 @X31ED38 00037103 AIF (&B(5) AND NOT (&B(4))).ERROR4 @X31ED38 00037803 AIF (&B(6) AND NOT (&B(4))).ERROR4 @X31ED38 00038503 AIF (NOT(&B(1) OR &B(4))).ERROR4 @X31ED38 00039203 .* @X31ED32 00039903 .************************************************************* @X31ED32 00040603 .* * @X31ED32 00041303 .**** CHECK FOR INVALID SINGLE PARAMETERS *** @X31ED32 00042003 .* * @X31ED32 00042703 .************************************************************* @X31ED32 00043403 .* @X31ED32 00044103 AIF (T'&ENTRIES NE 'N').EV01 @X31ED32 00044803 AIF ('&ENTRIES'(1,1) EQ '(').EV01 @X31ED32 00045503 AIF ((&ENTRIES LT 1) OR (&ENTRIES GT 32767)).ERROR5 @X31ED38 00046203 AGO .EV10 @X31ED32 00046903 .EV01 ANOP @X31ED32 00047603 AIF (&B(7) AND ('&BRANCH' NE 'YES')).ERROR9 @Y30HPVA 00048303 AIF (NOT &B(3)).EV10 @X31ED32 00049003 AIF (('&WAIT' NE 'YES') AND ('&WAIT' NE 'NO')).ERR6 @X31ED32 00049703 .* @X31ED32 00050403 .EV10 ANOP @X31ED32 00051103 &NAME CNOP 0,4 @Y30HPVA 00051803 AIF (&B(1)).EVCREAT CHECK FOR CREATE REQUEST@X31ED32 00052503 .* @X31ED32 00053203 .************************************************************* @X31ED32 00053903 .* * @X31ED32 00054603 .**** GENERATE CODE TO INITIALIZE REG 1 WITH TABLE ADR *** @X31ED32 00055303 .* * @X31ED32 00056003 .************************************************************* @X31ED32 00056703 .* @X31ED32 00057403 AIF ('&TABLE'(1,1) EQ '(').EV20 @X31ED32 00058103 L 1,&TABLE LOAD TABLE ADDRESS @X31ED32 00058803 AGO .EV25 @X31ED32 00059503 .EV20 ANOP @X31ED32 00060203 AIF ('&TABLE(1)' EQ '1').EV25 @X31ED32 00060903 LR 1,&TABLE(1) LOAD TABLE ADDRESS @X31ED32 00061603 .EV25 ANOP @X31ED32 00062303 .* @X31ED32 00063003 AIF (&B(2)).EVDELET CHECK FOR DELETE REQUEST@X31ED32 00063703 .* @X31ED32 00064403 .************************************************************* @X31ED32 00065103 .* * @X31ED32 00065803 .**** GENERATE REG 0 INPUT FOR TYPE 1 SVC *** @X31ED32 00066503 .* * @X31ED32 00067203 .************************************************************* @X31ED32 00067903 .* @X31ED32 00068603 AIF (&B(5)).EV30 CHECK FOR LAST SPECIFIED@X31ED32 00069303 AIF (NOT &B(6)).EV29D BRANCH IF NOT ECB @X31ED38 00070003 AIF ('&ECB'(1,1) EQ '(').EV29 @X31ED38 00070703 L 0,&ECB LOAD ECB ADDR @X31ED38 00071403 AGO .EV29A @X31ED38 00072103 .EV29 ANOP @X31ED38 00072803 AIF ('&ECB(1)' EQ '0').EV29A @X31ED38 00073503 LR 0,&ECB(1) LOAD ECB ADDR @X31ED38 00074203 .EV29A ANOP @X31ED38 00074903 AIF ('&WAIT' EQ 'NO').EV29B @X31ED38 00075603 AIF ('&WAIT' EQ 'YES').EV29C @X31ED38 00076303 B *+6 BRANCH AROUND CONSTANT @X31ED38 00077003 DC X'2000' ECB CONSTANT @X31ED38 00077703 ICM 0,8,*-2 INDICATE ECB @X31ED38 00078403 AGO .EVTYP1 @X31ED38 00079103 .EV29B ANOP @X31ED38 00079803 B *+6 BRANCH AROUND CONSTANT @X31ED38 00080503 DC X'6000' CONST FOR ECB, NO WAIT @X31ED38 00081203 ICM 0,8,*-2 INDICATE ECB, NO WAIT @X31ED38 00081903 AGO .EVTYP1 @X31ED38 00082603 .EV29C ANOP @X31ED38 00083303 B *+6 BRANCH AROUND CONSTANT @X31ED38 00084003 DC X'A000' CONSTANT FOR ECB, WAIT @X31ED38 00084703 ICM 0,8,*-2 INDICATE ECB, WAIT @X31ED38 00085403 AGO .EVTYP1 @X31ED38 00086103 .EV29D ANOP @X31ED38 00086803 AIF ('&WAIT' EQ 'NO').EV28 CHECK FOR WAIT=NO @X31ED32 00087503 LA 0,1(,0) INDICATE WAIT @X31ED38 00088203 SLL 0,31(0) @X31ED38 00088903 AGO .EVTYP1 GO TO ISSUE SVC @X31ED32 00089603 .* @X31ED32 00090303 .EV28 ANOP @X31ED32 00091003 LA 0,1(,0) @X31ED32 00091703 SLL 0,30(0) NO WAIT, NO LAST @X31ED32 00092403 AGO .EVTYP1 GO TO ISSUE SVC @X31ED32 00093103 .* @X31ED32 00093803 .EV30 ANOP @X31ED32 00094503 AIF ('&LAST'(1,1) EQ '(').EV35 @X31ED32 00095203 L 0,&LAST LOAD LAST ADDRESS @X31ED32 00095903 AGO .EV40 @X31ED32 00096603 .EV35 ANOP @X31ED32 00097303 AIF ('&LAST(1)' EQ '0').EV40 ALREADY IN REG 0 @X31ED32 00098003 LR 0,&LAST(1) LOAD LAST ADDRESS @X31ED32 00098703 .EV40 ANOP @X31ED32 00099403 AIF ('&WAIT' EQ 'NO').EV45 @X31ED32 00100103 B *+6 BRANCH AROUND CONSTANT @X31ED38 00100803 DC X'8000' CONSTANT FOR WAIT @X31ED38 00101503 ICM 0,8,*-2 INDICATE WAIT @X31ED38 00102203 AGO .EVTYP1 GO TO ISSUE SVC @X31ED32 00102903 .EV45 ANOP @X31ED32 00103603 B *+6 BRANCH AROUND CONSTANT @X31ED32 00104303 DC X'4000' NO WAIT CONSTANT @X31ED32 00105003 ICM 0,8,*-2 INDICATE NO WAIT @X31ED32 00105703 AGO .EVTYP1 @X31ED32 00106403 .* @X31ED32 00107103 .************************************************************* @X31ED32 00107803 .* * @X31ED32 00108503 .**** INITIALIZE REGS 0 AND 1 FOR ENTRIES=N REQUEST *** @X31ED32 00109203 .* * @X31ED32 00109903 .************************************************************* @X31ED32 00110603 .* @X31ED32 00111303 .EVCREAT ANOP @X31ED32 00112003 AIF ('&ENTRIES'(1,1) EQ '(').EV50 @X31ED32 00112703 B *+8 BRANCH AROUND CONSTANT @X31ED32 00113403 DC X'80' CREATE INDICATOR @X31ED32 00114103 DC AL3(&ENTRIES) NUMBER OF ENTRIES @X31ED32 00114803 L 0,*-4 LOAD FLAG AND NUMBER @X31ED32 00115503 AGO .EV60 @X31ED32 00116203 .* @X31ED32 00116903 .EV50 ANOP @X31ED32 00117603 AIF ('&ENTRIES(1)' EQ '0').EV55 @X31ED32 00118303 LR 0,&ENTRIES(1) LOAD ENTRIES NUMBER @X31ED32 00119003 .EV55 ANOP @X31ED32 00119703 B *+6 BRANCH AROUND CONSTANT @X31ED32 00120403 DC X'8000' CREATE INDICATOR @X31ED32 00121103 ICM 0,8,*-2 LOAD ENTRIES INDICATOR @X31ED32 00121803 .* @X31ED32 00122503 .EV60 ANOP @X31ED32 00123203 XR 1,1 CLEAR REGISTER 1 @X31ED32 00123903 AGO .EVTYP2 @X31ED32 00124603 .* @X31ED32 00125303 .************************************************************* @X31ED32 00126003 .* * @X31ED32 00126703 .**** INITIALIZE REG 0 FOR ENTRIES=DEL REQUEST *** @X31ED32 00127403 .* * @X31ED32 00128103 .************************************************************* @X31ED32 00128803 .* @X31ED32 00129503 .EVDELET ANOP @X31ED32 00130203 XR 0,0 CLEAR REGISTER 0 @X31ED32 00130903 .* @X31ED32 00131603 .************************************************************* @X31ED32 00132303 .* * @X31ED32 00133003 .**** ISSUE SVC *** @X31ED32 00133703 .* * @X31ED32 00134403 .************************************************************* @X31ED32 00135103 .* @X31ED32 00135803 .EVTYP2 ANOP @X31ED32 00136503 LA 15,5(,0) EXTENDED ROUTER NUMBER @X31ED32 00137203 SVC 122 ISSUE TYPE 2 ESR SVC @X31ED32 00137903 MEXIT @X31ED32 00138603 .EVTYP1 ANOP @X31ED32 00139303 AIF (&B(7)).BRENTY @Y30HPVA 00139603 XR 15,15 CLEAR RESERVED REGISTER @X31ED32 00140003 SVC 125 ISSUE TYPE 1 SVC @X31ED32 00141403 MEXIT @X31ED32 00142103 .BRENTY ANOP @Y30HPVA 00142803 L 15,CVTPTR(0,0) LOAD CVT POINTER @Y30HPVA 00143503 L 15,CVTEVENT-CVTMAP(0,15) LOAD EVENTS ENTRY @Y30HPVA 00144203 * POINT ADDRESS @Y30HPVA 00144903 AIF ('&WAIT' EQ 'YES').WAITYES @ZA03759 00145603 BALR 14,15 CALL EVENTS @Y30HPVA 00146303 MEXIT @Y30HPVA 00147003 .WAITYES ANOP @Y30HPVA 00147703 BR 15 GO TO EVENTS @Y30HPVA 00148403 MEXIT @Y30HPVA 00149103 .* @X31ED32 00149803 .************************************************************* @X31ED32 00150503 .* * @X31ED32 00151203 .**** ERROR EXITS *** @X31ED32 00151903 .* * @X31ED32 00152603 .************************************************************* @X31ED32 00153303 .* @X31ED32 00154003 .ERROR1 ANOP @X31ED32 00154703 &PCHAR SETC 'ENTRIES=&ENTRIES' @X31ED32 00155403 IHBERMAC 1020,&PCHAR,&C(&X) @X31ED32 00156103 MEXIT @X31ED32 00156803 .ERROR2 ANOP @X31ED32 00157503 IHBERMAC 1020,ENTRIES,WAIT @X31ED32 00158203 MEXIT @X31ED32 00158903 .ERROR3 ANOP @X31ED32 00159603 IHBERMAC 1020,ENTRIES,LAST @X31ED32 00160303 MEXIT @X31ED32 00161003 .ERROR4 ANOP @X31ED32 00161703 IHBERMAC 24 @X31ED32 00162403 MEXIT @X31ED32 00163103 .ERROR5 ANOP @X31ED32 00163803 IHBERMAC 1001,ENTRIES,&ENTRIES @X31ED32 00164503 MEXIT @X31ED32 00165203 .ERR6 ANOP @X31ED32 00165903 IHBERMAC 1001,WAIT,&WAIT @X31ED32 00166603 MEXIT @X31ED38 00167303 .ERROR7 ANOP @X31ED38 00168003 IHBERMAC 1020,LAST,ECB @X31ED38 00168703 MEXIT @X31ED38 00169403 .ERROR8 ANOP @X31ED38 00170103 IHBERMAC 1020,ENTRIES,ECB @X31ED38 00170803 MEXIT @Y30HPVA 00171503 .ERROR9 ANOP @Y30HPVA 00172203 IHBERMAC 1001,BRANCH,&BRANCH @Y30HPVA 00172903 MEXIT @Y30HPVA 00173603 .ERROR10 ANOP @Y30HPVA 00174303 IHBERMAC 1020,ENTRIES,&C(7) @Y30HPVA 00175003 MEND @X31ED32 00175703