INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME AX = FB42h BX = 0005h CX = selector of DPMILOAD data (see below) DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored) Return: DX = status (see AX=FB42h/BX=0004h) 0000h successful AX:BX -> ??? FAR function (called with two words on top of stk) else BX destroyed SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh Format of DPMILOAD data: Offset Size Description 00h 12 BYTEs ??? 0Ch WORD ??? bit flags 0Eh 14 BYTEs ??? 1Ch WORD number of memory control records 1Eh 25 BYTEs ??? 37h BYTE ??? bit flags bit 4: data valid??? 38h 4 BYTEs ??? 3Ch WORD ??? 3Eh 12 BYTEs ??? 46h BYTE ??? counter 47h BYTE ??? 48h BYTE ??? 49h BYTE ??? 4Ah WORD ??? 4Ch 2 BYTEs ??? 4Eh WORD offset of array of 64-byte memory control records 52h WORD offset of name list (see below) 54h 4 BYTEs ??? 58h WORD offset of array of 6-byte objects 5Ah 8 BYTEs ??? 62h 9 BYTEs ASCIZ name for ??? 6Bh 9 BYTEs ASCIZ name for ??? ??? Format of name list entry [array]: Offset Size Description 00h BYTE length of name (00h if end of array) 01h N BYTEs name N+1 WORD 1-based index into array of unknown 6-byte objects Format of 6-byte objects: Offset Size Description 00h BYTE ??? 01h BYTE ??? 02h BYTE ??? 03h BYTE 1-based index of memory control record 04h WORD ??? Format of memory control record: Offset Size Description 00h 20 BYTEs memory block info (see AX=FB42h/BX=0002h) 14h 6 BYTEs ??? 1Ah BYTE ??? 1Bh 2 BYTEs ??? 1Dh BYTE ??? bit flags 1Eh 14 BYTEs ??? 2Ch DWORD pointer to ??? memory control record or 0000h:0000h 30h DWORD pointer to ??? memory control record or 0000h:0000h 34h DWORD pointer to next??? memory control record or 0000h:0000h 38h DWORD pointer to prev??? memory control record or 0000h:0000h 3Ch 4 BYTEs ??? Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do the pointers at offsets 34h and 38h .