Mastering the VIC-20 has been mentioned elsewhere as a very good source. It, together with a lot of other books,
are available here. To be honest, I'm going back to these for my current mega-project, for which I find I have to relearn a load that I've apparently forgotten.
I have another suggestion.
As a student of spoken, human, languages, one thing that I've done in the past is to find a book I know well -- often
The Adventures of Sherlock Holmes -- and read them in translation. I can get enough of a gist to follow the story and I can write down new words and things I don't understand as I go. And I keep going back to them, re-reading, and I get better. It takes a while but it can be done. I learned very elementary read Swedish like that.
Where am I going with this? Bear with me.
Some type-in games use short machine code routines stored (normally) as lines of numeric DATA statements, which are read and then poked. )Often into the cassette buffer.) One such example in my mind is in Owen Bishop's book
The VIC-20 Games Book, "Bombing Run" on page 47. (I think of this as it was one of my favourite books growing up: it broke down each block of BASIC lines into sections and explained what each was doing.) So what you might try is to disassemble -- by hand! -- some of these short routines, and annotate them by line (LDA #$9 -> 'load 9 into A') and, once you have more of an overview, you could start to see what each little section of code is doing, and how it's doing it. I recommend doing it by hand as I've found, personally and as an educator, it really helps with learning and understanding what's going on.
I'm nowhere near any kind of 6502 expert these days: I willingly defer to many others here on this site. And I'm going to take my own advice, I think, and go back to (re-)learning.
![Smile :-)](./images/smilies/icon_smile.gif)