Obligement - L'Amiga au maximum

Mardi 26 mars 2019 - 00:50  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

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


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Le courrier des lecteurs d'Amiga News Tech - mai 1991
(Rubrique animée par Frédéric Mazué et extraite d'Amiga News Tech - mai 1991)


Affichage d'images, programme assembleur pour le démarrage

Bonjour à toute l'équipe de l'ANT ! Je vous écris pour plusieurs choses : pourriez-vous me donner une routine permettant le plus simplement possible d'afficher une image sur mon écran, qui commence à se lasser du bleu. Je possède PixMate et puis donc convertir l'IFF en RAW. Mais encore faut-il posséder une routine capable de relire ces données bitmap et les afficher ! Autre point qui me tient à coeur en ce moment, je voudrais créer un programme assembleur à installer au démarrage de mes disquettes pour en lire le contenu (un "dir", quoi !). Il m'a semblé bon de commencer par utiliser la commande Dir du CLI, pour me mettre dans le bain. J'ai donc fait un petit programme assembleur qui affiche le répertoire. En voici le listing :

C

Mon problème est que ce répertoire ne s'affiche pas dans ma fenêtre, qui ne s'ouvre d'ailleurs pas du tout ! Help please ! Mais revenons maintenant a mon problème initial : effectuer un Dir dès le démarrage. Un copain m'a dit d'utiliser ExNext() et Examine() car il craint que le DOS, pas encore installé lors du démarrage, ne permette pas une exploitation de la commande Dir. Un programme dans La Bible De L'Amiga (page 490) accomplit cette tâche, mais je n'arrive pas à me faire une fonction "print" comme ils le disent. Là encore : Help ! Un nouveau problème se pose : il faut écrire le source en relatif PC car mon programme sera lancé au démarrage. Mais comment faire ? [Denoue Laurent (Taverny)].

Réponse

Je suppose qu'il s'agit de l'écran du Workbench ? Deux possibilités : premièrement, sur la disquette ComRev 2 se trouve un programme qui devrait convenir. Deuxièmement, l'écran du Workbench est un écran Intuition à deux bitplanes (quatre couleurs). Il est facile de récupérer le pointeur de cet écran dans IntuitionBase. Ensuite, il suffit de savoir que les bitplanes se situent à l'offset $C0 et $C4 de la structure Screen. Il ne reste plus qu'à les remplir, ces fameux bitplanes.

Ton programme ne marche pas, car la définition de la fenêtre RAW: est mauvaise. Utilise plutôt :

C

Avec ça, le programme fonctionne. Pense quand même à fermer la fenêtre et la dos.library. Il est effectivement necéssaire d'utiliser les routines de la dos.library dans ce cas. Pour la fonction "print", il y en une toute faite (et qui marche, une fois n'est pas coutume !) dans un autre livre de Micro Application : Le Livre Du Langage Machine. Enfin, dans Commodore Revue n°20, il y a un programme d'exemple écrit en relatif PC. Cela va peut-être t'aider. Peut-être publierons-nous un petit article sur cette question prochainement.

Mon cher Laurent, en plus des problèmes ci-dessus, tu en as probablement un que tu ne soupçonnes même pas : ta disquette était infestée par le virus Lamer II. Pas trop d'erreurs de lecture/écriture à Taverny ?

Cherche contact en C

Fidèle lecteur de votre magazine depuis l'achat d'un Amiga 2000, après avoir fait un tour d'horizon de l'AmigaBasic (NDLR : quel courage !), je débute en C. Quelque peu isolé en Dordogne, j'aimerais avoir des contacts et des conseils avec des créatifs et des passionnés. Pouvez-vous passer mon annonce : Intéressé par la programmation en C, je suis partant pour tout échange d'informations et de programmes. Tél : (16).53.53.58.55 aux heures de repas.

Réponse

Voilà qui est fait !

Infomations sur les ROM Kernel Manuals

Je suis un fidèle lecteur (NDLR : ils disent tous ça !). Voilà mon problème : je possède un Amiga 500 depuis plus de trois ans et suis attiré par tout ce qui est programmation. J'ai donc commencé bien sûr par notre cher AmigaBasic, que je laisse de côté pour travailler avec le GFA Basic. Par manque de documentation, j'ai à nouveau changé et suis passé sur le langage C. Idem, par manque de documentation, je me suis enfin arrêté sur le langage machine.

Donc voilà, j'ai programmé sous plusieurs langages que j'ai tour à tour laissés tomber par manque de documentation, sauf le langage machine parce que je persiste à croire que quelqu'un viendra à mon secours, vous en l'occurrence. Dans le n°29 de Commodore Revue, il y a un lecteur qui vous demande quelle documentation existe sur les routines d'Intuition, Exec... et vous avez répondu qu'il faut consulter les Amiga ROM Kernel Manuals (qui je suppose, sont en anglais) mais vous n'avez pas donné l'éditeur. Donc :
  • Quel est l'éditeur de ces ouvrages ?
  • Comment faire pour s'attribuer une si belle collection ?
  • Sont-ils en anglais ou en français ?
Je tiens quand même à signaler que je suis allé à la FNAC, à Union et dans d'autres librairies pour me renseigner et on me répond à chaque fois la même chose : "ces livres sont inconnus". En vous remerciant d'avance de votre précieux coup de main, souhaite longue vie à Commodore Revue et, bien sûr, à l'ANT [Luc Spony (Riedisheim)].

Réponse

Comme de bien entendu, ces très précieux ouvrages sont en anglais. Il faut savoir que 99% des programmes d'exemples donnés dans ces livres sont écrits en C, ce qui est tout à fait normal sur l'Amiga. A ma connaissance, le seul endroit où il soit possible d'acheter ces ouvrages est le magasin MAD (42 rue Lamartine, 75009 Paris. Tél : (1).48.78.11.65). La référence exacte de ces livres est ROM Kernel Reference Manual - Commodore-Amiga, Incorporated Amiga Technical Reference Series édités par Addison-Wesley Publishing Company, Inc., Massachusetts, USA.

Une autre solution : si vous avez acheté un compilateur C (par exemple et au hasard : le SAS, ex-Lattice) et que vous êtes dûment enregistré comme client, vous pouvez écrire pour leur demander s'ils accepteraient de vous vendre ces bouquins. C'est tout à fait possible, et vous pouvez être sûr en tout cas qu'ils répondront à votre courrier très rapidement. Enfin, ultime solution, vous écrivez un programme génial, vous gagnez le concours-lecteurs mensuel et vous recevez notre DevKit qui comporte, il n'est pas inutile de le rappeler :
  • L'assembleur Devpac 2.
  • Le compilateur C SAS 5.10.
  • Tous les ROM Kernel Manuals (trois volumes).
Lancement d'un programme depuis l'éditeur AMOS

Bonjour à toute la rédaction. Si je vous écris, c'est pour vous dire que j'apprécie beaucoup l'ANT, et plus particulièrement la rubrique AMOS de François Lionet. Toutefois, j'aimerais que vous parliez un peu plus de ce super langage dans le courrier des lecteurs (je présume que vous devez tout de même recevoir quelques lettres à ce sujet, non ?). En tout cas, en voici au moins une.

Je me suis récemment procuré une démo du groupe Syntex, entièrement réalisée en AMOS (j'en profite pour les féliciter publiquement de leur travail !). J'ai voulu lancer l'une de ces démos directement depuis l'éditeur d'AMOS. Outre le fait que le programme est protégé, j'ai oublié de recopier sur mon disque dur quelques fichiers, ce qui a provoqué une erreur "File not found"... et planté AMOS, qui restait bloqué sur ce message et ne me rendait pas la main. Je voudrais donc savoir si ce problème survient de la protection du programme, ou si c'est ma version d'AMOS qui est boguée ? [Jérôme Marchand, alias Mr. Perfect].

Réponse

Merci pour les compliments... Pour ce qui est d'AMOS dans le courrier des lecteurs, nous préférons que François Lionet réponde lui-même à son courrier. Les lettres concernant AMOS lui sont donc transmises. Mais le plus simple - et le plus rapide - est encore d'utiliser le Minitel, en allant sur le 3615 COMREV, rubrique ANT, où François dispose d'une BAL et d'une tribune pour lui tout seul !

Quant à votre problème avec la démo de Syntex, rassurez-vous, il n'est pas dû à un bogue de l'interpréteur AMOS, mais bel et bien à la démo elle-même. En effet, renseignement pris auprès d'Alcatraz de Syntex, il inhibe plusieurs sources d'interruptions, dont le clavier, histoire de gagner du temps pour la VBL. Conclusion : lorsqu'une erreur quelconque survient, le clavier n'est pas rétabli, et AMOS attend indéfiniment qu'une touche soit appuyée.

Programme sur le timer.device

Bonjour. Cette lettre s'adresse plus particulièrement à Max, puisque c'est bien lui de spécialiste de l'assembleur de l'ANT, non ? Elle concerne non pas le langage-machine, mais bien le 68000 lui-même. Voici de quoi il retourne.

J'ai essayé d'adapter le programme du "RKM Libraries and Devices", dans le chapitre sur le timer.device, page 876, qui calcule l'heure système (heures, minutes, secondes) à partir des données fournies par le périphérique logique. Tout se passe bien jusqu'aux calculs eux-mêmes, qui sont totalement faux (alors qu'avec le programme C, ils fonctionnent très bien !). Après traçage, je me suis aperçu que c'était l'instruction DIV du 68000 qui boguait : d0.l contenant le dividende (égal au nombre de secondes écoulées depuis le 1er janvier 1978 !) et d1.w contenant le diviseur (60 ou 24 suivant que l'on calcule les heures, minutes ou secondes), l'instruction DIVU D1,D0 laissant les deux registres inchangés ! Le bit V de CCR étant également positionné, j'en déduis qu'un débordement quelconque a eu lieu à un moment ou à un autre, mais je ne sais pas comment remédier à cette situation. Un petit coup de main serait le bienvenu... [François Grandjean, Nanterre].

Réponse

Votre analyse du problème est tout à fait correcte : c'est bien le débordement qui est la cause du "mal-fonctionnement" de l'instruction DIV. Cela dit, il ne s'agit pas d'un bogue du 68000, mais d'une situation parfaitement connue et prévue par Motorola.

Le débordement apparaît lorsque le quotient ou le reste de la division, dépasse les 16 bits, ce qui est bien le cas ici (d0 contenant une valeur supérieure à 416 millions !). Il n'y a malheureusement pas 36 manières d'y remédier : il faut écrire une routine se chargeant de gérer ce cas particulier, par plusieurs divisions successives (ce qui soit dit en passant, prend encore plus de temps que la seule instruction DIV). D'ailleurs, si vous aviez également tracé le programme C compilé, vous auriez tout de suite vu l'astuce ! La routine qui suit est adaptée de celle proposée par Madame Viellefond, dans son excellent livre paru aux éditions Sybex : "Mise en oeuvre du 68000". Elle attend le dividende dans d0.l, le diviseur dans d1.w et utilise les registres d2 et d3 comme mémoire tampon. En sortie, d0.l contient le quotient et d1.l le reste.

C

Voilà. Vous ne m'en voudrez pas si je n'ai pas la place de commenter plus avant cette routine. Un conseil si vous voulez comprendre son mode de fonctionnement : tracez-la !


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]