Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 25.09.2007, 17:12 Titel: |
|
|
@PMedia:
War nicht auf dich, sondern AndT bezogen. Auch wenn eure Startreihenfolge doch eher seltsam anmutet.
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 09:29 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2007, 15:47 Titel: |
|
|
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
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 16:43 Titel: |
|
|
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
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2007, 17:59 Titel: |
|
|
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 18:22 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2007, 18:51 Titel: |
|
|
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 19:04 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2007, 19:18 Titel: |
|
|
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 19:34 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2007, 19:42 Titel: |
|
|
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 |
|
|
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 20.12.2007, 08:51 Titel: |
|
|
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 |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 22.12.2007, 13:35 Titel: |
|
|
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 |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 04.04.2008, 18:14 Titel: |
|
|
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 |
|
|
Klößchn 1x verwarnt
Anmeldungsdatum: 22.03.2008 Beiträge: 77 Wohnort: Donauwörth
|
Verfasst am: 14.04.2008, 13:16 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.04.2008, 13:25 Titel: |
|
|
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 |
|
|
Klößchn 1x verwarnt
Anmeldungsdatum: 22.03.2008 Beiträge: 77 Wohnort: Donauwörth
|
Verfasst am: 14.04.2008, 14:58 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.04.2008, 15:00 Titel: |
|
|
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 |
|
|
Klößchn 1x verwarnt
Anmeldungsdatum: 22.03.2008 Beiträge: 77 Wohnort: Donauwörth
|
Verfasst am: 14.04.2008, 15:05 Titel: |
|
|
Ich kenne die DOS-Ära noch zu gut. Ich glaub nicht, dass man damals 4 Gigabyte im Standard-PC gehabt hatte
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.04.2008, 15:13 Titel: |
|
|
Klößchn hat Folgendes geschrieben: | Ich glaub nicht, dass man damals 4 Gigabyte im Standard-PC gehabt hatte |
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 |
|
|
|