Pages : [01] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21]


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  

© PULS 2004-2019