Introduction
Contrairement aux cartes vidéos, les cartes de son ne sont pas le fruit d'un standard proposé par IBM pour sa gamme des PC. Ainsi, se sont des fabricants indépendant ayant proposer des cartes de son et que seul des logiciels spécialisé était capable d'en exploiter les possibilités.
Organigramme de détection de la carte vidéo AdLib
Bien qu'il existait cette possibilité sous les ordinateurs Amiga et Atari ST de l'époque, la carte de son AdLib est la première carte de son proposé pour un ordinateur de la gamme PC d'IBM. Laquelle, remplaçait l'utilisation d'un PC Speaker Mono par une sortie stéréo de bien meilleure qualité. Cette carte de son est né de l'idée d'un professeur de musique, Martin Prevel, de l'université Laval, dans la ville de Québec et le nom de la carte de son était «AdLib Music Synthesizer Card». Puisqu'il n'y avait pas de BIOS de fournit avec la carte ISA 8 bits, il fallait détecté directement à partir des ports d'entrée/sorties 388h/389h la présence de la carte de son, sinon on pouvait utiliser un pilote chargé lors du démarrage du système d'exploitation.
Voici un code de détection de la carte de son AdLib en assembleur 8086 :
- ; Routine de détection de la carte AdLib en assembleur 8086
- MOV DX, 0388h ; Charger l'adresse du port AdLib
- IN AL, DX ; Lire l'état du port (vérification si occupé)
- ADD AL, 0 ; Aucun effet (simple lecture)
-
- MOV DX, 0388h ; Sélectionner le registre 0x04
- MOV AL, 04h ; Écrire dans le port d'adresse (sélection du registre)
- OUT DX, AL
-
- MOV DX, 0389h ; Accéder au port de données
- MOV AL, 060h ; Écrire une valeur de test (valeur arbitraire)
- OUT DX, AL
-
- MOV DX, 0388h ; Sélectionner de nouveau le registre 0x04
- MOV AL, 04h
- OUT DX, AL
-
- MOV DX, 0389h ; Lire la valeur dans le port de données
- IN AL, DX ; AL contient la valeur lue
-
- CMP AL, 60h ; Comparer avec la valeur initiale
- JE AdLibDetected ; Si les valeurs correspondent, la carte AdLib est détectée
-
- AdLibNotDetected:
- ; La carte AdLib n'a pas été détectée, gestion de l'erreur
- JMP End
-
- AdLibDetected:
- ; La carte AdLib est présente, continuer
- End: