[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]
PROGRAM NoReset;
{(c)1993 by Marc van Leeuwen. Fido 2:285/228 == Pascal-Net 115:115/0 }
{ ÚÄÄÄÄÄÄÄÄÄÄ¿ (c) 1993Use it as you want, it works for me, }
{ ³SW-Program³ LSharP but it might not work for you, so use}
{ ÀÄÄÄÄÄÄÄÄÄÄÙ Softwareit as is, and modify the errors yourself!}
Uses Crt,Dos
{$IFDEF DPMI}
,WinAPI
{$ENDIF};
{$F+}
{ $ DEFINE TSR}
{^^^^^^^^^^^^^ Take away the 2 spases to make a tsr program that intercepts}
{ the reset. it WON'T work in protected-mode!}
{$IFDEF TSR}
{$IFDEF DPMI}
{$M 1024}
{$ELSE}
{$M 1024,0,0}
{$ENDIF}
{$ENDIF}
var
Seg0000 : word;
PROCEDURE Init_Seg0000;
const
Seg = $0000;
Ofs = 0;
begin
{$IFDEF DPMI}
Seg0000 := AllocSelector(0);
SetSelectorBase(Seg0000, Seg*Longint(16)+Ofs);
SetSelectorLimit(Seg0000, $FFFF);
{$ELSE}
seg0000 := seg;
{$ENDIF}
end;
Const
CtrlCharacter =$4;
AltCharacter = $8;
DelCharacter = 83;
VAR OudInterupt : Procedure;
Procedure ResetIntercept; Interrupt;
BEGIN
IF (Port[$60] = DelCharacter) AND
((Mem[Seg0000:$0417] AND CtrlCharacter) = CtrlCharacter) AND
((Mem[Seg0000:$0417] AND AltCharacter) = AltCharacter) THEN
BEGIN
Inline($FA);
Port[$20]:=$20;
Inline($FB);
END
ELSE
BEGIN
Inline($9C);
OudInterupt;
END;
END;
Procedure SwitchResetOff;
BEGIN
GetIntVec($09,@OudInterupt);
SetIntVec($09,@ResetIntercept);
END;
Procedure SwitchResetOn;
BEGIN
SetIntVec($09,@OudInterupt);
END;
BEGIN
{$IFDEF TSR}
{$IFDEF DPMI}
( => TSR-programs can`t be made for DPMI-mode programs!!! <= )
{$ENDIF}
SwitchResetOff;
Keep(0);{Start de TSR}
{$ELSE}
Init_Seg0000;
SwitchResetOff;
{Vervolgens Uw programma, zoals...}
Writeln('Ctrl-Alt-Del won''t work now!');
Repeat Until ReadKey = #27; {Escape stopt het programma}
Writeln('Ctrl-Alt-Del will be switched on.');
{En dan weer eindigen met}
SwitchResetOn;
{$ENDIF}
END.
[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]