[Coco] Learning CPU Architecture and Digital Design

John Kent jekent at optusnet.com.au
Wed Feb 20 02:26:44 EST 2013


Mark,

When you say it messes up the graphics, is it the actual graphic drawing 
routines or does it more relate to the timing.
i.e. is it synchronized to some timing standard ?
I have tested the instructions against a real chip although I haven't 
used a full compliment of data.
i.e. I have tested pretty well all combinations of instruction with 
addressing modes but I haven't tested all instructions with all possible 
combinations of data, as the possible combinations blow out exponentially.

If the graphics is some how dependent on the timing, then yes there may 
be problems.
I could make it cycle accurate, but verifying it would need a logic 
analyzer that I could compare the outputs with and something like chip 
scope to measure the internal signals in the FPGA. The data would have 
to be in some form that you could compare.  It all takes time and money 
which I don't have. If someone paid me a lot of money to do it, I might 
consider it but I have more important things competing for my time. You 
get what you pay for and in the case of the 6809 core you get a lot more.

The core is open source, so anyone can modify it if they want to. 
Someone has converted the design to SystemC. I've wanted to make it go 
faster by implementing it in an FPGA. I suspect I would have to change 
the design to make it perfectly cycle accurate. It may not be a simple 
case of inserting idle bus states. The other thing is that I really 
don't want to make it slower. the real appeal is having something that 
works much faster than the original chip, using modern technology. If I 
made it cycle accurate, I couldn't just conditional out the code to make 
it more efficient. I'd have to degrade the whole design.

If you upgraded it to the 6309, that's not cycle compatible with the 
6809 as I understand it any way.. From what I've seen of the data for 
the 6309 it too is faster cycle for cycle. There is an emulation mode 
for the 6809, but I don't know if that changes the instruction timing as 
well. If memebers of the list have substituted the 6809E for a 6309E in 
there CoCos, can they run all the games, and the ones that are dependent 
on software timing loops ?


John.

On 20/02/2013 3:12 PM, Mark McDougall wrote:
> On 20/02/2013 11:34 AM, jdaggett at gate.net wrote:
>
>> I made my judgement based solely on the source code. John makes
>> comments in certain areas where the CPU09 does things in one or two
>> cycles faster than the 6809. So I do know that it was not 100% cycle
>> accurate.
> I'm not really sure how many instructions are 'off', just going on
> empirical evidence from my Vectrex and the fact that things like
> SockMaster's Bouncing Ball demo need to be 'fixed' on Coco3FPGA. Taking
> nothing away from John's effort of course!
>
> On the Vectrex implementation there were other factors at stake, such as
> the delays and decays of the X/Y integrators, however I did attempt to
> 'calibrate' and compensate for those in my code. However it was clear that
> there were other significant timing inaccuracies (CPU) involved. It's
> unfortunate that the Vectrex is particularly sensitive to these; far more
> so than raster-based systems like the Coco.
>
>> I have yet to actually use it in a real application.
> I've given it a good work out in the Williams games, plus Tutankham, Juno
> First and Coco 1/2. And of course there's System09 running FLEX and
> Coco3FPGA. I've also heard it's used in some Williams pinball circuit
> emulation. So it's definitely a core that's holding up well!
>
>> Congradulations on the new child. Get sleep when you can.
> Thanks! Coming up to 10 months now and we can almost claim our nights back! :O
>
> Regards,
>

-- 
http://www.johnkent.com.au
http://members.optusnet.com.au/jekent





More information about the Coco mailing list