🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#24
Author: Steffen Schwigon
Date: Tue, 05 Jan 1993 15:40
33 lines
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
#26
Author: Andreas Westfeld
Date: Tue, 12 Jan 1993 11:10
76 lines
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