Auf RAM im unreal-Mode zugreifen

Diskussion zum Thema Programmierung unter DOS (Intel x86)
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: Auf RAM im unreal-Mode zugreifen

Beitrag von freecrac »

Brueggi hat geschrieben:Huii :-) Danke für die ausführliche Antwort.
Das arbeite ich mal in Ruhe durch :-)

Das A20-Problem übrigens besteht auch, wenn kein Himem oder gleichwertiger Treiber geladen wurde.
Das kann ich mich nicht erklären.

Chris Giese benutzt verschiedene Methoden die a20 anzuschalten:
http://my.execpc.com/~geezer/code/a20.asm

Dirk
wobo
DOS-Guru
Beiträge: 614
Registriert: So 17. Okt 2010, 14:40

Re: Auf RAM im unreal-Mode zugreifen

Beitrag von wobo »

Brueggi hat geschrieben:Sorry, wenn ich da kurz etwas einschiebe. Gibts irgendwo ein gutes Tutorial zum 32-Bit-Protected-Mode? Konkret: Was muss ich einrichten, bevor ich den PM nutzen kann, wie kann ich wieder zum RM wechseln usw. Ich will ja so langsam aber sicher mal zu BDOS/386 wechseln - wobei der Unreal-Mode jetzt grundsätzlich gut ist, aber wohl eher nur eine Art RAM-Disk ist - wenn, dann soll man auch Programme in Speicher > 1 MB laden können.
Naja, Ram-Disk ist etwas unterbewertet ;-). Du hast halt gut 500kb für Code und weitere x MB für Daten. Ich kann mir jetzt nicht vorstellen, wie ich jemals für ein DOS-Programm mehr Code erzeugen können sollte.
Brueggi hat geschrieben:Und noch eine Frage: Kann es sein, das die Bios-Routinen in Int $15 immer A20 deaktivieren? Ich hab bei meinem 486 schon alles versucht - sobald ich BIOS-Routinen verwende, um Speicher zu transfierieren, scheint danach jedes mal A20 aus zu sein, und lässt sich auch nicht wieder anschalten (z. B. über den Tastatur-Controller). Das Ergebnis ist immer ein Freeze :-(
Meine Versuche, mit In t$15 Speicher in den XMS und zurück zu kopieren, stammen aus den 90ern. Nachdem das quälend langsam war, habe ich das ziemlich schnell wieder aufgegeben. Allerdings konnte ich mich nicht daran erinnern, für die Int $15 - Methode das Gate A20 anschalten zu müssen. Ich habe mir jetzt auch die Int$15 - Beispiele in PC-Intern 3.0 angeschaut. Dort wird Int $15 zum Kopieren der Daten in/aus dem XMS aufgerufen, ohne dass zuvor Gate A20 freigeschaltet oder irgendwie problematisiert wird. Ich gehe daher davon aus, dass die (notwendige) Freischaltung die BIOS Routine für Int $15 automatisch vornimmt. Da Ausgangsstellung aus Kompatibilitätsgründen das Sperren der A20 ist, halte ich es für sehr wahrscheinlich, dass nach jedem Aufruf der Kopierroutine die A20 wieder gesperrt wird.

Einen Freeze dürfte es natürlich nicht geben. Benutzt Du bei EXTMEM.APL eigentlich Int$15?
Brueggi

Re: Auf RAM im unreal-Mode zugreifen

Beitrag von Brueggi »

Ja, weil ich mich so um die Kompatibilität nicht weiter kümmern muss. Die Verwaltung macht Extmem (ggf. auch das freischalten von A20 wenn gewünscht, auf 3 verschiedenen Arten), den Transfer aber macht int $15 :-) :-)

Also auf meinem 486 funzt die "AT-Methode" über den Tastatur-Controller tadellos. Nur eben einmal int $15 verwendet, geht nichts mehr.... Das finde ich etwas verwirrend... :-) Ich denke mal, richtig quälend langsam ist der Transfer über Int $15 am 286 (wegen dem Prozessor-Reset zur Rückkehr in den Real Mode). Aber ab dem 386 dürfte es eigentlich recht flott sein (zumindest in der Theorie).
Antworten