Int 2F Fn 2780 U - Novell Dos 7 - Emm386.exe - Multitasking Api - Real-t [m]
AX = 2780h
CL = 02h (module: Real-Time Monitor)
CH = subfunction
00h ???
???
Return: CX = status (0000h,0023h, others???) (see #2426)
BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
Note: calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
func 02h/sf 0Bh, and func 04h/sf 01h
01h "Z_PCountGet" get and clear count of dispatches
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
EBX = old value of ??? if successful
EDX destroyed
02h "Z_FlagWait" wait on semaphore
DX = index of semaphore???
Return: CX = status (0000h,0004h,0005h) (see #2426)
EBX = 0000FFFFh on error, 00000000h if successful
03h "Z_FlagSet" set a semaphore flag
DX = index of semaphore???
Return: CX = status (0000h,0004h,0006h) (see #2426)
BX = FFFFh on error, 0000h if successful
04h "X_QCreate" create a new queue
Return: CX = status (0000h,0007h,000Ah) (see #2426)
05h "X_QOpen" open queue for reading/writing
EDX -> ??? data (first 8 bytes seem to be name)
Return: CX = status (0000h,0009h,000Dh) (see #2426)
06h "X_QDelete" delete a queue
Note: calls fn 02h/subfn 05h, then fn 02h/subfn 40h
07h "X_QRead" read message from queue
EDX = ???
Return: CX = status (0000h,0009h,000Eh) (see #2426)
08h "X_QReadC" read message from queue, if any
EDX = ???
Return: CX = status (0000h,0009h,000Eh) (see #2426)
09h "X_QWrite" write message to queue
EDX = ???
Return: CX = status (0000h,0009h,000Fh) (see #2426)
0Ah "X_QWriteC" write message to queue, if space available
EDX = ???
Return: CX = status (0000h,0009h,000Fh) (see #2426)
0Bh "X_PDelay" put process to sleep for specified period
DX = number of clock ticks to sleep???
Return: CX = 0000h (successful)
0Ch "X_PDispatch" force a dispatch (run scheduler)
Return: CX = 0000h (successful)
0Dh "F_PTerm" terminate process???
Return: CX = status (0000h,0023h) (see #2426)
BX = FFFFh on error, 0000h if successful
Note: calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
0Eh "X_PCreate" create new process
???
Return: CX = status (0000h,000Ch) (see #2426)
EBX = ??? if successful
0Fh "Z_PPriorSet" set process priority
BX = ???
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
10h "X_PHandleGet" get current process handle
Return: CX = 0000h (successful)
BX = handle of default ???
EBX high word cleared
11h "X_PTerm" terminate process
DX = process handle or 0000h for current
BX = ??? (handle???)
Return: CX = status (0000h,000Bh,0014h) (see #2426)
12h "F_Sleep" ???
BX = ???
DX = ???
Return: CX = 0000h (successful)
13h "F_Wakeup" ???
DX = ???
Return: CX = status (see #2426)
14h "F_FindPDName" find process by name???
BX = ???
DX = ???
Return: CX = status (0000h,0014h) (see #2426)
BX = FFFFh on error, ??? if successful
15h "F_SetFlags" set ??? flags
BX = ??? (low two bits only)
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
BX = new value of ??? flags (entire word)
EBX high register cleared
16h "F_EndOfInterrupt" issue EOI to PIC
Return: CX = 0000h (successful)
17h "X_PTermOff" disable process termination
18h "X_PTermOK" enable process termination
19h "Z_FlagStatusGet" get semahprore's status
1Ah "F_QRdMX" ???
1Bh "F_QWrMX" ???
1Ch "Z_FlagAlloc" allocate a new semaphore
1Dh "Z_FlagFree" free semaphore
1Eh "X_FlagsMaxGet" get number of semaphores supported
1Fh "X_QReadNDC" non-destructive read from queue (peek)
20h "Z_FlagWWTO" wait on semaphore, with timeout
21h "F_UdaAlloc" ???
22h "F_UdaFree" ???
23h "X_PSuspend" suspend process
24h "X_PUnsuspend" restart process after suspension
25h "X_CritEnter" enter critical region
26h "X_CritExit" leave critical region
27h "F_PCreate" ???
28h "Z_PHandleListGet" get list of process handles
29h "Z_PNameGet" get process name
2Ah "Z_PStatusGet" get process status
2Bh "F_PDToDomain" get process' domain???
2Ch "Z_PPriorGet" get process priority
2Dh "F_QDList" get list of queues???
2Eh "Z_QNameGet" get queue's name
2Fh "X_QMsgLenGet" get message length of queue
30h "X_QMsgMaxGet" get message capacity of queue
31h "Z_QWriterGet" get handle of process waiting to write queue
32h "Z_QReaderGet" get handle of process waiting to read queue
33h "X_QMsgNumGet" get number of messages in queue
34h "Z_QFlagsGet" get queue's flags
35h "F_NameToQD" get queue by name???
36h "F_NameToPD" get process by name???
37h "X_MXCreate" create a mutex
38h "X_MXDelete" delete a mutex
39h "X_MXEnter" enter mutual-exclusion zone
3Ah "X_MXEnterC" enter mutual-exclusion zone if it is free
3Bh "X_MXExit" leave mutual-exclusion zone
3Ch "Z_TicksSet" set length of foreground time slices
3Dh "X_TickGet" get clock tick period
3Eh "F_ProcessID" ???
3Fh "X_QClose" close a queue
40h "F_QDispose" delete queue???
41h "F_PDToFlags" get process flags???
42h "F_PDToDParam" ???
43h "F_ReleaseMX" release mutex???
44h "F_SimulateInt" ???
45h "Z_QFlagsSet" set queue's flags
46h "F_TickRate" ???
47h ???
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=01h,AX=2780h/CL=03h,AX=2780h/CL=04h