Suivez-nous sur X

|
|
|
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
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
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 :
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 plans de bits (quatre couleurs). Il est facile de
récupérer le pointeur de cet écran dans IntuitionBase. Ensuite, il suffit de savoir que
les plans de bits se situent au décalage $C0 et $C4 de la structure Screen. Il ne reste plus
qu'à les remplir, ces fameux plans de bits.
Ton programme ne marche pas, car la définition de la fenêtre RAW: est mauvaise. Utilise plutôt :
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.
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 !
|