| Zeile 1: | Zeile 1: | ||
| − | Der Keyboard Controller (KBC) sitzt auf dem Mainboard und dient, wie der Name vermuten lässt, unter anderem der Tastaturansteuerung. | + | 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> | ||
| − | == | + | == Kommunikationswege == |
| − | + | Der KBC Verwendet die Ports 0x60, 0x61 und 0x64.<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 | + | 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 | + | 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. | ||