INT 2F - Novell DOS Protected Mode Services (DPMS) - INSTALLATION CHECK AX = 43E0h Return: AX = 0000h if installed ES:BX -> registration structure (see below) Note: this specification is still in beta SeeAlso: INT 2F/AX=1687h Format of registration structure: Offset Size Description 00h DWORD real-mode API entry point 04h DWORD 16-bit protected-mode API entry point 08h 8 BYTEs reserved (0) 10h 8 BYTEs blank-padded server OEM name 18h WORD flags bit 0: fast processor reset available (286 only) bits 1-15 reserved (undefined) 1Ah 2 BYTEs DPMS version (major,minor) 1Ch BYTE CPU type (02h = 286, 03h = 386 or higher) Call DPMS entry point with: AX = 0100h call protected-mode procedure CX = number of words of stack to copy ES:DI -> callup/down register structure (see below) Return: CF clear if successful CF set on error AX = error code (see below) AX = 0101h call real-mode procedure (RETF return) CX = number of words of stack to copy ES:DI -> callup/down register structure (see below) Return: CF clear if successful CF set on error AX = error code (see below) AX = 0102h call real-mode procedure (IRET return) CX = number of words of stack to copy ES:DI -> callup/down register structure (see below) Return: CF clear if successful CF set on error AX = error code (see below) AX = 0103h call real-mode interrupt handler BL = interrupt number CX = number of words of stack to copy ES:DI -> callup/down register structure (see below) Return: CF clear if successful CF set on error AX = error code (see below) AX = 0200h allocate descriptors CX = number of descriptors to allocate Return: CF clear if successful AX = first descriptor allocated CF set on error AX = error code (see below) AX = 0201h free a descriptor BX = descriptor Return: CF clear if successful CF set on error AX = error code (see below) AX = 0202h create alias descriptor BX = descriptor Return: CF clear if successful AX = alias descriptor CF set on error AX = error code (see below) AX = 0203h build alias to real-mode segment BX = descriptor CX = real-mode segment Return: CF clear if successful CF set on error AX = error code (see below) AX = 0204h set descriptor base BX = descriptor CX:DX = base address Return: CF clear if successful CF set on error AX = error code (see below) AX = 0205h set descriptor limit BX = descriptor CX = limit Return: CF clear if successful CF set on error AX = error code (see below) AX = 0206h set descriptor type/attribute BX = descriptor CL = type CH = attribute Return: CF clear if successful CF set on error AX = error code (see below) AX = 0207h get descriptor base BX = descriptor Return: CF clear if successful CX:DX = base address CF set on error AX = error code (see below) AX = 0300h get size of largest free block of memory Return: CF clear if successful BX:CX = size CF set on error AX = error code (see below) AX = 0301h allocate block of extended memory BX:CX = size Return: CF clear if successful BX:CX = base address SI:DI = handle CF set on error AX = error code (see below) AX = 0302h free block of extended memory SI:DI = handle Return: CF clear if successful CF set on error AX = error code (see below) AX = 0303h map linear memory ES:[DI] = DDS Return: CF clear if successful BX:CX = base address SI:DI = handle CF set on error AX = error code (see below) AX = 0304h unmap linear memory SI:DI = handle Return: CF clear if successful CF set on error AX = error code (see below) AX = 0400h relocate segment to extended memory ES:SI = base address CX = limit BL = type BH = attribute DX = selector or 0000h Return: CF clear if successful AX = selector BX:CX = new base address SI:DI = handle CF set on error AX = error code (see below) Values for error code: 8000h general error 8001h unsupported function 8011h descriptor unavailable 8012h linear memory unavailable 8013h physical memory unavailable 8021h invalid value 8022h invalid selector 8023h invalid handle Format of callup/down register structure: Offset Size Description 00h DWORD EDI 04h DWORD ESI 08h DWORD EBP 0Ch 4 BYTEs reserved (0) 10h DWORD EBX 14h DWORD EDX 18h DWORD ECX 20h DWORD EAX 24h DWORD EIP 28h WORD CS 2Ah 2 BYTEs reserved (0) 2Ch DWORD EFLAGS 30h DWORD ESP 34h WORD SS 36h 2 BYTEs reserved (0) 38h WORD ES 3Ah 2 BYTEs reserved (0) 3Ch WORD DS 3Eh 2 BYTEs reserved (0) 40h WORD FS 42h 2 BYTEs reserved (0) 44h WORD GS 46h 2 BYTEs reserved (0) .