Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#38

Re: KeyboardLED

  Alt 18. Okt 2005, 06:49
PortB[$03F2] := Drive; Doch funktioniert unter Win95 bis WinXP. Aber nur weil dieses PortB[], PortW[], PortL[] meine Entwicklungen sind. Ich bezog mich also nicht auf das alte PASCAL Port[] sondern auf meine direkt Port Access Unit.


Zitat:
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.)
Doch man darf aber eben nur in einem Kernelmode Treiber, bzw. nur mit den entsprechenden Privilegien. Diese könnte man auch für eine Ring 3 Application einrichten.

Der Zugriff auf den Keyboard Port hat insofern mit Interrupts nur damit zu tun das man diese eventuell mit CLI/STI sperren sollte, mehr aber auch nicht.

Zitat:
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.
Besser wäre es schon, aber soviel wie ich weis gibt es keinen PC der keinen 8253 kompatibeln PIO hat. Ergo kann man sich 99.9% sicher sein das $60 einer der Keyboardports ist. Aus Sicht des Timings wäre das Abfragen des Acknowledges aber schon richtiger. In meinem Code benutze ich halt eine Waitloop.

Mal ne andere Frage: Funktioniert dein Code auch unter Win95 uä. ?

Gruß Hagen
  Mit Zitat antworten Zitat