you can't relocate zero page
Actually, this one you can do in emulation mode. You even get ZP wrapping as long as DL is $00. Personally, I've found this very helpful; I can get someone else's extant 65(C)02 code up-and-running first with two zero pages, then I'll resolve ZP conflicts (with I/O or OS routines) after that.
From my perspective, a "boiled down" version with little discussion of emulation mode seems entirely appropriate. Emulation mode is 95 percent compatible with the 65C02, so why rehash a topic that has been endlessly covered by others?
It doesn't spend much time on the 95%. A 65C816 version of the "NMOS 6502 Opcodes" is inevitably going to overlap the 65C816 Programming Manual, so rather than just repeating the material, I took the opportunity to fill in the gaps and address some of the things that come up on the forum from time to time. Things like differences between 8-bit native mode and emulation mode (TXS is one that's not obvious at first blush).
There is a lot more 65(C)02 code than 65C816 code out there, so I wanted to address things that might come up when adapting code for native mode. Adapting to 8-bit native mode before updating routines for 16 bits is one way to do this incrementally. There are quite a few of us here who are into retrocomputing and/or retrogaming (and who think simulators are "cheating"

)
I also wanted to point out the things that are actually different between the 65(C)02 and emulation mode. For example, JMP ($12FF) get the high byte from $1300 (like the 65C02) but takes 5 cycles (like the NMOS 6502), so it's not exactly like either.
Also, many simulator writers seem to be very interested in replicating absolutely everything -- even things that would never break any code that isn't a unit test. For example, V flag in decimal mode, the fact that the high byte of the LDA ($FF),Y pointer is $0000 not $0100, etc.
Somewhat surprisingly, very few people (even those who are otherwise very knowledgable about the 65C816 and the 6502 family generally) are really all that familar with when page/bank wrapping does or does not occur. So that seemed like another good gap to fill.
Still, the thrust of the article is native mode. I used many 16-bit examples because 2 bytes allowed me to illustrate when wrapping did and did not occur with a single example.