Autor Thema: Keyboard Controller  (Gelesen 7117 mal)

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #20 am: 11. February 2010, 21:47 »
Normalerweise macht man so eine Auswertung eher mit einem Array (wo man dann den Scancode als Index verwendet und dass dann den ASCII-Code zurückliefert) als mit vielen If-Abfragen.

Und das mit den Ports: Wie willst du die denn sonst auslesen? :?

bscreator

  • Gast
Gespeichert
« Antwort #21 am: 11. February 2010, 23:26 »
Zitat
Normalerweise macht man so eine Auswertung eher mit einem Array (wo man dann den Scancode als Index verwendet und dass dann den ASCII-Code zurückliefert) als mit vielen If-Abfragen.
Ist schon klar. Was ich damit sagen wollte ist, dass es aber keine einfache mathematische Formel gibt, um vom Scancode auf den ASCII-Wert zu schließen,oder ?

Und das mit den Ports frag ich, weil auf
http://lowlevel.brainsware.org/wiki/index.php/Keyboard_Controller 
folgendes drinsteht :
"Der KBC wurde mit dem AT System (286) eingeführt. "

Also: Wie einen KBC auslesen, wenns den erst ab dem 286 gibt ?

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #22 am: 12. February 2010, 00:02 »
Zitat von: bscreator
Zitat
Normalerweise macht man so eine Auswertung eher mit einem Array (wo man dann den Scancode als Index verwendet und dass dann den ASCII-Code zurückliefert) als mit vielen If-Abfragen.
Ist schon klar. Was ich damit sagen wollte ist, dass es aber keine einfache mathematische Formel gibt, um vom Scancode auf den ASCII-Wert zu schließen,oder ?
Soweit ich weiß, nicht, aber ich wäre dankbar, wenn du mir eine solche liefern könntest. :wink:

Zitat von: bscreator
Und das mit den Ports frag ich, weil auf
http://lowlevel.brainsware.org/wiki/index.php/Keyboard_Controller 
folgendes drinsteht :
"Der KBC wurde mit dem AT System (286) eingeführt. "

Also: Wie einen KBC auslesen, wenns den erst ab dem 286 gibt ?
1. Was heißt "erst"? Hast du noch einen 8086 oder 80186 zu Hause rumliegen?
2. Dann gabs vorher wohl andere Standards (oder vielleicht ja auch gar keinen), ich bin mir aber ziemlich sicher, dass das dann auch über Ports funktionierte. Und wenn da nichts dokumentiert ist, muss man eben das BIOS nehmen (ein 8086 oder 80186 kommt ja noch gar nicht in den PM, deshalb ist das BIOS ja immer verfügbar).

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #23 am: 12. February 2010, 11:45 »
Damals hast du glaube ich mit der Tastatur direkt geredet und erst mit PS/2 kam dann der Controller dazu, mit dem man dann auch ne Maus ansprechen konnte. Wenn mein Protected-Mode OS macht, ist das aber sowieso egal, denn den gibts ja schließlich erst mit dem 386iger (zumindest in der 32Bit Variante des PM).
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bscreator

  • Gast
Gespeichert
« Antwort #24 am: 18. February 2010, 18:26 »
Zitat
Damals hast du glaube ich mit der Tastatur direkt geredet
Ähm, das versteh ich nicht richtig.
Jetzt kommuniziere ich doch auch mit der Tastatur direkt und nicht über den ab dem 286 eingeführten Keyboard Controller, oder ?

Zitat
Was heißt "erst"? Hast du noch einen 8086 oder 80186 zu Hause rumliegen?
Hab zuhause noch nen 8086 und der ist mein absolutes Sahnetörtchen. :-D

Noch ne Frage:
Die Interrupts vom BIOS werden wohl auch über Ports kommunizieren. Wie kann ich mit der Tastatur DIREKT kommunizieren ?

Gruss,
bsc

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 18. February 2010, 19:17 »
Noch ne Frage:
Die Interrupts vom BIOS werden wohl auch über Ports kommunizieren. Wie kann ich mit der Tastatur DIREKT kommunizieren ?

Guck dich mal im Linux-Kernel um, die haben Tastaturtreiber für XT-Tastaturen und ähnliches drin, aber die laufen _alle_ über einen Fremdanschluss, d.h. Parallelport oder so. Die Tastatur kannst du über den normalen Anschluss nicht direkt ansprechen.

Der XT (8086/8088) nutzt übrigens einen anderen Tastaturstandard, in dem man der Tastatur nichts senden kann. Also elektrisch gibt die Tastatur den Takt und die Daten vor und der Rechner muss es nehmen oder es lassen. Ab dem AT (80286) kam dann das AT-Tastaturprotokoll dazu und dort kann man der Tastatur auch Befehle schicken (z.B. LEDs an/aus), und um das vernünftig hinzukriegen, gibt es den KBC. Die Tastatur gibt übrigens trotzdem den Takt vor. :-) Aus dem Grund funktionieren XT-Tastaturen nicht mit einem modernen PC (und in der Übergangsphase gab es Jumper oder DIP-Schalter zum Umschalten).

Mit der PS/2-Baureihe hat IBM dann den PS/2-Anschluss eingeführt, der sich aber elektrisch und protokolltechnisch nicht vom AT-Tastaturanschluss unterscheidet, nur der Controller auf PC-Seite wurde erweitert/ersetzt und der kann jetzt zusätzlich auch Mäuse ansprechen. Für die Tastatur blieb alles beim alten.

Wie man eine XT-Tastatur ohne BIOS anspricht, weiß ich nicht, es gibt aber gute elektrische Beschreibungen (für Mikrocontroller oder so) im Internet...

So, ich hoffe, nicht genervt zu haben.

Gruß,
Svenska

bscreator

  • Gast
Gespeichert
« Antwort #26 am: 21. February 2010, 12:16 »
Zitat
Der XT (8086/8088) nutzt übrigens einen anderen Tastaturstandard, in dem man der Tastatur nichts senden kann.

Dann ist man aber über die BIOS-Interrupts flexibler (da diese sowohl für XT, als auch für AT-Tastaturen funktionieren), oder ?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #27 am: 21. February 2010, 12:27 »
Wenn du ein Realmode OS baust ist es sowieso nicht ungeschickt die BIOS-Interrupts zu nehmen. Bei einem Protected Mode OS findest du (wahrscheinlich) eh keine Uralttastatur und willst sowieso keine BIOS-Interrupts nehmen (abgesehen von VESA BIOS Extensions vielleicht).
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen