Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : AmigaBasic - introduction (Intuition, son et graphisme)
(Article écrit par Christian Sager et extrait d'A-News (Amiga News) - décembre 1989)
|
|
Je disais précédemment que l'atout c'est la structure. Je vais préciser
pour vous. Quand vous écrivez un programme, il n'est pas rare de voir apparaître sur la ligne de la fenêtre, un
message d'erreur. Vous pouvez utiliser le mode TRACE ou STEP afin de suivre pas à pas votre programme et ainsi
découvrir l'erreur. Ce BASIC est dit structuré car sans numéro de ligne mais aussi, des commandes qui vous
permettent de visualiser correctement votre programme. A côté de la commande normale comme FOR-NEXT on trouve
aussi IF-THEN-ELSE, END-IF et WHILE-WEND.
Une aide inestimable vous est apportée par ON ERROR GOTO pour intercepter et tester les erreurs,
ON BREAK GOSUB qui lors d'une interruption du programme vous permet de faire appel à un sous-programme
de même que les possibilités qu'offre ON TIMER(n) GOSUB toutes les "n" secondes fait appel à un
sous-programme.
Intuition
Autant pour la réponse du bouton gauche de la souris (bouton de choix) que pour celui de droite (bouton
du menu), le BASIC de l'Amiga tient des fonctions à votre disposition pour utiliser l'environnement
d'Intuition. Les commandes MOUSE et MENU correspondent à cette définition. C'est grâce à ces
instructions qu'il vous est possible d'utiliser avec des programmes BASIC cet environnement et
de donner un aspect professionnel.
D'ailleurs, le voici ce listing tout simple et assez explicite. L'AmigaBasic, comme AmigaDOS,
ne fait pas vraiment de différence entre fichiers et périphériques. C'est un réel avantage,
car l'accès est possible avec la même syntaxe pour les entrées-sorties. Le BASIC
a à sa disposition DF0, DF1, DF2, DF3 et RAM (disque virtuel). SER et COM1 pour la sortie
série et PAR, PRT et LPT1 pour la sortie parallèle. Notez que la série a deux noms et la
sortie parallèle en a même trois. La raison c'est que l'AmigaBasic utilise ces sorties indifféremment.
Donc pour la sortie PRT de même que pour LPT1 vous ne pouvez transmettre que vers une imprimante
choisie dans le menu "Preferences".
La raison provient d'une certaine compatibilité face à d'autres dialectes BASIC :
dans son développement du BASIC, Microsoft a utilisé LPT1 pour définir la sortie
imprimante (voir GW-Basic sous MS-DOS). La seule différence entre PRT et LPT1,
c'est que LPT1 imprime immédiatement pendant que PRT utilise un tampon mémoire.
Les raisons sont les mêmes que pour SER et COM1, ce dernier permet de fixer des
paramètres (baud, parité, etc.).
Il existe deux possibilitées pour traiter des fichiers : le séquenciel et l'accès direct.
Après l'ouverture du fichier avec son option ("0" écriture séquentielle, "A" ajouter à un
fichier séquentiel, "I" lecture séquentielle et "R" accès direct en lecture/écriture)
vous pouvez intervenir dans un fichier séquentiel avec WRITE #, PRINT # et INPUT #.
L'équivalent pour l'accès direct c'est GET #, PUT #, RSET et LSET. Mais cette fois-ci je
ne céderais pas à l'envie de vous en dire plus et je ne poursuivrais donc pas ce domaine
d'accès aux fichiers. Cela nous entraînerait bien trop loin.
Avec toutes ces premières instructions, il ne faut pas oublier les principales, à
savoir les commandes de chargement et de sauvegarde des programmes que vous allez élaborer.
Je vous signale qu'à partir du BASIC de l'Amiga on peut accéder à d'autres programmes BASIC
qui ne sont pas dans le même répertoire en utilisant la commande CHDIR (changement de répertoire) et
pour voir quels sont les fichiers disponibles on utilise la commande FILES.
La structure, suite... et fin
Il y a cinq types différents de variables : simple précision, double précision, entier de type court,
entier de type long et les chaînes de variables.
Le son
Arrivons au son. Il paraît que l'Amiga est musicien... Mais avant un autre petit listing pour vous bande de veinards.
Le listing 3 qui accompagne ces explications devrait vous donner une idée des possibilités
quant à la programmation du son sur l'Amiga oui mais... Nous verrons ça quelques lignes plus
loin. Nous avons deux commandes pour faire parler l'Amiga : TRANSLATE et SAY. Avec ça,
vous pouvez faire lire des phrases (en anglais). Avec un petit effort on pourrait s'attacher
à faire parler notre ordinateur en français. Enfin !
Pour faire du son on utilise la commande SOUND. Plutôt que de faire de nombreuses phrases
(à moins que vous ne préféreriez lire du texte) je vous écris, là, tout de suite et même
immédiatement un petit programme.
La commande WAVE que vous pouvez voir dans le programme ci-dessus vous donne la forme de l'onde.
La fonction SOUND permet de synchroniser les différents canaux parce qu'il
y a d'abord une file d'attente. Ce principe de file d'attente est très intéressant et
se trouve surtout mis en évidence sous Pascal, autre langage de programmation structuré.
C'est pourquoi on commence dans un programme de son par la commande SOUND WHITE et
après seulement SOUND pour les différents canaux. Il ne faut toutefois pas oublier que
la commande SOUND utilise beaucoup de place mémoire.
Je reviens donc au principe du programme listing 3. Il fonctionne sans problème mais si
on redémarre avec la commande RUN, il reste accroché sans afficher de fenêtre d'erreur
(on peut l'arrêter avec STOP). Qui me dira pourquoi ?
Réponse de François Autret. Il faut ajouter après "SOUND i%*4,5,100,3" les lignes suivantes :
SOUND 0,1,0,0
SOUND 0,1,0,1
SOUND 0,1,0,2
SOUND 0,1,0,3
|
...et il conseille encore la ligne "ERASE coucou%" après les lignes du graphisme. Explication :
on éteint tout. La fréquence, le volume sont mis a 0, la durée à 1 et ceci pour les différents
canaux ou voix.
Du graphisme et de l'animation
C'est dans les fonctions graphiques que l'on voit la véritable puissance du BASIC
de l'Amiga. Les instructions sont simples et confortables à utiliser et l'on peut
fabriquer des graphiques complexes. Dans le listing 3, non seulement vous avez pu
voir la programmation simple de son mais aussi la représentation graphique de la forme
d'onde. La commande LINE est plus importante qu'il n'y paraît. Elle peut tracer des
lignes mais aussi des quadrilatères. A côté de cela nous avons PSET et PRESET qui
permettent de placer un point, pour faire des élipses CIRCLE pour dessiner AREA
et pour mettre en couleur des formes fermées AREAFILL. PAINT rempli une surface
avec la couleur de votre choix, tandis que PATTERN décide des motifs à utiliser
pour cette mise en couleur.
Quatre couleurs sont installées et si l'on veut utiliser une palette plus importante,
il faut ouvrir un nouvel écran avec la commande SCREEN où les paramètres qui suivent
représentent le mode et le nombre de plans de bits (de un à cinq). Le nombre de couleur
se calcule par deux puissances nombre de plans de bits ; vous pouvez donc sur un écran
avoir au maximum trente deux couleurs. Pour le choix de ces couleurs, vous utilisez
la commande PALETTE. Les numéros de couleur vont de zéro à trente et un et sont
mis au point avec des valeurs décimales comprises entre zéro et un pour RGB (Rouge Vert Bleu).
Les commandes GET et PUT sont d'une aide remarquable car elles lisent les représentations
graphiques de l'écran en les mettant dans un seul champs. Le défaut principal de l'AmigaBasic
c'est qu'il ne reconnaît pas les images en IFF, car il avait été développé avant ce standard.
Le listing 4 vous montre la simplicité avec laquelle on confectionne des images. Il est certain
que l'on s'ennuie très vite à voir une image fixe alors il y a les commandes OBJECT qui
anime l'écran. Il y a deux sortes d'objets : les BOB et les sprites. La différence entre
les deux est le nombre de couleur, la taille maximale et la rapidité avec laquelle ils peuvent
se déplacer. Comme vous trouvez un programme qui s'appele OBJEDITE sur votre disquette, on
ne se pose pas le problème du choix des deux.
Sous-programmes et bibliothèques
L'Amiga connaît trois sortes de sous-programmes : les fonctions représentées par DEF FN
et appelée par FN. Une fonction ne peut comporter qu'un calcul et qu'une ligne unique.
Le plus intéressant maintenant c'est les sous-routines. La sous-routine est formée d'un
label et se termine par RETURN. Toutes les variables utilisées dans les sous-routines
sont globales, c'est-à-dire que les variables sont reconnues autant que par le sous-programme
que par le programme principale. On appele la sous-routine avec la commande GOSUB.
C'est là le plus grand intérêt du BASIC de l'Amiga plutôt qu'un long discours, un exemple !
Admettons que dans le programme principal on affecte à une variable "x" la valeur 1 ;
en même temps, nous avons dans un vrai sous-programme une variable x = 2 ; si nous demandons
au programme principal PRINT x, nous avons la valeur 1, par contre, dans le sous-programme
PRINT x sera égal à 2. Résultat : nous pouvons chaîner des programmes venant de différents
horizons. Et nous voilà dans les bibliothèques, car en réalité les bibliothèques
ne sont qu'une collection de sous-programmes.
Les sous-programmes ne doivent pas être obligatoirement écrits en BASIC mais peuvent aussi
utiliser le langage machine. Vous avez même la possibilité d'appeler les routines système,
il est évident que vous devez connaître les paramètres qu'elles utilisent. Un inconvénient
du système d'exploitation, c'est qu'il est écrit en C, et que le C utilise une autre méthode
pour transmettre des paramètres. Mais il existe un programme qui s'appele "Convertfd"
sur la disquette du BASIC. Il permet une conversion des bibliothèques
en bibliothèques BASIC avec une extension ".bmap".
Et en conclusion
L'AmigaBasic peut être un langage renversant ! Mais les spécialistes ne voudront pas passer
leur temps à résoudre des problèmes BASIC vu l'extrême lenteur de l'interpréteur.
Il est évident qu'à ce niveau il est plus intéressant de faire du langage machine ou d'utiliser
un compilateur. Il existe un compilateur pour le BASIC de l'Amiga.
Face à tous les langages, surtout ceux que je connais, je retiendrais le BASIC
comme une méthode, une approche simple, qui convient le plus souvent à des
personnes non familiarisées avec un raisonnement, une forme de penser que véhicule
l'informatique. Le BASIC de l'Amiga me rappelle un autre langage du nom de Pascal
qui utilise aussi des structures.
|