compIle 13’s NES core proved one opcode against hardware: ADC (add with carry), 10000/10000 vs the Harte oracle on the real binary. The 65816 keeps that exact instruction and lets M widen it. With M=1 the add wraps at 0xFF and sets carry from bit 8 — the 6502, bit-for-bit. With M=0 the identical opcode wraps at 0xFFFF and carries from bit 16. So 0xFF + 1 is 0x00 carry-set on the 6502, and 0x0100 carry-clear on the 65816. The hardware-verified 8-bit ADC is the M=1 special case of the widened one — the permutation, on the corpus’s single hardware-anchored instruction.
The demo adds 0xFF+1 both ways: 8-bit gives 0x00 carry-set (the verified 6502), 16-bit gives 0x0100 carry-clear: live demo
“A 16-bit add is a different instruction.” — it is the same ADC opcode; the M flag moves the carry boundary. cited
The one hardware-anchored instruction, kept whole and widened by a flag — the 6502 add sitting inside the 65816’s. special case
On the canonical compiler, 0xFF+1 is 0 carry-1 (M=1, the 6502) and 256 carry-0 (M=0):