
xor b jp m,opposite |
hasInverseSigns xor b ret m xor a ret |
ld b,a dec a and b ; test de sortie quand il n'y a plus de bit à 1 |
reloop ld a,(hl) or a jr z,next tuileATraiter exa ; on récupère la position du bit à 1 le plus faible dans une table de 256 octets ; la position dans la table peut tout aussi bien être un offset de la tuile à traiter (parmi les 8) ; on rafraichit notre tuile ; on efface le bit et on recommence si il reste un bit actif dans l'octet exa : ld c,a : dec a : and c : jr nz,tuileATraiter next inc hl djnz reloop |
add b ld b,a sbc a or b ; #FF si débordement |
sub b ld b,a sbc a cpl ; inverser le masque dû à la carry and b ; A=0 si débordement |
add b jp po,_+ rlca ; récupérer le signe sbc a ; #FF si résultat négatif, zéro sinon xor #80 ; #7F pour saturation positive, #80 pour saturation négative _ |
sub b jp po,_+ rlca ; récupérer le signe sbc a ; #FF si résultat négatif, zéro sinon xor #80 ; #7F pour saturation positive, #80 pour saturation négative _ |
neg jp po,_+ dec a ; #80 devient #7F _ |
.phase ld a,%10101010 rrca ld (.phase+1),a jr c,uneFoisSurDeux |
.phase ld a,%10001000 ; masque %01110111 pour 3 fois sur 4 rrca ld (.phase+1),a jr c,uneFoisSurQuatre |
.phase ld a,%10000000 ; masque %11111110 pour 7 fois sur 8 rrca ld (.phase+1),a jr c,uneFoisSurHuit |
add l ld l,a ; A+L adc h ; A+L+H+carry sub l ; H+carry (on enlève A+L) ld h,a |
cp <valeur> sbc a ; le résultat de la comparaison est un masque #00 ou #FF |
cp <valeur> sbc a ; le résultat de la comparaison est un masque #00 ou #FF cpl ; le résultat de la comparaison est un masque #FF ou #00 |
cp <valeur> sbc a ; le résultat de la comparaison est un masque #00 ou #FF inc a ; le résultat de la comparaison est un masque #00 ou #01 |