DataMuseum.dk

Presents historical artifacts from the history of:

IBM System/3

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about IBM System/3

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦68862eae4⟧ s3xseg

    Length: 77470 (0x12e9e)
    Types: s3xseg
    Names: »S$E180«

Derivation

└─⟦4498c64f7⟧ Bits:30009191 5704-sc2.V05.ccp
    └─⟦95ee7795b⟧ 
        └─⟦this⟧ »S$E180« 

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00020000                
.*                                                                    * 00030000                
.*  TITLE: $E180 - COMMON SUBROUTINES FOR COM SPVR. (CS)              * 00040000                
.*                                                                    * 00050000                
.*  FUNCTION: PROVIDES FUNCTIONS COMMON TO THE BSCC SUPERVISOR        * 00060000                
.*             (I.E. SAVE TUB ATTRIBUTES,SEARCH CLBPLQ, ETC.).        * 00070000                
.*                                                                    * 00080000                
.*  INPUT:  THE VARIOUS SUBROUTINES REQUIRE DIFFERENT INPUT - THE     * 00090000                
.*           COMMENTS PRECEEDING EACH SUBROUTINE DEFINE THE REQUIRED  * 00100000                
.*           INPUT PARAMETERS,REGS,ETC.                               * 00110000                
.*                                                                    * 00120000                
.*  OUTPUT: THE VARIOUS SUBROUTINES PRODUCE DIFFERENT OUTPUT - THE    * 00130000                
.*           COMMENTS PRECEEDING EACH SUBROUTINE DEFINE THE OUTPUT    * 00140000                
.*           RESULTS OF THAT SUBROUTINE.                              * 00150000                
.*                                                                    * 00160000                
.*  EXTERNAL REFERENCES: DEFINED BY COMMENTS PRECEEDING EACH SUB-     * 00170000                
.*                        ROUTINE.                                    * 00180000                
.*                                                                    * 00190000                
.*  EXITS: RETURNS TO CALLER                                          * 00200000                
.*                                                                    * 00210000                
.*                                                                    * 00220000                
.********************************************************************** 00230000                
.*                                                                    * 00240000                
.*     GBLB  &NDF                      * NO * DFF SUPPORT             * 00250000                
.*                                                                    * 00260000                
.*     GBLB  &CACI                     * NO * ASCII SUPPORT           * 00270000                
.*                                                                    * 00280000                
.*     GBLB  &NDME                     * NO * DATA MODE ESCAPE        * 00290000                
.*                                                                    * 00300000                
.*     GBLB  &NPBY                     * NO * BUSY PRINTER SUPPORT.   * 00303000                
.*                                                                    * 00306000                
.********************************************************************** 00310000                
       $E180 &DMESTR-                                                   00320000                
       GBLB  &NDF,&CACI,&NDME,&NPBY                                     00325000                
       GBLB  &CSIO,&NCPOR                                               00330000                
       TABLE &DMESTR                   . DATA MODE ESCAPE STRING        00340000                
''     TABDF CL6'//////'               . DEFAULT CHARACTERS             00350000                
       TEXT                                                             00360000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S S R C H)'     00370000                
*********************************************************************** 00380000                
*                                                                     * 00390000                
* NAME  CSSRCH                                                        * 00400000                
*                                                                     * 00410000                
* FUNCTION:  SEARCH @CSNRQ FOR A PUT PL - IF NO PUT'S FOUND THEN      * 00420000                
*            RETURN FIRST PL ON @CSNRQ                                * 00430000                
*                                                                     * 00440000                
* INPUT: XR1--> NO MATTER                                             * 00450000                
*        XR2--> NO MATTER                                             * 00460000                
*                                                                     * 00470000                
* OUTPUT: XR1--> PL TO USE                                            * 00480000                
*         XR2--> PRECEEDING PL                                        * 00490000                
*                                                                     * 00500000                
* EXIT  RETURN TO CALLER                                              * 00510000                
*********************************************************************** 00520000                
       SPACE 1                                                          00530000                
CSSRCH EQU   *                         *                                00540000                
       ST    CSSR08+3,ARR              SAVE RETURN ADDRESS              00550000                
       LA    @CSNRQ-1,XR2              XR2 --> NEW REQUEST QUEUE        00560000                
CSSR01 EQU   *                         *                                00570000                
       L     PLCHN(,XR2),XR1           XR1 --> NEXT PARM LIST           00580000                
       TBN   PLOPC(,XR1),OPPUT         THIS A PUT AND --                00590000                
       TBF   PLOPM(,XR1),OPSTOP        NOT A STOP ?                     00600000                
       JT    CSSR07                    YES - RETURN TO CALLER           00610000                
       LA    PLCHN-1(,XR1),XR2         XR2 --> NEXT PL                  00620000                
       CLI   PLCHN-1(,XR2),NOBIT       END OF CHAIN ?                   00630000                
       BNE   CSSR01                    NO - LOOK AGAIN                  00640000                
* NO PUTS FOUND POINT XR1 AT FIRST PL, XR2 AT PRECEEDING (@CSNRQ)       00650000                
       LA    @CSNRQ-1,XR2              XR2 --> @CSNRQ                   00660000                
       L     PLCHN(,XR2),XR1           XR1 --> FIRST PL                 00670000                
       AIF   (&CSIO EQ '1').PT010                                       00670700                
       AGO   .PT020                                                     00670800                
.PT010 ANOP                                                             00670900                
       AIF   (&NCPOR).PT030                                             00671000                
.PT020 ANOP                                                             00671100                
       SPACE 1                                                          00671200                
******************************************************************* @14 00671400                
*******                                                                 00672100                
CSSR07 SBN   CSSWIT,CSSPRM             INDICATE A PARM LIST FOUND       00673500                
CSSR08 B     #                         RETURN TO CALLER                 00674200                
*******                                                                 00675600                
******************************************************************* @14 00675900                
       AGO   .YP020                    *                                00677000                
.PT030 ANOP                                                             00677700                
CSSR07 EQU   *                         *                                00678400                
CSSR08 B     #                         RETURN TO CALLER                 00680000                
.YP020 ANOP                            *                                00685000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S P S T N)'     00690000                
*********************************************************************** 00700000                
*                                                                     * 00710000                
* NAME  CSPSTN                                                        * 00720000                
*                                                                     * 00730000                
* FUNCTION: POST A NEW REQUEST IF IT IS A NO-WAIT OPERATION           * 00740000                
*                                                                     * 00750000                
* INPUT: XR1--> NO MATTER                                             * 00760000                
*        XR2--> NO MATTER                                             * 00770000                
*        CSNWPL --> PL TO BE INSPECTED FOR A NO-WAIT OPERATION        * 00780000                
*                                                                     * 00790000                
* OUTPUT XR1--> NO MATTER                                             * 00800000                
*        XR2--> NO MATTER                                             * 00810000                
*        A NO-WAIT OP'S PLECB POSTED COMPLETE                         * 00820000                
*                                                                     * 00830000                
* EXIT  TO CHECK FOR MORE WORK FOR CS (CSNMOR)                        * 00840000                
*********************************************************************** 00850000                
       SPACE 1                                                          00860000                
CSPSTN EQU   *                         *                                00870000                
       TBN   CSSWIT,CSNRIP             NEW REQUEST IN PROCESS AND ---|  00880000                
       SBF   CSSWIT,CSNRIP             SET IT OFF                    |  00890000                
       L     CSNWPL,PL                 XR1 --> PL                    |  00900000                
       TBN   PL$OPC(,PL),OPNOW         IS THIS A NO-WAIT OPERATION?<-|  00910000                
       JF    CSTN04                    NO - GO CHECK FOR MORE WORK      00920000                
       AIF   (&NPBY).BP500             BUSY PRINT SUPPORT?              00920700                
*                                      -----START-------------------@07 00921400                
       SPACE 1                                                          00922100                
* IF THE TUB FOR THIS OPERATION IS A BUSY PRINTER TUB,                  00922800                
*   THEN DO NOT POST THE OPERATION SCHEDULED - WAIT TILL                00923500                
*   THE PRINTER RETURNS DEVICE END STATUS.                              00924200                
       SPACE 1                                                          00924900                
       L     PLTUBA(,PL),XR2           FIND THE TUB.                    00925600                
       TBN   TUBAT4(,XR2),TUBWAT       THIS A BUSY PRINTER OPERATION?   00926300                
       JT    CSTN04                    YES - DON'T POST AT THIS TIME.   00927000                
*                                      ------END--------------------@07 00927700                
.BP500 ANOP                            *                                00928400                
* POST USER THAT OP IS SCHEDULED                                        00930000                
       LA    PLECB(,PL),XR1            XR1 --> ECB                      00940000                
       SVC   0                         SPVR CALL                        00950000                
       DC    AL1(PSTRIB)               POST RIB                         00960000                
CSTN04 B     CSNMOR                    GO CHECK FOR MORE WORK           00970000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S C L B Q)'     00980000                
*********************************************************************** 00990000                
*                                                                     * 01000000                
* NAME  CSCLBQ                                                        * 01010000                
*                                                                     * 01020000                
* FUNCTION: DO GETMAINS AS REQUIRED, PUT THIS PL ON CLBPLQ            * 01030000                
*                                                                     * 01040000                
* INPUT: XR1--> PL TO BE QUEUED                                       * 01050000                
*        XR2--> CLB ON WHICH TO QUEUE IT                              * 01060000                
*                                                                     * 01070000                
* OUTPUT: XR1--> SAME AS INPUT                                        * 01080000                
*         XR2--> SAME AS INPUT                                        * 01090000                
*         PL WILL BE ON CLBPLQ                                        * 01100000                
*                                                                     * 01110000                
* EXIT  RETURN TO CALLER                                              * 01120000                
*                                                                     * 01130000                
*********************************************************************** 01140000                
       SPACE 2                                                          01150000                
CSCLBQ EQU   *                         **                               01160000                
       ST    CSQARR+3,ARR              SAVE RETURN ADDRESS              01170000                
       CCP   MASK,PMR                  MASK ALL INTERRUPTS              01180000                
       TBN   PL$OPM(,PL),OPNOW         WAIT TYPE OP ?                   01190000                
       BF    CSQONQ                    YES - JUST QUEUE WAIT TYPE OPS   01200000                
*                                      ANY GETMAINS WILL BE DONE AT     01210000                
*                                      RESCHEDULE TIME                  01220000                
       SPACE 1                                                          01230000                
* HAVE A NO-WAIT OP - MUST GETMAIN FOR A PARM LIST IF NOT SYS INVITE    01240000                
       TBN   PLOPM(,PL),OP$SYS         SYSTEM OP AND                    01250000                
       CLI   PLOPC(,PL),OPINV          ONLY INVITE INPUT ?              01260000                
       BC    CSQONQ,TRUAEQ             YES - SKIP THE GETMAIN FOR PL    01270000                
       SPACE 1                                                          01280000                
       TBF   PLOPM(,PL),OP$SYS         USER -                           01290000                
       TBN   PLOPC(,PL),OPINV          INVITE INPUT?                    01300000                
       JF    CSQSPI                    NO - JUMP                        01310000                
       SPACE 1                                                          01320000                
* HAVE A USER INVITE INPUT - GM FOR THE PARM LIST                       01330000                
       SBN   $FLGC,#INVPL              SET TO GM FROM PL AREA ONLY      01340000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             01350000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT GETMAIN        01360000                
       MVC   GMSIZE(2,XR2),PLGMLN      PUT LENGTH IN GM PARM LIST   @13 01370000                
       B     CSGMRQ                    GO DO THE GETMAIN                01380000                
       SPACE 1                                                          01390000                
* IF GETMAIN FAILED THEN PUT PL ON QUEUE OF WAITERS                     01400000                
       JNOL  CSQGMW                    JUMP IF GM WAS OK                01410000                
       SPACE 2                                                          01420000                
       DC    XL1'0'                    PROGRAM CHECK - GM SHOULD        01430000                
*                                      NEVER FAIL FOR AN INVITE         01440000                
* GM FOR PL WORKED - MOVE PL TO GETMAINED AREA                          01450000                
CSQGMW EQU   *                         *                                01460000                
       L     GMADDR(,XR2),XR2          XR2 --> GETMAINE AREA            01470000                
       MVC   PLLNG+3(PLLNG,XR2),PLENDS(,PL) MOVE PL TO GETMAIN AREA @13 01480000                
       TBF   PLOPM(,PL),ALLBIT         Q-USER ........              @13 01481000                
       CLI   PLOPC(,PL),OPINV          .......INVITE?               @13 01482000                
       JC    CSQGM1,TRUAEQ             YES-DO NOT MOVE ECB          @13 01483000                
       SPACE 1                                                          01484000                
       MVC   PLLEN+3(3,XR2),PLECB+2(,PL) NO-MOVE IN ECB             @13 01485000                
CSQGM1 EQU   *                                                      @13 01486000                
       A     X$0004,XR2                BUMP TO NEW PL ADDRESS           01490000                
       ST    CSSPL,XR2                 SAVE THIS PL ADDRESS             01500000                
       LA    0(,XR2),PL                XR1--> PL                        01510000                
       L     CSSCLB,CLB                XR2 --> LCB                      01520000                
       B     CSQONQ                    GO QUEUE THIS PL                 01530000                
       SPACE 2                                                          01540000                
* IF THIS IS A SYS PUT-NO-WAIT-INVITE THEN ONLY GM FOR REC AREA         01550000                
CSQSPI EQU   *                         *                                01560000                
       TBN   PLOPM(,PL),OP$SYS         SYSTEM -                         01570000                
       TBN   PLOPC(,PL),OPINV+OPPUT    PUT-NO-WAIT-INVITE ?             01580000                
       JF    CSQUPT                    NO - JUMP                        01590000                
       SPACE 1                                                          01600000                
* SYSTEM PUT-NO-WAIT-INVITE                                             01610000                
       SBN   $FLGC,#PUTTP              SET TO GM FROM ALMOST ANYWHERE   01620000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             01630000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        01640000                
       MVC   GMSIZE(2,XR2),PLOUTL(,PL) PUT SIZE IN PARM LIST            01650000                
       ALC   GMSIZE(2,XR2),X$0004      ADD 4                            01660000                
       B     CSGMRQ                    GO DO GET MAIN                   01670000                
       JNOL  CSQMVD                    GM WORKED - JUMP                 01680000                
       SPACE 1                                                          01690000                
* GM FAILED - MAKE IT A WAIT OP AND DO IT                               01700000                
CSQMKW EQU   *                         *                                01710000                
       SBF   PL$OPM(,PL),OPNOW         MAKE IT A WAIT OP                01720000                
       SBF   PL$OPC(,PL),OPNOW         MAKE IT A WAIT OP                01730000                
       L     CSSCLB,CLB                XR2 --> LCB                      01740000                
       J     CSQONQ                    GO QUEUE THIS OP                 01750000                
       SPACE 1                                                          01760000                
* GM WORKED - GO MOVE DATA TO TP BUFFER                                 01770000                
CSQMVD EQU                             *                                01780000                
       B     CSQMOV                    GO MOVE DATA TO TP BUFF          01790000                
       L     CSSCLB,XR2                XR2 --> LCB                      01800000                
       J     CSQONQ                    GO QUEUE THIS PL                 01810000                
       SPACE 1                                                          01820000                
* IF THIS IS A USER PUT-NO-WAIT - GM FOR PL AND RECORD AREA             01830000                
CSQUPT EQU   *                         *                                01840000                
       TBF   PLOPM(,PL),OP$SYS         NOT SYSTEM OP (USER) AND         01850000                
       TBN   PLOPC(,PL),OPPNW          PUT-NO-WAIT ?                    01860000                
       JF    CSQSYS                    NO - JUMP                        01870000                
       SPACE 1                                                          01880000                
* MAKE TASK WAIT IF GETMAIN WON'T WORK                                  01890000                
       MVC   GMLIST+GMSIZE,PLOUTL(2,PL) PUT SIZE IN PARM LIST           01900000                
       ALC   GMLIST+GMSIZE,X$0004(2)   ADD GM PARM LIST LENGTH          01910000                
       ALC   GMLIST+GMSIZE(2),PLGMLG   ADD PL LENGTH                    01920000                
       CLC   #GMS+1(2),GMSIZE+GMLIST   ENOUGHT TP BUFFER ?              01930000                
       JNL   CSQPTG                    YES - JUMP                       01940000                
       SBF   PL$OPM(,PL),OPNOW         MAKE IT A WAIT OP                01950000                
       SBF   PL$OPC(,PL),OPNOW         MAKE IT A WAIT OP                01960000                
       B     CSWCRQ                    PUT IT ON CLBWCQ                 01970000                
       SBF   CSSWIT,CSNRIP             SET OFF NEW REQUEST IN PROCESS   01980000                
       B     CSNMOR                    GO CHECK FOR MORE WORK           01990000                
       SPACE 1                                                          02000000                
* DO THE GM                                                             02010000                
CSQPTG EQU   *                         *                                02020000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             02030000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        02040000                
       SBN   $FLGC,#PUTTP              SET TO GET FROM ALMOST ANYWHERE  02050000                
       B     CSGMRQ                    GO DO THE GETMAIN                02060000                
       B     CSQMOV                    GO MOVE TEXT TO TP BUFFER        02070000                
*                                      --------------START----------@07 02071000                
       L     PLTUBA(,PL),XR2           TUB@                             02071100                
       TBN   TUBSCS(,XR2),TUBBPT       IS BUSY PRINT ALLOWED?           02071400                
       JF    CSPNWB                    NO, SKIP BUSY PRINT CODE         02071500                
       CLC   PLOUTL(2,PL),X$0002       IS OUTPUT LENGTH 2?              02071600                
       JNH   CSPNWB                    YES SKIP BSY PRT CODE            02071700                
       L     PLRECA(,PL),XR2           XR2 --> RECORD AREA              02072000                
       TBN   WCC(,XR2),STPRT           START PRINT BIT ON ?             02073000                
       JF    CSPNWB                    NO - DON'T SET PRINTER BUSY      02074000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      02075000                
       SBN   TUBAT4(,TUB),TUBBSY       YES - SET ON PRINTER BUSY BIT    02076000                
CSPNWB EQU   *                                                          02077000                
*                                      --------------END------------@07 02078000                
       SPACE 1                                                          02080000                
* GET MAIN FOR THE PARM LIST                                            02090000                
CSQPLG CLC   #GMS+1(2),PLGMLG          WILL GM FOR PL WORK ?            02100000                
       BL    CSQMKW                    NO-MAKE IT A WAIT OP             02110000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             02120000                
       MVC   GMSIZE(2,XR2),PLGMLG      PUT IN LENGTH TO GETMAIN         02130000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        02140000                
       SBN   $FLGC,#PUTTP              SET TO GM FROM  PUT/GET AREA     02150000                
       B     CSGMRQ                    GO DO GM                         02160000                
       SPACE 1                                                          02170000                
*  MOVE THE PL TO TP BUFFER AND QUEUE IT                                02180000                
       B     CSQGMW                    GO QUEUE THIS PL                 02190000                
       SPACE 2                                                          02200000                
* MUST HAVE A SYSTEM PUT-NO-WAIT AT THIS POINT                          02210000                
CSQSYS EQU   *                         *                                02220000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             02230000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        02240000                
       MVC   GMSIZE(2,XR2),PLOUTL(,PL) PUT SIZE IN GM PL                02250000                
       ALC   GMSIZE(2,XR2),X$0004      ADD 4 FOR GM PARM LIST           02260000                
       ALC   GMSIZE(2,XR2),PLGMLG      ADD LENGTH OF PL                 02270000                
       CLC   #GMS+1,GMSIZE(2,XR2)      WILL GM WORK?                    02280000                
       BL    CSQMKW                    NO - GO MAKE THIS A WAIT OP      02290000                
       SBN   $FLGC,#PUTTP              SET TO GETMAIN FROM ANYWHERE @08 02295000                
       B     CSGMRQ                    GO DO GET MAIN                   02300000                
       L     CSSPL,PL                    XR1 --> PL                     02310000                
       B     CSQMOV                    GO MOVE DATA TO TP BUFFER        02320000                
       B     CSQPLG                    GO DO GM FOR PL                  02330000                
       SPACE 1                                                          02340000                
* PUT THE PL ON CLBPLQ                                                  02350000                
CSQONQ EQU   *                                                          02360000                
       AIF   (&CSIO EQ '1').PT040                                       02360500                
       AGO   .PT050                                                     02360560                
.PT040 ANOP                                                             02360620                
       AIF   (&NCPOR).PT060                                             02360680                
.PT050 ANOP                                                             02360740                
       SPACE 1                                                          02360800                
******************************************************************* @14 02360860                
*******                                                                 02360920                
* IF A PORT DEVICE AND SOMETHING IS ON TUBDCH(TPBUFF) DATA Q, DO NOT    02362500                
* Q THE PARM LIST. IF THIS IS A PUT, THE USER WILL GET A 0005 RETURN    02363000                
* CODE.                                                                 02363500                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?        02364000                
       JF    CSQQPL                    NO                               02364500                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       02365000                
       CLI   TUBDCH-1(,TUB),NOBIT      ANYTHING ON THE TPBUFF DATA Q    02365500                
       L     CSSCLB,CLB                XR2--> CLB                       02366000                
       JNE   CSQEXT                    YES,DO NOT Q THE PARM LIST       02366500                
CSQQPL EQU   *                         *                                02367000                
*******                                                                 02367500                
******************************************************************* @14 02367700                
       SPACE 1                                                          02368000                
.PT060 ANOP                                                             02369000                
       LA    CLBPLQ-1(,CLB),XR2        XR2 -->BEGINNING OF QUEUE        02370000                
CSQBMP EQU   *                         *                                02380000                
       CLI   PLCHN-1(,XR2),NOBIT       END OF CHAIN?                    02390000                
       JE    CSQIT                     YES - PUT IT ON THE QUEUE        02400000                
       L     PLCHN(,XR2),XR2           XR2 --> NEXT PL                  02410000                
       B     CSQBMP                    GO LOOK AGAIN                    02420000                
CSQIT  EQU   *                         *                                02430000                
       ST    PLCHN(,XR2),PL            PUT PL ON THE QUEUE              02440000                
       MVI   PLCHN-1(,PL),NOBIT        ASSURE THIS IS THE END-OF-CHAIN  02450000                
CSQEXT EQU   *                         *                                02460000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 02470000                
       L     CSSCLB,CLB                XR2 --> CLB                      02480000                
CSQARR B     #                         RETURN                           02490000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S P S T E)'     02500000                
*********************************************************************** 02510000                
*                                                                     * 02520000                
* NAME: CSPSTE                                                        * 02530000                
*                                                                     * 02540000                
* FUNCTION: POST AN OP END, FREE BUFFERS IF REQUIRED, PUT OPENDED     * 02550000                
*           PL ON TCBINQ (FOR INVITES)                                * 02560000                
*                                                                     * 02570000                
* INPUT: XR1--> PL TO POST                                            * 02580000                
*        XR2--> NO MATTER                                             * 02590000                
*                                                                     * 02600000                
* OUTPUT: XR1--> RESTORED                                             * 02610000                
*         XR2--> RESTORED                                             * 02620000                
*         PL POSTED COMPLETE                                          * 02630000                
*                                                                     * 02640000                
* EXIT: RETURN TO CALLER                                              * 02650000                
*                                                                     * 02660000                
*********************************************************************** 02670000                
       SPACE 1                                                          02680000                
CSPSTE EQU   *                                                          02690000                
       ST    CSPARR+3,ARR              SAVE RETURN ADDRESS              02700000                
       ST    CSPX1+3,PL                SAVE XR1                         02710000                
       ST    CSPX2+3,XR2               SAVE XR2                         02720000                
       CCP   MASK,PMR                  MASK ALL INTERRUPTS              02730000                
       TBN   PL$OPM(,PL),OPPNW         PUT-NO-WAIT OP ?                 02740000                
       JF    CSPNNW                    NO - JUMP                        02750000                
* HAVE PUT-NO-WAIT -JUST FREE - NO POST                                 02760000                
       B     CSFREE                    GO FREE RECA AND PL AREA         02770000                
       B     CSPEXT                    GO RETURN TO CALLER              02780000                
       SPACE 1                                                          02790000                
* CHECK FOR SYSTEM INVITE OP                                            02800000                
CSPNNW EQU   *                         *                                02810000                
       MVC   PLRTC(2,PL),PL$RTC(,PL)   PUT RETURN CODE IN EXTERNAL      02820000                
*                                      SO USER CAN GET AT IT            02830000                
       TBN   PL$OPM(,PL),OPINV         INVITE INPUT AND                 02840000                
       TBN   PLOPM(,PL),OP$SYS         SYSTEM OP ?                      02850000                
       JF    CSPCKT                    NO - SEE IF TASK IS IN TERMINATE 02860000                
       AIF   (&NPBY).BP600             BUSY PRINTER SUPPORT?            02860400                
*                                      --------START----------------@07 02860800                
       SPACE 1                                                          02861200                
* CHECK THE TUB FOR THIS SYSTEM INVITE TO SEE IF IT IS A                02861600                
*   PRINTER THAT WAS BUSY.                                              02862000                
*   IF SO - POST THE USER - PLECB - SO THE NEXT PRINT OPERATION         02862400                
*   CAN BE STARTED                                                      02862800                
       SPACE 1                                                          02863200                
       L     PLTUBA(,PL),TUB           FIND THE TUB.                    02863600                
       TBN   TUBAT4(,TUB),TUBWAT       THIS TUB WAITING - BUSY PRINTER? 02864000                
       SBF   TUBAT4(,TUB),TUBWAT       SET OFF WAITING BEFORE POST.     02864400                
       JF    CSNBYP                    NO - CONTINUE HANDLING SYS/INV.  02864800                
       SBF   TUBAT2(,TUB),TUBIIS       SET OFF INPUT SCHEDULED.         02865200                
       L     CSSPL,PL                  XR1 --> PL                       02865600                
       L     CSSCLB,CLB                XR2 --> CLB                      02866000                
       B     CSFREE                    FREE THE INPUT BUFFER            02866400                
       LA    PLECB(,PL),XR1            XR1 --> ECB                      02866800                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 02867200                
       SVC   0                         SPVR CALL                        02867600                
       DC    AL1(PSTRIB)               RIB TO POST                      02868000                
       B     CSPEXT                    GO EXIT                          02868400                
CSNBYP EQU   *                         * LOCAL                          02868800                
*                                      ---------END-----------------@07 02869200                
.BP600 ANOP                            *                                02869600                
       SPACE 1                                                          02870000                
* SYSTEM INVITE INPUT - IF TASK IS IN RESIDENT TERMINATION THEN PUT     02880000                
*   PL ON OWNER'S TCB. IF NOT IN RESIDENT TERMINATION-PUT PL ON         02890000                
*   COMMAND PROCESSOR'S TCB.                                            02900000                
       SPACE 1                                                          02910000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      02920000                
       TBN   TUBAT4(,TUB),TUBTRM       TASK IN RESIDENT TERMINATION     02930000                
       L     @CPTCB,XR1                XR1 --> CP'S TCB                 02940000                
       JF    CSPCPQ                    NO - GO PUT TUB ON CP'S TCB      02950000                
       L     TUBTCB(,TUB),XR1          XR1 --> OWNER'S TCB              02960000                
* ADD TUB TO TCBINQ OF THE PROPER TCB                                   02970000                
CSPCPQ EQU   *                         *                                02980000                
       MVI   TUBINQ-1(,TUB),NOBIT      ZIP THIS TUB'S CHAIN POINTER     02990000                
       LA    TCBINQ-TUBINQ(,XR1),XR1   XR1 --> FIRST 'TUB'              03000000                
CSPCPL EQU   *                         *                                03010000                
       CLI   TUBINQ-1(,XR1),NOBIT      END OF QUEUE?                    03020000                
       JE    CSPSTT                    YES - JUMP TO ADD THIS ONE       03030000                
       L     TUBINQ(,XR1),XR1          XR1 --> NEXT TUB IN THE QUEUE    03040000                
       B     CSPCPL                    GO LOOK AGAIN                    03050000                
CSPSTT EQU   *                         *                                03060000                
       ST    TUBINQ(,XR1),TUB          PUT THIS TUB IN THE QUEUE        03070000                
       L     CSPX1+3,PL                XR1 --> PL                       03080000                
       ST    TUBPL@(,TUB),PL           PUT PL ADDR IN TUB               03090000                
       MVC   PLRTC(2,PL),PL$RTC(,PL)   PUT INTERNAL R.C. INTO EXTERNAL  03100000                
       SBN   TUBAT2(,TUB),TUBIIS+TUBIIQ SET INPUT AVAILABLE IND.        03110000                
       TBN   TUBAT4(,TUB),TUBTRM       TASK IN RESIDENT TERMINATION?    03120000                
       JT    CSPNSP                    YES - JUMP -NO POST INVOLVED     03130000                
       LA    $CPCM,XR1                 XR1 --> CP'S ECB                 03140000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 03150000                
* POST THE COMMAND PROCESSOR                                            03160000                
       SVC   0                         SPVR CALL                        03170000                
       DC    AL1(PSTRIB)               RIB FOR A POST                   03180000                
CSPNSP EQU   *                         *                                03190000                
       B     CSPEXT                    GO RETURN TO CALLER              03200000                
       SPACE 2                                                          03210000                
* CHECK FOR TASK IN TERMINATION (NON-RESIDENT) IF IT IS - JUST FREE     03220000                
*  BUFFERS AND RETURN TO CALLER                                         03230000                
       SPACE 1                                                          03240000                
CSPCKT EQU   *                         *                                03250000                
       AIF   (&CSIO EQ '1').PT070                                       03250300                
       AGO   .PT080                                                     03250330                
.PT070 ANOP                                                             03250360                
       AIF   (&NCPOR).PT090                                             03250390                
.PT080 ANOP                                                             03250420                
       SPACE 1                                                          03250450                
******************************************************************* @14 03250480                
*******                                                                 03250510                
* ALSO IF A GET.                                                        03251500                
* IF A PORT DEVICE,USER OP,NOT A STOP INVITE, AND COMMAND DATA, HAVE    03251800                
* THE DATA QUEUED IN TPBUFF, INDICATE TO $CC4II TO GIVE A RETURN CODE   03252100                
* TO THE USER, AND GIVE THE DATA TO THE COMMAND PROCESSOR.              03252400                
* ALSO FREE THE PARM LIST,IF A NO-WAIT OP.                              03252700                
       L     CSSCLB,CLB                XR2--> CLB                       03253000                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?        03253300                
       TBN   CSSWIT,CSSCMD             COMMAND DATA TO USER             03253600                
       JF    CSPUDT                    IF NOT ALL, JUMP                 03254200                
       SBF   CSSWIT,CSSCMD             CLEAR INDICATOR                  03254300                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       03254500                
       SBN   TUBAT3(,TUB),TUBCNC       INDICATE COMMAND DATA TO CCP     03254800                
       MVI   PLRECA-1(,PL),NOBIT       CLEAR RECORD PTR SO NO DATA FREE 03255100                
       B     CSFREE                    GO FREE PARM LIST IF NO-WAIT     03255400                
       TBN   PL$OPM(,PL),OPINV         INVITE INPUT OP                  03255700                
       JT    CSPINV                    YES, DO INVITE INPUT PROCESSING  03256000                
       J     CSPDMO                    NO, POST PARM LIST AND EXIT      03256300                
CSPUDT EQU   *                         *                                03256600                
*******                                                                 03256900                
******************************************************************* @14 03257000                
       SPACE 1                                                          03257200                
.PT090 ANOP                                                             03257800                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      03260000                
       L     TUBTCB(,TUB),XR2          XR2 --> TCB OF OWNER             03270000                
       TBN   TCBFG1(,XR2),TCBUSR+TCBNCL SYSTEM TASK AND                 03280000                
       TBF   PLOPM(,PL),OP$SYS         USER OP                          03290000                
       JT    CSPJSF                    YES - TASK IS IN TERM -JUST FREE 03300000                
       TBN   TCBFG2(,XR2),TCBTRC       TERM INDICATOR ON IN THIS TASK?  03310000                
       AIF   (&NDME).D0200             NO DME SUPPORT.                  03320000                
       JF    CSPCMI                    NO - CHECK FOR TASK IN DME       03330000                
       AGO   .D0300                    *                                03340000                
.D0200 ANOP                            *                                03350000                
       JF    CSPUIN                    NO - CHECK FOR USER INVITE.      03360000                
.D0300 ANOP                            *                                03370000                
CSPJSF EQU   *                         *                                03380000                
       B     CSFREE                    GO FREE BUFFERS AND PL AREA      03390000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      03400000                
       SBF   TUBAT2(,TUB),TUBIIS+TUBIIQ SET OFF INPUT INDICATORS        03410000                
       J     CSPEXT                    GO EXIT TO CALLER                03420000                
       AIF   (&NDME).D0350             NO DME SUPPORT.                  03430000                
* CHECK FOR TASK IN DATA MODE ESCAPE                                    03440000                
CSPCMI L     PLTUBA(,PL),TUB           XR2 --> TUB                      03450000                
       TBN   TUBAT2(,TUB),TUBCMD+TUBDTA IN DATA MODE ESCAPE ?           03460000                
       JF    CSPUIN                    NO - CHECK FOR USER INVITE       03470000                
* IN DATA MODE ESCAPE - POST THE COMMAND PROCESSOR IF AN OUTPUT WAIT-   03480000                
*  TYPE OP OR IF AN INPUT OP                                            03490000                
       SPACE 1                                                          03500000                
       TBN   PL$OPM(,PL),OPGET         INPUT OP?                        03510000                
       JF    CSPDMO                    NO-JUMP                          03520000                
       L     @CPTCB,XR1                XR1 --> CP'S TCB                 03530000                
       B     CSPCPQ                    GO PUT ON CP'S TCB AND POST      03540000                
.D0350 ANOP                            *                                03542000                
       AIF   (&CSIO EQ '0').YP045      SIOC SUPPORT YES                 03544000                
.*******************************************************************@20 03544300                
       AIF   (&NCPOR).PT095            PORTLINE SUPPORT ?               03544600                
       AGO   .YP045                    YES - ADD THIS CODE              03544900                
.PT095 ANOP                            NO CONTINUE                      03545200                
.*******************************************************************@20 03545500                
       AIF   (&NDME).D0400             NO DME SUPPORT.                  03546000                
.YP045 ANOP                                                             03548000                
CSPDMO EQU   *                                                          03550000                
* MUST BE A SIOC CHANNEL OPERATION OR                                   03555000                
* OP MUST BE A WAIT AT THIS POINT AND BE IN DATA MODE ESCAPE-POST PLECB 03560000                
* DO NOT FREEMAIN ANY AREAS                                             03570000                
       LA    PLECB(,PL),XR1            XR1 --> ECB TO POST              03580000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 03590000                
       SVC   0                         SPVR CALL                        03600000                
       DC    AL1(PSTRIB)               RIB FOR POST                     03610000                
       J     CSPEXT                    GO EXIT                          03620000                
       SPACE 1                                                          03630000                
.D0400 ANOP                            *                                03640000                
* CHECK FOR A USER INVITE INPUT                                         03650000                
CSPUIN EQU   *                         *                                03660000                
       TBN   PL$OPM(,PL),OPINV         INVITE INPUT AND                 03670000                
       TBF   PLOPM(,PL),OP$SYS         NOT-SYSTEM (USER) OP ?           03680000                
       TBF   PLOPM(,PL),OPSTOP         NOT A STOP INVITE PARM LIST ?    03690000                
       JF    CSPCGT                    NO - CHECK FOR A USER GET OP     03700000                
* HAVE A USER INVITE INPUT - QUEUE IT AND POST OP COMPLETE              03710000                
CSPINV EQU   *                         *                                03715000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      03720000                
       ST    TUBPL@(,TUB),PL           PUT PL ADDRESS IN THE TUB        03730000                
       SBN   TUBAT2(,TUB),TUBIIS+TUBIIQ SET INPUT INDICATORS            03740000                
       L     TUBTCB(,TUB),XR1          XR1 --> OWNERS TCB               03750000                
       LA    TCBINQ-TUBINQ(,XR1),XR1   XR1 --> FIRST 'TUB'              03760000                
CSPUQL EQU   *                         *                                03770000                
       CLI   TUBINQ-1(,XR1),NOBIT      END OF CHAIN?                    03780000                
       JE    CSPUQT                    YES - ADD THIS TUB               03790000                
       L     TUBINQ(,XR1),XR1          XR1 --> NEXT TUB                 03800000                
       B     CSPUQL                    GO LOOK AGAIN                    03810000                
CSPUQT EQU   *                         *                                03820000                
       ST    TUBINQ(,XR1),TUB          PUT TUB IN THE CHAIN             03830000                
       MVI   TUBINQ-1(,TUB),NOBIT      ZIP THIS TUB'S POINTER           03840000                
* DO NOT POST THE USER UNLESS IT IS AT  AN ACCEPT INPUT WAIT            03850000                
       L     TUBTCB(,TUB),XR1          XR1 -->TCB                       03860000                
       TBN   TCBECB(,XR1),TCBACW       AT ACCEPT INPUT WAIT?            03870000                
       JF    CSPEXT                    NO - GO RETURN TO CALLER         03880000                
       LA    TCBECB(,XR1),XR1          XR1 --> ECB TO POST              03890000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 03900000                
       SVC   0                         SPVR CALL                        03910000                
       DC    AL1(PSTRIB)               POST RIB                         03920000                
       J     CSPEXT                    GO RETURN TO CALLER              03930000                
* CHECK FOR A USER GET OP                                               03940000                
CSPCGT EQU   *                                                          03950000                
       TBF   PLOPM(,PL),OP$SYS         NOT SYSTEM (USER) OP             03960000                
       TBN   PL$OPM(,PL),OPGET         AND A GET (I.E. USER GET) ?      03970000                
       JF    CSPPTW                    NO - CHECK FOR PUT-WAIT          03980000                
* HAVE A USER GET - IF NON-DFF,MOVE THE TEXT TO USER'S BUFFER AND POST  03990000                
*  PLECB. IF DFF - PUT IT ON DFF'S QUEUE AND POST DFF                   04000000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      04010000                
       SBF   TUBAT2(,TUB),TUBIIS+TUBIIQ SET OFF INPUT INDICATORS        04020000                
       AIF   (&NDF).F0700              NO DFF SUPPORT.                  04030000                
       TBN   TUBTA1(,TUB),TASDFF       DFF TERMINAL ?                   04040000                
       JF    CSPNDF                    NO - JUMP                        04050000                
* PUT TERMINAL ON DFF'S QUEUE AND POST DFF IF RETURN CODE IS LESS THAN  04060000                
*  THREE                                                                04070000                
       CLI   PL$RTC(,PL),RCXEDT        RETURN CODE > 3 ?                04080000                
       JH    CSPGT3                    YES - POST USER                  04090000                
       B     CSDFFQ                    GO PUT IT ON DFF'S QUEUE AND PST 04100000                
       J     CSPEXT                    GO RETURN TO CALLER              04110000                
CSPGT3 EQU   *                         *                                04120000                
       B     CSFREE                    FREE INPUT BUFFER                04130000                
       LA    PLECB(,PL),XR1            XR1 --> ECB                      04140000                
       CCP   UNMASK,PMR                                                 04150000                
       SVC   0                         SPVR CALL                        04160000                
       DC    AL1(PSTRIB)               RIB TO POST                      04170000                
       J     CSPEXT                    GO EXIT                          04180000                
* NOT A DFF TERMINAL - MOVE THE TEXT AND POST THE USER                  04190000                
CSPNDF EQU   *                         *                                04200000                
.F0700 ANOP                            *                                04210000                
       SPACE 1                                                          04220000                
* SETUP THE MOVE PL                                                     04230000                
       LA    CS#MVL,XR2                XR2 --> MOVE PARM LIST           04240000                
       MVC   MVLFRA(2,XR2),PLRECA(,PL) FROM ADDR. IS TPBUFF             04250000                
       MVI   MVLTYP(,XR2),SWAPTO       TYPE IS'TO USER AREA'            04260000                
       MVC   MVLFRL(2,XR2),PLEFFL(,PL) FROM LENGTH IS PLEFFL            04270000                
       MVC   MVLTOL(2,XR2),PLINL(,PL)  TO LENGTH IS INL                 04280000                
       L     PLTUBA(,PL),XR1           XR1 --> TUB                      04290000                
       MVC   MVLTCB(2,XR2),TUBTCB(,XR1) TCB ADDRESS OF OWNER            04300000                
       L     TUBTCB(,XR1),XR1          XR1 --> TCB                      04310000                
       MVC   MVLTOA(2,XR2),TCBWK(,XR1) TO ADDRESS IS USER'S RECORD AREA 04320000                
       B     CC4MX                     GO MOVE THE TEXT                 04330000                
       L     CSSPL,PL                  XR1 --> PL                       04340000                
       L     CSSCLB,CLB                XR2 --> CLB                      04350000                
       B     CSFREE                    FREE THE INPUT BUFFER            04360000                
       LA    PLECB(,PL),XR1            XR1 --> ECB                      04370000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 04380000                
       SVC   0                         SPVR CALL                        04390000                
       DC    AL1(PSTRIB)               RIB TO POST                      04400000                
       J     CSPEXT                    GO EXIT                          04410000                
* CHECK FOR A PUT WAIT OP                                               04420000                
CSPPTW EQU   *                         *                                04430000                
       TBN   PL$OPC(,PL),OPPUT         PUT -                            04440000                
       TBF   PL$OPC(,PL),OPNOW         WAIT OP ?                        04450000                
       JF    CSPEXT                    NO - EXIT                        04460000                
* HAVE A PUT - WAIT OP -FREE THE BUFFER AND POST                        04470000                
       B     CSFREE                    GO FREE                          04480000                
       LA    PLECB(,PL),XR1            XR1 --> ECB                      04490000                
       CCP   UNMASK,PMR                                                 04500000                
       SVC   0                         SPVR CALL                        04510000                
       DC    AL1(PSTRIB)               POST RIB                         04520000                
CSPEXT EQU   *                                                          04530000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 04535000                
CSPX1  LA    #,XR1                     RESTORE XR1                      04540000                
CSPX2  LA    #,XR2                     RESTORE XR2                      04550000                
CSPARR B     #                         RETURN                           04560000                
       AIF   (&NDF).F0800              NO DFF SUPPORT.                  04570000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S D F F Q)'     04580000                
*********************************************************************** 04590000                
*                                                                     * 04600000                
* NAME  CSDFFQ                                                        * 04610000                
*       THIS SUBROUTINE PUTS A PL ON DFF'S QUEUE AND POSTS DFF        * 04620000                
*       XR1 --> PL  TO QUEUE                                          * 04630000                
*       XR2 --> NO MATTER                                             * 04640000                
*                                                                     * 04650000                
*********************************************************************** 04660000                
       SPACE 3                                                          04670000                
CSDFFQ EQU   *                         *                                04680000                
       ST    CSDFRT+3,ARR              SAVE RETURN ADDRESS              04690000                
       ST    CSDFX1+3,PL               SAVE THE PL ADDRESS              04700000                
       ST    CSDFX2+3,XR2              SAVE XR2                         04710000                
       CCP   MASK,PMR                  MASK INTERRUPTS                  04720000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      04730000                
       L     TUBTCB(,TUB),XR2          XR2 --> TCB OF OWNER             04740000                
       TBN   TCBFG2(,XR2),TCBTRC       TASK IN TERMINATION              04750000                
       JF    CSDFNT                    NO - JUMP                        04760000                
       SPACE 1                                                          04770000                
* TASK IS IN TERMINATION - JUST FREEMAIN THE AREAS - DON'T POST DFF     04780000                
       B     CSFREE                    GO DO FREEMAINS                  04790000                
       J     CSDFX2                    GO RETURN TO CALLER              04800000                
       SPACE 1                                                          04810000                
CSDFNT EQU   *                         TASK IS NOT IN TERMINATION       04820000                
       MVI   PLCHN-1(,PL),NOBIT        ZIP THIS CHAIN POINTER           04830000                
       LA    @DFFQ-1,XR2               XR2 --> DFF'S QUEUE              04840000                
CSDFEN EQU   *                         *                                04850000                
       CLI   PLCHN-1(,XR2),NOBIT       END OF DFF'S CHAIN ?             04860000                
       JE    CSDFAD                    YES - GO ADD THIS ONE            04870000                
       L     PLCHN(,XR2),XR2           XR2 --> NEXT PL ON DFF'S QUEUE   04880000                
       B     CSDFEN                    GO LOOK AGAIN                    04890000                
CSDFAD EQU   *                         *                                04900000                
       ST    PLCHN(,XR2),PL            PUT THIS PL ON THE QUEUE         04910000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 04920000                
       SPACE 1                                                          04930000                
* POST DFF                                                              04940000                
       LA    $DFECB,XR1                XR1 --> DFF'S ECB                04950000                
       SVC   0                         SUPERVISOR CALL                  04960000                
       DC    AL1(PSTRIB)               RIB TO POST                      04970000                
       SPACE 1                                                          04980000                
CSDFX2 LA    #,XR2                     RESTORE XR2                      04990000                
CSDFX1 LA    #,PL                      RESTORE TH PL POINTER            05000000                
CSDFRT B     #                         RETURN TO CALLER                 05010000                
.F0800 ANOP                            *                                05020000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S W C R Q)'     05030000                
*********************************************************************** 05040000                
*                                                                     * 05050000                
* NAME  CSWCRQ                                                        * 05060000                
*                                                                     * 05070000                
*       THIS SUBROUTINE WILL MARK A PL AS WAITING FOR TPBUFF AND      * 05080000                
*       PUT IT ON CLBWCQ                                              * 05090000                
*                                                                     * 05100000                
*   XR1 --> PL TO MARK AND QUEUE                                      * 05110000                
*   XR2 --> NO MATTER                                                 * 05120000                
*********************************************************************** 05130000                
       SPACE 1                                                          05140000                
CSWCRQ EQU   *                         *                                05150000                
       ST    CSWCRT+3,ARR              SAVE THE RETURN ADDRESS          05160000                
       ST    CSWCX2+3,XR2              SAVE XR2                         05170000                
       SBN   PL$OPM(,PL),OPGETM        MARK PL AS WAITING FOR TPBUFF    05180000                
       SLC   PLCHN(2,PL),PLCHN(,PL)    ZIP THE CHAIN FIELD              05190000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      05200000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                      05210000                
       LA    CLBWCQ-1(,CLB),XR2        XR2 --> BEGINNING OF QUEUE       05220000                
CSWCAG EQU   *                         *                                05230000                
       CLI   PLCHN-1(,XR2),NOBIT       END OF CHAIN ?                   05240000                
       JE    CSWCAD                    YES - GO ADD THIS ONE            05250000                
       L     PLCHN(,XR2),XR2           XR2 --> NEXT PL ON QUEUE         05260000                
       B     CSWCAG                    GO LOOK FOR THE END              05270000                
       SPACE 1                                                          05280000                
*  ADD THIS PL TO THE QUEUE OF THOSE WAITING FOR TPBUFF                 05290000                
       SPACE 1                                                          05300000                
CSWCAD EQU   *                         *                                05310000                
       ST    PLCHN(,XR2),PL            ADD IT TO THE QUEUE              05320000                
       SPACE 1                                                          05330000                
CSWCX2 LA    #,XR2                     RESTORE XR2                      05340000                
CSWCRT B     #                         RETURN TO CALLER                 05350000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S G M R Q)'     05360000                
*********************************************************************** 05370000                
*                                                                     * 05380000                
*  NAME: CSGMRQ                                                       * 05390000                
*  FUNCTION: INTERFACE WITH $CC4MS ( THE GETMAIN ROUTINE )            * 05400000                
*                                                                     * 05410000                
*  INPUT: XR1 AND XR2 --> NO MATTER                                   * 05420000                
*                                                                     * 05430000                
*  OUTPUT: XR1--> RESTORED                                            * 05440000                
*          XR2--> GETMAIN LIST                                        * 05450000                
*********************************************************************** 05460000                
       SPACE 1                                                          05470000                
CSGMRQ EQU   *                         *                                05480000                
       ST    CSGMRT+3,ARR              SAVE THE RETURN ADDRESS          05490000                
       ST    CSGMX1+3,XR1              SAVE XR1                         05500000                
       LA    GMLIST,XR2                XR2 --> GM PARM LIST             05510000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        05520000                
       CCP   MASK,PMR                  MASK INTERRUPTS                  05530000                
       B     CC4GM                     GO DO THE GETMAIN                05540000                
       JOL   CSGMX1                    SKIP MOVE IF GET FAILED          05545000                
       L     GMADDR(,XR2),XR1          XR1--> GM'ED AREA                05550000                
       MVC   GMSIZE(4,XR1),GMSIZE(,XR2) PUT ADDR. AND LENGTH IN TPBUF   05560000                
CSGMX1 LA    #,XR1                     RESTORE XR1                      05570000                
CSGMRT B     #                         RETURN TO CALLER                 05580000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S F R E E)'     05590000                
*********************************************************************** 05600000                
*                                                                     * 05610000                
*  NAME: CSFREE                                                       * 05620000                
*                                                                     * 05630000                
*  FUNCTION:  FREEMAIN THE RECORD AREA (PLRECA) AND THE PL.           * 05640000                
*             PLRECA WILL BE FREEMAINED IF IT IS NON-ZERO.            * 05650000                
*             THE PL WILL BE FREEMAINED IF IT IS A NO-WAIT PL AND     * 05660000                
*             NOT A SYSTEM INVITE.                                    * 05670000                
*                                                                     * 05680000                
*  INPUT: XR1--> PL                                                   * 05690000                
*         XR2--> NO MATTER                                            * 05700000                
*                                                                     * 05710000                
*  OUTPUT: XR1--> PL                                                  * 05720000                
*          XR2--> RESTORED                                            * 05730000                
*                                                                     * 05740000                
*********************************************************************** 05750000                
       SPACE 2                                                          05760000                
CSFREE EQU   *                         *                                05770000                
       ST    CSFRET+3,ARR              SAVE THE RETURN ADDRESS          05780000                
       ST    CSFX2+3,XR2               SAVE XR2                         05790000                
* IF THIS IS A SYSTEM WAIT-TYPE OP - DON'T FREEMAIN ANYTHING            05800000                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM -                         05810000                
       TBF   PL$OPM(,PL),OPNOW         WAIT-TYPE OP?                    05820000                
       JT    CSFEXT                    YES - RETURN TO CALLER           05830000                
       SPACE 1                                                          05840000                
* IF RECORD AREA IS NON-ZERO - FREEMAIN IT                              05850000                
       CCP   MASK,PMR                  DON'T ALLOW INTERRUPTS           05860000                
       CLI   PLRECA-1(,PL),NOBIT       RECORD AREA ALREADY FREE'ED?     05870000                
       JE    CSFNRF                    YES - SKIP FREE OF RECORD AREA   05880000                
       SPACE 1                                                          05890000                
* FREE THE RECORD AREA                                                  05900000                
       AIF   (&CSIO EQ '1').NP050                                       05900700                
       SPACE 1                                                          05901400                
******************************************************************* @14 05901700                
*******                                                                 05902100                
* IF PORT DEVICE AND A PUT, DO NOT FREE USER'S BUFFER AREA              05903500                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       05904200                
       TBN   TUBAT4(,TUB),TUBPCB       PORT--------------------------->|05904900                
       TBN   PL$OPM(,PL),OPPUT         AND A PUT---------------------->|05905600                
       JT    CSFSKF                    YES, DON'T FREE USER'S BUFFER<--|05906300                
*******                                                                 05907700                
******************************************************************* @14 05908000                
.NP050 ANOP                                                             05909100                
       SPACE 1                                                          05909140                
       AIF   (&NDF).NP055                                               05909180                
*      IF DFF USER PUT AND DFF BUFFER IS SUPPORTED, NO NOT FREEMAIN @13 05909220                
       SPACE                                                            05909260                
       TBF   PLOPM(,PL),OP$SYS         Q-USER.....                  @13 05909300                
       TBN   PL$OPC(,PL),OPPUT         .....PUT?.....               @13 05909340                
       JF    CSFRDF                    NO-BRANCH                    @13 05909380                
       SPACE                                                            05909420                
       L     PLTUBA(,PL),TUB           XR2-> TUB                    @13 05909460                
       TBN   TUBTA1(,TUB),TASDFF       Q-DFF REQUEST?               @13 05909500                
       JF    CSFRDF                    NO-BRANCH                    @13 05909540                
       SPACE                                                            05909580                
       L     TUBDTF(,TUB),CLB          XR2-> BSC DTF                @13 05909620                
       TBN   CLBATA(,CLB),CLBDFF       Q-DFF SUPPORTED?             @13 05909660                
       JF    CSFRDF                    NO-BRANCH                    @13 05909700                
       SPACE                                                            05909740                
       MVI   PLRECA-1(,PL),NOBIT       PREVENT FREEMAIN             @13 05909780                
       J     CSFEXT                    RETURN TO CALLER             @13 05909820                
       SPACE                                                            05909860                
CSFRDF EQU   *                         .                            @13 05909900                
.NP055 ANOP                                                             05909940                
       L     PLRECA(,PL),XR2           XR2--> RECORD AREA               05910000                
       B     CC4FM                     GO TO FREEMAIN ROUTINE           05920000                
* IF THE INPUT BUFFER FOR THIS LINE IS THE SAME AS PLRECA - THEN        05930000                
*  ZIP IT ALSO TO PREVENT A DUPLICATE FREEMAIN UPON RESCHEDULE          05940000                
       SPACE 1                                                          05950000                
CSFSKF EQU   *                         *                                05955000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       05960000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       05970000                
       CLC   PLRECA(2,PL),CLBIBA(,CLB) SAME ADDRESS?                    05980000                
       JNE   CSFJPL                    NO - JUST ZIP PLRECA             05990000                
       MVI   CLBIBA-1(,CLB),NOBIT      ZIP THE LINE RECORD ADDRESS      06000000                
CSFJPL EQU   *                         *                                06010000                
       MVI   PLRECA-1(,PL),NOBIT       ZIP THE PL RECORD AREA ADDR.     06020000                
       SPACE 1                                                          06030000                
* IF THIS IS A WAIT TYPE OP THEN GO EXIT                                06040000                
CSFNRF EQU   *                         *                                06050000                
       TBF   PL$OPM(,PL),OPNOW         WAIT TYPE OP ?                   06060000                
       JT    CSFEXT                    YES - GO RETURN TO CALLER        06070000                
* ZIP TUBPL@ FOR INVITE INPUT OP'S                                      06080000                
       TBN   PLOPC(,PL),OPINV          INVITE INPUT ?                   06090000                
       JF    CSFRPL                    NO - GO FREE THE PL              06100000                
* THE INVITE INPUT PL IS NO LONGER VALID - ZIP IT OUT                   06110000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       06120000                
       MVI   TUBPL@-1(,TUB),NOBIT      ZIP THE PL POINTER               06130000                
* DON'T FREEMAIN SYSTEM INVITES - THE PL IS IN THE TUB                  06140000                
       SPACE 1                                                          06150000                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM OP ?                      06160000                
       JT    CSFEXT                    YES - GO RETURN TO CALLER        06170000                
       SPACE 1                                                          06180000                
* FREEMAIN THE PL                                                       06190000                
       SPACE 1                                                          06200000                
CSFRPL EQU   *                         *                                06210000                
       AIF   (&CSIO EQ '1').PT100                                       06210800                
       AGO   .PT110                                                     06210900                
.PT100 ANOP                                                             06211000                
       AIF   (&NCPOR).PT120                                             06211100                
.PT110 ANOP                                                             06211200                
       SPACE 1                                                          06211300                
******************************************************************* @14 06211400                
*******                                                                 06211500                
* IF PORT DEVICE DUMMY PARM LIST, DO NOT FREE THE PARM LIST             06214000                
       TBN   PLOPC(,PL),OPDMY          PORT DEVICE DUMMY PARM LIST      06214800                
       JT    CSFEXT                    YES, DO NOT FREE THE PARM LIST   06215600                
*******                                                                 06216400                
******************************************************************* @14 06216800                
       SPACE 1                                                          06217200                
.PT120 ANOP                                                             06218800                
       LA    0(,PL),XR2                XR2--> PL                        06220000                
       B     CC4FM                     GO FREEMAIN THE PL               06230000                
       SPACE 1                                                          06240000                
* SET UP REGISTERS FOR RETURN TO CALLER                                 06250000                
CSFEXT EQU   *                         *                                06260000                
CSFX2  LA    #,XR2                     RESTORE XR2                      06270000                
* XR1 ALREADY POINTS TO THE PL                                          06280000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 06290000                
CSFRET B     #                         RETURN TO CALLER                 06300000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S D E Q)'       06310000                
*********************************************************************** 06320000                
*                                                                     * 06330000                
*  NAME: CSDEQ                                                        * 06340000                
*                                                                     * 06350000                
*  FUNCTION: REMOCE A PL FROM CLBPLQ                                  * 06360000                
*                                                                     * 06370000                
*  INPUT: XR1--> PL TO REMOVE                                         * 06380000                
*         XR2--> NO MATTER                                            * 06390000                
*                                                                     * 06400000                
*  OUTPUT: XR1--> REMOVED PL                                          * 06410000                
*          XR2--> RESTORED                                            * 06420000                
*                                                                     * 06430000                
*********************************************************************** 06440000                
       SPACE 1                                                          06450000                
CSDEQ  EQU   *                         *                                06460000                
       ST    CSDQAR+3,ARR              SAVE THE RETURN ADDRESS          06470000                
       ST    CSDQX2+3,XR2              SAVE REG 2                       06480000                
       ST    CSDQPL,PL                 SAVE THE PL ADDRESS TO BE DEQED  06490000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       06500000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       06510000                
       LA    CLBPLQ-1(,CLB),XR2        XR2--> 1ST PL ON THE QUEUE       06520000                
CSDQCP EQU   *                         *                                06530000                
       CLC   PLCHN(2,XR2),CSDQPL       THIS POINT TO ONE TO DEQUE?      06540000                
       JE    CSDQOK                    YES - DEQUEUE THE PL             06550000                
       L     PLCHN(,XR2),XR2           XR2--> NEXT PL                   06560000                
       B     CSDQCP                    GO LOOK AGAIN                    06570000                
       SPACE 1                                                          06580000                
* DEQUEUE THE PL FROM CLBPLQ                                            06590000                
CSDQOK EQU   *                         *                                06600000                
       MVC   PLCHN(2,XR2),PLCHN(,PL)   DEQUEUE THIS PL                  06610000                
* RETURN TO CALLER                                                      06620000                
CSDQX2 LA    #,XR2                     RESTORE XR2                      06630000                
CSDQAR B     #                         RETURN TO CALLER                 06640000                
CSDQPL DC    AL2(0)                    SAVE AREA FOR PL @ TO DEQUEUE    06650000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S T A S V)'     06660000                
*********************************************************************** 06670000                
*                                                                     * 06680000                
*  NAME: CSTASV                                                       * 06690000                
*                                                                     * 06700000                
*  FUNCTION: SAVE THIS TUB'S ATTRIBUTES IN THE CLB                    * 06710000                
*                                                                     * 06720000                
*                                                                     * 06730000                
*                                                                     * 06740000                
*                               CLBTBS                                * 06750000                
*                                  |                                  * 06760000                
*      | -5   -4   -3   -2   -1    | |                                * 06770000                
*      |____|____|____|____|____|____|                                * 06780000                
*                                                                     * 06790000                
*      -5 = TUBTA1                                                    * 06800000                
*      -4 = TUBTA2                                                    * 06810000                
*   -3 -2 = TUBRCL  ------------------|                               * 06820000                
*   -1 -0 = CALCULATED BLOCK LENGTH --|--> PLUGGED BY CSBTAS          * 06830000                
*                                                                     * 06840000                
*   INPUT: XR1--> PL                                                  * 06850000                
*          XR2--> NO MATTER                                           * 06860000                
*                                                                     * 06870000                
*********************************************************************** 06880000                
       SPACE 1                                                          06890000                
CSTASV EQU   *                         *                                06900000                
       ST    CSTS20+3,ARR              SAVE THE RETURN ADDRESS          06910000                
       ST    CSTS18+3,XR2              SAVE XR2                         06920000                
       ST    CSTSX1+3,PL               SAVE THE PL ADDRESS              06930000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       06940000                
       L     TUBLCB(,TUB),XR1          XR1--> CLB                       06950000                
       MVC   CLBTBS-4(2,XR1),TUBTA2(,TUB) SAVE THIS TUB'S ATTRIBUTES    06960000                
       L     CSTSX1+3,XR2              XR2--> PL                        06970000                
       SBF   PL$OPC(,XR2),OPSYS        SET OFF SYSTEM IND               06980000                
       TBF   PLOPM(,XR2),OP$SYS        SYSTEM OP OR -                   06990000                
.*******************************************************************@18 06993000                
       AIF   (&NDME).D500              IF NO DATA MODE ESCAPE ?         06996000                
       TBF   PL$OPC(,XR2),OPRFSH+OPLSNS CLEAR MSG OR POLL FOR STATUS ?  07000000                
       AGO   .D600                     CONTINUE                         07001000                
.D500  ANOP                            IF DATA MODE ESCAPE              07002000                
       TBF   PL$OPC(,XR2),OPLSNS       POLL FOR STATUS                  07003000                
.D600  ANOP                                                             07004000                
.*******************************************************************@18 07005000                
       JT    CSTS06                    NO - JUMP                        07010000                
       MVI   CLBTBS-4(,XR1),TASMSG     MAKE IT MSG MODE                 07020000                
       SBN   PL$OPC(,XR2),OPSYS        MAKE IT A SYSTEM OP              07030000                
CSTS06 EQU   *                         *                                07040000                
CSTSX1 LA    #,XR1                     XR1--> PL                        07050000                
CSTS18 LA    #,XR2                     RESTORE XR2                      07060000                
CSTS20 B     #                         RETURN TO CALLER                 07070000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S B T A S)'     07080000                
*********************************************************************** 07090000                
*                                                                     * 07100000                
*  NAME: CSBTAS                                                       * 07110000                
*                                                                     * 07120000                
*  FUNCTION: SAVE THE TUB'S ATTRIBUTES AND RECORD LENGTH IN THE CLB   * 07130000                
*            ( SEE CSTASV FOR LAYOUT OF SAVE AREA)                    * 07140000                
*                                                                     * 07150000                
*  INPUT: XR1--> PL                                                   * 07160000                
*         XR2--> NO MATTER                                            * 07170000                
*                                                                     * 07180000                
*  OUTPUT: XR1--> PL                                                  * 07190000                
*          XR2--> RESTORED                                            * 07200000                
*                                                                     * 07210000                
*********************************************************************** 07220000                
       SPACE 1                                                          07230000                
CSBTAS EQU   *                         *                                07240000                
       ST    CSBT40+3,ARR              SAVE THE RETURN ADDRESS          07250000                
       ST    CSBT38+3,XR2              SAVE XR2                         07260000                
       SPACE 1                                                          07270000                
       B     CSTASV                    GO SET UP THE ATTRIBUTES         07280000                
       SPACE 1                                                          07290000                
* SET UP THE BSCC ATTRIBUTES                                            07300000                
       SPACE 1                                                          07310000                
       L     CSSCLB,CLB                XR2-->CLB                        07320000                
       SPACE 1                                                          07330000                
* TRANSPARENCY IS SET ON BY THE BSCC DATA MANAGEMENT ON INPUT           07340000                
* TRANSPARENCY IS SET UP BY CS ON OUTPUT                                07350000                
       SPACE 1                                                          07360000                
       SBF   CLBATT(,CLB),ATTTRN       SET OFF TRANSPARENCY             07370000                
       L     PLTUBA(,PL),XR1           XR1--> TUB                       07380000                
       MVC   CLBTBS-2(2,CLB),TUBRCL(,XR1) PUT RECORD LNTH IN            07390000                
       AIF   (&CSIO EQ '1').NP070                                       07390900                
       SPACE 1                                                          07391800                
******************************************************************* @14 07392200                
*******                                                                 07392700                
       CLI   CLBDEV(,CLB),DEVSIO       SIOC ONLY DEVICE ?               07394500                
       JE    CSBT37                    YES                              07395400                
*******                                                                 07397200                
******************************************************************* @14 07397600                
       SPACE 1                                                          07398100                
.NP070 ANOP                                                             07399000                
       L     CLBPL@(,CLB),PL           XR1--> PL                        07400000                
       TBN   PL$OPM(,PL),OPPUT         PUT OP AND -                     07410000                
       TBN   CLBTBS-4(,CLB),TASTSP     TRANSPARENT TUB ?                07420000                
       JF    CSBT06                    NO - DON'T SET TRANSPARENCY      07430000                
       SBN   CLBATT(,CLB),ATTTRN       SET FOR TRANSPARENT TEXT         07440000                
       SPACE 1                                                          07450000                
CSBT06 EQU   *                         *                                07460000                
       MNN   CLBAT1(,CLB),CLBTBS-4(,CLB) SET SPANNED RECORD ATT'S       07470000                
       SBF   CLBAT1(,CLB),ALLBIT-AT1RSU-AT1SRU SET OTHERS OFF           07480000                
       SPACE 1                                                          07490000                
* SET UP THE BLOCK LENGTH                                               07500000                
       SPACE 1                                                          07505000                
       MVC   CLBTBS(2,CLB),CLBBFL(,CLB) SET FOR MAX LINE BUFFER         07580000                
       TBN   PL$OPM(,PL),OPGET         INPUT OP ?                       07590000                
       JT    CSBT30                    YES - GO RETURN TO CALLER        07600000                
* NOT AN INPUT OP. IF SYSTEM OUTPUT - USE  #CCMCL FOR BLOCK SIZE        07610000                
* IF IT IS A 3270 TERMINAL - $CC4U0 WILL PUT IN REAL BLOCK SIZE         07620000                
       MVC   CLBTBS(2,CLB),#CCMCL      SET FOR SYSTEM OP                07630000                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM OP ?                      07640000                
       JF    CSBT15                    NO - HANDLE USER OP              07650000                
       SPACE 1                                                          07660000                
* IF THIS IS AN ONLINE WRAP TEST SET BLOCK LENGTH TO 256                07670000                
       SPACE 1                                                          07680000                
       TBN   PLOPM(,PL),OPOLT          ONLINE TEST AND -                07690000                
       L     PLRECA(,PL),XR2           XR2--> TEXT                      07700000                
       CLC   1(2,XR2),DEC99            WRAP TEST ?                      07710000                
       L     CSSCLB,CLB                XR2--> CLB                       07720000                
       JC    CSBT30,FLSONE             NO - JUMP                        07730000                
       MVC   CLBTBS(2,CLB),X0100       MAKE BLOCK LENGTH 256            07740000                
       J     CSBT30                    GO RETURN                        07750000                
       SPACE 1                                                          07760000                
* MUST BE USER OUTPUT OP. SET BLOCK LENGTH FROM TUB                     07770000                
CSBT15 EQU   *                         *                                07780000                
       L     PLTUBA(,PL),XR1           XR1--> TUB                       07790000                
       MVC   CLBTBS(2,CLB),TUBRCL(,XR1) PUT IN RECORD LENGTH            07800000                
       MVC   CLBOWN(1,CLB),TUBBKF(,XR1) PUT IN BLOCK FACTOR             07810000                
CSBT20 EQU   *                         *                                07820000                
       SLC   CLBOWN(1,CLB),X$0001      SUBTRACT ONE FROM BLOCK FACTOR   07830000                
       JE    CSBT22                    IF DONE - CHECK FOR TRUNCATED    07840000                
       ALC   CLBTBS(2,CLB),TUBRCL(,XR1) ADD ANOTHER RECORD LENGTH       07850000                
       B     CSBT20                    GO CHECK AGAIN                   07860000                
CSBT22 EQU   *                         *                                07870000                
       L     CLBPL@(,CLB),PL           XR1--> PL                        07880000                
       TBF   PLOPC(,PL),OPMSG          BLOCK OR MSG MODE ?              07890000                
       JF    CSBT24                    YES - JUMP                       07900000                
* RECORD MODE OUTPUT - CHECK FOR EXCEEDING RECORD LENGTH                07910000                
       SPACE 1                                                          07920000                
       MVC   CLBREL(2,CLB),CLBTBS-2(,CLB) PUT TUB'S REC LENGTH IN       07930000                
       CLC   PLOUTL(2,PL),CLBREL(,CLB) GREATER THAN REC LENGTH ?        07940000                
       JNH   CSBT30                    NO - JUMP                        07950000                
CSBT23 EQU   *                         *                                07960000                
       SBN   CLBBA2(,CLB),BA2TRC       SET 'TRUNCATED'                  07970000                
       MVI   PL$RTC(,PL),RCXDTR        SET 'TRUNCATED' RETURN CODE      07980000                
       J     CSBT30                    GO RETURN TO CALLER              07990000                
* BLOCK OR MESSAGE OUTPUT                                               08000000                
CSBT24 EQU   *                         *                                08010000                
       CLC   PLOUTL(2,PL),CLBTBS(,CLB) GREATER THAN BLOCK LENGTH ?      08020000                
       JNH   CSBT30                    NO - JUMP                        08030000                
       MVC   CLBREL(2,CLB),CLBTBS(,CLB) USE THE BLOCK LENGTH            08040000                
       B     CSBT23                    GO SET TRUNCATED                 08050000                
CSBT30 EQU   *                         *                                08060000                
       L     PLTUBA(,PL),XR1           XR1--> TUB                       08070000                
CSBT35 EQU   *                         *                                08080000                
       MVC   CLBBKL(2,CLB),CLBTBS(,CLB) PUT IN BLOCK LENGTH             08090000                
CSBT37 EQU   *                         *                                08095000                
       MVC   CLBOWN(2,CLB),TUBTCB(,XR1) PUT IN TCB ADDRESS OF OWNER     08100000                
       L     CLBPL@(,CLB),PL           XR1--> PL                        08110000                
CSBT38 LA    #,XR2                     RESTORE XR2                      08120000                
CSBT40 B     #                         RETURN TO CALLER                 08130000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S W P G Y)'     08140000                
*********************************************************************** 08150000                
*                                                                     * 08160000                
*  NAME:  CSWPGY                                                      * 08170000                
*                                                                     * 08180000                
*  FUNCTION: SET UP A PUT-THEN-GET PL FOR THE GET PORTION OF THE OP   * 08190000                
*                                                                     * 08200000                
*  INPUT:  XR1--> PL                                                  * 08210000                
*          XR2--> NO MATTER                                           * 08220000                
*                                                                     * 08230000                
*  OUTPUT: XR1--> PL                                                  * 08240000                
*          XR2--> RESTORED                                            * 08250000                
*                                                                     * 08260000                
*********************************************************************** 08270000                
       SPACE 1                                                          08280000                
CSWPGY EQU   *                         *                                08290000                
       ST    CSW040+3,ARR              SAVE THE RETURN ADDRESS          08300000                
       ST    CSWXR2+3,XR2              SAVE XR2                         08310000                
       SLC   PL$RTC(,PL),PL$RTC(2,PL)  ZIP THE RETURN CODE              08320000                
       SBF   PL$OPM(,PL),OPPUT         SET OFF THE PUT BIT              08330000                
       SBN   PL$OPM(,PL),OPGET         SET ON THE GET BIT               08340000                
       AIF   (&CSIO EQ '1').NP080                                       08340700                
       SPACE 1                                                          08341400                
******************************************************************* @14 08341700                
*******                                                                 08342100                
* IF A USER SIOC OPERATION, DO NOT FREE THE BUFFER. THE PUT IS DONE     08343500                
* FROM THE USER'S BUFFER (NOT FROM TPBUFFER)                            08344200                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      08344900                
       TBN   TUBAT4(,TUB),TUBPCB       SIOC ONLY DEVICE ?               08345600                
       JT    CSW035                    YES                              08346300                
*******                                                                 08347000                
******************************************************************* @14 08347300                
       SPACE 1                                                          08347700                
.NP080 ANOP                                                             08349100                
* IF THIS IS A USER OP - SKIP THE POST                                  08350000                
       TBF   PLOPM(,PL),OP$SYS         USER OP?                         08360000                
       JT    CSW030                    YES - GO FREE THE RECORD AREA    08370000                
* HAVE A SYSTEM PUT-THEN-GET - IF A NO-WAIT OP THEN JUST FREEMAIN       08380000                
* THE POST WAS DONE AT NEW REQUEST TIME                                 08390000                
       SPACE 1                                                          08400000                
       TBN   PL$OPM(,PL),OPNOW         A NO-WAIT OP?                    08410000                
       JT    CSW030                    YES - GO FREEMAIN                08420000                
* SYSTEM PUT-NO-WAIT CHANGED TO A WAIT -JUST POST (DON'T FREEMAIN)      08430000                
       SBN   PL$OPM(,PL),OPNOW         MAKE THE INVITE A NO-WAIT OP     08440000                
       LA    PLECB(,PL),XR1            XR1--> ECB                       08450000                
       SVC   0                         SUPERVISOR CALL                  08460000                
       DC    AL1(PSTRIB)               RIB TO POST                      08470000                
       L     CSSPL,PL                  XR1--> PL                        08480000                
       J     CSW035                    GO RETURN                        08490000                
CSW030 EQU   *                         *                                08500000                
       CCP   MASK,PMR                  DON'T ALLOW INTERRUPTS           08510000                
       L     PLRECA(,PL),XR2           XR2-->AREA TO FREE               08520000                
       B     CC4FM                     GO FREE THE RECORD AREA          08530000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 08540000                
CSW035 EQU   *                         *                                08550000                
       MVI   PLRECA-1(,PL),NOBIT       ZIP THE RECORD AREA              08560000                
CSWXR2 LA    #,XR2                     RESTORE XR2                      08570000                
CSW040 B     #                         RETURN                           08580000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S C H R Q)'     08590000                
*********************************************************************** 08600000                
*                                                                     * 08610000                
*  NAME:  CSCHRQ                                                      * 08620000                
*                                                                     * 08630000                
*  FUNCTION: SEARCH CLBPLQ FOR THE NEXT OP TO PERFORM                 * 08640000                
*                                                                     * 08650000                
*  INPUT:  XR1--> NO MATTER                                           * 08660000                
*          XR2--> CLB TO SEARCH                                       * 08670000                
*                                                                     * 08680000                
*  OUTPUT: XR1--> PL TO USE FOR RESCHEDULE                            * 08690000                
*          XR2--> CLB                                                 * 08700000                
*                                                                     * 08710000                
*  EXIT: RETURN TO CALLER IF A PL FOUND TO SCHEDULE                   * 08720000                
*               TO CSPSTN IF NONE FOUND TO SCHEDULE                   * 08730000                
*                                                                     * 08740000                
*********************************************************************** 08750000                
       SPACE 1                                                          08760000                
CSCHRQ EQU   *                         *                                08770000                
       ST    CSS200+3,ARR              SAVE THE RETURN ADDRESS          08780000                
       SBF   CLBATB(,CLB),ATBTIM       SET OFF RESCHEDULE IND.          08790000                
       CLI   CLBPLQ-1(,CLB),NOBIT      ANY IN THE QUEUE                 08800000                
       BE    CSPSTN                    NO - GO POST AS NECESSARY        08810000                
       AIF   (&CSIO EQ '1').PT130                                       08810800                
       AGO   .PT140                                                     08810900                
.PT130 ANOP                                                             08811000                
       AIF   (&NCPOR).PT150                                             08811100                
.PT140 ANOP                                                             08811200                
       SPACE 1                                                          08811300                
******************************************************************* @14 08811400                
*******                                                                 08811500                
       TBN   CSSWIT,CSSGET             NEED TO DO A GET                 08814000                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?    @04 08814800                
       BT    CSS150                    YES TO BOTH - DO A GET       @04 08815600                
*******                                                                 08816400                
******************************************************************* @14 08816800                
.PT150 ANOP                                                             08818800                
       SPACE 1                                                          08820000                
* LOOK FOR A POLL FOR STATUS, CLEAR KEY, OR A PUT FIRST                 08830000                
* IF NONE OF THE ABOVE - GO TO CSIVGM TO SCHEDULE A READ                08840000                
       L     CLBPLQ(,CLB),PL           XR1--> FIRST PL                  08850000                
CSS010 EQU   *                         *                                08860000                
       TBN   PL$OPC(,PL),OPLSNS        POLL FOR STATUS OP?              08870000                
       BT    CSS150                    YES - GO CALL CSIVGM             08880000                
CSS020 EQU   *                         *                                08890000                
       TBN   PL$OPC(,PL),OPRFSH        CLEAR MSG TO SEND?               08900000                
       JF    CSS025                    NO - JUMP                        08910000                
       MNN   PL$OPM(,PL),CCPUT         MAKE OP A PUT                    08920000                
       B     CSS190                    GO RETURN TO SCHEDULE (THE RE-   08930000                
*                                      SERVED AREA IN $CC4U0 WILL BE    08940000                
*                                      USED FOR OUTPUT BUFFER)          08950000                
CSS025 EQU   *                         *                                08960000                
* SCAN THE QUEUE FOR A PUT TO DO                                        08970000                
       AIF   (&NDF).NP095                                               08972000                
CSS030 EQU   *                         *                                08975000                
       TBN   PL$OPM(,PL),OPGETQ        OPGETQ ON?                   @13 08975200                
       TBF   PLOPM(,PL),OPREQR         USER ...                     @13 08975400                
       TBN   PLOPC(,PL),OPPUT          ......PUT?                   @13 08975600                
       TBN   CLBATA(,CLB),CLBDFF       DFF SUPPORTED?               @13 08975800                
       L     PLTUBA(,PL),TUB           GET TUB ADDRESS              @13 08976000                
       TBN   TUBTA1(,TUB),TASDFF       ...DFF REQUEST?              @13 08976200                
       JF    CSS031                    NO - JUMP                    @13 08976400                
       SPACE 1                                                          08976600                
       L     TUBLCB(,TUB),CLB          POINT TO DTF                 @13 08976800                
       TBN   CLBATA(,CLB),CLBDFB       Q-DFF BUFFER BUSY?           @13 08977000                
       JT    CSS050                    YES-MUST BE ANOTHER DFF PUT  @13 08977200                
*                                      *ON SAME QUEUE,RESCHEDULE IT @13 08977400                
       ST    CSDQPL,PL                 SAVE PL ADDRESS              @13 08977600                
       B     CSDEQ                     DEQUEUE THE REQUEST          @13 08977800                
       SBF   PL$OPM(,PL),OPGETQ        SET OPGETQ OFF               @13 08978000                
       B     CSGDFF                    GO POST DFF                  @13 08978200                
       SPACE                                                            08978400                
CSS031 EQU   *                         .                            @13 08978600                
.NP095 ANOP                                                             08978800                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                  @13 08979000                
       TBN   PL$OPM(,PL),OPPUT         THIS A PUT AND ----------->| @13 08980000                
       TBF   TUBAT3(,TUB),TUBERP       NOT IN ERP ?  ------------>|     09000000                
       L     TUBLCB(,TUB),CLB          XR2-->CLB                  |     09010000                
       JT    CSS033                    YES - GO DO IT <-----------|     09020000                
       SPACE 1                                                          09030000                
* IF THIS IS AN ONLINE WRAP TEST - ALLOW IT                             09040000                
       SPACE 1                                                          09050000                
       TBN   PLOPM(,PL),OPOLT          ONLINE TEST AND                  09060000                
       L     PLRECA(,PL),XR2           XR2--> TEXT                      09070000                
       CLC   1(2,XR2),DEC99            WRAP TEST ?                      09080000                
       L     CSSCLB,CLB                XR2--> CLB                       09090000                
       JC    CSS050,FLSONE             NO - LOOK AT NEXT PL             09100000                
CSS033 EQU  *                                                           09120000                
       AIF   (&CSIO EQ '1').NP100                                       09120500                
       SPACE 1                                                          09120600                
******************************************************************* @14 09120700                
*******                                                                 09121000                
       CLI   CLBDEV(,CLB),DEVSIO       SIOC DEVICE ?                    09122500                
       TBN   PL$OPM(,PL),OPPUT         THIS A PUT ?                     09123000                
       JC    CSS034,FLSONE             IF NO BOTH                       09123500                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       09124000                
       L     TUBTCB(,TUB),XR2          XR2--> TCB OF OWNER              09124500                
       MVC   PLRECA(2,PL),TCBWK(,XR2)  USER BUFFER ADDRESS TO PL        09125000                
       L     CSSCLB,CLB                XR2--> CLB                       09125500                
CSS034 EQU   *                         *                                09126000                
*******                                                                 09126500                
******************************************************************* @14 09126700                
       SPACE 1                                                          09127000                
.NP100 ANOP                                                             09128000                
*  SEE IF A GETMAIN MUST BE DONE NOW                                    09128500                
       CLI   PLRECA-1(,PL),NOBIT       BUFFER ALREADY OBTAINED ?        09130000                
       JNE   CSS190                    YES - GO SCHEDULE THIS OP        09140000                
* GETMAIN FOR THIS OP - IT CAN ONLY BE A USER PUT-WAIT AT THIS TIME     09150000                
       SPACE 1                                                          09160000                
CSS035 EQU   *                                                          09170000                
       CCP   MASK,PMR                  MASK INTERRUPTS                  09180000                
       LA    GMLIST,XR2                XR2--> GM LIST                   09190000                
       MVI   0(,XR2),NOBIT             MAKE IT A NO-WAIT REQUEST        09200000                
       MVC   GMSIZE(2,XR2),PLOUTL(,PL) PUT IN SIZE TO GETMAIN           09210000                
       ALC   GMSIZE(2,XR2),X$0004      ADD 4 FOR THE GETMAIN PL         09220000                
       AIF   (&NCPOR).PT160                                             09220600                
       SPACE 1                                                          09221200                
******************************************************************* @14 09221800                
*******                                                                 09222400                
       L     CSSCLB,CLB                XR2 --> CLB                      09223000                
       TBN   CLBBA3(,CLB),BA3PON       IS THIS A PORTLINE ONLY DEVICE ? 09223600                
       LA    GMLIST,XR2                XR2 --> GM LIST                  09224200                
       JF    CSS036                    NO - CONTINUE                    09224800                
       ALC   GMSIZE(2,XR2),X$0003      INCREMENT THE SIZE BY THREE      09225400                
CSS036 EQU   *                         *                                09226000                
*******                                                                 09226600                
******************************************************************* @14 09227200                
       SPACE 1                                                          09227800                
.PT160 ANOP                                                             09228400                
       CLC   #GMS+1,GMSIZE(2,XR2)      ENOUGH TPBUF FOR THIS GUY?       09230000                
       JL    CSS040                    NO - MAKE THIS GUY WAIT          09240000                
       SBN   $FLGC,#PUTTP              SET TO GETMAIN FROM ANYWHERE     09250000                
       B     CSGMRQ                    GO DO THE GETMAIN                09260000                
       AIF   (&NCPOR).PT170                                             09260700                
       SPACE 1                                                          09261400                
******************************************************************* @14 09262100                
*******                                                                 09262800                
       L     CSSCLB,CLB                XR2 --> CLB                      09263500                
       TBN   CLBBA3(,CLB),BA3PON       IS THIS A PORTLINE ONLY DEVICE ? 09264200                
       JF    CSS037                    NO - CONTINUE                    09264900                
       ALC   GMLIST+GMADDR(2),X$0003   INCREMENT THE ADDR BY THREE      09265600                
CSS037 EQU   *                         *                                09266300                
*******                                                                 09267000                
******************************************************************* @14 09267700                
.PT170 ANOP                                                             09268400                
       SPACE 1                                                          09270000                
       B     CSQMOV                    GO MOVE TEXT TO TPBUF            09280000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 09290000                
       AIF   (&NCPOR).PT180                                             09290400                
       SPACE 1                                                          09290800                
******************************************************************* @14 09291200                
*******                                                                 09291600                
       TBN   CLBBA3(,CLB),BA3PON       IS THIS A PORTLINE ONLY DEVICE ? 09292000                
       JF    CSS039                    NO - CONTINUE                    09292400                
       SLC   PLRECA(2,PL),X$0003       DECREMENT THE ADDR BY THREE      09292800                
       ALC   PLOUTL(2,PL),X$0003       ADD 3 TO THE OUTPUT LENGTH       09293200                
       ST    CSSPL,PL                  SAVE THE PARAMETER LIST          09293600                
       L     PLRECA(,PL),XR2           XR2 --> RECORD AREA              09294000                
       L     PLTUBA(,PL),XR1           XR1 --> TUB                      09294400                
       MVC   0(1,XR2),TUBID(,XR1)      MOVE THE PORT ID INTO THE BUFFER 09294800                
       L     CSSPL,PL                  RESTORE THE PL REGISTER          09295200                
       TBN   PLOPC(,PL),OPPCR          IS THIS A PORT COMMAND REQUEST ? 09295600                
       JF    CSS038                    NO - CONTINUE                    09296000                
       SBN   0(,XR2),TPXCMD            SET ON THE COMMAND BIT           09296400                
CSS038 EQU   *                                                          09296800                
       MVC   2(2,XR2),PLOUTL(,PL)      MOVE THE OUTPUT LENGTH TO BUFFER 09297200                
CSS039 EQU   *                         *                                09297600                
*******                                                                 09298000                
******************************************************************* @14 09298400                
       SPACE 1                                                          09298800                
.PT180 ANOP                                                             09299200                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       09300000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       09310000                
       J     CSS190                    GO SCHEDULE THIS OP              09320000                
       SPACE 2                                                          09330000                
CSS040 EQU   *                         *                                09340000                
       B     CSDEQ                     DEQUE FROM CLBPLQ                09350000                
       MVC   CSTMPL,PLCHN(2,PL)        SAVE CHAIN POINTER               09360000                
       B     CSWCRQ                    GO MARK IT AS WAITING            09370000                
       LA    CSTMPL-1,PL               POINT AT SAVED ***PL***          09380000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 09390000                
       SPACE 1                                                          09400000                
* LOOK AT THE NEXT PL IN THE QUEUE                                      09410000                
CSS050 EQU   *                         *                                09420000                
       CLI   PLCHN-1(,PL),NOBIT        ANY MORE PL'S ?                  09430000                
       L     CSSCLB,CLB                XR2--> CLB                       09440000                
       L     PLCHN(,PL),PL             XR1--> NEXT PL                   09450000                
       BNE   CSS020                    YES - GO LOOK AT IT              09460000                
* AT THE END OF THE QUEUE - TRY TO GET A READ GOING                     09470000                
CSS150 EQU   *                         *                                09480000                
       B     CSIVGM                    TRY TO GETMAIN FOR ANY READS     09490000                
       TBN   CSSWIT,CSRESH             OK TO RESCHEDULE ?               09500000                
       SBF   CSSWIT,CSRESH             SET IT OFF                       09510000                
       BF    CSPSTN                    NO - GO POST (IF NECESSARY)      09520000                
* OK TO SCHEDULE A READ - XR1--> PL TO USE                              09530000                
CSS190 EQU   *                         *                                09540000                
       ST    CLBPL@(,CLB),PL           PUT PL ADDRESS IN CLB            09550000                
       ST    CSSPL,PL                  SAVE THE PL ADDRESS              09560000                
CSS200 B     #                         RETURN TO SCHEDULE               09570000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S I V G M)'     09580000                
*********************************************************************** 09590000                
*                                                                     * 09600000                
*                                                                     * 09610000                
*  NAME: CSIVGM                                                       * 09620000                
*                                                                     * 09630000                
*  FUNCTION: GETMAIN FOR AN INPUT BUFFER FROM TPBUFFER.               * 09640000                
*            IF POLL FOR STATUS OP THEN:                              * 09650000                
*               SAVE THE POLL LOOP COUNT                              * 09660000                
*               SET POLL LOOP COUNT TO 4                              * 09670000                
*               DON'T DO A GETMAIN (RESERVED AREA IN $CC4U0 WILL BE   * 09680000                
*                 USED)                                               * 09690000                
*            IF ONLY 3270'S IN THE QUEUE THEN:                        * 09700000                
*               FORCE OUTBOARD POLLING                                * 09710000                
*            IF NOT ENOUGH TP BUFFER FOR A PL THEN                    * 09720000                
*               DEQUE IT FROM CLBPLQ                                  * 09730000                
*               QUEUE IT ON CLBWCQ                                    * 09740000                
*            IF THERE ARE NO INPUT OP'S IN THE QUEUE THEN             * 09750000                
*               DON'T SET 'OK TO SCHEDULE' INDICATOR ON               * 09760000                
*                                                                     * 09770000                
*  INPUT: XR1--> NO MATTER                                            * 09780000                
*         XR2--> CLB TO SCHEDULE                                      * 09790000                
*                                                                     * 09800000                
*  OUTPUT: XR1--> PL TO USE FOR RESCHEDULE                            * 09810000                
*          XR2--> CLB TO RESCHEDULE                                   * 09820000                
*                                                                     * 09830000                
*  NOTE: MUST REMAIN MASKED UNTIL EXIT OF THIS SUBROUTINE.            * 09840000                
*                                                                     * 09850000                
*********************************************************************** 09860000                
       SPACE 1                                                          09870000                
CSIVGM EQU   *                         *                                09880000                
       ST    CSIRET+3,ARR              SAVE THE RETURN ADDRESS          09890000                
       CCP   MASK,PMR                  DON'T ALLOW INTERRUPTS           09900000                
       L     @CMTCB,XR1                XR1 CM TCB                       09902000                
       SBN   TCBDS1(,XR1),X'80'        MAKE CM-NON DISPATCABLE          09904000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 09906000                
       SBN   CLBBA2(,CLB),BA2POP       FORCE OUTBOARD POLLING           09910000                
       SBF   CSSWIT,CSRESH             SET 'OK TO SCHEDULE' OFF         09920000                
       SLC   GMLIST+GMSIZE(4),GMLIST+GMSIZE ZIP GETMAIN SIZE            09930000                
       AIF   (&CSIO EQ '1').PT190                                       09930900                
       AGO   .PT200                                                     09931000                
.PT190 ANOP                                                             09931100                
       AIF   (&NCPOR).PT210                                             09931200                
.PT200 ANOP                                                             09931300                
       SPACE 1                                                          09931800                
******************************************************************* @14 09932200                
*******                                                                 09932700                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?        09934500                
       JT    CSINMR                    YES,SKIP POLL CODE               09935400                
*******                                                                 09937200                
******************************************************************* @14 09937600                
.PT210 ANOP                                                             09939000                
       SPACE 1                                                          09939500                
* SET ON ALL SKIP BITS FOR THIS LINE                                    09940000                
       L     CLBPOL(,CLB),XR1          XR1--> POLL LIST                 09950000                
CSIALL EQU   *                         *                                09960000                
       CLI   POLID(,XR1),POLEND        END OF LIST ?                    09970000                
       JNL   CSINMR                    YES - EXIT THIS LOOP             09980000                
       MVC   CSISTS+2,POLLTH(1,XR1)    SET LA INST. TO BUMP TO STATUS   09990000                
CSISTS LA    #(,XR1),XR1               XR1--> 3 BEFORE STATUS BYTE      10000000                
       SBN   POLSTS(,XR1),POLSKP       SET THE SKIP BIT ON              10010000                
       LA    POLNXT(,XR1),XR1          XR1--> NEXT ENTRY                10020000                
       B     CSIALL                    GO CHECK NEXT ENTRY              10030000                
       SPACE 1                                                          10040000                
* FREE THE CURRENT INPUT BUFFER (IF THERE IS ONE)                       10050000                
CSINMR EQU   *                         *                                10060000                
       CLI   CLBIBA-1(,CLB),NOBIT      ANY TO FREE ?                    10070000                
       JE    CSICRD                    NO - SKIP THE FREEMAIN           10080000                
* FREE CLBIBA                                                           10090000                
       L     CLBIBA(,CLB),XR2          XR2--> INPUT BUFFER              10100000                
       CCP   MASK,PMR                  DONT ALLOW INTERRUPTS            10105000                
       B     CC4FM                     GO FREE IT                       10110000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 10115000                
       L     CSSCLB,CLB                XR2--> CLB                       10120000                
       MVI   CLBIBA-1(,CLB),NOBIT      ZIP THE POINTER                  10130000                
* SEE IF WE CAN DO A READ NOW                                           10140000                
CSICRD EQU   *                         *                                10150000                
       CLI   CLBPLQ-1(,CLB),NOBIT      IS THE QUEUE EMPTY?              10160000                
       BE    CSIMYB                    YES - RETURN TO CALLER       @10 10170000                
       L     CLBPLQ(,CLB),PL           XR1 --> FIRST PL ON THE QUEUE    10180000                
* SET UP POLL FOR STATUS IF APPLICABLE                                  10190000                
       TBN   PL$OPC(,PL),OPLSNS        POLL FOR STATUS OP ?             10200000                
       JF    CSINST                    NO - JUMP                        10210000                
       SPACE 1                                                          10220000                
* SET UP FOR A POLL FOR STATUS OPERATION                                10230000                
       MVC   CLBPLC(1,CLB),CLBCNT(,CLB) SAVE THE CURRENT POLL LOOP CNT  10240000                
       SBN   CLBBA3(,CLB),BA3STS       SET TO POLL FOR STATUS           10250000                
       MVC   CLBCNT(1,CLB),X$0004      SET P LOOP COUNT TO 4            10260000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      10270000                
       B     CSKPST                    SET OFF THE SKIP BIT             10280000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                      10290000                
       ST    CSIPL+3,PL                STORE PL ADDRESS TO RESTORE      10300000                
       J     CSIEXT                    GO RETURN TO SCHEDULE THIS OP    10310000                
       SPACE 2                                                          10320000                
* SET UP THE INPUT BUFFER FOR ANY READS                                 10330000                
       SPACE 1                                                          10340000                
CSINST EQU   *                         *                                10350000                
       TBN   PL$OPM(,PL),OPGET         INPUT OP AND -----|              10360000                
       L     PLTUBA(,PL),TUB           XR2--> TUB        |              10370000                
       TBF   TUBAT3(,TUB),TUBERP       NOT IN ERP ? <----|              10380000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       10390000                
       JF    CSINXT                    NO - LOOK AT NEXT PL             10400000                
       SPACE 1                                                          10410000                
* HAVE A VALID INPUT OP - SEE IF ENOUGH TPBUFF IS AVAILABLE             10420000                
       SPACE 1                                                          10430000                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM OP?                       10440000                
       JF    CSIUSR                    NO - JUMP                        10450000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       10460000                
       MVC   PLINL(2,PL),TUBPIL(,TUB)  PUT PRUF LENGTH IN               10470000                
       TBN   TUBSCS(,TUB),TUBRUF       PRUF ACTIVE ?                    10480000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       10490000                
       JT    CSIUSR                    YES- GO SEE IF ENOUGH AVAILABLE  10500000                
       MVC   PLINL(2,PL),#CCMCL        NO PRUF - USE MAX CMD LENGTH     10510000                
       SPACE                                                            10520000                
CSIUSR EQU   *                         *                                10530000                
       AIF   (&CSIO EQ '1').PT220                                       10530700                
       AGO   .PT230                                                     10530780                
.PT220 ANOP                                                             10530860                
       AIF   (&NCPOR).PT240                                             10530940                
.PT230 ANOP                                                             10531020                
       SPACE 1                                                          10531100                
******************************************************************* @14 10531180                
*******                                                                 10531260                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?        10533500                
       JF    CSINPT                    NO                               10534200                
       B     CSHPSI                    FILL IN GETMAIN LENGTH           10534900                
       J     CSIYPT                    SKIP NEXT INSTRUCTION IF PORT    10535600                
CSINPT EQU   *                         *                                10536300                
*******                                                                 10537000                
******************************************************************* @14 10537300                
       SPACE 1                                                          10537700                
.PT240 ANOP                                                             10539100                
       MVC   CSTPBF,PLINL(2,PL)        MOVE IN SIZE TO GETMAIN          10540000                
CSIYPT EQU   *                         *                                10545000                
       ALC   CSTPBF(2),X$0004          ADD 4 FOR GETMAIN PL LENGTH      10550000                
       CLC   CSTPBF(2),#ANYS+1         ENOUGH FOR THIS GUY?             10560000                
       JNH   CSIMHI                    YES - JUMP                       10570000                
       SPACE 1                                                          10580000                
* MAKE THIS GUY WAIT FOR TP BUFFER                                      10590000                
       B     CSDEQ                     REMOVE THIS PL FROM CLBPLQ       10600000                
       MVC   CSTMPL,PLCHN(2,PL)        SAVE CHAIN POINTER               10610000                
       B     CSWCRQ                    PUT IT ON CLBWCQ                 10620000                
       LA    CSTMPL-1,PL               POINT AT SAVED ***PL***          10630000                
       J     CSINXT                    LOOK AT NEXT PL                  10640000                
CSIMHI EQU   *                         *                                10650000                
* SET THE SKIP BITS OFF FOR THIS POLL ENTRY                             10660000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       10670000                
       CLI   TUBPHY(,TUB),TUB5M2       THIS A 3270 TYPE TERM ?          10680000                
       JNH   CSI327                    YES - JUMP                   @10 10690000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       10700000                
       SBF   CLBBA2(,CLB),BA2POP       SET OFF OUTBOARD POLLING         10710000                
       AIF   (&CSIO EQ '1').PT250                                       10710800                
       AGO   .PT260                                                     10710900                
.PT250 ANOP                                                             10711000                
       AIF   (&NCPOR).PT270                                             10711100                
.PT260 ANOP                                                             10711200                
       SPACE 1                                                          10711300                
******************************************************************* @14 10711400                
*******                                                                 10711500                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE OR SIOC DEVICE ?        10714000                
       JT    CSGMTS                    YES,SKIP 'SKIP BIT' SETTING      10714800                
*******                                                                 10715600                
******************************************************************* @14 10716000                
       SPACE 1                                                          10716400                
.PT270 ANOP                                                             10718000                
       J     CSIFRC                    SET OFF THE SKIP BITS        @10 10718800                
CSI327 EQU   *                                                      @10 10721000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                  @10 10722000                
       CLC   CLBBFL(2,CLB),X$012C      IS THE BLKL < 300 ?          @10 10723000                
       JNL   CSIFRC                    NO - PERFORM OUTBOARD POLL   @10 10724000                
       SBF   CLBBA2(,CLB),BA2POP       YES - CAN NOT OUTBOARD POLL  @10 10725000                
CSIFRC EQU   *                         *                                10730000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                   @10 10735000                
       B     CSKPST                    GO SET THE SKIP BITS OFF         10740000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       10750000                
* USE THIS LENGTH IF IT IS LARGER THAN PREVIOUS LENGTHS                 10760000                
CSGMTS EQU   *                         *                                10765000                
       CLC   GMLIST+GMSIZE(2),CSTPBF   THIS PL NEED MORE THAN LAST PL?  10770000                
       ST    CSIPL+3,PL                SAVE THIS PL ADDRESS             10780000                
       JNL   CSINXT                    NO - JUMP                        10790000                
       MVC   GMLIST+GMSIZE(2),CSTPBF   MAKE THIS ONE BIGGEST            10800000                
       SPACE 1                                                          10810000                
* CONTINUE WITH NEXT PL                                                 10820000                
CSINXT EQU   *                         *                                10830000                
       CLI   PLCHN-1(,PL),NOBIT        END OF THE QUEUE?                10840000                
       L     PLCHN(,PL),PL             XR1--> NEXT PL                   10850000                
       BNE   CSINST                    NO - GO LOOK AT NEXT PL          10860000                
       SPACE 1                                                          10870000                
* END OF THE QUEUE - SEE IF WE FOUND ONE TO SCHEDULE                    10880000                
       SPACE 1                                                          10890000                
       CLC   GMLIST+GMSIZE(2),X$0000   DID WE FIND ONE TO SCHEDULE?     10900000                
       JE    CSIUNM                    NO - GO EXIT                     10910000                
* GETMAIN FOR THIS LINE                                                 10920000                
       B     CSGMRQ                    GO TO THE GETMAIN INTERFACE      10930000                
       L     CSSCLB,CLB                XR2--> CLB                       10940000                
       MVC   CLBIBA(2,CLB),GMLIST+GMADDR PUT ADDRESS IN CLB             10950000                
       ALC   CLBIBA(2,CLB),X$0004      BUMP TO DATA AREA                10960000                
       MVC   CLBIBL(2,CLB),GMLIST+GMSIZE  MOVE GETAMAIN LENGTH INTO IBL 10970000                
       SLC   CLBIBL(2,CLB),X$0004         DECREMENT TO REQUESTED LENGTH 10980000                
CSIEXT EQU   *                         *                                10990000                
       SBN   CSSWIT,CSRESH             SET ' OK TO SCHEDULE' IND        11000000                
CSIUNM EQU   *                         *                                11010000                
* SET TO FORCE INTERVAL POLLING IF SPECIFIED                            11020000                
       TBN   CLBAT3(,CLB),AT3OUT       OUTBOARD POLL ALWAYS ?           11030000                
       JF    CSIMYB                    NO - LEAVE IT AS SET             11040000                
       SBN   CLBBA2(,CLB),BA2POP       FORCE OUTBOARD POLLING           11050000                
CSIMYB EQU   *                         *                                11060000                
       CCP   MASK,PMR                  DONT ALLOW INTERRUPTS            11060500                
       L     @CMTCB,XR2                XR2 GETS CM'S TCB                11061000                
       L     TCBRBP(,XR2),XR2          XR2 GETS CM'S RB                 11061500                
       TBN   2(,XR2),X'80'             IS THE WAITING BIT ON?           11062000                
       L     @CMTCB,XR2                XR2 GETS CM'S TCB                11062500                
       JT    CSIRES                    YES CM IS STILL WAITING          11063000                
       ST    X'002C',XR2               MAKE CM NEXT TASK DISPACHED      11063500                
       SBF   TCBDS1(,XR2),X'80'        MAKE CM DISPATCHABLE             11064000                
       L     @CSTCB,XR2                CS'S TCB @                       11064500                
       L     TCBRBP(,XR2),XR2          XR2 CS RB                        11065000                
       MVC   7(2,XR2),CSINDD           MOVE IN RETURN @                 11065500                
       L     X'0041',IAR               BRANCH TO DISPATCHER             11066000                
CSININ EQU   *                                                          11066500                
       JC    CSIJMP,X'97'              RESET CONDITION REGISTER         11067000                
CSIRES EQU   *                                                          11067500                
       SBF   TCBDS1(,XR2),X'80'        MAKE CM DISPATCHABLE             11068000                
CSIJMP EQU   *                                                          11068500                
       L     CSSCLB,XR2                XR2 GETS CLB @                   11069000                
CSIPL  LA    #,PL                      XR1--> PL TO USE FOR SCHEDULE    11070000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 11080000                
CSIRET B     #                         RETURN                           11090000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S K P S T)'     11100000                
*********************************************************************** 11110000                
*                                                                     * 11120000                
*                                                                     * 11130000                
*  NAME: CSKPST                                                       * 11140000                
*                                                                     * 11150000                
*  FUNCTION: SET THE SKIP BITS OFF IN THE POLL LIST FOR THE RE-       * 11160000                
*            QUESTED TUB.                                             * 11170000                
*                                                                     * 11180000                
*  INPUT:  XR1--> PL                                                  * 11190000                
*          XR2--> TUB                                                 * 11200000                
*                                                                     * 11210000                
*  OUTPUT: XR1--> RESTORED                                            * 11220000                
*          XR2--> RESTORED                                            * 11230000                
*                                                                     * 11240000                
*********************************************************************** 11250000                
       SPACE 2                                                          11260000                
CSKPST EQU   *                         *                                11270000                
       ST    CSKARR+3,ARR              SAVE THE RETURN ADDRESS          11280000                
       ST    CSKXR1+3,XR1              SAVE XR1                         11290000                
       L     TUBLCB(,TUB),XR1          XR1--> CLB                       11300000                
       L     CLBPOL(,XR1),XR1          XR1--> POLL LIST                 11310000                
CSKAGN EQU   *                         *                                11320000                
       CLI   POLID(,XR1),POLEND        END OF LIST ?                    11330000                
       JNL   CSKEXT                    YES - GO RETURN                  11340000                
       CLC   POLID(,XR1),TUBSID(1,TUB) THIS THE ENTRY ?                 11350000                
       MVC   CSKBMP+2,POLLTH(1,XR1)    SET UP TO BUMP TO STATUS BYTE    11360000                
CSKBMP LA    #(,XR1),XR1               POINT 3 BYTES BEFORE STATUS      11370000                
       JNE   CSKNXT                    NOT THE ENTRY - JUMP             11380000                
       SBF   POLSTS(,XR1),POLSKP       SET THE SKIP BIT OFF             11390000                
CSKNXT EQU   *                         *                                11400000                
       LA    POLNXT(,XR1),XR1          XR1--> NEXT ENTRY                11410000                
       B     CSKAGN                    GO LOOK FOR A DUP                11420000                
CSKEXT EQU   *                         *                                11430000                
CSKXR1 LA    #,XR1                     RESTORE XR1                      11440000                
CSKARR B     #                         RETURN TO CALLER                 11450000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S X L A T)'     11460000                
*********************************************************************** 11470000                
*                                                                     * 11480000                
*  NAME: CSXLAT                                                       * 11490000                
*                                                                     * 11500000                
*  FUNCTION: TRANSLATE THE TEXT TO EBCDIC AND/OR UPPER CASE           * 11510000                
*                                                                     * 11520000                
*  INPUT: XR1--> PL                                                   * 11530000                
*         XR2--> NO MATTER                                            * 11540000                
*                                                                     * 11550000                
*  OUTPUT: XR1--> PL                                                  * 11560000                
*          XR2--> RESTORED                                            * 11570000                
*          TEXT IN TP BUFFER TRANSLATED TO EBCDIC OR UPPER CASE       * 11580000                
*                                                                     * 11590000                
*********************************************************************** 11600000                
       SPACE 2                                                          11610000                
CSXLAT EQU   *                         *                                11620000                
       ST    CSXARR+3,ARR              SAVE THE ARR                     11630000                
       ST    CSXXR2+3,XR2              SAVE XR2                         11640000                
       AIF   (&CACI).A0200             NO ASCII SUPPORT.                11650000                
*  TRANSLATE TO EBCDIC FIRST (IF THIS IS AN ASCII LINE)                 11660000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       11670000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       11680000                
       TBN   CLBATT(,CLB),ATTCOD       THIS AN ASCII LINE?              11690000                
       JF    CSXNAS                    NO - JUMP                        11700000                
* CALL THE TRANSLATE TRANSIENT TO TRANSLATE FROM ASCII TO EBCDIC        11710000                
       B     CC4TA                     CALL TRANSIENT AREA HANDLER      11720000                
       DC    AL1(CC4UK)                TRANSLATE TRANSIENT ID ($CC4UK)  11730000                
       SPACE 2                                                          11740000                
.A0200 ANOP                            *                                11750000                
*  TRANSLATE THE TEXT TO UPPER CASE IF SYSTEM REQUEST OR IF             11760000                
*  THE USER SPECIFIED UPPER CASE                                        11770000                
CSXNAS EQU   *                         *                                11780000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       11790000                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM OPERATION?                11800000                
       JT    CSXEXT                    YES - DO NOT UPPER CASE      @05 11810000                
       SPACE 1                                                          11820000                
       TBN   TUBTA1(,TUB),TASCAS       FORCE UPPER CASE?  (ON = NO)     11830000                
       JT    CSXEXT                    NO - RETURN TO CALLER            11840000                
       SPACE 1                                                          11850000                
* FORCE THE INPUT TO UPPER CASE                                         11860000                
CSXUPC EQU   *                         *                                11870000                
       MVC   CSXCNT,PLEFFL(2,PL)       USE EFFL FOR THE LENGTH          11880000                
       L     PLRECA(,PL),XR2           XR2--> TEXT                      11890000                
CSXBMP EQU   *                         *                                11900000                
       CLC   CSXCNT(2),X$0000          COUNT NOW ZIP ?                  11910000                
       JE    CSXEXT                    YES - GO RETURN TO CALLER        11920000                
       CLI   0(,XR2),X'40'             X'40' OR HIGHER ?                11930000                
       JL    CSXNXT                    NO - JUMP                        11940000                
       SBN   0(,XR2),X'40'             SET IT TO UPPER CASE             11950000                
CSXNXT EQU   *                         *                                11960000                
       SLC   CSXCNT(2),X$0001          DECREMENT THE COUNT BY ONE       11970000                
       LA    1(,XR2),XR2               BUMP TO NEXT CHARACTER           11980000                
       B     CSXBMP                    GO LOOK AT NEXT CHARACTER        11990000                
CSXEXT EQU   *                         *                                12000000                
CSXXR2 LA    #,XR2                     RESTORE XR2                      12010000                
CSXARR B     #                         RETURN TO CALLER                 12020000                
CSXCNT DC    XL2'0'                    SCRATCH AREA FOR COUNT           12030000                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S Q M O V)'     12040000                
*********************************************************************** 12050000                
*                                                                     * 12060000                
*  NAME: CSQMOV                                                       * 12070000                
*                                                                     * 12080000                
*  FUNCTION: MOVE DATA TO TP BUFFER FROM USER PROGRAM AREA OR FROM    * 12090000                
*            SYSTEM AREA (TRANSIENT AREA)                             * 12100000                
*                                                                     * 12110000                
*  INPUT: XR1--> PL                                                   * 12120000                
*         XR2--> NO MATTER                                            * 12130000                
*                                                                     * 12140000                
*  OUTPUT: XR1--> PL                                                  * 12150000                
*          XR2--> RESTORED                                            * 12160000                
*          DATA MOVED TO TP BUFFER                                    * 12170000                
*                                                                     * 12180000                
*  EXIT: RETURN TO CALLER                                             * 12190000                
*                                                                     * 12200000                
*                                                                     * 12210000                
*********************************************************************** 12220000                
       SPACE 2                                                          12230000                
CSQMOV EQU   *                         *                                12240000                
       CCP   MASK,PMR                  MASK INTERRUPTS                  12250000                
       ST    MOVARR+3,ARR              SAVE THE RETURN ADDRESS          12260000                
       ST    MOVXR2+3,XR2              SAVE XR2                         12270000                
       MVI   CS#MVL+MVLTYP,NOBIT       MAKE IT A SYSTEM REQUEST         12280000                
       MVC   CS#MVL+MVLFRA,PLRECA(2,PL) PUT FROM ADDR. IN MOVE LIST     12290000                
       TBN   PLOPM(,PL),OP$SYS         SYSTEM OP?                       12300000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       12310000                
       JT    MOVMOV                    YES - GO PERFORM THE MOVE        12320000                
       SPACE 1                                                          12330000                
* HAVE A USER PL - SET SO MOVE ROUTINE WILL SWAP ATR'S                  12340000                
       MVI   CS#MVL+MVLTYP,SWAPFR      FROM ADDR. IS IN UPA             12350000                
       L     TUBTCB(,TUB),XR2          XR2--> TCB OF OWNER              12360000                
       MVC   CS#MVL+MVLFRA,TCBWK(2,XR2) FROM ADDR. IS IN UPA            12370000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       12380000                
MOVMOV EQU   *                         *                                12390000                
       MVC   PLRECA(2,PL),GMLIST+GMADDR GETMAINED ADDR. INTO PL         12400000                
       ALC   PLRECA(2,PL),X$0004       ADD 4 TO GET RECORD ADDR.        12410000                
       MVC   CS#MVL+MVLTOA,PLRECA(2,PL) TO ADDR IS TPBUFFER             12420000                
       MVC   CS#MVL+MVLTOL,PLOUTL(2,PL) LENGTH IS PLOUTL (TO LENGTH)    12430000                
       MVC   CS#MVL+MVLFRL,PLOUTL(2,PL) LENGTH IS PLOUTL (FROM LENGTH)  12440000                
       MVC   CS#MVL+MVLTCB,TUBTCB(2,TUB) TCB ADDR. OF OWNER IN MOVE PL  12450000                
       LA    CS#MVL,XR2                XR2--> MOVE LIST                 12460000                
       B     CC4MX                     GO TO THE MOVE ROUTINE           12470000                
MOVXR2 LA    #,XR2                     RESTORE XR2                      12480000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 12490000                
MOVARR B     #                         RETURN TO CALLER                 12500000                
       AIF   (&CSIO EQ '1').PT280                                       12500050                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S W A T E)'     12500250                
*********************************************************************** 12500300                
*                                                                     * 12500350                
*  NAME: CSWATE                                                       * 12500400                
*                                                                     * 12500450                
*  FUNCTION: GO TO BSCC OR PORT WAIT ROUTINE                          * 12500500                
*                                                                     * 12500550                
*  INPUT: XR1--> PL                                                   * 12500600                
*         XR2--> CLB                                                  * 12500650                
*                                                                     * 12500700                
*  OUTPUT: XR1--> SAME                                                * 12500750                
*          XR2--> SAME                                                * 12500800                
*                                                                     * 12500850                
*  EXIT: RETURN TO CALLER                                             * 12500900                
*                                                                     * 12500950                
*                                                                     * 12501000                
*********************************************************************** 12501050                
CSWATE ST    CSWARR+3,ARR              SAVE RETURN ADDRESS              12501100                
       CLI   CLBDEV(,CLB),DEVSIO       PORT DEVICE                      12501150                
       JE    CSWPWT                    YES,SKIP BSCC WAIT               12501200                
       B     YMWAIT                    GO TO BSCC WAIT                  12501250                
       J     CSWARR                    RETURN TO CALLER                 12501300                
CSWPWT B     CSENCK                    GO TO SIOC WAIT ROUTINE          12501350                
       ALC   CTR5(3),X$0001            +1 TO NUMBER OF OUTPUT OPENDS    12501400                
* A 34 RETURN CODE FROM DATA MANAGEMENT MEANS THE SAME AS A 40.         12501450                
* THE 34 RETURN IS USED BY BATCH PROCESSING(SUBR17).                    12501500                
       CLI   CLBCMP(,CLB),CMPTUC       DATA TRUNCATED RETURN CODE       12501550                
       JNE   CSWARR                    NO                               12501600                
       MVI   CLBCMP(,CLB),CMPEND       SET TO 40 RETURN CODE            12501650                
CSWARR B     #                         RETURN TO CALLER                 12501700                
.PT280 ANOP                                                             12501720                
       AIF   (&CSIO EQ '1').PT290                                       12501758                
       AGO   .PT300                                                     12501766                
.PT290 ANOP                                                             12501774                
       AIF   (&NCPOR).PT310                                             12501782                
.PT300 ANOP                                                             12501790                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S Y Q D T)'     12501800                
*********************************************************************** 12501850                
*                                                                     * 12501900                
*  NAME: CSYQDT                                                       * 12501950                
*                                                                     * 12502000                
*  FUNCTION: PORT INPUT DATA THAT DOES NOT HAVE A USER PARM LIST      * 12502050                
*         IS PUT ON A QUEUE THAT STARTS IN TUB (TUBDCH)               * 12502100                
*         EACH BLOCK IS Q'D UNTIL THE USER REQUESTS THE DATA OR       * 12502150                
*         UNTIL THE DATA IS PURGED                                    * 12502200                
*                                                                     * 12502250                
*  INPUT: XR1--> PL                                                   * 12502300                
*         XR2--> NO MATTER                                            * 12502350                
*                                                                     * 12502400                
*  OUTPUT: XR1--> SAME                                                * 12502450                
*          XR2--> RESTORED                                            * 12502500                
*                                                                     * 12502550                
*  EXIT: RETURN TO CALLER                                             * 12502600                
*                                                                     * 12502650                
*                                                                     * 12502700                
*********************************************************************** 12502750                
CSYQDT ST    CSYARR+3,ARR              SAVE RETURN ADDRESS              12502800                
       ST    CSYXR2+3,XR2              SAVE XR2                         12502850                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       12502900                
       LA    TUBDCH-TPXCHN(,TUB),XR2   XR2--> DATA Q IN TUB             12502950                
CSYNXT CLI   TPXCHN-1(,XR2),NOBIT      END OF Q                         12503000                
       JE    CSYQIT                    YES, PUT NEW ENTRY ON Q          12503050                
       L     TPXCHN(,XR2),XR2          XR2--> NEXT ENTRY ON Q           12503100                
       A     BCKREG,XR2                *                                12503150                
       B     CSYNXT                    TRY FOR END OF Q                 12503200                
CSYQIT MVC   TPXCHN(2,XR2),PLRECA(,PL) CHAIN IN TPBUFF DATA             12503250                
       L     TPXCHN(,XR2),XR2          XR2 --> NEW DATA IN TPBUFF       12503300                
       A     BCKREG,XR2                XR2 --> START OF TPBUFF AREA     12503350                
       MVC   TPXRTC(2,XR2),PL$RTC(,PL) RETURN CODE TO TPBUFF SAVE AREA  12503400                
CSYXR2 LA    #,XR2                     RESTORE XR2                      12503450                
CSYARR B     #                         RETURN TO CALLER                 12503500                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S Z U D T)'     12503600                
*********************************************************************** 12503650                
*                                                                     * 12503700                
*  NAME: CSZUDT                                                       * 12503750                
*                                                                     * 12503800                
*  FUNCTION: TAKE A MSG MODE MSG OF DATA OFF THE PORT INPUT DATA Q.   * 12503850                
*         EACH TIME THE USER REQUEST'S DATA THRU A PARM LIST,         * 12503900                
*         THIS MODULE WILL GIVE HIM 1 OF THESE BLOCKS. ALSO WILL PUT  * 12503950                
*         THE DATA ADDRESS INTO PLRECA                                * 12504000                
*                                                                     * 12504050                
*  INPUT: XR1--> PL                                                   * 12504100                
*         XR2--> NO MATTER                                            * 12504150                
*                                                                     * 12504200                
*  OUTPUT: XR1--> PL                                                  * 12504250                
*          XR2--> RESTORED                                            * 12504300                
*                                                                     * 12504350                
*  EXIT: RETURN TO CALLER                                             * 12504400                
*                                                                     * 12504450                
*                                                                     * 12504500                
*********************************************************************** 12504550                
CSZUDT ST    CSZARR+3,ARR              SAVE RETURN ADDRESS              12504600                
       ST    CSZXR1+3,XR1              SAVE XR1                         12504650                
       ST    CSZXR2+3,XR2              SAVE XR2                         12504700                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       12504750                
       MVC   PLRECA(2,PL),TUBDCH(,TUB) DATA ADDRESS INTO PL             12504800                
       L     TUBDCH(,TUB),XR2          XR2--> FIRST DATA BLOCK          12504850                
       A     BCKREG,XR2                *                                12504900                
       MVC   PL$RTC(2,PL),TPXRTC(,XR2) USER RETURN CODE TO PL           12504950                
       MVC   PLEFFL(2,PL),TPXDLN(,XR2) EFFECTIVE INPUT LENGTH TO PL     12505000                
       TBN   PLOPM(,PL),OP$SYS         SYSTEM OPCODE                    12505050                
       JF    CSZUSR                    NO                               12505100                
       MVC   PLINL(2,PL),TPXFRL(,XR2)  LENGTH GETMAIN AREA              12505150                
       SLC   PLINL(2,PL),X$0004        -4 FOR 1 GET/FREE PARM           12505200                
       J     CSZCHN                    GO SET CHAIN ADDRESS             12505250                
CSZUSR EQU   *                         *                                12505300                
       TBN   TPXPID(,XR2),TPXCMD       COMMAND DATA                     12505350                
       JF    CSZCHK                    NO                               12505400                
       SBN   CSSWIT,CSSCMD             INDICATE COMMAND DATA TO USER    12505450                
       J     CSZXR1                    RETURN TO CALLER                 12505500                
CSZCHK EQU   *                         *                                12505550                
       CLC   PLEFFL(2,PL),PLINL(,PL)   CHECK IF TOO MUCH DATA           12505600                
       JNH   CSZCHN                    NO                               12505650                
       SBN   PL$RTC(,PL),RCXDTR        SET DATA TRUNCATED RETURN CODE   12505700                
       MVC   PLEFFL(2,PL),PLINL(,PL)   MAX INPUT FOR THIS USER          12505750                
CSZCHN EQU   *                         *                                12505800                
       L     PLTUBA(,PL),XR1           XR1--> TUB                       12505850                
* THIS WILL PUT ZERO'S IN TUBDCH, IF NO MORE ON CHAIN                   12505900                
       MVC   TUBDCH(2,XR1),TPXCHN(,XR2) CHAIN ADDRESS(IF PRESENT)TO TUB 12505950                
CSZXR1 LA    #,XR1                     RESTORE XR1                      12506000                
CSZXR2 LA    #,XR2                     RESTORE XR2                      12506050                
CSZARR B     #                         RETURN TO CALLER                 12506100                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S (C S H P S I)'     12506200                
*********************************************************************** 12506250                
*                                                                     * 12506300                
*  NAME: CSHPSI                                                       * 12506350                
*                                                                     * 12506400                
*  FUNCTION: FILL IN PLINL VALUE FOR PORT SYSTEM GETS                 * 12506450                
*                                                                     * 12506500                
*  INPUT: XR1--> PL                                                   * 12506550                
*         XR2--> CLB                                                  * 12506600                
*                                                                     * 12506650                
*  OUTPUT: XR1--> PL                                                  * 12506700                
*          XR2--> CLB                                                 * 12506750                
*                                                                     * 12506800                
*  EXIT: RETURN TO CALLER                                             * 12506850                
*                                                                     * 12506900                
*                                                                     * 12506950                
*********************************************************************** 12507000                
CSHPSI ST    CSHARR+3,ARR              SAVE RETURN ADDRESS              12507050                
       MVI   CSTPBF-1,NOBIT            CLEAR FIRST BYTE                 12507100                
       MVC   CSTPBF(1),#PCTLN          MAX PCT LENGTH                   12507150                
       ALC   CSTPBF,CLBMCL(2,CLB)      ADD MAX MESSAGE LENGTH           12507200                
       ALC   CSTPBF(2),LNTHCC          LENGTH OF CONTROL INFORMATION    12507250                
       TBN   PL$OPC(,PL),OPSYS         SYSTEM OP                        12507300                
       JF    CSHARR                    NO, DO NOT CHANGE USER PLINL     12507350                
       MVC   PLINL(2,PL),CSTPBF        SETUP SYSTEM OP PLINL            12507400                
CSHARR B     #                         RETURN TO CALLER                 12507450                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S '                  12507550                
*********************************************************************** 12507600                
*          CONSTANTS AND MISCELLANEOUS EQUATES FOR PORT MANAGER       * 12507650                
*********************************************************************** 12507700                
       SPACE 1                                                          12507750                
* DUMMY PARM LIST TO DO A GET AT OPEND TIME, IF NO NORMAL PL FOUND      12507800                
PRMDMY EQU   *                         *                                12507850                
       DC    2XL1'00'                  CHAIN ADDRESS                    12507900                
       DC    XL1'00'                   USER REQUEST                     12507950                
       DC    AL1(OPDMY)                MESSAGE MODE INPUT, DUMMY PL BIT 12508000                
       DC    2XL1'00'                  EFFECTIVE INPUT LENGTH           12508050                
       DC    2XL1'00'                  MAXIMUM INPUT LENGTH             12508100                
       DC    2XL1'00'                  RECORD AREA ADDRESS              12508150                
       DC    2XL1'00'                  TUB ADDRESS                      12508200                
       DC    AL1(OPDMY-OPMSG)          INTERNAL OPCODE AREA             12508250                
       DC    AL1(OPDMY-OPMSG)          INTERNAL OPCODE AREA             12508300                
       DC    3XL1'00'                  ECB FOR THE REQUEST              12508350                
       SPACE                                                            12508400                
* EQUATES AND CONSTANTS                                                 12508450                
@PRMDY DC    AL2(PRMDMY)               ADDRESS PORT DUMMY PARM LIST     12508500                
BCKREG DC    AL2(-TPXLNG)              LENGTH TO BACK REG TO PL INFO    12508550                
LNTHCC DC    AL2(TPXLNG-4)             PARM INFO LENGTH+ 1 GET/FREE PRM 12508600                
X$0003 DC    XL2'0003'                 CONSTANT OF 3                    12508620                
PRTWRK DC    2XL1'00'                  2-BYTE ADD AREA FOR PCT LENGTH   12508650                
PORTAR DC    XL2'0000'                 TAR LOCATION USED BY PORT        12508670                
CTR1   DC    3XL1'00'                  STATISTICS:# OF 43 AND 49 CODES  12508700                
CTR2   DC    3XL1'00'                  STATISTICS:# OF 43 COMP CODES    12508750                
CTR3   DC    3XL1'00'                  STATISTICS:# DATA GOES TO TPBUFF 12508800                
CTR4   DC    3XL1'00'                  STATISTICS:# OF INPUT OPENDS     12508850                
CTR5   DC    3XL1'00'                  STATISTICS:# OF OUTPUT OPENDS    12508900                
CTR6   DC    3XL1'00'                  STATISTICS:# TIMES HAVE TO GET   12508950                
.PT310 ANOP                                                             12509150                
       TITLE '$ E 1 8 0 - C S  S U B R O U T I N E S '                  12510000                
*********************************************************************** 12520000                
*          CONSTANTS AND MISCELLANEOUS EQUATES FOR COM MANAGER        * 12530000                
*********************************************************************** 12540000                
       SPACE 1                                                          12550000                
MASK   EQU   PMRI12+PMRPRV+PMRINT      MASK INTERRUPTS                  12560000                
UNMASK EQU   PMRI12+PMRPRV             UNMASK INTERRUPTS                12570000                
TTMRIB EQU   22                        STOP TIMER RIB                   12580000                
STMRIB EQU   21                        START TIMER RIB                  12590000                
PSTRIB EQU   5                         POST RIB                         12600000                
CCPRIB EQU   1                         CCP RIB                          12610000                
       SPACE 1                                                          12620000                
EBCLER EQU   X'6D'                     EBCDIC CLEAR AID CHARACTER       12630000                
ASCLER EQU   X'5F'                     ASCII CLEAR AID CHARACTER        12640000                
AIDCHR EQU   2                         DISPLACEMENT OF 3270 AID CHAR.   12650000                
       SPACE 1                                                          12660000                
SWAPTO EQU   2                         TO ADDRESS IS USER PGM AREA      12670000                
SWAPFR EQU   1                         FROM ADDRESS IS USER PGM AREA    12680000                
HEX512 EQU   2                         CONSTANT FOR 512 BYTES           12690000                
WCC    EQU   2                         DISPLACEMENT OF WCC IN PLRECA    12692000                
STPRT  EQU   X'08'                     START PRINT BIT IN WCC           12694000                
I0002  EQU   X'02'                     USED TO SET LOOP COUNT = 2       12696000                
FC     EQU   X'FC'                     CAUSES A FALSE CONDITION IF      12700000                
*                                      GREATER THAN THREE               12710000                
       SPACE 1                                                          12720000                
FLSNLO EQU   X'95'                     FALSE OR HIGH OR EQUAL COND.     12730000                
FLSOEQ EQU   X'91'                     FALSE OR EQUAL COND.             12740000                
FLSONE EQU   X'96'                     FALSE OR NOT EQUAL COND.         12750000                
FLSOHI EQU   X'94'                     FALSE OR HIGH COND               12760000                
TRUALO EQU   X'15'                     TRUE AND LOW CONDITION           12770000                
TRUANL EQU   X'12'                     TRUE AND NOT LOW CONDITION       12780000                
TRUAEQ EQU   X'16'                     TRUE AND EQUAL COND.             12790000                
OPSYS  EQU   X'20'                     SYSTEM OP (IF ON IN PL$OPC)      12800000                
       SPACE 2                                                          12810000                
* EQUATES FOR THE BSCC POLL LIST                                        12820000                
POLID  EQU   0                         DISPLACEMENT OF ID               12830000                
POLLTH EQU   1                         DISPLACEMENT OF LENGTH           12840000                
POLADR EQU   2                         DISPLACEMENT OF ADDRESS          12850000                
POLSTS EQU   2                         USED TO ADDRESS STATUS BYTE      12860000                
POLSKP EQU   128                       POLL SKIP BIT IN STATUS BYTE     12870000                
POLNXT EQU   3                         USED TO GET TO NEXT ENTRY        12880000                
POLEND EQU   240                       END OF LIST INDICATOR            12890000                
       SPACE 1                                                          12900000                
GMLIST EQU   *                         GETMAIN PARM LIST                12910000                
       DS    XL2                       ADDRESS RETURNED BY CC4GM        12920000                
       DS    XL2                       LENGTH OF AREA REQUESTED         12930000                
GMSIZE EQU   3                         RIGHTMOST BYTE OF GM PL          12940000                
GMADDR EQU   1                         ADDRESS OF GETMAINED AREA        12950000                
       SPACE 1                                                          12960000                
* TIMER PARM LIST (IOB)                                                 12970000                
*                                                                       12980000                
*    |FLG|         TIME          |    ECB    |                          12990000                
*    |   |                       |           |                          13000000                
*    |---|---|---|---|---|---|---|---|---|---|                          13010000                
CSTIMR EQU   *                         START OF TIMER IOB               13020000                
TIMFLG EQU   0                         TIMER FLG BYTE                   13030000                
       DC    XL1'02'                   02=TIMER UNITS,FF=CANCEL TIME    13040000                
TIMTIM EQU   6                         RIGHTMOST BYTE OF TIME FIELD     13050000                
       DC    XL6'000000000258'         INIT TO 2 SECONDS                13060000                
TIMECB EQU   7                         LEFTMOST BYTE OF TIMER ECB       13070000                
       DC    3XL1'0'                   TIMER ECB                        13080000                
CSTECB EQU   CSTIMR+TIMECB             ADDRESS OF TIMER ECB             13090000                
       SPACE 1                                                          13100000                
CSOWNS DC    AL2(0)                    TCB ADDRESS OF LINE OWNER        13110000                
CCPUT  DC    XL1'02'                   OP CODE TO PUT A CLEAR MSG.      13120000                
OLTLNG DC    AL2(7)                    LENGTH OF OLT REQ PARM LIST      13130000                
PLGMLG DC    AL2(PLLEN+4)              LENGTH TO USE FOR PARM LIST GM   13140000                
PLGMLN DC    AL2(PLLEN+1)              PARM LIST GM LENGTH-USER PUTU@13 13145000                
       SPACE 1                                                          13150000                
CSSWIT EQU   *                         INTERNAL SWITCH FOR CS           13160000                
       DC    AL1(VALOPE)               INITIALIZED TO OP END OCCURRED   13170000                
CSNDCR EQU   BIT0                      INTERNAL FREEMAIN INDICATOR      13180000                
CSNRIP EQU   BIT1                      NEQ REQUEST IN PROCESS           13190000                
CSRESH EQU   BIT2                      OK TO RESCHEDULE THIS LINE       13200000                
VALOPE EQU   BIT3                      OP END OCCURRED                  13210000                
CSSGET EQU   BIT4                      NEED TO DO A GET                 13212000                
CSSPRM EQU   BIT5                      ON IF FOUND NEW REQUEST PL       13214000                
CSSCMD EQU   BIT6                      COMMAND DATA FOR USER PARM LIST  13216000                
       SPACE 1                                                          13220000                
LNTHSS DC    XL2'0007'                 LENGTH OF A STATUS MESSAGE       13230000                
X0000  DC    4XL1'0'                   CONSTANT OF 0,LENGTH OF 4        13240000                
X0100  DC    XL2'0100'                 CONSTANT OF 256,LENGTH OF 2      13250000                
X$012C DC    XL2'012C'                 CONSTANT OF 300,LENGTH OF 2      13260000                
X0200  DC    XL2'0200'                 CONSTANT OF 512,LENGTH OF 2      13270000                
RND2K  DC    XL2'07FF'                 CONSTANT TO ROUND TO 2K      @13 13273000                
BND2K  EQU   X'07'                     EQUATE TO ROUND TO 2K        @13 13276000                
DEC99  DC    2XL1'F9'                  CONSTANT OF DECIMAL 99,LENGTH 2  13280000                
       SPACE 1                                                          13290000                
CSTPBF DC    XL2'0'                    SAVE AREA FOR TPBUFF SIZE        13300000                
CSTMPL DC    CL2'TT'                   SAVE AREA FOR PL CHAIN PNTR      13310000                
CSSCLB DC    AL2(0)                    SAVE AREA FOR CURRENT CLB ADDR.  13320000                
CSSPL  DC    AL2(0)                    SAVE AREA FOR CURRENT PL ADDR.   13330000                
CSNWPL DC    AL2(0)                    SAVE AREA FOR NO-WAIT PL ADDR.   13340000                
CSINDD DC    AL2(CSININ)               RETURN @ FROM DISPATCHER         13345000                
       SPACE 1                                                          13350000                
CSDMES DC    &DMESTR                   DATA MODE ESCAPE CHARACTERS      13360000                
CSMANT EQU   *                                                          13370000                
       DC    3CL20'CS MAINTENANCE AREA '  MAINTENANCE AREA FOR CS       13380000                
       MEND                                                             13390000