
                                  XMSDSK.EXE
                                      &
                                  EMSDSK.EXE

                           Franck UBERTO - 98/03/27
                          38000 Grenoble - FRANCE
                                   Email : uberto@esrf.fr


Diese Programme sind 2 Ramdisks. Fuer etliche Leute werden sicher einige
"Extras" fehlen, aber ich habe sie so gemacht, dass sie effizient und einfach
zu gebrauchen sind. Es sind zwei Programme, weil ich Groesse und
Geschwindigkeit optimieren wollte, deswegen ist eines fuer XMS und das andere
fuer EMS gemacht worden.
Um Hilfe zu ihrer Bedienung zu bekommen, geben Sie einfach XMSDSK /?
(oder EMSDSK /?) ein.

Man kann sie auf einem 286er und hoeher einsetzen (fuer die 8086 EMSDSK86
verwenden). Nach der Installation nehmen sie ca. 500 Bytes Speicher ein.

Sie koennen die Groesse der Disk jederzeit aendern  (bis auf Null oder 2
Gigabyte, so vorhanden) und so Speicher fuer andere Verwendungszwecke
zurueckgewinnen. Dies ist im DOS-Kommandozeilenmodus moeglich, aber *NICHT*
unter WINDOWS, wegen des virtuellen Arbeitsspeichers. Der transiente Teil des
Programms wird alle benoetigten Parameter fuer die neue Disk errechnen
(dieselben wie bei einer MS-DOS-Festplatte; sie sollten deswegen fuer alle
Faelle geeignet sein).

Sie sollten vorsichtig sein, wenn Sie aus einem DOS-Programm heraus auf die
DOS-Kommandozeile zugreifen und die Groesse der Disk veraendern: im Fall, dass
Sie die TEMP- (oder TMP-) Umgebungsvariable in der Ramdisk eingerichtet haben
oder dem Programm mitgeteilt haben, dass es die Ramdisk benutzen soll, koennen
dort verborgene Dateien eingerichtet worden sein und einige (nicht) angenehme
Dinge dort passieren.

Diese RAM disks koennen *UEBER DIE KOMMANDOZEILE* eingerichtet werden (und
damit ueber die autoexec.bat, siehe unten). Auf diese Weise koennen Anwender
*SOGAR DEN VERWENDETEN LAUFWERKSBUCHSTABEN WAEHLEN*.

Obwohl die Installationsart (ueber die Kommandozeile) unter MS-DOS 3.x, 4.0,
5.0, 6.x erfolgreich getestet worden ist (vor Jahren von "Undocumented DOS"
von Adrew Schulman, Addison-Wesley, uebernommen), kann nicht garantiert
werden, dass andere MS-DOS-Versionen oder DOS-Versionen anderer Hersteller das
Programm unterstuetzen.
ABER beachten Sie bitte die Kompatibilitaetsliste weiter unten.

Indem Sie _EIN LAUFWERK BENENNEN_ ist es moeglich, die RAMdisk zwischen oder
nach CD-Rom- und Netzwerk-Laufwerken einzurichten (manche Anwender moechten
sie mit bestimmten Laufwerksbuchstaben versehen haben; leider ordnet MS-Dos
Laufwerksnamen so zu, wie sie beim Laden erscheinen). Nebenbei kann diese
Vorgehensweise das Verhalten von Cacheprogrammen verbessern (wenn der Cache
nicht fuer ein bestimmtes Laufwerk abgeschaltet werden kann, laedt man die
RAMdisk nach diesem Cacheprogramm; letzteres "sieht" dann nicht die RAMdisk
und versucht nicht, sie zu cachen: es ist nicht nur ueberfluessig, eine
RAMdisk im RAM zu cachen, sondern verbraucht auch Cache-Ressourcen).

PS1: wenn ein in der Kommandozeile speziell angegebenes Laufwerk auch genutzt
     werden koennen soll, muss darauf geachtet werden, dass der
     Laufwerksbuchstabe innerhalb des von LASTDRIVE festgelegten Bereichs liegt;
     der Standardwert (wenn nicht in der Config.sys angegeben) ist E.

PS2: Wenn DBLSPACE oder DRVSPACE geladen ist, muessen zwei LASTDRIVEs beachtet
     werden: Das eine in der CONFIG.SYS und ein weiteres in DBLSPACE.INI bzw. 
     DRVSPACE.INI. Letzteres ist eine Nur-Lesbare, Versteckte System-Datei,
     ueblicherweise auf dem Startlaufwerk C: oder dem Hostlaufwerk zu finden.
     Es hat den Anschein, als ob dem hoeheren Wert der Vorrang gegeben werde,
     aber es gibt Ausnahmen (sonst waere es nicht witzig :-) ): wenn ein oder
     mehrere Laufwerke in "Slots" eingerichtet werden, die fuer DBLSPACE oder
     DRVSPACE vorgesehen sind, wird LASTDRIVE entsprechend erhoeht.
     Tut mir leid, ich versuchte, es so klar wie moeglich auszudruecken, aber
     besser kann ich es nicht, weil es fuer meine arme Person viel zu hoch ist.
     :) :)


Sie koennen diese Dateien benutzen und kopieren: Sie sind Freeware.

Viel Spass ...



  * Ein paar Tips ...
  --------------------

  * Zu XMS- und EMS-Speicher ...

XMS-Speicher wird in einem _zusammenhaengenden_ Block eingerichtet. So kann
ueberraschenderweise passieren, dass Sie XMSDSK in der Groesse nicht
veraendern koennen, obwohl MEM (oder ein anderes Programm) anzeigt, dass jede
Menge XMS vorhanden sei. Seltsam, nicht?
Die Ursache dafuer ist, dass andere Programme feste Bloecke im Speicher belegt haben koennen und das XMS dadurch_fragmentiert_ worden ist. Genauso wie der alte DOS-Speicher!
Die Loesung dafuer ist, Programme, die feste Speicherbloecke benoetigen, _vor_ XMSDSK zu laden, um die Fragmentierung des XMS zu verhindern. Auf diese Weise koennen Sie XMSDSK in der Groesse veraendern, von Null bis zum letzten verfuegbaren Byte im XMS-Speicher.

Das ist ein weiterer Vorteil davon, dass man RAMdisk von der Kommandozeile aus
laden kann.

Beachten Sie bitte, dass auf manchen Rechnern die Fragmentation dennoch weiter bestehen kann: dies haengt davon ab, wie diese BIOS- oder Hardware-konfigurationen mit dem oberen Speicher umgehen.

Die Fragmentation tritt nicht im Zusammenhang mit EMSDSK auf, weil der
EMS-Speicher (echt oder emuliert) gewissermassen 'in Haeppchen zerlegt' ist,
um zusammenhaengend zu erscheinen.

Ab Version 1.9g sind einige Hilfsprogramme von mir beigefuegt, die einen
kurzen Statusbericht ueber die EMS und XMS-Konfiguration geben (EMSTAT.EXE
und XMSTAT.EXE). Ausserdem ist SETXMSTO.EXE beigefuegt, das alte Versionen von
HIMEM.SYS (von MSDOS 6.x) dazu bringen soll, mehr als 64MB Speicher zu
verwalten.
Starten Sie SETXMSTO; es zeigt eine kurze Hilfe an und wieviel Speicher das BIOS erkennen kann. Wenn es angibt, dass die Funktion 15E801 nicht unterstuetzt wird, und Sie versuchen, die XMS-Groesse einzustellen, muessen Sie selbst wissen, was Sie tun; ES GESCHIEHT AUF IHR EIGENES RISIKO.
Der beste Weg, einen schnellen, aber eingehenden Test durchzufuehren, ist,
dass Sie die groesste RAMdisk einrichten, die moeglich ist, und mit Scandisk
einen Oberflaechentest durchfuehren; in dieser Einstellung werden alle
Sektoren (und damit allles genutzte RAM) getestet.
Wenn SETXMSTO mitteilt, dass Funktion 2F4309 nicht unterstuetzt wird, haben Sie kein HIMEM 3.09 oder hoeher (oder Ihr XMS-Verwaltungsprogramm macht von dieser Funktion keinen Gebrauch!). Fuer QUEMM in einer Version vor 8 sollten Sie es mit dem Parameter USERAM versuchen.


  * Ueber Laufwerke im allgemeinen ...

Versuchen Sie, immer in einem Unterverzeichnis zu arbeiten: Das
Hauptverzeichnis hat nach dem Formatieren des Laufwerks eine vorgegebene
Groesse und ist in den meisten Faellen auf 512 Eintraege beschraenkt (Dateien
oder Verzeichnisse), so dass das Hauptverzeichnis "zu voll" werden kann,
obwohl genuegend Platz auf dem Laufwerk vorhanden waere.
Das trifft besonders auf XMSDSK und EMSDSK als veraenderbare Laufwerke zu: die Groesse des Hauptverzeichnisses haengt von der Gesamtgroesse des Laufwerks ab. Das ist von noch groesserer Wichtigkeit, wenn Sie lange Dateinamen unter Win95 verwenden: Lange Dateinamenseintraege nehmen soviel Platz ein wie der entsprechende kurze Name und obendrein weitere Eintraege, um den langen Namen unterzubringen. Auf diese Weise kann sich das Hauptverzeichnis sehr schnell auffuellen.


  *Ueber Win95 ... (von einem gluecklichen Benutzer  :-)

Reaktionen von Windows 95 auf EMSDSK bzw. XMSDSK:

Laden von     | Autoexec.bat       | Config.sys
--------------+--------------------+-------------------
XMSDSK        | Keine Probleme (1) | Schwere Warnung (2)
--------------+--------------------+-------------------
EMSDSK        | Keine Probleme (1) | Schwere Warnung (2)
--------------+--------------------+-------------------
EMSDSK86      | Keine Probleme (1) | Schwere Warnung (2)

(1):        *** Beachten Sie weiter unten "Mehr ueber Win95" ***
Win95 macht von dem 16-Bit- (=Kompatibilitaets-) Modus Gebrauch, um dieses Laufwerk anzusprechen, behandelt aber alle anderen Laufwerke unveraendert, und der 32-Bit-Zugriff bleibt bestehen.
Eine Nebenbemerkung:
Wenn Sie EMS- oder XMSDSK geladen haben, kann es sein, dass Sie etwa ein bis drei Sekunden lang die Festplatte arbeiten hoeren, waehrend die grafische Windowsoberflaeche gestartet wird. Das ist normal und voellig unschaedlich.

(2): Win95 startet mit einer Warnmeldung, dass ein von der CONFIG.SYS
geladener Treiber die Systemleistung herabsetze.
Wenn Sie ihren "Arbeitsplatz" rechts anklicken, "Eigenschaften" und "Leistungsmerkmale" waehlen, werden Sie sehen, dass alle Treiber in den Kompatibilitaetsmodus versetzt sind, was TATSAECHLICH die Systemleistung einschraenkt.

Die beste Loesung ist, die ramdisk in der autoexec.bat zu plazieren;
und Win95 wird dieses Laufwerk ohne jegliche Schwierigkeiten verwenden
koennen. Selbst wenn die Groesse auf Null gesetzt ist, werden Sie nur eine
Meldung der Art "Laufwerkszugriff nicht moeglich" erhalten, wenn Sie dieses
Laufwerk z.B. vom Explorer aus betrachten wollen. Sie werden die
Laufwerksgroesse jedoch vor dem Start der Windows-Oberflaeche festlegen
muessen.

Dieser kleine Test wurde mit XMS/EMSDSK Version 1.9e auf einem P5/133 MHz mit
48 MB RAM, DOS 7.0 und Win95, natuerlich selbstgebaut, von Joachim Otahal
durchgefuehrt <jou@gmx.net>


  * Mehr ueber Win95 ...

Ab der Version 1.9g ist die Laufwerksidentifikation von RAMdisk mit der von
MS-RAMDRIVE identisch; dies verhindert die stoerende Win95-Meldung "Laufwerk
X: verwendet Kompatitbilitaetsmodus".



  * Anwendungsbeispiele
  ----------------------

  device[high]='Pfad'\XMSDSK.EXE [Groesse in Kilobytes] (oder EMSDSK.EXE)
     Installiere ramdisk ueber die config.sys.
     Wenn keine Groesse angegeben wird, hat die Disk die Groesse Null.
     Von der config.sys aus kann KEIN LAUFWERKSBUCHSTABE ANGEGEBEN werden.

  Wenn die RAMdisk noch nicht geladen ist, wird das Programm nach dem ersten
  Aufruf verlangen, dass sie geladen werden soll. Um sie auf jeden Fall zu
  laden, z.B. durch einen Befehl in der autoexec.bat, geben Sie ein:

  XMSDSK [Groesse in Kilobytes] [Laufwerk:] /y (oder mit EMSDSK)
     Dies wird den Treiber im oberen Speicherbereich laden, ohne besonders
     nachzufragen. Der Teil, der den Treiber enthaelt, wird in einen
     Speicherbereich geladen werden, der seiner Groesse am besten entspricht,
     zuerst im oberen Speicherbereich, und wenn dies nicht gelingen sollte, im
     unteren Speicherbereich. Auf diese Weise sollte Speicherfragmentierung
     vermieden werden.
     Wenn ein Laufwerk angegeben wird, wird ein Anlegen versucht; andernfalls
     wird das erste frei verfuegbare Laufwerk verwendet. Das Laufwerk muss
     vor/bei LASTDRIVE liegen (in der config.sys oder der dblspace.ini bzw.
     drvspace.ini, siehe oben bei PS2:).
     Der Parameter /t kann dazu verwendet werden, dem Treiber zu befehlen, den
     XMS-Speicher von der obersten Speicheradresse her zu verwenden, statt der
     niedrigeren Bereiche. Es gibt Rechner, die sich unter Win95 aufhaengen,
     wenn es keinen freien Speicher in den ersten 16 MB gibt. 

  XMSDSK (oder EMSDSK)
     In der DOS-Kommandozeile: gibt die Groesse und den Laufwerksbuchstaben
     aus, die RAMdisk verwendet.

  XMSDSK <Groesse in Kilobytes> (oder mit EMSDSK)
     Aendert die Groesse der RAMdisk.

  XMSDSK <Groesse in Kilobytes> /y (oder mit EMSDSK)
     In einer Batchdatei vermeidet dies die Abfrage der Bestaetigung, wenn die 
     Groesse veraendert wird.
     XMSDSK (und EMSDSK) gibt einen Wert zurueck, der mit "errorlevel"
     abgefragt werden kann, wo es eingerichtet ist: 0, falls nicht eingerichtet
     oder ein Fehler aufgetreten ist, 1 fuer Laufwerk A (haeh ?), 2 fuer B (haeh
     haeh ?), 3 fuer C (hmmm ?), etc ...

  XMSDSK /u (oder EMSDSK)
     Entfernen des Treibers aus dem Speicher; Disk existiert nicht mehr.

  XMSDSK /u /y (oder mit EMSDSK)
     Dasselbe wie oben, ohne Rueckfragen. :-)


  PS1: Groesse ist in Kilobytes und wird auf volle 16 Kilobytes aufgerundet.
  PS2: Es ist besser, NICHT LOADHIGH bei EMS/XMSDSK EINZUSETZEN, da es sich
       selbst besser im Speicher unterbringen kann als es DOS koennte.


  * Entstehungsgeschichte
  ------------------------

    v1.0  (Mai 92)   Erste Fassung.
    v1.1  (Jun 92)   Verbesserungen im residenten Teil hinzugefuegt.
    v1.2  (Oct 93)   Einige Tests im Teil fuer die Aenderung der Groesse
                     hinzugefuegt.
    v1.3  (Apr 94)   Einen Fehler beseitigt, der bei einer gewuenschten
                     Groesse von 4000 KB auftrat und einen anderen, der
                     der die Groesse auf 16 MB beschraenkte.
                     Genauere Fehlermeldungen eingefuegt anstelle des
                     "error during installation".
    v1.4  (Feb 96)   Einige Schoenheitskorrekturen.
    v1.5  (Mar 96)   Moeglichkeit, ueber die Kommandozeile zu installieren,
                     hinzugefuegt.
    v1.6  (Apr 96)   Zu verwendendes Laufwerk kann in der Kommandozeile
                     angegeben werden. Einen Fehler korrigiert, der
                     Kompatibilitaet mit Scandisk (und evtl anderen Pro-
                     grammen?) verhinderte.
                     Option "y" hinzugefuegt.
    v1.7  (Apr 96)   Fehlerkorrektur.
    v1.8  (Apr 96)   Etwas aufgeraeumt.
    v1.9  (Sep 96)   Unterstuetzt nun bis zu 64 Megabytes. 
                     Option "u" zur Entfernung des Treibers aus dem Speicher
                     hinzugefuegt.
                     EMSDSK und EMSDSK86 koennen ohne Probleme an Stelle
                     jeweils des anderen Programms benutzt werden. :-)
    v1.9a (Sep 96)   Unterstuetzt jetzt bis zu 2 GBytes. Das sollte der Frage
                     "kann es mehr als xxxKB unterstuetzen?" ein Ende
                     setzen. :)
    v1.9b (Oct 96)   Ein Problem mit DBLSPACE bzw. DRVSPACE korrigiert.
    v1.9c (Dec 96)   Speicherresidenter Teil wird nun "dynamisch" im oberen
                     Speicherbereich eingelagert. Behebt ein Problem mit
                     dem NWDOS 7 XMS-Manager.
                     Schoenheitsnachbesserungen.
    v1.9d (Dec 96)   Fehler in der Optionsverarbeitung beseitigt.
                     !!! Optionsverarbeitung reagiert nicht auf _falsche
                     Buchstabengroesse_.
    v1.9e (Mar 97)   Einige Fehler beseitigt (Probleme mit Groessen von
                     32 Megabytes)
                     Bei bis zu 32 Megabytes bleibt es beim FAT12-Standard,
                     um eine hoehere Geschwindigkeit zu erzielen.
    v1.9f (Mar 97)   Einige Schoenheitskorrekturen, um GUEST95 gluecklich
                     zu machen.
                     Hinweise zu Win95 in die Dokumentation eingefuegt.
    v1.9g (Oct 97)   Die Laufwerkskennzeichnung ist der von MS-RAMDRIVE
                     entsprechend kodiert worden, damit die Win95-Benutzer
                     zufriedener sein koennen.
                     Hilfsprogramm hinzugefuegt, das das HIMEM von
                     MSDOS 6.x dazu bringt, mehr als 64MB Speicher zu
                     unterstuetzen (funktioniert es?)
                     Neue Dokmentationen. 
                     Den Algorithmus zur Plazierung geaendert. 
    v1.9h (Mar 98)   Die Optionen brauchen keine Grossbuchstaben mehr. 
                     Parameter "/t" eingefuegt, um den Speicher von oben herab
                     zuordnen zu koennen.
                     Die Funktionen von XMS 3 werden nicht mehr unterstuetzt.
                     Eine grosse Zahl sogenannter "XMS-3-kompatibler" Server
                     behandelt Speicherbloecke von mehr als 64 MB sehr
                     merkwuerdig. Nun kann Win95 "ueberraschenderweise" eine
                     RAMdisk jenseits von 64MB ohne Probleme benuetzen; dasselbe
                     sollte auch fuer Win3.1x oder andere XMS-2-und-hoeher-
                     Speichermanager gelten. 


  Ich danke fuer ihre Hilfe und Tests (oder Vorschlaege) folgenden Personen:
    Philippe Ahles <>
    Mervyn Baldwin <vyn@abaldwin.demon.co.uk>
    Ethan Brodsky <ebrodsky@pobox.com>
    Frank Decandia <tron@agoron.com>
    Lee Goldstein <72077.2054@compuserve.com>
    Peter Hayward <peter@cdsl.demon.co.uk>
    Armand Kadrichu <a.kadrichu@intelsat.int>
    Bernard Marone <marone@conline.com>
    Steve Murray <Rocket9977@aol.com>
    Pino Navato <Pino.Navato@p18.f225.n335.z2.fidonet.org>
    Gabriele Neukam <Gabriele.Neukam@t-online.de>
    Jim Oliver <jim.oliver@welcom.gen.nz>
    Joachim Otahal <jou@gmx.net>
    Michel Peru <peru@esrf.fr>
    Vladimir Plotto <V.Plotto@frec.bull.fr>
    Mike Ray <mer1@cornell.edu>
    Matt Sephton <u5ms@csc.liv.ac.uk>
    John Stockton <jrs@dclf.npl.co.uk>
    Michel Toussaint <100334.2645@compuserve.com>
    Bruce.M.Vrana <Bruce.M.Vrana@usa.dupont.com>
    Edward Wittenberg <wew@papa.uncp.edu>
    Ian Woolley <iwoolley@southcom.com.au>


PS1: wie Sie gesehen haben moegen, ist dieses Programmpaket FREEWARE. Ich
     waere dankbar, wenn Sie es (mehr :-) oder weniger :-( ) zu schaetzen
     wissen und mir eine Email zukommen lassen.
     Vielen Dank dafuer.

PS2: Nach derzeitigem Wissensstand arbeitet EMS/XMSDK mit den folgenden
     Betriebssystemen zusammen: MSDOS 3 bis 7 (Win95), DosEmu (Linux), NWDOS 7
     (OpenDOS 7), PCDOS7.
     Vielleicht auch andere?
     Es arbeitet ausserdem mit diesen "speziellen" Programmen zusammen: DBLSPACE
     bzw. DRVSPACE, GUEST und GUEST95, Stacker 4.


  * Garantieausschluss
  ---------------------

Copyright (C) 1992 - 1998  Franck UBERTO
Alle Rechte vorbehalten.

Dieses Programmpaket wird wie hier gegeben ohne Garantien angeboten. Diese
Software ist eingehend getestet worden, aber es wird keine Garantie dafuer
gegeben, dass sie auf jedem Rechner ihre Funktion erfuellen wird. Der
Eigentuemer des Copyrights ist nicht fuer auftretende Schaeden, direkt oder
als Folgeschaeden, haftbar zu machen, die aus dem Gebrauch dieses Programms
entstehen.

Dieses Archiv darf frei verteilt werden. Sie duerfen diese Software verwenden
und mit Ihren Freunden (oder anderen Personen) teilen, solange diese Software
in ihrer urspruenglichen, unveraenderten Gestalt weitergegeben wird, was diese
Dokumentation mit einschliesst. Dieses Programm darf nicht zum Zwecke des
wirtschaftlichen Gewinns verbreitet werden.

Alle hierin verwendeten Markennamen sind geschuetztes Eigentum ihrer
jeweiligen Inhaber.

(diese Dokumentation wurde uebersetzt und hoffentlich von Schreibfehlern befreit von:
Gabriele Neukam <Gabriele.Neukam@t-online.de>)
