Category: memory management
Flags: Undocumented function
INT 2F - Novell DOS 7 - EMM386.EXE - MULTITASKING API - SUPERVISOR MODULE AX = 2780h CL = 01h (module: Supervisor) CH = subfunction 00h unused Return: CX = status (0002h) (see #02739) 01h unused Return: CX = status (0002h) (see #02739) 02h "Z_ModuleReg" register an OS module EBX = module number (0005h-000Fh) DS:EDX -> module descriptor (see #02741) Return: CX = status (0000h,0030h) (see #02739) 03h allocate SYSDAT memory DX = number of ??? to allocate Return: CX = status (0000h,0003h) (see #02739) 04h get selector to SYSDAT Return: CX = 0000h (successful) BX = selector for EMM386 data segment EBX high word cleared 05h "Z_MoveReal" relocate segment into extended memory DS:EDX -> descriptor parameter block Return: ECX = status (00h,03h,31h,32h) (see #02739) ---if successful--- parameter block filled 06h "Z_Reboot" return to real mode via triple fault 07h debugger break Note: calls INT 03, then INT 21/AH=02h to output a question mark 08h "X_ForeCheck" check if domain is in foreground Return: CX = 0000h (successful) EBX = ??? (0 or 2) 09h register VxD with system 0Ah unload VxD hook 0Bh indicate end of initialization phase Return: CX = status (0002h) (see #02739) 0Ch "F_AllocWindow" allocate 4K mapping window 0Dh "F_RegisterBoot" register reboot addresses EBX = ??? EDX = ??? Return: ??? 0Eh "F_EnquireBoot" check if reboot active Return: CX = 0000h (successful) BL = ??? \ or BX = 0000h BH = ??? / 0Fh get debugging level Return: CX = 0000h (successful) EBX = new value for debugging level 10h set debugging level EDX = ??? Return: CX = 0000h (successful) EBX = old value of debugging level 11h installation check (documented) Return: CX = status 0000h if multitasker is installed EBX = version (0100h for v1.00) 1101h if multitasker is not present 12h "F_V86BPInstall" install V86 breakpoint DX = ??? Return: CX = 0000h (successful) AX = old value of ??? 13h "F_V86BPRemove" remove V86 breakpoint Return: CX = status (0000h,003Fh) (see #02739) AX = ??? 14h "F_V86BPOffer" indicate INT 03 to be used as V86 breakpoint EDX = linear address ??? of INT 03 instruction for breakpoint Return: CX = status (0000h,003Fh) (see #02739) 15h "F_LoaderCleanup" offer opportunity to clean up BX = segment of ??? Return: CX = 0000h (successful) BX = segment of ??? 16h "F_RegisterVxDWindow" register VxD mapping window 17h "F_RegisterPNW" register Personal NetWare information EBX = subfunction (0-2) Return: CX = status (0002h if EBX>2) (see #02739) ??? 18h unused Return: CX = status (0002h) (see #02739) Return: CX = status (most subfunctions) (E)AX and/or (E)BX contain return values, depending on function Notes: called by DPMS.EXE and EMM386.EXE this API is only available if AX=12FFh/BX=0EDCh returns successfully; because the request is handled on the initial trap to the memory manager caused by INT instructions, this API must be invoked with an actual INT 2F instruction instead of some simulation such as a far call to the address in the interrupt vector table SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h