One thing about the Apple many may not consider is there are no wait states in the video system. The CPU gets one clock phase, the video system gets the other.
The net result is one does get the full 1Mhz available.
On a C64, for example, the clock is very similar, but the CPU is halted a lot for video DMA to happen. Now, that DMA is for redefinable character graphics and sprites, so it is worth the wait because the CPU would be much slower.
The end result is doing all bitmap graphics on a C64 seems very slow compared to doing the same thing on an Apple ][ computer.
The other thing in play is Apple programmers often take advantage of self modifying code as well as the byte boundaries to maximize what speed they can get just pushing pixels.
For a great example of this in the arcade, the Williams game DEFENDER does all its drawing on a bitmap and uses a 1Mhz 6809. To be fair, Williams did set the bitmap addressing up much better than the Apple ended up with, but still.
An 8 bit CPU can do more than one might think, given a simple no wait state bitmap.
The net result is one does get the full 1Mhz available.
On a C64, for example, the clock is very similar, but the CPU is halted a lot for video DMA to happen. Now, that DMA is for redefinable character graphics and sprites, so it is worth the wait because the CPU would be much slower.
The end result is doing all bitmap graphics on a C64 seems very slow compared to doing the same thing on an Apple ][ computer.
The other thing in play is Apple programmers often take advantage of self modifying code as well as the byte boundaries to maximize what speed they can get just pushing pixels.
For a great example of this in the arcade, the Williams game DEFENDER does all its drawing on a bitmap and uses a 1Mhz 6809. To be fair, Williams did set the bitmap addressing up much better than the Apple ended up with, but still.
An 8 bit CPU can do more than one might think, given a simple no wait state bitmap.