CEF Specification
Specification Version: 2.2
Last Modification: 19-March-2007
Note
This specification is NOT backward-compatible with specification versions earlier than 2.0.
Introduction
The Computer Emulation Framework (CEF) is an application framework and specification for the purposes of emulating various computer hardware configurations in software. The goals are:
1) to provide a framework which is at a low-enough level to allow accurate emulation and simulation of any hardware that exists to this time, but without being so low level that the speed of emulation makes the resulting application useless.
2) to provide a consistent base user interface for emulators.
3) to speed development of emulators by providing several general-use components and a generic interface.
Uses for CEF include low-level debugging, simulation of unavailable hardware, and emulation of one computer on another.
Platform
There is no inherent hardware or software platform requirement for CEF.
Technology prerequisites
CEF makes use of the following software components:
UEH The Unified Error Handler
Further, the Corba Object Model.
Description
CEF is a set of specifications designed to provide an easy-to-use and easy-to-understand emulation of computer systems. The only required specification is the CEF Core Specification, which defines the component types, their interfaces, and corresponding file formats, as well as the semantic information necessary to create compatible CEF components. Additional optional specifications provide useful, but not essential, specifications for classes and other resources which help speed the development of components. The CEF specifications described herein are the CEF Core Specification, the CEF Utilities Specification, and the CEF Media Specification.
Versions and backwards compatibility
With Version 2, the specification supports a means of providing backwards compatibility and interoperability between components of different versions. Most classes provide a Version method which indicates which version of the CEF specification they conform to. This version number is major.minor, times 10. For instance a value of 21 would indicate version 2.1. Within a major version, all versions must work with each other. That means, any new methods are added to the end of the VMT, and descendants must maintain the VMT layout. Before calling any method which is not present in the version 2.0 interface, the caller must check the version of the object to make sure it can make the call. Methods may not be removed from a class.
Terminology
Hereafter, the following terminology will be used:
Application |
a CEF application. |
Boolean |
an integer with a value of 0 for false, and anything else for true. |
Component |
a CEF software component. |
Environment |
a software emulated hardware environment. |
Hardware |
component a hardware component. |
Hardware environment |
a specific computer hardware implementation. |
Int64 |
an 8-byte (64-bit) signed integer (2's complement). |
Integer |
a 4-byte signed integer (2's-complement). |
Marshalling |
creation of an instance of a component and connection of it to other components. |
String |
a pointer to a null-terminated ASCII string (char*). |
Void |
Indicates a procedure. That is, a method which returns no result. |