In the RDY vs CLOCK STRETCHING thread
http://forum.6502.org/viewtopic.php?f=4&t=5504BigEd wrote:
But it might be worth also noting the case we see in Acorn's machines: again, the CPU runs at full speed except for some cycles where it slows down to access slow devices... but in this case one of the slow devices is the timer-counter, which needs a constant low speed clock. This is, I think, a more difficult problem: not only must the CPU be slowed, but it might also have to wait for the appropriate phase of the free-running low speed clock.
This is precisely the dilemma I'm facing in trying to design a *2MHz mod for the VIC20.
For the VIAs' timers and other operations that
must occur at the established 1MHz rate I'll have to recreate, duplicate...
emulate the 1MHz Ph2 the VIAs would normally get. (VIC schema calls it SØ2) That's relatively simple. I just have to invert the signal from the 6560 Vid controller that becomes the cpu's normal 1MHz and delay its falling edge.
My problem is conditions will be such that the
Emulated SØ2 will rise around 50nS before the cpu clock that gets stretched will rise.
Attachment:
File comment: why does this look so small here when it's HUGE on my monitor?
not_ideal2x.jpg [ 356.59 KiB | Viewed 564 times ]
Currently, the difference is unavoidable because signals from the mapping/banking circuitry that will substitute RAM for the slow system ROMs won't be valid until 40nS
after ESØ2 rises and I'm allowing 10nS of setup time to detect that condition.
So my question is will the 50nS difference between VIAs' (or any other 65xx I/O) 1MHz ESØ2 and stretched Ø0 have any deleterious affects on the VIA's normal internal workings when the cpu tries to access its registers? I'd like to think the answer is no but I don't want to take that for granted.
So far, my design amounts to 5-6 chips and seems a bit much for a measly 2X speed up. I've been trying to adapt Jeff's 74_163 solution to my plans but so far I've not had even a glimmer of inspiration. Bear in mind that if an I/O access occurs after a "2MHz" T1 the T2 that would normally follow would be suppressed and access would be deferred until the next cycle. So what I'd ideally have would be a Stretch or Wait hybrid. Ugh.
I am open to suggestions. Thanks.