★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
4/4.5.2 - Définition de routines sonores | Coding Classeurs Weka |
4/4.5 - Utilisation du Turbo-Pascal4/4.5.2 Définition de routines sonores Contrairement au Turbo-Pascal implanté sur les IBM PC, la version Amstrad ne contient pas de procédure sonore. Nous allons pallier ce problème en réalisant : — une procédure d'émission de Beep fixe. Cette procédure servira par exemple à indiquer que l'utilisateur a fait une action incorrecte... — une procédure d'émission de Beep paramétrable. Les fréquence et puissance du son émis pourront être choisies à volonté par l'utilisateur. Emission d'un Beep de fréquence fixe Pour réaliser un tel programme, intégrons un court programme écrit en Assembleur dans le programme Pascal en utilisant l'ordre « InLine ». Structure du programme Assembleur Une macro instruction du Firmware des CPC permet de programmer directement les registres du PSG (AY3-8912). Il s'agit de l'instruction MC SOUND REGISTER dont le point d'entrée se trouve en #BD34. (Voir Partie 4, Chap. 2.7). Pour ce qui nous concerne, il suffit de savoir que : — le numéro du registre du PSG à accéder doit être placé dans le registre A avant l'appel ; Un appel à MC SOUND REGISTER se fera donc de la façon suivante : LD A,NR ; No registre à accéder Pour réaliser un Beep. nous utilisons les registres PSG suivants : — registres 0 et 1 pour définir la fréquence du Beep ; Le Beep est émis pendant une durée qui correspond au temps nécessaire pour faire oasser le registre HL de #FFFF à #0000 en opérant une décrémentation unitaire à chaque pas. Le Beep est arrêté en dévalidant le canal A grâce au registre 7 du PSG. Le programme Assembleur d'émission d'un Beep est donc le suivant : Le programme Pascal d'émission du Beep consiste à incorporer les données hexadécimales correspondant au programme Assembleur précédent dans une procédure. Remarquez que le code #C9 correspondant au RET de fin de routine n'a pas été reporté dans le programme Pascal. En effet, le « end; » de la procédure a le même effet. Emission d'un Beep de fréquence et intensité variables Le principe est le même, à ceci près que la fréquence doit être placée dans les variables FREQH et FREQL qui correspondent respectivement au poids fort et au poids faible de la fréquence à émettre. Il convient également de placer la valeur du volume dans la variable Vol juste avant l'appel. Un exemple est donné dans le programme suivant :
|