Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

4 Gigabyte mit Quickbasic nutzen - Anwendung des Unreal Mode
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 25.09.2007, 16:12    Titel: Antworten mit Zitat

@PMedia:
War nicht auf dich, sondern AndT bezogen. Auch wenn eure Startreihenfolge doch eher seltsam anmutet. lachen

Klar kannst du Interrupts überschreiben, aber diese Software-Interrupts (d.h. zum Großteil "nur" 0x21) sind DOS.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 08:29    Titel: Antworten mit Zitat

Ich grab mal wieder alte Threads aus.

Ich hatte mal ein wenig Zeit und habe mir das hier durchgelesen. Das was hier als "UnrealMode" bezeichnet wird, ist absolut nichts neues und wie schon einmal erwähnt: Fast jedes Spiel Mitte der 90er Jahre nutzte es.

In der Regel hat man dafür einen DOS-Extender wie DOS4GW oder Go32 verwendet und das Speichermodell nennt sich FLAT

Ich weiß nicht woher die Info stammt das dieser Bereich nur für Daten genutzt werden könne.

Der Hintergedanken war folgender:
Nun hat man seinen 386er, 486er oder Pentium und kann unter DOS doch nur das unter MB verwenden. Windows als Spieleplattform fiel damals flach. Also behalf man sich eines kleinen Tricks:

Man schaltete den Prozessor in den P-Mode und legte eine GDT sowie eine LDT an, die den gesamten physikalischen Speicher beinhaltet. Das Programm verlagerte man über die 1 MB Grenze. Damit zerstörte man das DOS im ersten MB nicht und konnte dennoch auf einer 32 Bit Umgebung aggieren. Im unteren Speicherbereich verbliebt nur der DOS-Extender der als REAL-Mode Bridge verwendet wurde. Auch diese Art und Weise konnte man nach wie vor auf das DOS und die Interrupts über diese Bridge zurückgreifen (z.B. für FileIO) und dennoch den gesamten Speicher nutzen.
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.12.2007, 14:47    Titel: Antworten mit Zitat

Bimi hat Folgendes geschrieben:
Ich hatte mal ein wenig Zeit und habe mir das hier durchgelesen. Das was hier als "UnrealMode" bezeichnet wird, ist absolut nichts neues und wie schon einmal erwähnt: Fast jedes Spiel Mitte der 90er Jahre nutzte es.

Na, das ist jetzt auch wieder ein bisschen übertrieben lachen
Gibt viele Spiele, die ihn verwenden, aber als die Sache so richtig ins rollen kam, war schon wieder Windows unterwegs...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 15:43    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Bimi hat Folgendes geschrieben:
Ich hatte mal ein wenig Zeit und habe mir das hier durchgelesen. Das was hier als "UnrealMode" bezeichnet wird, ist absolut nichts neues und wie schon einmal erwähnt: Fast jedes Spiel Mitte der 90er Jahre nutzte es.

Na, das ist jetzt auch wieder ein bisschen übertrieben lachen
Gibt viele Spiele, die ihn verwenden, aber als die Sache so richtig ins rollen kam, war schon wieder Windows unterwegs...


...so ab 94 kamen die Extender-Spiele raus und erst ab etwa 97 war Windows als Plattform für Spiele akzeptiert - ich finde ist schon ne ganz schöne Zeit...
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.12.2007, 16:59    Titel: Antworten mit Zitat

Extender gehen aber nicht wirklich in den Unreal-Mode, so wie ich das sehe. Dazu darf nämlich kein Speichermanager geladen sein (die würden sich gegenseitig ins Gehege kommen), und solche Spiele, die den Unreal-Modus wirklich benutzen, sind sehr selten (wie schon genannt, einige Renaissance-Releases wie Zone 66). Ein DOS Extender muss sich ja an die gegebenheiten des Systems anpassen und setzt in der Regeln einen XMS-Treiber voraus, was nun wirklich kein Unreal Mode mehr ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 17:22    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Extender gehen aber nicht wirklich in den Unreal-Mode, so wie ich das sehe. Dazu darf nämlich kein Speichermanager geladen sein (die würden sich gegenseitig ins Gehege kommen), und solche Spiele, die den Unreal-Modus wirklich benutzen, sind sehr selten (wie schon genannt, einige Renaissance-Releases wie Zone 66). Ein DOS Extender muss sich ja an die gegebenheiten des Systems anpassen und setzt in der Regeln einen XMS-Treiber voraus, was nun wirklich kein Unreal Mode mehr ist.


Nein.

Das gilt für XMS-Manager, nicht für DOS Extender wie Go32 oder DOS4GW. Ein XMS-Treiber benötigen gerade sie nicht - im Gegenteil, sie wirken störend.
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.12.2007, 17:51    Titel: Antworten mit Zitat

Achja... warum funktionieren dann DOS4GW-Spiele generell (nur) mit HIMEM, Zone66 mit seinem eigenen Manager dagegen nicht?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 18:04    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Achja... warum funktionieren dann DOS4GW-Spiele generell (nur) mit HIMEM, Zone66 mit seinem eigenen Manager dagegen nicht?


Plain DOS OHNE HIMEM.SYS und DOS4GW funzt - egal of NFS oder Descent. Ich weiß ehrlich gesagt nicht so ganz wo dein Problem ist.
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.12.2007, 18:18    Titel: Antworten mit Zitat

Fakt it, dass ich besagte Spiele auch mit HIMEM spielen kann und sie *vermutlich*, wenn solch ein Speichermanager geladen ist, diesen auch nutzen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 18:34    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Fakt it, dass ich besagte Spiele auch mit HIMEM spielen kann und sie *vermutlich*, wenn solch ein Speichermanager geladen ist, diesen auch nutzen.


Nein machen sie nicht - würde auch dem Ansatz wiedersprechen.

Für was soll er gebraucht werden?

Für 32 Bit Code brauche ich kein XMS und auch keinen PMode. Wenn unter DOS ein Programm läuft, ist es alleine, spricht der XMS-Manager hat keine Speicherseiten über 1MB zu verwalten, die noch irgend jemand braucht. HIMEM.SYS wird nicht gebraucht, stört aber auch nicht.

HIMEM.SYS wird für klassische DMPI-Manager benötigt, deren Applikationen ohne ein Umschalten in den P-Mode auskommen müssen. Eine weitere Funktion von HIMEM.SYS ist das "bedienen" des A20-Gates (der dümmsten Idee im PC überhaupt) - es muss gewährleistet sein das dieses offen ist.
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.12.2007, 18:42    Titel: Antworten mit Zitat

Bimi hat Folgendes geschrieben:
Für was soll er gebraucht werden?


Vorhandene Architekturen benutzen und eben nicht selbst die Adressblöcke > 1 MiB ansprechen, sondern per XMS. Würde für mich Sinn ergeben, da die Spiele so auch nciht Windows ins Gehege kommen können.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 20.12.2007, 07:51    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Bimi hat Folgendes geschrieben:
Für was soll er gebraucht werden?


Vorhandene Architekturen benutzen und eben nicht selbst die Adressblöcke > 1 MiB ansprechen, sondern per XMS. Würde für mich Sinn ergeben, da die Spiele so auch nciht Windows ins Gehege kommen können.


Wurde damals aber so gemacht.

Für Spieleentwicklung ist XMS zu hinderlich weil es zum einen durch das Verbleiben im RealMode sehr schwierig ist Code noch oben zu legen, da er dort nicht direkt ausgeführt werden kann. Der Code muss bestimmte Anforderungen besonders hinsichtlich der Addressierung erfüllen (Overlays)

Des weiteren war eine Codepage auf 2*64kb beschränkt und das war einfach zu wenig. Dies hatte zur Folge das es häufig zu einem austauschen der Speicherseiten kam (über HIMEM.SYS konnte ich Speicherseiten von "oben" nach unten einblenden - bearbeitet werden mussten sie "unten"). eine Datenstruktur durfte 64kb nicht übersteigen. Das Ganze führte zu einer sehr hohen Komplexität weshalb man nach einem anderen Weg suchte.

Man nutzt die Tatsache aus das eine 386 CPU oder höher im REAL-Mode "auf Wunsch" das Highwort einer 32 Bit Adresse im Offset nicht ignoriert. Dieser "Wunsch" wurde durch das "umschalten/erweitern" ermöglicht.

Auch Go32 macht dies so, nutzt jedoch auch gleich die Möglichkeit eine GDT und eine LGDT zu hinterlegen sowie ein paar nette "Treiberlein". So konnte man sich in Go32 das switschen der Speicherbänke einer VGA-Karte sparen, Ab Adresse 0xd0000000 war der Speicher der Graphikkarte linear (!) eingeblendet. Die ersten Versionen diese beiden Extender kannten Windows 95 noch nicht und legten daher immer eine GDT und ein LDT an - ersteres war jedoch zum Scheitern verurteilt. Eine App darf auch aus dem V86 Mode in den P-Mode schalten - aber sie darf keine GDT anlegen. Spätere Versionen legten nur dann eine GDT an, wenn noch keine existierte, also wenn noch kein OS wie Windows 95 geladen wurde.

Was man dann hatte war ein linearer direct mapped Adressraum in der Größe des Hauptspeichers und dieses Speichermodell bekam dann den Namen FLAT. Der Unterschied zum heutigen FLAT ist nur, das der heutige nicht mehr direct mapped ist.
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 22.12.2007, 12:35    Titel: Antworten mit Zitat

Also kann man auch in einer DOS-Box in den "Flat" mode schalten? Wie müßte man mein Beispiel umbauen, damit man den von mir ( und anderen;) ) als unreal mode bezeichneten mode in einer DOS Box verwenden kann?

Außerdem schreibst Du: "Der Code muss bestimmte Anforderungen besonders hinsichtlich der Addressierung erfüllen (Overlays) "

Welche Anforderungen sind das?

Georg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 04.04.2008, 17:14    Titel: Antworten mit Zitat

Um den Unreal Mode zu nutzen, muss ja das A20 gate umgeschaltet werden. Daher hier mal ein Stück QB-Code, das genau das tut:
Code:

sub EnableA20gate

a20$ = "66556689E5E464A80275FAB0D0E664E464A80174"
a20$ = A20$ + "FAE4600C026650E464A8027"
a20$ = a20$ + "5FAB0D1E664E464A80275FA6658E66"
a20$ = a20$ + "0E464A80275FAB0D0E664E464"
a20$ = a20$ + "A80174FAE460A802750966B8
a20$ = a20$ + "00000000E9060066B801000
a20$ = a20$ + "0006689EC665DC3"

FOR i% = 1 TO LEN(a20$) STEP 2
a$ = MID$(a20$, i%, 2)
b$ = CHR$(VAL("&H"+a$))
prg$ = prg$ + b$
NEXT i%

DEF SEG = VARSEG(prg$)
CALL ABSOLUTE (SADD(prg$))
DEF SEG

end sub


Ich konnte den Code leider noch nicht testen, er sollte aber funktionieren.
Ausprobieren auf eigene Gefahr.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Klößchn
1x verwarnt


Anmeldungsdatum: 22.03.2008
Beiträge: 77
Wohnort: Donauwörth

BeitragVerfasst am: 14.04.2008, 12:16    Titel: Antworten mit Zitat

Ist ja alles schön und gut, aber was nützt und das? Müsst nich über kurz oder lang der Variablenspeicher von QB erschöpft sein, und somit weitere Variablen verweigern? Dann bringen 4gig ram auhch nix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.04.2008, 12:25    Titel: Antworten mit Zitat

es bringt sehr viel, wenn man große datenmengen ablagern will...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Klößchn
1x verwarnt


Anmeldungsdatum: 22.03.2008
Beiträge: 77
Wohnort: Donauwörth

BeitragVerfasst am: 14.04.2008, 13:58    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
es bringt sehr viel, wenn man große datenmengen ablagern will...

Warum sollte ich das tun? Und wenn, dann sind die "technischen" Gegebenheiten von QB eher ein Hindernis, wenn ich nicht viel Assemblercallbacks einbauen möchte... und DA sollte ich mir dann überlegen, nicht vlt. doch lieber die Programmiersprache zu wechseln...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.04.2008, 14:00    Titel: Antworten mit Zitat

Es gab da mal so eine Zeit, die nannte sich DOS-Ära...
Dass es heute noch auf einem "normalen" Rechner sinnvoll ist, behaupte ich nicht.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Klößchn
1x verwarnt


Anmeldungsdatum: 22.03.2008
Beiträge: 77
Wohnort: Donauwörth

BeitragVerfasst am: 14.04.2008, 14:05    Titel: Antworten mit Zitat

Ich kenne die DOS-Ära noch zu gut. Ich glaub nicht, dass man damals 4 Gigabyte im Standard-PC gehabt hatte zwinkern
Zumal damals bereits die Unterschiede zwischen Interpreter und Compiler deutlich geworden sind, weshalb man sich entscheiden musste - verstehbares programm oder performant? Ich - und ich denk mal wir alle - habe mich für das leicht verständliche Programm entschieden, was wahrscheinlich auf Faulheit beruht, denn es heißt nicht, nur um mit C(++) anfangen zu müssen, muss man die Hardware kennen. Alles nur eine Frage der Syntax. Trotzdem ist nachweißbar, dass QuickBasic eines der langsamsten Basic's ist, die es gibt, wahrscheinlich hat sich Microsoft - wie man es in VB quasi nachwießen könnte - da noch einige Lücken offen gehalten, denn man sieht ja zB an FB, dass ein Compiler mehr können muss, als einen Bytecode an den Interpreter zu heften.
Und der Sinngehalt für heute beschränkt sich sowieso.
Aber nett, um es als Machbar zu erklären :]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.04.2008, 14:13    Titel: Antworten mit Zitat

Klößchn hat Folgendes geschrieben:
Ich glaub nicht, dass man damals 4 Gigabyte im Standard-PC gehabt hatte zwinkern

Hallo? Es heißt nicht, dass man 4 GB ansprechen muss! Man kann bis zu 4GB addressieren. Und damals hat nun mal fast jedes Spiel gebrauch vom erweiterten Speicher gemacht. Wie erwähnt, Renaissance hat diesen Modus ganz gerne benutzt, andere haben auf EMS/XMS zurückgegriffen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz