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

⟦5440791be⟧ s3xseg

    Length: 14986 (0x3a8a)
    Types: s3xseg
    Names: »S$E046«

Derivation

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

TextSegment

       MACRO                                                            00010000                
       $E046                                                            00020000                
       GBLB  &MTK                                                       00030000                
       LCLC  &#                                                         00040000                
       TEXT                                                             00050000                
&#     SETC  ' '                                                        00060000                
       TITLE 'TASK&#.WAIT&#.ROUTINE&#.$CC4WT'                           00070000                
*                                      BEGIN MACRO '$E046' 3/13/73      00080000                
       SPACE 2                                                          00090000                
*********************************************************************** 00100000                
* NAME -- $CC4WT                                                      * 00110000                
*                                                                     * 00120000                
* TITLE -- CCP WAIT ROUTINE                                           * 00130000                
*                                                                     * 00140000                
* FUNCTION --                                                         * 00150000                
*                                                                     * 00160000                
*    . TO PROVIDE THE INTERFACE REQUIRED TO ALLOW A CCP TASK          * 00170000                
*      TO WAIT FOR ONE OR MORE ASYNCHRONOUS EVENTS.                   * 00180000                
*                                                                     * 00190000                
* OPERATION --                                                        * 00200000                
*                                                                     * 00210000                
*    . THE WAIT ROUTINE PERFORMS THE FOLLOWING FUNCTIONS:             * 00220000                
*                                                                     * 00230000                
*      . VALIDATE THAT THE EXPECTED EVENT COUNT IN THE INPUT          * 00240000                
*        PARAMETER LIST IS NON-ZERO.  IF IT IS, THE CCP HALT          * 00250000                
*        ROUTINE WILL BE ENTERED WITH A SUBHALT CODE OF 'PS'.         * 00260000                
*      . MOVE THE WAIT PARAMETER LIST WAIT MASK AND EXPECTED          * 00270000                
*        EVENT COUNT TO THE CURRENT TCBS WAIT MASK AND COUNT          * 00280000                
*        FIELDS, SET THE RESIDUAL COUNT EQUAL TO THE EVENT            * 00290000                
*        COUNT, AND ZERO THE TCB POST MASK.                           * 00300000                
*      . MOVE THE WAIT PARAMETER LIST FLAG BYTE TO $DPFLG IN          * 00310000                
*        $CCCOM, RESTORE ALL REGISTERS AND INVOKE THE CCP             * 00320000                
*        DISPATCHER VIA LOAD IAR INSTRUCTION.                         * 00330000                
*                                                                     * 00340000                
* INPUT -- THE LINKAGE USED TO INVOKE CCP WAIT IS ...                 * 00350000                
*                                                                     * 00360000                
*    EXTRN $CC4WT                                                     * 00370000                
*    B     $CC4WT                                                     * 00380000                
*    DC    AL2 NNNN          TCB WAIT MASK                            * 00390000                
*    DC    IL1'N'            EXPECTED EVENT COUNT                     * 00400000                
*    DC    AL1 NNNN          $DPFLG CONTROL BYTE REPLACEMENT          * 00410000                
*                                                                     * 00420000                
* OUTPUT --                                                           * 00430000                
*                                                                     * 00440000                
*    . THE WAIT ROUTINE WILL SET THE TCB WAIT MASK, EXPECTED EVENT    * 00450000                
*      COUNT, THE RESIDUAL EVENT COUNT, AND THE TCB POST MASK.        * 00460000                
*                                                                     * 00470000                
* EXTERNAL REF --                                                     * 00480000                
*                                                                     * 00490000                
*    . $CCCOM, REGISTER SAVE AND RESTORE ROUTINES IN $CC4PI,          * 00500000                
*      CCP HALT ROUTINE, AND THE CCP DISPATCHER.                      * 00510000                
*                                                                     * 00520000                
* EXIT, NORMAL --                                                     * 00530000                
*                                                                     * 00540000                
*    . TO THE CCP DISPATCHER. THE TASK WILL RESUME AT THE             * 00550000                
*      INSTRUCTION FOLLOWING THE WAIT PARAMETER LIST IF THE           * 00560000                
*      REGISTER SAVE BIT IS SET IN THE $DPFLG MASK BYTE IN THE        * 00570000                
*      WAIT PARAMETER LIST.                                           * 00580000                
*                                                                     * 00590000                
* EXIT, ERROR --                                                      * 00600000                
*                                                                     * 00610000                
*    . TO THE CCP HALT ROUTINE IF THE EXPECTED EVENT COUNT            * 00620000                
*      IS ZERO.                                                       * 00630000                
*                                                                     * 00640000                
* ATTRIBUTES --                                                       * 00650000                
*                                                                     * 00660000                
*    . SERIALLY REUSEABLE, MUST-COMPLETE MODE PRIOR TO ENTRY,         * 00670000                
*      RESIDENT.                                                      * 00680000                
*                                                                     * 00690000                
*********************************************************************** 00700000                
       EJECT                                                            00710000                
RCOM   EQU   XR1                       $CCCOM REGISTER                  00720000                
RTCB   EQU   XR2                       TCB REGISTER                     00730000                
       SPACE 2                                                          00740000                
       SPACE 2                                                          00750000                
$CC4WT ST    CCARR,ARR                 SAVE THE INPUT ARR WHICH ADDRESS 00760000                
*                                      THE INPUT PARAMETERS             00770000                
       B     CCPSAV                    SAVE THE TCB REGISTERS           00780000                
       LA    $CCCOM,RCOM               SET UP $CCCOM BASE REG           00790000                
       L     @CURTB(,RCOM),RTCB        GET @ OF CURRENT TCB             00800000                
       SLC   TCBPMK+1(2,RTCB),TCBPMK+1(,RTCB) RESET THE TCB POST        00810000                
*                                      MASK TO ZERO                     00820000                
       ALC   $CCARR(2,RCOM),X$0002(,RCOM) STEP THE INPUT ARR TO ADDRESS 00830000                
*                                      THE WAIT MASK INPUT TO $CC4WT    00840000                
       MVC   WTMOD1(2),$CCARR(,RCOM)   INITIALIZE THE INSTRUCTION TO    00850000                
*                                      MOVE THE WAIT MASK TO THE TCB    00860000                
       MVC   TCBECT(3,RTCB),###        MOVE THE WAIT COUNT AND WAIT     00870000                
*                                      MASK TO THE TCB                  00880000                
*                                                                       00890000                
WTMOD1 EQU   *-1                       EQUATE FOR INST. MODIFY          00900000                
       CLI   TCBECT(,RTCB),0           IS THE EXPECTED EVENT COUNT      00910000                
*                                      NON-ZERO                         00920000                
       BE    PS0002                    NO, INVALID WAIT--STOP THE C.C.P.00930000                
       MVC   TCBRCT(1,RTCB),TCBECT(,RTCB) YES, SET THE RESIDUAL COUNT   00940000                
*                                      EQUAL TO THE EXPECTED EVENT CNT  00950000                
       L     $CCARR(,RCOM),XR2         CLOBBER THE TCB REG              00960000                
*                                      WITH THE @ OF THE INPUT WAIT     00970000                
*                                      PARAMETER $DPFLG BYTE            00980000                
       MVC   WTMOD2(1),1(,XR2)         MOVE THE $DPFLG BYTE INTO A SBN  00990000                
*                                      NOTE...THIS DOES NOT RESET       01000000                
*                                      THE WHOLE $DPFLG, ONLY THOSE     01010000                
*                                      BITS THAT ARE ON IN THE BYTE     01020000                
       SBN   $DPFLG(,RCOM),###         SET $DPFLG FOR THE TASK          01030000                
WTMOD2 EQU   *-2                       EQUATE FOR INSTRUCTION MOD       01040000                
       B     CCPRST                    RESTORE THE TASK'S REGISTERS     01050000                
       A     CC0004,ARR                STEP THE USER'S ARR TO THE NSI   01060000                
       L     WT@DP,IAR                 INVOKE THE DISPATCHERWITHOUT     01070000                
*                                      CLOBBERING THE ARR               01080000                
WT@DP  DC    AL2($CC4DP)               @ OF CCP DISPATCHER              01090000                
       SPACE 2                                                          01100000                
       TITLE 'TASK&#.POST&#.ROUTINE&#.--&#.$CC4PS'                      01110000                
*********************************************************************** 01120000                
* NAME -- $CC4PS                                                      * 01130000                
*                                                                     * 01140000                
* TITLE -- CCP POST ROUTINE                                           * 01150000                
*                                                                     * 01160000                
* FUNCTION --                                                         * 01170000                
*                                                                     * 01180000                
*    . TO INDICATE TO A WAITING TASK THAT AN EXPECTED                 * 01190000                
*      EVENT HAS OCCURRED.                                            * 01200000                
*    . TO ALLOW A TASK THAT HAS RECOGNIZED THE OCCURENCE OF           * 01210000                
*      AN EVENT WHICH IS BY DEFINITION SIGNIFICANT IN THE CCP         * 01220000                
*      SYSTEM, TO SIGNAL THAT EVENT TO ALL OTHER CCP TASKS            * 01230000                
*      THAT MAY BE WAITING FOR THAT EVENT.                            * 01240000                
*                                                                     * 01250000                
* OPERATION -- THE FOLLOWING OPERATIONS ARE PERFORMED BY POST:        * 01260000                
*                                                                     * 01270000                
*    . VALIDATION OF THE INPUT PARAMETER LIST.  IF THE POST           * 01280000                
*      MASK IS ALL ZERO OR THE ADDRESS OF THE TCB TO BE POSTED        * 01290000                
*      IS ALL ZERO (BOTH BYTES), THE CCP HALT ROUTINE WILL BE         * 01300000                
*      ENTERED WITH A SUBHALT CODE OF 'PS'.                           * 01310000                
*    . FOLLOWING SUCCESSFUL VALIDATION, THE CCP TRACE ROUTINE         * 01320000                
*      IS INVOKED WITH AN ID OF SEVEN TO RECORD THE POST ENTRY        * 01330000                
*      PARAMETER DATA.                                                * 01340000                
*    . IF THE POST PARAMETER LIST TCB ADDRESS HAS A NON-ZERO          * 01350000                
*      HIGH BYTE, A SPECIFIC TCB IS TO BE POSTED.  IF THE HIGH        * 01360000                
*      BYTE IS ZERO, ALL TCB'S IN THE SYSTEM ARE TO BE TESTED         * 01370000                
*      TO SEE IF THEY ARE AWAITING THIS SPECIFIC EVENT.               * 01380000                
*    . EACH TCB OR THE SPECIFIED TCB IS INSPECTED PRIOR TO            * 01390000                
*      POSTING.  FIRST, IT IS DETERMINED IF THE TASK HAS              * 01400000                
*      ALREADY BEEN POSTED FOR THE EVENT AND, IF NOT, AN              * 01410000                
*      ADDITIONAL TEST IS MADE TO SEE IF THE TASK WAIT MASK           * 01420000                
*      INDICATES THAT THE TASK EXPECTS THE EVENT.  IF THESE           * 01430000                
*      CONDITIONS ARE MET, THE APPROPRIATE POST MASK BIT IS           * 01440000                
*      TURNED ON TO INDICATE WHICH EVENT THE POST IS FOR, THE         * 01450000                
*      RESIDUAL EVENT COUNT IS DECREMENTED BY ONE AND, IF THE         * 01460000                
*      RESULT IS ZERO THE TASK'S DISPATCHABILITY BIT IS TURNED ON.    * 01470000                
*    . AFTER THE TCB(S) ARE CHECKED, POST RESTORES THE CALLER'S       * 01480000                
*      REGISTERS AND RETURNS VIA BRANCH TO THE INSTRUCTION            * 01490000                
*      FOLLOWING THE POST PARAMETER LIST.                             * 01500000                
*                                                                     * 01510000                
* ENTRY POINT --                                                      * 01520000                
*                                                                     * 01530000                
*    . $CC4PS                                                         * 01540000                
*                                                                     * 01550000                
* INPUT -- THE FOLLOWING CALLING SEQUENCE IS USED FOR POST:           * 01560000                
*                                                                     * 01570000                
*    EXTRN $CC4PS                                                     * 01580000                
*    B     $CC4PS                                                     * 01590000                
*    DC    XL2'POST-MASK'                                             * 01600000                
*    DC    AL2 @ OF TCB TO BE POSTED   OR                             * 01610000                
*    DC    XL2'00NN' INDICATING GENERAL POST (NN IS NON-ZERO).        * 01620000                
*                                                                     * 01630000                
* OUTPUT --                                                           * 01640000                
*                                                                     * 01650000                
*    . SEE THE DISCUSSION OF OPERATION FOR AN EXPLANATION OF WHAT     * 01660000                
*      FIELDS ARE SET.                                                * 01670000                
*                                                                     * 01680000                
* EXTERNAL REF --                                                     * 01690000                
*                                                                     * 01700000                
*    . $CCCOM, CCP SAVE AND RESTORE ROUTINES, CCP HALT ROUTINE,       * 01710000                
*      ADDRESS OF HIGHEST PRIORITY SYSTEM TCB, AND THE ADDRESS        * 01720000                
*      OF THE LAST ACTIVE USER TASK.                                  * 01730000                
*                                                                     * 01740000                
* EXIT, NORMAL --                                                     * 01750000                
*                                                                     * 01760000                
*    . TO THE INSTRUCTION FOLLOWING THE INPUT PARAMETER LIST.         * 01770000                
*                                                                     * 01780000                
* EXIT, ERROR --                                                      * 01790000                
*                                                                     * 01800000                
*    . CCP HALT ROUTINE WITH A 'PS' SUB-HALT.                         * 01810000                
*                                                                     * 01820000                
* ATTRIBUTES --                                                       * 01830000                
*                                                                     * 01840000                
*    . RESIDENT, MUST-COMPLETE MODE PRIOR TO ENTRY, REUSEABLE.        * 01850000                
*                                                                     * 01860000                
* NOTES --                                                            * 01870000                
*                                                                     * 01880000                
*    . POST IS A PART OF THE $CC4WT (WAIT) ASSEMBLY MODULE.           * 01890000                
*                                                                     * 01900000                
*********************************************************************** 01910000                
       EJECT                                                            01920000                
       SPACE 1                                                          01930000                
RBAS   EQU   XR1                                                        01940000                
PSHALT EQU   X'3E5D'                   'PS' HALT EQUATE                 01950000                
PSLEN  EQU   4                         LENGTH OF INPUT PARAMETER LIST   01960000                
       SPACE 1                                                          01970000                
*********************************************************************** 01980000                
*      POST ROUTINE WORK AREA + CONSTANTS                             * 01990000                
*********************************************************************** 02000000                
       SPACE 1                                                          02010000                
PSBASE EQU   *                         EQUATE FOR BASE REGISTER         02020000                
PSCB   DS    XL1                       POST CONTROL BYTE                02030000                
*                                                                       02040000                
*      BIT SIGNIFICANCE DEFINITIONS FOR THE PSCB                        02050000                
*      BIT0--ALL TCB'S TO BE LOOKED AT                                  02060000                
*      BIT1--CURRENTLY IN SYSTEM TCB CHAIN                              02070000                
       SPACE 1                                                          02080000                
PSHOLD DS    XL4                       HOLD AREA FOR INPUT PARAMETERS   02090000                
PSMK1  EQU   PSHOLD-3                  POST MASK--BYTE 1                02100000                
PSMK2  EQU   PSHOLD-2                  POST MASK--BYTE 2                02110000                
PSTCB  EQU   PSHOLD                    INPUT TCB @ PARAMETER            02120000                
PSZERO DC    IL2'0'                    TWO BYTES OF ZERO                02130000                
PSONE  DC    IL1'1'                    TWO BYTES OF ONE FOR ADD         02140000                
       EJECT                                                            02150000                
*********************************************************************** 02160000                
*      POST INITIAL ENTRY AND INITIALIZATION                          * 02170000                
*********************************************************************** 02180000                
       SPACE 1                                                          02190000                
$CC4PS ST    CCARR,ARR                 SAVE THE INPUT ARR               02200000                
       B     CCPSAV                    AND SAVE REGS IN TCB             02210000                
       LA    PSBASE,RBAS               SET UP PGM BASE REGISTER         02220000                
       USING PSBASE,RBAS                                                02230000                
       L     CCARR,XR2                 RE-ACCESS THE INPUT PARAMETER @  02240000                
       MVC   PSHOLD(4,RBAS),3(,XR2)    MOVE THE INPUT PARAMETERS TO     02250000                
*                                      THE PARAMETER HOLD AREA IN POST  02260000                
       SPACE 1                                                          02270000                
*********************************************************************** 02280000                
*      VERIFY THE INPUT PARAMETER VALIDITY                            * 02290000                
*********************************************************************** 02300000                
       SPACE 1                                                          02310000                
       CLC   PSMK2(2,RBAS),PSZERO(,RBAS) WAS A NON-ZERO POST MASK INPUT 02320000                
       JNE   PS0001                    YES, CONTINUE TO CHECK           02330000                
PS0002 B     CPHALT                    NO, STOP THE SYSTEM WTTH A 'U-'  02340000                
*                                      HALT AND SUB-HALT OF 'PS'        02350000                
       DC    AL2(PSHALT)               PS SUB-HALT CONSTANT             02360000                
PS0001 CLC   PSTCB(2,RBAS),PSZERO(,RBAS) ANY INPUT TCB @                02370000                
       BE    PS0002(,RBAS)             NO-STOP THE CCP                  02380000                
       SPACE 1                                                          02390000                
*********************************************************************** 02400000                
*      VERIFICATION IS GOOD--TRACE THE POST ENTRY AND INITIALIZE THE  * 02410000                
*      POST WORKING CONTROLS                                          * 02420000                
*********************************************************************** 02430000                
       SPACE 1                                                          02440000                
       B     $CC4TT                    GO TO TRACE                      02450000                
       DC    AL1(TTPOST)               TRACE ID FOR POST                02460000                
       MVI   PSCB(,RBAS),0             INITIALIZE THE POST CONTROL BYTE 02470000                
       SPACE 1                                                          02480000                
*********************************************************************** 02490000                
*      INITIALIZE THE SET AND TEST BIT INSTRUCTIONS WHOSE Q-BYTE IS   * 02500000                
*      DEPENDENT UPON THE INPUT POST MASK                             * 02510000                
*********************************************************************** 02520000                
       SPACE 1                                                          02530000                
       MVC   PSMODA(1,RBAS),PSMK1(,RBAS)                                02540000                
       MVC   PSMODF(1,RBAS),PSMK1(,RBAS)                                02550000                
       MVC   PSMODB(1,RBAS),PSMK2(,RBAS)                                02560000                
       MVC   PSMODC(1,RBAS),PSMK2(,RBAS)                                02570000                
       MVC   PSMODD(,RBAS),PSMK1(,RBAS)  MOVE THE POST MASK INTO A SBN  02580000                
       MVC   PSMODE(,RBAS),PSMK2(,RBAS) INSTRUCTION TO SET TCB POST MSK 02590000                
       EJECT                                                            02600000                
*********************************************************************** 02610000                
*            DETERMINE IF ALL TCBS ARE TO BE CHECKED AS INDICATED     * 02620000                
*            BY A BYTE OF ZERO IN THE INPUT TCB ADDRESS FIELD OR      * 02630000                
*            IF ONLY ONE TCB IS TO BE POSTED                          * 02640000                
*********************************************************************** 02650000                
       SPACE 1                                                          02660000                
       L     PSTCB(,RBAS),RTCB         SET UP THE TCB @ REGISTER        02670000                
       CLI   PSTCB-1(,RBAS),0          ARE ALL TCB'S IN THE SYTEM TO    02680000                
*                                      BE LOOKED AT ON THIS ENTRY       02690000                
       JNE   PS0003                    NO, CONTINUE                     02700000                
       SBN   PSCB(,RBAS),BIT0+BIT1     YES, SET INDICATORS IN CTL BYTE  02710000                
       L     CC@CMT,RTCB               GET @ OF FIRST SYSTEM TCB /CM'S/ 02720000                
       SPACE 1                                                          02730000                
*********************************************************************** 02740000                
*                                                                     * 02750000                
*      RECURSIVE PORTION OF POST                                      * 02760000                
*                                                                     * 02770000                
*      DETERMINE IF THE TWO FOLLOWING CONDITIONS EXIST...             * 02780000                
*                                                                     * 02790000                
*            1.  HAS THIS TASK ALREADY BEEN POSTED                    * 02800000                
*            2.  SEE IF THE TASK IS IN FACT WAITING FOR THIS EVENT    * 02810000                
*                                                                     * 02820000                
*********************************************************************** 02830000                
       SPACE 1                                                          02840000                
*********************************************************************** 02850000                
*      TEST TO SEE IF A TASK HAS BEEN POSTED + IF IT IS WAITING FOR   * 02860000                
*      THIS EVENT                                                     * 02870000                
*********************************************************************** 02880000                
       SPACE 1                                                          02890000                
PS0003 JF    *+3                       RESET THE FLASE BIT              02900000                
       TBN   TCBPMK(,RTCB),###         *M* HAS THE TCB ALREADY BEEN     02910000                
*                                      POSTED                           02920000                
PSMODA EQU   *-2                       EQUATE FOR INST. MOD.            02930000                
       TBN   TCBPMK+1(,RTCB),###       *M*  TEST THE SECOND BYTE OF     02940000                
*                                      THE POST MASK                    02950000                
PSMODB EQU   *-2                       EQUATE FOR INST. MOD.            02960000                
       JF    *+6                       NO, NOT YET POSTED               02970000                
       J     PS0010                    POSTED--SEE IF MORE TCBS TO LOOK 02980000                
*                                      AT                               02990000                
       SPACE 2                                                          03000000                
       TBN   TCBWMK(,RTCB),###         *M* SEE IF TCB HAS WAITED ON     03010000                
*                                      THIS SPEICIFIC EVENT             03020000                
PSMODF EQU   *-2                       EQUATE FOR INST. MOD.            03030000                
       TBN   TCBWMK+1(,RTCB),###       *M* CHECK SECOND WAIT BYTE       03040000                
PSMODC EQU   *-2                       EQUATE FOR INST. MOD.            03050000                
       JF    PS0010                    HASN'T WAITED--SEE IF MORE TCB   03060000                
*                                      TO LOOK AT                       03070000                
*********************************************************************** 03080000                
*      TASK HAS WAITED AND NOT YET BEEN POSTED FOR THIS EVENT         * 03090000                
*********************************************************************** 03100000                
       SPACE 1                                                          03110000                
*                                                                       03120000                
       SBN   TCBPMK(,RTCB),###         *M* SET POST BITS INTO TCB MASK  03130000                
PSMODD EQU   *-2                       EQUATE FOR INST. MOD.            03140000                
       SBN   TCBPMK+1(,RTCB),###    *M*SET POST BITS INTO TCB MASK      03150000                
PSMODE EQU   *-2                       EQUATE FOR INSTRUCTION MOD       03160000                
       SPACE 1                                                          03170000                
*********************************************************************** 03180000                
*      POST BITS ARE SET INTO TCB--DECREMENT THE EVENT COUNT BY ONE   * 03190000                
*      AND IF THE RESIDUAL EVENT COUNT IS ZERO THE TASK CAN BE MADE   * 03200000                
*      READY FOR EXECUTION.                                           * 03210000                
*********************************************************************** 03220000                
       SPACE 1                                                          03230000                
       SLC   TCBRCT(,RTCB),PSONE(1,RBAS) DECR THE RESIDUAL COUNT FIELD  03240000                
       JNZ   PS0010                    IF NOT ZERO, THE TASK IS NOT     03250000                
*                                      READY FOR EXECUTION              03260000                
       SBN   TCBTSK(,RTCB),TCBDSP      RESIDUAL IS ZERO--MAKE READY     03270000                
       SBF   CCDPFH,DPPOST             INDICATE THAT A TASK CAME READY  03280000                
       SPACE 1                                                          03290000                
*********************************************************************** 03300000                
*      GO TO THE NEXT TCB IF REQUIRED                                 * 03310000                
*********************************************************************** 03320000                
       SPACE 1                                                          03330000                
PS0010 TBN   PSCB(,RBAS),BIT0          ARE WE TO DO ALL TCB'S           03340000                
       JF    PSDONE                    NO, EXIT TO INVOKER              03350000                
       TBN   PSCB(,RBAS),BIT1          YES--ARE WE STILL IN THE SYTEM   03360000                
*                                      TCB CHAIN                        03370000                
       JF    PS0011                    NO, GO TO USER TCB @ ACCESS      03380000                
       CLI   TCBNXT-1(,RTCB),0         IS THIS THE LAST SYSTEM TCB      03390000                
       L     TCBNXT(,RTCB),RTCB        GET NEXT TCB @                   03400000                
       BNE   PS0003(,RBAS)             NOT THROUGH SYSTEM TCB'S, CHECK  03410000                
*                                      THE NEXT ONE FOR WAITING         03420000                
*                                                                       03430000                
       SBF   PSCB(,RBAS),BIT1          THROUGH SYSTEM TCB'S--TURN OFF   03440000                
*                                      THE SYSTEM TCB INDICATOR         03450000                
       L     CCLUTB,RTCB               GET 1ST USER TCB TO CHECK        03460000                
       B     PS0003(,RBAS)             GO CHECK OUT THE FIRST USER TCB  03470000                
       SPACE 1                                                          03480000                
*********************************************************************** 03490000                
*      SEE IF ANY REMAINING USER TCB'S ARE TO BE CHECKED AND EXIT     * 03500000                
*      IF NOT.                                                        * 03510000                
*********************************************************************** 03520000                
       SPACE 1                                                          03530000                
       AIF   (&MTK NE '1').NXTA        MULTI-TASK SYSTEM?               03540000                
PS0011 CLC   TCBNXT(2,RTCB),CCLUTB     THIS TCB POINT TO THE FIRST      03550000                
*                                      USER TCB THAT WAS CHECKED        03560000                
       JNE   PS0012                    NO--CONTINUE                     03570000                
.*                                                                      03580000                
       AGO   .NXTB                                                      03590000                
.NXTA  ANOP                                                             03600000                
PS0011 EQU   *                         EXIT TO INVOKER                  03610000                
.NXTB  ANOP                                                             03620000                
PSDONE L     CCARR,XR2                 CLOBBER TCB @ WITH RETURN ADDRESS03630000                
       LA    PSLEN(,XR2),XR2           STEP OVER INPUT PARAMETER LIST   03640000                
       ST    PSRET+3(,RBAS),XR2        STORE THE RETURN ADDRESS         03650000                
       B     CCPRST                    RESTORE THE INPUT REGISTERS      03660000                
PSRET  BC    ####,BR97                 RETURN TO INVOKER                03670000                
       SPACE 1                                                          03680000                
       AIF   (&MTK NE '1').PS12        MULTI-TASKING?                   03690000                
PS0012 L     TCBNXT(,RTCB),RTCB        GET NEXT USER TCB TO CHECK       03700000                
       B     PS0003(,RBAS)             AND CHECK IT OUT                 03710000                
.PS12  ANOP                            NO MULTI-USER TASKS              03720000                
*                                      END MACRO $E046                  03730000                
       MEND                                                             03740000