In a video interview, when asked if the 6502 was RISC, Bill Mensch said it was neither RISC nor CISC, but a CPU with addressable registers. He was, of course, talking about the 256 addresses in the zero page.
Meanwhile, over at Apple, Woz and team used most of those memory addresses as global variables, choosing the zero page because that saved some precious bytes of memory from ROM, and because when Woz wrote the first version of the ROM for the Apple board kit (a.k.a. Apple I) he didn't he have enough memory for the 40x24 page of text.
At the same time, over at Atari, the Atari 2600 used half of zero page to address the TIA chip, likely choosing that address space because the game ROMs were only 4K in size. The other half of the zero page was all of RAM, including the stack, and thus again really just global variables.
Are there any 1970s use cases of the 6502 that used zp as registers?
What I'm wondering is how much of the use of that space as globals was due to the syntax of 6502 assembly? LDA $03 doesn't look or feel any different from LDA $303. What if instead the syntax were LDA R3? E.g.
Code:
LDX #2
LDA $FF82,X
STA R1
INX
LDA $FF82,X
STA R2
LDY $801
LDA (R1),Y
STA R129
I posit that if we change the syntax of accessing zp without changing any of the actual behavior, and then we'd look upon those previous 256 bytes as 256 registers rather than just another 256 bytes of memory.
Agree? Disagree? Other thoughts on the 259 registers of the 6502, only three of which have names?