Jeff,
can you clarify why you feel the theory doesn't fly
Ah, yes, your clarity has shown me to be confused. I was concentrating (at one point) on on-chip contention, which to be significant would have to be the databus drivers. In the case of the Nintendo's 2A03 chip, the 6502's databus drivers are reduced to remnants which drive an internal bus, eventually driving some logic which in turn drives the real databus drivers. It seemed very unlikely to me that any logic error which allowed the 6502 to have internal contention would cause the 2A03 to do the same.
But you rightly point out that for external contention, all we need is for RnW to signal a read but for the databus to be driven as if for a write. If the 6502 had such a problem, the 2A03 might have inherited it or replicated it.
Looking at the revD in visual6502, I notice that when reset is held asserted, the machine quickly converges to a fixed control state (T0+T1). In the simulation, the databus and address bus are constant, or alternate between two values on alternate clocks, depending on the instruction interrupted. As it happens, the state machine doesn't visit the stack-push states. Hmm.
You said "such a bug would need fixing," so do you feel it's implausible that MOS would release a chip exhibiting databus contention?
Yes, that was my reaction. On reflection: if we're thinking of a broken read cycle, then no data will be corrupted, no I/O device erroneously accessed, so any problem would be device damage of some sort. Perhaps it is possible that this would be a bug not worth fixing - my reaction was hasty - but this is not really my area of expertise.
I like your idea of rerunning ioncannon's experiment without drivers, or with high-impedance drivers.
As it happens, the visual6502 project community now has sight of revision C schematics - earlier this week Donald Hanson kindly made available(*) scans of blueprints he got from MOS back in 1979. I'm sure we'll write up any interesting finds that crop up in comparing this revision C with the revision D that's represented in visual6502. As revision C has the ROR bug, and D doesn't, and one of the blueprints is dated Nov 74, and our example D revision dates from 1983, I believe there was only one bug-fix revision that saw the light of day. (I'm assuming that our revD is in the same series as the original revC.)
It may be that logic fixes will be unearthed by the comparison, in due course.
Cheers
Ed
(*) sorry, not for redistribution.