[Back to TSR SWAG index] [Back to Main SWAG index] [Original]
Program TSR;
{ TSR Demo                      }
{ (c) Jul 94 Luis Mezquita Raya }
{$M $1000,0,0}
uses  Crt,Dos;
var   OldInt09h:procedure;
Procedure EndTSR; assembler;
asm
                cli
                mov AH,49h
                mov ES,PrefixSeg
                push ES
                mov ES,ES:[2Ch]
                int 21h
                pop ES
                mov AH,49h
                int 21h
                sti
end;
{$f+}
Procedure NewInt09h; interrupt;
var k:byte; kb_exit:boolean;
begin
 k:=Port[$60];
 kb_exit:=False;
 if k<$80
 then begin
       Sound(5000);
       Delay(1);
       NoSound;
      end
 else if k=$CE                          { $4E or $80 }
      then kb_exit:=True;
 asm pushf end;
 OldInt09h;
 if kb_exit
 then begin
       Sound(440);
       Delay(15);
       NoSound;
       SetIntVec(9,@OldInt09h);
       EndTSR;
      end;
end;
{$f-}
begin
 GetIntVec(9,@OldInt09h);
 SetIntVec(9,@NewInt09h);
 Keep(0);
end.
>--- cut here -----------------------------------------------------
        When you run this program you get a key-click each time you
press a key but TSR program discharges if you press the big '+' key
(at numeric keyboard).
                   Greetings,
                            Luis
[Back to TSR SWAG index] [Back to Main SWAG index] [Original]