Retour sur la libération du code source de MS-DOS 1.25 et 2.0 par Microsoft


  • Prédateur

    Microsoft a décidé le 28 septembre 2018 de libérer les sources des versions 1.25 et 2.0 de MS-DOS sous licence MIT et de les publier sur GitHub.

    MS-DOS Logo

    Il s’agit des mêmes versions données au Computer History Museum (Musée de l’histoire de l’ordinateur) le 25 mars 2014, comme le précise Microsoft dans le fichier README.md.
    Microsoft précise aussi dans son billet de blog que les deux versions (1.25 et 2.0) ont été écrites avec l’assembleur de l’Intel 8086, le premier processeur de la famille x86.

    L’entreprise indique que beaucoup de fichiers de documentation d’extension .TXT et .DOC intercalés entre les fichiers sources sont intéressants à lire, tout comme de nombreux commentaires directement dans le code source.

    On ne peut que se réjouir de cette libération, bien qu’elle soit tardive. Mais à quand la libération de NTKRPAMP.EXE, le noyau de Windows NT pour un système multiprocesseur ?

    Sommaire

    Petit historique de MS-DOS

    MS-DOS

    Le système d’exploitation MS-DOS (Microsoft Disk Operating System) s’appelait à l’origine QDOS (Quick and Dirty OS) ou 86-DOS et fut développé par Tim Patterson de l’entreprise SCP (Seattle Computer Products) comme un clone de CP/M, un système d’exploitation développé en 1974 par Gary Kidall de chez Digital Research. CP/M était conçu pour les processeurs Intel 8080 / Zilog Z80, 86-DOS visait donc à fournir un environnement familier sur la nouvelle architecture matérielle 8086 d’Intel. QDOS a pris le nom de MS-DOS à la suite de son rachat par Bill Gates.

    Le système CP/M (Control Program/Monitor) devait être initialement le système d’exploitation de l’IBM PC, mais alors que CP/M-86 était en développement les relations entre Digital Research et IBM se sont dégradées autour des questions de facturation (le premier préférant un achat unique de licence quand le second désirait une redevance), et parce que les accords de non‐divulgation (NDA — non‐disclosure agreement) demandés par IBM ne convenaient pas à Digital Research.

    Bill Gates a saisi l’occasion et conclu un accord commercial avec IBM pour que celui‐ci fonde son PC-DOS sur MS-DOS. C’est ainsi que PC-DOS, fut distribué avec les premières livraisons de l’IBM PC à l’automne 1981. La version de CP/M compatible avec le processeur 8086 fut disponible dès le printemps 1982 (à peine six mois plus tard) mais ce système d’exploitation fut un échec commercial, pris de vitesse par PC-DOS. Découvrant l’affaire, Digital Research menaça IBM d’une action en justice pour contrefaçon de propriété intellectuelle et obtint d’IBM que CP/M-86 soit proposé comme une alternative à PC-DOS, mais cela ne pu infléchir la route de PC-DOS / MS-DOS et le succès de Microsoft.

    Tandis que les premiers clones de l’IBM PC apparaissait, Microsoft conclut des accords avec les autres fabricants pour distribuer MS-DOS. MS-DOS devint le système majoritaire en prenant le pas sur PC-DOS, et les deux branches étant développées séparément, des incompatibilités furent parfois introduites.

    La famille CP/M est différente de la famille UNIX en termes de fonctionnement architectural. De plus, MS-DOS est un système mono‐utilisateur, car Microsoft réservait cette fonctionnalité pour son UNIX maison nommé Xenix.

    L’impact de MS-DOS sur l’industrie et la culture

    MS-DOS a conservé de CP/M le concept de BIOS qui permet d’abstraire le matériel afin de faire fonctionner une version unique du système d’exploitation sur différents modèles de machines. L’accord commercial entre Microsoft et IBM autour de MS-DOS et de l’IBM PC a rendu très populaire ce concept au cœur du développement de l’informatique personnelle, facilitant plus tard l’essor d’un certain noyau Freax visant le processeur i386 (renommé rapidement en Linux)…

    Microsoft Windows utilise toujours aujourd’hui le caractère \ comme séparateur de chemin d’accès, bien que le reste de l’industrie utilise /. Cela vient du fait que DOS a hérité de CP/M le caractère / comme préfixe d’option (qu’il semble avoir hérité lui‐même de VMS). Larry Osterman, un ingénieur de Microsoft a raconté que, parce que les employés de Microsoft développaient DOS sur Xenix, ils étaient habitués à utiliser le caractère / comme séparateur de chemin et - comme préfixe d’option. Ceux‐ci implémentèrent donc dans certaines parties de DOS (N. D. L. R. : mais pas toutes) la capacité de décoder les caractères / et \ indifféremment dans les chemins d’accès, et ajoutèrent une variable SWITCHAR à mettre dans le fichier config.sys pour changer le préfixe d’option de / en -. Larry Osterman dit dans son billet que l’option a disparu depuis longtemps, mais nous pouvons cependant la retrouver dans le code de DOS 2.0 qui vient d’être libéré.

    MS-DOS fut plusieurs fois adapté sous licence par des tiers (PC-DOS, Compaq DOS…) et des projets complètements indépendants ont été développés pour être compatible avec lui : DR-DOS, FreeDOS (on en parle après), ou encore PTS-DOS, une version russe certifiée par le Ministère de la Défense de la Fédération de Russie.

    MS-DOS ou ses clones furent très souvent utilisés au cœur de systèmes industriels ayant une grande longévité, ce qui rend parfois nécessaire sa maintenance aujourd’hui. MS-DOS fut souvent utilisé comme système autonome pour des utilitaires sur disquette (ancêtres des CD autonomes sous GNU/Linux et autres clefs USB autonomes) mais son usage a largement dépassé le cadre de l’ordinateur personnel.

    Tout comme nous trouvons aujourd’hui GNU/Linux dans de nombreux appareils du quotidien comme nos téléphones Android, nos box Internet, des télévisions ou même des réfrigérateurs, MS-DOS ou ses clones se sont retrouvés dans certains objets parfois inattendus, comme le téléphone Nokia 9110 Communicator ou la calculatrice graphique Casio Graph 100+ qui exécutent un ROM-DOS de Datalight (équivalent à MS-DOS 2) sur un processeur AMD dérivé du i486, pour le premier, et un processeur Nec dérivé du 80286, pour la seconde. Ceci permit à des enthousiastes de développer leurs propres programmes pour cette calculatrice en utilisant, par exemple, la suite Turbo C 3 de Borland (C, C++ et assembleur), le compilateur C de Digital Mars ou encore QBasic de Microsoft.

    DOS est aussi devenu, à l’instar du jeu DOOM, un défi pour beaucoup de développeurs : celui de le porter sur le plus d’architectures possibles (ou aussi, dans le cas de DOS, de mettre en œuvre des clones). On peut citer par exemple la

    permettant d’avoir un environnement de travail DOS dans l’univers virtuel du jeu Morrowind. Microsoft lui‐même s’est prêté à ce jeu lorsque le 1er avril 2015 l’entreprise a publié une application appelée « MS-DOS Mobile » présentée comme un nouveau système d’exploitation mobile, et qui fournissait une interface similaire à MS-DOS sur leurs téléphones sous Windows.

    Enfin, le clone libre FreeDOS (dont nous parlons juste après) est parfois installé sur certaines machines vendues sans Windows ou sans GNU/Linux, afin de livrer la machine avec un fonctionnement minimal. Certaines machines vendues « sans système d’exploitation » ont donc parfois bien un système d’exploitation quand même !

    Les versions de Microsoft DOS

    Version 1.00 (1981)

    La première version sortie sur l’IBM PC.

    Elle ne prend en charge que les disquettes 5″¼ simple face de 160 Kio.
    Disquette

    Les répertoires n’existaient pas sur cette version et on ne pouvait mettre que 64 fichiers sur une disquette.

    Version 1.25 (1982)

    C’est une des versions qui ont été libérées. Une légère évolution de la 1.24. Elle fut la première version vendue par Microsoft et, plus généralement, c’est la première version utilisée par tous les fabricants de clones des ordinateurs d’IBM.

    Pour les disquettes 5″¼, on passe sur une gestion du double face avec une plus grande capacité (320 Kio).

    Microsoft précise que le code source de cette version ne contient que sept fichiers en assembleur, comme on peut le voir sur le dépôt GitHub.

    Version 2.0 (1983)

    Deuxième version libérée par Microsoft.

    Elle introduit la gestion des disques durs avec un système de fichiers FAT12, ainsi que les répertoires. Les disquettes 5″¼ simple face gagnent en capacité, passant de 160 Kio à 180 Kio, tandis que les disquettes double face passent de 320 Kio à 360 Kio.

    Par rapport à la 1.25, dans le code source on passe de sept fichiers à cent fichiers en assembleur ; presque quinze fois plus, augmentant la sophistication du code et la taille de l’équipe de développement, comme le précise Microsoft.

    Version 3.0 (1984)

    Cette version introduit la prise en charge des disquettes de 1 200 Kio et les disques durs de 15 360 Kio.

    Version 6.22 (1994)

    La question qui se pose est : pourquoi ne pas avoir libéré le code de la dernière version commercialisée, la 6.22 ? Peut‐être pour ne pas afficher les pratiques controversées de ralentissement des concurrents ? [N. D. M. : il s’agit de la dernière version commercialisée séparément]

    L’historique des versions sur la page Wikipédia évoque une version 7 avec Windows 95 et une 8 avec Windows ME en 2000 (avant une fin de prise en charge en 2001). Sont aussi mentionnés les problèmes rencontrés avec les versions 6.2x à cause des brevets logiciels. Ce pourrait être une explication, du moins pour la 6.22 (pas forcément pour la 3.0).

    Les divers projets libres autour de MS-DOS

    Wikipédia possède des listes très détaillées de systèmes compatibles DOS ou similaires à DOS, ainsi que des comparaisons ou des informations très intéressantes sur les couches de compatibilité permettant d’exécuter des programmes DOS sur des systèmes plus récents. Mais LinuxFr.org oblige, nous nous concentrons sur les projets libres continuant à entretenir l’environnement DOS.

    À noter qu’il existait un système d’exploitation nommé OpenDOS, un descendant de DR-DOS de Digital Research (et donc de CP/M-86 via la branche Concurrent PC-DOS, sa version multi‐utilisateur). Mais bien que ce système s’appelle OpenDOS et que le source ait été distribué, celui‐ci n’a rien de libre. En effet, selon les termes de Caldera, le source aurait été rendu disponible pour une utilisation personnelle à coût nul, et une redistribution commerciale d’OpenDOS nécessitait une licence payante. L’annonce disait également que les sources de certains composants de tierces parties de Novell DOS 7 ne seraient pas publiés, ce qui fait d’OpenDOS une forme d’open core dont même le cœur n’est pas libre car soumis à une clause non commerciale.

    Le logiciel rpix86 est similaire à DOSBox, que nous présentons ci‐après, et permet d’exécuter des jeux DOS sur un Raspberry Pi. Mais il n’est malheureusement pas libre, et le seul interpréteur qu’il est capable d’exécuter est 4DOS qui, bien que le source soit disponible, est malheureusement couvert par une licence MIT modifiée qui n’est pas reconnue comme libre ni par l’OSI, ni par la FSF, une clause interdisant l’usage commercial. Le programme rpix86 tournant sous GNU/Linux, on peut donc tout de même le citer, parce que dans LinuxFr.org il y a « Linux »…

    Toujours en développement

    FreeDOS

    FreeDOS

    FreeDOS, une alternative libre qui a été créée en 1994 du fait de l’arrêt du support par Microsoft.

    Il est intéressant de voir que la version stable (1.0) de FreeDOS, sortie en 2006, a mis douze ans à arriver, chose rare dans le développement logiciel mais qui s’explique aisément par les faibles moyens à disposition. Il a fallu aux développeurs une bonne dose de ténacité pour ne pas abandonner.

    FreeDOS est souvent comparé à ReactOS, qui vise à être une alternative libre à Microsoft Windows ; il peut aussi être comparé à Haiku, clone de BeOS compatible avec celui‐ci.

    DOSBox

    DOSBox

    DOSBox est un émulateur simulant un environnement compatible MS-DOS dans le but d’exécuter notamment des jeux vidéo développés autrefois pour ce système. Il est aussi possible de l’utiliser pour lancer tout type de logiciels. Ce projet est toujours dynamique et permet d’accéder à la culture du jeu vidéo sur PC de la fin des années 80 et du début des années 90, sans avoir à dénicher une vieille machine compatible. Bien que DOSBox soit capable de faire tourner FreeDOS, il fournit sa propre implémentation et son propre interpréteur de commandes DOS.

    DOSBox permet aux particuliers d’exécuter leurs vielles applications et vieux jeux DOS, mais il permet également à des sociétés de redistribuer leurs anciens jeux pour de nouveaux systèmes en empaquetant DOSBox avec leurs jeux, de très nombreux titres ont été distribués officiellement ainsi.

    Projets abandonnés

    PC-MOS/386

    PC-MOS/386 était un système d’exploitation compatible DOS multi‐utilisateur et multi‐tâche développé par une entreprise américaine du nom de The Software Link et qui fut distribué pour la première fois en 1987, et fut libéré en 2017 sous licence GPL v3. Comme son nom l’indique, PC-MOS/386 visait les processeurs i386 qui ont une architecture bien plus récente que celles prises en charges par les premières versions de DOS dont nous parlons dans cet article. La dernière version de PC-MOS/386, la version 5.01, était compatible avec MS-DOS 5 et requiert une MMU (unité de gestion mémoire) ce qui la rend de fait incompatible avec les processeurs 8086. Pour le cas d’un processeur 80286, il était cependant possible d’installer une extension matérielle entre le processeur et son support (socket) pour rendre l’ordinateur compatible avec le système.

    CP/M

    Ce n’est pas tout à fait DOS, mais étant donné le lien étroit entre DOS et CP/M, il serait dommage de ne pas le citer. Le code source de CP/M a été libéré en 2001 par l’ayant droit du moment (l’entreprise Lineo). Le code source peut être retrouvé sur le site du Computer History Museum et sur le site de passionnés The Unofficial CP/M Web Site. Toutes les versions ne sont pas disponibles (1.1, 1.3, 1.4 et 2.0 sont incluses) et certaines sont incomplètes. Certaines parties ont été obtenues par désassemblage. Initialement, CP/M était surtout programmé en langage PL/M et fut réécrit en assembleur. Sont disponibles également des numérisations de listings originaux. Selon l’article Wikipédia anglophone, le code serait couvert par une licence similaire aux licences BSD.

    DOSEMU

    Un peu comme DOSBox, DOSEMU visait à permettre d’exécuter des applications DOS sous GNU/Linux. DOSEMU réalisait ceci en fournissant une couche de compatibilité pour un véritable système d’exploitation comme FreeDOS. Bien que pleinement fonctionnel et toujours disponible dans certaines distributions GNU/Linux aujourd’hui, le développement semble s’être arrêté en 2012.

    Cette libération peut‐elle profiter au projet FreeDOS ?

    Pas directement, le code libéré (version 1.25 et 2.0) est entièrement écrit en assembleur alors que FreeDOS combine du code C et de l’assembleur. Cependant cela évite la rétro‐ingénierie pour comprendre le fonctionnement… Sauf que c’est un peu trop tard : le projet FreeDOS a déjà un peu désossé tout DOS pour en comprendre le comportement. Le code source permet cependant de vérifier que cela a été fait correctement. De plus, FreeDOS ayant pour objectif d’être compatible mais pas de refaire forcément à l’identique, s’il peut faire mieux que MS-DOS, il le fera.

    Quel intérêt y trouver ?

    L’intérêt académique

    L’intérêt académique se situe à la fois sur le plan de la recherche et le plan de l’enseignement. Cela permet aux élèves d’étudier et comprendre comment fonctionnaient les premiers systèmes d’exploitation et donc de mieux appréhender les nouveaux. Cela peut constituer une première étape d’apprentissage de par la relative simplicité de ces systèmes. Il existe aussi d’autres solutions comme Minix, mais un système comme MS-DOS constitue aussi un cas d’école des avantages et faiblesses de ce type de système.

    L’intérêt historique / archivistique

    L’intérêt historique / archivistique réside dans le fait de pouvoir aisément présenter et manipuler un système ancien sans avoir à entretenir un matériel délicat dont les pièces seraient de plus en plus difficiles à trouver. Cela apporte une stabilité qui dépend moins de l’environnement. On peut comparer cet intérêt avec celui de savoir reproduire un objet du Moyen‐Âge pour explorer son usage sans avoir à utiliser l’original et le mettre en danger.

    L’intérêt sécuritaire

    L’intérêt sécuritaire est sans doute l’intérêt le plus susceptible de motiver un travail, voire un travail rémunéré (même si cela devient rare et minoritaire car très spécialisé). Outre les passionnés qui ont besoin d’une machine sans trop de failles de sécurité (et stable) pour jouer, il y a encore bien des organisations (de grosses sociétés ou des états) qui ont de très vieux logiciels souvent critiques qui tournent toujours. Parfois les spécifications sont perdues et il est donc bien plus économique de les faire durer ainsi. L’entreprise Microsoft elle‐même a déjà été réduite à modifier un ancien exécutable pour corriger un problème de sécurité… Modification opérée directement sur le binaire, donc sans recompilation depuis le source. Il existe donc nombre de composants qu’il faut « conserver ainsi », parfois même chez les éditeurs de ces composants…

    L’intérêt pratique

    L’intérêt pratique est donc minime et ne vaut pas le travail qu’il demande. Ce qui motive avant tout c’est la passion de l’informatique. La passion de faire revivre un système d’exploitation qui a connu son heure de gloire. C’est un peu comme rouler avec une voiture de collection : c’est inconfortable mais cela évoque un autre monde qui, avec le temps, est enchanté…

    Nous pouvons comparer cela, dans un autre contexte, au langage de programmation Cobol crée en 1959. Parce qu’il a toujours été confidentiel et réservé à des clients fortunés, aucune communauté de passionnés ne l’avait adapté à du matériel moderne. C’est seulement très récemment qu’ont été développées des alternatives à base de logiciels libres pseudo‐compatibles pour faire tourner les logiciels Cobol sur des systèmes GNU/Linux plus accessibles financièrement. Mais en attendant, les banques ont dû dépenser des sommes considérables pour maintenir ces logiciels en fonction…

    Se pose une dernière question : quels outils pour ~compiler~ assembler ?

    Télécharger ce contenu au format Epub

    Commentaires : voir le flux atom ouvrir dans le navigateur

    https://linuxfr.org/news/retour-sur-la-liberation-du-code-source-de-ms-dos-1-25-et-2-0-par-microsoft


Log in to reply