This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

Yet another 6502 reference

Yet another 6502 reference
by on (#169588)
I've used several 6502 references over the past few months and haven't been happy with any of them. I wanted a reference that looks good on a mobile device and also focus on status flags rather than cycle counts/bytes. Here is what I came up with and maybe it will help someone else. You can expand each mnemonic for details on the opcodes and bytes/cycles used.

http://media.matttuttle.com/6502/

If you come across something that isn't accurate or have an idea of how to make it better, let me know.
Re: Yet another 6502 reference
by on (#169589)
This looks very good and useful. Incidentally, i began to write a similar reference sheet in a note block to learn the flags just a few days ago.

Since it is interactive and all, maybe a filter or sorter when you click any or all of the flags could be helpful? To help answer questions like 'what may be altering carry in this case?'
Re: Yet another 6502 reference
by on (#169590)
heardtheword wrote:
If you come across something that isn't accurate

Bit 4 isn't a flag either; it only exists when the flags are pushed to the stack.
Re: Yet another 6502 reference
by on (#169596)
Great suggestions! I added filter buttons at the top for the status flags. I also added print styles if someone wanted to print it for some reason...
Re: Yet another 6502 reference
by on (#169719)
This is pretty clean. It would be a cool feature if it had a C-esque "psuedocode" description of the kind of pointer math the different addressing modes do, because for newbies looking at the Y vs X indexing for LDA ($AA, x) instead of LDA ($AAAA), Y can be confusing at first.
Re: Yet another 6502 reference
by on (#169761)
You mean like this?

Code:
LDA (dd),Y  ; A = RAM[RAM[dd] + RAM[(dd + 1) % 0x100] * 0x100 + Y]
LDA (dd,X)  ; A = RAM[RAM[(dd + X) % 0x100] + RAM[(dd + X + 1) % 0x100] * 0x100]
Re: Yet another 6502 reference
by on (#169765)
I think if you're trying to illustrate what it does for a beginner you might sacrifice accuracy for simplicity:
Code:
A = RAM[RAM[dd] + Y]

...is probably a lot clearer about what its function is. The page wrapping is a finer detail, much like flags and cycles and other stuff you wouldn't try to encapsulate in a "C illustration".