
                                  XMSDSK.EXE
                                      &
                                  EMSDSK.EXE

                           Franck UBERTO - 98/08/12
                          38000 Grenoble - FRANCE
                                   Email : uberto@esrf.fr


Ces deux utilitaires sont des RAMdisks (disques virtuels). Pour certaines
personnes ils manqueront certainement de quelques gadgets, mais le but tait
qu'ils soient efficaces et simples  utiliser.
Pour des raisons d'optimisation, taille et vitesse, l'un est pour XMS l'autre
tant pour EMS.
Pour une brve aide en ligne tapez XMSDSK (ou EMSDSK) /?.

Ils peuvent tre utiliss sur des 286 ou plus (pour des 8086 avec EMS utiliser
EMSDSK86). Une fois installs ils occupent environ un demi-Koctet de mmoire.

Le disque peut tre redimensionn (de 0  2 Goctets, si disponible)  tout 
moment afin de librer la mmoire pour un autre usage. Ceci est possible sur 
la ligne de commande du DOS et *SURTOUT PAS* sous Windows  cause de la 
virtualisation de la mmoire. La partie transitoire de l'EXE calcule tous les
paramtres du nouveau disque (ceux-ci tant identiques  ceux utiliss par le
DOS pour les disques durs et devraient donc convenir dans tous les cas).

Prenez garde si vous faites un "shell" sous DOS  partir d'un programme
utilisant le RAMdisque, des fichiers (cachs) peuvent tre crs et, dans le
cas d'un redimensionnement, des choses (pas si) sympathiques peuvent se
produire.

Ces disques virtuels peuvent tre installs *SUR LA LIGNE DE COMMANDE* (et 
donc  partir de autoexec.bat par exemple, voir plus bas). De cette faon
l'utilisateur peut *CHOISIR LA LETTRE DU DISQUE*  installer.

Bien que cette mthode d'installation (sur la ligne de commande) ait t 
teste sur MS-DOS 3.x, 4.0, 5.0, 6.x (adapte il y a des annes de 
"Undocumented DOS" par Andrew Schulman, Addison-Wesley), il ne peut tre 
certifi que d'autres versions de MS-DOS ou "clones" la supporteront.
MAIS voyez plus bas la liste de compatibilit.

En spcifiant un disque cel permet d'installer le disque virtuel "entre ou
aprs" des CD-ROM ou des disques rseaux (il est parfois ncessaire de "fixer"
les lettres de ces disques; malheureusement MS-DOS nomme les disques au fur 
et  mesure de leur chargement). De plus ceci peut amliorer la rponse des 
caches disques (si le cache ne peut tre dactiv pour un disque, en chargeant
le disque virtuel aprs le programme de cache celui-ci ne "voit" pas le
RAM disque et donc n'essaie pas de le "cacher": il n'est pas seulement inutile
de cacher un RAM disque mais de plus cel diminue les ressources du cache).

NB1: pour spcifier (et utiliser) un disque sur la ligne de commande il faut
     que celui-ci soit <= LASTDRIVE, la valeur par dfaut est E quand il n'y 
     a pas de LASTDRIVE dans config.sys.

NB2: quand DBLSPACE/DRVSPACE est charg il y a 2 LASTDRIVE  prendre en 
     compte: celui de config.sys et un autre dans DBLSPACE/DRVSPACE.INI.
     Ce dernier est un fichier systme cach en lecture seulement qui se 
     trouve, en gnral, sur le disque de boot, ou C:, ou le disque-hote.
     Il semble que la plus haute valeur a la priorit mais il y a des 
     exceptions (sinon ce ne serait pas drle  :-) ): si un ou plusieurs
     disques ont t installs sur des "emplacements" rservs  
     DBLSPACE/DRVSPACE alors LASTDRIVE est incrment de la mme faon.
     Dsol de n'tre pas plus clair mais c'est loin de l'tre pour ma 
     pauvre personne.  :) :)


Ces fichiers peuvent tre utiliss et distribus librement: 
  ceci est "FREEWARE".

PROFITEZ-EN ...


  
  * Quelques suggestions ...
  ---------------------------
  
  * Sur la mmoire XMS et EMS ...
  
La mmoire XMS est alloue en blocs _contigus_. Vous pouvez donc tre surpris
de ne pas pouvoir redimensionner XMSDSK alors que MEM (ou autre) dit qu'il
reste plein de mmoire XMS disponible, trange?
Le fait est que d'autres programmes ont pu demander des blocs de mmoire XMS
et que maintenant celle-ci est _fragmente_. Oui comme la bonne vieille 
mmoire utilise par le DOS!
La solution est de charger les programmes ncessitant des blocs fixes de XMS
_avant_ XMSDSK de faon  prvenir la fragmentation. Ainsi vous pourrez 
redimensionner XMSDSK de 0 au dernier Koctet disponible de mmoire XMS.

Ceci est un autre avantage du chargement sur la ligne de commande.

Notez que la fragmentation peut nanmoins exister sur certaines machines: ceci
est d  l'occupation de la mmoire suprieure par le BIOS et le matriel.

Cette fragmentation n'est pas vue avec EMSDSK parce que la mmoire EMS est,
d'une certaine faon, "chamboule" pour apparaitre contige.

A partir de la version 1.9g certains de mes utilitaires donnant un bref status
des "managers" XMS et EMS (EMSTAT.EXE et XMSTAT.EXE) sont inclus dans 
l'archive. De mme que SETXMSTO.EXE qui essaie de "convaincre" les anciennes
versions de HIMEM.SYS (de MSDOS 6.x) d'utiliser plus de 64 Mo de mmoire.
Lancer SETXMSTO, celui-ci affiche un message d'utilisation ainsi que la taille 
de la mmoire connue du BIOS. S'il affiche un avertissement disant que la 
fonction 15E801 n'est pas supporte et que vous essayez de forcer une taille 
XMS alors vous travaillez sans filet: VOUS ETES RESPONSABLE DE CE QUI POURRAIT 
ARRIVER.
Le meilleur des tests est de donner la plus grande taille possible au RAMdisque 
puis de lancer SCANDISK en test de surface; ainsi tous les secteurs (et donc 
toute la RAM utilise) seront tests.
Si SETXMSTO affiche que la fonction 2F4309 n'est pas supporte alors vous ne 
disposez pas de HIMEM 3.09+ (ou votre manager XMS n'utilise pas cette 
fonction!). Pour QEMM antrieur  la version 8 essayer le paramtre USERAM.


  * Sur les disques en gnral ...

Utiliser toujours un sous-rpertoire: le rpertoire racine a une taille fixe 
qui lui est donne au formattage et, dans la plupart des cas, limit  512 
entres (fichiers ou rpertoires), ainsi la racine peut tre sature alors 
qu'il reste de la place sur le disque.
Ceci est particulirement vrai pour XMSDSK et EMSDSK car ils sont
re-dimensionnables: la taille de la racine dpend de la taille totale du
disque.
De plus si vous utilisez des noms longs sous Win95 la racine peut tre sature 
encore plus rapidement: un nom long prend une entre pour son quivalent court 
et plusieurs autres pour lui-mme.

Sur la taille des clusters, cel peut-tre abrg en une seule phrase: moins
de clusters, plus de rapidit mais aussi plus d'espace perdu. A partir de la 
version 1.9i l'utilisateur peut choisir la taille du cluster quand le 
RAMdisque est install sur la ligne de commande.


  * Sur Win95 ... (par un utilisateur heureux  :-)
  
Raction de Windows 95 avec EMSDSK/XMSDSK:

Charg depuis | Autoexec.bat        | Config.sys
--------------+---------------------+------------------
XMSDSK        | Pas de Problems (1) | Avertissement (2)
--------------+---------------------+------------------
EMSDSK        | Pas de Problems (1) | Avertissement (2)
--------------+---------------------+------------------
EMSDSK86      | Pas de Problems (1) | Avertissement (2)

(1):          *** Voir ci-dessous "Sur Win95 (bis)" ***
Seul le RAMdisque passe en 16-bit compatibility mode.

(2):
Win95 signale qu'un driver contenu dans CONFIG.SYS diminue
les performances du systme.
TOUS les disques passent en mode 16-bit.

Par Joachim Otahal <jou@gmx.net>


  * Sur Win95 (bis) ...
  
A partir de la version 1.9g le label du RAMdisque est par dfaut MS-RAMDRIVE, 
ceci supprime le message "le lecteur X: utilise le mode de compatibilit".


  * Exemples d'utilisation
  -------------------------

  device[high]='chemin'\XMSDSK.EXE [taille en Koctets] (ou EMSDSK.EXE)
     Installation du ramdisque depuis config.sys.
     Si la taille n'est pas donne le disque a une taille nulle.
     PAS DE LETTRE DE DISQUE, et PAS d'autres options, depuis config.sys.

  Si le ramdisque n'est pas charg alors au premier lancement il demandera
   le faire. Si vous voulez le faire intentionnellement, depuis autoexec.bat 
  par exemple, entrez:

  XMSDSK [taille en Koctets] [drive:] [/c##] [/t] /y (ou EMSDSK)
     Ceci devrait charger le driver en mmoire haute sans confirmation.
     Le driver est relog d'abord en mmoire haute, si possible, sinon en 
     mmoire basse de faon  rduire la fragmentation.
     Si un lecteur est spcifi, il sera essay sinon la premire lettre de 
     disque disponible sera utilise. Le lecteur doit tre <= LASTDRIVE (dans
     config.sys ou dblspace/drvspace.ini, voir plus haut NB2).
     L'option /t peut tre utilise pour indiquer au driver qu'il doit allouer
     la mmoire  partir des adresses les plus hautes. Certaines machines 
     tournant sous Win95 plantent lorsqu'il n'existe pas de mmoire libre au-
     dessous de 16 Moctets. Cette option peut aussi tre utilise si vous avez
     des problmes pour jouer des sons sous Windows. Ces 2 conflits semblent
     tre lis aux buffers DMA.
     L'option /c sert  choisir une taille cluster. Sans elle le RAMdisque 
     est formatt pour avoir le plus petit nombre de clusters possible (plus 
     rapide). Avec ce paramtre une taille de 1  64 secteurs peut tre 
     choisie (syntaxe: /c## ou /c ##). Rappellez-vous que les clusters sont
     toujours d'une puissance de 2. Si la taille donne ne fonctionne pas 
     (trop de clusters) une dimension suprieure sera utilise, ainsi 
     spcifier "/c1" donnera toujours le cluster le plus petit possible 
     (moins d'espace perdu).
     Les paramtres ne sont pas "case-sensitive", peuvent tre entrs dans
     n'importe quel ordre, avec ou sans espaces.

  XMSDSK (ou EMSDSK)
     Sur la ligne de commande du DOS, affiche la taille et le lecteur utiliss 
     par le RAMdisque.

  XMSDSK <taille en Koctets> [/t] [/c##] (ou EMSDSK)
     Modifie la taille du ramdisk.
     Eventuellement fixe une taille pour les clusters et utilise le haut (top) 
     de la mmoire XMS.

  XMSDSK <taille en Koctets> /y [/c ##] [/t] (ou EMSDSK)
     Dans un fichier de commande (.bat), supprime la demande de confirmation
     en cas de changement de taille.
     XMSDSK (et EMSDSK) renvoie une valeur, qui peut tre teste par 
     "errorlevel", donnant le lecteur sur lequel il est install: 0 si non 
     charg ou en cas d'erreur, 1 pour le drive A (ha?), 2 pour B (ha ha?), 
     3 pour C (hmmm?), etc ...

  XMSDSK /u (ou EMSDSK)
     Dcharge le driver de la mmoire, le disque n'existe plus.
     
  XMSDSK /u /y (ou EMSDSK)
     Comme ci-dessus, sans confirmation.  :-)
  
  XMSDSK /? (or EMSDSK)
     Une petite aide.


  NB1: la taille est en Koctets (1024 octets) et arrondie au 16 Koctets 
       suprieurs.
  NB2: NE PAS UTILISER LOADHIGH avec EMS/XMSDSK: celui-ci peut se reloger
       avec plus de succs que le DOS ne pourrait le faire.


  * Historique
  -------------

    v1.0  (Mai 92)   Version initiale.
    v1.1  (Jun 92)   Optimisation de la partie rsidente.
    v1.2  (Oct 93)   Ajoute quelques tests dans la partie re-dimensionnement.
    v1.3  (Avr 94)   Corrige un bug quand la taille demande est autour de 
                     4000 Ko et un autre qui limite la taille  16 Mo.
                     Ajoute des messages d'erreur plus prcis pendant 
		     l'installation
    v1.4  (Fev 96)   Nettoyage.
    v1.5  (Mar 96)   Ajoute la possibilit d'installation sur la ligne de
                     commande.
    v1.6  (Avr 96)   Un lecteur peut tre spcifi sur la ligne de commande.
                     Corrige un bug avec SCANDISK.
		     Ajout de l'option y.
    v1.7  (Avr 96)   Nettoyage.
    v1.8  (Avr 96)   Nettoyage.
    v1.9  (Sep 96)   Supporte jusqu' 64 Moctets.
                     Ajoute l'option u pour librer le driver de la mmoire.
		     EMSDSK et EMSDSK86 peuvent tre utiliss alternativement
		     sans problme.  :-)
    v1.9a (Sep 96)   Supporte jusqu' 2 Goctets. Cel devrait arrter les 
                     questions  propos de "pourrait-il supporter plus de 
		     xxx Ko?".  :)
    v1.9b (Oct 96)   Corrige un problme avec DBLSPACE/DRVSPACE.
    v1.9c (Dec 96)   La partie rsidente est reloge dynamiquement en mmoire 
                     haute.
		     Corrige un problme avec le manager XMS de NWDOS 7.
		     Nettoyage.
    v1.9d (Dec 96)   Corrige un bug dans la routine d'options.
		     Cette routine est "_CASE SENSITIVE_".
    v1.9e (Mar 97)   Corrige quelques problmes autour de 32 Moctets.
                     Support de FAT12 jusqu' 32 Moctets pour optimiser la 
		     vitesse.
    v1.9f (Mar 97)   Nettoyage pour les utilisateurs de GUEST95.
                     Ajoute quelques suggestions  propos de Win95.
    v1.9g (Oct 97)   Le label par dfaut est MS-RAMDRIVE, ceci devrait rendre 
                     les utilisateurs de Win95 plus heureux.
		     Ajoute un petit utilitaire pour que HIMEM de MSDOS 6.x 
		     tente de grer plus de 64 Mo (cel marche-t-il vraiment?).
		     Nouvelles documentations.
		     Modification de l'algorithme de relogement.
    v1.9h (Mar 98)   Les options ne sont plus "case sensitive".
		     Un paramtre "/t" a t ajout  XMSDSK pour qu'il alloue
		     la mmoire XMS  partir des adresses les plus hautes.
		     Abandon des fonctions XMS 3, la plupart des serveurs XMS
		     soit-disant "XMS 3 compliant" grent trs mal la mmoire
		     lorsque les blocs dpassent 64 Moctets. Et, "oh surprise",
		     maintenant le RAMdisque peut dpasser 64 Moctets sans
		     problme dans Win95, ce doit tre la mme chose avec
		     Win3.1x ou tout serveur XMS 2+.
    v1.9i (Aug 98)   Paramtre "/c" ajout, donne la taille des clusters.


  Merci, pour leur aide, tests ou suggestions, :
    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 <pnavato@geocities.com>
    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: comme vous avez pu le voir ceci est FREEWARE. Je serais heureux, si vous
     apprciez (plus :-) ou moins :-( ) cet utilitaire d'envoyer un petit 
     message par Email.
     Merci.
    
PS2: EMS/XMSDSK fonctionne avec les Systmes d'Oprations suivants:
     MSDOS 3  7 (Win95), DosEmu (Linux), NWDOS 7 (OpenDOS/DR-DOS 7), PCDOS 7.
     Peut tre d'autres?
     Il fonctionne aussi avec les applications suivantes: DBLSPACE/DRVSPACE, 
     GUEST/GUEST95, Stacker 4.


  * Avertissement
  ----------------

Copyright (C) 1992 - 1998  Franck UBERTO.
Tous droits rservs.

Cette archive vous est offerte "dans l'tat", sans aucune garantie. Ces
programmes ont t tests le mieux possible mais aucune garantie n'est donne 
quant  leur fonctionnement sur un quelconque ordinateur. L'auteur ne peut 
tre tenu pour responsable des dommages directs ou indirects qui pourraient 
rsulter de l'utilisation de ces utilitaires.

Cette archive est gratuite. Vous pouvez l'utiliser et la distribuer  tous 
vos amis (ou autres)  la condition que ces programmes ainsi que les 
documentations affrentes restent dans leur forme d'origine. Ces utilitaires 
ne peuvent tre vendus ou distribus pour un quelconque profit.

Les marques dposes cites sont la proprit des socits les ayant 
enregistres.
