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

⟦b5ba8bcf5⟧ s3xseg

    Length: 26162 (0x6632)
    Types: s3xseg
    Names: »S$E075«

Derivation

└─⟦d0bc1a931⟧ Bits:30009189 5704-sc1.V08.ccp
    └─⟦64693a1c9⟧ 
        └─⟦this⟧ »S$E075« 

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00020000                
.* NAME: $E075                                                        * 00030000                
.********************************************************************** 00040000                
       $E075                                                            00050000                
       GBLB  &NOM,&NDME,&NSW,&NBFR,&NMOVE,&NSCTL,&N2741                 00060000                
       TEXT                                                             00070000                
.*       :                                                              00080000                
* R-05,C-00 CHANGE LEVEL     MASTER                                     00090000                
       AIF   (&NOM).MEND                                                00110000                
       TITLE '$E075/CMMOPE---MLTA OP END HANDLING'                      00120000                
*********************************************************************** 00130000                
*                                                                     * 00140000                
*  NAME--CMMOPE                                                       * 00150000                
*                                                                     * 00160000                
*  TITLE--MLTA OP END ANALYSIS                                        * 00170000                
*                                                                     * 00180000                
*  FUNCTION--ANALYSIS EACH OP END FOR A TP LINE AND DETERMINE WHAT    * 00190000                
*            IF ANYTHING MUST BE DONE TO COMPLETE THE CURRENT TP      * 00200000                
*            OPERATION.  ROUTE COMPLETED OPERATION BACK TO THE USER.  * 00210000                
*            RESCHEDULE WORK ON THE LINE IF NO MORE OP ENDS TO BE     * 00220000                
*            HANDLED.                                                 * 00230000                
*                                                                     * 00240000                
*  OPERATION--                                                        * 00250000                
*                                                                     * 00260000                
*            . IF ABORT OPERATION, HANDLE THE ABORT UNTIL IT IS       * 00270000                
*              COMPLETE.  THEN RESCHEDULE THE LINE.                   * 00280000                
*                                                                     * 00290000                
*            . IF STOP INVITE REQUEST CALL $CC4SQ                     * 00300000                
*                                                                     * 00310000                
*            . IF SWALLOW THE DATA OPERATION, THEN IGNORE DATA.       * 00320000                
*                                                                     * 00330000                
*            . IF MLTA OLT OP END CALL TRANSIENT TO HANDLE THE        * 00340000                
*              OPERATION.  THEN GO TO SCHEDULE THE NEXT OPERATION.    * 00350000                
*                                                                     * 00360000                
*            . FIND THE OP ENDED PARAMETER LIST AND SET ON THE POLL   * 00370000                
*              SKIP BIT.                                              * 00380000                
*                                                                     * 00390000                
*            . TRACE THE OP END AFTER CALLING CHECK THRU $CC4TT.      * 00400000                
*                                                                     * 00410000                
*            . IF AN ERROR OCCURRED CALL $CC4MA. ON RETURN            * 00420000                
*              EITHER POST THE RESULTS TO THE USER, RESCHEDULE THE    * 00430000                
*              LINE, OR HANDLE THE DATA IN THE LINE BUFFER.           * 00440000                
*                                                                     * 00450000                
*            . IF WRITE OP END, THEN                                  * 00460000                
*              - SET UP THE RETURN CODE FOR THE RESULTS OF THE        * 00470000                
*                OPERATION.                                           * 00480000                
*                                                                     * 00490000                
*              - IF PUT-THEN-GET, THEN SET UP THE GET OPERATION IN    * 00500000                
*                THE INTERNAL OP CODE, THEN RESCHEDULE THE LINE.      * 00510000                
*                                                                     * 00520000                
*              - IF OPERATION IS COMPLETED SET UP TO POST THE         * 00530000                
*                REQUESTOR OF THE RESULTS.                            * 00540000                
*                                                                     * 00550000                
*            . IF READ OP END, THEN                                   * 00560000                
*                                                                     * 00570000                
*              - IF DATA MODE ESCAPE RECOGNIZED IN THE INPUT DATA     * 00580000                
*                STREAM THEN SET UP POST OF THE COMMAND PROCESSOR.    * 00590000                
*                                                                     * 00600000                
*              - IF VALID INPUT DATA, MOVE, TRANSLATE, TRUNCATE THE   * 00610000                
*                DATA AS REQUIRED.                                    * 00620000                
*                                                                     * 00630000                
*            . IF COMPLETED DATA OPERATION, THEN                      * 00640000                
*              - REMOVE THE TP REQUEST FROM THE LINE QUEUE.           * 00650000                
*              - FREE UP PUT-NO-WAIT HOLD BUFFERS.                    * 00660000                
*              - POST THE REQUESTOR OF THE TP OPERATION THAT IT IS    * 00670000                
*                COMPLETE.                                            * 00680000                
*                                                                     * 00690000                
*  ENTRY POINT-- CMMOPE: HANDLE MLTA OP END.                          * 00700000                
*                                                                     * 00710000                
*  INPUT-- XR2 -> DTF THAT OP ENDED.                                  * 00720000                
*                                                                     * 00730000                
*  OUTPUT--                                                           * 00740000                
*         CMSDTF - ADDRESS OF DTF HANDLED FOR LAST OP END.            * 00750000                
*         CMSPL  - ADDRESS TO TP PARAMETER LIST FOR LAST OP END.      * 00760000                
*                                                                     * 00770000                
*  EXTERNAL REFERENCES--                                              * 00780000                
*         $CC4SQ - MLTA STOP II QUEUE ANALYSIS TRANSIENT.             * 00790000                
*         $CC4SK - MLTA SKIP BIT TRANSIENT.                           * 00800000                
*         $CC4T2 - MLTA OLT OP END TRANSIENT.                         * 00810000                
*         $CC4TT - CCP TRACE ROUTINE.                                 * 00820000                
*         $CC4MA - MLTA ERP TRANSIENT.                                * 00830000                
*         $CC4JX - X IS APPROPRIATE TRANSLATE TRANSIENT.              * 00840000                
*         $CC4WR - TRANSLATE ERROR TRANSIENT.                         * 00850000                
*         CMFMRT - FREEMAIN ROUTINE.                                  * 00860000                
*         CMONSK - MLTA POLL LIST SKIP BIT ON ROUTINE.                * 00870000                
*         CMWPGY - PUT-THEN-GET SUBROUTINE.                           * 00880000                
*         CMSTOR - DETERMINE PARM LIST STORAGE NEEDS.                 * 00890000                
*         CMGMRT - GETMAIN ROUTINE.                                   * 00900000                
*         CMPOST - POST TP COMPLETE.                                  * 00910000                
*         CMMVRT - INTERFACE TO CCP MOVE ROUTINE.                     * 00920000                
*                                                                     * 00930000                
*  EXIT, NORMAL--TO CMMTBY -  TEST LINE BUSY FOR RESCHEDULING.        * 00940000                
*                TO CMMSCH -  RESCHEDULE WORK ON A LINE               * 00950000                
*                TO CMPAII -  POST REQUESTOR AFTER ERROR OP END.      * 00960000                
*                                                                     * 00970000                
*********************************************************************** 00980000                
       EJECT                                                            00990000                
CMMOPE EQU   *                         *   < ENTRY POINT >            M 01000000                
       SPACE                                                            01010000                
*******************************************************************   M 01020000                
*  MLTA ABORT CHECK AND HANDLING                                  *   M 01030000                
*******************************************************************   M 01040000                
       SPACE                                                            01050000                
       TBN   LCBATR(,XR2),LCBSTP       WAS ABORT TO STOP READ         M 01060000                
       JF    CMSWL                     JUMP IF INDICATOR OFF          M 01070000                
       SPACE                                                            01080000                
* BRING IN TRANSIENT TO HANDLE OP END FOR STOP READ REQUEST           M 01090000                
       SPACE                                                            01100000                
       SVC   0                         ##### TRANSIENT CALL #######   M 01110000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 01120000                
       DC    AL1(CC4SQ)                TRANSIENT ID                   M 01130000                
       SPACE                                                            01140000                
CMSWL  EQU   *                         *  LOCAL                       M 01150000                
       SPACE                                                            01160000                
* IGNORE THE OP END IS BOTH LCB SWALLOW AND BIT BUCKET BITS ARE ON    M 01170000                
* NO MATTER WHAT TYPE OF OPERATION WAS SCHEDULED                      M 01180000                
       SPACE                                                            01190000                
       TBN   LCBATR(,XR2),LCBSWL+LCBTBK IS OP END TO BE IGNORED       M 01200000                
       JT    CMSWLP                    JUMP IF IGNORE OP END          M 01210000                
       SPACE 1                                                          01220000                
* IF 2741 BIT BUCKET BIT ON OR                                        M 01230000                
* IF SWALLOW SET AND THE OP END IS FOR AN INPUT OPERATION             M 01240000                
* THEN SWALLOW (BIT BUCKET) THE DATA                                  M 01250000                
       SPACE                                                            01260000                
       TBF   $MDOPC(,XR2),MLWRIT       ASSURE IT WAS NOT WRITE OP     M 01270000                
       JF    CMTABT                    JUMP IF WRITE                  M 01280000                
       SPACE                                                            01290000                
* HAVE NON-WRITE OP - IF SWALLOW OR BIT BUCKET ON                     M 01300000                
* BIT BUCKET THE DATA THAT CAME IN                                    M 01310000                
       SPACE                                                            01320000                
       TBF   LCBATR(,XR2),LCBSWL+LCBTBK ISBIT BUCKET OR SWALLOW ON    M 01330000                
       JT    CMTABT                    JUMP IF NEITHER SWALLOW OR BIT M 01340000                
*                                      BUCKET SET ON                  M 01350000                
       SPACE                                                            01360000                
*******************************************************************   M 01370000                
* BIT BUCKET THE DATA THAT JUST CAME IN                           *   M 01380000                
*******************************************************************   M 01390000                
       SPACE                                                            01400000                
CMSWLP EQU   *                         *   LOCAL.                       01410000                
       SBF   LCBATR(,XR2),LCBSWL+LCBTBK RESET LCB IGNORE OP END BITS  M 01420000                
       SPACE                                                            01430000                
* HAVE SWALLOW BIT SET - THUS MAY HAVE SKIP BIT OFF WHICH NEEDS TO BE M 01440000                
* TURNED ON                                                           M 01450000                
       SPACE                                                            01460000                
* THIS TRANSIENT WILL SET ALL SKIP BITS ON FOR A POLLING LIST         M 01470000                
* SOME WILL BE TURNED BACK OFF WHEN WE RESCHEDULE THE LINE.           M 01480000                
       SPACE                                                            01490000                
       SVC   0                         ##### TRANSIENT CALL #####     M 01500000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 01510000                
       DC    AL1(CC4SK)                SET POLL SKIP BITS             M 01520000                
       SPACE                                                            01530000                
       J     CMJTBY                    JUMP TO TEST FOR LINE BUSY.    M 01540000                
       EJECT                                                            01550000                
* IF OPERATION WAS SUCCESSFUL ABORT - THEN BR TO RESCHEDULE THE LINE  M 01560000                
       SPACE                                                            01570000                
CMTABT EQU   *                         *   LOCAL                      M 01580000                
       CLI   $MDOPC(,XR2),$MCABT       WAS OP AN ABORT                M 01590000                
       JNE   CMDFSV                    JUMP IF NOT ABORT              M 01600000                
       SPACE                                                            01610000                
* HAD ABORT ATTEMPT - IF RETURN CODE 44 - JUMP TO HANDLE              M 01620000                
       SPACE                                                            01630000                
       CLI   $MDCMP(,XR2),$MCTNR       WAS COMP CODE 44               M 01640000                
       JNE   CMDFSV                    JUMP IF UNSUCCESSFUL ABORT     M 01650000                
       SPACE                                                            01660000                
* HAD ABORT ATTEMPT                                                   M 01670000                
* ABORT WAS SUCCESSFUL SO LINE IS NOW FREE TO SCHEDULE NEXT OP        M 01680000                
* IF HOLD BUFFER HAS BEEN GETMAINED FOR THIS LINE - FREEMAIN IT NOW   M 01690000                
       SPACE                                                            01700000                
       CLI   LCBIBA-1(,XR2),NOBIT      IS HOLD BUFFER POINTER NULL    M 01710000                
       JE    CMJPRS                    JUMP IF NO HOLD BUFFER         M 01720000                
       SPACE                                                            01730000                
* HAVE HOLD BUFFER WHICH NEEDS TO BE FREEMAINED                       M 01740000                
       SPACE                                                            01750000                
       L     LCBIBA(,XR2),XR2          POINT XR2 AT HOLD BUFFER       M 01760000                
       B     CMFMRT                    BRANCH TO FREEMAIN             M 01770000                
       SPACE                                                            01780000                
       L     CMSDTF,XR2                POINT XR2 BACK AT DTF          M 01790000                
       MVI   LCBIBA-1(,XR2),NOBIT      SET HOLD BUFFER ADDR NULL      M 01800000                
       SPACE                                                            01810000                
CMJPRS EQU   *                         *   LOCAL.                       01820000                
       B     CMMSCH                    BRANCH TO RESCHEDULE THE LINE  M 01830000                
       SPACE 2                                                          01840000                
* DETERMINE IF OP END WAS FOR ONLINE TEST                             M 01850000                
       SPACE                                                            01860000                
CMDFSV EQU   *                         *   LOCAL.                       01870000                
       SBN   LCBATR(,XR2),LCBNIT       SET INITIAL OP BIT ON          M 01880000                
       TBN   LCBATR(,XR2),LCBOLR       TEST LCB BIT FOR ONLINE TEST   M 01890000                
       JF    CMPARM                    IF NOT OLT, JUMP TO WORK WITH  M 01900000                
*                                      PARM LIST                      M 01910000                
       SPACE                                                            01920000                
* OP END WAS FOR ONLINE TEST REQUEST                                  M 01930000                
*  FOR WHICH THERE IS NO PARM LIST                                    M 01940000                
       SPACE                                                            01950000                
       SVC   0                         ###### TRANSIENT CALL #####    M 01960000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 01970000                
       DC    AL1(CC4T2)                OP END OF ONLINE TEST          M 01980000                
       SPACE                                                            01990000                
CMJTBY EQU   *                         *   LOCAL.                       02000000                
       B     CMMTBY                    BRANCH TO TEST IF LINE IS BUSY M 02010000                
       EJECT                                                            02020000                
********************************************************************* M 02030000                
*            LOCATE OP ENDED PARAMETER LIST                         * M 02040000                
********************************************************************* M 02050000                
       SPACE                                                            02060000                
* XR2 POINTS AT DTF FOR THE LINE THAT OP ENDED.                       M 02070000                
       SPACE                                                            02080000                
CMPARM EQU   *                         *   LOCAL.                     M 02090000                
       L     LCBPLQ(,XR2),XR1          POINT XR1 AT 1ST PL IN QUEUE   M 02100000                
       SPACE                                                            02110000                
********************************************************************  M 02120000                
* SET UP FOR FINDING OF PARM LIST WHICH OP ENDED                   *  M 02130000                
********************************************************************  M 02140000                
       SPACE                                                            02150000                
       AIF   (&NSCTL).C0100                                             02160000                
       MVC   CMSTMA(2),$MDTMA(,XR2)    SAVE THE TERMINAL ADDR OF THE CM 02170000                
*                                      TERMINAL WHICH OP ENDED       CM 02180000                
       SPACE                                                            02190000                
.C0100 ANOP                                                             02200000                
* SET UP TEST INSTRUCTION FOR EITHER A READ OR WRITE MLTA OP CODE     M 02210000                
* DEPENDING ON THE OP CODE IN THE DTF WHICH OP ENDED                  M 02220000                
       SPACE                                                            02230000                
       MVI   CMTBOP+1,OPGET            SET UP TEST INSTR FOR READ     M 02240000                
       SPACE                                                            02250000                
       AIF   (&NSW).S0100                                               02260000                
       SPACE                                                            02270000                
* WAS OP END FOR WRITE DISCONNECT TO MLTA SWITCHED LINE              SM 02280000                
       SPACE                                                            02290000                
       CLI   $MDOPC(,XR2),$MWTDS       WAS OP A WRITE DISCONNECT     SM 02300000                
       JNE   CMTSWR                    JUMP IF OP WAS NOT WRITE DISC SM 02310000                
       SPACE                                                            02320000                
* HAD OP END OF WRITE DISCONNECT SO SET LCBNIT TO INDICATE LINE DISC SM 02330000                
       SPACE                                                            02340000                
       SBF   LCBATR(,XR2),LCBNIT       INDICATE LINE IS DISCONNECTED SM 02350000                
       J     CMOPUT                    JUMP TO LOOK FOR WRITE OP END SM 02360000                
       SPACE                                                            02370000                
.S0100 ANOP                                                             02380000                
       SPACE                                                            02390000                
CMTSWR EQU   *                         *   LOCAL.                     M 02400000                
       TBN   $MDOPC(,XR2),MLWRIT       WAS OP END FOR A WRITE         M 02410000                
       JF    CMMVSC                    JUMP IF NOT WRITE OP END       M 02420000                
CMOPUT EQU   *                         *   LOCAL.                     M 02430000                
       MVI   CMTBOP+1,OPPUT            SET UP TEST FOR WRITE OP END   M 02440000                
       SPACE                                                            02450000                
* GET THE TERMINAL FEATURE TYPES BYTE FROM MLTA DTF FOR TESTING       M 02460000                
       SPACE                                                            02470000                
CMMVSC EQU   *                         *   LOCAL.                     M 02480000                
       AIF   (&NSCTL).C0200                                             02490000                
       MVC MLSTCL(1),$MDTFT(,XR2)      SAVE TERMINAL FEATURES        CM 02500000                
.C0200 ANOP                                                             02510000                
       EJECT                                                            02520000                
*********************************************************************** 02530000                
* FIND PARAMETER LIST WITH OP CODE THAT MATCHES OP END                * 02540000                
*********************************************************************** 02550000                
* XR1 POINTS AT FIRST PARM LIST IN LINE QUEUE                         M 02560000                
       SPACE                                                            02570000                
CMTBOP TBN   PL$OPM(,XR1),#            TEST FOR OP CODE MATCH         M 02580000                
       AIF   (&NSCTL).C0300                                             02590000                
       JF    CMNXPM                    JUMP IF NO MATCH              CM 02600000                
       SPACE                                                            02610000                
********************************************************************    02620000                
*  FOUND PL WITH MATCHING OP CODE                                    CM 02630000                
********************************************************************    02640000                
       SPACE                                                            02650000                
       TBN   MLSTCL,$MTPLT             IS IT STATION CONTROL         CM 02660000                
       JF    CMMTCH                    JUMP IF NOT SINCE HAVE PL     CM 02670000                
       SPACE                                                            02680000                
********************************************************************    02690000                
*  STATION CONTROL -- ALSO SEARCH THE TUBS FOR THE PARAMETER         CM 02700000                
*                  LIST WHOSE TERMINAL ADDRESS MATCHES TERMINAL ADDR CM 02710000                
*                  IN DTF WHICH OP ENDED.                            CM 02720000                
********************************************************************    02730000                
       SPACE                                                            02740000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT TUB.             CM 02750000                
       CLC   CMSTMA-1(1),TUBTMA-1(,XR2) COMPARE DTF TMA WITH TUB TMA CM 02760000                
       JE    CMMTCH                    JUMP IF THEY MATCH            CM 02770000                
       AGO   .C0400                                                     02780000                
.C0300 ANOP                                                             02790000                
       JT    CMMTCH                    JUMP IF HAVE PARM LIST         M 02800000                
.C0400 ANOP                                                             02810000                
       SPACE                                                            02820000                
* NO MATCH SO GET NEXT PARAMETER LIST IN QUEUE TO TEST AGAIN          M 02830000                
       SPACE                                                            02840000                
CMNXPM EQU   *                         *   LOCAL.                       02850000                
       L     PLCHN(,XR1),XR1           POINT XR1 AT NEXT PL IN QUEUE  M 02860000                
       B     CMTBOP                    BRANCH TO TRY TO MATCH AGAIN   M 02870000                
       EJECT                                                            02880000                
********************************************************************  M 02890000                
*  PUT RETURN CODE IN PARAMETER LIST                               *  M 02900000                
********************************************************************  M 02910000                
       SPACE                                                            02920000                
* XR1 POINTS AT THE OP ENDED PARM LIST                                M 02930000                
       SPACE                                                            02940000                
CMMTCH EQU   *                         *   LOCAL.                     M 02950000                
       SPACE                                                            02960000                
       L     CMSDTF,XR2                POINT XR2 AT DTF               M 02970000                
       MVC   CMSRTC(1),PL$RTC(,XR1)    SAVE RETURN CODE FROM START OP.M 02980000                
       MVC   PL$RTC(1,XR1),$MDCMP(,XR2) MOVE COMPLETION CODE TO PL    M 02990000                
       SPACE 2                                                          03000000                
********************************************************************  M 03010000                
*   TRACE CALL                                                     *  M 03020000                
********************************************************************  M 03030000                
       SPACE                                                            03040000                
       SVC   0                         CALL                           M 03050000                
       DC    AL1(CCPRIB)               *    THE CCP                   M 03060000                
       DC    AL1(TRRIB)                *            TRACE             M 03070000                
       DC    AL1(TTMOPN)               *                  TP OP END.  M 03080000                
       SPACE 2                                                          03090000                
       AIF   (&NSCTL).C0500                                             03100000                
       TBN   PL$OPM(,XR1),OPGET        WAS OP END FOR A READ         CM 03110000                
       JF    CMMCMP                    JUMP IF NOT READ              CM 03120000                
       SPACE                                                            03130000                
******************************************************************** CM 03140000                
*  STATION CONTROL READ -- SET SKIP BIT                            * CM 03150000                
******************************************************************** CM 03160000                
       SPACE                                                            03170000                
       B     CMONSK                    BR TO SET POLL SKIP BIT ON    CM 03180000                
.C0500 ANOP                                                             03190000                
       SPACE 3                                                          03200000                
CMMCMP EQU   *                         *   LOCAL.                     M 03210000                
       SPACE                                                            03220000                
       ST    CMSPL,XR1                 SAVE PARM LIST ADDR            M 03230000                
       SPACE                                                            03240000                
       SBF   PL$RTC(,XR1),BIT1         SET BIT OFF TO FORM RET CODE   M 03250000                
       SPACE                                                            03260000                
*   TEST FOR TP ERROR  (COMPLETION CODE  X'40' OR X'42' ARE OK)       M 03270000                
       SPACE                                                            03280000                
       TBF   PL$RTC(,XR1),MLSCCS       TEST FOR SUCCESSFUL OP END     M 03290000                
       JT    CMMSCS                    JUMP IF SUCCESSFUL             M 03300000                
       AIF   (&N2741).T0100                                             03310000                
       SPACE                                                            03320000                
* IF TERMINAL INTERRUPT FROM 2741 - HANDLE AS GOOD OP END            4M 03330000                
       SPACE                                                            03340000                
       CLI   $MDTTP(,XR2),ML2741       IS IT 2741                    4M 03350000                
       JNE   CMMERR                    JUMP IF NOT 2741              4M 03360000                
       SPACE                                                            03370000                
       CLI   PL$RTC(,XR1),MLCITP       WAS IT TERMINAL INTERRPUT     4M 03380000                
       TBN   PL$OPM(,XR1),OPPUT        WAS IT OUTPUT OPERATION       4M 03390000                
       JC    CMSCC1,NONE+FALSE+HI+LO   JUMP IF TERMINAL INTERRUPT    4M 03400000                
*                                      FROM THE 2741                 4M 03410000                
.T0100 ANOP                                                             03420000                
       EJECT                                                            03430000                
*********************************************************************** 03440000                
*     TP ERROR - CALL TRANSIENT TO HANDLE                               03450000                
*********************************************************************** 03460000                
       SPACE                                                            03470000                
CMMERR EQU   *                         *   LOCAL.                     M 03480000                
       SVC   0                         ###### TRANSIENT CALL #####    M 03490000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 03500000                
       DC    AL1(CC4MA)                MLTA ERROR HANDLER             M 03510000                
       SPACE                                                            03520000                
*   RETURN TO NSI    - TO DEQUEUE THE CURRENT PARM LIST.              M 03530000                
*             NSI+4  - TO RESCHEDULE WORK ON THE LINE.                M 03540000                
       AIF   (&NBFR).T0200                                              03550000                
*             NSI+8  - TO HANDLE SUCCESSFUL DATA RECEIVED.           BM 03560000                
*             NSI+12 - TO POST PARM LIST AND NOT RESCHEDULE THE LINE.BM 03570000                
.T0200 SPACE                                                            03580000                
*--> NSI                                                                03590000                
       B     CMMDEQ                    DEQUEUE THE PARAMETER LIST     M 03600000                
       SPACE                                                            03610000                
*--> NSI+4                                                              03620000                
       B     CMMTBY                    GO TEST LINE FOR BUSY.         M 03630000                
       AIF   (&NBFR).T0300                                              03640000                
.* THE FOLLOWING TWO BRANCHES ARE GENERATED ONLY FOR 2740 SYSTEMS    BM 03650000                
       SPACE                                                            03660000                
*--> NSI+8                                                              03670000                
       B     CMMSCS                    B TO HANDLE AS IF SUCCESS     BM 03680000                
       SPACE                                                            03690000                
*--> NSI+12                                                             03700000                
       B     CMPAII                    BRANCH AROUND RESCHEDULING    BM 03710000                
.T0300 ANOP                                                             03720000                
       EJECT                                                            03730000                
********************************************************************* M 03740000                
*    SUCCESSFUL OP END FOR MLTA                                     * M 03750000                
********************************************************************* M 03760000                
       SPACE                                                            03770000                
CMMSCS EQU   *                         *   LOCAL.                     M 03780000                
       SPACE                                                            03790000                
* AT THIS POINT SET ANY BITS ON IN THE RETURN CODE FROM THE RETURN    M 03800000                
* CODE SAVED AS PART OF THE START OF THE OPERATION                    M 03810000                
       SPACE                                                            03820000                
       SBN   PL$RTC(,XR1),#            RESET RETURN CODE FROM OP      M 03830000                
CMSRTC EQU   *-2                       Q BYTE OF SBN INSTRUCTION      M 03840000                
       SPACE                                                            03850000                
CMSCC1 EQU   *                         GOOD OP END BUT AT THIS LABEL  M 03860000                
*                                      THE RETURN CODE IS NOT RESET   M 03870000                
* DETERMINE WHAT KIND OF OP COMPLETED BY CHECKING THE OP CODE         M 03880000                
* RESIDING IN THE PARAMETER LIST                                      M 03890000                
       SPACE                                                            03900000                
       TBN   PL$OPM(,XR1),OPPUT        WAS IT WRITE                   M 03910000                
       JF    CMRDME                    BRANCH IF READ                 M 03920000                
       TITLE '$E075/CMMOPE---MLTA WRITE OP END'                         03930000                
******************************************************************    M 03940000                
*   MLTA WRITE OP END HANDLING                                   *    M 03950000                
******************************************************************    M 03960000                
       SPACE 2                                                          03970000                
       TBN   PLOPC(,XR1),OPGET         IF NOT A PUT THEN GET          M 03980000                
       BF    CMMDEQ                    GO DEQUEUE PARM LIST           M 03990000                
       SPACE                                                            04000000                
       B     CMWPGY                    WRITE - CHECK PUT THEN GET     M 04010000                
       SPACE                                                            04020000                
       B     CMMSCH                    RESCHEDULE THE LINE            M 04030000                
       TITLE '$E075/CMMOPE---MLTA READ OP END'                          04040000                
******************************************************************    M 04050000                
*   MLTA READ  OP END HANDLING                                   *    M 04060000                
******************************************************************    M 04070000                
       SPACE                                                            04080000                
CMRDME EQU   *                         *   LOCAL.                     M 04090000                
       SPACE                                                            04100000                
* GET TUB ADDRESS FROM THE PARAMETER LIST                             M 04110000                
       SPACE                                                            04120000                
       CLI   PLOPC(,XR1),OPINV         IS OPERATION AN INVITE         M 04124000                
       L     PLTUBA(,XR1),XR1          POINT XR1 TO TUB               M 04130000                
       JE    CMUGET                    YES. LEAVE TUBIIS ON           M 04134000                
       SBF   TUBAT2(,XR1),TUBIIS       SET OFF INVITE SCHEDULED       M 04140000                
CMUGET EQU   *                                                        M 04144000                
       MVC   SAVTA2(2),TUBTA2(,XR1)    MOVE TERM ATTR TO SAVE AREA    M 04150000                
       EJECT                                                            04160000                
       AIF   (&NDME).D0100                                              04170000                
******************************************************************** DM 04180000                
*            DATA MODE ESCAPE CHECK                                * DM 04190000                
******************************************************************** DM 04200000                
       SPACE                                                            04210000                
* IF THIS TERMINAL IS IN DATA MODE AND IS ALSO A REQUESTING TERMINAL DM 04220000                
* FOR THE PROGRAM TO WHICH IT IS CURRENTLY ALLOCATED - THEN CM MUST  DM 04230000                
* CHECK FOR A DATA MODE ESCAPE COMMAND                               DM 04240000                
       SPACE                                                            04250000                
       TBF   TUBAT2(,XR1),TUBCMD       TUB NOT IN COMMAND MODE, BUT  DM 04260000                
       TBN   TUBAT2(,XR1),TUBDTA       * IS IN DATA MODE, AND        DM 04270000                
       TBN   TUBAT1(,XR1),TUBREQ       * IS REQUESTER OF PROGRAM ?   DM 04280000                
       JF    CMMDAT                    JUMP IF NOT DATA MODE ESCAPE. DM 04290000                
       SPACE                                                            04300000                
* BUILD TRANSLATE LIST TO TRANSLATE 1ST 6 BYTES OF THE RECORD. O     DM 04310000                
       SPACE                                                            04320000                
* USE THE SPECIAL TRANSLATE LIST PROVIDED JUST FOR THIS PURPOSE.     DM 04330000                
* ALL FIELDS IN THE TRANSLATE LIST ARE SET EXCEPT FOR THE FROM ADDR. DM 04340000                
       SPACE                                                            04350000                
       LA    CMDMTL,XR1                POINT TO XLATE PARM LIST.     DM 04360000                
       MVC   TLFRMA(2,XR1),$MDCRA(,XR2)     MOVE 'FROM' ADDR TO TL   DM 04370000                
       MVC   CMTDME(1),LCBLLE(,XR2)    MOVE TRANSLATE TRANSIENT ID   DM 04380000                
       SVC   0                         ##### TRANSIENT CALL #####    DM 04390000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                  DM 04400000                
CMTDME DC    AL1(0)                    TRANSLATE TRANSIENT ID        DM 04410000                
       SPACE                                                            04420000                
* COMPARE TRANSLATE INPUT AGAINST DATA MODE ESCAPE COMMAND SEQUENCE  DM 04430000                
       SPACE                                                            04440000                
       CLC   CMDMEB+5(6),CMDME         CHECK FOR DME COMMAND         DM 04450000                
       JNE   CMMDAT                    JUMP IF NOT DATA MODE ESCAPE  DM 04460000                
       SPACE 3                                                          04470000                
******************************************************************** DM 04480000                
*  DATA MODE ESCAPE SEQUENCE RECEIVED                              * DM 04490000                
******************************************************************** DM 04500000                
       SPACE 1                                                          04510000                
       L     CMSPL,XR1                 POINT XR1 AT PARM LIST        DM 04520000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT TUB              DM 04530000                
       SBN   TUBAT2(,XR2),TUBCMD       PUT TUB IN COMMAND INTERRUPT  DM 04540000                
*                                      * MODE (CIM).                 DM 04550000                
       ST    TUBDM@(,XR2),XR1          STORE PARM LIST ADDR IN TUB   DM 04560000                
       L     TUBDTF(,XR2),XR2          XR2--> DTF FOR THIS LINE.     DM 04570000                
       B     CMMDEQ                    BR TO DEQUEUE THE PARM LIST   DM 04580000                
       EJECT                                                            04590000                
.D0100 ANOP                                                             04600000                
CMMDAT EQU   *                         *   LOCAL.                     M 04610000                
       L     CMSPL,XR1                 POINT XR1 AT PARM LIST.        M 04620000                
       SPACE                                                            04630000                
********************************************************************  M 04640000                
*  INVITE INPUT OP END  -- COMPARE HOLD BUFFER SPACE AVAIL TO NEED *  M 04650000                
********************************************************************  M 04660000                
       SPACE                                                            04670000                
       B     CMSTOR                    DETERMINE STORAGE NEEDED BY OP.M 04680000                
       SPACE                                                            04690000                
       B     CMGBUF                    GO GET LEAST AMOUNT NEEDED.    M 04700000                
       SPACE                                                            04710000                
       L     CMSPL,XR1                 XR1--> TP PARM LIST.           M 04720000                
       SPACE                                                            04730000                
* MOVE THE HOLD BUFFER ADDRESS TO THE PARM LIST                       M 04740000                
       SPACE                                                            04750000                
       MVC   PLRECA(2,XR1),LCBIBA(,XR2) MOVE HOLD BUF ADDR TO PL      M 04760000                
       MVI   LCBIBA-1(,XR2),NOBIT      ZERO HIGH ORDER BYTE OF BUF AD M 04770000                
       SPACE                                                            04780000                
********************************************************************  M 04790000                
*  SET UP PARAMETER LIST FOR MOVE OR TRANSLATE                     *  M 04800000                
********************************************************************  M 04810000                
       SPACE                                                            04820000                
* ANALYZE THE RECORD LENGTH REQUESTED BY THE USER AGAINST THE RECORD  M 04830000                
* LENGTH ACTUALLY RECEIVED AS A RESULT OF THE READ                    M 04840000                
* IF RECEIVED EQUAL OR LESS THAN REQUESTED - GIVE USER ONLY WHAT RECV M 04850000                
* IF RECEIVED GREATER THAN LENGTH REQUESTED, TRANSLATE ONLY UP TO     M 04860000                
* LENGTH REQUESTED BY USER AND PUT INDICATION IN RETURN CODE THAT     M 04870000                
* ALTHOUGH READ WAS SUCCESSFUL, TERMINAL OPERATOR TRANSMITTED MORE    M 04880000                
* DATA THAN WAS REQUESTED BY THE USER                                 M 04890000                
       SPACE                                                            04900000                
* MOVE IN 'FROM' AND 'TO' ADDRESSES WHICH ARE THE SAME FOR BOTH THE   M 04910000                
* TRANSLATE AND THE MOVE LIST                                         M 04920000                
       SPACE                                                            04930000                
       MVC   #CMMVL+MVLFRA(2),$MDCRA(,XR2) MOVE FROM ADDR TO MV LIST. M 04940000                
       MVC   #CMMVL+MVLTOA(2),PLRECA(,XR1) MOVE TO ADDR TO MOVE LIST. M 04950000                
       SPACE                                                            04960000                
       AIF   (&NMOVE).F0100                                             04970000                
* DETERMINE IF TRANSLATE WAS REQUESTED                               VM 04980000                
* FOR SYSTEM REQUEST - ALWAYS TRANSLATE                              VM 04990000                
       SPACE                                                            05000000                
       TBF   PLOPM(,XR1),OP$SYS        IS IT USER REQUEST, AND       VM 05010000                
       TBN   SAVTA1,TASTRN             IS DON'T TRANSLATE SPECIFIED ?VM 05020000                
       JT    CMRMOV                    YES-JUMP TO STRAIGHT MOVE.    VM 05030000                
.F0100 ANOP                                                             05040000                
       EJECT                                                            05050000                
********************************************************************  M 05060000                
*   TRANSLATE                                                      *  M 05070000                
********************************************************************  M 05080000                
       SPACE                                                            05090000                
       MVC   #CMTRL+TLFRML(2),$MDCRL(,XR2) 'FROM' AREA LENGTH TO TL   M 05100000                
       MVC   #CMTRL+TLTOL(2),PLINL(,XR1) 'TO' AREA LENGTH TO TL       M 05110000                
       SPACE                                                            05120000                
* DETERMINE IF UPPER OR LOWER CASE REQUESTED.                         M 05130000                
* FOR SYSTEM REQUEST - ALWAYS TRANSLATE TO UPPER CASE.                M 05140000                
       SPACE                                                            05150000                
       TBF   PLOPM(,XR1),OP$SYS        IS IT USER REQUEST, AND        M 05160000                
       TBN   SAVTA1,TASCAS             * LOWER CASE XLATE SPECIFIED ? M 05170000                
       LA    #CMTRL,XR1                POINT XR1 AT TRANSLATE LIST    M 05180000                
       SPACE                                                            05190000                
* MOVE IN ID OF UPPER CASE TRANSLATE TRANSIENT                        M 05200000                
       SPACE                                                            05210000                
       MVC   CMTRD(1),LCBLCE(,XR2)     MOVE UPPER CASE TRANSIENT ID   M 05220000                
       JF    CMDOTR                    JUMP IF NOT USER LOWER CASE XL.M 05230000                
       SPACE                                                            05240000                
* MOVE IN TRANSIENT ID OF TRANSLATE TRANSIENT FOR LOWER CASE EBCDIC   M 05250000                
       SPACE                                                            05260000                
       MVC   CMTRD(1),LCBLLE(,XR2)     MOVE IN LOWER CASE TRANS ID    M 05270000                
       SPACE                                                            05280000                
* TRANSLATE THE DATA FROM THE LINE BUFFER TO THE RECORD AREA POINTED  M 05290000                
* TO BY THE PARAMETER LIST                                            M 05300000                
* THE TRANSLATE ROUTINE WILL ALWAYS POST CLEAR THE INPUT AREA TO BLKS M 05310000                
       SPACE                                                            05320000                
CMDOTR EQU   *                         *  LOCAL                       M 05330000                
       SVC   0                         ###### TRANSIENT CALL #####    M 05340000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 05350000                
CMTRD  DC    AL1(0)                    TRANSLATE TRANSIENT ID         M 05360000                
       SPACE                                                            05370000                
       TBN   TLRTC(,XR1),TLERR         WAS THERE TRANSLATE ERROR      M 05380000                
*                                      X'10' - INVALID CHAR REPLACED  M 05390000                
       L     CMSPL,XR1                 POINT XR1 AT PARM LIST         M 05400000                
       JF    CMTCR                     JUMP IF NO TRANSLATE ERROR     M 05410000                
       SPACE                                                            05420000                
*      HAD TRANSLATE ERROR.                                           M 05430000                
       SPACE                                                            05440000                
       SVC   0                         ###### TRANSIENT CALL ######   M 05450000                
       DC    AL1(CCPRIB)               CCP SVC RIB.                   M 05460000                
       DC    AL1(CC4WR)                TRANSLATE ERROR TRANSIENT ID   M 05470000                
       SPACE                                                            05480000                
*     RETURN TO NSI   - TO DEQUEUE AND HANDLE AS A USER ERROR.        M 05490000                
*               NSI+4 - TO HANDLE AS TERMINAL IN CCP ERP.             M 05500000                
       SPACE                                                            05510000                
*--> NSI.                                                             M 05520000                
       B     CMMDEQ                    JUMP AND HANDLE AS TP ERROR    M 05530000                
       SPACE 1                                                          05540000                
*--> NSI+4.                                                           M 05550000                
       B     CMMSCH                    BR TO RESCHEUDLE THE LINE      M 05560000                
       EJECT                                                            05570000                
********************************************************************  M 05580000                
*  IF LAST CHARACTER OF THIS MESSAGE A CARRIAGE RETURN, SET        *  M 05590000                
*      TUB BIT SO IDLES WILL BE SENT WITH NEXT MESSAGE.            *  M 05600000                
********************************************************************  M 05610000                
       SPACE 1                                                          05620000                
CMTCR  EQU   *                         *   LOCAL                      M 05630000                
       L     PLTUBA(,XR1),XR1          POINT XR1 AT THE TUB           M 05640000                
       SBF   TUBCHR(,XR1),TUB@SL+TUBNID SET OFF LINE LOCATION BITS    M 05650000                
       TBN   #CMTRL+TLRTC,TLCREL       WAS LAST CHAR A CARRIAGE RET   M 05660000                
       JF    CMNOCR                    JUMP IF NOT CARRIAGE RETURN    M 05670000                
       SPACE                                                            05680000                
*   LAST CHARACTER TRANSLATED WAS CARRIAGE RETURN SO TYPEWRITER       M 05690000                
*      IS AT THE START OF A NEW LINE.                                 M 05700000                
       SPACE                                                            05710000                
       SBN   TUBCHR(,XR1),TUB@SL       SET AT START OF LINE BIT ON    M 05720000                
       SPACE                                                            05730000                
*   DETERMINE FROM LENGTH OF INPUT WHETHER IDLE CHARACTERS ARE STILL  M 05740000                
*     NEEDED AT BEGINNING OF NEXT OUTPUT. (MUST HAVE TIME FOR CARRIAGEM 05750000                
*     TO RETURN TO HOME POSITION.)                                    M 05760000                
       AIF   (&NBFR).T0400                                              05770000                
*   BUFFERED RECEIVE TERMINALS DO NOT NEED IDLE CHARACTERS FOR CR.   BM 05780000                
       SPACE                                                            05790000                
       L     CMSDTF,XR2                POINT XR2 AT THE DTF          BM 05800000                
       TBF   $MDTFR(,XR2),$MTBFR       BUFFERED RECEIVE, OR LESS     BM 05810000                
       CLI   #CMTRL+TLTOL,CMCRTM       THAN MAX HANDLED W/O IDLES ?  BM 05820000                
       JC    CMNOCR,ANY+LO+FALSE       JUMP-LESS THAN MAX/OR BUFF RCVBM 05830000                
       AGO   .T0500                                                     05840000                
.T0400 ANOP                                                             05850000                
       SPACE                                                            05860000                
       CLI   #CMTRL+TLTOL,CMCRTM       LESS THAN MAX HANDLED W/O IDLESM 05870000                
       JL    CMNOCR                    JUMP-LESS THAN MAX W/O IDLES.  M 05880000                
.T0500 ANOP                                                             05890000                
       SPACE                                                            05900000                
*   INPUT LINE FOLLOWED BY CARRIAGE RETURN INDICATES THAT IDLES ARE   M 05910000                
*      NEEDED ON NEXT OUTPUT TO THIS TERMINAL.                        M 05920000                
       SPACE                                                            05930000                
       SBN   TUBCHR(,XR1),TUBNID       SET ON IDLES NEEDED BIT        M 05940000                
       SPACE                                                            05950000                
CMNOCR EQU   *                         *   LOCAL                      M 05960000                
       AIF   (&NMOVE).F0200                                             05970000                
       J     CMSEFL                    JUMP TO SET THE LGTH FOR USER VM 05980000                
       EJECT                                                            05990000                
******************************************************************** VM 06000000                
* PERFORM STRAIGHT MOVE ON DATA WITHOUT TRANSLATING OR ANALYZING IT  VM 06010000                
*      NOTE: NO CLEARING OF END OF SHORT RECORD IS DONE.             VM 06020000                
******************************************************************** VM 06030000                
       SPACE                                                            06040000                
CMRMOV EQU   *                         *   LOCAL.                    VM 06050000                
       SPACE                                                            06060000                
*   DETERMINE WHICH IS LESS - THE LENGTH OF THE RECORD REQUESTED, OR VM 06070000                
*     THE LENGTH OF THE DATA KEYED.  USE THE LESSER OF THE TWO.      VM 06080000                
       SPACE                                                            06090000                
       MVC   #CMMVL+MVLTOL(2),$MDCRL(,XR2) USE ACTUAL LENGTH.        VM 06100000                
       CLC   $MDCRL(2,XR2),PLINL(,XR1) COMPARE  ACTUAL VS ASKED LGTH VM 06110000                
       JNH   CMDOMV                    JUMP IF ACTUAL LESS OR EQUAL. VM 06120000                
       SPACE                                                            06130000                
* USE REQUESTED LENGTH.                                              VM 06140000                
       SPACE                                                            06150000                
       MVC   #CMMVL+MVLTOL(2),PLINL(,XR1) USE REQUESTED RECORD LGTH. VM 06160000                
       SPACE                                                            06170000                
CMDOMV EQU   *                         *   LOCAL                     VM 06180000                
       MVI   #CMMVL+MVLTYP,NOBIT       SET TYPE FOR NO ATR SWAP.     VM 06190000                
       B     CMMVRT                    BR TO MOVE ROUTINE            VM 06200000                
.F0200 ANOP                                                             06210000                
       EJECT                                                            06220000                
********************************************************************  M 06230000                
* COMPARE LENGTH REQUESTED VS LENGTH RECEIVED AND IF RECEVIED GREATER M 06240000                
*  SET BIT ON IN RETURN CODE TO INDICATE MESSAGE TRUNCATED            M 06250000                
********************************************************************  M 06260000                
       SPACE                                                            06270000                
CMSEFL EQU   *                         *   LOCAL.                     M 06280000                
       L     CMSPL,XR1                 POINT TO THE TP PARM  LIST.    M 06290000                
       MVC   PLEFFL(2,XR1),#CMTRL+TLTOL MOVE EFFECTIVE READ LENGTH    M 06300000                
       CLC   PLEFFL(2,XR1),PLINL(,XR1) COMPARE ACTUAL VS ASKED LENGTH M 06310000                
       JNH   CMMDEQ                    JUMP TO DEQ IF ACTUAL LT OR EQ.M 06320000                
       SBN   PL$RTC(,XR1),RCXDTR       SET DATA TRUNCATED. ACTUAL GT. M 06330000                
       MVC   PLEFFL(2,XR1),PLINL(,XR1) SET EFFECTIVE LENGTH TO ASKED  M 06340000                
       TITLE '$E075/CMMOPE---MLTA OP END HANDLING, DEQUEUE PARM LIST'   06350000                
********************************************************************  M 06360000                
*            DEQUEUE  READ OR WRITE MLTA PARAMETER LIST            *  M 06370000                
********************************************************************  M 06380000                
       SPACE                                                            06390000                
* TAKE CHAIN ADDR POINTER FROM THIS PARM LIST AND PLACE IN CHAIN ADDR M 06400000                
*    OF PARM LIST THAT POINTED TO THIS PARM LIST.                     M 06410000                
       SPACE                                                            06420000                
CMMDEQ EQU   *                         *   WITHIN CMMOPE.             M 06430000                
       B     CMDEQ                     GO TO DEQUEUE SUBROUTINE.      M 06440000                
       SPACE                                                            06450000                
       B     CMPOST                    POST REQUESTOR AS NECESSARY    M 06460000                
       SPACE                                                            06470000                
       B     CMMSCH                    RESCHEDULE THE LINE            M 06480000                
.MEND  ANOP                                                             06490000                
       MEND                                                             06500000