Ne te fatigue pas à ce point. Il y a juste trois routines dédiées aux aléatoires du TI-Basic. Je confirme que _Random sert à générer l'aléatoire de la fonction rand/NbrAléat dans OP1.
C'est écrit dans le SDK de la TI83plus. Dans la rubrique SDK, consultez "systemroutines".(leur site classe quand-même très mal ses ressources) (
ce lien direct risque d'être temporaire)
_Random equ 50B6h
_Storand equ 50BAh
_RandInit equ 50BEh
Voici une discussion contenant des observations, conclusions, et fantasmes qui concernent l'aléatoire du TI-Basic. Les routines sont justement mentionnées.
Une autre discu.
Les effets exacts des routines sont en revanche mal compris à ce jour (dans la communauté tout82/espace-ti). Si quelqu'un le sait, ce devrait être un expert de TI-Planet ou les hardcores de cemetech,omnimaga,brandonwilson,benryves,yarronet.
Cependant on sait que les valeurs initialisées suivent un escalier et que les données sont traitées avec un décalage des chiffres à un moment donné. (cela se voit même en TI-Basic quand on initialise avec un nombre puis son multiple par 10,100 etc car les chiffres sont décalés)
-------
Comparer deux nombres... tu dois détecter le dépassement avec les flags, pas te contenter du résultat tronqué.
Je lis la documentation Z80 des "sub", "cp" et des flags pour savoir enfin ce qui est signé ou non.
Ma pensée est : tu soustraits à l'accumulateur puis tu analyses le flag Zero puis Carry ou PV. Pas besoin de S (signe négatif des nombre signés) qui se base sur le résultat comme un nombre signé sans savoir s'il y a eu dépassement.
Carry respecterait des nombres non-signés, et Overflow respecterait des nombres signés, d'après quelques sous-entendus du manuel Z80 et des discussions sur forums. Donc je choisis Zero et Carry.
- Code:
ld A,100
ld B,200
cp B ; analyze A-B mod 256 ; no store
; Zero=1 if B=A
; CarrY=1 if B>A
; Carry=0 else
jr z,equal
jr c,bsupa
jr nc,asupb