program CtrlAltDel_letiltasa;

{$M $0400, $0000, $0000}
{$F+}
uses dos;

const ctrlbyte = $04;
altbyte = $08;

var old09h: procedure;
ctrldown, altdown, deldown: boolean;
keyboardstat: byte absolute $0040:$0017;

procedure new09h; interrupt;
begin
if port[$60] and $1d = $1d then ctrldown := (port[$60] < 128);
if port[$60] and $38 = $38 then altdown := (port[$60] < 128);
if port[$60] and $53 = $53 then deldown := (port[$60] < 128);
if ctrldown and altdown and deldown then begin
keyboardstat := keyboardstat and not ctrlbyte;
keyboardstat := keyboardstat and not altbyte;
end;
asm
pushf
end;
old09h;
end;

begin
getintvec($09, @old09h);
setintvec($09, @new09h);
ctrldown := false;
altdown := false;
deldown := false;
keep(0);
end.