Sponsors

FacebookTwitterGoogle Bookmarks

AmigaDos me pousse à traduire DOS comme système d’exploitation basé sur disque. Autre exemple de cette évolution, le BasicA gravé dans les mémoires mortes des PC d’IBM, a été avantageusement remplacé par le programme GW-Basic des compatibles, qui n’est chargé que lorsque l’utilisateur s’en sert. Il ne faut pas croire que ce changement a été uniquement le produit de la recherche d’un meilleur système, c’est plutôt le fruit d’un raisonnement économique : les routines de gestion de la machine, de plus en plus nombreuses, de plus en plus complexes, de plus en plus difficiles à réussir, ont migrées des mémoires mortes trop coûteuses, vers les mémoires vives, pour l’exécution d’un noyau et les disques (flexibles ou rigides) pour le stockage à un coût minime. La flexibilité actuelle et prévisible de l’AmigaDos, pourraît entraîner un changement dans la signification de DOS, qui deviendrait le système d’exploitation bâti autour et basé sur des entités-périphériques (« Devices »). L’AmigaDos peut être décomposé en trois parties : il gère, en concurrence avec la bibliothèque EXEC, les processus (tâches ou programmes ayant le droit de faire des entrées-sorties), il organise un système de gestion des fichiers sur des périphériques et il est doté d’une interface avec l’utilisateur, le CLI. Je vais m’attacher à décrire les deux dernières fonctions, car parler des processus dépasserait le cadre de cet article. AmigaDos parle aux périphériques d’entrées-sorties de manière abstraite, car il ne traite pas directement les données des processeurs d’entrées-sorties (PAULA et 8520) ; il leur parle au travers des gestionnaires spécialisés (console.device, track- disk.device, serial.device, parallel.device, ramdisk.device, hddisk.device) qui réalisent l’interface de bas niveau. Par l’intermédiaire de paquets contenant des messages, des commandes ou des données, il peut stocker ou récupérer l’information. Ce sont les programmes des gestionnaires de périphériques, qui vont réagir de manière appropriée aux paquets qui leur sont transmis (faites le petit test suivant pour vous en convaincre, sous CLI ou SHELL, tapez la commande suivante “DIR SER et étudiez le résultat). L’exposé des caractéristiques des paquets, ou de la gestion des fichiers, répertoires, volumes et autres entités, appartient à la programmation de l’AmigaDos

Click image to download PDF

AMIGA NEWS TECH numero 01 (05-1989)

Document sans nom Quelques notes sur les SHELL
u. des principaux attraits de Pamiga lors de sa présentation, réside dans son interface graphique dénommée le Workbench (qui signifie Atelier dans notre dialecte). Cette interface est construite, grâce aux routines de gestion de l’affichage contenues dans la bibliothèque d’intuition. Cependant, dans les versions actuelles, l’utilisateur est parfois limité dans la configuration et l’exploitation de sa machine. Certains programmes tels CliMate, DirUtil, Qua- terback, FastBack permettent de réaliser aisément des actions diverses sur les unités de stockage : disquettes et disques durs. Cependant, tôt ou tard, l’utilisateur qui désire paramétrer, ou mieux utiliser son ordinateur, devra se pencher sur les mystères de l’AmigaDos. Avant d’étudier les CHELL, il importe d’exposer quelques faits généraux. L’AmigaDos est une partie du système d’exploitation, ensemble de toutes les routines systèmes organisant le fonctionnement de l’ordinateur ; il traite plus particulièrement des entrées-sorties avec les périphériques. Les historiens de l’informatique (si, si, il y en a déjà) s’accordent sur la signification de OS, qui siginifie fort simplement « Operating System » (système d’exploitation en traduction simultanée), mais se disputent sur le sens du D, qui est l’initiale de « Disk » ; en effet, DOS peut se traduire indifféremment comme système d’exploitation de disquettes (avec comme objectif l’organisation des données sur les disquettes) ou système d’exploitation basé sur disquette. Le fait qu’un ordinateur pouvait traiter des disquettes, était un argument commercial « béton » à l’époque des Altair 80 ou ZX80, mais la réelle révolution de la micro a débuté avec le CPM, dont les commandes n’étaient pas inscrites dans des mémoires mortes, mais chargées depuis la disquette (et donc modifiables). L’importance du passage d’un moniteur d’exploitation figé (façon C64, avec ses commandes LLOAD) à un système évolutif de type CPM, Ms-Dos, AmigaDos me pousse à traduire DOS comme système d’exploitation basé sur disque. Autre exemple de cette évolution, le BasicA gravé dans les mémoires mortes des PC d’IBM, a été avantageusement remplacé par le programme GW-Basic des compatibles, qui n’est chargé que lorsque l’utilisateur s’en sert. Il ne faut pas croire que ce changement a été uniquement le produit de la recherche d’un meilleur système, c’est plutôt le fruit d’un raisonnement économique : les routines de gestion de la machine, de plus en plus nombreuses, de plus en plus complexes, de plus en plus difficiles à réussir, ont migrées des mémoires mortes trop coûteuses, vers les mémoires vives, pour l’exécution d’un noyau et les disques (flexibles ou rigides) pour le stockage à un coût minime. La flexibilité actuelle et prévisible de l’AmigaDos, pourraît entraîner un changement dans la signification de DOS, qui deviendrait le système d’exploitation bâti autour et basé sur des entités-périphériques (« Devices »). L’AmigaDos peut être décomposé en trois parties : il gère, en concurrence avec la bibliothèque EXEC, les processus (tâches ou programmes ayant le droit de faire des entrées-sorties), il organise un système de gestion des fichiers sur des périphériques et il est doté d’une interface avec l’utilisateur, le CLI. Je vais m’attacher à décrire les deux dernières fonctions, car parler des processus dépasserait le cadre de cet article. AmigaDos parle aux périphériques d’entrées-sorties de manière abstraite, car il ne traite pas directement les données des processeurs d’entrées-sorties (PAULA et 8520) ; il leur parle au travers des gestionnaires spécialisés (console.device, track- disk.device, serial.device, parallel.device, ramdisk.device, hddisk.device) qui réalisent l’interface de bas niveau. Par l’intermédiaire de paquets contenant des messages, des commandes ou des données, il peut stocker ou récupérer l’information. Ce sont les programmes des gestionnaires de périphériques, qui vont réagir de manière appropriée aux paquets qui leur sont transmis (faites le petit test suivant pour vous en convaincre, sous CLI ou SHELL, tapez la commande suivante “DIR SER et étudiez le résultat). L’exposé des caractéristiques des paquets, ou de la gestion des fichiers, répertoires, volumes et autres entités, appartient à la programmation de l’AmigaDos, ed d’EXEC et l’utilisateur normal n’a pas à s’en soucier. La partie émergée de l’AmigaDos, visible par l’utilisateur, c’est la structure des données sur les disques et l’interface permettant de la manipuler. Cette interface peut être simple, c’est le cas du CLI (Command Line Interface), ou elle peut être « intelligente» en apportant des fonctionnalités facilitant son usage, comme le SHELL du Workbench 1.3 ou le SHELL de Matt Dillon. Un «SHELL» est une couche supplémentaire (d’où son nom), c’est une sorte d’interpréteur, qui rend plus facile l’exploitation de la machine. Dans le cas du Workbench 1.3, le fichier de démarrage va, par l’intémédaire de la commande « RESIDENT », substituer de manière transparente, le SHELL au CLI ; cela a tant d’avantages, que je ne détaillerai que le SHELL du 1.3. Une caractéristique essentielle d’un SHELL (à cet égard, le CLI appartient à la famille des SHELL), est son aptitude à être programmé. En effet, nombreuses sont les tâches routinières en informatique, il faut par exemple configurer la machine par le biais d’un fichier de démarrage (comme l’autoexec.bat ou le startup-sequence), ou au contraire organiser des procédures d’exploitation pour enchaîner les programmes utilisateurs, il est à l’évidence plus économique d’enchaîner de petits programmes bien maîtrisés, grâce à un interpréteur de commandes, que de programmer en langage purement informatique, chaque nouvelle tâche. Si ces petits programmes fournissent un code de retour qui permet de juger de leur bonne exécution, on peut détecter les anomalies et procéder à d’autres procédures pour les corriger. Le CLI avait déjà des fichiers scripts contenant des commandes AmigaDos à exécuter et non du code directement exécutable. Le SHELL conserve cette possibilité de programmation et l’améliore de nombreuses manières. Les commandes de programmation IF ELSE ENDIF sont restées quasi-identiques, mais permettent néanmoins des comparaisons numériques. Leur usage permet d’exécuter conditionnellement des commandes, notamment en fonction de l’existence de certains fichiers, ou en cas d’incident. La commande SKIP, qui peut maintenant renvoyer l’exécution à des labels définis dans les lignes précédentes, est une sorte de GOTO, elle transfère le contrôle à une autre ligne. C’est surtout l’apparition de nouvelles commandes qui transforme la programmation SHELL. La commande ASK pose une question et renvoie un code de retour, en fonction de la réponse (pas de réponse ou N, c’est 0 ; une réponse positive Y, c’est 5, le code d’erreur bénigne), elle permet de construire des procédures interactives, dont l’utilisateur peut orienter le déroulement. La commande EVAL permet d’effectuer des opérations arithmétiques simples, mais amplement suffisantes pour réaliser des boucles. Les commandes complémentaires SETENV et GETENV permettent de définir et de retrouver des paramètres généraux, sous la forme d’une chaîne de caractères conservée dans un fichier du répertoire système ENV : (voir article précédent sur les noms virtuels). Si SETENV est plutôt conçu pour être utilisé dans des fichiers de configurations, et GETENV conçu pour être appelé par des programmés, ils peuvent néanmoins être insérés dans des fichiers scripts pour prendre en compte les réponses de l’utilisateur. Voici un court exemple sans grande utilité, mettant en pratique ces commandes : LAB début ASK “une opération (y n) ?” IF warn ECHO “première valeur (retour pour abandonner)” NOLINE SETENV >nil : vah ? IF VAL1 $ val1 EQ 0 SKIP fin ELSE ECHO “opérande” NOLINE SETENV >nil : op ? ECHO “deuxième valeur” NOLINE SETENV >nil : val2 ? ECHO >env:temp NOLINE JOIN env :val1 env :temp env :op env :temp env :val2 as env :complet EVAL env :complet >nil : to env :temp ? ECHO “le résultat est” NOLINE GETENV temp SKIP début back ENDIF ENDIF LAB fin ECHO “A Bientôt” Ces lignes sont à mettre dans un fichier de script. Vous pouvez utiliser pour ce faire, l’éditeur ED du Workbench en tapant dans une fenêtre SHELL la ligne suivante : “ED S :addition”. Pour exécuter cet exemple, toujours sous SHELL, il vous faudra taper “EXECUTE S :addi- tion”, car la commande EXECUTE est nécessaire pour interpréter l’ensemble des commandes contenues dans le fichier script (qui est, par convention, toujours contenu dans le répertoire S :). Mais, imaginons que vous souhaitiez exécuter cet ensemble de commandes extrêmement souvent. Il serait regrettable de devoir toujours taper toutes ces lettres. Nous pouvons choisir bien sûr des noms plus courts, par exemple en recopiant les fichiers grâce aux commandes CLI suivantes : “COPY C :EXE- CUTE C :X” et “COPY S :ADDITION S :A”, auquel cas, il suffirait de faire “X A” pour pouvoir se livrer à quelques calculs. Cependant, si vous donnez libre cours à votre créativité, vous serez vite en manque de noms courts et facile à retenir. Le SHELL du 1.3 propose deux moyens de vous économiser de la frappe superflue. Tout d’abord, les fichiers de scripts peuvent être marqués d’un drapeau indicateur “S” grâce à la commande PROTECT, auquel cas, leur nom seul permet de les exécuter, car la commande EXECUTE est implicite. Pour utiliser notre programme d’exemple de manière simple, nous utilisons une seule fois la commande “PROTECT S :ADDITION + S’’ pour le rendre exécutable et il suffit de taper “ADDITION” pour calculer. Pour éviter de donner le nom complet d’une commande ou ses paramètres, nous pouvons recourir à une astuce supplémentaire en définissant des synonymes, par l’intermédiaire de la commande ALIAS. En tapant “ALIAS A EXECUTE S :ADDITION”, on établit une correspondance entre le premier paramètre “A” et le reste de la ligne, cela nous permet en conséquence de calculer grâce à cette nouvelle commande “A”. Attention, le SHELL ne peut pas à la fois assurer la substitution d’une commande à un synonyme, et l’éxecution implicite d’un fichier script marqué. En conséquence “ALIAS A S :ADDITION” provoquera lors de l’appel de “A”, un message d’erreur. La pratique des synonymes permise par la commande ALIAS, ne serait pas aussi pratique si on devait à chaque démarrage, ou à chaque SHELL, les spécifier. Le fichier S:SHELL- Startup contient la liste des commandes à exécuter lors de l’ouverture d’un interpréteur SHELL. En voici le contenu : PROMPT « %N. %S> » ;affiche le numéro de l’interpréteur et le repértoire courant ALIAS xcopy copy § clone ;xcopy devient le Devenir membre, c’est tout d’abord:
- un journal bimestriel de 32 pages sur toute l’actualité Amiga et même plus (banc d’essai, bidouilles inédites, etc...)
- une rubrique télématique sur minitel où vous pourrez discuter et poser vos questions.
- une assistance téléphonique partout en France grâce à nos représentants FRAUG.
- des réductions faites par un nombre toujours grandissant de revendeurs Commodore. Devenir membre, c’est aussi des avantages:
- un service de duplication de domaine public (Fish, Amicus, Advantage, Démos, etc...) sur support DF DD: directement dans votre boîte aux lettres, la disquette 15F port et support compris.
- la série des disquettes Gourou à 30F Punité port et support compris pour aider les auteurs du D.P français.
- un service digitalisation images d’excellente qualité pour un prix attractif. Devenir membre, c’est enfin appartenir à un club totalement indépendant qui est le soutien actif de cette étonnante machine: Vamiga. Pour adhérer, la cotisation annuelle est de 200F (chèque ou mandat à l’ordre de FRAUG). FR.A.U.G BP 64 64202 BIARRITZ CEDEX. Tél: 59 41 17 91. Télécopie: 59 63 75 25 NE RESTEZ PAS DANS L’OMBRE, ADHEREZ VOUS AUSSI AU CLUB NATIONAL AMIGA. Synome de “COPY CLONE” qui permet la copie avec la sauvegarde des drapeaux indicateurs ALIAS endshell endcli ;endshelf est équivalent à endcli ALIAS pro execute s :spat protect § ;la commande pro est la commande protect avec des spécifications étendues de fichiers grâce à l’emploi du script s :spat ALIAS sdate execute s :spat setdate § ; de manière identique, la commande sdate est une commande setdate pour modifier la date de plusieurs fichiers ALIAS ren execute s :dpat rename § ;idem, le script dpat permet à ren de déplacer plusieurs fichiers vers un répertoire unique ALIAS clear echo “*E0;0H*E J” ; l’emploi des caractères de contrôle permet d’associer à l’ordre clear l’effacement du contenu de la fenêtre ALIAS reverse echo “*E 0 ;0H*E 41 ;30m*E J” ;idem, mais un effet plus raffiné ALIAS normal echo “*E 0 ;0H*E 40 ;31m*E J” ;idem, mais rétablit l’affichage habituel Voici les lignes supplémentaires rajoutées au fichier S :SHELL-Startup de mon Amiga. Elles ont pour but de me simplifier son utilisation : ALIAS del delete ; trois lettres, c’est bien ALIAS I list § quick ;une lettre, c’est mieux ALIAS x execute ;pour executer les s c r i p t s plus rapidement ALIAS xableprotect § + s ;pour les rendre exécutable ALIAS md makedir ;makedir est trop long à taper ALIAS mkdir makedir ;je préféré les autres syntaxes ALIAS exit endcli ;au cas où ALIAS ctp change- taskpri ;pour jongler avec les tâches ;un peu de fun maintenant, même si ca rallonge le temps d’ouverture du SHELL ECHO ‘‘qui etes-vous, qui me derangez dans mon sommeil ?” SETENV >nil : utilisateur? IF $ utilisateur EQ ‘‘cecil” ;remplacer ici votre prénom REVERSE ECHO ‘‘bonjour maître *E42;33m” NOLINE GETENV utilisateur ECHO ‘‘*E 40 ;31m” ENDIF L’utilisation des scripts est très intéressante pour optimiser l’utilisation de la machine, mais il est un domaine que le SHELL du 1.3 a énormément amélioré par rapport aux versions précédentes, c’est la rapidité d’interaction avec l’utilisateur. Souvenez-vous que je vous ai dit que l’AmigaDos était un système d’exploitation basé sur disque, dans le sens où chaque commande était contenue dans un fichier chargé et exécuté à la demande. Ce système très économique, (l’Amiga n’a besoin que de 256 K-octets de mémoire vive pour fonctionner en multitâches) est lent en contrepartie. La version 1.3 a apporté une commande RESIDENT fiable (contrairement à la version 1.2). Cette commande permet de charger une fois pour toute le code exécutable d’une commande AmigaDos en mémoire, de telle manière que tous les appels (mêmes simultanés) l’utilisent. Cela occasionne un gain en rapidité, (la commande est pré-chargée) et en confort (adieu, les messages “Please insert volume Workbench in any drive”). Pour que les commandes chargées par RESIDENT fonctionnent correctement, il est impératif qu’elles soient programmées de manière adéquate, c’est-à-dire ré-entrante et réexécutable. Comme il est difficile à un utilisateur moyen de connaître ce genre de caractéristiques, un drapeau indicateur “P” a été choisi pour indiquer la ‘‘pureté” du programme. Pour satisfaire votre curiosité, faites donc ‘‘LIST C et notez les commandes pures. Etant donné que les configurations et les usages diffèrent énormément entre les ordinateurs, peu de commandes sont chargées en résident, lors d’une configuration normale (pour rappel LIST, CD, et EXECUTE, voir l’article du mois précédent sur les fichiers de démarrage). J’ai constaté que le fichier aùxiliaire de configuration S :Startup II, pouvait avec bonheur accueillir les lignes suivantes : “RESIDENT C :DIR” “RESIDENT C :ECHO” “RESIDENT C :COPY’’ “RESIDENT C :IF” “RESIDENT C :ELSE” “RESIDENT C :ENDIF” Mais libre à vous, si votre mémoire vive le permet, de charger en résident toutes vos commandes préférées. B. de MIL TRUCS ET ASTUCES POUR DESIGN 3D ans le monde des logiciels en 3D sur AMIGA, DESIGN 3D occupe une place à part. Il se présente comme un modeleur particulièrement simple d’emploi et pourtant très puissant. Sans offrir actuellement les qualités de rendu d’un SCULPT 3D, il vous permettra de créer des objets 3D avec une incroyable rapidité. Ceci sans avoir, à utiliser des formes primitives ou des contraintes au niveau de la forme des polygones. Edité conjointement par INFOGRAMES et GOLD DISK, DESIGN 3D se distingue par une très grande ouverture vers différentes applications de l’AMIGA, de la PAO à l’image de synthèse. Nous allons voir ici quelques astuces qui vous permettrons d’exploiter au mieux ce logiciel. DESIGN 3D vous permet de créer des facettes de n’importe quelle forme pouvant contenir jusqu’à deux cent points. Cependant, si vous désirez réutiliser vos objets dans SCULPT 3D par l’intermédiaire du programme INTERCHANGE ,il vaut mieux prendre garde de ne pas créer des facettes de plus de quatre points : vous risqueriez de bloquer le programme de transfert. Pour la réutilisation dans VIDEOS- CAPE ,il n’y a pas de problème : toutes les formes passent. A propos de VIDEOSCAPE 3D et MODELER 3D, DESIGN 3D en accepte les objets... à la seule condition qu’ils aient été sauvegardés dans le format texte. Toujours au stade de quelques petites astuces sur les facettes : si vous voulez rendre un segment invisible, par exemple pour créer un trou dans une facette sans pour autant voir un trait de liaison, dessinez votre facette normalement, puis sélectionnez l’icône « manipulation de points », la rubrique « EDITER » et ensuite la facette que vous venez de créer. Pour que le segment n’apparaisse pas, entrez pour les points situés de chaque côté de celui-ci la valeur 0 dans la cellule couleur. parfois le rendu en faces cachées donne des résultats quelque peu erronnés... Vérifiez dans un premier temps que vous n’avez pas trois points alignés sur les trois premiers points d’une facette, si c’est le cas déplacez légèrement un des points à l’aide de la fonction de déplacement de points. Vérifiez ensuite la position de vos objets. DESIGN 3D calcule les intersections entre les objets, mais il est tout de même préfér able d’éviter au maximum ces intersections qui sont parfois cause d’erreurs. Vous avez à votre disposition 2 modes d’élimination des faces cachées RAPIDE et NORMAL dans le menu FACES CACHEES. N’ayez pas peur d’employer les deux modes pour avoir le meilleur résultat. il est possible de modifier l’état d’une facette en transcrivant un objet au format DESIGN 3D en un fichier ASCII éditable par l’intermédiaire de la fonction DESIGN-ASC (lancée à partir du
CLI) . Dans le fichier ASCII ainsi généré , vous verrez apparaître dans la rubrique COMPOSITION DES FACETTES la sous rubrique ETAT. Actuellement DESIGN 3D reconnaît plusieurs états. Ce sont : 0 : facette normale. 1 : facette ayant été connectée. 2 : facette invisible. 101 : facette plan de coupe. Il vous suffit de modifier l’état d’une facette dans ce fichier, puis de le retranscrire à l’aide de l’utilitaire ASC-DESIGN pour effectuer la transformation. Les fichiers ASCII peuvent également être utilisés pour effectuer d’autre modification comme la détection des facettes comportant plus de quatre points. Une fois ces facettes repérées, il vous suffit de positionner l’état de ces facettes à 2, pour qu’elles soient « oublier » lors de la sauvegarde au format Videoscape. Autre application des fichiers ASCII ; la réutilisation des objets crées avec DESIGN 3D dans vos propres programmes. Grâce à ces fichiers il devient très simple de créer des programmes en BASIC ou en C pouvant charger des objets venant de DESIGN 3D. les fontes : un des attraits de DESIGN 3D est son éditeur de fontes vectorielles 3D. Chaque caractère peut contenir jusqu’à huit polygones et trente-deux points au maximum. Le format d’un fichier de fontes 3D est constitué pour chacune des 128 fontes de la structure suivante : é UBYTE cadreX ; I* dimension en X * UBYTE cadreY ; * dimension en Y * UBYTE pts 8§ ; I* position du premier point de chaque polygone dans le tableau suivant * UBYTE X 32§ ; * position du point en X* UBYTE Y 32§ ; * position du point en Y* au niveau du confort d’utilisation ,la touche « ESC » permet souvent de vous sortir d’un mauvais pas. il est également inutile d’attendre que les quatre écrans soient entièrement « rafraîchis » avant de poursuivre un travail ; le fait de cliquer une icône arrête la procédure de réaffichage. la touche «SHIFT» permet de manipuler ensemble plusieurs objets. Pour ce faire, appuyez simplement sur la touche.« SHIFT » lors de la sélection des objets. pour créer sa propre palette de couleur... sauvegardez un écran vide avec la palette de votre choix, puis rechargez la à l’aide de la rubrique CHARGER OBJET. pour créer un objet ou une facette miroir : sélectionnez les rubriques EDITER dans les fonctions de manipulation et entrez une valeur négative dans l’une des cellules de dimension. une des fonctions intéressantes de DESIGN 3D est la sauvegarde au format d’AEGIS DRAW. Elle vous permettra de récupérer vos dessins sous forme vectorielle dans PROFESSIONAL PAGE ou AEGIS DRAW. Si vous voulez créer un titre en 3D, sauvegardez le par l’intermédiaire de la fonction SAUVER DESSIN SOLIDE. Elle vous permettra de sauvegarder la vue en perspective après élimination des faces cachées. Une fois dans PROFESSIONAL PAGE,formez une boite aux dimensions de votre titre et sélectionnez IMPORT STRUCTU- RED DRAWING qui chargera directement le titre dans votre boite. Pour créer un dessin avec des cotations, sélectionnez à partir de DESIGN 3D SAUVER I DESSIN FILAIRE. Cela permettra de sauver les quatre vues, puis utilisez AEGIS DRAW ou XCAD pour effectuer les cotations. ZARMA PHONG Bonne nouvelle, nous allons enfin clore la première phase de notre intro ! Puis, nous allons approfondir les introductions du Copper, et ce, dans un cadre dépassant celui de notre routine, ainsi nous aurons été exhaustifs. Nous allons enfin aborder le Blitter qui est une des bases de la phase 2 de la «Tube- intro ». TUBE INTRO DE LITTLE ZEUS PHASE 1 DERNIÈRE PARTIE tous ceux qui nous prennent en cours de route, c’est-à-dire aux nouveaux adeptes de Commodore Revue, et nous savons qu’ils sont nombreux, nous rappelons brièvement ce que nous avions déjà créé dans la rubrique «Applications» au moyen de la «Tube-intro». Il s’agit d'un magnifique logo de votre choix qui, traversé par mille couleurs, subit une transformation simultanément verticale et horizontale. D’ailleurs nous allons achever cette seconde transformation ce numéro-ci. Sachez chers néophytes, que chaque mois, nous dévoilerons une nouvelle routine, entièrement expliquée, de la «Tube-intro». Chacune est en corrélation avec les autres, mais elle est aussi utilisable indépendamment de celles-ci ; pour de plus amples détails à ce sujet, n’hésitez pas à commander les trois derniers numéros de Commodore Revue, dans lesquels vous trouverez les premières routines de cette magnifique intro. DÉFORMATION QUAND TU NOUS TIENS... La fois dernière, nous avions tapé les différentes routines permettant d’effectuer les déformations horizontales du logo, sans pour autant les appeler. Nous vous proposons ici une combinaison possible parmi d’autres des routines «one-line», « two-lines » et « empline ». L'effet produit est assez joli, mais rien ne vous empêche de le «corser» encore plus: nous avons mis huit routines EFFn, mais pourquoi ne vous délecteriez-vous pas à en créer d’autres? Nous n’avons pas apporté d'explications détaillées aux routines EFFn, pour la simple et bonne raison que leur fonctionnement est rudimentaire : il s’agit de « jongler » avec « empline », « one-line » et « two-lines », afin de modifier la forme du logo. La phase 1 nous a surtout permis d’illustrer les utilisations du Copper ; néanmoins, pour que le Copper n’ait réellement plus aucun secret pour vous, nous vous proposons un récapitulatif de l’utilisation des différentes instructions du Copper: MOVE (0000000R) (RRRRRRRR) (DDDDDDDD) (DDDDDDDD) R: Registre D: Donnée WAIT (YYYYYYYY) (XXXXXXX1) (BVVVVVVV) (HHHHHHHO) Y : ordonnée attendue par le spot X: abscisse attendue par le spot B : mettre à 0 si le Copper doit attendre le Blitter, à 1 pour le cas contraire. V : masque ordonnée H : masque abscisse. Nous passons sur l’instruction SKIP qui est pratiquement inutile, sauf dans certains cas bien rares. Nous avons jusqu’alors utilisé le Copper via la Graphics.librairy, cependant, il est aussi possible de l'utiliser en adressant directement le hardware. Dans ce dernier cas, voici les registres concernés : $ DFF080 et SDFF082: Ces registres contiennent respectivement l’octet de poids fort et de poids faible de l’adresse de base de la première Copperlist du Copper. Et oui, on est libre de vectoriser le Copper sur deux Copperlists différentes (pas en même temps, bien entendu). $ DFF084 et $ DFF086: idem pour la deuxième Copperlist. En adressant $ DFF088, l’adresse de la première liste est pokée dans le compteur Copper. $ DFF08A: idem pour la seconde liste. SDFF02E: si le bit 0 est activé, le Copper peut accéder aux registres appartenant au Blitter. Avouez que la technique utilisant la Graphics.library (technique vue dans un précédent numéro) est bien plus facile d'utilisation ! (C’est normal, la Graphics.library adresse ces registres à notre place). Mais la culture générale veut que vous connaissiez les deux techniques; d’ailleurs, la seconde semble quelque peu plus rapide, ce qui est aisé à comprendre: nous éliminons les intermédiaires entre l’utilisateur et le hardware. Amorçons maintenant la phase 2 de notre intro en esquissant les possibilités du Blitter (Block Image Transferrer ou en français, appareil permettant le transfert de blocs de données images). Ce coprocesseur offre une multitude de variantes d’exploitation: son rôle primaire est la copie de blocs de données en mémoire et tout particulièrement de données graphiques; votre intuition est juste, cette caractéristique permet, entre autres, les scrollings. Cependant, son utilisation ne se limite pas uniquement à cette tâche, il a la faculté de faire une synthèse de différentes zones mémoires et de placer celle-ci où bon vous semblera (technique utilisée pour les mouvements des personnages). Pour terminer, il exécute toutes ces fonctions bien plus rapidement que le 68000. De la même manière que pour nous simplifier la tâche, nous avons utilisé la Graphics.library en ce qui concernait le Copper, nous allons procéder de même pour le Blitter. Effectivement, une des routines de cette library permet les scrollings, au moyen du Blitter (pour notre intro, nous utiliserons le Blitter uniquement pour les scrollings). Cependant, bien que convenant entièrement à notre intro, cette routine n’est pas très souple: elle permet uniquement les scol- lings s’inscrivant dans des rectangles. Il émerge donc de tout ceci qu’il devient indispensable d’adresser directement le Blitter, dès lors que nous avons besoin de créer des scrollings en sinusoïde par exemple (ce que j’espère vous montrer dans une prochaine intro)... Nous verrons le mode d’emploi de cette routine de la Graphics.library, la prochaine fois. INSERTION DE LA ROUTINE Quant à la routine présente dans ce numéro, elle s’inscrit dans l'emplacement que nous avions prévu à cet effet le mois dernier. Sur ce, je vous quitte et vous donne rendez-vous dans le prochain numéro pour la seconde phase de la «Tube-intro», c’est-à-dire pour le scrolling en tube simultanément vertical et horizontal qui, de plus, offre un nombre incroyable de paramètres (ce scrolling a été reconnu par nombre d’Amiga-Users comme un des plus beaux). Little Zeus LA BAISSE DES PRIX DU MATERIEL COMMODORE ANNONCE EN DERNIERE MINUTE N'APPARAIT PEUT-ETRE PAS DANS CETTE PUBLICITE. RENSEIGNEZ-VOUS ! ENFIN UN SPECIALISTE AU AMIGA ATARI ARCHIMEDES AMSTRAD VICTOR EXCLUSIF !!! Lecteurs externes (DD, NEC) 3" 1 2 1250,00 frs 5" 1 4.....1550,00 frs PROMOS Reprise aux meilleures conditions de votre ST pour tout achat d’un AMIGA LIBRAIRIE
149. 00
199. 00
149. 00
195. 00
295. 00
445. 00
295. 00 OFFRE A2000 .‘......i AMIGA 2000 OCCASIONS Ecran Hte résolution 1084 1ère main des machines, Package Bureautique révisées (Maxipian. Superbase et garanties 6 mois Prowrite ) à des prix défiant toute Sculpt 3D et Animate 3D ïTï:: concurrence 1 an de maintenance sur site appelez nous au 18900,00 ttc
42. 43.22.78. SUPER Domaine Public Amiga Recevez la liste sur disquette par simple envoi d'une enveloppe timbrée. Echange et vente des DP 30 frs le disk, le 5èm® gratuit Bien débuter sur Amiga Le livre du langage machine Trucs et astuces Clés | Rom Kernel Rom Kernel : Libraries & Devices Rom Kernel : Intuition Manual UNITES CENTRALES Amiga 500 UC512Ko NC Amiga 500 UC+écran coul. NC Amiga 2000 UC 1 Mo NC Amiga 2000 UC+écran coul. NC Amiga 2000 UC,écran,disk dur NC Amiga 2000UC,écran,disk dur.XT NC PROMO EDUC AMIGA NC 62 RUE GABRIEL PERI 93200 ST-DENIS S (1) 42-43-22-78 Grand parking à proximité METRO SAINT-DENIS BASILIQUE OUVERT LE DIMANCHE MATIN DE 9H A 12H30 DU LUNDI AU SAMEDI DE 9H A 19H sans interruption = = = Tube-intro de Little Zeus : phase 1, troisième partie = = = éffO: cmp.w l,compt ; accepte 1 fois sur 2 beq oko move.w l,compt rts oko: clr.w compt sub.l 6,point move.l point,aO cmp.w 0,tnt5 beq exit move.w tnt5,d3 move.b l,d5 jsr oneline move.w tnt2,d3 clr..b d5 jsr oneline move.w 120,d3 jsr empline sub.w l,tnt5 add.w l,tnt2 rts effl: jsr twolines move.w 100,d3 jsr'empline add.w l,tnt4 add.w 2,tnt2 sub.w l,tnt3 rts eff6: cmp.w 2,tnt4 beq exit move.w tnt4,d3 jsr empline move.w tnt3,d3 jsr twolines move.w tnt2,d3 jsr oneline sub.w l,tnt2 add.w l,tnt3 sub.w l,tnt4 rts eff8: cmp.w 53,tnt2 beq exit move.w 2,d3 jsr empline move.w tnt3,d3 jsr twolines move.w tnt2,d3 jsr oneline move.w 100,d3 jsr empline add.w 1 ,tnt2 sub.w l,tnt3 rts ef 7: move.w 53,tnt2 clr.w tnt3 cmp.w 53,tnt4 beq exit2 move.w tnt4,d3 jsr empline move.w 53,d3 jsr oneline add.w l,tnt4 rts jsr oneline move.w 100,d3 jsr empline sub.w l,tnt4 rts eff4: cmp.w 5,tnt4 beq exit move.w tnt4,d3 jsr empline move.w tnt3,d3 jsr twolines move.w tnt2,d3 jsr oneline move.w tnt3,d3 jsr twolines sub.w l,tnt4 sub.w 2,tnt2 add.w l,tnt3 rts eff5: cmp.w 26,tnt4 beq exit move.w tnt4,d3 jsr empline move.w tnt3,d3 jsr twolines move.w tnt2,d3 jsr oneline move.w tnt3,d3 cmp.w 52,tnt3 beq exit move.w tnt3,d3 jsr twolines move.w tnt2,d3 jsr oneline move.w 100,d3 jsr empline sub.w l,tnt2 add.w l,tnt3 rts eff2: cmp.w 53,tnt4 beq exit move.w tnt4,d3 jsr empline move.w tnt3,d3 jsr twolines move.w 100,d3 jsr oneline sub.w l,tnt3 add.w l,tnt4 rts eff3: 3015 COMREV VOTRE SERVEUR SUR AMIGA cmp.w 27,tnt4 beq exit2 move.w tnt4,d3 jsr empline move.w 53,d3 WA 0 G 0 E u 0 0 ? Gr iMIfïfl = 51 (PETITE) INITIATION AU GFA BASIC N°2 Nous connaissons maintenant les bases du gaphisme en Gf A, mais un jeu sans musique, ni bruitage n’est pas un vrai jeu. C’est donc tout naturellement que ce deuxième volet de notre petite initiation au GfA, est consacré à la production de sons divers et mélodieux. Rappelons quand même avant de commencer, que cette initiation est destinée à vous aider pour le merveilleux-hyper-méga concours organisé conjointement par votre revue préférée et Micro- Application, concernant la réalisation d'un jeu en GfA-Basic. Cela me semble assez important, vu que je n’ai pas du tout la prétention de vous apprendre à composer une musique dans ce langage, chose dont je serais par ailleurs bien incapable. Il y a des professionnels pour celà et ce n'est pas Jean Baud- lot, ni mon copain Popol qui me contrediront... CRAC, ZIM, BOUM, HUUUE ! GfA-Basic ne se distingue pas réellement par la quantité de ses instructions sonores ; au nombre de deux uniquement, elles permettent pourtant de réaliser quelques bruitages sympathiques. SOUND freq, dur, vol, can : il s’agit-là de l’instruction la plus primitive. ELIe permet de générer un son de fréquence « freq » et de durée « dur », avec le volume « vol » sur le canal « can ». Ces deux derniers paramètres, « vol » et « can », sont optionnels. La fréquence d’un son exprime sa hauteur. Plus la fréquence est élevée, plus le son est aigu. Voici un petit tableau qui vous donnera une idée des fréquences disponibles : Note Fréq. Do 261 Ré 293 Mi 329 Fa 349 Sol 392 La 440 Si 493 Ceux qui possèdent quelques connaissances en musique, auront reconnu le La du diapason, à 440 Hz. Maintenant, pour obtenir les octaves inférieures et supérieures, il suffit de diviser (respectivement multiplier) ces valeurs par deux. Par exemple : SOUND 440,1000 Joue le LA du diapason SOUND 880,1000 Le même, une octave au- dessus SOUND 220,1000 Encore le même, une octave en-dessous Le paramètre « dur » est un nombre sur 16 bits (0 à 65535), indiquant combien de fois la courbe sinusoïdale du son sera répétée. Une valeur de 1000 comme dans les exemples ci- dessus, produit un son assez court. « Vol » permet de faire varier le volume du son crée. Il s’agit d’une valeur sur huit bits (0 à 255). Si ce paramètre est omis, GfA-Basic jouera le son avec un volume moyen (127). « Can » permet, quant à lui, de décider sur quel canal le son devra être joué. L’Amiga possède quatre canaux sonores, numérotés de 0 à 3 (la stéréo autorise des effets assez intéressants). Les canaux 0 et 3 correspondent au haut-parleur gauche, tandis que les canaux 1 et 2 correspondent au droit. Voilà pour Sound. L’instruction suivante, Wave, permet de modifier la courbe du son, c’est-à-dire son enveloppe. Voyons tout celà plus en détails. WAVE can, courbe() : comme précédemment, « can » permet de définir sur quel canal sonore on va agir. En effet, il est impossible de donner une courbe particulière à un son donné, mais seulement à une voix donnée. De fait, si l’on veut par exemple émettre d’abord un son avec un effet de vibrato, puis sur la même voix, en émettre un second, avec cette fois-ci un effet d’arpeggio, il sera obligatoire, entre les deux sons, de redéfinir la courbe de cette voix. Le paramètre « courbe() » est un tableau d'entiers, qui contient donc la définition de la courbe du son. La courbe standard est une sinusoïde, que l’on peut par ailleurs obtenir grâce à la fonction SIN(). Une telle courbe fait en sorte que le son monte lentement et régulièrement de sa fréquence minimale (0 !& à sa fréquence maximale (le paramètre « freq » de SOUND), s’y attarde un peu, puis redescende jusqu'à sa fréquence minimale pour ensuite remonter, autant de fois que le permet le paramètre « dur » de SOUND. Mais rien n’oblige à ce que le son soit sinusoïdal ; une parabole est, par exemple, tout-à-fait envisageable (le son monte plus ou moins rapidement jusqu’à son apogée et ne descend pas), ou n’importe quelle autre courbe. En règle générale, les fonctions mathématiques (sinus donc, mais aussi cosinus, puissance, etc.) donnent des courbes aux effets surprenants. Nous sommes parfaitement conscients qu’écrire une mélodie en GfA-Basic n’est pas chose facile, surtout pour celui qui ne possède pas de connaissances particulières en solfège. C’est pourquoi nous ne serons pas trop regardants de ce côte-là... Mais soignez tout de même vos bruitages ! THIS IS AMIGA SPEAKING On l’a assez répété, l'Amiga possède un synthétiseur vocal intégré, auquel on peut accéder depuis le GfA-Basic. Il existe pour celà deux instructions spécialisées, les mêmes qu’en AmigaBasic : SAY et TRANSLATE$ (). Les accès à ces instructions nécessitent toutefois une petite précaution : le « narrator.device » doit se trouver dans le répertoire DEVS : de la disquette WorkBench et la « transla- tor.library » dans le répertoire LIBS :. SAY envoie un texte phonétique au synthétiseur, lequel le sort sur le canal audio spécifié. SAY a$ ,m %() : a$ contient alors le texte phonétique à sortir et m %() est un tableau d’entiers, destiné à modifier la sortie de la parole. Ce tableau est composé de sept éléments : m %() Fonction m %(0) Fréquence m %(1) Modulation m % (2) Vitesse m %(3) Sexe m % (4) Fréquence m % (5) Volume m % (6) Canal Voici maintenant le détail de chacun de ces paramètres. M %(0) contient la fréquence de base, qui peut s’échelonner de 65 à 320. La valeur par défaut est
110. M %(1) contient le type modulation. 1 donne une synthèse « naturelle » (humain), tandis que 0 donne une valeur « monotone » (robot). La valeur par défaut est 0. M %(2) contient la vitesse de la parole. Cette valeur peut varier de 40 à 400, sachant que le réglage par défaut est 150. M %(3) contient le sexe de la voix, avec 0 = masculin et 1 = féminin. LA valeur par défaut est 0. M %(4) contient la fréquence du sampling, c’est-à-dire la hauteur de la voix (aigüe ou grave). Cette valeur varie de 5000 à 28000, avec une valeur par défaut de 22000. M %(5) contient le volume, de 0 à 64. Le volume par défaut est 64. M %(6) contient le(s) canal(aux) où émettre la voix, d’après la table suivante : m% (5) Canal 0 0 1 1 2 2 3 3 4 0 et 1 5 0 et 2 6 3 et 1 7 3 et 2 8 0 ou 3 9 1 ou 2 10 0 ou 3 et 1 ou 2 11 0, 1, 2 ou 3 un « et » dans le tableau, signifie que la voix sera sortie sur tous les canaux spécifiés, tandis qu’un « ou » signifie qu’elle sera émise sur celui des canaux spécifiés qui sera libre à ce moment là. La valeur par défaut est 10, ce qui donne, de toute manière, un effet stéréo. SAMPLER ET SANS REPROCHE Voilà. Une dernière chose pour terminer. Il est parfaitement possible, en GfA-Basic, de jouer des sons samplés que l’on aura récupéré à partir de logiciels comme Aegis Sonix, SoundTracker ou AudioMaster. Mais celà oblige à bidouiller les registres machine de l’Amiga par de longues séries de DPOKEs interminables (c’est le nouveau jeu de Guy Lux sur la Une : Inter-Minables), bref, à bien connaître le fonctionnement de l'Amiga. De tels sons seront bien entendu acceptés dans le cadre de notre concours, mais ne seront pas pris en compte par le jury pour l’estimation de votre jeu. Si vous désirez en savoir plus sur ce sujet, je ne peux que vous renvoyer à l’ouvrage « La Bible de l’Amiga » de chez Micro-Application justement, qui possède un chapitre complet sur le sons samplés. Le troisième et dernier volet de cette (petite) initiation au GfA-Basic, sera consacré, à l’utilisation des routines du système, et notamment de la « gra- phics.library », qui vous permettront par exemple de scroller l’écran, etc. A bientôt. Max Nous avons vu le mois dernier, de quelle manière nous pouvions, grâce à Intuition, ouvrir de nouveaux écrans et de nouvelles fenêtres. En revanche, ce que l’on se sait pas toujours, c’est comment l’on peut réagir aux différents événements qui peuvent survenir à chaque instant. ASSEMBLEUR 68000 N° 9 L Amiga, c’est comme la Samaritaine : il s’y passe toujours quelque chose. Vous pensiez sans doute que déplacer une souris sur un bureau était une chose tout-à-fait anodine, que de dérouler un menu ne présentait aucune difficulté, ou encore que d’agrandir une fenêtre n’entraînait aucune conséquence particulière. Du point du vue utilisateur, vous aviez entièrement raison. Mais côté logiciel, même la plus petite action de votre part entraîne tout un chambardement chez Madame Intuition. LES ÉVÉNEMENTS Prenons un exemple tout simple : vous cliquez sur le bouton droit de votre souris pour faire apparaître la barre de menus, puis déplacez le pointeur jusqu’à cette barre afin d’en dérouler les options, choisissez celle qui vous convient, puis enfin relâchez le bouton pour valider. Temps maximal évalué : 2 à 3 secondes. Mais qu’a fait Madame Intuition pendant ce temps-là ? Elle s’est d’abord rendue compte que vous aviez appuyé sur le bouton droit de la souris et en a prévenu le programme concerné (WorkBench ou autre, par exemple Deluxe Paint). Elle s’est ensuite chargée de vérifier si ce programme possédait bien un menu, et si oui, en a affiché les différents titres. Madame Intuition a ensuite patiemment attendu que le pointeur de la souris arrive jusqu’à cette barre, en informant continuellement le programme de sa position (celle de la souris, pas de la barre). Puis, lorsque le pointeur est arrivé sur un titre, Madame Intuition a affiché le menu correspondant, se chargeant de sélectionner les différentes options au fur et à mesure que vous déplacez la souris. Enfin, lorsque le bouton a été relâché, Madame Intuition a prévenu le programme, et si une option du menu a été choisie, lui a précisé de laquelle il s'agissait. Et comme c’est une travailleuse très consciencieuse, elle a également fourni au programme, un rapport sur l’état du clavier et plein d’autres petites choses. Lorsqu'elle a besoin de communiquer à un programme de tels événements, Intuition lui envoie ce que l’on appelle « un message », c’est-à-dire une suite d'octets structurés d’une manière particulière, contenant tous les renseignements nécessaires. Les événements sont de différents types : ils peuvent concerner l’écran en général (appel d’un menu, action sur une fenêtre), le clavier (toute appuyée ou au contraire relâchée), le(s) lecteur(s) de disquettes (disquette éjectée, changée...), ou encore les différentes interfaces connectées à ce moment-là. Le cas qui nous intéresse est donc celui des fenêtres. FENETRE OU PAS FENETRE... Heureusement, comme nous l’avons vu le mois dernier, chaque programme est libre de définir, grâce aux flags IDCMP lors de l'ouverture de la fenêtre, le type de messages qu’intuition sera autorisée à lui envoyer. Le mot « fenêtre » doit être pris ici au sens large : il inclut les gadgets, reques- ters, etc. Concrètement, comment recevoir les messages d’intuition ? Simple : il suffit d’appeler la fonction GetMsg (librairie Exec, offset 372) avec pour paramètre, l'adresse de la source de l’événement désiré dans aO. Kesako, « source de l’événement correpondant » ? Encore une fois, c’est très simple : Intuition n’a aucun moyen de savoir, à priori, quel(s) événement(s) le programme désire tester, c’est pourquoi il nous faut lui préciser un truc du genre : « hé, ma jolie, j’ai ouvert une fenêtre et j’aimerais bien que tu me dises si on y a touché ». En l’occurence, où trouver cette adresse ? Rappelez-vous le mois dernier, nous avons sauvegardé, après l’appel de notre routine OpenW, un pointeur sur une structure Window, crée par la fonction OpenWindow. Cette structure n’a pas été détaillée, mais il vous suffit de savoir qu’à l'offset 86 figure ce que l’on appelle « le port utilisateur » de notre fenêtre (en anglais : User Port). Et c’est justement ce port qu’il faut envoyer à la fonction GetMsg : nGetMsg equ
• 372 TestMsg : move.l WindHandle1,aO ; structure Window dans aO move.l 86(a0),a0 ; User Port dans aO move.l ExecBase,a6 jsr GetMsg ; saut à GetMsg n i érl-ûïrs SERVICE REPARATION ŸQîre ordinateur cri périphérique tombe en panne ? Appâtez immédiatement le
43. £.33.89 Un service adapte à tous. Réparation en atelier sur is gamme Commodore complète sur site A2800 Apportez oc renvoyez-nous immédiatement votre micro ou périphérique au l rue Guenot - 7501 îi PARIS Service Maintenance Express à votre du hindi ai Eh retour, GeîMsg renvoie dans dû, un pointeur sur une structure « intuition Message », si un événement: concernant notre fenêtre a eu iieu, sinon
0. Dans le premier cas, ie rnot long figurant à partir du 20ème octet de cette structure confent ie type de F événement : ce ne sont ni pius ni moins que les ffags IDCMP, correctement positionnés (voir, encore une fois, ie mois dernier). On ie teste ainsi : ' î - ~ - - - : ¦ SERVICE HBCES DETACHEES distributeur Commodore. AVIS AüXBIDOüiUEUBSüf - Attention Rom Kscksîart 1.3 disponible, dépêdtez-vous te stock est limité ! CMS 8, rue Guenot - 75011 PARIS +9»â0: * BOUTIQUE OCCASION ET BROCANTE Criez CMS l’occasion est unique ? A des prix fous fous fous !!.! Des centaines d’ordinateurs et d'accessoires à partir de... 150 F Criez CMS ta brocante es: unique ! A oes prix dingues dingues ? - CMS Occasion - 31, rue de Mau&euge -75009 PARIS,-Tél. : 48,78.86.66 ; : structure Message dans aO j oas ce message si 0 ; 3â§s !0CM° dand aû ; fenêtre fermée ? MM: béas nxveJ ttsf bne HoUs-g : ri ; ouï ; etc, ex.
- 7 • ou tout nFmpcrte quoi cfsisrs çm_ est aussi oi mmmm asree camogcteiii US MINUS DO PIRE DODO Un autre ooint imoortant d’intuition sont les menus déroulants. Tout programme pius ou moins professionnel les utilise, d’une part parce que c’est un moyen simple, pratique et efficace ce donner ie çhqîx à i’utirisateur entre plusieurs options, et d’autre part, parce que c’est nettement plus estnétique qu’un long texte au genre : 1 Charger, 2 Sauver, 3 Quitter, etc. Mais Pqn a rien sans nen et si ia programmation et 'a gestion des menus sous Intuition ne présentent aucune difficulté particulière, elles sont assez ion- gues à mettre en œuvre. Précisons d’aoord un fait assez important : les menus sont reifés aux fenêtres qu'un écran ttonné contient, et non à cet écran Juï-même. En à’aytres termes, chaque fenêtre d’un écran peux avoir, si besoin est, son menu propre. Ce qui entraîne également une autre constatation : sans fenêtre, point: de menu. Même si vous n’avez pas un besoin par- .Prénom: Nom: _ A Ville: £ . Code Postai : COMREV Au prix total de: frais de port 80 F.jep sus ie lègfe par chèque - CCP- Envoyez ie tout : CMS - VPC 8, rue Guenot ticuiier d’une fenêtre, il vous faudra cependant en ouvrir une pour pouvoir disposer d’un menu, quitte à la déclarer de la même taille que i’écran, BOR- DERLESS (sans bords) et immobile. Pour mettre en œuvre un menu, on appelle la fonction SetMenuSrip (bibliothèque Intuition, offset 264) qui n’attend que deux paramètres : dans aû, l’adresse de la structure du menu à activer et, dans a1, l’adresse de la structure Window de la fenêtre à laquelle le menu appartiendra. Elle ne renvoie aucun paramètre de retour. Voici un exemple d’appel de la fonction SetMenuStrip : Mais la place me manque, il est temps de laisser la parole aux autres. Ce qui me permet de vous annoncer le contenu de notre prochaine leçon : dans un premier temps, la description d’une structure Menu et, dans un second temps, l’exploitation de ce menu et la réaction aux choix des options. A bientôt donc pour de nouvelles aventures. Max OpenLib equ
- 408 SetMenuStrip equ
- 264 ClearMenuStrip equ
- 54 ExecBase equ Début : move.l ExecBase, a6 lea IntName,ai jsr OpenLib(a6) ; ouverture librairie Intuition move.l dO,IntBase ; sauve son adresse de base ... ; pleins de trucs quelconques ; Ouverture d'un écran. Lea ScreenDefs,aO ; voir le listing de la routine bsr OpenS ; OPENS dans Commodore Revue N°9 ; Ouverture d'une fenêtre. Lea WinDefs,aO ; voir le listing de la routine bsr OpenW ; OPENW dans Commodore Revue N°9 move.l dO,WindHandle ; Mise en place du menu lea MenuDefs,aO ; aO pointe la structure Menu move.l WindHandle,al ; al pointe la structure Window move.l IniBase,a6 jsr SetMenuStrip(aô) ; le P ; Fermeture du menu move.l WindHandle,aO
• move.l Întbase,a6 jsr ClearMenuSirip(a6) ; Fermeture de la fenêtre move.l WindHandle,aO bsr CloseW ; Fermeture de l'écran bsr CloseS rts tout à fait normalement mais tout à une fin ! ; cf. Commodore Revue N°9 ; cf. Commodore Revue N°9 ; Ciao la compagnie ! N G LU s MIGfli ? Tac INITIATION A L’AMIGA-BASIC il était temps que Commodore Revue consacre enfin quelques pages aux plus nouveaux d’entre vous qui, se voyant offrir un Amiga pour les fêtes de fin d’année dernière, ont découvert avec l’AmigaBasic, soit un langage totalement nouveau, soit une approche du Basic entièrement différente. ette série d’articles est à considérer comme une initiation à la programmation sur Amiga, couplée à un mode d’emploi aussi clair que possible de l’AmigaBasic, plutôt que comme une véritable initiation à ce langage. Notre but est de vous faire découvrir que derrière cette formidable console de jeux (entre autres) qu'est votre Amiga, se cache un véritable ordinateur, que l’on peut programmer, faire « bouger ». Dans les premiers articles, nous nous adresserons plutôt à ceux qui, parmi vous, n’ont jamais encore programmé ; le langage Ami- gaBasic a été choisi car tout acquéreur d’un Amiga en dispose immédiatement. Il va de soi, qu'outre les contraintes propres au Basic, la plupart des remarques qui seront faites seront valables pour n’importe quel langage. LE DIALOGUE Nous allons commencer par dialoguer avec notre ordinateur. Plus exactement, c’est lui qui va nous communiquer quelque chose. Presque « bêtement » d’ailleurs, puisqu’il ne nous dira rien de plus que ce que nous lui aurons demandé de nous dire. Lorsque deux personnes qui ne se connaissent pas se rencontrent pour la première fois, il est habituel qu'elles se présentent l’une à l’autre. Nous allons, nous aussi, suivre cette simple règle de courtoisie. Avant toute chose, il convient de charger l’Ami- gaBasic. Pour celà, insérez votre disquette Ami- gaExtras dans votre drive, puis double-cliquez sur l’icône « AmigaBasic ». Quelques instants plus tard, deux nouvelles fenêtres s’ouvrent à l’écran, la première portant le titre « Basic », la seconde, le titre « List ». Nous délaisserons la seconde pour l’instant, pour ne nous intéresser qu’à la première il faut donc cliquer dans celle-ci pour la rendre active. Une invite « Ok » apparaît alors. Sous elle, un curseur (la barre orange verticale) semble attendre patiemment quelque chose. C’est ce curseur qui va nous indiquer, en permanence, où seront placés dans la fenêtre, les caractères que nous allons rentrer au clavier. Nous sommes maintenant prêts à nous présenter. Bien sûr, l’Amiga ne le fera pas tout seul, nous allons devoir lui dire de se présenter à nous. Pour celà, tapez très exactement la ligne suivante : PRINT « Bonjour, je suis l’Amiga » puis, une fois le dernier guillemet refermé, appuyez sur la touche Retum>. Si tout s’est bien passé, c’est-à-dire si vous n’avez pas commis de faute de frappe, une ligne s’affiche en dessous de celle que vous avez vous même entrée, indiquant : « Bonjour, je suis l'Amiga ». Dans le cas contraire, sachez qu’il vous est impossible de corriger partiellement la phrase, il vous faut la retaper dans son intégralité. Certes, ce « programme » je devrais plutôt dire cette instruction est courte, mais on peut déjà en tirer quelques conclusions : la touche Return> valide une entrée effectuée au clavier ; c’est elle qui indique àl’AmigaBasic que vous avez terminé d’entrer votre ordre et qu’il peut commencer à l’exécuter. l’instruction utilisée (PRINT) suivie d’un texte entouré de guillemets, permet d’afficher ce même texte à l’écran. bien que le texte « Bonjour, je suis l’Amiga » soit entouré de guillemets, ceux-ci ne sont pas apparus lors de la réponse fournie par AmigaBasic. Mais que se passe-t-il donc en cas de mauvaise saisie ? Essayez par exemple d’entrer la ligne : PRNT « Bonjour » Dès que vous aurez appuyé sur Return>, l’écran clignotera et un message « Undefined sub- program » apparaîtra à l’écran (en français : « Sous- programme indéfini »). AmigaBasic attend donc que vous lui parliez dans un langage qu’il est capable de comprendre (en l’occurence, le Basic !). Tout ordre non-Basic est considéré comme une erreur de la part de l’utilisateur. Maintenant que l’Amiga s’est présenté « de lui- même », il nous reste, pour que ces présentations soient complètes, à en faire autant. Si vous essayez de répondre par exemple « Et moi, je m’appelle Thierry », vous obtiendrez là encore un message d'erreur. Il faut donc dire à l’Amiga que vous désirez qu'il vous demande une réponse (oui, ça semble compliqué, mais en fait pas du tout). Cliquez donc dans la seconde fenêtre, le curseur passe alors de « Basic » à « List ». Nous sommes maintenant en mode « écriture de programme », c’est-à- dire que ies instructions que nous allons entrer ne seroni pas interprétées au fur et à mesure, mais seulement lorsque nous ie demanderons. Pour vous en convaincre, tapez les deux lignes suivantes, en terminant chacune par la touche de validation Return> : print « Bonjour, je suis l’Amiga » input a$ Si vous avez écrit les mots « print » et « input » en minuscules, vous aurez remarqué que i’Amiga- Basic les a transformés en majuscules, nous indiquant ainsi qu’il a reconnu ces deux mots. Il nous faut maintenant exécuter ce programme. Pour cela, appelez ie menu de i’AmigaBasic en maintenant appuyé le bouton droit de la souris. Sélectionnez le titre « Run », puis l’option « Start » (vous pouvez abréger cette procédure en appuyant simultanément sur les touches Amiga et R). La fenêtre « Basic » recouvre alors la fenêtre « List » et le message maintenant connu, « Bonjour, je suis l’Amiga », s’affiche. Mais en plus, nous avons sous cette ligne un point d’interrogation, suivi de i’habituel curseur. L’Amiga attend donc que nous entrions quelque chose au clavier. Cliquez dans la fenêtre pour la rendre active si elle ne l’était déjà et répondez une phrase du style « Bonjour, moi je suis XXXX ». Là encore, validez par Return>. L’invite «Ok» revient alors, ainsi que ie curseur. Que s’esî-il passé ? Nous avons simplement donné deux ordres différents à l’Amiga, lê premier lui demandant d’inscrire un texte à l’écran (PRINT), le second lui demandant d’en attendre un autre en provenance du clavier (INPUT). Nous verrons dans un prochain article consacré aux variables, la signification du sigie « a$ ». ALLONS PLUS LOIN En régie générale, dans la vie courante, le point d’interrogation indique une question. Pour l’Amiga, cette règle est aussi valable et il aurait très bien pu nous demander par exemple : « Quel est votre nom ? ». Modifions donc notre programme en conséquence. A l’aide des touches fléchées du clavier, remontez le curseur sur la seconde ligne et modifiez-ià afin d’obtenir : INPUT « Quel est votre prénom » ;a$ N’oubliez surtout pas le point-virgule ( « ; ») entre le dernier guillemet et le sigie « a$ ». Exécutez à nouveau le programme (menu Run Startou Amiga + R). Cette fois-ci, nous avons bien le texte suivant à i’écran : Bonjour, je suis l’Amiga Quel est votre prénom ? Là encore, répondez à cette question aussi librement que vous ie voulez, l’Amiga n’ira pas vérifier que c’est bien un prénom que vous entrez au clavier (enfin, pas encore). Nous en déduisons que l’instrucrion INPUT est capable, avant de lire un phrase au clavier, d’en afficher une autre qui servira d’invite (« prompt » en anglais). Ce n’est pas là tout ce dont est capable cette instruction, mais cela nous suffit amplement pour l’instant. Notre dialogue avec i'Amiga commence à prendre forme ; nous sommes partis du simple affichage d’une phrase quelconque, pour arriver à une pseudo-disCussion un peu limitée certes, mais il ne tient qu’à nous qu’elle ne s’enrichisse par la suite. Dès le prochain article de cette série, nous aborderons la notion de variables, chose indispensable à tout programme. Nous en avons déjà vu une ici- même (a$ ), qui, à priori, était destinée à recevoir le texte recueilli par l’instruction INPUT. Pour l’heure, amusez-vous donc un peu avec votre Ami- gaBasic et essayez de voir comment (et pourquoi !) Il réagit à vos actions. A bientôt 1 Michel Descoins LE GUIDE DE L'AMIGA Logiciels d'application et périphériques Édité par COMMODORE REVUE vous attend en kiosque 256 mm D7 INFORMATIONS SUR L AMIGA 48 Freines REVENDEURS AGRÉÉS puüucirt 35 ST-MALO 75 PARIS 69 LYON
99. 81.75.1,9 PUBLIC ELECTRONIC 27, Bd de l’Espadon 35400 ST-MALO Tél. : 99.81.75.49 Clément Informatique Cl AMIGA 216, rue de Créqui - 69003 LYON Spécialiste de l’informatique professionnelle PC-AT 89-89 bis. Rue de Charenum 75012 PARIS 46, rue Paul Bert - Tél. : 72.61.84.28 PARIS J l ELECTRONICS L’AMIGA AU SUD DE PARIS
163. Av. Du Maine 75014 PARIS Tél. : 45.41.41.63 REVENDEURS AGREES VOTRE PUB ICI Tél. : (1) 42.47.12.16
J. Y. PRIMAS Handy Scanner Cameron : avec reconnaissance de caractères, permet aussi de créer vos propres fontes noir et blanc . 2.260 F 16 tons de gris 3.450 F personnal A4 .. 6.990 F Disque dur 20 Mo avec carte controller SCSI (A 2000) 4.900 F Disque dur 20 Mo pour A 500 et A 1000 4.900 F Carte PCXT, lecteur 5" 1 4 (A 2000) 3.900 F Filecard 20 Mo (PC) 3.400 F Filecard Amicros 20 Mo Amiga 2000 4,900 F MPS 1500 couleur .. 3.350 F Star LC 10 couleur .
3. 100 F
1. 850 F
2. 700 F 650 F 550 F Digiview ...... Professional page .... Deluxe Paint II .. r VOTRE AMIGA 500 A PARTIR DE 2( Crédit CREG sur A 500 a 4.676 F I versement, échéance à 30 jours : 1 puis 29 mensualités de 200 F )0F 20 F L Coût du crédit 1.200 F __sur acceptation du dossier J Demandez-nous conseil pour tout votre équipement : KIMATEK S.A.R.L. 32, rue de la Paix - 37000' TOURS Tél. 47.61.25.52 ? Je désire recevoir une offre préalable de crédit. D Je vous adresse la commande suivante : Interface Midi . PERIPHERIQUES ELECTRONIQUES ARTEFACT - Interface - Entrée Sortie de puissance 8E 16S .... BON DE COMMANDE Nom_Prénom_ Onde postal Ville Adicle Quantité Prix unit. Mont Mon ordinateur est un - rôt 1 J Je choisis la formule de règlement ? Au comptant D A crédit ? Chèque bancaire ? CCP ? Contre remboursement ( 100 F en sus) Signature Mont, total spéciaux, volets d'apparition, 1 ou 2 sources, fade in out 890 F Wiper II ...... 890 F Nouvelle version 1.2 : Video GenericMaster : générateur de caractères, titrage vidéo, génériques, scrollings . 790 F COMMUNICATION Interactiv Show System : borne interactive. 10 choix par niveau, 100 niveaux 1.490 F QuickShow : slide show amélioré pouvant être édité à chaque instant, ligne message 490 F Nouveaux logiciels scientifiques : Grapher I .... 250 F Grapher II .... 300 F AMIGA 500 VIDEO 1 A 500 + ext. Mémoire 512 K + lect. Ext. A 1010. Moniteur 1084, Genlock GST 30, Filtre électr. RVB, Gel d'images, Digiview + WipeMaster + GenericMaster .. 20.900 F AMIGA 2000 VIDEO 1 Amiga 2000 + lect. Int. A 2010 + Moniteur 1084, Extension 2 Mo, Genlock Magni, Filtre électr. RVB, Gel d'images, Digiview + WipeMaster + GenericMaster ... 47.670 F Table de Mixage Panasonic WJ.MX 10
20. 480 F
18. 500 F Genlock MAGNI . . . Ont-weight:bold;">AMIGA 2000 VIDEO 1 Amiga 2000 + lect. Int. A 2010 + Moniteur 1084, Extension 2 Mo, Genlock Magni, Filtre électr. RVB, Gel d'images, Digiview + WipeMaster + GenericMaster ... 47.670 F Table de Mixage Panasonic WJ.MX 10
20. 480 F
18. 500 F Genlock MAGNI . . .

Click image to download PDF

AMIGA NEWS TECH numero 01 (05-1989)

Merci pour votre aide à l'agrandissement d'Amigaland.com !


Thanks for you help to extend Amigaland.com !
frdanlenfideelhuitjanoplptroruessvtr

Connexion

Pub+

34.6% 
16.2% 
6.6% 
4.5% 
4.4% 
3.6% 
3.2% 
2.4% 
1.7% 
1.4% 

Today: 68
Yesterday: 57
This Week: 571
Last Week: 630
This Month: 2547
Last Month: 3072
Total: 66687

Information cookies

Cookies are short reports that are sent and stored on the hard drive of the user's computer through your browser when it connects to a web. Cookies can be used to collect and store user data while connected to provide you the requested services and sometimes tend not to keep. Cookies can be themselves or others.

There are several types of cookies:

  • Technical cookies that facilitate user navigation and use of the various options or services offered by the web as identify the session, allow access to certain areas, facilitate orders, purchases, filling out forms, registration, security, facilitating functionalities (videos, social networks, etc..).
  • Customization cookies that allow users to access services according to their preferences (language, browser, configuration, etc..).
  • Analytical cookies which allow anonymous analysis of the behavior of web users and allow to measure user activity and develop navigation profiles in order to improve the websites.

So when you access our website, in compliance with Article 22 of Law 34/2002 of the Information Society Services, in the analytical cookies treatment, we have requested your consent to their use. All of this is to improve our services. We use Google Analytics to collect anonymous statistical information such as the number of visitors to our site. Cookies added by Google Analytics are governed by the privacy policies of Google Analytics. If you want you can disable cookies from Google Analytics.

However, please note that you can enable or disable cookies by following the instructions of your browser.

Visitors

Visite depuis
03-10-2004
Visite depuis
23-02-2014