best.b d7,(a1)
si d7 vaut 3 et (a1) valait 0
ca fait %00000100
ou %00100000 ??
je pense que c'est la première solution, mais alors l'écriture des données compressée est tordue

aussi, je pense que le tri suivant se fait dans l'ordre décroissant, mais ca me parait louche pour du huffmann

Creation_freq:
move.w #$FFFF,d2 ;d2=-1
clr.w d3
clr.w d0
Recherche_Freq:
move.w 0(a0,d0.w),d4 ;nb de freq
tst.w d4 ;nb==0 ?
beq Plus_petite
cmp.w d4,d2 ;d4<=d2 ?
bls Plus_petite
move.w d0,d3 ;on enregistre le no de caract
move.w d4,d2 ;on enregistre ce max
Plus_petite:
addq.w #2,d0 ;d0+=2 : au suivant
cmp.w #$200,d0 ;512 : on a tout comparer ?
bne Recherche_Freq ;non
tst.w 0(a0,d3.w) ;le max est à 0 ?
beq Fin_de_Creation_Freq ;fini
clr.b (a1)+ ;premier byte=0
move.w d3,d4
lsr.w #1,d4 ;d4/=2
move.b d4,(a1)+ ;on ecrit le no du caract
move.w 0(a0,d3.w),(a1)+ ;on ecrit sa freq
clr.w 0(a0,d3.w) ;on l'efface
bra Creation_freq
Fin_de_Creation_Freq:
est-ce que j'interprète bien les lignes suivantes ?
move.w #$FFFF,d2 ;d2=-1
et
cmp.w d4,d2 ;d4<=d2 ?
bls Plus_petite ; oui