Obligement - L'Amiga au maximum

Dimanche 05 février 2023 - 08:56  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Twitter

Suivez-nous sur Twitter




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Sites de téléchargements
Associations
Pages Personnelles
Matériel
Réparateurs
Revendeurs
Presse et médias
Logiciels
Jeux
Scène démo
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Dossier : Problèmes et erreurs d'AMOS 1.3
(Article écrit par Denis Bernard et extrait d'AmigaDP - janvier 1993)


Avant de vous lancer dans la programmation avec AMOS, lisez bien ce petit aperçu de ses problèmes, bogues et diverses erreurs à connaître.

De l'utilisation d'AMOS puissance et déboires...

Lorsqu'on parle d'AMOS, si certains pensent "jeux", d'autres pensent plutôt "créateur". Je ne ferai point de long discours pour persuader les sceptiques qu'AMOS n'est pas un langage fait uniquement pour les jeux. Je dirai simplement que si AMOS apporte de grandes facilités de programmation des animations, interruptions, son, musique, etc. ça n'empêche pas de faire des choses très sérieuses. Le plus appréciable, c'est le côté créateur : AMOS permet une improvisation sans limites (ou presque).

Des défauts, il en a...
  • Pas très bon en mathématiques (pour les versions 1.3).
  • Il est quasiment impossible de gérer des écrans et fenêtres Intuition.
  • Pour les gadgets, il faut tout faire soi-même.
  • Hors l'animation, il est lent.
  • Le pire et non moins le meilleur, ce sont les bogues inattendus qui apparaissent comme s'il faisait un caprice, alors que tout est censé fonctionner normalement. Il faut dire qu'en général, c'est plus amusant qu'autre chose.
Voici donc, en vrac et sans prétention, quelques trucs, informations, découvertes et conseils qui peuvent-être utiles.

Appels ROM

Appels des fonctions en ROM (Intcall, Execall...). Ce genre d'appels ne fait pas toujours plaisir à AMOS (surtout avec les versions 1.3 d'AMOS). Il y en a cependant une bonne majorité qui ne plantent pas AMOS. Beaucoup (dont moi) ont sollicité la possibilité de gérer l'environnement Intuition standard à partir d'AMOS, malheureusement, François Lionet semble réticent à ce sujet et a préféré développer un système similaire, propre à AMOS, appelé Interface, inclus dans AMOS Pro (patientons...) et c'est très puissant.

Pour les initiés au matériel de l'Amiga, il est cependant possible d'ouvrir et de gérer les entrées/sorties des fenêtres sur le Workbench à partir d'AMOS en utilisant Intcall. Faites tout de même très attention à ce que vous faites car ce genre de manipulations est très dangereux.

Chaînes de caractères

Habituellement encadrées entre double guillemets ("), cela pose un problème pour placer un double guillemets dans une chaîne : il faut trouver le code ASCII de ce caractère et taper à chaque fois "Machin"+Chr$(xx)+"Truc". De plus, lorsqu'on en met un, on en met souvent un deuxième !

Découverte : l'apostrophe remplace sans problème le double guillemets ! Ainsi, A$=Chr$(xx)+" Machin"+Chr$(xx) devient A$='"Machin"'.

Lorsque vous mettez une chaîne entre apostrophes, vous ne pouvez pas mettre d'apostrophe au milieu de la chaîne (comme pour '"').

Autre exemple : si on veut afficher L'utilisation d'un "PC" est un enfer !, on écrit : A$="L'utilisation d'un "+'"PC" est un enfer !'

Execute

La procédure EXECUTE[] ou EXEC[] fournie avec AMOS 1.34 marche très bien, mais lorsque l'exécutable demandé n'est pas trouvé, on ne reçoit pas de code d'erreur, ce qui fait que lorsqu'on n'obtient pas l'effet attendu, on ne sait pas quoi faire. Voici donc deux ou trois de ces choses à faire.

Vérifier que le chemin complet de la commande est bien spécifié car votre commande est cherchée dans c: et dans le répertoire courant mais pas dans les chemins spécifiés par la commande Path (ceci n'est pas un bogue d'AMOS, c'est dû à la fonction d'Intuition appelée). Pour la commande "format" par exemple : EXEC["Sys:System/Format...

Vérifiez que la commande existe dans le chemin spécifié, n'allez pas chercher "Format" dans c: (à moins que vous ne l'y ayez mis...).

N'oubliez pas les redirections d'entrée-sortie pour les commandes qui utilisent l'entrée et la sortie standard. Exemple : EXEC["Sys:System/Format >NIL: <NIL:... Vous pouvez aussi rediriger vers des fenêtres. Exemple : EXEC["c:Dir >'CON:0/11/640/200/AMOS Dir' Ram:"] exécutera la commande "dir" sur le RAM Disk dans une fenêtre de 640x200 en 0,11 avec le titre "AMOS Dir".

Si vous voulez que votre programme n'attende pas la fin d'exécution de la commande appelée, placez "Run >NIL: <NIL:" avant celle-ci. Exemple : lancer la commande "Format" et proposer un petit jeu pour patienter : EXEC["Run>NIL:<NIL: Sys:System/Format drive df0 name empty"] et votre programme peut alors proposer un petit jeu pendant le formatage...

A ce niveau, un problème se pose : comment faire pour savoir quand la commande a fini son travail ? Je n'y ai pas réfléchi mais dans le cas de la commande "Format", le code d'erreur renvoyé par Disc Info$ devrait faire l'affaire.

Bogues (version 1.34)

Il arrive encore qu'un programme compilé donne des valeurs complètement délirantes avec la fonction Val(). Remède : essayez de déclarer vos variables au début du programme ou de votre procédure en leur affectant une valeur par défaut comme A#=0.0 ou A$="" ou A=0. Le compilateur ne faisant qu'une seule passe, ça peut l'aider. Les symptômes persistent : écrivez votre propre procédure VAL[].

En écrivant une telle procédure, j'ai découvert que 10^3 donne bel et bien 1000 mais 10A4 donne 9999,99 ... Aberrant, non ? Ceci vient tout simplement du fait qu'AMOS fait son calcul sur des nombres en simple précision et non pas sur des entiers. A ce sujet, AMOS Pro gère les nombres en double précision. C'est beaucoup plus efficace et 10^14 sous AMOS Pro en double précision donne 100000000000000, ce qui est beaucoup mieux.

Il arrive (très rarement) que lorsqu'on affecte le contenu d'une variable à un autre et qu'on modifie cette nouvelle variable, l'ancienne soit aussi modifiée. Exemple concret : supposons que A$="00000", T$=A$ et Mid$(T$,4,1)="x". On se retrouve avec A$="000x0" au lieu de "00000" et T$="000x0". Notez que cet exemple fonctionne parfaitement seul mais souvenez-vous que ce genre d'erreur peut arriver. Dans la plupart des cas, il suffit d'augmenter le "Set Buffer" pour pallier ce problème.

Erreurs du manuel

Il arrive aussi parfois et bizarrement que l'éditeur vous traite de Syntax Error pour une ligne dont la syntaxe est correcte d'après le manuel.

Cas où la syntaxe n'est pas correcte (erreurs du manuel)
  • LLIST : cette commande est arrivée dans le manuel par erreur. Y'en a pas ! Pour imprimer votre programme, sélectionnez-le en entier sous forme de bloc, puis dans le menu Blocs/Imprimer-Bloc ou sauver en ASCII et imprimez-le avec votre programme d'impression préféré.
  • Text Style : s'écrit en fait "Text Styles" (avec un "s" à la fin !).
  • Serial Bit : même chose, ça s'écrit "Serial Bits".
  • Serial Buffer : écrivez "Serial Buf" et ça ira mieux.
  • Deux petits oublis : No Icon Mask [n] et Rainbow Del [n]
Cas où votre syntaxe est irréprochable. Plus dur à avaler...
  • "Exit if..." fait des difficultés : mettez des parenthèses autour de vos conditions. Si les symptômes persistent, effacez la ligne (la précédente et la suivante aussi) et retapez.
Cas où les symptômes persistent

Bravo ! Vous avez peut-étre découvert un nouveau bogue.

Autres erreurs du manuel

Cas des commandes Screen Copy, Cls, Copy. Dans le manuel, on nous dit : Cls couleur,x1,y1 to x2,y2 ou Screen Copy scr,x1,y1,x2,y2 to scr2,x3,y3. x1,y1 et x2,y2 représentent respectivement les coordonnées des coins supérieur gauche et inférieur droit des zones à effacer/copier. Faux ! En fait, x2=x1+largeur de la zone, y2=y1+hauteur de la zone.

Par contre, dans le cas de commandes comme Bar et box, x2 et y2 sont bel et bien les coordonnées du coin inférieur droit soit : x2=x1+largeur-1 et y2=y1+hauteur-1.

Conclusion

AMOS est vraiment le créateur et nous réserve plus de bonnes surprises que de mauvaises. La plupart des problèmes qu'on rencontre sont rarement insolubles car quelqu'un a peut-être déjà trouvé la solution. Quant à AMOS Pro, on devrait voir avec sa première mise à jour la disparition totale de ces sales bêtes de bogues.


[Retour en haut] / [Retour aux articles]