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