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 * 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 [/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 /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 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: 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.