Grafik-Speicher Einblendung verhindern

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
TomCat
MemMaker-Benutzer
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Grafik-Speicher Einblendung verhindern

Beitrag von TomCat »

Hallo,

im konventionellem Arbeitsspeicher wird ab Adresse a0000h der Grafikspeicher eingeblendet. D.H. ein Anwenderprogramm kann nur maximal 655350 Byte abzüglich Interrupt-Vektortabellen etc. groß sein.
Da ich den Unreal-Mode verwende schreibe ich die Grafikdaten direkt in den hohen 32-Bit Adressbereich.

Ist es möglich dieses Einblenden in den konventionellen Speicher zu verhindern, um mehr Speicher für Anwendungen zu haben?

THX
TomCat
wobo
DOS-Guru
Beiträge: 613
Registriert: So 17. Okt 2010, 14:40

Re: Grafik-Speicher Einblendung verhindern

Beitrag von wobo »

Meines Wissens dürfte das nicht gehen. IBM hat halt damals entschieden, dass der RAM bei 640k aufhört und ab dem AT erst wieder als "Hoher Speicher" ab 1024k weitergeht. Dazwischen ist per definition kein Ram. Das BIOS zählt beim Booten daher auch nur maximal bis 640k und gibt dies so an DOS weiter.

Hast Du schon probiert, ob da bei eingeschaltetem LFB Daten nach $A0000 schreiben kannst und wieder korrekt lesen kannst? Falls ja müsstest Du noch prüfen, ob die Grafikkarten nicht die Daten aus $A0000 und den ersten 64kb des LFB identisch hat (hat meine Cirrus Logic so gemacht, wenn ich den LFB eingeschaltet hatte). Falls ja, könntest Du von Hand den Bereich ab $A0000 für Dein Anwendungsprogramm nutzen - allerdings wohl ohne Garantie, dass es auf anderen PCs oder andere Grafikkarten auch läuft.
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Grafik-Speicher Einblendung verhindern

Beitrag von DOSferatu »

Ich könnte mich irren - aber liegt nicht "unterhalb" des BIOS-ROMs noch RAM?
Das müßte doch dieser EMS sein... - oder liege ich da falsch?
Also der EMS liegt quasi an derselben Adresse, man muß nur irgendwie speziell drauf zugreifen, weil man sonst den ROM erwischt. HIMEM.SYS hat dafür meines Wissens Funktionen.
Ich hab das noch nie ausprobiert - aber viele ältere Programme scheinen diesen Bereich als Sounddatenpuffer oder so zu nutzen. (Wenn man ohne EMS bootet, funktionieren manche Sachen nur ohne Sound.)
Wollte das sowieso schon lange mal klären...
Benutzeravatar
Dosenware
DOS-Gott
Beiträge: 3745
Registriert: Mi 24. Mai 2006, 20:29

Re: Grafik-Speicher Einblendung verhindern

Beitrag von Dosenware »

@Dosferatu

normalerweise ist der EMS Pageframe exklusiv - d.h. an der gleichen Adresse ist einfach nichts. (bzw. was dort ist, ist deaktiviert)
Was du mir "irgendwie speziell darauf zugreifen" meinst ist wohl das Bankswitchung, dass EMS betreibt (es blendet abwechselnd verschiedene Speicherbereiche auf der gleichen Adresse ein, um mehr Speicher bereitzustellen als der Realmode addressieren kann)...

Oder meinst du jetzt das Shadowram (der Speicher der durch Rom überdeckt ist - und häufig als eine Art Cache für die langsamen Rombausteine genutzt wird)? Da müsstest du dich mit den Chipsätzen auseinandersetzen...
TomCat
MemMaker-Benutzer
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Grafik-Speicher Einblendung verhindern

Beitrag von TomCat »

bloederweise kann ich nicht mal selber mein Programm ab 1MB laden, also ganz ohne DOS, da ich dann die Werte der Relocation-Tabelle, also die Segmentregister über 1 MB setzen muesste . Diese sind aber nur 20 Bit breit. Wären sie größer,
waere das ja kein Problem.
Scheint wohl nicht zu gehen...
oder?
Antworten