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

⟦d86d68201⟧ s3xseg

    Length: 31750 (0x7c06)
    Types: s3xseg
    Names: »S$E085«

Derivation

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

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00010100                
.* NAME: $E085  V-13, M-00.                                           * 00010300                
.********************************************************************** 00016600                
       $E085                                                            00020000                
       GBLB  &ONE,&NOB,&NOM,&NSW,&N1050,&NMOVE,&NSCTL,&NBFR             00030000                
       GBLB  &NPP,&NMP,&NSWL,&NCS,&N32,&NAS,&MOD4                       00040000                
       LCLA  &MIX                                                       00051000                
       TEXT                                                             00060000                
* R-13,C-01 CHANGE LEVEL                                                00065000                
       TITLE '$E085/CMRSCH---RESCHEDULE-THE-TP-LINE'                    00070000                
*********************************************************************** 00071000                
*                                                                     * 00072000                
*  NAME--CMRSCH                                                       * 00073000                
*                                                                     * 00074000                
*  TITLE--RESCHEDULE THE TP LINE                                      * 00075000                
*                                                                     * 00076000                
*  FUNCTION--TO SCHEDULE WORK ON LINES THAT NOT BUSY, OR TO STOP      * 00077000                
*            POLLING ON A LINE AND SCHEDULE OF PUT OPERATION IF PUT   * 00078000                
*            OPERATIONS ARE PENDING IN THE LINE QUEUE.                * 00079000                
*                                                                     * 00080000                
*  OPERATION--                                                        * 00081000                
*            . IF THE LINE IS BUSY, AND NO PUT OPERATION IS IN THE    * 00082000                
*              QUEUE, THEN POST REQUESTOR IF TP WAS SCHEDULED.  CHECK * 00083000                
*              FOR MORE WORK THAT CAN BE DONE.                        * 00084000                
*                                                                     * 00085000                
*            . IF LINE IS BUSY POLLING AND PUT IS IN THE QUEUE THEN   * 00086000                
*              CANCEL THE GET AND HANDLE THE PUT.                     * 00087000                
*                                                                     * 00088000                
*            . CLEAR ANY BSCA OP ENDS LEFT IN THE LCB, AND ADJUST THE * 00089000                
*              OP END TOTAL COUNT (CCOECT).                           * 00090000                
*                                                                     * 00091000                
*            . IF MLTA OLT IS IN PROCESS CALL IN TRANSIENT TO CONTINUE* 00092000                
*              THE OLT OPERATION.                                     * 00093000                
*                                                                     * 00094000                
*            . IF QUEUE FOR LINE IS EMPTY THEN POST THE REQUESTOR IF  * 00095000                
*              TP WAS JUST SCHEDULED, CHECK FOR OTHER FUNCTION THAT   * 00096000                
*              CAN BE PERFORMED BY 'CM'.                              * 00097000                
*                                                                     * 00098000                
*            . IF A BSCA POLL FOR STATUS OPERATION IN THE QUEUE HANDLE* 00099000                
*              IT BEFORE ANY OTHER OPERATION.                         * 00100000                
*                                                                     * 00101000                
*            . IF A PUT OPERATION CAN BE STARTED, PERFORM IT NEXT.    * 00102000                
*                                                                     * 00103000                
*            . IF NEITHER OF ABOVE TWO, THEN TRY TO SCHEDULE AN INPUT * 00104000                
*              OPERATION.  IF NO INPUT TO SCHEDULE THEN POST THE      * 00105000                
*              REQUESTOR IF TP WAS JUST SCHEDULED.  THEN CHECK FOR    * 00106000                
*              OTHER 'CM' FUNCTION THAT CAN BE PERFORMED NOW.         * 00107000                
*                                                                     * 00108000                
*            . IF A WRITE OPERATION CAN BE STARTED, THEN SET UP THE   * 00109000                
*              OUTPUT DATA BUFFER FOR THE LINE.  TRANSLATE THE DATA   * 00110000                
*              AS REQUIRED OR SPECIFIED.  ADD DEVICE DEPENDENT        * 00111000                
*              CONTROL CHARACTERS.                                    * 00112000                
*                                                                     * 00113000                
*            . IF NEW OPERATION ON A BSCA CARVE UP THE IOB(S) AND LINE* 00114000                
*              BUFFER(S) AS NECESSARY TO PERFORM THE OPERATION.  SET  * 00115000                
*              UP THE LINE DEPENDENT SECTION OF THE DTF.  (POLLING/   * 00116000                
*              ADDRESSING CHARACTERS, SWITCH ID VERIFICATION IDS,     * 00117000                
*              SWITCH LINE CALL/ANSWER OPTIONS).                      * 00118000                
*                                                                     * 00119000                
*            . IF BSCA OPERATION SET UP TO DO THE GET OR PUT-NORMAL,  * 00120000                
*              PUT-BLOCK, PUT-END OF FILE, OR PUT EOT-TO-WACK         * 00121000                
*              OPERATION AS APPROPRIATE.                              * 00122000                
*                                                                     * 00123000                
*            . IF MLTA OPERATION SET UP TO DO THE READ, WRITE WITH    * 00124000                
*              THE APPROPRIATE DISCONNECT, CONTINUE OR CONVERSATIONAL * 00125000                
*              OPTION AS REQUIRED BY THE TERMINAL AND/OR CURRENT      * 00126000                
*              LINE CIRCUMSTANCE.                                     * 00127000                
*                                                                     * 00128000                
*            . ISSUE OF IOCS CALL AFTER THE DTF IS SET-UP.  FOR BSCA, * 00129000                
*              CALL $$BSMS, FOR MLTA, CALL MLTIO1.                    * 00130000                
*                                                                     * 00131000                
*            . AFTER ISSUING THE IOCS CALL, TRACE THE RESULTS THRU    * 00132000                
*              $CC4TT.                                                * 00133000                
*                                                                     * 00134000                
*            . IF MLTA START OPERATION CODE INDICATES A START         * 00135000                
*              FAILURE THE CAM IN A TRANSIENT TO DETERMINE THE        * 00136000                
*              PROBLEM.  OTHERWISE, POST THE REQUESTOR IF TP WAS      * 00137000                
*              JUST SCHEDULED.  CHECK FOR MORE WORK FOR 'CM' TO       * 00138000                
*              PERFORM AT THIS TIME.                                  * 00139000                
*                                                                     * 00140000                
*            . IF BSCA OPERATION IS COMPLETED WITHOUT AN OP END       * 00141000                
*              INTERRUPT THEN FAKE AN OP END INTERRUPT TO KEEP THE    * 00142000                
*              FUNCTION GOING TIL COMPLETION.  POST THE REQUESTOR IF  * 00143000                
*              TP WAS JUST SCHEDULED.  CHECK FOR MORE WORK TO DO AT   * 00144000                
*              THIS TIME.                                             * 00145000                
*                                                                     * 00146000                
*            . IF CHECKING FOR MORE WORK TO BE DONE, THEN:            * 00147000                
*              - CHECK FOR MLTA OLT START FAILURE.  IF YES GO BACK    * 00148000                
*                AND TRY TO RESCHEDULE THE OPERATION.                 * 00149000                
*                                                                     * 00150000                
*              - IF BSCA PARM LIST WAS JUST QUEUE WHICH IS THE        * 00151000                
*                CONTINUATION OF A PREVIOUSLY STARTED LINE OPERATION, * 00152000                
*                THEN HANDLE THE NEXT OPERATION IT CAUSES.            * 00153000                
*                                                                     * 00154000                
*              - IF THERE ARE ANY OP ENDS TO BE HANDLED THEN CALL     * 00155000                
*                THE OP END HANDLER.                                  * 00156000                
*                                                                     * 00157000                
*              - IF THERE IS A FREEMAIN POSTED OR A TP PARAMETER      * 00158000                
*                LIST TO BE SCHEDULED, THEN CALL THE TP SCHEDULER.    * 00159000                
*                                                                     * 00160000                
*              - IF THERE IS A LINE TO BE RESCHEDULED BECAUSE OF ERP  * 00161000                
*                THEN GO BACK TO THE START OF THE RESCHEDULE FUNCTION.* 00162000                
*                                                                     * 00163000                
*              - IF THERE IS A CONSOLE FUNCTION PENDING THEN GIVE     * 00164000                
*                CONTROL TO THE 'KM' CONSOLE MANAGEMENT FUNCTION.     * 00165000                
*                                                                     * 00166000                
*              - OTHERWISE, IF NONE OF ABOVE, THEN WAIT FOR MORE      * 00167000                
*                WORK.                                                * 00168000                
*                                                                     * 00169000                
*            . IF POSTED WITH WORK TO DO, GIVE CONTROL TO THE 'KM'    * 00170000                
*              FUNCTION.                                              * 00171000                
*                                                                     * 00172000                
*  ENTRY POINTS                                                       * 00173000                
*         CMRSCH - RESCHEDULE WORK ON THE LINE.                       * 00174000                
*         CMPAII - POST REQUESTOR IF TP SCHEDULED.                    * 00175000                
*         CMTSRQ - CHECK FOR MORE WORK TO BE PERFORMED.               * 00176000                
*                                                                     * 00177000                
*  INPUT--                                                            * 00178000                
*         CMSLCB - ADDRESS OF DTF TO BE SCHEDULED.                    * 00179000                
*         CMSPL  - ADDRESS OF TP PARAMETER LIST TO BE SCHEDULED.      * 00180000                
*         CC@PRL - ADDRESS OF TP PARAMETER LIST LAST SCHEDULED.       * 00181000                
*         CCOECT - OP END PENDING COUNT.                              * 00182000                
*         TCBMPK - POST MASK OF WORK TO DO.                           * 00183000                
*         #CMERP - ADDRESS OF DTF FOR RESCHEDULING BECAUSE OF ERP.    * 00184000                
*         @KMQTB - ADDRESS OF CONSOLE PARAMETER LIST AWAITING         * 00185000                
*                  OPERATION.                                         * 00186000                
*                                                                     * 00187000                
*  OUTPUT--                                                           * 00188000                
*         CMSLCB - ADDRESS OF DTF FOR LINE SCHEDULED.                 * 00189000                
*         CMSPL  - ADDRESS OF TP REQUEST SCHEDULED.                   * 00190000                
*         DTF(LCB),TUB - SET UP FOR THE OPERATION PERFORMED.          * 00191000                
*                                                                     * 00192000                
*  EXTERNAL REFERENCES--                                              * 00193000                
*         $CC4BC - STOP POLLING TO HANDLE PUT ON BSCA LINE.           * 00194000                
*         $CC4MT - HANDLE MLTA OLT CONTINUATION.                      * 00195000                
*         $CC4B0 - FORMAT 3270 COMMAND OUTPUT.                        * 00196000                
*         $CC4WR - HANDLE TRANSLATE ERRORS IN OUTPUT.                 * 00197000                
*         $CC4JX - X IS THE APPROPRIATE LINE TRANSLATE TRANSIENT.     * 00198000                
*         $CC4SC - MLTA START CODE FAILURE TRANSIENT.                 * 00199000                
*         $CC4TT - CCP TRACE ROUTINE.                                 * 00200000                
*         $CC4WC - SWITCH LINE CALL/ANSWER LOG TRANSIENT.             * 00201000                
*         $CC4WT - CCP WAIT/POST ROUTINE.                             * 00202000                
*         CMIVGM - INVITE INPUT/GET OPERATION SCHEDULE ROUTINE.       * 00203000                
*         CMRQBF - POST REQUESTOR OF TP SCHEDULED.                    * 00204000                
*         CMMCT  - SET UP MULTI-COMPONENT TERMINAL ADDRESSES.         * 00205000                
*         CMGINL - SET UP INPUT RECORD LENGTH.                        * 00206000                
*         CMPSCH - FIND SWITCH ID ENTRY IN SWITCH ID LIST.            * 00207000                
*         CMASCH - FIND ADDRESSING ENTRY IN ADDRESSING LIST.          * 00208000                
*         MLTIO1 - MLTA IOCS.                                         * 00209000                
*         $$BSMS - BSCA IOCS.                                         * 00210000                
*                                                                     * 00211000                
*  EXIT, NORMAL--                                                     * 00212000                
*            - TO CMFRMN IF FREEMAIN POSTED OR TP REQUEST TO BE       * 00213000                
*              HANDLED.                                               * 00214000                
*            - TO CMRSCH IF ANOTHER LINE TO RESCHEDULE.               * 00215000                
*            - TO CMPOND IF AN OP END TO BE HANDLED.                  * 00216000                
*            - TO KMINTR IF A CONSOLE OPERATION TO BE HANDLED.        * 00217000                
*                                                                     * 00218000                
*********************************************************************** 00219000                
       SPACE                                                            00330000                
CMRSCH EQU   *                         RESCHEDULE THE LINE              00340000                
       AIF   (&MOD4 NE '1').LJ005                                       00342000                
       SBN   CMSWIT,KNONLY             SET 'CONSOLE ONLY PL IN Q'       00344000                
.LJ005 ANOP                                                             00346000                
       L     CMSLCB,XR2                POINT XR2 AT LCB                 00350000                
       AIF   (&NOB).C0400                                               00360000                
       SPACE                                                            00370000                
*    CLEAR ANY OP END RESIDUAL LEFT FOR A BSCA DTF.                   B 00380000                
       SPACE                                                            00400000                
       AIF   (&NOM).M1100                                               00410000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 00420000                
       JF    CMROLT                    NO-GO CHECK FOR MLTA OLT.      2 00430000                
.M1100 AIF   (&NSWL).S0050                                              00431000                
&MIX   SETA  &NPP+&NMP+&NCS                                             00432000                
       AIF   (&MIX EQ '3').S0060                                        00433000                
       TBN   $BDATR(,DTF),$BCSWI       SWITCHED                     SLB 00434000                
       TBF   $BDATR(,DTF),$BCMPT       *        LINE  ?             SLB 00435000                
       JT    CMROPE                    YES-DON'T CLEAR 'LCBOWN'.    SLB 00436000                
.S0050 ANOP                                                             00437000                
       SLC   LCBOWN(2,DTF),LCBOWN(,DTF) CLEAR LINE OWNERSHIP STATUS.  B 00440000                
.S0060 ANOP                                                             00441000                
CMROPE EQU   *                         *                              B 00442000                
       SLC   CCOECT,LCBOPE(1,DTF)      REMOVE LINE OP END RESIDUAL.   B 00450000                
       MVI   LCBOPE(,DTF),NOBIT        CLEAR LINE OP END COUNT.       B 00460000                
       J     CMLKPL                    GO CHECK FOR MORE LINE PARM'S. 2 00470000                
       SPACE 1                                                          00480000                
CMROLT EQU   *                         *                              2 00490000                
.C0400 ANOP                                                             00500000                
       AIF   (&NOM).M1150                                               00501000                
       SPACE                                                            00502000                
*    FOR MLTA, FIRST DETERMINE IF ANY SYSTEM INITIATED ONLINE TESTS   M 00503000                
*      ARE PENDING.                                                   M 00504000                
       SPACE                                                            00505000                
       CLI   LCBOLT(,XR2),CMZERO       IS ONLINE TEST COUNT ZERO      M 00510000                
       JE    CMLKPL                    YES-TO LOOK AT PARM LISM       M 00520000                
       SPACE                                                            00530000                
* HAVE ON-LINE TEST REQUEST THAT NEEDS TO BE STARTED - CALL TRANSIENT M 00540000                
       SPACE                                                            00550000                
       B     $CC4PI                    BRANCH TO BRING IN TRANSIENT   M 00560000                
       DC    AL1(CC4MT)                START ONLINE TEST              M 00570000                
       SPACE                                                            00580000                
* RETURN AT ARR IF ONLINE TEST NOT STARTED                            M 00590000                
       SPACE                                                            00600000                
       SBN   CMSWIT,CMNOST             INDICATE LINE I/O NOT STARTED  M 00610000                
       SPACE                                                            00620000                
* RETURN AT ARR+4 IF ONLINE TEST STARTED                              M 00630000                
       SPACE                                                            00640000                
       J     CMBRCK                    JUMP TO SEE IF POST NEEDED     M 00650000                
       SPACE                                                            00720000                
.M1150 ANOP                                                             00721000                
CMLKPL EQU   *                         LOOK AT PARM LISTS IN THE QUEUE  00730000                
       CLI   LCBPLQ-1(,XR2),CMZERO     IS QUEUE EMPTY                   00740000                
       JE    CMBRCK                    JUMP TO BR TO CHECK OP END COUNT 00750000                
       SPACE                                                            00760000                
*  REQUEST IN QUEUE FOR THE LINE READY TO GO                            00770000                
       SPACE                                                            00780000                
* LOOK FOR NON-READ IF ANY TO EXECUTE NOW                               00790000                
* ELSE SEARCH THE QUEUE FOR A READ AND START ALL READS FOR WHICH        00800000                
* THE NECESSARY HOLD BUFFER SPACE CAN BE OBTAINED                       00810000                
* ASSURE NO OP SCHEDULED TO TERMINAL IN ERROR RECOVERY                  00820000                
       SPACE                                                            00830000                
       L     LCBPLQ(,XR2),XR1          POINT XR1 AT 1ST PARM LIST IN Q  00840000                
CMRDCK EQU   *                                                          00850000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT THE TUB             00860000                
       AIF   (&NSWL).S0100                                              00870000                
       SPACE 1                                                          00880000                
*   IGNORE SYSTEM REQUESTS IF A USER TASK OWNS THE SWITCHED LINE.    SB 00890000                
       SPACE 1                                                          00900000                
       AIF   (&NOM).C0473                                               00910000                
       TBN   TUBCHR(,XR2),TUBLNE       BSCA LINE ?                   S2 00920000                
.C0473 ANOP                                                             00930000                
       TBN   TUBAT1(,XR2),TUBSWC       SWITCHED LINE ?               SB 00940000                
       JF    CMRFSH                    NO-GO CHECK REFRESH OPTION.   SB 00950000                
       L     TUBDTF(,XR2),DTF          POINT TO THE DTF.             SB 00960000                
       SPACE                                                            00961000                
*                              ------------------------------START--@07 00962000                
       TBN   LCBATR(,DTF),LCBNIT       LINE CONNECTED ?              SB 00963000                
       JT    CMOWNC                    YES - CHECK OWNING TUB        SB 00964000                
*   LINE NOT CONNECTED - ALLOW REQUEST UNLESS SYSTEM REQUEST AND     SB 00965000                
*                        USER TASK OWNS THE LINE.                    SB 00966000                
*                              ------------------------------END----@07 00967000                
       SPACE                                                            00968000                
       CLC   LCBTCB(2,DTF),CC0000      SWITCH LINE UNOWNED ?         SB 00970000                
       JE    CMRFSH                    YES-GO CHECK FOR REFRESH      SB 00980000                
       CLC   LCBTCB(2,DTF),CC@CPT      CP OWN THE SWITCHED LINE ?    SB 00990000                
       JE    CMRFSH                    YES-GO CHECK REFRESH OPTION.  SB 01000000                
       TBN   PLOPM(,PL),OPREQR         SYSTEM REQUEST ?              SB 01010000                
       JT    CMNXTP                    YES-SKIP THIS PARM LIST.      SB 01020000                
*                              ------------------------------START--@07 01021000                
       J     CMRFSH                    NOT CONNECTED SO SCHEDULE     SB 01022000                
*   LINE CONNECTED - CHECK TO SEE IF REQUEST IS FOR CONNECTED TUB.   SB 01023000                
CMOWNC EQU   *                         * LOCAL                       SB 01024000                
       CLC   PLTUBA(2,PL),LCBOWN(,DTF) YES - THIS TUB OWN THE LINE   SB 01025000                
       JNE   CMNXTP                    NO - LINE OWNED BY ANOTHER    SB 01026000                
*                                           TUB SO SKIP THIS PL.     SB 01027000                
*                              ------------------------------END----@07 01028000                
       SPACE                                                            01029000                
CMRFSH EQU   *                         *                             SB 01030000                
       L     PLTUBA(,PL),XR2           POINT TO THE TUB.             SB 01040000                
.S0100 ANOP                                                             01050000                
       AIF   (&N32).T0700                                               01060000                
       SPACE                                                            01070000                
*   IF OPERATION IS REFRESH OF SCREEN, THE SET TEMP OP CODE FOR PUT. 0B 01080000                
       SPACE                                                            01090000                
       AIF   (&NOM).T0600                                               01100000                
       TBN   TUBCHR(,XR2),TUBLNE       BSCA LINE ?                   02 01110000                
       JF    CMRXPT                    NO-GO CHECK PUT IN ERP.       02 01120000                
.T0600 ANOP                                                             01130000                
* IF THE CLEAR KEY HAS BEEN HANDLED FOR A STOP INVITE PL             0B 01130600                
*  THEN DON'T RESCHEDULE IT,GO DE-QUE IT AND RETURN IT TO            0B 01131200                
*  THE USER PROGRAM                                                  0B 01131800                
       SPACE 1                                                          01132400                
       TBN   PLOPM(,PL),OPSTOP         STOP INVITE AND               0B 01133000                
       TBN   TUBSCS(,XR2),TUBCLR                      CLEAR KEY ?    0B 01133600                
       JF    CMRXE1                    NO-CHECK REFRESH              0B 01134200                
       MVI   PL$RTC(,PL),RCXCLR        INTERNAL RET. CODE = CLEAR    0B 01134800                
       SBF   TUBSCS(,XR2),TUBCLR       SET OFF CLEAR IND.            0B 01135400                
       ST    CMSPL,PL                  SAVE PL FOR DE-QUE            0B 01136000                
       L     TUBDTF(,XR2),XR2          XR2--> DTF                    0B 01136600                
       B     CMRETC                    GO DEQUE STOP PL              0B 01137200                
       SPACE 1                                                          01137800                
CMRXE1 EQU   *                         REFRESH CHECK                 0B 01138400                
       TBN   PL$OPC(,PL),OPRFSH        REFRESH OPERATION REQUESTED ? 0B 01140000                
       JF    CMRXER                    NO-GO TEST FOR TERM IN ERP.   0B 01150000                
       MNN   PL$OPM(,PL),CCPUT         ALTER OP CODE TO A PUT.       0B 01160000                
CMRXER EQU   *                         *                             0B 01170000                
       SPACE 1                                                          01180000                
*   IF POLL FOR STATUS OPERATION , HANDLE AS HIGHEST PRIORITY.       0B 01190000                
       SPACE 1                                                          01200000                
       TBN   PL$OPC(,PL),OPLSNS        POLLING FOR STATUS ?          0B 01210000                
       JT    CMTSRS                    YES-GO HANDLE STATUS POLL.    0B 01220000                
CMRXPT EQU   *                         *                             0B 01230000                
.T0700 ANOP                                                             01240000                
       TBN   PL$OPM(,XR1),OPPUT        IS IT PUT                        01250000                
       TBF   TUBAT3(,XR2),TUBERP       ASSURE NOT IN ERROR RECOVERY     01260000                
       JT    CMSCHO                    JUMP IF PUT AND TUB NOT IN ERP   01270000                
       SPACE                                                            01280000                
CMNXTP EQU   *                         CHECK NEXT PARM LIST             01290000                
       CLI   PLCHN-1(,XR1),CMZERO      ANY MORE PARM LISTS IN QUEUE     01300000                
       JE    CMTSRS                    IF NOT JUMP TO TRY TO SCHEDULE RD01310000                
       SPACE                                                            01320000                
*MORE REQUESTS IN QUEUE-CHECK THAM FOR NON-READ                         01330000                
       SPACE                                                            01340000                
       AIF   (&MOD4 NE '1').LJ008                                       01342000                
       SBF   CMSWIT,KNONLY             SET OFF 'CONSOLE ONLY PL IN Q'   01344000                
.LJ008 ANOP                                                             01346000                
       L     PLCHN(,XR1),XR1           PT XR1 AT NEXT PARM LIST         01350000                
       B     CMRDCK                    BR TO CHECK FOR NON READ         01360000                
       SPACE                                                            01370000                
* ALL READS IN THE QUEUE SO DO ANALYSIS IN TERMS OF ELIGIBLITY          01380000                
* BECAUSE RECORD AREA OR HOLD BUFFER IS AVAILABLE                       01390000                
* MAY HAVE NON-READS IN QUEUE BUT THEY WILL BE TO TERMINALS IN ERROR    01400000                
* RECOVERY                                                              01410000                
       SPACE                                                            01420000                
CMTSRS EQU   *                         TEST READ ELIGIBILITY            01430000                
       AIF   (&MOD4 NE '1').LJ010                                       01431000                
       TBN   CMSWIT,KNONLY             CONSOLE ONLY PL IN Q AND -|      01432000                
       SBF   CMSWIT,KNONLY             SET IT OFF                |      01433000                
       L     CMSLCB,DTF                XR2 --> BSCA DTF          |      01434000                
       TBN   $BDDEV(,DTF),X'08'        LINE TWO AND -------------|      01435000                
       TBF   PL$OPC(,PL),OPLSNS        NOT POLL FOR STATUS ?-----|      01436000                
       JT    CMBRCK                    YES - DON'T RESCHEDULE<---|      01437000                
.LJ010 ANOP                                                             01438000                
       B     CMIVGM                    BRANCH TO DO READ GETMAIN ANALYSI01440000                
       TBN   CMSWIT,CMRSLN             IS RESCHEDULE SWITCH ON          01450000                
       JT    CMTKFR                    JUMP IF RESCHEDULE ON            01460000                
       SPACE                                                            01470000                
* CANNOT RESCHEDULE THE LINE SO BRANCH TO SET OFF TP REQUEST POST BIT   01480000                
* AND THEN CHECK THE OP END COUNT                                       01490000                
       SPACE                                                            01500000                
CMBRCK B     CMPAII                    BR TO POST IF NEEDED             01510000                
       SPACE                                                            01520000                
CMTKFR EQU   *                         TAKE FIRST REQUEST IN THE QUEUE  01530000                
       L     CMSLCB,XR2                POINT XR2 AT THE LCB             01540000                
       L     CMSPL,XR1                 XR1 -> PLIST WITH ELIGIBLE READ  01550000                
       SPACE                                                            01560000                
CMSCHO EQU   *                         SCHEDULE THE PARM LIST REQUEST   01570000                
       SPACE                                                            01580000                
       ST    CMSPL,XR1                 SAVE PARM LIST ADDR              01590000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT THE TUB             01600000                
       AIF   (&NOM).M1200                                               01610000                
       MVC   CMTCHR(1),TUBCHR(,XR2)    MOVE TUB CHAR TO SAVE AREA     M 01620000                
       AIF   (&NOB).M1180                                               01620110                
       TBN   TUBCHR(,XR2),TUBLNE       BSCA LINE ?                    2 01620120                
       JT    CMTTAT                    NO-SHIP SAVE OF TUBCHR FIELD.  2 01620130                
.M1180 ANOP                                                             01620140                
       AIF   (&NBFR).H4467                                              01620150                
       MVC   TUBVHR(1,XR2),TUBCHR(,XR2) SAVE TUBCHR FIELD            RM 01620200                
.H4467 ANOP                                                             01620300                
       AIF   (&NSCTL).S5400                                             01630000                
       MVC   CMSTMA(2),TUBTMA(,XR2)    SAVE TERMINAL ADDRESS         CM 01640000                
.S5400 ANOP                                                             01650000                
CMTTAT EQU   *                         *                              M 01655000                
       MVC   SAVTA2(2),TUBTA2(,XR2)    SAVE TERMINAL ATTRIBUTES       M 01660000                
.M1200 ANOP                                                             01670000                
CM3G1  EQU   *                         TP REQUEST ROUTINE ENTRY POINT   01680000                
* FOR RESCHEDULEING THE LINE                                            01690000                
* LINE IS NOT BUSY                                                      01700000                
* XR1 CONTAINS ADDRESS OF THE PARAMETER LIST TO BE SCHEDULED            01710000                
       SPACE                                                            01720000                
       L     CMSDTF,XR2                POINT XR2 AT DTF                 01730000                
       AIF   (&NOB).C0474                                               01740000                
       AIF   (&NOM).M1250                                               01750000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 01760000                
       JF    CMNOBY                    NO-GO CHECK FOR GET OP CODE.   2 01770000                
       B     CMTASV                    GO TO SAVE TAS BYTES.          2 01780000                
       SPACE 1                                                          01790000                
       ST    LCBPL@(,DTF),PL           SAVE THE PARM LIST IN LCB.     2 01800000                
       AGO   .C0474                                                     01810000                
.M1250 ANOP                                                             01820000                
       B     CMTASV                    NOW GO SET UP TAS SAVE AREAS.  B 01830000                
       ST    LCBPL@(,DTF),PL           SAVE THE PARM LIST IN LCB.     B 01840000                
.C0474 ANOP                                                             01850000                
       SPACE                                                            01860000                
CMNOBY EQU   *                         LINE NOT BUSY                    01870000                
* DETERMINE IF OPERATION IS READ OR WRITE                               01880000                
       SPACE                                                            01890000                
       TBN   PL$OPM(,XR1),OPGET        IS IT READ                       01900000                
       AIF   (&NOM).M1254                                               01910000                
       BT    CMREAD                    JUMP IF TRUE TO READ ROUTINE   M 01920000                
       AGO   .M1255                                                     01930000                
.M1254 ANOP                                                             01940000                
       BT    CMFORM                    BR IF READ TO FORM OP FOR MLMP.B 01950000                
.M1255 ANOP                                                             01960000                
       TITLE '$E085/CMWRIT----START-A-WRITE-OPERATION'                  01970000                
*********************************************************************** 01980000                
*            START A WRITE OPERATION ON THE TP LINE                   * 01990000                
*********************************************************************** 02000000                
       SPACE                                                            02060000                
* XR1 POINTS TO THE PARM LIST                                           02070000                
* XR2 POINTS TO THE DTF                                                 02080000                
       SPACE                                                            02090000                
* FIRST SET UP PARAMETER LIST FOR MOVE OR TRANSLATE                     02100000                
       SPACE                                                            02110000                
CMWRIT EQU   *                         START WRITE OPERATION            02120000                
       AIF   (&NOB).C0500                                               02130000                
       AIF   (&ONE).C0480                                               02140000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 02150000                
       JF    CMWMLT                    NO-GO TO HANDLE MLTA.          2 02160000                
.C0480 ANOP                                                             02170000                
       AIF   (&N32).T0810                                               02180000                
       CLI   CMSPHY,TUB5M2             THIS A 3270 ?                 0B 02190000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?             0B 02200000                
       AIF   (&MOD4 NE '1').LJ015                                       02201000                
       L     PLTUBA(,PL),XR2           XR2 --> TUB                      02202000                
       TBF   TUBAT1(,XR2),TUBKNM       AND NOT THE CONSOLE ?            02203000                
       L     CMSLCB,XR2                XR2 --> BSCA DTF                 02204000                
.LJ015 ANOP                                                             02205000                
       JC    CMWXLT,FLSOHI             NO-GO CHECK FOR TRANSLATION.  0B 02210000                
CMW327 EQU   *                         *                             0B 02211000                
*                              ------------------------------START--@07 02212000                
       AIF   (&NSWL).T0805                                              02213000                
       AIF   (&NCS).T0800                                               02214000                
       TBF   $BDATR(,DTF),$BCMPT       CONTROL STATION LINE ?        0B 02215000                
       JF    CMB0C2                    YES-CALL CONTROL STA. FORMAT  0B 02216000                
.T0800 ANOP                                                             02217000                
       B     $CC4PI                    CALL PROGRAM INITIATION TO    0B 02230000                
       DC    AL1(CC4S0)                BRING IN 3275 SW FORMAT XIENT.0B 02240000                
       J     CMWXLT                    GO CHECK FOR TRANSLATION.     0B 02241000                
.T0805 ANOP                                                             02242000                
CMB0C2 EQU   *                         * LOCAL                       0B 02243000                
       B     $CC4PI                    CALL PROGRAM INITIATION TO    0B 02244000                
       DC    AL1(CC4B0)                BRING IN 3270 FORMAT XIENT.   0B 02245000                
*                              ------------------------------END----@07 02246000                
       SPACE                                                            02250000                
CMWXLT EQU   *                         *                             0B 02260000                
.T0810 ANOP                                                             02270000                
       AIF   (&NAS).A0100                                               02280000                
       TBN   $BDATT(,DTF),$BCASK       IS THIS AN ASCII LINE, AND    AB 02290000                
       TBF   SAVTA1,TASTRN             TAS SPECIFY TRANSLATE ?       AB 02300000                
       JF    CMWGOR                    NO--THEN JUST DO WRITE.       AB 02310000                
       SPACE                                                            02320000                
       AIF   (&N32).T0900                                               02330000                
*   IF SYSTEM OR REFRESH OPTION TO A 3270, THEN THE DATA IS IN THE  0AB 02340000                
*     RESERVED PORTION OF THE BSCA LINE BUFFER.                     0AB 02350000                
       SPACE                                                            02360000                
*     RESERVED PORTION OF THE BSCA LINE BUFFER.                     0AB 02370000                
       CLI   CMSPHY,TUB5M2             THIS A 3270, AND             0AB 02375000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?            0AB 02380000                
       JC    CMWREG,FLSOHI             NO-GO USE REGULAR FIELDS.    0AB 02390000                
       MVC   TRL+TLFRMA,LCBSRT(2,DTF)  FROM MSG IS IN RESERVED BUFR.0AB 02400000                
       MVC   TRL+TLTOL,LCBADJ(2,DTF)   TRUE LENGTH IS IN THE LCB.   0AB 02410000                
       J     CMWTBL                    GO TO FILL STANDARD TABLE DAT0AB 02420000                
       SPACE                                                            02430000                
.T0900 ANOP                                                             02440000                
       AIF   (&NAS).A0100                                               02450000                
CMWREG EQU   *                         REGULAR ADDRESS FILL VALUES. 0AB 02460000                
       MVC   TRL+TLTOL,PLOUTL(2,PL)    * AT START-UP TO TRANSLATE INTAB 02470000                
       MVC   TRL+TLFRMA,PLRECA(2,PL)   BUILD TRANSLATE PARAMETER LISTAB 02480000                
       TBN   PLOPM(,PL),OPOLT          ON LINE TEST REQUEST ?         B 02490000                
       JF    CMWTBL                    NO-SET UP STANDARD FIELDS.     B 02500000                
       ALC   TRL+TLFRMA(2),TWELVE      BUMP PAST PARM LIST IN AREA.   B 02510000                
CMWTBL EQU   *                         *                             AB 02520000                
       MVC   TRL+TLTOA,LCBATL(2,DTF)   * USE SPECIAL BLOCK SET ASIDE AB 02530000                
       LA    TRL,XR1                   LOAD REG TO POINT TO PARM LISTAB 02540000                
       B     $CC4PI                    CALL IN TRANSIENT TRANSLATE   AB 02550000                
       DC    AL1(CC4JD)                * ROUTINE.                    AB 02560000                
       SPACE                                                            02570000                
       TBN   TLRTC(,XR1),TLERR         TRANSLATE ERROR ?             AB 02580000                
       L     CMSPL,PL                  POINT TO THE PARM LIST.       AB 02590000                
       JF    CMWGOR                    NO-GO GIVE OP TO MLMP.        AB 02600000                
       B     $CC4PI                    CALL TRANSIENT HANDLER.       AB 02610000                
       DC    AL1(CC4WR)                REQUEST XLATE ERROR RTN.      AB 02620000                
       SPACE 1                                                          02630000                
       SBN   LCBAT1(,DTF),LCBNTQ       SET PARM LIST NOT QUEUED.     AB 02640000                
       B     CMRQBF                    EXIT HANDLING TP REQUEST.     AB 02650000                
       SPACE 1                                                          02660000                
.A0100 ANOP                                                             02670000                
CMWGOR EQU   *                         *                              B 02680000                
       B     CMFORM                    GO TO GIVE OP REQUEST TO MLMP. B 02690000                
       SPACE                                                            02700000                
       AIF   (&ONE).C0500                                               02710000                
       EJECT                                                            02715000                
CMWMLT EQU   *                         *                              2 02720000                
.C0500 ANOP                                                             02730000                
       AIF   (&NOM).M1300                                               02740000                
* THIS SEGMENT IS THE MLTA WRITE SCHEDULER                            M 02741000                
* FOR A WRITE IT IS DETERMINED WHETHER  TO TRANSLATE THE DATA OR NOT  M 02742000                
* AFTER BEING MOVED TO THE LINE BUFFER, THE OP WILL BE ISSUED TO WRITEM 02743000                
*  THE DATA TO THE TERMINAL                                           M 02744000                
       SPACE                                                            02750000                
       AIF   (&NSW).A5300                                               02760000                
* IF THIS IS PUT DISCONNECT - THEN THERE IS NO DATA TO BE TRANSMIITEDSM 02780000                
       SPACE                                                            02790000                
       TBN   PLOPM(,XR1),OPDISC        IS THIS PUT DISCONNECT        SM 02800000                
       BT    CMSIO                     JUMP IF PUT DISCONNECT        SM 02810000                
       SPACE                                                            02820000                
.A5300 ANOP                                                             02840000                
       SPACE                                                            02850000                
       MVC   TRL+TLFRMA(2),PLRECA(,XR1) MOVE FROM ADDR TO TRAN LIST.  M 02860000                
       MVC   TRL+TLTOA(2),$MDCRA(,XR2) MOVE TO ADDR TO TRAN/MOVE LIST M 02870000                
       SPACE                                                            02880000                
* INITIALIZE FROM LENGTH IN MOVE LIST TO THE SIZE OF THE LINE BUFFER  M 02890000                
* BYTES AVAILABLE IN LINE BUFFER IS STORED IN THE LCB                 M 02900000                
       SPACE                                                            02910000                
       MVC   TRL+TLTOL(2),LCBBFL(,XR2) MOVE SIZE OF LINE BUFFER TO    M 02920000                
*                                      THE TRANS/MOVE LIST            M 02930000                
       SPACE                                                            02940000                
       MVI   $MDCRL(,XR2),CMZERO       SET DTF RECORD LENGTH TO ZERO  M 02950000                
       TBN   CMTCHR,TUBTYP             IS IT TYPEWRITER TERMINAL      M 02960000                
       JF    CMPWLN                    JUMP IF NOT TYPEWRITER         M 02970000                
       SPACE                                                            02980000                
       AIF   (&N1050).C5000                                             02990000                
*      HAVE TYPEWRITER DEVICE-MUST DETERMINE IF IT IS MULTI-COMPONENT0M 03020000                
*      TERMINAL AND IF YES - IS THE COMPONENT BEING WRITTEN TO A     0M 03030000                
*      TYPEWRITER COMPONENT                                          0M 03040000                
       SPACE                                                            03050000                
       TBN   CMTCHR,TUBMCT             IS IT MCT                     0M 03060000                
       TBF   PL$MCT(,XR1),BIT5         IF THIS BIT IS OFF, THIS IS   0M 03070000                
*                                      * NOT A 1050 PRINTER.         0M 03080000                
       TBN   PL$MCT(,XR1),BIT6         IF THIS BIT IS ON,            0M 03090000                
*                                      THIS IS NOT A 1050 PRINTER    0M 03100000                
       JT    CMPWLN                    JUMP IF MCT AND NON-PRINTER   0M 03110000                
       SPACE                                                            03120000                
.C5000 ANOP                                                             03140000                
       SPACE                                                            03150000                
* HAVE TYPEWRITER DEVICE - DETERMINE WHETHER TO ADD START OF LINE     M 03160000                
*  AND/OR END OF LINE TYPEWRITER CONTROL CHARACTERS TO THE OUTPUT LINEM 03170000                
       SPACE                                                            03180000                
       AIF   (&NBFR).R5200                                              03190000                
* FOR BUFFERRED RECEIVE TERMINAL - THERE IS NO NEED FOR IDLE CHARACTERM 03200000                
* FOLLOWING THE CARRIAGE RETURN                                      RM 03210000                
* THEREFORE NEED TO ADD ONLY THE CARRAIGE RETURN BEFORE AND/OR AFTER RM 03220000                
* THE USER DATA                                                      RM 03230000                
       MVI   CMTYPZ,CMTYPL             SET CONTROL CHAR LENGTH TO    RM 03240000                
*                                      INCLUDE IDLES                 RM 03250000                
       TBN   $MDTFR(,XR2),$MTBFR       IS IT BUFFERRED RECEIVE TERM. RM 03260000                
       JF    CMTYTS                    JUMP IF NOT BUFFERRED RECEIVE RM 03270000                
       SPACE                                                            03280000                
* HAVE BUFFERRED RECIEVE TERMINAL SO SET CONTROL CHARACTER LENGTH    RM 03290000                
* SUCH THAT IT DOES NOT INCLUDE THE IDLE CHARACTERS                  RM 03300000                
       SPACE                                                            03310000                
       MVI   CMTYPZ,CMTYBF             SET CONTROL CHAR LENGTH TO    RM 03320000                
*                                      EXCLUDE IDLE CHARACTERS       RM 03330000                
       SPACE                                                            03340000                
.R5200 ANOP                                                             03350000                
CMTYTS EQU   *                         TEST FOR DEVICE CONTROL CHARS  M 03360000                
       TBF   PLOPM(,XR1),OPSOL         ARE START OF LINE CHARS WANTED M 03370000                
       JF    CMTSEL                    JUMP IF NOT WANTED             M 03380000                
       SPACE                                                            03390000                
*      SEE IF ALREADY AT START OF LINE AND IDLES ARE NOT NEEDED       M 03400000                
       SPACE                                                            03410000                
       TBN   CMTCHR,TUB@SL             ARE WE AT START OF LINE        M 03420000                
       TBF   CMTCHR,TUBNID             ARE IDLES NOT NEEDED           M 03430000                
       JT    CMTSEL                    JUMP IF AT START OF LINE AND NOM 03440000                
*                                      IDLES ARE NEEDED               M 03450000                
       SPACE                                                            03460000                
* USER WANTS START OF LINE CONTROL CHARS                              M 03470000                
       SPACE                                                            03480000                
       ALC   $MDCRL(1,XR2),CMTYPZ      ADD # CHARS TO DTF LENGTH      M 03490000                
       SLC   TRL+TLTOL(2),CMTYPZ       SUBTRACT # CHAR FROM BYTES     M 03500000                
*                                      * AVAILABLE IN LINE BUFFER     M 03510000                
       SBN   CMSLSW+1,CMASK            SET OPSOL SWITCH NOT TO JUMP   M 03520000                
       SPACE                                                            03530000                
* DETERMINE WHETHER TO ADD END OF LINE TYPEWRITER CONTROL CHARACTERS  M 03540000                
* TO THE USER MESSAGE                                                 M 03550000                
       SPACE                                                            03560000                
CMTSEL EQU   *                         TEST FOR END OF LINE CHARS     M 03570000                
       SBF   CMTCHR,TUB@SL             SET BIT TO INDICATE TERMINAL   M 03580000                
*                                      NOT AT START OF LINE           M 03590000                
       TBF   PLOPM(,XR1),OPEOL         ARE END OF LINE CHARS REQUESTEDM 03600000                
       JF    CMPWLN                    JUMP IF NOT TO BE ADDED        M 03610000                
       SPACE                                                            03620000                
* WE HAVE TYPERWRITER AND A USER WHO WANTS CCP TO APPEND TYPEWRITER   M 03630000                
* CONTROL CHARACTERS TO HIS MESSAGE                                   M 03640000                
* ADD 1 CARRIAGE RETURN AND 0 OR 15 IDLE CHARACTERS TO HIS MESSAGE    M 03650000                
       SPACE                                                            03660000                
* ADD TO DTF LENGTH THE NBR OF CHARS ADDED                            M 03670000                
* SUBTRACT THAT LENGTH FROM LENGTH AVAILABLE IN BUFFER                M 03680000                
* TURN TYPEWRITER SWITCH ON SO CHARACTERS WILL BE ADDED AT THAT POINT M 03690000                
       SPACE                                                            03700000                
       SBN   CMTCHR,TUB@SL             SET BIT TO INDICATE TERM AT    M 03710000                
*                                      START OF LINE                    03720000                
       ALC   $MDCRL(1,XR2),CMTYPZ      ADD # CHARS TO DTF RECORD LNG. M 03730000                
       SLC   TRL+TLTOL(2),CMTYPZ       SUBTRACT THAT NUMBER FROM BYTESM 03740000                
*                                      AVAILABLE SITTING IN TRN/MV LSTM 03750000                
       SBN   CMELSW+1,CMASK            SET SWITCH TO FALL THRU        M 03760000                
       SPACE                                                            03770000                
* DETERMINE LENGTH OF MOVE OR TRANSLATE                               M 03780000                
* IF REQUEST LENGTH PLUS TYPEWRITER CONTROL CHARACTERS (IF ANY) IS    M 03790000                
* LESS THAN AVAILABLE BUFFER LENGTH - USE REQUESTED LENGTH            M 03800000                
*   ELSE USE AVAILABLE LENGTH WHICH HAS ALREADY BEEN MODIFIED FOR ANY M 03810000                
*  TYPEWRITER CONTROL CHARACTERS THAT MAY BE NEEDED                   M 03820000                
       SPACE                                                            03830000                
* COMPARE REQUESTED LENGTH IN PARM LIST VS AVAILBALE LENGTH IN        M 03840000                
*  TRANSLATE LIST.                                                    M 03850000                
       SPACE                                                            03860000                
CMPWLN EQU   *                         COMPARE LENGTHS                M 03870000                
       CLC   PLOUTL(,XR1),TRL+TLTOL(2) COMPARE REQ VS AVAILABLE LENGTHM 03880000                
       JH    CMTYSW                    JUMP IF WANT TO USE AVAILBLE   M 03890000                
*                                      LENGTH /REQ GRTR AVAIL/        M 03900000                
* AVAILABLE LENGTH ALREADY IN PARM LIST                               M 03910000                
       SPACE                                                            03920000                
* USE REQUESTED LENGTH                                                M 03930000                
       SPACE                                                            03940000                
       MVC   TRL+TLTOL(2),PLOUTL(,XR1) MOVE REQ LENGTH TO TRN/MOVE LSTM 03950000                
       J     CMSLSW                    JUMP TO TYPEWRITER SWITCH      M 03960000                
       SPACE                                                            03970000                
CMTYSW EQU   *                                                        M 03980000                
       SPACE                                                            03990000                
       SBN   PL$RTC(,XR1),RCXDTR       SET DATA TRUNCATED RETURN CODE M 04000000                
       SPACE                                                            04010000                
*  TYPEWRITER SWITCHES                                                M 04020000                
* IF ON /NO JUMP/ MOVE CONTROL CHARACTERS TO END OF LINE              M 04030000                
*  OR START OF LINE AS APPROPRIATE                                    M 04040000                
* IF OFF /JUMP / JUMP AROUND ADDING OF CONTROL CHAR                   M 04050000                
CMSLSW EQU   *                         START OF LINE SWITCH           M 04060000                
       JC    CMELSW,X'00'              IF ON JUMP TO END OF LINE SW.  M 04070000                
       SPACE                                                            04080000                
* IF HERE - ADD CONTROL CHARS TO START OF LINE                        M 04090000                
       SPACE                                                            04100000                
       L     TRL+TLTOA,XR1             POINT XR1 AT TARGET ADDR       M 04110000                
       B     CMCRID                    BRANCH TO MOVE CARRIAGE RETURN M 04120000                
*                                      AND IDLE CHARACTERS            M 04130000                
       SPACE                                                            04140000                
*      DETERINE WHETHER FIRST CHARACTER IS TO BE CARRIAGE RETURN OR   M 04150000                
*      IDLE CHARACTER.                                                M 04160000                
       SPACE                                                            04170000                
       TBN   CMTCHR,TUBNID             ARE IDLES NEEDED               M 04180000                
       JF    CMADDT                    JUMP IF IDLES NOT NEEDED       M 04190000                
       MVI   0(,XR1),CMIDLE            PLUG IDLE INTO FIRST POSITION  M 04200000                
       SPACE                                                            04210000                
CMADDT EQU   *                         ADD TO SIZE TO TRANSLATE/MOVE  M 04220000                
       ALC   TRL+TLTOA(2),CMTYPZ       ADD # CHARS TO TARGET ADDR IN  M 04230000                
*                                      TRANSLATE/MOVE LIST            M 04240000                
       SBF   CMSLSW+1,CMASK            SET SWITCH TO JUMP             M 04250000                
       SPACE                                                            04260000                
* SWITCH TO DETERMINE WHETHER TO ADD END OF LINE CONTROL CHARS OR NOT M 04270000                
* DETERMINE WHETHER TO ADD                                            M 04280000                
       SPACE                                                            04290000                
       SPACE                                                            04300000                
CMELSW EQU   *                         END OF LINE SWITCH             M 04310000                
       JC    CMTSTR,X'00'              IF ON-JUMP TO TRANSLATE OR MOVEM 04320000                
       SPACE                                                            04330000                
       L     TRL+TLTOA,XR1             POINT XR1 AT 'TO' ADDR         M 04340000                
       A     TRL+TLTOL,XR1             ADD LENGTH OF MOVE SO XR1 IS   M 04350000                
*                                      AT 1ST BYTE PAST DATA IN LINE BF 04360000                
       SPACE                                                            04370000                
       B     CMCRID                    BRANCH TO ADD CR AND IDLE CHARSM 04380000                
       SPACE                                                            04390000                
* TEST FOR TRANSLATE OR STRAIGHT MOVE                                 M 04400000                
       SPACE                                                            04410000                
CMTSTR EQU   *                         TEST FOR TRANSLATE             M 04420000                
       SPACE                                                            04430000                
       SBF   CMTCHR,TUBNID             SET OFF INDICATION IDLES NEEDEDM 04440000                
       SBF   CMELSW+1,CMASK            SET SWITCH TO JUMP             M 04450000                
       SPACE                                                            04460000                
* FIRST ADD DATA LENGTH TO DTF LENGTH WHICH NOW SITS AT THE NUMBER    M 04470000                
* OF TYPEWRITER CONTROL CHARACTERS NEEDED IF ANY                      M 04480000                
       SPACE                                                            04490000                
       ALC   $MDCRL(,XR2),TRL+TLTOL(1) ADD DATA LENGTH TO DTF         M 04500000                
       L     CMSPL,XR1                 POINT XR1 AT PARM LIST         M 04510000                
       SPACE                                                            04520000                
       AIF   (&NMOVE).M5300                                             04530000                
* TEST TRANSLATE BIT                                                 VM 04540000                
* FOR SYSTEM ALWAYS TRANSLATE                                        VM 04550000                
       SPACE                                                            04560000                
       TBN   SAVTA1,TASTRN             DO WE TRANSLATE               VM 04570000                
       TBF   PLOPM(,XR1),OPREQR        IS IT USER REQUEST            VM 04580000                
       JT    CMMOVE                    JUMP IF NO TRANSLATE          VM 04590000                
       SPACE                                                            04600000                
.M5300 ANOP                                                             04610000                
*  TRANSLATE DATA FROM REQUESTER RECORD AREA TO LINE BUFFER           M 04620000                
       SPACE                                                            04630000                
       LA    TRL,XR1                   POINT XR1 AT TRANSLATE TABLE   M 04640000                
       MVC   CMTWR(1),LCBELC(,XR2)     MOVE TRANS TRANSIENT ID        M 04650000                
       B     $CC4PI                    BRANCH TO CALL IN TRANSIENT    M 04660000                
CMTWR  DC    AL1(0)                    TRANSLATE TRANSIENT ID         M 04670000                
       SPACE                                                            04680000                
* XR1 NOW POINTS TO TRANSLATE TABLE AND NOT PARAMETER LIST            M 04690000                
* PLUG TRANSLATE RETURN CODE INTO RETURN CODE WORK AREA               M 04700000                
       SPACE                                                            04710000                
       TBN   TLRTC(,XR1),TLERR         WAS THERE ERROR IN TRANSLATION M 04720000                
       L     CMSPL,XR1                 POINT XR1 AT PARM LIST         M 04730000                
       JF    CMDOWR                    JUMP IF NO ERROR               M 04740000                
       SPACE                                                            04750000                
* HAD TRANSLATE ERROR - CALL IN TRANSIENT TO HANDLE                   M 04760000                
       SPACE                                                            04770000                
       B     $CC4PI                    BRANCH TO BRING IN TRANSINET   M 04780000                
       DC    AL1(CC4WR)                TRANLSATE ERROR TRANSIENT ID   M 04790000                
       SPACE                                                            04800000                
       J     CMRQBF                    JUMP                           M 04810000                
       SPACE                                                            04820000                
       AIF   (&NMOVE).M5400                                             04830000                
* MOVE DATA WITHOUT TRANSLATE FROM REQUESTER RECORD AREA TO LINE BFR.VM 04840000                
       SPACE                                                            04850000                
CMMOVE EQU   *                         MOVE DATA TO LINE BUFFER      VM 04860000                
       LA    MVL,XR2                   POINT XR2 AT MOVE PARM LIST   VM 04870000                
       B     $CC4MV                    BR TO MOVE ROUTINE            VM 04880000                
       SPACE                                                            04890000                
.M5400 ANOP                                                             04900000                
CMDOWR EQU   *                         START THE WRITE                M 04910000                
* BOTH READ AND WRITE USE SAME LOGIC SO FALL THROUGH TO READ START    M 04920000                
* OPERATION CODE                                                      M 04930000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT THE TUB           M 04940000                
       MVC   TUBCHR(1,XR2),CMTCHR      RESET TERMINAL CHARACTERISTICS M 04950000                
       L     CMSDTF,XR2                POINT XR2 AT DTF               M 04960000                
       TITLE '$E085/CMSIO/CMREAD----START-AN-MLTA-IO-OPERATION'         04970000                
********************************************************************* M 04980000                
*      MLTA IOCS START I/O                                          * M 04990000                
********************************************************************* M 05000000                
       SPACE                                                            05010000                
* THIS SEGMENT STARTS ALL MLTA I/O  -  ALSO                           M 05020000                
* THIS SEGMENT IS THE READ OPERATION SCHEDULER                        M 05030000                
*  THE OP CODE IS PLUGGED IN THE DTF - BEING FORMED BASED ON          M 05040000                
* THE PREVIOUS OPERATIONS ON THE LINE                                 M 05050000                
       SPACE                                                            05060000                
* XR1 POINTS TO THE REQUEST WHICH IS BEING SCHEDULED                  M 05070000                
       SPACE                                                            05080000                
CMREAD EQU   *                         READ SCHEDULER                 M 05090000                
CMSIO  EQU   *                         START MLTA IO OPERATION        M 05100000                
       B     CMFORM                    BR TO FORM MLTA OP CODE        M 05110000                
       B     MLTIO1                    BR TO IOCS                     M 05120000                
       B     $CC4TT                    BRANCH TO TRACE ROUTINE        M 05130000                
       DC    AL1(TTMSIO)               TRACE ID FOR MLTA START IO     M 05140000                
       CLI   $MDOSC(,XR2),CMZERO       WAS START SUCCESSFUL           M 05150000                
       JE    CMPAII                    JUMP IF GOOD START             M 05160000                
       SPACE                                                            05170000                
* BRING IN TRANSIENT TO ANALYZE THE NON-ZERO MLTA START CODE          M 05180000                
       SPACE                                                            05190000                
       B     $CC4PI                    BR TO BRING IN TRANSIENT       M 05200000                
       DC    AL1(CC4SC)                                               M 05210000                
       J     CMPAII                    JUMP TO POST REQUESTOR         M 05220000                
.M1300 ANOP                                                             05230000                
       MEND                                                             05240000