Hi,
ManOfSteel wrote:
How do you change the keyboard typing rate (what ports and what data must be sent to them)?
You'd send the command 0xF3 to the keyboard controller chip, followed by a byte containing the repeat rate and delay:
Code:
mov al,0xf3
call sendData
jc .exit
mov al,[keydevArate] ;al = default repeat rate and delay
call sendData
Code:
%define STATUSPORT 0x64
%define COMMANDPORT 0x64
%define DATAPORT 0x60
;Send data to controller or device A
;_______________________________________________________________________________
sendData:
pushes ebx,ecx
push eax
mov ebx,[SIBtickHigh]
mov ecx,[SIBtickOver]
add ebx,1
adc ecx,0
OSCALL 0x39 ;Sleep for 1 mS
mov ebx,[SIBtickHigh]
mov ecx,[SIBtickOver]
add ebx,100 ;100 mS timout
adc ecx,0
.sd1 in al,STATUSPORT
test al,controllerInputFull
je .sd2
cmp [SIBtickOver],ecx
jb .sd1
cmp [SIBtickHigh],ebx
jbe .sd1
pop eax
pops ebx,ecx
stc
ret
.sd2 pop eax
out DATAPORT,al
pops ebx,ecx
clc
ret
The repeat rate and delay values are avaliable at:
http://panda.cs.ndsu.nodak.edu/%7Eachap ... board.htmlThe keyboard should send an "ACK" (0xFA) in response.
Cheers,
Brendan