Donc ce ce qui est fait dans toutes les démos avec raster est du bon vieux comptage de cycles:
Code : Tout sélectionner
Attente début écran,
loop:
changement couleur palette
attente 64 cycles cpu (une ligne raster) et on est à la ligne suivante
goto loop
http://www.pouet.net/prod.php?which=62899
Attention aussi à un truc: sur thomson les instructions ne se font pas en un cycle mais au minimum 2 si elles sont 8bits et n'accèdent pas à la mémoire (nop, lda #immediat, nega, comb, adda #immediat), 3 quands c'est 16 bits sans acces mémoire (ldx #val, addd #immediat) et 4 mini si la mémoire est lue ou(exclusif) écrite en 8 bits (6 si on lit et écrit 8 bits dans la même instruction: neg memoire, com memoire, lsr memoire, clr memoire[*]). La dessus il faut ajouter le décodage des modes addresse complexe du 6809. A ce compte là on ne fait pas grand chose dans les 64 cycles (64µs) d'une ligne raster.
_____
[*] oui le clr est lent (6 cycles) car il fait une un cycle de lecture inutile dans son micro-code. Le fait que le CLR ne soit pas traité comme une instruction d'écriture simple pouvant aller plus rapidement est un "bug" motorola qui traine depuis le 6800 je crois et qui a perduré jusqu'au 68000 dans lequel lui aussi le "clr <memoire>" est une instruction super lente car il fait un accès lecture à la mémoire au lieu d'un simple accès en écriture. Ce bug ne sera corrigé qu'à l'apparition du 68020. Sur thomson-6809 ou sur atari/amiga-68000 pour mettre 0 dans la mémoire on passe par une operation "store" depuis un registre contenant zero qui est bien plus rapide que l'opération "clr" de base.