From d2c2193505daa456a3c0d6b8cd46fdbbbd3bdb16 Mon Sep 17 00:00:00 2001 From: nickysn Date: Sun, 15 Sep 2013 19:53:24 +0000 Subject: [PATCH] + 83/84-key keyboard support added to unit keyboard for i8086-msdos git-svn-id: trunk@25490 - --- rtl/msdos/keyboard.pp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/rtl/msdos/keyboard.pp b/rtl/msdos/keyboard.pp index 4057a1fd54..415f5a4a24 100644 --- a/rtl/msdos/keyboard.pp +++ b/rtl/msdos/keyboard.pp @@ -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;