60

Les nops, c'est pour avoir un timing précis. On saute au milieu de la séquence de nops pour avoir une pause précise au quadruple cycle près.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

61

 include "doorsos.h"
 xdef _main
 xdef _comment
 xdef _ti92plus
 xdef _ti89

[i]; Quelques déclarations[/i]
SamplingRate    equ  7000
DefLoss equ     2
DefLoss2        equ     128

_main:
 move.w #$0700,d0
 trap           #1 [i]; Change le niveau d'inhibition des interruptions (équivalent à move.w #2700,sr en mode superviseur)[/i]
 bset.b #6,$60000C [i]; Allume le bit #6 du de l'octet à l'adresse $60000C (regarde dans J89HW.txt pour voir à quoi ça correspond[/i]
 MOVE.w  #FinMusique-musique,D0 [i]; Met la taille de la musique (en octets) dans d0[/i]
jouer:
 LEA musique(PC),A0 [i]; Charge l'adresse du début de la musique dans a0[/i]
 lea 0(a0,d0.w),a0 [i]; Rajoute d0 (soit la taille de la musique), c'est bizarre, un adda serait plus optimisé[/i]
 lea NOPfin-DefLoss2(pc),a1 [i]; charge l'adresse de NOPfin-128 dans a1[/i]
 move.l #0,d4 [i]; met à 0 (un moveq serait plus optimisé #confus#)[/i]
 move.l #0,d5 [i]; pareil[/i]
jouerloop:
 move.b -(a0),d4 [i]; on met le dernier octet de la musique dans d4[/i]
 lsr.b  #DefLoss,d4 [i]; on divise par 2²[/i]
 lsl.b  #1,d4 [i]; puis on multiplie par 2 (un add serait plus optimisé)[/i]
 lea    0(a1,d4.w),a2 [i]; on ajoute d4 à a1 (qui contient une adresse qui pointe vers des nop) et on met le résultat dans d2[/i]
 MOVE.l #DefLoss2,d5 [i]; on met 128 dans d5[/i]
 SUB.b d4,d5 [i]; d5 = 128 - d4[/i]
 lea    0(a1,d5.w),a3 [i]; on ajoute d5 à a1 et on met le résultat dans a3[/i]
 MOVE.w #10000000/((74+2*DefLoss2)*SamplingRate)-1,d2 [i]; d2 = 3 (si je ne me suis pas gouré)[/i]
impulsion:
haut:
 bset.b #0,$60000E [i]; Ça tu connais bien :)[/i]
 jsr    (a2) [i]; fait une pause (la durée de la pause dépend de la valeur de a2)[/i]
bas:
 bclr.b #0,$60000E [i]; On remet à l'état bas...[/i]
 jsr    (a3) [i]; et on refait une pause, afin de bien contrôler le rapport cyclique ainsi que la période du signal[/i]
 DBRA d2,impulsion [i]; on répète ça 3 fois (ça fera 4 fois en tout)[/i]
 DBRA d0,jouerloop [i]; et on recommence pour chaque octet qui correspond à la musique[/i]
fin:
 bset.b #0,$60000E [i]; on remet à 0[/i]
 move.b #$8D,$60000C [i]; regarde dans j89HW.txt pour savoir ce que ça signifie[/i]
 move.w #$0000,d0
 trap           #1 [i]; et on réautorise les interruptions[/i]
 RTS
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
NOPfin:
 rts
musique
dc.b .......
FinMusique:
 end

62

Vraiment merci. smile
Je vais pouvoir faire mon algo.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

63

Désolé pour les petites résolutions.
geogeo, j'espère que ça t'aidera

64

Ca m'aide vraiment beaucoup. smile
Je sais comme ça fonctionne maintenant.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.