home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
t
/
tsrhelp.zip
/
TSR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-08-22
|
1KB
|
69 lines
{$M 6000,0,0}
{$R-,S-,I-,D+,F+,V-,B-,N-,L+}
Uses Dos,Crt,Graph,Screen;
Const
KeyBdInt = $09;
TimerInt = $08;
ScreenOn:Boolean = True;
Seconds = 300;
Counter:Word = 0;
Var
Regs:Registers;
OldKbdVec,OldTimerVec:Pointer;
S:ScreenStore;
Procedure STI; Inline($FB);
Procedure CLI; Inline($FA);
Procedure CallOldInt(Sub:Pointer);
Begin
Inline($9C/$FF/$5E/$06);
End;
Procedure KeyBoard(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
Begin
Counter:=0;
If Not(ScreenOn) Then
Begin
S.RestoreScreen;
ScreenOn:=True;
End;
CallOldInt(OldKbdVec);
STI;
End;
Procedure Timer(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
Begin
If ScreenOn Then
Begin
Inc(Counter);
If Counter>(Trunc(18.2*Seconds)) Then
Begin
S.StoreScreen;
ClrScr;
ScreenOn:=False;
End;
End;
CallOldInt(OldTimerVec);
STI;
End;
Begin
S.Init(1,1,32,7);
GetIntVec(KeyBdInt,OldKbdVec);
SetIntVec(KeyBdInt,@KeyBoard);
GetIntVec(TimerInt,OldTimerVec);
SetIntVec(TimerInt,@Timer);
Keep(0);
End.