Stirb A20 Gate Stirb !!!
- fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
Stirb A20 Gate Stirb !!!
Eine kleine gute nacht Geschichte:
Es war einmal ein Fred der wollte bootsplash mal testen ... gesagt getanen:
Kernel gepatcht und installiert
Splash utils installiert
Theme installiert
Grub config angepasst
Neu gebooted
Und ... Ohhh es funktioniert ... sieht nett aus ... so jetzt einloggen und Nvidia Treiber neu installieren ... WTF !?!?! ich kann mich nicht mehr einloggen, die Tastatur funzt net mehr ... seltsam
Also:
Geschaut ob Tastatur eingesteckt ist: O.K.
Neugebooted und ins BIOS gegangen: O.K.
Raus aus dem BIOS und Linux booten lassen: Ja was soll den das ?!? Jetzt geht die Tastatur auf einmal wieder, war wohl nur ein Temporäres Fänomen
Gut also noch ein bischen am Theme basteln ... neubooten ... und ... schon wieder geht die Tastatur nicht
So ging es dann ne weile weiter, bis ich rausgefunden hab das die Tastatur mit einem Bootsplash Kernel nicht mehr geht sobald ich sie in Grub benutze
Dann kam mir eine Idee:
1. Vorletztens hab ich gelesen das daß A20 Gate irgendwie mit dem Tastatur Controler zusammenhängt.
2. Letztens im BIOS hab ich eine Option "A20 Gate mode" mit den auswahlmöglichkeiten "normal" und "fast" gesehen (stand auf "fast")
3. Heute kam mir die Idee: Als ich den 2.6.8er Kernel installiert hab und das Tastatur Problem immer noch nicht weg war die "A20 Gate mode" Option auf "nomal" zu stellen ... .oO(ich glaub nicht das es funzt aber wer weis) ... neu gebooted... OHH Wunder die Tastatur funktioniert auch noch nach dem ich sie in Grub benutzt hab.
UND die Moral von der geschicht: Traue dem A20 Gate niemals nicht !
Es war einmal ein Fred der wollte bootsplash mal testen ... gesagt getanen:
Kernel gepatcht und installiert
Splash utils installiert
Theme installiert
Grub config angepasst
Neu gebooted
Und ... Ohhh es funktioniert ... sieht nett aus ... so jetzt einloggen und Nvidia Treiber neu installieren ... WTF !?!?! ich kann mich nicht mehr einloggen, die Tastatur funzt net mehr ... seltsam
Also:
Geschaut ob Tastatur eingesteckt ist: O.K.
Neugebooted und ins BIOS gegangen: O.K.
Raus aus dem BIOS und Linux booten lassen: Ja was soll den das ?!? Jetzt geht die Tastatur auf einmal wieder, war wohl nur ein Temporäres Fänomen
Gut also noch ein bischen am Theme basteln ... neubooten ... und ... schon wieder geht die Tastatur nicht
So ging es dann ne weile weiter, bis ich rausgefunden hab das die Tastatur mit einem Bootsplash Kernel nicht mehr geht sobald ich sie in Grub benutze
Dann kam mir eine Idee:
1. Vorletztens hab ich gelesen das daß A20 Gate irgendwie mit dem Tastatur Controler zusammenhängt.
2. Letztens im BIOS hab ich eine Option "A20 Gate mode" mit den auswahlmöglichkeiten "normal" und "fast" gesehen (stand auf "fast")
3. Heute kam mir die Idee: Als ich den 2.6.8er Kernel installiert hab und das Tastatur Problem immer noch nicht weg war die "A20 Gate mode" Option auf "nomal" zu stellen ... .oO(ich glaub nicht das es funzt aber wer weis) ... neu gebooted... OHH Wunder die Tastatur funktioniert auch noch nach dem ich sie in Grub benutzt hab.
UND die Moral von der geschicht: Traue dem A20 Gate niemals nicht !
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
- fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
So schnell wirds leider nicht gehen, den sowohl bei Intels Itanium (2) als auch beim Athlon 64 ist es zu findenstartx hat geschrieben:das A20 gate wird mit der 64bit generation verschwinden, jedenfalls soweit ich weiss ...Traue dem A20 Gate niemals nicht !
/edit: siehe hier (ganz unten): http://www.heise.de/ct/02/17/026/
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
Solange auch nur ansatzweise die Möglichkeit besteht, einen neuen x86-Prozessor unter einem Windoof-Wasauchimmer zu betreiben, wird uns das lustige A20-Gate erhalten bleiben...
Meine Meinung
Musste grad schwer überlegen, wann und warum sich Intel/IBM das lustige A20-Gate ausgedacht hat..
Seit dem 80286 hat jeder Intel-Prozzi diese lustige A20-Gate eingebaut - und so wird es sicher auch noch lange bleiben...
Meine Meinung
Musste grad schwer überlegen, wann und warum sich Intel/IBM das lustige A20-Gate ausgedacht hat..
Aus: http://www.heise.de/ct/98/24/276/default.shtmlA20-Skurrilität
Nein, nicht die A20 von Lübeck nach Rostock ist gemeint (wiewohl die auch auf viel Widerstand stößt), sondern mein Lieblingsgegner im PC: das A20-Gate. Kaum zu glauben, auch AMD-K7 und Merced werden es noch haben. Seit beinah nun 15 Jahren strampele ich mich gegen diese Ausgeburt ab - ohne Erfolg. Was ist das nun, dieses komische Gebilde?
Der IBM-PC hatte nur einen Adreßraum von 1 MByte (Adreßbits A0...A19). Wegen seiner Segmentierung konnte man logisch jedoch 64 KByte mehr adressieren, genauer gesagt bis zu FFFFh:FFFFh= 10FFFFh. Statt bei solchen Adressen ordentlich mit einem Fehler (Adreßüberlauf) abzubrechen, fing der Prozessor einfach wieder klaglos bei 0 an (ein sogenannter Umlauf oder Wrap around). Das wäre nicht weiter schlimm gewesen, hätten nicht `pfiffige´ Microsoft-Programmierer dieses Feature in einer so gut wie nie gebrauchten DOS-Funktion (INT 30h) mißbraucht.
Als dann die IBM-Entwickler den IBM-AT schufen, meinten sie, auf den Microsoft-Irrweg Rücksicht nehmen zu müssen. Der 286-Prozessor des AT verwaltete nunmehr 16 MByte, ein Umlauf an der 1-MByte-Grenze fand demnach nicht statt. Um ihn nachträglich zu simulieren, bauten die IBM-Entwickler eine Schaltung ein, die die A20-Leitung fest auf Null fixieren konnte - das A20-Gate war geboren. Zur Umschaltung des Gates benutzten sie einen sehr umständlichen und langsamen Weg über den Tastatur-Controller - und das Dümmste: sie versäumten es, den aktuellen Stand des Gates auslesbar zu machen oder zumindest irgendwo abzuspeichern.
Performance-Bremse
Viele Jahre später kam Microsoft mit MSDOS 4 auf die Idee, den knappen DOS-Raum durch eine HMA (Higher Memory Area) zu erweitern, eben durch jenes 64-KByte-Segment, das man noch in der 8088-Betriebsart (Real Mode) zusätzlich erreichen konnte. Nur mußte DOS jetzt bei jedem Aufruf erst einmal den Stand des A20-Gates ergründen. Dazu verglich es die ersten acht Bytes an den Adressen 0 und 1M, die bei blockiertem A20 identisch sein sollten - toll, und die Performance freute sich.
Wenn man ältere c't-Software (frühere ctcm- oder ctmem-Versionen) benutzt und dann Windows 95b hochfahren will, bleibt der Rechner stehen; Grund: die c't-Software schaltet das Gate rücksichtslos frei - was Windows bis zu 95a akzepiert, 95b jedoch nicht.
Schlimm erwischte es auch die Prozessor-Designer. Zum einen kostete das blöde Gate wertvolle Nanosekunden, die insgesamt das Design verlangsamten. Als dann die Prozessoren mit integrierten Caches und spekulativen Möglichkeiten ausgestattet wurden, mußte der Prozessor unbedingt auswerten, wie das A20-Gate aktuell steht, um nicht mit den Adressen durcheinanderzukommen. Upgrade-Prozessoren mit Cache, wie etwa die von Cyrix, hatten ihre liebe Not damit, denn ohne ein A20-Mask-Signal mußten sie Teile des Caches abschalten.
Diverse Bugs in den Prozessoren rund um das A20-Gate (siehe Intels Specification Upgrades) zeugen davon, daß das A20-Handling nicht eben einfach ist. Auch die modernen Pentium- und Pentium-II-Prozessoren haben ihre Probleme mit dem A20-Steinzeitrelikt, zum Beispiel beim SMM. Wenn der Prozessor in den Suspend-Modus geht, während der Tastatur-Controller gerade das dumme Gate umschaltet - dann war´s das.
Seit dem 80286 hat jeder Intel-Prozzi diese lustige A20-Gate eingebaut - und so wird es sicher auch noch lange bleiben...
Grüße aus Flensburg,
Arne
Arne
- weedy
- Beiträge: 585
- Registriert: 02.11.2002 21:47:49
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Hier ist noch ein lehrreicher Artikel zu dem Thema:
Hier ist noch ein lehrreicher Artikel zu dem Thema:
http://www.elektronik-kompendium.de/sit ... 811181.htm
weedy.
http://www.elektronik-kompendium.de/sit ... 811181.htm
weedy.
gibt es denn ÜBERHAUPT noch irgendein laufendes ms-dos programm, dass inkompatibel werden würde, würde man das A20 sterben lassen ...Als der PC seinen Durchbruch geschafft hatte und IBM 1984 den AT mit dem Prozessor Intel 80286 herausbrachte sollten auch alle bereits verbreiteten DOS-Programme korrekt ausgeführt werden.
- fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
naja, MS ist teilweise wohl sehr restriktiev was Veränderungen von APIs angeht:ausserdem würde ms da wohl kaum rücksicht drauf nehmen.
Is schon ne weile her, aber ich hab mal so spaßeshalber mit Win 3.11 Disketten rumgespielt und versucht Programme davon unter win2k zu starten. Es hat funktioniert: du kannst z.B. mit dem Mauseinstelunges Programm von win 3.11 die Maus auch unter win 2k einstellen.
Und was macht du wenn z.B. der Arbeitsspeicher von dem tollen 386er der als kassen Computer dient kaputt geht? Klar kann man bei ebay & co. sowas bestimmt noch finden, aber es ist halt doch einfacher einfach ne neue kiste zu kaufen und das das ach so geliebte kassen Programm zu installieren, das massieven gebrauch vom A20 Gate macht und die Mehrwertsteuer zu berechenwer soo alte software laufen lassen will, soll doch einfach bei alter hardware bleiben.
Lang lebe das A20 Gate !! *kotz*
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
Dann läßt du das Programm halt unter einem 386-Emulator (z.B. Bochs) laufen. Und wenn das nicht geht, bezahlst du einem Programmierer halt 2000?, damit er Bochs zu deinem alten Programm kompatibel macht.fred19726 hat geschrieben:Und was macht du wenn z.B. der Arbeitsspeicher von dem tollen 386er der als kassen Computer dient kaputt geht?
MS-DOS 6/Win 95 (spätere Versionen habe ich nicht getestet, geht aber bestimmt auch) unterstützt sogar noch FCBS (File Control Blocks), ein überbleibsel aus CP/M Zeiten, die schon in MS-DOS 2 als veraltet betrachtet wurden. (Und FCBs unterstützen z.B. keine Verzeichnisse)fred19726 hat geschrieben:Is schon ne weile her, aber ich hab mal so spaßeshalber mit Win 3.11 Disketten rumgespielt und versucht Programme davon unter win2k zu starten. Es hat funktioniert: du kannst z.B. mit dem Mauseinstelunges Programm von win 3.11 die Maus auch unter win 2k einstellen.
- fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
Naja, einfach ein € auf die Anzeige kleben, EUR anstat DM ausdrucken ( so hab ses bei uns um Edeka gemacht), und wenn man Lust hat noch die Preise anpassenstartx hat geschrieben:fred19726 schrieb
naja, du fragst dich bei der gelegenheit endlich mal, ob es nicht zeit ist dein kassenprogramm von 1992 auf EURO umzustellen ...und das das ach so geliebte kassen Programm zu installieren, das massieven gebrauch vom A20 Gate macht und die Mehrwertsteuer zu berechen
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
- weedy
- Beiträge: 585
- Registriert: 02.11.2002 21:47:49
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Das BIOS? Der Bootloader?startx hat geschrieben:gibt es denn ÜBERHAUPT noch irgendein laufendes ms-dos programm, dass inkompatibel werden würde, würde man das A20 sterben lassen ...Als der PC seinen Durchbruch geschafft hatte und IBM 1984 den AT mit dem Prozessor Intel 80286 herausbrachte sollten auch alle bereits verbreiteten DOS-Programme korrekt ausgeführt werden.
weedy.
Glaube ich irgendwie nicht... Das BIOS könnte sein, aber das ist ja schnell umgeschrieben.weedy hat geschrieben:Das BIOS? Der Bootloader?
Da der Bootloader vom BIOS in die ersten 64K geschrieben wird, glaube ich nicht, dass er auf das Adress-wrapping bei FFFF:0010 angewiesen ist. Aber man weiss ja nie
Code: Alles auswählen
mov [di],42
inc di
jnc @ok
push ds
add [sp-2],1000h
pop ds
ok:
Edit: Ein Leet-Coder würde natürlich den add befehl als
Code: Alles auswählen
add [sp-1],10h
Zuletzt geändert von Joghurt am 23.08.2004 18:45:44, insgesamt 3-mal geändert.
für die benutzung des A20 war doch HIMEM zuständig, oder?
also spielt sich das alles doch auf der DOS ebene ab. warum hat man nicht einfach
DOS so gepatcht das es eine andere lösug findet als das A20?
und nochmal gefragt, welchen sinn macht das heute noch? wer kauft sich einen computer
mit 64bit prozessor und lässt darauf ein programm laufen, das ein A20 erwartet?
also spielt sich das alles doch auf der DOS ebene ab. warum hat man nicht einfach
DOS so gepatcht das es eine andere lösug findet als das A20?
und nochmal gefragt, welchen sinn macht das heute noch? wer kauft sich einen computer
mit 64bit prozessor und lässt darauf ein programm laufen, das ein A20 erwartet?
Ein A20 sollte es besser erwarten Alte Programme erwarten ja gerade kein A20; also das von allen Adressen nur die untersten 20 bit Zählen. (FFFF:0010 = 0000:0000)startx hat geschrieben:mit 64bit prozessor und lässt darauf ein programm laufen, das ein A20 erwartet?
Edit: Für die jungen unter uns: Im Real-Mode gibt es Segment und Offset, das Segment wird 4 Bit nach links geshiftet und zum offset addiert, um die physikalische Adresse zu bekommen:
Code: Alles auswählen
1234:5678 => 12340h + 5678h => 179b8h
FFFF:0010 => FFFF0h + 0010h => 100000h (mit ak. A20)
=> 00000h (ohne ak. A20)
Zuletzt geändert von Joghurt am 23.08.2004 18:52:04, insgesamt 1-mal geändert.
http://users.cybercity.dk/~bse26236/bat ... IMEM_S.HTM/A20CONTROL:ON|OFF
Specifies whether HIMEM is to take control of the A20 line even if A20
was on when HIMEM was loaded. The A20 handler gives your computer access
to the HMA. If you specify /A20CONTROL:OFF, HIMEM takes control of the
A20 line only if A20 was off when HIMEM was loaded. The default setting
is /A20CONTROL:ON.