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
|
|
|
|
Programmation : Assembleur - Faisons une réinitialisation avec le sourire
(Article écrit par Frédéric Mazué et extrait d'Amiga News Tech - novembre 1990)
|
|
D'une manière générale, je n'aime guère les programmeurs de mégadémos, d'abord parce que je suis méchant
et n'aime personne, ensuite parce que j'ai tellement vu de "sinus-scroll" et autres que je ne suis pas
loin de l'indigestion, enfin parce que lesdits programmeurs programment la plupart du temps en utilisant
des routines élaborées par d'autres (le piratage va bon train !), et qui plus est comme des cochons, sans
le moindre respect pour le formidable système d'exploitation de cet Amiga que j'aime tant
(il faut bien que j'aime quelque chose quand même !).
Vous ne me croyez pas ? Alors laissez-moi vous raconter : il était une (mauvaise) fois où je
me suis laissé aller à lancer une démo (tout le monde craque un jour ou l'autre). Que vois-je ?
Une démo belle et même superbe, avec une musique bien tapageuse comme il se doit. Bien me dis-je
et je clique la souris pour quitter. Et alors là, qu'arriva-t-il ? Un fait ahurissant, désolant,
exaspérant, horripilant, terrifiant, décevant, énervant, agaçant, désopilant, crispant, irritant,
excrément : la LED de mise sous tension de mon Amiga à moi se met à clignoter, une espôvantable
couleur jaune apparaît sur le moniteur, puis l'ordinateur finit tant bien que mal par faire une
réinitialisation gouroutisante au lieu de me rendre la main.
Comme je suis un très vilain curieux, j'examine de plus près ce trepelu programme et m'aperçoit
que l'auteur a semé un tel b..... dans la machine qu'il ne sait plus comment rendre la main.
Bon admettons, mais là où je me roule par terre de rire, c'est qu'il m'apparaît que notre auteur
n'est même pas capable de programmer une toute bête réinitialisation convenablement. Qu'a-t-il fait :
un saut en ROM à l'adresse $FC00D2 comme ça, sans la moindre délicatesse. C'est ce très misérable
saut en ROM qui provoque le phénomène décrit plus haut (beurk !). Mais là où ça devient grave,
c'est que j'ai vu il y a peu de temps dans certains ouvrages ou revues des routines de réinitialisation
aussi mal programmées : aaarrrgh !
Une réinitialisation propre
Cela suffit. Je vous donne donc le moyen de redémarrer l'Amiga à chaud convenablement. Quelques
explications sur ce programme : on appelle la routine Supervisor d'exec.library (ne pas
confondre avec Superstate). Cette routine met l'Amiga en mode Superviseur (afin de permettre
l'emploi des instructions privilégiées du 68000) et saute immédiatement dans un convertisseur
de trap pointé par A5 (vous pouvez faire quelques révisions sur ce sujet dans l'article
Guru Interceptor). Dans ce convertisseur de trap,
on charge $2 dans A0 puis on utilise l'instruction 68000 réinitialisation.
De par la connexion des broches du 68000, cette instruction provoque le recouvrement de la
mémoire Chip via le CIA-A par la ROM, il suffit alors de sauter à l'adresse pointée par
A0, qui de ce fait vaut $FC0002, pour suivre un processus de réinitialisation normal. Au cours du
processus de réinitialisation, le bit 0 du CIA-A est inversé pour annuler le recouvrement mémoire.
Pour le processus de réinitialisation, vous pouvez vous reporter à l'article
Boot Allocator.
Par ce simple procédé, l'horrible couleur jaune n'apparaît plus, mais ce qui est beaucoup plus
important, c'est que grâce à l'emploi de l'instruction RESET, tous les périphériques et autres
cartes connectés à l'Amiga seront correctement réinitialisés.
Paresse maximum
Avez-vous remarqué que pour faire une réinitialisation par le clavier, il faut appuyer en
même temps sur trois touches du clavier tellement éloignées les unes des autres qu'il est
nécessaire d'utiliser les deux mains ?
Voilà pourquoi, j'ai ajouté dans le listing l'instruction include "misc/easystart.i" qui
permet au programme d'être lancé depuis le Workbench en cliquant une icône.
Il vous est maintenant possible de faire une réinitialisation d'une seule main !
Bien entendu, ce que vous faites de votre autre main pendant ce temps ne me regarde pas.
PAL
Comme autre application à la réinitialisation, je vous propose, même si l'idée n'est vraiment pas
nouvelle, un petit programme qui teste si l'Amiga a bien démarré en PAL. Si oui, le programme
rend la main sans autre forme de procès. Sinon c'est que l'Amiga a démarré en NTSC et dans ce
cas on fait une réinitialisation, Vous pouvez placer ce programme en début de votre startup-sequence,
mais il est encore possible de faire mieux : ce programme est entièrement écrit en code relatif
au PC et peut donc être installé dans un bloc d'amorce. Ainsi, si l'Amiga qui vient de démarrer
est par NTSC saboté, il pourra rebotter au débotté, voilà qui devrait vous botter en beauté.
Et tout ceci avec une perte de temps minimum.
Il n'est point vrai que je n'aime personne et pour preuve avant que de vous quitter bonnes gens,
gueux, vilains, affamés, croque-lardons, clochepins, porte-rogatons, gaigne-deniers, lichecasses,
goinfres, coquillards, golfarins, gloutons, quémandeurs, gourmands, mais non pas vous jeunes
pucelles, mais vous surtout nobles dames et gentes damoiselles, entendez la devise humaniste,
généreuse, charitable, bienveillante, prodigue et débonnaire du bon et pantagruélique auteur
de cet article : Frédéric Mazue avec ses copains partage son pain !
|