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

⟦e44713c17⟧ s3xseg

    Length: 34544 (0x86f0)
    Types: s3xseg
    Names: »S$E092«

Derivation

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

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00020000                
.* NAME: $E092       V-15, M-00.                                      * 00040000                
.********************************************************************** 00650000                
       $E092                                                            00660000                
       GBLB  &NOB,&NSWL,&NTSP,&N32,&NAS,&MIN,&NMSG,&NCS,&NPP,&NMP       00670000                
       GBLB  &N37,&N41,&NRUF,&MOD4                                      00690000                
       LCLA  &MIX                                                       00710000                
       TEXT                                                             00720000                
* R-15,C-00  CHANGE LEVEL                                               00730000                
       AIF   (&NOB).C0580                                               00760000                
       TITLE '$E092/CMFVFY---FINAL-OP-CODE-VERFICATION'                 00770000                
*   FINAL VERIFICATION OF OP CODE AND RECORD LENGTH BEFORE IOS CALL   B 00780000                
       SPACE                                                            00790000                
CMFVFY EQU   *                         *                              B 00800000                
       TBF   LCBAT2(,DTF),LCBABT       OPERATION AN ABORT, OR         B 00810000                
       TBF   LCBAT1(,DTF),LCBEOT       SEARCH FOR EOT INDICATED ?     B 00820000                
       JT    CMFVUR                    NO-GO USE USER RECORD AREA.    B 00830000                
       MVC   $BDREL(2,DTF),CC0001      SET RECORD LENGTH TO ONE.      B 00840000                
*                                      -----START-------------------@04 00841000                
       L     $BDWKA(,DTF),WKA          XR1-->WORK AREA                B 00842000                
       MVI   WKERRD(,WKA),X'01'        SET RETRY COUNT TO 1         @05 00843000                
       L     LCBPL@(,DTF),PL           XR1--> PARM LIST               B 00844000                
*                                      ------END--------------------@04 00845000                
       MVC   $BDWKB(2,DTF),FNDEOT      USE DUMMY DATA AREA TO FIND EOTB 00850000                
       TBN   LCBOPC(,DTF),OPPUT        PUT OP CODE ?                  B 00860000                
       JT    CMFVPT                    YES-MUST BE ABORT, GO SEND EOT.B 00870000                
       J     CMBIOS                    GO TO CALL MLMP IOCS.          B 00880000                
       SPACE                                                            00890000                
CMFVUR EQU   *                         *                              B 00900000                
       MVC   $BDWKB(2,DTF),PLRECA(,PL) FILL IN DATA AREA @ IN DTF.    B 00910000                
       TBN   $BDATT(,DTF),$BCINP       GET OPERATION ?                B 00920000                
       JF    CMFVPT                    NO-GO SET UP FINAL PUT DTF.    B 00930000                
       TBN   PLOPC(,PL),OPRVI          RVI                            B 00940000                
       TBF   PLOPC(,PL),OPORDR-OPRVI   *   SEND OP CODE ?             B 00950000                
       JF    CMFGIL                    NO-GO GET INPUT LENGTH.        B 00960000                
       SBN   LCBOPC(,DTF),LCBRVI       SET SEND RVI INDICATOR FOR MLMPB 00970000                
CMFGIL EQU   *                         *                              B 00980000                
&MIX   SETA  &NCS+&NSWL                                                 00990000                
       AIF   (&MIX EQ '2').T1200                                        01000000                
       TBN   LCBAT2(,DTF),LCBRCI       RECEIVE INITIAL ON A        C/SB 01010000                
&MIX   SETA  &NPP+&NMP                                                  01020000                
       AIF   (&MIX EQ '2').T1100                                        01030000                
       TBN   $BDATR(,DTF),$BCSWI       MULTI-TERMINAL LINE ?      C/SLB 01040000                
.T1100 ANOP                                                             01050000                
       JT    CMBIOS                    YES-GO TO BSCA IOCS CALL.   C/SB 01060000                
.T1200 ANOP                                                             01070000                
       B     CMGINL                    GO TO RTN TO SET THE RECORD LENB 01080000                
       SPACE                                                            01090000                
       J     CMBIOS                    GO TO BSCA IOCS CALL.          B 01100000                
       SPACE                                                            01110000                
CMFVPT EQU   *                         *                              B 01120000                
       MVI   $BDOPC(,DTF),$BOPUT       SET OP CODE TO NORMAL PUT.     B 01130000                
       MVI   $BDCMP(,DTF),$BCREQ       SET CMP TO OP REQUESTED.       B 01140000                
       TBN   LCBAT2(,DTF),LCBSET       SEND EOT ORDERED ?             B 01150000                
       JT    CMFVET                    YES-GO SETUP SEND EOT.         B 01160000                
       MVC   $BDREL(2,DTF),PLOUTL(,PL) PUT OUTL INTO DTF RECORD LEN.  B 01170000                
       TBN   PLOPM(,PL),OPOLT          ON LINE TEST REQUEST ?         B 01180000                
       JF    CMFNLT                    NO-JUMP PAST OLT CODE.         B 01190000                
       MVC   $BDRFT(2,DTF),$BDWKB(,DTF) FILL IN MLMP OLT PARM LIST @. B 01200000                
       ALC   $BDWKB(2,DTF),TWELVE      BUMP PAST OLT PARM LIST IN AREAB 01210000                
CMFNLT EQU   *                         *                              B 01220000                
       SPACE                                                            01230000                
       AIF   (&N32).T1300                                               01240000                
*   IF SYSTEM REQUEST OR REFRESH OPERATION, THEN USE RESERVED AREA IN0B 01250000                
*     THE LINE BUFFER.                                               0B 01260000                
       SPACE                                                            01270000                
       CLI   CMSPHY,TUB5M2             THIS A 3270 ?                 0B 01280000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?             0B 01290000                
       AIF   (&MOD4 NE '1').LJ020                                       01291000                
       L     PLTUBA(,PL),TUB           XR1 --> TUB                      01292000                
       TBF   TUBAT1(,TUB),TUBKNM       AND NOT THE CONSOLE ?            01293000                
       L     LCBPL@(,DTF),PL           XR1 --> PARM LIST                01294000                
.LJ020 ANOP                                                             01295000                
       JC    CMFVMD,FLSOHI             NO-GO VERIFY THE MODE.        0B 01300000                
       MVC   $BDWKB(2,DTF),LCBSRT(,DTF) SET CORRECT ADDRESS FOR OUTPU0B 01310000                
       MVC   $BDREL(2,DTF),LCBADJ(,DTF) USE CORRECT LENGTH OF THE DAT0B 01320000                
CMFVMD EQU   *                         *                             0B 01330000                
.T1300 ANOP                                                             01340000                
       AIF   (&NAS).A0200                                               01350000                
       SPACE                                                            01360000                
*   IF THIS IS AN ASCII TRANSLATE SITUATION, THEN USE RESERVED ASCII AB 01370000                
*     TRANSLATION BUFFER AS FROM ADDRESS.                            AB 01380000                
       SPACE                                                            01390000                
       TBN   $BDATT(,DTF),$BCASK       ASCI LINE, AND                AB 01400000                
       TBF   SAVTA1,TASTRN             * TRANSLATION DONE ?          AB 01410000                
       JF    CMFVOP                    NO-GO VERIFY OP CODE.         AB 01420000                
       MVC   $BDWKB(2,DTF),LCBATL(,DTF) USE ASCI XLATE BUFFER IN WKB. B 01430000                
CMFVOP EQU   *                         *                             AB 01440000                
.A0200 ANOP                                                             01450000                
       AIF   (&N32).T1400                                               01460000                
       TBN   PLOPC(,PL),OPGET          GET TO BE PERFORMED NEXT ?    0B 01470000                
       JT    CMFPEW                    YES-GO DO PUT EOT TO WACK.    0B 01480000                
       TBN   PLOPC(,PL),OPMSG          IS OP REQUESTED A             0B 01490000                
       TBF   PLOPC(,PL),OPORDR-OPRUF   *             PUT-EOT?       @18 01500000                
       SPACE 1                                                          01510000                
*   SET PUT-EOT TO ACK OR WACK FOR 3270 SYSTEM FOR PUT-MSG.          0B 01520000                
       SPACE 1                                                          01530000                
       JF    CMFPT0                    NO-NOT PUT-MSG, USE REGULAR OP0B 01540000                
CMFPEW EQU   *                         *                             0B 01550000                
       L     PLTUBA(,PL),TUB           POINT TO THE TUB.             0B 01560000                
       CLI   TUBPHY(,TUB),TUB5M2       3270 SYSTEM ?                 0B 01570000                
       L     LCBPL@(,DTF),PL           XR1--> PARAM LIST                01575000                
       JH    CMFPT0                    NO-GO CHECK FOR PUT OF ZERO LE0B 01580000                
       MVI   $BDOPC(,DTF),$BOPEW       SET PUT-EOT TO ACK/WACK.      0B 01590000                
       SBN   LCBAT2(,DTF),LCBSET       SET SEND EOT IND.             0B 01600000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM OP?                       01602000                
       JT    CMBIOS                    YES-CALL MLMP IOCS               01603000                
       J     CMFVPM                    GO CHECK LENGTHS                 01604000                
       SPACE 1                                                          01605000                
       J     CMBIOS                    GO CALL MLMP IOCS.            0B 01610000                
       SPACE 1                                                          01620000                
CMFPT0 EQU   *                         *                             0B 01630000                
.T1400 ANOP                                                             01640000                
       TBF   PL$OPC(,PL),OPUSER        USER FUNCTION, AND             B 01660000                
       TBF   PLOPC(,PL),OPMSG          RECORD MODE ?                  B 01670000                
       JT    CMFVRC                    YES-GO HANDLE RECORDS.         B 01680000                
       TBN   PLOPC(,PL),OPMSG          IS OP REQUESTED A              B 01690000                
*                                      -----START-------------------@06 01695000                
       TBF   PLOPC(,PL),OPORDR-OPRUF   *                 PUT-EOT ?    B 01700000                
*                                      -----END---------------------@06 01705000                
       CLC   $BDREL(2,DTF),CC0000      ZERO LENGTH PUT-MSG ?          B 01710000                
       JC    CMFVPB,FLSNEQ             NO-GO SET PUT BLOCK OP CODE.   B 01720000                
       SBN   LCBAT2(,DTF),LCBSET       SET SEND EOT IND.              B 01730000                
CMFVET EQU   *                         *                              B 01740000                
       TBN   LCBAT2(,DTF),LCBABT       ABORT OF A                     B 01741000                
       TBN   LCBOPC(,DTF),OPPUT        *           PUT?               B 01742000                
       JF    CMFABT                    NO-CONTINUE                    B 01743000                
       L     $BDWKA(,DTF),WKA          XR1-->WORK AREA                B 01744000                
       MVI   WKERRD(,WKA),NOBIT        ZERO RETRY COUNT IN WORK AREA  B 01745000                
       MVC   DCOUNT(2,WKA),X$FFFC      SET DELAY COUNT VERY HIGH      B 01746000                
       J     CMFRTN                    GO POST AS NECESSARY           B 01747000                
CMFABT EQU   *                         *                              B 01748000                
       MVI   $BDOPC(,DTF),$BOPEF       SET PUT END OF FILE OP CODE    B 01750000                
       J     CMFAKE                    GO FAKE CALL TO MLMP, FORCE CHKB 01760000                
       SPACE                                                            01770000                
CMFVPB EQU   *                         *                              B 01780000                
       MVI   $BDOPC(,DTF),$BOPEB       SET OP CODE TO PUT END OF BLOCKB 01790000                
CMFVPM EQU   *                         *                                01795000                
       CLC   PLOUTL(2,PL),LCBKLC(,DTF) OUTL GREATER THAN BLOCK LEN ?  B 01800000                
       JNH   CMBIOS                    NO-GO CALL MLMP IOCS.          B 01810000                
       MVC   $BDREL(2,DTF),LCBKLC(,DTF) TRUNCATE TO BLOCK LENGTH.     B 01820000                
       J     CMFVSM                    GO SET TRUNCATED IND.          B 01830000                
       SPACE                                                            01840000                
CMFVRC EQU   *                         *                              B 01850000                
       L     PLTUBA(,PL),TUB           LOAD THE TUB REG.              B 01860000                
       TBF   SAVTA2,TASITB+TASPAN+TASVRL MLMP VARIABLE SUPPORT ?      B 01870000                
       CLC   $BDREL(2,DTF),TUBRCL(,TUB) OUTL LT TAS RECORD LEN ?      B 01880000                
       JC    CMBIOS,FLSOEQ             YES-CALL MLMP, ALL IS SET.     B 01890000                
       JL    CMFVSM                    OUTL LT TAS RECL, BLANKS NEEDEDB 01900000                
       MVC   $BDREL(2,DTF),TUBRCL(,TUB) USE TAS RECORD LEN FOR PUT.   B 01910000                
CMFVSM EQU   *                         *                              B 01920000                
       SBN   LCBAT2(,DTF),LCBTRC       SET TRUNCATED INDICATOR.       B 01930000                
CMBIOS EQU   *                         *                              B 01940000                
       L     LCBPL@(,DTF),PL           XR1 --> PARAM LIST               01940200                
       SBF   LCBAT2(,DTF),LCBSEC       SET SECOND BLOCK IND. OFF    @09 01940400                
       TBN   LCBAT2(,DTF),LCBRCI       RECEIVE INITIAL?             @09 01940600                
       JT    CMSDTX                    YES - GO TO ML/MP            @09 01940800                
       SPACE 1                                                          01941000                
* IF THIS IS A GET AND SEARCH EOT - CALL MLMP                           01941200                
* IF THIS IS NOT A GET - CALL MLMP                                      01941400                
       SPACE 1                                                          01941600                
       SBN   LCBAT2(,DTF),LCBSEC       SET SECOND BLOCK IND ON      @09 01941800                
       TBN   PL$OPM(,PL),OPGET         GET OPERATION AND --             01942000                
       TBF   LCBAT1(,DTF),LCBEOT       NOT SEARCH EOT ?                 01942200                
       JF    CMSDTX                    NO - CALL ML/MP                  01942400                
       SPACE 1                                                          01942600                
* HAVE A GET NOW. IF IT'S MESSAGE MODE - SKIP CALL OF MLMP              01942800                
       SPACE 1                                                          01943000                
       TBF   SAVTA2,TASBLK+TASREC      RECORD OR BLOCK?             @14 01943200                
       JT    CMBNOG                    YES,SKIP CALL OF MLMP        @14 01943400                
       SPACE 1                                                          01943600                
* HAVE A RECORD OR BLOCK MODE TERMINAL. IF RECORD IN PROCESS            01943800                
* THEN FAKE AN OP END AND THE DATA WILL BE MOVED ON THE                 01944000                
* CHECK ENTRY.                                                          01944200                
       SPACE 1                                                          01944400                
       TBN   SAVTA2,TASREC             RECORD MODE AND--            @14 01944600                
       L     $BDIOB(,DTF),XR1          XR1--IOB                     @14 01944800                
       CLI   IOBCMP(,XR1),PROCES       IN PROCESS--                 @14 01945000                
       L     LCBPL@(,DTF),PL           XR1--PARAM LIST              @14 01945200                
       JC    CMBNOG,FLSNEQ             NOT IN PROCESS,JUMP          @14 01945400                
       ALC   CCOECT(1),CC0001          UP OP END COUNT              @14 01945600                
       ALC   LCBOPE(1,DTF),CC0001      UP OP END COUNT              @14 01945800                
CMBNOG EQU *                                                        @14 01946000                
       SPACE 2                                                          01946200                
* GET OP AND NOT RECEIVE INITIAL AND NOT SEARCH EOT - DON'T BRANCH TO   01946400                
* ML/MP.  ML/MP IN ITS INFINITE WISDOM HAS ALREADY STARTED THE NEXT     01946600                
* BLOCK OF DATA ON ITS WAY; THEREFORE, CM WILL WAIT FOR THE OP          01946800                
* END TO OCCUR AND THEN GO TO CHECK TO MOVE THE DATA.                   01947000                
       SPACE 2                                                          01947200                
       SBF   $BDAT1(,DTF),$BCNOW       SET OFF SPAN RECORD IND.         01947400                
       MVI   DTFCMP(,DTF),NOBIT        SET TO OP ACCEPTED               01947600                
       L     $BDWKA(,DTF),WKA          XR1 --> ML/MP WORK AREA          01947800                
       SBF   $BWFG3(,WKA),F3MOVE       SET OFF ML/MP'S 'DATA MOVED'     01948000                
       L     LCBPL@(,DTF),PL           XR1 --> CURRENT PARM LIST        01948200                
       J     CMTRGT                    SKIP CALL OF ML/MP               01948400                
CMSDTX EQU   *                         *                            @09 01948600                
       L     LCBPL@(,DTF),PL           RELOAD THE PL REG.             B 01950000                
       B     $$BSMS                    CALL MLMP IOCS.                B 01960000                
       SPACE                                                            01970000                
CMTRGT EQU   *                         *                                01975000                
       B     $CC4TT                    BRANCH TO TRACE SIO.           B 01980000                
       DC    AL1(TTMSIO)               ID FOR START IO  TO TP.        B 01990000                
       SPACE                                                            02000000                
CMFMVD EQU   *                         *                              B 02010000                
       SBN   LCBAT2(,DTF),LCBACT       SET LINE ACTIVE IND.           B 02020000                
       TBN   PLOPM(,PL),OPOLT          ON LINE TEST REQUEST ?         B 02030000                
       L     $BDWKA(,DTF),WKA          LOAD @ MLMP WORK AREA.         B 02040000                
       JF    CMFAKR                    NO-GO CHECK FOR ERROR POSTED.  B 02050000                
       SBN   $BWFG3(,WKA),$BWRFT       SET RFT STARTED IND.           B 02060000                
       SBN   LCBAT2(,DTF),LCBSET       SET SEND EOT INDICATOR.        B 02070000                
CMFAKR EQU   *                         *                              B 02080000                
       TBF   ACKS(,WKA),AKERR          ERROR POST PENDING FROM MLMP ? B 02090000                
       JT    CMNFAK                    NO - GO CHECK RECORD MOVED.    B 02100000                
       CLI   LCBOPE(,DTF),NOBIT        OP END PENDING ALREADY ?       B 02102000                
       JE    CMFAKE                    NO - GO FAKE AN OP END.        B 02104000                
CMNFAK EQU   *                         * LOCAL                        B 02106000                
       TBN   $BWFG3(,WKA),F3MOVE       RECORD MOVED INDICATOR ON ?    B 02110000                
       JF    CMFEOT                    NO-GO CHECK EOT POSTED IN IOB. B 02120000                
       SBN   LCBOPC(,DTF),LCBMVD       SET ON DATA MOVED INDICATOR.   B 02130000                
       SPACE 1                                                          02151000                
*  FOR BLOCK MODE TERMINALS,THE DATA HAS ALREADY BEEN MOVED           B 02151500                
*  BY MLMP; HOWEVER,THE MAX RECORD LENGTH WAS USED. WE MUST           B 02152000                
*  CALCULATE THE TRUE RECORD LENGTH BEFORE POSTING THE USER.          B 02152500                
       SPACE 2                                                          02153000                
       TBF   SAVTA2,TASMSG             NOT MESSAGE MODE ?             B 02153500                
       JF    CMNXP1                    NO--CHECK EOT POSTED           B 02154000                
       SLC   SAVCAT-2(2),SAVCAT        SUBTRACT SAVED CAR FROM TAR    B 02154500                
       SLC   SAVCAT-2(2),CC0001        DECREMENT FOR SOH OR STX       B 02155000                
       TBN   SAVTA2,TASTSP             TRANSPARENCY ?                 B 02155500                
       JF    CMNXPR                    NO - CONTINUE                  B 02156000                
       SLC   SAVCAT-2(2),CC0001        DECREMENT FOR DLE              B 02156500                
CMNXPR EQU   *                         *                              B 02157000                
       MVC   $BDREL(2,XR2),SAVCAT-2    INSERT LNGTH IN DTF            B 02158000                
CMNXP1 EQU   *                         *                              B 02158100                
       TBF   LCBOPE(,DTF),ALLBIT       ANY OP ENDS THIS LINE?         B 02158200                
       JT    CMFAKE                    NO-GO FAKE ONE                 B 02158300                
CMFEOT EQU   *                         *                              B 02160000                
       L     $BDIOB(,DTF),IOB          POINT TO THE IOB.              B 02170000                
       CLI   IOBCMP(,IOB),$BCEOT       EOT POSTED IN THE IOB ?        B 02180000                
       JNE   CMFRTN                    NO-GO EXIT NORMALLY.           B 02190000                
CMFAKE EQU   *                         *                              B 02200000                
       ALC   CCOECT(1),CC0001          UP OP END COUNT BY ONE.        B 02210000                
       ALC   LCBOPE(1,DTF),CC0001      BUMP LINE OP END COUNT.        B 02220000                
CMFRTN EQU   *                         *                              B 02230000                
       BC    CMPAII,FLSCLR             GO TO POSTING LOGIC, CLEAR FALSE 02240000                
&MIX   SETA  &NSWL+&NCS                                                 02250000                
       AIF   (&MIX EQ '2').S0700                                        02260000                
       TITLE '$E092/CMBSKP---BSCA-POLL-SKIP-BIT-ROUTINE'                02270000                
*********************************************************************** 02280000                
*                                                                     * 02290000                
* NAME--CMBSKP                                                        * 02300000                
*                                                                     * 02310000                
*    TITLE--BSCA POLL SKIP BIT ROUTINE                                * 02320000                
*                                                                     * 02330000                
*    FUNCTION--SET THE SKIP ENTRY INDICATOR ON/OFF IN THE BSCA        * 02340000                
*              POLLING LIST OR THE BSCA SWITCHED LINE ID VERIFICATION * 02350000                
*              LIST.                                                  * 02360000                
*                                                                     * 02370000                
*    OPERATION--  IF THIS DTF OR THIS PARTICULAR OPERATION DOES NOT   * 02390000                
*                 INVOLVE ONE OF THE BSCA LIST THEN RETURN WITHOUT    * 02400000                
*                 SETTING AND SKIP BIT.                               * 02410000                
*               . OTHERWISE, FIND THE ENTRY IN THE APPROPRIATE LIST.  * 02420000                
*               . SET THE SKIP BIT AS SPECIFIED FOR ALL ENTRIES FOR   * 02430000                
*                 THE SAME TERMINAL.                                  * 02440000                
*                                                                     * 02450000                
*    ENTRY POINTS--CMBSKP-ALL FUNCTIONS ABOVE.                        * 02460000                
*                --CMASCH-ONLY FIND THE ENTRY IN THE ADDRESSING LIST. * 02470000                
*                --CMPSCH-ONLY FIND THE ENTRY IN THE POLLING/SWITCHED * 02480000                
*                  ID LIST.                                           * 02490000                
*                                                                     * 02500000                
*    INPUT- XR1--ADDRESS OF THE TP PARAMETER LIST.                    * 02520000                
*           XR2--SAVED AD RESTORED.                                   * 02530000                
*           CMB#SB--SBN2(X'BA') SET THE SKIP BIT ON, OR               * 02540000                
*                   SBF2(X'BB') SET THE SKIP BIT OFF.                 * 02550000                
*           TUBSID--ID OF THE ENTRY(S) TO PERFORM THE OPERATION ON.   * 02560000                
*                                                                     * 02570000                
*    OUTPUT- XR1-ADDRESS OF THE TP PARAMETER LIST.                    * 02590000                
*            XR2-RESTORED TO ENTRY VALUE.                             * 02600000                
*            POLLING/SWITCHED ID LIST-SKIP BIT FOR APPROPRIATE ID SET * 02610000                
*                                     AS SPECIFIED.                   * 02620000                
*                                                                     * 02630000                
*    EXIT, NORMAL--TO NSI OF CALLER.                                  * 02640000                
*                                                                     * 02650000                
*    EXIT, ERROR--CMASCH/CMPSCH WILL RETURN TO NSI+3 IF THE ENTRY IS  * 02660000                
*                 NOT FOUND.                                          * 02670000                
*                                                                     * 02680000                
*********************************************************************** 02690000                
       SPACE                                                            02700000                
LST    EQU   2                         POLL LIST REGISTER.           CB 02710000                
ONOFF  EQU   X'01'                     OP CODE BIT FOR SBN/SBF.       B 02720000                
CMBSKP EQU   *                         *                             CB 02740000                
       SPACE                                                            02750000                
       ST    CMBXIT+3,ARR              SAVE THE ARR                  CB 02760000                
       ST    CMON1B+3,PL               SAVE XR1                      CB 02770000                
       ST    CMBXR2+3,XR2              SAVE XR2                      CB 02780000                
       L     PLTUBA(,PL),TUB           POINT XR1 AT TUB              CB 02790000                
       L     TUBDTF(,TUB),DTF          POINT XR2 AT DTF              CB 02800000                
&MIX   SETA  &NPP+&NMP+&NSWL                                            02810000                
       AIF   (&MIX EQ '3').S0600                                        02820000                
       TBN   $BDATR(,DTF),$BCSWI       MULTI-TERMINAL LINE ?      C/SLB 02830000                
       JF    CMOEXT                    NO-GO EXIT.                  CLB 02840000                
       AIF   (&NSWL).S0600                                              02850000                
       TBF   $BDATR(,DTF),$BCMPT       SWITCHED                      SB 02860000                
       TBN   TUBTA1(,TUB),TASCNC       *        CALL ?               SB 02870000                
       JT    CMOEXT                    YES-DON'T SET SKIP BITS.      SB 02880000                
.S0600 ANOP                                                             02881000                
       MVC   LCBID#(1,DTF),TUBSID(,TUB) MOVE POLL LIST ID INTO SAVE. CB 02882000                
       AIF   (&NSWL).S0605                                              02883000                
*                                      -----START-------------------@07 02884000                
       TBN   $BDATR(,DTF),$BCMCN       CONTROL STATION LINE ?        SB 02885000                
       JT    CMONSD                    YES-SKIP SWITCHED CHECKING    SB 02886000                
       TBF   $BDATR(,DTF),$BCMPT       SWITCHED AND                  SB 02887000                
       TBN   TUBTA2(,TUB),TASVFY       *     NO VERIFY ?             SB 02888000                
       JF    CMONSD                    YES-GO PROCESS LIST.          SB 02889000                
       TBF   $BDATR(,DTF),$BCMPT       SWITCHED AND                  SB 02890000                
       CLI   CMB#SB,SBF2               ACTIVATE ENTRY ?              SB 02905000                
       JC    CMONO#,TRUAEQ             YES-GO BUILD SWITCHED ENTRY.  SB 02910000                
       L     LCBNO#(,DTF),POL          POINT TO SWITCHED LIST.       SB 02911000                
       CLC   LCBID#(1,DTF),POLID(,POL) THIS ENTRY IN LIST NOW ?      SB 02912000                
       JNE   CMOEXT                    NO-SKIP THIS ENTRY.           SB 02913000                
       J     CMSWFN                    GO SET SKIP BIT                  02913500                
CMONSD EQU   *                         * LOCAL                          02914000                
*                                      -----END---------------------@07 02915000                
.S0605 ANOP                                                             02920000                
       B     CMPSCH                    GO TO FIND THE ID IN POLL LISTCB 02940000                
CMSWFN EQU   *                         *                                02945000                
       SPACE                                                            02950000                
       MVC   CMOSAM+3,POLCNT(1,POL)    USE CHAR COUNT TO BUILD COMPARCB 02960000                
       MVC   CMOSAM+2(2),CMOSAM+3      * AND LOAD ADDRESS INSTRUCTIONCB 02970000                
       LA    POLCNT(,POL),POL          UP PTR TO COUNT BYTE.         CB 02980000                
       L     LCBPOL(,DTF),LST          LOAD PTR TO POLLING LIST STARTCB 02990000                
CMOCHK EQU   *                         *                             CB 03000000                
       CLI   POLID(,LST),POLEND        END OF LIST ?                 CB 03010000                
       JNL   CMOEXT                    YES-GO EXIT.                  CB 03020000                
       MVC   CMOSTS+2,POLCNT(1,LST)    SET UP LA INSTR. TO STATUS BYTCB 03030000                
       LA    POLCNT(,LST),LST          UP POLL LIST PTR TO COUNT BYTECB 03040000                
CMOSAM EQU   *                         *                              C 03050000                
       CLC   #(#,LST),#(,POL)          THIS ENTRY SAME AS REQUESTED ? C 03060000                
CMOSTS EQU   *                         *                             CB 03070000                
       LA    #(,LST),LST               UP POLL LIST PTR TO STATUS BYTCB 03080000                
       JNE   CMONXT                    NO-IGNORE IT, GO TO NEXT ENTRYCB 03090000                
CMB#SB EQU   *                         *                             CB 03100000                
       SBN   1(,LST),SKIP              SET POLL SKIP BIT ON / OFF.   CB 03110000                
CMONXT EQU   *                         *                             CB 03120000                
       LA    2(,LST),LST               UP PTR TO NEXT POLL LIST ENTRYCB 03130000                
       B     CMOCHK                    GO CHECK THIS NEXT ENTRY.     CB 03140000                
       SPACE                                                            03150000                
       AIF   (&NSWL).S0660                                              03151000                
CMONO# EQU   *                         * LOCAL                       SB 03152000                
       L     LCBNO#(,DTF),POL          LOAD SWITCHED ID LIST POINTER SB 03153000                
       TBN   POLCNT+1(,POL),POLSKP     SKIP BIT ON THIS ENTRY ?      SB 03154000                
       JF    CMOEXT                    NO - GO TO EXIT               SB 03155000                
       MVC   POLID(,POL),LCBID#(1,DTF) SET BLANK PARM LIST THIS ENTRYSB 03156000                
       SBF   POLCNT+1(,POL),POLSKP     SET SKIP BIT OFF              SB 03157000                
.S0660 ANOP                                                             03158000                
CMOEXT EQU   *                         *                             CB 03160000                
CMON1B EQU   *                         *                             CB 03170000                
       LA    *-*,PL                    RESTORE PARM LIST REG.        CB 03180000                
CMBXR2 EQU   *                         *                             CB 03190000                
       LA    #,XR2                     RELOAD CALLER'S XR2.          CB 03200000                
CMBXIT EQU   *                         *                             CB 03210000                
       B     #                         RETURN TO CALLER.             CB 03220000                
       EJECT                                                            03230000                
*********************************************************************** 03240000                
*    POLL/ADDR SEARCH ROUTINE. GIVE ID ENTRY BYTE IN DTF SAVE AREA,  CB 03250000                
*  FIND THE CORRESPONDING ENTRY IN THE POLL LIST AND RETURN A POINTERCB 03260000                
*  TO THE PHYSICAL TERMINAL ADDRESS.                                 CB 03270000                
*********************************************************************** 03280000                
       SPACE                                                            03290000                
*    ENTRY REGS: XR1-DON'T CARE,       XR2-DTF.                      CB 03300000                
*    EXIT  REGS: XR1-POLL LIST ENTRY,   XR2-DTF.                     CB 03310000                
       SPACE                                                            03320000                
CMASCH EQU   *                         ADDRESS LIST ENTRY POINT.     CB 03330000                
       L     LCBSEL(,DTF),POL          LOAD ADDR LIST REGISTER.      CB 03340000                
       J     CMPNXT                    GO ENTER MAINLINE CODE.       CB 03350000                
       SPACE                                                            03360000                
CMPSCH EQU   *                         FIRST LEVEL SUBROUTINE.       CB 03370000                
       L     LCBPOL(,DTF),POL          LOAD POLL LIST REGISTER.      CB 03380000                
CMPNXT EQU   *                         *                             CB 03390000                
       ST    LCBWRK(,DTF),ARR          SAVE RETURN NSI.              CB 03400000                
CMPCHK EQU   *                         *                             CB 03410000                
       CLC   POLID(1,POL),LCBID#(,DTF) THIS WANTED TERMINAL ENTRY ?  CB 03420000                
       JE    CMPFND                    YES-GO SET UP RETURN REG.     CB 03430000                
       MVC   CMPLA+2,POLCNT(1,POL)     USE COUNT TO GET TO NEXT ENTRYCB 03440000                
CMPLA  EQU   *                         *                             CB 03450000                
       LA    #(,POL),POL               UPDATE REG PAST PHYSICAL ADDR.CB 03460000                
       LA    POLNXT(,POL),POL          UPDATE REG PAST ID/COUNT/STATUCB 03470000                
       AIF   (&NSWL).S0680                                              03480000                
       CLI   POLID(,POL),POLEND        END OF LIST ?                 SB 03490000                
       BL    CMPCHK                    NO-CONTINUE THE SEARCH.       SB 03500000                
       ALC   LCBWRK(2,DTF),THREE       ADD 3 TO NSI ADDR FOR RETURN. SB 03510000                
*   RETURN TO NSI +3 ONLY FOR SWITCHED ID LIST. EITHER BOTH USER ,   SB 03520000                
*     AND CMASCH ARE IN CORE, OR BOTH ARE IN THE SAME TRANSIENT.     SB 03530000                
       SPACE 1                                                          03540000                
       AGO   .S0690                                                     03550000                
.S0680 ANOP                                                             03560000                
       B     CMPCHK                    GO TO CHECK NEXT ENTRY.       CB 03570000                
.S0690 ANOP                                                             03580000                
       SPACE                                                            03590000                
CMPFND EQU   *                         *                             CB 03600000                
*      LA    POLCNT(,POL),POL          UPDATE REG PAST ID BYTE.      CB 03610000                
       L     LCBWRK(,DTF),IAR          RETURN TO CALLER.             CB 03620000                
.S0700 ANOP                                                             03621000                
       AIF   (&MIN).N0400                                               03630000                
       TITLE '$E092/CMCSKP--SET-BSCA-CHECK-LIST-BIT-ON/OFF'             03640000                
*********************************************************************** 03650000                
*   CHECK LIST SET SKIP BIT ROUTINE.                                  B 03660000                
*********************************************************************** 03670000                
       SPACE                                                            03680000                
*   SET SKIP BIT ON OR OFF IN CHECK LIST FOR BSCA DTF'S.                03690000                
*     TO SET THE SKIP BIT ON, MOVE SBN2 INTO CMC#SB.                  B 03700000                
*     TO SET THE SKIP BIT OFF, MOVE SBF2 INTO CMC#SB.                 B 03710000                
*     ON ENTRY: XR1 -> IOB                                            B 03720000                
*     ON EXIT: XR1=IOB, XR2=DTF.                                      B 03730000                
       SPACE                                                            03740000                
CMCSKP EQU   *                         *                              B 03750000                
       ST    CMCSXT+3,ARR              SAVE RETURN @.                 B 03760000                
       L     CCKLST,XR2                LOAD CHECK LIST @ IN XR2.      B 03770000                
CMCSCK EQU   *                         *                              B 03780000                
       CLC   CKLDTF(2,XR2),IOBDTF(,IOB) THIS LIST ENTRY FOR THIS DTF? B 03790000                
       JE    CMC#SB                    YES-GO SET SKIP BIT.           B 03800000                
       LA    CKLEN(,XR2),XR2           LOAD @ OF NEXT ENTRY.          B 03810000                
       B     CMCSCK                    GO AND CHECK THIS NEXT ENTRY.  B 03820000                
       SPACE                                                            03830000                
CMC#SB EQU   *                         *                              B 03840000                
       SBN   CKLSTS(,XR2),CKLSKP       SET SKIP AS DIRECTED BY CALLER.B 03850000                
       L     CKLDTF(,XR2),DTF          RESTORE DTF REGISTER.          B 03860000                
CMCSXT EQU   *                         *                              B 03870000                
       B     #                         RETURN TO CALLER.              B 03880000                
       TITLE '$E092/CMBTAS--SET-DTF-AND-IOB-FROM-TAS'                   03900000                
*********************************************************************** 03910000                
*   SET UP DTF/IOB ATTRIBUTTES, AND OWNERSHIP STATUS.                 * 03920000                
*********************************************************************** 03930000                
       SPACE                                                            03940000                
*   ENTRY REGS: XR2=DTF                                               B 03950000                
*   EXIT REGS: XR1=TUB, XR2=DTF.                                      B 03960000                
       SPACE                                                            03970000                
*   SET THE TERMINAL ATTRIBUTES IN THE DTF AND THE IOB.               B 03980000                
       SPACE                                                            03990000                
CMBTAS EQU   *                         *                              B 04000000                
       ST    CMBTXT+3,ARR              SAVE RETURN @.                 B 04010000                
       SBF   $BDATT(,DTF),$BCRAN+$BCITB SET OF CURRENT TRANSP AND ITB.B 04020000                
       MVC   CMBTS1+1(1),SAVTA2        MOVE IN TAS ATTR 2.            B 04030000                
       SBF   CMBTS1+1,ALL-TASITB-TASTSP LEAVE TRANSP AND ITB SETTINGS.B 04040000                
       ALC   CMBTS1+1(1),CMBTS1+1      CORRECT TO DTF BIT DEFINITION. B 04050000                
CMBTS1 EQU   *                         *                              B 04060000                
       SBN   $BDATT(,DTF),#            SET TAS TRANSP AND ITB INTO DTFB 04070000                
       MNN   $BDAT1(,DTF),SAVTA2       MOVE IN SPAN AND RECSEP IND'S. B 04080000                
       SBF   $BDAT1(,DTF),ALL-$BCSEP-$BCSPN-$BCPLR SET OFF OTHERS.    B 04090000                
       L     LCBPL@(,DTF),PL           LOAD PARM LIST REG.            B 04100000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?              B 04110000                
       L     PLTUBA(,PL),TUB           LOAD REG TO POINT TO TUB.      B 04120000                
       AIF   (&MOD4 NE '1').LJ040                                       04122000                
       TBF   TUBAT1(,TUB),TUBKNM       AND NOT THE CONSOLE ?            04124000                
.LJ040 ANOP                                                             04126000                
       JT    CMBSYS                    YES-GO SET SYSTEM BLOCK LEN.   B 04130000                
       SPACE                                                            04140000                
*   DETERMINE THE BLOCK LENGTH GIVEN THE TAS RECORD LENGTH AND        B 04150000                
*     BLOCKING FACTOR.                                                B 04160000                
       SPACE                                                            04170000                
CMBLKG EQU   *                         *                              B 04180000                
       MVC   LCBKLC(2,DTF),TUBRCL(,TUB) MOVE IN CURRENT RECORD LENGTH.B 04190000                
       MVC   LCBOWN(1,DTF),TUBBKF(,TUB) PUT BLOCK FACTOR IN WORK AREA.B 04200000                
CMBLAD EQU   *                         *                              B 04210000                
       SLC   LCBOWN(1,DTF),CC0001      DECREMENT BLOCKING FACTOR. 0 ? B 04220000                
       JE    CMBOWN                    YES-GO SET OWNERSHIP STATUS.B  B 04230000                
       ALC   LCBKLC(2,DTF),TUBRCL(,TUB) ADD ANOTHER RECORD LENGTH.    B 04240000                
       B     CMBLAD                    GO TO CHECK FOR MORE RECORDS.  B 04250000                
       SPACE                                                            04260000                
CMBSYS EQU   *                         SET SYSTEM BLOCK LENGTH.       B 04270000                
       MVC   LCBKLC(2,DTF),CC#MCL      MOVE IN MAX COMMAND LENGTH.    B 04280000                
       SPACE                                                            04290000                
*   SET OWNERSHIP STATUS IN THE TUB AND THE LCB.                        04300000                
       SPACE                                                            04310000                
CMBOWN EQU   *                         SET OWNERSHIP.                 B 04320000                
*  DO NOT SET TUB OWNERSHIP IF ERROR POST CODE                          04321000                
       L     $BDIOB(,DTF),XR1          XR1 --> CURRENT IOB              04322000                
       CLI   IOBCMP(,XR1),$BCEOT       HIGHER THAN X'42' AND -->|       04323000                
       TBF   IOBCMP(,XR1),BIT0         LESS THAN X'80' AND----->|       04324000                
       TBN   LCBAT2(,DTF),LCBACT       LINE ACTIVE ? ---------->|       04325000                
       L     LCBPL@(,DTF),PL           XR1 --> PARM LIST        |       04326000                
       L     PLTUBA(,PL),TUB           XR1 --> TUB              |       04327000                
       JC    CMNOWN,X'13'              JUMP IF ERROR POSTED<----|       04328000                
       SBN   TUBAT2(,TUB),TUBOWN       SET TUB OWNERSHIP.             B 04330000                
CMNOWN EQU   *                         *                                04335000                
       MVC   LCBOWN(2,DTF),TUBTCB(,TUB) SAVE TCB @ OF OWNER IN LCB.   B 04340000                
       AIF   (&NSWL).S0900                                              04350000                
&MIX   SETA  &NPP+&NMP+&NCS                                             04360000                
       AIF   (&MIX EQ '3').S0800                                        04370000                
       TBN   TUBAT1(,TUB),TUBSWC       SWITCHED LINE ?              SLB 04380000                
       JF    CMBTXT                    NO-GO EXIT.                  SLB 04390000                
.S0800 ANOP                                                             04400000                
       ST    LCBOWN(,DTF),TUB          SET ADDRESS OF OWNING TUB.    SB 04410000                
.S0900 ANOP                                                             04420000                
       J     CMBTXT                    GO TO RETURN.                  B 04430000                
       AGO   .N0500                                                     04450000                
.N0400 ANOP                                                             04460000                
       TITLE '$E092/CMFORB--TRANSIENT-FORM-OF-CMFORB,-CMBTAS'           04470000                
*********************************************************************** 04480000                
*   CALL IN TRANSIENT FORM OF 'CMFORB', AND 'CMBTAS'.                 * 04490000                
*********************************************************************** 04500000                
       SPACE 1                                                          04510000                
CMTASV EQU   *                         CALL $CC4B1 FOR TASV           B 04520000                
       MVI   CMTID1,CTTASV             MOVE IN ID                     B 04530000                
       J     CMCAL1                    CALL THE TRANSIENT             B 04540000                
       SPACE                                                            04550000                
CMSET  MVI   CMTID1,CTSET              MOVE IN ID                     B 04560000                
       J     CMCAL1                    CALL THE TRANSIENT             B 04570000                
       SPACE                                                            04580000                
CMREJT MVI   CMTID1,CTREJC             MOVE IN ID                     B 04590000                
       J     CMCAL1                    CALL THE TRANSIENT             B 04600000                
CMBTAS EQU   *                         *                              B 04610000                
       MVI   CMTID1,CTBTAS             MOVE IN ID FOR 'CMBTAS'.       B 04620000                
CMCAL1 EQU   *                         *                              B 04630000                
       ST    CMRTN1+3,ARR              SAVE THE RETURN ADDRESS.       B 04640000                
       B     $CC4PI                    CALL TRANSIENT HANDLER.        B 04650000                
       DC    AL1(CC4B1)                CALL IN MIN XIENT #2.          B 04660000                
CMTID1 DC    AL1(0)                    ID OF MIN SYST FUNCTION TO DO. B 04670000                
SAVTA1 DC    XL1'0'                    TERMINAL ATTRIBUTE SET BYTE 1. B 04680000                
SAVTA2 DC    XL1'0'                    TERMINAL ATTRIBUTE SET BYTE 2. B 04690000                
SAVRCL DC    XL2'00'                   TERM ATTR SET RECORD LENGTH.   B 04700000                
CMSPHY DC    AL1(0)                    SAVE ARE FOR TUBPHY.           B 04710000                
CMSPL  DC    AL2(0)                    SAVED PARM LIST                  04720000                
GMLIST EQU   *                         GETMAIN ADDR                     04730000                
       DC    XL4'00'                    AND SIZE                        04740000                
       SPACE 1                                                          04750000                
CMRTN1 EQU   *                         *                              B 04760000                
       B     #                         RETURN TO CALLER.              B 04770000                
.N0500 ANOP                                                             04780000                
       AIF   (&MIN).N0600                                               04790000                
       TITLE '$E092/CMTASV--SET-AND-SAVE-TAS-VALUE-IN-CORE'             04810000                
*********************************************************************** 04820000                
*   SUBROUTINE TO SAVE TAS BYTES 1 AND 2, AND CMSPHY BYTE.            * 04830000                
*********************************************************************** 04840000                
       SPACE                                                            04850000                
*   ENTRY REGS: XR1-> PL.                                               04860000                
*   EXIT REGS:  SAME AS ENTRY.                                          04870000                
       SPACE                                                            04880000                
CMTASV EQU   *                                                        B 04890000                
       ST    CMBTXT+3,ARR              SAVE THE RETURN ADDRESS.       B 04900000                
       ST    CMTSX1+3,PL               SAVE THE PL REG.               B 04910000                
       SBF   PL$OPC(,PL),OPUSER        RESET FUNCTION INDICATOR.      B 04920000                
       TBF   PLOPM(,PL),OPREQR         USER REQUEST, AND              B 04930000                
       TBF   PL$OPC(,PL),OPRFSH+OPLSNS * NOT POLL STATUS OR REFRESH ? B 04940000                
       L     PLTUBA(,PL),TUB           LOAD THE TUB REG.              B 04950000                
       MVC   CMSPHY,TUBPHY(1,TUB)      SAVE THE TUBPHY BYTE IN CORE.  B 04960000                
       JF    CMTSYS                    NO-GO SET SYSTEM TAS VALUES.   B 04970000                
       MVC   SAVRCL,TUBRCL(4,TUB)      SAVE THE USER TAS VALUES.      B 04980000                
       J     CMTSX1                    GO TO EXIT.                    B 04990000                
       SPACE                                                            05000000                
CMTSYS EQU   *                         FILL SYSTEM TAS VALUE.         B 05010000                
       MVI   SAVTA1,TASAUT             SET AUTO CONNECT VALUE.        B 05020000                
       MVI   SAVTA2,TASMSG             SET MESSAGE MODE IN TAS 2.     B 05030000                
       L     CMTSX1+3,PL               RELOAD THE PL REG.             B 05040000                
       SBN   PL$OPC(,PL),OPUSER        INDICATE SYSTEM FUNCTION.      B 05050000                
CMTSX1 EQU   *                         *                              B 05060000                
       LA    #,PL                      RELOAD THE USER PL REG.        B 05070000                
CMBTXT EQU   *                         *                              B 05080000                
       B     #                         RETURN.                        B 05090000                
.N0600 ANOP                                                             05110000                
       TITLE '$E092/CMGINL--DETERMINE-THE-OPERATION-INPUT-LENGTH'       05120000                
*********************************************************************** 05130000                
*                                                                     * 05140000                
*  NAME--CMGINL                                                       * 05150000                
*                                                                     * 05160000                
*  TITLE--DETERMINE THE OPERATION INPUT LENGTH                        * 05170000                
*                                                                     * 05180000                
*  FUNCTION- DETERMINE THE INPUT RECORD LENGTH.  SET TRUNCATED        * 05200000                
*            INDICATOR IF INPUT LENGTH IS LESS THAN ACTUAL DATA       * 05210000                
*            LENGTH.                                                  * 05220000                
*                                                                     * 05230000                
*  OPERATION-- SET THE INPUT LENGTH FOR THE OPERATION.                * 05250000                
*              - POLL FOR STATUS, USE 20.                             * 05260000                
*              - RECORD MODE INPUT - USE PLINL IF PLINL LESS THAN     * 05270000                
*                                    TUBRCL                           * 05280000                
*                                  - USE TUBRCL IF PLINL GREATER THAN * 05290000                
*                                    TUBRCL                           * 05300000                
*                                                                     * 05310000                
*            . IF NOT MLMP VARIABLE LENGTH RECORD SUPPORT ADJUST THE  * 05320000                
*              INPUT LENGTH IF LESS DATA IS AVAILABLE IN THE ACTUAL   * 05330000                
*              LINE BUFFER THAN IS REQUESTED.                         * 05340000                
*                                                                     * 05350000                
*            . IF MORE DATA IS AVAILABLE IN LINE BUFFER THAN          * 05360000                
*              REQUESTED, THEN SET THE TRUNCATED DATA INDICATOR.      * 05370000                
*                                                                     * 05380000                
*            . IF PURE GET REQUEST OR A MESSAGE MODE INPUT AT         * 05390000                
*              OTHER THAN RECEIVE INITIAL TIME RETURN TO USER         * 05400000                
*              AFTER PERFORMING THE ABOVE FUNCTIONS.                  * 05410000                
*                                                                     * 05420000                
*            . OTHERWISE, ADD 4 BYTES FOR GETMAIN PARAMETER LIST.     * 05430000                
*                                                                     * 05440000                
*            . FREE THE CURRENT LCB HOLD BUFFER IF IT IS LARGER THAN  * 05450000                
*              NEEDED, AND GETMAIN THE EXACT HOLD AREA NEEDED.        * 05460000                
*                                                                     * 05470000                
*            . IF GETMAIN AREA NOT AVAILABLE, WAIT FOR IT TO BE       * 05480000                
*              AVAILABLE.                                             * 05490000                
*                                                                     * 05500000                
*            . OTHERWISE, SET UP THE ACQUIRED AREA FOR THE INVITE     * 05510000                
*              INPUT OPERATION.                                       * 05520000                
*                                                                     * 05530000                
*  ENTRY POINT--CMGINL                                                * 05540000                
*                                                                     * 05550000                
*  INPUT--XR2 - ADDRESS OF THE DTF                                    * 05570000                
*                                                                     * 05580000                
*  OUTPUT--XR1 - NOT RESTORED.                                        * 05600000                
*          XR2 - ADDRESS OF THE DTF.                                  * 05610000                
*          $BDREL - SET UP FOR INPUT LENGTH OF THE NEXT RECORD.       * 05620000                
*                                                                     * 05630000                
*  EXTERNAL REFERENCES--                                              * 05640000                
*                  CMFMRT - FREEMAIN CURRENT HOLD BUFFER IF LARGER    * 05650000                
*                           THAN IS NEEDED.                           * 05660000                
*                  CMGMRT - GETMAIN EXACT BUFFER NEEDED.              * 05670000                
*                                                                     * 05680000                
*  EXIT, NORMAL--TO NSI OF CALLER.                                    * 05690000                
*                                                                     * 05700000                
*  EXIT, ERROR--IF SPACE IS NOT AVAILABLE, EXIT TO CMPAII AND WAIT    * 05710000                
*               UNTIL THE REQUIRED SPACE IS AVAILABLE.                * 05720000                
*                                                                     * 05730000                
*********************************************************************** 05740000                
       SPACE                                                            05750000                
CMGINL EQU   *                         *                              B 05760000                
       ST    CMGIXT+3,ARR              SAVE RETURN @.                 B 05770000                
       L     LCBPL@(,DTF),PL           LOAD PARM LIST PTR TO GET THE  B 05780000                
       TBF   $BDAT1(,DTF),$BCRES       SPANNING RECORD IN PROCESS --  B 05790000                
       TBF   LCBAT1(,DTF),LCBEOT        - OR SEARCHING FOR EOT ?        05795000                
       BF    CMGIXT                    YES-GO EXIT EVERYTING'S DONE.  B 05800000                
       MVC   $BDREL(2,DTF),PLINL(,PL)  MOVE INL TO DTF RECL AREA.     B 05810000                
       MVC   $BDWKB(2,DTF),PLRECA(,PL) MOVE CURRENT RECORD ADDR TO DTFB 05820000                
&MIX   SETA  &N32+&N37+&N41                                             05830000                
       AIF   (&MIX EQ '3').T1500                                        05840000                
*                            ------------------------>  START -->   @01 05845000                
       TBN   PL$OPC(,PL),OPLSNS        POLL FOR STATUS OP ?      0/5/7B 05850000                
       JF    CMGIUT                    NO-GO CHECK INPUT MODE.   0/5/7B 05860000                
       MVC   $BDREL(2,DTF),RELSNS      USE STANDARD STATUS RECL. 0/5/7B 05870000                
       J     CMGIRL                    USE IT AS INPUT LENGTH.   0/5/7B 05880000                
*                            ------------------------->   END  -->  @01 05885000                
.T1500 ANOP                                                             05890000                
CMGIUT EQU   *                         *                              B 05900000                
       TBN   SAVTA2,TASREC             RECORD MODE ?                  B 05910000                
       JF    CMGIBK                    NO-GO CHECK DATA LEFT IN BLOCK.B 05920000                
       L     PLTUBA(,PL),TUB           LOAD THE TUB REG.              B 05930000                
       CLC   $BDREL(2,DTF),TUBRCL(,TUB) INL LT TAS RECL ?             B 05940000                
       JL    CMGIMX                    YES-GO FILL MAX RECL ACCEPTABLEB 05950000                
       MVC   $BDREL(2,DTF),TUBRCL(,TUB) OTHERWISE USE TAS RECORD LEN. B 05960000                
CMGIMX EQU   *                         *                              B 05970000                
       MVC   $BDMRL(2,DTF),$BDREL(,DTF) FILL MAX REC LEN ACCEPTABLE.  B 05980000                
       SPACE                                                            05990000                
CMGIBK EQU   *                         *                              B 06000000                
       TBF   SAVTA2,TASITB+TASVRL+TASPAN MLMP VARIABLE RECORD SUPPORT?B 06010000                
       JF    CMGII@                    YES-GO GET II RECORD @.        B 06020000                
       L     $BDIOB(,DTF),IOB          POINT TO THE IOB.              B 06030000                
       CLI   IOBCMP(,IOB),PROCES       IOB BEING PROCESSED ?          B 06040000                
       JE    CMGIDX                    YES-IOB READY, GO CK DATA LEN. B 06050000                
       CLI   IOBCMP(,IOB),$BCEOT       EOT OR IOB COMPLETE ?          B 06060000                
       TBF   SAVTA2,TASMSG             AND NOT MESSAGE MODE INPUT ?   B 06070000                
       JC    CMGI00,TRUAEQ             EOT TO RECORD/BLOCK, 0 IN-LEN. B 06080000                
       JNL   CMGIXT                    NOT COMPLETE, WAIT FOR OP END. B 06090000                
       MVC   $BDBKX(2,DTF),IOBTAR(,IOB) SET UP BKX LIKE MLMP WILL.    B 06100000                
       ALC   $BDBKX(2,DTF),CC0001      UPDATE FOR -STX-.              B 06110000                
       AIF   (&NTSP).I0600                                              06120000                
       TBN   SAVTA2,TASTSP             TRANSPARENCY MODE ?           XB 06130000                
       JF    CMGIDX                    NOT TRANSP, GO CK DATA LEGTH. XB 06140000                
       ALC   $BDBKX(2,DTF),CC0001      UPDATE FOR -DLE-.             XB 06150000                
.I0600 ANOP                                                             06160000                
CMGIDX EQU   *                         *                              B 06170000                
       CLC   $BDBKX(2,DTF),IOBCAR(,IOB) DATA LEFT IN BUFFER ?         B 06180000                
       JNL   CMGIXT                    NO-GO EXIT, WAIT FOR OP END.   B 06190000                
       MVC   LCBWRK(2,DTF),IOBCAR(,IOB) FIND THE NUMBER OF DATA       B 06200000                
       SLC   LCBWRK(2,DTF),$BDBKX(,DTF) * CHARACTERS LEFT IN BUFFER.  B 06210000                
       CLC   $BDREL(2,DTF),LCBWRK(,DTF) INL LT MAX LINE DATA LEFT.    B 06220000                
       JNL   CMGIAL                    NO-GO SET TO GET ALL DATA.     B 06230000                
       SBN   LCBAT2(,DTF),LCBTRC       SET BLOCK TRUNCATED IND.       B 06240000                
       J     CMGII@                    GO CHECK INVITE RECORD @.      B 06250000                
       SPACE                                                            06260000                
CMGI00 EQU   *                         *                                06270000                
       SLC   $BDREL(2,DTF),$BDREL(,DTF) ZERO OUT INPUT RECORD LENGTH. B 06280000                
       J     CMGII@                    GO CHECK INVITE RECORD LENGTH. B 06290000                
       SPACE                                                            06300000                
CMGIAL EQU   *                         *                              B 06310000                
       MVC   $BDREL(2,DTF),LCBWRK(,DTF) MOVE MAX LINE LEN TO RECL.    B 06320000                
       SPACE                                                            06330000                
CMGII@ EQU   *                         *                              B 06340000                
       L     LCBPL@(,DTF),PL           LOAD @ OF CURRENT PARM LIST.   B 06350000                
       TBN   PL$OPM(,PL),OPINV         THIS AN INVITE REQUEST ?       B 06360000                
       JF    CMGIXT                    NO-GO EXIT, WORK IS DONE.      B 06370000                
       TBN   PLOPM(,PL),OPREQR         SYSTEM REQUEST ?               B 06380000                
       AIF   (&NRUF).E0098             . SKIP IF NOT READ UNDER FORMAT  06381000                
*                                      -----START-------------------@06 06382000                
       L     PLTUBA(,PL),XR2           XR2->TUB.                        06383000                
       TBF   TUBSCS(,XR2),TUBRUF       AND NOT A RUF ?                  06384000                
       L     TUBDTF(,XR2),DTF          XR2->LCB(DTF).                   06385000                
*                                      -----END---------------------@06 06386000                
.E0098 ANOP                            .*                               06387000                
       JT    CMGISR                    YES-GO SET UP SYSTEM RECORD LENB 06390000                
       AIF   (&NMSG).E0100                                              06400000                
       TBN   SAVTA2,TASMSG             GET-MSG MODE ?                GB 06410000                
       JT    CMGIMG                    YES-GO CHECK RECEIVE INIT IND.GB 06420000                
.E0100 ANOP                                                             06430000                
CMGIRL EQU   *                         *                              B 06440000                
       MVC   #BUFND,$BDREL(2,DTF)      USE CURRENT RECORD LEN AND ADD B 06450000                
       J     CMGICB                    GO ADD GETMAIN CONTROL BYTES.  B 06460000                
       SPACE                                                            06470000                
CMGIMG EQU   *                         *                              B 06480000                
       TBN   LCBAT2(,DTF),LCBRCI       RECEIVE INITIAL TIME ?         B 06490000                
       JF    CMGIXT                    NO-GO EXIT, BUFFERS ARE SET.   B 06500000                
CMGISR EQU   *                         *                              B 06510000                
       MVC   #BUFND,PLINL(2,PL)        USE PARM LIST INL FOR SYST.    B 06520000                
CMGICB EQU   *                         *                              B 06530000                
       ALC   #BUFND(2),CC0004          * GETMAIN PARM LIST REQ'MTS.   B 06540000                
       CLI   LCBIBA-1(,DTF),NOBIT      IS THERE A CURRENT INVITE BUF ?B 06550000                
       JE    CMGIGM                    NO-GO RIGHT TO GETMAIN.        B 06560000                
       SPACE                                                            06570000                
*   IF CURRENT BUFFER FOR INVITE IS LARGER THAN NEED, THEN FREE THE     06580000                
*     CURRENT BUFFER, AND GET ONLY WHAT IS NEEDED.                      06590000                
       SPACE                                                            06600000                
       CLC   #BUFND,LCBIBL(2,DTF)      CURRENT LARGER THAN NEEDED ?   B 06610000                
       JE    CMGIUS                    NO-THEN MUST BE EQ, USE CURRENTB 06620000                
       L     LCBIBA(,DTF),XR2          LOAD @ OF CURRENT BUFFER.      B 06630000                
       B     CMFMRT                    GO TO FREEMAIN RTN, FREE CUR'NTB 06640000                
       SPACE                                                            06650000                
       L     CMSDTF,DTF                RELOAD DTF REG.                B 06660000                
       MVI   LCBIBA-1(,DTF),NOBIT      ZERO INVITE BUF ADDR.          B 06670000                
CMGIGM EQU   *                         *                              B 06680000                
       CLC   #BUFND(2),CC#BMX          MAX AVAIL TO SATISFY GETMAIN ? B 06690000                
       JH    CMGINO                    NO-GO SET UP TO WAIT ON FREEMANB 06700000                
       MVC   GMLIST+GMSIZE(2),#BUFND   MOVE NEEDED LENGTH TO GM LIST. B 06710000                
       B     CMGMRT                    GO TO GETMAIN RTN.             B 06720000                
       SPACE                                                            06730000                
       JOL   CMGINO                    GETMAIN FAILED, GO WAIT.       B 06740000                
       L     GMLIST+GMADDR,XR1         LOAD @ OF GOTTN BUFFER.        B 06750000                
       MVC   GMSIZE(4,XR1),GMLIST+GMSIZE PUT GM LIST INTO BUFFER 1-4. B 06760000                
       ST    LCBIBA(,DTF),XR1          PUT ADDR OF GOT BUF IN LCB.    B 06770000                
       ALC   LCBIBA(2,DTF),CC0004      CORRECT @ TO 5TH BYTE IN BUFR. B 06780000                
       MVC   LCBIBL(2,DTF),GMSIZE(,XR1) FILL INVITE BUFF LENGTH FIELD.B 06790000                
       SPACE                                                            06800000                
*   USE THE INVITE BUFFER AREA GOTTEN FOR THE MLMP OPERATION.           06810000                
       SPACE                                                            06820000                
CMGIUS EQU   *                         *                              B 06830000                
       MVC   $BDWKB(2,DTF),LCBIBA(,DTF) USE INVITE BUF AREA FOR MLMP. B 06840000                
       L     LCBPL@(,DTF),PL           LOAD PARM LIST REG.            B 06850000                
&MIX   SETA  &N32+&N37+&N41                                             06852000                
       AIF   (&MIX EQ '3').T2000                                        06854000                
*                                 -------------------------- START  @01 06856000                
       TBN   PL$OPC(,PL),OPLSNS        POLLING FOR STATUS ?      0/5/7B 06860000                
       JF    CMGMOV                    YES-GO DO MOVE            0/5/7B 06870000                
       TBN   PL$OPC(,PL),OPINV         INVITE INPUT OP           0/5/7B 06872000                
       JF    CMGIXT                    NO-DON'T MOVE             0/5/7B 06874000                
CMGMOV EQU   *                         LABEL                     0/5/7B 06876000                
*                            ------------------------------- END  --@01 06877000                
.T2000 ANOP                                                             06878000                
       MVC   PLRECA(2,PL),$BDWKB(,DTF) PUT INVITE @ INTO PARM LIST.   B 06880000                
       J     CMGIXT                    GO EXIT, WORK IS DONE.         B 06890000                
       SPACE                                                            06900000                
*   INDICATE GETMAIN NEEDED FOR THIS LINE.                              06920000                
CMGINO EQU   *                         *                              B 06930000                
       SBN   PL$OPM(,PL),OPGETM        SET GETMAIN NEEDED IN PARM LST.B 06940000                
       SBN   LCBATR(,DTF),LCBGMN       SET GETMAIN NEEDED FOR LINE.   B 06950000                
       SBN   CMWTMK+1,WPBFR            SET WAIT MASK FOR FREEMAIN     B 06960000                
       B     CMPAII                    GO POST USER AS NECESSARY.     B 06970000                
       SPACE                                                            06980000                
CMGIXT EQU   *                         *                              B 06990000                
       BC    #,FLSCLR                  RETURN, RESET THE FALSE IND.   B 07000000                
.C0580 ANOP                                                             07010000                
       MEND                                                             07030000