{"id":7325,"date":"2026-04-11T22:54:58","date_gmt":"2026-04-11T20:54:58","guid":{"rendered":"https:\/\/entropie.org\/3615\/?p=7325"},"modified":"2026-05-25T01:29:15","modified_gmt":"2026-05-24T23:29:15","slug":"programmer-sous-freedos","status":"publish","type":"post","link":"https:\/\/entropie.org\/3615\/index.php\/2026\/04\/11\/programmer-sous-freedos\/","title":{"rendered":"Programmer sous FreeDOS 1.4"},"content":{"rendered":"<p>FreeDOS 1.4 est sorti en avril 2025.<\/p>\n<p>Quelques notes, pour m\u00e9moire.<\/p>\n<p><a href=\"https:\/\/www.freedos.org\" rel=\"noopener\" target=\"_blank\">Site officiel<\/a><br \/>\n<a href=\"https:\/\/www.ibiblio.org\/pub\/micro\/pc-stuff\/freedos\/files\/repositories\/index_fr.html\" rel=\"noopener\" target=\"_blank\">D\u00e9p\u00f4ts officiels FreeDOS<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/@freedosproject\" rel=\"noopener\" target=\"_blank\">Site YouTube FreeDOS<\/a><br \/>\n<iframe loading=\"lazy\" title=\"How I write programs on FreeDOS\" width=\"840\" height=\"630\" src=\"https:\/\/www.youtube.com\/embed\/aSHNf2Qg0Pk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Apr\u00e8s avoir install\u00e9 la version minimale de FreeDOS 1.4 dans VirtualBox, je monte l\u2019image du BonusCD (t\u00e9l\u00e9charg\u00e9e depuis le site officiel sous le nom FD14BNS.iso) dans le lecteur optique virtuel de la machine.<\/p>\n<p>FDIMPLES est un outil visuel et interactif de FreeDOS qui permet de parcourir, installer et supprimer des paquets inclus sur les supports de distribution de FreeDOS (comme les CD Live, BonusCD, etc.). Il s\u2019agit d\u2019un gestionnaire de paquets qui lit les m\u00e9dias d\u2019installation pour identifier les logiciels disponibles \u00e0 l\u2019installation ou \u00e0 la suppression. Pour l\u2019utiliser, il suffit de lancer la commande FDIMPLES depuis l\u2019invite de commandes de FreeDOS.<\/p>\n<p>Pour programmer, j&rsquo;ai choisi le compilateur Open Watcom C\/C++et l&rsquo; \u00e9diteur de texte FED car il permet de plier \/ d\u00e9plier le code. J&rsquo;ai \u00e9galement install\u00e9 l&rsquo;assembleur NASM et l&rsquo;\u00e9diteur hexad\u00e9cimal uHex.<\/p>\n<p>Dans C:\\>FDAUTO.BAT, je rajoute \u00e0 la fin :<\/p>\n<pre>\r\ncd PERSO\r\n\r\nREM *** FED 2.24c ***\r\nalias fed=C:\\APPS\\FED\\FED.EXE\r\n\r\nREM *** OPEN WATCOM C\/C++ 1.9 ***      => \u00e0 mettre en dernier\r\nC:\\DEVEL\\WATCOMC\\OWSETENV.BAT\r\n<\/pre>\n<p>M\u00e9mo FED :<br \/>\nAlt pour acc\u00e9der au menu<br \/>\nCTRL-C pour fermer<br \/>\nCTRL-F pour plier \/ d\u00e9plier le code<\/p>\n<p>En pratique, pour \u00eatre efficace, je n&rsquo;utilise pas l&rsquo;\u00e9diteur de texte sous FreeDOS :<br \/>\n1 &#8211; Je code avec mon \u00e9diteur sous Debian.<br \/>\n2 &#8211; Dans VirtualBox, Je v\u00e9rifie que la machine virtuelle FreeDOS 1.4 est \u00e9teinte.<br \/>\n3 &#8211; J&rsquo;ex\u00e9cute ce fichier bash (Vers_FreeDOS.sh), le paquet libguestfs-tools \u00e9tant install\u00e9 :<\/p>\n<pre>\r\n#!\/bin\/bash\r\n# Interpr\u00e9teur : on utilise bash explicitement\r\n\r\n# Si on n'est pas dans un terminal, se relancer dans un terminal graphique\r\nif ! [ -t 1 ]; then\r\n    mate-terminal -e \"bash -c '$0; read -p \\\"Appuie sur Entr\u00e9e pour fermer...\\\"'\"\r\n    exit\r\nfi\r\n\r\nset -e\r\n# Arr\u00eate le script imm\u00e9diatement si une commande \u00e9choue (exit on error)\r\n# \u00c9vite que les erreurs passent silencieusement et causent des d\u00e9g\u00e2ts en cascade\r\n\r\nset -x\r\n# Mode debug : affiche chaque commande avant de l'ex\u00e9cuter (pr\u00e9c\u00e9d\u00e9e de \"+\")\r\n# Utile pour suivre l'ex\u00e9cution pas \u00e0 pas\r\n\r\nmkdir ~\/VHD\r\n# Cr\u00e9e un r\u00e9pertoire temporaire \"VHD\" dans le dossier home (~)\r\n# Ce dossier servira de point de montage pour l'image disque\r\n\r\ncd \"\/media\/$USER\/Fichiers Eric\/VirtualBox\/FreeDOS 1.4\"\r\n# Se d\u00e9place dans le r\u00e9pertoire contenant l'image VHD\r\n# $USER est automatiquement remplac\u00e9 par le nom de l'utilisateur courant\r\n\r\nguestmount -a \"FreeDOS 1.4.vhd\" -m \/dev\/sda1 ~\/VHD\r\n# Monte l'image disque VHD via libguestfs (paquet guestfs-tools)\r\n#   -a \"FreeDOS 1.4.vhd\" : sp\u00e9cifie le fichier image \u00e0 utiliser\r\n#   -m \/dev\/sda1         : monte la premi\u00e8re partition du disque virtuel\r\n#   ~\/VHD                : point de montage (le dossier cr\u00e9\u00e9 plus haut)\r\n# Permet d'acc\u00e9der au contenu de la VM sans la d\u00e9marrer\r\n\r\ncp -R \"\/media\/$USER\/Fichiers Eric\/VirtualBox\/FreeDOS 1.4\/PERSO\" ~\/VHD\r\n# Copie r\u00e9cursivement le dossier PERSO dans l'image mont\u00e9e\r\n#   -R : copie les sous-dossiers et fichiers r\u00e9cursivement\r\n# C'est l'op\u00e9ration principale : injecter des fichiers dans la VM\r\n\r\nguestunmount ~\/VHD\r\n# D\u00e9monte proprement l'image VHD\r\n# \u00c9quivalent d'un umount, mais adapt\u00e9 aux images guestfs\r\n# Important : \u00e0 faire avant de supprimer le point de montage\r\n\r\nrm -r ~\/VHD\r\n# Supprime le r\u00e9pertoire de montage temporaire devenu inutile\r\n#   -r : suppression r\u00e9cursive (n\u00e9cessaire pour un dossier)\r\n# Nettoyage final \u2014 le dossier devrait \u00eatre vide apr\u00e8s guestunmount\r\n\r\n# --- Message de succ\u00e8s ---\r\nset +x  # On d\u00e9sactive le mode debug pour un affichage propre\r\necho \"\"\r\necho \"\u2705 Succ\u00e8s ! Le dossier PERSO a \u00e9t\u00e9 copi\u00e9 dans l'image FreeDOS.\"\r\necho \"\"\r\n<\/pre>\n<p>4 &#8211; Dans VirtualBox, je d\u00e9marre la machine virtuelle FreeDOS 1.4<br \/>\n5 &#8211; Sous FreeDOS, je compile mon fichier source avec : wcl source.c -q<\/p>\n<p>Mon programme de test du mode 13h est ici :<br \/>\n<a href=\"https:\/\/github.com\/eserandour\/Mode13h_OpenWatcom_FreeDOS\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/eserandour\/Mode13h_OpenWatcom_FreeDOS<\/a><br \/>\n<small><br \/>\n<a href=\"https:\/\/allthingsopen.org\/articles\/how-to-write-your-first-freedos-program\" rel=\"noopener\" target=\"_blank\">https:\/\/allthingsopen.org\/articles\/how-to-write-your-first-freedos-program<\/a><br \/>\n<a href=\"https:\/\/www.both.org\/?p=12007\" rel=\"noopener\" target=\"_blank\">https:\/\/www.both.org\/?p=12007<\/a><br \/>\n<a href=\"https:\/\/opensource.com\/article\/21\/9\/programming-dos-conio\" rel=\"noopener\" target=\"_blank\">https:\/\/opensource.com\/article\/21\/9\/programming-dos-conio<\/a><br \/>\n<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>FreeDOS 1.4 est sorti en avril 2025. Quelques notes, pour m\u00e9moire. Site officiel D\u00e9p\u00f4ts officiels FreeDOS Site YouTube FreeDOS Apr\u00e8s avoir install\u00e9 la version minimale de FreeDOS 1.4 dans VirtualBox, je monte l\u2019image du BonusCD (t\u00e9l\u00e9charg\u00e9e depuis le site officiel sous le nom FD14BNS.iso) dans le lecteur optique virtuel de la machine. FDIMPLES est un &hellip; <a href=\"https:\/\/entropie.org\/3615\/index.php\/2026\/04\/11\/programmer-sous-freedos\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Programmer sous FreeDOS 1.4&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58,35],"tags":[],"class_list":["post-7325","post","type-post","status-publish","format-standard","hentry","category-bash","category-dos"],"_links":{"self":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/7325"}],"collection":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/comments?post=7325"}],"version-history":[{"count":61,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/7325\/revisions"}],"predecessor-version":[{"id":7413,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/7325\/revisions\/7413"}],"wp:attachment":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/media?parent=7325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/categories?post=7325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/tags?post=7325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}