The whole permutation rests on one guarantee: in emulation mode the 65816 adds without removing from the documented instruction set. Every documented 6502/65C02 opcode keeps its byte and its meaning, so documented 6502 code runs unchanged, and compIle 13’s hardware-verified ADC (10000/10000) matches on the binary. The honest caveat: the 65816 is built on the 65C02, not the NMOS 6502 — it drops the NMOS undocumented opcodes (their encodings became new instructions) and fixes the decimal-mode flags and the JMP ($xxFF) page-boundary bug. So it is backward-compatible with the documented ISA and a superset of the 65C02, not a strict superset of NMOS code that leans on those quirks. That aside, the move is real: the wider machine folds around the documented old one, reachable by a single mode bit.
The demo runs the same ADC on the 6502 and on the 65816 in emulation mode — identical result — then shows native mode adds width on top: live demo
“A more powerful CPU breaks the old software.” — the 65816 keeps every documented 6502/65C02 opcode and meaning; documented programs just run. cited
A wider processor folded around the documented older one without disturbing a documented opcode — the permutation, honestly stated. superset
On the canonical compiler, the 6502 ADC and the 65816 emulation-mode ADC give the identical 160, and native mode adds width on top: