Thread View: de.comp.os.misc
2 messages
2 total messages
Started by Steffen Schwigon
Tue, 05 Jan 1993 15:40
Problem: MS-DOS/A20-Leitung/DR-DOS
Author: Steffen Schwigon
Date: Tue, 05 Jan 1993 15:40
Date: Tue, 05 Jan 1993 15:40
33 lines
1813 bytes
1813 bytes
Hallo Leute. Folgendes Problem: Ich habe einen relativ alten 486/25 (DX, kein SX ! Ja, so etwas gab es mal !), das BIOS ist von 1990 (Award). Wenn ich nun MS-DOS bei mir laufen lasse, bringt der hidos.sys (oder himem.sys ?) einen Fehler. Die A20-Leitung wuerde nicht funktionieren. Normalerweise fahre ich den Rechner mit DR-DOS. Dessen himem.sys regt sich ganz selten (nach manchem Warmstart) auf, aber dann drueck' ich nochmal RESET und es klappt und der EMM386.SYS hat noch nie was gesagt. Nun meine Frage: Was genau ist diese A20-Leitung. Klingt irgendwie nach 'Adresse' und '20 Bit'. Ich hab auch schon gehoert, dass dieses Problem angeblich oefters bei diversen alten 386ern auftauchen soll. Warum funktioniert es beim himem von DR-DOS und warum aber evtl. nach einem Warmstart nicht mehr. Warum stoert es den EMM386.SYS nicht. Braucht er diese Leitung vielleicht gar nicht ? Ich wuerde mich ueber jeden kleinen Hinweis dazu freuen. Danke. Steffen -- ------------------------------------------------------------------------------ Steffen Schwigon e-mail : ss5@irz201.inf.tu-dresden.de ------------------------------------------------------------------------------ Sei wie der 22. Elephant mit erhitztem Kurswert im Weltraum - BELLE !
Re: Problem: MS-DOS/A20-Leitung/DR-DOS
Author: Andreas Westfeld
Date: Tue, 12 Jan 1993 11:10
Date: Tue, 12 Jan 1993 11:10
76 lines
3970 bytes
3970 bytes
In article <1ica61INNmis@irz401.inf.tu-dresden.de>, ss5@irz402.inf.tu-dresden.de (Steffen Schwigon) writes: >Path: irz401!irz402.inf.tu-dresden.de!ss5 >From: ss5@irz402.inf.tu-dresden.de (Steffen Schwigon) >Newsgroups: de.comp.os.misc >Subject: Problem: MS-DOS/A20-Leitung/DR-DOS >Date: Tue, 5 Jan 93 16:40:49 MET >Organization: Dept. of Computer Science, TU Dresden, Germany >Lines: 33 >Distribution: world >Message-ID: <1ica61INNmis@irz401.inf.tu-dresden.de> >Reply-To: ss5@irz402.inf.tu-dresden.de (Steffen Schwigon) >NNTP-Posting-Host: irz402.inf.tu-dresden.de > > >Hallo Leute. > >Folgendes Problem: > >Ich habe einen relativ alten 486/25 (DX, kein SX ! Ja, so etwas gab es mal !), >das BIOS ist von 1990 (Award). > Was genau ist diese A20-Leitung. Klingt irgendwie nach 'Adresse' und '20 Bit'. > Ich hab auch schon gehoert, dass dieses Problem angeblich oefters bei diversen > alten 386ern auftauchen soll. A20 (Adressleitung 20) ist ein Phaenomen, welches ab dem AT auftaucht. Der XT und frueher hat einen maximalen Adressraum von 1 MB. Das sind 2^20 Bytes. Dazu braucht der Rechner genau 20 Adressleitungen (A0...A19). Ein 80286 kann aber 16 MB adressieren, wofür 4 weitere Adressleitungen (A20...A23) benoetigt werden. Nun gibt es einen incompatiblen Effekt zwischen 8086 und 80286 (im real mode): Eine Adresse wird aus Segment und Offset gebildet (jeweils 16 bit). Die Adresse berechnet sich 16*Segment+Offset. Es gibt mehrere Möglichkeiten auf ein und die selbe Adresse zuzugreifen: z. B.: 0040:006C=0000:046C=0046C usw. Aber: Beim 8086 bedeutet die Adresse FFFF:0010 das selbe wie 0000:0000 nämlich 00000. Beim 80286 bedeutet FFFF:0010 die Adresse 100000. Diese Adressierungsart macht sich HIDOS.SYS von DR DOS zunutze, um im real mode auf den sog. unteren Zusatzspeicher zuzugreifen. Dorthin wird der Systemkern ausgelagert, so daß knappe 64 kB mehr zur Verfügung stehen (unterhalb der 640 kB Grenze). Um beide Rechner kompatibel zu machen, wird die A20 einfach abgeschaltet, so daß im erwähnten Beispiel 100000 ebenfalls zu 00000 wird (alle Adressen hexadezimal!). Bei meinem 80286 läßt sich diese Leitung über eine I/O-Portadresse schalten. DOS muß nun, wenn der Kern in das Segment FFFF ausgelagert wird, dafür sorgen, das die A20 eingeschaltet bleibt. Dafür gibt es verschiedene Möglichkeiten (maschinenabhängig). Ich hatte z. B. ein Problem, wenn ich auf der RAM-Disk gearbeitet habe während KEYB GR hochgeladen war. Der Sache bin ich auf den Grund gegangen: VDISK.SYS verwendet eine BIOS-Funktion des INT 15 (67) , um Blöcke aus dem Zusatzspeicher zu holen. Dazu schaltet mein BIOS in den protected mode, A20 an, kopiert, hot-reset (zurück in den real mode), A20 aus (!!). Und bevor HIMEM.SYS die A20 wieder einschalten kann, habe ich wahrscheinlich einen Keyboard-Interrupt ausgelöst (int 9). Der int 9-vector zeigt aber in das Segment FFFF, also wenn die A20 ausgeschaltet ist in die Interrupt-Vektor-Tabelle am Seicheranfang. Dort stehen natürlich keine vernünftigen Befehle und schon garnicht zur Tastaturbehandlung. Es gibt zwei Lösungen des Problems: BIOS wechseln KEYB GR nicht hochladen Ich habe eine dritte Variante gewählt und einen Treiber geschrieben (ca. 600 Bytes), der die Funktion 67 des int 15 ersetzt und die A20 am Ende nicht (!) ausschaltet. -- Andreas Westfeld äöüß=aeoeuesz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads