User manual
46
2.CHAPI programming concepts
2.1 Overview
The CHAPI interface provides the ability to load dynamically (at run-time, during the
configuration phase) additional emulator components that implement customer specific
devices (for QBUS and UNIBUS in the version discussed in this release). The CHAPI
architecture defines a programming interface of communication between such a loadable
component and the core of CHARON. This interface must contain the following elements:
• Inform the loadable component when it is necessary to create, initialize, terminate, and
destroy instances of a device.
• Provide a means of configuring instances of a device as specified in the emulated
system configuration.
• Deliver bus signals (such as BUS RESET, IRQ ACKNOWLEDGE) to instances of a
device.
• Provide access of the emulated CPU to device control/status registers for each
instance of device.
• Deliver bus requests (interrupt requests) on behalf of an instance of a device.
• Provide a means of reading/writing memory for DMA capable devices.
• Provide a means of license verification in order to protect the loadable component from
uncontrolled distribution.
• Provide a means of message logging coordinated with message logging of the
CHARON itself.
To meet the above needs the loadable components are implemented as .DLL modules in
the Windows host platform of CHARON. They define a set of procedures, data structures,
and behaviors that allow the core of CHARON and the loadable component to
communicate as required.
2.2 Loadable component naming conventions
Each loadable component must have a name, typically assigned by the developer of the
component. This name must be sufficiently unique to allow users to identify the
component. As far as the loadable component usually represents a class of peripheral
devices, it is recommended to derive the name of the loadable component from the name
of the device class.










