Michael J. Mahon wrote:
The fact that both companies used "custom" 6502 processors for their machines is no doubt part of the reason that they never moved forward.
Huh? They did move forward. 6510 -> 8500 -> 8502. And also, I don't think it's any kind of problem for Commodore to use customized CPUs since they owned MOS, the owners and producers of 6502 tech back then :)
Non-portable code is written for two quite different reasons: 1) Because the coder doesn't even think about portability or doesn't understand it, non-portablility happens. 2) Because the coder understands perfectly, and chooses to write non-portable code on purpose. (One-time use, static platform, compelling need,...?)
3) Slow-as-hell 8 Bit platforms don't have a proper abstraction layer for any of their hardware, no matter if sound, graphics, timers, ports or CPU.