Again, a question that came up while reading through old forum posts. When I first found out about the 65816, I was really, really excited. A 16-bit version of the 6502 with up to 16 Mb of RAM? Awesome! However, it seems that there is not much love for the CPU. Obviously, there is BigDumbDinosaur's POC V1.1 (
http://sbc.bcstechnology.net/), and Daryl's SBC-4P (
http://sbc.rictor.org/pinfo4.html), for example. But there are fewer projects, assemblers, and simulators than I would have expected. What gives?
So far, I would guess that there are three reasons:
1.
The 65816 is not a true 16-bit processor, but a 8/16-bit hybrid (which is what WDC says on their website). As such, it suffers from the worst of both worlds: Segmented memory (some commands wrap to the beginning of their banks), but with important stuff limited to Bank 0 (zero pages, boot vectors, stacks). Even if you tried to use the chip for a bunch of virtual 6502s, the "ZP in Bank 0" situation would prevent ever using the full 16 Mb (max of 256 instances of 64 Kb each with 256 byte ZP would eat up the complete Bank 0, if my math is correct).
2.
The 16-bit code seems bolted on. Whereas the 6502 instruction set is elegant, parts of the 65816 feel like, well, downright hacks. Switching from 8-bit to 16-bit mode requires two instructions and manipulating the carry bit, and you have to keep telling the assembler what mode you are in (LONGI ON). REP and SEP makes your head hurt because you have to remember which bits to set. Nothing that a bunch of assembler macros couldn't make easier to tolerate, but not exactly pretty, either.
3.
The memory addressing is harder for the hobbyist to handle, mostly because data and bank lines are shared. I see the data sheet for the 65816 has some special glue logic they recommend for this. After reading about BigDumbDinosaur's problems with a hardware bug ("Unlike the 65C02, the 65C816 can generate false address bus states during the intermediate steps of processing certain instructions."), my enthusiasm is dampened as well.
Now, am I being unfair to the 65816 and missing something? Or is this just a chip that could have been designed a whole lot better? And while we are at it, it doesn't seem that there is a good 16-bit CPU out there for hobbyists at all, at least for assembly programming fun.
Thanks,
Y, Scot