Kernel updated to 0.7.5.0
git-svn-id: svn://kolibrios.org@1018 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
1 parent
7bfc5040a8
commit
f8317039fb
6 files changed
+350
-472
No files matched your search
@@ -423,13 +423,16 @@ cfgmanager:
|
||||
; otherwise, set [preboot_device] to 1 (default value - boot from floppy)
|
||||
mov byte [di], 1
|
||||
.preboot_device_inited:
|
||||
; following 6 lines set variables to 1 if its current value is 0
|
||||
; following 4 lines set variables to 1 if its current value is 0
|
||||
cmp byte [di+preboot_dma-preboot_device], 1
|
||||
adc byte [di+preboot_dma-preboot_device], 0
|
||||
cmp byte [di+preboot_biosdisk-preboot_device], 1
|
||||
adc byte [di+preboot_biosdisk-preboot_device], 0
|
||||
cmp byte [di+preboot_vrrm-preboot_device], 1
|
||||
adc byte [di+preboot_vrrm-preboot_device], 0
|
||||
; default value for VRR is OFF
|
||||
cmp byte [di+preboot_vrrm-preboot_device], 0
|
||||
jnz @f
|
||||
mov byte [di+preboot_vrrm-preboot_device], 2
|
||||
@@:
|
||||
; notify user
|
||||
_setcursor 5,2
|
||||
|
||||
|
||||
@@ -810,6 +810,8 @@ proc load_driver stdcall, driver_name:dword
|
||||
mov dword [edx+8], 'vers'
|
||||
mov byte [edx+12], '/'
|
||||
mov esi, [driver_name]
|
||||
.redo:
|
||||
lea edx, [file_name]
|
||||
lea edi, [edx+13]
|
||||
mov ecx, 16
|
||||
@@:
|
||||
@@ -926,6 +928,15 @@ proc load_driver stdcall, driver_name:dword
|
||||
jnz .ok
|
||||
|
||||
stdcall kernel_free, [img_base]
|
||||
cmp dword [file_name+13], 'SOUN'
|
||||
jnz @f
|
||||
cmp dword [file_name+17], 'D.ob'
|
||||
jnz @f
|
||||
cmp word [file_name+21], 'j'
|
||||
jnz @f
|
||||
mov esi, aSis
|
||||
jmp .redo
|
||||
@@:
|
||||
xor eax, eax
|
||||
ret
|
||||
.ok:
|
||||
|
||||
@@ -80,6 +80,7 @@ msg_module db 'in module ',0
|
||||
msg_version db 'incompatible driver version',13,10,0
|
||||
msg_www db 'please visit www.kolibrios.org',13,10,0
|
||||
msg_CR db 13,10,0
|
||||
aSis db 'SIS',0
|
||||
|
||||
intel_str db "GenuineIntel",0
|
||||
AMD_str db "AuthenticAMD",0
|
||||
|
||||
+201
-262
@@ -1,4 +1,4 @@
|
||||
СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.7.1.0
|
||||
СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.7.5.0
|
||||
|
||||
Номер функции помещается в регистр eax.
|
||||
Вызов системной функции осуществляется командой "int 0x40".
|
||||
@@ -41,7 +41,7 @@
|
||||
* esi = 0xXYRRGGBB - цвет заголовка
|
||||
* RR, GG, BB определяют сам цвет
|
||||
* Y=0 - обычное окно, Y=1 - неперемещаемое окно
|
||||
* X определяет градиент заголовка: X=0 - нет градиента,
|
||||
* X определяет градиент заголовка: X=0 - нет градиента,
|
||||
X=8 - обычный градиент,
|
||||
для окон типа II X=4 - негативный градиент
|
||||
* прочие значения X и Y зарезервированы
|
||||
@@ -67,7 +67,7 @@
|
||||
координата (или, возможно, обе) считается нулем, а если и это
|
||||
не помогает, то соответствующий размер (или, возможно, оба)
|
||||
устанавливается в размер экрана.
|
||||
|
||||
|
||||
Далее обозначим xpos,ypos,xsize,ysize - значения, передаваемые
|
||||
в ebx,ecx. Координаты приводятся относительно левого верхнего
|
||||
угла окна, который, таким образом, задается как (0,0), координаты
|
||||
@@ -223,9 +223,6 @@
|
||||
требуется передать управление следующему процессу
|
||||
(закончить текущий квант времени), используйте подфункцию 1
|
||||
функции 68.
|
||||
* При текущей реализации произойдет немедленный возврат из функции,
|
||||
если сложение ebx с текущим значением счетчика времени вызовет
|
||||
32-битное переполнение.
|
||||
|
||||
======================================================================
|
||||
=============== Функция 6 - прочитать файл с рамдиска. ===============
|
||||
@@ -621,16 +618,22 @@
|
||||
* eax = 17 - номер функции
|
||||
Возвращаемое значение:
|
||||
* если буфер пуст, возвращается eax=1
|
||||
* если буфер не пуст, тогда возвращается: старшие 24 бита eax
|
||||
содержат идентификатор кнопки (в частности, в ah оказывается
|
||||
младший байт идентификатора; если все кнопки имеют идентификатор,
|
||||
меньший 256, то для различения достаточно ah),
|
||||
а в al возвращается 0 - если использовалась левая кнопка мыши, или бит той кнопки мыши, которая использовалась.
|
||||
* если буфер непуст:
|
||||
* старшие 24 бита eax содержат идентификатор кнопки
|
||||
(в частности, в ah оказывается младший байт идентификатора;
|
||||
если все кнопки имеют идентификатор, меньший 256,
|
||||
то для различения достаточно ah)
|
||||
* al = 0 - кнопка была нажата левой кнопкой мыши
|
||||
* al = бит, соответствующий нажавшей кнопке мыши, если не левой
|
||||
Замечания:
|
||||
* "Буфер" хранит только одну кнопку, при нажатии новой кнопки
|
||||
информация о старой теряется.
|
||||
* При вызове этой функции приложением с неактивным окном
|
||||
возвращается ответ "буфер пуст".
|
||||
* Возвращаемое значение al соответствует состоянию кнопок мыши
|
||||
в формате подфункции 2 функции 37 в момент начала нажатия
|
||||
на кнопку, за исключением младшего бита (соответствующего левой
|
||||
кнопке мыши), который сбрасывается.
|
||||
|
||||
======================================================================
|
||||
==== Функция 18, подфункция 2 - завершить процесс/поток по слоту. ====
|
||||
@@ -662,7 +665,7 @@
|
||||
* Узнать, какое окно является активным, можно вызовом подфункции 7.
|
||||
|
||||
======================================================================
|
||||
Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
|
||||
Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
|
||||
======================================================================
|
||||
Под пустыми тактами понимается время, в которое процессор простаивает
|
||||
в ожидании прерывания (в инструкции hlt).
|
||||
@@ -683,7 +686,7 @@
|
||||
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
|
||||
|
||||
======================================================================
|
||||
Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
|
||||
Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 18 - номер функции
|
||||
@@ -735,7 +738,7 @@
|
||||
* функция не возвращает значения
|
||||
|
||||
======================================================================
|
||||
======= Функция 18, подфункция 9 - завершение работы системы ========
|
||||
= Функция 18, подфункция 9 - завершение работы системы с параметром. =
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 18 - номер функции
|
||||
@@ -750,8 +753,7 @@
|
||||
Замечания:
|
||||
* Не следует полагаться на возвращаемое значение при неверном
|
||||
вызове, оно может измениться в последующих версиях ядра.
|
||||
* Можно использовать подфункцию 1, чтобы на последнем шаге
|
||||
завершения работы пользователь сам решал, что ему нужно.
|
||||
|
||||
======================================================================
|
||||
======== Функция 18, подфункция 10 - свернуть окно приложения. =======
|
||||
======================================================================
|
||||
@@ -764,7 +766,7 @@
|
||||
Замечания:
|
||||
* Минимизированное окно с точки зрения функции 9 сохраняет положение
|
||||
и размеры.
|
||||
* Восстановление окна приложения происходит при активизировании
|
||||
* Восстановление окна приложения происходит при активизировании
|
||||
подфункцией 3.
|
||||
* Обычно нет необходимости явно сворачивать/разворачивать своё окно:
|
||||
сворачивание окна осуществляется системой при нажатии на кнопку
|
||||
@@ -1027,7 +1029,7 @@ dd 638
|
||||
* иначе eax = номер слота
|
||||
|
||||
======================================================================
|
||||
Функция 18, подфункция 22 - операции с окном другого процесса/потока.
|
||||
Функция 18, подфункция 22 - операции с окном другого процесса/потока.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 18 - номер функции
|
||||
@@ -1064,7 +1066,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* eax = 1 - не определён базовый порт
|
||||
Замечания:
|
||||
* Предварительно должен быть определён базовый порт вызовом
|
||||
* Предварительно должен быть определён базовый порт вызовом
|
||||
подфункции 1 функции 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1080,7 +1082,7 @@ dd 638
|
||||
Замечания:
|
||||
* Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.
|
||||
* Установка базы нужна для работы функции 20.
|
||||
* Получить установленный базовый порт можно вызовом
|
||||
* Получить установленный базовый порт можно вызовом
|
||||
подфункции 1 функции 26.
|
||||
|
||||
======================================================================
|
||||
@@ -1110,7 +1112,7 @@ dd 638
|
||||
нормальная раскладка, после чего из кода вычитается 0x60;
|
||||
если не нажата ни одна из управляющих клавиш, то используется
|
||||
нормальная раскладка.
|
||||
* Получить раскладки и идентификатор страны можно с помощью
|
||||
* Получить раскладки и идентификатор страны можно с помощью
|
||||
подфункции 2 функции 26.
|
||||
* Идентификатор страны - глобальная системная переменная, которая
|
||||
самим ядром не используется; однако приложение @panel отображает
|
||||
@@ -1128,14 +1130,9 @@ dd 638
|
||||
* eax = 0
|
||||
Замечания:
|
||||
* База CD используется функцией 24.
|
||||
* Получить установленную базу CD можно вызовом
|
||||
* Получить установленную базу CD можно вызовом
|
||||
подфункции 3 функции 26.
|
||||
|
||||
======================================================================
|
||||
== Функция 21, подфункция 4 - установить базовый порт Sound Blaster. =
|
||||
======================================================================
|
||||
Удалена
|
||||
|
||||
======================================================================
|
||||
========= Функция 21, подфункция 5 - установить язык системы. ========
|
||||
======================================================================
|
||||
@@ -1171,7 +1168,7 @@ dd 638
|
||||
* Не следует изменять базу, когда какое-нибудь приложение работает
|
||||
с жёстким диском. Если не хотите глюков системы.
|
||||
* Получить установленную базу можно вызовом подфункции 7 функции 26.
|
||||
* Следует также определить используемый раздел жёсткого диска
|
||||
* Следует также определить используемый раздел жёсткого диска
|
||||
подфункцией 8.
|
||||
|
||||
======================================================================
|
||||
@@ -1194,16 +1191,11 @@ dd 638
|
||||
* Получить установленный раздел можно вызовом подфункции 8
|
||||
функции 26.
|
||||
* Проверок на корректность не делается.
|
||||
* Узнать число разделов на жёстком диске можно вызовом
|
||||
* Узнать число разделов на жёстком диске можно вызовом
|
||||
подфункции 11 функции 18.
|
||||
* Следует также определить используемую базу жёсткого диска
|
||||
* Следует также определить используемую базу жёсткого диска
|
||||
подфункцией 7.
|
||||
|
||||
======================================================================
|
||||
===== Функция 21, подфункция 10 - установить канал DMA для звука. ====
|
||||
======================================================================
|
||||
Удалена:
|
||||
|
||||
======================================================================
|
||||
====================== Функция 21, подфункция 11 =====================
|
||||
=========== Разрешить/запретить низкоуровневый доступ к HD. ==========
|
||||
@@ -1287,13 +1279,13 @@ dd 638
|
||||
* ebx = частота вертикальной развёртки (в Гц)
|
||||
* ecx = номер текущего видеорежима
|
||||
Замечания:
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
функции драйвера 1.
|
||||
* Если нужны только размеры экрана, целесообразней использовать
|
||||
функцию 14 с учётом того, что она возвращает размеры на 1 меньше.
|
||||
|
||||
======================================================================
|
||||
= Функция 21, подфункция 13, подподфункция 3 - установить видеорежим.
|
||||
= Функция 21, подфункция 13, подподфункция 3 - установить видеорежим.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 21 - номер функции
|
||||
@@ -1306,7 +1298,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* ebx, ecx разрушаются
|
||||
Замечания:
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
функции драйвера 1.
|
||||
* Номер видеорежима и частота должны быть в таблице, возвращаемой
|
||||
функцией драйвера 1.
|
||||
@@ -1325,7 +1317,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* ebx, ecx разрушаются
|
||||
Замечания:
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
функции драйвера 1.
|
||||
|
||||
======================================================================
|
||||
@@ -1345,7 +1337,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* ebx, ecx разрушаются
|
||||
Замечания:
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
* Драйвер предварительно должен быть инициализирован вызовом
|
||||
функции драйвера 1.
|
||||
* Функция влияет только на физический размер изображения
|
||||
на мониторе; логический размер (число пикселей) не меняется.
|
||||
@@ -1426,7 +1418,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* eax = 1 - не определена база CD
|
||||
Замечания:
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
подфункции 3 функции 21.
|
||||
* В секунде 75 фреймов, в минуте 60 секунд.
|
||||
* Функция асинхронна (возвращает управление, когда началось
|
||||
@@ -1447,7 +1439,7 @@ dd 638
|
||||
* Формат таблицы с информацией о дорожках такой же, как и для
|
||||
ATAPI-CD команды 43h (READ TOC), обычной таблицы (подкоманда 00h).
|
||||
Адреса возвращаются в формате MSF.
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
подфункции 3 функции 21.
|
||||
* Функция возвращает информацию только о не более чем 100
|
||||
первых дорожках. В большинстве случаев этого достаточно.
|
||||
@@ -1462,7 +1454,7 @@ dd 638
|
||||
* eax = 0 - успешно
|
||||
* eax = 1 - не определена база CD
|
||||
Замечания:
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
* Предварительно нужно определить базовый порт CD вызовом
|
||||
подфункции 3 функции 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1497,11 +1489,6 @@ dd 638
|
||||
* Функция поддерживается только для ATAPI-устройств (CD и DVD).
|
||||
* Примером использования функции является приложение CD_tray.
|
||||
|
||||
======================================================================
|
||||
============== Функция 25 - установить громкость SBPro. ==============
|
||||
======================================================================
|
||||
Удалена
|
||||
|
||||
======================================================================
|
||||
===== Функция 26, подфункция 1 - получить базовый порт MPU MIDI. =====
|
||||
======================================================================
|
||||
@@ -1511,7 +1498,7 @@ dd 638
|
||||
Возвращаемое значение:
|
||||
* eax = номер порта
|
||||
Замечания:
|
||||
* Установить базовый порт можно вызовом
|
||||
* Установить базовый порт можно вызовом
|
||||
подфункции 1 функции 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1544,7 +1531,7 @@ dd 638
|
||||
нормальная раскладка, после чего из кода вычитается 0x60;
|
||||
если не нажата ни одна из управляющих клавиш, то используется
|
||||
нормальная раскладка.
|
||||
* Установить раскладки и идентификатор страны можно с помощью
|
||||
* Установить раскладки и идентификатор страны можно с помощью
|
||||
подфункции 2 функции 21.
|
||||
* Идентификатор страны - глобальная системная переменная, которая
|
||||
самим ядром не используется; однако приложение @panel отображает
|
||||
@@ -1564,11 +1551,6 @@ dd 638
|
||||
* База CD используется функцией 24.
|
||||
* Установить базу CD можно вызовом подфункции 3 функции 21.
|
||||
|
||||
======================================================================
|
||||
=== Функция 26, подфункция 4 - получить базовый порт Sound Blaster. ==
|
||||
======================================================================
|
||||
Удалена
|
||||
|
||||
======================================================================
|
||||
========== Функция 26, подфункция 5 - получить язык системы. =========
|
||||
======================================================================
|
||||
@@ -1633,11 +1615,6 @@ dd 638
|
||||
497 суток.
|
||||
* Системное время можно получить функцией 3.
|
||||
|
||||
======================================================================
|
||||
====== Функция 26, подфункция 10 - получить канал DMA для звука. =====
|
||||
======================================================================
|
||||
Удалена
|
||||
|
||||
======================================================================
|
||||
====================== Функция 26, подфункция 11 =====================
|
||||
=========== Узнать, разрешён ли низкоуровневый доступ к HD. ==========
|
||||
@@ -1649,7 +1626,7 @@ dd 638
|
||||
* eax = 0/1 - запрещён/разрешён
|
||||
Замечания:
|
||||
* Используется при LBA-чтении (подфункция 8 функции 58).
|
||||
* Установить текущее состояние можно вызовом
|
||||
* Установить текущее состояние можно вызовом
|
||||
подфункции 11 функции 21.
|
||||
|
||||
======================================================================
|
||||
@@ -1664,14 +1641,9 @@ dd 638
|
||||
Замечания:
|
||||
* Используется при работе с шиной PCI (функция 62).
|
||||
* Текущая реализация использует только младший бит ecx.
|
||||
* Установить текущее состояние можно вызовом
|
||||
* Установить текущее состояние можно вызовом
|
||||
подфункции 12 функции 21.
|
||||
|
||||
======================================================================
|
||||
=============== Функция 28 - установить громкость SB16. ==============
|
||||
======================================================================
|
||||
Удалена
|
||||
|
||||
======================================================================
|
||||
================ Функция 29 - получить системную дату. ===============
|
||||
======================================================================
|
||||
@@ -1711,6 +1683,56 @@ dd 638
|
||||
копируются только первые (edx-1) байт
|
||||
и в конце ставится завершающий 0.
|
||||
|
||||
======================================================================
|
||||
================ Функция 32 - удалить файл с рамдиска. ===============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 32 - номер функции
|
||||
* ebx = указатель на имя файла
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно; иначе код ошибки файловой системы
|
||||
Замечания:
|
||||
* Эта функция устарела; функция 58 позволяет выполнять
|
||||
те же действия с расширенными возможностями.
|
||||
* Текущая реализация возвращает только значения 0(успех) и
|
||||
5(файл не найден).
|
||||
* Имя файла должно быть либо в формате 8+3 символов (первые
|
||||
8 символов - собственно имя, последние 3 - расширение,
|
||||
короткие имена и расширения дополняются пробелами),
|
||||
либо в формате 8.3 символов "FILE.EXT"/"FILE.EX "
|
||||
(имя не более 8 символов, точка, расширение 3 символа,
|
||||
дополненное при необходимости пробелами).
|
||||
Имя файла должно быть записано заглавными буквами.
|
||||
Завершающий символ с кодом 0 не нужен (не ASCIIZ-строка).
|
||||
* Эта функция не поддерживает папок на рамдиске.
|
||||
|
||||
======================================================================
|
||||
=============== Функция 33 - записать файл на рамдиск. ===============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 33 - номер функции
|
||||
* ebx = указатель на имя файла
|
||||
* ecx = указатель на данные для записи
|
||||
* edx = число байт для записи
|
||||
* следует устанавливать esi=0
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно, иначе код ошибки файловой системы
|
||||
Замечания:
|
||||
* Эта функция устарела; функция 70 позволяет выполнять
|
||||
те же действия с расширенными возможностями.
|
||||
* Если указать ненулевое значение в esi и на рамдиске уже есть
|
||||
указанный файл, то будет создан ещё один файл с тем же именем.
|
||||
* В противном случае файл перезаписывается.
|
||||
* Имя файла должно быть либо в формате 8+3 символов
|
||||
(первые 8 символов - собственно имя, последние 3 - расширение,
|
||||
короткие имена и расширения дополняются пробелами),
|
||||
либо в формате 8.3 символов "FILE.EXT"/"FILE.EX "
|
||||
(имя не более 8 символов, точка, расширение 3 символа,
|
||||
дополненное при необходимости пробелами).
|
||||
Имя файла должно быть записано заглавными буквами.
|
||||
Завершающий символ с кодом 0 не нужен (не ASCIIZ-строка).
|
||||
* Эта функция не поддерживает папок на рамдиске.
|
||||
|
||||
======================================================================
|
||||
============ Функция 35 - прочитать цвет точки на экране. ============
|
||||
======================================================================
|
||||
@@ -1729,19 +1751,19 @@ dd 638
|
||||
можно получить функцией 61.
|
||||
|
||||
======================================================================
|
||||
=============== Функция 36 - прочитать область экрана. ==============
|
||||
=============== Функция 36 - прочитать область экрана. ===============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 36 - номер функции
|
||||
* ebx = указатель на предварительно выделенную область памяти,
|
||||
куда будет помещено изображение в формате BBGGRRBBGGRR...
|
||||
куда будет помещено изображение в формате BBGGRRBBGGRR...
|
||||
* ecx = [размер по оси x]*65536 + [размер по оси y]
|
||||
* edx = [координата по оси x]*65536 + [координата по оси y]
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Координаты изображения - это координаты верхнего левого угла
|
||||
изображения относительно экрана.
|
||||
* Координаты области - это координаты верхнего левого угла
|
||||
области относительно экрана.
|
||||
* Размер изображения в байтах есть 3*xsize*ysize.
|
||||
|
||||
======================================================================
|
||||
@@ -1870,7 +1892,7 @@ dd 638
|
||||
Возвращаемое значение:
|
||||
* eax = [ширина]*65536 + [высота]
|
||||
Замечания:
|
||||
* Есть парная команда установки размеров фонового изображения -
|
||||
* Есть парная команда установки размеров фонового изображения -
|
||||
подфункция 1 функции 15. После которой, разумеется, следует
|
||||
заново определить само изображение.
|
||||
|
||||
@@ -1889,7 +1911,7 @@ dd 638
|
||||
* Не следует полагаться на возвращаемое значение в случае неверного
|
||||
смещения, оно может измениться в следующих версиях ядра.
|
||||
* Смещение точки с координатами (x,y) вычисляется как (x+y*xsize)*3.
|
||||
* Есть парная функция установки точки на фоновом изображении -
|
||||
* Есть парная функция установки точки на фоновом изображении -
|
||||
подфункция 2 функции 15.
|
||||
|
||||
======================================================================
|
||||
@@ -1902,7 +1924,7 @@ dd 638
|
||||
* eax = 1 - замостить
|
||||
* eax = 2 - растянуть
|
||||
Замечания:
|
||||
* Есть парная функция установки режима отрисовки фона -
|
||||
* Есть парная функция установки режима отрисовки фона -
|
||||
подфункция 4 функции 15.
|
||||
|
||||
======================================================================
|
||||
@@ -1937,43 +1959,35 @@ dd 638
|
||||
* eax = -1 для некорректного ebx
|
||||
|
||||
======================================================================
|
||||
========== Функция 42 - работа с данными, полученными по IRQ. =======
|
||||
========= Функция 42 - работа с данными, полученными по IRQ. =========
|
||||
======================================================================
|
||||
|
||||
------------------------ Чтение данных -------------------------------
|
||||
При возникновении IRQ система может считывать данные из указанных
|
||||
ранее функцией 44 портов и записывать эти данные в буфер.
|
||||
Описываемая функция считывает данные из этого буфера в буфер
|
||||
указанный в качестве параметра.
|
||||
|
||||
-------------------- Подфункция 0 - чтение данных --------------------
|
||||
Параметры:
|
||||
* eax = 42 - номер функции
|
||||
* bl = номер IRQ, 0..15
|
||||
* bh = номер подфункции, 0
|
||||
Остальная часть регистра ebx должна быть обнулена.
|
||||
* ecx = указатель на буфер, куда будут приниматься данные
|
||||
* bl = номер IRQ, 0..15
|
||||
* bh = 0 - номер подфункции
|
||||
* остальная часть регистра ebx должна быть обнулена
|
||||
* ecx = указатель на буфер размером не менее 4000 байт
|
||||
Возвращаемое значение: (ситуацию можно различить по значению eax)
|
||||
* если поток не является владельцем IRQ
|
||||
(или номер IRQ задан неверно):
|
||||
* eax = -1
|
||||
* если данных нет:
|
||||
* eax = 0
|
||||
(или номер IRQ задан неверно): eax = -1
|
||||
* если данных нет: eax = 0
|
||||
* если всё в порядке и данные были:
|
||||
* eax = размер данных, прочитанных из буфера (в байтах)
|
||||
eax = размер данных, прочитанных из буфера (в байтах)
|
||||
|
||||
Смотрите замечания ниже.
|
||||
|
||||
------------------------ Узнать размер данных в буфере ---------------
|
||||
------------ Подфункция 1 - узнать размер данных в буфере ------------
|
||||
Параметры:
|
||||
* eax = 42 - номер функции
|
||||
* bl = номер IRQ, 0..15
|
||||
* bh = номер подфункции, 1
|
||||
Остальная часть регистра ebx должна быть обнулена.
|
||||
Возвращаемое значение: (ситуацию можно различить по значению eax)
|
||||
* bl = номер IRQ, 0..15
|
||||
* bh = 1 - номер подфункции
|
||||
* остальная часть регистра ebx должна быть обнулена
|
||||
Возвращаемое значение:
|
||||
* если поток не является владельцем IRQ
|
||||
(или номер IRQ задан неверно):
|
||||
* eax = -1
|
||||
* если всё в порядке, в eax размер данных
|
||||
|
||||
(или номер IRQ задан неверно): eax = -1
|
||||
* иначе eax = размер данных в буфере
|
||||
Замечания:
|
||||
* Предварительно поток должен зарезервировать для себя указанный IRQ
|
||||
функцией 45.
|
||||
@@ -2053,7 +2067,7 @@ dd 638
|
||||
все зарезервированные им IRQ.
|
||||
|
||||
======================================================================
|
||||
= Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
|
||||
= Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
|
||||
======================================================================
|
||||
К зарезервированным портам можно обращаться напрямую из приложения
|
||||
командами in/out (рекомендуемый способ) и вызовом функции 43
|
||||
@@ -2148,7 +2162,7 @@ dd 638
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* После вызова описываемой функции следует перерисовать экран
|
||||
* После вызова описываемой функции следует перерисовать экран
|
||||
подфункцией 0.
|
||||
* Тип кнопок влияет только на их прорисовку функцией 8.
|
||||
|
||||
@@ -2165,7 +2179,7 @@ dd 638
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* После вызова описываемой функции следует перерисовать экран
|
||||
* После вызова описываемой функции следует перерисовать экран
|
||||
подфункцией 0.
|
||||
* Таблица стандартных цветов влияет только на приложения,
|
||||
которые эту таблицу явным образом получают (подфункцией 3) и
|
||||
@@ -2204,11 +2218,11 @@ dword-
|
||||
Замечания:
|
||||
* Структура таблицы цветов описана в стандартном включаемом файле
|
||||
macros.inc под названием system_colors; например, можно писать:
|
||||
sc system_colors ; объявление переменной
|
||||
... ; где-то надо вызвать
|
||||
; описываемую функцию с ecx=sc
|
||||
mov ecx, [sc.work_button_text] ; читаем цвет текста
|
||||
; на кнопке в рабочей области
|
||||
sc system_colors ; объявление переменной
|
||||
... ; где-то надо вызвать
|
||||
; описываемую функцию с ecx=sc
|
||||
mov ecx, [sc.work_button_text] ; читаем цвет текста
|
||||
; на кнопке в рабочей области
|
||||
* Использование/неиспользование этих цветов - дело исключительно
|
||||
самой программы. Для использования нужно просто при вызове функций
|
||||
рисования указывать цвет, взятый из этой таблицы.
|
||||
@@ -2279,7 +2293,7 @@ dword-
|
||||
Аналогично по оси y.
|
||||
* Смотри также функцию 14,
|
||||
позволяющую определить размеры всего экрана.
|
||||
* Есть парная функция получения рабочей области -
|
||||
* Есть парная функция получения рабочей области -
|
||||
подфункция 5.
|
||||
* Эта функция автоматически перерисовывает экран, по ходу дела
|
||||
обновляет координаты и размеры максимизированных окон.
|
||||
@@ -2403,7 +2417,7 @@ dword-
|
||||
* иначе eax = TID - идентификатор потока
|
||||
|
||||
======================================================================
|
||||
= Функция 52, подфункция 0 - получить конфигурацию сетевого драйвера.
|
||||
= Функция 52, подфункция 0 - получить конфигурацию сетевого драйвера.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 52 - номер функции
|
||||
@@ -2428,7 +2442,7 @@ dword-
|
||||
* Локальный IP-адрес устанавливается подфункцией 3.
|
||||
|
||||
======================================================================
|
||||
Функция 52, подфункция 2 - установить конфигурацию сетевого драйвера.
|
||||
Функция 52, подфункция 2 - установить конфигурацию сетевого драйвера.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 52 - номер функции
|
||||
@@ -2597,9 +2611,6 @@ dword-
|
||||
* Текущая реализация не закрывает автоматически все сокеты потока
|
||||
при его завершении. В частности, не следует прибивать поток
|
||||
с кучей открытых сокетов - будет утечка ресурсов.
|
||||
* Текущая реализация не делает проверок на корректность
|
||||
(единственное, на что возвращается ошибка, - попытка закрыть
|
||||
неоткрытый сокет с корректным хэндлом).
|
||||
|
||||
======================================================================
|
||||
============== Функция 53, подфункция 2 - опрос сокета. ==============
|
||||
@@ -2609,10 +2620,8 @@ dword-
|
||||
* ebx = 2 - номер подфункции
|
||||
* ecx = хэндл сокета
|
||||
Возвращаемое значение:
|
||||
* eax = число полученных байт
|
||||
* eax = число полученных байт, 0 для неверного хэндла
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Проверки корректности не делается.
|
||||
|
||||
======================================================================
|
||||
======== Функция 53, подфункция 3 - прочитать байт из сокета. ========
|
||||
@@ -2622,12 +2631,10 @@ dword-
|
||||
* ebx = 3 - номер подфункции
|
||||
* ecx = хэндл сокета
|
||||
Возвращаемое значение:
|
||||
* если нет принятых данных: eax=0, bl=0,
|
||||
прочие байты ebx разрушаются
|
||||
* если нет принятых данных или указан неверный хэндл:
|
||||
eax=0, bl=0, прочие байты ebx разрушаются
|
||||
* если были принятые данные: eax=число оставшихся байт
|
||||
(возможно, 0), bl=прочитанный байт, прочие байты ebx разрушаются
|
||||
Замечания:
|
||||
* Проверки корректности не производится.
|
||||
|
||||
======================================================================
|
||||
========== Функция 53, подфункция 4 - записать в UDP-сокет. ==========
|
||||
@@ -2639,13 +2646,10 @@ dword-
|
||||
* edx = число байт для записи
|
||||
* esi = указатель на данные для записи
|
||||
Возвращаемое значение:
|
||||
* eax = 0xffffffff - неверный хэндл
|
||||
* eax = 0xffff - недостаточно памяти
|
||||
* eax = 0xffffffff - ошибка (неверный хэндл или недостаточно памяти)
|
||||
* eax = 0 - успешно
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Проверка на правильность хэндла минимальна - исключаются только
|
||||
не очень неправильные неоткрытые хэндлы.
|
||||
* Число байт для записи не может превышать 1500-28, хотя
|
||||
соответствующей проверки не делается.
|
||||
|
||||
@@ -2673,7 +2677,7 @@ dword-
|
||||
* ebx = 6 - номер подфункции
|
||||
* ecx = хэндл сокета
|
||||
Возвращаемое значение:
|
||||
* eax = статус сокета: одно из
|
||||
* eax = 0 для неверного сокета или статус: одно из
|
||||
* TCB_LISTEN = 1
|
||||
* TCB_SYN_SENT = 2
|
||||
* TCB_SYN_RECEIVED = 3
|
||||
@@ -2686,8 +2690,6 @@ dword-
|
||||
* TCB_TIME_WAIT = 10
|
||||
* TCB_CLOSED = 11
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Проверок корректности не производится.
|
||||
|
||||
======================================================================
|
||||
========== Функция 53, подфункция 7 - записать в TCP-сокет. ==========
|
||||
@@ -2699,13 +2701,10 @@ dword-
|
||||
* edx = число байт для записи
|
||||
* esi = указатель на данные для записи
|
||||
Возвращаемое значение:
|
||||
* eax = 0xffffffff - ошибка
|
||||
* eax = 0xffff - недостаточно памяти
|
||||
* eax = 0xffffffff - ошибка (неверный хэндл или недостаточно памяти)
|
||||
* eax = 0 - успешно
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Проверка на правильность хэндла минимальна - исключаются только
|
||||
не очень неправильные неоткрытые хэндлы.
|
||||
* Число байт для записи не может превышать 1500-40,
|
||||
хотя соответствующей проверки не делается.
|
||||
|
||||
@@ -2717,19 +2716,14 @@ dword-
|
||||
* ebx = 8 - номер подфункции
|
||||
* ecx = хэндл сокета
|
||||
Возвращаемое значение:
|
||||
* eax = -1 - неверный хэндл
|
||||
* eax = 0xffff - недостаточно памяти для пакета закрытия сокета
|
||||
* eax = -1 - ошибка (неверный хэндл или
|
||||
недостаточно памяти для пакета закрытия сокета)
|
||||
* eax = 0 - успешно
|
||||
* во многих случаях eax разрушается (возвращается результат функции
|
||||
queue) - видимо, это баг, который будет исправлен
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Текущая реализация не закрывает автоматически все сокеты потока
|
||||
при его завершении. В частности, не следует прибивать поток
|
||||
с кучей открытых сокетов - будет утечка ресурсов.
|
||||
* Текущая реализация не делает проверок на корректность
|
||||
(единственное, на что возвращается ошибка, - попытка закрыть
|
||||
неоткрытый сокет с корректным хэндлом).
|
||||
|
||||
======================================================================
|
||||
== Функция 53, подфункция 9 - проверить, свободен ли локальный порт. =
|
||||
@@ -2770,13 +2764,11 @@ dword-
|
||||
* esi = число байт для чтения;
|
||||
* esi = 0 - читать все данные (максимум 4096 байт)
|
||||
Возвращаемое значение:
|
||||
* eax = число прочитанных байт
|
||||
* eax = число прочитанных байт (0 при неверном хэндле)
|
||||
* ebx разрушается
|
||||
Замечания:
|
||||
* Проверки на правильность хэндла не делается.
|
||||
|
||||
======================================================================
|
||||
Функция 53, подфункция 255 - отладочная информация сетевого драйвера.
|
||||
Функция 53, подфункция 255 - отладочная информация сетевого драйвера.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 53 - номер функции
|
||||
@@ -2807,59 +2799,6 @@ dword-
|
||||
* 6: статус драйвера пакетов, 0=неактивен,
|
||||
ненулевое значение=активен
|
||||
|
||||
======================================================================
|
||||
======== Функция 55, подфункция 0 - загрузить данные для SB16. =======
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 55 - номер функции
|
||||
* ebx = 0 - номер подфункции
|
||||
* ecx = указатель на данные (копируется 64 килобайта, используется
|
||||
столько, сколько установлено подфункцией 2)
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Формат и размер данных устанавливаются подфункцией 2.
|
||||
|
||||
======================================================================
|
||||
==== Функция 55, подфункция 1 - начать проигрывать данные на SB16. ===
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 55 - номер функции
|
||||
* ebx = 1 - номер подфункции
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Предварительно данные должны быть загружены подфункцией 0 и
|
||||
определён их формат подфункцией 2.
|
||||
* Функция возвращает управление, когда началось проигрывание данных;
|
||||
после этого проигрывание идёт независимо от приложения (и вообще
|
||||
не требует загрузки процессора).
|
||||
* Предварительно должны быть определены базовый порт SB16
|
||||
(подфункцией 4 функции 21) и канал DMA
|
||||
(подфункцией 10 функции 21).
|
||||
|
||||
======================================================================
|
||||
====== Функция 55, подфункция 2 - установить формат данных SB16. =====
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 55 - номер функции
|
||||
* ebx = 2 - номер подфункции
|
||||
* ecx = 0 - установить разрядность
|
||||
* edx = 1 - 8бит моно
|
||||
* edx = 2 - 8бит стерео
|
||||
* ecx = 1 - установить размер данных
|
||||
* edx = размер в байтах
|
||||
* ecx = 2 - установить частоту проигрывания
|
||||
* edx = частота
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* При загрузке системы устанавливаются следующие параметры
|
||||
по умолчанию: разрядность - 8 бит моно, размер - 64 Кб,
|
||||
частота 44100 Гц. Тем не менее рекомендуется явно устанавливать
|
||||
необходимые значения, поскольку они могли быть переустановлены
|
||||
какой-нибудь программой.
|
||||
|
||||
======================================================================
|
||||
====================== Функция 55, подфункция 55 =====================
|
||||
========== Начать проигрывать данные на встроенном спикере. ==========
|
||||
@@ -3071,8 +3010,8 @@ dword-
|
||||
* Размер блока - 512 байт; читается один блок.
|
||||
* Не следует полагаться на возвращаемое значение,
|
||||
оно может измениться в следующих версиях.
|
||||
* Требуется, чтобы был разрешён LBA-доступ к устройствам
|
||||
подфункцией 11 функции 21. Узнать это можно вызовом
|
||||
* Требуется, чтобы был разрешён LBA-доступ к устройствам
|
||||
подфункцией 11 функции 21. Узнать это можно вызовом
|
||||
подфункцией 11 функции 26.
|
||||
* LBA-чтение дискеты не поддерживается.
|
||||
* Функция считывает данные физического жёсткого диска;
|
||||
@@ -3086,7 +3025,7 @@ dword-
|
||||
это будет считаться успехом (eax=0).
|
||||
|
||||
======================================================================
|
||||
= Функция 58, подфункция 15 - получить информацию о файловой системе.
|
||||
= Функция 58, подфункция 15 - получить информацию о файловой системе.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 58 - номер функции
|
||||
@@ -3183,10 +3122,10 @@ IPC
|
||||
Программе доступны данные графического экрана (область памяти, которая
|
||||
собственно и отображает содержимое экрана) напрямую без вызовов
|
||||
системных функций через селектор gs:
|
||||
mov eax, [gs:0]
|
||||
mov eax, [gs:0]
|
||||
поместит в eax первый dword буфера, содержащий информацию о цвете
|
||||
левой верхней точки (и, возможно, цвета нескольких следующих).
|
||||
mov [gs:0], eax
|
||||
mov [gs:0], eax
|
||||
при работе в режимах VESA c LFB
|
||||
установит цвет левой верхней точки
|
||||
(и возможно, цвета нескольких следующих).
|
||||
@@ -3418,7 +3357,7 @@ IPC
|
||||
* ebx = указатель на изображение
|
||||
* ecx = [размер по оси x]*65536 + [размер по оси y]
|
||||
* edx = [координата по оси x]*65536 + [координата по оси y]
|
||||
* esi = число бит на пиксель, должно быть 1, 4, 8, 15, 16, 24 или 32
|
||||
* esi = число бит на пиксель, должно быть 1,2,4,8,15,16,24 или 32
|
||||
* edi = указатель на палитру (2 в степени esi цветов 0x00RRGGBB);
|
||||
игнорируется при esi > 8
|
||||
* ebp = смещение данных каждой следующей строки изображения
|
||||
@@ -3428,27 +3367,28 @@ IPC
|
||||
Замечания:
|
||||
* Координаты изображения - это координаты верхнего левого угла
|
||||
изображения относительно окна.
|
||||
* Размер изображения в байтах есть xsize*ysize.
|
||||
* Формат изображения с 1 битом на пиксель: каждый байт изображения,
|
||||
за исключением, быть может, последних байтов строк, содержит
|
||||
информацию о цвете 8 пикселей, старший бит соответствует первому
|
||||
пикселю.
|
||||
* Формат изображения с 2 битами на пиксель: каждый байт изображения,
|
||||
за исключением, быть может, последних байтов строк, содержит
|
||||
информацию о цвете 4 пикселей, старшие два бита соответствуют
|
||||
первому пикселю.
|
||||
* Формат изображения с 4 битами на пиксель: каждый байт изображения,
|
||||
за исключением последних байтов строк (если ширина изображения
|
||||
нечётна), содержит информацию о цвете 2 пикселей, старшая тетрада
|
||||
соответствует первому пикселю.
|
||||
* Формат изображения с 8 битами на пиксель: каждый байт изображения
|
||||
рассматривается как индекс в палитре.
|
||||
* Если изображение использует не все 256 цветов, а меньше,
|
||||
размер палитры может быть меньше 256.
|
||||
* Формат изображения с 15 битами на пиксель: цвет каждого пикселя
|
||||
кодируется как (в битовом представлении) 0RRRRRGGGGGBBBBB -
|
||||
по 5 пикселей на каждый цвет.
|
||||
* Формат изображения с 16 битами на пиксель: цвет каждого пикселя
|
||||
кодируется как RRRRRGGGGGGBBBBB (схема 5+6+5).
|
||||
* Формат изображения с 24 битами на пиксель: цвет каждого пикселя
|
||||
кодируется тремя байтами - последовательно синяя, зелёная,
|
||||
красная составляющие цвета.
|
||||
кодируется тремя байтами - последовательно синяя, зелёная, красная
|
||||
составляющие цвета.
|
||||
* Формат изображения с 32 битами на пиксель: аналогично 24, только
|
||||
есть ещё игнорируемый четвёртый байт.
|
||||
* Вызов функции 7 эквивалентен вызову этой функции с параметрами
|
||||
@@ -3814,65 +3754,58 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* Содержимое памяти вплоть до наименьшего из старого и нового
|
||||
размеров сохраняется.
|
||||
|
||||
===========================================================================
|
||||
====== Функция 68, подфункция 22 - открыть именованую область памяти. =====
|
||||
===========================================================================
|
||||
|
||||
Параметры
|
||||
======================================================================
|
||||
=== Функция 68, подфункция 22 - открыть именованную область памяти. ==
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 68 - номер функции
|
||||
* ebx = 22 - номер подфункции
|
||||
* ecx = имя области. Максимум 32 символа включая завершающий ноль
|
||||
* ecx = имя области. Максимум 31 символ, включая завершающий ноль
|
||||
* edx = размер области в байтах для SHM_CREATE и SHM_OPEN_ALWAYS
|
||||
* esi = флаги открытия и доступа
|
||||
|
||||
SHM_OPEN = 0x00
|
||||
SHM_OPEN_ALWAYS = 0x04
|
||||
SHM_CREATE = 0x08
|
||||
SHM_READ = 0x00
|
||||
SHM_WRITE = 0x01
|
||||
|
||||
SHM_CREATE - создать новую область памяти. Если область с
|
||||
таким именем уже существует функция вернёт код ошибки E_ACCESS
|
||||
SHM_OPEN_ALWAYS - открывает существующую или создаёт новую
|
||||
область памяти.
|
||||
SHM_OPEN - открывает существующую область памяти. Если
|
||||
область с таким именем не существует функция вернёт код
|
||||
ошибки E_NOTFOUND.
|
||||
|
||||
SHM_READ - доступ только на чтение.
|
||||
SHM_WRITE - доступ на чтение и запись.
|
||||
|
||||
Возвращаемые значения:
|
||||
* eax = указатель на область памяти или ноль в случае ошибки
|
||||
* edx = если новая область создаётся SHM_CREATE или SHM_OPEN_ALWAYS
|
||||
ноль в случае успеха или код ошибки.
|
||||
если существующая область открывается SHM_OPEN или SHM_OPEN_ALWAYS
|
||||
размер области в байтах или код ошибки
|
||||
|
||||
* esi = флаги открытия и доступа:
|
||||
* SHM_OPEN = 0x00 - открыть существующую область памяти.
|
||||
Если область с таким именем не существует,
|
||||
функция вернёт код ошибки 5.
|
||||
* SHM_OPEN_ALWAYS = 0x04 - открыть существующую или создать новую
|
||||
область памяти.
|
||||
* SHM_CREATE = 0x08 - создать новую область памяти.
|
||||
Если область с таким именем уже существует,
|
||||
функция вернёт код ошибки 10.
|
||||
* SHM_READ = 0x00 - доступ только на чтение
|
||||
* SHM_WRITE = 0x01 - доступ на чтение и запись
|
||||
Возвращаемое значение:
|
||||
* eax = указатель на область памяти, 0 при ошибке
|
||||
* при создании новой области (SHM_CREATE или SHM_OPEN_ALWAYS):
|
||||
edx = 0 - успех, иначе - код ошибки
|
||||
* при открытии существующей области (SHM_OPEN или SHM_OPEN_ALWAYS):
|
||||
edx = код ошибки (при eax=0) или размер области в байтах
|
||||
Коды ошибок:
|
||||
* E_NOTFOUND = 5
|
||||
* E_ACCESS = 10
|
||||
* E_NOMEM = 30
|
||||
* E_PARAM = 33
|
||||
|
||||
* E_NOTFOUND = 5
|
||||
* E_ACCESS = 10
|
||||
* E_NOMEM = 30
|
||||
* E_PARAM = 33
|
||||
Замечания:
|
||||
* Если создаётся новая область то флаги доступа устанавливают
|
||||
максимальные права доступа для остальных процессов.
|
||||
* Родительский процесс всегда имеет доступ на запись.
|
||||
* Если создаётся новая область, то флаги доступа устанавливают
|
||||
максимальные права доступа для остальных процессов. Попытка
|
||||
открытия другим потоком с неразрешёнными правами провалится
|
||||
с кодом ошибки E_ACCESS.
|
||||
* Процесс, создавший область, всегда имеет доступ на запись.
|
||||
|
||||
|
||||
===========================================================================
|
||||
====== Функция 68, подфункция 23 - закрыть именованую область памяти. =====
|
||||
===========================================================================
|
||||
|
||||
Параметры
|
||||
======================================================================
|
||||
=== Функция 68, подфункция 23 - закрыть именованную область памяти. ==
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 68 - номер функции
|
||||
* ebx = 23 - номер подфункции
|
||||
* ecx = имя области. Максимум 32 символа включая завершающий ноль
|
||||
|
||||
* ecx = имя области. Максимум 31 символ, включая завершающий ноль
|
||||
Возвращаемое значение:
|
||||
* не определено
|
||||
|
||||
* eax разрушается
|
||||
Замечания:
|
||||
* Область памяти физически освобождается (с забыванием всех данных
|
||||
и высвобождением физической памяти), когда её закроют
|
||||
все открывшие потоки.
|
||||
* При завершении потока освобождаются все открытые им
|
||||
области памяти.
|
||||
|
||||
======================================================================
|
||||
======================== Функция 69 - отладка. =======================
|
||||
@@ -3907,8 +3840,8 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
Если отладчик этого не хочет, он должен предварительно отключиться
|
||||
подфункцией 3.
|
||||
|
||||
Все подфункции, кроме 4 и 5, применимы только к процессам/потокам,
|
||||
запущенным из текущего функцией 70 с установленным флагом отладки.
|
||||
Все подфункции применимы только к процессам/потокам, запущенным
|
||||
из текущего функцией 70 с установленным флагом отладки.
|
||||
Отладка многопоточных программ пока не поддерживается.
|
||||
Полный список подфункций:
|
||||
* подфункция 0 - определить область данных для отладочных сообщений
|
||||
@@ -3941,7 +3874,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
и при поступлении нового сообщения система будет ждать.
|
||||
Для синхронизации обрамляйте всю работу с буфером операциями
|
||||
блокировки/разблокировки
|
||||
neg [bufsize]
|
||||
neg [bufsize]
|
||||
* Данные в буфере трактуются как массив элементов переменной длины -
|
||||
сообщений. Формат сообщения указан в общем описании.
|
||||
|
||||
@@ -4006,7 +3939,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* Если процесс был приостановлен, он возобновляет выполнение.
|
||||
|
||||
======================================================================
|
||||
=========== Функция 69, подфункция 4 - приостановить поток. ==========
|
||||
==== Функция 69, подфункция 4 - приостановить отлаживаемый поток. ====
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 69 - номер процесса
|
||||
@@ -4014,10 +3947,13 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* ecx = идентификатор
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Процесс должен быть загружен для отладки (как указано в
|
||||
общем описании).
|
||||
|
||||
======================================================================
|
||||
====================== Функция 69, подфункция 5 ======================
|
||||
=================== Возобновить выполнение потока. ===================
|
||||
============ Возобновить выполнение отлаживаемого потока. ============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 69 - номер функции
|
||||
@@ -4025,6 +3961,9 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* ecx = идентификатор
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Процесс должен быть загружен для отладки (как указано в
|
||||
общем описании).
|
||||
|
||||
======================================================================
|
||||
====================== Функция 69, подфункция 6 ======================
|
||||
@@ -4046,7 +3985,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
общем описании).
|
||||
|
||||
======================================================================
|
||||
Функция 69, подфункция 7 - записать в память отлаживаемого процесса.
|
||||
Функция 69, подфункция 7 - записать в память отлаживаемого процесса.
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 69 - номер функции
|
||||
|
||||
+126
-204
@@ -1,4 +1,4 @@
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.7.1.0
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.7.5.0
|
||||
|
||||
Number of the function is located in the register eax.
|
||||
The call of the system function is executed by "int 0x40" command.
|
||||
@@ -219,9 +219,6 @@ Remarks:
|
||||
and does not make any operations at all. If it is really required
|
||||
to transfer control to the next process (to complete a current
|
||||
time slice), use subfunction 1 of function 68.
|
||||
* At current implementation there will be an immediate return from
|
||||
the function, if the addition of ebx with current value of
|
||||
time counter will call 32-bit overflow.
|
||||
|
||||
======================================================================
|
||||
============== Function 6 - read the file from ramdisk. ==============
|
||||
@@ -613,16 +610,20 @@ Parameters:
|
||||
* eax = 17 - function number
|
||||
Returned value:
|
||||
* if the buffer is empty, function returns eax=1
|
||||
* if the buffer is not empty, function returns:
|
||||
high 24 bits of eax contain button identifier (in particular, ah
|
||||
contains low byte of the identifier; if all buttons have
|
||||
the identifier less than 256, ah is enough to distinguish),
|
||||
and al contain 0 - if used left mouse button or bit of the used another mouse button
|
||||
* if the buffer is not empty:
|
||||
* high 24 bits of eax contain button identifier (in particular,
|
||||
ah contains low byte of the identifier; if all buttons have
|
||||
the identifier less than 256, ah is enough to distinguish)
|
||||
* al = 0 - the button was pressed with left mouse button
|
||||
* al = bit corresponding to used mouse button otherwise
|
||||
Remarks:
|
||||
* "Buffer" keeps only one button, at pressing the new button the
|
||||
information about old is lost.
|
||||
* The call of this function by an application with inactive window
|
||||
will return answer "buffer is empty".
|
||||
* Returned value for al corresponds to the state of mouse buttons
|
||||
as in subfunction 2 of function 37 at the beginning
|
||||
of button press, excluding lower bit, which is cleared.
|
||||
|
||||
======================================================================
|
||||
= Function 18, subfunction 2 - terminate process/thread by the slot. =
|
||||
@@ -731,7 +732,7 @@ Returned value:
|
||||
* function does not return value
|
||||
|
||||
======================================================================
|
||||
============ Function 18, subfunction 9 - system shutdown. ===========
|
||||
== Function 18, subfunction 9 - system shutdown with the parameter. ==
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
@@ -747,8 +748,7 @@ Returned value:
|
||||
Remarks:
|
||||
* Do not rely on returned value by incorrect call, it can be
|
||||
changed in future versions of the kernel.
|
||||
* It is possible to use subfunction 1, that on the last step
|
||||
the user makes choice himself.
|
||||
|
||||
======================================================================
|
||||
===== Function 18, subfunction 10 - minimize application window. =====
|
||||
======================================================================
|
||||
@@ -1126,11 +1126,6 @@ Remarks:
|
||||
* CD base is used by function 24.
|
||||
* To get CD base use subfunction 3 of function 26.
|
||||
|
||||
======================================================================
|
||||
====== Function 21, subfunction 4 - set Sound Blaster base port. =====
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
========== Function 21, subfunction 5 - set system language. =========
|
||||
======================================================================
|
||||
@@ -1191,11 +1186,6 @@ Remarks:
|
||||
subfunction 11 of function 18.
|
||||
* It is also necessary to define used HD base by subfunction 7.
|
||||
|
||||
======================================================================
|
||||
======== Function 21, subfunction 10 - set sound DMA channel. ========
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
Function 21, subfunction 11 - enable/disable low-level access to HD.
|
||||
======================================================================
|
||||
@@ -1483,11 +1473,6 @@ Remarks:
|
||||
* The function is supported only for ATAPI devices (CD and DVD).
|
||||
* An example of usage of the function is the application CD_tray.
|
||||
|
||||
======================================================================
|
||||
=================== Function 25 - set SBPro volume. ==================
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
======== Function 26, subfunction 1 - get MPU MIDI base port. ========
|
||||
======================================================================
|
||||
@@ -1547,11 +1532,6 @@ Remarks:
|
||||
* CD base is used by function 24.
|
||||
* To set CD base use subfunction 3 of function 21.
|
||||
|
||||
======================================================================
|
||||
====== Function 26, subfunction 4 - get Sound Blaster base port. =====
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
========== Function 26, subfunction 5 - get system language. =========
|
||||
======================================================================
|
||||
@@ -1614,11 +1594,6 @@ Remarks:
|
||||
than 497 days.
|
||||
* To get system time use function 3.
|
||||
|
||||
======================================================================
|
||||
======== Function 26, subfunction 10 - get sound DMA channel. ========
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
===================== Function 26, subfunction 11 ====================
|
||||
========== Find out whether low-level HD access is enabled. ==========
|
||||
@@ -1646,11 +1621,6 @@ Remarks:
|
||||
* The current implementation uses only low bit of ecx.
|
||||
* To set the current state use subfunction 12 of function 21.
|
||||
|
||||
======================================================================
|
||||
=================== Function 28 - set SB16 volume. ===================
|
||||
======================================================================
|
||||
Removed
|
||||
|
||||
======================================================================
|
||||
=================== Function 29 - get system date. ===================
|
||||
======================================================================
|
||||
@@ -1689,6 +1659,56 @@ Remarks:
|
||||
* If the buffer is too small to hold all data, only first (edx-1)
|
||||
bytes are copied and than terminating 0 is inserted.
|
||||
|
||||
======================================================================
|
||||
=============== Function 32 - delete file from ramdisk. ==============
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 32 - function number
|
||||
* ebx = pointer to the filename
|
||||
Returned value:
|
||||
* eax = 0 - success; otherwise file system error code
|
||||
Remarks:
|
||||
* This function is obsolete; function 58 allows to fulfill
|
||||
the same operations with the extended possibilities.
|
||||
* The current implementation returns only values 0(success) and
|
||||
5(file not found).
|
||||
* The filename must be either in the format 8+3 characters
|
||||
(first 8 characters - name itself, last 3 - extension,
|
||||
the short names and extensions are supplemented with spaces),
|
||||
or in the format 8.3 characters "FILE.EXT"/"FILE.EX "
|
||||
(name no more than 8 characters, dot, extension 3 characters
|
||||
supplemented if necessary by spaces).
|
||||
The filename must be written with capital letters. The terminating
|
||||
character with code 0 is not necessary (not ASCIIZ-string).
|
||||
* This function does not support folders on the ramdisk.
|
||||
|
||||
======================================================================
|
||||
================ Function 33 - write file to ramdisk. ================
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 33 - function number
|
||||
* ebx = pointer to the filename
|
||||
* ecx = pointer to data for writing
|
||||
* edx = number of bytes for writing
|
||||
* should be set esi=0
|
||||
Returned value:
|
||||
* eax = 0 - success, otherwise file system error code
|
||||
Remarks:
|
||||
* This function is obsolete; function 70 allows to fulfil
|
||||
the same operations with extended possibilities.
|
||||
* If esi contains non-zero value and selected file already exists,
|
||||
one more file with the same name will be created.
|
||||
* Otherwise file will be overwritten.
|
||||
* The filename must be either in the format 8+3 characters
|
||||
(first 8 characters - name itself, last 3 - extension,
|
||||
the short names and extensions are supplemented with spaces),
|
||||
or in the format 8.3 characters "FILE.EXT"/"FILE.EX "
|
||||
(name no more than 8 characters, dot, extension 3 characters
|
||||
supplemented if necessary by spaces).
|
||||
The filename must be written with capital letters. The terminating
|
||||
character with code 0 is not necessary (not ASCIIZ-string).
|
||||
* This function does not support folders on the ramdisk.
|
||||
|
||||
======================================================================
|
||||
======= Function 35 - read the color of a pixel on the screen. =======
|
||||
======================================================================
|
||||
@@ -1707,12 +1727,12 @@ Remarks:
|
||||
the current videomode, use function 61.
|
||||
|
||||
======================================================================
|
||||
=============== Function 36 - read screen area. ===============
|
||||
=================== Function 36 - read screen area. ==================
|
||||
======================================================================
|
||||
Paramters:
|
||||
* eax = 36 - function number
|
||||
* ebx = pointer on the previously allocated area of memory,
|
||||
where will be placed the image in the format BBGGRRBBGGRR...
|
||||
* ebx = pointer to the previously allocated memory area,
|
||||
where will be placed the image in the format BBGGRRBBGGRR...
|
||||
* ecx = [size on axis x]*65536 + [size on axis y]
|
||||
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
|
||||
Returned value:
|
||||
@@ -1915,45 +1935,36 @@ Returned value:
|
||||
* eax = -1 for incorrect ebx
|
||||
|
||||
======================================================================
|
||||
==================== Function 42 - work with IRQ data. ===============
|
||||
================== Function 42 - work with IRQ data. =================
|
||||
======================================================================
|
||||
|
||||
------------------------ Reading data --------------------------------
|
||||
|
||||
When an IRQ occurs, the system reads data from ports indicated
|
||||
earlier by function 44 and writes this data to
|
||||
internal buffer. This function reads out data from that buffer
|
||||
to the buffer specified as parameter.
|
||||
internal buffer. This function reads out data from that buffer.
|
||||
|
||||
--------------------- Subfunction 0 - read data ----------------------
|
||||
Parameters:
|
||||
* eax = 42 - function number
|
||||
* bl = IRQ number, 0..15
|
||||
* bh = subfunction number, 0
|
||||
Other part of register ebx, must be zero.
|
||||
* ecx = pointer to the receive buffer
|
||||
* bh = 0 - subfunction number
|
||||
* rest of ebx must be zeroed
|
||||
* ecx = pointer to a buffer with size not less than 4000 bytes
|
||||
Returned value: (use value of eax to distinguish)
|
||||
* if the thread is not IRQ owner (or IRQ number is incorrect):
|
||||
* eax = -1
|
||||
* if there is no data:
|
||||
* eax = 0
|
||||
* if the thread is not IRQ owner
|
||||
(or IRQ number is incorrect): eax = -1
|
||||
* if there is no data: eax = 0
|
||||
* if all is ok:
|
||||
* eax = byte size of data, read from buffer
|
||||
|
||||
See remarks below.
|
||||
|
||||
------------------------ Get data size -------------------------------
|
||||
eax = size of data read (in bytes)
|
||||
|
||||
------------- Subfunction 1 - get size of data in buffer -------------
|
||||
Parameters:
|
||||
* eax = 42 - function number
|
||||
* bl = IRQ number, 0..15
|
||||
* bh = subfunction number, 0
|
||||
Other part of register ebx, must be zero.
|
||||
* ecx = pointer to receive buffer
|
||||
Returned value: (use value of eax to distinguish)
|
||||
* if the thread is not IRQ owner (or IRQ number is incorrect):
|
||||
* eax = -1
|
||||
* if all is ok:
|
||||
* eax = byte size of data in buffer
|
||||
|
||||
* bh = 0 - subfunction number
|
||||
* rest of ebx must be zeroed
|
||||
Returned value:
|
||||
* if the thread is not IRQ owner
|
||||
(or IRQ number is incorrect): eax = -1
|
||||
* otherwise eax = size of data in buffer
|
||||
Remarks:
|
||||
* Previously the thread must reserve indicated IRQ for itself
|
||||
by function 45.
|
||||
@@ -2578,9 +2589,6 @@ Remarks:
|
||||
sockets of a thread at termination. In particular, one should not
|
||||
kill a thread with many opened sockets - there will be an outflow
|
||||
of resources.
|
||||
* The current implementation does no checks on correctness
|
||||
(function returns error only if thread tries to close not opened
|
||||
socket with correct handle).
|
||||
|
||||
======================================================================
|
||||
============== Function 53, subfunction 2 - poll socket. =============
|
||||
@@ -2590,10 +2598,8 @@ Parameters:
|
||||
* ebx = 2 - subfunction number
|
||||
* ecx = socket handle
|
||||
Returned value:
|
||||
* eax = number of read bytes
|
||||
* eax = number of read bytes, 0 for incorrect handle
|
||||
* ebx destroyed
|
||||
Remarks:
|
||||
* There is no checks for correctness.
|
||||
|
||||
======================================================================
|
||||
========= Function 53, subfunction 3 - read byte from socket. ========
|
||||
@@ -2603,12 +2609,10 @@ Parameters:
|
||||
* ebx = 3 - subfunction number
|
||||
* ecx = socket handle
|
||||
Returned value:
|
||||
* if there is no read data: eax=0, bl=0,
|
||||
* if there is no read data or handle is incorrect: eax=0, bl=0,
|
||||
other bytes of ebx are destroyed
|
||||
* if there are read data: eax=number of rest bytes
|
||||
(possibly 0), bl=read byte, other bytes of ebx are destroyed
|
||||
Remarks:
|
||||
* There is no checks for correctness.
|
||||
|
||||
======================================================================
|
||||
========== Function 53, subfunction 4 - write to UDP-socket. =========
|
||||
@@ -2620,13 +2624,10 @@ Parameters:
|
||||
* edx = number of bytes to write
|
||||
* esi = pointer to data to write
|
||||
Returned value:
|
||||
* eax = 0xffffffff - invalid handle
|
||||
* eax = 0xffff - not enough memory
|
||||
* eax = 0xffffffff - error (invalid handle or not enough memory)
|
||||
* eax = 0 - success
|
||||
* ebx destroyed
|
||||
Remarks:
|
||||
* Check on validity of handle is minimal - only not very incorrect
|
||||
not opened handles are eliminated.
|
||||
* Number of bytes to write must not exceed 1500-28, though
|
||||
the appropriate check is not made.
|
||||
|
||||
@@ -2654,7 +2655,7 @@ Parameters:
|
||||
* ebx = 6 - subfunction number
|
||||
* ecx = socket handle
|
||||
Returned value:
|
||||
* eax = socket status: one of
|
||||
* eax = 0 for incorrect handle or socket status: one of
|
||||
* TCB_LISTEN = 1
|
||||
* TCB_SYN_SENT = 2
|
||||
* TCB_SYN_RECEIVED = 3
|
||||
@@ -2666,9 +2667,7 @@ Returned value:
|
||||
* TCB_LAST_ASK = 9
|
||||
* TCB_TIME_WAIT = 10
|
||||
* TCB_CLOSED = 11
|
||||
* ebx destroys
|
||||
Remarks:
|
||||
* There is no checks for correctness.
|
||||
* ebx destroyed
|
||||
|
||||
======================================================================
|
||||
========== Function 53, subfunction 7 - write to TCP-socket. =========
|
||||
@@ -2680,13 +2679,10 @@ Parameters:
|
||||
* edx = number of bytes to write
|
||||
* esi = pointer to data to write
|
||||
Returned value:
|
||||
* eax = 0xffffffff - error
|
||||
* eax = 0xffff - not enough memory
|
||||
* eax = 0xffffffff - error (invalid handle or not enough memory)
|
||||
* eax = 0 - success
|
||||
* ebx destroyed
|
||||
Remarks:
|
||||
* Check on validity of handle is minimal - only not very incorrect
|
||||
not opened handles are eliminated.
|
||||
* Number of bytes to write must not exceed 1500-40, though
|
||||
the appropriate check is not made.
|
||||
|
||||
@@ -2698,20 +2694,15 @@ Parameters:
|
||||
* ebx = 8 - subfunction number
|
||||
* ecx = socket handle
|
||||
Returned value:
|
||||
* eax = -1 - invalid handle
|
||||
* eax = 0xffff - not enough memory for socket close packet
|
||||
* eax = -1 - error (invalid handle or
|
||||
not enough memory for socket close packet)
|
||||
* eax = 0 - success
|
||||
* in many cases eax is destroyed (the result of function 'queue'
|
||||
is returned) - probably this is bug, which will be corrected
|
||||
* ebx destroyed
|
||||
Remarks:
|
||||
* The current implementation does not close automatically all
|
||||
sockets of a thread at termination. In particular, one should not
|
||||
kill a thread with many opened sockets - there will be an outflow
|
||||
of resources.
|
||||
* The current implementation does no checks on correctness
|
||||
(function returns error only if thread tries to close not opened
|
||||
socket with correct handle).
|
||||
|
||||
======================================================================
|
||||
=== Function 53, subfunction 9 - check whether local port is free. ===
|
||||
@@ -2752,10 +2743,8 @@ Paramters:
|
||||
* esi = number of bytes to read;
|
||||
* esi = 0 - read all data (maximum 4096 bytes)
|
||||
Returned value:
|
||||
* eax = number of bytes read
|
||||
* eax = number of bytes read (0 for incorrect handle)
|
||||
* ebx destroyed
|
||||
Remakrs:
|
||||
* There is no check on handle correctness.
|
||||
|
||||
======================================================================
|
||||
= Function 53, subfunction 255 - debug information of network driver.
|
||||
@@ -2788,58 +2777,6 @@ Possible values for ecx:
|
||||
* 5: total number of received ARP-packets
|
||||
* 6: status of packet driver, 0=inactive, nonzero=active
|
||||
|
||||
======================================================================
|
||||
========== Function 55, subfunction 0 - load data for SB16. ==========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 55 - function number
|
||||
* ebx = 0 - subfunction number
|
||||
* ecx = pointer to data (is copied 64 kilobytes, is used as much as
|
||||
set by subfunction 2)
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* Format and size of data are set by subfunction 2.
|
||||
|
||||
======================================================================
|
||||
======== Function 55, subfunction 1 - begin play data on SB16. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 55 - function number
|
||||
* ebx = 1 - subfunction number
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* Previously data must be loaded by subfunction 0 and
|
||||
their format must be defined by subfunction 2.
|
||||
* Function returns control, when playing of data began; after that
|
||||
play goes independently from application (and does not use
|
||||
processor time at all).
|
||||
* Previously must be defined SB16 base port
|
||||
(by subfunction 4 of function 21) and DMA channel
|
||||
(by subfunction 10 of function 21).
|
||||
|
||||
======================================================================
|
||||
======== Function 55, subfunction 2 - set format of SB16 data. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 55 - function number
|
||||
* ebx = 2 - subfunction number
|
||||
* ecx = 0 - set digit capacity
|
||||
* edx = 1 - 8bit mono
|
||||
* edx = 2 - 8bit stereo
|
||||
* ecx = 1 - set data size
|
||||
* edx = size in bytes
|
||||
* ecx = 2 - set play frequency
|
||||
* edx = frequency
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* When the system boots, it sets following default parameters:
|
||||
digit capacity - 8bit mono, size - 64 Kb, frequency - 44100 Hz.
|
||||
Nevertheless it is recommended to set necessary values obviously
|
||||
as they could be reset by some application.
|
||||
|
||||
======================================================================
|
||||
Function 55, subfunction 55 - begin to play data on built-in speaker.
|
||||
======================================================================
|
||||
@@ -3391,19 +3328,36 @@ Parameters:
|
||||
* ebx = pointer to the image
|
||||
* ecx = [size on axis x]*65536 + [size on axis y]
|
||||
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
|
||||
* esi = number of bits per pixel, must be 8, 24 or 32
|
||||
* edi = pointer to palette (256 colors 0x00RRGGBB);
|
||||
ignored when esi = 24 and 32
|
||||
* esi = number of bits per pixel, must be 1,2,4,8,15,16,24 or 32
|
||||
* edi = pointer to palette (2 to the power esi colors 0x00RRGGBB);
|
||||
ignored when esi > 8
|
||||
* ebp = offset of next row data relative to previous row data
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* Coordinates of the image are coordinates of the upper left corner
|
||||
of the image relative to the window.
|
||||
* Size of the image in bytes is xsize*ysize.
|
||||
* Each byte of image is index in the palette.
|
||||
* If the image uses less than 256 colors, palette size may be
|
||||
less than 256 too.
|
||||
* Format of image with 1 bit per pixel: each byte of image
|
||||
(possibly excluding last bytes in rows), contains information on
|
||||
the color of 8 pixels, MSB corresponds to first pixel.
|
||||
* Format of image with 2 bits per pixel: each byte of image
|
||||
(possibly excluding last bytes in rows), contains information on
|
||||
the color of 4 pixels, two MSBs correspond to first pixel.
|
||||
* Format of image with 4 bits per pixel: each byte of image
|
||||
excluding last bytes in rows (if width is odd) contains
|
||||
information on the color of 2 pixels, high-order tetrad
|
||||
corresponds to first pixel.
|
||||
* Format of image with 8 bits per pixel: each byte of image is
|
||||
index in the palette.
|
||||
* Format of image with 15 bits per pixel: the color of each pixel
|
||||
is coded as (bit representation) 0RRRRRGGGGGBBBBB - 5 bits per
|
||||
each color.
|
||||
* Format of image with 16 bits per pixel: the color of each pixel
|
||||
is coded as RRRRRGGGGGGBBBBB (5+6+5).
|
||||
* Format of image with 24 bits per pixel: the color of each pixel
|
||||
is coded as 3 bytes - sequentially blue, green, red components.
|
||||
* Format of image with 32 bits per pixel: similar to 24, but
|
||||
one additional ignored byte is present.
|
||||
* The call to function 7 is equivalent to call to this function
|
||||
with esi=24, ebp=0.
|
||||
|
||||
@@ -3769,43 +3723,6 @@ Remarks:
|
||||
* The contents of the block are unchanged up to the shorter of
|
||||
the new and old sizes.
|
||||
|
||||
======================================================================
|
||||
======= Function 68, subfunction 22 - open memory block. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 22 - subfunction number
|
||||
* ecx = pointer to already allocated block (max 32 symbols)
|
||||
* edx = block's size in bytes for SHM_CREATE and SHM_OPEN_ALWAYS
|
||||
* esi = flags for opening and getting access
|
||||
SHM_OPEN = 0x00
|
||||
SHM_OPEN_ALWAYS = 0x04
|
||||
SHM_CREATE = 0x08
|
||||
SHM_READ = 0x00
|
||||
SHM_WRITE = 0x01
|
||||
Returned value:
|
||||
* eax = pointer to the readed block, 0 = error
|
||||
* edx = if SHM_CREATE, SHM_OPEN, or SHM_OPEN_ALWAYS active
|
||||
Error codes:
|
||||
* E_NOTFOUND = 5
|
||||
* E_ACCESS = 10
|
||||
* E_NOMEM = 30
|
||||
* E_PARAM = 33
|
||||
Remarks:
|
||||
*
|
||||
*
|
||||
|
||||
======================================================================
|
||||
======= Function 68, subfunction 22 - close memory block. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 23 - subfunction number
|
||||
* ecx = pointer to already allocated block (max 32 symbols)
|
||||
|
||||
Returned value:
|
||||
* not defined
|
||||
|
||||
======================================================================
|
||||
====================== Fucntion 69 - debugging. ======================
|
||||
======================================================================
|
||||
@@ -3837,9 +3754,8 @@ When debugger terminates, all debugged processes are killed.
|
||||
If debugger does not want this, it must previously detach by
|
||||
subfunction 3.
|
||||
|
||||
All subfunctions except 4 and 5 are applicable only to
|
||||
processes/threads started from the current by function 70
|
||||
with set debugging flag.
|
||||
All subfunctions are applicable only to processes/threads started
|
||||
from the current by function 70 with set debugging flag.
|
||||
Debugging of multithreaded programs is not supported yet.
|
||||
The full list of subfunctions:
|
||||
* subfunction 0 - define data area for debug messages
|
||||
@@ -3937,7 +3853,7 @@ Remarks:
|
||||
* If the process was suspended, it resumes execution.
|
||||
|
||||
======================================================================
|
||||
============= Function 69, subfunction 4 - suspend thread. ===========
|
||||
======== Function 69, subfunction 4 - suspend debugged thread. =======
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 69 - function number
|
||||
@@ -3945,9 +3861,12 @@ Parameters:
|
||||
* ecx = thread identifier
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* Process must be loaded for debugging (as is shown in
|
||||
general description).
|
||||
|
||||
======================================================================
|
||||
============= Function 69, subfunction 5 - resume thread. ============
|
||||
======== Function 69, subfunction 5 - resume debugged thread. ========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 69 - function number
|
||||
@@ -3955,6 +3874,9 @@ Parameters:
|
||||
* ecx = thread identifier
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* Process must be loaded for debugging (as is shown in
|
||||
general description).
|
||||
|
||||
======================================================================
|
||||
= Fucntion 69, subfunction 6 - read from memory of debugged process. =
|
||||
|
||||
@@ -113,7 +113,7 @@ use16
|
||||
org 0x0
|
||||
jmp start_of_code
|
||||
|
||||
version db 'Kolibri OS version 0.7.1.0 ',13,10,13,10,0
|
||||
version db 'Kolibri OS version 0.7.5.0 ',13,10,13,10,0
|
||||
|
||||
include "boot/bootstr.inc" ; language-independent boot messages
|
||||
include "boot/preboot.inc"
|
||||
@@ -2186,7 +2186,7 @@ endg
|
||||
|
||||
iglobal
|
||||
version_inf:
|
||||
db 0,7,1,0 ; version 0.7.1.0
|
||||
db 0,7,5,0 ; version 0.7.5.0
|
||||
db UID_KOLIBRI
|
||||
dd __REV__
|
||||
version_end:
|
||||
@@ -4297,7 +4297,9 @@ putimage_init8bpp:
|
||||
|
||||
align 16
|
||||
putimage_get24bpp:
|
||||
mov eax, [esi]
|
||||
movzx eax, byte [esi+2]
|
||||
shl eax, 16
|
||||
mov ax, [esi]
|
||||
add esi, 3
|
||||
ret 4
|
||||
align 16
|
||||
|
||||
Reference in new issue
Block a user