[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
{ >> What sort of code do I need to include in a pascal Program (Writen in
>> Borland Pascal 6.0) to disable CTRL-BREAK and CTRL-C?
}
Unit CAD;
Interface
Uses Dos;
Var
Int9Handler : Pointer;
Procedure InterceptCtrlAltDel;
Procedure RestoreCAD;
Implementation
Procedure InterceptCtrlAltDel; Assembler;
Const
Ctrl = 4;
Alt = 8;
Del = $53;
KbdPort = $60; { Keyboard port }
KbdCtrlPort = $61; { Keyboard control port }
PIC = $20; { 8259 Interrupt controller }
EOI = $20; { end-of-interrupt }
Asm
PUSH AX
PUSH DS
MOV AX, SEG @Data
MOV DS, AX
STI
in AL, KbdPort
and AL, 01111111b
CMP AL, Del
JNE @2
@1 : MOV AH, 2 { BIOS Get keyboard flags service }
inT 16h
TEST AL, Ctrl + Alt
JNZ @3
@2 : PUSHF
CALL [Int9Handler]
JMP @4
@3 : in AL, KbdCtrlPort
MOV AH, AL
or AL, 10000000b
OUT KbdCtrlPort, AL
XCHG AH, AL
OUT KbdCtrlPort, AL
CLI
MOV AL, EOI
OUT PIC, AL
@4 : POP DS
POP AX
IRET { make sure we return correctly }
end; { InterceptCtrlAltDel }
Procedure RestoreCAD;
begin
SETinTVEC (9, Int9Handler);
end; { RestoreCAD }
begin
GETinTVEC (9, Int9Handler);
SETinTVEC (9, @InterceptCtrlAltDel);
end. {Unit CAD}
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]