Hello Everyone,
This is to inform you that I have just applied a very large patch to CVS that affects the entire emulator. Over the past few weeks,. we've run into the limitations of running everything in a single clock-loop, calling devices' DoClock() functions. This leads to wildly varying CPU speed, and does not efficiently the processing power of modern multi-core/multi-processor CPU's.
The patch that has just been committed gets rid of the DoClock() functions, and instead lets each device run its own threads as needed. If you have a dual-core system, the emulated CPU could run on one core, with the other core taking care of all other devices.
This is a patch I've been working on for a long time, and it's been a bit of a pain keeping it in sync with all the other changes that have happened in the past few weeks, which is why I'm committing it so soon after the release of 0.19.
So far the good news, now the bad news:
This patch is a radical departure from the way we used to do things, and it breaks a couple of things. The <break> menu on the Serial console lost it's functionality. IDB doesn't work yet. And, most importantly, this release probably introduces bugs caused by threads accessing the same thing at the same time. These issues will all need to be addressed in the next couple of weeks. Everyone can help out by submitting bug reports to the es40-developers list for anything that doesn't work as expected.
You will need to install the Poco C++ libraries for the new code to compile.
The new approach also opens the door to emulating multiple CPU's, although that is not functional yet. I'm working hard on this, but I'm missing something in the initialization. The basic bits and pieces are in place, but the extra cpu's never come fully online. If you think you can help with this, please contact me.
I've created a new CVS branch ("no-threading") before this patch that will be used for necessary bugfixes to the version 0.19 codebase.
Regards,
Camiel Vanderhoeven.