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 (Открыть сокет). ======= |
====================================================================== |
Параметры: |