Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6055 → Rev 6056

/kernel/trunk/docs/sysfuncr.txt
129,6 → 129,8
* Значение переменной _skinh доступно как результат вызова
подфункции 4 функции 48
 
---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_WINDOW (0)
======================================================================
================= Функция 1 - поставить точку в окне. ================
======================================================================
142,6 → 144,8
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_PUT_PIXEL (1)
======================================================================
============== Функция 2 - получить код нажатой клавиши. =============
======================================================================
178,6 → 182,8
* Поступает информация только о тех горячих клавишах, которые были
определены этим потоком подфункцией 4 функции 66.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_KEY (2)
======================================================================
================ Функция 3 - получить системное время. ===============
======================================================================
193,6 → 199,8
поскольку возвращает просто DWORD-значение счетчика времени.
* Системное время можно установить функцией 22.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_SYS_TIME (3)
======================================================================
================ Функция 4 - нарисовать строку текста. ===============
======================================================================
229,6 → 237,8
Ysize dd
picture rb Xsize*Ysize*4 ; 32 бита
 
---------------------- Константы для регистров: ----------------------
eax - SF_DRAW_TEXT (4)
======================================================================
========================= Функция 5 - пауза. =========================
======================================================================
245,6 → 255,8
(закончить текущий квант времени), используйте подфункцию 1
функции 68.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SLEEP (5)
======================================================================
=============== Функция 7 - вывести изображение в окно. ==============
======================================================================
260,6 → 272,8
изображения относительно окна.
* Размер изображения в байтах есть 3*xsize*ysize.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PUT_IMAGE (7)
======================================================================
=============== Функция 8 - определить/удалить кнопку. ===============
======================================================================
293,6 → 307,8
* Общее количество кнопок для всех приложений ограничено
числом 4095.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEFINE_BUTTON (8)
======================================================================
============= Функция 9 - информация о потоке выполнения. ============
======================================================================
393,6 → 409,8
размером 1 Кб для будущей совместимости, в будущем могут быть
добавлены некоторые поля.
 
---------------------- Константы для регистров: ----------------------
eax - SF_THREAD_INFO (9)
======================================================================
==================== Функция 10 - ожидать события. ===================
======================================================================
412,6 → 430,8
Чтобы ждать не более определенного времени, используйте
функцию 23.
 
---------------------- Константы для регистров: ----------------------
eax - SF_WAIT_EVENT (10)
======================================================================
======= Функция 11 - проверить, есть ли событие, без ожидания. =======
======================================================================
430,6 → 450,8
Чтобы ждать не более определенного времени, используйте
функцию 23.
 
---------------------- Константы для регистров: ----------------------
eax - SF_CHECK_EVENT (11)
======================================================================
=========== Функция 12 - начать/закончить перерисовку окна. ==========
======================================================================
451,6 → 473,9
* Функция начала перерисовки удаляет все определённые
функцией 8 кнопки, их следует определить повторно.
 
---------------------- Константы для регистров: ----------------------
eax - SF_REDRAW (12)
ebx - SSF_BEGIN_DRAW (1), SSF_END_DRAW (2)
======================================================================
============ Функция 13 - нарисовать прямоугольник в окне. ===========
======================================================================
465,6 → 490,8
* Под координатами понимаются координаты левого верхнего угла
прямоугольника относительно окна.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DRAW_RECT (13)
======================================================================
================ Функция 14 - получить размеры экрана. ===============
======================================================================
480,6 → 507,8
* Смотри также подфункцию 5 функции 48 - получить размеры рабочей
области экрана.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_SCREEN_SIZE (14)
======================================================================
= Функция 15, подфункция 1 - установить размер фонового изображения. =
======================================================================
497,6 → 526,9
* Есть парная функция получения размеров фонового изображения -
подфункция 1 функции 39.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_SIZE_BG (1)
======================================================================
= Функция 15, подфункция 2 - поставить точку на фоновом изображении. =
======================================================================
517,6 → 549,9
* Есть парная функция получения точки с фонового изображения -
подфункция 2 функции 39.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_PIXEL_BG (2)
======================================================================
============ Функция 15, подфункция 3 - перерисовать фон. ============
======================================================================
526,6 → 561,9
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_REDRAW_BG (3)
======================================================================
===== Функция 15, подфункция 4 - установить режим отрисовки фона. ====
======================================================================
543,6 → 581,9
* Есть парная команда получения режима отрисовки фона -
подфункция 4 функции 39.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_MODE_BG (4)
======================================================================
===== Функция 15, подфункция 5 - поместить блок пикселей на фон. =====
======================================================================
563,6 → 604,9
* Для обновления экрана (после завершения серии команд, работающих с
фоном) вызывайте подфункцию 3 перерисовки фона.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_IMAGE_BG (5)
======================================================================
====================== Функция 15, подфункция 6 ======================
==== Спроецировать данные фона на адресное пространство процесса. ====
580,6 → 624,9
* Пиксели фонового изображения записываются последовательно
слева направо, сверху вниз.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_MAP_BG (6)
======================================================================
====================== Функция 15, подфункция 7 ======================
=== Закрыть проекцию данных фона на адресное пространство процесса. ==
591,6 → 638,9
Возвращаемое значение:
* eax = 1 при успехе, 0 при ошибке
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_UNMAP_BG (7)
======================================================================
====================== Функция 15, подфункция 8 ======================
=========== Получить координаты последней отрисовки фона. ============
608,6 → 658,9
функцию сразу после получения события:
5 = завершилась перерисовка фона рабочего стола
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_LAST_DRAW (8)
======================================================================
====================== Функция 15, подфункция 9 ======================
=============== Перерисовать прямоугольную часть фона. ===============
624,6 → 677,9
(right,bottom) - координаты правого нижнего.
* Если параметры установлены некорректно - фон не перерисовывается.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_SET (15)
ebx - SSF_REDRAW_RECT (9)
======================================================================
============= Функция 16 - сохранить рамдиск на дискету. =============
======================================================================
634,6 → 690,8
* eax = 0 - успешно
* eax = 1 - ошибка
 
---------------------- Константы для регистров: ----------------------
eax - SF_RD_TO_FLOPPY (16)
======================================================================
============== Функция 17 - получить код нажатой кнопки. =============
======================================================================
658,6 → 716,9
в формате подфункции 2 функции 37 в момент начала нажатия
на кнопку, за исключением младшего бита (соответствующего левой
кнопке мыши), который сбрасывается.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_BUTTON (17)
======================================================================
= Функция 18, подфункция 1 - сделать самым нижним окно потока. =======
======================================================================
668,6 → 729,9
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_UNFOCUS_WINDOW (1)
======================================================================
==== Функция 18, подфункция 2 - завершить процесс/поток по слоту. ====
======================================================================
683,6 → 747,9
* Смотри также подфункцию 18 - завершение
процесса/потока с заданным идентификатором.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_TERMINATE_THREAD (2)
======================================================================
= Функция 18, подфункция 3 - сделать активным окно заданного потока. =
======================================================================
697,6 → 764,9
какое-то окно.
* Узнать, какое окно является активным, можно вызовом подфункции 7.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_FOCUS_WINDOW (3)
======================================================================
Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
======================================================================
709,6 → 779,9
Возвращаемое значение:
* eax = значение счётчика пустых тактов в секунду
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_IDLE_COUNT (4)
======================================================================
======== Функция 18, подфункция 5 - получить тактовую частоту. =======
======================================================================
718,6 → 791,9
Возвращаемое значение:
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_CPU_REQUENCY (5)
======================================================================
Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
======================================================================
733,6 → 809,9
* Все папки в указанном пути должны существовать, иначе вернётся
значение 5, "файл не найден".
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_RD_TO_HDD (6)
======================================================================
====== Функция 18, подфункция 7 - получить номер активного окна. =====
======================================================================
747,6 → 826,9
сообщения обо всём вводе с клавиатуры.
* Сделать окно активным можно вызовом подфункции 3.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_ACTIVE_WINDOW (7)
======================================================================
==== Функция 18, подфункция 8 - отключить/разрешить звук спикера. ====
======================================================================
770,6 → 852,10
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_SPEAKER (8)
ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2)
======================================================================
= Функция 18, подфункция 9 - завершение работы системы с параметром. =
======================================================================
787,6 → 873,9
* Не следует полагаться на возвращаемое значение при неверном
вызове, оно может измениться в последующих версиях ядра.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_SHUTDOWN (9)
======================================================================
========= Функция 18, подфункция 10 - свернуть активное окно. ========
======================================================================
807,6 → 896,9
функцией 0, для окон без скина её можно определить функцией 8),
восстановление - приложением @taskbar.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_MINIMIZE_WINDOW (10)
======================================================================
====================== Функция 18, подфункция 11 =====================
============= Получить информацию о дисковой подсистеме. =============
874,6 → 966,9
* Таблица может быть использована для получения информации
об имеющихся устройствах.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_INFO_DISC_SYS (11)
======================================================================
========== Функция 18, подфункция 13 - получить версию ядра. =========
======================================================================
893,6 → 988,9
db 0
dd 1675
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_KERNEL_VERSION (13)
======================================================================
====================== Функция 18, подфункция 14 =====================
======= Ожидать начала обратного хода луча развёртки монитора. =======
907,6 → 1005,9
высокопроизводительных графических приложений; используется для
плавного вывода графики.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_WAIT_RETRACE (14)
======================================================================
== Функция 18, подфункция 15 - поместить курсор мыши в центр экрана. =
======================================================================
916,6 → 1017,9
Возвращаемое значение:
* eax = 0 как признак успеха
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_CURSOR_CENTER (15)
======================================================================
====================== Функция 18, подфункция 16 =====================
============ Получить размер свободной оперативной памяти. ===========
926,6 → 1030,9
Возвращаемое значение:
* eax = размер свободной памяти в килобайтах
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_FREE_RAM (16)
======================================================================
====================== Функция 18, подфункция 17 =====================
============ Получить размер имеющейся оперативной памяти. ===========
936,6 → 1043,9
Возвращаемое значение:
* eax = общий размер имеющейся памяти в килобайтах
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_TOTAL_RAM (17)
======================================================================
====================== Функция 18, подфункция 18 =====================
============= Завершить процесс/поток по идентификатору. =============
953,6 → 1063,9
* Смотри также подфункцию 2 - завершение
процесса/потока по заданному слоту.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_TERMINATE_THREAD_ID (18)
======================================================================
=== Функция 18, подфункция 19 - получить/установить настройки мыши. ==
======================================================================
1036,6 → 1149,12
 
Замечание: настройки мыши можно регулировать в приложении mouse_cfg.
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
====================== Функция 18, подфункция 20 =====================
============= Получить информацию об оперативной памяти. =============
1061,6 → 1180,9
* +32: dword: размер наибольшего выделенного блока в куче ядра
(зарезервировано)
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_RAM_INFO (20)
======================================================================
====================== Функция 18, подфункция 21 =====================
======= Получить номер слота процесса/потока по идентификатору. ======
1073,6 → 1195,9
* eax = 0 - ошибка (неверный идентификатор)
* иначе eax = номер слота
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_GET_THREAD_SLOT (21)
======================================================================
Функция 18, подфункция 22 - операции с окном другого процесса/потока.
======================================================================
1093,6 → 1218,11
* Восстановление окна с одновременной активизацией осуществляется
подфункции 3 (принимающей номер слота).
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_FOREIGN_WINDOW (22)
ecx - SSSF_MINIMIZE (0), SSSF_MINIMIZE_ID (1), SSSF_RESTORE (2),
SSSF_RESTORE_ID (3)
======================================================================
======= Функция 18, подфункция 23 - минимизировать все окна. =========
======================================================================
1105,6 → 1235,9
Замечания:
* Окна спец. потоков (имя начинается с символа @) не сворачиваются.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_MINIMIZE_ALL (23)
======================================================================
===== Функция 18, подфункция 24 - установить пределы отрисовки. ======
======================================================================
1121,6 → 1254,9
* Размеры указываемые в функции не должны превышать размеры текущего
видеорежима, иначе функция ничего не изменит.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_SET_SCREEN_LIMITS (24)
======================================================================
===================== Функция 18, подфункция 25 ======================
======== Управление положением окна относительно других окон. ========
1152,6 → 1288,10
ZPOS_NORMAL = 0 - обычное
ZPOS_ALWAYS_TOP = 1 - поверх всех окон
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)
ebx - SSF_WINDOW_BEHAVIOR (25)
ecx - SSSF_GET_WB (1), SSSF_SET_WB (2)
======================================================================
==================== Функция 20 - интерфейс MIDI. ====================
======================================================================
1173,6 → 1313,9
* Предварительно должен быть определён базовый порт вызовом
подфункции 1 функции 21.
 
---------------------- Константы для регистров: ----------------------
eax - SF_MIDI (20)
ebx - SSF_RESET (1), SSF_OUTPUT (2)
======================================================================
==== Функция 21, подфункция 1 - установить базовый порт MPU MIDI. ====
======================================================================
1189,6 → 1332,9
* Получить установленный базовый порт можно вызовом
подфункции 1 функции 26.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_SET (21)
ebx - SSF_MPU_MIDI_BASE (1)
======================================================================
===== Функция 21, подфункция 2 - установить раскладку клавиатуры. ====
======================================================================
1223,6 → 1369,9
соответствующую текущей стране иконку.
* Приложение @taskbar переключает раскладки по запросу пользователя.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_SET (21)
ebx - SSF_KEYBOARD_LAYOUT (2)
======================================================================
========= Функция 21, подфункция 5 - установить язык системы. ========
======================================================================
1240,6 → 1389,9
переменную не использует.
* Получить язык системы можно вызовом подфункции 5 функции 26.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_SET (21)
ebx - SSF_SYS_LANG (5)
======================================================================
====================== Функция 21, подфункция 11 =====================
=========== Разрешить/запретить низкоуровневый доступ к HD. ==========
1255,6 → 1407,9
* Текущая реализация использует только младший бит ecx.
* Получить текущее состояние можно вызовом подфункции 11 функции 26.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_SET (21)
ebx - SSF_ACCESS_HD_LBA (11)
======================================================================
====================== Функция 21, подфункция 12 =====================
========== Разрешить/запретить низкоуровневый доступ к PCI. ==========
1270,6 → 1425,9
* Текущая реализация использует только младший бит ecx.
* Получить текущее состояние можно вызовом подфункции 12 функции 26.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_SET (21)
ebx - SSF_ACCESS_PCI (12)
======================================================================
============ Функция 22 - установить системную дату/время. ===========
======================================================================
1309,6 → 1467,8
автоматически отменяет предыдущую установку. Впрочем, на данный
момент ни одна программа его не использует.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SET_TIME_DATE (22)
======================================================================
============== Функция 23 - ожидать события с таймаутом. =============
======================================================================
1332,6 → 1492,8
с eax=0, если сложение ebx с текущим значением счётчика времени
вызовет 32-битное переполнение.
 
---------------------- Константы для регистров: ----------------------
eax - SF_WAIT_EVENT_TIMEOUT (23)
======================================================================
======= Функция 24, подфункция 4 - извлечь лоток привода диска. ======
======================================================================
1352,6 → 1514,9
устройства.
* Примером использования функции является приложение CD_tray.
 
---------------------- Константы для регистров: ----------------------
eax - SF_CD (24)
ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5)
======================================================================
====== Функция 24, подфункция 5 - загрузить лоток привода диска. =====
======================================================================
1368,6 → 1533,9
* Функция поддерживается только для ATAPI-устройств (CD и DVD).
* Примером использования функции является приложение CD_tray.
 
---------------------- Константы для регистров: ----------------------
eax - SF_CD (24)
ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5)
======================================================================
========== Функция 25 - записать область на слой фона. ===============
======================================================================
1388,6 → 1556,8
* Функция размещает изображение не на фоновое изображение (ф.15),
а напрямую в LFB. Опции ф.15 для ф. 25 не имеют смысла.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SCREEN_PUT_IMAGE (25)
======================================================================
===== Функция 26, подфункция 1 - получить базовый порт MPU MIDI. =====
======================================================================
1400,6 → 1570,9
* Установить базовый порт можно вызовом
подфункции 1 функции 21.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_MPU_MIDI_BASE (1)
======================================================================
====== Функция 26, подфункция 2 - получить раскладку клавиатуры. =====
======================================================================
1438,6 → 1611,9
(используя описываемую функцию).
* Приложение @taskbar переключает раскладки по запросу пользователя.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_KEYBOARD_LAYOUT (2)
======================================================================
========== Функция 26, подфункция 5 - получить язык системы. =========
======================================================================
1452,6 → 1628,9
соответствующую иконку (используя описываемую функцию).
* Установить язык системы можно вызовом подфункции 5 функции 21.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_SYS_LANG (5)
======================================================================
=== Функция 26, подфункция 9 - получить значение счётчика времени. ===
======================================================================
1466,6 → 1645,9
497 суток.
* Системное время можно получить функцией 3.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_TIME_COUNT (9)
======================================================================
===================== Функция 26, подфункция 10 ======================
========== Получить значение высокоточного счётчика времени. =========
1482,6 → 1664,9
счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
наносекунд.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_TIME_COUNT_PRO (10)
======================================================================
====================== Функция 26, подфункция 11 =====================
=========== Узнать, разрешён ли низкоуровневый доступ к HD. ==========
1496,6 → 1681,9
* Установить текущее состояние можно вызовом
подфункции 11 функции 21.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_ACCESS_HD_LBA (11)
======================================================================
====================== Функция 26, подфункция 12 =====================
========== Узнать, разрешён ли низкоуровневый доступ к PCI. ==========
1511,6 → 1699,9
* Установить текущее состояние можно вызовом
подфункции 12 функции 21.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM_GET (26)
ebx - SSF_ACCESS_PCI (12)
======================================================================
================ Функция 29 - получить системную дату. ===============
======================================================================
1525,6 → 1716,8
Замечания:
* Системную дату можно установить функцией 22.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_SYS_DATE (29)
======================================================================
================ Функция 30 - работа с текущей папкой. ===============
======================================================================
1570,6 → 1763,9
Замечания:
* Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
 
---------------------- Константы для регистров: ----------------------
eax - SF_CURRENT_FOLDER (30)
ebx - SSF_SET_CF (1), SSF_GET_CF (2), SSF_ADD_SYS_FOLDER (3)
======================================================================
========= Функция 34 - узнать кому принадлежит точка экрана. =========
======================================================================
1583,6 → 1779,8
При некорректных значениях ebx и ecx функция возвращает 0
* Функция берет значения из области [_WinMapAddress]
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_PIXEL_OWNER (34)
======================================================================
============ Функция 35 - прочитать цвет точки на экране. ============
======================================================================
1600,6 → 1798,8
функций) через селектор gs. Параметры текущего видеорежима
можно получить функцией 61.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_PIXEL (35)
======================================================================
=============== Функция 36 - прочитать область экрана. ===============
======================================================================
1616,6 → 1816,8
области относительно экрана.
* Размер изображения в байтах есть 3*xsize*ysize.
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_IMAGE (36)
======================================================================
==================== Функция 37 - работа с мышью. ====================
======================================================================
1738,6 → 1940,11
* После прочтения значения обнуляются.
* Данные имеют знаковые значения.
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
================== Функция 38 - нарисовать отрезок. ==================
======================================================================
1756,6 → 1963,8
* Координаты берутся относительно окна.
* Конечная точка также рисуется.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DRAW_LINE (38)
======================================================================
== Функция 39, подфункция 1 - получить размер фонового изображения. ==
======================================================================
1769,6 → 1978,8
подфункция 1 функции 15. После которой, разумеется, следует
заново определить само изображение.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET (39)
======================================================================
= Функция 39, подфункция 2 - прочитать точку с фонового изображения. =
======================================================================
1787,6 → 1998,8
* Есть парная функция установки точки на фоновом изображении -
подфункция 2 функции 15.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET (39)
======================================================================
====== Функция 39, подфункция 4 - получить режим отрисовки фона. =====
======================================================================
1800,6 → 2013,8
* Есть парная функция установки режима отрисовки фона -
подфункция 4 функции 15.
 
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET (39)
======================================================================
======== Функция 40 - установить маску для ожидаемых событий. ========
======================================================================
1828,7 → 2043,8
* Функции работы с событиями учитывают маску на момент
вызова функции, а не на момент поступления сообщения.
 
 
---------------------- Константы для регистров: ----------------------
eax - SF_SET_EVENTS_MASK (40)
======================================================================
=================== Функция 43 - ввод/вывод в порт. ==================
======================================================================
1858,7 → 2074,8
быстрее и несколько короче и проще. Из незарезервированных
портов читать всё равно нельзя.
 
 
---------------------- Константы для регистров: ----------------------
eax - SF_PORT_IN_OUT (43)
======================================================================
= Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
======================================================================
1893,6 → 2110,8
* При завершении потока автоматически освобождаются все
зарезервированные им порты.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SET_PORTS (46)
======================================================================
================= Функция 47 - вывести число в окно. =================
======================================================================
1927,6 → 2146,8
таким количеством цифр, "лишние" ведущие цифры обрезаются.
* Параметры шрифтов указаны в описании функции 4 (вывода текста).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DRAW_NUMBER (47)
======================================================================
======= Функция 48, подфункция 0 - применить настройки экрана. =======
======================================================================
1943,6 → 2164,9
игнорируется.
* Вызов функции с ненулевым ecx игнорируется.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_APPLY (0)
======================================================================
========= Функция 48, подфункция 1 - установить стиль кнопок. ========
======================================================================
1959,6 → 2183,9
подфункцией 0.
* Тип кнопок влияет только на их прорисовку функцией 8.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_BUTTON_STYLE (1)
======================================================================
==== Функция 48, подфункция 2 - установить стандартные цвета окон. ===
======================================================================
1982,6 → 2209,9
* Таблицу цветов можно просматривать/изменять интерактивно с помощью
приложения desktop.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_COLORS (2)
======================================================================
===== Функция 48, подфункция 3 - получить стандартные цвета окон. ====
======================================================================
2026,6 → 2256,9
* Стандартные цвета можно просматривать/изменять интерактивно
с помощью приложения desktop.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_COLORS (3)
======================================================================
========== Функция 48, подфункция 4 - получить высоту скина. =========
======================================================================
2039,6 → 2272,9
использующих скин.
* Смотри также общую структуру окна в описании функции 0.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SKIN_HEIGHT (4)
======================================================================
===== Функция 48, подфункция 5 - получить рабочую область экрана. ====
======================================================================
2061,6 → 2297,9
позволяющую определить размеры всего экрана.
* Есть парная функция установки рабочей области - подфункция 6.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SCREEN_AREA (5)
======================================================================
==== Функция 48, подфункция 6 - установить рабочую область экрана. ===
======================================================================
2092,6 → 2331,9
обновляет координаты и размеры максимизированных окон.
Все окна извещаются о необходимости перерисовки (событие 1).
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_SCREEN_AREA (6)
======================================================================
====================== Функция 48, подфункция 7 ======================
============ Получить область скина для текста заголовка. ============
2112,6 → 2354,9
какого-нибудь заменителя текста заголовка
(по усмотрению приложения).
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SKIN_MARGINS (7)
======================================================================
==== Функция 48, подфункция 8 - установить используемый скин окон. ===
======================================================================
2131,6 → 2376,9
* Пользователь может изменять скин статически, создав свой
default.skn, или динамически с помощью приложения desktop.
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_SKIN (8)
======================================================================
= Функция 48, подфункция 9 - получить настройку сглаживания шрифтов. =
======================================================================
2140,6 → 2388,9
Возвращаемое значение:
* eax = 2 - субпиксельное, 1 - обычное, 0 - выключить
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_FONT_SMOOTH (9)
======================================================================
===== Функция 48, подфункция 10 - настроить сглаживание шрифтов. =====
======================================================================
2148,6 → 2399,9
* ebx = 10 - номер подфункции
* cl = 2 - субпиксельное, 1 - обычное, 0 - выключить
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_FONT_SMOOTH (10)
======================================================================
======== Функция 48, подфункция 11 - получить размер шрифтов. ========
======================================================================
2157,6 → 2411,9
Возвращаемое значение:
* eax = текущая высота шрифта в пикселях
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_FONT_SIZE (11)
======================================================================
======= Функция 48, подфункция 12 - установить размер шрифтов. =======
======================================================================
2165,6 → 2422,9
* ebx = 10 - номер подфункции
* cl = новая высота шрифта в пикселях
 
---------------------- Константы для регистров: ----------------------
eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_FONT_SIZE (12)
======================================================================
============ Функция 49 - Advanced Power Management (APM). ===========
======================================================================
2186,6 → 2446,8
(http://www.pobox.com/~ralf/files.html,
ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/).
 
---------------------- Константы для регистров: ----------------------
eax - SF_APM (49)
======================================================================
================= Функция 50 - установка формы окна. =================
======================================================================
2231,6 → 2493,8
* Вызов подфункции 0 с нулевым указателем приводит к возврату
к прямоугольной форме.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SET_WINDOW_SHAPE (50)
======================================================================
===================== Функция 51 - создать поток. ====================
======================================================================
2243,6 → 2507,8
* eax = -1 - ошибка (в системе слишком много потоков)
* иначе eax = TID - идентификатор потока
 
---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_THREAD (51)
======================================================================
====================== Функция 54, подфункция 0 ======================
============== Узнать количество слотов в буфере обмена. =============
2254,6 → 2520,9
* eax = количество слотов в буфере
* eax = -1 - отсутствует область главного списка
 
---------------------- Константы для регистров: ----------------------
eax - SF_CLIPBOARD (54)
ebx - SSF_GET_SLOT_COUNT (0)
======================================================================
====================== Функция 54, подфункция 1 ======================
================== Считать данные из буфера обмена. ==================
2267,6 → 2536,9
* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
---------------------- Константы для регистров: ----------------------
eax - SF_CLIPBOARD (54)
ebx - SSF_READ_CB (1)
======================================================================
====================== Функция 54, подфункция 2 ======================
================== Записать данные в буфер обмена. ===================
2281,6 → 2553,9
* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
 
---------------------- Константы для регистров: ----------------------
eax - SF_CLIPBOARD (54)
ebx - SSF_WRITE_CB (2)
======================================================================
====================== Функция 54, подфункция 3 ======================
========= Удалить последний слот с данными в буфере обмена ===========
2293,6 → 2568,9
* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
 
---------------------- Константы для регистров: ----------------------
eax - SF_CLIPBOARD (54)
ebx - SSF_DEL_SLOT (3)
======================================================================
====================== Функция 54, подфункция 4 ======================
=================== Аварийный сброс блокировки буфера ================
2307,6 → 2585,9
* Используется в исключительных случаях, когда зависшее или убитое
приложение заблокировало работу с буфером обмена.
 
---------------------- Константы для регистров: ----------------------
eax - SF_CLIPBOARD (54)
ebx - SSF_UNLOCK_BUFFER (4)
======================================================================
====================== Функция 55, подфункция 55 =====================
========== Начать проигрывать данные на встроенном спикере. ==========
2340,6 → 2621,8
* Данные должны сохраняться в памяти по крайней мере
до конца проигрывания.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SPEAKER_PLAY (55)
======================================================================
======================= Функция 57 - PCI BIOS. =======================
======================================================================
2358,6 → 2641,8
* Если BIOS не поддерживает это расширение, поведение функции
эмулируется (через аналоги подфункций функции 62 режима ядра).
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI_BIOS (57)
======================================================================
=========== Функция 60 - Inter Process Communication (IPC). ==========
======================================================================
2409,6 → 2694,9
* Система сразу после записи IPC-сообщения в буфер посылает
потоку-приёмнику событие с кодом 7 (см. коды событий).
 
---------------------- Константы для регистров: ----------------------
eax - SF_IPC (60)
ebx - SSF_SET_AREA (1), SSF_SEND_MESSAGE (2)
======================================================================
=== Функция 61 - получить параметры для прямого доступа к графике. ===
======================================================================
2471,6 → 2759,10
* eax = число байт, которое занимает одна строка развёртки
(горизонтальная линия на экране)
 
---------------------- Константы для регистров: ----------------------
eax - SF_GET_GRAPHICAL_PARAMS (61)
ebx - SSF_SCREEN_SIZE (1), SSF_BITS_PER_PIXEL (2),
SSF_BYTES_PER_LINE (3)
======================================================================
===== Функция 62, подфункция 0 - получить версию PCI-интерфейса. =====
======================================================================
2486,6 → 2778,9
для приложений подфункцией 12 функции 21.
* Если PCI BIOS не поддерживается, то значение ax неопределено.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI (62)
ebx - SSF_GET_VERSION (0)
======================================================================
==== Функция 62, подфункция 1 - получить номер последней PCI-шины. ===
======================================================================
2500,6 → 2795,9
для приложений подфункцией 12 функции 21.
* Если PCI BIOS не поддерживается, то значение al неопределено.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI (62)
ebx - SSF_GET_LAST_BUS (1)
======================================================================
====================== Функция 62, подфункция 2 ======================
== Получить механизм обращения к конфигурационному пространству PCI. =
2518,6 → 2816,9
* Подфункции чтения и записи автоматически работают
с выбранным механизмом.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI (62)
ebx - SSF_GET_ADRR_MODE (2)
======================================================================
======== Функция 62, подфункции 4,5,6 - прочитать PCI-регистр. =======
======================================================================
2549,6 → 2850,9
ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/);
список вторых должен быть указан в документации по устройству.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI (62)
ebx - SSF_READ_BYTE (4), SSF_READ_WORD (5), SSF_READ_DWORD (6)
======================================================================
======= Функция 62, подфункции 8,9,10 - записать в PCI-регистр. ======
======================================================================
2579,6 → 2883,9
входит, например, в известный Interrupt List by Ralf Brown;
список вторых должен быть указан в документации по устройству.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PCI (62)
ebx - SSF_WRITE_BYTE (8), SSF_WRITE_WORD (9), SSF_WRITE_DWORD (10)
======================================================================
================ Функция 63 - работа с доской отладки. ===============
======================================================================
2625,6 → 2932,9
* eax = ebx = 0 - буфер пуст
* eax = байт, ebx = 1 - байт успешно прочитан
 
---------------------- Константы для регистров: ----------------------
eax - SF_BOARD (63)
ebx - SSF_DEBUG_WRITE (1), SSF_DEBUG_READ (2)
======================================================================
========== Функция 64 - перераспределить память приложения. ==========
======================================================================
2642,6 → 2952,8
Вызов функции будет игнорироваться, если приложение создаст
локальную кучу вызовом 68.11.
 
---------------------- Константы для регистров: ----------------------
eax - SF_MEMORY_RESIZE (64)
======================================================================
========= Функция 65 - вывести изображение с палитрой в окно. ========
======================================================================
2690,6 → 3002,8
* Вызов функции 7 эквивалентен вызову этой функции с параметрами
esi=24, ebp=0.
 
---------------------- Константы для регистров: ----------------------
eax - SF_PUT_IMAGE_EXT (65)
======================================================================
================= Функция 66 - работа с клавиатурой. =================
======================================================================
2799,6 → 3113,11
* Разблокирование результатов ф. 66.6
* Для эмуляции мыши через клавиатуру, приложение MOUSEMUL
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
============ Функция 67 - изменить положение/размеры окна. ===========
======================================================================
2823,6 → 3142,8
получены вызовом функции 9.
* Функция посылает окну событие перерисовки (с кодом 1).
 
---------------------- Константы для регистров: ----------------------
eax - SF_CHANGE_WINDOW (67)
======================================================================
=== Функция 68, подфункция 0 - получить счётчик переключений задач. ==
======================================================================
2833,6 → 3154,9
* eax = число переключений задач с момента загрузки системы
(по модулю 2^32)
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_GET_TASK_SWITCH_COUNT (0)
======================================================================
====================== Функция 68, подфункция 1 ======================
============ Переключиться на следующий поток выполнения. ============
2848,6 → 3172,9
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_SWITCH_TASK (1)
======================================================================
=============== Функция 68, подфункция 2 - кэш + rdpmc. ==============
======================================================================
2870,6 → 3197,11
* для ecx=2 и ecx=3:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
========== Функция 68, подфункция 3 - прочитать MSR-регистр. =========
======================================================================
2891,6 → 3223,9
командой cpuid. Иначе возникнет уже другое исключение в ядре,
которое всё равно прибьёт поток.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_READ_MSR (3)
======================================================================
========= Функция 68, подфункция 4 - записать в MSR-регистр. =========
======================================================================
2913,6 → 3248,9
командой cpuid. Иначе возникнет уже другое исключение в ядре,
которое всё равно прибьёт поток.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_WRITE_MSR (4)
======================================================================
===== Функция 68, подфункция 11 - инициализировать кучу процесса. ====
======================================================================
2930,6 → 3268,9
размер существующей кучи.
* После создания кучи вызовы функции 64 игнорируются.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_HEAP_INIT (11)
======================================================================
========== Функция 68, подфункция 12 - выделить блок памяти. =========
======================================================================
2945,6 → 3286,9
* Функция выделяет целое число страниц (4 Кб) так, что фактический
размер выделенного блока больше или равен запрошенному.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_ALLOC (12)
======================================================================
========= Функция 68, подфункция 13 - освободить блок памяти. ========
======================================================================
2959,6 → 3303,9
* Блок памяти должен быть ранее выделен подфункцией 12
или подфункцией 20.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_FREE (13)
======================================================================
====================== Функция 68, подфункция 14 =====================
====== Ожидать получения сигнала от других приложений/драйверов. =====
2974,6 → 3321,9
* +4: данные принятого сигнала (20 байт), формат которых
определяется первым dword-ом
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14)
======================================================================
=========== Функция 68, подфункция 16 - загрузить драйвер. ===========
======================================================================
2992,6 → 3342,9
нулевой символ, остальные символы игнорируются.
* Драйвер с именем ABC загружается из файла /rd/1/drivers/ABC.obj.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16)
======================================================================
========== Функция 68, подфункция 17 - управление драйвером. =========
======================================================================
3012,6 → 3365,9
определяются драйвером.
* Предварительно должен быть получен хэндл драйвера подфункцией 16.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_CONTROL_DRIVER (17)
======================================================================
============= Функция 68, подфункция 19 - загрузить DLL. =============
======================================================================
3027,6 → 3383,9
заканчивающийся нулём. Первый dword в структуре является
указателем на имя функции, второй содержит адрес функции.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DLL (19)
======================================================================
====== Функция 68, подфункция 20 - перераспределить блок памяти. =====
======================================================================
3051,6 → 3410,9
* Содержимое памяти вплоть до наименьшего из старого и нового
размеров сохраняется.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_REALLOC (20)
======================================================================
========= Функция 68, подфункция 21 - загрузить драйвер PE. ==========
======================================================================
3066,6 → 3428,9
* Если драйвер ещё не загружен, он загружается;
если драйвер уже загружен, ничего не меняется.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER_PE (21)
======================================================================
=== Функция 68, подфункция 22 - открыть именованную область памяти. ==
======================================================================
3105,6 → 3470,9
с кодом ошибки E_ACCESS.
* Процесс, создавший область, всегда имеет доступ на запись.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_OPEN (22)
======================================================================
=== Функция 68, подфункция 23 - закрыть именованную область памяти. ==
======================================================================
3121,6 → 3489,9
* При завершении потока освобождаются все открытые им
области памяти.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_CLOSE (23)
======================================================================
==== Функция 68, подфункция 24 - установить обработчик исключений. ===
======================================================================
3151,6 → 3522,9
подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также
возлагается на обработчик пользователя.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_SET_EXCEPTION_HANDLER (24)
======================================================================
= Функция 68, подфункция 25 - изменить состояние активности сигнала. =
======================================================================
3167,6 → 3541,9
обработчика исключений, установленного подфункцией 24. При этом
номер сигнала соответствует номеру исключения.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_SET_EXCEPTION_STATE (25)
======================================================================
= Функция 68, подфункция 26 - освободить страницы памяти ============
======================================================================
3180,6 → 3557,9
* функция освобождает страницы с ecx+edx по ecx+edx+esi
и устанавливает виртуальную память в зарезервированное состояние.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_FREE_EXT (26)
======================================================================
= Функция 68, подфункция 27 - загрузить файл ===================
======================================================================
3193,6 → 3573,9
Примечания:
* функция загружает и, при необходимости, распаковывает файл (kunpack)
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_FILE (27)
======================================================================
======================== Функция 69 - отладка. =======================
======================================================================
3241,6 → 3624,12
* подфункция 8 - завершить отлаживаемый поток
* подфункция 9 - установить/снять аппаратную точку останова
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
====================== Функция 69, подфункция 0 ======================
========= Определить область данных для отладочных сообщений. ========
3264,6 → 3653,9
* Данные в буфере трактуются как массив элементов переменной длины -
сообщений. Формат сообщения указан в общем описании.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_SET_MESSAGE_AREA (0)
======================================================================
====================== Функция 69, подфункция 1 ======================
========= Получить состояние регистров отлаживаемого потока. =========
3293,6 → 3685,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_GET_REGISTERS (1)
======================================================================
====================== Функция 69, подфункция 2 ======================
======== Установить состояние регистров отлаживаемого потока. ========
3312,6 → 3707,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_SET_REGISTERS (2)
======================================================================
== Функция 69, подфункция 3 - отключиться от отлаживаемого процесса. =
======================================================================
3324,6 → 3722,9
Замечания:
* Если процесс был приостановлен, он возобновляет выполнение.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_DETACH (3)
======================================================================
==== Функция 69, подфункция 4 - приостановить отлаживаемый поток. ====
======================================================================
3337,6 → 3738,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_SUSPEND (4)
======================================================================
====================== Функция 69, подфункция 5 ======================
============ Возобновить выполнение отлаживаемого потока. ============
3351,6 → 3755,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_RESUME (5)
======================================================================
====================== Функция 69, подфункция 6 ======================
============= Прочитать из памяти отлаживаемого процесса. ============
3370,6 → 3777,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_READ_MEMORY (6)
======================================================================
Функция 69, подфункция 7 - записать в память отлаживаемого процесса.
======================================================================
3388,6 → 3798,9
* Процесс должен быть загружен для отладки (как указано в
общем описании).
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_WRITE_MEMORY (7)
======================================================================
====== Функция 69, подфункция 8 - завершить отлаживаемый поток. ======
======================================================================
3404,6 → 3817,9
требуется выполнение первого замечания и принимается PID,
а не номер слота.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_TERMINATE (8)
======================================================================
====================== Функция 69, подфункция 9 ======================
============= Установить/снять аппаратную точку останова. ============
3447,6 → 3863,9
* Точка останова на запись и чтение/запись срабатывает после
выполнения вызвавшей её инструкции.
 
---------------------- Константы для регистров: ----------------------
eax - SF_DEBUG (69)
ebx - SSF_DEFINE_BREAKPOINT (9)
======================================================================
= Функция 70 - работа с файловой системой с поддержкой длинных имён. =
======================================================================
3517,6 → 3936,12
Разблокировка осуществляется при обращении подфункции 4 функции 24
к соответствующему устройству.
 
---------------------- Константы для регистров: ----------------------
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)
======================================================================
= Функция 70, подфункция 0 - чтение файла с поддержкой длинных имён. =
======================================================================
3545,6 → 3970,9
* Функция не позволяет читать папки
(вернётся eax=10, access denied).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_READ_FILE (0)
======================================================================
= Функция 70, подфункция 1 - чтение папки с поддержкой длинных имён. =
======================================================================
3644,6 → 4072,9
0x10, а времена и даты обнулены. Альтернативный способ получения
информации об оборудовании - подфункция 11 функции 18.
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_READ_FOLDER (1)
======================================================================
====================== Функция 70, подфункция 2 ======================
======== Создание/перезапись файла с поддержкой длинных имён. ========
3672,6 → 4103,9
сколько сможет, после чего вернёт код ошибки 8.
* Функция не поддерживается для CD (вернётся код ошибки 2).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_CREATE_FILE (2)
======================================================================
====================== Функция 70, подфункция 3 ======================
======== Запись в существующий файл с поддержкой длинных имён. =======
3702,6 → 4136,9
необходимого размера нулевыми символами.
* Функция не поддерживается для CD (вернётся код ошибки 2).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_WRITE_FILE (3)
======================================================================
========= Функция 70, подфункция 4 - установка размера файла. ========
======================================================================
3733,6 → 4170,9
код ошибки 8.
* Функция не поддерживается для CD (вернётся код ошибки 2).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_SET_END (4)
======================================================================
=== Функция 70, подфункция 5 - получение информации о файле/папке. ===
======================================================================
3762,6 → 4202,9
* Функция не поддерживает виртуальные папки типа /, /rd и
корневые папки типа /rd/1.
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_GET_INFO (5)
======================================================================
===== Функция 70, подфункция 6 - установка атрибутов файла/папки. ====
======================================================================
3792,6 → 4235,9
корневые папки типа /rd/1.
* Функция не поддерживается для CD (вернётся код ошибки 2).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_SET_INFO (6)
======================================================================
============ Функция 70, подфункция 7 - запуск программы. ============
======================================================================
3825,6 → 4271,9
в замороженном состоянии; для запуска используйте
подфункцию 5 функции 69.
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_START_APP (7)
======================================================================
========== Функция 70, подфункция 8 - удаление файла/папки. ==========
======================================================================
3850,6 → 4299,9
* Можно удалять только пустые папки (попытка удаления непустой папки
приведёт к ошибке с кодом 10, "доступ запрещён").
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_DELETE (8)
======================================================================
============= Функция 70, подфункция 9 - создание папки. =============
======================================================================
3875,6 → 4327,9
* Родительская папка должна уже существовать.
* Если папка уже существует, функция завершится успешно (eax=0).
 
---------------------- Константы для регистров: ----------------------
eax - SF_FILE (70)
[ebx] - SSF_CREATE_FOLDER (9)
======================================================================
=== Функция 71, подфункция 1 - установить заголовок окна программы. ==
======================================================================
3894,6 → 4349,8
иначе будет использоваться cp866.
* Чтобы убрать заголовок, передайте NULL в ecx.
 
---------------------- Константы для регистров: ----------------------
eax - SF_SET_CAPTION (71)
======================================================================
================ Функция 72 - послать сообщение окну. ================
======================================================================
3908,6 → 4365,8
* eax = 0 - успешно
* eax = 1 - буфер заполнен
 
---------------------- Константы для регистров: ----------------------
eax - SF_SEND_MESSAGE (72)
======================================================================
===================== Функция 73 - blit bitmap =====================
======================================================================
3948,6 → 4407,8
Возвращаемое значение:
* функция не возвращает значения
 
---------------------- Константы для регистров: ----------------------
eax - SF_BLITTER (73)
======================================================================
=================== Функция 74, подфункция -1 ========================
=========== Получить количество активных сетевых устройств. ==========
3958,6 → 4419,9
Возвращаемое значение:
* eax = количество активных сетевых устройств
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_COUNT (255)
======================================================================
==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
======================================================================
3968,6 → 4432,9
Возвращаемое значение:
* eax = тип устройства
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_TYPE (0)
======================================================================
==== Функция 74, подфункция 1, Получить имя сетевого устройства. =====
======================================================================
3980,6 → 4447,9
* eax = -1 для ошибки
* В случае успеха в буфер записывается имя сетевого устройства
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_NAME (1)
======================================================================
======= Функция 74, подфункция 2, Сброс сетевого устройства. =========
======================================================================
3990,6 → 4460,9
Возвращаемое значение:
* eax = -1 для ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_RESET_DEVICE (2)
======================================================================
====== Функция 74, подфункция 3, Остановить сетевое устройство. ======
======================================================================
4000,6 → 4473,9
Возвращаемое значение:
* eax = -1 для ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_STOP_DEVICE (3)
======================================================================
===== Функция 74, подфункция 4, Получить указатель на устройство =====
======================================================================
4010,6 → 4486,9
Возвращаемое значение:
* eax = указатель, -1 для ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_POINER (4)
======================================================================
=== Функция 74, подфункция 6, Получить количество посланых пакетов ===
======================================================================
4020,6 → 4499,9
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_TX_PACKET_COUNT (6)
======================================================================
=== Функция 74, подфункция 7, Получить количество принятых пакетов ===
======================================================================
4030,6 → 4512,9
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_COUNT (7)
======================================================================
==== Функция 74, подфункция 8, Получить количество посланых байт. ====
======================================================================
4041,6 → 4526,9
* eax = количество с момента старта устройства, -1 для ошибки
* ebx = старшая часть
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_TX_BYTE_COUNT (8)
======================================================================
==== Функция 74, подфункция 9, Получить количество принятых байт. ====
======================================================================
4052,6 → 4540,9
* eax = количество с момента старта устройства, -1 для ошибки
* ebx = старшая часть
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_RX_BYTE_COUNT (9)
======================================================================
======= Функция 74, подфункция 10, Получить статус соединения. =======
======================================================================
4070,6 → 4561,9
12 = 1 Гбит
10b = флаг полного дуплекса
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_LINK_STATUS (10)
======================================================================
======= Функция 75, подфункция 0, Open socket (Открыть сокет). =======
======================================================================
4083,6 → 4577,9
* eax = номер сокета, -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_OPEN (0)
======================================================================
======= Функция 75, подфункция 1, Close socket (Закрыть сокет). ======
======================================================================
4094,6 → 4591,9
* eax = -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_CLOSE (1)
======================================================================
============= Функция 75, подфункция 2, Bind (Привязка). =============
======================================================================
4107,6 → 4607,9
* eax = -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_BIND (2)
======================================================================
============ Функция 75, подфункция 3, Listen (Слушать). =============
======================================================================
4119,6 → 4622,9
* eax = -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_LISTEN (3)
======================================================================
========== Функция 75, подфункция 4, Connect (Соединение). ===========
======================================================================
4132,6 → 4638,9
* eax = -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_CONNECT (4)
======================================================================
=========== Функция 75, подфункция 5, Accept (Соглашение). ===========
======================================================================
4145,6 → 4654,9
* eax = номер сокета из принятого сокета, -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_ACCEPT (5)
======================================================================
============= Функция 75, подфункция 6, Send (Послать). ==============
======================================================================
4159,6 → 4671,9
* eax = количество скопированных байтов, -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_SEND (6)
======================================================================
============ Функция 75, подфункция 7, Receive (Получить). ===========
======================================================================
4173,6 → 4688,9
* eax = количество скопированных байтов, -1 для ошибки
* ebx = код ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_RECEIVE (7)
======================================================================
= Функция 75, подфункция 8, Set socket options (Задать опции сокета) =
======================================================================
4191,6 → 4709,9
dd optlength
db options...
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_SET_OPTIONS (8)
======================================================================
= Функция 75, подфункция 9, Get socket options(Получить опции сокета)
======================================================================
4209,6 → 4730,9
dd optlength
db options...
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_GET_OPTIONS (9)
======================================================================
= Функция 75, подфункция 10, Get socketpair (Получить парный сокет). =
======================================================================
4219,7 → 4743,59
* eax = socketnum1, -1 для ошибки
* ebx = socketnum2, код ошибки в случае ошибки
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_GET_PAIR (10)
======================================================================
=============== Функция 76, Сетевые опции и статистика. ==============
======================================================================
Параметры:
* eax = 76 - номер функции
* верхняя часть ebx = номер протокола
* bh = номер устройства
* bl = номер подфункции
 
Ethernet (0)
0 - Read MAC
IPv4 (1)
0 - Read # IP packets sent
1 - Read # IP packets received
2 - Read IP
3 - Write IP
4 - Read DNS
5 - Write DNS
6 - Read subnet
7 - Write subnet
8 - Read gateway
9 - Write gateway
ICMP (2)
0 - Read # ICMP packets sent
1 - Read # ICMP packets received
3 - enable/disable ICMP echo reply
 
UDP (3)
0 - Read # UDP packets sent
1 - Read # UDP packets received
 
TCP (4)
0 - Read # TCP packets sent
1 - Read # TCP packets received
ARP (5)
0 - Read # ARP packets sent
1 - Read # ARP packets received
2 - Read # ARP entry's
3 - Read ARP entry
4 - Add static ARP entry
5 - Remove ARP entry (-1 = remove all)
6 - Send ARP announce on specified interface
7 - Read # ARP conflicts (IP address conflicts)
 
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_PROTOCOL (76)
======================================================================
========== Функция -1 - завершить выполнение потока/процесса =========
======================================================================
Параметры:
4234,6 → 4810,8
* Эта функция завершает текущий поток. Другой поток можно прибить
вызовом подфункции 2 функции 18.
 
---------------------- Константы для регистров: ----------------------
eax - SF_TERMINATE_PROCESS (-1)
======================================================================
=========================== Список событий ===========================
======================================================================