ASMB,R,L,C     **   SCHEDULER MODULE ** 
*                   COMPARED WITH RTE-II LISTING ON 750729
      HED RTE SCHEDULER/MESSAGE PROCESSOR 
*     NAME:   XMSC
*     SOURCE: PROD.-SOUR. 
*     RELOC:  PROD.-RELO. 
*     PGMR:   G.A.A.,L.W.A.,E.J.W.
*     DATE:   DATE
* 
*  ***************************************************************
*  * (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 XMSC,0 760608 
* 
      SUP 
******************************************************************* 
***** AMD ***** JUL,73
***** DSD ***** APR,75
******************************************************************* 
* 
*   SCHED ENTRY POINT NAMES 
* 
      ENT $LIST,$CVT3,$CVT1,$ABRT,$TYPE 
      ENT $MPT2,$INER,$MSEX 
      ENT $STRT,$SCD3 
      ENT $MPT8,$WORK,$WATR 
* 
*   SCHED EXTERNAL REFERENCE NAMES
* 
      EXT $ERMG 
      EXT $SCLK 
      EXT $ZZZZ,$PVCN 
      EXT $NOPG,$ILST 
      EXT $XEQ,$ALC,$RTN
      EXT $SYMG 
      EXT $SABR 
* 
*     UNL           $TEMP$ SUPPRESS LONG COMMENTS ******* 
      UNL           $TEMP$
* 
******************************************************************* 
* 
*     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 
* 
******************************************************************* 
* 
      LST           $TEMP$
*         --BUFFERS, CONSTANTS, POINTERS, ETC 
* 
$STRT EQU *         SYSTEM INITIALIZATION ENTRY POINT 
* 
T4    JSB PATCH     ***DEBUG
* 
T0    JMP TEMPP  -NOP-  BECOMES NOP AFTER STARTUP 
ST2   JSB $RTN      RE-INITIALIZE MEMORY
T1     NOP           WITH MAX 
T2     NOP
ST3   JMP TEMP5 -NOP-  BECOMES NOP AFTER STARTUP
* 
      EXT $CLCH,$ETEQ 
      LDA EQT#      ***DEBUG*** 
      CMA,INA       ***DEBUG*** 
      STA PATCH     ***DEBUG*** 
      LDA EQTA      ***DEBUG*** 
      STA PTR       ***DEBUG*** 
EQLOP STA PTR       ***DEBUG*** 
      JSB $ETEQ     ***DEBUG*** 
      CLA           ***DEBUG*** 
      STA EQT1,I    ***DEBUG*** 
      STA EQT15,I   ***DEBUG*** 
      LDA EQT5,I    ***DEBUG*** 
      AND C140K     ***DEBUG*** 
      STA EQT5,I    ***DEBUG*** 
      JSB $CLCH     ***DEBUG*** 
      LDA PTR       ***DEBUG*** 
      ADA D15       ***DEBUG*** 
      ISZ PATCH     ***DEBUG*** 
      JMP EQLOP     ***DEBUG*** 
* 
      LDB KEYWD     ***DEBUG*** 
      STB PTR       ***DEBUG*** 
RSLOP LDB PTR,I     ***DEBUG*** 
      SZB,RSS       ***DEBUG*** 
      JMP RSDON     ***DEBUG*** 
      ADB D20       ***DEBUG*** 
      LDA B,I       ***DEBUG*** 
      AND CLRPA     ***DEBUG*** 
      STA B,I       ***DEBUG*** 
      LDA PTR,I     ***DEBUG*** 
      JSB $ABRT     ***DEBUG*** 
      ISZ PTR 
      JMP RSLOP     ***DEBUG*** 
RSDON NOP           ***DEBUG*** 
      JSB $SCLK 
      CLA           ***DEBUG*** 
      STA FLG       ***DEBUG*** 
      STA OPATN     ***DEBUG*** 
      JMP $TYPE     ***DEBUG*** 
* 
      JMP $XEQ
* 
OPATN EQU 1734B     ***DEBUG*** 
CLRPA OCT 6400      ***DEBUG*** KEEP ONLY RM,RE,RN
C140K OCT 37777 
      EXT $MPFT,$EMRP ***DEBUG*** 
PATCH NOP           ***DEBUG*** 
      CCA           ***DEBUG*** 
      ADA AVMEM     ***DEBUG*** 
      STA $EMRP     ***DEBUG*** 
      LDA RTORG     ***DEBUG*** 
      STA MPFT      ***DEBUG*** 
      STA MPFT+1    ***DEBUG*** 
      STA MPFT+3    ***DEBUG*** 
      STA MPFT+4    ***DEBUG*** 
      LDA DMPFT     ***DEBUG*** 
      STA $MPFT     ***DEBUG*** 
      LDA B14       ***DEBUG*** 
      STA SWAP      ***DEBUG*** 
      LDB KEYWD     ***DEBUG*** 
      STB PTR       ***DEBUG*** 
      CLB           ***DEBUG*** 
IDLOP LDA PTR,I     ***DEBUG*** 
      SZA,RSS       ***DEBUG*** 
      JMP IDDON     ***DEBUG*** 
      ADA D18       ***DEBUG*** 
      STB A,I       ***DEBUG*** 
      INA           ***DEBUG*** 
      STB A,I       ***DEBUG*** 
      INA           ***DEBUG*** 
      STB A,I       ***DEBUG*** 
      INA           ***DEBUG*** 
      STB A,I       ***DEBUG*** 
      ISZ PTR       ***DEBUG*** 
      JMP IDLOP     ***DEBUG*** 
* 
IDDON STB T4        ***DEBUG*** 
      JMP PATCH,I   ***DEBUG*** 
* 
D18   DEC 18        ***DEBUG*** 
B14   OCT 14        ***DEBUG*** 
PTR   OCT 0         ***DEBUG*** 
DMPFT DEF MPFT      ***DEBUG*** 
MPFT  OCT 0,0,0,0,0 ***DEBUG*** 
* 
TEMPP LDA AVMEM ***TEMPORARY WORKING STORAGE AREA 
TEMP  STA T1      *      DO NOT REARRANGE!
TEMP1 CMA,INA     * 
TEMP2 ADA BKORG   * 
TEMP3 STA T2      * 
TEMP4 JMP ST2     *   THESE TEMPS ARE USED TO INITIALIZE
TEMP5 CLA         *** SYSTEM AVAILABLE MEMORY.
TEMP6 STA T0      *         AND ALSO
TMP   STA ST3     *   USED BY $PARS AS CONTIGUOUS BUFFER SPACE
TEMPH JMP $ALC    *            TBUF DEF TEMP5 
$WORK JSB $ZZZZ   *           TBUFS DEF TEMP5+7 
WPRIO NOP         * 
ASCI  NOP         * 
ASCI1 NOP         * 
ASCI2 JMP $ERMG *** 
WSTAT NOP 
DM5   DEC -5
* 
D2    DEC 2 
D4    DEC 4 
D5    DEC 5 
D6    DEC 6 
D9    DEC 9 
D15   DEC 15
* 
D1    OCT 1 
D3    DEC 3 
* 
ZERO  REP 5 
      NOP 
DEF0  DEF ZERO
      UNL           $TEMP$
      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
*                       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.> 
* 
* 
*                   ADDRESS 
*                       KEYWORD, ID SEGMENT, OR 
*                       PROGRAM NAME ADDRESS AS SPECIFIED BY CODE 
*                       MUST NOT BE SUPPLIED FOR
*                       ADDRESS CODES 3 AND 4.
* 
      LST           $TEMP$
      SKP 
$LIST OCT 1        ENTRY/EXIT (INIT.#0 FOR DISPATCHER)
      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
      SPC 1 
      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
* 
L0021 STB $WORK     SET ADDRESS IN WORK 
* 
L0060 LDA $WORK    ID SEGMENT ADDRESS 
      ADA D6
      STA WPRIO    PRIORITY ADDRESS 
      ADA D9
      STA WSTAT    STATUS ADDRESS 
      LDA WSTAT,I 
      AND D15 
      STA L0090    STORE CURRENT PROG STATUS
      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
* 
L0075 LDA $ILST    ILLEGAL STATUS MESSAGE ADDRESS 
      LDB D3       ILLEGAL STATUS ERROR CODE
      JMP L0015     GO TO EXIT
      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
* 
L0105 IOR WSTAT,I   MERGE THE CURRENT STATUS
      STA WSTAT,I   RESET THE NEW STATUS
      JMP L0014    GO TO EXIT 
* 
L0350 EQU *         NO RESOURCES IN 
L0115 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 
      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 
L0014 CLA           SET FOR NORMAL RETURN 
L0015 ISZ $LIST     STEP TO RETURN ADDRESS
      JMP $LIST,I   LOOK MA!  NO LABEL! 
      SPC 1 
* 
L0355 LDA WSTAT,I   GET OLD STATUS
      AND CLD.R     CLEAR "R" AND "D" (BITS 7,6)
      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 
B20K  OCT 20000 
      SPC 1 
      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
      JMP L0130     SCHEDULE
* 
L0220 RBL           CHECK RESOURCE BIT (EXCEPT IN M-I)
      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:
*              IF DORMANT OR OPERATOR SUSPENDED, STATUS ERROR!
*              IF SCHEDULED, ADD TO OPERATOR SUSPEND LIST 
*              IF NOT ONE OF ABOVE, SET OPERATOR-SUSPEND BIT
* 
L0300 LDB WSTAT,I   GET THE FULL STATUS WORD
      SZB           IF ZERO (DORMANT) 
      CPA D6         OR OP-SUSP 
      JMP L0075     REJECT THE REQUEST
* 
      CPA D2        IF I/O SUSP 
      JMP L0310     GO SET TO "O" BIT 
* 
      JMP L0400     ELSE GO RELINK I.E. SET OP-SUSP.
* 
L0310 LDA B1000     SET OPER-SUSP BIT IN STATUS 
      JMP L0105     GO SET BIT AND EXIT 
      SPC 1 
* 
*     NON-OPERATOR SUSPEND REQUEST
* 
*        THE NON-OPERATOR SUSPEND REQUEST IS PROCESSED AS FOLLOWS:
*              THE PROGRAM IS ENTERED INTO THE REQUESTED LIST AND 
*              THE NEW STATUS REPLACES THE 4 LOW ORDER BITS OF THE
*              PROGRAM STATUS-THUS SAVING THE DORMANT OR OPERATOR-
*              SUSPEND BITS THAT MAY BE PRESENT.
* 
* 
L0400 LDA WSTAT,I  UPDATE STATUS SAVING ALL 
      AND C17      BUT LOW 4 BITS 
      IOR L0091 
      JMP L0130    GO TO EXIT 
      SPC 1 
C17   OCT 177760
B100  OCT 100 
B1004 OCT 1004
CLD.R OCT 57460     CLEARS STATUS, R, D, NP, AND NA BITS
      HED LINK UPDATE PROCESSOR 
* 
*        THE LINK PROCESSOR OF THE REAL TIME EXECUTIVE. 
*     1. REMOVES A PROGRAM FROM A LIST
*     2. ENTERS THE PROGRAM INTO ANOTHER LIST AT THE PROPER PLACE 
*        ACCORDING TO PRIORITY LEVEL. 
* 
* 
* 
*     CALLING SEQUENCE
* 
*         LDB CODE1 
*         LDA CODE2 
*         JSB LINK
* 
*              WHERE
*                CODE1 = CODE OF REMOVAL LIST 
*                CODE2 = CODE OF INSERTION LIST 
*              THE ID SEGMENT IS ASSUMED TO BE LOCATED IN WORK
*              AND WPRIO SET
* 
* 
*        THE REMOVAL OF PROGRAM FROM A LIST CONSISTS OF:
*              1. IF I/O LIST (CODE 2), THEN THIS IS SPECIAL CASE 
*                 AND DOES NOT REQUIRE REMOVAL. 
*              2. IF NULL LIST, THEN ERROR EXIT TAKEN.
*              3. IF FIRST AND ONLY PROGRAM IN LIST, THEN LIST
*                 VALUE SET TO ZERO.
*              4. IF FIRST PROGRAM IN LIST, BUT NOT THE ONLY
*                 PROGRAM IN LIST(LINKAGE NOT ZERO), THEN SET LIST
*                 VALUE TO THE LINKAGE VALUE. 
*              5. IF IN MIDDLE OF LIST, THE LINKAGE OF THE ID SEG 
*                 MENT WHICH POINTS TO THE PROGRAM TO BE REMOVED
*                 IS SET TO THE LINKAGE VALUE OF THE PROGRAM THAT 
*                 IS REMOVED. 
*              6. IF LAST PROGRAM IN LIST, THE LINKAGE VALUE OF 
*                 PREVIOUS PROGRAM IN LIST IS SET TO ZERO.
* 
LINK  NOP           ENTRY/EXIT
      SZB           IGNOR DORMANT AND 
      CPB D2        I/O LIST REQUESTS 
      JMP LK100      YES, SEE IF ADDITION.
      ADB LLIST     ADD TOP OF LIST POINTER 
* 
LK010 STB TEMP     TOP OF REMOVAL LIST
      LDB B,I      GET TOP OF LIST POINTER
      SZB,RSS      END OF LIST? 
      JMP LK150     YES, RETURN 
      CPB $WORK    MATCHES PROGRAM? 
      RSS           YES 
      JMP LK010     NO, KEEP SEARCHING
      LDB B,I      UPDATE LINKAGE TO BYPASS 
      STB TEMP,I   THE DELETED ID SEG 
                                      