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