ASMB,R,L,C     ** RTE-M I  SCHEDULER MODULE **
      HED ** RTE-M I  SCHEDULER MODULE ** 
* 
*     NAME  : $MSC1 
*     SOURCE: 92064-18001 
*     RELOC:  92064-16001 
*     PROGMR: E.J.W.,J.U.F. 
*             BASED ON RTE-III VERSIONS G.A.A.,L.W.A.,D.L.S.
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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 $MSC1,0  92064-16001  REV.1940  790712
* 
      SUP 
*   SCHED ENTRY POINT NAMES 
* 
      ENT $LIST,$MESS,$CVT3,$CVT1,$ABRT,$TYPE 
      ENT $MPT2,$PRAM,$TNAM 
      ENT $PARS,$STRT,$SCD3,$INER,$ASTM 
      ENT $MPT8,$WORK,$WATR 
      ENT $MSEX,$MSBF,$LCTU,$RCTU 
* 
*   SCHED EXTERNAL REFERENCE NAMES
* 
      EXT $XSIO,$IOUP,$IODN,$ERMG 
      EXT $IOCL,$LUPR,$EQST,$SCLK 
      EXT $ZZZZ,$CHTO,$PVCN 
      EXT $ERIN,$NOPG,$OPER,$ILST 
      EXT $XEQ,$ONTM,$ALC,$RTN
      EXT $SYMG,.MVW
      EXT $BLRQ,$ITRQ,$TIRQ,$TMRQ 
      EXT $SABR,$STRQ,$PRRQ 
* 
* 
******************************************************************* 
* 
*     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 
* 
******************************************************************* 
* 
*         --BUFFERS, CONSTANTS, POINTERS, ETC 
* 
$STRT EQU *         SYSTEM INITIALIZATION ENTRY POINT 
* 
T4    JMP RECON     ***TRY RESTART
* 
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#      ***TRY RESTART*** 
      CMA,INA       ***TRY RESTART*** 
      STA TEMP1     ***TRY RESTART*** 
      LDA EQTA      ***TRY RESTART*** 
      STA TEMP2     ***TRY RESTART*** 
EQLOP STA TEMP2     ***TRY RESTART*** 
      JSB $ETEQ     ***TRY RESTART*** 
      CLA           ***TRY RESTART*** 
      STA EQT1,I    ***TRY RESTART*** 
      STA EQT15,I   ***TRY RESTART*** 
      LDA EQT5,I    ***TRY RESTART*** 
      AND C140K     ***TRY RESTART*** 
      STA EQT5,I    ***TRY RESTART*** 
      JSB $CLCH     ***TRY RESTART*** 
      LDA TEMP2     ***TRY RESTART*** 
      ADA D15       ***TRY RESTART*** 
      ISZ TEMP1     ***TRY RESTART*** 
      JMP EQLOP     ***TRY RESTART*** 
* 
      LDB KEYWD     ***TRY RESTART*** 
      STB TEMP2     ***TRY RESTART*** 
RSLOP LDB TEMP2,I   ***TRY RESTART*** 
      SZB,RSS       ***TRY RESTART*** 
      JMP RSDON     ***TRY RESTART*** 
      ADB D20       ***TRY RESTART*** 
      LDA B,I       ***TRY RESTART*** 
      AND CLRPA     ***TRY RESTART*** 
      STA B,I       ***TRY RESTART*** 
      LDA TEMP2,I   ***TRY RESTART*** 
      JSB $ABRT     ***TRY RESTART*** 
      ISZ TEMP2 
      JMP RSLOP     ***TRY RESTART*** 
RSDON NOP           ***TRY RESTART*** 
      JSB $SCLK 
      CLA           ***TRY RESTART*** 
      STA FLG       ***TRY RESTART*** 
      STA SKEDD     ***TRY RESTART*** 
      STA OPATN     ***TRY RESTART*** 
      INA           ***TRY RESTART*** 
      STA $LIST     ***TRY RESTART*** 
      JMP $TYPE     ***TRY RESTART*** 
* 
* 
SKEDD EQU 1711B     ***TRY RESTART*** 
OPATN EQU 1734B     ***TRY RESTART*** 
CLRPA OCT 6400      ***TRY RESTART*** KEEP ONLY RM,RE,RN
C140K OCT 37777 
* 
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 
WORK  EQU $WORK 
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 
B77   OCT 77
B377  OCT 377 
* 
ZERO  REP 5 
      NOP 
DEF0  DEF ZERO
      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 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 
      CPA D2        DOES B POINT TO AN ASCII NAME?
      JMP DL02       YES, SO GO SEE IF PROGRAM EXISTS.
      CPA D6
      JMP DL06
* 
      STB RETRN     B-REG MUST BE A RETURN ADDRESS, SO SAVE.
      ISZ $LIST     BUMP POINTER TO EITHER PROG.NAME OR ADD.
      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 $TNAM       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 L0075      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 L0290     NOW GO SCHEDULE THE PROGRAM.
* 
DL06  ISZ $LIST     BUMP TO FUTURE B-REG @ SUSP.
      LDA $LIST,I   SET A-REG TO "B-REG @ SUSP".
DL062 STA TEMPX      AND SAVE TEMPORRIALLY. 
      JSB DORM?     SET UP LIST PRAMS & 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 L0290         WORD.GO SCHEDULE. 
* 
DL02  JSB $TNAM     NOW ITS IN B
      SEZ,RSS       SKIP IF NOT FOUND OR SHORT ID SEG.
      JMP L0021    PROG FOUND, SO GO  PROCESS 
* 
NPRG  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
* 
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 
SIGN  OCT 100000
      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
* 
L0105 IOR WSTAT,I   IF I-O SUSP., MERGE CURR STATUS, SET NP 
      JMP L0375     IF DOER IS NOT CURRENT PROG 
* 
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 
      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 
      LDB WORK      .RETURN ID ADDRESS OF PROG
L0015 ISZ $LIST     STEP TO RETURN ADDRESS
      JMP $LIST,I   LOOK MA!  NO LABEL! 
      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 "R" AND "D" (BITS 7,6)
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 
                                                                                                                                                                                                            