[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]