La nouvelle routine précédente utilisant le masque fonctionne suivant notre théorie. Cependant, dans la
pratique, et en particulier d'apres le dessin de notre ball, il y a beaucoup d'optimisation que l'on pourrait faire
car beaucoup de calculs sont inutiles. Rappelons nous que les calculs inutiles prennent du temps machine
qui pourrait etre utilisé pour d'autres effets.
Analysons l'affichage de la première ligne (ligne 0).
|
LDA |
,Y |
* Ligne 0, RAMB |
|
ANDA |
#$C3 |
|
|
ORA |
#$3C |
|
|
STA |
,Y |
|
|
LDA |
,X |
* Ligne 0, RAMA |
|
ANDA |
#$C3 |
|
|
ORA |
#$00 |
|
|
STA |
,X |
|
|
1. Nous avons tout d'abord un ANDA #$C3 suivit d'un ORA #$3C. Si l'on regarde bit à bit
l'effet de ces 2 opérateurs, on se rend compte que le ANDA #$C3 est tout a fait inutile car ils se
complémentent déja (la somme de $C3 + $3C = $FF). On peut alors supprimer le ANDA #$C3.
2. Nous avons ensuite un ANDA #$C3 suivit d'un ORA #$00. Ce dernier ORA #$00 n'aura
aucun effet sur A puisqu'aucun des bits n'est modifié (voir table Booléenne). On peut alors supprimer le ORA #$00.
|
Notre routine pour l'affichage de la ligne 0 peut alors simplement s'écrire de la facon suivante :
|
LDA |
,Y |
* Ligne 0, RAMB |
|
ORA |
#$3C |
|
|
STA |
,Y |
|
|
LDA |
,X |
* Ligne 0, RAMA |
|
ANDA |
#$C3 |
|
|
STA |
,X |
|
|