Ben oui : ce qui est bien sur nos TIs, c'est que l'accès à une adresse inexistante ne provoque pas d'erreur... du coup on choisit un port existant sur HW1 mais pas sur HW2, qui contient à coup sûr une valeur différente de zéro
ce port n'existant pas sur HW2, sa lecture renverra toujours zéro !
On peut par exemple choisir celui dans lequel est inscrite l'adresse de la mémoire vidéo.
S'il est à zéro cela signifie qu'il a été modifié par un programme bogué, donc que l'utilisateur ne voit plus rien sur son écran (enfin il voit la table des vecteurs d'interruption et le sommet de la pile
) et donc n'a pas eu d'autre choix que de reseter sa calc car il ne voyait plus rien, donc la valeur de ce port est toujours différente de zéro...
Voici donc la fonction de détection hardware la plus rapide et la plus petite qui n'ait jamais existée :
GX_DetectHardware: ; char GX_DetectHardware(void) // renvoie 1 si la calculatrice est une HW1, ou 2 si c'est une HW2
tst.w $600010
sne d0
addq.b #2,d0
rts
Si vous n'êtes pas convaincu, testez : http://alineasofts.free.fr/extern/hwtest3instructions.zip



- j'adore ce smiley
), donc si $600010 n'est pas utilisée par le hard, sa lecture renverra toujours 0 et non pas une adresse aléatoire...

y'a un patch à changer dans TIGCC 