Keyboard Controller — Änderungen 1950 → 2215

Zeile 1: Zeile 1:
−
Der Keyboard Controller (KBC) sitzt auf dem Mainboard und dient, wie der Name vermuten lässt, unter anderem der Tastaturansteuerung. Aus historischen Gründen und da er eng mit dem Programmable Peripheral Interface (PPI) verbunden ist hat er noch viele weitere Funktionen.
+
Der Keyboard Controller (KBC) sitzt auf dem Mainboard und dient, wie der Name vermuten lässt, unter anderem der Tastaturansteuerung. Da IBM ihn nach seiner Einführung stark erweitert hat, kann man ihn in heutigen Systemen eher als Kontroller "für alles mögliche" ansehen.
  
−
Funktionen des KBC:
+
Der KBC wurde mit dem AT System (286) eingeführt. In dem Vorgängersystem XT wurde für vergleichbare Aufgaben das [[Programmable Peripheral Interface]] (PPI) genutzt.
 +
 
 +
== Funktionen des KBC ==
 
*Ansteuerung der Tastatur
 
*Ansteuerung der Tastatur
 
*Ansteuerung des Auxiliary Port (z.B. PS/2-Maus)
 
*Ansteuerung des Auxiliary Port (z.B. PS/2-Maus)
−
*ein-/ausschalten der 21-Adressleitung ([[A20-Gate]])
+
*ein-/ausschalten der 21-Adressleitung ([[A20-Gate]])<br>Sollte aus Performance-Gründen in aktuellen Systemen direkt über die CPU aktiviert werden.
 
*CPU-Reset auslösen, also neustarten des Systems
 
*CPU-Reset auslösen, also neustarten des Systems
 
*Information ob das System eine Monochrom- oder Farbgrafikkarte benutzt
 
*Information ob das System eine Monochrom- oder Farbgrafikkarte benutzt
 
<br>
 
<br>
−
== KBC-Typen ==
+
== Kommunikationswege ==
−
Es gibt mehrere KBC-Typen. Grob kann man alle diese Typen jedoch in zwei Arten einteilen.
+
Der KBC Verwendet die Ports 0x60, 0x61 und 0x64.<br>
−
=== XT-KBC ===
 
−
In alten XT-Systemen wurde nur über das Programmable Peripheral Interface (PPI) mit der Tastatur kommuniziert. Alle Scancodes der gedrückten Tasten konnten über Port 0x60 gelesen werden. Über die Bits 6-7 von Port 0x61 wird die Tastatur ein und aus geschaltete.<br>
 
−
<br>
 
−
http://img252.imageshack.us/img252/545/xtkbcaa3.png
 
−
=== AT-KBC ===
 
−
In den nachfolgenden AT-Systemen wird über Port 0x64 die direkte Kommunikation mit der Tastatur ermöglicht. Außerdem wurde mit dem Auxiliary Port die Unterstüzung für ein weiteres Gerät hinzugefürgt. <br>
 
 
<br>
 
<br>
 
http://img252.imageshack.us/img252/6256/atkbcml3.png
 
http://img252.imageshack.us/img252/6256/atkbcml3.png
Zeile 136: Zeile 132:
 
       (Anmerkung: Kann man mit dem Wert 0 als Parameter den aktuellen Scancode auslesen?)
 
       (Anmerkung: Kann man mit dem Wert 0 als Parameter den aktuellen Scancode auslesen?)
  
−
0xF2  Diesen Befhel sendet man zum identifiziren der Tastatur. Es gibt folgende Rückgabewerte:
+
0xF2  Diesen Befehl sendet man zum identifiziren der Tastatur. Es gibt folgende Rückgabewerte:
  
 
       XT Tastatur    :  Timeout (leider NICHT Port[0x64].Bit[6]=1, sondern selbst zu messender Zweitwert)
 
       XT Tastatur    :  Timeout (leider NICHT Port[0x64].Bit[6]=1, sondern selbst zu messender Zweitwert)
Zeile 181: Zeile 177:
  
 
Dieses Beispiel zeigt, wie man die Tastatur im Realmode benutzen kann.
 
Dieses Beispiel zeigt, wie man die Tastatur im Realmode benutzen kann.
−
Dabei wird bei jedem Tastendruck oder loslassen einer Taste der scancode ausgegeben.
+
Dabei wird bei jedem Tastendruck oder loslassen einer Taste der Scancode ausgegeben.
 
Der Quellcode kann mit NASM oder FASM assembliert werden. Die erzeugte Datei auf den Bootsektor einer Diskette kopieren oder direkt mit einem Emulator benutzen.
 
Der Quellcode kann mit NASM oder FASM assembliert werden. Die erzeugte Datei auf den Bootsektor einer Diskette kopieren oder direkt mit einem Emulator benutzen.