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

⟦3aafa627d⟧ s3xseg

    Length: 30480 (0x7710)
    Types: s3xseg
    Names: »S$E080«

Derivation

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

TextSegment

       MACRO                                                            00010000                
.********************************************************************** 00015000                
.* NAME: $E080        V-15, M-00.                                     * 00030000                
.********************************************************************** 00035000                
       $E080                                                            00650000                
       GBLB  &ONE,&NOB,&NOM,&N37,&MIN,&NDME,&NDF,&N32,&N41,&NRUF        00660000                
       GBLB  &MOD4,&BPRT                                              *L00670000                
       LCLA  &MIX                                                       00690000                
       TEXT                                                             00700000                
* R-15,C-00 CHANGE LEVEL                                                00710000                
$CC4CM TITLE '$E080/CMWEND---WRITE-OP-END'                              00720000                
*  PRINTER BUSY FLAG      2/01/78                                    *L 00725000                
*********************************************************************** 00730000                
*            WRITE OP END ANALYSIS                                    * 00740000                
*********************************************************************** 00750000                
       SPACE                                                            00760000                
* COME HERE ON SUCCESSFUL OP END OF A WRITE OPERATION                   00770000                
* CHECK FOR WRITE CONVERSATIONAL (PUT THEN GET)                         00780000                
* IF NOT WRITE CONVERSATIONAL  READY TO DEQUEUE THE PARM LIST           00790000                
* IF WRITE CONVERSATIONAL, REFORMAT PARAMETER LIST AND GO BACK TO       00800000                
* RESCHEDULE THE LINE                                                   00810000                
       SPACE                                                            00820000                
CMWEND EQU   *                         WRITE OP END HANDLER             00830000                
       AIF   (&ONE).C0350                                               00840000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 00850000                
       JF    CMWPGX                    NO-GO CHECK FOR PUT-GET.       2 00860000                
.C0350 ANOP                                                             00870000                
       AIF   (&NOB).C0360                                               00880000                
       TBF   PLOPM(,PL),OPREQR         USER REQUEST, AND              B 00890000                
       TBN   LCBAT2(,DTF),LCBTRC       * BLOCK TRUNCATED  IND ON ?    B 00900000                
       SBF   LCBAT2(,DTF),LCBTRC       SET OFF THE TRUNCATED IND.     B 00910000                
       JF    CMWRVI                    NO-GO CHECK FOR RVI RECEIVED.  B 00920000                
       CLC   PLOUTL(2,PL),SAVRCL       OUTL LESS THAN TAS RECL ?      B 00930000                
       JNL   CMWTRC                    NO-THEN OUTPUT WAS TRUNCATED.  B 00940000                
       B     $CC4PI                    OTHERWISE CALL XIENT TO PAD    B 00950000                
       DC    AL1(CC4BB)                * RECORD AREA WITH BLANKS.     B 00960000                
       DC    AL2($$BSMS)               ADCON FOR MLMP IOCS.           B 00970000                
       DC    AL2($$BMCH)               ADCON FOR CHECK.               B 00980000                
       SPACE 1                                                          00990000                
*   BB RETURNS TO NSI+4 IF AN ERROR OCCURRES.                         B 01000000                
*   BB RETURNS TO NSI+7 IF A NORMAL OPERATION OCCURRED.               B 01010000                
       SPACE 1                                                          01020000                
       B     CMCMP                     GO HANDLE ERROR CASE.          B 01030000                
       SPACE 1                                                          01040000                
CMWTRC EQU   *                         SKIPPED BY BB RETURN.          B 01050000                
       SBN   PL$RTC(,PL),RCXDTR        SET TRUNCATED RETURN CODE.     B 01060000                
       SPACE 1                                                          01070000                
CMWRVI EQU   *                         *                              B 01080000                
       TBN   LCBOPC(,DTF),LCBRVI       RVI RECEIVED ?                 B 01090000                
       JF    CMWEOT                    NO-GO CHECK FOR SEND EOT NEEDEDB 01100000                
       MVI   PL$RTC(,PL),RCXRVI        SET RVI RETURN CODE.           B 01110000                
       SBF   LCBOPC(,DTF),LCBRVI       SET OFF RVI RECEIVED FLAG     *L 01115000                
CMWEOT EQU   *                         *                              B 01120000                
       TBN   LCBAT2(,DTF),LCBSET       SEND EOT OPERATION ?           B 01130000                
       JF    CMWETX                    NO-CHECK FOR SEND EOT.         B 01140000                
CMWABT EQU   *                         *                              B 01150000                
       TBN   LCBAT2(,DTF),LCBABT       LINE ABORT IN PROCESS ?        B 01160000                
       SLC   LCBAT2(2,DTF),LCBAT2(,DTF) CLEAR  LCBAT1 AND LCBAT2.     B 01170000                
       BT    CMRSCH                    YES-GO RESCHEDULE THE LINE.    B 01180000                
       L     PLTUBA(,PL),XR2           LOAD REG TO THE TUB.           B 01190000                
       SBF   TUBAT2(,XR2),TUBOWN       SET OFF TUB OWN INDICATOR.     B 01200000                
       AIF   (&NRUF).T0298                                              01200600                
       AIF   (&MOD4 NE '1').LJ005                                       01200630                
       TBN   TUBAT1(,XR2),TUBKNM       CONSOLE ?                        01200660                
       JF    CMNENB                    NO - JUMP                        01200690                
       SBF   PL$OPM(,PL),OPPUT         RESET PUT INDICATOR              01200720                
       LA    $CCCOM,XR2                XR2 --> CCP COMMON AREA          01200750                
       L     @KMWK(,XR2),XR2           XR2 --> CONSOLE WORK AREA        01200780                
       TBN   #KMSW2(,XR2),#KMENK       ENABLE REQUIRED ?                01200810                
       JF    CMNTX5                    NO - JUMP                        01200840                
       SPACE 1                                                          01200870                
* LOAD $CC4X5 TO CLEAR INPUT BUFFER AND ENABLE CONSOLE KEYBOARD         01200900                
       SPACE 1                                                          01200930                
       B     $CC4PI                    XIENT AREA HANDLER               01200960                
       DC    AL1(CC4X5)                TRANSIENT ID                     01200990                
CMNTX5 EQU   *                         *                                01201020                
       B     CMRSCH                    GO RESCHEDULE THE LINE           01201050                
CMNENB EQU   *                         *                                01201080                
.LJ005 ANOP                                                             01201110                
*                                      -----START-------------------@06 01201200                
*   SET OFF RUF INDICATION FOR A SUCCESSFUL USER PUT OPEND.             01201800                
       TBF   PLOPM(,PL),OP$SYS         USER OPERATION ?                 01202400                
       JF    CMWRFH                    NO-SKIP RUF SETS.                01203000                
       SBF   TUBSCS(,XR2),TUBRUF       SET OFF RUF INDICATOR.           01203600                
*   SET ON RUF INDICATOR FOR A USER PUT/RUF-MSG OPERATION.              01204200                
       TBN   PLOPC(,PL),OPRUF          RUF OPERATION                    01204800                
       TBF   PLOPC(,PL),OPORDR-OPRUF   *             CODE ?             01205400                
       JF    CMWRFH                    NO-DON'T SET ON RUF INDICATOR.   01206000                
       SBN   TUBSCS(,XR2),TUBRUF       SET ON RUF INDICATOR.            01206600                
CMWRFH EQU   *                         *                                01207200                
*                                      -----END---------------------@06 01207800                
.T0298 ANOP                                                             01208400                
       L     TUBDTF(,XR2),DTF          RELOAD THE DTF REG.            B 01210000                
       AIF   (&N32).T0300                                               01220000                
       SPACE                                                            01230000                
*   IF THIS IS EOT FOR SCREEN REFRESH OPTION, THEN GO TO RESCHEDULE. 0B 01240000                
       SPACE                                                            01250000                
       TBN   PL$OPC(,PL),OPRFSH        REFRESH OPERATION ?           0B 01260000                
       SBF   PL$OPC(,PL),OPRFSH        SET OFF REFRESH INDICATOR.    0B 01270000                
       JF    CMWDFF                    NO-GO TEST FOR DFF, IF IN SYST0B 01280000                
       MNN   PL$OPM(,PL),PL$OPC(,PL)   RESTORE ORIGINAL OP CODE.     0B 01290000                
       J     CMRDOJ                    GO TO REDO WORK CHECK ON LINE.0B 01300000                
       SPACE                                                            01310000                
CMWDFF EQU   *                         *                             0B 01320000                
       SPACE                                                            01330000                
       AIF   (&NDF).T0300                                               01340000                
*   IF THIS IS EOT FOR DFF, THEN FREE UP HIS HOLD BUFFER, AND         B 01350000                
*     DO A GENERAL POST.                                              B 01360000                
       SPACE                                                            01370000                
       TBN   SAVTA1,TASDFF             * DFF SUPPORTED ?             FB 01380000                
       JF    CMWPGX                    NO-GO CHECK FOR PUT-GET OP.   FB 01390000                
       L     PLTUBA(,PL),XR1           XR1---> TUB                      01400000                
       L     TUBTCB(,XR1),XR1          XR1---> TCB                      01410000                
       MVC   USRTID,TCBID(1,XR1)       SAVE TCB ID                      01420000                
       LA    $CCCOM,XR1                LOAD THE CCOM POINTER.        FB 01430000                
       TBN   $BDDEV(,DTF),LINE2        THIS LINE TWO DTF ?           FB 01440000                
       JT    CMWDF2                    YES-GO FREE LINE TWO HOLD BUFRFB 01450000                
       CLC   USRTID,#DF1ID(1,XR1)      THIS TCB OWN OHA ?               01460000                
       JNE   CMWDPL                    NO-DON'T CLEAR OWNER(JUMP)       01470000                
       MVI   #DF1ID(,XR1),NOBIT        CLEAR LINE 1 DFF HOLD BUF OWNEFB 01480000                
       J     CMWDFP                    GO TO POST DFF HOLD BUF FREE. FB 01490000                
       SPACE                                                            01500000                
CMWDF2 EQU   *                         FREE LINE TWO DFF HOLD BUFFER.FB 01510000                
       CLC   USRTID,#DF2ID(1,XR1)      THIS TCB OWN OHA ?               01520000                
       JNE   CMWDPL                    NO-DON'T CLEAR OWNER(JUMP)       01530000                
       MVI   #DF2ID(,XR1),NOBIT        CLEAR LINE 2 DFF HOLD BUF OWNEFB 01540000                
CMWDFP EQU   *                         POST DFF HOLD BUFFER FREE.    FB 01550000                
       B     $CC4PS                    CALL POST.                    FB 01560000                
       DC    AL2(WPBOHA)               MASK-DFF HOLD BUFFER FREE.    FB 01570000                
TWO    DC    AL2(2)                    GENERAL POST, AND CONSTANT.   FB 01580000                
CMWDPL EQU   *                                                          01590000                
       L     LCBPL@(,DTF),PL           RELOAD THE PARM LIST REG.     FB 01600000                
.T0300 ANOP                                                             01610000                
       J     CMWPGX                    CHECK FOR PUT-GET.             B 01620000                
       SPACE                                                            01630000                
CMWETX EQU   *                         *                              B 01640000                
       TBN   PL$OPC(,PL),OPUSER        SYSTEM FUNCTION ?              B 01650000                
       JT    CMWSET                    YES-GO SET SEND EOT.           B 01660000                
*                                      -----START-------------------@06 01665000                
       TBN   PLOPC(,PL),OPMSG          IS THIS A PUT-MSG              B 01670000                
       TBF   PLOPC(,PL),OPORDR-OPRUF   *                 OPERATION ?  B 01680000                
*                                      -----END---------------------@06 01685000                
       JT    CMWSET                    YES-GO SET SEND EOT.           B 01690000                
       TBN   PLOPC(,PL),OPGET          GET FOLLOW PUT OPERATION ?     B 01700000                
       JF    CMWPGX                    NO-GO CONVERT OP IF PUT-GET.   B 01710000                
CMWSET EQU   *                         *                              B 01720000                
       SBN   LCBAT2(,DTF),LCBSET       SET SEND EOT.                  B 01730000                
CMFOR2 EQU   *                         *                              B 01740000                
       B     CMFORM                    GO TO FORM NEXT OP ON LINE.    B 01750000                
       SPACE                                                            01760000                
CMWPGX EQU   *                         *                              B 01770000                
.C0360 ANOP                                                             01780000                
       SPACE                                                            01790000                
* DETERMINE IF OP WAS PUT THEN GET                                      01800000                
       SPACE                                                            01810000                
       TBN   PLOPC(,XR1),OPGET         WAS IT PUT THEN GET              01820000                
       JF    CMRETC                    JUMP IF NOT                      01830000                
       SPACE                                                            01840000                
* IT WAS PUT THEN GET                                                   01850000                
* SCHEDULE A READ OPERATION USING THE SAME PARAMETER LIST THAT WAS USED 01860000                
* FOR THE WRITE PORTION OF THE TP REQUEST                               01870000                
*   OTHER PARAMETERS REMAIN THE SAME                                    01880000                
       SPACE                                                            01890000                
       SPACE                                                            01900000                
*  REFORMAT THE PARAMETER LIST FOR THE READ PORTION                     01910000                
       SPACE                                                            01920000                
       SLC   PL$RTC(2,XR1),PL$RTC(,XR1)  CLEAR INTERNAL RETURN CODE     01930000                
       SBF   PL$OPM(,XR1),OPPUT        SET OFF PUT BIT                  01940000                
       SBN   PL$OPM(,XR1),OPGET        SET ON GET BIT                   01950000                
       SPACE                                                            01960000                
* MUST DETERMINE IF ORIGINAL OPERATION WAS A NO WAIT OP                 01970000                
* IF YES - EVEN THOUGH THE PUT WAS CHANGED INTO A PUT WAIT, THE GET     01980000                
* MUST BE RESET TO AN INVITE INPUT.                                     01990000                
       SPACE                                                            02000000                
       TBN   PLOPC(,XR1),OPNOW         WAS OP A NO WAIT                 02010000                
       BF    CMREDO                    JUMP IF NOT TO RESTART THE LINE  02020000                
       SPACE                                                            02030000                
* ORIGINAL OP WAS NO WAIT - NOW MUST DETERMINE IF OP JUST COMPLETED     02040000                
* WAS NO WAIT OR WHETHER CM CHANGED IT INTO A WAIT OP                   02050000                
       SPACE                                                            02060000                
* IF NO WAIT BIT ON - THEN MUST FREEMAIN THE RECORD AREA                02070000                
       SPACE                                                            02080000                
       TBN   PL$OPM(,XR1),OPNOW        IS IT NO WAIT TYPE OPERATION     02090000                
       JT    CMNWFM                    JUMP IF YES TO FREEMAIN          02100000                
       SPACE                                                            02110000                
* HAVE OP END OF PUT WAIT WHICH WAS ORIGINALLY A PUT NO WAIT            02120000                
* DO NOT NEED TO FREEMAIN - BUT SHOULD POST USER   THAT THE TP HAS BEEN 02130000                
* SCHEDULED                                                             02140000                
       SPACE                                                            02150000                
       SBN   PL$OPM(,XR1),OPNOW        SET NO WAIT BIT ON IN INTERNAL   02160000                
*                                      OP CODE MODIFIER                 02170000                
       B     CMPSRQ                    BR TO POST REQ'STR TP-SCHEDULED. 02180000                
CMRDOJ EQU   *                         *                              B 02190000                
       J     CMRDO1                    JUMP TO RESTART THE LINE         02200000                
       SPACE                                                            02210000                
* HAVE OP END OF PUT NO WAIT PART OF SYSTEM PUT THEN INVITE SO          02220000                
*  ISSUE FREEMAIN                                                       02230000                
       SPACE                                                            02240000                
CMNWFM EQU   *                         FREEMAIN PUT NO WAIT AREA        02250000                
       L     PLRECA(,XR1),XR2          POINT XR2 AT RECORD AREA OF AREA 02260000                
*                                      TO BE FREEMAINED                 02270000                
       B     CMFMRT                    BR TO FREEMIAN INTERFACE ROUTINE 02280000                
CMRDO1 EQU   *                         *                                02285000                
       B     CMREDO                    JUMP TO RESTART THE LINE         02290000                
$CC4CM TITLE '$E080/CMRETC---FINAL-OP-END-HANDLING'                     02300000                
*********************************************************************** 02310000                
*            FINAL HANDLING OF OP ENDED REQUEST                       * 02320000                
*********************************************************************** 02330000                
CMRETC EQU   *                         PUT THE RETURN CODE IN PARM LIST 02340000                
       AIF   (&ONE).C0370                                               02350000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 02360000                
       JF    CMDEQ                     NO-GO DIRECTLY TO DEQUEUE.     2 02370000                
.C0370 ANOP                                                             02380000                
       AIF   (&NOB).C0380                                               02390000                
       TBN   LCBAT1(,DTF),LCBEOT       SEARCH EOT ?                   B 02400000                
       BT    CMFORM                    YES-GO FORM NEXT OP FOR LINE.  B 02410000                
       SPACE 1                                                          02420000                
*   SET OFF IIS FOR ALL GET OPERATIONS.                               B 02430000                
       SPACE 1                                                          02440000                
       TBN   PLOPC(,PL),OPGET          GET OPERATION ?                B 02450000                
       JF    CMRACT                    NO-GO TEST LINE ACTIVE.        B 02460000                
       L     PLTUBA(,PL),XR2           POINT TO THE TUB.              B 02470000                
       SBF   TUBAT2(,XR2),TUBIIS       SET OFF INVITE SCHEDULED.      B 02480000                
       L     TUBDTF(,XR2),DTF          POINT TO THE DTF.              B 02490000                
CMRACT EQU   *                         *                              B 02500000                
       TBN   LCBAT2(,DTF),LCBACT       LINE ACTIVE ?                  B 02510000                
       JF    CMDEQ                     NO-GO AND JUST DEQUE.          B 02520000                
       SBN   LCBAT1(,DTF),LCBNTQ       SET ID ACTIVE PARM LIST REMOVEDB 02530000                
.C0380 ANOP                                                             02540000                
       SPACE                                                            02550000                
*********************************************************************** 02560000                
*            DEQUEUE                   THE PARAMETER LIST             * 02570000                
*********************************************************************** 02580000                
       SPACE                                                            02590000                
* NEXT DEQUEUE THE OPERATION THAT JUST COMPLETED                        02600000                
       SPACE                                                            02610000                
* TAKE THE POINTER FROM THIS PARM LIST AND PLACE IN PTR ADDR OF         02620000                
* LOCATION THAT POINTED TO THE COMPLETED OPERATION                      02630000                
       SPACE                                                            02640000                
CMDEQ  EQU   *                         DEQUEUE THE PARM LIST            02650000                
       AIF   (&ONE).D0380                                               02660000                
       L     CMSDTF,DTF                RELOAD DTF REGISTER.           2 02670000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 02680000                
       JF    CMDPRV                    NO-GO HANDLE MLTA CASE.        2 02690000                
.D0380 ANOP                                                             02700000                
       AIF   (&NOB).E0380                                               02710000                
       LA    LCBPLQ-1(,DTF),XR2        LOAD PTR TO FIRST PARM LIST.   B 02720000                
CMDQCK EQU   *                         *                              B 02730000                
       CLC   PLCHN(2,XR2),CMSPL        NEXT PARM LIST TO DEQ ?        B 02740000                
       JE    CMDCHN                    YES-GO TO DE-CHAIN IT.         B 02750000                
       L     PLCHN(,XR2),XR2           UPDATE TO NEXT PARM LIST.      B 02760000                
       B     CMDQCK                    GO BACK AND CHECK THIS ONE.    B 02770000                
       SPACE                                                            02780000                
       AIF   (&ONE).E0380                                               02790000                
CMDPRV EQU   *                         *                              2 02800000                
.E0380 ANOP                                                             02810000                
       AIF   (&NOM).M0600                                               02820000                
       L     CMVPTR,XR2                LOAD PREVIOUS POINTER IN XR2   M 02830000                
       SPACE                                                            02840000                
.M0600 ANOP                                                             02850000                
* MOVE PTR TO NEXT PARM LIST TO PREVIOUS PARM LIST POINTER              02860000                
       SPACE                                                            02870000                
       AIF   (&NOB).H0380                                               02880000                
CMDCHN EQU   *                         *                              B 02890000                
.H0380 ANOP                                                             02900000                
       MVC   1(2,XR2),PLCHN(,XR1)      MOVE POINTER                     02910000                
       SPACE                                                            02920000                
* PLUG THE EXTERNAL RETURN CODE FIELD WITH THE RETURN CODE THAT HAS     02930000                
*  BEEN FORMED IN THE INTERNAL RETURN CODE WORK AREA                    02940000                
       SPACE                                                            02950000                
       MVC   PLRTC(2,XR1),PL$RTC(,XR1) PLUG EXTERNAL RETURN CODE        02960000                
       SPACE                                                            02970000                
* DETERMINE IF OP WAS A PUT NO WAIT                                     02980000                
       SPACE                                                            02990000                
       TBN   PL$OPM(,XR1),OPPNOW       WAS OP PUT NO WAIT               03000000                
       JF    CMMARK                    IF NOT, JUMP TO POST TCB         03010000                
       SPACE                                                            03020000                
* IT WAS PUT NO WAIT SO ISSUE FREEMAIN                                  03030000                
       SPACE                                                            03040000                
       AIF   (&NOB).C0385                                               03050000                
       L     PLTUBA(,PL),XR2           POINT TO THE TUB, TO GET       B 03060000                
       AIF   (&BPRT).BP080             PRINTER BUSY FLAG             *L 03061000                
       AGO   .BP090                                                  *L 03062000                
.BP080 ANOP                                                          *L 03063000                
       TBN   TUBAT4(,XR2),TUBWAT                                     *L 03064000                
       JT    CMMARK                                                  *L 03065000                
.BP090 ANOP                            END PRINTER BUSY FLAG         *L 03066000                
       L     TUBDTF(,XR2),DTF          THE DTF ADDRESS.               B 03070000                
       AIF   (&NOM).C0384                                               03080000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF, AND                  B 03090000                
.C0384 ANOP                                                             03100000                
       TBN   LCBOPC(,DTF),LCBERP       IN TERM ERP PROCESS ?          B 03110000                
       JT    CMREDO                    DON'T FREE IF BSCA TERM ERP.   B 03120000                
.C0385 ANOP                                                             03130000                
       L     PLRECA(,XR1),XR2          POINT XR2 AT RECORD AREA         03140000                
       B     CMFMRT                    BR TO FREEMAIN INTERFACE         03150000                
       J     CMREDO                    JUMP TO SEE IF MORE PARM LISTS   03160000                
*                                      ON LINE                          03170000                
$CC4CM TITLE '$E080/CMMARK---POST-ANALYSIS'                             03180000                
*********************************************************************** 03190000                
*            $CC4CM POST ANALYSIS                                     * 03200000                
*********************************************************************** 03210000                
       SPACE                                                            03220000                
CMMARK EQU   *                         POST THE PROPER TCB              03230000                
       SPACE                                                            03240000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT TUB                 03250000                
       SPACE                                                            03260000                
* CHECK NO POST BIT TO SEE IF NO TCB IS TO BE POSTED DUE TO THE         03270000                
* COMPLETION OF THIS OPERATION                                          03280000                
       SPACE                                                            03290000                
       AIF   (&BPRT).BP091             PRINTER BUSY CODE              *L03291000                
       AGO   .BP092                                                   *L03292000                
.BP091 ANOP                                                           *L03293000                
       TBN   TUBAT4(,XR2),TUBWAT                                      *L03294000                
       JT    CMBPR                                                    *L03295000                
.BP092 ANOP                            END PRINTER BUSY CODE          *L03296000                
       TBF   PL$OPM(,XR1),OPNPST+OPBNOP IS NO POST BIT ON ?             03300000                
       JF    CMREDO                    JUMP IF NO POST BIT IS ON.       03310000                
       AIF   (&BPRT).BP093             PRINTER BUSY CODE              *L03311000                
       AGO   .BP094                                                   *L03312000                
.BP093 ANOP                                                           *L03313000                
CMBPR  EQU   *                                                        *L03314000                
.BP094 ANOP                            END PRINTER BUSY CODE          *L03315000                
       SPACE                                                            03320000                
*      DETERMINE WHETHER TO POST BASED ON THE FOLLOWING                 03330000                
*      IF ITS USER PARM LIST AND THE TUB POINTS TO A SYSTEM TCB         03340000                
*            THEN DO NOT POST UPON OP END OF THE OPERATION              03350000                
       SPACE                                                            03360000                
       L     TUBTCB(,XR2),XR2          POINT XR2 AT  TUB TCB            03370000                
       TBN   TCBTSK(,XR2),TCBSYT       IS IT SYSTEM TASK                03380000                
       TBF   PLOPM(,XR1),OP$SYS        IS IT USER REQUEST               03390000                
       JT    CMREDO                    JUMP IF USER OP AND SYSTEM TCB   03400000                
       SPACE                                                            03410000                
*      OKAY TO POST                                                     03420000                
       SPACE                                                            03430000                
       L     PLTUBA(,XR1),XR2          POINT XR2 AT TUB                 03440000                
       SPACE                                                            03450000                
* DETERMINE WHICH TCB TO POST                                           03460000                
* IF IN COMMAND INTERRUPT MODE - POST COMMAND PROCESSOR                 03470000                
* ELSE POST THE TCB POINTED TO BY THE TUB                               03480000                
       SPACE                                                            03490000                
       MVC   PSTCB(2),TUBTCB(,XR2)     MOVE TCB ADDR FROM TUB TO POST   03500000                
       SPACE 1                                                          03500900                
* POST THE COMMAND PROCCESSER ON SYSTEM INVITES                         03501800                
       SPACE 1                                                          03502700                
       TBN   PLOPM(,XR1),OP$SYS        SYSTEM                           03503600                
       TBN   PLOPC(,XR1),OPINV                INVITE                    03504500                
       AIF   (&BPRT).BP100             PRINTER BUSY CODE              *L03504600                
       AGO   .BP200                                                   *L03504700                
.BP100 ANOP                                                           *L03504800                
       TBF   TUBAT4(,XR2),TUBBSY+TUBWAT    1/23/78                    *L03504900                
.BP200 ANOP                            END PRINTER BUSY CODE          *L03505000                
       JF    CMCPPS                    NO-POST USING TCB @ IN TUB       03505400                
       MVC   PSTCB(2),CC@CPT           YES-POST THE COMMAND PROC.       03506300                
       SPACE 1                                                          03507200                
CMCPPS EQU   *                                                          03508100                
       SPACE 1                                                          03509000                
       AIF   (&NDME).D5200                                              03510000                
       TBN   TUBAT2(,XR2),CMCMDI       TEST FOR COMMAND INTERRUPT.    D 03520000                
       JF    CMPTCB                    JUMP IF NOT IN CMD INTRP MODE  D 03530000                
       SPACE                                                            03540000                
* TERMINAL IN COMMAND INTERRUPT MODE - THUS POST $CC4CP'S TCB         D 03550000                
       SPACE                                                            03560000                
       MVC   PSTCB(2),CC@CPT           MOVE CP TCB ADDRESS FOR POST   D 03570000                
       TBN   PL$OPM(,XR1),OPGET        DID OP INVOLVE A READ          D 03580000                
       JT    CMPTCP                    IF YES, POST WPACP BIT FOR CP. D 03590000                
       SPACE                                                            03600000                
.D5200 ANOP                                                             03610000                
       SPACE                                                            03620000                
* DETERMINE WHICH POST BIT TO SET ON                                    03630000                
* IF OP END OF INVITE INPUT - POST WPACP BIT                            03640000                
* OTHERWISE POST WPAAII BIT                                             03650000                
       SPACE                                                            03660000                
CMPTCB EQU   *                         DETERMINE WHICH POST MASK TO USE 03670000                
       MVC   CMPSTM(2),CMPSII          POST WPAAII BIT                  03680000                
       TBN   PL$OPM(,XR1),OP$II        WAS OP AN INVITE INPUT           03690000                
       TBF   CMSWIT,CMSPSI             STOP II AND STATUS POLL?         03700000                
       JF    CMPSOE                    IF NOT INVITE-JUMP TO POST       03710000                
       AIF   (&BPRT).BP225             PRINTER BUSY CODE              *L03710900                
       AGO   .BP250                                                   *L03711800                
.BP225 ANOP                                                           *L03712700                
******************************************************************    *L03713600                
* NOTE-STOP II AND STATUS POLL WILL NOT BE ON IF PUT-NO-WAIT     *    *L03714500                
*      TO PRINTER WITH BUSY PRINTER SUPPORT AND ERROR ON PUT.    *    *L03715400                
******************************************************************    *L03716300                
       TBN   TUBAT4(,XR2),TUBWAT       THIS TASK WAITING, BUSY POST?  *L03717200                
       JT    CMPTCP                          YES - THEN HANDLE        *L03718100                
.BP250 ANOP                            END PRINTER BUSY CODE          *L03719000                
       AIF   (&NDF).T0400                                               03720000                
       SPACE                                                            03730000                
*   CHECK TO SEE IF ORIGINAL OP WAS ALSO AN INVITE. IF ORIGINAL WAS  FB 03740000                
*     AN INVITE. IF NOT AN INVITE, THEN THIS IS A DFF REQUEST.       FB 03750000                
       SPACE                                                            03760000                
       TBN   PLOPC(,PL),OPINV          WAS ORIGINAL AN INVITE ?      FB 03770000                
       JT    CMPTCP                    YES-THEN NORMAL INVITE OP.    FB 03780000                
       SPACE                                                            03790000                
*   SET IIQ AND IIS SO THAT SYSTEM WILL FREE DFF ACQUIRRED GET BUFFERFB 03800000                
       SPACE                                                            03810000                
       MVC   PLRECA(8,XR2),PLRECA(,PL) MOVE REC @ AND LEN TO THE TUB.FB 03820000                
       J     CMPION                    POST NORMAL, SET ON IIS+IIQ.  FB 03830000                
       SPACE                                                            03840000                
.T0400 ANOP                                                             03850000                
CMPTCP EQU   *                         POST WPACP BIT                   03860000                
       MVC   CMPSTM(2),CMPSCP          POST TCB WITH WPACP BIT          03870000                
       AIF   (&BPRT).BP300                                            *L03871000                
       AGO   .BP400                                                   *L03872000                
.BP300 ANOP                                                           *L03873000                
       TBF   TUBAT4(,XR2),TUBBSY+TUBWAT   THIS A PRINTER TUB ?        *L03874000                
       JT    CMPION                       NO-HANDLE INVITE.           *L03875000                
       MVC   CMPSTM(2),CMPSBY             MOVE WPABSY MASK TO POST    *L03876000                
       J     CMPSOE                       THEN JUST POST-NO QUEUE     *L03877000                
.BP400 ANOP                            END PRINTER BUSY CODE          *L03878000                
       SPACE                                                            03880000                
* FIRST SET ON TUBIIQ BIT  TO INDICATE READ HAS COMPLETED AND DATA IS   03890000                
*      AVAILABLE IN A HOLD OR RECORD AREA                               03900000                
       SPACE                                                            03910000                
CMPION EQU   *                         *                                03920000                
       SBN   TUBAT2(,XR2),TUBIIQ+TUBIIS SET BITS TO INDICATE THAT       03930000                
*                                      OUTSTANDING READ HAS OP ENDED    03940000                
       SPACE                                                            03950000                
$CC4CM TITLE '$E080/CMQCP - INVITE-INPUT-TUB-QUEUEING'                  03960000                
*********************************************************************** 03970000                
*            INVITE INPUT TUB QUEUE ANALYSIS                          * 03980000                
*********************************************************************** 03990000                
       SPACE                                                            04000000                
* PUT COMPLETED OPS TUB ON THE TASK'S INVITE INPUT QUEUE                04010000                
       SPACE                                                            04020000                
* HAD INVITE INPUT SO PUT TUB ON TCB INPUT QUEUE                        04030000                
       SPACE                                                            04040000                
CMQCP  EQU   *                         PUT TUB ON TCB QUEUE             04050000                
       MVI   TUBINQ-1(,XR2),CMZERO     ZERO THIS TUB'S CHAIN POINTER    04060000                
       L     PSTCB,XR2                 POINT XR2 AT TCB                 04070000                
       SPACE 1                                                          04071000                
*  IF THE TASK IS IN TERMINATION- DON'T QUE THE INPUT                   04072000                
       SPACE 1                                                          04073000                
       TBN   TCBJOB(,XR2),TCBTRM       TERMINATION?                     04074000                
       JT    CMTBQD                    YES- DON'T QUE INPUT ON TCB      04075000                
       CLI   TCBINQ-1(,XR2),NOBIT      ARE THERE ANY TUBS IN THE QUEUE  04080000                
       JNE   CMTUBC                    IF TUBS IN QUEUE - JUMP          04090000                
       SPACE                                                            04100000                
* NO TUBS AT ALL IN THE QUEUE                                           04110000                
* ADD THIS TUB TO QUEUE BY PLACING IN THE TCB POINTER                   04120000                
       SPACE                                                            04130000                
       MVC   TCBINQ(2,XR2),PLTUBA(,XR1) PLACE TUB ADDR IN TCB TUB QUEUE 04140000                
       J     CMTBQD                    JUMP SINCE TUB IS QUEUED         04150000                
       SPACE                                                            04160000                
* HAVE TUBS IN THE QUEUE                                                04170000                
       SPACE                                                            04180000                
CMTUBC EQU   *                         CHECK FURTHER DOWN TUB CHAIN     04190000                
       L     TCBINQ(,XR2),XR2          POINT XR2 AT 1ST TUB IN THE      04200000                
CMQLOP CLI   TUBINQ-1(,XR2),NOBIT      ANYMORE TUBS IN THE QUEUE        04210000                
       JE    CMATUB                    JUMP IF NOT TO ADD NOW           04220000                
       SPACE                                                            04230000                
* HAVE MORE TUBS IN THE QUEUE                                           04240000                
* GET ADDR OF NEXT TUB AND CONTINUE TO CHECK FOR END                    04250000                
       SPACE                                                            04260000                
       L     TUBINQ(,XR2),XR2          POINT XR2 AT NEXT TUB            04270000                
       B     CMQLOP                    BR TO TEST FOR END               04280000                
       SPACE                                                            04290000                
* FOUND END OF QUEUE SO ADD TUB TO QUEUE NOW                            04300000                
       SPACE                                                            04310000                
CMATUB MVC   TUBINQ(2,XR2),PLTUBA(,XR1) ADD THIS TUB TO THE QUEUE       04320000                
CMTBQD EQU   *                         TUB HAS BEEN QUEUED              04330000                
$CC4CM TITLE '$E080/CMPSOE---POST-USER'                                 04340000                
*********************************************************************** 04350000                
*            P O S T  H E R E                                         * 04360000                
*********************************************************************** 04370000                
       SPACE                                                            04380000                
* AT THIS POINT POST SPECIFIC TCB THAT TP HAS COMPLETED                 04390000                
       SPACE 1                                                          04400000                
CMPSOE EQU   *                         POST OP END COMPLETE             04410000                
       B     $CC4PS                    BR TO POST ROUTINE               04420000                
CMPSTM DS    XL2                       POST MASK - TP COMPLETE BIT      04430000                
PSTCB  DC    XL2'0'                    TCB ADDR PLUGGED HERE            04440000                
*********************************************************************** 04450000                
*********************************************************************** 04460000                
       SPACE                                                            04470000                
* IF PARM LIST IN LCB PARM LIST CHAIN-THEN GO TO RESTART THE LINE       04480000                
*ELSE BRANCH BACK TO CHECK THE OP END COUNT                             04490000                
       SPACE                                                            04500000                
CMREDO EQU   *                         DO WE RESTART THE LINE           04510000                
       AIF   (&NOB).C0410                                               04520000                
       L     PLTUBA(,PL),XR2           POINT TO THE TUB               B 04530000                
       L     TUBDTF(,XR2),DTF          POINT TO THIS LINES DTF.       B 04540000                
       AIF   (&ONE).C0390                                               04550000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 04560000                
       JF    CMREQX                    NO-GO CHECK FOR WORK IN QUEUE. 2 04570000                
.C0390 ANOP                                                             04580000                
       AIF   (&NOB).C0400                                               04590000                
&MIX   SETA  &N32+&N37+&N41                                             04600000                
       AIF   (&MIX EQ '3').T0500                                        04610000                
*                           -------------------------->  START -->  @01 04615000                
       TBN   PL$OPC(,PL),OPLSNS        POLLING FOR STATUS ?      0/5/7B 04620000                
       JT    CMEACT                    YES-DON'T DESTROY USER OP.0/5/7B 04630000                
*                            -------------------------->  END -->   @01 04635000                
.T0500 ANOP                                                             04640000                
       MNN   PL$OPC(,PL),PL$OPM(,PL)   SAVE CURRENT OP FOR ERP.       B 04650000                
CMEACT EQU   *                         *                              B 04660000                
       TBN   LCBAT2(,DTF),LCBACT       LINE ACTIVE ?                  B 04670000                
       BT    CMOPND                    YES-GO CHECK OP END COUNT.     B 04680000                
.C0400 ANOP                                                             04690000                
       AIF   (&ONE).C0410                                               04700000                
CMREQX EQU   *                         *                              2 04710000                
.C0410 ANOP                                                             04720000                
       B     CMRSCH                    BR TO RESTART THE LINE           04730000                
$CC4CM TITLE '$E080/CMFRMN---FREEMAIN-ANALYSIS'                         04740000                
*********************************************************************** 04750000                
*                                                                     * 04760000                
*  NAME--CMFRMN                                                       * 04770000                
*                                                                     * 04780000                
*  TITLE--ACCEPT TP REQUESTS                                          * 04790000                
*                                                                     * 04800000                
*  FUNCTION--ACCEPT TP PARAMETERS FROM THE SYSTEM AND/OR USER.        * 04810000                
*            PERFORM THE FUNCTION REQUESTED IF IT CAN BE HANDLED      * 04820000                
*            IMMEDIATELY, OTHERWISE, PLACE THE PARAMETER INTO THE     * 04830000                
*            LCB LINE QUEUE OF WORK TO BE DONE.                       * 04840000                
*                                                                     * 04850000                
*  OPERATION--                                                        * 04860000                
*            . BEFORE HANDLINE ANY NEW TP PARAMETER LIST, UNLESS      * 04870000                
*              THE PARAMETER LIST IS A PUT-NO-WAIT, HANDLE ANY        * 04880000                
*              LINE RESCHEDULING RESULTING FROM A FREEMAIN POST,      * 04890000                
*              WHICH INDICATE THE AVAILABILITY OF MORE CORE.  IF A    * 04900000                
*              PUT-NO-WAIT IS RECEIVED, SCHEDULE IT BEFORE CHECKING   * 04910000                
*              FOR FREEMAIN POSTED.                                   * 04920000                
*                                                                     * 04930000                
*            . SET UP THE INTERNAL OPERATION INDICATORS FOR THE TP    * 04940000                
*              REQUEST JUST RECEIVED.                                 * 04950000                
*                                                                     * 04960000                
*            . IF THIS IS A DISCONNECT REQUEST, THEN INSURE THAT THE  * 04970000                
*              LINE IS NOT CONNECTED TO THE SPECIFIEC TERMINAL.  IF   * 04980000                
*              NO INVITE REQUEST IS INVOLVED, THEN POST TP COMPLETED  * 04990000                
*              TO THE SYSTEM.  IF AN INVITE IS INDICATED THEN TREAT   * 05000000                
*              LIKE AN INVITE ONLY REQUEST.                           * 05010000                
*                                                                     * 05020000                
*            . IF A PUT OPERATION TO A TERMINAL IN CCP ERP, IGNORE    * 05030000                
*              THE PUT OPERATION.  POST THE USER TP COMPLETE IF NO    * 05040000                
*              INPUT OPERATION INDICATED.  IF A PUT-THEN-GET TREAT    * 05050000                
*              LIKE A GET/INVITE ONLY OPERATION.                      * 05060000                
*                                                                     * 05070000                
*            . IF DFF GET REQUEST, MAKE INTERNAL OP CODE AN INVITE    * 05080000                
*              INPUT, AND TREAT IT LIKE AN INVITE INPUT THRU THE      * 05090000                
*              REST OF CM.                                            * 05100000                
*                                                                     * 05110000                
*            . IF MLTA ONLINE TEST (OLT) SET UP THE EXECUTION OF THE  * 05120000                
*              MLTA OLT REQUEST.                                      * 05130000                
*                                                                     * 05140000                
*            . IF A STOP INVITE OR PURGE I/O CALL IN THE MLTA ($CC4PG)* 05150000                
*              OR BSCA ($CC4BP) SERIES OF TRANSIENTS TO HANDLE THESE  * 05160000                
*              OPERATIONS.  ON RETURN FROM THESE TRANSIENTS DO        * 05170000                
*              WINDUP OPERATIONS OF SCHEDULING TP REQUEST.  IF THE    * 05180000                
*              BSCA TRANSIENT INDICATES AN ABORT OF THE LINE IS       * 05190000                
*              REQUIRED, SET UP THE ABORT OPERATION.                  * 05200000                
*                                                                     * 05210000                
*            . IF A REGULAR TP DATA OPERATION TO A BSCA LINE,         * 05220000                
*              CHECK TO INSURE THAT IT DOES NOT CONFLICT WITH WHAT    * 05230000                
*              IS CURRENTLY BEING PERFORMED ON THE LINE.              * 05240000                
*                                                                     * 05250000                
*            . IF INVITE INPUT REQUEST THEN MOVE THE TP PARAMETER     * 05260000                
*              LIST INTO THE TUB PARAMETER LIST FIELD, AND USE THE    * 05270000                
*              TUB PARAMETER LIST FOR ANY FURTHER REFERENCE TO        * 05280000                
*              THIS OPERATION.                                        * 05290000                
*                                                                     * 05300000                
*            . IF PUT-NO-WAIT TO MLTA OR PUT-NO-WAIT MESSAGE TO       * 05310000                
*              BSCA AND SPACE IS AVAILABLE FOR THE PARAMETER LIST     * 05320000                
*              AND DATA, MOVE THE PARAMETER LIST AND DATA TO A HOLD   * 05330000                
*              BUFFER AND USE THE HOLD BUFFER FOR ANY FURTHER         * 05340000                
*              REFERENCE TO THIS OPERATION.  OTHERWISE, TREAT THE     * 05350000                
*              REQUEST LIKE A PUT-WAIT OPERATION.  NOTE: A PUT-NO-WAIT* 05360000                
*              MESSAGE TO A BSCA SWITCHED LINE IS ALSO TREATED LIKE A * 05370000                
*              PUT-WAIT.                                              * 05380000                
*                                                                     * 05390000                
*            . IF A TP REQUEST THAT REQUIRES DATA TRANSFER, THEN QUEUE* 05400000                
*              THE REQUEST ONTO THE LINE QUEUE FOR THE APPROPRIATE    * 05410000                
*              LCB.                                                   * 05420000                
*                                                                     * 05430000                
*            . AFTER QUEUEING UP A NEW TP REQUEST, CHECK THE STATUS   * 05440000                
*              OF LINE TO:                                            * 05450000                
*              - INCLUDE A NEW GET/INVITE IF POLLING IS ALREADY       * 05460000                
*                GOING ON.                                            * 05470000                
*              - STOP A POLLING SEQUENCE IF A PUT REQUEST WAS         * 05480000                
*                JUST RECEIVED.                                       * 05490000                
*              - CONTINUE OPERATION IF THE REQUEST JUST RECEIVED IS   * 05500000                
*                THE CONTINUATION OF A PREVIOUSLY STARTED BSCA LINE   * 05510000                
*                OPERATION.                                           * 05520000                
*                                                                     * 05530000                
*            . EXIT TO THE RESCHEDULE LOGIC TO:                       * 05540000                
*              - POST COMPLETION OF THE TP SCHEDULED OPERATION.       * 05550000                
*              - TO PERFORM THE NEXT PRIORITY ACTION ON THE LINE.     * 05560000                
*              - TO CHECK FOR OTHER WORK WITHIN 'CM' THAT CAN BE DONE * 05570000                
*                AT THIS TIME.                                        * 05580000                
*                                                                     * 05590000                
*  ENTRY POINT--                                                      * 05600000                
*         CMFRMN - CHECK FOR FREEMAIN POSTED.                         * 05610000                
*         CMREQ  - HANDLE NEW TP REQUEST PARAMETER LIST.              * 05620000                
*                                                                     * 05630000                
*  INPUT--                                                            * 05640000                
*         CC@PRL - ADDRESS OF TP REQUEST PARAMETER LIST.              * 05650000                
*         CMLLCB - ADDRESS OF LAST LCB HANDLED FOR FREEMAIN POSTED    * 05660000                
*                  CHECK.                                             * 05670000                
*                                                                     * 05680000                
*  OUTPUT--                                                           * 05690000                
*         CMSPL  - ADDRESS OF THE TP REQUEST LAST PLACED INTO THE     * 05700000                
*                  LINE QUEUE.                                        * 05710000                
*         CMSDTF/CMSLCB - ADDRESS OF THE LINE DTF FOR THE LAST TP     * 05720000                
*                         REQUEST SCHEDULED.                          * 05730000                
*                                                                     * 05740000                
*  EXTERNAL REFERENCES--                                              * 05750000                
*         $$CLOZ - CLOSE BSCA SWITCHED LINE FOR DISCONNECT OPERATION. * 05760000                
*         $$OPEN - RE-OPEN THE BSCA SWITCHED LINE AFTER A DISCONNECT  * 05770000                
*                  OPERATION.                                         * 05780000                
*         $CC4MP - TRANSIENT TO IGNORE A PUT TO A TERMINAL IN CCP ERP.* 05790000                
*         $CC4T1 - TRANSIENT O HANDLE MLTA OLT REQUEST.               * 05800000                
*         $CC4BP - TRANSIENT TO HANDLE BSCA STOP II/PURGE I/O.        * 05810000                
*         $CC4PG - TRANSIENT TO HANDLE MLTA STOP II/PURGE I/O.        * 05820000                
*         $CC4BR - TRANSIENT TO REJECT A TP REQUEST THAT CONFLICTS    * 05830000                
*                  WITH A CURRENT LINE OPERATION.                     * 05840000                
*         CMIVGM - HANDLE A NEW INVITE INPUT REQUEST.                 * 05850000                
*         CMSTOR - DETERMINE STORAGE REQUIREMENTS FOR NO-WAIT         * 05860000                
*                  OPERATIONS.                                        * 05870000                
*         CMGMRT - GET HOLD BUFFER SPACE FOR NO-WAIT OPERATIONS.      * 05880000                
*         CMSET  - FORMAT HOLD BUFFER SPACE FOR PUT-NO-WAIT           * 05890000                
*                  OPERATIONS.                                        * 05900000                
*                                                                     * 05910000                
*  EXIT, NORMAL--                                                     * 05920000                
*                TO THE LINE RESCHEDULING FUNCTION FOR THE REASONS    * 05930000                
*                SPECIFIED IN THE LAST POINT UNDER OPERATIONS.        * 05940000                
*                                                                     * 05950000                
*********************************************************************** 05960000                
       SPACE                                                            05970000                
CMFRMN EQU   *                         FREEMAIN ANALYSIS ROUTINE        05980000                
       TBN   CMPMSK,WPAAII             WAS TP REQUEST POSTED            05990000                
       JF    CMFRPS                    JUMP TO CHECK FREEMIAN POST      06000000                
       SPACE                                                            06010000                
* HAVE TP REQEUST -IF PUT NO WAIT BRANCH TO HANDLE IT NOW               06020000                
       SPACE                                                            06030000                
       L     CC@PRL,XR1                POINT XR1 AT PARM LIST           06040000                
       TBN   PLOPC(,XR1),OPPNOW        DOES IT INVOLVE PUT NO WAIT      06050000                
       JT    CMLTUB                    JUMP IF PUT NO WAIT              06060000                
       SPACE                                                            06070000                
* READY TO HANDLE FREEMAIN ANALYSIS                                     06080000                
       SPACE                                                            06090000                
CMFRPS EQU   *                         CHECK FOR FREEMAIN POST          06100000                
       TBN   CMPMSK+1,WPBFR            HAS FREEMAIN BEEN POSTED         06110000                
       JF    CMREQ                     IF NOT, JUMP TO HANDLE TP REQST  06120000                
       AIF   (&NOB).NX005                                               06121000                
       AIF   (&MIN NE '1').NX005                                        06122000                
       SBF   CMPMSK+1,WPBFR            SET OFF FREEMAIN POSTED          06124000                
.NX005 ANOP                                                             06126000                
       SPACE                                                            06130000                
* HAVE HAD FREEMAIN - SO CHECK LCB'S FOR ANY PARM LISTS IN NEED OF      06140000                
* MAIN STORAGE                                                          06150000                
       SPACE                                                            06160000                
       AIF   (&NOB).NB010                                               06170000                
       AIF   (&MIN).NX010                                               06180000                
.NB010 ANOP                                                             06190000                
* DETERMINE IF NEED TO START WITH 1ST LCB IN CHAIN OR DO WE RESUME      06200000                
* FROM LAST LCB LOOKED AT                                               06210000                
       SPACE                                                            06220000                
       TBF   CMSWIT,CMFMGO             TEST FREEMAIN OCCURRED BIT       06230000                
       JT    CM1LCB                    JUMP IF FREEMAIN OCCURRED        06240000                
       SPACE                                                            06250000                
* NO NEW FREEMAIN SO PICK UP FROM LAST LCB                              06260000                
       SPACE                                                            06270000                
       L     CMLLCB,XR2                POINT XR2 AT LAST LCB CHECKED    06280000                
       J     CMNXLC                    JUMP TO LOOK AT NEXT LCB         06290000                
       SPACE                                                            06300000                
CM1LCB EQU   *                         START WITH 1ST LCB IN CHAIN      06310000                
       SBN   CMSWIT,CMFMGO             INDICATE NO FREEMAIN OCCURRED    06320000                
.NX010 SBF   CMWTMK+1,WPBFR            SET OFF FREEMAIN IN WAIT MASK    06330000                
       SPACE                                                            06340000                
* GET FIRST LCB AND ANALYZE THE LINE QUEUE                              06350000                
       SPACE                                                            06360000                
       L     CCLCB1,XR2                POINT XR2 AT LCB                 06370000                
       SPACE                                                            06380000                
* IF GETMAIN IS NOT NEEDED BY THIS LCB - GO TO NEXT LCB                 06390000                
       SPACE                                                            06400000                
CMTGM  EQU   *                         TEST GETMAIN NEED                06410000                
       AIF   (&NOB).NB020                                               06420000                
       AIF   (&MIN).NX020                                               06430000                
.NB020 ANOP                                                             06440000                
       ST    CMLLCB,XR2                SAVE THE LAST LCB LOOKED AT      06450000                
.NX020 ST    CMSLCB,XR2                SAVE THIS DTF @                  06460000                
       SPACE                                                            06470000                
       TBN   LCBATR(,XR2),LCBGMN       TEST FOR GETMAIN NEEDED          06480000                
       JF    CMNXLC                    JUMP IF NOT NEEDED               06490000                
       SPACE                                                            06500000                
* GETMAIN IS NEEDED                                                     06510000                
       SPACE                                                            06520000                
* SEE IF LINE IS NOT BUSY OR BUSY WITH A READ                           06530000                
* IF YES - GO TO TRY AND RESCHEDULE THE LINE                            06540000                
       SPACE                                                            06550000                
       AIF   (&ONE).E0410                                               06560000                
       TBN   $BDDEV(,DTF),BSCA         BSCA DTF ?                     2 06570000                
       JF    CMFMBY                    NO-GO HANDLE MLTA CASE.        2 06580000                
.E0410 ANOP                                                             06590000                
       AIF   (&NOB).H0410                                               06600000                
       TBN   LCBAT2(,DTF),LCBACT       THIS DTF ACTIVE ?              B 06610000                
       BT    CMBUSY                    YES-GO SEE IF CANCEL IS POSSIBLB 06620000                
       B     CMRSCH                    GO TO RESCHEDULE THE LINE.     B 06630000                
       SPACE                                                            06640000                
       AIF   (&ONE).H0410                                               06650000                
CMFMBY EQU   *                         *                              2 06660000                
.H0410 ANOP                                                             06670000                
       AIF   (&NOM).M0800                                               06680000                
       TBN   $MDAT2(,XR2),$MABSY       IS LINE BUSY                   M 06690000                
       TBF   $MDOPC(,XR2),MLREAD       IS NON-READ ON LINE            M 06700000                
       BF    CMTSBY                    JUMP IF NOT BUSY OR NON-READ   M 06710000                
       SPACE                                                            06720000                
* IF GETMAIN NEEDED - SET BIT TO WAIT FOR FREEMAIN                    M 06730000                
       SPACE                                                            06740000                
       SBN   CMWTMK+1,WPBFR            SET FREEMAIN BIT IN WAIT MASK  M 06750000                
       SPACE                                                            06760000                
.M0800 ANOP                                                             06770000                
CMNXLC EQU   *                         GET NEXT LCB IN LCB CHAIN        06780000                
       AIF   (&NOB).NB030                                               06790000                
       AIF   (&MIN).NX030                                               06800000                
.NB030 ANOP                                                             06810000                
       CLI   LCBCHN-1(,XR2),NOBIT      IS LCB CHAIN POINTER NULL        06820000                
       JE    CMFMOF                    JUMP IF NO MORE LCBS             06830000                
       SPACE                                                            06840000                
* MORE LCB'S IN CHAIN                                                   06850000                
       SPACE                                                            06860000                
       L     LCBCHN(,XR2),XR2          POINT XR2 AT NEXT LCB            06870000                
       B     CMTGM                     BR TO TEST GETMAIN NEED          06880000                
       SPACE                                                            06890000                
.NX030 ANOP                                                             06900000                
CMFMOF EQU   *                         SET FM POST BIT OFF              06910000                
       SBF   CMPMSK+1,WPBFR            SET FREEMAIN POST BIT OFF        06920000                
       MEND                                                             06930000