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 * 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 (oder mit EMSDSK) Aendert die Groesse der RAMdisk. XMSDSK /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 Ethan Brodsky Frank Decandia Lee Goldstein <72077.2054@compuserve.com> Peter Hayward Armand Kadrichu Bernard Marone Steve Murray Pino Navato Gabriele Neukam Jim Oliver Joachim Otahal Michel Peru Vladimir Plotto Mike Ray Matt Sephton John Stockton Michel Toussaint <100334.2645@compuserve.com> Bruce.M.Vrana Edward Wittenberg Ian Woolley 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 )