> In effect the 6502’s ‘page zero’ in memory provides a large number of ‘pseudo’ 8 and 16-bit registers, slower than real registers, but still faster and more versatile than having to use other parts of memory. A skilled programmer making effective use of ‘page zero’ could write code that was fast when compared to other 8-bit designs.
I haven’t done a lot of 6502, though. I learned Basic on the Apple II when I was young but moved to Think Pascal, HyperCard, and CodeWarrior on the Mac.
It becomes a pain making sure the monitor/bios and any programs don't stomp on each others zero page locations though.
Then if you start daydreaming about multitasking you have to worry about shoveling the contents off somewhere else whenever you switch tasks.
The 65816 at least can relocate zero page & the stack but if you're going 16 bit you're better off going M68K
I was introduced to Chuck Peddle ~20 years ago at a friend's wedding and got a chance to talk with him (it was kind of like meeting a rock star for me). What stuck with me was him recounting that his travels to Sri Lanka for a business there convinced him that the bustling cities in south east asia were breeding grounds for a pending viral disaster that would cover the globe thanks to advances in air travel.
When Covid came along I felt like he was somewhat validated but fortunately not to the degree he had forecasted.
I much preferred the 8086/8088 instructions though [2], pop and push are nice to have.
[1] https://en.wikibooks.org/wiki/6502_Assembly#Stack
[2] https://en.wikipedia.org/wiki/X86_instruction_listings#Origi...
There were no 16-bit registers a la Z80 either.
You can use X as an index when you are looping through an array of pointers.
You can use Y as an index when you are looping through an array, where you have a pointer to the beginning of that array.
There are also a couple operations that always use X as a source or destination. There’s TXS/TSX, but no TYS/TSY.