Autor Thema: A20  (Gelesen 5984 mal)

zacK

  • Beiträge: 216
    • Profil anzeigen
    • http://www.domae.ch
Gespeichert
« am: 22. March 2005, 09:27 »
A20
Huhu!

Ich habe gerade bei mit jemandem gemailt der mir mitgeteilt hat das ich mein a20 gate aufgrund fehlerhaften dokumentationen falsch setzte... diese methode funktioniere anscheinend nur auf alten geräten. wo durch ich auch auf den neuen probleme mit meinem video treiber habe... (komisch in bochs funktioniert es, und beim real-pc sehe ich auch zeichen auf dem bildschirm obwohl das weit oben der 1mb grenze ist..)

hat da jemand schon erfahrungen oder so?

hier wäre nun dieses anscheinend fehlerhafte code von mir:
EnableA20Gate:

.0:
push eax
.1:

in al, 0x64
test al, 00000010b
jnz .1

.2:
mov al, 0xD0
out 0x64, al

.3:
in al, 0x64
test al, 00000001b
jnz .3

.4:
in al, 0x60
or al, 00000010b
push eax

.5:
in al, 0x64
test al, 00000010b
jnz .5

.6:
mov al, 0xD1
out 0x64, al

.7:
in al, 0x64
test al, 00000010b
jnz .7

.8:
pop eax
out 0x60, al

.9:
pop eax
ret



thx 4 help

ps: das hat er mir geschrieben
Zitat
Lieber zack!
Einen Fehler fand ich sofort. Er kommt von falscher Dokumentation, die an
jeder Ecke ohne Prüfung abgeschrieben und weiter verbreitet wird. Mich hat
das eine  Woche meines Lebens gekostet...
Das Einschalten der A20-Leitung geht nicht mit der Oderierung, die bei Dir
unter label "4:" steht! Am besten kopierst Du einfach, was in meiner Quelle
steht (in FDOS1, ab Zeile 643). Ich hab's aus linuxquellen extrahiert. Es
läuft problemlos auf 4 Maschinen von 1980-2004.
Was Du geschrieben hast, läuft nur auf meiner ältesten Maschine.

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #1 am: 22. March 2005, 10:04 »
A20
das mit dem A20-Gate ist so ne sache. meines wissens nach gibt es über 5 VERSCHIEDENE methoden, dass zu machen (Ports, Ints, ...) und immer findet man eine, die auf dem ein oder anderen nicht unterstützt wird. wenn man also platz im bootloader hat, kann man alle benutzen, aber da das warscheinlich bei den meisten (wie auch bei mir) nicht so ist, beschränke ich mich auf die, die bei mir geht. ich habe eine "dirty"-variante, die mit 4 befehlen (2x mov al,? und 2x out ?,al) auskommt. ist zwar net fein, also wenn der controller gerade was zu tun hat, gehts nicht, aber ich denke, das kommt so selten vor, dass mir das gestohlen bleiben kann, und vll. finde ich ja noch platz für die int-methode...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 22. March 2005, 11:14 »
A20
ich würde das A20 erst im Kernel deaktivieren. (theoretisch, denn ich habs bisher noch nie deaktiviert. war zu faul...) ist ja kein ding, wenn man aufpasst, dass man auf keine speicheraddresse zugreift, die ungerade mbyte zahlen hat (also bei der bit 20 gesetzt ist).

ich würde auch den code aus dem linux kernel verwenden.
Dieser Text wird unter jedem Beitrag angezeigt.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 22. March 2005, 13:53 »
A20
Tja, ich nehme an er meinte den Wrap-Around deaktivieren = A20 aktivieren oder so :)

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 22. March 2005, 14:11 »
A20
hm ja hab ich auch ein bisschen überlegt, aber dann ist mir eingefallen, dass das A20-Gate ja ein Dings ist, das dafür sorgt, dass das Bit 20 auf 0 bleibt. und wenn man es deaktiviert, kann man den ganzen speicher addressieren.

aber ich will jetzt nicht behaupten, dass dies die offizielle interpretation ist ...

edit: hmm laut google heisst es wirklich "enable" nicht "disable" oder "deaktivieren" oder ähnliches ... naja mal wieder was dazu gelernt
Dieser Text wird unter jedem Beitrag angezeigt.

zacK

  • Beiträge: 216
    • Profil anzeigen
    • http://www.domae.ch
Gespeichert
« Antwort #5 am: 22. March 2005, 21:00 »
A20
thx für die vielen antworten...

das wegen dem a20 könnte vermutlich stimmen (@blueXseven)..

aber mein code sollte doch funktionieren (mindestens aufm paar pcs..?)?

 

Einloggen