Sponsors

FacebookTwitterGoogle Bookmarks

L’un des tous premiers gestes d’un possesseur d’Amiga, est d’insérer la disquette Extras dans le lecteur ; après tout, elle est fournie avec le système et son nom laisse présager un contenu passionnant. Si l’utilité de certains fichiers n’est pas toujours très claire, on comprend vite qu’en cliquant sur l’icône de l’AmigaBasic, on se trouve plongé dans le monde de la programmation. L’apprentissage de celle-ci est un alibi souvent avancé lors de l'achat d’un ordinateur, surtout lorsqu’il est acheté dans un cadre familial. Cependant, les premières heures écoulées, la population se scinde en trois parties, le premier groupe est composé de personnes qui, pour des raisons diverses, abandonnent la programmation, le deuxième groupe de personnes découvre l’Amiga- Basic et s’en trouvent satisfaits (souvent, leur premier langage est le Basic) et les membres du troisième s’irritent des contraintes et des imperfections de l’AmigaBasic. LE PASSAGE AU NIVEAU SUPERIEUR Le Basic HiSoft Basic intéressera principalement les participants des deux derniers groupes, même si on peut penser qu’il pourrait réconcilier les plus timides avec l’informatique. Avant de le décrire, il me faut expliquer brièvement ce à quoi on peut le comparer. Il ne faut pas chercher à démolir l’Ami- gaBasic, car ce n’est pas la base du langage qui doit être mis en cause, mais plutôt son implémentation ; après tout, il a de très vastes capacités dans l’interface avec le système (gestion des menus, de la souris, fonctions graphiques), il dispose de structures permettant une écriture propre et une mise au point rapide, ses instructions appartenant à la norme Microsoft. On peut lui adresser trois reproches : l’absence de fiabilité (certaines opérations ont pour conséquence une séance forcée de méditation transcendentale), une lenteur pénalisante et l’absence de certaines fonctions (si on a pris des habitudes avec un autre langage). Il importe de distinguer les produits « Basic » en fonction de leur caractère innovateur par rapport à l’AmigaBasic. En effet, il y a deux options : soit vous cherchez à rendre l’AmigaBasic plus rapide et plus agréable à utiliser (c’est l’optique AC-Basic HiSoftBasic), soit vous cherchez à le remplacer par un Basic différent (optique de True Basic et de GFA-Basic).

Click image to download PDF

AMIGA NEWS TECH numero 00 (04-1989)

Document sans nom Imigr
0
Tout ce que vous avez jamais voulu savoir sur le démarrage d’un AMIGA
Nous sommes heureux de vous accueillir dans ce cahier technique qui est destiné à vous informer de manière précise sur des points spécifiques. Cette rubrique, qui se veut à la pointe, se doit de traiter de la dernière version du système d’exploitation. Sachez aussi que la version 1.3 apporte tant de petites choses qu’elle finit par vous simplifier grandement l’Amiga. Si vous n’avez pas encore votre copie du Workbench
1. 3, courrez chez votre revendeur agréé, car il doit vous réaliser la copie sur présentation de vos originaux des systèmes précédents (1.1 ou 1.2). Si vous souhaitez la documentation française, sachez qu’elle sera disponible sous la forme d’un manuel de 150 pages. Il est impératif de réaliser avant toute chose une copie de travail de cet original pour éviter tout incident.
Nous avons conçu ce cahier pour qu’il puisse autant servir de référence, qu’apporter un complément à vos connaissances.
Que vous soyez débutant ou expert, ces rubriques sont pour vous.
6iue fait l’Amiga lorsqu’il est allumé?
Il se teste : des programmes vérifient, notamment, l’intégrité des processeurs spécialisés et le bon comportement de la mémoire. En cas de problème, l’ordinateur se bloque en affichant à l'écran une couleur déterminée : si c’est bleu, ce sont les co-processeurs qui sont en cause, si c’est vert, c'est soit la mémoire, soit Agnus (qui gère une partie de la mémoire) qui est défaillante, si c'est jaune, une exception a empêché le traitement d'une interruption au niveau du 68000, et si c’est rouge, c’est le KickStart qui est incorrect.
Il se configure : un programme va accéder à une adresse mémoire spécifique $ E80000, qui est l’adresse par défaut des cartes d’extension. Si il y a une réponse à cet endroit, et aux endroits suivants, alors ce programme va lire les informations de configuration qui y sont contenues, et construire une liste des extensions, en spécifiant, outre le nom et la marque de la carte, si il s’agit de mémoire, de système auto-boot, de carte réseaux, de cartes
accélératrices... Si la carte nécessite une initialisation, c’est ce programme qui devra la mener. En dernier lieu, le programme va indiquer à la carte, l’adresse à laquelle elle devra répondre. En d’autres mots, les cartes sont initialisées une à une, la mémoire morte d’auto-configuration d’une carte d'extension répond à $ 000000, que lorsque la carte est en train d'être initialisée, la carte d’extension ne repond que après avoir été initialisée à l’adresse indiquée par le système. Ainsi en présence d'une carte d'extension mémoire A2052 ou A2058-2 et d’une carte passerelle PC A2088D, la première sera logée de $ 200000 à $ 3FFFFF, alors que les 64 Ko de mémoire partagée de la seconde occuperont l’espace de $ 400000 à $ 5FFFFF.
Il donne la main au premier programme « utilisateur » qu'il rencontre, c'est-à-dire qu’il cherche une disquette démarrable dans le premier lecteur de disquettes, et si il la trouve, il charge et passe le contrôle au programme contenu dans les deux premiers secteurs de cette disquette (dits « secteurs de boot »).
Si ce petit programme est absent, l’Amiga se trouve en présence d’une disquette soit totalement vierge d’informations, soit tout juste initialisée (« formatée »), il ne peut que (ré)afficher la main demandant l’introduction d’un WorkBench.
Si ce programme est un programme de chargement spécialisé (typiquement pour un jeu ou une démo pirate), il va lui-même lancer des programmes qui vont prendre le contrôle de l’ordinateur en utilisant plus ou moins les routines du système.
Si ce programme est un virus, AIE, AIE, AIE, il a l’occasion de s’installer dans la mémoire et de perturber le fonctionnement des programmes système et utilisateurs.
Si ce programe est présent (il est la marque de toutes les disquettes qui peuvent servir de Work- Bench, mais peut être installé par l’intermédiaire de la commande CLIINSTALL), il passe le relais aux routines de la bibliothèque AmigaDos (une bibliothèque est un ensemble de fonctions d’interfaçage entre les programmes et la machine). Cela se traduit de manière visible par l'ouverture d’une fenêtre de l’interpréteur de commandes CLI sur le fond bleu de l’écran Workbench. Par ailleurs, l'Amiga-
Dos a aussi déjà exploré un petit peu la disquette de démarrage car il a quelques à priori sur l’organisation logiques des répertoires et des programmes ; il a repéré entre autres, les répertoires S : et C : (voir l’encadré sur les principes de l’Ami- gawDos).
Le répertoire S : des séquences de commandes contient un fichier dénommé Startup-sequence, qui est constitué d’une suite de commandes CLI à exécuter au démarrage. Ce fichier permet donc la configuration de notre ordinateur. Mais il est fortement recommandé de ne pas modifier ce fichier standard, qui concerne le système en général. On modifiera, en revanche pius aisément, le fichier complémentaire Startupll qui apporte des compléments à la configuration.
Pour visualiser ces fichiers et les modifier, il faut recourir à un éditeur de texte (comme ED, MicroE- macs, DME, AZ...), et non à un traitement de texte (comme Notepad, Textcrafi +, Prowrite...), car ces derniers, à moins de sauvegarder les textes en codes ASCII, insèrent des informations de mise en page (comme les polices de caractères, les marges, les gras-soulignés-italiques et autres artifices de présentation), informations qui peuvent empêcher l’exploitation de ce fichier par le système.
Si vous n’avez pas encore exploré votre disquette EXTRAS 1.3, vous n’avez pas découvert le programme Memacs, qui est dans le répertoire TOOLS ; il est fort agréable et propre à satisfaire bon nombre de programmeurs par son adaptation à récriture de texte pur (sans codes de présentation). Comme ce programme est situé sur une disquette différente du Workbench, il peut être ennuyeux de l’utiliser sur un Amiga avec un seul lecteur, mais il existe un programme encore plus simple (pour ne pas dire minimaliste car il ne reconnaît même pas la souris) qui s’appelle ED et qui se trouve dans le répertoire C du Workbench.
Nous utiliserons par conséquent ED de la manière suivante :
ouvrez une fenêtre SHELL en cliquant sur l’icône SHELL de votre copie de travail WorkBench (on peut se contenter d’une fenêtre CLI, mais attention aux fautes lors de la frappe des commandes) ;
lorsque vous voyez l’indicatif 1.SYS :> de la fenêtre Shell, vous y tapez (après l’avoir sélectionnée) : «ED S :STARTUP-SEQUENCE » ou « ED S STARTUPII » (fichier spécialement destiné à la configuration pour l’utilisateur) ;
pour vous déplacer dans le texte, utilisez les touches du curseur ;
pour insérer du texte, positionner le curseur et donnez libre cours à votre inspiration ;
pour effacer une ligne, faites la combinaison des deux touches CTRL et B ;
pour sauvegarder votre œuvre, tapez sur la touche ESC, puis sur la touche X ;
pour abandonner, tapez sur ESC, puis sur Q.
Pour donner un exemple concret, imaginons que
vous utilisez le programme de mise en page « Pro- fessionnal Page » sur un Amiga 2000 avec un disque dur. Ce programme, pour fonctionner correctement, a besoin d’accéder à des fichiers contenus sur ies disquettes dénommées Ppage et Ppageütil, en conséquence, il ies recherche toujours sur les périphériques Ppage : et PPAgeUtil :. Nous souhaitons rassembler tous les programmes de texte dans un répertoire TEXTES sur notre disque dur DHO : ; pour créer ce répertoire, nous dupliquons le tiroir EMPTY, grâce à la commande du menu du WorkBench.
De la même manière, nous faisons un répertoire MiseEnPage dans lesquels nous copions tous les fichiers de la disquette Ppage par la commande CLI « COPY DFO : JHO :TEXTES MiseEnPAge ALL » et tous ceux de la disquette PpageUtii par « COPY DF2 : JHO :TEXTES MiseEnPage ALL ».
On remarquera que de nombreux fichiers sont les mêmes que ceux du WorkBench, et constituent de bons candidats pour le nettoyage de printemps. Cependant, ies polices de caractères de Profession- nal Page contenues dans le tiroir FONTS de Ppa- geutil doivent impérativement être conservées, car elles sont nécessaires à son bon fonctionnement. Il faut d’ailleurs noter que ProPage va chercher ses polices dans le tiroir FONTS : et qu’il sera nécessaire de déplacer, soit les polices de ProPage dans le répertoire FONTS, soit le pointeur FONTS : vers le répertoire qui contient ces poiices.
En conséquence, il faut insérer dans le fichier S : Startupll, juste avant la dernière ligne « BREAK 1 C », les trois lignes suivantes :
ASSIGN PPAGE : JHO : TEXTES MiseEnPage ASSiGN PPAGEUTiL : PPAGE :
ASSIGN FONTS : PPAGEUTIL : FONTS
En raccourci, voiià quelques assignemems qui peuvent vous rendre de grands services (si vous possédez le iogiciei, évidemment) :
pour DeLuxe Paint II : ASSIGN DF1 : JHO : pour WordPerfect : ASSiGN WP : JHO:
TEXTES WP
ASSIGN PRINT : JHO : TEX- TES PRINT
pour le compilateur Lattice C5.0 :
ASSiGN LC : SYS : LC C ASSIGN LIB : SYS : LC LIB ASSiGN INCLUDE: SYS: LC iNCLUDE ASSiGN QUAD : RAM : PATH LC : ADD
PRINCIPES DE L’AMIGADOS
Il y a deux principes que l’on ne peut ignorer lorsque l’on considère l’AmigaDos : il est pensé économique, c’est-à-dire qu’il ne charge que ce qui est nécessaire, grâce à une construction modulaire et il est virtuel, car il a une approche identique, quelques soient les entités qu’il manipule (disquettes, disques durs, disques virtuels, réseaux, ports d’entrées-sorties,..).
Cette modularité extrême peut se révéler gênante et bon nombre de nos « trucs » viseront à mieux configurer nos ordinateurs.
L’AmigaDos gère essentiellemnt des périphériques (« devices ») de manière standard, au travers de gestionnaires (« devices drivers ») qui ont pour rôle d’adapter les commandes aux spécifités du périphérique : ainsi, copier un fichier d’un répertoire dans un autre, l’envoyer sur l’imprimante ou l’envoyer dans une fenêtre, fait appel à la même commande
COPY COPY dfO :s startup-sequence RAM :
COPY dfO :s startup-sequence PRT :
COPY dfO :s Startup-sequence CON :20 20 400 100 puisque c’est le destinataire (Ram-Handler, prin- ter.device ou AmigaDos) qui fera le boulot. Cette organisation permet une très grande flexibilité, parfaitement illustrée par l’ajout dans la version 1.3 du gestionnaire de console NEW-CON :, qui ajoute aux banales fenêtres CON :, des possibilités d’éditions à l’aide des touches de curseurs. D’une certaine manière, on peut dire que l’AmigaDos repose sur cette standardisation des entités qu’il manipule (il est en cela extrêmement proche des systèmes UNIX). Ainsi l’AmigaDos connaît le port série sous le nom de SER :, le port paralèlle sous celui de PAR :, l’imprimante sous celui de PRT :, les lecteurs de disquettes sous ceux de DFO :,DF1 :,DF2 :,DF3 : et les disques durs sous ceux de DHO et JHO :,... Il connaît aussi deux disques virtuels en mémoires RAM : et RAD :, un système d’intercommunication PIPE :, un port série non bufferisé AUX : et des tonnes d’autres choses que vous pouvez découvrir, en tapant la commande CLI « INFO». J’espère que vous avez remarqué que chacun de ces noms est terminé par un » : >, c’est la marque qui permet à l’AmigaDos de faire appel au gestionnaire approprié (qu’il soit inclus dans l’AmigaDos ou présent de manière séparé). Le principe de ces NOMS : a été étendu à l’utilisation de périphériques virtuels, en quelque sorte on peut associer un surnom TOTO : à un périphérique déjà connu, ou plutôt à un endroit précis de ce périphérique. C'est-à-dire en fait à un répertoire d’un périphérique pour autant qu’il le permette. Ainsi, on peut associer le surnom PERSO : au sous-répertoire « t » de la disquette contenue dans le premier lecteur par la commande CLI « ASSIGN PERSO : dfO :t » ; cela permet de remplacer toutes les références à dfO :t par un renvoi sur PERSO :. L’AmigaDos exploite à fond cette possibilité pour retrouver ses petits, car il est bâti sur de nombreux fichiers qu’il a fallu répartir entre plusieurs répertoires. Les commandes du système : DIR, COPY, TYPE,., ont été regroupées dans un répertoire C : (C comme commandes), les fichiers qui contiennent des suites de commandes à exécuter sont dans le répertoire S : (S comme séquence de commandes), les bibliothèques chargées à la demande sont dans les répertoires LIBS : et L :, les gestionnaires de périphériques sont dans le répertoire DEVS : (DEVS corne devices), les polices de caractères sont dans le répertoire FONTS : et les utilitaires avec une icône pour l’utilisation depuis le WorkBench, sont dans le répertoire SYSTEM. Si l'utilisateur n’utilisait qu’une seule disquette, l'AmigaDos pouvait se contenter d’aller chercher les fichiers nécessaires dans les répertoires de la disquette, mais il lui fallait en fait conserver des indices sur la disquette de démarrage (supposée contenir les informations nécessaires au système) et ses répertoires, pour pouvoir y faire appel : c’est l’explication de ces requêtes « Please insert volume copy of WorkBench in any drive ». Pour construire ces indices, l’AmigaDos procède comme suit : la disquette de démarrage se voit munie du surnom « SYS : », puis c’est au tour des répertoires nécessaires au système c, I, libs, devs, fonts, s, t, qui gagnent les surnoms C L LIBS :, DEVS :, FONTS :, S :, T :. On a vu plus haut que l’AmigaDos savait appeler les gestionnaires spécifiques série, parallèle,., lorsque les surnoms SER :, RAM étaient présents dans un nom de fichier. De manière similaire, lorsqu’il sera en présence de surnoms SYS :, C il les remplacera par les références complètes de la disquette ou des répertoires. Pour vous en persuader, examinez les informations fournies par la commande CLI « ASSIGN », vous y trouverez à la fois les raccourcis des répertoires (« directories ») et les périphériques (« devices »). Si vous m’avez suivi jusqu’ici, vous comprendrez que la commande CLI « DIR C : » est équivalente à « DIR SYS :C » (ou à « DIR C », si votre répertoire par défaut est votre disquette Work- bench). En utilisant la commande CLI « INFO », vous découvrirez que l'AmigaDos, non content de connaître les lecteurs de disquettes comme les devi- ces DFO DF1 connaît aussi les disquettes par
leurs noms, car il transforme le nom d’une disquette en surnom, en lui suffixant le » : ».
Ainsi, même avec un lecteur, vous pouvez obtenir le contenu de la disquette « Extras 1.3», en tapant la commande CLI DIR «EXTRAS 1.3:» depuis votre Workbench, car l’AmigaDos vous demandera d’insérer le volume EXTRAS 1.3 (attention, les guillemets sont impératifs en raison du caractère espace contenu dans le nom).
Tout ceci acquiert une grande utilité avec les extensions mémoires et les disques durs. En effet, imaginez que vous copiez toutes les commandes du répertoire C : dans le disque virtuel RAM : (à l’accès instantané) par la commande CLI « COPY C : ? RAM Test », il suffit alors de compléter par « ASSIGN C : RAM Test » pour qu’aussitôt les commandes du CLI s’exécutent depuis la mémoire vive. Il faut préciser cependant le rôle de l'interpréteur CLI : lorsqu’on tape un nom de commande, le CLI va d’abord demander à l’AmigaDos de charger cette commande depuis le répertoire courant et, en cas d’échec, il va recommencer en ayant transformé le nom, en lui préfixant l’indicatif du répertoire des commandes C :.
De manière plus générale, on peut taper sans remord des noms tels que DIR, COPY, INFO, LIST,... puisque le CLI va chercher à trouver ces commandes dans toute une liste de répertoires, qui définissent une sorte de chemin de recherche faisant au minimum référence au répertoire courant et à C C’est la commande PATH qui permet de visualiser et de modifier ce chemin. Si nous reprenons notre idée de copier les commandes en mémoire, on peut se contenter de ne copier que les commandes les plus utilisées par la commande CLI «COPY
C:DIR ICOPYIDELETEICDIED RAM Test » et de rajouter ce répertoire au chemin de recherche par la commande CLI « PATH RAM Test ADD ».
En ce qui concerne l’utilisation d’un disque dur, la commande ASSIGN permet de rattacher les noms des répertoires systèmes (C :, S :, DEVS :, I :, LIBS :, FONTS :,..) aux répertoires correspondants du disque dur (bien plus performant qu’une simple disquette).
De même, la commande CLI « EXECUTE », qui permet de faire exécuter les commandes CLI contenues dans un fichier (à l’instar du startup- sequence), exploite la technique des noms virtuels pour trouver le fichier à exécuter dans le répertoire S : des fichiers-séquence. Ainsi les commandes « EXECUTE STARTUP- SEQUENCE » et « EXECUTE S :STARTUP-SEQUENCE » sont strictement équivalentes.
La commande CLI « RUN », qui lance un programme en multi-tâches en créant un CLI juste pour l’exécuter, tire parti des possibilités du chemin de recherche (PATH), puisqu’elle explore tous les répertoires spécifiés à la recherche du programme désiré par l’utilisateur. Ainsi, si nous utilisons un programme antivirus (par exemple VirusX) contenu dans le répertoire UTIL, nous pourrons l’utiliser de manière fort simple, en ajoutant le répertoire UTIL au chemin de recherche par la commande « PATH SYS :UTIL ADD » et le garder disponible en permanence, en le lançant en multi- tâches par la commande « RUN VirusX ».
Ces deux commandes peuvent être tapées uniquement lorsqu’elles sont nécessaires, mais elles se révèlent d’une telle utilité, qu'elles mériteraient d’être inscrites dans les fichiers de démarrage.
LE STARTUP SEQUENCE
Voici le contenu de ce fichier mystérieux startup- sequence, faisant partie du répertoire S de votre WorkBench 1.3 : (les commentaires (précédés d’un point virgule) ont été ajoutés pour une meilleure compréhension).
Addbuffers dfO : 10 ;ajoute 10 buffers de 512 octets pour la gestion du premier lecteur de disquettes (en règle générale,on ne dépasse pas les 22 buffers, car ils consomment de la mémoire vidéo), c :SetPatch > NIL : -.corrige des erreurs dans les routines de la mémoire morte, de plus, la redirection vers NIL :, fait disparaître les messages du programme.
Cd c : ;le répertoire des commandes devient le répertoire courant, ce qui permet de gagner du temps en raccourcissant le parcours du chemin de recherche.
Echo « A500 A2000 F Workbench disk. Release
1. 3 version 34.20* N »
; affiche la chaîne de caractères contenue entre les guillemets (elle peut contenir des caractères de contrôle, comme la combinaison *N qui insère une ligne supplémentaire).
Sys :System FastMemFirst ;ré-ordonne la liste des espaces disponibles, afin de rendre prioritaire lès extensions rééllement rapides (peut se révéler très importants pour la gestion des disques durs) ; c'est la mémoire en COOOOO qui, ni vidéo (« chip »), ni rapide (« fast ») est concernée. BindDrivers ;informe le système de la configuration matérielle, en faisant le lien entre les cartes d’extensions et les bibliothèques contenues dans le tiroir Expansion (par exemple, entre les cartes contrôleurs A2090 A2090A et le gestionnaire
HdDisk, ou entre les cartes passerelles A2088XT A2286AT et la bibliothèque Janus.Library. SetCiock load ; met le système à l'heure à partir de l’horloge sauvegardée par .batterie.
FF >NIL : 0 ;accelère l’affichage des polices de caractères non proporîionelles. Résident CLI L :Shelf-Seg SYSTEM pure add ;charge le super- interpréteur de commande SHELL en résident, c’est-à-dire qu’il n’en existera qu’un seul exemplaire, quelque soit le nombre de processus qui y font appel et qu’il ne serà pas nécessaire de le charger depuis une disquette, puisqu’il est présent en mémoire.
Résident c : Exécuté pure ;la: comande EXECUTE (déclarée PURE car réentrante et réexécutable), est elle aussi installée dans la liste des programmes résidents pour rendre l’exécution des fichiers scripts plus rapide et plus facile (grâce à la commande PROTECT, on peut indiquer qu’un fichier de séquence de commandes est à EXECUTEr lorsqu’on tape son nom), mount newcon : -charge le gestionnaire de fenêtre avec éditeur de ligne incorporé, il permet en autre ie rappel des lignes précédentes et leur modification (très pratique pour corriger les erreurs de frappe).
; ;une ligne de commentaire pour aérer le listing, faiïat 11 ;modifie le niveau d’erreur qui provoque l’arrêt de l’exécution de ce fichier, en d’autre termes, si • des commandes renvoient des codes d’erreurs non fatales (inférieurs à 1Ï), l’éxecution se poursuivra.
Run execute s :Startupli ;on lance un second processus CLI pour exécuter ie fichier S :Startupfl, mais comme on a remplacé le CLI par le SHELL avec la commande RESIDENT, les commandes contenues dans ce fichier pourront profiter des avantages du SHELL, (en fait, elles pourront être rendues résidentes de manière à être extrêmement
waii >NIL : 5 mins ;décienche une attente de 5 minutes' pour laisser Les autres processus mener à bien la suite du démarrage avec en particulier la configuration logicielle du système au goût de l’utilisateur heureusement cette attente va être inte- rompue par un qignaj envoyé à la fin de la configuration par le fichier S iStartüpll, en conséquence, WAIT va retourner un code d’erreur 10 qui ne sera pas pris en compte en raison de la commande FAILAT 11, (il ne sera pas non plus affiché en raison de la redirection vers le périphérique nul NIL :) et l’exécution reprendra avec la commande suivante.
VIDEO
Vîdeo WipeMaster : générateur d'éffëffs spéciaux, volets d’apparition, 1 ou 2 sources,
faoein oùi... -......- 890 F
Wiperll . 830 F
Nouvelle version 1,2 :
Video GenericMaster : gëhéiëteuf
de caractères, titrage vidéo, génériques,
scrollîrigs . , 700 P
COMMUNICATION
Snteractiv Show System : borne interactive,
10 choix par niveau, 100 biveaux 1,490 P
QuickShow : sûde snpw amélioré pouvant êfe édité à chaque instant, ligne message >490 F
Nouveaux logiciels scientifiques :
Grapher I . 250 F
Graphe il ...... 300 F
20. 480 F
. 18.500 F'
BON DE COMMANDE
Nôéà
Mon ordinateur est un : réf. - •
Lj Je choisis laformule ce règlement LJ Je vous [Otes mon règlement oar : Ça è0nèéren uiisenfett(t(É
i Téléphone
i O Au GpmpW® OA crèëi!
Artics©
Quantité _____________
Prix unit. .. ..
Mont.
Signature
MpM. Total;
handy Scanner Cameron :
avec reconnaissance dé caractères, permet aussi de créer vos propreà fontes
noir et blanc . . ... 2.260 F
16 tpns de gris . 3.450 F
personnaiA4 .. 5.090 R
Disque dur 20 Mo avée carte controiler
SCSI (A 2000) ...4-9QÔP
Disque dur 20 Mo pour A 500et A 1000 4.90b F
Carte PCXT, lecteur 5'T 4 (A 2000) .. 3,900 F
Fileeard 20 Mo (PC) .....
filecard Amierôs-20 Mo Àrrii 200Ô
MPS1500 couleur ..
Star LG10 côuieur ......
Digiview ......
Professionaipage ...
‘Deluxe Paint il.
Interface Midi ......,.
PERIPHERIQUES ELECTRONIQUES ARTEFACT - Interface - Entrée Sortie
; ; un peu d’esthétique
SYS :System SetMap F ;charge le clavier français (le chemin complet d’accès au fichier, est donné pour gagner du temps et parce que le répertoire courant est toujours C :). Path ram : c : sys :utilities sys :system s : sys :prefs add ;ajoute de nombreux répertoires (presque trop) au chemin de recherche, ce chemin étant indiqué dans le premier processus CLI, il sera pris par défaut pour tous les suivants.
LoadWB delay ;charge l’interface graphique Work- Bench avec menus déroulants et icônes, l’option delay force une attente de 3 secondes pour permettre la fin des accès au lecteur (les performances sont dégradées lorsque plusieurs programmes tentent d’accéder au lecteur simultanément), endcli > NIL : ;termine le processus qui exécutait ce fichier de commandes, la fenêtre CLI disparaît.
De manière identique, voici le contenu de son compagnon, le fichier startupll, qui est l’endroit idéal pour effectuer des modifications (d’une manière générale, il n’est pas conseillé de modifier le premier fichier s :startup-sequence : résident c :Resident pure ;même la commande RESIDENT est rendue résidente, en conséquence elle aussi sera éxecutée depuis la mémoire, résident c :List pure ;les commandes LIST, CD, MOUNT, ASSIGN, MAKEDIR sont rendues résidentes.
Résident c :CD pure résident c :Mount pure résident c :Assign pure résident c :Makedir pure ;resident... IF, ENDIF, ELSE, SKIP, ENDSKIP, ECHO ;optionnellement, si on a beaucoup de mémoire on peut rendre ces commandes (surtout utilisées dans les séquences) résidentes, makedir ram :t ; le répertoire t est crée dans le disque virtuel, ce qui a aussi comme conséquence de charger le gestionnaire correspondant, et provoquera l’apparition de l’icône associée, assign T : ram :t ;ce repertoire nouvellement crée devient le répertoire des fichiers temporaires (par exemple ceux crées lors de l’exécution de sequence contenant des paramètres), makedir ram :env ;création d’un répertoire pour stocker les variables d'environnement (méthode fort peu gracieuse, vivement la version suivante du SHELL).
Assign ENV : ram :env ;ce répertoire reçoit le nom ENV :
makedir ram :clipboards ;création d'un répertoire pour permettre les échange de données entre applications.
Assign CLIPS : ram :clipboards ;il reçoit en conséquence un nom logique CLIPS : pour devenir une sorte de périphérique virtuel (les applications qui souhaitent échanger leurs données, mettent les données issues d’un Couper Coller dans un fichier sur ce vrai-faux périphérique accessibles à tous, mount speak : ; informe le système que le périphérique SPEAK : (qui vocalise le contenu des fichiers qu'on lui expédie) existe, les paramètres sont contenus dans le fichier DEVS :MountList. Mount aux : ;de manière identique, c’est le périphérique AUX : (port série non bufferisé) qui sera désormais reconnu (à noter que les gestionnaires décrits dans MountList ne seront chargés que lorsqu’on accédera aux périphériques), mount pipe : ;ici, il s’agit de l’installation des tubes qui permettent les communications entre processus.
Résident Mount remove ;les commandes MOUNT, ASSIGN, MAKEDIR sont retirées de la liste des programmes résidents, car elles ne seront plus à-priori utilisées intensivement, résident Assign remove.‘ résident Makedir remove ; ligne vierge censée améliorer la lisibilité break 1 C ; envoie un signal d’interruption complet (C) au premier processus CLI (celui du fichier S :Startup- Sequence), a pour résultat de stopper la commande WAIT et de permettre la poursuite de l'exécution du fichier ; pas d'autre commande, la Commande EXECUTE s’arrête donc là et le processus qui avait été crée par la commande RUN disparaît.
HISOFT BASIC, LE LANGAGE HI-TECH
L’un des tous premiers gestes d’un possesseur d’Amiga, est d’insérer la disquette Extras dans le lecteur ; après tout, elle est fournie avec le système et son nom laisse présager un contenu passionnant. Si l’utilité de certains fichiers n’est pas toujours très claire, on comprend vite qu’en cliquant sur l’icône de l’AmigaBasic, on se trouve plongé dans le monde de la programmation. L’apprentissage de celle-ci est un alibi souvent avancé lors de l'achat d’un ordinateur, surtout lorsqu’il est acheté dans un cadre familial. Cependant, les premières heures écoulées, la population se scinde en trois parties, le premier groupe est composé de personnes qui, pour des raisons diverses, abandonnent la programmation, le deuxième groupe de personnes découvre l’Amiga- Basic et s’en trouvent satisfaits (souvent, leur premier langage est le Basic) et les membres du troisième s’irritent des contraintes et des imperfections de l’AmigaBasic.
LE PASSAGE AU NIVEAU SUPERIEUR Le Basic HiSoft Basic intéressera principalement les participants des deux derniers groupes, même si on peut penser qu’il pourrait réconcilier les plus timides avec l’informatique. Avant de le décrire, il me faut expliquer brièvement ce à quoi on peut le comparer. Il ne faut pas chercher à démolir l’Ami- gaBasic, car ce n’est pas la base du langage qui doit être mis en cause, mais plutôt son implémentation ; après tout, il a de très vastes capacités dans l’interface avec le système (gestion des menus, de la souris, fonctions graphiques), il dispose de structures permettant une écriture propre et une mise au point rapide, ses instructions appartenant à la norme Microsoft. On peut lui adresser trois reproches : l’absence de fiabilité (certaines opérations ont pour conséquence une séance forcée de méditation transcendentale), une lenteur pénalisante et l’absence de certaines fonctions (si on a pris des habitudes avec un autre langage). Il importe de distinguer les produits « Basic » en fonction de leur caractère innovateur par rapport à l’AmigaBasic. En effet, il y a deux options : soit vous cherchez à rendre l’AmigaBasic plus rapide et plus agréable à utiliser (c’est l’optique AC-Basic HiSoftBasic), soit vous cherchez à le remplacer par un Basic différent (optique de True Basic et de GFA-Basic). L’AC- Basic est un compilateur destiné à transformer les programmes interprétés de l’AmigaBasic en programme à part entière. Moyennement efficace, il apporte fiabilité et rapidité en étant compatible, mais sans proposer des fonctionnalités supplémentaires. Le langage True-Basic est un Basic efficace, qui a la particularité d’exister sur d’autres machines et d’offrir, en conséquence, une bibliothèque de fonctions identiques pour chaque système, au détriment d’un vocabulaire qui lui est propre, il n’exploite pas en conséquence toutes les capacités de l’Amiga, mais peut être le choix pour un portage d’une machine à l’autre. Le GFA-Basic est un langage à part, car c’est un dialecte de Basic (avec sa syntaxe et son vocabulaire), totalement structuré, extrêmement étendu et hyper-rapide. Les performances sont époustouflantes, mais requièrent une plus grande finesse dans la programmation. L’interface avec le système est encore un peu bancal, car elle est trop inspirée encore du programme Atari. Le produit d’Hi-Soft se range dans la catégorie des clones de l’Amiga-Basic, il se veut résolument compatible avec son aîné, mais à la différence de l’Ac-Basic, il a été conçu pour en prendre la place. Il s’agit en réalité d’un environnement complet, car à côté du package Basic, qui contient un éditeur avec le compilateur intégré et le compilateur sous forme indépendante, Hi-Soft propose aussi un kit pour le développement en langage assembleur (Devpac2) qui fournit un débuggeur (Monam2), utilisable sur les programmes Basic, compilés. Evidemment, on peut s’interroger sur l’intérêt d'acheter deux logiciels (il est vrai que le débugger n’est absolument pas indispensable), cependant il est fort agréable de disposer d’un environnement similaire pour apprendre ou développer dans deux langages vedettes sur Amiga (le Basic et l’Assembleur). Examinons tout d’abord les différences au niveau du langage, qui peuvent gêner la transition entre l’interpréteur AmigaBasic et le compilateur Hi-Soft. Comme, le compilateur ne peut travailler que sur des fichiers ASCII sans caractères de contrôle, il faut donc décompacter les fichiers issus de l’AmigaBasic en les sauvant avec l’option ASCII. En contrepartie, l’utilisateur est libre de prendre l’éditeur de son choix (même si l’environnement intégré éditeur-compilateur est très attirant). Les instructions concernant la gestion de l’interpréteur, sont le plus souvent absentes, car elles n’ont pas de sens dans un programme compilé ; ainsi LOAD, SAVE, LIST, CONT, DELETE ne sont pas reconnues. L’oubli des instructions COMMON (pour le partage des données entre programmes chaînés) et RESUME NEXT (pour la gestion des erreurs) est légèrement ennuyeux, sans plus. Des instructions ont été modifiées ou ajoutées ; en voici la liste réalisée par votre serviteur : BIN$ (fournit la représentation en numérotation binaire d’un entier), BLOAD (charge un fichier binaire), BSAVE (sauve une zone mémoire dans un fichier binaire), CALL LOC (com- plémente la fonction CALL pour l’appel de sous- programmes), CLEAR (qui remet les variables à zéro, n’a pas tout à fait le même sens, puisqu’elle ne peut redéfinir les espaces mémoire disponibles), COMMAND$ (fournit les arguments de la ligne de commande qui a lancé le programme), COMMON SHARED (déclare que les variables et tableaux spécifiés, sont accessibles par les sous-programmes), CONST (associe des noms de variables à des valeurs entières), CVFFP MKFFP$ (convertit les réels simple précision en chaîne de caractère et vice versa pour le stockage dans des fichiers à accès direct), DECR INCR (incrémente et décrémente une variable de un), DEF FN (définit une fonction (sur plusieurs lignes si nécessaires avec l’accès aux variables globales), DO..LOOP (sorte de super structure WHILE UNTIL..WEND. Permet de tester au début ou à la fin de la boucle, ou d'en sortir très proprement par EXIT DO), EXIT ?? (permet de sortir de n’importe quelle définition, block ou instruction structurée, par exemple EXIT DO, EXIT FUNCTION, EXIT IF, EXIT FOR, EXIT SELEC), FEXISTS (teste l’existence d’un fichier), FILL (opère un remplissage d'une zone par une couleur, LCASE$ UCASE$ (convertit une chaîne de caractères en minuscules ou en majuscules), LOCAL (définit une variable comme automatique dans un sous-programme, à chaque appel récursif, une nou- velle variable est créée), LOG10 LOG2 (complètent la fonction LOG en donnant les logarithmes en base 10 et en base 2), MDIR RMDIR (crée et supprime un répertoire depuis un programme), PCOPY (envoie le contenu de l’écran sur l’imprimante sous la forme d’un dump graphique), REDIM (redimen- sionne un tableau), REPEAT..END (structure de boucle extrêmement générale sans condition, mais dotée d’une issue par EXIT), RESET (constitue un équivalent de CLOSE pour les fichiers), SELECT..CASE..END SELECT (structure de test pour une variable), STATIC (permet de spécifier si une variable persiste entre les appels, ou si un sous- programme n'est pas récursif), SYSTAB (retourne l’adresse d’un tableau contenant des pointeurs sur des données systèmes, à manipuler avec précaution !), VARPTRS (fournit l'adresse du sous- programme, à utiliser avec CALLS), WINDOWS (permet la création de fenêtres avec beaucoup plus de paramètres que dans l’AmigaBasic).

0
0
0
ü
0
?
W
En résumé, le Hl-Soft Basic dispose d’instructions structurées, plus nombreuses et plus cohérentes (avec la possibilité de sortir par un EXIT dans tous les cas), les plus agréables étant, à mon avis, le SELECT CASE qui remplace avantageusement des quantités de IF.. THEN.. ELSE et le DEF FN multilignes, qui sont une autre sorte de sous- programmes. Il dispose aussi de quelques fonctions pour l'interface avec les programmes en langage machine, puisqu’il simplifie le chargement et l’appel des sous-programmes écrits dans ce langage. Il offre enfin une plus grande liberté de plusieurs manières et dans celle des sous-programmes qui peuvent être récursifs (s’appeler eux-mêmes). En règle générale, les fonctions acceptent exactement les mêmes paramètres, à l’exception notable de CALL CALLS pour l’appel de sous-programmes en langage machine. L’HI-Soft Basic diffère tout spécialement dans sa gestion des nombres réels en simple précision pour lesquels il utilise un format moins précis, mais beaucoup plus rapide (il utilise le format des Fas Floating Point de Motorola au lieu du format IEEE). De cette différence pourraient découler des différences subtiles entre les versions interprétées et compilées, mais je n’ai pu le mettre en évidence dans des programmes courants. Il ressort de cette étude approfondie, qu’il est aisé d’écrire des programmes Basic qui tourneront à la fois sous l’interpréteur et sous forme compilée. Cependant, l’usage des fonctions nouvelles apportées par le Hi-Soft Basic, est tout à fait compréhensible s’il concerne l’interface avec des routines en langage machine, ou des structures de contrôle plus évoluées.
L’ENVIRONNEMENT INTEGRE Un des atouts de ce produit est l’environnement intégré, dans lequel on trouve un éditeur de texte et un compilateur, dont les nombreuses options
sont sélectionnâmes dans un menu. L’éditeur, rapide, est limité : il reconnaît à peine la souris pour positionner le curseur, il fait appel exclusivement au clavier pour les manipulations de blocs de textes, il n’a pas assez de fonctionnalités dans les menus. Cependant, on arrive à s’accomoder de ses différences, car il y a de nombreux raccourcis de menus au clavier et les requesters sont superbes (ils proviennent de la bibliothèque de routines ARP, dont le but avoué est de remplacer l’AmigaDos). Le compilateur comprend un nombre impressionnant d’options, mais dans la réalité, on utilisera toujours les mêmes. Il offre, entre autre, la possibilité d’inclure, au moment de la compilation, un fichier à l’intérieur du programme (très utile si vous avez déjà mis au point un ensemble de routines), ou celle de générer des programmes, soit indépendants, soit nécessitant la bibliothèque du Hi-Soft Basic pour fonctionner (dans le premier cas, vous êtes libres de distribuervotre chef-d’œuvre). Il est même possible de produire un code totalement indépendant, ou des modules, qu'une édition de liens ultérieurs, permettra de lier à des programmes en C ou en assembleur. Il propose notamment de nombreuses vérifications de la correction des opérations, des accès aux tableaux, un débordement de la pile, l’overflow des variables, ou l’ajout de numéros de lignes et de symboles pour faciliter le débuggage. En raison de la vitesse du compilateur, on dispose aussi d’un pseudo-interpréteur, car il suffit de compiler en mémoire pour exécuter le programme. Les programmes qui utilisent la bibliothèque partagée de Hi-Soft, permettent d’économiser la mémoire et puisque cette bibliothèque est présente dans le compilateur, il est possible de conserver le compilateur, l’éditeur, l’éditeur et la source lors de l’exécution d’un programme (ce n’est pas le cas avec le compilateur AC-Basic, plus gourmand). L’interface avec le système fait appel au même mécanisme de l’AmigaBasic, on déclare au préalable les bibliothèques et fonctions systèmes utilisées, pour pouvoir effectuer des CALL ; en conséquence, le passage des paramètres est toujours aussi peu pratique, mais on se débrouille (on est loin de la pléthore de fonctions du GFA-Basic). Le manuel en anglais, de près de 350 pages, est exemplaire, car il décrit le produit, il donne des conseils, il commente un exemple complet et raffiné (les tours de Hanoi), il fournit un descriptif exhaustif et alphabétique de toutes les fonctions et contient, pour le programmeur chevronné, des annexes fort intéressantes sur le portage des programmes et l’interfaçage avec l’assembleur. Il est, de plus, livré avec le livre « AmigaBasic Inside and Out », la version anglaise de l’excellent « Grand Livre de l’AmigaBasic » des éditions Micro- Application. B de Mil
55-INITIATION
ASSEMBLEUR
«• chose promise, chose due », aussi allons-nous voir de plus près comment sont construites les structures d’écran et de fenêtre, nécessaires à foute ouverture d’un quelconque de ces éléments.
A
vant tout, deux petites précisions : premièrement, une structure n'est rien d'autre qu'un bloc de paramètres en mémoire (le nom vient du langage C, où les structures sont couramment employées). Et deuxièmement, ne confondez pas « structure Screen » et « structure NewScreen ». La seconde est la structure dont vous allez effectivement passer l'adresse à Intuition pour l'ouverture d'un nouvel écran, la première étant la structure qu'intuition s'est bâtie elle-même pour gérer votre écran. La remarque est également valable pour les structures Window et New- Window.
Un structure d'écran (NewScreen) se compose de 32 octets, arrangés comme suit :
Octets
Description
0,1
Position X de l'écran
2,3
Position Y de l'écran
4,5
Largeur
6,7
Hauteur
8,9
Nombre de plans de bits
10
Détail pen
11
Block pen
12,13
View modes
14,15
Screen Type
16,17,18,19
Font
20,21,22,23
Default Title
24,25,26,27
Gadgets
28,29,30,31
Bitmap
Voyons maintenant tout cela de plus près.
Les deux premiers mots indiquent la position en X et en Y du nouvel écran, relativement au coin supérieur gauche de l'affichage (bref, le moniteur). Seule la position en Y a ici une importance, un écran ne pouvant être que « monté » ou « descendu » (à l'aide de la souris ou par programme). La position en X n'a été implémentée par les concepteurs de l'Amiga, que dans un souci de compatibilité avec d'éventuelles futures versions du système.
Les deux mots suivants indiquent respectivement la largeur et la hauteur de l'-écran.
Il faut ensuite définir le nombre de couleurs que notre écran sera capable d'afficher, ce qui revient à définir un certain nombre de plans de bits. Plus ce nombre est élevé, plus le nombre de couleurs représentables simultanément l'est aussi. La relation est la suivante : nombre de couleurs = 2 puissance nombre de plans de bits. Le nombre maximum prévu par Intuition est de 5, ce qui permet d'afficher 32 couleurs.
Les octets « Détail Pen » et « Block Pen » indiquent respectivement le numéro du registre de couleur à employer pour dessiner la ligne de titre et les gadgets, ainsi que la couleur d'écriture et le numéro du registre de couleur, à employer pour les gadgets sélectionnés et le fond du texte.
Le mot appelé « View Modes » sert à définir le mode de représentation de l'écran. Voici la signification et le nom des différents bits utiles de ce mot lorsqu'ils sont positionnés :
bit 15 : HIRES (mode haute résolution, 640 x 400) bit 11 : HAM (mode Hold And Modify) bit 10 : DBLPF (mode Dual PlayField) bit 8: GENLOCK (l'image provient d'une source vidéo externe) bit 7 : EXTRAHALFBRTfE (mode extra halfbrite, eh oui madame)
bit 3 : LDEN (mode Stylo Optique, branché sur le port 1) bit 2: LACE (mode Interlace). .
Les autres bits devraient, pour bien faire, être mis à 0 dans la structure, Intuition se chargeant toute seule comme une grande de les positionner à sa guise.
Le mot « Screen Type » qui vient par la suite, définit le type de l'écran. Apparemment, personne ne sait exactement à quoi il sert, mais une valeur standard de 15 fonctionne toujours.
Et on arrive aux quatre derniers mots longs qui compose cette structure NewScreen. Avec en tête du peloton, « Font », qui détermine l'adresse de la fonte à utiliser dans le nouvel écran. Il suffit pour cela de définir une structure TxtAttr décrivant la nouvelle fonte et de placer ici son adresse. Comment ? Vous préférez la fonte « Topaz » par défaut ? Pas de problème, il suffit de mettre ce mot long à 0. Facile, non ? « Default Title » est l'adresse du titre de l'écran (par exemple, le titre de l'écran du WorkBench est « WorkBench Screen »). Si vous ne voulez pas de titre particulier, indiquez 0.
« Gadgets » doit pour l'instant, dans l'état actuel d'intuition, être fixé sur 0. Il sera peut-être utilisé plus tard...
Et finalement « Bitmap » désigne l'adresse d'une Bitmap personnelle, si le flag CUSTOMBITMAP du mot « Type » est fixé. Comme ce n'est apparemment jamais le cas, autant le mettre à 0 (c'est même impératif).
Voilà, notre structure NewScreen est complète. On transmet son adresse à Intuition via la fonction OpenScreen (cf. Le mois dernier) et le tour est joué, notre écran est ouvert. En retour, Intuition renvoie un « handle » d'écran, c'est-à-dire un gestionnaire, qui sera utilisé lors de chaque accès à notre écran. Ce « handle » est en fait un pointeur sur une structure Screen. Elle est composée de quelques 342 octets, aussi vous ne m'en voudrez pas de la passer sous silence. D'autant plus qu'elle est entièrement détaillée dans pas mal de bouquins et,notamment, dans « Le livre du Graphisme » chez Micro- Application.
OUVRE UN PEU LA FENETRE
L'opération est quasi-identique pour ouvrir une fenêtre : passage de l'adresse de la structure NewWindow à Intuition, appel de la fonction Open- Window et sauvegarde du handle retourné. Voyons de plus près la structure de la structure (Excusez-moi pour les répétitions, mais bon, on fait ce qu'on peut...) NewWindow. Elle est composée de 48 octets :
Octets
Description
0,1
Position X
2,3
Posiiion Y
4,5
Largeur
6,7
Hauteur
8
Détail Pen
9
Block Pen
10,11,12,13
Flags IDCMP
14,15; 16,17
Flags
18,19,20,21
FirstGadget
22,23,24,25
CheckMark
26,27,28,29
WindowTitle
30,31,32,33
Screen
34,35,36,37
Bitmap
38,39
Largeur minimale
40,41
Hauteur minimale
42,43
Largeur maximale
44,45
Hauteur maximale
46,47
Type d'écran
Et c'est reparti pour l'étude de détail. Les quatre premiers mots parlent d'eux- mêmes, il s'agit de la position et de la taille de la fenêtre lors de son ouverture. On trouve ensuite les deux octets Détail Pen et Block Pen qui se comportent de la même manière que dans la structure NewScreen. Les flags IDCMP (Intuition Direct Communication Message Ports) méritent plus d'attention. Il s'agit d'un mot long, destiné à demander à Intuition, de prévenir le programme « père » de la fenêtre, des divers événements qui peuvent survenir. Seuls les vingt premiers bits ont une signification. Voici les valeurs possibles :
$ 000001 : SIZEVERIFY
$ 000002 : NEWSIZE (modification de la teille (h la fenêtre) $ 000004 : REFRESHWINDOW (redessin du contenu de la fenêtre)
$ 000008 : MOUSEBUTTONS (un des boutons de la souris est enfoncé)
$ 000010 : MOUSEMOVE (la souris a été déplacée)
$ 000020 : GADGETDOWN (un gadget a été appelé)
§000040 : GADGETU? (idem)
$ 000080 : REQSET (un requester a été appelé)
$ 000100 MENÜPICK (une entrée du menu a été sélectionnée) $ 000200 : CLOSEWINDOW (la fenêtre a été fermée)
$ 000400 : RAWKEY (une touche du clavier est enfoncée) $ 000800 : REQVERIFY §001000 : REQCLEAB $ 002000 : MENUVERIFY
$ 004000 : NEWPREFS (modification des préférences)
$ 008000 : D1SKINSERTED (une disquette est mise dans un àive) ¦'$ 010000 : DISKREMOVED (une disquette est enlevée d'un drive) $ 020000 : WBENCHESSAGE (le WorkBench n'est pas content !) $ 040000 : ACTIVEWINDOW (activation de la fenêtre)
$ 080000 : MCTIVEWMDOW (désactivation de la fenêtre) $ 100000 : DELTAMOVE (annoncer les déplacements de la souris en coordonnées relatives).
Ces valeurs sont, bien entendu, cumulables (vos esprits acerbes auront remarqué que certaines valeurs ne sont pas décrites... C'est tout simplement parce que je l'avoue j'en ignore la signification intrinsèque... Mon méat coule pas, comme dirait un copain à moi).
Le mot suivant définit encore des flags, mais qui caractérisent la fenêtre :
$ 000001 : WINDOWSIZING (la taille ch la fenêtre peut être modifiée)
$ 000002 : WINDOWDRAG (la fenêtre peut être déplacée) $ 000004 : WINDOWÜEPTH (la fenêtre peut être « empilée » sous ou sur les autres)
$ 000008 : WINDOCLOSE (la fenêtre peut être fermée) $ 000010 : SIZEBRIGHT $ 000020 : S1ZEB0ÏÏ0M
$ 000040 : SIMPLE REFRESH (redessiner manuellement) $ 000080 : SUPER BITMAP (stocker le contenu entier de la fenêtre)
$ 000100 : BACKDROP (la fenêtre peut être amenée en arrière plan)
$ 000200 : REPORTMOUSE (annoncer les coordonnées de la souris)
$ 000400 : GIMMEZEROZERO (séparation entre les iignes de menu et la fenêtre)
$ 000800 : BORDERLESS (fenêtre sans bord)
$ 001000 : ACTIVATE (la fenêtre est activée dès sont ouverture) $ 002000 : WINDOWACTIVE (la fenêtre peut être activée) §004000 : INREQUEST (la fenêtre contient un requester) $ 008000 : MENUSTATE (reporter les sélections de menu) $ 010000 : RMBTRAP (lorsque la fenêtre est active, le bouton droit de la souris n'appelle pas de menu)
$ 020000 : NOCAREREFRESH (pas de message de redessin) $ 100000 : WINDOW REFRESH (c'est Intuition qui redessinera elle-même la fenêtre)
$ 200000 : WBENCHWMXM (la fenêtre appartient à l'écran du WorkBench)
Là encore, les valeurs peuvent être cumulées, et là encore, je ne connais pas la signification de certaines valeurs. Veuillez pardonner mes excuses.
Le mot long « FirstGadget » permet de placer ses gadgets personnels dans la fenêtre ; il s'agit donc d'un pointeur sur la structure de ces gadgets. Si aucun gadget particulier n'est utilisé, il faut le mettre à 0.
Le mot long « CheckMark » est un pointeur sur une structure graphique, permettant de représenter les points de menus sélectionnés. Si l'on met 0, c'est le crochet stantard qui est utilisé.
WindowTitle pointe sur le titre la fenêtre en mémoire, Screen est le pointeur sur la structure Screen de l'écran auquel la fenêtre appartient (vous savez, le « handle » renvoyé par OpenScreen) et Bitmap sert de pointeur sur une bitmap personnelle le cas échéant (cf. La structure NewScreen). Les quatre mots suivants indiquent les tailles minimales et maximales de la fenêtre en pixels et le dernier mot indique le type d'écran auquel appartient notre nouvelle fenêtre (encore une fois, cf. NewScreen).
S1000OÔP !
Voilà, ça n'a pas été sans mal, mais le plus dur est fait. Le mois prochain, nous verrons comment réagir aux différents messages qu'intuition peut envoyer à un programme, ce qui sera l'occasion de devinez quoi ? Un listing, oui. À bientôt.
Max
DES PRODUITS EXCLUSIFS
SYNERGY 500
Contrôleur SCSI + Disque dur 20 Mo : autoboot + option RAM additionnelle
Mi Avril 89
42, rue Lamartine 75009 PARIS Tél : 48 78 11 65
excellence!.
îv
Métros : CADET NOTRE DAME DE LORETTE
DISTRIBUTEURS !
Contactez PAUL
MODERN APPLICATIONS DEVELOPMENT Division Import 82, av. Du Gai Leclerc - 92100 BOULOGNE - 42.80.64.02
EXCELLENCE
traitement de texte de qualité révélé par la presse informatique... En français (dictionnaire inclus) Courant avril
BON A RETOURNER A MAD (adresse ci-contre)
NOM : .....PRENOM : ..
ADRESSE : ...
? Je désire recevoir une documentation sur les produits représentés
INITIATION
¦¦1 I WÊÊÊÊÊÊKÊÊÊ
54
(PETITE) INITIATION AU GFA BASIC
Puisque ce numéro 11 de Commodore Revue est l’occasion d'un super-concours concernant le GfA- Basic, il nous a semblé judicieux de vous présenter un peu mieux ce nouveau langage, afin que les petits nouveaux ne soient pas trop découragés dès le départ.
I Attention toutefois, ceci n'est pas, mais alors là pas du tout, une initiation au GfA-Basic en général. Encore une fois, cet article et ceux qui vont suivre, se placent dans le cadre du concours ci-dessus mentionné ; le but recherché est de montrer, à partir de moultes explications et quelques exemples simples mais concrets, comment utiliser le GfA-Basic pour faire du graphisme, de l'animation, de la musique et des bruitages, bases essentielles de tout jeu. Ce sera également l'occasion de présenter quelques utilitaires pouvant vous aider à concrétiser votre projet. Ainsi, tout le monde part avec des chances égales.
GRAPHISME EN GFA
Voilà qui aurait pu être le titre d'un livre... D'ailleurs, C'EST le titre d'un livre, mais pas sur Amiga. Bon, passons. Dans ce premier chapitre, nous allons rapidement voir les fonctions que le GfA-Basic met à notre disposition pour faire du graphisme (l'animation viendra juste après),.
Pour fixer les couleurs, nous avons tout d'abord l'instruction SETCOLOR. Il en existe deux variantes : SETCOLOR registre, rouge, vert, bleu fixe la proportion des couleurs (RVB pour les intimes) pour le registre de couleur numéro « registre ». L'intensité de RVB est fixée d'après une échelle allant de 0 (très faible) à 15 (très forte). SETCOLOR registre, valeur donne au registre de couleur numéro « registre » la valeur « valeur » (merci, m'sieur Lapa- lisse). Le paramètre « valeur » est calculé comme suit : (rouge * 512) + (vert
* 16) + bleu. Etant donné que chaque écran peut avoir sa propre palette, l'instruction SETCOLOR n'agit que sur l'écran en cours.
Pour déterminer la couleur avec laquelle on va écrire un texte à l'écran (un score, etc.), il faut utiliser l'instruction COLOR, suivie de trois paramètres : COLOR caractères, fond, bord. Le paramètre « caractères » fixe la couleur d'écriture des caractères, « fond » la couleur du fond (représenté uniquement en mode GRAPHMODE 1 voir plus loin), et « bord » celle de la bordure des figures remplies (PBOX, PCIRCLE, PELLIPSE et POLYFILL voir aussi plus loin).
Nous pouvons maintenant tracer des points et des lignes ; les instructions PLOT, LINE, et DRAW vont nous y aider. PLOT x,y place un point aux coordonnées x et y spécifiées, dans la couleur définie par CÔLOR. LINE xl, yl, x2, y2 dessine une ligne du point (xl, yl) au point (x2, y2), toujours dans la couleur définie par COLOR. Enfin,
DRAW xl, yl TO x2, y2 TO x3, y3 TO... trace une série de droites des points (xl, yl) à (x2, y2), puis de (x2, y2) à (x3, y3), etc., encore une fois dans la couleur définie par COLOR. Le nombre de couples coordonnées possibles n'est limité que par la longueur d'une ligne dans l'éditeur (255 caractères). Notez que DRAW x, y est équivalent à PLOT x,y alors que DRAW TO x, y trace une ligne du dernier point tracé à celui de coordonnées (x, y). Enfin, DRAW xl, yl TO x2, y2 équivaut à LINE xl, yl, x2, y2, mais dans ce dernier cas, je vous conseille d'utiliser LINE, sa mise en œuvre étant plus rapide (l'éditeur sait en effet combien de paramètres il doit trouver après l'instruction LINE, ce qui n'est pas le cas avec DRAW). Pour les amoureux du LOGO, une variante de DRAW permet d'utiliser une sorte de macro-langage, mais elle n'est pas du tout adaptée à un jeu.
Quant à tester la couleur d'un point d'écran donné, c'est très simple avec la fonction POINT(x, y).
Rien qu'avec cela, vous devriez déjà pouvoir faire un Quix... Comment ? Ca ne vous suffit pas ? Qu'à celà ne tienne, passons aux figures géométriques.
GfA-Basic sait dessiner tout seul, pour peu qu'on le lui demande, quand même, faut pas exagérer, quelques unes des figures géométriques de base, à savoir le carré (en règle générale, le parallélogramme quelconque), le cercle et l'ellipse :
BOX xl, y 1, x2, y2 dessine un parallélogramme dont les sommets haut- gauche et bas-droit ont pour coordonnées (xl, yl) et (x2, y2).
CIRCLE x, y, c trace un cercle de centre (x, y) et de rayon r.
ELLIPSE x, y, rx, ry trace une ellipse de centre (c, y), de rayon horizontal rx et de rayon vertical ry.
Chacune de ces commandes trace une figure vide, c'est-à-dire justement son contour. Pour obtenir une figure pleine, il faut ajouter un P devant le nom de la commande, afin d'obtenir PBOX, PCIRCLE et PELLIPSE. Les paramètres sont bien entendu identiques.
INITIATION
Maintenant, il est possible que vous désiriez dessiner des polygones quelconques. Cela est réalisable en GfA- Basic grâce aux commandes POLY- LINE et POLYFILL.
POLYLINE n, x(), y() trace un polygone vide de n côté, dont les sommets sont définis dans les tableaux x() et y(). Le premier sommet a pour coordonnées (x(0), y(0)), le dernier (x(n-l), y(n-l)). Le premier et le dernier sommets sont automatiquement reliés entre eux. POLYFILL n, x(), y() agit de même, mais en remplissant le polygone ainsi dessiné. Tout ceci rappelera sans nul doute quelque chose aux habitués de l'instruction ARE A de TamigaBasic...
Dans tous les cas de figures pleines, l'instruction BOUNDARY 0 empêche le dessin du cadre, alors que BOUNDARY 1 l'autorise.
Il est possible de définir le style des lignes employées pour dessiner le contour des figures, grâce à l'instruction DEFLINE. Cette instruction est suivie d'un paramètre dont les 16 bits déterminent l'aspect de la ligne : un bit positionné correspond à un point tracé.
Reste maintenant à remplir une surface quelconque. L'instruction FILL est là pour ça !
FILL x, y opère donc une opération de remplissage d'une surface, à partir du point de coordonnées (x, y) spécifié. Un troisième paramètre permet de définir une couleur de délimitation du remplissage (couleur donc, qui ne sera pas affectée par l'opération, alors que les autres, si).
Chouette ! On peut commencer à dessiner quelques trucs mignons, surtout que la rapidité du GfA d'une part, et celle du Blitter d'autre part, autorisent, même avec ces commandes simples, quelques effets spéciaux amusants... Oui mais voilà, toutes les figures remplies sont uniformes et de la même couleur. Ne peut-on rien y faire ?
Bien sûr que si, l'instruction DEF- FILL n'a pas été implémentée pour rien. Il en existe même deux variantes :
DEFFILL couleur, style, motif force
le remplissage (avec PBOX, PCIRCLE, PELLIPSE, POLYFILL et FILL) avec la couleur « couleur », le style « style » et le motif « motif ». « couleur » indique un numéro de registre de couleur et « type » peut prendre les valeurs suivantes :
AMIGA
0= vide 1 = rempli 2= pointillé 3= hachuré
« motif », quant à lui, permet de choisir entre l'un des 24 motifs de points ou l'un des 12 motifs de ligne prédéfinis.
Avec la seconde variante de DEFFILL, on peut même définir soi-même, le motif de remplissage :
DEFFILL couleur, motif$ où le rôle de « couleur » ne change pas et où la chaîne de caractères motif$ contient le motif de bits désiré.
En informatique, et plus particulièrement en dessin sur ordinateur, il existe plusieurs modes de tracés de points. L'Amiga n'échappe pas à la règle (il aurait du mal) et propose quatre modes distincts : IAM1 (transparent), JAM2 (remplacer), COMPLEMENT (xor) et INVERSVID (inversion vidéo). Le mode peut être choisi grâce à l'instruction GRAPHMODE, suivie d'un nombre de 0 à 4 indiquant le mode choisi.
Pour écrire du texte à l'écran, on peut utiliser l'instruction PRINT. C'est bien, mais elle possède un défaut majeur : on ne peut pas placer le texte au pixel près à l'écran. Pour ce faire, il faut passer par l'instruction TEXT : TEXT x, y, texte$ affichera la chaîne de caractères « texte$ » à la position graphique (x, y).
Une fonction sympathique, lorsqu'on désire n'afficher du graphisme que dans une fenêtre d'écran donnée (par fenêtre, entendez « section » d'écran ; il ne s'agit pas des fenêtres d'intuition) est CLIP. Let clipping » est une technique permettant de limiter les sorties graphiques à une zone rectangulaire de l'écran. Il faut indiquer comme paramètre à l'instruction CLIP les coordonnées des coins haut-gauche et bas- droit du rectangle de clipping :
CLIP xl, yl TO x2, y2
Ceux qui préfèrent spécifier la hauteur et la largeur du rectangle de clipping peuvent le faire avec :
CLIP x, y, larg, haut
Le clipping est désactivé (c'est-à-dire que les sorties graphiques se feront à nouveau sur la totalité de l'écran courant, grâce à CLIP OFF).
Finissons en beauté ce tour d'horizon des instructions graphiques avec PUT, GET, DISPLAY et VSYNC.
PUT et GET permettent respectivement de capturer dans une chaîne de caractères, des sections rectangulaires d'écran et de les replacer par la suite. Leur syntaxe est :
GET xl, yl, x2, y2, portion$
PUT x3, y3, portion$ , mode.
Là encore, (xl, yl) et (x2, y2) sont les coordonnées des coins opposés en diagonale du rectangle à capturer dans la chaîne portion$ , tandis que (x3, y3) indique les coordonnées où déposer cette même chaîne portion$ . Le paramètre « mode », facultatif, indique la combinaison logique de bits à appliquer dans la source (portion$ ) et la destination (le dessin présent à l'écran).
DISPLAY OFF permet de suspendre provisoirement l'affichage de l'image, en désactivant le DMA. Cela permet de dessiner et de n'afficher le résultat, qu'une fois le travail terminé. DISPLAY ON, au contraire, ré-active le DMA et donc l'affichage.
Enfin, VSYNC permet d'attendre le retour du faisceau vertical servant à la représentation sur le moniteur de l'écran. En d'autres termes, VSYNC permet de synchroniser la construction de l'écran, et d'éviter ainsi, de désagréables parasites lors d'animations avec PUT et GET.
ANIMATION EN GFA
Cela aussi, pourrait être le titre d'un livre... Bon, tout ce qu'on vient de voir est bien joli, mais ce n'est pas avec cela que vous allez faire le shoot'em up du siècle, genre Hybris en mieux. Il faut maintenant commencer à utiliser les sprites et les bobs.
GfA-Basic dispose de l'instruction SPRITE, qui permet de gérer les sprites du hardware. Si l'Amiga dispose de 8 sprites, le GfA ne permet d'en gérer que 7, le premier, de numéro 0, étant réservé au pointeur de la souris. Un sprite a obligatoirement une largeur de 16 pixels, mais sa hauteur peut être quelconque et il ne peut avoir que quatre couleurs. Avant d'utiliser un sprite,
56
INITIATION
il faut définir son aspect. Ceci se fera par la commande :
SPRITE n, s$
où « n » est le numéro du sprite à définir et s$ la chaîne de caractères contenant sa définition.
Si vous n avez plus besoin d'un sprite particulier, vous pouvez l'effacer de la mémoire simplement en spécifiant pour s$ une chaine vide (s$ = « » ).
Pour déplacer un sprite, il faudra utiliser la commande :
SPRITE n, x, y
qui a pour effet d'effacer le sprite de sa position actuelle pour le ré-afficher à la position (x, y).
Enfin, SPRITE OFF désactive TOUS les sprites en cours, y compris le pointeur de souris, tandis que SPRITE ON les ré-active à nouveau.
Notez quand même que les sprites ne sont pas souvent utilisés dans le jeux, les programmeurs donnant la préférence aux BOBs, que justement, ça tombe bien, voici venir.
Le moins que l'on puisse dire, c'est que le manuel d'utilisation du GfA- Basic Amiga est plutôt avare en renseignements sur les Bobs... Voici qui, j'espère, comblera ce manque. Un BOB (Blitter Object) est une forme particulière de sprites, gérés par le Blitter. Leur nombre est limité à 32767, ce qui, dans la plupart des cas, suffira amplement I Toute une série d'instructions, empruntées il est vrai à l'AmigaBasic, existe dans le GfA-Basic pour les gérer efficacement.
Comme pour les sprites, il convient de commencer par définir la forme du (des) Bobs. Cela se fait très simplement grâce à la commande :
OBJECT.SHAPE bob, defS où « bob » représente le numéro du Bob a définir et « def$ » sa chaîne de définition (utiliser pour cela le programme IFF TQ- BOB.GFA fourni
sur la disquette originale du GfA- Basic). On peut également utiliser cette commande d'une autre manière :
OBJECT.SHAPE bobl, bob2 et copier ainsi la définition du Bob numéro « bobl » dans celui de numéro « bob2 ».
Cela suffit-il pour animer un ou plusieurs Bobs à l'écran ? Malheureusement non, car il convient encore de régler tout un tas de paramètres pour chaque Bob défini. Premièrement, il faut définir la priorité des Bobs, c'est- à-dire un ordre dans lequel les différents Bobs seront dessinés :
OBJECT.PRIORITY bob, prior où « bob » est le numéro du Bob concerné, ét « prior » sa priorité, comprise entre 0 et 32767. Les Bobs, de priorité plus élevée, seront dessinés en premier, donc SOUS ceux de priorité plus faible.
Il faut également déterminer dans quel plan de bits, c'est-à-dire dans quelle(s) couleur(s) chaque Bob sera dessiné, et si les plans de bits non utilisés devront être effacés ou laissés tels quels. Cela se fait avec la commande : OBJECT.PLANES bob, PlanePick, PlaneOnOff
Amiga 500 écran couleur 1084 1 joystick 3 btes de disks 3" 1 2 1 Tapis de souris 1 jeu (valeur 250frs)
AMIGA ATARI ARCHIMEPES AMSTRAD VICTOR
CITIZEN 120D
1ère main des machines révisées garanties 6 mois à des prix défiant toute concurrence appelez nous au
42. 43.22.78.
7490,00 ttc
Amiga 500 écran couleur 1084 Extension mémoire 512 KO A501 Sculpt 3d+ARender 20 Disks 3‘1 2
8585,00 ttc
UNITES CENTRALES
Arniga 500 UC512Ko 4725.00 ttc
Amiga 500 UC- écran coul. 7490.00 ttc
Amiga 2000 UC 1 Mo 11500.00 ttc
Amiga 2000 UC+écran coul. 14500.00 ttc
Amiga 2000 UC.écran.disk dur 22400.00 ttc
Amiga 2000UC,écran,disk dur.XT 26200.00 ttc PROMO EDUC AMIGA NC
1550,00 frs
AMIGA 2000 Ecran Hte résolution 1081 Package Bureautique (Maxiplan. Superbase et Prowrite )
Reprise aux meilleures conditions de votre ST pour tout achat d’un AMIGA
Sculpt 3D et Animate 3D 1 an de maintenance sur site
18900,00 ttc
Domaine Pyjblic Amiga
Bien débuter sur Amiga
Le livre du langage machine
Trucs et astuces
Clés pour Amiga
Rom Kemel : Exec
Rom Kemel : übraries & Devices
Rom Kerne! : Intuition Manual
Recevez la liste sur disquette par simple envoi d'une enveloppe timbrée.
Echange et vente des DP 30 frs Se disk, le 5ème gratuit
E? (1) 42-43-22-78
Grand parking à proximité
62 RUE GABRIEL PERÎ 93200 ST-DENIS
METRO SAINT-DENIS BASIUQUE OUVERT LE DIMANCHE MATIN DE 9H A 12H30
DU LUNDI AU SAMEDI DE 9H A 19H sans interruption_
SI
INITIATION
mi
où « bob », encore une fois, représente le numéro du Bob concerné. PlanePick et PlaneOnOff (ce sont les noms donnés par Commodore à ces variables) sont un peu pius difficiles à mettre en œuvre. Vous avez déjà certainement entendu dire que l'image que vous voyez sur votre moniteur est composée, en mémoire, de plans de bits. Le principe est que plusieurs bits sont nécessaires pour définir la couleur d'un point. Plus le nombre de plans de bits (on dit aussi : la profondeur) utilisés est grand, plus on peut avoir de couleurs simultanément à l'écran (jusqu'à 5 pians, soit 32 couleurs), mais plus on consomme de mémoire. Le Blitter, processeur graphique de l'Àmiga, permet d'afficher des Bobs ayant une profondeur inférieure à celle de l'écran. Dans ce cas, il faudra déterminer quels plans de bits du Bob seront écrits dans quels plans de bits de l'écran. C'est à celà que servent les valeurs PlanePick et PlaneOnOff. Ces valeurs peuvent être calculées avec la formule suivante : Plane = bl + (2 * b2) + (4 * b3) + (8 * b4) + (16 * b5) où bl à b5 représentent les numéros des cinq plans de bits possibles. Si un pian doit être utilisé par le Bob, mettre son numéro, dans la formule ci-dessus, à 1 et, à 0, dans le cas contraire. On obtient ainsi la valeur de PlanePick. On utilise la même formule pour calculer PlaneOnOff, à ceci près qu'il faut ici définir quoi faire des plans de bits de l'écran non utilisés par PlanePick : les effacer (remplacer dans la formule leur numéro par 0) ou les laisser tels quels (remplacer leur numéro par 1).
Maintenant que le Blitter sait à quoi nos objets ressemblent, dans quel ordre et de quelle manière les afficher, il faut lui dire comment il devra les déplacer, c'est-à-dire, principalement, définir leur vitesse. Il existe deux sortes de vitesses possibles, qu'il faut définir toutes les deux. La première concerne l'accélération au démarrage du Bob (un peu comme une voiture qui monte de 0 à 100), la seconde son déplacement effectif (sa vitesse de croisière). On utilise pour cela les commandes : OBJECT.AX bob, accel OBJECT.AY bob, accel OBJECT.VX bob, vitess OBJECT.VY bob, vitess
Comme vous le voyez, on peut défi
57
nir des vitesses différentes pour l'axe des X et celui des Y. Le paramètre « bob » est, ça devient une habitude, le numéro du Bob concerné, tandis que « accel » et « vitess » sont exprimés en pixels seconde (on n'arrête pas le progrès).
On a presque terminé, on peut maintenant afficher notre (nos) Bob(s). Cela se fait avec la commande : OBJETC.ON bobl, bob2, bob3,...
Si aucun paramètre ne suit OBJECT. START, ce sont tous les Bobs définis qui seront affichés... mais pas encore animés. Il nous faut pour cela utiliser la commande :
OBJECT.START bobl, bob2, bob3,... mis en mouvement ; le Blitter les anime tout seul, comme un grand, il n'y a plus qu'à le regarder faire. On arrêtera le mouvement avec :
OBJECT.STOP bobl, bob2, bob3,...
La même remarque que précédemment est valable quant à l'absence de paramètres derrière cette commande.
Mais si l'on préfère déplacer soi- même un ou plusieurs Bobs, en indiquant au fur et à mesure ses coordonnées, celà peut se faire avec :
OÊJECT.X bob, x OBJEXT.Y bob, y
Ce programme utilise le Bob
du fichier magic.bob sur .la disquette originale du GTA-Basic.
Ouvre un écran (320x200, 32 couleurs) OPENS 1,0.0,320-, 200,5,0 Ouvre une fenêtre (sinon, salutations du GOUROU !>
0PENW 1,0,0,320,200,0,0
Charqe la palette des couleurs OPEN "i“, 1,"GFABASICsBémos demo.pal"
FOR v? .=0 TO PRED (LOF ( 1 ) 2)
SETCOLOR ySî, CVI ( I NPUt$ ( 2, 1 > >
NEXT vZ
CLOSE 1
7 Charqe le Bob
OPEN "i", 1,“GFABASÎC:Démos maqic.bob" s$ =INPUTi(LOF( 1), 1)
NID*(s*,22, 3. )=CHR$ (24) ! SAVEBACK+OVERLAY
CLOSE 1
7 Donne la définition du E*ob OBJECT.SHAPE l,s$
7 Tous les plans sont utilisés !
OBJECT.PLANES 1
7 Zone de clippi.nq (tout l'écran)
OBJECT« CLIP 0,0,320,200
REPEAT
7 Dessine le Bob
OBJECT.ON
7 à la position X
OBJECT.X 1,MOUSEX
7 et Y de 1 a souris
OBJECT.Y 1,MOUSEY
7 Fin avec un clic
UNTIL MQUSÈK ?
7 Ciao les bobs OBJECT.CLOSE 7 Ciao l'écran CLOSES 1 7 Bonjour GFA !
EDÏT
qui ira placer le Bob de numéro « bob » aux coordonnées x et y spécifiées.
Pour effacer temporairement de l'écran un ou plusieurs Bobs, on utilisera judicieusement la commande : OBJECT.OFF bobl, bob2, bob3,... tandis que la commande : OBJECT.CLOSE bobl, bob2, bob3,... effacera définitivement un ou plusieurs Bobs de la mémoire.
Reste la commande :
OBJECT.CLIP xl, yl, x2, y2 qui, tout comme son quasi-homologue vu plus haut, permet de définir un rectangle de clipping duquel les bobs ne pourront sortir, quitte à être « tronqués » avant d'être affichés. Cette commande affecte tous les Bobs en place et est réglé sur l'écran entier par défaut.
Enfin, et puisqu'il faut bien que tout ait une fin, même cette suite interminable de OBJECT.xxxxx, le GfA-Basic permet de détecter les collisions de Bobs entre eux. La commande :
ON COLLISION GOSUB procédure permet en effet de se brancher sur la procédure de nom « procédure » en cas de collision entre deux Bobs. C'est ensuite au programme de décider, au sein de cette collision, de la marche à suivre, en interrogeant le tabieau COL- LISIONO : COLLISION(O) indique quel est le Bob responsable de la collision, tandis que COLLISION(COLLI- SION(O)) indique le Bob partenaire du carambolage. Si cette valeur est inférieure à 0, c'est que le Bob est entré en conflit, soit avec le bord de l'écran, soit avec le rectangle de clipping déiinit par OBJECT.CLIP. En ce cas, une valeur de 1 indique que c'est en haut de l'écran qu'à eu lieu la collision, 2 indique la gauche, 3 le bas et 4 la droite.
Les habitués de l'AmigaBasic regretteront certainement l'absence des instructions COLLISION ON, COLLISION OFF et COLLISION STOP.
OUUUUUFFF S
Eh bien ma foi, tout cela est plutôt dur à digérer d'un seul coup... Pour mieux illuster l'animation des Bobs, un petit programme suit cet exposé ma foi bien touffu. Décortiquez-le dans tous les sens et modifiez-le à loisir, c'est encore le meilleur moyen d'apprendre et de comprendre. Comme dit la sagesse populaire : « c'est en se mouchant qu'on devient moucheron... »
Max
SHD30:
Disque Dur Externe 30 Mo pour Amiga 500 eî Amiga 1000, logé dans un boîtier alimenté.
4990 Frs TTC
Tel: 56 37 43 78 Fax : 56 04 08 95
Skyline
Disque Dur 30 Mo pour Amiga
Les produits Skyline sont distribués en France par : CIS
Manuel en français,
disquette d’instailation 33400 TALcNCE
contenant le Driver Skyline permettant la gestion de 2 Disques Durs. Taux de transfert : 260 Ko sec.
S. j V 1 * ‘ ‘ : ‘ 1 l.>. V Li -V-
-
1
Dans les limites du stock disponible ! Crédit Cetelem.Carte Aurore.Carte Bleue.Facüités de paiement j Conditions exceptionnelles pour collectivités.comités d'entreprise.
P;V Li -V-
-
1
Dans les limites du stock disponible ! Crédit Cetelem.Carte Aurore.Carte Bleue.Facüités de paiement j Conditions exceptionnelles pour collectivités.comités d'entreprise.

Click image to download PDF

AMIGA NEWS TECH numero 00 (04-1989)

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


Thanks for you help to extend Amigaland.com !
frdanlenfideelhuitjanoplptroruessvtr

Connexion

Pub+

52.6% 
11.6% 
4.7% 
3.8% 
3.1% 
2.1% 
2.1% 
1.5% 
0.9% 
0.8% 

Today: 68
Yesterday: 89
This Week: 157
Last Week: 665
This Month: 2599
Last Month: 2920
Total: 72209

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