Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5565 → Rev 5984

/kernel/branches/Kolibri-acpi/docs/sysfuncr.txt
194,39 → 194,41
* Системное время можно установить функцией 22.
 
======================================================================
============== Функция 4 - вывести строку текста в окно. =============
================ Функция 4 - нарисовать строку текста. ===============
======================================================================
Параметры:
* eax = 4 - номер функции
* ebx = [координата по оси x]*65536 + [координата по оси y]
* ecx = 0xXYRRGGBB, где
* ebx = X*65536+Y, координаты в окне или буфере
* ecx = 0xXXRRGGBB, где
* RR, GG, BB задают цвет текста
* X=ABnn (биты):
* nn задает используемый шрифт: 0=системный моноширинный,
1=системный шрифт переменной ширины
* A=0 - выводить esi символов, A=1 - выводить ASCIIZ-строку
* B=1 - закрашивать фон цветом edi
* Y=Cnnn (биты):
* C=1 перенаправить вывод в область пользователя, задано в edi
* nnn - не используется в текущем виде, должно быть 0 (zero)
* XX=ABFFCSSS (биты):
* A=1 - рисуемая строка заканчивается нулём
* B=1 - закрашивать фон (цвет = edi)
* FF задает шрифт и кодировку:
0 = 6x9 cp866
1 = 8x16 cp866
2 = 8x16 UTF-16LE
3 = 8x16 UTF-8
* C=0 - рисовать в окно,
С=1 - рисовать в буфер (edi)
* SSS = (множитель размера)-1, то-есть 0 = x1, 7 = x8
* edx = указатель на начало строки
* esi = для A=0 длина строки, должна быть не больше 255;
для A=1 игнорируется
* edi = цвет для закраски фона, если B=1
* edi = указатель на область пользователя, если C=1
* esi = для A=0 длина строки, для A=1 игнорируется
* edi = если B=1 - цвет для закраски фона,
если C=1 - указатель на буфер
 
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Первый системный шрифт считывается при загрузке из файла char.mt,
второй - из char2.mt.
* Оба шрифта имеют высоту 9 пикселей, ширина моноширинного шрифта
равна 6 пикселей.
* C=1, глубина точки = 32 бита, область пользователя выглядит так:
dword Xsize
dword Ysize
остаток области = Xsize * Y size * 4
* Нельзя одновременно использовать B=1 и C=1, поскольку в обоих
случаях использован регистр edi для разных целей.
* Нельзя одновременно использовать B=1 и C=1,
поскольку в обоих случаях используется регистр edi.
* Если SSS=0, шрифт может сглаживаться,
в зависимости от системной настройки.
* Структура буфера:
Xsize dd
Ysize dd
picture rb Xsize*Ysize*4 ; 32 бита
 
======================================================================
========================= Функция 5 - пауза. =========================
======================================================================
244,38 → 246,6
функции 68.
 
======================================================================
=============== Функция 6 - прочитать файл с рамдиска. ===============
======================================================================
Параметры:
* eax = 6 - номер функции
* ebx = указатель на имя файла
* ecx = номер стартового блока, считая с 1;
ecx=0 - читать с начала файла (то же самое, что и ecx=1)
* edx = число блоков для чтения;
edx=0 - читать один блок (то же самое, что и edx=1)
* esi = указатель на область памяти, куда будут записаны данные
Возвращаемое значение:
* eax = длина файла в байтах, если файл успешно прочитан
* eax = -1, если файл не найден
Замечания:
* Данная функция является устаревшей; функция 70
позволяет выполнять те же действия с расширенными возможностями.
* Блок = 512 байт.
* Для чтения всего файла можно указать заведомо большое значение
в edx, например, edx = -1; но в этом случае будьте готовы к тому,
что программа "упадет", если файл окажется слишком большим
и "не влезет" в память программы.
* Имя файла должно быть либо в формате 8+3 символов
(первые 8 символов - собственно имя, последние 3 - расширение,
короткие имена и расширения дополняются пробелами),
либо в формате 8.3 символов "FILE.EXT"/"FILE.EX "
(имя не более 8 символов, точка, расширение 3 символа,
дополненное при необходимости пробелами).
Имя файла должно быть записано заглавными буквами.
Завершающий символ с кодом 0 не нужен (не ASCIIZ-строка).
* Эта функция не поддерживает папки на рамдиске.
 
======================================================================
=============== Функция 7 - вывести изображение в окно. ==============
======================================================================
Параметры:
1004,20 → 974,22
Возвращаемое значение:
* функция не возвращает значения
 
------------- Подподфункция 2 - получить задержку мыши. --------------
Замечание: рекомендуемая скорость = 1, 0 = заблокировать курсор.
 
------------- Подподфункция 2 - получить ускорение мыши. -------------
Параметры:
* eax = 18 - номер функции
* ebx = 19 - номер подфункции
* ecx = 2 - номер подподфункции
Возвращаемое значение:
* eax = текущая задержка мыши
* eax = 0 - выключить, 1 - слабое, 2 - среднее, 3 - сильное
 
------------ Подподфункция 3 - установить задержку мыши. -------------
------------ Подподфункция 3 - установить ускорение мыши. ------------
Параметры:
* eax = 18 - номер функции
* ebx = 19 - номер подфункции
* ecx = 3 - номер подподфункции
* edx = новое значение задержки мыши
* edx = 0 - выключить, 1 - слабое, 2 - среднее, 3 - сильное
Возвращаемое значение:
* функция не возвращает значения
 
1044,22 → 1016,26
* бит 4 установлен = 5-я кнопка нажата
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Рекомендуемая скорость мыши (в подподфункции 1) от 1 до 9.
Устанавливаемая величина не проверяется кодом ядра, поэтому
используйте осторожно, при некорректном значении курсор может
"замёрзнуть". Скорость мыши можно регулировать в приложении SETUP.
* Рекомендуемая величина задержки (в подподфункции 3) = 10.
Меньшие значения не обрабатываются COM-мышами. При очень больших
значениях невозможно передвижение мыши на 1 пиксель и курсор будет
прыгать на величину установленной скорости (подподфункция 1).
Устанавливаемая величина не проверяется кодом ядра.
Величину задержки можно менять в приложении SETUP.
* Подподфункция 4 не проверяет переданное значение. Перед вызовом
необходимо узнать текущее разрешение экрана (подфункцией 14)
и проверить, что устанавливаемое положение не выходит за пределы
экрана.
 
-------- Подподфункция 6 - получить задержку двойного щелчка. --------
Параметры:
* eax = 18 - номер функции
* ebx = 19 - номер подфункции
* ecx = 6 - номер подподфункции
Возвращаемое значение:
* eax = текущая задержка двойного щелчка (100 = секунда)
 
------- Подподфункция 7 - установить задержку двойного щелчка. -------
Параметры:
* eax = 18 - номер функции
* ebx = 19 - номер подфункции
* ecx = 7 - номер подподфункции
* dl = новое значение задержки двойного щелчка (100 = секунда)
Возвращаемое значение:
* функция не возвращает значения
 
Замечание: настройки мыши можно регулировать в приложении mouse_cfg.
 
======================================================================
====================== Функция 18, подфункция 20 =====================
============= Получить информацию об оперативной памяти. =============
1146,6 → 1122,37
видеорежима, иначе функция ничего не изменит.
 
======================================================================
===================== Функция 18, подфункция 25 ======================
======== Управление положением окна относительно других окон. ========
======================================================================
 
------------- Подподфункция 1 - получить положение ------------------
Параметры:
* eax = 18 - номер функции
* ebx = 25 - номер подфункции
* ecx = 1 - номер подподфункции
* edx = -1(для текущего окна) или PID приложения
Возвращаемое значение:
* eax = одна из констант положения окна
 
------------- Подподфункция 2 - установить положение ----------------
Параметры:
* eax = 18 - номер функции
* ebx = 25 - номер подфункции
* ecx = 2 - номер подподфункции
* edx = -1(для текущего окна) или PID приложения
* esi = новое положение окна (одна из констант ниже)
Возвращаемое значение:
* eax = 0 - неудача
* eax = 1 - успех
 
Константы положения окна относительно других окон:
ZPOS_DESKTOP = -2 - на самом заднем плане
ZPOS_ALWAYS_BACK = -1 - позади всех окон
ZPOS_NORMAL = 0 - обычное
ZPOS_ALWAYS_TOP = 1 - поверх всех окон
 
======================================================================
==================== Функция 20 - интерфейс MIDI. ====================
======================================================================
 
1460,6 → 1467,22
* Системное время можно получить функцией 3.
 
======================================================================
===================== Функция 26, подфункция 10 ======================
========== Получить значение высокоточного счётчика времени. =========
======================================================================
Parameters:
* eax = 26 - номер функции
* ebx = 10 - номер подфункции
Returned value:
* edx:eax = число наносекунд с момента загрузки ядра
* eax = младшее двойное слово
* edx = старшее двойное слово
Remarks:
* функция использует счётчик HPET, если HPET не доступен используется
счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
наносекунд.
 
======================================================================
====================== Функция 26, подфункция 11 =====================
=========== Узнать, разрешён ли низкоуровневый доступ к HD. ==========
======================================================================
1619,19 → 1642,42
и всё равно содержит относительную y-координату,
а к старшему слову следует прибавить 1.
 
----------------- Подфункция 2 - нажатые кнопки мыши -----------------
---------------- Подфункция 2 - состояния кнопок мыши ----------------
Параметры:
* eax = 37 - номер функции
* ebx = 2 - номер подфункции
Возвращаемое значение:
* eax содержит информацию о нажатых кнопках мыши:
* бит 0 установлен = левая кнопка нажата
* бит 1 установлен = правая кнопка нажата
* бит 2 установлен = средняя кнопка нажата
* бит 3 установлен = 4-я кнопка нажата
* бит 4 установлен = 5-я кнопка нажата
* прочие биты сброшены
* eax = биты 0-4 соответствуют подфункции 3
 
----------- Подфункция 3 - состояния и события кнопок мыши -----------
Параметры:
* eax = 37 - номер функции
* ebx = 3 - номер подфункции
Возвращаемое значение:
* eax содержит следующую информацию:
 
состояния:
* бит 0 установлен = удерживается левая кнопка
* бит 1 установлен = удерживается правая кнопка
* бит 2 установлен = удерживается средняя кнопка
* бит 3 установлен = удерживается 4-я кнопка
* бит 4 установлен = удерживается 5-я кнопка
 
события:
* бит 8 установлен = нажата левая кнопка
* бит 9 установлен = нажата правая кнопка
* бит 10 установлен = нажата средняя кнопка
 
* бит 15 установлен = используется вертикальная прокрутка
 
* бит 16 установлен = отпущена левая кнопка
* бит 17 установлен = отпущена правая кнопка
* бит 18 установлен = отпущена средняя кнопка
 
* бит 23 установлен = используется горизонтальная прокрутка
 
* бит 24 установлен = двойной щелчёк левой кнопкой
 
------------------ Подфункция 4 - загрузить курсор -------------------
Параметры:
* eax = 37 - номер функции
2086,6 → 2132,40
default.skn, или динамически с помощью приложения desktop.
 
======================================================================
= Функция 48, подфункция 9 - получить настройку сглаживания шрифтов. =
======================================================================
Параметры:
* eax = 48 - номер функции
* ebx = 9 - номер подфункции
Возвращаемое значение:
* eax = 2 - субпиксельное, 1 - обычное, 0 - выключить
 
======================================================================
===== Функция 48, подфункция 10 - настроить сглаживание шрифтов. =====
======================================================================
Параметры:
* eax = 48 - номер функции
* ebx = 10 - номер подфункции
* cl = 2 - субпиксельное, 1 - обычное, 0 - выключить
 
======================================================================
======== Функция 48, подфункция 11 - получить размер шрифтов. ========
======================================================================
Параметры:
* eax = 48 - номер функции
* ebx = 9 - номер подфункции
Возвращаемое значение:
* eax = текущая высота шрифта в пикселях
 
======================================================================
======= Функция 48, подфункция 12 - установить размер шрифтов. =======
======================================================================
Параметры:
* eax = 48 - номер функции
* ebx = 10 - номер подфункции
* cl = новая высота шрифта в пикселях
 
======================================================================
============ Функция 49 - Advanced Power Management (APM). ===========
======================================================================
Параметры:
3805,9 → 3885,13
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Строка заголовка должна быть в формате ASCIIZ. В заголовке
отображается не более 255 символов независимо от полной длины
строки.
* Строка заголовка должна заканчиваться нулём.
* Можно указать кодировку заголовка,
поместив в начале строки байт со значениями:
1 = cp866
2 = UTF-16LE
3 = UTF-8
иначе будет использоваться cp866.
* Чтобы убрать заголовок, передайте NULL в ecx.
 
======================================================================
3917,6 → 4001,76
* eax = -1 для ошибки
 
======================================================================
===== Функция 74, подфункция 4, Получить указатель на устройство =====
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 4 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = указатель, -1 для ошибки
 
======================================================================
=== Функция 74, подфункция 6, Получить количество посланых пакетов ===
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 6 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
 
======================================================================
=== Функция 74, подфункция 7, Получить количество принятых пакетов ===
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 7 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
 
======================================================================
==== Функция 74, подфункция 8, Получить количество посланых байт. ====
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 8 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
* ebx = старшая часть
 
======================================================================
==== Функция 74, подфункция 9, Получить количество принятых байт. ====
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 9 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = количество с момента старта устройства, -1 для ошибки
* ebx = старшая часть
 
======================================================================
======= Функция 74, подфункция 10, Получить статус соединения. =======
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 10 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = статус соединения, -1 для ошибки
 
Статусы:
0 = нет соединения
1 = неизвестное соединение
4 = 10 Мбит
8 = 100 Мбит
12 = 1 Гбит
10b = флаг полного дуплекса
 
======================================================================
======= Функция 75, подфункция 0, Open socket (Открыть сокет). =======
======================================================================
Параметры: