         TITLE 'IFDOLT49 CDS EQUATING'                                  00010000
         TITLE ' CDS EQUATING.  IFDOLT49'                               00020000
         LCLA  &T,&SPN                                            0002  00030000
.@001    ANOP                                                     0002  00040000
IFDOLT49 CSECT ,                                                  0002  00050000
         BC    15,24(0,@F)                                              00060000
         DC    C'IFDOLT49 13 SEP 73'                             0002  00070000
         STM   @E,@C,12(@D)                                       0002  00080000
         BALR  @B,0                                               0002  00090000
@PSTART  DS    0H                                                 0002  00100000
         USING @PSTART+00000,@B                                   0002  00110000
         ST    @D,@SAV001+4                                       0002  00120000
         LA    @F,@SAV001                                         0002  00130000
         ST    @F,8(0,@D)                                         0002  00140000
         LR    @D,@F                                              0002  00150000
*  GEN(USING CHASCT,2);                  /* COMMON AREA MAP           * 00160000
         USING CHASCT,2                                                 00170000
         DS    0H                                                       00180000
*  GENERATE DATA;                                                       00190000
*  DCL R0 REG(0) PTR;                    /* GP REGISTER               * 00200000
*  DCL R1 REG(1) PTR;                    /* GP REGISTER               * 00210000
*  DCL R2 REG(2) PTR;                    /* GP REGISTER               * 00220000
*  DCL R3 REG(3) PTR;                    /* GP REGISTER               * 00230000
*  DCL R4 REG(4) PTR;                    /* GP REGISTER               * 00240000
*  DCL R5 REG(5) PTR;                    /* GP REGISTER               * 00250000
*  DCL R6 REG(6) PTR;                    /* GP REGISTER               * 00260000
*  DCL R7 REG(7) PTR;                    /* GP REGISTER               * 00270000
*  DCL R8 REG(8) PTR;                    /* GP REGISTER               * 00280000
*  DCL R9 REG(9) PTR;                    /* GP REGISTER               * 00290000
*  DCL R10 REG(10) PTR;                  /* GP REGISTER               * 00300000
*  DCL R11 REG(11) PTR;                  /* GP REGISTER               * 00310000
*  DCL R12 REG(12) PTR;                  /* GP REGISTER               * 00320000
*  DCL R13 REG(13) PTR;                  /* GP REGISTER               * 00330000
*  DCL R14 REG(14) PTR;                  /* GP REGISTER               * 00340000
*  DCL R15 REG(15) PTR;                  /* GP REGISTER               * 00350000
*  DCL DEVTBPTR PTR GENERATED;           /* DEVICE TABLE PTR          * 00360000
*  DCL TABLNGTH GENERATED;               /* TABLE SIZE PER DEVICE     * 00370000
*  DCL 1 * CHAR(1) BASED(ADDR(TABLNGTH)+2), /* OLTEP SWITCHES         * 00380000
*         3 * BIT(1),                    /* NA                  XM3338* 00390000
*         3 RESENTB BIT(1),              /* RESIDENT ENTRIES    XM3338* 00400000
*         3 * BIT(4),                                         /*XM0095* 00410000
*         3 FSTEQU BIT(1),               /* FIRST EQU ENTERED   XM0095* 00420000
*         3 * BIT(1);                                         /*XM0095* 00430000
*  DCL MCT GENERATED;                    /* MCT                       * 00440000
*  DCL ROOTPTR PTR BASED(ADDR(MCT)+128); /* IFDOLT00 ADDRESS          * 00450000
*  DCL IFDMSG49 CHAR(1) GENERATED;                                      00460000
*  DCL 1 * BDY(WORD) BASED(ADDR(IFDMSG49)), /* MESSAGE POINTERS       * 00470000
*         2 IFD394 PTR,                  /* MESSAGE ADDRESS           * 00480000
*         2 IFD395 PTR,                  /* MESSAGE ADDRESS           * 00490000
*         2 IFD396 PTR,                  /* MESSAGE ADDRESS           * 00500000
*         2 IFD397 PTR,                  /* MESSAGE ADDRESS           * 00510000
*         2 IFD398 PTR,                  /* MESSAGE ADDRESS           * 00520000
*         2 IFD373 PTR(31),              /* MESSAGE ADDRESS     XM0095* 00530000
*         9 * CHAR(1);                   /* NA                        * 00540000
*  DCL EQUECB FIXED;                     /* CDS EQUATE ECB            * 00550000
*  DCL LSTSLH FIXED;                     /* LAST SLASH                * 00560000
*  DCL L FIXED;                          /* LOW ITEM                  * 00570000
*  DCL H FIXED;                          /* HIGH ITEM                 * 00580000
*  DCL RESTPTR PTR;                      /* RESIDENT TABLE PTR        * 00590000
*  DCL 1 * BDY(WORD) BASED(RESTPTR),     /* RESIDENT TABLE            * 00600000
*         2 RESTAB CHAR(64);             /* CDS RESIDENT TABLE        * 00610000
*  DCL 1 SETWTOR BDY(WORD) CHAR(8),      /* WTOR ADDRESSES            * 00620000
*         2 * PTR INIT(ADDR(RBUF)),      /* REPLY BUFFER              * 00630000
*         2 * PTR INIT(ADDR(EQUECB));    /* EQUATE ECB                * 00640000
*  DCL 1 * BDY(WORD) FIXED INIT(0),      /* ZERO CONSTANT             * 00650000
*         2 KZIP4 CHAR(4),               /* CONSTANT                  * 00660000
*           3 KZIP2 CHAR(2);             /* CONSTANT                  * 00670000
*  DCL 1 * BDY(WORD),                    /* TABLE ADDRESSES           * 00680000
*         2 ADRENT2 PTR,                 /* 2ND WORK TABLE            * 00690000
*         2 ADRENT3 PTR;                 /* 3RD WORK TABLE            * 00700000
*  DCL THIDK FIXED(15);                  /* AVAILABLE CDS             * 00710000
*  DCL 1 * BDY(WORD) BASED(DEVTBPTR),    /* WORK AREA TABLES          * 00720000
*         2 FSTENT12 CHAR(256),          /* 1ST AND 2ND AREAS         * 00730000
*           3 FSTENT1 CHAR(128),         /* 1ST WORK AREA             * 00740000
*           3 FSTENT2 CHAR(128),         /* 2ND WORK AREA             * 00750000
*         2 FSTENT3 CHAR(128),           /* 3RD WORK AREA             * 00760000
*           3 ENDTABS CHAR(1);           /* END WORK TABLES           * 00770000
*  DCL 1 * BDY(WORD) BASED(R3),          /* WORK TABLE                * 00780000
*         2 FSTD FIXED(15),              /* 1ST DEVICE                * 00790000
*         2 SECD FIXED(15),              /* 2ND DEVICE                * 00800000
*         2 THID FIXED(15);              /* 3RD DEVICE                * 00810000
*  DCL 1 * BDY(WORD) BASED(R3),          /* WORK TABLE                * 00820000
*         2 RESLST CHAR(2),              /* LAST DEVICE               * 00830000
*           3 RES1 CHAR(1),              /* 1ST BYTE                  * 00840000
*           3 RES2 CHAR(1);              /* 2ND BYTE                  * 00850000
*  DCL INCR3 CHAR(1) BASED(R3+1);        /* ADD ONE TO REG            * 00860000
*  DCL SETCODS CHAR(4) BASED(R3);        /* END MESSAGE TEXT            00870000
*  DCL WTORADRS CHAR(8) BASED(R4);       /* REPLY AND ECB PTR         * 00880000
*  DCL 1 * BASED(R4+11),                 /* NA                        * 00890000
*         2 MSG3951 CHAR(23),            /* MESSAGE TEXT              * 00900000
*           3 * CHAR(1),                 /* NA                        * 00910000
*           3 MSG395 CHAR(23),           /* MESSAGE TEXT              * 00920000
*               9 * CHAR(1);             /* NA                        * 00930000
*  DCL 1 * BASED(R4),                    /* IFD397 MESSAGE              00940000
*         2 * CHAR(26),                  /* NA                          00950000
*           3 * CHAR(1),                 /* NA                          00960000
*           3 MSGSZ CHAR(1),             /* MESSAGE SIZE                00970000
*         2 INVR CHAR(48),               /* MESSAGE TEXT                00980000
*         2 * CHAR(4),                   /* NA                          00990000
*         2 RTDESC CHAR(4);              /* ROUTCDE AND DESC            01000000
*  DCL 1 SBUF CHAR(4) BASED(R5),         /* SAVE EBCDIC DEVICE        * 01010000
*         2 * CHAR(1),                   /* NA                        * 01020000
*         2 SBUF1 CHAR(3);               /* SAVE EBCDIC DEVICE        * 01030000
*  DCL HEXWD FIXED BDY(WORD) BASED(R7);  /* RESIDENT TABLE WORD       * 01040000
*  DCL ZIPENT2 CHAR(128) BASED(R7);      /* 2ND WORK TABLE            * 01050000
*  DCL 1 * BDY(WORD) BASED(R7),          /* NEW ENTRIES               * 01060000
*         2 DEVLK CHAR(4),               /* COMPLETE ENTRY            * 01070000
*           3 DEVLK1 CHAR(2),            /* 1ST DEVICE                * 01080000
*           3 DEVLK2 CHAR(2),            /* 2ND DEVICE                * 01090000
*         2 NXTLK CHAR(4);               /* NEXT ENTRY                * 01100000
*  DCL R7P1 CHAR(1) BASED(R7+1);         /* NEXT ITEM                 * 01110000
*  DCL 1 * BDY(HWORD) BASED(R7),         /* WORK TABLE                * 01120000
*         2 TB2 CHAR(1),                 /* 1ST BYTE                  * 01130000
*         2 TB2A CHAR(1),                /* 2ND BYTE                  * 01140000
*         2 NXTTB CHAR(1);               /* NEXT BYTES                * 01150000
*  DCL NXTWK CHAR(1) BASED(R7+128);      /* NEXT WORK TABLE           * 01160000
*  DCL 1 * BDY(WORD) BASED(R8),          /* SAVE RESIDENT TABLE       * 01170000
*         2 DEVCOP CHAR(4),              /* COMPLETE ENTRY            * 01180000
*           3 DEV1 CHAR(2),              /* 1ST DEVICE                * 01190000
*           3 DEV2 CHAR(2),              /* 2ND DEVICE                * 01200000
*         2 NXTENT CHAR(8);              /* NEXT ENTRY                * 01210000
*  DCL ABYT CHAR(1) BASED(R8);           /* 1ST ENTRY BYTE            * 01220000
*  DCL 1 * BASED(R8),                    /* EBCDIC RESIDENT           * 01230000
*         2 PDEV1 CHAR(4),               /* 1ST PRINTABLE DEVICE      * 01240000
*         2 PDEV2 CHAR(4),               /* 2ND PRINTABLE DEVICE      * 01250000
*         2 PDEVNXT CHAR(4);             /* NEXT DEVICE               * 01260000
*  DCL KCLRSL CHAR(4) INIT('CLR/');      /* CONSTANT                  * 01270000
*  DCL KENDSL CHAR(4) INIT('END/');      /* CONSTANT                  * 01280000
*  DCL KNONE CHAR(4) INIT('NONE');       /* CONSTANT                  * 01290000
*  DCL KYES CHAR(3) INIT('YES');         /* CONSTANT                  * 01300000
*  DCL KNO CHAR(3) INIT('NO ');          /* CONSTANT                  * 01310000
*  DCL 1 LIST CHAR(16)                   /* HEX CHARACTERS            * 01320000
*         INIT('0123456789ABCDEF'),      /* IN EBCDIC                 * 01330000
*         2 * CHAR(1),                   /* NA                        * 01340000
*         2 LIST1 CHAR(15);              /* NON ZERO ITEMS            * 01350000
*  DCL 1 REP0T81 CHAR(82),               /* REPLY AREA                * 01360000
*         2 REP0T79 CHAR(80),            /* REPLY AREA START          * 01370000
*           3 * CHAR(1) INIT(' '),       /* NA                        * 01380000
*           3 RBUF CHAR(80),             /* REPLY BUFFER              * 01390000
*           3 * CHAR(1) INIT(' ');       /* NA                        * 01400000
*  DCL 1 CHIND CHAR(1),                  /* CHARACTER INDICATOR       * 01410000
*         2 BLKBIT BIT(1),               /* BLANK                     * 01420000
*         2 EQDASCOM BIT(3),             /* EQUAL SIGN DASH COMMA     * 01430000
*           3 EQUBIT BIT(1),             /* EQUAL SIGN                * 01440000
*           3 DASCOM BIT(2),             /* DASH, COMMA               * 01450000
*             4 DASBIT BIT(1),           /* DASH                      * 01460000
*             4 COMBIT BIT(1),           /* COMMA                     * 01470000
*               9 * BIT(1);              /* NA                        * 01480000
*  DCL SBC CHAR(1);                      /* SAVE BUFFER CHAR          * 01490000
*  DCL ACEQSEL CHAR(23)                  /* CONSTANT                  * 01500000
*         INIT('ACTIVE EQUATES SELECTED'); /* TEXT                    * 01510000
*  DCL CESWTR CHAR(1) GENERATED;         /*                     XM3317* 01520000
*  DCL 1 * CHAR(1) BASED(ADDR(CESWTR)),  /*                     XM3317* 01530000
*        3 RETAINAC BIT(1);              /* RETAIN ACTIVE FLAG  XM3317* 01540000
*  DCL CESWTR2 CHAR(1) GENERATED;        /*                     XM3317* 01550000
*  DCL 1 * CHAR(1) BASED(ADDR(CESWTR2)), /* REI SWITCHES        XM3317* 01560000
*        3 * BIT(7),                     /*                     XM3317* 01570000
*        3 DPMSGREI BIT(1);              /* DATA PROT MSG       XM3317* 01580000
*  RESTRICT(2,3,4,5,6,7,8,9);            /* RESTRICT REGS             * 01590000
*  GEN(EJECT);                                                          01600000
         EJECT                                                          01610000
         DS    0H                                                       01620000
*  IF RETAINAC='1'B THEN                 /* IS RETAIN ACTIVE    XM3317* 01630000
         TM    A00030,B'10000000'                                 0072  01640000
         BC    12,@9FF                                            0072  01650000
*    DPMSGREI='1'B;                      /* YES, NO REPLY FROM  XM3317* 01660000
         OI    A00031,B'00000001'                                 0073  01670000
*                                        /* REMOTE              XM3317* 01680000
*  R7=DEVTBPTR;                          /* 1ST WORK TABLE            * 01690000
@9FF     L     @7,DEVTBPTR                                        0074  01700000
*  R7=ADDR(NXTWK);                       /* 2ND WORK TABLE            * 01710000
         LA    @7,128(0,@7)                                       0075  01720000
*  ADRENT2=R7;                           /* STORE ADDRESS             * 01730000
         ST    @7,A00010                                          0076  01740000
*  R7=ADDR(NXTWK);                       /* 3RD WORK TABLE            * 01750000
         LA    @7,128(0,@7)                                       0077  01760000
*  ADRENT3=R7;                           /* STORE ADDRESS             * 01770000
         ST    @7,A00010+4                                        0078  01780000
*  RESTPTR=ROOTPTR+32;                   /* RESIDENT TABLE PTR        * 01790000
         LA    @F,32                                              0079  01800000
         A     @F,ROOTPTR                                         0079  01810000
         ST    @F,RESTPTR                                         0079  01820000
*  IF FSTEQU='0'B THEN                   /* IS THIS FIRST TIME  XM0095* 01830000
         TM    A00000,B'00000010'                                 0080  01840000
         BC    05,@9FE                                            0080  01850000
*    DO;                                 /* EQU ENTERED, YES    XM0095* 01860000
*      FSTEQU='1'B;                      /* SET NOT FIRST TIME  XM0095* 01870000
         OI    A00000,B'00000010'                                 0082  01880000
*      R4=IFD373;                        /* SET MSG IFD373I FOR XM0095* 01890000
         L     @4,A00004+20                                       0083  01900000
*      GEN(BAL   R9,CDS140);             /* WARNING MESSAGE     XM0095* 01910000
         BAL   R9,CDS140                                                01920000
         DS    0H                                                       01930000
*    END;                                /* NO                  XM0095* 01940000
* CDS010:                                /* LABEL                     * 01950000
*  GEN(BAL   R9,CDS212);                 /* ZERO WORK TABLES          * 01960000
@9FE     EQU   *                                                  0086  01970000
CDS010   BAL   R9,CDS212                                                01980000
         DS    0H                                                       01990000
*  R4=DEVTBPTR;                          /* WORK AREA ADDRESS         * 02000000
         L     @4,DEVTBPTR                                        0087  02010000
*  R4->FSTENT3(1:64)=RESTAB;             /* SAVE RESIDENT TABLE       * 02020000
         L     @C,RESTPTR                                         0088  02030000
         MVC   256(64,@4),0(@C)                                   0088  02040000
*  R4=IFD394;                            /* REPLY EQU, CLR OR END     * 02050000
         L     @4,A00004                                          0089  02060000
*  GEN(BAL   R9,CDS170);                 /* ISSUE WTOR                * 02070000
         BAL   R9,CDS170                                                02080000
         DS    0H                                                       02090000
* CDS022:                                /* LABEL                     * 02100000
*  DO R3=80 TO 1 BY -1;                  /* SCAN REPLY BUFFER         * 02110000
CDS022   LA    @3,80                                              0091  02120000
*    IF RBUF(R3)^=' ' THEN               /* TEST FOR END REPLY        * 02130000
@DO9FD   LR    @C,@3                                              0092  02140000
         LA    @A,REP0T81(@C)                                     0092  02150000
         CLI   0(@A),C' '                                         0092  02160000
*      GOTO CDS023;                      /* LAST NON-BLANK            * 02170000
         BC    07,CDS023                                          0093  02180000
*  END;                                  /* END SCANNING              * 02190000
* CDS023:                                /* LABEL                     * 02200000
*  R3=R3+1;                              /* LAST SLASH ITEM           * 02210000
         BCT   @3,@DO9FD                                          0094  02220000
CDS023   AH    @3,@D1                                             0095  02230000
*  RBUF(R3)='/';                         /* END OF LAST ENTRY         * 02240000
         LR    @C,@3                                              0096  02250000
         LA    @A,REP0T81(@C)                                     0096  02260000
         MVI   0(@A),C'/'                                         0096  02270000
*  LSTSLH=R3;                            /* LAST SLASH                * 02280000
         ST    @3,LSTSLH                                          0097  02290000
* CDS028:                                /* LABEL                     * 02300000
*  L=1;                                  /* 1ST REPLY ITEM            * 02310000
CDS028   LA    @F,1                                               0098  02320000
         ST    @F,L                                               0098  02330000
*  GOTO CDS034;                          /* CHECK 1ST ENTRY           * 02340000
         BC    15,CDS034                                          0099  02350000
* CDS030:                                /* LABEL                     * 02360000
*  GEN(BAL   R9,CDS210);                 /* ZERO TABLE                * 02370000
CDS030   BAL   R9,CDS210                                                02380000
         DS    0H                                                       02390000
* CDS031:                                /* LABEL                     * 02400000
*  GEN(BAL   R9,CDS216);                 /* ZERO WORK TABLES          * 02410000
CDS031   BAL   R9,CDS216                                                02420000
         DS    0H                                                       02430000
*  GEN(BAL   R9,CDS160);                 /* WORK TO RESIDENT          * 02440000
         BAL   R9,CDS160                                                02450000
         DS    0H                                                       02460000
* CDS032:                                /* LABEL                     * 02470000
*  L=H+2;                                /* START OF ENTRY            * 02480000
CDS032   LA    @F,2                                               0103  02490000
         A     @F,H                                               0103  02500000
         ST    @F,L                                               0103  02510000
* CDS034:                                /* LABEL                     * 02520000
*  CHIND='00'X;                          /* CLEAR INDICATORS          * 02530000
CDS034   MVI   CHIND,X'00'                                        0104  02540000
*  H=0;                                  /* END OF ENTRY              * 02550000
         SR    @F,@F                                              0105  02560000
         ST    @F,H                                               0105  02570000
*  DO R3=L TO LSTSLH BY 1;               /* SEARCH ENTRY              * 02580000
         L     @3,L                                               0106  02590000
         BC    15,@DO9F8                                          0106  02600000
*    IF RBUF(R3)=' ' THEN                /* TEST FOR BLANK            * 02610000
@DO9F9   LR    @C,@3                                              0107  02620000
         LA    @A,REP0T81(@C)                                     0107  02630000
         CLI   0(@A),C' '                                         0107  02640000
         BC    07,@9F5                                            0107  02650000
*      BLKBIT='1'B;                      /* BLANK FOUND               * 02660000
         OI    CHIND,B'10000000'                                  0108  02670000
*    IF RBUF(R3)='/' THEN                /* TEST FOR SLASH            * 02680000
@9F5     LA    @A,REP0T81(@C)                                     0109  02690000
         CLI   0(@A),C'/'                                         0109  02700000
*      GOTO CDS040;                      /* END OF ENTRY              * 02710000
         BC    08,CDS040                                          0110  02720000
*    H=R3;                               /* LAST ENTRY                * 02730000
         ST    @3,H                                               0111  02740000
*  END;                                  /* END ENTRY SEARCH          * 02750000
*  GOTO CDS010;                          /* END OF REPLY              * 02760000
         AH    @3,@D1                                             0112  02770000
@DO9F8   C     @3,LSTSLH                                          0112  02780000
         BC    12,@DO9F9                                          0112  02790000
         BC    15,CDS010                                          0113  02800000
* CDS040:                                /* LABEL                     * 02810000
*  IF H=0 THEN                           /* CHECK ENTRY               * 02820000
CDS040   SR    @F,@F                                              0114  02830000
         C     @F,H                                               0114  02840000
         BC    07,@9F4                                            0114  02850000
*    DO;                                 /* NO ENTRY ITEM             * 02860000
* CDS042:                                /* LABEL                     * 02870000
*      L=ADDR(INCR3);                    /* START OF NEXT ENTRY       * 02880000
CDS042   LA    @F,1(0,@3)                                         0116  02890000
         ST    @F,L                                               0116  02900000
*      GOTO CDS034;                      /* SCAN ENTRY                * 02910000
         BC    15,CDS034                                          0117  02920000
*    END;                                /* END ENTRY CHECK           * 02930000
*  IF RBUF(L:L+3)=KCLRSL THEN            /* CHECK REPLY               * 02940000
@9F4     L     @C,L                                               0119  02950000
         LA    @A,REP0T81(@C)                                     0119  02960000
         CLC   0(4,@A),KCLRSL                                     0119  02970000
*    GOTO CDS030;                        /* CLEAR RESIDENT TABLE      * 02980000
         BC    08,CDS030                                          0120  02990000
*  IF RBUF(L:L+3)=KENDSL THEN            /* CHECK REPLY               * 03000000
         CLC   0(4,@A),KENDSL                                     0121  03010000
*    GOTO CDS180;                        /* END ENTRIES               * 03020000
         BC    08,CDS180                                          0122  03030000
*  IF BLKBIT='1'B THEN                   /* CHECK INDICATOR           * 03040000
         TM    CHIND,B'10000000'                                  0123  03050000
*    GOTO CDS130;                        /* ENBEDDED BLANK            * 03060000
         BC    01,CDS130                                          0124  03070000
*  R5=ADRENT3;                           /* END 2ND WORK TABLE        * 03080000
         L     @5,A00010+4                                        0125  03090000
*  GEN(BAL   R6,CDS066);                 /* SET UP WORK TABLE         * 03100000
         BAL   R6,CDS066                                                03110000
         DS    0H                                                       03120000
*  DO R3=H TO L BY -1;                   /* SCAN ENTRY                * 03130000
         L     @3,H                                               0127  03140000
         BC    15,@DO9F2                                          0127  03150000
*    SBC=RBUF(R3);                       /* SAVE BUFFER CHAR          * 03160000
@DO9F3   LR    @C,@3                                              0128  03170000
         LA    @E,REP0T81(@C)                                     0128  03180000
         MVC   SBC(1),0(@E)                                       0128  03190000
*    DO R6=16 TO 1 BY -1;                /* SCAN EBCDIC LIST          * 03200000
         LA    @6,16                                              0129  03210000
*      IF SBC=LIST(R6) THEN              /* CHECK ENTRY ITEM          * 03220000
@DO9EF   LR    @C,@6                                              0130  03230000
         LA    @E,LIST-1(@C)                                      0130  03240000
         CLC   SBC(1),0(@E)                                       0130  03250000
         BC    07,@9EB                                            0130  03260000
*        DO;                             /* ITEM IN LIST              * 03270000
*          IF R4=0 THEN                  /* TEST DEVICE ADDRESS       * 03280000
         LTR   @4,@4                                              0132  03290000
*            GOTO CDS130;                /* TOO MANY CHARACTERS       * 03300000
         BC    08,CDS130                                          0133  03310000
*          SBUF(R4)=SBC;                 /* SAVE ITEM                 * 03320000
         LR    @C,@4                                              0134  03330000
         LA    @A,0(@C,@5)                                        0134  03340000
         BCTR  @A,0                                               0134  03350000
         MVC   0(1,@A),SBC                                        0134  03360000
*          R4=R4-1;                      /* COUNT OF ITEMS            * 03370000
         BCTR  @4,0                                               0135  03380000
*          GOTO CDS068;                  /* TEST NEXT ITEM            * 03390000
         BC    15,CDS068                                          0136  03400000
*        END;                            /* END SAVING ITEM           * 03410000
*    END;                                /* END SCANNING LIST         * 03420000
*    IF SBUF(2)='00'X THEN               /* TEST DEVICE ADDRESS       * 03430000
@9EB     BCT   @6,@DO9EF                                          0138  03440000
         CLI   1(@5),X'00'                                        0139  03450000
*      GOTO CDS130;                      /* TOO FEW CHARACTERS        * 03460000
         BC    08,CDS130                                          0140  03470000
*    IF SBC='=' THEN                     /* CHECK ENTRY ITEM          * 03480000
         CLI   SBC,C'='                                           0141  03490000
         BC    07,@9EA                                            0141  03500000
*      DO;                               /* SPECIAL CHARACTER         * 03510000
*        IF EQDASCOM^='000'B THEN        /* TEST FOR SPECIALS         * 03520000
         TM    CHIND,B'01110000'                                  0143  03530000
*          GOTO CDS130;                  /* NOT FIRST SPECIAL         * 03540000
         BC    05,CDS130                                          0144  03550000
*        EQUBIT='1'B;                    /* INDICATE EQUAL SIGN       * 03560000
         OI    CHIND,B'01000000'                                  0145  03570000
*        GOTO CDS064;                    /* NEXT DEVICE               * 03580000
         BC    15,CDS064                                          0146  03590000
*      END;                              /* END EQUAL SIGN TEST       * 03600000
*    IF EQUBIT='0'B THEN                 /* TEST INDICATOR            * 03610000
@9EA     TM    CHIND,B'01000000'                                  0148  03620000
*      GOTO CDS130;                      /* NO EQUAL SIGN             * 03630000
         BC    08,CDS130                                          0149  03640000
*    IF SBC='-' THEN                     /* CHECK ENTRY ITEM          * 03650000
         CLI   SBC,C'-'                                           0150  03660000
         BC    07,@9E9                                            0150  03670000
*      DO;                               /* DASH FOUND                * 03680000
*        IF DASCOM^='00'B THEN           /* TEST INDICATORS           * 03690000
         TM    CHIND,B'00110000'                                  0152  03700000
*          GOTO CDS130;                  /* PREVIOUS DASH/COMMA       * 03710000
         BC    05,CDS130                                          0153  03720000
*        DASBIT='1'B;                    /* INDICATE DASH             * 03730000
         OI    CHIND,B'00100000'                                  0154  03740000
*        GOTO CDS064;                    /* NEXT DEVICE               * 03750000
         BC    15,CDS064                                          0155  03760000
*      END;                              /* END DASH TEST             * 03770000
*    IF SBC^=',' THEN                    /* CHECK ENTRY ITEM          * 03780000
@9E9     CLI   SBC,C','                                           0157  03790000
*      GOTO CDS130;                      /* COMMA NOT FOUND           * 03800000
         BC    07,CDS130                                          0158  03810000
*    COMBIT='1'B;                        /* INDICATE COMMA            * 03820000
         OI    CHIND,B'00010000'                                  0159  03830000
*    IF DASBIT='1'B THEN                 /* TEST INDICATOR            * 03840000
         TM    CHIND,B'00100000'                                  0160  03850000
*      GOTO CDS130;                      /* PREVIOUS DASH             * 03860000
         BC    01,CDS130                                          0161  03870000
* CDS064:                                /* LABEL                     * 03880000
*    R6=ADDR(CDS068);                    /* RESUME ADDRESS            * 03890000
CDS064   LA    @6,CDS068                                          0162  03900000
* CDS066:                                /* LABEL                     * 03910000
*    R4=4;                               /* MAXIMUM DEVICE ITEM       * 03920000
CDS066   LA    @4,4                                               0163  03930000
*    R5=R5-R4;                           /* NEXT SAVE WORD            * 03940000
         SR    @5,@4                                              0164  03950000
*    SBUF(1)='0';                        /* SET UP WORD               * 03960000
         MVI   0(@5),C'0'                                         0165  03970000
*    GOTO R6;                            /* RESUME                    * 03980000
         BCR   15,@6                                              0166  03990000
* CDS068:                                /* LABEL                     * 04000000
*  END;                                  /* END SCANNING ENTRY        * 04010000
*  IF EQUBIT='0'B THEN                   /* TEST INDICATOR            * 04020000
CDS068   BCTR  @3,0                                               0167  04030000
@DO9F2   C     @3,L                                               0167  04040000
         BC    10,@DO9F3                                          0167  04050000
         TM    CHIND,B'01000000'                                  0168  04060000
*    GOTO CDS130;                        /* NO EQUAL SIGN             * 04070000
         BC    08,CDS130                                          0169  04080000
*  IF SBUF(2)='00'X THEN                 /* TEST DEVICE ADDRESS       * 04090000
         CLI   1(@5),X'00'                                        0170  04100000
*    GOTO CDS130;                        /* TOO FEW CHARACTERS        * 04110000
         BC    08,CDS130                                          0171  04120000
*  R7=ADRENT3;                           /* END 2ND WORK TABLE        * 04130000
         L     @7,A00010+4                                        0172  04140000
*  IF DASBIT='0'B THEN                   /* TEST INDICATOR            * 04150000
         TM    CHIND,B'00100000'                                  0173  04160000
*    GOTO CDS080;                        /* NO DASH BIT               * 04170000
         BC    08,CDS080                                          0174  04180000
*  R5=12;                                /* BYTES TO CONVERT          * 04190000
         LA    @5,12                                              0175  04200000
*  R7=R7-R5;                             /* CONTAIN EBCDIC            * 04210000
         SR    @7,@5                                              0176  04220000
*  GEN(BAL   R9,CDS120);                 /* EBCDIC TO HEX             * 04230000
         BAL   R9,CDS120                                                04240000
         DS    0H                                                       04250000
* CDS069:                                /* LABEL                     * 04260000
*  R3=DEVTBPTR;                          /* 1ST WORK AREA             * 04270000
CDS069   L     @3,DEVTBPTR                                        0178  04280000
*  R5=FSTD;                              /* 1ST DEVICE                * 04290000
         LH    @5,0(0,@3)                                         0179  04300000
*  R4=SECD;                              /* 2ND DEVICE                * 04310000
         LH    @4,2(0,@3)                                         0180  04320000
*  R6=R4-R5;                             /* DEVICE RANGE              * 04330000
         LCR   @6,@5                                              0181  04340000
         AR    @6,@4                                              0181  04350000
*  IF R6<0 THEN                          /* CHECK SEQUENCE            * 04360000
         LTR   @6,@6                                              0182  04370000
*    GOTO CDS130;                        /* DECREASING ORDER          * 04380000
         BC    04,CDS130                                          0183  04390000
*  IF R6^<16 THEN                        /* CHECK DEVICES             * 04400000
         CH    @6,@D2                                             0184  04410000
*    GOTO CDS130;                        /* EXCEEDS MAX DEVICES       * 04420000
         BC    10,CDS130                                          0185  04430000
         BC    15,@DO9E7                                          0186  04440000
*  DO R5=R5 TO R4 BY 1;                  /* DEVICE RANGE              * 04450000
@DO9E8   EQU   *                                                  0186  04460000
*    GEN(STH   R5,0(R7));                /* REAL DEVICE               * 04470000
         STH   R5,0(R7)                                                 04480000
         DS    0H                                                       04490000
*    DEVLK2=THIDK;                       /* CDS DEVICE                * 04500000
         MVC   2(2,@7),THIDK                                      0188  04510000
*    R7=ADDR(NXTLK);                     /* NEXT EQUATE               * 04520000
         LA    @7,4(0,@7)                                         0189  04530000
*  END;                                  /* END DEVICE RANGE          * 04540000
*  GOTO CDS070;                          /* CHECK RESIDENT AREA       * 04550000
         AH    @5,@D1                                             0190  04560000
@DO9E7   CR    @5,@4                                              0190  04570000
         BC    12,@DO9E8                                          0190  04580000
* CDS070:                                /* LABEL                     * 04590000
*  R7=ADRENT2;                           /* NEW ENTRIES IN HEX        * 04600000
CDS070   L     @7,A00010                                          0192  04610000
* CDS072:                                /* LABEL                     * 04620000
*  R8=ADRENT3;                           /* RESIDENT AREA SAVED       * 04630000
CDS072   L     @8,A00010+4                                        0193  04640000
*  IF DEVLK=KZIP4 THEN                   /* CHECK NEW ENTRY           * 04650000
         CLC   0(4,@7),A00009                                     0194  04660000
*    GOTO CDS031;                        /* NO MORE ENTRIES           * 04670000
         BC    08,CDS031                                          0195  04680000
*  R5=0;                                 /* NO RESIDENT ADDRESS       * 04690000
         SR    @5,@5                                              0196  04700000
*  DO R3=16 TO 1 BY -1;                  /* RESIDENT ENTRIES          * 04710000
         LA    @3,16                                              0197  04720000
*    IF DEV1=DEVLK1 THEN                 /* CHECK REAL DEVICE         * 04730000
@DO9E4   CLC   0(2,@8),0(@7)                                      0198  04740000
*      GOTO CDS074;                      /* ITS IN RESIDENT AREA      * 04750000
         BC    08,CDS074                                          0199  04760000
*    IF DEVCOP=KZIP4&                    /* RESIDENT AREA UNUSED      * 04770000
*      R5=0 THEN                         /* NO PREVIOUS AREA          * 04780000
         CLC   0(4,@8),A00009                                     0200  04790000
         BC    07,@9E0                                            0200  04800000
         LTR   @5,@5                                              0200  04810000
         BC    07,@9DF                                            0200  04820000
*        R5=R8;                          /* SAVE OPEN AREA            * 04830000
         LR    @5,@8                                              0201  04840000
*    R8=ADDR(NXTENT);                    /* NEXT RESIDENT ITEM        * 04850000
@9DF     EQU   *                                                  0202  04860000
@9E0     LA    @8,4(0,@8)                                         0202  04870000
*  END;                                  /* END RESIDENT PASS         * 04880000
*  R8=R5;                                /* LOAD ADDRESS              * 04890000
         BCT   @3,@DO9E4                                          0203  04900000
         LR    @8,@5                                              0204  04910000
*  IF R8=0 THEN                          /* CHECK VALUE               * 04920000
         LTR   @8,@8                                              0205  04930000
*    GOTO CDS176;                        /* RESIDENT TABLE FULL       * 04940000
         BC    08,CDS176                                          0206  04950000
* CDS074:                                /* LABEL                     * 04960000
*  IF DEVLK1=DEVLK2 THEN                 /* CHECK DEVICE              * 04970000
CDS074   CLC   0(2,@7),2(@7)                                      0207  04980000
         BC    07,@9DE                                            0207  04990000
*    DEVLK=DEVLK&&DEVLK;                 /* DEVICES THE SAME          * 05000000
         XC    0(4,@7),0(@7)                                      0208  05010000
*  DEVCOP=DEVLK;                         /* UPDATE RESIDENT AREA      * 05020000
@9DE     MVC   0(4,@8),0(@7)                                      0209  05030000
*  R7=ADDR(NXTLK);                       /* NEXT ENTRY                * 05040000
         LA    @7,4(0,@7)                                         0210  05050000
*  GOTO CDS072;                          /* REPEAT SEARCH             * 05060000
         BC    15,CDS072                                          0211  05070000
* CDS080:                                /* LABEL                     * 05080000
*  R5=0;                                 /* ZERO BYTE COUNT           * 05090000
CDS080   SR    @5,@5                                              0212  05100000
* CDS082:                                /* LABEL                     * 05110000
*  R7=R7-4;                              /* NEXT DEVICE ENTRY         * 05120000
CDS082   SH    @7,@D3                                             0213  05130000
*  IF R7P1='00'X THEN                    /* CHECK ENTRY               * 05140000
         CLI   1(@7),X'00'                                        0214  05150000
*    GOTO CDS084;                        /* NO MORE ENTRIES           * 05160000
         BC    08,CDS084                                          0215  05170000
*  R5=R5+4;                              /* BYTES TO CONVERT          * 05180000
         AH    @5,@D3                                             0216  05190000
*  GOTO CDS082;                          /* SEARCH FOR ENTRY          * 05200000
         BC    15,CDS082                                          0217  05210000
* CDS084:                                /* LABEL                     * 05220000
*  R7=R7+4;                              /* 1ST ENTRY IN EBCDIC       * 05230000
CDS084   AH    @7,@D3                                             0218  05240000
*  GEN(BAL   R9,CDS120);                 /* EBCDIC TO HEX             * 05250000
         BAL   R9,CDS120                                                05260000
         DS    0H                                                       05270000
*  R8=DEVTBPTR;                          /* 1ST WORK TABLE            * 05280000
         L     @8,DEVTBPTR                                        0220  05290000
* CDS086:                                /* LABEL                     * 05300000
*  IF DEV1=KZIP2 THEN                    /* CHECK NEW ENTRY           * 05310000
CDS086   CLC   0(2,@8),A00009                                     0221  05320000
*    GOTO CDS070;                        /* NO ENTRY LEFT             * 05330000
         BC    08,CDS070                                          0222  05340000
*  DEVLK1=DEV1;                          /* REAL DEVICE EQUATED       * 05350000
         MVC   0(2,@7),0(@8)                                      0223  05360000
*  DEVLK2=THIDK;                         /* CDS DEVICE EQUATE         * 05370000
         MVC   2(2,@7),THIDK                                      0224  05380000
*  R8=ADDR(DEV2);                        /* NEXT DEVICE               * 05390000
         LA    @8,2(0,@8)                                         0225  05400000
*  R7=ADDR(NXTLK);                       /* NEXT EQUATE               * 05410000
         LA    @7,4(0,@7)                                         0226  05420000
*  GOTO CDS086;                          /* CHECK                     * 05430000
         BC    15,CDS086                                          0227  05440000
*  GEN(EJECT);                                                          05450000
         EJECT                                                          05460000
         DS    0H                                                       05470000
* /******************************************************************** 05480000
* /* HEX TO EBCDIC CONVERSION                                         * 05490000
* /******************************************************************** 05500000
* CDS110:                                /* LABEL                     * 05510000
*  DO R6=16 TO 1 BY -1;                  /* SCAN TABLE ENTRIES        * 05520000
CDS110   LA    @6,16                                              0229  05530000
*    R5=HEXWD;                           /* WORD TO CONVERT           * 05540000
@DO9DD   L     @5,0(0,@7)                                         0230  05550000
*    IF R5=0 THEN                        /* CHECK WORD                * 05560000
         LTR   @5,@5                                              0231  05570000
*      GOTO R9;                          /* NO ENTRY                  * 05580000
         BCR   08,@9                                              0232  05590000
*    DO R3=8 TO 1 BY -1;                 /* HEX IN WORD               * 05600000
         LA    @3,8                                               0233  05610000
*      R4=0;                             /* ZERO WORK REG             * 05620000
@DO9D9   SR    @4,@4                                              0234  05630000
*      GEN(SLDL  R4,4);                  /* LOAD HEX CHARACTER        * 05640000
         SLDL  R4,4                                                     05650000
         DS    0H                                                       05660000
*      GEN(IC    R4,LIST(R4));           /* HEX VALUE IN EBCDIC       * 05670000
         IC    R4,LIST(R4)                                              05680000
         DS    0H                                                       05690000
*      GEN(STC   R4,0(R8));              /* STORE EBCDIC VALUE        * 05700000
         STC   R4,0(R8)                                                 05710000
         DS    0H                                                       05720000
*      R8=R8+1;                          /* NEXT STORAGE AREA         * 05730000
         AH    @8,@D1                                             0238  05740000
*    END;                                /* END HEX IN WORD           * 05750000
*    R7=ADDR(NXTLK);                     /* NEXT WORD                 * 05760000
         BCT   @3,@DO9D9                                          0239  05770000
         LA    @7,4(0,@7)                                         0240  05780000
*  END;                                  /* END TABLE SCANNING        * 05790000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 05800000
         BCT   @6,@DO9DD                                          0241  05810000
         BCR   15,@9                                              0242  05820000
* /******************************************************************** 05830000
* /* EBCDIC TO HEX CONVERTION                                         * 05840000
* /******************************************************************** 05850000
* CDS120:                                /* LABEL                     * 05860000
*  R3=DEVTBPTR;                          /* 1ST WORK TABLE            * 05870000
CDS120   L     @3,DEVTBPTR                                        0243  05880000
*  DO R5=R5/2 TO 1 BY -1;                /* BYTES TO CONVERT          * 05890000
         LR    @F,@5                                              0244  05900000
         SRA   @F,1                                               0244  05910000
         LTR   @5,@F                                              0244  05920000
         BC    12,@DO9D4                                          0244  05930000
*    R4=0;                               /* ZERO HEX VALUE            * 05940000
@DO9D5   SR    @4,@4                                              0245  05950000
*    DO R6=15 TO 1 BY -1;                /* CONVERSION LIST           * 05960000
         LA    @6,15                                              0246  05970000
*      IF TB2=LIST1(R6) THEN             /* CHECK ODD BYTE            * 05980000
@DO9D1   LR    @C,@6                                              0247  05990000
         LA    @E,LIST(@C)                                        0247  06000000
         CLC   0(1,@7),0(@E)                                      0247  06010000
         BC    07,@9CD                                            0247  06020000
*        R4=R4|R6*16;                    /* HEX VALUE FOUND           * 06030000
         LR    @F,@6                                              0248  06040000
         SLA   @F,4                                               0248  06050000
         OR    @4,@F                                              0248  06060000
*      IF TB2A=LIST1(R6) THEN            /* CHECK EVEN BYTE           * 06070000
@9CD     LA    @E,LIST(@C)                                        0249  06080000
         CLC   1(1,@7),0(@E)                                      0249  06090000
         BC    07,@9CC                                            0249  06100000
*        R4=R4|R6;                       /* HEX VALUE FOUND           * 06110000
         OR    @4,@6                                              0250  06120000
*    END;                                /* END CONVERSION LIST       * 06130000
*    GEN(STC   R4,0(R3));                /* STORE HEX VALUE           * 06140000
@9CC     BCT   @6,@DO9D1                                          0251  06150000
         STC   R4,0(R3)                                                 06160000
         DS    0H                                                       06170000
*    R3=ADDR(RES2);                      /* NEXT HEX STORE AREA       * 06180000
         LA    @3,1(0,@3)                                         0253  06190000
*    R7=ADDR(NXTTB);                     /* NEXT EBCDIC ITEM          * 06200000
         LA    @7,2(0,@7)                                         0254  06210000
*  END;                                  /* END CONVERSION            * 06220000
*  R3=R3-2;                              /* LAST HEX AREA             * 06230000
         BCT   @5,@DO9D5                                          0255  06240000
@DO9D4   SH    @3,@D4                                             0256  06250000
*  THIDK=RESLST;                         /* LAST HEX DEVICE           * 06260000
         MVC   THIDK(2),0(@3)                                     0257  06270000
*  RESLST=RESLST&&RESLST;                /* ZERO OUT DEVICE           * 06280000
         XC    0(2,@3),0(@3)                                      0258  06290000
*  R7=ADRENT2;                           /* TO HOLD HEX EQUATES       * 06300000
         L     @7,A00010                                          0259  06310000
*  ZIPENT2=ZIPENT2&&ZIPENT2;             /* ZERO TABLE OUT            * 06320000
         XC    0(128,@7),0(@7)                                    0260  06330000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 06340000
         BCR   15,@9                                              0261  06350000
*  GEN(EJECT);                                                          06360000
         EJECT                                                          06370000
         DS    0H                                                       06380000
* /******************************************************************** 06390000
* /* INVALID ENTRY MESSAGE                                            * 06400000
* /******************************************************************** 06410000
* CDS130:                                /* LABEL                     * 06420000
*  R4=IFD397;                            /* WTO ADDRESS               * 06430000
CDS130   L     @4,A00004+12                                       0263  06440000
*  R3=H-L+27;                            /* VARIABLE REPLY SIZE         06450000
         LA    @3,27                                              0264  06460000
         S     @3,L                                               0264  06470000
         A     @3,H                                               0264  06480000
*  IF R3>74 THEN                         /* CHECK REPLY SIZE            06490000
         CH    @3,@D5                                             0265  06500000
         BC    12,@9CB                                            0265  06510000
*    R3=74;                              /* MAX SIZE                    06520000
         LA    @3,74                                              0266  06530000
*  INVR(1:48)=RBUF(L:L+47);              /* INVALID REPLY TEXT          06540000
@9CB     L     @C,L                                               0267  06550000
         LA    @E,REP0T81(@C)                                     0267  06560000
         MVC   26(48,@4),0(@E)                                    0267  06570000
*  GEN(STC   R3,1(R4));                  /* MESSAGE SIZE TO WTO       * 06580000
         STC   R3,1(R4)                                                 06590000
         DS    0H                                                       06600000
*  R3=R3+R4;                             /* END OF MESSAGE              06610000
         AR    @3,@4                                              0269  06620000
*  SETCODS=RTDESC;                       /* ROUTCDE, DESC CODES         06630000
         MVC   0(4,@3),78(@4)                                     0270  06640000
*  GEN(BAL   R9,CDS140);                 /* ISSUE WTO                 * 06650000
         BAL   R9,CDS140                                                06660000
         DS    0H                                                       06670000
*  GOTO CDS010;                          /* REQUEST ENTRY             * 06680000
         BC    15,CDS010                                          0272  06690000
* CDS140:                                /* LABEL                     * 06700000
*  R1=R4;                                /* WTO ADDRESS               * 06710000
CDS140   LR    @1,@4                                              0273  06720000
*  GEN(PWTO  REG=(1));                   /* ISSUE WTO                 * 06730000
         PWTO  REG=(1)                                                  06740000
         DS    0H                                                       06750000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 06760000
         BCR   15,@9                                              0275  06770000
* CDS160:                                /* LABEL                     * 06780000
*  R7=RESTPTR;                           /* RESIDENT TABLE            * 06790000
CDS160   L     @7,RESTPTR                                         0276  06800000
*  R7->RESTAB=R7->RESTAB&&R7->RESTAB;    /* ZERO RESIDENT TABLE       * 06810000
         XC    0(64,@7),0(@7)                                     0277  06820000
*  R8=ADRENT3;                           /* RESIDENT AREA SAVED       * 06830000
         L     @8,A00010+4                                        0278  06840000
*  DO R4=16 TO 1 BY -1;                  /* ITEMS TO CHECK            * 06850000
         LA    @4,16                                              0279  06860000
*    IF DEV1=KZIP2 THEN                  /* CHECK DEVICE ENTRY        * 06870000
@DO9CA   CLC   0(2,@8),A00009                                     0280  06880000
*     GOTO CDS162;                       /* NO ENTRY                  * 06890000
         BC    08,CDS162                                          0281  06900000
*    DEVLK=DEVCOP;                       /* ENTRY TO RESIDENT         * 06910000
         MVC   0(4,@7),0(@8)                                      0282  06920000
*    R7=ADDR(NXTLK);                     /* NEXT RESIDENT AREA        * 06930000
         LA    @7,4(0,@7)                                         0283  06940000
* CDS162:                                /* LABEL                     * 06950000
*    R8=ADDR(NXTENT);                    /* NEXT ITEM TO CHECK        * 06960000
CDS162   LA    @8,4(0,@8)                                         0284  06970000
*  END;                                  /* END ITEM CHECKING         * 06980000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 06990000
         BCT   @4,@DO9CA                                          0285  07000000
         BCR   15,@9                                              0286  07010000
* CDS210:                                /* LABEL                     * 07020000
*  RESTAB=RESTAB&&RESTAB;                /* ZERO RESIDENT TABLE       * 07030000
CDS210   L     @C,RESTPTR                                         0287  07040000
         XC    0(64,@C),0(@C)                                     0287  07050000
* CDS212:                                /* LABEL                     * 07060000
*  FSTENT3=FSTENT3&&FSTENT3;             /* ZERO WORK TABLE           * 07070000
CDS212   L     @C,DEVTBPTR                                        0288  07080000
         XC    256(128,@C),256(@C)                                0288  07090000
* CDS216:                                /* LABEL                     * 07100000
*  FSTENT12=FSTENT12&&FSTENT12;          /* ZERO WORK AREA            * 07110000
CDS216   L     @C,DEVTBPTR                                        0289  07120000
         XC    0(256,@C),0(@C)                                    0289  07130000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 07140000
         BCR   15,@9                                              0290  07150000
*  GEN(EJECT);                                                          07160000
         EJECT                                                          07170000
         DS    0H                                                       07180000
* /******************************************************************** 07190000
* /* ENTER DEV EQUATES/END/CLR                                        * 07200000
* /******************************************************************** 07210000
* CDS170:                                /* LABEL                     * 07220000
*  EQUECB=0;                             /* ZERO OUT ECB              * 07230000
CDS170   SR    @F,@F                                              0292  07240000
         ST    @F,EQUECB                                          0292  07250000
*  RBUF=REP0T79;                         /* CLEAR REPLY BUFFER        * 07260000
         MVC   REP0T81+1(80),REP0T81                              0293  07270000
*  R1=R4;                                /* WTOR ADDRESS              * 07280000
         LR    @1,@4                                              0294  07290000
*  WTORADRS(2:8)=SETWTOR(2:8);           /* UPDATE WTOR               * 07300000
         MVC   1(7,@4),SETWTOR+1                                  0295  07310000
*  GEN(PWTOR  REG=(1));                  /* ISSUE WTOR ADDRESSES      * 07320000
         PWTOR  REG=(1)                                                 07330000
         DS    0H                                                       07340000
*  GOTO R9;                              /* RETURN TO MAIN FLOW       * 07350000
         BCR   15,@9                                              0297  07360000
* CDS176:                                /* LABEL                     * 07370000
*  R4=IFD398;                            /* EXCEEDS MAXIMUM           * 07380000
CDS176   L     @4,A00004+16                                       0298  07390000
*  GEN(BAL   R9,CDS140);                 /* ISSUE WTO                 * 07400000
         BAL   R9,CDS140                                                07410000
         DS    0H                                                       07420000
*  GEN(BAL   R9,CDS216);                 /* ZERO WORK TABLES          * 07430000
         BAL   R9,CDS216                                                07440000
         DS    0H                                                       07450000
*  GEN(BAL   R9,CDS160);                 /* WORK TO RESIDENT          * 07460000
         BAL   R9,CDS160                                                07470000
         DS    0H                                                       07480000
*  GOTO CDS180;                          /* OUTPUT EQUATES            * 07490000
* /******************************************************************** 07500000
* /* WORK TABLE TO RESIDENT TABLE                                     * 07510000
* /******************************************************************** 07520000
* CDS180:                                /* LABEL                     * 07530000
*  R8=DEVTBPTR;                          /* 1ST WORK TABLE            * 07540000
CDS180   L     @8,DEVTBPTR                                        0303  07550000
*  R7=RESTPTR;                           /* RESIDENT TABLE PTR        * 07560000
         L     @7,RESTPTR                                         0304  07570000
*  GEN(BAL   R9,CDS110);                 /* HEX TO EBCDIC             * 07580000
         BAL   R9,CDS110                                                07590000
         DS    0H                                                       07600000
*  R4=IFD395;                            /* MESSAGE ADDRESS           * 07610000
         L     @4,A00004+4                                        0306  07620000
*  MSG395=ACEQSEL;                       /* EQUATES SELECTED          * 07630000
         MVC   12(23,@4),ACEQSEL                                  0307  07640000
*  GEN(BAL   R9,CDS140);                 /* ISSUE WTO                 * 07650000
         BAL   R9,CDS140                                                07660000
         DS    0H                                                       07670000
* CDS181:                                /* LABEL                     * 07680000
*  MSG395=MSG3951;                       /* BLANK VARIABLES           * 07690000
CDS181   MVC   12(23,@4),11(@4)                                   0309  07700000
*  RESENTB='1'B;                         /* RESIDENT ENTRIES          * 07710000
         OI    A00000,B'01000000'                                 0310  07720000
*  R8=DEVTBPTR;                          /* 1ST WORK TABLE            * 07730000
         L     @8,DEVTBPTR                                        0311  07740000
*  IF ABYT='00'X THEN                    /* CHECK 1ST ENTRY           * 07750000
         CLI   0(@8),X'00'                                        0312  07760000
         BC    07,@9C6                                            0312  07770000
*    DO;                                 /* NO DEVICE EQUATES         * 07780000
*      RESENTB='0'B;                     /* NO RESIDENT ENTRIES       * 07790000
         NI    A00000,B'10111111'                                 0314  07800000
*      MSG395(1:4)=KNONE;                /* INDICATE SUCH             * 07810000
         MVC   12(4,@4),KNONE                                     0315  07820000
*      GEN(BAL   R9,CDS140);             /* ISSUE WTO                 * 07830000
         BAL   R9,CDS140                                                07840000
         DS    0H                                                       07850000
*    END;                                /* END ENTRY CHECK           * 07860000
*  DO R6=16 TO 1 BY -1;                  /* RESIDENT ENTRIES          * 07870000
@9C6     LA    @6,16                                              0318  07880000
*    IF ABYT='00'X THEN                  /* CHECK ENTRY               * 07890000
@DO9C5   CLI   0(@8),X'00'                                        0319  07900000
*      GOTO CDS184;                      /* NO DEVICE                 * 07910000
         BC    08,CDS184                                          0320  07920000
*    MSG395(1:4)=PDEV1;                  /* REAL DEVICE               * 07930000
         MVC   12(4,@4),0(@8)                                     0321  07940000
*    MSG395(5)='=';                      /* EQUAL SIGN                * 07950000
         MVI   16(@4),C'='                                        0322  07960000
*    MSG395(6:9)=PDEV2;                  /* CDS EQUATE                * 07970000
         MVC   17(4,@4),4(@8)                                     0323  07980000
*    GEN(BAL   R9,CDS140);               /* ISSUE WTO                 * 07990000
         BAL   R9,CDS140                                                08000000
         DS    0H                                                       08010000
*    R8=ADDR(PDEVNXT);                   /* NEXT EQUATE               * 08020000
         LA    @8,8(0,@8)                                         0325  08030000
*  END;                                  /* END ENTRY CHECK           * 08040000
* CDS184:                                /* LABEL                     * 08050000
*  GOTO CDS192;                          /* VERIFY EQUATES            * 08060000
         BCT   @6,@DO9C5                                          0326  08070000
* CDS192:                                /* LABEL                     * 08080000
*  R4=IFD396;                            /* VERIFICATION              * 08090000
CDS192   L     @4,A00004+8                                        0328  08100000
*  GEN(BAL   R9,CDS170);                 /* ISSUE WTOR                * 08110000
         BAL   R9,CDS170                                                08120000
         DS    0H                                                       08130000
*  IF RBUF(1:3)=KNO THEN                 /* CHECK REPLY               * 08140000
         CLC   REP0T81+1(3),KNO                                   0330  08150000
*    GOTO CDS010;                        /* NO REPLIED                * 08160000
         BC    08,CDS010                                          0331  08170000
*  IF RBUF(1:3)^=KYES THEN               /* CHECK REPLY               * 08180000
         CLC   REP0T81+1(3),KYES                                  0332  08190000
*    GOTO CDS192;                        /* NOT YES                   * 08200000
         BC    07,CDS192                                          0333  08210000
*  GEN(BAL   R9,CDS212);                 /* ZERO WORK TABLES          * 08220000
         BAL   R9,CDS212                                                08230000
         DS    0H                                                       08240000
*  DPMSGREI='0'B;                        /* ZERO DP MSG REI     XM3317* 08250000
         NI    A00031,B'11111110'                                 0335  08260000
*  RETURN;                               /* RETURN TO CALLER          * 08270000
* END IFDOLT49;                                                         08280000
@EL01    L     @D,4(0,@D)                                         0337  08290000
         LM    @E,@C,12(@D)                                       0337  08300000
         BCR   15,@E                                              0337  08310000
@DATA1   EQU   *                                                        08320000
@0       EQU   00                  EQUATES FOR REGISTERS 0-15           08330000
@1       EQU   01                                                       08340000
@2       EQU   02                                                       08350000
@3       EQU   03                                                       08360000
@4       EQU   04                                                       08370000
@5       EQU   05                                                       08380000
@6       EQU   06                                                       08390000
@7       EQU   07                                                       08400000
@8       EQU   08                                                       08410000
@9       EQU   09                                                       08420000
@A       EQU   10                                                       08430000
@B       EQU   11                                                       08440000
@C       EQU   12                                                       08450000
@D       EQU   13                                                       08460000
@E       EQU   14                                                       08470000
@F       EQU   15                                                       08480000
@D1      DC    H'1'                                                     08490000
@D2      DC    H'16'                                                    08500000
@D3      DC    H'4'                                                     08510000
@D4      DC    H'2'                                                     08520000
@D5      DC    H'74'                                                    08530000
         DS    0F                                                       08540000
         DS    0D                                                       08550000
@DATA    EQU   *                                                        08560000
@SAV001  EQU   @DATA+00000000      72 BYTE(S) ON WORD                   08570000
X        EQU   00000000            FULLWORD INTEGER                     08580000
R0       EQU   00000000            FULLWORD POINTER REGISTER            08590000
R1       EQU   00000001            FULLWORD POINTER REGISTER            08600000
R2       EQU   00000002            FULLWORD POINTER REGISTER            08610000
R3       EQU   00000003            FULLWORD POINTER REGISTER            08620000
R4       EQU   00000004            FULLWORD POINTER REGISTER            08630000
R5       EQU   00000005            FULLWORD POINTER REGISTER            08640000
R6       EQU   00000006            FULLWORD POINTER REGISTER            08650000
R7       EQU   00000007            FULLWORD POINTER REGISTER            08660000
R8       EQU   00000008            FULLWORD POINTER REGISTER            08670000
R9       EQU   00000009            FULLWORD POINTER REGISTER            08680000
R10      EQU   00000010            FULLWORD POINTER REGISTER            08690000
R11      EQU   00000011            FULLWORD POINTER REGISTER            08700000
R12      EQU   00000012            FULLWORD POINTER REGISTER            08710000
R13      EQU   00000013            FULLWORD POINTER REGISTER            08720000
R14      EQU   00000014            FULLWORD POINTER REGISTER            08730000
R15      EQU   00000015            FULLWORD POINTER REGISTER            08740000
EQUECB   EQU   @DATA+00000072      FULLWORD INTEGER                     08750000
LSTSLH   EQU   @DATA+00000076      FULLWORD INTEGER                     08760000
L        EQU   @DATA+00000080      FULLWORD INTEGER                     08770000
H        EQU   @DATA+00000084      FULLWORD INTEGER                     08780000
RESTPTR  EQU   @DATA+00000088      FULLWORD POINTER                     08790000
A00006   EQU   00000000            64 BYTE(S) ON WORD                   08800000
RESTAB   EQU   A00006+00000000     64 BYTE(S)                           08810000
SETWTOR  EQU   @DATA+00000092      8 BYTE(S) ON WORD                    08820000
         ORG   SETWTOR+00000000                                         08830000
A00007   EQU   *                   FULLWORD POINTER                     08840000
         DC    AL4(RBUF)                                                08850000
A00008   EQU   *                   FULLWORD POINTER                     08860000
         DC    AL4(EQUECB)                                              08870000
A00009   EQU   *                   FULLWORD INTEGER                     08880000
         DC    FL4'0'                                                   08890000
KZIP4    EQU   A00009+00000000     4 BYTE(S)                            08900000
KZIP2    EQU   A00009+00000000     2 BYTE(S)                            08910000
A00010   EQU   @DATA+00000104      8 BYTE(S) ON WORD                    08920000
ADRENT2  EQU   A00010+00000000     FULLWORD POINTER                     08930000
ADRENT3  EQU   A00010+00000004     FULLWORD POINTER                     08940000
THIDK    EQU   @DATA+00000112      HALFWORD INTEGER                     08950000
A00011   EQU   00000000            384 BYTE(S) ON WORD                  08960000
FSTENT12 EQU   A00011+00000000     256 BYTE(S)                          08970000
FSTENT1  EQU   A00011+00000000     128 BYTE(S)                          08980000
FSTENT2  EQU   A00011+00000128     128 BYTE(S)                          08990000
FSTENT3  EQU   A00011+00000256     128 BYTE(S)                          09000000
ENDTABS  EQU   A00011+00000256     1 BYTE(S)                            09010000
A00012   EQU   00000000            6 BYTE(S) ON WORD                    09020000
FSTD     EQU   A00012+00000000     HALFWORD INTEGER                     09030000
SECD     EQU   A00012+00000002     HALFWORD INTEGER                     09040000
THID     EQU   A00012+00000004     HALFWORD INTEGER                     09050000
A00013   EQU   00000000            2 BYTE(S) ON WORD                    09060000
RESLST   EQU   A00013+00000000     2 BYTE(S)                            09070000
RES1     EQU   A00013+00000000     1 BYTE(S)                            09080000
RES2     EQU   A00013+00000001     1 BYTE(S)                            09090000
INCR3    EQU   00000001            1 BYTE(S)                            09100000
SETCODS  EQU   00000000            4 BYTE(S)                            09110000
WTORADRS EQU   00000000            8 BYTE(S)                            09120000
A00014   EQU   00000011            24 BYTE(S) ON WORD                   09130000
MSG3951  EQU   A00014+00000000     23 BYTE(S)                           09140000
A00015   EQU   A00014+00000000     1 BYTE(S)                            09150000
MSG395   EQU   A00014+00000001     23 BYTE(S)                           09160000
A00016   EQU   A00014+00000001     1 BYTE(S)                            09170000
A00017   EQU   00000000            82 BYTE(S) ON WORD                   09180000
A00018   EQU   A00017+00000000     26 BYTE(S)                           09190000
A00019   EQU   A00017+00000000     1 BYTE(S)                            09200000
MSGSZ    EQU   A00017+00000001     1 BYTE(S)                            09210000
INVR     EQU   A00017+00000026     48 BYTE(S)                           09220000
A00020   EQU   A00017+00000074     4 BYTE(S)                            09230000
RTDESC   EQU   A00017+00000078     4 BYTE(S)                            09240000
SBUF     EQU   00000000            4 BYTE(S)                            09250000
A00021   EQU   SBUF+00000000       1 BYTE(S)                            09260000
SBUF1    EQU   SBUF+00000001       3 BYTE(S)                            09270000
HEXWD    EQU   00000000            FULLWORD INTEGER                     09280000
ZIPENT2  EQU   00000000            128 BYTE(S)                          09290000
A00022   EQU   00000000            8 BYTE(S) ON WORD                    09300000
DEVLK    EQU   A00022+00000000     4 BYTE(S)                            09310000
DEVLK1   EQU   A00022+00000000     2 BYTE(S)                            09320000
DEVLK2   EQU   A00022+00000002     2 BYTE(S)                            09330000
NXTLK    EQU   A00022+00000004     4 BYTE(S)                            09340000
R7P1     EQU   00000001            1 BYTE(S)                            09350000
A00023   EQU   00000000            3 BYTE(S) ON HWORD                   09360000
TB2      EQU   A00023+00000000     1 BYTE(S)                            09370000
TB2A     EQU   A00023+00000001     1 BYTE(S)                            09380000
NXTTB    EQU   A00023+00000002     1 BYTE(S)                            09390000
NXTWK    EQU   00000128            1 BYTE(S)                            09400000
A00024   EQU   00000000            12 BYTE(S) ON WORD                   09410000
DEVCOP   EQU   A00024+00000000     4 BYTE(S)                            09420000
DEV1     EQU   A00024+00000000     2 BYTE(S)                            09430000
DEV2     EQU   A00024+00000002     2 BYTE(S)                            09440000
NXTENT   EQU   A00024+00000004     8 BYTE(S)                            09450000
ABYT     EQU   00000000            1 BYTE(S)                            09460000
A00025   EQU   00000000            12 BYTE(S) ON WORD                   09470000
PDEV1    EQU   A00025+00000000     4 BYTE(S)                            09480000
PDEV2    EQU   A00025+00000004     4 BYTE(S)                            09490000
PDEVNXT  EQU   A00025+00000008     4 BYTE(S)                            09500000
         ORG   @DATA+00000114                                           09510000
KCLRSL   EQU   *                   4 BYTE(S)                            09520000
         DC    C'CLR/'                                                  09530000
KENDSL   EQU   *                   4 BYTE(S)                            09540000
         DC    C'END/'                                                  09550000
KNONE    EQU   *                   4 BYTE(S)                            09560000
         DC    C'NONE'                                                  09570000
KYES     EQU   *                   3 BYTE(S)                            09580000
         DC    C'YES'                                                   09590000
KNO      EQU   *                   3 BYTE(S)                            09600000
         DC    C'NO '                                                   09610000
LIST     EQU   *                   16 BYTE(S)                           09620000
         DC    C'0123456789ABCDEF'                                      09630000
A00026   EQU   LIST+00000000       1 BYTE(S)                            09640000
LIST1    EQU   LIST+00000001       15 BYTE(S)                           09650000
REP0T81  EQU   @DATA+00000148      82 BYTE(S)                           09660000
REP0T79  EQU   REP0T81+00000000    80 BYTE(S)                           09670000
A00027   EQU   *                   1 BYTE(S)                            09680000
         DC    C' '                                                     09690000
RBUF     EQU   REP0T81+00000001    80 BYTE(S)                           09700000
         ORG   REP0T81+00000081                                         09710000
A00028   EQU   *                   1 BYTE(S)                            09720000
         DC    C' '                                                     09730000
CHIND    EQU   @DATA+00000230      1 BYTE(S)                            09740000
BLKBIT   EQU   CHIND+00000000      1 BIT(S)                             09750000
EQDASCOM EQU   CHIND+00000000      3 BIT(S)                             09760000
EQUBIT   EQU   CHIND+00000000      1 BIT(S)                             09770000
DASCOM   EQU   CHIND+00000000      2 BIT(S)                             09780000
DASBIT   EQU   CHIND+00000000      1 BIT(S)                             09790000
COMBIT   EQU   CHIND+00000000      1 BIT(S)                             09800000
A00029   EQU   CHIND+00000000      1 BIT(S)                             09810000
SBC      EQU   @DATA+00000231      1 BYTE(S)                            09820000
         ORG   @DATA+00000232                                           09830000
ACEQSEL  EQU   *                   23 BYTE(S)                           09840000
         DC    C'ACTIVE EQUATES SELECTED'                               09850000
         ORG   @DATA                                                    09860000
         DS    00000255C                                                09870000
@TEMPS   DS    0F                                                       09880000
IFDMSG49 DS    0F                                                       09890000
         DC    A(MSG1)                                                  09900000
         DC    A(MSG2)                                                  09910000
         DC    A(MSG3)                                                  09920000
         DC    A(MSG4)                                                  09930000
         DC    A(MSG5)                                                  09940000
         DC    A(MSG6)                                           XM0095 09950000
MSG1     DS    0F                                                       09960000
         DC    X'50'                                                    09970000
         DC    XL7'00'                                                  09980000
         WTO   'IFD394D ENTER DEV EQUATES/END/CLR',ROUTCDE=10,DESC=7,MFX09990000
               =L                                                       10000000
MSG2     WTO   'IFD395I ACTIVE EQUATES SELECTED',ROUTCDE=10,DESC=7,MF=L 10010000
MSG3     DS    0F                                                       10020000
         DC    X'03'                                                    10030000
         DC    XL7'00'                                                  10040000
         WTO   'IFD396D ARE EQUATES CORRECT?  YES/NO',ROUTCDE=10,DESC=7X10050000
               ,MF=L                                                    10060000
MSG4     WTO   'IFD397I INVALID ENTRY                                  X10070000
                                  ',ROUTCDE=10,DESC=7,MF=L              10080000
MSG5     WTO   'IFD398I EQUATED DEVICES EXCEED 16',ROUTCDE=10,DESC=7,MFX10090000
               =L                                                       10100000
MSG6     WTO   'IFD373I WARNING, EQUATING CDS TO SHARED DEV COULD DESTRX10110000
               OY DATA',ROUTCDE=10,DESC=7,MF=L                          10120000
DSECT49  IFDCOM                                                         10130000
IFDOLT49 CSECT                                                          10140000
A00000   EQU   TABLNGTH+00000002   1 BYTE(S)                            10150000
A00001   EQU   A00000+00000000     1 BIT(S)                             10160000
RESENTB  EQU   A00000+00000000     1 BIT(S)                             10170000
A00002   EQU   A00000+00000000     4 BIT(S)                             10180000
FSTEQU   EQU   A00000+00000000     1 BIT(S)                             10190000
A00003   EQU   A00000+00000000     1 BIT(S)                             10200000
ROOTPTR  EQU   MCT+00000128        FULLWORD POINTER                     10210000
A00004   EQU   IFDMSG49+00000000   24 BYTE(S) ON WORD                   10220000
IFD394   EQU   A00004+00000000     FULLWORD POINTER                     10230000
IFD395   EQU   A00004+00000004     FULLWORD POINTER                     10240000
IFD396   EQU   A00004+00000008     FULLWORD POINTER                     10250000
IFD397   EQU   A00004+00000012     FULLWORD POINTER                     10260000
IFD398   EQU   A00004+00000016     FULLWORD POINTER                     10270000
IFD373   EQU   A00004+00000020     FULLWORD POINTER                     10280000
A00005   EQU   A00004+00000020     1 BYTE(S)                            10290000
A00030   EQU   CESWTR+00000000     1 BYTE(S)                            10300000
RETAINAC EQU   A00030+00000000     1 BIT(S)                             10310000
A00031   EQU   CESWTR2+00000000    1 BYTE(S)                            10320000
A00032   EQU   A00031+00000000     7 BIT(S)                             10330000
DPMSGREI EQU   A00031+00000000     1 BIT(S)                             10340000
@DATEND  EQU   *                                                        10350000
CDS184   EQU   CDS192                                                   10360000
         END   IFDOLT49                                                 10370000
