A20-Gate, Umschalten in den Protected Mode, etc

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

A20-Gate, Umschalten in den Protected Mode, etc

Beitrag von cloidnerux » Fr Okt 03, 2008 4:56 pm

Jo das stimmt, aber ich hatte in lezter zeit viel anderes zu tun und konnte mich desshalb nicht mit dem kernel beschäftigen, werde in nächster zeit weiter programmieren.

Kannst du mir eigentlich mal sagen warum die Aktivierung des A20 AGtes vie mir nicht funktioniert?
Habe auch schon die Zeile:
buf += 0x02 (oder änlich)
in buf = buf | 0x02 geändert, funktioneirt aber trodzdem nicht?
wieso`?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aeris Projekt launched!

Beitrag von Xin » Sa Okt 04, 2008 7:04 am

cloidnerux hat geschrieben:Jo das stimmt, aber ich hatte in lezter zeit viel anderes zu tun und konnte mich desshalb nicht mit dem kernel beschäftigen, werde in nächster zeit weiter programmieren.
Wunderte mich halt, dass nach operativer Hektik hier wie da auf einmal komplette Windstille ist. Ein OS ist ein aufwendiges Projekt, dass Disziplin benötigt und Jugendliche sind launisch. Solange ich von euch nix konkretes gesehen habe, bin ich skeptisch.
cloidnerux hat geschrieben:Kannst du mir eigentlich mal sagen warum die Aktivierung des A20 AGtes vie mir nicht funktioniert?
Habe auch schon die Zeile:
buf += 0x02 (oder änlich)
in buf = buf | 0x02 geändert, funktioneirt aber trodzdem nicht?
wieso`?
Zum einen ist die Aussage der beiden Zeilen eine vollkommen Unterschiedliche, wobei | richtiger aussieht. Aber ich habe Zweifel, dass Dein Wunsch mit einem Zeiger auszudrücken ist!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Aeris Projekt launched!

Beitrag von cloidnerux » Sa Okt 04, 2008 9:29 am

Doch, dass muss so sein. Ich greife auf die KBC zu. Die steuert man über 0x60 und 0x64 an. ICh Hba ealos einen Pointer auf den Spiecherbereich 0x64 und 0x60. IN der COdzeile darüber lese ich den inhalt von 0x60 aus und speichere den in ner Variable. dann setze ich das zweite Bit mit: buf = buf (binär oder/bitweise oder)| 0x02. Das soll das zweite bit setzen und in buf schreiben. Dann schreibe ich das ganze wider auf 0x60, aber ich muss vorher ein bisschen warten bis die KBC wieder empfanhsbereit ist. Dann überprüfe ich ob das einschalten des A20 Gate erfolgreich war unhd gebe 1 für ja und 0 für Nein zurück. Und ich bekomme immer null zurück. Warum? Was ist falsch?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Aeris Projekt launched!

Beitrag von Dirty Oerti » Sa Okt 04, 2008 10:13 am

cloidnerux hat geschrieben:Doch, dass muss so sein. Ich greife auf die KBC zu. Die steuert man über 0x60 und 0x64 an. ICh Hba ealos einen Pointer auf den Spiecherbereich 0x64 und 0x60. IN der COdzeile darüber lese ich den inhalt von 0x60 aus und speichere den in ner Variable. dann setze ich das zweite Bit mit: buf = buf (binär oder/bitweise oder)| 0x02. Das soll das zweite bit setzen und in buf schreiben. Dann schreibe ich das ganze wider auf 0x60, aber ich muss vorher ein bisschen warten bis die KBC wieder empfanhsbereit ist. Dann überprüfe ich ob das einschalten des A20 Gate erfolgreich war unhd gebe 1 für ja und 0 für Nein zurück. Und ich bekomme immer null zurück. Warum? Was ist falsch?
Falsch.

Erstmal zum Aktivieren des A20-Gates:
Das Gate wird über PORTS, nicht über Speicherbereiche angesprochen.
Ein Pointer hilft dir folglich NICHTS.

Hier wird das relativ gut erklärt:
http://lowlevel.brainsware.org/wiki/ind ... _werden.3F

Dann zweitens:
Ihr startet per GRUB, sehe ich das richtig?

Wenn ich mich richtig erinnere, ist das A20-Gate schon eingeschalten, wenn man mit GRUB startet...
http://lowlevel.brainsware.org/wiki/ind ... angsstatus

Heißt: Sich über das A20-Gate Gedanken zu machen, ist nicht notwendig...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Aeris Projekt launched!

Beitrag von cloidnerux » Sa Okt 04, 2008 2:15 pm

Jo thx. Hab was besseres gefunden. Hab debn Code auch aus nem lowlevel tut. Hat net gewusst das das schon eingeschaltet ist, ist baer jezt gelöst.
Könnte mir evntuell irgenwer helfen in den Proteced mode umzustellen, in C natürlich
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Aeris Projekt launched!

Beitrag von Kerli » Sa Okt 04, 2008 5:55 pm

cloidnerux hat geschrieben:Könnte mir evntuell irgenwer helfen in den Proteced mode umzustellen, in C natürlich
Was ich gesehen habe, gibt es keine Möglichkeit das in C direkt zu realisieren. So wie ich das gesehen habe ist das nur über Inlineassembler möglich. Den Link dazu hast du glaub ich eh schon irgendwo gepostet.

@cloidnerux: Achja, könntest du bitte vielleicht versuchen deine Posts vor dem Absenden noch einmal durchzulesen und dann die Buchstaben in eine halbwegs verständlich Reihenfolge bringen. Das würde die Lesbarkeit deiner Posts deutlich erhöhen...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Aeris Projekt launched!

Beitrag von cloidnerux » Sa Okt 04, 2008 7:05 pm

Kann ich machen.
Hab was gefunden und schlage mich jezt mit Inline Assembler rum. 100000000 fehler und keine Lösung.
Könnt ihr mir villeicht helfen?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Aeris Projekt launched!

Beitrag von Kerli » Sa Okt 04, 2008 7:13 pm

cloidnerux hat geschrieben:Kann ich machen.
Ist doch gleich viel besser so ;)
cloidnerux hat geschrieben:Hab was gefunden und schlage mich jezt mit Inline Assembler rum. 100000000 fehler und keine Lösung.
Könnt ihr mir villeicht helfen?
Also ich würd sagen, versuch dich zuerst einmal mit ein paar sehr einfachen Inlineassembler Beispielen.

Und wenn wir dir helfen sollen, dann wäre es ganz nützlich wenn du ev. etwas Code posten würdest und etwas genauer definierst was denn nicht funktioniert.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Aeris Projekt launched!

Beitrag von cloidnerux » So Okt 05, 2008 10:00 am

HAb folgendes Problem:
asm("db 0x0ea"); Error: Kennt den Befewel db nicht.
asm("dw 0x08"); Error: Kennt dw nicht.

Ich habe im Internet lange gesucht und nichts gefunden. Überall steht das GCC AT&T syntax gebraucht. Da aber nirgenswo etwas darüber steht bin ich Ratlos.
So wenn ich wüsste was diese Befehle normal machen, dann könnte ich es ja versuchen es in C zu Schreiben, kann aber kaum Assembler und weiß es daher nicht
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aeris Projekt launched!

Beitrag von Xin » So Okt 05, 2008 10:46 am

cloidnerux hat geschrieben:HAb folgendes Problem:
asm("db 0x0ea"); Error: Kennt den Befewel db nicht.
asm("dw 0x08"); Error: Kennt dw nicht.

Ich habe im Internet lange gesucht und nichts gefunden. Überall steht das GCC AT&T syntax gebraucht. Da aber nirgenswo etwas darüber steht bin ich Ratlos.
So wenn ich wüsste was diese Befehle normal machen, dann könnte ich es ja versuchen es in C zu Schreiben, kann aber kaum Assembler und weiß es daher nicht
db reserviert Bytes, dw Wörter (2 Bytes). Die Entsprechungen in C sind "char" und "short".
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten