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

    {The problem is that the pause key actually paUses the Computer
    via hardware.  to reset the pause, you can use the timer interrupt
    to generate a reset process at every tick.  The method here
    was taken from some Computer magazine.
    }

    Program TrapPause;
    Uses Dos;
    Var
      Timerint : Pointer;
      PauseFlag : Boolean;

    Procedure PauseDetect(flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP: Word);
      {This latches on to the system timer interrupt to detect if the
       pause key has been pressed, and if so to reset the system to allow
       operation to continue and to set Pauseflag = True}
      interrupt;
      begin
        if memw[$0:$418] and 8 = 8 then  {Test bit 3}
        begin
          Pauseflag := True;
          memw[$0:$418] := memw[$0:$418] and $F7; {Set bit 3 = 0}
        end;
        Inline($9C/              {PushF}
               $3E/              {DS}
               $FF/$1E/timerint);{Far call to usual timer interrupt}
      end;

    begin
      Getintvec($08,Timerint);      {Save old interrupt For timer}
      Setintvec($08,@PauseDetect);  {Redirect timer to PauseDetect}
    end.

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