[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
{
I have a program that needed to disable Ctl-Break. The program uses the
CRT unit, and the program also used the Readkey() function and the
Keypressed() function. In order to keep Ctl-Brk from 'working' I had to
replace *both* the Readkey and Keypressed functions with my own, because
those functions, in the TP units, respond to Ctl-Break. I Also had to
set CheckBreak to false early in the main program routine.
The following _Keypressed() function uses bios interrupt 16h to test
to see if a key was pressed and a keystroke is in the keyboard buffer.
It is used just like the TP Keypressed function, and does not process
(responed to) ctl-break. ( if _keypressed then ... ) }
function _keypressed: Boolean; Assembler;
asm
push ds { save TP DS reg }
push sp { save stack ptr }
mov ah, 1 { int 16h fcn 1 }
int 16h { ret zero flag clr if keypressed }
mov al, 0 { assume false }
jz @1 { keypressed ? }
mov al, 1 { set true }
@1:
pop sp
pop ds
end;
{
The following _readkey function uses dos interrupt 21h function 7 to get
a character from the keyboard buffer. It does not echo the character
and does not process (respond to) ctl-break. It is used just like the
TP readkey function. ( c := _readkey; ) }
function _readkey: Char;
var regs:registers;
begin
regs.ah := 7;
msdos(regs);
_Readkey := char(regs.al);
end;
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]