ASMB,R,Q,C     ** RT SCHEDULER MODULE **
      HED RTE SCHEDULER/MESSAGE PROCESSOR 
*     NAME:   SCHED 
*     SOURCE: 92060-18020 
*     RELOC:  92060-16020 
*     PGMR:   G.A.A.,L.W.A.,D.L.S.
*     DATE:   5\5\75
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
*  ***************************************************************
* 
      NAM SCHEDM 92060-16020 REV.1926 790506
* 
      SUP 
******************************************************************* 
* 
* 
***** AMD ***** JUL,73
***** DAS ***** APR,75
* 
******************************************************************* 
* 
*   SCHED ENTRY POINT NAMES 
* 
      ENT $LIST,$MESS,$CVT3,$CVT1,$ABRT,$TYPE 
      ENT $MPT1,$MPT2,$MPT3,$MPT4,$MPT5,$MPT6 
      ENT $PARS,$STRT,$SCD3,$INER,$MPT7,$ASTM 
      ENT $MPT8,$IDNO,$WORK,$WATR,$IDSM 
      ENT $MPT9,$RTST,$CVWD,$STRG,$IDEX 
      ENT $MPSA,$MSEX,$PBUF,$PTST 
* 
*   SCHED EXTERNAL REFERENCE NAMES
* 
      EXT $XSIO,$IOUP,$IODN,$ERMG,$DREQ 
      EXT $IOCL,$OTRL,$DREL 
      EXT $ERAB,$ZZZZ,$TIME,$PVCN 
      EXT $ERIN,$NOPG,$OPER,$ILST,$NOLG,$LGBS,$NMEM 
      EXT $XEQ,$TMRQ,$ONTM,$ALC,$RTN
      EXT $BRED,$TIMR,$ETTM,$TIMV,$TREM 
      EXT $RNTB,$CREL,$SYMG,$SDRL 
      EXT $ENDS,$ALDM,$DMAL,$MATA,$PRCN 
      EXT $MEU
ALDM  EQU $ALDM 
DMAL  EQU $DMAL 
PRCNG EQU $PRCN 
* 
* 
*******************MEU INSTRUCTIONS***********
**********************************************
      EXT $BLLO,$BLUP 
* 
******************************************************************* 
* 
*     THE SCHED MODULE OF HP2100 REAL TIME EXECUTIVE CONSISTS OF
* 
*        1.  LIST PROCESSORS
*        2.  LINK PROCESSORS
*        3.  OPERATOR INPUT MESSAGE PROCESSORS
*        4.  SYSTEM START UP AND OPER INPUT REQUEST ACKNOWLEDGE 
*        5.  MEMORY PROTECT VIOLATION SCHEDULER PREPROCESSORS 
*        6.  ABORT AND TERMINATION PROCESSORS 
* 
******************************************************************* 
      HED --BUFFERS, CONSTANTS, POINTERS, ETC 
* 
TEMP  LDA EQT11 ***TEMPORARY WORKING STORAGE AREA 
TEMP1 STA TEMP5   * 
TEMP2 LDB EQT12   * 
TEMP3 STB TEMP6   * 
TEMP4 JSB $RTN    *   THESE TEMPS ARE USED TO INITIALIZE
TEMP5 NOP         *** SYSTEM AVAILABLE MEMORY.
TEMP6 NOP         *         AND ALSO
TMP   JMP $ALC    *   USED BY $PARS AS CONTIGUOUS BUFFER SPACE
WORK  JMP GTFMG   * 
$WORK EQU WORK    * 
WPRIO NOP         * 
ASCI  BSS 1       * 
ASCI1 BSS 1     *** 
ASCI2 BSS 1 
DM5   DEC -5
* 
D2    DEC 2 
D4    DEC 4 
D5    DEC 5 
D6    DEC 6 
D7    DEC 7 
D9    DEC 9 
D14   DEC 14
D15   DEC 15
D17   DEC 17
* 
D1    OCT 1 
D3    DEC 3 
B77   OCT 77
B177  OCT 177 
B377  OCT 377 
* 
ZERO  REP 5          (NOTE: EQUATED TO $IDEX) 
      NOP 
DEF0  DEF ZERO
$IDEX EQU ZERO      (DUMMY ENTRY USED BY RTE-IV FMGR) 
      HED ID-SEGMENT MAP  ID-SEGMENT MAP  ID-SEGMENT MAP
*     WORD        USE 
*           15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0
*             !         !         !         !         !         ! 
*      1    LIST LINKAGE
*             !         !         !         !         !         ! 
*    2-6    5 WORD TEMPORARY AREA USED FOR SPECIAL FLAGS IN QUEUES ETC. 
*             !         !         !         !         !         ! 
*      7    PRIORITY
*             !         !         !         !         !         ! 
*    @ 8    PRIMARY ENTRY POINT 
*             !         !         !         !         !         ! 
*      9    POINT OF SUSPENSION (XSUSP) 
*             !         !         !         !         !         ! 
*      10   A REGISTER AT SUSPENSION (XA) 
*             !         !         !         !         !         ! 
*      11   B REGISTER AT SUSPENSION (XB) 
*             !         !         !         !         !         ! 
*      12   E/O REGISTERS AT SUSPENSION (XEO) 
*             !         !         !         !         !         ! 
*    @ 13   NAME ( FIRST AND SECOND CHARACTERS )
*             !         !         !         !         !         ! 
*    @ 14   NAME (THIRD AND FOURTH CHARACTERS)
*             !         !         !         !         !         ! 
*    @ 15   NAME (FIFTH CHARACTER)---- TM CL  AM SS --- TYPE ---
*             !         !         !         !         !         ! 
*      16   NA     NP  W  A      O      R  D         --- STATUS-
*             !         !         !         !         !         ! 
*      17   TIME LIST LINKAGE WORD
*             !         !         !         !         !         ! 
*    @ 18   RESOLUTION T  -------MULTIPLE-----------------------
*             !         !         !         !         !         ! 
*    @ 19   LOW ORDER 16 BITS OF EXECUTE TIME LESS 24 HRS IN 10'S MS. 
*             !         !         !         !         !         ! 
*    @ 20   HIGH ORDER 16 BITS OF EXECUTE TIME
*             !         !         !         !         !         ! 
*      21   BA  FW    AT  RM RE PW  RN --FATHER ID-SEG. NUMBER--
*             !         !         !         !         !         ! 
*      22   RP ---# OF PAGES---,--MPFTI-- .. ----PARTITION #----
*             !         !         !         !         !         ! 
*    @ 23   LOW MAIN ADDRESS
*             !         !         !         !         !         ! 
*    @ 24   HI MAIN ADDRESS + 1 
*             !         !         !         !         !         ! 
*    @ 25   LOW BASE PAGE ADDRESS 
*             !         !         !         !         !         ! 
*    @ 26   HI BASE PAGE ADDRESS + 1
*             !         !         !         !         !         ! 
*    @ 27   DISC ADDRESS (LU (15),TRACK (14-7),SECTOR(6-0)
*             !         !         !         !         !         ! 
*      28   SWAP DISC ADDRESS (LU (15),TRACK (14-7),#TRACKS(6-0)
*             !         !         !         !         !         ! 
*           15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0
* 
*    @      WORDS USED IN SHORT ID SEGMENTS 
      SKP 
*     WHERE THE FLAG BITS MEAN: 
* 
*     TM = TEMP LOAD (COPY OF ID-SEG NOT ON DISC) 
*     CL = CORE LOCK (MAY NOT SWAP) 
*     AM = ALL MEMORY (PROGRAM USES ALL OF ITS AREA)
*     SS = SHORT SEGMENT (INDICATES A 9-WORD ID-SEGMENT)
*     NA = NO ABORT (PASS ABORT ERRORS TO THE PROGRAM INSTEAD)
*     NP = NO PRAMS ALLOWED ON RESCHEDULE.
*     W  = WAIT BIT (WAITING FOR PROG. WHOES ID-SEG ADD. IS IN WD.2)
*     A  = ABORT ON NEXT LIST ENTRY FOR THIS PGM. 
*     O  = OPERATOR SUSPEND ON NEXT SCHEDULE ATTEMPT
*     R  = RESOURCE SAVE (SAVE RESOURCES WHEN SETING DORMANT) 
*     D  = DORMANT BIT (SET DORMANT ON NEXT SCHEDULE ATTEMPT) 
*     T  = TIME LIST ENTRY BIT (PROG IS IN THE TIME LIST) 
*     BA = BATCH (PROGRAM IS RUNNING UNDER BATCH) 
*     FW = FATHER IS WAITING (HE SCHEDULE WITH WAIT)
*     AT = ATTENTION BIT (OPERATOR HAS REQUESTED ATTENTION) 
*     RM = RE-ENTRENT MEMORY MUST BE MOVED BEFORE DISPATCHING PGM.
*     RE = RE-ENTRENT ROUTINE IN CONTROL NOW
*     PW = PROGRAM WAIT (SOME PROGRAM WANTS TO SCHEDULE THIS ONE )
*     RN = RESOURCE NUMBER EITHER OWNED OR LOCKED BY THIS PGM.
*     RP = RESERVED PARTITION FOR REQUESTING PROGRAMS ONLY. 
* 
* 
*     $LIST STATE TRANSITION TABLE: 
* 
*     THE FOLLOWING TABLE DETAILS THE STATE TRANSITIONS EFFECTED BY 
*     $LIST.  THE MAJOR STATES ARE 0 THRU 6 (DORMANT THRU OP-SUSP)
*     AND THE STATE MODIFIERS ARE THE ADDITIONAL BITS SET FROM TIME 
*     TO TIME IN THE STATUS WORD. THE BITS WHICH AFFECT OR ARE
*     MODIFIED BY $LIST ARE (SEE ABOVE DESCRIPTION):
* 
*     BIT WEIGHT    POSITION
*      O  10        9 
*      W  4         12
*      R  2         7 
*      D  1         6 
* 
*     THESE BITS ARE COMBINED TO FORM 16 SUBSTATES AS PER THE TABLE BELOW 
*     THE ENTRYS IN EACH SQUARE OF THE TABLE DEFINE THE NEXT STATE AS 
*     FOLLOWS:
* 
*     THE FIRST DIGIT IS THE REQUESTED MAJOR TRANSITION (FROM 
*     THE $LIST CALL).
*     THE SECOND TWO NUMBERS (SEPERATED BY A ".") DEFINE THE NEXT 
*     MAJOR STATE . SUBSTATE.  THUS 62.10 INDICATES A OP-SUSPEND
*     REQUEST (6) CAUSES A MOVEMENT TO I/O SUSPEND (2) SUBSTATE 10
*     (THE O BIT IS SET). 
*      A "*" AS THE DESTINATION INDICATES THE CURRENT STATE/SUB-
*     STATE I.E. NO CHANGE. 
*     ILLEGAL OR UNEXPECTED STATES ARE MARKED WITH "X"
*     ONLY EXPECTED CALLS ARE PLOTTED.
* 
*     IN GENERAL CODE EXTERNAL TO $LIST MOVES PROGRAMS FROM SUB-STATE 
*     TO SUB-STATE WHILE ONLY $LIST CAN MOVE A PROGRAM FROM ONE 
*     MAJOR STATE TO ANOTHER. 
      HED SYSTEM STATE TABLE******SYSTEM STATE TABLE*** 
*MAJOR STATE 0      1       2       3       4       5       6 
*SUB-STATES 
*---------!-----!-------!-------!-------!-------!-------!------ 
*    0      11.0  00.0    02.1    00.0    00.0    00.0    00.0
*                 22.0    11.0    11.0    11.0    11.0    11.0
*                 33.0    62.10   66.0    66.0    66.0
*                 44.0
*                 55.0
*                 66.0
*---------!-----!-------!-------!-------!-------!-------!------ 
*    1 D    X     X       02.1    X       X       X       X 
*                         10.0
*                         62.11 
*---------!-----!-------!-------!-------!-------!-------!------ 
*    2 R    11.0  00.2    02.3    00.2    00.2    00.2    06.3
*           66.3
*---------!-----!-------!-------!-------!-------!-------!------ 
*    3 RD   X     X       0*      X       X       X       0*
*                         10.2                            10.2
*---------!-----!-------!-------!-------!-------!-------!------ 
*    4 W    00.0  33.4    00.0    00.0    00.0    00.0    00.0
*                                 1*                      13.4
*                                 66.4
*---------!-----!-------!-------!-------!-------!-------!------ 
*    5 WD   X     X       X       X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
*    6 WR   0*    X       X       00.6    X       X       06.7
*           13.4
*           66.7
*---------!-----!-------!-------!-------!-------!-------!------ 
*    7 WRD  X     X       X       X       X       X       0*
*                                                         10.6
*---------!-----!-------!-------!-------!-------!-------!------ 
*   10 O    X     X       02.11   X       X       X       X 
*                         16.0
*                         6*
*---------!-----!-------!-------!-------!-------!-------!------ 
*   11 OD   X     X       0*      X       X       X       X 
*                         10.0
*                         6*
*---------!-----!-------!-------!-------!-------!-------!------ 
*   12 OR   X     X       02.13   X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
*   13 ORD  X     X       0*      X       X       X       X 
*                         16.3
*                         6*
*---------!-----!-------!-------!-------!-------!-------!------ 
*   14 OW   X     X       X       X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
*   15 OWD  X     X       X       X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
*   16 OWR  X     X       X       X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
*   17 OWRD X     X       X       X       X       X       X 
*---------!-----!-------!-------!-------!-------!-------!------ 
      HED REAL TIME SCHEDULER---LIST PROCESSOR SECTION--- 
* 
*        THE $LIST PROCESSOR SECTION OF THE HP-2100 REAL TIME 
*     EXECUTIVE PROCESSES THE FOLLOWING LIST REQUESTS 
*     1. DORMANT
*     2. SCHEDULE 
*     3. OPERATOR SUSPEND 
*     4. NON-OPERATOR SUSPEND 
*        A. I/O 
*        B. MEMORY AVAILABLE
*        C. DISC AVAILABLE
*     5. SEGMENT LOADING
* 
* 
* 
*        CALLING SEQUENCE 
* 
*               JSB $LIST 
*               OCT (ADDRESS CODE)(FUNCTION CODE) 
*               DEF (ADDRESS) <THIS WORD NOT ALWAYS REQUIRED> 
* 
*               IF A = 0, THEN NO MESSAGE 
*                  A NOT 0, THEN ADDR OF MESSAGE
*                  IF ERROR, (B) CONTAINS ASCII ERR CODE
*               WHERE 
*                   FUNCTION CODE 
*                       0 = DORMANT REQUEST 
*                       1 = SCHEDULE REQUEST
*                       2 = I/O SUSPEND REQUEST 
*                       3 = GENERAL WAIT LIST REQUEST 
*                       4 = MEMORY AVAILABEL REQUEST
*                       5 = DISK ALLOCATION REQUEST 
*                       6 = OPERATOR SUSPEND REQUEST
*                      17 = RELINK PROGRAM REQUEST
*                      10 THRU 16 ARE NOT ASSIGNED
* 
*                   ADDRESS CODE
*                       0 = ID SEGMENT NAME FOLLOWED BY 5 OPTIONAL
*                           PARAMETERS TO GO INTO TEMPORARY AREA OF ID SEG. 
*                       1 = ID SEGMENT ADDRESS
*                       2 = ASCII PROGRAM NAME ADDRESS
*                       3 = ID SEGMENT ADDRESS IN WORK <NO DEF ADDR.> 
*                       4 = ID SEGMENT ADDRESS IN B-REG<NO DEF ADDR.> 
*                       5 = ID SEGMENT ADDRESS IN XEQT <NO DEF ADDR.> 
*                       6 = ID SEG ADD FOLLOWED BY CONTENTS TO BE PUT 
*                           INTO "B-REG @ SUSP" WORD OF ID SEG. 
*                       7 = ID SEG NAME FOLLOWED BY 5 PARAMETERS TO GO
*                           INTO ID'S TEMPORARY AREA. 
* 
* 
*                   ADDRESS 
*                       KEYWORD, ID SEGMENT, OR 
*                       PROGRAM NAME ADDRESS AS SPECIFIED BY CODE 
*                       MUST NOT BE SUPPLIED FOR
*                       ADDRESS CODES 3 AND 4.
* 
      SKP 
$LIST NOP          ENTRY/EXIT 
      LDA $LIST,I  WORD 1 
      AND D15 
      STA L0091      STORE AWAY REQUEST CODE
      XOR $LIST,I  FORM ADDR CODE 
      ALF,ALF 
      RAL,RAL 
      CPA D4        ADDRESS IN B-REG? 
      JMP L0021     YES GO SET UP 
      CPA D3        ADDRESS IN WORK?
      JMP L0060     YES GO SET UP 
      LDB XEQT      PRESET FOR CURRENT EXECUTING PGM. 
      CPA D5        CURRENT PGM?
      JMP L0021     YES GO SET IT UP
      ISZ $LIST     STEP TO ADDRESS WORD
      LDB $LIST,I   GET IT TO B 
      CPA D1        IS ADDRESS NOW IN B?
      JMP L0021     YES GO SET IT UP
      CPA D2        DOES B POINT TO AN ASCII NAME?
      JMP DL02       YES, SO GO SEE IF PROGRAM EXISTS.
* 
      STB RETRN     B-REG MAY  BE A RETURN ADDRESS, SO SAVE.
      ISZ $LIST     BUMP POINTER TO EITHER PROG.NAME OR ADD.
      CPA D6
      JMP DL06
      LDB $LIST,I   GET THE ID ADD. OR PROG.NAME ADDRESS. 
      SZA,RSS       IF ADDRESS = 0 THEN ID ADDRESS. 
      JMP DL00      IF NON ZERO, THEN PROCESS AS ADDRESS
* 
      JSB TNAME       OF PROGRAM NAME.  GO GET ID ADDRESS.
      SEZ           IF PROGRAM DOES NOT 
      JMP NPRG       EXIST, THEN TELL FOLKS.
* 
DL00  JSB DORM?     SETUP THE $LIST PRAMS & SEE IF DORMANT. 
      SZA           IS THE PROGRAM DORMANT? 
      JMP L0074      NO, GO TELL CALLER TO FORGET IT. 
* 
*     THE FOLLOWING  ROUTINE   IS USED FOR ADDRESS CODES 0 AND 7
*     TO STUFF PARAMETERS INTO THE PROGRAM'S ID SEGMENT.  CODES 
*     0 AND 7 ARE PROVIDED FOR DRIVERS WHICH WISH TO SCHEDULE 
*     PROGRAMS. 
* 
*     ASSUMPTIONS 
*        1) AT LEAST ONE PARAMETER MUST BE SUPPLIED(I.E. ONE DEF).
*        2) THE RETURN ADDRESS MUST END THE PARAMETERLIST.
*        3) 5 PARAMETERS ARE THE MAXIMUM. 
*        4) ABSOLUTELY NO ERROR CHECKING IS DONE. 
* 
      ISZ $LIST     BUMP $LIST TO POINT TO FIRST PARAMETER. 
      LDB RETRN     USE RETURN ADDRESS
      CMB,INB        TO DETERMINE HOW MANY
      ADB $LIST       PARAMETERS TO PASS. 
      STB DM5       SAVE TO FAKE OUT SUBROUTINE *PRAM*. 
* 
      LDA WORK      SET A-REG TO ID ADDRESS.
      LDB $LIST     SET B-REG TO PARAMETER'S ADDRESS. 
      ADB SIGN      SET SIGN BIT OF B-REG.
      JSB PRAM      GO STUFF THE ID ADDRESS.
* 
      LDA DMM5      RESET -5 CONSTANT 
      STA DM5        TO MINUS 5.
      CCA           SET UP THE RETURN 
      ADA RETRN      ADDRESS FOR $LIST'S
      STA $LIST       REURN.
      JMP L0275     NOW GO SCHEDULE THE PROGRAM.
* 
DL06  LDA $LIST,I   SET A-REG TO "B-REG @ SUSP".
      STA TEMPX      AND SAVE TEMPORRIALLY. 
      JSB DORM?     SET UP LIST PARAMETERS & CHECK FOR DORMANT. 
      SZA           IF PROGRAM IS DORMANT,
      JMP L0075      THEN TELL CALLER TO FORGET IT. 
      LDB WORK      PUT "B-REG @ SUSP"
      ADB D10        VALUE INTO THE 
      LDA TEMPX       PROPER ID 
      STA B,I          SEGMENT
      JMP L0275         WORD.GO SCHEDULE. 
* 
DL02  JSB TNAME     NOW ITS IN B
      SEZ,RSS       SKIP IF NOT FOUND OR SHORT ID SEG.
      JMP L0021    PROG FOUND, SO GO  PROCESS 
      JMP NPRG1 
* 
NPRG  CCA          RESTORE
      ADA RETRN     $LIST FOR 
      STA $LIST      RETURN.
NPRG1 LDA $NOPG    NO SUCH PROG ERROR MESSAGE 
      LDB D5       NO SUCH PROG ERROR CODE
      JMP L0015    GO TO RETURN 
* 
*     PROCESS ID SEGMENT ACCORDING TO REQUEST CODE
* 
L0060 LDB WORK      SET B-REG TO ID ADDRESS.
* 
L0021 JSB DORM?     GET CURRENT PROGRAM 
      LDB L0091      REQUEST CODE.
      SZB,RSS       CHECK IF DORMANT REQUEST
      JMP L0100     DORMANT REQUEST 
      CPB D1        CHECK IF SCHEDULE REQUEST 
      JMP L0200     YES 
      CPB D6        CHECK IF OPERATOR SUSPEND REQUEST 
      JMP L0300     YES 
      CPB D15       CHECK IF LINKAGE UPDATE REQUEST 
      JMP L0135     YES 
      JMP L0400     MUST BE A SIMPLE LIST MOVE
* 
L0074 CCA           RESTORE 
      ADA RETRN      $LIST
      STA $LIST        FOR RETURN.
L0075 LDA $ILST    ILLEGAL STATUS MESSAGE ADDRESS 
      LDB D3       ILLEGAL STATUS ERROR CODE
      JMP L0015     GO TO EXIT
* 
RETRN NOP 
DMM5  DEC -5
TEMPX NOP 
      SKP 
* 
************************************************************
* 
*     THE DORM? SUBROUTINE IS CALLED BY THE $LIST PROCESSOR 
*     FOR ALL CALLS.  IT'S PRIMARY PURPOSE IN LIFE IS TO SET
*     UP WORK, WPRIO, WSTAT AND L0090.  IN ADDITION, IT RETURNS 
*     L0090, THE PROGRAM'S CURRENT STATUS, IN THE A REGISTER. 
*     $LIST FUNCTION CODES OF 0, 6 AND 7(THE DRIVER $LIST CALLS)
*     USE THIS SUBROUTINE TO SEE IF THE PROGRAM IS DORMANT. 
* 
*     CALLING SEQUENCE: 
*          LDB ID-ADDRESS 
*          JSB DORM?
* 
*     RETURN: 
*          A-REG = CURRENT STATUS(BITS 0-6) 
* 
************************************************************* 
* 
DORM? NOP 
      STB $WORK     SET UP THE ID ADDRESS FOR LATER.
      ADB D6         AND
      STB WPRIO       THE PRIORITY WORD 
      ADB D9           AND
      STB WSTAT         THE STATUS WORD.
      LDA B,I        GET THE OLD STATUS 
      AND D15         AND KEEP ONLY LOWER 
      STA L0090        STATUS BITS. 
      JMP DORM?,I    RETURN TO USER.
      HED LIST PROCESSOR--DORMANT REQUEST 
* 
*         DORMANT REQUEST 
* 
*        THE DORMANT REQUEST IS PROCESSED AS FOLLOWS: 
*              IF ABORT BIT SET, MAKE PROGRAM DORMANT 
*              IF ALREADY DORMANT, RETURN 
*              IF SCHEDULED, THEN ENTERED INTO DORMANT LIST, POINT
*                   OF SUSPENSION CLEARED.
*                   IF ID SEGMENT ADDRESS IS SAME AS RESIDING 
*                   BACKGROUND DISC RESIDENT PROGRAM, THEN BKRES
*                   FLAGS ARE CLEARED SO ANOTHER PROGRAM MAY BE 
*                   LOADED INTO THE AREA. 
*                   IF ID SEGMENT ADDRESS IS SAME AS RESIDING REAL
*                   TIME DISC RESIDENT PROGRAM, THEN RDISK FLAGS
*                   ARE CLEARED SO ANOTHER PROGRAM MAY BE LOADED
*                   INTO THE AREA.
*              IF NOT ONE OF ABOVE, THEN DORMANT BIT SET IN STATUS
      SPC 1 
L0100 LDB WSTAT,I  CHECK IF ABORT BIT SET 
      BLF 
      RBL,SLB,BLF 
      JMP L0115    YES, SO GO MAKE DORMANT
      CPA D2        IF I/O SUSPENDED
L0103 ALF,SLA,RAL   SET DORMANT BIT 
      JMP L0350     ELSE GO CHECK RESOURCE BIT
* 
      IOR WSTAT,I   IF I-O SUSP.,MERGE CURRENT STATUS AND SET 
      AND CL.NP      (CLEAR NO PARMS BIT)     *1926DLS* 
      JMP L0375      NP BIT IF DOER IS NOT CUR.PROG.(TO SAVE TEMPS).
* 
L0115 LDA WORK     CLEAR ID SEG TEMP AND SET B
      LDB DEF0
      JSB PRAM
      LDB WORK      SET FLAG FOR DISPATCHER 
      CLA 
      CPB XEQT
      STA $PVCN 
      ADB D8        LINK THROUGH XSUSP
      LDA $ZZZZ     SO RESIDENT FLAGS 
      STB $ZZZZ     ARE 
      STA B,I       CLEARED 
      ADB D6        INDEX TO TYPE WORD
      LDA B,I       AND CLEAR 
      AND NCLAM     THE CORE LOCK AND ALL OF MEMORY 
      STA B,I       BITS
      CLA 
      STA XEQT      CLEAR CURRENT PGM FLAG IN CASE IT IS
      SPC 1 
L0130 STA WSTAT,I   SET THE NEW STATUS
      AND D15       GET THE ADDITION CODE 
L0135 LDB L0090     SET B FOR LINK
      JSB LINK      RELINK THE PROG 
      CLA           SET FOR NORMAL RETURN 
      LDB $WORK     SET B-REG=ID ADDRESS OF PROG
L0015 ISZ $LIST     STEP TO RETURN ADDRESS
      JMP $LIST,I   LOOK MA!  NO LABEL! 
      SPC 1 
      SPC 1 
L0350 SLB,RSS       IF RESOURCE BIT NOT SET 
      JMP L0115     GO MAKE DORMANT 
      CPA D6        IF OPERATOR SUSPENDED 
      JMP L0103     GO SET DORMANT BIT TOO. 
* 
L0355 LDA WSTAT,I   GET OLD STATUS
      AND CLD.R     CLEAR THE "R" AND "D" BITS
L0375 LDB WORK      IF NOT CURRENT
      CPB XEQT      PROGRAM THEN
      RSS 
      IOR B20K      SET THE NO PRAMS BIT. 
      JMP L0130     GO PUT IN THE DORM LIST 
      SPC 2 
L0090 NOP 
L0091 NOP 
      SPC 1 
NCLAM OCT 177637
CL.NP OCT 157777                              *1926DLS* 
      HED LIST PROCESSOR--SCHEDULE REQUEST
* 
*     SCHEDULE REQUEST
* 
*        THE SCHEDULE REQUEST IS PROCESSED AS FOLLOWS:
*              IF ABORT BIT SET, STORE ID SEGMENT ADDRESS SUCH THAT 
*                   PROGRAM WILL BE ABORTED AT NEXT ENTRY FROM XEQ
*              IF DORMANT BIT SET, GO TO DORMANT REQUEST
*              IF OPERATOR-SUSPEND BIT SET, GO TO OPERATOR-SUSPEND
*                   REQUEST 
*              IF SCHEDULED, THEN STATUS ERROR EXIT 
*              IF CURRENT STATUS NOT ONE OF ABOVE, THE PROGRAM IS 
*                   ENTERED INTO THE SCHEDULE LIST. 
* 
L0200 CPA D6        IF OP-SUSP
      JMP L0250     GO CHECK FOR DORMANT BIT
      LDB WSTAT,I   GET WHOLE STATUS WORD 
      CPA D2        IF I/O SUSP. THEN 
      BLF,SLB,BLF   ROTATE AND SKIP 
      JMP L0255     ELSE GO CHECK WAIT BIT
* 
      RBR,SLB,RBL   IF OP-SUSP BIT SET
      JMP L0220     GO CHECK FURTHER
* 
L0270 CLA,INA       SET A FOR SCHEDULE
      RBL           DORM BIT TO 15
      SSB           IF DORM BIT SET 
      JMP L0100     GO SET DORMANT
* 
*     CHECK FOR SERIAL REUSABLE OR SAVE RESORCES OR 
*     OP SUSPEND TERMINATION LAST TIME THROUGH. 
* 
L0275 LDA L0090     GET THE CURRENT STATUS. 
      SZA           IF 0
      CPA D6         OR 6, THEN 
      RSS             CHECK ON THE PROGS LAST PARTITION.
      JMP L0290     ELSE, GO SCHEDULE THE PROGRAM.
* 
      LDB WORK      GET THE ID ADDRESS AND
      ADB D14        INDEX TO THE TYPE
      LDA B,I         WORD AND GET
      AND D15          TYPE ONLY. 
      CPA D1        NOW IF ITS MEMORY RESIDENT, THEN NO 
      JMP L0290      PARTITION SO JUST SCHEDULE.
* 
      ADB D7        MUST BE 1ST DISPATCH & DISC RESIDENT. 
      LDA B,I       GET THE PARTITION WORD. 
      AND B77       USE IT TO INDEX 
      MPY D6         INTO THE $MATA 
      ADA $MATA       TABLE.
      ADA D3        CHECK TO SEE
      LDA A,I        IF THE D BIT 
      AND B20K        IS SET. 
      SZA,RSS       IF NOT SET, THEN
      JMP L0290      GO SCHEDULE IT.
      LDA WORK      GET THE ID ADDRESS AND MOVE 
      JSB DMAL       INTO THE ALLOCATED LIST. 
* 
L0290 CLA,INA       SET FOR SCHEDULE AND
      JMP L0130      THEN DO IT TO IT !!! 
* 
L0220 RBL,SLB       CHECK RESOURCE BIT
      JMP L0230     IF SET GO CLEAR OP-SUSP 
      SSB           IF DORM BIT SET 
      JMP L0100     GO MAKE DORMANT 
* 
L0230 LDA B1004     CLEAR THE OP-SUSP BIT AND 
      JMP L0280     GO OP-SUSP THE PGM. 
* 
L0250 LDA WSTAT,I   IF OP-SUSP BIT SET
      AND B100      AND DORM BIT SET
      SZA 
      JMP L0355     GO CLEAR BIT AND SET DORMENT
* 
L0255 LDA WSTAT,I   IF WAIT BIT SET 
      ALF,SLA,ALF   THEN
      ALF,SLA,ALF   GO MOVE TO WAIT LIST (SKIPS)
      JMP L0270     ELSE, SCHEDULE THE PROGRAM
* 
      XOR D3        CHANGE STATUS TO 3
      AND D15 
L0280 XOR WSTAT,I   AND 
      JMP L0130     GO RELINK 
      HED  LIST PROCESSOR--SUSPEND REQUESTS 
* 
*     OPERATOR SUSPEND REQUEST
* 
*        THE OPERATOR-SUSPEND REQUEST IS PROCESSED AS FOLLOWS:
                                                          