CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/4.5.2 - Définition de routines sonoresCoding Classeurs Weka
4/4.5 - Utilisation du Turbo-Pascal

4/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 ;
— la valeur à envoyer dans ce registre doit être placée dans le registre C avant l'appel.

Un appel à MC SOUND REGISTER se fera donc de la façon suivante :

LD A,NR ; No registre à accéder
LD C,VAL ; Valeur à envoyer dans ce registre
CALL SOUND ; Appel à MC SOUND REGISTER

Pour réaliser un Beep. nous utilisons les registres PSG suivants :

— registres 0 et 1 pour définir la fréquence du Beep ;
— registre 8 pour définir le volume du Beep ;
— registre 7 pour valider le canal d'émission.

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 :

★ NOTE: 8e Complément

Page précédente : 4/4.5.1 - Optimisation d'écriture dans un fichier texte
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 547 millisecondes et consultée 579 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.