Virtual Control Program Interface

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Virtual Control Program Interface
Year started1989; 33 years ago (1989)
OrganizationPhar Lap Software, Quarterdeck Office Systems, A.I. Architects, Lotus Development Corp., Quadram, Qualitas, Rational Systems
DomainApplication programming interfaces

In computing, the Virtual Control Program Interface (VCPI) is a specification published in 1989 by Phar Lap Software that allows a DOS program to run in protected mode, granting access to many features of the processor not available in real mode. It was supplanted by DOS Protected Mode Interface (DPMI) shortly after being introduced, due in large part to VCPI's inability to work in Windows 3.0's protected mode.


Developed since 1987 in cooperation with Quarterdeck Office Systems and with support by A.I. Architects, Lotus Development Corp., Quadram, Qualitas and Rational Systems, VCPI is provided by an expanded memory manager in DOS (e.g. CEMM, QEMM, later EMM386) and does allow 80386 protected-mode DOS extenders to coexist with 80386 EMS expanded memory emulators. It was eclipsed by DPMI, most notably because it was not supported for DOS programs run in Windows 3.0's native protected mode (called 386 enhanced mode) and because VCPI runs programs in Ring 0, which defeated the purpose of x86 protection. It also did not work with OS/2 2.0 and later. VCPI was only supported in Windows 3.0 real mode,[1] some programs could run in Windows 3.x standard mode.[2][3][4] Standard mode (286 mode) Windows 3.1 (but not 3.0) itself was VCPI compliant (it was a VCPI client).[5] Earlier Windows/386 2.1 was not compatible with DOS extenders at all. Windows NT DOS box did not support VCPI either.[6]

VCPI also had a comparatively limited scope in that it allowed a protected mode DOS program to run only when the program was started from DOS already running inside a virtual 8086 mode task. (This was typically accomplished through a memory manager operating as a virtual [mode] control program for the processor.) Because the virtual 8086 mode isolates programs from the hardware, it is not possible for a program to switch to protected mode without some support from the control program.

Extended VCPI[edit]

Between 1989 and February 1990[7] an alternative specification was proposed under the name Extended VCPI[8][9][10] (XVCPI[8][9][11]) by a number of companies including Intel's Software Focus Group,[7][9][10] Lotus,[7] Digital Research,[7] Interactive Systems, Viewport International and others to address some of the shortcomings of VCPI and better exploit the memory management and multitasking capabilities of the 386 processor.[10] It was used by a small number of products including operating systems like Interactive Unix and Concurrent DOS 386.[nb 1] Since February 1990[7] these efforts ultimately succumbed to the (parallel) development and publication of the DPMI specification in May 1990, which addressed similar problems, but was compatible with the implementation of Microsoft Windows 3.0 to be released the same year. In February 1991, the Multiuser DOS Federation (MDOS), an initiative formed in July 1990,[12] issued a statement regarding their support of DPMI.[7]

See also[edit]


  1. ^ NB. Like VCPI, the XVCPI API sits on top of INT 67h, AH=DEh, but has a different set of function numbers. XVCPI install check:
    AX=DE40h; INT 67h;
    AH=00h (installed); BH=main-version, BL=sub-version.
    Another known function is defined as:
    AX=DE43h; INT 67h;
    DX=number of free 4 KB pages.


  1. ^ "KB81493: Using VCPI Programs with Windows". Microsoft Corporation. Many MS-DOS-based applications use the Virtual Control Program Interface (VCPI) specification […] These programs do not work with Microsoft Windows version 3.0 in 386 enhanced mode. They work in Windows in real mode and may work in standard mode.{{cite web}}: CS1 maint: url-status (link)
  2. ^ "KB64478: Mathematica 387 and Mathlab 386 with Windows 3.0". Microsoft Corporation. Archived from the original on 2012-10-26. These programs use the VCPI […] to access extended memory that conflicts with Windows in protected mode (standard and enhanced).
  3. ^ "KB82298: Windows 3.1 Standard Mode and the VCPI". Microsoft Corporation. Archived from the original on 2013-03-09. […] an MS-DOS-based application that uses extended memory probably will fail to run in the standard-mode MS-DOS box.
  4. ^ "KB86018: Windows 3.1 Has Limited Support for VCPI". Microsoft Corporation. Archived from the original on 2012-10-26. It is possible to run some VCPI applications in standard mode.
  5. ^ "KB81476: MS-DOS Customers Who Want Windows 3.1 EMM386.EXE". Microsoft Corporation. Archived from the original on 2012-10-26. Standard mode Windows 3.1 is VCPI-compliant; standard mode Windows 3.0 is not.
  6. ^ "KB101780: VCPI Not Supported in Windows NT". Microsoft Corporation. Archived from the original on 2012-10-26. VCPI […] is not supported in Windows NT.
  7. ^ a b c d e f Wurthmann, Gerold; Wopperer, Bernhard; Wiesböck, Johann (1991). "Die DPMI-Spezifikation – Eine Einführung" [An introduction to the DPMI specification]. Vorträge und Begleittexte zum 2. Entwicklerforum der Design & Elektronik zum Thema: PC-Architektur, 17. September 1991, München [Presentations and supplemental material for the second developer forum on PC architecture on 17 September 1991, Munich] (book) (in German) (1 ed.). Munich, Germany: Markt & Technik Verlag Aktiengesellschaft. p. 223. (NB. The forum was organized by the German magazine Design & Elektronik and Intel.)
  8. ^ a b Duncan, Ray (1991-02-12). "Power Programming - An Introduction to the DOS Protected Mode Interface". PC Magazine. 10 (3): 367–371, 369. Retrieved 2016-05-21. […] The creators of the VCPI were well aware of its limitations and were already hard at work on a second generation specification called Extended VCPI (XVCPI), when Microsoft barged onto the scene with the beta-test versions of Windows 3.0 and its DPMI. For a few months it appeared that the fledgling DOS extender market would fragment into two mutually exclusive directions […] Microsoft turned control of the DPMI specification over to an industry committee with open membership, and the backers of the XVCPI effort decided to join forces behind the DPMI. […] Microsoft agreed to delete the portions of the DPMI that crossed into DOS extender territory - specifically, direct support of the DOS and ROM BIOS interrupts in protected mode. Consequently, DPMI, Version 0.9, the first public version, released by the DPMI Committee in May 1990, defines only the low-level or building-block functions […] Naturally, the higher level or DOS extender interface of Windows 3.0 still exists, but it has receded into the twilight zone of undocumented functionality. Undocumented, but hardly unusable […]
  9. ^ a b c Duncan, Ray; Petzold, Charles; Schulman, Andrew; Baker, M. Steven; Nelson, Ross P.; Davis, Stephen R.; Moote, Robert (1992). Extending DOS: A Programmer's Guide to Protected-Mode DOS. 2 (2 ed.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-56798-9.
  10. ^ a b c The DPMI Committee (1991-03-12). DOS Protected Mode Interface (DPMI) Specification - Version 1.0 - Application Program Interface (API) for Protected Mode DOS Applications (PDF). 1.0. Intel. pp. 4–5. Intel order code 240977-001. Archived from the original (PDF) on 2013-05-31. Retrieved 2013-05-24. The initial DPMI prototype was developed by Microsoft for Windows version 3.0, with input from Lotus Corporation and Rational Systems, as part of a general effort to enhance Windows' performance by allowing the Windows kernel to run in extended memory. In parallel, Intel was working with manufacturers of multitasking environments, EMS emulators, and DOS extenders to ensure that an extended VCPI specification could fully utilize the 80386's virtualization and protection features. In February 1990, the parties involved in the above activities agreed to form the DPMI Committee and formulate an industry-wide standard for protected-mode DOS applications. The Committee released the first public DPMI Specification, Version 0.9 in May 1990.
  11. ^ Brothers, Hardin (November 1992). "Breaking the 1M/640K Barrier - Accessing and using extended memory from DOS applications" (PDF). ComputerCraft. 2 (11): 16–21, 20. 0-74820-08559-11. Retrieved 2016-05-21. […] By 1990, the VCPI standard had been adopted by virtually all DOS-based programs that were specific to 386 and 486 CPUs-except programs from Microsoft. The VCPI committee was working on an upgrade to VCPI that would have been called XVCPI (X for Extended) when Microsoft released beta copies of Windows 3.0 […] Included in Windows 3 is the DPMI, or DOS Protected Mode Interface, a more general solution to running protected-mode, DOS-extended and real-mode applications simultaneously. At first, DPMI seemed like a competitor to XVCPI, and there were threats of lawsuits and chaos in the DOS-extender field. When Microsoft turned over control of DPMI to an industry committee with open membership, XVCPI supporters joined the committee, making DPMI a de facto industry standard. […] DPMI version 0.9 appeared in Windows 3.0 […]
  12. ^ "NetWorld 90 - NetWorld: Multi-Vendor Answers". Communications News. Nelson Publishing / Gale, Cengage Learning. 1990-11-01. Archived from the original on 2018-08-20. Retrieved 2014-09-10.

Further reading[edit]