6502 bugs

I found this document somewhere on a gopher archive in an Apple2's programming directory and I think this could be very useful information for example for emulator writers :)

2-Nov-1994 Ivo van Poorten <ipoorten=www@cs.vu.nl>

With all the books on 6502 programming, and all the years that the 6502 has been around and popular, you'd think that any quirks would have been well documented by now. But nooooo! So... for those of you involved in assembler or machine-language programming, here are some 6502 booby-traps -- those marked with * are supposedly fixed in the CMOS parts such as 65C02 and 65C102 (but not the C-64's 6510).

Unlike most microprocessors, the 6502 does not make memory accesses on an "as needed" basis. It always does a fetch or store on every single clock cycle. There are a few cases, though, where there isn't anything to be fetched or stored, and a "garbage" fetch or store occurs. This is mainly of importance with the memory-mapped I/O devices:

These aren't really "bugs", but there are some instructions that just seem like they ought to be there, but aren't: