         TITLE 'IGG019T8 - BSAM TS WRITE'                               00500020
IGG019T8 CSECT                                                          01000020
*********************************************************************** 01500020
*                                                                     * 02000020
* RELEASE 23 DELETIONS/CHANGES                                        * 02070020
* RELEASE 22 DELETIONS/CHANGES                                        * 02140020
* RELEASE 21 DELETIONS/CHANGES                                        * 02210020
*2870320000,550000-560000,800000                                 A42898 02240021
*                                                                     * 02280020
*0000                                                            TS1616 02310020
*STATUS CHANGE LEVEL 002                                                02360021
*                                                                     * 02420020
* NAME - IGG019T8 (TS WRITE).                                         * 02500020
*                                                                     * 03000020
* FUNCTION/OPERATION - THIS INTERFACE ROUTINE PERFORMS THE FOLLOWING  * 03500020
*                      FUNCTION.                                      * 04000020
*                                                                     * 04500020
*                      FURNISH TPUT BUFFER ADDRESS.                   * 05000020
*                      FURNISH TPUT BUFFER SIZE.                      * 05500020
*                      ISSUE TPUT WHICH WRITES A BLOCK OF DATA FROM   * 06000020
*                      USER'S BUFFER TO THE TERMINAL. UPON REGAIN     * 06500020
*                      CONTROL FROM TPUT, SET USER ECB COMPLETION     * 06700020
*                      CODE TO X'7F'                                  * 06900020
*                                                                     * 07100020
* ENTRY POINT - IGG019T8 BEGINNING OF MODULE. CONTROL IS RECEIVED     * 07300020
*               WHEN THE FOLLOWING CONDITIONS ARE MET.                * 07500020
*                                                                     * 07700020
*               THE TASK IS TIME SHARING.                             * 07900020
*               THE DCB OPENED IS FOR BSAM OUTPUT.                    * 08100020
*               A WRITE MACRO INSTRUCTION IS ISSUED.                  * 08300020
*                                                                     * 08500020
*               UPON ENTRY TO THIS MODULE, REGISTER 1 CONTAINS THE    * 08700020
*               ADDRESS OF DECB                                       * 08900020
*                                                                     * 10000020
* INPUT - DECB NAME, ('SF' IS IGNORED), DCB ADDRESS, BUFFER ADDRESS,  * 10500020
*         'S' OR LENGTH OF MESSAGE.                                   * 11000020
*                                                                     * 11500020
* OUTPUT - A BLOCK OF EDITED (SPECIALLY-INDICATED CHARACTERS ARE      * 12000020
*          DELETED FROM THE MESSAGE WRITTEN) TEXT WRITTEN ON TERMINAL.* 12500020
*                                                                     * 13000020
* EXIT, NORMAL - RETURN CONTROL TO CALLER VIA A 'BR 14' INSTRUCTION.  * 13100020
*                                                                     * 13200020
* EXIT, ERROR - NONE.                                                 * 13300020
*                                                                     * 13400020
* EXTERNAL REFERENCE - IGC0009C.                                      * 13500020
*                                                                     * 13600020
* TABLE/WORK AREAS - NONE.                                            * 13700020
*                                                                     * 13800020
* ATTRIBUTES - REENTRANT, REUSABLE.                                   * 13900020
*                                                                     * 14000020
* CHARACTER CODE DEPENDENCY.                                          * 14100020
*                                                                     * 14200020
* NOTES -                                                             * 14300020
*                                                                     * 15000020
*********************************************************************** 15500020
         SPACE 3                                                        16000020
********                                                                16500020
******** REGISTER EQUATES                                               17000020
********                                                                17500020
R0       EQU   0                        CONTAINS BFR SIZE FOR TPUT      18000020
R1       EQU   1                        CONTAINS BFR ADDR FOR TPUT,     18500020
*                                       POINTS AT DECB ADDR WHEN THIS   19000020
*                                       MODULE GETS CONTROL             19500020
RDCB     EQU   2                        POINTS AT DCB                   20000020
RECB     EQU   3                        POINTS AT ECB                   20500020
RDECB    EQU   4                        POINTS AT DECB                  21000020
RBUFAD   EQU   5                        CONTAINS BFR ADDR               21500020
RBUFSZ   EQU   6                        CONTAINS BFR SIZE               22000020
RDEB     EQU   7                        POINTS AT DEB                   22200020
RBASE    EQU   12                       BASE REGISTER                   22500020
R12      EQU   12                       REGISTER 12                     23000020
R13      EQU   13                       POINTS AT SAVE AREA ADDR        23500020
R14      EQU   14                       CONTAINS RETURN ADDR            24000020
R15      EQU   15                       POINTS AT ENTRY ADDR OF THIS    24500020
*                                       MODULE WHEN IT GETS CONTROL     25000020
RRETURN  EQU   15                       CONTAINS RETURN CODE            25500020
         SPACE 3                                                        26000020
********                                                                26500020
******** EQUATES FOR MASKS, DISPLACEMENTS                               27000020
********                                                                27500020
M7F      EQU   X'7F'                    ECB COMPLETION BIT              27700020
MC0      EQU   X'C0'                    DENOTES V-TYPE RECORD           28000020
M80      EQU   X'80'                    'S' SPECIFIED IN DECB           28500020
*                                       WRITE BIT IN DCBOFLGS           29000020
M40      EQU   X'40'                    DENOTES V-TYPE RECORD           29500020
M06      EQU   X'06'                    ASA OR MACHINE CHAR USED        30000020
M8       EQU   8                        USED TO SHIFT REGISTER          30500020
D0       EQU   0                        DISPLACEMENT OF 0               31000020
D1       EQU   1                        DISPLACEMENT OF 1               31500020
D8       EQU   8                        DISPLACEMENT OF 8        A42898 32000021
D12      EQU   12                       DISPLACEMENT OF 12              32500020
D20      EQU   20                       DISPLACEMENT OF 20              33000020
         SPACE 3                                                        33060020
         SPACE 3                                                        33500020
********                                                                34000020
******** SAVE REGISTERS AND ESTABLISH ADDRESSABILITY                    34500020
********                                                                35000020
         STM   R14,R12,D12(R13)         SAVE REGISTERS                  35500020
         LR    RBASE,R15                USE ENTRY ADDR AS BASE ADDR     36000020
         USING IGG019T8,RBASE           ESTABLISH ADDRESSABILITY        36500020
         USING IHADCB,RDCB              ESTABLISH ADDRESSABILITY        37000020
         USING DECB,RDECB               ESTABLISH ADDRESSABILITY        37500020
         USING DEB,RDEB                 ESTABLISH ADDRESSABILITY        37700020
         SPACE 3                                                        38000020
********                                                                38500020
******** INITIALIZATION AND GET BUFFER ADDRESS                          39000020
********                                                                39500020
         LR    RDECB,R1                 SAVE DECB ADDRESS               40000020
         L     RDCB,DECDCBAD            GET DCB ADDRESS                 40500020
         L     RBUFAD,DECAREA           GET BUFFER ADDRESS              41000020
         L     RDEB,DCBDEBAD            GET DEB ADDRESS                 41200020
         LA    RECB,DECSDECB            GET ADDR OF ECB                 41300020
         MVI   D0(RECB),M80             SET ECB WAIT BIT ON             41400020
         SPACE 3                                                        41500020
********                                                                42000020
******** TEST RECORD TYPE AND GET BUFFER SIZE                           42500020
********                                                                43000020
         TM    DCBRECFM,MC0             IS IT A U-TYPE RECORD           43500020
         BNO   TESTMORE                 NO, GO TO TESTMORE              44000020
UTYPE    EQU   *                                                        44500020
         TM    DECTYPE,M80              IS 'S' SPECIFIED                45000020
         BO    LNGINDCB                 YES, GET LENGTH FROM DCBBLKSI   45500020
LNGNDECB EQU   *                                                        46000020
         LH    RBUFSZ,DECLNGTH          GET BUFFER SIZE                 46500020
         N     RBUFSZ,ZEROHALF          CLEAR HIGH ORDER 2 BYTES        47000020
         B     CKCHAR                   GO TO CKCHAR                    47500020
LNGINDCB EQU   *                                                        48000020
         LH    RBUFSZ,DCBBLKSI          GET BUFFER SIZE FROM DCB TS1616 48100020
         LTR   RBUFSZ,RBUFSZ            IS BLOCK SIZE SPECIFIED  TS1616 48200020
         BNZ   CKCHAR                   BRANCH IF YES            TS1616 48300020
         LH    RBUFSZ,DEBLRECL          GET BUFFER SIZE                 48700020
         B     CKCHAR                   GO TO CHECK CONTROL CHAR        49300020
TESTMORE EQU   *                                                        50000020
         TM    DCBRECFM,M40             IS IT V-TYPE RECORD             50500020
         BZ    LNGINDCB                 NO, LENGTH IS IN DCBBLKSI       51000020
VTYPE    EQU   *                                                        51500020
         SR    RBUFSZ,RBUFSZ            CLEAR REGISTER                  52000020
         IC    RBUFSZ,D0(RBUFAD)        GET 1 L FROM RECORD DESCRIPTOR  52500020
*                                       WORD                            53000020
         SLL   RBUFSZ,M8                PUT 1ST L IN PLACE              53500020
         IC    RBUFSZ,D1(RBUFAD)        GET OTHER L FROM RECORD         54000020
*                                       DESCRIPTOR WORD                 54500020
         SH    RBUFSZ,EIGHT             TAKE OFF LNG FOR BLK AND A42898 55000021
*                                       RECORD DESCRIPTOR WORDS         55500021
         LA    RBUFAD,D8(RBUFAD)        MOVE UP PTR              A42898 56000021
         SPACE 3                                                        56500020
********                                                                57000020
******** TEST FOR ASA OR MACHINE CHARACTER                              57500020
********                                                                58000020
CKCHAR   EQU   *                                                        58500020
         TM    DCBRECFM,M06             TEST FOR ASA OR MACHINE CHAR    59000020
         BZ    LOADPARM                 NO, GO TO LOADPARM              59500020
         LA    RBUFAD,D1(RBUFAD)        MOVE UP PTR TO BUFFER ADDR      60000020
         BCTR  RBUFSZ,R0                DECREMENT BUFFER SIZE BY 1      60500020
         SPACE 3                                                        61000020
********                                                                61500020
******** PREPARE PARAMETER AND ISSUE TPUT                               62000020
********                                                                62500020
LOADPARM EQU   *                                                        63000020
         LR    R0,RBUFSZ                LOAD BFR SIZE                   63500020
         LR    R1,RBUFAD                LOAD BFR ADDRESS                64000020
         SPACE 3                                                        64500020
         TPUT  (1),(0)                  ISSUE TPUT                      65000020
         SPACE 3                                                        65500020
********                                                                66000020
******** UPON RETURN FROM TPUT                                          66500020
********                                                                67000020
SUCCESS  EQU   *                                                        69500020
         OI    DCBOFLGS,M80             TURN ON WRITE BIT               70000020
         MVI   D0(RECB),M7F             SET ECB COMPLETION BIT          70700020
         SPACE 3                                                        71500020
********                                                                72000020
******** RESTORE REGISTERS AND RETURN                                   73000020
********                                                                73500020
RETURN   EQU   *                                                        74000020
         L     R14,D12(R13)             RESTORE REG 14                  74500020
         LM    R0,R12,D20(R13)          RESTORE REG 0 - 12              75000020
         BR    R14                      RETURN CONTROL TO USER          75500020
         SPACE 3                                                        76000020
********                                                                76500020
******** CONSTANTS                                                      77000020
********                                                                77500020
         DS    0F                       FORCE THE FOLLOWING ON WORD     78000020
*                                       BOUNDARY                        78500020
ZEROHALF DC    X'0000FFFF'              USED TO CLEAR HIGH ORDER 2      79000020
*                                       BYTES OF REGISTER               79500020
EIGHT    DC    H'8'                     CONSTANT OF 8            A42898 80000021
         SPACE 3                                                        80500020
         SPACE 3                                                        81500020
         DCBD  DSORG=PS                                                 82000020
         SPACE                                                          82500020
         DS    0F                                                       83000020
DECB     DSECT                                                          83500020
DECSDECB DS    CL4                      EVENT CONTROL BLOCK             83800020
DECTYPE  DS    CL2                      TYPE OF I/O REQUEST             84100020
DECLNGTH  DS   CL2                      LENGTH OF KEY AND DATA          84400020
DECDCBAD DS    CL4                      ADDR OF THE DCB TO WHICH THIS   84700020
*                                       I/O REQUEST IS RELATED          85000020
DECAREA  DS    CL4                      ADDR OF KEY AND DATA            85300020
DECIOBPT DS    CL4                      ADDR OF THE IOB                 85600020
         SPACE 3                                                        86550020
         DS    0F                                                       86600020
DEB      DSECT                                                          86650020
         DS    CL32                     DEB BASIC SECTION               86700020
         DS    CL4                      DEB EXTENT                      86750020
         DS    CL12                     DEB BSAM/QSAM DEPENDENT SECTION 86800020
DEBBLKSI DS    CL2                      BLOCK SIZE SAVE AREA            86850020
DEBLRECL DS    CL2                      LRECL SAVE AREA                 86900020
         END                                                            87000020
