KC9UDX wrote:
I think the 65CE02 better fits that description.
The best approach to using the 65C816 is to purpose-design the system to use it. Unlike the 65C02, which (with some minor caveats, which are discussed elsewhere on the forum) is a drop-in replacement for the 6502 part, the 65C816 has significant electrical and software differences from the NMOS part, making drop-in replacement problematic. Also, the 65C816 can in some cases generate spurious address bus conditions during the intermediate stages of instruction execution, which if not properly accounted for in the glue logic, will cause trouble.
Electrically speaking, the big difference between the 6502 and 65C02 is the latter doesn't do "spurious accesses" during intermediate stages of instruction execution. For example, a read-modify-write (R-M-W) instruction using the 6502 will cause a double write on the affected address, the first one writing back the existing data and the second one writing back the changed data. Such behavior can trip up I/O hardware in some cases. R-M-W instructions on the 65C02 only "touch" the affected address once, which is when the modified data is written. Hence use of R-M-W instructions on device registers is not likely to cause trouble (although such programming practice is questionable).
In the 65C816, all 256 opcodes are valid instructions and are valid in both modes. This is in marked contrast to the 6502, in which many opcodes are undefined and either cause strange things to happen or outright fatality, or the 65C02, in which undefined opcodes are effectively NOPs of varying lengths and cycle times (Jeff Laughton, Dr. Jefyll, has documented ways in which to take advantage of undefined opcodes to do all sorts of cool things).
So in reality, the 65C816 is a different MPU, one which happens to know the 6502 machine language, but has a plethora of addressing modes and functions that have no analog in the eight bit MPUs. A 65C816 machine should be designed accordingly to get best results, and the software written for that machine should be developed around the 65C816 assembly language to extract the most performance and functionality.