INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY AX = FB42h BX = 0002h CX = size in bytes DX = bit flags bit 2: set to allocate DOS memory, clear for DPMIsee DOS Protected-Mode Interface memory SI = selector of descriptor to be modified to access allocated memory DI = selector of a second descriptor to be modified Return: AX = ??? or 0000h on error CX:DX = linear base address of DPMIsee DOS Protected-Mode Interface memory block SI:DI = handle for DPMIsee DOS Protected-Mode Interface memory block or FFFFh:FFFFh ??? Note: two segment descriptors may be set if a code and an aliased data segment are required; if only one descriptor is needed, SI should equal DI on entry BUG: when allocating DOS memory, the code computes the linear address by multiplying the segment number by 4 rather than shifting by 4 SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY AX = FB42h BX = 0002h ES:SI -> memory block info (see #03127) Return: ??? Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself as version 1.000, while the version distributed with BC++ 3.0 identifies itself as version 1.0; the former is 10864 bytes, the latter 22180 bytes. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h Format of DPMILOAD memory block info: Offset Size Description (Table 03127) 00h WORD flags (see #03128) 02h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. block size in bytes ---DPMI memory block--- 06h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. DPMIsee DOS Protected-Mode Interface memory block handle ---DOS memory block--- 06h WORD real-mode segment of memory block 08h WORD selector of memory block --- 0Ah DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. linear address of memory 0Eh WORD memory operation error code 0008h no more free LDT descriptors ---if flags bit 0 clear--- 10h WORD code segment selector for memory block or 0000h or FFFFh 12h WORD data alias selector for memory block or 0000h or FFFFh ---if flags bit 0 set--- 10h WORD data segment selector for memory block or 0000h or FFFFh 12h WORD unused??? Bitfields for DPMILOAD memory block flags: Bit(s) Description (Table 03128) 0 set if data segment rather than code segment 1 information valid 2 set if DOS memory block rather than DPMIsee DOS Protected-Mode Interface memory block 4 ??? 15 set if no LDT selectors for memory block??? SeeAlso: #03127