``` Bugs and flaws of the 6510 +--------------------------+ Zeropage addressing modes & page wraps (fixed on 65816 in native mode): If you use an indexed-zeropage addressing mode, either direct or indirect, it is not able to leave the zeropage on page-wraps. Examples: LDX #\$01 LDA \$FF,X will fetch from adress \$0000 and not \$0100. LDA (\$FF),Y LDX #\$00 LDA (\$FF,X) LDX #\$FF LDA (\$00,X) will all fetch the low-byte from \$00FF and the high-byte from \$0000. Indirect addressing mode & page wraps (fixed on 65816): If you use the indirect addressing mode, PCH will not be incremented on page wraps. Example: JMP (\$C0FF) will fetch the low-byte from \$C0FF and the high-byte from \$C000. Decimal mode (flags fixed on 65816): In decimal mode, N and V are set after the high-order nibble is added or subtracted but before it is decimal-corrected, according to binary rules. Z is always set according to binary mode, not decimal. When decimal-correcting a nibble for addition, following rules apply: IF ((nibble >= \$A) \/ C') THEN nibble += 6 C'' = C' \/ (nibble + 6 >= \$A) When decimal-correcting a nibble for subtraction, following rules apply: IF (~C') THEN nibble -= 6 C'' = C' \/ (nibble - 6 < 0) Thus, \$F + \$F in decimal mode is \$14, not \$24. Also, decimal correction can result in nibbles ranging from \$A-\$F. For example, \$C + \$D results in \$19 before correction, \$1F after. ```