User manual
15
1.CHAPI functionality
1.1 CHAPI overview
CHARON-PDP / CHARON-VAX is a hardware abstraction layer to replace multiple -
architecturally related - legacy systems. The CHAPI functionality is limited to
QBUS/UNIBUS
An essential part of CHARON-VAX/CHARON-PDP emulators / W32 is the design
environment for the CHARON API (CHAPI) through which additional run-time components
(in the form of Windows DLLs) can be added to the emulated system. This permits to
modify the emulation of existing peripheral emulator components or to design custom
components. Such components can be sold by VARs as product add-ons and licensed via
the CHARON license key.
The CHAPI implementation is optimized for low latency access to the emulator core. This
is important for the replacement of real-time and embedded hardware systems, with
further optimizations possible by modifying device emulation code. To cover a wide range
of possible QBUS/UNIBUS connections, two methods are available:
A set of library components that provide the typical elements in a QBUS/UNIBUS
device: I/O registers, interrupt vectors and DMA. These components are used to
emulate individual bus devices. Both the I/O address space and the memory
address space can be accessed this way.
A more specific set of functions for so called CHARON deep integration, that
permits direct access to the CHARON core modules. Using those functionality
might make Stromasys involvement necessary on a project basis.
CHAPI functions are available to access the CHARON license key number or use the
encrypt/decrypt facility of the key.
Several CHAPI development support libraries are available to assist in the development of
new functions (see further on in this chapter).
1.2 The CHARON CHAPI system components
The included CHAPI modules extend the functionality, but these modules can be replaced
or modified without an impact on the emulator core. Internal components cannot be
modified, but if an equivalent CHAPI component is available, a loadable internal peripheral
emulator component can be removed by not loading it in the configuration file.










