
Zitat von
negaH:
Mit Interrupts hat dies reingarnichts zu tuen.
Ok... mein Satz war ein wenig unglücklich formuliert (ist korrigiert worden) danke.
Aber daß das mit Interrupts nix zu tun hat, ist nicht ganz korrekt... Es ist nur dumm, daß man unter XP die Interrupts nicht sperren darf (cli etc.)

Zitat von
negaH:
Man sollte auch vorher den aktuellen Status der LEDs abfragen und diesen zwischenspeichern
du prüfst nicht den aktuellen LED-Status, sondern welche Tasten gedrückt wurden. Das ist ein großer Unterschied. Das sagt nämlich nur aus, welche LEDs leuchten sollten!!! (Übrigens machen wir das auch)

Zitat von
negaH:
Delphi-Quellcode:
....
if FKBdLEDTime <> 0
then
while FKbdLEDTime >= GetTickCount
do ;
PortB[$60] := $ED;
FKbdLEDTime := HDDelay;
while FKbdLEDTime > 0
do Dec(FKbdLEDTime);
PortB[$60] := FKbdLED
and klAll;
FKbdLEDTime := GetTickCount + 1;
...
wie ich sehe, führst du keinerlei Prüfungen durch, ob der Port die Daten akzeptiert hat.... Das sollte man schon tun. Dann schließt man auch aus, daß man die Daten ausversehen an einen falschen Port schreibt. Der Keyboardcontroller gibt nämlich ein acknowledged Signal für die gesendeten Daten zurück (bitte vor dem schimpfen die Theorie büffeln)

Zitat von
negaH:
as eine Anwendung die auf Grund irgendwelcher Fehler in den Port Bereich irgendwelche Daten schreibt dafür sorgt das Hardware oder Daten zerstört werden können.
Daher der Disclaimer

Zitat von
negaH:
Ich würde sowas nicht benutzen wollen.
Das musst du ja zum Glück auch nicht