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

⟦3bddaaaad⟧ s3xseg

    Length: 35560 (0x8ae8)
    Types: s3xseg
    Names: »S$E090«

Derivation

└─⟦827b5bd03⟧ Bits:30009184 5702-sc1.V16.ccp
    └─⟦f17e99db6⟧ 
        └─⟦this⟧ »S$E090« 

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00020000                
.* NAME: $E090        V-15, M-00.                                     * 00040000                
.********************************************************************** 00650000                
       $E090 &GEN-                                                      00660000                
       GBLB  &ONE,&NOB,&NOM,&MIN,&N1050,&NSCTL,&MOD4,&BPRT            *L00670000                
       GBLB  &NPP,&NMP,&NSWL,&NCS,&NITB,&NTSP,&N32,&N37,&N41,&NRUF      00690000                
       LCLA  &MIX                                                       00710000                
       TEXT                                                             00720000                
* R-15,C-00 CHANGE LEVEL                                                00730000                
       AIF   (&GEN EQ 'SET').G0100                                      00740000                
       TITLE '$E090/CMSTOR---GETMAIN-SIZE-DETERMINATION'                00750000                
*      PRINTER BUSY FLAG        1/20/78                               *L00755000                
*********************************************************************** 00760000                
*                                                                     * 00770000                
* NAME--CMSTOR                                                        * 00780000                
*                                                                     * 00790000                
*    TITLE--GETMAIN SIZE DETERMINATION                                * 00800000                
*                                                                     * 00810000                
*    FUNCTION--THIS ROUTINE CALCULATES THE AMOUNT OF MAIN STORAGE     * 00820000                
*              NEEDED FOR A PARTICULAR TYPE OF TP REQUEST.            * 00830000                
*                                                                     * 00840000                
*    OPERATION--                                                      * 00850000                
*               . ALWAYS ADD FOUR BYTES FOR THE GETMAIN PARM LIST.    * 00860000                
*               . IF A PUT OPERATION ADD PLOUTL.                      * 00870000                
*               . IF A PUT THEN GET OPERATION ADD 16 FOR THE TP       * 00880000                
*                 PARAMETER LIST.                                     * 00890000                
*               . IF A POLL FOR STATUS OPERATION ADD 20.              * 00900000                
*               . IF SYSTEM INVITE ONLY ADD CC#MCL, AND MOVE CC#MCL   * 00910000                
*                 INTO PLINL.                                         * 00920000                
*               . IF USER INVITE ONLY ADD PLINL.                      * 00930000                
*                                                                     * 00940000                
*    INPUT--                                                          * 00950000                
*           XR1--ADDRESS OF THE TP PARAMETER LIST.                    * 00960000                
*           XR2--ADDRESS OF THE DTF FOR THE TP PARAMETER LIST.        * 00970000                
*                                                                     * 00980000                
*    OUTPUT--                                                         * 00990000                
*            XR1--NOT ALTERED                                         * 01000000                
*            XR2--NOT ALTERED                                         * 01010000                
*            #BUFND--TOTAL AMOUNT OF STORAGE NEED FOR THE TP REQUEST. * 01020000                
*                                                                     * 01030000                
*    EXIT--                                                           * 01040000                
*          TO NSI OF CALLER.                                          * 01050000                
*                                                                     * 01060000                
*********************************************************************** 01070000                
       SPACE                                                            01080000                
CMSTOR EQU   *                         DETERMINE STORAGE NEEDED BY OP   01090000                
*                                      IN PARM LIST PASSED IN XR1       01100000                
       SPACE                                                            01110000                
       AIF   (&NOB).NB010                                               01120000                
       AIF   (&MIN).N0010                                               01130000                
.NB010 ANOP                                                             01140000                
.*  FOLLOWING CODE WILL BE IN $CC4B2 FOR MIN RES                        01150000                
       ST    CMSTOX+3,ARR              SAVE RETURN ADDRESS              01160000                
       MVC   #BUFND(2),CC0004          ADD 4 FOR GETMN LIST             01170000                
       SPACE                                                            01180000                
* DETERMINE IF IT IS A PUT OPERATION                                    01190000                
       SPACE                                                            01200000                
       TBN   PL$OPM(,XR1),OPPUT        IS CURRENT OP A PUT              01210000                
       JT    CMSPUT                    JUMP IF IT IS A PUT              01220000                
       SPACE                                                            01230000                
* OPERATION IS INVITE INPUT                                             01240000                
* DETERMINE WHETHER IT IS SYSTEM OR USER REQUEST                        01250000                
       SPACE                                                            01260000                
       AIF   (&NOB).C0556                                               01270000                
&MIX   SETA  &N32+&N37+&N41                                             01280000                
       AIF   (&MIX EQ '3').T1100                                        01290000                
*                            ------------------------>  START  -->  @01 01295000                
       AIF   (&ONE).C0554                                               01300000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                0/5/7B 01310000                
.C0554 ANOP                                                             01320000                
       TBN   PL$OPC(,PL),OPLSNS        AND POLL FOR STATUS ?     0/5/7B 01330000                
       JF    CMSUSR                    NO-GO CHECK WHO IS USER.  0/5/7B 01340000                
       ALC   #BUFND(2),RELSNS          USE RECL FOR SNS OPER.    0/5/7B 01350000                
       J     CMSTOX                    GO TO EXIT.               0/5/7B 01360000                
       SPACE                                                            01370000                
CMSUSR EQU   *                         *                         0/5/7B 01380000                
*                            -------------------------->  END -->   @01 01385000                
.C0556 ANOP                                                             01390000                
.T1100 ANOP                                                             01400000                
       TBN   PLOPM(,XR1),OP$SYS        IS IT SYSTEM REQUEST             01410000                
       JF    CMSTOY                    JUMP IF USER REQUEST             01420000                
       AIF   (&BPRT).BP300             PRINTER BUSY CODE              *L01420500                
       AGO   .BP400                                                   *L01421000                
.BP300 ANOP                                                           *L01421500                
       L     PLTUBA(,PL),XR2           XR2--> TUB                     *L01422000                
       TBN   TUBAT4(,XR2),TUBBSY       IS THIS A BUSY PRINTER ?       *L01422500                
       JF    CMSNPR                    NO - SET INPUT LENGTH          *L01423000                
       L     TUBDTF(,XR2),DTF          XR2 --> DTF                    *L01423500                
       TBF   $BDATR(,DTF),$BCMPT       CONTROL STATION LINE ?         *L01424000                
       JT    CMSNPR                    NO - DONT CHANGE LOOP COUNT    *L01424500                
       MVI   $BDCNT(,DTF),X'02'        SET LOOP COUNT TO TWO TIMES    *L01425000                
       TBN   $BDDEV(,DTF),LINE2        THIS LINE TWO DTF ?            *L01425500                
       L     $BDWKA(,DTF),XR2          XR2 --> WORKAREA               *L01426000                
       TBN   $BWKMC(,XR2),X'01'        IS DA WORKING NOW ?            *L01426500                
       L     PLTUBA(,PL),XR2           XR2 --> TUB.                   *L01427000                
       L     TUBDTF(,XR2),DTF          XR2 --> DTF.                   *L01427500                
       JF    CMSNPR                    NO - LEAVE LOOP COUNT AT TWO.  *L01428000                
       MVI   $BDCNT(,DTF),$BFOX        ELSE MAKE LOOP CONTINUOUS      *L01428500                
CMSNPR EQU   *                                                        *L01429000                
.BP400 ANOP                            END PRINTER BUSY CODE          *L01429500                
       SPACE                                                            01430000                
       AIF   (&NRUF).T0101                                              01430700                
*                                      -----START-------------------@06 01431400                
*   IF RUF ON SCREEN, USE MAX RUF LENGTH AS SYSTEM INPUT LENGTH.        01432100                
       L     PLTUBA(,PL),XR2           XR2->TUB.                        01432800                
       TBN   TUBSCS(,XR2),TUBRUF       RUF ON THE SCREEN ?              01433500                
       LA    $CCCOM,XR2                XR2->CCP COMM AREA.              01434200                
       MVC   PLINL(2,PL),#RUFCL(,XR2)  USE MAX RUF LENGTH.              01434900                
       L     PLTUBA(,PL),XR2           XR2->TUB.                        01435600                
       L     TUBDTF(,XR2),DTF          DTF->DTF.                        01436300                
       JT    CMSTOY                    GO EXIT FROM SUBROUTINE.         01437000                
*                                      -----END---------------------@06 01437700                
.T0101 ANOP                                                             01438400                
       SPACE                                                            01440000                
* HAVE SYSTEM INVITE INPUT                                              01450000                
* USE MAXIMUM COMMAND LENGTH AS THE INPUT LENGTH                        01460000                
       SPACE                                                            01470000                
       EXTRN CC#MCL                                                     01480000                
       MVC   PLINL(2,XR1),CC#MCL       MOVE MAX COMMAND LENGTH TO PARM  01490000                
       SPACE                                                            01500000                
CMSTOY EQU   *                         ADD INPUT LENGTH                 01510000                
       ALC   #BUFND(2),PLINL(,XR1)     ADD INPUT LENGTH                 01520000                
       J     CMSTOX                    JUMP TO RETURN                   01530000                
       SPACE                                                            01540000                
* HAVE PUT OPERATION                                                    01550000                
* ADD OUTPUT LENGTH SPECIFIED IN PARAMETER LIST                         01560000                
       SPACE                                                            01570000                
CMSPUT EQU   *                         HAVE PUT OPERATION               01580000                
       ALC   #BUFND(2),PLOUTL(,XR1)    ADD OUTPUT LENGTH                01590000                
       SPACE                                                            01600000                
* DETERMINE WHETHER REQUEST INVOLVES A READ OR IF IT IS PUT-NO-WAIT.    01610000                
* FOR PURE PUT NO WAIT ADD THE LENGTH OF A TP PARAMETER LIST            01620000                
       SPACE                                                            01630000                
       TBN   PLOPC(,XR1),OPGET         IS IT PUT THEN GET               01640000                
       JT    CMSTOX                    JUMP IF NOT PURE PUT NO WAIT     01650000                
       SPACE                                                            01660000                
* HAVE PUT NO WAIT WHICH REQUIRES SAVING OF THE TP PARAMETER LIST       01670000                
       SPACE                                                            01680000                
       ALC   #BUFND(2),CMLNPL          ADD PARM LIST LENGTH             01690000                
       SPACE                                                            01700000                
CMSTOX B     *-*                       RETURN                           01710000                
       AGO   .G0100                                                     01720000                
.N0010 MVI   CMID2,CTSTOR              MOVE IN ID OF CODED NEEDED       01730000                
CMCAL2 ST    CMSTR@+3,ARR              SAVE RETURN ADDRESS              01740000                
       ST    CMX1S2,XR1                SAVE XR1 (PARAMETER LIST ADDR)   01750000                
       B     $CC4PI                    CALL TRANSIENT HANDLER           01760000                
       DC    AL1(CC4B2)                TRANSIENT REQUEST FOR $CC4B2     01770000                
CMID2  DC    XL1'00'                   KEY FOR TYPE CODE WANTED         01780000                
CMX1S2 DC    XL2'00'                   PARAMETER LIST ADDRESS           01790000                
#BUFND DC    XL2'00'                   STORAGE SIZE NEEDED FOR LINE.    01800000                
SAVT2@ DC    AL2(SAVTA2)               ADDRESS OF SAVE TAS BYTE 2.      01810000                
CMSTR@ B     #                         RETURN TO CALLER.                01820000                
.G0100 ANOP                                                             01830000                
       TITLE '$E090/CMSET---FORMAT-PUT-NO-WAIT-AREA'                    01840000                
*********************************************************************** 01850000                
*                                                                     * 01860000                
* NAME--CMSET                                                         * 01870000                
*                                                                     * 01880000                
*    TITLE--FORMAT PUT NO WAIT AREA                                   * 01890000                
*                                                                     * 01900000                
*    FUNCTION--                                                       * 01910000                
*              THIS ROUTINE WILL FORMAT A STORAGE AREA FOR A PUT NO   * 01920000                
*              WAIT OPERATION.                                        * 01930000                
*                                                                     * 01940000                
*    OPERATION--                                                      * 01950000                
*               . IF A SYSTEM PUT NO WAIT THEN GET OPERATION MOVE THE * 01960000                
*                 TP PARAMETER LIST INTO THE TUB.                     * 01970000                
*               . IF ANY OTHER PUT NO WAIT MOVE THE TP PARAMETER LIST * 01980000                
*                 INTO THE FIRST PART OF THE GETMAINED AREA.          * 01990000                
*               . MOVE THE GETMAIN PARAMETER LIST INTO THE ACQUIRED   * 02000000                
*                 AREA.                                               * 02010000                
*               . FINALLY, MOVE THE DATA INTO THE ACQUIRED AREA.      * 02020000                
*                                                                     * 02030000                
*    ENTRY POINT--CMSET                                               * 02040000                
*                                                                     * 02050000                
*    INPUT--                                                          * 02060000                
*           XR1-ADDRESS OF THE TP PARAMETER LIST.                     * 02070000                
*           XR2-SAVED AND RESTORED.                                   * 02080000                
*           GMLIST-GETMAIN PARAMETER LIST.                            * 02090000                
*                                                                     * 02100000                
*    OUTPUT--                                                         * 02110000                
*            XR1-ADDRESS OF THE TP PARAMETER LIST.                    * 02120000                
*            XR2-RESTORED TO ENTRY VALUE.                             * 02130000                
*            GETMAIN AREA-FORMATTED AS DEFINED ABOVE.                 * 02140000                
*                                                                     * 02150000                
*    EXTERNAL REFERENCES--                                            * 02160000                
*                         $CC4MV-MOVE DATA INTO GETMAIN AREA FROM     * 02170000                
*                         USER TP PARAMETER LIST.                     * 02180000                
*                                                                     * 02190000                
*    EXIT--                                                           * 02200000                
*          TO NSI OF CALLER.                                          * 02210000                
*                                                                     * 02220000                
*********************************************************************** 02230000                
       SPACE                                                            02240000                
       AIF   (&NOB).NB020                                               02250000                
       AIF   (&MIN).N0050                                               02260000                
.NB020 ANOP                                                             02270000                
CMSET  EQU   *                         ROUTINE TO SET UP GETMAIN AREA   02280000                
*                                      FOR A PUT NO WAIT                02290000                
       SPACE                                                            02300000                
* INPUT IS THE PARM LIST ADDR IN XR1                                    02310000                
*  AND THE CONTENTS OF THE GETMAIN PARM LIST                            02320000                
       SPACE                                                            02330000                
* OUTPUT IS A FORMATTED STORAGE AREA                                    02340000                
       SPACE                                                            02350000                
       ST    CMSETX+3,ARR              SAVE THE RETURN ADDR             02360000                
       ST    CMSET2+3,XR2              SAVE XR2                         02370000                
       SPACE                                                            02380000                
       L     GMLIST+GMADDR,XR2         POINT XR2 AT GETMAIN AREA        02390000                
       SPACE                                                            02400000                
* DETERMINE IF OPERATION IS PUT THEN GET AND WHETHER THE TP PARM LIST   02410000                
* IS TO BE MOVED TO THE GETMAIN AREA                                    02420000                
       SPACE                                                            02430000                
       TBN   PLOPC(,XR1),OPGET         DOES OP INVOLVE GET              02440000                
       JT    CMSET7                    JUMP IF PUT THEN GET             02450000                
       SPACE                                                            02460000                
* MOVE THE TP PARM LIST TO THE STORAGE AREA                             02470000                
       SPACE                                                            02480000                
       MVC   PLLEN-1(PLLEN,XR2),PLLEN-1(,XR1) MOVE PARM LIST            02490000                
       LA    0(,XR2),XR1               POINT XR1 AT PARM LIST NOW IN    02500000                
*                                      THE GETMAINED AREA               02510000                
       LA    16(,XR2),XR2              BUMP XR2 TO POINT TO NEXT FREE   02520000                
*                                      BYTE                             02530000                
       SPACE                                                            02540000                
       SPACE                                                            02550000                
* NOW MOVE THE GETMAIN PARM LIST TO THE STORAGE AREA                    02560000                
       SPACE                                                            02570000                
CMSET7 EQU   *                         MOVE GETMAIN PARM LIST           02580000                
       MVC   3(4,XR2),GMLIST+GMSIZE    MOVE GETMAIN PARM LIST           02590000                
       LA    4(,XR2),XR2               BUMP XR2 TO NEXT FREE BYTE       02600000                
       SPACE                                                            02610000                
*HAVE PUT OPERATION SO MUST MOVE DATA TO GETMAIN AREA                   02620000                
* SET UP MOVE LIST AND BRANCH TO GENERALIZED MOVE ROUTINE               02630000                
       SPACE                                                            02640000                
       MVC   MVL+MVLTOL(2),PLOUTL(,XR1) MOVE LENGTH TO MOVE LIST        02650000                
       MVC   MVL+MVLFRA(2),PLRECA(,XR1) MOVE 'FROM' ADDR TO MOVE LIST   02660000                
       ST    MVL+MVLTOA,XR2            STORE 'TO' ADDR IN MOVE LIST     02670000                
       SPACE                                                            02680000                
       ST    PLRECA(,XR1),XR2          STORE 1ST BYTE OF RECORD ADDR    02690000                
*                                      IN PARM LIST RECORD AREA FIELD   02700000                
       SPACE                                                            02710000                
* DETERMINE IF THERE IS ANY DATA TO MOVE                                02720000                
       SPACE                                                            02730000                
       CLC   PLOUTL(2,XR1),CC0000      IS OUTPUT LENGTH EQUAL TO ZERO   02740000                
       JE    CMSET2                    IF LENGTH 0 SKIP MOVE AND RETURN 02750000                
       SPACE                                                            02760000                
       LA    MVL,XR2                   POINT XR2 AT MOVE LIST           02770000                
       SPACE                                                            02780000                
       B     $CC4MV                    BR TO MOVE ROUTINE               02790000                
       SPACE                                                            02800000                
CMSET2 LA    *-*,XR2                   RESTORE XR2                      02810000                
       ST    CMSPL,XR1                 SAVE ADDRESS OF NEW PARM LIST    02820000                
CMSETX B     *-*                       RETURN                           02830000                
.N0050 ANOP                                                             02840000                
       AIF   (&NOM).M1800                                               02850000                
       AIF   (&NSCTL).S5800                                             02860000                
       TITLE '$E090/CMONSK/CMOFSK---MLTA-POLL-SKIP-BIT-ROUTINE'         02870000                
*********************************************************************** 02880000                
*      MLTA INTERFACE ROUTINE FOR SETTING POLL SKIP BITS ON AND OFF   * 02890000                
*********************************************************************** 02900000                
*                                                                     * 02910000                
*                                                                     * 02920000                
* FUNCTION:                                                           * 02930000                
*                                                                     * 02940000                
*      THIS ROUTINE WILL TURN ON OR OFF AS DESIGNATED, THE POLLING    * 02950000                
*      SKIP BIT FOR AN MLTA TERMINAL ON A CONTROL STATION LINE        * 02960000                
*                                                                     * 02970000                
*      . A CHECK IS MADE TO ASSURE THAT THE MLTA DTF IS OPEN AND IS   * 02980000                
*      FOR A LINE WITH THE STATION CONTROL FEATURE                    * 02990000                
*                                                                     * 03000000                
*      . THE POLLING SKIP BIT FOR THE TERMINAL SPECIFIED BY THE       * 03010000                
*      PARAMETER LIST IS THEN SET ON OR OFF AS APPROPRIATE BY         * 03020000                
*      BRANCHING TO THE MLTA IOCS                                     * 03030000                
*                                                                     * 03040000                
* ENTRY POINTS:                                                       * 03050000                
*                                                                     * 03060000                
*      . CMONSK - TO SET ON THE POLLING SKIP BIT                      * 03070000                
*                                                                     * 03080000                
*      . CMOFSK - TO SET OFF THE POLLING SKIP BIT                     * 03090000                
*                                                                     * 03100000                
* INPUT:                                                              * 03110000                
*                                                                     * 03120000                
*      INDEX REGISTER 1 CONTAINS THE ADDRESS OF THE PARAMETER LIST    * 03130000                
*      FOR THE TERMINAL FOR WHICH THE SKIP BIT IS TO BE SET           * 03140000                
*                                                                     * 03150000                
* OUTPUT:                                                             * 03160000                
*                                                                     * 03170000                
*      POLLING SKIP BIT SET ON OR OFF AS DESIGNATED                   * 03180000                
*                                                                     * 03190000                
* EXTERNAL REFERENCES:                                                * 03200000                
*                                                                     * 03210000                
*      . PARAMETER LIST                                               * 03220000                
*                                                                     * 03230000                
*      . TERMINAL UNIT BLOCK                                          * 03240000                
*                                                                     * 03250000                
*      . MLTA DTF                                                     * 03260000                
*                                                                     * 03270000                
*      . MLTA IOCS (MLTIO1)                                           * 03280000                
*                                                                     * 03290000                
*      . 1050 SERVICE ROUTINE (CMMCT)                                 * 03300000                
*                                                                     * 03310000                
*      . TRANSIENT AREA HANDLER ($CC4PI)                              * 03320000                
*                                                                     * 03330000                
* EXITS, NORMAL:                                                      * 03340000                
*                                                                     * 03350000                
*      TO INSTRUCTION FOLLOWING THE INVOKING OF THIS ROUTINE (ARR)    * 03360000                
*                                                                     * 03370000                
* EXITS, ERROR:                                                       * 03380000                
*                                                                     * 03390000                
*      TO TRANSIENT $CC4SC IF THE MLTA IOCS YIELDS A NON-ZERO         * 03400000                
*      OPERATION START CODE TO THE REQEUST TO SET THE POLLING SKIP BIT* 03410000                
*                                                                     * 03420000                
* ATTRIBUTES:                                                         * 03430000                
*                                                                     * 03440000                
*      RESIDENT, REUSABLE                                             * 03450000                
*                                                                     * 03460000                
*********************************************************************** 03470000                
       EJECT                                                            03480000                
*      INPUT IS ADDR OF PARM LIST IN XR1                             CM 03490000                
* ENTRY FOR SETTING POLL SKIP BIT ON IS CMONSK                       CM 03500000                
* ENTRY FOR SETTING POLL SKIP BIT OFF IS CMOFSK                      CM 03510000                
* THIS ROUTINE ALSO SETS THE SKIP BIT STATUS BIT IN THE PARM LIST    CM 03520000                
       SPACE                                                            03530000                
*      IF ENTER HERE - SET THE POLL SKIP BIT ON                      CM 03540000                
       SPACE 1                                                          03550000                
CMONSK EQU   *                         SET POLL SKIP BIT ON          CM 03560000                
       SBN   CMSWNF+1,BIT0             SET SWITCH TO BRANCH          CM 03570000                
       J     CMSVRG                    JUMP                          CM 03580000                
       SPACE                                                            03590000                
*      IF ENTER HERE - SET POLL SKIP BIT OFF                         CM 03600000                
       SPACE                                                            03610000                
CMOFSK EQU   *                         SET POLL SKIP BIT OFF         CM 03620000                
       SBF   CMSWNF+1,BIT0             SET SWITCH TO NO OP           CM 03630000                
       SPACE                                                            03640000                
*      SAVE THE REGISTERS                                            CM 03650000                
       SPACE                                                            03660000                
CMSVRG EQU   *                         SAVE REGISTERS                CM 03670000                
       ST    CMONOF+3,ARR              SAVE THE ARR                  CM 03680000                
       ST    CMON1+3,XR1               SAVE XR1                      CM 03690000                
       ST    CMON2+3,XR2               SAVE XR2                      CM 03700000                
       SPACE                                                            03710000                
*      MOVE APPROPRIATE OP CODE TO DTF                               CM 03720000                
       SPACE                                                            03730000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT THE TUB          CM 03740000                
       L     TUBDTF(,XR2),XR2          POINT XR2 AT THE DTF          CM 03750000                
       SPACE                                                            03760000                
* ASSURE HAVE STATION CONTROL LINE                                   CM 03770000                
* AND THAT THE LINE IS OPEN                                          CM 03780000                
       SPACE                                                            03790000                
       TBN   $MDAT2(,XR2),$MAOPN       IS DTF OPEN                   CM 03800000                
       TBN   $MDTFT(,XR2),MLSTAT       IS IT STATION CONTROL         CM 03810000                
       JF    CMON2                     LEAVE IF NOT STAION CONTROL   CM 03820000                
       SPACE                                                            03830000                
* HAVE STATION CONTROL LINE SO PLAY WITH SKIP BIT                    CM 03840000                
       SPACE                                                            03850000                
       L     PLTUBA(,XR1),XR1          POINT XR1 AT TUB              CM 03860000                
       SPACE                                                            03870000                
CMSWNF JC    CMNNSK,X'87'              SWITCH                        CM 03880000                
       MVI   $MDOPC(,XR2),MLSKPF       MOVE SKIP BIT OFF OP TO DTF   CM 03890000                
       J     CMPGTA                    GO PLUG TERMINAL ADDR IN DTF  CM 03900000                
CMNNSK MVI   $MDOPC(,XR2),MLSKPN       MOVE SKIP BIT ON OP TO DTF    CM 03910000                
       SPACE                                                            03920000                
*      *     MOVE TERMINAL ADDRESS TO DTF                            CM 03930000                
       SPACE                                                            03940000                
CMPGTA MVC   $MDTMA(2,XR2),TUBTMA(,XR1) MOVE TERMINAL ADDR TO DTF    CM 03950000                
CMON1  LA    *-*,XR1                   RESTORE XR1                   CM 03960000                
       SPACE                                                            03970000                
       AIF   (&N1050).C5100                                             03980000                
       B     CMMCT                     PLUG BYTE 2 OF TMA FOR 1050  C0M 03990000                
.C5100 ANOP                                                             04000000                
       SPACE                                                            04010000                
       B     MLTIO1                    BR TO MLTA IOCS               CM 04020000                
       CLI   $MDOSC(,XR2),NOBIT        CHECK START CODE              CM 04030000                
       JE    CMON2                     JUMP IF START CODE GOOD       CM 04040000                
       SPACE                                                            04050000                
* BRING IN TRANSIENT TO ANALYZE THE NON-ZERO MLTA START CODE         CM 04060000                
       SPACE                                                            04070000                
       B     $CC4PI                    BR TO BRING IN TRANSIENT      CM 04080000                
       DC    AL1(CC4SC)                TRANSIENT ID FOR START CODE.  CM 04090000                
       SPACE                                                            04100000                
CMON2  LA    *-*,XR2                   RESTORE XR2                   CM 04110000                
CMONOF B     *-*                       RETURN                        CM 04120000                
.S5800 ANOP                                                             04130000                
.M1800 ANOP                                                             04140000                
       TITLE '$E090/CMGMRT---GETMAIN-INTERFACE-ROUTINE'                 04150000                
*********************************************************************** 04160000                
*      I N T E R F A C E   T O   G E T M A I N   R O U T I N E        * 04170000                
*********************************************************************** 04180000                
*                                                                     * 04200000                
* FUNCTION:                                                           * 04210000                
*      PROVIDES A GENERALIZED INTERFACE FOR THE COMMUNICATIONS MANAGER* 04230000                
*      TO PERFORM A GETMAIN FOR HOLD BUFFER SPACE.  IF WILL ASSURE    * 04240000                
*      THAT THE PROPER INPUT IS PROVIDED TO THE GETMAIN SERVICE       * 04250000                
*      ROUTINE.                                                       * 04260000                
*                                                                     * 04270000                
* ENTRY POINT:  CMGMRT                                                * 04280000                
*                                                                     * 04310000                
* INPUT:                                                              * 04320000                
*      THE SIZE OF THE HOLD BUFFER NEEDED IS IN FIELD GMSIZE OF THE   * 04340000                
*      GETMAIN PARAMETER LIST GMLIST IN THE COMMUNICATIONS MANAGER    * 04350000                
*      MODULE.                                                        * 04360000                
*                                                                     * 04370000                
* OUTPUT:                                                             * 04380000                
*      ADDRESS OF THE HOLD BUFFER GOTTEN WILL BE IN FIELD GMADDR OF   * 04400000                
*      THE GETMAIN PARAMETER LIST GMLIST IN THE COMMUNICATIONS        * 04410000                
*      MANAGER MODULE.                                                * 04420000                
*                                                                     * 04430000                
* EXTERNAL REFERENCES:                                                * 04440000                
*      . CCP COMMUNICATIONS AREA ($CCCOM)                             * 04460000                
*      . @BUFA IN $CCCOM                                              * 04480000                
*      . GETMAIN SERVICE ROUTINE ENTRY POINT ($CC4GM)                 * 04500000                
*                                                                     * 04510000                
* EXITS, NORMAL:                                                      * 04520000                
*      TO INSTRUCTION FOLLOWING THE INVOKING OF THIS ROUTINE (ARR)    * 04540000                
*                                                                     * 04550000                
* ATTRIBUTES:                                                         * 04560000                
*      RESIDENT, REUSABLE                                             * 04580000                
*                                                                     * 04590000                
*********************************************************************** 04600000                
       SPACE 3                                                          04610000                
CMGMRT EQU   *                         INTERFACE TO THE GETMAIN ROUTINE 04620000                
       ST    CMGMR1+3,XR1              SAVE XR1                         04640000                
       ST    CMGMR2+3,XR2              SAVE XR2                         04650000                
       ST    CMGMR9+3,ARR              SAVE THE ARR                     04660000                
       LA    $CCCOM,XR1                POINT XR1 AT COMM AREA           04670000                
       LA    @BUFA(,XR1),XR1           POINT XR1 AT GM CONTROL BLOCK    04680000                
       LA    GMLIST,XR2                POINT XR2 AT GETMAIN LIST        04690000                
       B     $CC4GM                    BRANCH TO GETMAIN ROUTINE        04700000                
CMGMR1 LA    *-*,XR1                   RESTORE XR1                      04710000                
CMGMR2 LA    *-*,XR2                   RESTORE XR2                      04720000                
CMGMR9 B     *-*                       RETURN TO CALLER                 04730000                
       TITLE '$E090/CMFMRT---FREEMAIN-INTERFACE-ROUTINE'                04740000                
*********************************************************************** 04750000                
*      F R E E M A I N   I N T E R F A C E   R O U T I N E            * 04760000                
*********************************************************************** 04770000                
*                                                                     * 04790000                
* FUNCTION:                                                           * 04800000                
*      PROVIDES A GENERALIZED INTERFACE TO PERFORM A FREEMAIN OF HOLD * 04820000                
*      BUFFER SPACE.  IT WILL ASSURE THAT THE PROPER INPUT IS PROVIDED* 04830000                
*      TO THE FREEMAIN SERVICE ROUTINE.                               * 04840000                
*                                                                     * 04850000                
* ENTRY POINT:                                                        * 04860000                
*      CMFMRT  (#CMFMR FROM A TRANSIENT)                              * 04880000                
*      CMFMR2 - THIS ENTRY POINT WILL NOT SET THE INTERNAL FREEMAIN   * 04900000                
*      INDICATION                                                     * 04910000                
*                                                                     * 04920000                
* INPUT:                                                              * 04930000                
*      INDEX REGISTER 2 CONTAINS THE ADDRESS OF THE 1ST BYTE BEYOND   * 04950000                
*      THE GETMAIN/FREEMAIN PARAMETER LIST.                           * 04960000                
*                                                                     * 04970000                
* OUTPUT:                                                             * 04980000                
*      THE HOLD BUFFER IS FREEMAINED                                  * 05000000                
*                                                                     * 05010000                
* EXTERNAL REFERENCES:                                                * 05020000                
*      . CCP COMMUNICATIONS AREA ($CCCOM)                             * 05040000                
*      @BUFA OF $CCCOM                                                * 05060000                
*      . FREEMAIN SERVICE ROUTINE ENTRY POINT ($CC4FM)                * 05080000                
*                                                                     * 05090000                
* EXITS, NORMAL:                                                      * 05100000                
*      TO INSTRUCTION FOLLOWING THE INVOKING OF THIS ROUTINE (ARR)    * 05120000                
*                                                                     * 05130000                
* ATTRIBUTES:                                                         * 05140000                
*      RESIDENT, REUSABLE                                             * 05160000                
*                                                                     * 05170000                
*********************************************************************** 05180000                
       EJECT                                                            05190000                
* INPUT IS THE ADDRESS OF THE RECORD AREA IN THE GETMAINED AREA IN XR2  05200000                
*  THUS 4 BYTES TO THE LEFT OF THIS ADDRESS WILL BE THE ADDRESS OF THE  05210000                
*  GETMAIN PARAMETER LIST                                               05220000                
       SPACE                                                            05230000                
* OUTPUT- THE AREA WILL BE FREEMAINED                                   05240000                
*  AN INTERNAL $CC4CM FREEMAIN POST BIT WILL BE SET ON                  05250000                
* XR2 WILL POINT TO THE NON-EXISTENT GETMAIN PARAMETER LIST WHEN THE    05260000                
* ROUTINE RETURNS                                                       05270000                
       SPACE                                                            05280000                
*********************************************************************** 05290000                
*                                                                     * 05300000                
*    THE FOLLOW CONSTANT  MUST ALWAYS IMMEDIATELY PRECEDE THE ENTRY   * 05310000                
*      POINT ADDRESS FOR ADDRESSABILITY FROM 'CM' TRANSIENTS.         * 05320000                
       SPACE                                                            05330000                
CMPMSK EQU   *                         *                                05340000                
       DC    XL2'0000'                 CM INTERNAL POST MASK WORKAREA.  05350000                
       SPACE                                                            05360000                
*********************************************************************** 05370000                
       SPACE                                                            05380000                
CMFMRT EQU   *                         FREEMAIN INTERFACE ROUTINE       05390000                
       AIF   (&NOB).NB090                                               05400000                
       AIF   (&MIN).NX010                                               05410000                
.NB090 SBF   CMSWIT,CMFMGO             SET SWITCH TO INDICATE FREEMAIN  05420000                
*                                      OCCURRED IN CM                   05430000                
.NX010 ANOP                                                             05440000                
       SPACE                                                            05450000                
CMFMR2 EQU   *                         ENTRY POINT WHICH DOES NOT SET   05460000                
*                                      INTERNAL FREEMAIN INDICATION     05470000                
       SPACE                                                            05480000                
       ST    CMFMRX+3,ARR              SAVE THE ARR                     05490000                
       ST    CMFMR1+3,XR1              SAVE XR1                         05500000                
       SPACE                                                            05510000                
* BACKUP XR2 TO POINT TO THE GETMAIN PARAMETER LIST                     05520000                
       SPACE                                                            05530000                
       A     X$FFFC,XR2                SUBTRACT 4 FROM ADDR IN XR2      05540000                
       SPACE                                                            05550000                
* XR2 POINTS AT GETMAIN/FREEMAIN PARAMETER LIST                         05560000                
* NOW GET XR1 TO POINT TO THE GM/FM CONTROL BLOCK                       05570000                
       SPACE                                                            05580000                
       LA    $CCCOM,XR1                POINT XR1 AT CCCOM               05590000                
       LA    @BUFA(,XR1),XR1           POINT XR1 AT GM/FM CONTROL BLOCK 05600000                
       SPACE                                                            05610000                
       B     $CC4FM                    BRANCH TO FREEMAIN ROUTINE       05620000                
       SPACE                                                            05630000                
       SBN   CMPMSK+1,WPBFR            SET INTERNAL CM FREEMAIN POST BIT05640000                
       SPACE                                                            05650000                
CMFMR1 LA    *-*,XR1                   RESTORE XR1                      05660000                
CMFMRX B     *-*                       RETURN                           05670000                
       TITLE '$E090/CMPSRQ---POST-REQUEST-SCHEDULED'                    05680000                
*********************************************************************** 05690000                
*                                                                     * 05700000                
* NAME--CMPSRQ  POST TP SCHEDULED.                                    * 05710000                
*                                                                     * 05715000                
*    FUNCTION--POST REQUESTOR THAT HIS TP OPERATION HAS BEEN          * 05760000                
*              SCHEDULED.                                             * 05770000                
*                                                                     * 05780000                
*    OPERATION--POST THE REQUESTOR OF THE TP OPERATION THAT IT HAS    * 05800000                
*               BEEN SCHEDULED FOR EXECUTION UNLESS THE OPERATION TO  * 05810000                
*               BE POSTED IS TO A TERMINAL IN COMMAND INTERRUPT MODE. * 05820000                
*               POST THE COMMAND PROCESSOR ($CC4CP) IF THE TERMINAL IS* 05830000                
*               IN COMMAND INTERRUPT MODE.                            * 05840000                
*                                                                     * 05850000                
*    ENTRY POINT--CMPSRQ                                              * 05860000                
*                                                                     * 05870000                
*    INPUT--XR1-ADDRESS OF THE TP PARAMETER LIST.                     * 05890000                
*           XR2-SAVED AND RESTORED.                                   * 05900000                
*                                                                     * 05910000                
*    OUTPUT--XR1-ADDRESS OF THE TP PARAMETER LIST.                    * 05930000                
*               XR2-RESTORED TO ENTRY VALUE.                          * 05940000                
*                                                                     * 05950000                
*    EXTERNAL REFERENCES--$CC4PS-POST THE REQUESTOR THAT THE TP       * 05970000                
*                         OPERATION HAS BEEN SCHEDULED.               * 05980000                
*                                                                     * 05990000                
*    EXIT--TO NSI OF CALLER.                                          * 06010000                
*                                                                     * 06020000                
*********************************************************************** 06030000                
       SPACE                                                            06040000                
CMPSRQ EQU   *                         POST REQUESTER THAT TP SCHEDULED 06050000                
       ST    CMPSRX+3,ARR              STORE RETURN ADDR                06060000                
       ST    CMPSR2+3,XR2              SAVE XR2                         06070000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT TUB                 06090000                
       SPACE                                                            06100000                
* NEED TO POST THE REQUESTER THAT HIS OPERATION HAS BEEN SCHEDULED      06110000                
* DETERMINE IF REQUESTOR IN COMMAND INTERRUPT MODE                      06120000                
* IF YES THEN REQUESTER IS COMMAND PROCESSOR SHOULD BE POSTED           06130000                
* NOT THE TUB TCB                                                       06140000                
       SPACE                                                            06150000                
       TBN   TUBAT2(,XR2),CMCMDI       IN COMMAND INTERRUPT MODE        06160000                
       JF    CMTBPS                    JUMP IF NOT CMD INT              06170000                
       SPACE                                                            06180000                
* IN COMMAND INTERRUPT MODE - SO MOVE $CC4CP TCB @ TO POST FIELD        06190000                
       SPACE                                                            06200000                
       MVC   CMPS1(2),CC@CPT           MOVE CP TCB @ TO POST FIELD      06210000                
       J     CMPSQ                     JUMP                             06220000                
       SPACE                                                            06225000                
CMTBPS MVC   CMPS1(2),TUBTCB(,XR2)     MOVE TCB ADDR TO POST FIELD      06230000                
CMPSQ  EQU   *                         ISSUE POST -IO SCHEDULED         06250000                
       B     $CC4PS                    BR TO POST ROUTINE               06260000                
       DC    XL2'8000'                 POST MASK - TP SCHEDULED         06270000                
CMPS1  DC    XL2'0'                    ADDR OF TCB TO BE POSTED         06280000                
       SPACE                                                            06290000                
CMPSR2 LA    *-*,XR2                   RESTORE XR2                      06300000                
CMPSRX B     *-*                       RETURN                           06310000                
       TITLE '$E090/CMFORM---FORMULATE-OPERATION-CODE'                  06320000                
*********************************************************************** 06330000                
*            FORMULATE THE PROPER  TP  OPERATION CODE                   06340000                
*********************************************************************** 06350000                
       SPACE                                                            06360000                
* ROUTINE TO DEVELOP PROPER OP CODE FOR EITHER A READ OR WRITE AND      06370000                
* TAKING INTO CONSIDERATION ALL THE DIFFERENT TERMINAL TYPES POSSIBLE   06380000                
*  ON THE MLTA ADAPTER AND THE BSCA ADAPTER                             06390000                
       SPACE                                                            06400000                
* AT THIS POINT MAKE SURE NEW OP NOT YET MOVED INTO DTF                 06410000                
*  ALSO LEAVE TERMINAL ADDR OF DTF ALONE SINCE THE PREVIOUS OP AND TERM 06420000                
* ADDR ARE USED IN THIS OP CODE DETERMINATION                           06430000                
       SPACE                                                            06440000                
*EXPECT XR1 TO POINT TO PARM LIST                                       06450000                
* EXPECT XR2 TO POINT TO DTF                                            06460000                
       SPACE                                                            06470000                
CMFORM EQU   *                         FORM MLTA OP CODE                06480000                
       AIF   (&NOM).M1900                                               06490000                
       ST    CMFORX+3,ARR              SAVE RETURN ADDR               M 06500000                
.M1900 ANOP                                                             06510000                
       AIF   (&ONE).C0560                                               06520000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 06530000                
       BF    CMFMLT                    NO-GO HANDLE MLTA.             2 06540000                
.C0560 ANOP                                                             06550000                
       AIF   (&NOB).C0570                                               06560000                
       SPACE                                                            06570000                
*********************************************************************** 06580000                
*   CHECK BSCA DTF FOR OPENED. IF OPENED GO VERIFY ACCEPTABITY OF THE B 06590000                
*     OPERATION REQUESTED. IF NOT OPENED, OPEN THE DTF FOR OPERATION. B 06600000                
*********************************************************************** 06610000                
       SPACE                                                            06620000                
       TBF   LCBAT2(,DTF),LCBACT       LINE INACTIVE (NOT BETWEEN EOT)B 06630000                
       BF    CMFVFY                    NO-IS ACTIVE, GO SET NEXT OP.  B 06640000                
       AIF   (&MIN).N0070                                               06650000                
.*  THIS CODE WILL BE IN TRANSIENT $CC4B2 FOR MIN RES SYSTEM            06660000                
CMFORB EQU   *                         *                              B 06670000                
       SBF   $BDATT(,DTF),$BCCNV+$BCGET SET OFF INPUT/OUTPUT IND'S.   B 06680000                
       SBF   LCBOPC(,DTF),LCBERP       RESET BSCA TERM ERP IND.       B 06690000                
       AIF   (&NITB).I0400                                              06700000                
       MVI   $BDITB(,DTF),0            ZERO ITB COUNT BYTE           IB 06710000                
.I0400 ANOP                                                             06720000                
       MNN   LCBOPC(,DTF),PL$OPM(,PL)  SAVE OP CODE FOR CONFLIT CHECK.B 06730000                
       TBN   PL$OPM(,PL),OPGET         THIS A GET OPERATION ?         B 06740000                
       L     PLTUBA(,PL),TUB           POINT TO THE TUB.              B 06750000                
       JT    CMFGET                    YES-GO SET UP FOR GET OP.      B 06760000                
       SPACE                                                            06770000                
*   SET UP DTF FOR  ** PUT **  OPERATION.                             B 06780000                
       SPACE                                                            06790000                
       SBF   LCBAT2(,DTF),LCBPUT       SET OFF PUT PENDING IND.       B 06800000                
       SBN   $BDATT(,DTF),$BCOUT       SET OUTPUT FILE INDICAOR.      B 06810000                
       MVI   $BDOPC(,DTF),$BOPUT       SET OP CODE FOR PUT.           B 06820000                
       SPACE                                                            06830000                
*   SET CURRENT ATTRIBUTTES, BLOCK LENGTH, AND OWNERSHIP STATUS.      B 06840000                
       SPACE                                                            06850000                
       B     CMBTAS                    GO SET UP DTF/IOB/TUB/LCB.     B 06860000                
       SPACE                                                            06870000                
       SBN   $BDAT1(,DTF),$BCPUT       SET PUT SPAN FILE INDICATOR.   B 06880000                
       MVC   $BDBKL(2,DTF),LCBKLC(,DTF) FILL IN DTF BLOCK LENGTH.     B 06890000                
       AIF   (&NITB).I0600                                              06900000                
       TBN   $BDATT(,DTF),$BCITB       ITB MODE ?                    IB 06910000                
       JF    CMFLIN                    NO-GO SET UP LINE DEPENDENCIESIB 06920000                
       MVC   $BDITB(1,DTF),TUBBKF(,TUB) MOVE BLOCK FACTOR TO WORK AREIB 06930000                
       SLC   $BDITB(1,DTF),CC0001      FIND NUMBER OF ITB CHARS.     IB 06940000                
       SLC   $BDITB(1,DTF),CC0001      FIND NUMBER OF ITB CHARS.     IB 06950000                
       ALC   LCBKLC(2,DTF),$BDITB(,DTF) ADD # ITB CHAR TO BUF REQUIREIB 06960000                
       AIF   (&NTSP).I0500                                              06970000                
       TBN   $BDATT(,DTF),$BCRAN       TRANSPARENCY MODE ?          IXB 06980000                
       JF    CMFTB1                    NO-GO SET ITB LENGTH TO ONE. IXB 06990000                
       ALC   $BDITB(2,DTF),$BDITB(,DTF) DOUBLE THE ITB COUNT TO ADD IXB 07000000                
       ALC   LCBKLC(2,DTF),$BDITB(,DTF) * 4 TIMES BLOCK FACTOR FOR AIXB 07010000                
       ALC   LCBKLC(2,DTF),$BDITB(,DTF) * TOTAL OF 5 TIMES BLOCK FACIXR 07020000                
       ALC   LCBKLC(2,DTF),TWO         THEN ADD 2 FOR PUT-ITB-TRANSPIXB 07030000                
       MVC   $BDITB(2,DTF),FIVE        SET ITB LENGTH TO FIVE.      IXB 07040000                
       J     CMFLIN                    GO SET UP LINE DEPENDENCIES. IXB 07050000                
       SPACE                                                            07060000                
CMFTB1 EQU   *                         *                            IXB 07070000                
.I0500 ANOP                                                             07080000                
       MVI   $BDITB(,DTF),1            SET ITB LENGTH COUNT TO ONE.  IB 07090000                
.I0600 ANOP                                                             07100000                
       J     CMFLIN                    GO DETERMINE LINE SETUP NEEDS. B 07110000                
       SPACE                                                            07120000                
*   SET UP DTF FOR  ** GET **  OPERATION.                             B 07130000                
       SPACE                                                            07140000                
CMFGET EQU   *                         *                              B 07150000                
       SBN   $BDATT(,DTF),$BCINP+$BCGET SET INPUT FILE INDICATORS.    B 07160000                
       MVI   $BDOPC(,DTF),$BOGET       SET OP CODE FOR GET.           B 07170000                
       MVC   $BDBKL(2,DTF),LCBBFL(,DTF) USE MAXIMUM LINE BLOCK LEN.   B 07180000                
       MVC   LCBKLC(2,DTF),$BDBKL(,DTF) FILL IN CURRENT MAX BLOCK LEN.B 07190000                
       SBN   LCBAT2(,DTF),LCBRCI       INDICATE RECEIVE INITIAL.      B 07200000                
       SPACE                                                            07210000                
       AGO   .G0900                                                     07220000                
.N0070 MVI   CMID2,CTFORB              MOVE IN ID OF CODE DESIRED    NB 07230000                
       B     CMCAL2                    CALL $CC4B2 TO CHECK LINE OPENNB 07240000                
*                                      AND SPECIAL CONSIDERATIONS.   NB 07250000                
.G0900 ANOP                                                             07260000                
*   SET UP DTF FOR ANY LINE DEPENDENCIES.                             B 07270000                
       SPACE                                                            07280000                
CMFLIN EQU   *                         *                              B 07290000                
       AIF   (&NCS).S1000                                               07300000                
&MIX   SETA  &NPP+&NMP+&NSWL                                            07310000                
       AIF   (&MIX EQ '3').S0900                                        07320000                
       TBN   $BDATR(,DTF),$BCMCN       CONTROL STATION LINE ?       CLB 07330000                
       JF    CMFLCS                    NO-GO TO END OF CS CODE.     CLB 07340000                
.S0900 ANOP                                                             07350000                
       MVC   $BDLST(2,DTF),LCBPOL(,DTF) MOVE IN POLLING LIST ADDR.   CB 07360000                
*                                      ----START--------------------@03 07362000                
       MVC   $BDIND(,DTF),LCBLID(1,DTF) PUT ID IN THE DTF             B 07364000                
       MVC   $BDLID(1,DTF),LCBLID(,DTF) IN BOTH FIELDS                B 07366000                
*                                      ------END--------------------@03 07368000                
       TBN   $BDOPC(,DTF),$BOGET       GET 'POLL' REQUEST ?          CB 07380000                
       JT    CMFIGR                    YES-GO FIGURE BUFFER CONFIG.  CB 07390000                
       MVC   LCBID#(1,DTF),TUBSID(,TUB) FILL ID OF DESIRED TERM.     CB 07400000                
       LA    LCBADL(,DTF),XR1          FILL IN SELECTION 'ADDRESSING'CB 07410000                
       ST    $BDLST(,DTF),XR1          * LIST ADDRESS.               CB 07420000                
       B     CMASCH                    GO TO FIND THE SEL'T ENTRY.   CB 07430000                
       SPACE                                                            07440000                
       MVC   LCBADL+8(9,DTF),8(,POL)   MOVE IN MAX LEN SEL'T ENTRY.  CB 07450000                
       MVI   CMFLA+2,LCBADL+3          REFRESH INSTRUCTION DISPL.    CB 07460000                
       ALC   CMFLA+2,POLCNT(1,POL)     SET TO END OF SELECT LIST.    CB 07470000                
CMFLA  EQU   *                         *                             CB 07480000                
       MVI   #(,DTF),ONETIM            END OF LIST: OPEN LIST IND.   CB 07490000                
       AIF   (&MIX EQ '3').S1000                                        07500000                
       J     CMFIGR                    GO TO FIGURE BUFFER CONFIG.  CLB 07510000                
       SPACE                                                            07520000                
CMFLCS EQU   *                         *                             CB 07530000                
.S1000 ANOP                                                             07540000                
       AIF   (&NSWL).S1200                                              07550000                
&MIX   SETA  &NPP+&NMP+&NCS                                             07560000                
       AIF   (&MIX EQ '3').S1100                                        07570000                
       TBN   TUBAT1(,TUB),TUBSWC       SWITCHED LINE ?              SLB 07580000                
.S1100 ANOP                                                             07590000                
       TBF   LCBAT3(,DTF),LCBENB       AND LINE NOT ENABLED ?        SB 07600000                
       JF    CMFLSW                    NO-SKIP SWITCH LINE CODE.     SB 07610000                
       MVC   LCBID#(1,DTF),TUBSID(,TUB) USE TUB BSCA ID FOR SEARCH.  SB 07620000                
       SBF   $BDATR(,DTF),$BCMAN+$BCANS SET OFF SWL LINE TYPES.      SB 07630000                
       TBN   SAVTA1,TASCNC             SWITCHED CALL ?               SB 07640000                
       JT    CMFSMN                    YES-GO CHECK FOR MANUAL OPERATSB 07650000                
       SBN   $BDATR(,DTF),$BCANS       SET DTF FOR ANSWER.           SB 07660000                
CMFSMN EQU   *                         *                             SB 07670000                
       TBN   SAVTA1,TASAUT             AUTO OPERATION ?              SB 07680000                
       JT    CMFSRQ                    YES-GO CHECK REQUESTOR.       SB 07690000                
       SBN   $BDATR(,DTF),$BCMAN       SET MANUAL OPERATION IN DTF.  SB 07700000                
CMFSRQ EQU   *                         *                             SB 07710000                
       L     LCBPL@(,DTF),PL           POINT TO THE PARM LIST.       SB 07720000                
       TBN   PLOPM(,PL),OPREQR         SYSTEM REQUEST ?              SB 07730000                
       JT    CMFSNB                    YES-GO SET ENABLED STATUS.    SB 07740000                
       B     $CC4PI                    CALL TRANSIENT HANDLER.       SB 07750000                
       DC    AL1(CC4WC)                BRING IN SWITCH MESSAGE RTN.  SB 07760000                
       SPACE 1                                                          07770000                
CMFSNB EQU   *                         *                                07780000                
       SBN   LCBAT3(,DTF),LCBENB       SET LINE ENABLED.             SB 07790000                
*                               -----------------------------START--@07 07795000                
       MVC   $BDRID(2,DTF),LCBPOL(,DTF) FILL IN SWITCH LIST ADDRESS. SB 07800000                
*                               -----------------------------START--@07 07805000                
       SBN   $BDADD(,DTF),$BCSWD       SET SWITCH LIST USED IND.     SB 07810000                
       MVI   $BDRLN(,DTF),POLACT       SET ID TO  USE ACTIVE ENTRIES.SB 07820000                
       TBN   $BDATR(,DTF),$BCANS       ANSWER LINE, AND              SB 07830000                
       TBN   LCBOPC(,DTF),OPGET        * GET OPERATION ?             SB 07831000                
       JT    CMFIGR                    YES-HANDLE ANSWER-VERIFY ID'S SB 07840000                
       SPACE 1                                                          07890000                
CMFSCL EQU   *                         *                             SB 07900000                
       SBF   $BDADD(,DTF),$BCSWD       SET OFF SWITCH LIST USED.     SB 07910000                
       TBF   SAVTA2,TASVFY             RECEIVE ID VERIFY ?           SB 07920000                
       JF    CMFSNV                    NO-GO SET FOR NO VERIFY.      SB 07930000                
       B     CMPSCH                    CALL SWITCH LIST SEARCH RTN.  SB 07940000                
       SPACE 1                                                          07950000                
*   CONTROL IS RETURNED TO NSI IF THE ID IS FOUND IN THE LIST.       SB 07960000                
       SPACE 1                                                          07970000                
       J     CMFSID                    GO SET UP ID IN THE DTF.      SB 07980000                
       SPACE 1                                                          07990000                
*   CONTROL RETURNS TO NSI+3 IF IF THE ID WAS NOT FOUND.             SB 08000000                
       SPACE 1                                                          08010000                
CMFSNV EQU   *                         *                             SB 08020000                
       MVI   $BDRLN(,DTF),NOBIT        SET ZERO LENGTH ID TO RECEIVE.SB 08030000                
       J     CMFIGR                    GO TO FIGURE THE IOB'S NEEDED.SB 08040000                
       SPACE 1                                                          08050000                
CMFSID EQU   *                         *                                08060000                
       MVC   $BDRLN(1,DTF),POLCNT(,POL) PUT RECEIVE ID LENGTH IN DTF.SB 08070000                
       LA    POLCH1(,POL),POL          UPDATE REG TO FIRST ID CHAR.  SB 08080000                
       ST    $BDRID(,DTF),POL          STORE ADDRESS OF ID IN DTF.   SB 08090000                
       AIF   (&NMP).S1110                                               08100000                
       J     CMFIGR                    GO TO FIGURE THE IOB'S NEEDEDSTB 08110000                
       SPACE 1                                                          08120000                
.S1110 ANOP                                                             08130000                
CMFLSW EQU   *                         *                             SB 08140000                
.S1200 ANOP                                                             08150000                
       AIF   (&NMP).S1130                                               08160000                
&MIX   SETA  &NPP+&NSWL+&NCS                                            08170000                
       SPACE 1                                                          08180000                
*   MULTI-POINT TRIBUTARY SUPPORT.                                      08190000                
       SPACE 1                                                          08200000                
       AIF   (&MIX EQ '3').S1120                                        08210000                
       TBN   $BDATR(,DTF),$BCMPT       MULTI-POINT TRIBUTARY ?      TLB 08220000                
       JF    CMFLMP                    NO-SKIP MP TRIB CODE.        TLB 08230000                
.S1120 ANOP                                                             08240000                
       SBF   $BDPSC-1(,DTF),POLBIT     SET BSCA CHARACTERS FOR POLL. TB 08250000                
       SBF   $BDPSC(,DTF),POLBIT       ( I SEND - PUT,ETC )          TB 08260000                
       TBN   $BDOPC(,DTF),$BOGET       GETTING ?                     TB 08270000                
       JF    CMFIGR                    NO-I'AM PUTTING.              TB 08280000                
       SBN   $BDPSC-1(,DTF),POLBIT     SET ON FOR BEING ADDRESSED,   TB 08290000                
       SBN   $BDPSC(,DTF),POLBIT       ( I RECEVIE - GET, ETC)       TB 08300000                
CMFLMP EQU   *                         *                             TB 08310000                
.S1130 ANOP                                                             08320000                
       SPACE                                                            08330000                
*    FIGURE OUT THE SPACE REQUIREMENTS FOR IOBS AND BUFFERS.          B 08340000                
       SPACE                                                            08350000                
CMFIGR EQU   *                         *                              B 08360000                
       CLI   $BDWKA-1(,DTF),NOBIT      WORKAREA ADDR SET YET ?        B 08360600                
       JE    CMNWKA                    NO - DON'T MOVE RETRY COUNT    B 08361200                
       L     $BDWKA(,DTF),WKA          XR1--> BSCA WORK AREA          B 08362000                
       MVC   WKERRD(1,WKA),$BDERR(,DTF) RESTORE ERR RETRY COUNT       B 08364000                
       SLC   DCOUNT(2,WKA),DCOUNT(,WKA) RESTORE DELAY COUNT         @17 08366000                
CMNWKA EQU   *                         * LOCAL                        B 08368000                
       MVC   $BDIOB(2,DTF),LCBSRT(,DTF) RESTORE BUFFER START ADDRESS. B 08370000                
       AIF   (&N32).T1200                                               08380000                
       L     LCBPL@(,DTF),PL           RELOAD THE PL REG.            0B 08390000                
       SPACE                                                            08400000                
*   IF SYSTEM OR REFRESH OF 3270 SYSTEM, THEN RESERVE THE FIRST PART 0B 08410000                
*     OF THE LINE BUFFER FOR THE OUTPUT.                             0B 08420000                
       SPACE                                                            08430000                
       CLI   CMSPHY,TUB5M2             THIS A 3270 TERMINAL ?        0B 08440000                
       TBN   PL$OPM(,PL),OPPUT         PUT OPERATION ?               0B 08450000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?             0B 08460000                
       AIF   (&MOD4 NE '1').LJ002                                       08461000                
       L     PLTUBA(,PL),TUB           XR1 -->TUB                       08462000                
       TBF   TUBAT1(,TUB),TUBKNM       AND NOT THE CONSOLE ?            08463000                
       L     LCBPL@(,DTF),PL           XR1 --> PARM LIST                08464000                
.LJ002 ANOP                                                             08465000                
       JC    CMFIGL,FLSOHI             NO-GO HANDLE REGULARILY.      0B 08470000                
       ALC   $BDIOB(2,DTF),MAXMSG      RESERVE LINE BUFFER SPACE.    0B 08480000                
       MVC   LCBKLC(2,DTF),LCBADJ(,DTF) USE ADJUSTED LEN FOR BLK LEN. B 08490000                
CMFIGL EQU   *                         *                             0B 08500000                
.T1200 ANOP                                                             08510000                
       AIF   (&MIN).N0080                                               08520000                
.*  THIS FOLLOWING CODE WILL BE IN TRANSIENT $CC4B2                     08530000                
       L     LCBKLC(,DTF),WORK         BLOCK SIZE REQUIRED IN WORK REGB 08540000                
       LA    LINFO(,WORK),WORK         ALLOW FOR MAX LINE CONTROL CHARB 08550000                
       ST    LCBWRK(,DTF),WORK         SAVE COMPUTED VALUE.           B 08560000                
       L     $BDIOB(,DTF),IOB          LOAD PTR TO IOB.               B 08570000                
       MVC   IOBQ(1,IOB),$BDDEV(,DTF)  BUILD IOB Q CODE.              B 08580000                
       MVC   IOBDBL(2,IOB),LCBWRK(,DTF) PUT BUFFER LENGTH INTO IOB.   B 08590000                
       ST    IOBNXT(,IOB),IOB          POINT 1ST IOB TO SELF.         B 08600000                
       ST    IOBDTF(,IOB),DTF          POINT IOB BACK TO DTF.         B 08610000                
       MVI   IOBERR(,IOB),X'00'        SET ERROR COUNT TO ZERO.       B 08620000                
       ST    IOBDAT(,IOB),IOB          SET @ OF IOB                   B 08630000                
       ALC   IOBDAT(2,IOB),IOBLEN      *             DATA AREA.       B 08640000                
       MVC   IOBFLG(1,IOB),$BDATT(,DTF) SET IOB FLAG BYTE.            B 08650000                
       MVI   IOBFLA(,IOB),TXTSNT       INITIALIZE TEXT INDICATORS.    B 08660000                
       MVI   IOBCMP(,IOB),DONE         INITIALIZE BUFFER STATUS.      B 08670000                
       TBN   $BDATT(,DTF),$BCINP       GET FILE ?                     B 08680000                
       JF    CMFMOR                    NO-GO CONTINUE CARVING.        B 08690000                
       MVI   IOBCMP(,IOB),READY        ELSE SET BUFFER STATUS TO READYB 08700000                
       MVI   IOBFLA(,IOB),X'00'        ZERO TEXT DIRECTION INDICATOR. B 08710000                
CMFMOR EQU   *                         *                              B 08720000                
       AIF   (&NOB).NB030                                               08730000                
       AIF   (&MIN).N0100                                               08740000                
.NB030 ANOP                                                             08750000                
       MVC   IOBNEX(2,IOB),IOBDAT(,IOB) DETERMINE START ADDRESS FOR   B 08760000                
       ALC   IOBNEX(2,IOB),IOBDBL(,IOB) * ANOTHER IOB.                B 08770000                
CMFMUL EQU   *                         *                              B 08780000                
       MVC   IOBDBN(2,IOB),IOBNEX(,IOB) DETERMINE ADDRESS OF NEXT     B 08790000                
       ALC   IOBDBN(2,IOB),IOBLEN      *  DATA AREA.                  B 08800000                
       MVC   IOB2NX(2,IOB),IOBDBN(,IOB) DETERMINE END ADDRESS FOR     B 08810000                
       ALC   IOB2NX(2,IOB),IOBDBL(,IOB) * POSSIBLE NEXT IOB/BUFFER.   B 08820000                
       SLC   IOB2NX(2,IOB),CC0001      MAKE END @ ACTUAL              B 08825000                
       CLC   IOB2NX(2,IOB),LCBBND(,DTF) ANOTHER IOB/BUFFER FIT ?      B 08830000                
       JH    CMFCLN                    NO-GO CLEAN-UP THIS OPEN.      B 08840000                
       L     IOBNEX(,IOB),IBX          LOAD REG WITH IOB NEXT @.      B 08850000                
       MVC   IOBDTF(IOBDTF+1,IBX),IOBDTF(,IOB) COPY THE IOB.          B 08860000                
       ST    IOBNXT(,IOB),IBX          CHAIN NEXT IOB TO LAST.        B 08870000                
       MVC   IOBDAT(2,IBX),IOBDBN(,IOB) MOVE IN NEW DATA BUFFER @.    B 08880000                
       MVC   IOBNEX(2,IBX),IOB2NX(,IOB) MOVE PTR TO NEXT IOB AREA.    B 08890000                
       LA    0(,IBX),IOB               MAKE LAST IOB IN CHAIN CURRENT.B 08900000                
       L     IOBDTF(,IOB),DTF          RESTORE DTF REGISTER.          B 08910000                
       B     CMFMUL                    GO TO MULTIPLE IOB LOGIC AGAIN.B 08920000                
.N0100 ANOP                                                             08930000                
       SPACE                                                            08940000                
*   IOB AND BUFFER ALLOCATION DONE, PERFORM FINAL CLEAN-UP ACTIVITY.  B 08950000                
       SPACE                                                            08960000                
CMFCLN EQU   *                         *                              B 08970000                
       MVI   $BDCMP(,DTF),$BCDNE       MARK DTF DONE.                 B 08980000                
       MVC   $BDINT(2,DTF),LCB$L0(,DTF) RESTORE C/S @ OF $$BSL0.      B 08990000                
       MVI   $BDNDX(,DTF),X'00'        SET LINE INIT TRANS. ID TO 1ST.B 09000000                
       L     IOBNXT(,IOB),IOB          POINT TO 1ST IOB.              B 09010000                
       SBN   IOBFLA(,IOB),FIRST        SET FIRST BUFFER INDICATOR.    B 09020000                
       L     LCBPL@(,DTF),PL           RELOAD THE PARM LIST REG       B 09030000                
       SPACE 1                                                          09040000                
       AGO   .G9999                                                     09050000                
.N0080 ANOP                                                             09060000                
       MVI   CMID2,CTRLB               MOVE IN FLAG OF WHICH CODE TO    09070000                
*                                      EXECUTE IN THE TRANSIENT         09080000                
       B     CMCAL2                    CALL IN TRANSIENT $CC4B2         09090000                
.G9999 ANOP                                                             09100000                
.C0570 ANOP                                                             09110000                
       MEND                                                             09130000