Sysfunctions 70 & 30: the info about relative names is added.
git-svn-id: svn://kolibrios.org@1662 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.7.5.0
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.7.7.0
|
||||
|
||||
Number of the function is located in the register eax.
|
||||
The call of the system function is executed by "int 0x40" command.
|
||||
@@ -376,8 +376,8 @@ Remarks:
|
||||
and idle time in waiting for interrupt (which can be got by call
|
||||
to subfunction 4 of function 18).
|
||||
* Beginning from slot 2, the normal applications are placed.
|
||||
* Applications are placed in memory at the address 0x0
|
||||
(kernel constant 'std_application_base_address').
|
||||
* The normal applications are placed in memory at the address
|
||||
0 (kernel constant 'std_application_base_address').
|
||||
There is no intersection, as each process has its own page table.
|
||||
* At creation of the thread it is assigned the slot
|
||||
in the system table and identifier (Process/Thread IDentifier =
|
||||
@@ -679,7 +679,7 @@ Returned value:
|
||||
* eax = clock rate (modulo 2^32 clock ticks = 4GHz)
|
||||
|
||||
======================================================================
|
||||
Function 18, subfunction 6 - save ramdisk to the file on hard drive.
|
||||
Function 18, subfunction 6 - save ramdisk to the file on hard drive.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
@@ -761,7 +761,7 @@ Returned value:
|
||||
Remarks:
|
||||
* The minimized window from the point of view of function 9
|
||||
keeps position and sizes.
|
||||
* Restoring of an application window occurs at its activation by
|
||||
* Restoring of an application window occurs at its activation by
|
||||
subfunction 3.
|
||||
* Usually there is no necessity to minimize/restire a window
|
||||
obviously: minimization of a window is carried out by the system
|
||||
@@ -771,7 +771,7 @@ Remarks:
|
||||
restore of a window is done by the application '@panel'.
|
||||
|
||||
======================================================================
|
||||
Function 18, subfunction 11 - get information on the disk subsystem.
|
||||
Function 18, subfunction 11 - get information on the disk subsystem.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
@@ -846,10 +846,10 @@ Structure of the buffer:
|
||||
db a,b,c,d for version a.b.c.d
|
||||
db UID_xxx: one of UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||
dd REV - kernel SVN revision number
|
||||
For Kolibri 0.7.1.0 kernel:
|
||||
db 0,7,0,0
|
||||
For Kolibri 0.7.7.0 kernel:
|
||||
db 0,7,7,0
|
||||
db 2
|
||||
dd 638
|
||||
dd 1319
|
||||
|
||||
======================================================================
|
||||
======= Function 18, subfunction 14 - wait for screen retrace. =======
|
||||
@@ -1062,7 +1062,7 @@ Returned value (is the same for both subfunctions):
|
||||
* eax = 0 - success
|
||||
* eax = 1 - base port is not defined
|
||||
Remarks:
|
||||
* Previously the base port must be defined by
|
||||
* Previously the base port must be defined by
|
||||
subfunction 1 of function 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1106,7 +1106,7 @@ Remarks:
|
||||
if Alt and Shift are not pressed, but Ctrl is pressed, the normal
|
||||
layout is used and then from the code is subtracted 0x60;
|
||||
if no control key is pressed, the normal layout is used.
|
||||
* To get layout and country identifier use
|
||||
* To get layout and country identifier use
|
||||
subfunction 2 of function 26.
|
||||
* Country identifier is global system variable, which is not used
|
||||
by the kernel itself; however the application '@panel' displays
|
||||
@@ -1160,7 +1160,7 @@ Remarks:
|
||||
* Do not change base, when any application works with hard disk.
|
||||
If you do not want system bugs.
|
||||
* To get HD base use subfunction 7 of function 26.
|
||||
* It is also necessary to define used partition of hard disk by
|
||||
* It is also necessary to define used partition of hard disk by
|
||||
subfunction 8.
|
||||
|
||||
======================================================================
|
||||
@@ -1182,12 +1182,12 @@ Remarks:
|
||||
If you do not want system bugs.
|
||||
* To get used partition use subfunction 8 of function 26.
|
||||
* There is no correctness checks.
|
||||
* To get the number of partitions of a hard disk use
|
||||
* To get the number of partitions of a hard disk use
|
||||
subfunction 11 of function 18.
|
||||
* It is also necessary to define used HD base by subfunction 7.
|
||||
|
||||
======================================================================
|
||||
Function 21, subfunction 11 - enable/disable low-level access to HD.
|
||||
Function 21, subfunction 11 - enable/disable low-level access to HD.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 21 - function number
|
||||
@@ -1201,7 +1201,7 @@ Remarks:
|
||||
* To get current status use subfunction 11 of function 26.
|
||||
|
||||
======================================================================
|
||||
Function 21, subfunction 12 - enable/disable low-level access to PCI.
|
||||
Function 21, subfunction 12 - enable/disable low-level access to PCI.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 21 - function number
|
||||
@@ -1268,7 +1268,7 @@ Returned value:
|
||||
* ebx = frequency of the vertical scanning (in Hz)
|
||||
* ecx = number of current videomode
|
||||
Remarks:
|
||||
* Driver must be initialized by call to
|
||||
* Driver must be initialized by call to
|
||||
driver function 1.
|
||||
* If only screen sizes are required, it is more expedient to use
|
||||
function 14 taking into account that it
|
||||
@@ -1403,7 +1403,7 @@ Returned value:
|
||||
* eax = 0 - success
|
||||
* eax = 1 - CD base is not defined
|
||||
Remarks:
|
||||
* Previously CD base must be defined by the call to
|
||||
* Previously CD base must be defined by the call to
|
||||
subfunction 3 of function 21.
|
||||
* One second includes 75 frames, one minute includes 60 seconds.
|
||||
* The function is asynchronous (returns control, when play begins).
|
||||
@@ -1423,7 +1423,7 @@ Remarks:
|
||||
* The format of the table with tracks information is the same as
|
||||
for ATAPI-CD command 43h (READ TOC), usual table (subcommand 00h).
|
||||
Function returns addresses in MSF.
|
||||
* Previously CD base port must be set by call to
|
||||
* Previously CD base port must be set by call to
|
||||
subfunction 3 of function 21.
|
||||
* Function returns information only about no more than 100
|
||||
first tracks. In most cases it is enough.
|
||||
@@ -1438,7 +1438,7 @@ Returned value:
|
||||
* eax = 0 - success
|
||||
* eax = 1 - CD base is not defined
|
||||
Remarks:
|
||||
* Previously CD base port must be defined by call to
|
||||
* Previously CD base port must be defined by call to
|
||||
subfunction 3 of function 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1513,7 +1513,7 @@ Remarks:
|
||||
if Alt and Shift are not pressed, but Ctrl is pressed, the normal
|
||||
layout is used and then from the code is subtracted 0x60;
|
||||
if no control key is pressed, the normal layout is used.
|
||||
* To set layout and country identifier use
|
||||
* To set layout and country identifier use
|
||||
subfunction 2 of function 21.
|
||||
* Country identifier is global system variable, which is not used
|
||||
by the kernel itself; however the application '@panel' displays
|
||||
@@ -1658,56 +1658,9 @@ Returned value:
|
||||
Remarks:
|
||||
* If the buffer is too small to hold all data, only first (edx-1)
|
||||
bytes are copied and than terminating 0 is inserted.
|
||||
|
||||
======================================================================
|
||||
=============== Function 32 - delete file from ramdisk. ==============
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 32 - function number
|
||||
* ebx = pointer to the filename
|
||||
Returned value:
|
||||
* eax = 0 - success; otherwise file system error code
|
||||
Remarks:
|
||||
* This function is obsolete; function 58 allows to fulfill
|
||||
the same operations with the extended possibilities.
|
||||
* The current implementation returns only values 0(success) and
|
||||
5(file not found).
|
||||
* The filename must be either in the format 8+3 characters
|
||||
(first 8 characters - name itself, last 3 - extension,
|
||||
the short names and extensions are supplemented with spaces),
|
||||
or in the format 8.3 characters "FILE.EXT"/"FILE.EX "
|
||||
(name no more than 8 characters, dot, extension 3 characters
|
||||
supplemented if necessary by spaces).
|
||||
The filename must be written with capital letters. The terminating
|
||||
character with code 0 is not necessary (not ASCIIZ-string).
|
||||
* This function does not support folders on the ramdisk.
|
||||
|
||||
======================================================================
|
||||
================ Function 33 - write file to ramdisk. ================
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 33 - function number
|
||||
* ebx = pointer to the filename
|
||||
* ecx = pointer to data for writing
|
||||
* edx = number of bytes for writing
|
||||
* should be set esi=0
|
||||
Returned value:
|
||||
* eax = 0 - success, otherwise file system error code
|
||||
Remarks:
|
||||
* This function is obsolete; function 70 allows to fulfil
|
||||
the same operations with extended possibilities.
|
||||
* If esi contains non-zero value and selected file already exists,
|
||||
one more file with the same name will be created.
|
||||
* Otherwise file will be overwritten.
|
||||
* The filename must be either in the format 8+3 characters
|
||||
(first 8 characters - name itself, last 3 - extension,
|
||||
the short names and extensions are supplemented with spaces),
|
||||
or in the format 8.3 characters "FILE.EXT"/"FILE.EX "
|
||||
(name no more than 8 characters, dot, extension 3 characters
|
||||
supplemented if necessary by spaces).
|
||||
The filename must be written with capital letters. The terminating
|
||||
character with code 0 is not necessary (not ASCIIZ-string).
|
||||
* This function does not support folders on the ramdisk.
|
||||
* By default, current folder for the thread is "/rd/1".
|
||||
* At process/thread creation the current folder will be inherited
|
||||
from the parent.
|
||||
|
||||
======================================================================
|
||||
======= Function 35 - read the color of a pixel on the screen. =======
|
||||
@@ -1888,7 +1841,7 @@ Remarks:
|
||||
changed in future kernel versions.
|
||||
* Offset for pixel with coordinates (x,y)
|
||||
is calculated as (x+y*xsize)*3.
|
||||
* There is a pair function to set pixel on the background image -
|
||||
* There is a pair function to set pixel on the background image -
|
||||
subfunction 2 of function 15.
|
||||
|
||||
======================================================================
|
||||
@@ -1901,7 +1854,7 @@ Returned value:
|
||||
* eax = 1 - tile
|
||||
* eax = 2 - stretch
|
||||
Remarks:
|
||||
* There is a pair function to set drawing mode -
|
||||
* There is a pair function to set drawing mode -
|
||||
subfunction 4 of function 15.
|
||||
|
||||
======================================================================
|
||||
@@ -2193,11 +2146,11 @@ Remarks:
|
||||
* Structure of the color table is described in the standard
|
||||
include file 'macros.inc' as 'system_colors'; for example,
|
||||
it is possible to write:
|
||||
sc system_colors ; variable declaration
|
||||
... ; somewhere one must call
|
||||
; this function with ecx=sc
|
||||
mov ecx, [sc.work_button_text] ; read text color on
|
||||
; buttin in working area
|
||||
sc system_colors ; variable declaration
|
||||
... ; somewhere one must call
|
||||
; this function with ecx=sc
|
||||
mov ecx, [sc.work_button_text] ; read text color on
|
||||
; buttin in working area
|
||||
* A program itself desides to use or not to use color table.
|
||||
For usage program must simply at calls to drawing functions select
|
||||
color taken from the table.
|
||||
@@ -2392,7 +2345,7 @@ Parameters:
|
||||
Returned value:
|
||||
* eax = -1 - error (there is too many threads)
|
||||
* otherwise eax = TID - thread identifier
|
||||
</UL>
|
||||
</UL>
|
||||
|
||||
======================================================================
|
||||
=== Function 52, subfunction 0 - get network driver configuration. ===
|
||||
@@ -2470,7 +2423,7 @@ Remarks:
|
||||
performs no checks on correctness.
|
||||
|
||||
======================================================================
|
||||
Function 52, subfunction 8 - read data from the network output queue.
|
||||
Function 52, subfunction 8 - read data from the network output queue.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 52 - function number
|
||||
@@ -2749,7 +2702,7 @@ Returned value:
|
||||
* ebx destroyed
|
||||
|
||||
======================================================================
|
||||
= Function 53, subfunction 255 - debug information of network driver.
|
||||
= Function 53, subfunction 255 - debug information of network driver.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 53 - function number
|
||||
@@ -2780,7 +2733,7 @@ Possible values for ecx:
|
||||
* 6: status of packet driver, 0=inactive, nonzero=active
|
||||
|
||||
======================================================================
|
||||
Function 55, subfunction 55 - begin to play data on built-in speaker.
|
||||
Function 55, subfunction 55 - begin to play data on built-in speaker.
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 55 - function number
|
||||
@@ -2925,7 +2878,7 @@ Remarks:
|
||||
that he requested 1;
|
||||
* if one requests more than 14 blocks or starting block is
|
||||
not less than 14, function returns eax=5 (not found) <20> ebx=-1;
|
||||
* size of ramdisk root folder is 14 blocks,
|
||||
* size of ramdisk root folder is 14 blocks,
|
||||
0x1C00=7168 <20><><EFBFBD><EFBFBD>; but function returns ebx=0
|
||||
(except of the case of previous item);
|
||||
* strangely enough, it is possible to read 14th block (which
|
||||
@@ -2987,8 +2940,8 @@ Remarks:
|
||||
* Block size is 512 bytes; function reads one block.
|
||||
* Do not depend on returned value, it can be changed
|
||||
in future versions.
|
||||
* Function requires that LBA-access to devices is enabled by
|
||||
subfunction 11 of function 21. To check this one can use
|
||||
* Function requires that LBA-access to devices is enabled by
|
||||
subfunction 11 of function 21. To check this one can use
|
||||
subfunction 11 of function 26.
|
||||
* LBA-read of floppy is not supported.
|
||||
* Function reads data on physical hard drive; if for any reason
|
||||
@@ -3098,11 +3051,11 @@ Remarks:
|
||||
The data of the graphics screen (the memory area which displays
|
||||
screen contents) are accessible to a program directly, without
|
||||
any system calls, through the selector gs:
|
||||
mov eax, [gs:0]
|
||||
mov eax, [gs:0]
|
||||
places in eax the first dword of the buffer, which contains
|
||||
information on color of the left upper point (and, possibly, colors
|
||||
of several following).
|
||||
mov [gs:0], eax
|
||||
mov [gs:0], eax
|
||||
by work in VESA modes with LFB sets color of the left upper point
|
||||
(and, possibly, colors of several following).
|
||||
To interpret the data of graphics screen program needs to know
|
||||
@@ -3260,59 +3213,6 @@ Remarks:
|
||||
Ralf Brown; registers of the second type must be listed
|
||||
in the device documentation.
|
||||
|
||||
======================================================================
|
||||
===================== Function 62, subfunction 11 ====================
|
||||
== Initialize user-accessible MMIO channel ==
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 62 - function
|
||||
* bl = 11 - subfunction
|
||||
* cx = PCI-address (bbbbbbbb dddddfff)
|
||||
Returns:
|
||||
* eax = -1 - PCI access not granted;
|
||||
* eax = -2 - no user MMIO access to this PCI address;
|
||||
* eax = -3 - memory allocation error; otherwise
|
||||
* eax = available user heap size.
|
||||
Remarks:
|
||||
* Low-level PCI access must be allowed (fn21:12)
|
||||
* PCI-address should correspond the system var [mmio_pci_addr]
|
||||
|
||||
======================================================================
|
||||
===================== Function 62, subfunction 12 ====================
|
||||
== Request user-accessible MMIO address space ==
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 62 - function
|
||||
* bl = 12 - subfunction
|
||||
* bh = BAR number in PCI configuration space
|
||||
* ecx = MMIO-block size needed (bytes)
|
||||
* edx = MMIO-offset (number of whole 4Kb-pages!)
|
||||
Returns:
|
||||
* eax = -1 - user PCI access denied;
|
||||
* eax = -2 - invalid BAR number;
|
||||
* eax = -3 - BAR contains no valid IO addres;
|
||||
* eax = -4 - BAR addresses IO ports;
|
||||
* eax = -5 - dynamic allocation error; otherwise
|
||||
* eax = MMIO start address (in application's linear space).
|
||||
Remarks:
|
||||
* Low-level PCI access must be allowed (fn21:12)
|
||||
* The system var [mmio_pci_addr] sets the actual PCI-address
|
||||
* The granted MMIO addresses should be released after use (fn62:13)
|
||||
|
||||
======================================================================
|
||||
===================== Function 62, subfunction 13 ====================
|
||||
== Release a block of user MMIO addresses ==
|
||||
======================================================================
|
||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* eax = 62 - function
|
||||
* bl = 12 - subfunction
|
||||
* ecx = MMIO start address (in application's linear space).
|
||||
Returns:
|
||||
* eax = 1 if the block is successfully released;
|
||||
* eax = 0 in case of reallocation error;
|
||||
Remarks:
|
||||
* A valid uMMIO block should exist at this address (fn62:12)
|
||||
|
||||
======================================================================
|
||||
============== Function 63 - work with the debug board. ==============
|
||||
======================================================================
|
||||
@@ -3421,7 +3321,6 @@ Remarks:
|
||||
======================================================================
|
||||
The input mode influences results of reading keys by function 2.
|
||||
When a program loads, ASCII input mode is set for it.
|
||||
If subfunction is not support then eax=-1.
|
||||
|
||||
-------------- Subfunction 1 - set keyboard input mode. --------------
|
||||
Parameters:
|
||||
@@ -3670,7 +3569,7 @@ Remarks:
|
||||
|
||||
======================================================================
|
||||
===================== Function 68, subfunction 14 ====================
|
||||
====== Waiting delivering of signal from another program/driver ======
|
||||
============ Wait for signal from another program/driver. ============
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
@@ -3678,15 +3577,9 @@ Parameters:
|
||||
* ecx = pointer to the buffer for information (24 bytes)
|
||||
Returned value:
|
||||
* buffer pointed to by ecx contains the following information:
|
||||
* +0: dword: identifier for underlying data of signal
|
||||
* +4: data of signal (20 bytes), format of which is defining by
|
||||
first dword
|
||||
|
||||
======================================================================
|
||||
====== Function 68, subfunction 15 - set FPU exception handler. ======
|
||||
======================================================================
|
||||
Deleted (in current implementation only 0 is returned).
|
||||
Using subfunctions 24, 25 is true.
|
||||
* +0: dword: identifier for following data of signal
|
||||
* +4: dword: data of signal (20 bytes), format of which is defined
|
||||
by the first dword
|
||||
|
||||
======================================================================
|
||||
============= Function 68, subfunction 16 - load driver. =============
|
||||
@@ -3720,22 +3613,12 @@ Parameters:
|
||||
* +16 = +0x10: dword: pointer to output data
|
||||
* +20 = +0x14: dword: size of output data
|
||||
Returned value:
|
||||
* eax = error code
|
||||
0 - successful call
|
||||
-1 - any error.
|
||||
-2, -3, -4, etc. reserved for kernel error codes
|
||||
1, 2, 3, etc driver specific error codes
|
||||
* eax = determined by driver
|
||||
Remarks:
|
||||
* Function codes and the structure of input/output data
|
||||
are defined by driver.
|
||||
* Previously one must obtain driver handle by subfunction 16.
|
||||
|
||||
======================================================================
|
||||
====== Function 68, subfunction 18 - set SSE exception handler. ======
|
||||
======================================================================
|
||||
Deleted (in current implementation only 0 is returned).
|
||||
Using subfunctions 24, 25 is true.
|
||||
|
||||
======================================================================
|
||||
=============== Function 68, subfunction 19 - load DLL. ==============
|
||||
======================================================================
|
||||
@@ -3775,36 +3658,92 @@ Remarks:
|
||||
the new and old sizes.
|
||||
|
||||
======================================================================
|
||||
====== Function 68, subfunction 24 - set new exceptions handler ======
|
||||
======== Function 68, subfunction 22 - open named memory area. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 22 - subfunction number
|
||||
* ecx = area name. Maximum of 31 characters with terminating zero
|
||||
* edx = area size in bytes for SHM_CREATE and SHM_OPEN_ALWAYS
|
||||
* esi = flags for open and access:
|
||||
* SHM_OPEN = 0x00 - open existing memory area. If an area
|
||||
with such name does not exist, the function
|
||||
will return error code 5.
|
||||
* SHM_OPEN_ALWAYS = 0x04 - open existing or create new
|
||||
memory area.
|
||||
* SHM_CREATE = 0x08 - create new memory area. If an area
|
||||
with such name already exists, the function
|
||||
will return error code 10.
|
||||
* SHM_READ = 0x00 - only read access
|
||||
* SHM_WRITE = 0x01 - read and write access
|
||||
Returned value:
|
||||
* eax = pointer to memory area, 0 if error has occured
|
||||
* if new area is created (SHM_CREATE or SHM_OPEN_ALWAYS):
|
||||
edx = 0 - success, otherwise - error code
|
||||
* if existing area is opened (SHM_OPEN or SHM_OPEN_ALWAYS):
|
||||
edx = error code (if eax=0) or area size in bytes
|
||||
Error codes:
|
||||
* E_NOTFOUND = 5
|
||||
* E_ACCESS = 10
|
||||
* E_NOMEM = 30
|
||||
* E_PARAM = 33
|
||||
Remarks:
|
||||
* Before this call one must initialize process heap by call to
|
||||
subfunction 11.
|
||||
* If a new area is created, access flags set maximal rights
|
||||
for other processes. An attempt from other process to open
|
||||
with denied rights will fail with error code E_ACCESS.
|
||||
* The process which has created an area always has write access.
|
||||
|
||||
======================================================================
|
||||
======= Function 68, subfunction 23 - close named memory area. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 23 - subfunction number
|
||||
* ecx = area name. Maximum of 31 characters with terminating zero
|
||||
Returned value:
|
||||
* eax destroyed
|
||||
Remarks:
|
||||
* A memory area is physically freed (with deleting all data and
|
||||
freeing physical memory), when all threads which have opened
|
||||
this area will close it.
|
||||
* When thread is terminating, all opened by it areas are closed.
|
||||
|
||||
======================================================================
|
||||
======== Function 68, subfunction 24 - set exception handler. ========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 24 - subfunction number
|
||||
* ecx = address of the new exception handler
|
||||
* edx = the mask of processing exceptions
|
||||
* edx = the mask of handled exceptions
|
||||
Returned value:
|
||||
* eax = address of the old exception handler (0, if it was not set)
|
||||
* ebx = the old mask of exception handler
|
||||
* ebx = the old mask of handled exceptions
|
||||
Remarks:
|
||||
* Bit number in mask of exceptions is correspond to exception number
|
||||
by CPU-specification (Intel-PC). For example, FPU-exception have
|
||||
number 16 (#MF), and SSE-exception - 19 (#XF)
|
||||
* The current implementation ignore the inquiry for hook of 7
|
||||
exception - system process #NM by one's own.
|
||||
* User handler get exception number in stack parameter. So, correct
|
||||
exit from handler is: RET 4. Return from handler is to the same
|
||||
instruction, that was cause the exception
|
||||
* When control is transfering to user handler, corresponding bit in
|
||||
exception mask is clearing. Rising this exception in consequence
|
||||
- reduce to default-handling. Exactly: terminating the application,
|
||||
or suspending with debug-notify to owner.
|
||||
* After completion of critical operations in user handler, it may be
|
||||
rising corresponding bit in exception mask by using subfunction 25
|
||||
Clearing exceptions flags in FPU and/or XMM modules - is
|
||||
responsibility of user handler too.
|
||||
* Bit number in mask of exceptions corresponds to exception number
|
||||
in CPU-specification (Intel-PC). For example, FPU exceptions have
|
||||
number 16 (#MF), and SSE exceptions - 19 (#XF).
|
||||
* The current implementation ignores the inquiry for hook of 7
|
||||
exception - the system handles #NM by its own.
|
||||
* The exception handler is called with exception number as first
|
||||
(and only) stack parameter. So, correct exit from the handler is
|
||||
RET 4. It returns to the instruction, that caused the exception,
|
||||
for faults, and to the next instruction for traps (see
|
||||
classification of exceptions in CPU specification).
|
||||
* When user handler receives control, the corresponding bit in
|
||||
the exception mask is cleared. Raising this exception
|
||||
in consequence leads to default handling, that is,
|
||||
terminating the application in absence of debugger or
|
||||
suspend with notification of debugger otherwise.
|
||||
* After user handler completes critical operations, it can set
|
||||
the corresponding bit in the exception mask with subfunction 25.
|
||||
Also user handler is responsible for clearing exceptions flags in
|
||||
FPU and/or SSE.
|
||||
|
||||
======================================================================
|
||||
==== Function 68, subfunction 25 - change state of signal activity ===
|
||||
====== Function 68, subfunction 25 - set FPU exception handler. ======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
@@ -3812,14 +3751,15 @@ Parameters:
|
||||
* ecx = signal number
|
||||
* edx = value of activity (0/1)
|
||||
Returned value:
|
||||
* eax = value of old activity for this signal (0/1)
|
||||
* eax = -1 - invalid signal number
|
||||
* otherwise eax = old value of activity for this signal (0/1)
|
||||
Remarks:
|
||||
* In current implementation, it is changed only exception mask for
|
||||
user exception handler, wich was previously set by subfunction 24.
|
||||
At that, number of signal correspond to exception number.
|
||||
* In current implementation only mask for user excepton handler,
|
||||
which has been previously set by subfunction 24,
|
||||
is changed. Signal number corresponds to exception number.
|
||||
|
||||
======================================================================
|
||||
====================== Fucntion 69 - debugging. ======================
|
||||
====================== Function 69 - debugging. ======================
|
||||
======================================================================
|
||||
A process can load other process as debugged by set of corresponding
|
||||
bit by call to subfunction 7 of function 70.
|
||||
@@ -3882,7 +3822,7 @@ Remarks:
|
||||
and at arrival of new message the system will wait.
|
||||
For synchronization frame all work with the buffer by operations
|
||||
lock/unlock
|
||||
neg [bufsize]
|
||||
neg [bufsize]
|
||||
* Data in the buffer are considered as array of items with variable
|
||||
length - messages. Format of a message is explained in
|
||||
general description.
|
||||
@@ -4111,6 +4051,10 @@ Examples:
|
||||
* '/hd0/2/menuet/pics/tanzania.bmp',0
|
||||
* '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
|
||||
* '/sys/MySuperApp.ini',0
|
||||
Also function supports relative names. If the path begins not
|
||||
with '/', it is considered relative to a current folder. To get or
|
||||
set a current folder, use the function 30.
|
||||
|
||||
Available subfunctions:
|
||||
* subfunction 0 - read file
|
||||
* subfunction 1 - read folder
|
||||
|
Reference in New Issue
Block a user