Interrups | Categories | Contents |
AX = 2780h.CL = 01h (module:
Supervisor). CH = subfunction 00h unusedReturn:
CX = status (0002h) (see #02739) 01h unusedReturn:
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 allocateReturn:
CX = status (0000h,0003h) (see #02739) 04h get selector to SYSDATReturn:
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 blockReturn:
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 phaseReturn:
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 activeReturn:
CX = 0000h (successful) BL = ??? \ or BX = 0000h BH = ??? / 0Fh get debugging levelReturn:
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 breakpointReturn:
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 breakpointReturn:
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 unusedReturn:
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
See Also:
AX=12FFh/BX=0EDCh - AX=2780h/CL=02h - AX=2780h/CL=03h -
(Table 02739)
Values for Novell DOS 7 EMM386 function status:
0000h successful
0001h not implemented
0002h invalid subfunction
0003h unable to find memory
0004h invalid flag (semaphore) number
0005h flag (semaphore) overrun
0006h flag (semaphore) underrun
0007h no queue handles available
0009h no queue buffers available
000Ah queue is in use
000Bh invalid process handle
000Ch no process handles available
000Dh queue access not permitted
000Eh queue is empty
000Fh queue is full
0012h no memory handles available
0014h can't find process in process list
001Bh invalid memory handle
0023h unable to terminate process
002Ah flag set ignored
002Dh no more system flags
002Eh flag (semaphore) not in idle state
002Fh flag (semaphore) wait timed out
0030h bad module number in CL
0031h bad descriptor.
Invalid value for DESC_PB_SINFO in a descriptor parameter block
0032h no free descriptors
0033h error while locking/unlocking a page
0034h error getting or setting a page
0035h no pages available
0036h invalid domain
0037h process already frozen
0038h process not frozen
0039h fork failure (no registered swaplist)
003Ah page already free
003Bh page already allocated
003Ch unable to switch tasks
003Dh attempted to free critical section which is not active
003Eh too many active critical sections
003Fh ???
41FFh current domain is invalid, or no domain in context
42FFh domain ID is not a valid descriptor
43FFh domain creation still in progress
44FFh domain currently being deleted
45FFh task manager is busy, cannot unload it
46FFh task manager already loaded
47FFh task manager not yet loaded
48FFh cannot save/restore because prior switch not complete
49FFh console already has owner
4BFFh unsupported opcode
4CFFh 32-bit address prefix not supported
4FFFh timeout, but not on timer queue
50FFh unable to lock timer queue
53FFh unable to switch while in Global Message Mode
54FFh error while setting Global Message Mode
55FFh not in Global Message Mode
56FFh system already in Domain Message Mode
57FFh not in Domain Message Mode
58FFh unable to allocate timeout structure
59FFh unsupported video type
5AFFh function not handled by any VM
5BFFh error in Serial..Set call
5CFFh error in Parallel..Set call
5DFFh domain list overflowed
5FFFh unable to free domain while in nobuffers mode
Format of Novell DOS/OpenDOS EMM386 descriptor parameter block:
Offset Size Description (Table 02740)
00h DWORD "DESC_PB_BASE"
04h DWORD "DESC_PB_LIMIT"
08h WORD "DESC_PB_SEL"
0Ah BYTE "DESC_PB_MINFO"
0Bh BYTE "DESC_PB_SINFO"
See Also:
#02741
Format of Novell DOS/OpenDOS EMM386 module descriptor:
Offset Size Description (Table 02741)
00h 12 BYTEs descriptor parameter block (see #02740)
0Ch DWORD -> module entry point
Note:
For function "Z_ModuleReg", only DESC_PB_SEL and the module entry point
need to be initialized before calling EMM386
See Also:
#02740
Category:
Memory Management
-
Int 2Fh
-
N
Interrups | Categories | Contents |
|