
                                  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 brŠve aide en ligne tapez XMSDSK (ou EMSDSK) /?.

Ils peuvent ˆtre utilis‚s sur des 286 ou plus (pour des 8086 avec EMS utiliser
EMSDSK86). Une fois install‚s ils occupent environ un demi-Koctet de m‚moire.

Le disque peut ˆtre redimensionn‚ (de 0 … 2 Goctets, si disponible) … tout 
moment afin de lib‚rer la m‚moire 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 m‚moire. La partie transitoire de l'EXE calcule tous les
paramŠtres du nouveau disque (ceux-ci ‚tant identiques … ceux utilis‚s 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 (cach‚s) peuvent ˆtre cr‚‚s et, dans le
cas d'un redimensionnement, des choses (pas si) sympathiques peuvent se
produire.

Ces disques virtuels peuvent ˆtre install‚s *SUR LA LIGNE DE COMMANDE* (et 
donc … partir de autoexec.bat par exemple, voir plus bas). De cette fa‡on
l'utilisateur peut *CHOISIR LA LETTRE DU DISQUE* … installer.

Bien que cette m‚thode d'installation (sur la ligne de commande) ait ‚t‚ 
test‚e sur MS-DOS 3.x, 4.0, 5.0, 6.x (adapt‚e il y a des ann‚es 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 sp‚cifiant un disque cel… permet d'installer le disque virtuel "entre ou
aprŠs" des CD-ROM ou des disques r‚seaux (il est parfois n‚cessaire de "fixer"
les lettres de ces disques; malheureusement MS-DOS nomme les disques au fur 
et … mesure de leur chargement). De plus ceci peut am‚liorer la r‚ponse des 
caches disques (si le cache ne peut ˆtre d‚activ‚ pour un disque, en chargeant
le disque virtuel aprŠs 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 sp‚cifier (et utiliser) un disque sur la ligne de commande il faut
     que celui-ci soit <= LASTDRIVE, la valeur par d‚faut 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 systŠme cach‚ en lecture seulement qui se 
     trouve, en g‚n‚ral, 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 dr“le  :-) ): si un ou plusieurs
     disques ont ‚t‚ install‚s sur des "emplacements" r‚serv‚s … 
     DBLSPACE/DRVSPACE alors LASTDRIVE est incr‚ment‚ de la mˆme fa‡on.
     D‚sol‚ de n'ˆtre pas plus clair mais c'est loin de l'ˆtre pour ma 
     pauvre personne.  :) :)


Ces fichiers peuvent ˆtre utilis‚s et distribu‚s librement: 
  ceci est "FREEWARE".

PROFITEZ-EN ...


  
  * Quelques suggestions ...
  ---------------------------
  
  * Sur la m‚moire XMS et EMS ...
  
La m‚moire XMS est allou‚e 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 m‚moire XMS disponible, ‚trange?
Le fait est que d'autres programmes ont pu demander des blocs de m‚moire XMS
et que maintenant celle-ci est _fragment‚e_. Oui comme la bonne vieille 
m‚moire utilis‚e par le DOS!
La solution est de charger les programmes n‚cessitant des blocs fixes de XMS
_avant_ XMSDSK de fa‡on … pr‚venir la fragmentation. Ainsi vous pourrez 
redimensionner XMSDSK de 0 au dernier Koctet disponible de m‚moire XMS.

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

Notez que la fragmentation peut n‚anmoins exister sur certaines machines: ceci
est d– … l'occupation de la m‚moire sup‚rieure par le BIOS et le mat‚riel.

Cette fragmentation n'est pas vue avec EMSDSK parce que la m‚moire EMS est,
d'une certaine fa‡on, "chamboul‚e" pour apparaitre contig–e.

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 mˆme que SETXMSTO.EXE qui essaie de "convaincre" les anciennes
versions de HIMEM.SYS (de MSDOS 6.x) d'utiliser plus de 64 Mo de m‚moire.
Lancer SETXMSTO, celui-ci affiche un message d'utilisation ainsi que la taille 
de la m‚moire connue du BIOS. S'il affiche un avertissement disant que la 
fonction 15E801 n'est pas support‚e 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 utilis‚e) seront test‚s.
Si SETXMSTO affiche que la fonction 2F4309 n'est pas support‚e alors vous ne 
disposez pas de HIMEM 3.09+ (ou votre manager XMS n'utilise pas cette 
fonction!). Pour QEMM ant‚rieur … la version 8 essayer le paramŠtre USERAM.


  * Sur les disques en g‚n‚ral ...

Utiliser toujours un sous-r‚pertoire: le r‚pertoire racine a une taille fixe 
qui lui est donn‚e au formattage et, dans la plupart des cas, limit‚ … 512 
entr‚es (fichiers ou r‚pertoires), ainsi la racine peut ˆtre satur‚e alors 
qu'il reste de la place sur le disque.
Ceci est particuliŠrement vrai pour XMSDSK et EMSDSK car ils sont
re-dimensionnables: la taille de la racine d‚pend de la taille totale du
disque.
De plus si vous utilisez des noms longs sous Win95 la racine peut ˆtre satur‚e 
encore plus rapidement: un nom long prend une entr‚e pour son ‚quivalent court 
et plusieurs autres pour lui-mˆme.

Sur la taille des clusters, cel… peut-ˆtre abr‚g‚ 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  :-)
  
R‚action 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 systŠme.
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 d‚faut 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 donn‚e 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 m‚moire haute sans confirmation.
     Le driver est relog‚ d'abord en m‚moire haute, si possible, sinon en 
     m‚moire basse de fa‡on … r‚duire la fragmentation.
     Si un lecteur est sp‚cifi‚, il sera essay‚ sinon la premiŠre lettre de 
     disque disponible sera utilis‚e. Le lecteur doit ˆtre <= LASTDRIVE (dans
     config.sys ou dblspace/drvspace.ini, voir plus haut NB2).
     L'option /t peut ˆtre utilis‚e pour indiquer au driver qu'il doit allouer
     la m‚moire … partir des adresses les plus hautes. Certaines machines 
     tournant sous Win95 plantent lorsqu'il n'existe pas de m‚moire libre au-
     dessous de 16 Moctets. Cette option peut aussi ˆtre utilis‚e si vous avez
     des problŠmes pour jouer des sons sous Windows. Ces 2 conflits semblent
     ˆtre li‚s 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 paramŠtre 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 donn‚e ne fonctionne pas 
     (trop de clusters) une dimension sup‚rieure sera utilis‚e, ainsi 
     sp‚cifier "/c1" donnera toujours le cluster le plus petit possible 
     (moins d'espace perdu).
     Les paramŠtres ne sont pas "case-sensitive", peuvent ˆtre entr‚s 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 utilis‚s 
     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 m‚moire 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 test‚e 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)
     D‚charge le driver de la m‚moire, 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 
       sup‚rieurs.
  NB2: NE PAS UTILISER LOADHIGH avec EMS/XMSDSK: celui-ci peut se reloger
       avec plus de succŠs que le DOS ne pourrait le faire.


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

    v1.0  (Mai 92)   Version initiale.
    v1.1  (Jun 92)   Optimisation de la partie r‚sidente.
    v1.2  (Oct 93)   Ajoute quelques tests dans la partie re-dimensionnement.
    v1.3  (Avr 94)   Corrige un bug quand la taille demand‚e est autour de 
                     4000 Ko et un autre qui limite la taille … 16 Mo.
                     Ajoute des messages d'erreur plus pr‚cis 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 sp‚cifi‚ 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 lib‚rer le driver de la m‚moire.
		     EMSDSK et EMSDSK86 peuvent ˆtre utilis‚s alternativement
		     sans problŠme.  :-)
    v1.9a (Sep 96)   Supporte jusqu'… 2 Goctets. Cel… devrait arrˆter les 
                     questions … propos de "pourrait-il supporter plus de 
		     xxx Ko?".  :)
    v1.9b (Oct 96)   Corrige un problŠme avec DBLSPACE/DRVSPACE.
    v1.9c (Dec 96)   La partie r‚sidente est relog‚e dynamiquement en m‚moire 
                     haute.
		     Corrige un problŠme 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 problŠmes 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 d‚faut 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 g‚rer 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 paramŠtre "/t" a ‚t‚ ajout‚ … XMSDSK pour qu'il alloue
		     la m‚moire XMS … partir des adresses les plus hautes.
		     Abandon des fonctions XMS 3, la plupart des serveurs XMS
		     soit-disant "XMS 3 compliant" gŠrent trŠs mal la m‚moire
		     lorsque les blocs d‚passent 64 Moctets. Et, "oh surprise",
		     maintenant le RAMdisque peut d‚passer 64 Moctets sans
		     problŠme dans Win95, ce doit ˆtre la mˆme chose avec
		     Win3.1x ou tout serveur XMS 2+.
    v1.9i (Aug 98)   ParamŠtre "/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
     appr‚ciez (plus :-) ou moins :-( ) cet utilitaire d'envoyer un petit 
     message par Email.
     Merci.
    
PS2: EMS/XMSDSK fonctionne avec les SystŠmes d'Op‚rations 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 r‚serv‚s.

Cette archive vous est offerte "dans l'‚tat", sans aucune garantie. Ces
programmes ont ‚t‚ test‚s le mieux possible mais aucune garantie n'est donn‚e 
quant … leur fonctionnement sur un quelconque ordinateur. L'auteur ne peut 
ˆtre tenu pour responsable des dommages directs ou indirects qui pourraient 
r‚sulter 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 aff‚rentes restent dans leur forme d'origine. Ces utilitaires 
ne peuvent ˆtre vendus ou distribu‚s pour un quelconque profit.

Les marques d‚pos‚es cit‚es sont la propri‚t‚ des soci‚t‚s les ayant 
enregistr‚es.
