ASMB
  HED PROGRAM STATUS: DORMANT ? (RTE-III/IV)  F. GAULLIER  18/JUL/77
      NAM DORMT,7 . 92080-1X011 REV.2026  800515
  SPC 3 
**********************************************************************
*                                                                    *
*     NAME:   DORMT     CHECK STATUS OF A PROGRAM                    *
*     SOURCE: &DORMT    92080-18011                                  *
*     BINARY: %DORMT    ----NONE---    PART OF  %GPLB4  92080-16001  *
*                                                                    *
*     PGMR:   FRANCOIS GAULLIER                                      *
*                                                                    *
**********************************************************************
      SPC 2 
*     **************************************************************
*     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
*     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
*     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
*     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
*     **************************************************************
  SPC 3 
*     ********************************************************* 
*     * THIS LOGICAL FUNCTION WILL BE ".TRUE." IF THE PROGRAM * 
*     * IS ACTUALLY DORMANT [ CALL EXEC(6,0,0) ], OR UNLOADED * 
*     *  IF IT IS SCHEDULED, IN ANY WAITING LIST, OR HAS BEEN * 
*     * COMPLETED WITH THE "SAVE SUSPENSION POINT" OPTION :   * 
*     * [ CALL EXEC(6,0,1) ], THE LOGICAL FUNCTION WILL BE :  * 
*     * ".FALSE".                                             * 
*     ********************************************************* 
      SPC 2 
* 
*     CALLING SEQUENCE: 
* 
*        IF ( DORMT(PNAME) ) GOTO .. [PROG. IS DORMANT] 
* 
*     (.TRUE. = 100000B   AND   .FALSE. = 0)
* 
*                   OR
* 
*        REG = DORMT(PNAME,ISTAT) 
* 
*            PNAME   PROGRAM NAME 
*            ISTAT   PROG STATUS (IDSEG WORD 16)
*            RETURN VALUE INTO A REG. 
  SPC 2 
      ENT DORMT 
      EXT .ENTR,IDGET 
* 
A     EQU 0 
B     EQU 1 
      SUP 
   SPC 3
ANAME BSS 1 
.STAT DEC 0 
DORMT NOP 
      JSB .ENTR 
      DEF ANAME     ADDRESS OF BUFFER CONTAINING PRG. NAME
* 
      CLA 
      STA .STAT,I   PRSET THE PROG STATUS TO 0
* 
*-----GET I.D. SEGMENT ADDRESS
* 
      JSB IDGET 
      DEF *+2 
      DEF ANAME,I   PROGRAM NAME
      SZA,RSS       IS PROGRAM LOADED ? 
      JMP .TRUE     NO
* 
*-----VERIFY THAT PROGRAM IS FULLY DORMANT
* 
      LDB A         GET PROGRAM I.D. SEGMEMT ADDRESS
      ADB D14       (B)=NAM5/TYPE ADDR. (WORD 15) 
      XLA B,I       FETCH NAM5-TYPE 
      AND P7        MASK IN PROGRAM TYPE. 
      CPA P5        IS THIS A SEGMENT ? 
      JMP .TRUE     YES IT IS : EQUIVALENT TO DORMANT 
* 
      INB           STATUS WORD ADDR (WORD 16)
      XLA B,I       FETCH STATUS WORD 
      STA .STAT,I   RETURN IT TO THE USER IF NEEDED 
      SZA           PROGRAM DORMANT 
      JMP .FALS     NO, RETURN FALSE VALUE
* 
      ADB DM7       (B)=ADDR OF SUSPEND WORD (WORD 9) 
      XLA B,I       FETCH XSUSP 
      SZA           XSUSP = 0 ? 
      JMP .FALS     YES, PROGRAM HAS A SUSPENSION POINT 
* 
      ADB D9        COMPUTE TIME LIST WORD ADDRESS (WORD 18)
      XLA B,I       GET TIME LIST WORD
      AND BIT12     GET BIT 12 OF (TIME LIST ENTRY BIT) 
      SZA           PROGRAM IS IN THE TIME LIST ? 
      JMP .FALS     YES 
* 
*-----PROGRAM IS FULLY DORMANT
* 
.TRUE CCA           LOGICAL FUNCTION ".TRUE." 
      JMP EXIT      RETURN
* 
*-----PROGRAM IS NOT FULLY DORMANT
* 
.FALS CLA           LOGICAL FUNCTION ".FALSE."
EXIT  CLB           CLEAR THE OPTIONAL PARAM ADDR.
      STB .STAT     FOR THE NEXT CALL 
      JMP DORMT,I   AND RETURN
* 
*-----CONSTANTS 
* 
P5    DEC 5 
P7    DEC 7 
D9    DEC 9 
D14   DEC 14
DM7   DEC -7
BIT12 OCT 10000 
  SPC 2 
      END 
                                                              