[Back to TSR SWAG index]  [Back to Main SWAG index]  [Original]

{
> able to detect from another program (not the same program being run
> more than once) - is there a way?

You should be able to use the same code within another program.  The other
program should be able to call the user programmed interrupt, and get
$FFFF if the TSR is installed.

> from inside a TSR, which I guess is somewhat complicated because of
> the INDOS flag or what it's called, and I have no idea on how to do it.

You have to trap interrupt $28 as well.  It is called regularly during
the DOS console I/O polling loops to let TSRs know that it is safe to use
file operations.

As for the InDOS flag ... here you go ...
}

VAR

  InDOSSeg,           { Segment of the InDOS flag } 
  InDOSOfs  : WORD;   {  Offset of the InDOS flag } 
  InDOSFlg  : ^BYTE;  {  Status of the InDOS flag } 
 
{ Returns TRUE if DOS is active } 
FUNCTION InDOS : BOOLEAN; 
VAR 
  InDOSSeg, 
  InDOSOfs  : WORD; 
  InDOSFlg  : ^BYTE; 
 
Begin 
  asm 
    mov ah, $34 
    int $21 
    mov InDOSSeg, ES 
    mov InDOSOfs, BX 
  End; 


  InDOSFlg := Ptr( InDOSSeg, InDOSOfs ); 
 
  InDOS := (InDOSFlg^ <> 0); 
End; 

{
Call this procedure ONCE and only ONCE at the start of your TSR.  Then
use the last line (InDOSFlg^ <> 0) to check to see if DOS is performing
a function call.
}

[Back to TSR SWAG index]  [Back to Main SWAG index]  [Original]