# MS-DOS

MS-DOS, abréviation de Microsoft Disk Operating System est le système d'exploitation de type DOS développé par Microsoft pour l'IBM PC d'abord, puis les compatibles PC. Il s'agit d'un système fonctionnant en mode réel, monotâche et mono-utilisateur, et équipé par défaut d'une interface en ligne de commande. Des années 1980 au début des années 1990, il a été le système le plus utilisé sur compatible PC, avant d'être progressivement remplacé par des systèmes d'exploitation plus évolués, notamment Windows. Son développement est maintenant arrêté. Certaines commandes MS-DOS sont encore présentes sur les ordinateurs modernes fonctionnant sous Windows via l'invite de commande.

## Histoire

Après avoir conclu son « deal » historique avec IBM, Bill Gates s'est mis à la recherche d'un système d'exploitation qu'il pourrait effectivement fournir à IBM pour le lancement de l'IBM PC. Selon Gordon Letwin (en) lui-même, l'objectif de Microsoft était que MS-DOS soit aussi compatible avec CP/M que possible. Gates rachète alors QDOS (Quick-and-dirty OS) à la petite société SCP, Seattle Computer Products. QDOS est en fait un clone à bas prix de CP/M écrit par Tim Paterson$^,$. Bill Gates demande alors à Tim Paterson d'adapter QDOS à l'IBM PC et de le renommer MS-DOS. Au départ, Microsoft reprend l'acronyme « DOS » de SCP, soit MS-DOS pour Microsoft Dirty Operating System.
MS-DOS est longtemps resté la base des systèmes d'exploitation grand public de Microsoft, bien que l'installation de Windows en modifie in-situ des portions de plus en plus grandes. En 1995, date d'apparition de Windows 95, il devient invisible pour les utilisateurs car l'interface graphique était directement exécutée au démarrage. MS-DOS est resté une sous-couche des versions grand-public de Windows (comme Windows 98 et Me) jusqu'à l'avènement de Windows XP qui marque son abandon réel par Microsoft au profit du système NT. Le DOS en était alors à sa version 8.
Les versions récentes de Windows possèdent toujours un « interpréteur de commandes » dont les commandes sont héritées de celles de MS-DOS, malgré quelques modifications, et qui permet d'exécuter des programmes Windows en mode texte (qui ne sont en aucun cas des programmes DOS, ils sont complètement différents), ainsi que des programmes MS-DOS grâce à un émulateur intégré, émulant MS-DOS 8. Cependant, cet interpréteur (cmd.exe) n'est pas celui de MS-DOS à proprement parler (command.com), et certains anciens programmes DOS ne peuvent s'exécuter dans ce mode.
Cet émulateur émule aussi les fichiers de configuration CONFIG.SYS et AUTOEXEC.BAT de MS-DOS sous le nom de %SYSTEMROOT%/system32/CONFIG.NT et %SYSTEMROOT%/system32/AUTOEXEC.NT.
Le 25 mars 2014, Microsoft décide de publier le code source original des versions 1.25 (équivalent à PC-DOS 1.1) et 2.00 via le site Computer History, sous une licence non libre qui n'autorise ni les usages commerciaux ni le partage. Il a depuis été mis à disposition sous licence MIT dans le dépôt GitHub de Microsoft. Le code de la version 4.0 est ajouté le 26 avril 2024.

## Commandes

MS-DOS fonctionne grâce à des commandes textuelles. En voici quelques-unes :
* ASSOC : Affiche ou modifie les applications associées aux extensions de fichiers.
* ATTRIB : Affiche ou modifie les attributs d’un fichier.
* BREAK : Active ou désactive le contrôle étendu de CTRL+C.
* BCDEDIT : Définit les propriétés dans la base de données de démarrage pour le contrôle du chargement d’amorçage.
* CACLS : Affiche ou modifie les listes de contrôles d’accès aux fichiers.
* CALL : Appelle un fichier de commandes à partir d’un autre fichier de commandes.
* CD : Modifie le répertoire ou affiche le répertoire actif.
* CHCP : Modifie ou affiche le numéro de la page de code active.
* CHDIR : Modifie le répertoire ou affiche le nom du répertoire actif.
* CHKDSK : Vérifie un disque et affiche un rapport d’état.
* CHKNTFS : Affiche ou modifie la vérification du disque au démarrage.
* CLS : Efface l’écran.
* CMD : Exécute une nouvelle instance de l’interpréteur de commandes de Windows.
* COLOR : Modifie les couleurs du premier plan et de l’arrière-plan de la console.
* COMP : Compare les contenus de deux fichiers ou groupes de fichiers.
* COMPACT : Modifie ou affiche la compression des fichiers sur une partition NTFS.
* CONVERT : Convertit des volumes FAT en volumes NTFS.
* COPY : Copie un ou plusieurs fichiers.
* DATE : Affiche ou définit la date.
* DEL : Supprime un ou plusieurs fichiers.
* DIR : Affiche la liste des fichiers et des sous-répertoires d’un répertoire.
* DISKPART : Affiche ou configure les propriétés d'une partition de disque.
* DOSKEY : Modifie les lignes de commande, rappelle des commandes Windows, et crée des macros.
* DRIVERQUERY : Affiche l'état et les propriétés du pilote de périphérique en cours d'utilisation.
* ECHO : Affiche des messages ou active/désactive l'affichage des commandes.
* ENDLOCAL : Stoppe la localisation des modifications d'environnement dans un fichier de commandes.
* ERASE : Supprime un ou plusieurs fichiers.
* EXIT : Quitte l'interpréteur de commandes (CMD.EXE).
* FC : Compare deux fichiers ou groupes de fichiers et affiche les différences.
* FIND : Recherche une chaîne de caractères dans un ou plusieurs fichiers.
* FINDSTR : Cherche des chaînes dans les fichiers.
* FOR : Exécute une commande sur chaque fichier d'un ensemble de fichiers.
* FORMAT : Formate un disque devant être utilisé avec Windows.
* FSUTIL : Affiche ou configure les propriétés du système de fichiers.
* FTYPE : Affiche ou modifie les types de fichiers utilisés dans les associations d'extensions.
* GOTO : Indique l'exécution d'un fichier de commandes pour une ligne identifiée par une étiquette.
* GPRESULT : Affiche les informations de stratégie de groupe pour un ordinateur ou un utilisateur.
* GRAFTABL : Permet à Windows d'afficher un jeu de caractères en mode graphique.
* HELP : Affiche des informations sur les commandes de Windows.
* ICACLS : Afficher, modifier, sauvegarder ou restaurer les listes de contrôle d'accès pour les fichiers et les répertoires.
* IF : Effectue un traitement conditionnel dans un fichier de commandes.
* LABEL : Crée, modifie ou supprime le nom de volume d'un disque.
* MD : Crée un répertoire.
* MKDIR : Crée un répertoire.
* MKLINK : Créer des liens symboliques et des liens physiques
* MODE : Configure un périphérique du système.
* MORE : Affiche la sortie écran par écran.
* MOVE : Déplace un ou plusieurs fichiers d'un répertoire à un autre.
* OPENFILES : Affiche les fichiers partagés ouverts à distance par les utilisateurs.
* PATH : Affiche ou définit le chemin de recherche des fichiers exécutables.
* PAUSE : Interrompt l'exécution d'un fichier de commandes et affiche un message.
* POPD : Restaure la valeur précédente du répertoire actif enregistrée par PUSHD.
* PRINT : Imprime un fichier texte.
* PROMPT : Modifie l'invite de commande de Windows.
* PUSHD : Enregistre le répertoire actif puis le modifie.
* RD : Supprime un répertoire.
* RECOVER : Récupère l'information lisible d'un disque défectueux.
* REM : Insère un commentaire dans un fichier de commandes ou CONFIG.SYS.
* REN : Renomme un ou plusieurs fichiers.
* RENAME : Renomme un ou plusieurs fichiers.
* REPLACE : Remplace des fichiers.
* RMDIR : Supprime un répertoire.
* ROBOCOPY : Utilitaire avancé pour copier les fichiers et les arborescences de répertoires
* SET : Affiche, définit ou supprime des variables d'environnement Windows.
* SETLOCAL : Commence la localisation des modifications d'environnement dans un fichier de commandes.
* SC : Affiche ou configure les services (processus en arrière-plan).
* SCHTASKS : Planifie les commandes et les programmes à exécuter sur l'ordinateur.
* SHIFT : Modifie la position des paramètres remplaçables dans un fichier de commandes.
* SHUTDOWN : Permet un arrêt local ou distant correct de l'ordinateur.
* SORT : Trie les entrées.
* START : Ouvre une fenêtre séparée pour l'exécution d'un programme ou d'une commande spécifique.
* SUBST : Associe un chemin d'accès à une lettre de lecteur.
* SYSTEMINFO : Affiche les propriétés et la configuration spécifiques de l'ordinateur.
* TASKLIST : Affiche toutes les tâches en cours d'exécution, y compris les services.
* TASKKILL : Termine ou interrompt un processus ou une application en cours d'exécution.
* TIME : Affiche ou définit l'heure du système.
* TITLE : Définit le titre de la fenêtre pour une session CMD.EXE.
* TREE : Affiche le graphisme de la structure de répertoire d'un lecteur ou d'un chemin d'accès.
* TYPE : Affiche le contenu d'un fichier texte.
* VER : Affiche la version de Windows.
* VERIFY : Demande à Windows de vérifier si vos fichiers sont correctement écrits sur le disque.
* VOL : Affiche le nom et le numéro de série d'un volume de disque.
* XCOPY : Copie les fichiers et les arborescences de répertoires.
* WMIC : Affiche les informations WMI dans l'interface de commande interactive.

## Versions

* MS-DOS 1.00 : Juillet 1981, sort avec le tout premier IBM PC. Ne supporte que les disquettes 5″¼ simple face de 160 Kio. Les répertoires n'étaient pas supportés, et ne supportait au maximum que 64 fichiers par disquette ;
* MS-DOS 1.25 : 1982, équivalent de PC-DOS 1.10 mais en version OEM. C'est la première version vendue par Microsoft (MS-DOS) à d'autres constructeurs. Outre quelques commandes supplémentaires, cette version ajoute le support des disquettes 5″¼ double face de 320 Kio ;
* MS-DOS 2.00 : Mars 1983, première version à supporter un disque dur (FAT12) et des répertoires. Supporte aussi les disquettes 5″¼ de 180 Kio (simple face) et de 360 Kio (double face) ;
* MS-DOS 2.10 : Mars 1984 ;
* MS-DOS 3.0 : Août 1984, supporte les disquettes de 1,2 MB (1200 Kio) et les disques durs de plus de 15 Mio grâce au FAT16 ;
* MS-DOS 3.1 : Novembre 1984, première version à gérer les réseaux ;
* MS-DOS 3.2 : Janvier 1986, supporte les disquettes 3,5 pouces de 720 Kio ;
* MS-DOS 3.3 : Août 1987, supporte les disquettes 3,5 pouces de 1,44 MB (1440 Kio) et le support des partitions étendues ;
* MS-DOS 3.31 : Novembre 1987, supporte les partitions de plus de 32 Mio grâce à un adressage des secteurs logiques passé de 16 à 32 bits, la taille maximum du disque dur passe à 504 Mio ;
* MS-DOS 4.00 : Juin 1988, il occupe 110 Kio de RAM, offre une interface graphique (le Shell) et la taille d'une partition passe à 2 Gio ;
* MS-DOS 4.01 : version déboguée ;
* MS-DOS 5.00 : 1991, version gérant la mémoire haute, et qui permet de faire des menus de démarrage ; supporte jusqu'à 8 disques durs, support des disquettes de 2,88 MB (2880 Kio) ;
* MS-DOS 6.00 : 1993, version intégrant un anti-virus, un outil de vérification de système de fichiers, ScanDisk, et un logiciel de compression, DoubleSpace ;
* MS-DOS 6.20 : Novembre 1993, version déboguée, toujours avec DoubleSpace ; apparition de l'utilitaire Memmaker ;
* MS-DOS 6.21 : Février 1994, suppression de DoubleSpace à la suite d'une plainte pour violation de brevet de la part de Stac Electronics, éditeur d'un logiciel concurrent, Stacker ;
** DoubleSpace proposait un système de compression offrant les mêmes services que Stacker, un produit de Stac Electronics. Or Stac Electronics avait des brevets couvrant la compression. Microsoft avait entamé des négociations avec Stac Electronics pour acquérir une licence, mais aucun accord ne fut conclu. Début 1994, Stac Electronics remporta son procès contre Microsoft pour violation de brevet. Microsoft sortit alors MS-DOS 6.21, qui n'avait plus aucun système de compression ;
* MS-DOS 6.22 : Juin 1994, DoubleSpace est remplacé par DriveSpace, logiciel compatible sans le problème de brevet. C'est la dernière version autonome de MS-DOS ;
** Microsoft décida d'acheter une licence à Vertisoft pour la technologie de compression DriveSpace.
* MS-DOS 7 : 1995, À partir de cette version MS-DOS est intégré à Windows 95, il permet de démarrer Windows et ses propres applications. Il possède des outils de bases pour la gestion des disques durs ;
* MS-DOS 7.1 : 1996, Cette version est intégrée à Windows 95b (OSR 2.0), Windows 95c (OSR 2.5), Windows 98 et Windows 98 (Deuxième Édition), il apporte le support du système FAT32, une meilleure gestion de la mémoire, HIMEM.SYS est automatiquement chargé ainsi que l'outil SCANREG permettant le dépannage du registre ;
* MS-DOS 8 : 2000, Cette dernière version de MS-DOS intègre et démarre Windows ME, c'est une évolution de la version 7.1. Le noyau intègre le gestionnaire de mémoire étendue, le cache SMARTDRV et ce dernier est compressé pour diminuer le temps de démarrage. Il existe deux versions. La première désactive le mode réel et configure les spécifications des pays et du clavier à partir de la base du registre puis démarre Windows ME. La seconde, il sert de création de disquette de démarrage.

### Version mobile

En 2015 pour la traditionnelle farce du 1er avril, Microsoft a publié une pseudo version de MS-DOS fonctionnant sur Windows Phone. Celle-ci donne notamment accès aux principales commandes du système : CD, DIR, EDIT, PATH, VER, etc.