+ 83/84-key keyboard support added to unit keyboard for i8086-msdos

git-svn-id: trunk@25490 -
This commit is contained in:
nickysn 2013-09-15 19:53:24 +00:00
parent 034f9c6b71
commit d2c2193505

View File

@ -25,13 +25,31 @@ uses
{$i keyboard.inc}
var
keyboard_type: byte; { 0=83/84-key keyboard, $10=101/102+ keyboard }
procedure SysInitKeyboard;
var
regs: registers;
begin
keyboard_type:=0;
if (Mem[$40:$96] and $10)<>0 then
begin
regs.ax:=$1200;
intr($16,regs);
if regs.ax<>$1200 then
keyboard_type:=$10;
end;
end;
function SysGetKeyEvent: TKeyEvent;
var
regs : registers;
begin
regs.ah:=$10;
regs.ah:=keyboard_type;
intr($16,regs);
if (regs.al=$e0) and (regs.ah<>0) then
regs.al:=0;
@ -43,7 +61,7 @@ function SysPollKeyEvent: TKeyEvent;
var
regs : registers;
begin
regs.ah:=$11;
regs.ah:=keyboard_type+1;
intr($16,regs);
if (regs.flags and fzero)<>0 then
exit(0);
@ -61,7 +79,7 @@ end;
Const
SysKeyboardDriver : TKeyboardDriver = (
InitDriver : Nil;
InitDriver : @SysInitKeyboard;
DoneDriver : Nil;
GetKeyevent : @SysGetKeyEvent;
PollKeyEvent : @SysPollKeyEvent;