Du son sur le haut-parleur interne

Encore un peu de préhistoire informatique,

Retour en 94-95… J’ai un 286 sans carte son et voudrait écouter des fichiers wav téléchargé d’Internet (via le réseau de la Polytech).

(c) Pexels – Sander

J’avais donc imaginé un nouveau format qui ressemblait un peu au .avi (format que ne je connaissais évidemment pas encore). Il pouvait encapsuler différents streams dont le stream son. C’est ce stream qui était joué sur le haut-parleur interne en 1bit, 8000hz.

Tout était bien documenté:

The Multimedia RedBugs File Format

The RedB File Format
The Redbugs file use this structure:  

Offset          Name         Length (in byte)        Description

 00h            ID           4h                Contains the characters "RedB"
 04h            Rb_Data      Rb_Len            The data
 04h+Rb_Len     Rb_Data (2)  Rb_Len(2)         Another data
 ...            ...          ...               ...

The Rb_Data Format

Offset          Name         Length (in byte)        Description
 00h            Rb_ID        4h                Contains the type of this data
 04h            Rb_Len       4h                Length of this data
 08h            Ddata        Rb_Len-08h        Data of this data :=)

The Ddata format

The .SON form definition

Offset          Name         Length (in byte)        Description
  00h            Freq         2                       Frequency of the sample
  02h            Cps          2                       Clock per second
  03h            Bit          1                       # of bit of the sample

Après examen de ma documentation, on peut remarquer que:

mon nickname contenait encore un S à la fin.
je maitrisais déjà les smiley (mais pas totalement l’anglais) :=)

La seule partie interresante du source est celle qui permet de programmer le haut-parleur interne d’un PC.

Cela se fait via les port 43h, 42h et 61h.

Selection du type d’onde via le port 43h du PIT (Programmable Interval Timer – Intel 8253)

mov al,90h
out 43h,al

Activation du haut parleur (mise à 1 des 2 premiers bits) via le port 61h du PPI (Programmable Peripheral Interface)

in al,61h       ; Read current port mode B (8255)
or al,03
out 61h,al      ; Switch on speaker and timer

Ecriture sur le port 42h du PIT de l’octet de poids faible de la fréquence V, et ensuite, écriture sur le même port de l’octet de poids fort. (V étant égal à 1193180 / fréquence en Hz )

out 42h,al

Désactivation du haut parleur (remise à 0 des 2 premiers bits)

in al,61h
and al,0fch
out 61h,al

J’ai tout mis sur GitHub. L’intérêt est limité en 2022, mais ca fait partie de l’histoire (de la mienne en tout cas).

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires