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 : GFA Basic - gestion des disquettes
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - mai 1991)
|
|
Ce chapitre permet de mieux comprendre les accès d'écriture et de lecture de la disquette. Le bout de
code présenté ci-après nous demande avant tout quel est notre type de lecture puis il en vérifie
la bonne moralité. Il marque alors de son sceau "Lu et approuvé" et comme tout censeur qui se respecte,
il ne respecte rien et détruit l'original.
En fait, il y a bel et bien trois erreurs dont la première est une simple faute de syntaxe. Pour vous
aider, je précise que tout se passe avant la boucle "REPEAT...UNTIL". La deuxième erreur est plus fine
et s'avère au contraire un avantage quand on maîtrise bien le langage. Cette deuxième erreur est répétée
puis arrive la troisième erreur, tout à fait impardonnable mais un "!" (point d'exclamation) permet
de sauter par-dessus.
Je vous accorde que cette dernière erreur n'est pas évidente tant que n'est pas présente la routine
"test.répertoire" mais un peu de logique et surtout les commentaires et les noms en français permettent
malgré tout de la déceler.
Pour confirmer vos soupçons, je vous indique que la deuxième erreur s'avère désastreuse pour un programme
dépassant 32767 octets. En effet, GFA distingue six espèces de farfadets selon la longueur de leur
heu...structure :
- (1) Le BOOL! -1 à 0
- (1) Le BYTE! 0 à 255
- (2) Le WORD& -32768 à 32767
- (4) Le LONG% -2147483648 à 2147483647
- (8) L'EXPO# 2.225073858507E-308 à 3.595386269725E+308
- (n) Le TEXT$ 0 à 32767 lettres
Plus c'est petit, plus c'est rapide mais nous verrons que l'on peut ruser. La routine "test.info"
permet de tester l'état de la disquette insérée. Notre logiciel n'acceptera ainsi que le format AmigaDOS.
Le principe d'utilisation d'une routine du système d'exploitation se révèle donc particulièrement simple
sous GFA. La Bible de l'Amiga de chez Micro Application nous indique que la routine "Info" utilise une
structure de 36 octets : on réserve donc 36 octets. La position relative 8 à 12 montre l'état de la
disquette (DiskState) tandis que la position relative 24 à 28 montre l'état (DiskType).
Bien. Supprimez la ligne "VOID MFREE" et lancez le programme : rien ne semble modifié et pourtant, nous
venons de créer un virus de l'espèce octetophage. En assembleur, cela correspond à un AllocMem sans
le FreeMem. Ça marche jusqu'à ce que trop de mémoire soit grignotée. Et après, trop c'est trop :
on se convertit à Krishna et quel triste résultat ! Voyez donc Guru Nicholas Chertier et ses Félés.
Ainsi, c'est une excellente protection pour les programmes de démonstration ou
l'erreur par excellence des programmeurs de PC. Ah, si tout avait été conçu comme un Amiga,
c'est pourtant simple de ne pas se tromper : il suffit de laisser en partant les lieux aussi propres
qu'on les a trouvés en entrant. Sinon ça golfe à tous les coups.
|