3

Oui, il existe le registre 'r' qui est incrementé à chaque instruction, il donne donc des nombres pseudo aléatoires entre 0 et 255 (ou -128 et 127!) pour avoir un nombre aléatoire, on charge r dans a (seul registre possible):

ld a,r

mais bon, si on répète l'opération plusieurs fois, la qualité de ce "random" est assez mauvaise il faut le dire.... surtout, ça sert à rien de le faire deux fois de suite à quelques lignes d'écart, car on risque d'avoir le meme écart entre les deux nombres trouvés...

4

la routine de ion 'ionrandom' fonctionne sur ce principe et permet facilement d'obtenir un nombre entre 0 et une valeur à choisir entre 0 et 255.

8

Une autre façon de générer un nombre aléatoire est de s'appuyer sur le seul élément "aléatoire" (enfin, pour moi, le hasard n'existe pas, mais c'est un autre débat...), l'utilisateur. Ainsi, si tu as un getkey quelque temps avant de générer ton nombre aléatoire, tu peux utiliser cette routine. Je l'ai faites en modifiant la routine waitkey de DWEDIT :

;Routine waitkey transformée pour générer un nombre aléatoire¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;entrée b = limite supérieure naturelle non incluse du domaine de c
;sortie a = touche pressée
;sortie c = nombre aléatoire appartenant à [0;b[
;registres détruits : af, c, hl.

waitkey2:
ei
c0:
ld c,-1
WKA_loop2:
inc c
ld a,b
cp c
jr z,c0
HALT
bcall(_getcsc)
or a
jr z,WKA_loop2
ret