         TITLE 'IEDQB4  -  SLOWPOLL ROUTINE'                            00400022
IEDQB4   CSECT                                                          00800022
*C660000                                                       @G36XRAW 00900000
*********************************************************************** 01200022
*                                                                     * 01600022
* STATUS - CHANGE LEVEL 0                                             * 02000022
*                                                                     * 02400022
* FUNCTION -                                                          * 02800022
*    TO INTERRUPT THE POLLING CYCLE IN PROGRESS ON A LINE. AFTER      * 03200022
*    A SPECIFIED LENGTH OF TIME, THE POLLING RESUMES IN REGULAR       * 03600022
*    ORDER. THIS FUNCTION IS HELPFUL WHEN A LINE PROBLEM IS DETECTED  * 04000022
*    BECAUSE IT AVOIDS MUCH USELESS POLLING AND SUBSEQUENT ISSUING    * 04400022
*    OF OPERATOR MESSAGES. THIS FUNCTION ALSO REDUCES OPERATOR        * 04800022
*    INTERVENTION - WHEN THE LINE IS ULTIMATELY IN WORKING ORDER      * 05200022
*    AGAIN, IT IS POLLED AUTOMATICALLY WITHOUT ANY ACTION BY THE      * 05600022
*    OPERATOR.                                                        * 06000022
*                                                                     * 06400022
*    THE INTERRUPTION OF THE POLLING CYCLE IS ACCOMPLISHED BY         * 06800022
*    PLACING THE LCB INTO THE TIME DELAY QUEUE FOR A SPECIFIED        * 07200022
*    LENGTH OF TIME.                                                  * 07600022
*                                                                     * 08000022
* ENTRY POINTS -                                                      * 08400022
*         FIRST EXECUTABLE INSTRUCTION - CALLED BY THE BUFFER         * 08800022
*         DISPOSITION SUBTASK (IEDQBD) IN AN INMESSAGE SUBGROUP       * 09200022
*         OF AN MH.                                                   * 09600022
*                                                                     * 10000022
* INPUT -                                                             * 10400022
*    R1 - LIST OF ELEMENTS TO BE POSTED                               * 10800022
*    R4 - LCB ADDRESS                                                 * 11200022
*    R8 - ADDRESS OF MACRO GENERATED PARAMETER LIST                   * 11600022
*                                                                     * 12000022
*    THE PARAMETER LIST HAS THE FOLLOWING FORMAT -                    * 12400022
*                                                                     * 12800022
*    *********************************                                * 13200022
*    *+0 B4  * LIST  *       *       *                                * 13600022
*    * INDEX * LNGTH *       *       *                                * 14000022
*    * + BIT * + LOG *       *       *                                * 14400022
*    *************************       *                                * 14800022
*    *+4                             *                                * 15200022
*    *                MASK           *                                * 15600022
*    *                               *                                * 16000022
*    *********************************                                * 16400022
*    *+4 OR +8       *               *                                * 16800022
*    *  TIME DELAY   *               *                                * 17200022
*    *  IN SECONDS   *               *                                * 17600022
*    *********************************                                * 18000022
*                                                                     * 18400022
*    BIT - MEANS THAT IF BIT 7 IS ON, THE ROUTINE IS TO BE CALLED     * 18800022
*    UNCONDITIONALLY. IN THIS CASE, THE MASK ENTRY IS OMITTED AND     * 19200022
*    THE PARAMETER LIST IS ONLY 8 BYTES LONG.                         * 19600022
*                                                                     * 20000022
*    LOG - MEANS THAT IF BIT 7 IS ON, THE ROUTINE IS TO BE CALLED     * 20400022
*    ONLY WHEN ALL OF THE BITS SPECIFIED IN THE MASK-FIELD ARE ON.    * 20800022
*    BIT 7 IS OFF IF THE ROUTINE IS TO BE CALLED WHEN ANY OF THE      * 21200022
*    BITS SPECIFIED IN THE MASK-FIELD ARE ON.                         * 21600022
*                                                                     * 22000022
*    R11 - ADDRESS OF THE DISPATCHER                                  * 22400022
*                                                                     * 22800022
*    R13 - ADDRESS OF AVTSAVE2                                        * 23200022
*                                                                     * 23600022
* OUTPUT -                                                            * 24000022
*                                                                     * 24400022
*    TO THE TIME DELAY SUBTASK -                                      * 24800022
*    R1 - ADDRESS OF THE LCB                                          * 25200022
*                                                                     * 25600022
*    TO THE DISPATCHER -                                              * 26000022
*    R1 - ADDRESS OF LCB ERB                                          * 26400022
*                                                                     * 26800022
* EXTERNAL REFERENCES -                                               * 27200022
*         AVTHG01 - ADDRESS OF THE TIME DELAY ROUTINE                 * 27600022
*                                                                     * 28000022
*         DSPCHAIN - FOR RETURN                                       * 28400022
*                                                                     * 28800022
* EXITS,  NORMAL -                                                    * 29200022
*         DSPCHAIN                                                    * 29600022
*                                                                     * 30000022
* EXITS,  ERROR -                                                     * 30400022
*         NONE                                                        * 30800022
*                                                                     * 31200022
* TABLES/WORK AREAS -                                                 * 31600022
*                                                                     * 32000022
*    AVT                                                              * 32400022
*    DISPATCHER                                                       * 32800022
*    LCB                                                              * 33200022
*                                                                     * 33600022
* ATTRIBUTES -                                                        * 34000022
*    REENTRANT, REFRESHABLE, ENABLED, RESIDENT, PROBLEN PROGRAM       * 34400022
*    MODE.                                                            * 34800022
*                                                                     * 35200022
* CHARACTER CODE DEPENDENCY -                                         * 35600022
*    THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON AN INTERNAL    * 36000022
*    REPRESENTATION OF THE EXTERNAL CHARACTER SET.                    * 36400022
*                                                                     * 36800022
* CHANGE ACTIVITY AS FOLLOWS:                                           37200081
*A404000,448000,836000                                         @SA72789 37200181
* A600000,708000,798000,808000                                 @OZ36309 37250122
*                                                                     * 37600022
*********************************************************************** 38000022
         EJECT                                                          38400022
         USING IEDQSTCB,RA              STCB ADDR                       38800022
         USING IEDQLCB,RLCB             LCB ADDR                        39200022
         USING IEDQDISP,R11             DISPATCHER ADDR                 39600022
         USING IEDQB4,RBASE             ROUTINE BASE ADDR               40000022
         USING AVTSAVE2,R13             AVT 2ND SAVE AREA ADDR          40400022
         USING IEDQSCB,R3               SCB ADDRESSABILITY     @SA72789 40600081
         SPACE 1                                                        40800022
IEDQB4   IEDHJN IEDQB401                                                41200022
         SPACE 1                                                        41600022
* FIND RECEIVE SCHEDULER STCB AND REMOVE IT FROM STCB CHAIN             42000022
* *********************************************************             42400022
         SPACE 1                                                        42800022
         LA    R6,0(,R1)                                                43200022
         L     RA,LCBSTCBA-1            GET 1ST STCB ADDR               43600022
         LA    RA,0(,RA)                CLEAR TOP 8 BITS                44000022
         CLI   LCBFLAG1,AVTEZERO        CHECK FOR 3705 PLCB      S22024 44100022
         BE    B4700                    IF YES - NO SLOWPOLL     S22024 44200022
         CLI   STCBPRI,DSPCWAIT         TEST IF ANY 1ST STCB            44400022
         BE    B4700                    IF NO - NO SLOWPOLL             44800022
         L     R3,LCBSCBA-1             SCB ADDRESS            @SA72789 44880081
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN  LOCK MODE           @SA72789 44960081
         BNZ   B4700                    BRANCH IF YES,         @SA72789 45040081
*                                        NO SLOWPOLL           @SA72789 45120081
         CLI   STCBVTO,DSPRCVSC         TEST IF RECV SCHED              45200022
         BNE   B4240                    IF NO                           45600022
         MVC   LCBSTCBA(THREE),STCBLINK REMOVE STCB FR STCB CHAIN       46000022
         B     B4270                    GO PREPARE LCB                  46400022
         SPACE 5                                                        46800022
B4240    LR    RB,RA                    SAVE STCB ADDR                  47200022
         L     RA,STCBLINK-1            GET NEXT STCB ADDR              47600022
         LA    RA,0(,RA)                CLEAR TOP 8 BITS                48000022
         CLI   STCBPRI,DSPCWAIT         TEST IF ANY NEXT STCB           48400022
         BE    B4700                    IF NO - NO SLOWPOLL             48800022
         CLI   STCBVTO,DSPRCVSC         TEST IF RECV SCHED              49200022
         BNE   B4240                    IF NO                           49600022
         MVC   STCBLINK-IEDQSTCB(THREE,RB),STCBLINK  REMOVE STCB        50000022
*                                       .. FROM STCB CHAIN              50400022
         SPACE 1                                                        50800022
* PREPARE LCB TO BE USED AS TIME DELAY REQUEST ELEMENT                  51200022
* ****************************************************                  51600022
         SPACE 1                                                        52000022
B4270    IC    RTIME,PARMLH(,RPARM)     GET PARAM LIST LH               52400022
         N     RTIME,LHMASK             CLEAR BITS 0-23 AND 31          52800022
         AR    RTIME,RPARM              GET NEXT PARAM LIST ADDR        53200022
         SH    RTIME,FOUR               GET THIS PARAM LIST LAST WORD   53600022
*                                       .. ADDR                         54000022
         MVC   LCBEOLTD(TWO),0(RTIME)   INS TIME DELAY INTO LCB         54400022
         MVI   LCBTDL,LCBINSRC-1-IEDQLCB INS LCB-TYPE TIME-DELAY Q      54800022
*                                       .. OFFS                         55200022
         SPACE 1                                                        55600022
* INSERT LCB INTO TIME DELAY QUEUE                                      56000022
* ********************************                                      56400022
         SPACE 1                                                        56800022
         MVC   LCBQCBA(THREE),AVTDELYB+1  INS TIME DELAY QCB ADDR       57200022
*                                       .. INTO LCB                     57600022
         LR    R1,RLCB                  SET LCB ADDR AS ELEM-PTR        58000022
         IC    R7,LCBRSKEY              SAVE RECEIVE SCHEDULER KEY      58400022
         MVI   LCBRSKEY,DSPBUFSC        MAKE LCB LOOK AS IF FOR         58800022
*                                       .. BUFFERED LINE IN ORDER TO    59200022
*                                       .. SKIP POSTING OF BUFFER LCB   59600022
*                                       .. IN THE TIME DELAY SUBTASK    60000022
         L     R15,LCBDCBPT             GET DCB ADDRESS        @OZ36309 60040022
         USING IHADCB,R15                                      @OZ36309 60080022
         SR    R5,R5                    CLEAR FOR IC           @OZ36309 60120022
         IC    R5,DCBEIOBX              GET OFFSET TO LCB END  @OZ36309 60160022
         DROP  R15                                             @OZ36309 60200022
         LA    R15,EIGHT                LENGTH OF EXTENSION    @OZ36309 60240022
         SR    R5,R15                   OFFSET TO EXTENSION    @OZ36309 60280022
         ALR   R5,RLCB                  ADDR OF LCB EXTENSION  @OZ36309 60320022
         NI    LCBXFLAG-IEDQLCBX(R5),LCBGPSTP  GEN POLL RESET  @OZ36309 60360022
         L     R15,AVTHG01              GET TIME DELAY SUBTASK ADDR     60400022
         BALR  RETURN,R15               INS LCB INTO TIME DELAY Q       60800022
         STC   R7,LCBRSKEY              RESTORE RECEIVE SCHEDULER KEY   61200022
         SPACE 1                                                        61600022
* EXIT FROM THIS ROUTINE                                                62000022
* **********************                                                62400022
         SPACE 1                                                        62800022
B4700    L     R8,AVTMSGS-1             GET OPTIONAL-VCON-LIST ADDR     63200022
         L     R8,0(,R8)                GET BUFF-DISP-SUBTASK ADDR      63600022
         ST    R8,LCBERBQB-1            INS IT AS ERB QCB INTO LCB      64000022
         ST    R6,LCBERBLK-1                                            64400022
         MVI   LCBERBPY,PRIRCQCB        SET PRIORITY                    64800022
         NI    LCBSTAT1,XFF-LCBRCLLN    TURN OFF RECALL BIT             65200022
         LA    R1,LCBERB                SET LCB ERB ADDR                65600022
         BAL   RETURN,DSPCHAIN          RETURN TO DISPATCHER   @G36XRAW 66000022
         SPACE 5                                                        66400022
* REFERENCE SECTION                                                     66800022
* *****************                                                     67200022
         SPACE 1                                                        67600022
* REGISTERS                                                             68000022
* .........                                                             68400022
         SPACE 1                                                        68800022
R1       EQU   1                        ELEMENT REG                     69200022
RA       EQU   1                        STCB REG                        69600022
RTIME    EQU   2                        TIME DELAY                      70000022
RB       EQU   2                        WORK REG                        70400022
R3       EQU   3                                               @SA72789 70600081
RLCB     EQU   4                        ADDRESS OF LCB                  70800022
R5       EQU   5                        WORK REG               @OZ36309 70850022
R6       EQU   6                        SAVE REG FOR LIST FROM BD       71200022
R7       EQU   7                        SAVE REG FOR RCV SCH KEY        71600022
R8       EQU   8                        WORK REG                        72000022
RPARM    EQU   8                        ADDR OF SLOWPOLL PARM LIST      72400022
R11      EQU   11                       ADDR OF DISPATCHER              72800022
RBASE    EQU   12                       ROUTINE BASE REG                73200022
R13      EQU   13                       ADDR OF AVTSAVE2                73600022
RETURN   EQU   14                       LINK REG                        74000022
R15      EQU   15                       FOR BRANCH TO TIME DELAY        74400022
         SPACE 1                                                        74800022
* PARAMETER LIST OFFSETS                                                75200022
* ......................                                                75600022
         SPACE 1                                                        76000022
PARMLH   EQU   1                        OFFSET TO PARM LIST LNGTH       76400022
         SPACE 1                                                        76800022
* MISCELLANEOUS                                                         77200022
* .............                                                         77600022
         SPACE 1                                                        78000022
         DS    0F                                                       78400022
LHMASK   DC    X'000000FE'              TO CLEAR PARM LNGTH REG         78800022
FOUR     DC    H'4'                     TO COMPUTE ADDR OF TIME PARM    79200022
XFF      EQU   X'FF'                    USED IN TURNING OFF BITS        79600022
TWO      EQU   2                        LENGTH OF 2 BYTES               79700022
THREE    EQU   3                        LENGTH OF 3 BYTES               79800022
EIGHT    EQU   8                        LENGTH OF EIGHT BYTES  @OZ36309 79850022
         SPACE 5                                                        80000022
         TAVTD                                                          80400022
         SPACE 5                                                        80800022
         DCBD  DSORG=TX                                                 80850022
         SPACE 5                                                        80900022
         TDISPD                                                         81200022
         SPACE 5                                                        81600022
         TLCBD                                                          82000022
         SPACE 5                                                        82400022
         TPRIOR                                                         82800022
         SPACE 5                                                        83200022
         TSTCBD                                                         83600022
         EJECT                                                          83700081
         TSCBD                                                 @SA72789 83800081
         SPACE 5                                                        84000022
         DROP  RA,RLCB,R11,RBASE,R13                                    84400022
         SPACE 1                                                        84800022
         END                                                            85200022
