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) |
====================================================================== |
=========================== Список событий =========================== |
====================================================================== |