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).
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:
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).
Ajouter un commentaire