Nun lautet die Ausgabe schlicht "$" .Egal was ich drück, es rührt nix.
2.Edit:
Hab das mit der 1 und der 0 übersehen was du sagtest. Das heißt er zeigt gar nichts an. Auch nicht bei Tastendruck.
Edit: BTW: Der Keyboard-Treiber würde mich interessieren..
Im Grunde ist es recht einfach. Es gibt einen Interrupt Detection (?) Table kurz IDT. Ich kann den *alten* aus dem Real-Mode nicht mitnehmen (und will es auch nicht) und kann so keine Standart BIOS-Ints mehr im Protected Mode nutzen. Also lege ich mir selbst einen an. Nun trage ich da ein das beim Tastendruck die Funktion IRQ_1 ausgeführt wird (IRQ 1 ist der Keyboard-Int ^^)
Mein Treiber ist zwar nicht alzu besonders, aber hier ist mal ne Version:
Das anlegen des IDT ist hier etwas komplizierter. Wenn dich das interressiert, dann kannst du ja mal den Code von mir ansehen. Zum kompilen brauchst du djgpp (nicht die System-Varis vergessen) und nasm (beides kostenlos). Auserdem rawwrite ums auf eine Diskette zu schreiben und evt. Bochs ums zu Emulieren. Allerdings funktioniert das Teil noch nicht besonders auf manchen PC's (z.B. i686er Architekturen)
warum weiß ich nicht, wird sich noch ändern -.-!
Wem das zuviel ist kanns ja unter Linux kompilen. GCC ist unter Linux schon bald standart. Nasm (zumindest bei Fedora nicht, aber man kannst ja downloaden).
Unter Linux müsst ihr euch halt die Befehle aus der Compile.bat ziehen und dann in ne Make schreiben.
Allerding muss ich sagen es liegt nicht am "Treiber". Wenn amn statt den
case x: console[pos] = 'x'; break;
ein case x: printf("x"); break;
einfügt klappt es.
Edit 3:
Mhm... wenn ich statt dem \0 bei der Schleife einfach nur 0 eingebe und dann hallo eingebe bekomme ich das angezeigt:
Der Fehler war 1. Das das 1. Zeichen ein \0 war und deshalb nix ausgegeben wurde. Das mit dem h0a ist so zu erklären. Wenn kein Zeichen kommt wird pos +1 gemacht, aber in Console wird nix geändert. Das heißt in Console steht dann
h\0a was natürlich keine Ausgabe erzeugt
Edit x [sind schon zu viele...]:
Hab das ganze nun mal in ner billig-Konsole umgesetzt: [Bild]