I seem to be having problems with my mail server... Forgive me if this is a duplicate! :-( --- My initial thoughts would be to create a set of classes where each class encapsulated specific functionality of the MPU in question. The interfaces for these classes would be well defined and only the implementation would vary. Some examples of classes would be (Just a quick thought): +-- class Interrupt | +-- class IOPort | +-- class I2C | | +-- class EEProm | | +-- class RealTimeClock | | | +-- class UART | | +-- class SerialLCD | | | +-- class LCD (4/8 wire) | +-- class IButton | +-- class Application | ... Some of these classes would be implemented in the VM (Time critical) and others could be implemented as p-code (Non-time critical) included with the users program. This would obviously mean that there would need to be a VM for each type/family of processor. Depending on the feedback I get, I would try to make it so that each user could customize and build the features needed for any given project into the VM. (Not sure how to accomplish this without having to devote all my time to tech support!) As for the ram limitations... it is a problem. The only way around it, IMHO is to limit the use of real ram that the program can use, and offer EEProm as a place to persist values that do not change/get used very often. I will have to think about this. The first attempt at a VM would probably use SEEProm just because I know how to use it. I will just have to wait and see how bad the performance is. (Doesn't the Basic stamp use SEEProm?) Any help in the design/implementation of the VM would be welcome! David.