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

⟦fa16403b3⟧ s3xseg

    Length: 20320 (0x4f60)
    Types: s3xseg
    Names: »S$E110«

Derivation

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

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00020000                
.*                                                                    * 00030000                
.*   TITLE:  $E110 - NEW REQUEST SET-UP ROUTINE                       * 00040000                
.*                                                                    * 00050000                
.*   STATUS:  V2 M0                                                   * 00060000                
.*                                                                    * 00070000                
.*   FUNCTION:  DETERMINE TYPE OF OPERATION REQUESTED.                * 00080000                
.*              GETMAIN FOR PL (IF REQUIRED),GETMAIN                  * 00090000                
.*              FOR RECORD AREA (IF REQUIRED),QUEUE                   * 00100000                
.*              PL ON CLB FOR THE REQUESTED LINE.                     * 00110000                
.*              IF LINE IS BUSY, THEN DETERMINE WHETHER               * 00120000                
.*                 TO ACCEPT OR REJECT THIS NEW REQUEST.              * 00130000                
.*              EXIT TO POST THIS REQUEST IF REJECTED.                * 00140000                
.*              EXIT TO PERFORM REQUESTED OP OR TO STOP               * 00150000                
.*                 POLLING SO OP MAY BE PERFORMED.                    * 00160000                
.*                                                                    * 00170000                
.*   INPUT:  XR1 --> NEW REQUEST PARM LIST                            * 00180000                
.*           XR2 --> PREVIOUS PL                                      * 00190000                
.*                                                                    * 00200000                
.*   OUTPUT:  PARM LIST READY TO PERFORM REQUESTED OP                 * 00210000                
.*                                                                    * 00220000                
.*   EXTERNAL REFERENCES:  CSCLBQ - SUBROUTINE TO DO GETMAINS         * 00230000                
.*                         TRANSIENTS -                               * 00240000                
.*                         $CC4US - STOP INVITE                       * 00250000                
.*                         $CC4UD - PUT TO TUB IN ERP                 * 00260000                
.*                                                                    * 00270000                
.*   EXITS:  TO $E100 - CHECK FOR MORE WORK                           * 00280000                
.*              $E140 - SCHEDULE THIS LINE                            * 00290000                
.*                                                                    * 00300000                
.********************************************************************** 00310000                
.*     GBLB  &NDF          * NO * DFF SUPPORT                         * 00330000                
.*     GBLB  &NPBY         * NO * BUSY PRINTER SUPPORT (328X PRINTERS)* 00340000                
.*     GBLB  &NCPOR        * NO * BSCC PORTLINE SUPPORT               * 00345000                
.********************************************************************** 00350000                
.*                                                                    * 00352000                
.*     GBLB  &CSIO         0=PORT SUPPORTED,1=PORT NOT SUPPORTED      * 00354000                
.*                                                                    * 00356000                
.********************************************************************** 00358000                
       $E110                                                            00360000                
       GBLB  &NDF                                                       00370000                
       GBLB  &CSIO,&NPBY,&NCPOR                                         00375000                
       TEXT                                                             00380000                
       TITLE '$ E 1 1 0   N E W  R E Q U E S T  R O U T I N E '         00390000                
* DEQUEUE PL FROM @CSNRQ AND DECREMENT NEW REQUEST COUNT                00400000                
       SPACE 1                                                          00410000                
CSNWRQ EQU   *                                                          00420000                
       AIF   (&CSIO EQ '1').PT130                                       00420400                
       AGO   .PT140                                                     00420800                
.PT130 ANOP                                                             00421200                
       AIF   (&NCPOR).PT150                                             00421600                
.PT140 ANOP                                                             00422000                
       SPACE 1                                                          00422400                
******************************************************************* @14 00422800                
*******                                                                 00423200                
       ST    CSSPL,XR2                 SAVE REGISTER 2 TO RESTORE       00423600                
       L     PLTUBA(,PL),XR2           XR2 --> TUB (PORT)               00424000                
       TBN   TUBAT2(,XR2),TUBOWN       DOES THIS TUB OWN THE LINE ?     00424400                
       TBN   TUBPHY(,XR2),TUBAPT       *AND* IS THIS A PORTLINE DEVICE? 00424800                
       TBF   PLOPM(,PL),OPSTOP         *AND* IS THIS NOT A STOP INVITE? 00425200                
       BT    CSNMOR                    YES - THE NEW REQUEST CANNOT BE  00425600                
*                                      HANDLED YET, CHECK FOR MORE WORK 00426000                
       L     CSSPL,XR2                 RESTORE REGISTER 2 AND CONTINUE  00426400                
*******                                                                 00426800                
******************************************************************* @14 00427200                
       SPACE 1                                                          00427600                
.PT150 ANOP                                                             00428000                
       MVC   PLCHN(2,XR2),PLCHN(,PL)   DEQUEUE PL FROM REQ QUEUE        00430000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      00440000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                      00450000                
       SLC   CLBNW#(1,CLB),X$0001      DECREMENT NEW REQUEST COUNT      00460000                
       SPACE 2                                                          00470000                
* PREPARE THE PL FOR SCHEDULING ON THE BSCC LINE                        00480000                
CSPREP EQU   *                                                          00490000                
       SLC   PLCHN(2,PL),PLCHN(,PL)    ZIP THE CHAIN POINTER            00500000                
       SLC   PL$OPC(2,PL),PL$OPC(,PL)  ZIP PL$OPM ,PL$OPC               00510000                
       CLI   PLOPC(,PL),OPCOPY+OPPUT   IS THIS A COPY OPERATION ?       00520000                
       JE    CSNCPY                    YES - LEAVE PL$RTC, THIS WILL    00530000                
*                                      BE THE 'FROM' TERMINAL ADDRESS   00540000                
       SLC   PL$RTC(2,PL),PL$RTC(,PL)  ZIP PL$RTC                       00550000                
CSNCPY EQU   *                                                          00560000                
       ST    CSSPL,PL                  SAVE PL ADDRESS                  00570000                
       ST    CSNWPL,PL                 SAVE PL @ FOR POSTING            00580000                
       ST    CSSCLB,CLB                SAVE CLB ADDRESS                 00590000                
       SBN   CSSWIT,CSNRIP             SET IND 'NEW REQ IN PROCESS'     00600000                
       SPACE 2                                                          00610000                
* IF THIS IS A GET TYPE OP, THEN SET OFF CLEAR IND IN TUB               00620000                
       SPACE 1                                                          00630000                
       TBN   PLOPC(,PL),OPGET          GET TYPE OP                      00640000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      00650000                
       JF    CSNOTG                    NO - JUMP                        00660000                
       SBF   TUBSCS(,TUB),TUBCLR       SET OFF CLEAR INDICATOR          00670000                
       SPACE 1                                                          00680000                
       AIF   (&NPBY).BP100             BUSY PRINTER SUPPORT?            00680600                
*                                      ------START------------------@07 00681200                
       TBN   TUBAT4(,TUB),TUBBSY       IS THIS A BUSY PRINTER TUB?      00681800                
       JF    CSNBY                     NO - JUMP.                       00682400                
       L     TUBDTF(,TUB),XR2          XR2 --> CLB.                     00683000                
       TBN   CLBCNT(,XR2),ALLBIT       CONTINUOUS POLL?                 00683600                
       MVC   CLBCNT-1(1,XR2),CLBCNT(,XR2) SAVE LOOP COUNT.              00684200                
       SBN   CLBBA3(,XR2),BA3BYP       INDICATE POLLING BUSY PRINTER.   00684800                
       JF    CSNCHG                    NOT CONTINUOUS - JUMP.           00685400                
       MVI   CLBCNT(,XR2),I0002        SET LOOP COUNT TO 2              00686000                
CSNCHG EQU   *                         * LOCAL                          00686600                
       L     PLTUBA(,PL),TUB           FIND THE TUB AGAIN.              00687200                
CSNBY  EQU   *                         * LOCAL                          00687800                
*                                      -------END-------------------@07 00688400                
.BP100 ANOP                            *                                00689000                
* CHECK FOR STOP INVITE/PURGE REQUEST - IF SO, CALL TRANSIENT $CC4US    00690000                
       SPACE 1                                                          00700000                
CSNOTG EQU   *                                                          00710000                
       MNN   PL$OPM(,PL),PLOPC(,PL)    SAVE NUM PORTION OF OP CODE      00720000                
       TBN   PLOPM(,PL),OPSTOP         STOP INVITE REQUEST?             00730000                
       JF    CSNSTP                    NO - JUMP                        00740000                
       SBF   CSSWIT,CSNRIP             SET OFF NEW REQUEST IND          00750000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       00760000                
       B     CC4TA                     CALL TRANSIENT AREA HANDLER      00770000                
       DC    AL1(CC4US)                TRANSIENT ID                     00780000                
       SPACE 1                                                          00790000                
* TRANSIENT RETURNS ON ARR IF STOP SUCCESSFUL - ARR+4 IF MUST           00800000                
*    STOP THE BSCC LINE (STOP POLL OR ABORT)                            00810000                
       SPACE 1                                                          00820000                
       B     CSNMOR                    CHECK FOR MORE WORK              00830000                
       SPACE 1                                                          00840000                
       B     CSCHED                    GO ATTEMPT TO STOP POLL/ABORT    00850000                
       SPACE 2                                                          00860000                
CSNSTP EQU   *                         NOT A STOP REQUEST               00870000                
       SPACE 1                                                          00880000                
* IF OP IS A PUT-THEN-GET, HANDLE THE PUT PORTION FIRST                 00890000                
       SPACE 1                                                          00900000                
       TBN   PLOPC(,PL),OPPUT+OPGET    PUT-THEN-GET?                    00910000                
       JF    CSNPTG                    NO - JUMP                        00920000                
       SBF   PL$OPM(,PL),OPGET         SET OFF THE GET IND              00930000                
       SPACE 2                                                          00940000                
* CHECK FOR A PUT TO A TERMINAL IN ERP - CALL $CC4UD IF SO              00950000                
CSNPTG EQU   *                                                          00960000                
       SPACE 1                                                          00970000                
       TBN   TUBAT3(,TUB),TUBERP       TUB IN ERP AND -                 00980000                
       TBN   PL$OPM(,PL),OPPUT         THIS A PUT?                      00990000                
       JF    CSNIRP                    NO - JUMP                        01000000                
       SPACE 1                                                          01010000                
* IF THIS IS A WRAP TEST - ALLOW IT TO GO THROUGH                       01020000                
       TBN   PLOPM(,PL),OPOLT          ONLINE TEST AND                  01030000                
       CLC   PLLEN+1(2,PL),DEC99       WRAP TEST ?                      01040000                
       JC    CSNIRP,TRUAEQ             YES - JUMP                       01050000                
       SPACE 1                                                          01060000                
* CALL XIENT TO HANDLE PUT TO TERM IN ERP                               01070000                
       B     CC4TA                     CALL TRANSIENT AREA HANDLER      01080000                
       DC    AL1(CC4UD)                TRANSIENT ID                     01090000                
* RETURN HERE TO CHECK FOR MORE WORK FOR CS                             01100000                
       B     CSPSTN                    GO POST AND CHECK FOR MORE WORK  01110000                
* RETURN HERE IF OP WAS ALSO A GET                                      01120000                
       SPACE 2                                                          01130000                
CSNIRP EQU   *                         *                                01140000                
       AIF   (&CSIO EQ '1').PT010                                       01140900                
       AGO   .PT020                                                     01141000                
.PT010 ANOP                                                             01141100                
       AIF   (&NCPOR).PT030                                             01141200                
.PT020 ANOP                                                             01141300                
       SPACE 1                                                          01141600                
******************************************************************* @14 01142400                
*******                                                                 01143200                
       TBN   TUBPHY(,TUB),TUBAPT       PORTLINE DEVICE                  01144000                
       TBN   PLOPC(,PL),OPPNW          PUT-NO-WAIT                      01144800                
       JT    CSNWAT                    MAKE OP A WAIT OP                01145600                
*******                                                                 01146400                
******************************************************************* @14 01146800                
       SPACE 1                                                          01147200                
.PT030 ANOP                                                             01148800                
       TBN   PLOPC(,PL),OPPNW          PUT-NO-WAIT REQUEST AND          01150000                
       TBF   PLOPM(,PL),OP$SYS         A USER OP AND                    01160000                
       CLI   PLOPC(,PL),OPMSG          NOT MSG MODE?                    01170000                
       JC    CSSVAT,FLSNLO             NO - JUMP                        01180000                
CSNWAT EQU   *                         *                                01185000                
       SBF   PL$OPM(,PL),OPNOW         YES - MAKE IT A WAIT OP          01190000                
       SPACE 1                                                          01200000                
* SAVE THIS TUB'S ATTRIBUTES AND LENGTHS IN THE CLB                     01210000                
CSSVAT EQU   *                                                          01220000                
       B     CSTASV                    SAVE THIS TUB'S ATTRIBUTES       01230000                
       MNN   PL$OPC(,PL),PL$OPM(,PL)   SAVE OP (INTERNAL)               01240000                
       AIF   (&NDF).F0100              NO DFF SUPPORT.                  01250000                
* IF THIS IS A DFF PUT REQUEST - HANDLE IT HERE                         01260000                
       SPACE 2                                                          01270000                
       TBN   TUBTA1(,TUB),TASDFF       DFF TUB AND ------------------|  01280000                
       TBN   PL$OPM(,PL),OPPUT         A PUT OP AND -----------------|  01290000                
       TBF   PLOPM(,PL),OP$SYS         A USER REQUEST AND -----------|  01300000                
       TBF   PLRECA-1(,PL),ALLBIT      A GETMAIN REQUIRED? ----------|  01310000                
       JF    CSREJC                    NO - CHECK IF OP SHOULD BE <--|  01320000                
*                                      REJECTED                         01330000                
       SPACE 2                                                          01340000                
* DO A GETMAIN FOR DFF AND PUT PL ON DFF'S QUEUE                        01350000                
       SBF   CSSWIT,CSNRIP             SET OFF NEW REQ SWITCH           01360000                
       CCP   MASK,PMR                  MASK INTERRUPTS                  01370000                
       SPACE 1                                                          01370500                
       L     TUBDTF(,TUB),CLB          LOCATE BSCC CLB              @13 01371000                
       TBN   CLBATA(,CLB),CLBDFF       Q-DFF BUFFER SUPPORTED?      @13 01371500                
       JF    CSGMMV                    NO-BRANCH                    @13 01372000                
       SPACE 1                                                          01372500                
CSGDFF TBN   CLBATA(,CLB),CLBDFB       Q-DFF BUFFER BUSY?           @13 01373000                
       JF    CSGDF1                    NO. CONTINUE                 @13 01373500                
       SPACE 1                                                          01374000                
       SBN   PL$OPM(,PL),OPGETQ        SET GET MAIN REQUIRED        @13 01374500                
       J     CSREJC                    PUT PL ON WAITING QUEUE      @13 01375000                
       SPACE 1                                                          01375500                
CSGDF1 SBN   CLBATA(,CLB),CLBDFB       MAKE DFF BUFFER BUSY         @13 01376000                
       MVC   PLRECA(,PL),@LOBND(2)     BUILD DFF BUFFER...          @13 01376500                
       ALC   PLRECA(,PL),RND2K(2)      ...START...                  @13 01377000                
       SBF   PLRECA(,PL),ALLBIT        ....ADDRESS...               @13 01377500                
       SBF   PLRECA-1(,PL),BND2K       .....IN PLRECA.              @13 01378000                
       J     CSGMC1                    POST DFF                     @13 01378500                
       SPACE 1                                                          01379000                
CSGMMV EQU   *                         *                                01380000                
       MVC   GMLIST+GMSIZE(2),PLOUTL(,PL) PUT SIZE IN GM PARM LIST      01390000                
       ALC   GMLIST+GMSIZE(2),X$0004   ADD 4 FOR GM PARM LIST           01400000                
       CLC   #GMS+1,GMLIST+GMSIZE(2)   ENOUGH TP BUFF?                  01410000                
       JNL   CSGMCR                    YES - DO THE GETMAIN             01420000                
* GETMAIN WILL FAIL-DECREMENT LENGTH UNTIL IT WILL WORK OR UNTIL <256   01430000                
       SBF   PLOUTL(,PL),ALLBIT        MAKE LENGTH A 256 INCREMENT      01440000                
       TBF   #GMS+1,FC                 #GMS = NNN4 OR GREATER?          01450000                
       JF    CSGMCK                    YES - SEE IF GM WILL WORK        01460000                
CSGMAG EQU   *                         *                                01470000                
       SLC   PLOUTL-1(1,PL),X$0001     DECREMENT BY 256                 01480000                
       JL    CSROUT                    OUTL LESS THAN 256 - JUMP        01490000                
CSGMCK EQU   *                         *                                01500000                
       CLI   PLOUTL-1(,PL),HEX512      OUTL LESS THAN 512?              01510000                
       JL    CSROUT                    YES - JUMP                       01520000                
       CLC   #GMS+1,PLOUTL(2,PL)       ENOUGH TP BUFF NOW?              01530000                
       BNH   CSGMAG                    NO - GO DECREMENT AGAIN          01540000                
       B     CSGMMV                    YES - DO THE GETMAIN             01550000                
       SPACE 2                                                          01560000                
* CAN'T GET TP BUFFER - MARK PL AS NEEDING CORE AND PUT IT ON CLBWCQ    01570000                
CSROUT EQU   *                                                          01580000                
       MVC   PLOUTL(2,PL),X0200        SET LENGTH TO 512                01590000                
CSROU1 B     CSWCRQ                    GO PUT PL ON WAITING QUEUE   @13 01600000                
       CCP   UNMASK,PMR                UNMASK INTERRUPTS                01610000                
       B     CSNMOR                    CHECK FOR MORE WORK              01620000                
       SPACE 2                                                          01630000                
CSGMCR EQU   *                         ***                              01640000                
       SBN   $FLGC,#PUTTP              SET IND 'GM FROM ANYWHERE'       01650000                
       B     CSGMRQ                    GO DO THE GM                     01660000                
       MVC   PLRECA(2,PL),GMADDR(,XR2) PUT OBTAINED AREA IN PL          01670000                
       ALC   PLRECA(2,PL),X$0004       BUMP TO TEXT AREA                01680000                
CSGMC1 B     CSDFFQ                    PUT PL ON DFF Q AND POST DFFF@13 01690000                
       SPACE 2                                                          01700000                
       B     CSNMOR                    GO CHECK FOR MORE WORK           01710000                
.F0100 ANOP                            *                                01720000                
       EJECT                                                            01730000                
* IF LINE IS ACTIVE - SEE IF THIS OP SHOULD BE REJECTED                 01740000                
       SPACE 1                                                          01750000                
CSREJC EQU   *                                                          01760000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                      01770000                
       AIF   (&CSIO EQ '1').PT040                                       01770900                
       AGO   .PT050                                                     01771000                
.PT040 ANOP                                                             01771100                
       AIF   (&NCPOR).PT060                                             01771200                
.PT050 ANOP                                                             01771300                
       SPACE 1                                                          01771800                
******************************************************************* @14 01772200                
*******                                                                 01773600                
       L     PLTUBA(,PL),XR1           XR1 --> TUB                      01774000                
       TBN   TUBPHY(,XR1),TUBAPT       PORTLINE DEVICE ?                01774500                
       L     CSSPL,PL                  XR1 --> CURRENT PARAMETER LIST   01774900                
       BT    CSQREQ                    YES,SKIP REJECT TESTS            01775400                
*******                                                                 01776300                
******************************************************************* @14 01776700                
       SPACE 1                                                          01778100                
.PT060 ANOP                                                             01779000                
       TBN   CLBBA2(,CLB),BA2ACT       LINE ACTIVE NOW?                 01780000                
       BF    CSQREQ                    NO - PUT PL ON THE QUEUE         01790000                
       SPACE 1                         *                                01800000                
       TBN   CLBBA2(,CLB),BA2RCI       POLLING                          01810000                
       BT    CSQREQ                    YES - PUT PL ON THE QUEUE        01820000                
       SPACE 1                                                          01830000                
       L     PLTUBA(,PL),XR1           XR1 --> TUB                      01840000                
       CLC   TUBTCB(,XR1),CLBOWN(2,CLB) THIS TASK OWN THE LINE?         01850000                
       L     CSSPL,PL                  XR1 --> PL                       01860000                
       JNE   CSQREQ                    NO - PUT PL ON THE QUEUE         01870000                
       SPACE 1                                                          01880000                
       TBN   PL$OPM(,PL),OPPNW         PUT-NO-WAIT? (NOTE THAT RECORD   01890000                
*                                      OR BLOCK PUTS ARE ALWAYS PUT-    01900000                
*                                      WAIT TYPE OPS)                   01910000                
       JT    CSQREQ                    YES - PUT PL ON THE QUEUE        01920000                
       SPACE 1                                                          01930000                
       L     CLBPL@(,CLB),PL           XR1 --> CURRENT PL ON THE LINE   01940000                
       TBN   PLOPC(,PL),OPPNW+OPMSG    PUT-NO-WAIT AND                  01950000                
       TBN   PL$OPC(,PL),OPNOW         STILL A NO-WAIT?                 01960000                
       TBF   CLBBA1(,CLB),BA1NTQ       AND PL STILL IN THE QUEUE?       01970000                
       JT    CSQREQ                    YES - PUT PL ON THE QUEUE        01980000                
       SPACE 1                                                          01990000                
       TBF   PL$OPC(,PL),OPRFSH        CURRENT OP A CLEAR MSG OR        02000000                
       TBF   PLOPM(,PL),OP$SYS         A SYSTEM OP?                     02010000                
       JF    CSQREQ                    YES - PUT PL ON THE QUEUE        02020000                
       SPACE 1                                                          02030000                
       TBN   PL$OPC(,PL),OPINV         INVITE AND                       02040000                
       TBN   CLBTBS-4(,CLB),TASMSG     MSG MODE?                        02050000                
       JT    CSQREQ                    YES - PUT PL ON THE QUEUE        02060000                
       SPACE 1                                                          02070000                
       MNN   CSTOPT+1,CLBOPL(,CLB)     PUT CURRENT OP IN TBN INST       02080000                
       SBF   CSTOPT+1,OPNOW            SET OFF NO-WAIT BIT              02090000                
       L     CSSPL,PL                  XR1 --> PL                       02100000                
       L     PLTUBA(,PL),TUB           XR2 --> TUB                      02110000                
       SPACE 1                                                          02120000                
       TBN   TUBAT2(,TUB),TUBOWN       THIS TUB OWN THE LINE?           02130000                
       L     TUBLCB(,TUB),CLB          XR2 --> CLB                      02140000                
       TBN   CLBBA1(,CLB),BA1NTQ       PARM LIST NOT QUEUED ?           02150000                
CSTOPT TBN   PL$OPM(,PL),#             SAME TYPE OP AS LAST OP AND      02160000                
       JF    CSREJP                    NO - REJECT THIS PL              02170000                
       EJECT                                                            02180000                
*---------------------------------------------------------------------* 02190000                
*      ANOTHER BLOCK OR RECORD OPERATION TO THE OWNED TERMINAL.       * 02200000                
*  --> IF A GET - THEN GETMAIN FOR A DATA AREA FROM TP BUFFER.        * 02210000                
*  --> IF A PUT - THEN IT MUST BE A WAIT TYPE OP ( THIS IS ENSURED      02220000                
*                 BY CS AT LABEL CSNIRP IN THIS MACRO) - A GETMAIN      02230000                
*                 WILL BE DONE AND DATA MOVED TO THE TP BUFFER.         02240000                
*  --> THE LINE WILL THEN BE STARTED.                                   02250000                
*---------------------------------------------------------------------* 02260000                
       SPACE 1                                                          02270000                
       B     CSCLBQ                    GO QUEUE PL ON CLBPLQ            02280000                
       SBF   CLBBA1(,CLB),BA1NTQ+BA1INT SET OFF 'NOT IN QUEUE' AND      02290000                
*                                       'INTERRUPT WITH NO PL'          02300000                
       ST    CLBPL@(,CLB),PL           SAVE NEW PL ADDRESS              02310000                
       ST    CSSPL,PL                  SAVE NEW PL ADDRESS              02320000                
       SPACE 1                                                          02330000                
       TBN   PL$OPM(,PL),OPGET         INPUT OP ?                       02340000                
       JF    CSNGET                    NO - JUMP                        02350000                
       SPACE 1                                                          02360000                
* HAVE AN INPUT OP - GETMAIN FOR INPUT TEXT AND GO START THE LINE       02370000                
       SPACE 1                                                          02380000                
       MVC   GMLIST+GMSIZE,PLINL(2,PL) PUT SIZE TO GETMAIN FOR IN       02390000                
       ALC   GMLIST+GMSIZE,X$0004(2)   ADD 4 FOR GM PARM LIST           02400000                
       B     CSGMRQ                    GO DO THE GETMAIN                02410000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 02420000                
       L     CSSCLB,CLB                XR2--> CLB                       02430000                
       JNOL  CSNGMW                    JUMP IF GETMAIN WORKED           02440000                
       SPACE 1                                                          02450000                
* GETMAIN FAILED - MARK THIS PL AS WAITING FOR TP BUFFER                02460000                
* ALSO COME HERE FROM GETMAIN FAIL FOR THE PUT (BELOW)                  02470000                
       SPACE 1                                                          02480000                
CSNGM  EQU   *                         *                                02490000                
       SBN   CLBBA1(,CLB),BA1NTQ       SET 'REMOVED FROM THE QUEUE'     02500000                
       B     CSDEQ                     GO DEQUEUE FROM CLBPLQ           02510000                
       B     CSWCRQ                    PUT THIS PL ON CLBWCQ            02520000                
       B     CSNMOR                    GO CHECK FOR MORE WORK           02530000                
       SPACE 1                                                          02540000                
CSNGMW EQU   *                         *                                02550000                
       MVC   CLBIBA(2,CLB),GMLIST+GMADDR PUT RETURNED ADDRESS IN CLB    02560000                
       ALC   CLBIBA(2,CLB),X$0004      BUMP TO TEXT AREA                02570000                
       MVC   CLBIBL(2,CLB),PLINL(,PL)  PUT LENGTH IN CLB                02580000                
       B     CSCHED                    GO START THIS LINE               02590000                
       SPACE 1                                                          02600000                
* HAVE A PUT (RECORD OR BLOCK) - GETMAIN FOR TEXT AND MOVE IT TO        02610000                
*                                TP BUFFER                              02620000                
       SPACE 1                                                          02630000                
CSNGET EQU   *                         *                                02640000                
       AIF   (&NDF).F0200              NO DFF SUPPORT.                  02650000                
       L     PLTUBA(,PL),TUB           XR2--> TUB                       02660000                
       TBN   TUBTA1(,TUB),TASDFF       DFF TERMINAL ?                   02670000                
       L     TUBLCB(,TUB),CLB          XR2--> CLB                       02680000                
       BT    CSCHED                    YES - NO GM REQUIRED GO START    02690000                
*                                      THIS LINE                        02700000                
.F0200 ANOP                            *                                02710000                
       MVC   GMLIST+GMSIZE,PLOUTL(2,PL) PUT REQUESTED LENGTH IN GM PL   02720000                
       ALC   GMLIST+GMSIZE(2),X$0004   ADD 4 FOR GM PARM LIST           02730000                
       B     CSGMRQ                    GO DO THE GETMAIN                02740000                
       CCP   UNMASK,PMR                ALLOW INTERRUPTS                 02750000                
       L     CSSCLB,CLB                XR2--> CLB                       02760000                
       BOL   CSNGM                     BRANCH IF GETMAIN FAILED         02770000                
       SPACE 1                                                          02780000                
* GETMAIN WORKED - MOVE DATA TO THE TP BUFFER                           02790000                
       SPACE 1                                                          02800000                
       B     CSQMOV                    GO MOVE DATA TO TP BUFFER        02810000                
       TBF   PLOPC(,PL),OPMSG          RECORD MODE OPERATION ?          02820000                
       JF    CSNREC                    NO - JUMP                        02830000                
       SPACE 1                                                          02840000                
* RECORD MODE OPERATION - IF PLOUTL IS GREATER THAN TERMINAL'S          02850000                
*   RECORD LENGTH THEN TRUNCATE THE DATA                                02860000                
       SPACE 1                                                          02870000                
       CLC   PLOUTL(2,PL),CLBTBS-2(,CLB) PLOUTL GREATER THAN REC LNTH?  02880000                
       JNH   CSNRCH                    NO - GO SCHEDULE THIS OP         02890000                
       MVC   CLBREL(2,CLB),CLBTBS-2(,CLB) MAKE REC LNTH TUB REC LNTH    02900000                
CSNDTR EQU   *                         *                                02910000                
       SBN   CLBBA2(,CLB),BA2TRC       SET 'DATA TRUNCATED' IND         02920000                
       MVI   PL$RTC(,PL),RCXDTR        PUT DATA TRUNCATED R.C. IN PL    02930000                
       J     CSNRCH                    GO SCHEDULE THIS OP              02940000                
       SPACE 1                                                          02950000                
*  MSG OR BLOCK MODE OP - IF PLOUTL IS GREATER THAN LINE BLOCK          02960000                
*     LENGTH THEN TRUNCATE THE DATA                                     02970000                
       SPACE 1                                                          02980000                
CSNREC EQU   *                         *                                02990000                
       CLC   PLOUTL(2,PL),CLBTBS(,CLB) GREATER THAN BLOCK LENGTH ?      03000000                
       JNH   CSNRCH                    NO - GO SCHEDULE THIS OP         03010000                
       MVC   CLBREL(2,CLB),CLBTBS(,CLB) MAKE LENGTH THE BLOCK LENGTH    03020000                
       B     CSNDTR                    GO SET'DATA TRUNCATED'           03030000                
CSNRCH EQU   *                         *                                03040000                
       SPACE 1                                                          03050000                
       B     CSCHED                    GO START THIS LINE               03060000                
       SPACE 1                                                          03070000                
* REJECT THIS OP - IT CONFLICTS                                         03080000                
       SPACE 1                                                          03090000                
CSREJP EQU   *                                                          03100000                
       B     CC4TA                     CALL TRANSIENT AREA HANDLER      03110000                
       DC    AL1(CC4UR)                TRANSIENT ID                     03120000                
       SBF   CSSWIT,CSNRIP             SET OFF NEW REQ IN PROCESS       03130000                
       B     CSNMOR                    CHECK FOR MORE WORK              03140000                
       EJECT                                                            03150000                
CSQREQ EQU   *                         *                                03160000                
       L     CSSPL,PL                  XR1 --> PL                       03170000                
       L     CSSCLB,CLB                XR2--> CLB                       03180000                
       B     CSCLBQ                    Q IT, GM, MOVE DATA              03190000                
       AIF   (&CSIO EQ '1').PT070                                       03190300                
       AGO   .PT080                                                     03190340                
.PT070 ANOP                                                             03190380                
       AIF   (&NCPOR).PT090                                             03190420                
.PT080 ANOP                                                             03190460                
       SPACE 1                                                          03190500                
******************************************************************* @14 03190540                
*******                                                                 03190600                
       L     PLTUBA(,PL),XR1           XR1 --> TUB                      03191300                
       TBN   TUBPHY(,XR1),TUBAPT       PORTLINE DEVICE ?                03191500                
       JF    CSQNPT                    NO - CONTINUE                    03191800                
       SBN   CLBBA3(,CLB),BA3POR       SET ON THE PORTLINE BIT          03191850                
       CLI   CLBDEV(,CLB),DEVSIO       IS THIS SIOC ?                   03191900                
       JE    CSQPON                    YES - DON'T SET ON BA3PON        03191950                
       SBN   CLBBA3(,CLB),BA3PON       NO - MUST BE PORTLINE            03192000                
CSQPON EQU   *                                                          03192050                
       CLI   TUBDCH-1(,XR1),NOBIT      DATA ALREADY IN TPBUFF           03192400                
       L     CSSPL,PL                  XR1--> PL                        03192700                
       JE    CSQNPT                    NO                               03193000                
       TBN   PL$OPM(,PL),OPPUT         NEW REQUEST A PUT?               03193300                
       JF    CSQDAT                    NO, GET DATA FROM TPBUFF CHAIN   03193600                
       MVI   PLRTC(,PL),RCXDPD         DATA PENDING RETURN CODE         03193900                
       MVI   PL$RTC(,PL),RCXDPD        DATA PENDING RETURN CODE         03194200                
       J     CSQPFR                    POST PARM LIST OWNER             03194500                
* IF PORT DEVICE AND DATA ALREADY IN TPBUFF,                            03194800                
* GIVE DATA TO USER AND POST HIM                                        03195100                
* IF A USER OPERATION AND THERE IS COMMAND DATA,                        03195400                
* THE COMMAND DATA WILL GO TO THE COMMAND PROCESSOR, THE USER WILL      03195700                
* GET AN 08 RETURN CODE, AND THE PORT WILL BE RELEASED FROM THE USER    03196000                
* ROUTINE CSZUDT WILL DO THESE TESTS                                    03196300                
CSQDAT EQU   *                         *                                03196600                
       B     CSZUDT                    GO TAKE DATA OFF TPBUFF Q        03196900                
CSQPFR EQU   *                         *                                03197200                
       B     CSPSTE                    GO POST AND FREE FOR DATA        03197500                
       B     CSPSTN                    GO POST PARM LIST OWNER          03197800                
CSQNPT EQU   *                         *                                03198100                
*******                                                                 03198400                
******************************************************************* @14 03198500                
       SPACE 1                                                          03198700                
.PT090 ANOP                                                             03199300                
* CSCLBQ RETURNS WITH XR1--> PL, XR2--> CLB                             03200000                
       SPACE 1                                                          03210000                
       TBN   CLBBA2(,CLB),BA2ACT       LINE ACTIVE NOW?                 03220000                
       BF    CSCHED                    NO - GO SCHEDULE THIS OP         03230000                
       TBN   CLBBA2(,CLB),BA2RCI       POLLING?                         03240000                
       BF    CSPSTN                    NO - GO POST THIS OP (NO RETURN) 03250000                
       AIF   (&CSIO EQ '1').PT100                                       03250500                
       AGO   .PT110                                                     03250570                
.PT100 ANOP                                                             03250640                
       AIF   (&NCPOR).PT120                                             03250710                
.PT110 ANOP                                                             03250780                
       SPACE 1                                                          03250850                
******************************************************************* @14 03250920                
*******                                                                 03251000                
* IF PORT DEVICE AND A GET, NO NEED TO STOP POLLING                     03252500                
* IF PORT SYSTEM GET, NEED TO PUT LENGTH IN PARM LIST                   03253000                
       TBN   CLBBA3(,CLB),BA3POR       PORTLINE DEVICE ?                03253500                
       TBN   PL$OPM(,PL),OPGET         GET OP CODE                      03254000                
       JF    CSNNGT                    IF NOT PORT GET, JUMP            03254500                
       TBF   PLOPM(,PL),OP$SYS         SYSTEM OP                        03255000                
       BF    CSHPSI                    YES,GO FILL IN PARM LIST         03255500                
       B     CSPSTN                    GO POST                          03256000                
CSNNGT EQU   *                         *                                03256500                
*******                                                                 03257000                
******************************************************************* @14 03257200                
.PT120 ANOP                                                             03258500                
       SPACE 2                                                          03260000                
* LINE IS ACTIVE WITH A POLL REQUEST - ATTEMPT TO STOP POLL TO PUT      03270000                
*   THIS NEW REQUEST ON THE LIST (IF A GET) OR TO DO IT (IF A PUT)      03280000                
       SPACE 2                                                          03290000                
       TBN   PL$OPM(,PL),OPPUT         NEW REQUEST A PUT?               03300000                
       JF    CSNNPT                    NO - JUMP                        03310000                
       SBN   CLBBA2(,CLB),BA2PUT       SET IND 'PUT PENDING'            03320000                
CSNNPT EQU   *                                                          03330000                
       TBF   CLBBA1(,CLB),BA1CRI+BA1PRI ALREADY REQUESTED A STOP ? --|  03340000                
       SBN   CLBBA1(,CLB),BA1PRI       SET 'PRIORITY CANCEL' IND     |  03350000                
       BT    CSCHED                    NO - GO SCHEDULE THE STOP <---|  03360000                
       B     CSPSTN                    GO POST (WAIT FOR THE OP END)    03370000                
       MEND                                                             03380000