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