 TITLE   'IGG019V1 - 1419 AND 1275 READ ROUTINE'                        00500000
IGG019V1 CSECT                                                          01000000
*                                                                       01500000
*                                                                       02000000
*STATUS - CHANGE LVL 000   VERSION LVL 000   MODIFICATION LVL 000       02500000
*                                      XA05401 YA04503 SA71344 @ZA00741 02550003
*       RELEASE  21.8 CHANGES          XA05401 YA04503 SA71344 @ZA00741 02600003
*                                      XA05401 YA04503 SA71344 @ZA00741 02650003
*D820000                               XA05401 YA04503 SA71344 @ZA00741 02700003
*A835500                               XA05401 YA04503 SA71344 @ZA00741 02750003
*                                      XA05131 SA71441 YA04502 @ZA01356 02800003
*      VS1 RELEASE 3.1 CHANGES         XA05131 SA71441 YA04502 @ZA01356 02850003
*A645500                               XA05131 SA71441 YA04502 @ZA01356 02900003
*     VS2 REL 3.0 CHANGES                                               02950003
*A170500                               XA06885/SA72880/YA07184 @ZA02230 02960003
*C545000,665000                        XA06885/SA72880/YA07184 @ZA02230 02970003
*                                                              @ZA07621 02977003
*     VS2 REL 04.0 CHANGES                                     @ZA07621 02984003
*C940000                                                       @ZA07621 02991003
*FUNCTION - READ ROUTINE FOR 1419 AND 1275.                             03000000
*        1- SET THE DATA AREA OF THE LAST BUFFER PROCESSED TO BINARY    03500000
*           ZEROES.                                                     04000000
*        2- SET THE ECB IN THE MICB CORRESPONDING TO THE ABOVE BUFFER   04500000
*           TO ZERO.                                                    05000000
*        3- DETERMINE IF THE DEVICE IS ENGAGED, IF IT IS NOT ENGAGED    05500000
*           BRANCH TO THE EOB ROUTINE TO ENGAGE THE DEVICE.             06000000
*        4- SET NO-OP BIT IN THE MICB SEVEN BEFORE THE CURRENT ONE.     06500000
*        5- SET DISENGAGE BIT IN THE MICB SIX BEFORE THE CURRENT ONE.   07000000
*        6- PUT THE IOB ADDRESS IN THE DECB.                            07500000
*        7- PUT THE ADDRESS OF THE BUFFER TO BE PROCESSED IN THE DECB.  08000000
*                                                                       08500000
*ENTRY POINT - IGG019V1 FROM THE READ MACRO EXPANSION                   09000000
*              LA 1,DECB                                                09500003
*              LA 14,DCB                                                10000000
*              L  15,48(14)                                             10500000
*              BALR 14,15                                               11000000
*INPUT- DECB                                                            11500000
*        DECB+8 = DCB ADDRESS                                           12000000
*       DCB                                                             12500000
*        DCBIOBA = ADDRESS OF CURRENT MICB.                             13000000
*        DCBBUFL - BUFFER LENGTH                                        13500000
*        DCBMRFLG = X'10' - USER REQUESTED DISENGAGE                    14000000
*        DCBEOBR = ADDRESS OF EOB ROUTINE                               14500000
*        DCBIOBAD = ADDRESS OF IOB FOR THE PCU                          15000000
*       MICB                                                            15500000
*        MICBNM1 = ADDRESS OF MICB JUST PRIOR TO THE CURRENT ONE.       16000000
*        MICBDATA = ADDRESS OF THE BUFFER TO BE PROCESSED               16500000
*        MICBFLAG = X'80'  ENGAGE NECESSARY                             17000000
*        MICBFLAG = X'04'  UNIT EXCEPTION                      @ZA02230 17050003
*        MICBNM7 = ADDRESS OF MICB SEVEN BEFORE THE CURRENT ONE.        17500000
*       BUFFER                                                          18000000
*        BYTE 0 - X'10' - UNIT EXCEPTION                                18500000
*                                                                       19000000
*OUTPUT-DECB                                                            19500000
*        DECB+16 - ADDRESS OF IOB FOR THE PCU                           20000000
*        DECB+12 - ADDRESS OF THE BUFFER TO BE PROCESSED                20500000
*       MICB                                                            21000000
*        MICBFLAG - BIT 2 IS SET TO ZERO IN THE MICB SEVEN BEFORE       21500000
*                   THE CURRENT ONE.                                    22000000
*                   BIT 2 IS SET TO ONE IN THE MICB SIX BEFORE          22500000
*                   THE CURRENT ONE.                                    23000000
*        MICBECB - SET TO ZERO                                          23500000
*       BUFFER                                                          24000000
*        THE DATA AREA IN THE BUFFER BEFORE THE CURRENT ONE IS          24500000
*        SET TO BINARY ZEROES                                           25000000
*       RETURN CODES                                                    25500000
*        X'00' - EOB NOT ENTERED (ENGAGE NOT NECESSARY)                 26000000
*        X'04' - EOB ENTERED (ENGAGE NECESSARY)                         26500000
*                                                                       27000000
*EXTERNAL ROUTINES - IGG019V1 (EOB FOR 1419)                            27500000
*                                                                       28000000
*EXITS NORMAL - RETURN TO CALLER ON REG 14 AFTER ENGAGING THE DEVICE    28500000
*               OR AFTER MAKING SURE BUFFER IS READY FOR PROCESSING.    29000000
*                                                                       29500000
*EXITS ERROR -  NONE                                                    30000000
*                                                                       30500000
*TABLES/WORKAREAS - CALLERS SAVE AREA                                   31000000
*                                                                       31500000
*ATTRIBUTES - REENTERABLE                                               32000000
*                                                                       32500000
*NOTES - NONE                                                           33000000
*                                                                       33500000
*                                                                       34000000
*                                                                       34500000
*              SYMBOLIC DEFINITIONS OF REGISTERS                        35000000
*                                                                       35500000
RZERO    EQU   0                                                        36000000
DECBR    EQU   1                       DECB ADDRESS UPON ENTRY          36500000
DCBR     EQU   2                       DCB ADDRESS                      37000000
MICBR    EQU   3                       MICB ADDRESS                     37500000
RFOUR    EQU   4                       WORK REG                         38000000
RFIVE    EQU   5                       WORK REG                         38500000
RSIX     EQU   6                       WORK REG                         39000000
RSEVEN   EQU   7                       WORK REG                         39500000
REIGHT   EQU   8                       WORK REG                         40000000
RNINE    EQU   9                       WORK REG                         40500000
RTEN     EQU   10                      WORK REG                         41000000
RELEVEN  EQU   11                      WORK REG                         41500000
BASER    EQU   12                       BASE REGISTER                   42000000
SAVER    EQU   13                                                       42500000
RETRNR   EQU   14                                                       43000000
ENTRYR   EQU   15                                                       43500000
*                                                                       44000000
*              SYMBOLIC DEFINITIONS FOR DISPLACEMENTS                   44500000
*                                                                       45000000
DECBBUFF EQU   12                      DISP TO BUFFER ADDR IN DECB      45500000
DECBDCB  EQU   8                       DISP TO DCB ADDR IN DECB         46000000
DECBIOB  EQU   16                      DISP TO IOB ADDR IN DECB         46500000
DSPZERO  EQU   0                       ZERO DISPLACEMENT                47000000
ECBDSP   EQU   4                       DISP TO ECB IN MICB              47500000
IOBADDR  EQU   8                       DISP TO IOB FROM IOB PREFIX      48000000
LSTBUFF  EQU   24                      DISP TO ADDR OF BUFFER IN MICB   48500000
MICBFLG1 EQU   8                       DISP TO MICB FLAG (NOP-DSNGAGE)  49000000
RTNSVE   EQU   16                      DISP TO REG 15 IN SAVE AREA      49500000
SVEDSP   EQU   12                      DISP TO SAVE AREA                50000000
*                                                                       50500000
*              MISC DEFINITIONS                                         51000000
*                                                                       51500000
DSENFLG  EQU   X'40'                   DISENGAGE FLAG                   52000000
ENGAGE   EQU   X'80'                   ENGAGE NECESSARY                 52500003
FOUR     EQU   4                       TEST RETURN CODE                 53000000
NOP      EQU   X'BF'                   NO-OP FLAG                       53500000
ONE      EQU   1                                                        54000000
UNITEXCP EQU   X'04'                   UNIT EXCEPTION POSTED   @ZA02230 54050003
USERDSEN EQU   X'20'                   USER REQUESTED DISENGAGE         55000000
ZERO     EQU   X'00'                                                    55500000
*                                                                       56000000
*                                                                       56500000
         USING IGG019V1,BASER                                           57000000
         USING IHADCB,DCBR                                              57500000
         USING MICBENTR,MICBR                                           58000000
         STM   RETRNR,BASER,SVEDSP(SAVER)  SAVE THE USER'S REGISTERS    58500000
         LR    BASER,ENTRYR            ESTABLISH A BASE REGISTER        59000000
         L     DCBR,DECBDCB(DECBR)     ESTABLISH DCB ADDRESS            59500000
         L     MICBR,DCBIOBA           ESTABLISH MICB ADDRESS           60000000
         L     RFOUR,MICBNM1           PICK UP ADDRESS OF LAST MICB     60500000
         L     RFIVE,LSTBUFF(RFOUR)    PICK UP ADDRESS OF LAST BUFFER   61000000
         LH    RSIX,DCBBUFL            PICK UP LENGTH OF DATA AREA      61500000
         BCTR  RSIX,ZERO               DECREMENT TO CLEAR BUFFER        62000000
         BCTR  RSIX,ZERO               DITTO                            62500000
         MVI   DSPZERO(RFIVE),ZERO     ZERO FIRST BYTE OF DATA AREA     63000000
         EX    RSIX,LSTBUF             ZERO DATA AREA IN LAST BUFFER    63500000
         SR    RSIX,RSIX               ZERO REG TO CLEAR ECB            64000000
         ST    RSIX,ECBDSP(RFOUR)      ZERO ECB IN LAST MICB            64500000
*********************************************************************** 64510003
*                                                              @ZA01356 64520003
*     THE FOLLOWING INSTRUCTION WILL CLEAR THE SENSE BYTES SO THAT IF * 64530003
*      NO SENSE BYTES ARE TRANSFERED BY THE DEVICE NONE WILL APPEAR   * 64540003
*      IN THE MICB.                                            @ZA01356 64542003
*                                                              @ZA01356 64544003
*********************************************************************** 64546003
*                                                              @ZA01356 64548003
         XC    MICBSENS-MICBENTR(3,RFOUR),MICBSENS-MICBENTR(4) @ZA01356 64550003
         TM    MICBFLAG,ENGAGE         READ ISSUED ON THIS BUFF BEFORE  65000000
         BO    READ010                 YES, BRANCH                      65500000
         L     RSIX,MICBDATA           LOAD ADDRESS OF BUFFER           66000000
         TM    MICBFLAG,UNITEXCP       UNIT EXCEPTION          @ZA02230 66050003
         BZ    READ020                 NO, BRANCH                       67000000
         TM    DCBMRFLG,USERDSEN       YES, WHO REQUESTED DISENGAGE     67500000
         BO    READ020            DONT GO TO EOB                        68000000
*                                                                       68500000
READ010  EQU   *                                                        69000000
*                                                                       69500000
         L     ENTRYR,DCBEOBR          PICK UP EOB ENTRY POINT          70000000
         ST    DECBR,RTNSVE(SAVER)     SAVE DECB ADDR                   70500000
         BALR  RETRNR,ENTRYR           BRANCH TO EOB ROUTINE TO ENGAGE  71000000
         L     DECBR,RTNSVE(SAVER)     LOAD DECB ADDR                   71500000
         LA    ENTRYR,FOUR             LOAD RETURN CODE                 72000000
         ST    ENTRYR,RTNSVE(SAVER)    SET RETURN CODE                  72500000
         B     READ020                 BRANCH AROUND MOVE               73000000
*                                                                       73500000
*                                                                       74000000
* THIS INSTRUCTION IS TO ZERO THE LAST BUFFER                           74500000
*                                                                       75000000
LSTBUF   MVC   ONE(ZERO,RFIVE),ZERO(RFIVE)   ZERO BUFF N-1              75500000
*                                                                       76000000
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 76500000
*                                                                     * 77000000
* THE NEXT FOUR INSTRUCTIONS PREVENT THE REFILLING OF BUFFERS         * 77500000
* THAT HAVE NOT BEEN PROCESSED YET.                                   * 78000000
*                                                                     * 78500000
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 79000000
*                                                                       79500000
READ020  EQU   *                                                        80000000
*                                                                       80500000
         L     RFOUR,MICBNM7           PICK UP ADDRESS OF MICB SEVEN    81000000
*                                      BEFORE THE CURRENT MICB          81500000
         L     RFIVE,DSPZERO(RFOUR)    PICK UP ADDRESS OF MICB SIX      82500000
*                                      BEFORE THE CURRENT MICB          83000000
         OI    MICBFLG1(RFIVE),DSENFLG SET FLAG TO INDICATE DISENGAGE   83500000
         NI    MICBFLG1(RFOUR),NOP     SET FLAG TO IND NO-OP   @SA71344 83550003
         LA    RFOUR,FOUR              PICK UP EOB RETURN CODE          84000000
         CR    RFOUR,ENTRYR            BEEN TO EOB                      84500000
         BE    READ030                 YES, BRANCH                      85000000
         SR    ENTRYR,ENTRYR           SET RETURN CODE                  85500000
         ST    ENTRYR,RTNSVE(SAVER)    STORE RETURN CODE IN SAVE AREA   86000000
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 86500000
*                                                                     * 87000000
* PUT ADDRESS OF IOB AND ADDRESS OF BUFFER TO BE PROCESSED IN THE     * 87500000
* DECB BEFORE EXITING THIS ROUTINE.                                   * 88000000
*                                                                     * 88500000
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 89000000
*                                                                       89500000
READ030  EQU   *                                                        90000000
*                                                                       90500000
         L     RFOUR,DCBIOBAD          PICK UP IOB PREFIX ADDR          91000000
         LA    RFOUR,IOBADDR(RFOUR)    COMPUTE IOB ADDR                 91500000
         ST    RFOUR,DECBIOB(DECBR)    UPDATE IOB ADDR IN DECB          92000000
         MVC   DECBBUFF(FOUR,DECBR),MICBDATA  MOVE BUFFER ADDR TO DECB  92500000
         LM    RETRNR,BASER,SVEDSP(SAVER)  LOAD THE USER'S REGISTERS    93000000
         BR    RETRNR                  RETURN TO USER                   93500000
         DC    C'IGG019V1'                  SIGHT INDICATOR *  @ZA07621 94000003
         DC    CL8'&SYSDATE'                SIGHT INDICATOR *  @ZA07621 94060003
         DC    C'Z07621'                    SIGHT INDICATOR *  @ZA07621 94120003
PATCH    DC    XL20'00',D'0'                PATCH AREA         @ZA07621 94200003
         DCBD  DSORG=BS,DEVD=MR                                         94500000
*        MICBD - DUMMY SECTION FOR THE MICB                             94590000
MICBENTR DSECT                                                          94680000
MICBNEXT DS    A                                                        94770000
MICBECB  DS    A                                                        94860000
MICBFLAG DS    AL1                                                      94950000
MICBSENS DS    AL3                                                      95040000
MICBECBA DS    A                                                        95130000
MICBNM7  DS    A                                                        95220000
MICBNM1  DS    A                                                        95310000
MICBDATA DS    A                                                        95400000
         END                                                            95500000
