         TITLE 'GRAPHIC INPUT/OUTPUT CONTROL ROUTINE'                   00100021
*********************************************************************** 00200021
*                                                                     * 00300021
*              GRAPHIC INPUT/OUTPUT CONTROL ROUTINE                   * 00400021
*                                                                     * 00500021
*STATUS CHANGE LEVEL 1                                                  00600021
*                                                                     * 00700021
* FUNCTION: TAKES THE PARAMETER LIST WHICH IS BUILDED BY THE I/O      * 00800021
*           MACRO AND BUILDS THE APPROPIATE CHANNEL COMMAND WORDS.    * 00900021
*           IF REQUIRED PARAMETERS ARE MISSING, THE ROUTINE WILL      * 01000021
*           ABEND. IF COUNT INCORRECT, OR BUFFER                      * 01100021
*           LIMITS EXCEEDED, A CODE IS RETURNED IN REGISTER 15 AND    * 01200021
*           CONTROL IS RETURNED TO PROBLEM PROGRAM.                   * 01300021
*                                                                     * 01400021
* ENTRY POINT: IGG019OA, GIOCR VIA BALR IN I/O MACRO                  * 01500021
*                                                                     * 01600021
* INPUT: ADDRESS OF DECB IN REGISTER 1                                * 01700021
*                                                                     * 01800021
* OUTPUT: RETURN CODE IN REGISTER 15-00 = NORMAL                      * 01900021
*                                    04 = BUFFER LIMITS VIOLATED      * 02000021
*                                    08 = BYTE COUNT IMPROPER         * 02100021
*                                    0C = 2ND DCB USE INVALID (STR)   * 02200021
*                                                                     * 02300021
* EXTERNAL ROUTINES - IGC084 VIA SVC 084                              * 02400021
*                                                                     * 02500021
* EXITS: NORMAL -'RETURN'                                             * 02600021
*        ERROR - 'ABEND'                                              * 02700021
*                                                                     * 02800021
* TABLE: OGATABLE - TABLE OF COMMAND CODES AND COUNTS ASSOCIATED WITH * 02900021
*                   TABLE LOOK-UP USING 1ST FIVE BITS OF TYPE CODE    * 03000021
*                   IN MACRO.                                         * 03100021
*                                                                     * 03200021
* WORK AREA: N/A                                                      * 03300021
*                                                                     * 03400021
* ATTRIBUTES: PROBLEM PROGRAM RESIDENCE, PROBLEM PROGRAM STATE AND    * 03500021
*             REENTRANT                                               * 03600021
*                                                                     * 03700021
* NOTES: N/A                                                          * 03800021
*                                                                     * 03900021
*********************************************************************** 04000021
*                                                                       04100021
*                                                                       04200021
*              REGISTER USE IN THIS ROUTINE                             04300021
*                                                                       04400021
*                                                                       04500021
REG0     EQU   0                                                        04600021
RX       EQU   0                                                        04700021
RDECB    EQU   1                        DECB ADDRESS REGISTER           04800021
RY       EQU   1                                                        04900021
RDCB     EQU   2                        DCB ADDRESS REGISTER            05000021
RZ       EQU   2                                                        05100021
RBASE    EQU   3                        BASE REGISTER                   05200021
RIOB     EQU   4                        IOB ADDRESS REGISTER            05300021
RB       EQU   4                                                        05400021
REG5     EQU   5                                                        05500021
REG6     EQU   6                                                        05600021
REG7     EQU   7                                                        05700021
REG8     EQU   8                                                        05800021
RUCB     EQU   8                                                        05900021
REG9     EQU   9                                                        06000021
RBFTBL   EQU   9                                                        06100021
REG10    EQU   10                       CCW ADDRESS REGISTER            06200021
REG11    EQU   11                                                       06300021
REG12    EQU   12                                                       06400021
ROACB    EQU   12                                                       06500021
RA       EQU   12                                                       06600021
RSAVE    EQU   13                       SAVE ADDRESS REGISTER           06700021
REG14    EQU   14                                                       06800021
REG15    EQU   15                                                       06900021
T2250    EQU   X'02'                                               3841 06950021
*                                                                       07000021
IGG019OA CSECT                                                          07100021
* 090000,094050-094800,565100-565600                             A33619 07140021
*2515,024000,036000,467000                                              07180021
* A219090-212900,A554500                                      LI A44376 07183000
* C216000                                                     LI A44376 07186000
* 327000,328000,426000-430000                                     AOS/1 07190021
*C466000                                                     LG @ZM2358 07192000
*A460500,C461000                                            LG @Z30AALG 07194000
         ENTRY GIOCR                                                    07200021
GIOCR    SAVE  (14,12),,*               SAVE REGISTERS IN USER AREA     07300021
         BALR  RBASE,0                                                  07400021
         USING *,RBASE                                                  07500021
         B     *+24      BRANCH AROUND EYECATCHER                       07550000
MODID    DC    C'IGG019OA.VS2R3.74350'                                  07560000
*                                                                       07600021
*       LOAD DCB ADDRESS IN REGISTER AND CHECK FOR LEGAL DCB            07700021
*                                                                       07800021
         L     RDCB,8(0,RDECB)          DCB ADDRESS                     07900021
         LA    RDCB,0(0,RDCB)           STRIP HIGH ORDER BITS           08000021
         C     RDCB,FZERO               CHECK IF DCB IN PRAM            08100021
         BNE   OGANO                                                    08200021
         WTO   'IFF201I GIOCR FOUND NO DCB ADDRESS IN DECB',ROUTCDE=11,X08230021
               DESC=7                                                   08260021
         LA    REG15,X'10'              DECB DOES NOT HAVE         JFCD 08300021
         B     OGASTR                   DCB ADDR--RETURN           JFCD 08400021
OGANO    L     RIOB,28(0,RDCB)          1ST IOB ADDRESS IN DCB          08600021
         L     REG5,20(0,RIOB)          DCB PTR IN IOB                  08700021
         LA    REG5,0(0,REG5)           DROP HIGH ORDER BITS            08800021
         CR    RDCB,REG5                CHECK IF LEGAL DCB              08900021
         BE    TESTDEB                 YES                       A33619 09000021
         WTO   'IFF202I GIOCR FOUND UNEQUAL DCB ADDRESSES IN DECB AND AX09050021
               SSOCIATED IOB',ROUTCDE=11,DESC=7                         09100021
         LA    REG15,X'14'              ILLEGAL DCB ADDRESS             09150021
         B     OGASTR                   IN DECB--RETURN            JFCD 09200021
*                                                                       09400021
TESTDEB  L     REG6,DCBDEBAD(RDCB)     GET DEB ADDR FROM DCB     A33619 09405021
         L     REG7,DEBDCBAD(REG6)     GET DCB ADDR FROM DEB     A33619 09410021
         LA    REG7,ZERO(REG7)        CLEAR HIGH-ORDER BYTE      A33619 09415021
         CR    REG7,RDCB               DCB ADDRESSES MATCH?      A33619 09420021
         BE    TESTINDX                YES                       A33619 09425021
         WTO   'IFF203I GIOCR FOUND UNEQUAL DCB ADDRESSES IN DECB AND AX09426021
               SSOCIATED DEB',ROUTCDE=11,DESC=7                         09427021
         LA    REG15,X'28'             INVALID DEB - DEB DOES    A33619 09430021
*                                      NOT CONTAIN CORRECT DCB   A33619 09435021
*                                      ADDRESS                   A33619 09440021
         B     OGASTR                  RETURN                    A33619 09445021
TESTINDX CLC   DEBNMEXT(ONE,REG6),UNITINDX(RDECB)    NUMBER IN   A33619 09450021
*                                      DEBNMEXT IN DEB MUST BE   A33619 09455021
*                                      LARGER THAN NUMBER IN     A33619 09460021
*                                      UNIT INDEX FIELD IN DEB   A33619 09465021
         BH    OGAOCBP                 COMPARE VALID - CONTINUE  A33619 09470021
         WTO   'IFF204I GIOCR FOUND DECB UNIT INDEX EXCEEDS UNITS SPECIX09471021
               FIED IN DD RECORD',ROUTCDE=11,DESC=7                     09472021
         LA    REG15,X'2C'             DECB REFERENCING UCB NOT  A33619 09475021
*                                      IN DEB                    A33619 09480021
         B     OGASTR                  RETURN                    A33619 09485021
*       TEST IF OCBP USED, IF SO, LOAD ADDRESSES TO REGISTERS           09500021
*       FROM OACB. IF NOT, LOAD REGISTERS FROM DECB.                    09600021
*                                                                       09700021
OGAOCBP  TM    4(RDECB),X'C0'           IF 2260 READ/WRITE              09800021
         BO    OGACOMP                  OCBP NOT USED                   09900021
         TM    4(RDECB),X'70'           IF 2260 ERASE                   10000021
         BO    OGACOMP                  OCBP NOT USED                   10100021
         TM    4(RDECB),X'80'           READ/WRITE                      10200021
         BC    12,OGACOMP               OCBP NOT USED                   10300021
         TM    20(RDECB),X'80'          TEST FOR OCBP USED              10400021
         BZ    OGACOMP                  NOT SPECIFIED                   10500021
         L     REG7,20(0,RDECB)         OCBP ADDRESS                    10600021
         LA    REG7,0(0,REG7)           STRIP HIGH ORDER BITS           10700021
         C     REG7,FZERO               CHECK IF OCBP IN PRAM           10800021
         BNE   OGANO1                                                   10900021
         WTO   'IFF205I GIOCR FOUND NO OCBP ADDRESS IN DECB',ROUTCDE=11X10930021
               ,DESC=7                                                  10960021
         LA    REG15,X'18'              DECB DOES NOT HAVE         JFCD 11000021
         B     OGASTR                   OCBP PTR--RETURN           JFCD 11100021
OGANO1   L     REG8,0(0,REG7)           LOAD OACB ADDRESS               11300021
         L     REG6,12(0,REG8)          CRSA ADDRESS (AREA ADDRESS)     11400021
         LA    REG5,22(0,REG8)          START ADDRESS (BUFFER ADDRESS)  11500021
         L     REG0,24(0,RDECB)         START ADDRESS IN REGISTER       11600021
         C     REG0,FZERO               CHECK IF START ADDRESS          11700021
         BNE   OGAOLP                   YES                             11800021
         LR    REG0,REG5                BUFFER ADDRESS TO START REG     11900021
OGAOLP   L     REG8,16(0,REG8)          OLP                             12000021
         LA    REG8,0(0,REG8)           STRIP HIGH ORDER BITS           12100021
         LA    REG6,0(0,REG6)           STRIP HIGH ORDER BITS           12200021
         SR    REG8,REG6                LENGTH                          12300021
         BC    11,OGARWS                NOT NEGATIVE LENGTH             12400021
         WTO   'IFF206I GIOCR, USING OACB, COMPUTED NEGATIVE BYTE COUNTX12450021
                FOR I/O OPERATION',ROUTCDE=11,DESC=7                    12500021
         LA    REG15,X'08'              LOAD THE RETURN CODE            12550021
         B     OGASTR                   RESTORE REGISTERS AND EXIT      12600021
*                                                                       12700021
*       TEST IF TYPE CODE IN DECB, IF START ADDRESS EVEN                12800021
*                                                                       12900021
OGACOMP  L     REG0,24(0,RDECB)         START ADDRESS IN REGISTER       13000021
         L     REG8,20(0,RDECB)         LENGTH IN REGISTER              13100021
         TM    4(RDECB),X'80'           FOR TYPE CODE IN LENGTH         13200021
         BZ    OGAPASS                                                  13300021
         C     REG8,FZERO               TEST IF NEGATIVE                13400021
         BC    11,OGAPASS               YES                      S21016 13430021
         WTO   'IFF207I GIOCR FOUND NEGATIVE LENGTH IN DECB',ROUTCDE=11X13460021
               ,DESC=7                                                  13490021
         LA    REG15,X'3C'             LOAD RETURN CODE          S21016 13520021
         B     OGASTR                  GO RETURN                        13550021
OGAPASS  L     REG6,12(0,RDECB)         AREA ADDRESS TO REGISTER        13600021
         L     REG5,28(0,RDECB)         BUFFER ADDRESS TO REGISTER      13700021
         LA    REG5,0(0,REG5)           DROP EIGHT HIGH ORDER BITS      13800021
OGARWS   L     REG7,4(0,RDECB)          TYPE CODE                       13900021
         C     REG7,FZERO               CHECK IF TYPE IN PARM           14000021
         BNE   OGABUF2                  YES                             14100021
         WTO   'IFF208I GIOCR FOUND NO TYPE CODE IN DECB',ROUTCDE=11,DEX14130021
               SC=7                                                     14160021
         LA    REG15,X'1C'              DECB DOES NOT HAVE         JFCD 14200021
         B     OGASTR                   TYPE CODE--RETURN          JFCD 14300021
*                                                                       14500021
*       CHECK IF BUFFER LIMIT TEST REQUIRED, IF SO, GO TO BUFFER        14600021
*       TEST ROUTINE.                                                   14700021
*                                                                       14800021
OGABUF2  TM    4(RDECB),X'C0'           2260 READ/WRITE                 14900021
         BC    1,OGANEXT                NO BUFFER CHECK                 15000021
         TM    4(RDECB),X'70'           2260 ERS                        15100021
         BC    1,OGANEXT                NO BUFFER CHECK                 15200021
         TM    4(RDECB),X'80'           TEST FOR READ/WRITE             15300021
         BC    1,OGAMAN                 YES                             15400021
         TM    4(RDECB),X'48'           TEST FOR HLT/INS/STR            15500021
         BC    1,OGAMAN0                YES                             15600021
         TM    4(RDECB),X'62'           TEST FOR RMV                    15700021
         BC    1,OGAMAN                 YES                             15800021
         B     OGANEXT                                                  15900021
OGAMAN0  TM    4(RDECB),SRTYP           SEE IF STR TYPE IN DECB.        16000021
         BZ    OGAMAN                   NO                              16100021
         TM    24(RDECB),DCB2           SEE IF 2ND DCB PRESENT.         16200021
         BZ    OGAMAN                   NO DCB2 SPECIFIED               16300021
         L     RDCB,12(0,RDECB)         LOAD 2'ND DCB ADDR.             16400021
         LA    RDCB,0(0,RDCB)           ZERO HI-ORDER BYTE.             16500021
         L     REG10,28(0,RDCB)        IOB ADDRESS FROM DCB.            16600021
         L     REG10,20(0,REG10)       DCB PTR FROM IOB.                16700021
         LA    REG10,0(0,REG10)         ZERO HI-ORDER BYTE.             16800021
         CR    REG10,RDCB               DOES IOB POINT TO DCB2.         16900021
         BE    CONT1                    NO-INVALID DCB           S21016 16930021
         WTO   'IFF209I GIOCR FOUND DCB2 ADDRESS IN DECB NOT EQUAL TO DX16960021
               CB ADDRESS IN IOB',ROUTCDE=11,DESC=7                     16990021
         LA    REG15,X'38'             LOAD RETURN CODE          S21016 17020021
         B     OGASTR                  GO RETURN                        17050021
CONT1    EQU   *                                                 S21016 17070021
         L     REG10,44(0,RDCB)         DEB ADDR FROM DCB2              17100021
         L     REG10,32(0,REG10)        UCB ADDR IN DEB.                17200021
         L     REG11,8(0,RDECB)         DCB1 ADDR TO REG 11.            17300021
         L     REG11,44(0,REG11)        DEB ADDR FROM DCB1.             17400021
         L     REG11,32(0,REG11)        UCB ADDR IN DEB                 17500021
         CLC   BTBL(3,REG10),BTBL(REG11)  ARE BUF TBL ADDR EQUAL.       17600021
         BE    SWITCH                     YES.                          17700021
         WTO   'IFF210I GIOCR FOUND DEVICES FOR DCB AND DCB2 ON DIFFEREX17730021
               NT CONTROL UNITS',ROUTCDE=11,DESC=7                      17760021
         LA    REG15,OGA0CR                                             17800021
         B     OGASTR                                                   17900021
SWITCH   MVC   12(4,RDECB),8(RDECB)     REVERSE DCB POINTERS            18000021
         ST    RDCB,8(0,RDECB)          IN DECB FOR BUFFER CHECK.       18100021
OGAMAN   LR    REG14,REG8               STORE REG. 8                    18200021
         LR    REG11,RIOB               STORE REG. 4                    18300021
         LR    REG10,REG0               STORE REG. 0                    18400021
         LA    REG10,0(0,REG10)        CLEAR HIGH ORDER BYTE            18500021
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 18600021
*        BUFFER PROTECT ROUTINE                                       * 18700021
*FUNCTION/OPERATION: CHECK BUFFER ADDRESSES INVOLVED IN INPUT/OUTPUT  * 18800021
*   OPERATIONS AGAINST THE LIMITS OF THE BUFFER ASSIGNMENT TO THAT    * 18900021
*   DEVICE TO PROTECT BUFFER STORAGE ASSIGNED TO OTHER DEVICES.       * 19000021
*ENTRY POINT: IGG019OC                                                * 19100021
*INPUT: ADDRESS OF DECB IN REGISTER 1                                 * 19200021
*OUTPUT: RETURN CODE IN REGISTER 15 - 00 = PROCEED WITH I/O           * 19300021
*                                     04 = ERROR, DO NOT PROCEED      * 19400021
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 19500021
*                                                                       19600021
IGGBUFPR EQU   *                                                  AOS/1 19700021
         USING DECB,RDECB                                               19800021
*                                                                       19900021
         L     RUCB,DCBAD          LOAD RUCB WITH DCB ADR               20000021
         L     RUCB,44(RUCB)       LOAD RUCB WITH DEB ADR               20100021
         L     RUCB,32(RUCB)       LOAD RUCB WITH UCB ADR               20200021
         L     RBFTBL,36(RUCB)     LOAD RBFTBL WITH BFR TBL ADR         20300021
*                                                                       20400021
         TM    OCBP,X'80'          TEST OACB INDICATOR BYTE             20500021
         BC    1,COMPUTE                                                20600021
*                                                                       20700021
         TM    TYPE,SRTYP          CHK FOR STR TYPE                     20800021
         BO    CHKSTR              BRANCH IF START TYPE                 20900021
         L     RA,BUFFER           NO - ACCESS BFR START ADDR           21000021
         LA    RA,ZERO(RA)             CLEAR HI BYTE             S21016 21020021
         LTR   RA,RA                   IS BFR START ADDR PRESENT S21016 21040021
         BZ    NOBUFAD                 BRANCH IF BFR ADDR ZERO   S21016 21060021
         LH    RA,0(RA)                                                 21100021
         LH    RB,LENGTH           ACCESS LENGTH FROM DECB              21200021
         TM    4(RDECB),X'06'      TEST FOR 2260              LI A44376 21209000
         BNO   NOT2260             BRANCH IF NOT              LI A44376 21218000
         CLC   4(RDECB),ERSTYPE    TEST FOR 2260 GCNTRL       LI A44376 21227000
         BE    NOLNGTH             BRANCH IF YES              LI A44376 21236000
         B     ADJUST              NOT 2260 GCNTRL            LI A44376 21245000
NOT2260  EQU   *                                              LI A44376 21254000
         TM    4(RDECB),X'40'      IS THIS 2250 GCNTRL        LI A44376 21263000
         BNO   ADJUST              NO, USE LENGTH             LI A44376 21272000
NOLNGTH  EQU   *                                              LI A44376 21281000
         SR    RB,RB               ZERO LRNGTH REG            LI A44376 21290000
         B     ADJUST                                                   21300021
CHKSTR   L     RA,START            ACCESS BUFFER START ADDR IN DECB     21400021
         LH    RA,0(RA)                                                 21500021
         SR    RB,RB               ZERO LENGTH REG            LI A44376 21600000
*                                                                       21700021
*POSITIVE CHECK FOR LEGAL ADR, I.E., WITHIN BUFFER SIZE                 21800021
*                                                                       21900021
ADJUST   LH    RX,0(RBFTBL)        LOAD TBLNGTH IN RX                   22000021
         SLL   RX,8                MULTIPLY TBLNGTH BY 256              22100021
         CLR   RA,RX                IS ADR LARGER THAN SIZE             22200021
         BH    ERROR1        YES GO TO ERROR ROUTN               S21016 22300021
         AR    RA,RB               ADD LENGTH TO START ADR FOR END ADR  22400021
         CLR   RA,RX               IS END ADR LARGER THAN SIZE          22500021
         BH    ERROR2        YES GO TO ERROR ROUTN               S21016 22600021
         SR    RA,RB               OTHERWISE SET RA EQ START ADR AND GO 22700021
         SRL   RA,8                BUFFER ADR ROUNDED DOWN TO MULT 256  22800021
         CLI   16(RUCB),X'31'           SEE IF MODEL ONE                22900021
         BE    MOD1                     YES                             23000021
         LA    RX,HEADISP          LOAD RX EQ 72                        23100021
*                                                                       23200021
GOON     AR    RA,RX               ADD HEADER LENGTH TO ADR             23300021
         AR    RA,RBFTBL           ADD ADDR OF BFR TBL, RA EQ DISP OF   23400021
*                                       SECTION ENTRY FOR THAT BFR ADR  23500021
*                                       IN BFR TBL                      23600021
*ADJUST LENGTH TO 256-BYTE SECTIONS                                     23700021
*                                                                       23800021
         LA    RX,MASK1            LOAD RX WITH ALL ONES                23900021
         AR    RB,RX               ADD CONVERSION FACTOR                24000021
         SRL   RB,8                PUT NUMBER OF SECTIONS IN LO-ORDER   24100021
*                                       BYTES OF RB                     24200021
         CL    RB,FZERO            CHK FOR ZERO LENGTH                  24300021
         BH    INITRX              BRANCH IF NOT ZERO                   24400021
         LA    RB,RY                                                    24500021
INITRX   LA    RX,RY               SET RX EQ 1                          24600021
CHECKALL CLC   0(1,RA),36(RUCB)    COMPARE BFR TBL ENTRY TO DEVNDX      24700021
         BNE   ERROR3        NOT EQUAL GO TO ERROR ROUTN         S21016 24800021
         AR    RA,RX               INCREMENT ENTRY DISP BY 1            24900021
         BCT   RB,CHECKALL                                              25000021
         B     OUT                                                      25100021
*                                                                       25200021
MOD1     LA    RX,16                LOAD MOD 1 BFRTBL HEADER LNGYH      25300021
         B     GOON                                                     25400021
*                                                                       25500021
COMPUTE  L     ROACB,OCBP          LOAD ADDR OF OCBP IN ROACB           25600021
         L     ROACB,0(ROACB)      LOAD ADDR OF OACB IN ROACB           25700021
         USING OACB,ROACB          SET UP OACB DSECT REGISTER           25800021
         L     RB,OLP              LOAD RB WITH OLP ADDR                25900021
         S     RB,CRSA             SUBTRACT CRSA TO GET LNG IN BYTES    26000021
         L     RA,BLP              LOAD BUFFER START ADDR IN RA         26100021
         B     ADJUST              GO TO CONVERT ROUTINE                26200021
*                                                                       26300021
ERROR1   WTO   'IFF211I GIOCR FOUND BUFFER START ADDRESS EXCEEDS BUFFERX26350021
                SIZE',ROUTCDE=11,DESC=7                                 26400021
         LA    REG15,X'04'             LOAD RETURN CODE          S21016 26450021
         B     CHKRET                                                   26500021
OUT      LA    15,0(0,0)                LOAD RETURN CODE.               26600021
         B     CHKRET                  BRANCH TO RETURN          S21016 26610021
ERROR2   WTO   'IFF212I GIOCR FOUND BUFFER ENDING ADDRESS EXCEEDS BUFFEX26620021
               R SIZE',ROUTCDE=11,DESC=7                                26630021
         LA    REG15,X'30'             LOAD RETURN CODE          S21016 26640021
         B     CHKRET                  GO RESTORE REGS           S21016 26650021
ERROR3   WTO   'IFF213I GIOCR FOUND I/O OPERATION VIOLATES BUFFER STORAX26660021
               GE ASSIGNED',ROUTCDE=11,DESC=7                           26670021
         LA    REG15,X'34'             LOAD RETURN CODE          S21016 26680021
         B     CHKRET                   BRANCH TO PD PROCESSING  S21016 26690021
CHKRET   EQU   *                                                        26700021
*                                                                       26800021
         LR    REG8,REG14               RESTORE REG. 8                  26900021
         LR    RIOB,REG11               RESTORE REG. 4                  27000021
         LR    REG0,REG10               RESTORE REG. 0                  27100021
         C     REG15,FZERO              TEST IF BEYOND LIMITS           27200021
         BNE   OGASTR                   BUFFER ERROR-RETURN.            27300021
OGAMAN1  TM    24(RDECB),DCB2           WAS DCB2 CHECKED BY BUF PROTECT 27400021
         BZ    OGAMAN2                  NO.                             27500021
         MVC   8(4,RDECB),12(RDECB)     RESTORE DCB PTRS                27600021
         ST    RDCB,12(0,RDECB)         IN DECB.                        27700021
         L     RDCB,8(0,RDECB)          RELOAD DCB1 ADDR.               27800021
         B     OGANEXT                                                  27900021
OGAMAN2  CLI   4(RDECB),X'92'           TEST FOR FND                    28000021
         BNE   OGANEXT                                                  28100021
         A     REG8,FONE                ONE TO LENGTH FOR FIND TYPE     28200021
*                                                                       28300021
*        FIND NEXT IOB AND ASSIGN                                       28400021
*                                                                       28500021
OGANEXT  LR    REG10,RIOB               FIND NEXT IOB AVAILABLE         28600021
OGALOOP  TS    36(REG10)                IS THIS IOB AVAILABLE           28700021
         BZ    OGASGN                   YES - ASGN                      28800021
         LA    REG10,36(0,REG10)        LOCATION OF NEXT IOB            28900021
         CLC   1(3,REG10),FZERO         TEST FOR ZERO                   29000021
         BZ    OGAWAIT                  NON-AVAILABLE, WAIT             29100021
         L     REG10,0(0,REG10)         LOAD NEXT IOB AVAILABLE         29200021
         B     OGALOOP                                                  29300021
OGAWAIT  LR    REG11,RDECB              STORE REGISTER 1                29400021
         LR    REG12,REG0               STORE REGISTER 0                29500021
         LR    RDECB,RIOB               FIRST IOB LOCATION              29600021
         S     RDECB,FOUR               LOCATION                        29700021
         MVC   0(4,RDECB),FZERO         CLEAR ECB                       29800021
         WAIT  ECB=(1)                                                  29900021
         LR    REG0,REG12               RESTORE REGISTER 0              30000021
         LR    RDECB,REG11              RESTORE REGISTER 1              30100021
         B     OGANEXT                  FIND AVAIL IOB                  30200021
OGASGN   LR    RIOB,REG10               IOB REG WITH NEW IOB ASGN       30300021
         LA    REG10,40(0,RIOB)         CCW LOCATION ADDRESS            30400021
         L     REG9,4(0,RDECB)          TYPE CODE TO REGISTER           30500021
*                                                                       30600021
*        IS NON-STOP REGENERATION TYPE CODE                             30700021
*                                                                       30800021
         TM    4(RDECB),X'C0'           2260 READ/WRITE                 30900021
         BC    1,OGACCW                 BUILD CCW                       31000021
         TM    4(RDECB),X'70'           2260 ERASE                      31100021
         BC    1,OGACCW                 BUILD CCW                       31200021
         CLI   4(RDECB),X'4A'           HLT TYPE                        31300021
         BE    OGACCW                   BUILD CCW                       31400021
         CLI   4(RDECB),X'08'           MIP TYPE                        31500021
         BE    OGACCW                   BUILD CCW                       31600021
         CLI   4(RDECB),X'10'           XYP TYPE                        31700021
         BE    OGACCW                   BUILD CCW                       31800021
         CLI   4(RDECB),X'40'           ALM TYPE                        31900021
         BE    OGACCW                   BUILD CCW                       32000021
         CLI   4(RDECB),X'50'           IND TYPE                        32100021
         BE    OGACCW                   BUILD CCW                       32200021
         CLI   4(RDECB),X'6C'           STR TYPE                        32300021
         BE    OGACCW                   BUILD CCW                       32400021
         CLI   4(RDECB),X'A8'           UNB TYPE                        32500021
         BE    OGACCW                   BUILD CCW                       32600021
         CLI   4(RDECB),X'00'           DEV TYPE                        32700021
         BE    OGACCW                   BUILD CCW                       32800021
         CLI   4(RDECB),X'18'           'SEN' TYPE               A25397 32830021
         BE    OGACCW                   IF YES GO BUILD CCW      A25397 32860021
*                                                                       32900021
*       BUILD  -  SET BUFFER ADDRESS REGISTER AND STOP - CHANNEL        33000021
*       COMMAND WORD WITH CHAINING                                      33100021
*                                                                       33200021
OGAHALT  SR    REG11,REG11              CLEAR REGISTER                  33300021
         ST    REG11,4(0,REG10)         CLEAR FIELD                     33400021
         IC    REG11,HLTCT              HALT COMMAND CODE COUNT         33500021
         STC   REG11,7(0,REG10)         COUNT IN CCW FOR HALT           33600021
         C     REG5,FZERO               BUFFER ADDRESS IN PRAM          33700021
         BNE   OGANO3                                                   33800021
NOBUFAD  EQU   *                                                 S21016 33820021
         WTO   'IFF214I GIOCR FOUND NO BUFFER ADDRESS IN DECB',ROUTCDE=X33840021
               11,DESC=7                                                33860021
         LA    REG15,X'20'              DECB DOES NOT HAVE         JFCD 33900021
         MVI   36(RIOB),X'00'           MARK IOB AS NOW          A29793 33930021
*                                            AVAILABLE           A29793 33960021
         B     OGASTR                   BUFF ADR.--RETURN          JFCD 34000021
OGANO3   ST    REG5,0(0,REG10)          BUFFER ADDRESS IN CCW           34200021
         SR    REG11,REG11              CLEAR REGISTER                  34300021
         IC    REG11,HALT               HALT COMMAND CODE               34400021
         STC   REG11,0(0,REG10)         COMMAND CODE IN CCW FOR HALT    34500021
         MVI   4(REG10),X'60'           CCW FLAG BITS                   34600021
         A     REG10,EIGHT              UPDATE CCW POINTER              34700021
*                                                                       34800021
*       BUILD APPROPIATE CHANNEL COMMAND WORD FOR I/O OPERATION. IF     34900021
*       ANOTHER COMMAND FOLLOW, BRANCH BACK WITH CHAINING. IF LAST      35000021
*       COMMAND, TEST FOR UNBUFFERED.                                   35100021
*                                                                       35200021
OGACCW   LR    REG12,REG8               SHIFT LENGTH TO REG12           35300021
OGACCW1  SR    REG8,REG8                CLEAR REGISTER                  35400021
         ST    REG8,4(0,REG10)          CLEAR FIELD                     35500021
         SLDL  REG8,5                    TYPE CODE 5 HIGH ORDER BITS    35600021
         TM    4(RDECB),X'06'           FOR ONE                         35700021
         BC    4,OGABUF                 NEXT TEST                       35800021
         ST    REG6,0(0,REG10)          AREA ADDRESS TO CCW             35900021
         B     OGACODE                  COMMAND CODE AND COUNT          36000021
OGABUF   TM    4(RDECB),X'02'           FOR BUFFER CODE                 36100021
         BC    12,OGASTART              START CODE                      36200021
         ST    REG5,0(0,REG10)          BUFFER ADDRESS TO CCW           36300021
         B     OGACODE                  COMMAND CODE AND COUNT          36400021
OGASTART TM    4(RDECB),X'04'           FOR START CODE                  36500021
         BC    12,OGACODE               COMMAND CODE AND COUNT          36600021
         ST    REG0,0(0,REG10)          START ADDRESS TO CCW            36700021
OGACODE  LA    REG11,OGATABLE           COMMAND CODE AND COUNT TABLE    36800021
         L     REG15,44(RDCB)           DEB ADDR                        36820021
         L     REG15,32(REG15)          UCB ADDR                        36840021
         CLI   UCBTYP(REG15),T2260      2260                            36860021
         BNE   OGACODE1                 NO                              36880021
         CLI    29(RDECB),X'01'                                         36900021
         BE    DATENTRY                                                 37000021
OGACODE1 CLI   4(RDECB),X'40'           FOR ALM TYPE                    37100021
         BE    OGANCK                                                   37200021
         CLI   4(RDECB),X'70'           FOR ERS TYPE 2260               37300021
         BE    OGANCK                                                   37400021
         L     REG15,0(0,REG10)         DATA ADDRESS IN CCW             37500021
         C     REG15,FZERO              CHECK IF ADDRESS PRESENT        37600021
         BNE   OGANCK                                                   37700021
         MVI   36(RIOB),X'00'           MARK IOB AS NOW          A29793 37730021
*                                            AVAILABLE           A29793 37760021
         WTO   'IFF215I GIOCR DISCOVERED AREA,BUFFER, OR START ADDRESS X37770021
               MISSING',ROUTCDE=11,DESC=7                               37780021
         LA    REG15,X'24'              DECB DOES NOT HAVE         JFCD 37800021
         B     OGASTR                   AREA ADR.--RETURN          JFCD 37900021
DATENTRY  A  REG11,THRESIX                                              38100021
         B     OGANCK                                                   38200021
OGANCK   AR    REG8,REG8                DOUBLE BITS IN REGISTER         38300021
         LH    REG11,0(REG8,REG11)      COMMAND CODE AND COUNT          38400021
         STC   REG11,7(0,REG10)         COUNT IN CCW                    38500021
         SRL   REG11,8                  SHIFT OUT COUNT                 38600021
         STC   REG11,0(0,REG10)         COMMAND CODE INTO CCW           38700021
         TM    7(REG10),X'FF'           IS COUNT ZERO                   38800021
         BC    5,OGACMD                 NO                              38900021
         ST    REG12,4(0,REG10)         LENGTH FROM REGISTER TO CCW     39000021
OGACMD   L     REG11,FZERO              ZERO TO REGISTER                39100021
         STH   REG11,4(0,REG10)         CLEAR UNUSED AREA IN CCW        39200021
         TM    4(RDECB),X'92'           TYPE CODE FOR FIND              39300021
         BC    12,OGAREAD               NO                              39400021
         SR    REG11,REG11              CLEAR REGISTER                  39500021
         IC    REG11,FNDB               FIND FLAG BITS                  39600021
         STC   REG11,4(0,REG10)         BITS IN FLAG IN CCW FOR FIND    39700021
         B     OGABIT                   NEXT TYPE CODE                  39800021
OGAREAD  TM    4(RDECB),X'80'           TYPE CODE FOR READ/WRITE        39900021
         BC    12,OGAOTHB               OTHER CODES                     40000021
         SR    REG11,REG11              CLEAR REGISTER                  40100021
         CLI   4(RDECB),X'88'           TEST IF CUR TYPE                40200021
         BE    OGABIT                   YES                             40300021
         CLI   4(RDECB),X'D8'           TEST FOR SMI READ               40400021
         BE    OGABIT                   YES                             40500021
         CLI   4(RDECB),X'E0'           TEST IF DSM READ TYPE           40600021
         BE    OGABIT                   YES                             40700021
         CLI   4(RDECB),X'E8'           TEST IF DSB READ TYPE           40800021
         BE    OGABIT                   YES                             40900021
         IC    REG11,RDWTB              READ/WRITE FLAG BITS            41000021
         STC   REG11,4(0,REG10)         BITS IN FLAG OF CCW FOR RD/WR   41100021
         B     OGABIT                   NEXT TYPE CODE                  41200021
OGAOTHB  SR    REG11,REG11              CLEAR REGISTER                  41300021
         CLI   4(RDECB),X'4A'           TEST IF HLT TYPE                41400021
         BE    OGABIT                   YES                             41500021
         CLI   4(RDECB),X'6C'           TEST IF STR TYPE                41600021
         BE    OGABIT                   YES                             41700021
         CLI   4(RDECB),X'50'           TEST IF IND TYPE                41800021
         BE    OGABIT                   YES                             41900021
         CLI   4(RDECB),X'08'           TEST IF MIP TYPE                42000021
         BE    OGABIT                   YES                             42100021
         CLI   4(RDECB),X'10'           TEST IF XYP TYPE                42200021
         BE    OGABIT                   YES                             42300021
         CLI   4(RDECB),X'18'           TEST IF DFS TYPE                42400021
         BE    OGABIT                   YES                             42500021
OGASIL   IC    REG11,FLAG               BITS FOR OTHERS FLAG            43100021
         STC   REG11,4(0,REG10)         BITS IN FLAG OF CCW FOR OTHERS  43200021
OGABIT   SLDL  REG8,3                   SHIFT OUT LAST BITS             43300021
         L     REG11,4(0,RDECB)         TYPE CODE                       43400021
         SLL   REG11,8                  1ST TYPE CODE                   43500021
         ST    REG11,4(0,RDECB)         TYPE CODE BACK                  43600021
         TM    4(RDECB),X'FF'           ANOTHER TYPE CODE FOLLOWS       43700021
         BC    8,OGASET                 NON-FOLLOW                      43800021
         TM    4(REG10),X'40'           TEST IF COMMAND CHAINING        43900021
         BC    5,OGAUPD                 YES                             44000021
         L     REG11,4(0,REG10)         FLAG FIELD                      44100021
         O     REG11,BFOUR              TURN ON COMMAND CHAIN FLAG      44200021
         ST    REG11,4(0,REG10)         FLAG W/COMMAND CHAINING IN CCW  44300021
OGAUPD   A     REG10,EIGHT              UPDATE CCW POINTER              44400021
         B     OGACCW1                  LOOP FOR NEXT CCW               44500021
OGASET   ST    REG7,4(0,RDECB)          RESTORE TYPE CODE IN DECB       44600021
*                                                                       44700021
*       TURN OFF APPROPIATE FLAGS IN CCW AND STORE RESTART ADDRESS      44800021
*       IN DCB. STORE ECB ADDRESS IN IOB AND SET ECB TO ZERO            44900021
*                                                                       45000021
         TM    4(REG10),X'40'           TEST IF COMMAND CHAINING        45100021
         BC    8,OGAECB                 OFF                             45200021
         L     REG11,4(0,REG10)         FLAG OF CCW                     45300021
         N     REG11,BNTWO              TURN OFF                        45400021
         ST    REG11,4(0,REG10)         FLAG TO CCW                     45500021
OGAECB   LR    REG11,REG0                                               45600021
         CLI   0(REG10),X'27'           WAS LAST COMMAND A START   3841 45630021
         BNE   OGASKIP1                 NO SKIP ADDR SAVE          3841 45660021
         MVC   12(2,RDCB),0(REG11)      RESTART BUF ADD IN DCB          45700021
         L     REG5,44(0,RDCB)          DEB ADDRESS FROM DCB            45800021
         LR    REG10,RDECB              SAVE REG 1.                     45900021
         DEBCHK (RDCB),TYPE=VERIFY,AM=GAM   VALIDATE DEB      LB Y01021 45950001
         LH    REG0,0(0,REG11)          GET RESTART ADDRESS.            46000021
         SR    RDECB,RDECB        CLEAR WORK REGISTER       LG @Z30AALG 46050000
         ICM   RDECB,3,34(REG5)   UCB ADDRESS FROM DEB      LG @Z30AALG 46100000
         CLI   UCBTYP(RDECB),T2250                                 3841 46200021
         BH    OGASKIP                                             3841 46300021
         SLL   REG0,16                  LEFT JUSTIFY IN REG0.           46400021
         OR    REG0,RDECB               UCB AND BUFF ADDR TO REG 0.     46500021
         LR    RY,RDCB             LD DCB ADDR               LG @ZM2358 46550000
         SVC   84                  RESTART ADDRESS TO UCB          TMGA 46700021
OGASKIP  LR    RDECB,REG10              RESTORE DECB ADDR IN REG1       46800021
OGASKIP1 ST    RDECB,4(0,RIOB)          ECB ADDR IN IOB            3841 46900021
OGAEXCP  L     REG11,FZERO              ZERO TO REGISTER                47000021
         STH   REG11,30(0,RIOB)         CLEAR COUNT AREA IN IOB         47100021
         L     REG7,28(0,RDECB)         BUFFER ADDRESS                  47200021
         SRL   REG7,24                                                  47300021
         STC   REG7,32(0,RIOB)          UCB INDEX INTO IOB              47400021
*                                                                       47500021
*       ISSUE SVC 0 FOR EXCP AND RETURN                                 47600021
*                                                                       47700021
         LR    RDECB,RIOB               IOB POINTER TO REG 1            47800021
         SVC   0                        EXCP                            47900021
         LA    REG15,ZERO              LOAD RETURN CODE          S21016 48000021
OGASTR   RETURN (14,12),RC=(15)                                         48100021
*                                                                       48200021
*       ABEND AND DUMP ON PROPER CODE                                   48300021
*                                                                       48400021
         DS    0D                                                       48600021
*                                                                       48700021
*                                                                       48800021
*       COMMAND CODE AND COUNT TABLE ON HALH WORD BOUNDARY USED         48900021
*       FOR BUILDING CCW'S. THE FIRST BYTE IS THE COMMAND CODE          49000021
*       AND THE LAST BYTE IS THE COUNT ASSOCIATED WITH EACH COMMAND     49100021
*       IF APPROPIATE. THE MACRO ID REQUIRED TO HAVA A COUNT IF THE     49200021
*       COUNT IS ZERO.                                                  49300021
*                                                                       49400021
*                                                                       49500021
OGATABLE DS    0F                                                       49600021
OGADEV   DC    X'1612'                  0                               49700021
OGAMIP   DC    X'0E03'                  1                               49800021
OGAXYP   DC    X'1204'                  2                               49900021
OGADFS   DC    X'0404'                  3                               50000021
OGADCS   DC    X'0404'                  4                               50100021
         DC    X'0000'                  5    UNASSIGNED                 50200021
         DC    X'0000'                  6    UNASSIGNED                 50300021
         DC    X'0000'                  7    UNASSIGNED                 50400021
OGAALM   DC    X'0B02'                  8                               50500021
OGASTOP  DC    X'0702'                  9                               50600021
OGAIND   DC    X'1B04'                  10                              50700021
OGAINS   DC    X'0F02'                  11                              50800021
OGARMV   DC    X'1F02'                  12                              50900021
OGASTR1  DC    X'2702'                  13                              51000021
OGAERS   DC    X'0702'                  14                              51100021
         DC    X'0000'                  15   UNASSIGNED                 51200021
OGABUF1  DC    X'0200'                  16                              51300021
OGACUR   DC    X'0600'                  17                              51400021
OGAFND   DC    X'0600'                  18                              51500021
         DC    X'0000'                  19   UNASSIGNED                 51600021
OGAWBUF  DC    X'0100'                  20                              51700021
OGAUNB   DC    X'0100'                  21                              51800021
         DC    X'0000'                  22   UNASSIGNED                 51900021
         DC    X'0000'                  23   UNASSIGNED                 52000021
         DC    X'0000'                  24   UNASSIGNED                 52100021
         DC    X'0000'                  25   UNASSIGNED                 52200021
         DC    X'0000'                  26   UNASSIGNED                 52300021
OGASMI   DC    X'0A00'                  27   2260                       52400021
OGADSM   DC    X'0200'                  28   2260                       52500021
OGADSB   DC    X'0600'                  29   2260                       52600021
OGAWDSB  DC    X'0100'                  30   2260                       52700021
OGALNE   DC    X'0500'                  31   2260                       52800021
OGAERSW  DC    X'1702'                                                  52900021
         DC    24X'00'                                                  53000021
OGASMIW  DC    X'1A00'             DATA ENTRY COMMANDS                  53100021
OGADSMW  DC    X'1200'                                                  53200021
OGADSBW  DC    X'1600'                                                  53300021
OGADSBWW DC    X'1100'                                                  53400021
OGALNEW  DC    X'1500'                                                  53500021
*                                                                       53600021
*                                                                       53700021
*        CONSTANT                                                       53800021
*                                                                       53900021
         DS    0F                                                       54000021
FONE     DC    XL4'01'                                                  54100021
FZERO    DC    XL4'0'                                                   54200021
TWO      DC    F'2'                                                     54300021
FOUR     DC    F'4'                                                     54400021
EIGHT    DC    F'8'                                                     54500021
BFOUR    DC    X'40000000'                                              54600021
BNTWO    DC    X'20FFFFFF'                                              54700021
FLAG     DC    X'20'                                                    54800021
CONCF    DC    C'C0'                                                    54900021
HLTCT    DC    X'02'                                                    55000021
T2260    EQU   X'03'                                                    55100021
HALT     DC    X'07'                                                    55200021
FNDB     DC    X'30'                                                    55300021
RDWTB    DC    X'20'                                                    55400021
ERSTYPE  DC    X'7000'             2260 GCNTRL TYPE           LI A44376 55450000
PATCH    DC    C'IGG019OA 50 BYTE PATCH AREA.'                          55460000
         DC    C'50 BYTE AREA ENDS HERE'                                55470000
THRESIX  DC  F'36'                                                      55500021
OGA4R    EQU   4                                                        55600021
OGA8R    EQU   8                                                        55700021
OGA0CR   EQU   12                                                       55800021
OGA10R   EQU   16                                                       55900021
UCBTYP   EQU   19                                                       56000021
BTBL     EQU   37                                                       56100021
HEADISP  EQU   40                                                       56200021
SRTYP    EQU   X'6C'                                                    56300021
DCB2     EQU   X'80'                                                    56400021
MASK1    EQU   X'FF'                                                    56500021
DCBDEBAD EQU   44                      DISP IN DCB FOR DEB ADDR  A33619 56510021
DEBDCBAD EQU   24                      DISP IN DEB FOR DCB ADDR  A33619 56520021
DEBNMEXT EQU   16                      DISP IN DEB FOR NUMBER OF A33619 56530021
*                                      EXTENTS                   A33619 56540021
UNITINDX EQU   28                      DISP TO UNIT INDEX IN DECBA33619 56550021
ZERO     EQU   0                       DISPLACEMENT              A33619 56560021
ONE      EQU   1                       LENGTH OF UNIT INDEX ENTRYA33619 56570021
         CNOP  0,8                                                      56600021
*DUMMY SECTIONS                                                         56700021
DECB     DSECT                                                          56800021
         DS    F                                                        56900021
TYPE     DS    F                                                        57000021
DCBAD    DS    F                                                        57100021
AREADR   DS    F                                                        57200021
         DS    F                                                        57300021
OCBP     DS    CL2                                                      57400021
LENGTH   DS    CL2                                                      57500021
START    DS    F                                                        57600021
BUFFER   DS    F                                                        57700021
*                                                                       57800021
*                                                                       57900021
OACB     DSECT                                                          58000021
SLOA     DS    F                                                        58100021
         DS    2F                                                       58200021
CRSA     DS    F                                                        58300021
OLP      DS    F                                                        58400021
BLP      DS    F                                                        58500021
         END                                                            58600021
