[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original] [Attachment]
(*******************************************************************)
PROGRAM CtrlCAD; { CTRLCAD.PAS Disable Ctrl-Alt-Del }
{ Oct.1992 Greg Vigneault }
USES Crt, { import ClrScr, KeyPressed, ReadKey }
Dos; { import GetIntVec, SetIntVec }
VAR old09Vector : POINTER; { to save/restore original ISR }
ch : CHAR;
presses : WORD;
{ the following mask & count Ctrl-Alt-Del|Ins|Enter keystrokes }
{$L CTRLCAD.OBJ} { assembly, near calls }
PROCEDURE InitTrapCAD( oldVector : POINTER ); EXTERNAL;
PROCEDURE TrapCAD; Interrupt; EXTERNAL;
FUNCTION TriedCAD : WORD; EXTERNAL;
PROCEDURE ForgetCAD; EXTERNAL;
PROCEDURE WarmBoot; EXTERNAL;
PROCEDURE ColdBoot; EXTERNAL;
BEGIN
(* NEVER allow Ctrl-Break while TrapCAD is active ... *)
CheckBreak := FALSE; { disable Ctrl-Break }
GetIntVec( 9, old09Vector ); { get current keyboard ISR }
InitTrapCAD( old09Vector ); { pass vector to TrapCAD }
SetIntVec( 9, @TrapCAD ); { enable TrapCAD ISR }
ForgetCAD; { reset TriedCAD count to 0 }
presses := 99; { any unlikely value }
{ we'll just count the Ctrl-Alt-Del taps ... }
REPEAT
IF (presses <> TriedCAD) { update only when changed }
THEN BEGIN
presses := TriedCAD;
ClrScr;
Write('Ctrl-Alt-Del pressed ',presses,' times ');
Write('[Press ESC to exit]');
END;
IF KeyPressed THEN ch := ReadKey;
UNTIL (ch = #27);
WriteLn; WriteLn;
REPEAT
Write('Would you like to warm boot the system? [Y/N] ',#7);
ReadLn( ch ); ch := UpCase( ch );
UNTIL ch IN ['Y','N'];
IF ch = 'Y' THEN WarmBoot; { emulate Ctrl-Alt-Del }
SetIntVec( 9, old09Vector ); { unload TrapCAD }
WriteLn; WriteLn('Ctrl-Alt-Del is now re-enabled!');
CheckBreak := TRUE; { restore Ctrl-Break }
END.
(*******************************************************************)
ENCODED CTRLCAD.OBJ FILE REMOVED. PLEASE DOWNLOAD EITHER THE
ATTACHMENT OR THE COMPLETE ZIP FILE.
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original] [Attachment]