[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
==============================================================================
BBS: ÄðÄ The Graphics Connection ÄðÄ Speciali
To: JOE JACOBSON Date: 12-20-92 (15:25)
From: GUY MCLOUGHLIN Number: 1137 [121] Pascal-IL
Subj: CTRL-ALT-DELETE TRAPPING Status: Public
------------------------------------------------------------------------------
...Unit captured from FIDONET:
UNIT CAD;
{- Area: PASCAL ---------------------}
{ Date: 10-16-92 22:12 }
{ From: Wilbert van Leijen }
{ To: John Martzall }
{ Subj: Ctrl-Alt-Delete }
{------------------------------------}
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
{ Make sure we can access our global data }
PUSH AX
PUSH DS
MOV AX, SEG @Data
MOV DS, AX
STI
{ Read keyboard port and mask out the 'break bit'.
Check whether the <Del> key was pressed. }
IN AL, KbdPort
AND AL, 01111111b
CMP AL, Del
JNE @2
{ <Del> key was pressed, now check whether <Ctrl> and <Alt>
are held down }
@1 : MOV AH, 2 { BIOS Get keyboard flags service }
INT 16h
TEST AL, Ctrl + Alt
JNZ @3
{ Chain to previous owner of INT 9 }
@2 : PUSHF
CALL [Int9Handler]
JMP @4
{ Ctrl-Alt-Del combination found: send the break code }
@3 : IN AL, KbdCtrlPort
MOV AH, AL
OR AL, 10000000b
OUT KbdCtrlPort, AL
XCHG AH, AL
OUT KbdCtrlPort, AL
CLI
{ Signal 'End Of Interrupt' to the 8259 interrupt controller chip }
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.
- Guy
---
þ DeLuxeý/386 1.25 #5060 þ
þ QNet3á þ ILink - Canada Remote Systems - Toronto, Ont (416) 798-4713
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]