Virtual Control Program Interface

The forerunner to DPMI was the Virtual Control Program Interface (VCPI), developed by Phar Lap Software** and Quarterdeck Office Systems**. VCPI allowed 80386-based protected mode DOS extenders to coexist with 80386-specific memory managers and expanded memory (EMS) emulators, such as QEMM-386 by Quarterdeck. Most current 80386-specific software products support, or are capable of using, the VCPI interface.

In VCPI, the DOS extender acts as a client and the EMS emulator acts as a server. The client invokes the VCPI server to:

  • Switch between real mode and protected mode

  • Allocate memory

  • Program the interrupt controller(s)

  • Inspect or set the 80386 debug registers.

    If a DOS extender is loaded and a VCPI server is not present, the DOS extender may assume total control of the system and perform hardware-dependent manipulations directly. This can lead to system and data integrity problems.

    Note: Do not confuse VCPI (Virtual Control Program Interface) with VPIC (Virtual Programmable Interrupt Controller).

    While VCPI performs well for that which it was intended, it does not provide a platform for multitasking DOS extender applications. The deficiency lies in VCPI allowing client programs to run in Ring 0, the highest privilege level possible under the 80386 processor.

    What was required was an interface capable of managing and controlling device initialization and providing centralized virtual memory management. Most important the interface had to shield one client from another.


    [Back: DPMI Introduction]
    [Next: The DPMI Specification]