126,6 → 126,8 |
* value _skinh is accessible as the result of call |
subfunction 4 of function 48 |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CREATE_WINDOW (0) |
====================================================================== |
================ Function 1 - put pixel in the window. =============== |
====================================================================== |
139,6 → 141,8 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PUT_PIXEL (1) |
====================================================================== |
============ Function 2 - get the code of the pressed key. =========== |
====================================================================== |
176,6 → 180,8 |
* This function notifies only about those hotkeys, which were |
defined by this thread by subfunction 4 of function 66. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_KEY (2) |
====================================================================== |
==================== Function 3 - get system time. =================== |
====================================================================== |
191,6 → 197,8 |
returns simply DWORD-value of the time counter. |
* System time can be set by function 22. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_SYS_TIME (3) |
====================================================================== |
=================== Function 4 - draw text string. =================== |
====================================================================== |
225,6 → 233,8 |
Ysize dd |
picture rb Xsize*Ysize*4 ; 32 bpp |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DRAW_TEXT (4) |
====================================================================== |
========================= Function 5 - delay. ======================== |
====================================================================== |
240,6 → 250,8 |
to transfer control to the next process (to complete a current |
time slice), use subfunction 1 of function 68. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SLEEP (5) |
====================================================================== |
=============== Function 7 - draw image in the window. =============== |
====================================================================== |
255,6 → 267,8 |
of the image relative to the window. |
* Size of the image in bytes is 3*xsize*ysize. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PUT_IMAGE (7) |
====================================================================== |
=============== Function 8 - define/delete the button. =============== |
====================================================================== |
287,6 → 301,8 |
In rest it is usual button. |
* Total number of buttons for all applications is limited to 4095. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEFINE_BUTTON (8) |
====================================================================== |
============ Function 9 - information on execution thread. =========== |
====================================================================== |
385,6 → 401,8 |
1-Kb buffer for the future compatibility, in the future |
some fields can be added. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_THREAD_INFO (9) |
====================================================================== |
==================== Function 10 - wait for event. =================== |
====================================================================== |
403,6 → 421,8 |
* To check, whether there is a message in queue, use function 11. |
To wait for no more than given time, use function 23. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_WAIT_EVENT (10) |
====================================================================== |
=============== Function 11 - check for event, no wait. ============== |
====================================================================== |
420,6 → 440,8 |
* To wait for event, use function 10. |
To wait for no more than given time, use function 23. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CHECK_EVENT (11) |
====================================================================== |
=============== Function 12 - begin/end window redraw. =============== |
====================================================================== |
441,6 → 463,9 |
* Subfunction 1 deletes all buttons defined with |
function 8, they must be defined again. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_REDRAW (12) |
ebx - SSF_BEGIN_DRAW (1), SSF_END_DRAW (2) |
====================================================================== |
============ Function 13 - draw a rectangle in the window. =========== |
====================================================================== |
455,6 → 480,8 |
* Coordinates are understood as coordinates of the left upper corner |
of a rectangle relative to the window. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DRAW_RECT (13) |
====================================================================== |
=================== Function 14 - get screen size. =================== |
====================================================================== |
470,6 → 497,8 |
* See also subfunction 5 of function 48 - get sizes of |
working area of the screen. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_SCREEN_SIZE (14) |
====================================================================== |
== Function 15, subfunction 1 - set a size of the background image. == |
====================================================================== |
488,6 → 517,9 |
* There is a pair function for get size of the background image - |
subfunction 1 of function 39. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_SIZE_BG (1) |
====================================================================== |
=== Function 15, subfunction 2 - put pixel on the background image. == |
====================================================================== |
508,6 → 540,9 |
* There is a pair function for get pixel on the background image - |
subfunction 2 of function 39. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_PIXEL_BG (2) |
====================================================================== |
=========== Function 15, subfunction 3 - redraw background. ========== |
====================================================================== |
517,6 → 552,9 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_REDRAW_BG (3) |
====================================================================== |
== Function 15, subfunction 4 - set drawing mode for the background. = |
====================================================================== |
534,6 → 572,9 |
* There is a pair function for get drawing mode of the background - |
subfunction 4 of function 39. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_MODE_BG (4) |
====================================================================== |
===================== Function 15, subfunction 5 ===================== |
============ Put block of pixels on the background image. ============ |
555,6 → 596,9 |
* For update of the screen (after completion of a series of commands |
working with a background) call subfunction 3. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_IMAGE_BG (5) |
====================================================================== |
===================== Function 15, subfunction 6 ===================== |
======== Map background data to the address space of process. ======== |
572,6 → 616,9 |
* Pixels of the background image are written sequentially |
from left to right, from up to down. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_MAP_BG (6) |
====================================================================== |
===== Function 15, subfunction 7 - close mapped background data. ===== |
====================================================================== |
582,6 → 629,9 |
Returned value: |
* eax = 1 - success, 0 - error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_UNMAP_BG (7) |
====================================================================== |
===================== Function 15, subfunction 8 ===================== |
============= Get coordinates of last draw the background ============ |
599,6 → 649,9 |
immediately after the event: |
5 = kernel finished redrawing of the desktop background |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_LAST_DRAW (8) |
====================================================================== |
===================== Function 15, subfunction 9 ===================== |
============= Redraws a rectangular part of the background =========== |
615,6 → 668,9 |
(right,bottom) are coordinates of the right lower one. |
* If parameters are set incorrectly then background is not redrawn. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_SET (15) |
ebx - SSF_REDRAW_RECT (9) |
====================================================================== |
=============== Function 16 - save ramdisk on a floppy. ============== |
====================================================================== |
625,6 → 681,8 |
* eax = 0 - success |
* eax = 1 - error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_RD_TO_FLOPPY (16) |
====================================================================== |
======= Function 17 - get the identifier of the pressed button. ====== |
====================================================================== |
648,6 → 706,8 |
as in subfunction 2 of function 37 at the beginning |
of button press, excluding lower bit, which is cleared. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_BUTTON (17) |
====================================================================== |
===================== Function 18, subfunction 1 ===================== |
============= Make deactive the window of the given thread. ========== |
659,6 → 719,9 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_UNFOCUS_WINDOW (1) |
====================================================================== |
= Function 18, subfunction 2 - terminate process/thread by the slot. = |
====================================================================== |
675,6 → 738,9 |
* See also subfunction 18 - terminate |
process/thread by the identifier. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_TERMINATE_THREAD (2) |
====================================================================== |
===================== Function 18, subfunction 3 ===================== |
============= Make active the window of the given thread. ============ |
690,6 → 756,9 |
some window is made active. |
* To find out, which window is active, use subfunction 7. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_FOCUS_WINDOW (3) |
====================================================================== |
===================== Function 18, subfunction 4 ===================== |
=========== Get counter of idle time units per one second. =========== |
703,6 → 772,9 |
Returned value: |
* eax = value of the counter of idle time units per one second |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_IDLE_COUNT (4) |
====================================================================== |
========== Function 18, subfunction 5 - get CPU clock rate. ========== |
====================================================================== |
712,6 → 784,9 |
Returned value: |
* eax = clock rate (modulo 2^32 clock ticks = 4GHz) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_CPU_REQUENCY (5) |
====================================================================== |
Function 18, subfunction 6 - save ramdisk to the file on hard drive. |
====================================================================== |
727,6 → 802,9 |
* All folders in the given path must exist, otherwise function |
returns value 5, "file not found". |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_RD_TO_HDD (6) |
====================================================================== |
=========== Function 18, subfunction 7 - get active window. ========== |
====================================================================== |
741,6 → 819,9 |
messages on all keyboard input. |
* To make a window active, use subfunction 3. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_ACTIVE_WINDOW (7) |
====================================================================== |
== Function 18, subfunction 8 - disable/enable the internal speaker. = |
====================================================================== |
765,6 → 846,10 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_SPEAKER (8) |
ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2) |
====================================================================== |
== Function 18, subfunction 9 - system shutdown with the parameter. == |
====================================================================== |
783,6 → 868,9 |
* Do not rely on returned value by incorrect call, it can be |
changed in future versions of the kernel. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_SHUTDOWN (9) |
====================================================================== |
======= Function 18, subfunction 10 - minimize topmost window. ======= |
====================================================================== |
804,6 → 892,9 |
for other windows it can be defined manually by function 8), |
restore of a window is done by the application '@taskbar'. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_MINIMIZE_WINDOW (10) |
====================================================================== |
Function 18, subfunction 11 - get information on the disk subsystem. |
====================================================================== |
872,6 → 963,9 |
* The table can be used for obtaining the information about |
available devices. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_INFO_DISC_SYS (11) |
====================================================================== |
========== Function 18, subfunction 13 - get kernel version. ========= |
====================================================================== |
891,6 → 985,9 |
db 0 |
dd 1675 |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_KERNEL_VERSION (13) |
====================================================================== |
======= Function 18, subfunction 14 - wait for screen retrace. ======= |
====================================================================== |
905,6 → 1002,9 |
* Function is intended only for active high-efficiency graphics |
applications; is used for smooth output of a graphics. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_WAIT_RETRACE (14) |
====================================================================== |
== Function 18, subfunction 15 - center mouse cursor on the screen. == |
====================================================================== |
914,6 → 1014,9 |
Returned value: |
* eax = 0 as the tag of success |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_CURSOR_CENTER (15) |
====================================================================== |
========= Function 18, subfunction 16 - get size of free RAM. ======== |
====================================================================== |
923,6 → 1026,9 |
Returned value: |
* eax = size of free memory in kilobytes |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_FREE_RAM (16) |
====================================================================== |
======== Function 18, subfunction 17 - get full amount of RAM. ======= |
====================================================================== |
932,6 → 1038,9 |
Returned value: |
* eax = total size of existing memory in kilobytes |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_TOTAL_RAM (17) |
====================================================================== |
===================== Function 18, subfunction 18 ==================== |
============= Terminate process/thread by the identifier. ============ |
949,6 → 1058,9 |
* See also subfunction 2 - terminate |
process/thread by given slot. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_TERMINATE_THREAD_ID (18) |
====================================================================== |
======== Function 18, subfunction 19 - get/set mouse features. ======= |
====================================================================== |
1032,6 → 1144,12 |
|
Remark: mouse settings can be modified in the application mouse_cfg. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_MOUSE_SETTINGS (19) |
ecx - SSSF_GET_SPEED (0), SSSF_SET_SPEED (1), SSSF_GET_SPEEDUP (2), |
SSSF_SET_SPEEDUP (3), SSSF_SET_POS (4), SSSF_SET_BUTTON (5), |
SSSF_GET_DOUBLE_CLICK_DELAY (6), SSSF_SET_DOUBLE_CLICK_DELAY (7) |
====================================================================== |
======== Function 18, subfunction 20 - get information on RAM. ======= |
====================================================================== |
1056,6 → 1174,9 |
* +32: dword: size of maximum allocated block in kernel heap |
(reserved) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_RAM_INFO (20) |
====================================================================== |
===================== Function 18, subfunction 21 ==================== |
======== Get slot number of process/thread by the identifier. ======== |
1068,6 → 1189,9 |
* eax = 0 - error (invalid identifier) |
* otherwise eax = slot number |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_GET_THREAD_SLOT (21) |
====================================================================== |
===================== Function 18, subfunction 22 ==================== |
============== Operations with window of another thread. ============= |
1089,6 → 1213,11 |
* One can restore and activate window simultaneously with |
subfunction 3 (which requires slot number). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_FOREIGN_WINDOW (22) |
ecx - SSSF_MINIMIZE (0), SSSF_MINIMIZE_ID (1), SSSF_RESTORE (2), |
SSSF_RESTORE_ID (3) |
====================================================================== |
======== Function 18, subfunction 23 - minimize all windows. ========== |
====================================================================== |
1101,6 → 1230,9 |
Remarks: |
* Window of special thread (name begin to symbol @) is not minimize. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_MINIMIZE_ALL (23) |
====================================================================== |
======= Function 18, subfunction 24 - set limits of screen. ========== |
====================================================================== |
1119,6 → 1251,9 |
of the current video mode, otherwise the function will not change |
anything. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_SET_SCREEN_LIMITS (24) |
====================================================================== |
===================== Function 18, subfunction 25 ==================== |
===== Control position of the window relative to other windows. ====== |
1150,6 → 1285,10 |
ZPOS_NORMAL = 0 - normal |
ZPOS_ALWAYS_TOP = 1 - on top of all windows |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM (18) |
ebx - SSF_WINDOW_BEHAVIOR (25) |
ecx - SSSF_GET_WB (1), SSSF_SET_WB (2) |
====================================================================== |
==================== Function 20 - MIDI interface. =================== |
====================================================================== |
1171,6 → 1310,9 |
* Previously the base port must be defined by |
subfunction 1 of function 21. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_MIDI (20) |
ebx - SSF_RESET (1), SSF_OUTPUT (2) |
====================================================================== |
======== Function 21, subfunction 1 - set MPU MIDI base port. ======== |
====================================================================== |
1186,6 → 1328,9 |
* The installation of base is necessary for function 20. |
* To get base port use subfunction 1 of function 26. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_SET (21) |
ebx - SSF_MPU_MIDI_BASE (1) |
====================================================================== |
========== Function 21, subfunction 2 - set keyboard layout. ========= |
====================================================================== |
1219,6 → 1364,9 |
the corresponding icon. |
* The application @taskbar switches layouts on user request. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_SET (21) |
ebx - SSF_KEYBOARD_LAYOUT (2) |
====================================================================== |
========== Function 21, subfunction 5 - set system language. ========= |
====================================================================== |
1236,6 → 1384,9 |
use this variable. |
* To get system language use subfunction 5 of function 26. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_SET (21) |
ebx - SSF_SYS_LANG (5) |
====================================================================== |
Function 21, subfunction 11 - enable/disable low-level access to HD. |
====================================================================== |
1250,6 → 1401,9 |
* The current implementation uses only low bit of ecx. |
* To get current status use subfunction 11 of function 26. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_SET (21) |
ebx - SSF_ACCESS_HD_LBA (11) |
====================================================================== |
Function 21, subfunction 12 - enable/disable low-level access to PCI. |
====================================================================== |
1264,6 → 1418,9 |
* The current implementation uses only low bit of ecx. |
* To get current status use subfunction 12 of function 26. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_SET (21) |
ebx - SSF_ACCESS_PCI (12) |
====================================================================== |
================= Function 22 - set system date/time. ================ |
====================================================================== |
1302,6 → 1459,8 |
an alarm clock cancels automatically the previous set. |
However, at moment no program uses it. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SET_TIME_DATE (22) |
====================================================================== |
============= Function 23 - wait for event with timeout. ============= |
====================================================================== |
1325,6 → 1484,8 |
if the addition of ebx with the current value of time counter |
makes 32-bit overflow. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_WAIT_EVENT_TIMEOUT (23) |
====================================================================== |
======= Function 24, subfunction 4 - eject tray of disk drive. ======= |
====================================================================== |
1345,6 → 1506,9 |
corresponding device. |
* An example of usage of the function is the application CD_tray. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CD (24) |
ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5) |
====================================================================== |
======== Function 24, subfunction 5 - load tray of disk drive. ======= |
====================================================================== |
1361,6 → 1525,9 |
* The function is supported only for ATAPI devices (CD and DVD). |
* An example of usage of the function is the application CD_tray. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CD (24) |
ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5) |
====================================================================== |
======= Function 25 - put image area on the background layer. ======== |
====================================================================== |
1381,6 → 1548,8 |
* The function places the image directly to LFB. It is not for |
background image f.15. Options f.15 to f.25 does not make sense. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SCREEN_PUT_IMAGE (25) |
====================================================================== |
======== Function 26, subfunction 1 - get MPU MIDI base port. ======== |
====================================================================== |
1392,6 → 1561,9 |
Parameters: |
* To set base port use subfunction 1 of function 21. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_MPU_MIDI_BASE (1) |
====================================================================== |
========== Function 26, subfunction 2 - get keyboard layout. ========= |
====================================================================== |
1428,6 → 1600,9 |
the corresponding icon (using this function). |
* The application @taskbar switches layouts on user request. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_KEYBOARD_LAYOUT (2) |
====================================================================== |
========== Function 26, subfunction 5 - get system language. ========= |
====================================================================== |
1442,6 → 1617,9 |
appropriate icon (using this function). |
* To set system language use subfunction 5 of function 21. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_SYS_LANG (5) |
====================================================================== |
=== Function 26, subfunction 9 - get the value of the time counter. == |
====================================================================== |
1455,6 → 1633,9 |
than 497 days. |
* To get system time use function 3. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_TIME_COUNT (9) |
====================================================================== |
===================== Function 26, subfunction 10 ==================== |
========== Get the value of the high precision time counter. ========= |
1469,6 → 1650,9 |
* The counter is based on HPET, if HPET is not available, resolution |
will be reduced to 10 000 000 nanoseconds. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_TIME_COUNT_PRO (10) |
====================================================================== |
===================== Function 26, subfunction 11 ==================== |
========== Find out whether low-level HD access is enabled. ========== |
1482,6 → 1666,9 |
* Is used in LBA read (subfunction 8 of function 58). |
* To set current state use subfunction 11 of function 21. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_ACCESS_HD_LBA (11) |
====================================================================== |
===================== Function 26, subfunction 12 ==================== |
========== Find out whether low-level PCI access is enabled. ========= |
1496,6 → 1683,9 |
* The current implementation uses only low bit of ecx. |
* To set the current state use subfunction 12 of function 21. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYSTEM_GET (26) |
ebx - SSF_ACCESS_PCI (12) |
====================================================================== |
=================== Function 29 - get system date. =================== |
====================================================================== |
1510,6 → 1700,8 |
Remarks: |
* To set system date use function 22. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_SYS_DATE (29) |
====================================================================== |
============= Function 30 - work with the current folder. ============ |
====================================================================== |
1554,6 → 1746,9 |
Remarks: |
* The function can be called only 1 time for 1 session of the OS. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CURRENT_FOLDER (30) |
ebx - SSF_SET_CF (1), SSF_GET_CF (2), SSF_ADD_SYS_FOLDER (3) |
====================================================================== |
========= Function 34 - who owner the pixel on the screen. =========== |
====================================================================== |
1567,6 → 1762,8 |
If incorrect values ebx and ecx then function returns 0 |
* The function takes the value from the area [_WinMapAddress] |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_PIXEL_OWNER (34) |
====================================================================== |
======= Function 35 - read the color of a pixel on the screen. ======= |
====================================================================== |
1584,6 → 1781,8 |
to videomemory through the selector gs. To get parameters of |
the current videomode, use function 61. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_PIXEL (35) |
====================================================================== |
=================== Function 36 - read screen area. ================== |
====================================================================== |
1600,6 → 1799,8 |
of the image relative to the screen. |
* Size of the image in bytes is 3*xsize*ysize. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_IMAGE (36) |
====================================================================== |
=================== Function 37 - work with mouse. =================== |
====================================================================== |
1722,6 → 1923,11 |
* Values are zeroed after reading. |
* Values are signed. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_MOUSE_GET (37) |
ebx - SSF_SCREEN_POSITION (0), SSF_WINDOW_POSITION (1), |
SSF_BUTTON (2), SSF_BUTTON_EXT (3), SSF_LOAD_CURSOR (4), |
SSF_SET_CURSOR (5), SSF_DEL_CURSOR (6), SSF_SCROLL_DATA (7) |
====================================================================== |
====================== Function 38 - draw line. ====================== |
====================================================================== |
1740,6 → 1946,8 |
* Coordinates are relative to the window. |
* End point is also drawn. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DRAW_LINE (38) |
====================================================================== |
== Function 39, subfunction 1 - get a size of the background image. == |
====================================================================== |
1753,6 → 1961,8 |
subfunction 1 of function 15. After which it is necessary, |
of course, anew to define image. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_GET (39) |
====================================================================== |
== Function 39, subfunction 2 - get pixel from the background image. = |
====================================================================== |
1772,6 → 1982,8 |
* There is a pair function to set pixel on the background image - |
subfunction 2 of function 15. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_GET (39) |
====================================================================== |
== Function 39, subfunction 4 - get drawing mode for the background. = |
====================================================================== |
1785,6 → 1997,8 |
* There is a pair function to set drawing mode - |
subfunction 4 of function 15. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BACKGROUND_GET (39) |
====================================================================== |
=========== Function 40 - set the mask for expected events. ========== |
====================================================================== |
1812,7 → 2026,8 |
* Event functions take into account the mask on moment of |
function call, not on moment of event arrival. |
|
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SET_EVENTS_MASK (40) |
====================================================================== |
================ Function 43 - input/output to a port. =============== |
====================================================================== |
1841,7 → 2056,8 |
processor instructions in/out - this is much |
faster and a bit shorter and easier. |
|
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PORT_IN_OUT (43) |
====================================================================== |
====== Function 46 - reserve/free a group of input/output ports. ===== |
====================================================================== |
1874,6 → 2090,8 |
* When a thread terminates, all reserved by it ports |
are freed automatically. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SET_PORTS (46) |
====================================================================== |
============= Function 47 - draw a number in the window. ============= |
====================================================================== |
1908,6 → 2126,8 |
* Parameters of fonts are shown in the description of function 4 |
(text output). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DRAW_NUMBER (47) |
====================================================================== |
========= Function 48, subfunction 0 - apply screen settings. ======== |
====================================================================== |
1924,6 → 2144,9 |
is ignored. |
* Function call with nonzero ecx is ignored. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_APPLY (0) |
====================================================================== |
=========== Function 48, subfunction 1 - set button style. =========== |
====================================================================== |
1940,6 → 2163,9 |
subfunction 0. |
* Button style influences only to their draw of function 8. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_BUTTON_STYLE (1) |
====================================================================== |
====== Function 48, subfunction 2 - set standard window colors. ====== |
====================================================================== |
1963,6 → 2189,9 |
* Color table can be viewed/changed interactively with |
the application 'desktop'. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_COLORS (2) |
====================================================================== |
====== Function 48, subfunction 3 - get standard window colors. ====== |
====================================================================== |
2008,6 → 2237,9 |
* Color table can be viewed/changed interactively with |
the application 'desktop'. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_COLORS (3) |
====================================================================== |
============ Function 48, subfunction 4 - get skin height. =========== |
====================================================================== |
2022,6 → 2254,9 |
* See also general structure of window in the description |
of function 0. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_SKIN_HEIGHT (4) |
====================================================================== |
======== Function 48, subfunction 5 - get screen working area. ======= |
====================================================================== |
2044,6 → 2279,9 |
to get sizes of all screen. |
* There is a pair function to set working area - subfunction 6. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_SCREEN_AREA (5) |
====================================================================== |
======== Function 48, subfunction 6 - set screen working area. ======= |
====================================================================== |
2074,6 → 2312,9 |
updating coordinates and sizes of maximized windows. |
The system sends to all windows redraw message (the event 1). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_SCREEN_AREA (6) |
====================================================================== |
=========== Function 48, subfunction 7 - get skin margins. =========== |
====================================================================== |
2092,6 → 2333,9 |
(by function 4) or a substitute of header text |
(at the discretion of an application). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_SKIN_MARGINS (7) |
====================================================================== |
============= Function 48, subfunction 8 - set used skin. ============ |
====================================================================== |
2112,6 → 2356,9 |
* User can change the skin statically by creating hisself |
'default.skn' or dynamically with the application 'desktop'. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_SKIN (8) |
====================================================================== |
====== Function 48, subfunction 9 - get font smoothing setting. ====== |
====================================================================== |
2121,6 → 2368,9 |
Returned value: |
* eax = 2 - subpixel, 1 - anti-aliasing, 0 - off |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_FONT_SMOOTH (9) |
====================================================================== |
========== Function 48, subfunction 10 - set font smoothing. ========= |
====================================================================== |
2129,6 → 2379,9 |
* ebx = 10 - subfunction number |
* cl = 2 - subpixel, 1 - anti-aliasing, 0 - off |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_FONT_SMOOTH (10) |
====================================================================== |
============ Function 48, subfunction 11 - get font size. ============ |
====================================================================== |
2138,6 → 2391,9 |
Returned value: |
* eax = current font height in pixels |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_GET_FONT_SIZE (11) |
====================================================================== |
============ Function 48, subfunction 12 - set font size. ============ |
====================================================================== |
2146,6 → 2402,9 |
* ebx = 10 - subfunction number |
* cl = new font height in pixels |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_STYLE_SETTINGS (48) |
ebx - SSF_SET_FONT_SIZE (12) |
====================================================================== |
=========== Function 49 - Advanced Power Management (APM). =========== |
====================================================================== |
2168,6 → 2427,8 |
(http://www.pobox.com/~ralf/files.html, |
ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_APM (49) |
====================================================================== |
=================== Function 50 - set window shape. ================== |
====================================================================== |
2214,6 → 2475,8 |
* The call of subfunction 0 with NULL pointer results in return |
to the rectangular shape. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SET_WINDOW_SHAPE (50) |
====================================================================== |
==================== Function 51 - create thread. ==================== |
====================================================================== |
2225,8 → 2488,9 |
Returned value: |
* eax = -1 - error (there is too many threads) |
* otherwise eax = TID - thread identifier |
</UL> |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CREATE_THREAD (51) |
====================================================================== |
==================== Function 54, subfunction 0 ====================== |
============== Get the number of slots in the clipboard. ============= |
2238,6 → 2502,9 |
* eax = slots in the clipboard |
* eax = -1 - main list area not found |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
ebx - SSF_GET_SLOT_COUNT (0) |
====================================================================== |
==================== Function 54, subfunction 1 ====================== |
================= Read the data from the clipboard. ================== |
2251,6 → 2518,9 |
* eax = 1 - error |
* eax = -1 - main list area not found |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
ebx - SSF_READ_CB (1) |
====================================================================== |
==================== Function 54, subfunction 2 ====================== |
================= Write the data to the clipboard. =================== |
2265,6 → 2535,9 |
* eax = 1 - error |
* eax = -1 - main list area not found |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
ebx - SSF_WRITE_CB (2) |
====================================================================== |
===================== Function 54, subfunction 3 ===================== |
================ Delete the last slot in the clipboard =============== |
2277,6 → 2550,9 |
* eax = 1 - error |
* eax = -1 - main list area not found |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
ebx - SSF_DEL_SLOT (3) |
====================================================================== |
===================== Function 54, subfunction 4 ===================== |
===================== Alarm reset the lock buffer ==================== |
2291,6 → 2567,9 |
* Used in exceptional cases, where no responsible or killed |
application blocked the clipboard operations. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
ebx - SSF_UNLOCK_BUFFER (4) |
====================================================================== |
Function 55, subfunction 55 - begin to play data on built-in speaker. |
====================================================================== |
2324,6 → 2603,8 |
* The data must be kept in the memory at least up to the end |
of play. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SPEAKER_PLAY (55) |
====================================================================== |
======================= Function 57 - PCI BIOS. ====================== |
====================================================================== |
2342,6 → 2623,8 |
* If BIOS does not support this extension, its behavior is emulated |
(through kernel-mode analogues of subfunctions of function 62). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI_BIOS (57) |
====================================================================== |
========== Function 60 - Inter Process Communication (IPC). ========== |
====================================================================== |
2391,6 → 2674,9 |
* Immediately after writing of IPC-message to the buffer the system |
sends to the receiver the event with code 7 (see event codes). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_IPC (60) |
ebx - SSF_SET_AREA (1), SSF_SEND_MESSAGE (2) |
====================================================================== |
==== Function 61 - get parameters for the direct graphics access. ==== |
====================================================================== |
2450,6 → 2736,10 |
* eax = number of bytes occupied by one scanline |
(horizontal line on the screen) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_GET_GRAPHICAL_PARAMS (61) |
ebx - SSF_SCREEN_SIZE (1), SSF_BITS_PER_PIXEL (2), |
SSF_BYTES_PER_LINE (3) |
====================================================================== |
===== Function 62, subfunction 0 - get version of PCI-interface. ===== |
====================================================================== |
2465,6 → 2755,9 |
enabled by subfunction 12 of function 21. |
* If PCI BIOS is not supported, the value of ax is undefined. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI (62) |
ebx - SSF_GET_VERSION (0) |
====================================================================== |
==== Function 62, subfunction 1 - get number of the last PCI-bus. ==== |
====================================================================== |
2479,6 → 2772,9 |
enabled by subfunction 12 of function 21. |
* If PCI BIOS is not supported, the value of ax is undefined. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI (62) |
ebx - SSF_GET_LAST_BUS (1) |
====================================================================== |
===================== Function 62, subfunction 2 ===================== |
===== Get mechanism of addressing to the PCI configuration space. ==== |
2497,6 → 2793,9 |
* Subfunctions of read and write work automatically |
with the selected mechanism. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI (62) |
ebx - SSF_GET_ADRR_MODE (2) |
====================================================================== |
======== Function 62, subfunctions 4,5,6 - read PCI-register. ======== |
====================================================================== |
2529,6 → 2828,9 |
registers of the second type must be listed |
in the device documentation. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI (62) |
ebx - SSF_READ_BYTE (4), SSF_READ_WORD (5), SSF_READ_DWORD (6) |
====================================================================== |
====== Function 62, subfunctions 8,9,10 - write to PCI-register. ===== |
====================================================================== |
2559,6 → 2861,9 |
Ralf Brown; registers of the second type must be listed |
in the device documentation. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PCI (62) |
ebx - SSF_WRITE_BYTE (8), SSF_WRITE_WORD (9), SSF_WRITE_DWORD (10) |
====================================================================== |
============== Function 63 - work with the debug board. ============== |
====================================================================== |
2604,6 → 2909,9 |
* eax = ebx = 0 - the buffer is empty |
* eax = byte, ebx = 1 - byte was successfully read |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BOARD (63) |
ebx - SSF_DEBUG_WRITE (1), SSF_DEBUG_READ (2) |
====================================================================== |
============== Function 64 - resize application memory. ============== |
====================================================================== |
2621,6 → 2929,8 |
The function call will be ignored after creation of process heap |
with function 68.11. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_MEMORY_RESIZE (64) |
====================================================================== |
======== Function 65 - draw image with palette in the window. ======== |
====================================================================== |
2665,6 → 2975,8 |
* The call to function 7 is equivalent to call to this function |
with esi=24, ebp=0. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_PUT_IMAGE_EXT (65) |
====================================================================== |
================== Function 66 - work with keyboard. ================= |
====================================================================== |
2773,6 → 3085,11 |
* Unlocking the results of the f. 66.6 |
* To emulate a mouse via the keyboard, the application MOUSEMUL |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_KEYBOARD (66) |
ebx - SSF_SET_INPUT_MODE (1), SSF_GET_INPUT_MODE (2), |
SSF_GET_CONTROL_KEYS (3), SSF_SET_SYS_HOTKEY (4), |
SSF_DEL_SYS_HOTKEY (5), SSF_LOCK_INPUT (6), SSF_UNLOCK_INPUT (7) |
====================================================================== |
========= Function 67 - change position/sizes of the window. ========= |
====================================================================== |
2797,6 → 3114,8 |
call to function 9. |
* The function sends to the window redraw event (with the code 1). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_CHANGE_WINDOW (67) |
====================================================================== |
====== Function 68, subfunction 0 - get the task switch counter. ===== |
====================================================================== |
2807,6 → 3126,9 |
* eax = number of task switches from the system booting |
(modulo 2^32) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_GET_TASK_SWITCH_COUNT (0) |
====================================================================== |
======= Function 68, subfunction 1 - switch to the next thread. ====== |
====================================================================== |
2820,6 → 3142,9 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_SWITCH_TASK (1) |
====================================================================== |
============= Function 68, subfunction 2 - cache + rdpmc. ============ |
====================================================================== |
2842,6 → 3167,11 |
* for ecx=2 and ecx=3: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_PERFORMANCE (2) |
ecx - SSSF_ALLOW_RDPMC (0), SSSF_CACHE_STATUS (1), |
SSSF_CACHE_ON (2), SSSF_CACHE_OFF (3) |
====================================================================== |
=========== Function 68, subfunction 3 - read MSR-register. ========== |
====================================================================== |
2866,6 → 3196,9 |
will generate other exception in the kernel, which will anyway |
kill the thread. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_READ_MSR (3) |
====================================================================== |
========= Function 68, subfunction 4 - write to MSR-register. ======== |
====================================================================== |
2891,6 → 3224,9 |
will generate other exception in the kernel, which will anyway |
kill the thread. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_WRITE_MSR (4) |
====================================================================== |
======= Function 68, subfunction 11 - initialize process heap. ======= |
====================================================================== |
2908,6 → 3244,9 |
returning the size of the existing heap. |
* After creation of the heap calls to function 64 will be ignored. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_HEAP_INIT (11) |
====================================================================== |
======== Function 68, subfunction 12 - allocate memory block. ======== |
====================================================================== |
2924,6 → 3263,9 |
way that the real size of allocated block is more than or equal to |
requested size. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_ALLOC (12) |
====================================================================== |
========== Function 68, subfunction 13 - free memory block. ========== |
====================================================================== |
2938,6 → 3280,9 |
* The memory block must have been allocated by subfunction 12 |
or subfunction 20. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_FREE (13) |
====================================================================== |
===================== Function 68, subfunction 14 ==================== |
============ Wait for signal from another program/driver. ============ |
2952,6 → 3297,9 |
* +4: dword: data of signal (20 bytes), format of which is defined |
by the first dword |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_WAIT_SIGNAL (14) |
====================================================================== |
============= Function 68, subfunction 16 - load driver. ============= |
====================================================================== |
2970,6 → 3318,9 |
terminating null character, the rest is ignored. |
* Driver ABC is loaded from file /rd/1/drivers/ABC.obj. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_LOAD_DRIVER (16) |
====================================================================== |
============ Function 68, subfunction 17 - driver control. =========== |
====================================================================== |
2990,6 → 3341,9 |
are defined by driver. |
* Previously one must obtain driver handle by subfunction 16. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_CONTROL_DRIVER (17) |
====================================================================== |
=============== Function 68, subfunction 19 - load DLL. ============== |
====================================================================== |
3005,6 → 3359,9 |
by zero. The first dword in structure points to function name, |
the second dword contains address of function. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_LOAD_DLL (19) |
====================================================================== |
======= Function 68, subfunction 20 - reallocate memory block. ======= |
====================================================================== |
3028,6 → 3385,9 |
* The contents of the block are unchanged up to the shorter of |
the new and old sizes. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_REALLOC (20) |
====================================================================== |
=========== Function 68, subfunction 21 - load driver PE. ============ |
====================================================================== |
3043,6 → 3403,9 |
* If the driver was not loaded yet, it is loaded; |
if the driver was loaded yet, nothing happens. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_LOAD_DRIVER_PE (21) |
====================================================================== |
======== Function 68, subfunction 22 - open named memory area. ======= |
====================================================================== |
3081,6 → 3444,9 |
with denied rights will fail with error code E_ACCESS. |
* The process which has created an area always has write access. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_OPEN (22) |
====================================================================== |
======= Function 68, subfunction 23 - close named memory area. ======= |
====================================================================== |
3096,6 → 3462,9 |
this area will close it. |
* When thread is terminating, all opened by it areas are closed. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_CLOSE (23) |
====================================================================== |
======== Function 68, subfunction 24 - set exception handler. ======== |
====================================================================== |
3128,6 → 3497,9 |
Also user handler is responsible for clearing exceptions flags in |
FPU and/or SSE. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_SET_EXCEPTION_HANDLER (24) |
====================================================================== |
======== Function 68, subfunction 25 - set exception activity ======== |
====================================================================== |
3144,6 → 3516,9 |
which has been previously set by subfunction 24, |
is changed. Signal number corresponds to exception number. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_SET_EXCEPTION_STATE (25) |
====================================================================== |
====== Function 68, subfunction 26 - release memory pages ============ |
====================================================================== |
3157,6 → 3532,9 |
* function release range of pages from ecx+edx to ecx+edx+esi |
and set virtual memory into reserved state. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_MEM_FREE_EXT (26) |
====================================================================== |
========== Function 68, subfunction 27 - load file =================== |
====================================================================== |
3170,6 → 3548,9 |
Remarks: |
* function loads file and unpacks, if necessary |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |
ebx - SSF_LOAD_FILE (27) |
====================================================================== |
====================== Function 69 - debugging. ====================== |
====================================================================== |
3216,6 → 3597,12 |
* subfunction 8 - terminate debugged thread |
* subfunction 9 - set/clear hardware breakpoint |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_SET_MESSAGE_AREA (0), SSF_GET_REGISTERS (1), |
SSF_SET_REGISTERS (2), SSF_DETACH (3), SSF_SUSPEND (4), |
SSF_RESUME (5), SSF_READ_MEMORY (6), SSF_WRITE_MEMORY (7), |
SSF_TERMINATE (8), SSF_DEFINE_BREAKPOINT (9) |
====================================================================== |
= Function 69, subfunction 0 - define data area fror debug messages. = |
====================================================================== |
3239,6 → 3626,9 |
length - messages. Format of a message is explained in |
general description. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_SET_MESSAGE_AREA (0) |
====================================================================== |
===================== Function 69, subfunction 1 ===================== |
============ Get contents of registers of debugged thread. =========== |
3268,6 → 3658,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_GET_REGISTERS (1) |
====================================================================== |
===================== Function 69, subfunction 2 ===================== |
============ Set contents of registers of debugged thread. =========== |
3287,6 → 3680,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_SET_REGISTERS (2) |
====================================================================== |
===== Function 69, subfunction 3 - detach from debugged process. ===== |
====================================================================== |
3299,6 → 3695,9 |
Remarks: |
* If the process was suspended, it resumes execution. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_DETACH (3) |
====================================================================== |
======== Function 69, subfunction 4 - suspend debugged thread. ======= |
====================================================================== |
3312,6 → 3711,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_SUSPEND (4) |
====================================================================== |
======== Function 69, subfunction 5 - resume debugged thread. ======== |
====================================================================== |
3325,6 → 3727,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_RESUME (5) |
====================================================================== |
= Fucntion 69, subfunction 6 - read from memory of debugged process. = |
====================================================================== |
3343,6 → 3748,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_READ_MEMORY (6) |
====================================================================== |
== Function 69, subfunction 7 - write to memory of debugged process. = |
====================================================================== |
3361,6 → 3769,9 |
* Process must be loaded for debugging (as is shown in |
general description). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_WRITE_MEMORY (7) |
====================================================================== |
======= Function 69, subfunction 8 - terminate debugged thread. ====== |
====================================================================== |
3377,6 → 3788,9 |
with two differences: it requires first remark and |
accepts PID rather than slot number. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_TERMINATE (8) |
====================================================================== |
===== Function 69, subfunction 9 - set/clear hardware breakpoint. ==== |
====================================================================== |
3418,6 → 3832,9 |
* Breakpoints on write and read/write act after |
execution of the caused it instruction. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_DEBUG (69) |
ebx - SSF_DEFINE_BREAKPOINT (9) |
====================================================================== |
==== Function 70 - work with file system with long names support. ==== |
====================================================================== |
3486,6 → 3903,12 |
drive data. Unlocking is made when subfunction 4 of function 24 |
is called for corresponding device. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_READ_FILE (0), SSF_READ_FOLDER (1), SSF_CREATE_FILE (2), |
SSF_WRITE_FILE (3), SSF_SET_END (4), SSF_GET_INFO (5), |
SSF_SET_INFO (6), SSF_START_APP (7), SSF_DELETE (8), |
SSF_CREATE_FOLDER (9) |
====================================================================== |
=== Function 70, subfunction 0 - read file with long names support. == |
====================================================================== |
3513,6 → 3936,9 |
* The function does not allow to read folder (returns eax=10, |
access denied). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_READ_FILE (0) |
====================================================================== |
== Function 70, subfunction 1 - read folder with long names support. = |
====================================================================== |
3610,6 → 4036,9 |
and times and dates are zeroed. An alternative way to get the |
equipment information - subfunction 11 of function 18. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_READ_FOLDER (1) |
====================================================================== |
===================== Function 70, subfunction 2 ===================== |
============ Create/rewrite file with long names support. ============ |
3638,6 → 4067,9 |
write as many as can and then return error code 8. |
* The function is not supported for CD (returns error code 2). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_CREATE_FILE (2) |
====================================================================== |
===================== Function 70, subfunction 3 ===================== |
=========== Write to existing file with long names support. ========== |
3668,6 → 4100,9 |
size with zero characters. |
* The function is not supported for CD (returns error code 2). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_WRITE_FILE (3) |
====================================================================== |
============ Function 70, subfunction 4 - set end of file. =========== |
====================================================================== |
3699,6 → 4134,9 |
error code 8. |
* The function is not supported for CD (returns error code 2). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_SET_END (4) |
====================================================================== |
==== Function 70, subfunction 5 - get information on file/folder. ==== |
====================================================================== |
3727,6 → 4165,9 |
* The function does not support virtual folders such as /, /rd and |
root folders like /rd/1. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_GET_INFO (5) |
====================================================================== |
===== Function 70, subfunction 6 - set attributes of file/folder. ==== |
====================================================================== |
3757,6 → 4198,9 |
root folders like /rd/1. |
* The function is not supported for CD (returns error code 2). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_SET_INFO (6) |
====================================================================== |
=========== Function 70, subfunction 7 - start application. ========== |
====================================================================== |
3789,6 → 4233,9 |
* If the process is started as debugged, it is created in |
the suspended state; to run use subfunction 5 of function 69. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_START_APP (7) |
====================================================================== |
========== Function 70, subfunction 8 - delete file/folder. ========== |
====================================================================== |
3814,6 → 4261,9 |
* The function can delete only empty folders (attempt to delete |
nonempty folder results in error with code 10, "access denied"). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_DELETE (8) |
====================================================================== |
============= Function 70, subfunction 9 - create folder. ============ |
====================================================================== |
3839,6 → 4289,9 |
* The parent folder must already exist. |
* If target folder already exists, function returns success (eax=0). |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_FILE (70) |
[ebx] - SSF_CREATE_FOLDER (9) |
====================================================================== |
========== Function 71, subfunction 1 - set window caption. ========== |
====================================================================== |
3857,6 → 4310,8 |
otherwise will be used cp866. |
* Pass NULL in ecx to remove caption. |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SET_CAPTION (71) |
====================================================================== |
=============== Function 72 - send message to a window. ============== |
====================================================================== |
3871,6 → 4326,8 |
* eax = 0 - success |
* eax = 1 - buffer is full |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_SEND_MESSAGE (72) |
====================================================================== |
===================== Function 73 - blit bitmap ===================== |
====================================================================== |
3910,6 → 4367,8 |
Returned value: |
* function does not return value |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_BLITTER (73) |
====================================================================== |
= Function 74, Subfunction 255, Get number of active network devices. = |
====================================================================== |
3919,6 → 4378,9 |
Returned value: |
* eax = number of active network devices |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_DEVICE_COUNT (255) |
====================================================================== |
======== Function 74, Subfunction 0, Get network device type. ======== |
====================================================================== |
3929,6 → 4391,9 |
Returned value: |
* eax = device type number |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_DEVICE_TYPE (0) |
====================================================================== |
======== Function 74, Subfunction 1, Get network device name. ======== |
====================================================================== |
3941,6 → 4406,9 |
* eax = -1 on error |
* The network device name is written into the buffer, on success |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_DEVICE_NAME (1) |
====================================================================== |
========= Function 74, Subfunction 2, Reset network device. ========== |
====================================================================== |
3951,6 → 4419,9 |
Returned value: |
* eax = -1 on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_RESET_DEVICE (2) |
====================================================================== |
========== Function 74, Subfunction 3, Stop network device. ========== |
====================================================================== |
3961,6 → 4432,9 |
Returned value: |
* eax = -1 on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_STOP_DEVICE (3) |
====================================================================== |
=========== Function 74, Subfunction 4, Get device pointer. ========== |
====================================================================== |
3971,6 → 4445,9 |
Returned value: |
* eax = device pointer, -1 on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_DEVICE_POINER (4) |
====================================================================== |
========= Function 74, Subfunction 6, Get packet TX counter. ========= |
====================================================================== |
3981,6 → 4458,9 |
Returned value: |
* eax = Number of packets sent since device start, -1 on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_TX_PACKET_COUNT (6) |
====================================================================== |
========= Function 74, Subfunction 7, Get packet RX counter. ========= |
====================================================================== |
3991,6 → 4471,9 |
Returned value: |
* eax = Number of packets received since device start, -1 on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_RX_PACKET_COUNT (7) |
====================================================================== |
========== Function 74, Subfunction 8, Get TX byte counter. ========== |
====================================================================== |
4003,6 → 4486,9 |
-1 on error |
* ebx = Number of bytes sent since device start (higher dword) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_TX_BYTE_COUNT (8) |
====================================================================== |
========== Function 74, Subfunction 9, Get RX byte counter. ========== |
====================================================================== |
4015,6 → 4501,9 |
-1 on error |
* ebx = Number of bytes received since device start (higher dword) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_RX_BYTE_COUNT (9) |
====================================================================== |
========== Function 74, Subfunction 10, Get link status. ============= |
====================================================================== |
4033,6 → 4522,9 |
ETH_LINK_100M = 1000b ; 100 mbit |
ETH_LINK_1G = 1100b ; gigabit |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_GET (74) |
bl - SSF_LINK_STATUS (10) |
====================================================================== |
============== Function 75, Subfunction 0, Open socket. ============== |
====================================================================== |
4046,6 → 4538,9 |
* eax = socket number, -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_OPEN (0) |
====================================================================== |
============= Function 75, Subfunction 1, Close socket. ============== |
====================================================================== |
4057,6 → 4552,9 |
* eax = -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_CLOSE (1) |
====================================================================== |
================== Function 75, Subfunction 2, Bind. ================= |
====================================================================== |
4070,6 → 4568,9 |
* eax = -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_BIND (2) |
====================================================================== |
================= Function 75, Subfunction 3, Listen. ================ |
====================================================================== |
4082,6 → 4583,9 |
* eax = -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_LISTEN (3) |
====================================================================== |
================ Function 75, Subfunction 4, Connect. ================ |
====================================================================== |
4095,6 → 4599,9 |
* eax = -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_CONNECT (4) |
====================================================================== |
================= Function 75, Subfunction 5, Accept. ================ |
====================================================================== |
4108,6 → 4615,9 |
* eax = socket number of accepted socket, -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_ACCEPT (5) |
====================================================================== |
================== Function 75, Subfunction 6, Send. ================= |
====================================================================== |
4122,6 → 4632,9 |
* eax = number of bytes copied, -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_SEND (6) |
====================================================================== |
================ Function 75, Subfunction 7, Receive. ================ |
====================================================================== |
4136,6 → 4649,9 |
* eax = number of bytes copied, -1 on error |
* ebx = errorcode |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_RECEIVE (7) |
====================================================================== |
=========== Function 75, Subfunction 8, Set socket options. ========== |
====================================================================== |
4155,6 → 4671,9 |
dd optlength |
db options... |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_SET_OPTIONS (8) |
====================================================================== |
=========== Function 75, Subfunction 9, Get socket options. ========== |
====================================================================== |
4174,6 → 4693,9 |
dd optlength |
db options... |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_GET_OPTIONS (9) |
====================================================================== |
============ Function 75, Subfunction 10, Get socketpair. =========== |
====================================================================== |
4184,6 → 4706,9 |
* eax = socketnum1, -1 on error |
* ebx = socketnum2, errorcode on error |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_SOCKET (75) |
bl - SSF_GET_PAIR (10) |
====================================================================== |
============ Function 76, Network options and statistics. ============ |
====================================================================== |
4231,6 → 4756,8 |
6 - Send ARP announce on specified interface |
7 - Read # ARP conflicts (IP address conflicts) |
|
---------------------- Constants for registers: ---------------------- |
eax - SF_NETWORK_PROTOCOL (76) |
====================================================================== |
=============== Function -1 - terminate thread/process =============== |
====================================================================== |