GERBEN'S BLOG

EEEPC, FreeDOS, SBEMU

Il y a quelques temps, je me suis attelé à réhabiliter mon vieil eeepc Cette réhabilitation est passée par l’installation de FreeDOS pour avoir :

  • un temps de démarrage décent
  • accès à l’ensemble du répertoire de logiciels disponible sous DOS (dont les jeux ;))

Tout s’est passé comme prévu : ça va vraiment plus vite que le système de base (un Linux, c’est performant, mais le multitasking, la pile réseau et tous les avantages du système viennent avec un coût au démarrage) mais il me manquait une fonctionnalité capitale (en particulier pour les jeux) : le support de la carte son.

Eh bien, un développeur nommé “crazii” a résolu mon problème en créant SBEMU, une couche d’émulation qui utilise les possibilités d’interception matérielle du processeur pour attraper les appels à la carte son. Et ça fonctionne plutôt bien, démo !!

(Si vous êtes nostalgiques des trackers ou des démos du groupe Future Crew, dont cette musique est issue, je recommande l’album suivant : Tracked sur BandCamp)

Installation

Téléchargez tout d’abord une release depuis le github d’SBEMU et décompressez la dans un répertoire de votre disque DOS.

FDCONFIG.SYS

La première partie de l’installation se fait dans l’équivalent du fichier CONFIG.SYS pour Freedos pour charger en mémoire le gestionnaire de mémoire étendue JEMMEX dans une version compatible avec le plugin SBEMU (pensez à enlever les autres gestionnaires de mémoire étendue) :

DEVICE=c:\sbemu\jemmex.exe

FDAUTO.BAT

La suite se passe dans l’équivalent de l’AUTOEXEC.BAT de Freedos :

c:\sbemu\jload c:\sbemu\qpiemu.dll
c:\sbemu\hdpmi32i -r -x
c:\sbemu\sbemu

Et si tout va bien, un petit redémarrage et votre émulation SoundBlaster devrait être fonctionnelle. Attention tout de même :

  • ça ne fonctionne pas avec tous les programmes, en particulier en cas d’utilisation d’un DOS extender maison
  • l’émulation de la synthèse FM OPL nécessite de faire une émulation logicielle (issue de DOSBox) qui consomme un peu de CPU

Tous les détails et les discussions en cours sur le forum Vogons.org

Enjoy !!!

Bonus : Background story

Pour la petite histoire, avant que ce soft soit dévoilé, j’ai tenté de faire fonctionner la carte son en patchant un programme DOS de musique : xmp-cli.

L’occasion rêvée de se remettre dans mes anciennes passions : l’assembleur x86 et la programmation système.

Première étape : identifier le matériel.

Un grand nombre de sites donne les spécifications du netbook : le son est assuré par une carte compatible Intel HDA (ici, HDA = High Definition Audio).

Deuxième étape : les specs Intel High Definition Audio

L’Intel High Definition Audio est une technologie audio développée par Intel pour améliorer les performances sonores dans les ordinateurs. La technologie HD Audio permet une gestion plus efficace des signaux audio numériques et analogiques, ainsi qu’une meilleure intégration avec les systèmes d’exploitation modernes. Il a été lancé par Intel en 2004 comme successeur au standard d’audio PC AC'97.

Une fois ceci identifié, il a fallu s’attaquer aux specs : https://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification.pdf

Les épreuves et la fin du projet

Je ne vais pas rentrer dans le détail, ce serait trop long, juste une petite liste :

  1. Il faut que la carte soit mappée sur une addresse mémoire < 4Go, sinon impossible d’y accéder depuis DOS. Ouf, c’est bon.
  2. Pour échanger avec la carte, il faut accéder à sa zone mémoire via son adresse physique. Pour l’obtenir (mémoire haute), il faut verrouiller de la mémoire XMS uniquement.
  3. Le programme étant en mode protégé, il faut utiliser le DPMI (…) pour faire des appels en mode réel aux fonctions XMS.
  4. Ces mêmes fonctions ne s’appellent pas via des interruptions mais via des appels mémoire directs (et rebelotte, DPMI pour s’échapper du mode protégé).

Bref, j’ai suivi le jeu de piste, codé la détection de la carte, son initialisation et j’en étais à tenter de lancer la lecture de modules qui se soldait pour l’instant par un échec. Maintenant, ça ne sert plus à rien de tirer le fil, mais je me suis bien amusé à me replonger dans les entrailles de la programmation système sous DOS. 👍

Références en vrac