Re: mode 4 couleurs to8
Publié : 05 août 2018 12:34
Tester la fin de vbl est possible sur thomson, mais après il ne faut pas utiliser les interruptions car la gestion par la rom prends enormément de temps avant d'accéder à la partie utilisateur. La doc sur les interruptions se trouve dans "'le manuel technique des to8/to9/to9+" qui est l'ouvrage de référence quand tu cherches à attaquer le HW en asm.
Donc ce ce qui est fait dans toutes les démos avec raster est du bon vieux comptage de cycles:
http://www.pouet.net/prod.php?which=11728
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.
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.