Protected ModeVCPI, DPMI, GEMMIS, VDS, VOODOO, etc..
- Protected Mode Basics:
- Protected Mode Tutorial - by Till Gerken
- "This text contains a short and simple step-by-step tutorial for Protected Mode beginners. It shows you everything you need to program your own PM environment and is intended for those who don't have any experiences with it yet." The source file package is available here.
- Protected Mode Crash Course - by Adam Seychell
- "After my release of DOS32 V1.2 a lot of people were asking for basic help in protected mode programming. If you already know what a selector is then there is probably no need for you to read this file. " This file came with the DOS32 distribution, which is available here.
- Protected Mode - A Detailed Approach - by Yann Stephen
- This file also came with the DOS32 distribution and details the GDTR, IDTR, and LDTR.
- Segment Registers: Real mode vs. Protected mode - by John Fine
- This article discusses the technical details behind the HOW and WHY of segment selectors. This can be very handy for those "gotcha" type moments...
- Real and Protected Modes - by Jerzy Tarasiuk
- "Beginning with the 80286, Intel CPUs have ability to work in Protected Mode. This article presents the main differences between Real Mode and Protected modes for Intel CPUs (as well as Virtual 8086 Mode)"
- Protected Mode Programming and OS Development - by Mythrandir
- "The big focus of this article will be getting a system up and running in protected mode with a very minimal kernel. "
- Specific Protected Mode Flavors:
- 386 Programmers Guide
- This is the official documentation on the 386 processor... in plaintext format. The individual documents are available here: Part #1 - Applications Programming, Part #2 - Systems Programming, Part #3 - Compatibility, & Instruction Opcodes
- VCPI Reference
- This is the authoritative reference on VCPI (Virtual Control Program Interface). It is a common way to can protected mode powers when operating under a memory manager.
- Dos Protected Mode Interface (DPMI)
- DPMI 0.9 Specification
- "The DOS Protected Mode Interface (DPMI) was defined to allow DOS programs to access the extended memory of PC architecture computers while maintaining system protection." - DPMI is the interface you have to use if running under windows. It's the interface you should provide if writing a protected mode OS...
- DPMI 1.0 Specification
- This is the official reference for DPMI v1.0. Very complete cross referenced document that defines the new 1.0 interfaces as well as providing information about the 0.9 interfaces... good stuff.
- DPMI 1.0 Specification (html)
- Cross referenced HTML version of the 1.0 spec.
- DPMI 1.0 Interrupt Reference
- This is a reference on the DPMI functions exposed as interrupts. If anyone has an electronic copy of the real DPMI 1.0 specs, please send them to me, I only have the dead tree edition...
- Unreal Mode
- "Unreal Mode" (aka VOODOO Mode) is a way of setting up protected mode segments so the segment limits are greater than 64k. When switching back to real mode, these segments are left as they were, and large segments may accessed. This article gives one implementation of the technique.
- VOODOO Mode
- Another implementation of "Voodoo" or "Unreal" mode. Note that this mode was used in Origin's widely popular Ultima 7.
- FLAT Mode - by Herman Dullink
- Yet another implementation of "Unreal" mode. This text file came in the FLAT Distribution which is a working implementation of this stuff...
- RealMem Memory Mode - by Mark Feldman
- This is another implementation of the Unreal mode... with a C++ class that implements it, as well as an example of usage...
- Tricks and Techniques:
- The LOADALL Instruction - by Tasmaniac
- This little doc describes how the undocumented loadall instruction can be used to switch between real and protected mode quite fast... and interesting trick to gain a smidge of performance...
- How to Kick out a Memory Manager - by Michel Lespinasse
- Describes the "Windows Global EMM Import Specification" aka GEMMIS. This file shows how to kick out the memory managers that likes to disable the use of the flat real mode, or more generally to disable the acces to code privilege ring #0 (CPL0). This is how Microsoft Windows operates in the presence of a memory manager such as EMM386 or QEMM. An interrupt reference for this is also available.
- Virtual DMA Services
- To achieve DMA transfers to a hardware device (for example a sound card), one must determine the physical address of a piece of memory that has been allocated. In some situations, such as when running under a memory manager, this is not possible. The Virtual DMA Services (VDS) has been formalized to work around this limitiation...
- Implementations:
- Switching to PM and Back - by Jerzy Tarasiuk
- Very simple example code to switch from real mode to protected mode... to read and write high memory. Seems a little bit of overkill, but a good example.
- PMODE 9-94 - by Tran aka Thomas Pytel
- "This bunch of files comprises two versions of my protected mode DOS extender PMODE." PMODE is Tran's very excellent DOS extender. It has been widely used and is well tested by many applications. Full source code included.
- PMODE/W v1.21 - DOS Extender for Watcom C++ - by Charles Scheffold and Tran
- "This file will give you all the information you will need to plug PMODE/W right into your Watcom C/C++ protected mode programs. All of the other things you need to be aware of about using PMODE/W commercially and non-commercially are also in this section. Specific information on INT 31h and INT 21h DOS extended services supported by PMODE/W is in the following sections. Please note that we have only tested this extender with Watcom C/C++ versions 9.5 and 10.0." Source and examples available here.
- 386 Power v2.00 - by Lorenzo Micheletto
- "I wanted to build a GAME ENGINE capable to run under 32bit protected mode. A game engine is the game equivalent of a data base engine, a set of software modules you can use as a base to build lots of different games with the same underlying "animation and sound model". "It is based on the PMODE dos-extender by Tran"... good stuff... Available here are v2.00 (306k .zip) and v1.01 (115k .zip)...
[about] [faq]
[updates]
[stats]
[author recognition]
[contributing]
[pending submissions]
[feedback]
[email]
[up]
(new!) sections have been updated in the last week...
(recent) sections have been updated in the last two weeks...