-- Jeff
What we want -- or at least what I want -- is a 16 MB space. What the 6509 gives you is a pair of IO registers, then 65,534 bytes, then the same pair of IO registers, then 65,534 bytes, then the same pair of IO registers....
OK, so we lose 512 bytes out of the overall 16M -- not a problem in itself. But the space is all broken up into pieces! There's no easy way to code an application that uses a big data structure -- like, say, an array of 20 or 30 elements, each of them 40K in size. Or maybe you're doing digital audio, and want to hold a stream of 90,000 or 190,000 bytes in memory. An '816 can easily hold and address a big array like that, as can my KK computer. But on 6509 the same application would be much harder (or impossible) to write.
The solution I'd try is to make the IO registers appear or not depending on the instruction and addressing mode that generates the bus access. Most instruction/mode combinations would see the registers, but bus accesses caused by $B1 and $91 would not. Maybe the 6509 already does it this way, but indications are that it doesn't. They came so close!
ETA: the fix seems tolerably easy for us to include, and it doesn't break compatibility with CBM-II programs. Even though MOS didn't include it, we could.
-- Jeff