Une fois que vous avez travaillé un peu avec AMOS, vous voudrez passer à quelque chose d'un peu plus avancé que simplement créer des jeux. C'est ce que ce chapitre aborde : comment repousser les limites, comme on dit en Californie, une manière décontractée de dire voyons ce que nous pouvons faire si nous changeons un peu les règles.
Certaines des choses dont je vais parler dans ce chapitre peuvent être un peu difficiles à comprendre, et c'est normal. Je ne m'attends pas à ce que vous soyez un expert en AMOS, sinon vous n'auriez pas acheté ce livre, n'est-ce pas ? Ce livre a pour but de vous montrer ce qui est possible et de vous donner les moyens d'aller un peu plus loin par vous-même, si vous le souhaitez.
Beaucoup de choses ont été ajoutées à AMOS depuis la première révision, comme par exemple le mode entrelacé dont nous avons parlé dans un chapitre précédent. L'une des plus grandes améliorations du système est la possibilité de multitâche, ce qui non seulement nous permet de créer des applications basées sur le Workbench, mais aussi nous donne un environnement de travail plus flexible. Cela signifie que nous pouvons avoir AMOS qui fonctionne en arrière-plan et travailler sur une tâche AmigaDOS en même temps, comme formater des disques, explorer des répertoires, et en général améliorer notre productivité en ayant deux programmes accessibles en même temps en appuyant sur un bouton.
L'Amiga est un ordinateur multitâche, il n'y a aucun doute à ce sujet, mais AMOS a toujours pris le contrôle du système de sorte que vous ne pouviez pas accéder à d'autres programmes pendant que vous codiez. Maintenant qu'AMOS prend en charge le multitâche, vous pouvez basculer entre l'éditeur AMOS et le Workbench d'une simple pression de touche. En appuyant sur
Vous avez également accès au demandeur de fichiers d'AmigaDOS. Cependant, cette flexibilité a un petit inconvénient.
Il existe de nombreuses façons pour un programmeur expérimenté d'accéder aux zones importantes de l'Amiga, et le programmeur en code machine est plus que bien pris en charge. Les commandes que vous devrez examiner en premier sont PEEK, POKE, DEEK, DOKE, LEEK et LOKE, qui vous donneront accès aux octets, mots et longwords dans toutes les zones mémoire de l'Amiga. (Ne vous embêtez pas à créer votre propre assembleur, car Gary Symons l'a déjà fait. Voir ci-dessous.)
La conversion hexadécimale en décimale est simple avec les fonctions HEX$ et BIN$ :
Rem * Hex/Bin converter.AMOS * Rem Screen Open 0,640,200,16,Hires Paper 0 : Cls 0 D0 Input "Number to convert: ";A X$=Hex$(A) Print "The hex version of this number is: ";X$ Y$=Bin$(A) Print "The binary version of this number is: ";Y$ Cdown Loop
C'est un outil utile pour les programmeurs, en particulier pour la création de graphiques et de bitmaps à partir de zéro. (Retrouvez ce bloc de papier quadrillé que vous aviez. Cela pourrait vous sauver la vie !)
À partir de là, cela devient un peu plus complexe, donc nous ne nous attarderons pas dessus. Mais si vous êtes programmeur en code machine, vous voudrez probablement vous renseigner sur l'assembleur AMOS.
Oui, c'est bien vrai, sur la disquette AMOS PD LPD9 et disponible gratuitement avec le compilateur AMOS, il existe l'assembleur AMOS, pour ceux d'entre vous qui ne sont pas de simples débutants en AMOS. Certaines personnes (et qui pourrait leur en vouloir) ont quelques connaissances en code machine. Ça arrive.
Si c'est votre cas, vous n'avez pas besoin de jeter toutes ces connaissances simplement parce que vous avez été séduit par les charmes évidents du langage AMOS. Maintenant, vous pouvez combiner AMOS et code machine pour une programmation rapide et efficace. Créez des routines contenant des choses qu'AMOS ne peut pas faire et intégrez-les dans vos programmes AMOS. Ajoutez des routines de rendu rapides, et accélérez les parties d'AMOS qui ne sont pas assez réactives à votre goût.
Ou peut-être que vous ne connaissez pas le code machine (comme moi par exemple) mais que vous pensez qu'un jour vous l'apprendrez. C'est une excellente manière d'utiliser vos nouvelles connaissances, et avec très peu d'efforts. Ajouter de petits morceaux de code au fur et à mesure que vous apprenez fait de l'utilisation d'AMOS un processus de formation autant que créatif.
L'assembleur AMOS a été écrit par Gary Symons, et c'est une petite suite de programmes très astucieuse. L'astuce avec l'assembleur AMOS est que vous insérez simplement le code machine que vous souhaitez exécuter dans votre programme, comme AMAL :
C$=C$+"Example:" C$=C$+"move.l a3,a5;" C$=C$+"add.1 #4*4,a3;" C$=C$+"move.l (a3)+,d0;move.l (a3)+,a6;" C$=C$+"move.l #4,d6;" C$=C$+"lea plane_0,a0;" C$=C$+"lea plane_1,a1;" C$=C$+"lea plane_2,a2;" C$=C$+"lea plane_3,a3;" C$=C$+"lea plane_4,a4;" C$=C$+"move.l #319,d1;move.l #255,d2;" C$=C$+"loop:" C$=C$+"movem.l d1/d2,-(sp);" C$=C$+"btst #6,$bfe001;bne.b no_quit;movem.l (sp)+,d1/d2;rts;" C$=C$+"no_quit:" C$=C$+"add.1 4(a5),d1;add.l (a5),d2;" C$=C$+"move.l d1,d3;muls d3,d3;lsr.l d0,d3;" C$=C$+"move.l d2,d4;muls d4,d4;lsr.l d0,d4;" C$=C$+"move.l #0,d7;"
Et ainsi de suite. (N'essayez pas d'exécuter ce programme tel quel, il lui manque du code pour fonctionner. C'est juste un exemple pour vous donner une idée de ce que vous regardez quand on parle de programmes en code machine.) Toutes les lignes sont lues dans C$ puis l'assembleur est activé, et le code que vous avez tapé est assemblé et exécuté.
Les programmes de démo sont courts, et pour être honnête je ne comprends pas vraiment comment ça fonctionne, n'étant pas un as de l'assembleur moi-même, mais croyez-moi, c'est totalement génial et l'effet est ahurissant. Le programme de base pour commencer est inclus, ainsi qu'une série de programmes de démo pour montrer la rapidité de la chose. Les résultats sont tout simplement bluffants, notamment le programme Mandelbrot ultra rapide. (Bon, les fractales c'est souvent ennuyeux, mais pas à cette vitesse !)
Si vous aimez l'assembleur, cette disquette PD est faite pour vous. Une chose que j'aimerais voir serait un compilateur C écrit en AMOS, ou un convertisseur AMOS vers C ! Ça, ce serait vraiment ouvrir une boîte de Pandore. Mais j'imagine qu'il faudra attendre pour cela.
La synthèse vocale est une autre zone peu exploitée du système AMOS, qui mérite un peu d'expérimentation. Vous avez peut-être déjà utilisé la fonction de synthèse vocale de votre Amiga, peut-être avec la petite démo SAY sur vos disquettes Amiga (malheureusement retirée des versions récentes). Eh bien AMOS peut aussi utiliser la synthèse vocale. La fonction est simple mais efficace, avec seulement deux commandes : SET TALK
et SAY
.
Voici un petit jouet vocal de mon cru. Imaginez que votre ordinateur a bu quelques verres, mais comme la plupart des ivrognes, il essaie d'ignorer ça et de vous parler quand même :
Rem * Drunk computer.AMOS * Rem Screen Open 0,640,200,16,Hires Paper 0 : Curs Off : Cls 0 Locate ,10 : Pen 4 Set Talk ,,65,50 Print "I've had a few drinks, but I'll try to talk for you..." Cdown Do Input ">";A$ Say A$ Loop
Tout ce que vous tapez sera prononcé, mais le discours sera lent et légèrement aviné. Très réaliste. En fait, c'est peut-être une percée scientifique ! Oui, un programme informatique que les gens ivres peuvent comprendre, une sorte de filtre texte-vers-alcoolique !
Les bases de données sont faciles à trier. Le programme suivant est simple dans son concept et sa fonction, il peut accepter une série de noms et de numéros de téléphone, les trier par ordre alphabétique, et vous permettre d'y accéder en utilisant la souris pour parcourir chaque entrée.
Ce n'est pas vraiment une base de données, où la récupération et l'accès rapide aux entrées est une priorité, ce genre de programme occuperait environ 10 pages de code. Ce programme est simplement l'ossature de base, et utilise des "tableaux" pour stocker et manipuler les données (les noms et numéros) que nous entrons à un moment donné.
Pour trier les noms et les numéros, nous utilisons le mot-clé SORT, une fonctionnalité unique d'AMOS qui triera le contenu d'un tableau du plus bas au plus haut. Par exemple, 3, 5, 4, 2, 1 devient 1, 2, 3, 4, 5 et B, E, C, D, A devient A, B, C, D, E. Ce programme génère des lettres aléatoires puis les trie par ordre alphabétique :
Screen Open 0,640,200,16,Hires Dim N$(25) Locate 0,0 For A=0 To 25 N$(A)=Chr$(Rnd(25)+65) Print N$(A);" ", Next A Sort N$(0) Locate 0,5 For B=0 To 25 Print N$(B);" ", Next B
C'est ainsi que fonctionne le tri. Le tri est très rapide, il trie 50 entrées en environ 0,22 secondes, sur un A2000 non accéléré. Une fois que vous avez dimensionné les tableaux, les avez remplis de texte et trié les données par ordre alphabétique, vous pouvez les rechercher à l'aide du mot-clé MATCH, et imprimer les résultats de votre recherche.
Les tableaux sont des variables très utiles qui peuvent stocker de grandes quantités de données liées entre elles. Les tableaux sont mieux imaginés comme des cases dans un bureau de poste. Avant de pouvoir commencer à charger des données dans un tableau, vous devez le dimensionner. Les tableaux peuvent avoir autant de dimensions que vous le souhaitez, par exemple si vous tapez :
Dim N(10)
Vous aurez créé un tableau avec 10 emplacements prêts à être remplis. Imaginez une rangée de 10 boîtes vides prêtes à recevoir quelque chose. Si vous tapez :
Dim u(10,10)
Encore une rangée de boîtes, mais cette fois-ci vous devez imaginer une rangée de boîtes 10 de large et 10 de profondeur, soit 100 emplacements dans lesquels vous pouvez mettre des données. Donc si vous tapez :
Dim u(10,10,10)
Vous avez un tableau 3D de 10 de large, 10 de profondeur et 10 de long, ou un énorme cube. (Note : il est un peu difficile d'imaginer un système de cases permettant de mettre quoi que ce soit dans les boîtes du centre du cube, mais ici c'est l'informatique, où tout est possible !) Cela fait 10x10x10 boîtes, soit 1000 emplacements dans lesquels vous pouvez mettre des données.
Dans ces exemples, vous ne pouvez mettre que des numéros dans ces tableaux, car ils n'ont pas de symbole $ après leur nom. Pour des noms et des numéros, vous devriez dimensionner un tableau alphanumérique (caractères plutôt que numéros, pensez alphabetique) de cette façon :
Dim N$(10)
pour 10 noms. Simple. Les mêmes règles que pour les variables normales s'appliquent.
Les petites montres et calculatrices DataBank sont très amusantes et très pratiques si vous avez la mémoire d'un poisson rouge. Plutôt que d'écrire tous vos numéros de téléphone, vous pouvez les charger dans ces appareils et ils sont automatiquement triés par ordre alphabétique, et vous pouvez les parcourir en utilisant les touches avants et arrière sur le devant de l'appareil.
Le programme ci-dessous est un simulateur de DataBank, qui remplit toutes les mêmes fonctions de ces appareils en utilisant AMOS. Pour créer une simulation de ces objets, nous devons d'abord penser à la façon dont le programme apparaîtra à l'écran. Comme nous n'avons pas chargé d'écrans graphiques, nous devrons créer nos propres graphiques à l'aide des commandes AMOS. L'écran est créé à l'aide d'une procédure appelée _DATASCREEN, qui commence comme ceci :
Procedure _DATASCREEN Paper 8 : Cls Ink 2 Print "Databank" Zoom 0,0,0,84,8 To 0,60,10,319,50 Locate 0,0 : Cline Ink 9 Bar 45,170 To 90,190 Bar 135,170 To 130,190 Bar 225,170 To 270,190 Box 45,170 To 90,190 Box 135,170 To 190,190 Box 225,170 To 270,190 Ink 2,9 : Text 52,183,"<" Text 152,185,">" Text 233,183,"Quit" Set Zone 1,45,70 To 90,190 Set Zone 2,135,170 To 180,190 Set Zone 3,225,170 To 270,190 Reserve Zone 3 Ink 9 Bar 10,60 To 309,160 Ink 2 Box 10,60 To 309,160 Paper 6 Wind Open 1,20,65,36,11 For NOISE=1 To 500 Print Chr$(Rnd(25)+65); Next NOISE Clw : Print "< World Secret DataBank >" Cdown End Proc
La procédure est ouverte et nommée avec un caractère de soulignement devant, ce qui nous permet de l'appeler de n'importe quelle manière. Ensuite, nous réglons la couleur de fond sur la couleur 8 de la palette par défaut, ce qui est l'un des trois gris (les couleurs 7, 8 et 9), puis nous effaçons l'écran. Ensuite, nous réglons la couleur d'encre sur 2 (blanc) et imprimons le titre de l'écran en haut de celui-ci.
Les boutons sont créés en dessinant un rectangle avec BAR
en encre 9, puis en le délimitant avec une boîte BOX
en encre 2. Le texte dans les boutons est fait avec du texte graphique, plutôt que le texte habituel, pour garantir que le texte puisse être positionné exactement dans la boîte.
Les bases de données sont faciles à trier. Le programme suivant est simple dans son concept et sa fonction, il peut accepter une série de noms et de numéros de téléphone, les trier par ordre alphabétique, et vous permettre d'y accéder en utilisant la souris pour parcourir chaque entrée.
Ce n'est pas vraiment une base de données, où la récupération et l'accès rapide aux entrées est une priorité, ce genre de programme occuperait environ 10 pages de code. Ce programme est simplement l'ossature de base, et utilise des "tableaux" pour stocker et manipuler les données (les noms et numéros) que nous entrons à un moment donné.
Pour trier les noms et les numéros, nous utilisons le mot-clé SORT, une fonctionnalité unique d'AMOS qui triera le contenu d'un tableau du plus bas au plus haut. Par exemple, 3, 5, 4, 2, 1 devient 1, 2, 3, 4, 5 et B, E, C, D, A devient A, B, C, D, E. Ce programme génère des lettres aléatoires puis les trie par ordre alphabétique :
Screen Open 0,640,200,16,Hires Dim N$(25) Locate 0,0 For A=0 To 25 N$(A)=Chr$(Rnd(25)+65) Print N$(A);" ", Next A Sort N$(0) Locate 0,5 For B=0 To 25 Print N$(B);" ", Next B
C'est ainsi que fonctionne le tri. Le tri est très rapide, il trie 50 entrées en environ 0,22 secondes, sur un A2000 non accéléré. Une fois que vous avez dimensionné les tableaux, les avez remplis de texte et trié les données par ordre alphabétique, vous pouvez les rechercher à l'aide du mot-clé MATCH, et imprimer les résultats de votre recherche.
Les tableaux sont des variables très utiles qui peuvent stocker de grandes quantités de données liées entre elles. Les tableaux sont mieux imaginés comme des cases dans un bureau de poste. Avant de pouvoir commencer à charger des données dans un tableau, vous devez le dimensionner. Les tableaux peuvent avoir autant de dimensions que vous le souhaitez, par exemple si vous tapez :
Dim N(10)
Vous aurez créé un tableau avec 10 emplacements prêts à être remplis. Imaginez une rangée de 10 boîtes vides prêtes à recevoir quelque chose. Si vous tapez :
Dim u(10,10)
Encore une rangée de boîtes, mais cette fois-ci vous devez imaginer une rangée de boîtes 10 de large et 10 de profondeur, soit 100 emplacements dans lesquels vous pouvez mettre des données. Donc si vous tapez :
Dim u(10,10,10)
Vous avez un tableau 3D de 10 de large, 10 de profondeur et 10 de long, ou un énorme cube. (Note : il est un peu difficile d'imaginer un système de cases permettant de mettre quoi que ce soit dans les boîtes du centre du cube, mais ici c'est l'informatique, où tout est possible !) Cela fait 10x10x10 boîtes, soit 1000 emplacements dans lesquels vous pouvez mettre des données.
Dans ces exemples, vous ne pouvez mettre que des numéros dans ces tableaux, car ils n'ont pas de symbole $ après leur nom. Pour des noms et des numéros, vous devriez dimensionner un tableau alphanumérique (caractères plutôt que numéros, pensez alphabetique) de cette façon :
Dim N$(10)
pour 10 noms. Simple. Les mêmes règles que pour les variables normales s'appliquent.
Les petites montres et calculatrices DataBank sont très amusantes et très pratiques si vous avez la mémoire d'un poisson rouge. Plutôt que d'écrire tous vos numéros de téléphone, vous pouvez les charger dans ces appareils et ils sont automatiquement triés par ordre alphabétique, et vous pouvez les parcourir en utilisant les touches avants et arrière sur le devant de l'appareil.
Le programme ci-dessous est un simulateur de DataBank, qui remplit toutes les mêmes fonctions de ces appareils en utilisant AMOS. Pour créer une simulation de ces objets, nous devons d'abord penser à la façon dont le programme apparaîtra à l'écran. Comme nous n'avons pas chargé d'écrans graphiques, nous devrons créer nos propres graphiques à l'aide des commandes AMOS. L'écran est créé à l'aide d'une procédure appelée _DATASCREEN, qui commence comme ceci :
Procedure _DATASCREEN Paper 8 : Cls Ink 2 Print "Databank" Zoom 0,0,0,84,8 To 0,60,10,319,50 Locate 0,0 : Cline Ink 9 Bar 45,170 To 90,190 Bar 135,170 To 130,190 Bar 225,170 To 270,190 Box 45,170 To 90,190 Box 135,170 To 190,190 Box 225,170 To 270,190 Ink 2,9 : Text 52,183,"<" Text 152,185,">" Text 233,183,"Quit" Set Zone 1,45,70 To 90,190 Set Zone 2,135,170 To 180,190 Set Zone 3,225,170 To 270,190 Reserve Zone 3 Ink 9 Bar 10,60 To 309,160 Ink 2 Box 10,60 To 309,160 Paper 6 Wind Open 1,20,65,36,11 For NOISE=1 To 500 Print Chr$(Rnd(25)+65); Next NOISE Clw : Print "< World Secret DataBank >" Cdown End Proc
La procédure est ouverte et nommée avec un caractère de soulignement devant, ce qui nous permet de l'appeler de n'importe quelle manière. Ensuite, nous réglons la couleur de fond sur la couleur 8 de la palette par défaut, ce qui est l'un des trois gris (les couleurs 7, 8 et 9), puis nous effaçons l'écran. Ensuite, nous réglons la couleur d'encre sur 2 (blanc) et imprimons le titre de l'écran en haut de celui-ci.
Les boutons sont créés en dessinant un rectangle avec BAR
en encre 9, puis en le délimitant avec une boîte BOX
en encre 2. Le texte dans les boutons est fait avec du texte graphique, plutôt que le texte habituel, pour garantir que le texte puisse être positionné exactement dans la boîte.
Le programme peut être amélioré de plusieurs façons, que vous pourriez essayer de faire vous-même comme exercice. Tout d'abord, vous pouvez utiliser le mot-clé MATCH pour rechercher une certaine lettre au début de l'entrée, par exemple, vous pourriez charger toutes les entrées commençant par S.
Vous pourriez aussi charger un écran graphique avec un design plus exotique. Vous pourriez ajouter plus de boutons pour d'autres fonctions, comme l'heure et la date, et ajouter aussi une fonction de chargement et de sauvegarde des numéros pour ne pas avoir à les taper en permanence. Ou pourquoi ne pas charger automatiquement les numéros au démarrage et les sauvegarder automatiquement (ainsi que tout ajout) à la fin ?
Le chargement et la sauvegarde des tableaux se réalisent en sauvegardant les données du tableau sous forme de fichier sur disque, ou en les chargeant depuis le disque dans un tableau. La façon la plus simple de faire cela est d'utiliser la fonctionnalité des fichiers séquentiels (que j'expliquerai plus tard). Si vous voulez quand même essayer, lisez la section du manuel AMOS sur les fichiers séquentiels.
Il suffit d'ouvrir un canal vers le disque :
Open Out 1,"names.seq" For A=0 To 20 Print #1,NAMES$(A) Next A Close 1
Vous effectuez ensuite une boucle For/Next
pour imprimer les entrées sur le disque, sans oublier de fermer le canal après avoir accédé au disque.
Alors, vous avez un problème technique complexe. AMOS est là pour vous sauver. Le problème ici consistait à avoir un certain nombre d'images Atari ST en résolution basse dans le format NEOCHROME, qu'il fallait convertir en IFF. Il existe quelques convertisseurs d'images sur le marché, mais peu d'entre eux peuvent effectuer cette tâche spécifique. Entrez AMOS et une petite routine astucieuse.
Le programme original a été écrit par un type très malin nommé Terry Mancey, et la version originale avant que je ne la prenne et que je l'adapte à mes besoins a été imprimée dans le magazine All About AMOS. Depuis que j'ai modifié ce programme, j'ai vu d'autres convertisseurs de fichiers, et tous utilisent une technique similaire pour attraper le fichier, le mettre à l'écran et le sauvegarder. Voici le listing :
Rem * NEOchrome to IFF Picture Converter * Rem Screen Open 0,320,200,16,Lowres Flash Off Curs Off Reserve As Work 10,32128 PINKY: Show F$=Fsel$("*.NEO","","Load Your NEO pic") Bload F$,15 Hide - GROWNEO[15] Bell = Wait Key Show F$=Fsel$("*.IFF","","Save Your IFF pic") Hide Save Iff F$,0 Bell : Wait Key Input "Convert another NEO picture? (y/n)";A$ If A$="y" Then Goto PINKY End
La procédure suivante dans le programme est GROWNEO, qui gère la conversion :
Procedure GROWNEO[B] PALT=Start(B)+4 For C=0 To 15 Colour(C),Deek(PALT+(C*2))*2 Next C PICT=Start(B)+128 For Y=0 To 199 For X=0 To 319 Doke Phybase(0)+(X*2)+(Y*40),Deek(PICT+0) Doke Phybase(1)+(X*2)+(Y*40),Deek(PICT+2) Doke Phybase(2)+(X*2)+(Y*40),Deek(PICT+4) Doke Phybase(3)+(X*2)+(Y*40),Deek(PICT+6) Add PICT,8 Next X Next Y End Proc
Ce programme utilise le format NEOCHROME pour charger l'image, puis la convertit en IFF en manipulant les couleurs et les pixels de l'image. Ensuite, il vous permet de sauver l'image convertie sur votre disque en format IFF.
Lorsque le programme est exécuté, le demandeur de chargement apparaîtra. Sélectionnez la première image NEOCHROME que vous souhaitez convertir, puis double-cliquez sur son nom ou tapez-le et cliquez sur OK. Le fichier sera lu et scanné à l'écran. Un bip retentira lorsque la conversion sera terminée. Appuyez sur une touche et le demandeur de sauvegarde apparaîtra. Tapez le nom sous lequel vous souhaitez enregistrer le fichier, de préférence avec l'extension .IFF pour le distinguer du format NEO, puis cliquez sur OK. Un bip retentira lorsque le fichier sera entièrement sauvegardé. Appuyez sur une touche et le programme vous demandera de taper y ou n si vous souhaitez convertir une autre image NEO. Si vous tapez y, tout le processus recommencera avec le demandeur de chargement. Si vous tapez n, le programme se terminera.
Le principal inconvénient de ce programme est qu'il ne peut pas encore convertir ou afficher des images Atari en haute résolution, ni d'autres formats que le NEO. Évidemment, vous pouvez gérer les images en haute résolution si vous modifiez le format de la manière dont les fichiers sont lus. La technique est à votre disposition, et tout ce dont vous aurez vraiment besoin pour en faire un programme de conversion universel est le bon tampon de taille pour accepter les images d'entrée et les spécifications techniques des fichiers bitmap en question. Cela nécessite beaucoup de recherche et beaucoup de temps de programmation, mais je suis sûr que vous pouvez le faire ! (Sourire.) Tant que vous pouvez afficher le bitmap à l'écran, vous pouvez l'enregistrer sous forme de fichier IFF. C'est un grand projet, alors bonne chance !
Il y a donc une vie après AMOS de base. Et il existe encore plus de moyens de repousser les limites de ce qui est possible. Et cela se fait principalement avec AMOS en concert avec d'autres extensions comme AMOS 3D, AMOS TOME, et comme notre prochain exemple, le compilateur AMOS, qui contribue énormément à la puissance de ce que l'on peut faire avec AMOS, plus que presque toutes les autres extensions du langage. Accrochez-vous, vous êtes sur le point de vivre un voyage rapide !