* Updated documentation
* Deleted useless code git-svn-id: svn://kolibrios.org@277 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
1 parent
1e7402569a
commit
a9706fb6ca
5 files changed
+189
-361
No files matched your search
@@ -95,7 +95,7 @@ iglobal
|
||||
dd syscall_cdaudio ; 24-PlayCdTrack,StopCd and GetCdPlaylist
|
||||
dd sys_sb16 ; 25-SetSb16
|
||||
dd sys_getsetup ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
|
||||
dd sys_wss ; 27-SetWssMainVol and SetWssCdVol
|
||||
dd undefined_syscall ; 27-reserved
|
||||
dd sys_sb16II ; 28-SetSb16
|
||||
dd sys_date ; 29-GetDate
|
||||
dd undefined_syscall ; 30-reserved
|
||||
|
||||
+93
-184
@@ -1,4 +1,4 @@
|
||||
СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.6.0.0
|
||||
СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.6.3.0
|
||||
|
||||
Номер функции помещается в регистр eax.
|
||||
Вызов системной функции осуществляется командой "int 0x40".
|
||||
@@ -685,7 +685,7 @@
|
||||
* eax = 0 - успешно
|
||||
* иначе eax = код ошибки файловой системы
|
||||
Замечания:
|
||||
* Имя файла фиксировано, "menuet.img" (глобальная переменная ядра
|
||||
* Имя файла фиксировано, "kolibri.img" (глобальная переменная ядра
|
||||
image_save из preboot.inc)
|
||||
* На каком разделе какого диска файл будет сохранён, определяется
|
||||
подфункцией 7 и подфункцией 8 функции 21.
|
||||
@@ -814,7 +814,7 @@
|
||||
нулевой, при наличии показывает число распознанных разделов,
|
||||
которых может и не быть (если носитель не отформатирован или
|
||||
если файловая система не поддерживается). В текущей версии ядра
|
||||
для жёстких дисков поддерживаются только FAT16 и FAT32.
|
||||
для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS.
|
||||
* +6: 4 db: зарезервировано
|
||||
Формат таблицы: полная версия:
|
||||
* +0: 10 db: такие же, как и в короткой версии
|
||||
@@ -825,44 +825,17 @@
|
||||
Разделы расположены в следующем порядке: сначала последовательно все
|
||||
распознанные разделы на HD на IDE0 (если есть),
|
||||
затем на HD на IDE1 (если есть) и т.д. до IDE3.
|
||||
Формат информации о разделе (пока поддерживается только FAT):
|
||||
Формат информации о разделе:
|
||||
* +0: dword: начальный физический сектор раздела
|
||||
* +4: dword: последний физический сектор раздела
|
||||
(принадлежит разделу)
|
||||
* +8: dword: секторов в одной копии FAT
|
||||
* +12 = +0xC: dword: число копий FAT
|
||||
* +16 = +0x10: dword: число секторов в кластере
|
||||
* +20 = +0x14: dword: байт в секторе; текущая реализация ожидает,
|
||||
что здесь 0x200 = 512
|
||||
* +24 = +0x18: dword: первый кластер корневого каталога в FAT32,
|
||||
0 для FAT16
|
||||
* +28 = +0x1C: dword: начальный физический сектор FAT
|
||||
* +32 = +0x20: dword: первый физический сектор корневого каталога
|
||||
для FAT16, игнорируется для FAT32
|
||||
* +36 = +0x24: dword: число секторов в корневом каталоге для FAT16,
|
||||
0 для FAT32
|
||||
* +40 = +0x28: dword: физический сектор начала области данных
|
||||
* +44 = +0x2C: dword: максимальный номер кластера
|
||||
* +48 = +0x30: dword: физический сектор информации о
|
||||
файловой системе для FAT32, игнорируется для FAT16
|
||||
* +52 = +0x34: dword: значение, используемое как граница
|
||||
специальных значений в FAT
|
||||
* +56 = +0x38: dword: значение, используемое для плохих кластеров
|
||||
в FAT
|
||||
* +60 = +0x3C: dword: значение, используемое как маркер конца
|
||||
при записи цепочки в FAT
|
||||
* +64 = +0x40: dword: маска, накладываемая на элемент FAT
|
||||
* +68 = +0x44: byte: тип файловой системы: 16 или 32
|
||||
* +69 = +0x45: 31 db: зарезервировано
|
||||
* +8: byte: тип файловой системы:
|
||||
16=FAT16, 32=FAT32, 1=NTFS
|
||||
* формат дальнейших данных зависит от файловой системы,
|
||||
может меняться с изменениями в ядре и поэтому не описывается
|
||||
Замечания:
|
||||
* Короткая таблица может быть использована для получения информации
|
||||
об имеющихся устройствах.
|
||||
* Первые два поля информации о разделе в полной версии таблицы
|
||||
сообщают параметры раздела, оставшиеся - параметры файловой
|
||||
системы FAT. Для других файловых систем (когда они будут
|
||||
поддерживаться) специфическая для файловой системы информация,
|
||||
естественно, будет другой, но первые два поля
|
||||
сохранятся неизменными.
|
||||
|
||||
======================================================================
|
||||
========== Функция 18, подфункция 13 - получить версию ядра. =========
|
||||
@@ -878,8 +851,8 @@
|
||||
db a,b,c,d для версии a.b.c.d
|
||||
db UID_xxx: одно из UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||
db 'name',0 - ASCIIZ-строка с именем
|
||||
Для ядра Kolibri 0.5.8.1:
|
||||
db 0,5,8,1
|
||||
Для ядра Kolibri 0.6.3.0:
|
||||
db 0,6,3,0
|
||||
db 2
|
||||
db 'Kolibri',0
|
||||
|
||||
@@ -1005,7 +978,6 @@ db 'Kolibri',0
|
||||
и проверить, что устанавливаемое положение не выходит за пределы
|
||||
экрана.
|
||||
|
||||
|
||||
======================================================================
|
||||
====================== Функция 18, подфункция 20 =====================
|
||||
============= Получить информацию об оперативной памяти. =============
|
||||
@@ -1018,18 +990,18 @@ db 'Kolibri',0
|
||||
* eax = общий размер имеющейся оперативной памяти в байтах
|
||||
или -1 в случае ошибки
|
||||
* буфер, на который указывает ecx, содержит следующую информацию:
|
||||
* +0: dword: общий размер имеющейся оперативной памяти в страницах
|
||||
* +0: dword: общий размер имеющейся оперативной памяти в страницах
|
||||
* +4: dword: размер свободной оперативной памяти в страницах
|
||||
* +8: dword: число страничных ошибок (исключений #PF)
|
||||
в приложениях
|
||||
* +12: dword: размер кучи ядра в байтах
|
||||
* +16: dword: размер свободной памяти в куче ядра в байтах
|
||||
* +16: dword: размер свободной памяти в куче ядра в байтах
|
||||
* +20: dword: общее количество блоков памяти в куче ядра
|
||||
* +24: dword: количество свободных блоков памяти в куче ядра
|
||||
* +24: dword: количество свободных блоков памяти в куче ядра
|
||||
* +28: dword: размер наибольшего свободного блока в куче ядра
|
||||
(зарезервировано)
|
||||
* +32: dword: размер наибольшего выделенного блока в куче ядра
|
||||
(зарезервировано)
|
||||
(зарезервировано)
|
||||
* +32: dword: размер наибольшего выделенного блока в куче ядра
|
||||
(зарезервировано)
|
||||
|
||||
======================================================================
|
||||
==================== Функция 20 - интерфейс MIDI. ====================
|
||||
@@ -1149,22 +1121,6 @@ db 'Kolibri',0
|
||||
переменную не использует.
|
||||
* Получить язык системы можно вызовом подфункции 5 функции 26.
|
||||
|
||||
======================================================================
|
||||
======= Функция 21, подфункция 6 - установить базовый порт WSS. ======
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 21 - номер функции
|
||||
* ebx = 6 - номер подфункции
|
||||
* ecx = базовый порт
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно
|
||||
* eax = -1 - ошибочный номер порта
|
||||
Замечания:
|
||||
* Номер порта должен удовлетворять условию 0x100<=ecx.
|
||||
* База WSS используется функцией 27.
|
||||
* Получить установленный базовый порт WSS можно вызовом
|
||||
подфункции 6 функции 26.
|
||||
|
||||
======================================================================
|
||||
=========== Функция 21, подфункция 7 - установить базу HD. ===========
|
||||
======================================================================
|
||||
@@ -1599,18 +1555,6 @@ db 'Kolibri',0
|
||||
соответствующую иконку (используя описываемую функцию).
|
||||
* Установить язык системы можно вызовом подфункции 5 функции 21.
|
||||
|
||||
======================================================================
|
||||
======== Функция 26, подфункция 6 - получить базовый порт WSS. =======
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 26 - номер функции
|
||||
* ebx = 6 - номер подфункции
|
||||
Возвращаемое значение:
|
||||
* eax = базовый порт
|
||||
Замечания:
|
||||
* База WSS используется функцией 27.
|
||||
* Установить базовый порт WSS можно вызовом подфункции 6 функции 21.
|
||||
|
||||
======================================================================
|
||||
============ Функция 26, подфункция 7 - получить базу HD. ============
|
||||
======================================================================
|
||||
@@ -1706,28 +1650,6 @@ db 'Kolibri',0
|
||||
* Установить текущее состояние можно вызовом
|
||||
подфункции 12 функции 21.
|
||||
|
||||
======================================================================
|
||||
==== Функция 27 - установить громкость Windows Sound System (WSS). ===
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 27 - номер функции
|
||||
* ebx = что устанавливать:
|
||||
* 1 - установить общую громкость
|
||||
* 2 - установить громкость Line In
|
||||
* cl = уровень громкости (0x0=самый высокий, 0x1F=самый низкий,
|
||||
установленный бит 0x80=отключить)
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно
|
||||
* eax = 1 - не определена база WSS
|
||||
* eax = 2 - неверная подфункция
|
||||
Замечания:
|
||||
* Предварительно нужно определить базовый порт WSS вызовом
|
||||
подфункции 6 функции 21.
|
||||
* Установка общей громкости фактически игнорируется
|
||||
(возвращается eax=0).
|
||||
* В старой документации и в исходниках ядра подфункция 2
|
||||
ошибочно названа громкостью CD-audio.
|
||||
|
||||
======================================================================
|
||||
=============== Функция 28 - установить громкость SB16. ==============
|
||||
======================================================================
|
||||
@@ -1829,7 +1751,7 @@ db 'Kolibri',0
|
||||
можно получить функцией 61.
|
||||
|
||||
======================================================================
|
||||
========== Функция 37 - получить координаты/состояние мыши. ==========
|
||||
==================== Функция 37 - работа с мышью. ====================
|
||||
======================================================================
|
||||
|
||||
-------------- Подфункция 0 - экранные координаты мыши ---------------
|
||||
@@ -1864,70 +1786,54 @@ db 'Kolibri',0
|
||||
* бит 1 установлен = правая кнопка нажата
|
||||
* прочие биты сброшены
|
||||
|
||||
----------------- Подфункция 3 - установить позицию курсора ------------
|
||||
------------------ функция зарезервирована -----------------
|
||||
Параметры:
|
||||
* eax = 37 - номер функции
|
||||
* ebx = 3 - номер подфункции
|
||||
* ecx = координаты курсора
|
||||
Возвращаемое значение:
|
||||
* eax предыдущие координаты курсора
|
||||
|
||||
----------------- Подфункция 4 - загрузить курсор -----------------
|
||||
------------------ Подфункция 4 - загрузить курсор -------------------
|
||||
Параметры:
|
||||
* eax = 37 - номер функции
|
||||
* ebx = 4 - номер подфункции
|
||||
* ecx = указатель на входные двнные
|
||||
* edx = (hotspot << 16) or flags
|
||||
|
||||
* dx = источник данных:
|
||||
* dx = LOAD_FROM_FILE = 0 - данные в файле
|
||||
* ecx = указатель на полный путь к файлу курсора
|
||||
* файл курсора должен быть в формате .cur, стандартном для
|
||||
MS Windows, причём размером 32*32 пикселя
|
||||
* dx = LOAD_FROM_MEM = 1 - данные файла уже загружены в память
|
||||
* ecx = указатель на данные файла курсора
|
||||
* формат данных такой же, как и в предыдущем случае
|
||||
* dx = LOAD_INDIRECT = 2 - данные в памяти
|
||||
* ecx = указатель на образ курсора в формате ARGB 32*32 пикселя
|
||||
* edx = 0xXXYY0002, где
|
||||
* XX = x-координата "горячей точки" курсора
|
||||
* YY = y-координата
|
||||
* 0 <= XX, YY <= 31
|
||||
Возвращаемое значение:
|
||||
* eax содержит логический номер курсора
|
||||
или 0 в случае неудачи
|
||||
|
||||
Значение ecx интерпретируется в зависимости от флагов установленных
|
||||
в младшем слове регистра edx
|
||||
* eax = 0 - неудача
|
||||
* иначе eax = хэндл курсора
|
||||
|
||||
* dx = LOAD_FROM_FILE = 0
|
||||
* ecx = полный путь к файлу курсора
|
||||
* hotspot игнорируется
|
||||
* курсор должен быть в формате MS Windows 32*32 пикселя 16 цветов
|
||||
|
||||
* dx = LOAD_FROM_MEM = 1
|
||||
* ecx = указатель на загруженный в память файл курсора
|
||||
* hotspot игнорируется
|
||||
* курсор должен быть в формате MS Windows 32*32 пикселя 16 цветов
|
||||
|
||||
* dx = LOAD_INDIRECT = 2
|
||||
* ecx = указатель на образ курсора в формате ARGB 32*32 пикселя
|
||||
* hotspot (hotspot.x <<8)or hotspot.y
|
||||
0<= x,y <=31
|
||||
|
||||
* dx = LOAD_SYSTEM = 3; зарезервировано
|
||||
* ecx = номер системного курсора
|
||||
* hotspot игнорируется
|
||||
|
||||
----------------- Подфункция 5 - установить курсор -----------------
|
||||
------------------ Подфункция 5 - установить курсор ------------------
|
||||
Устанавливает новый курсор для окна текущего потока.
|
||||
Параметры:
|
||||
* eax = 37 - номер функции
|
||||
* ebx = 5 - номер подфункции
|
||||
* ecx = логический номер курсора загруженного фн. 37.4
|
||||
* ecx = хэндл курсора
|
||||
Возвращаемое значение:
|
||||
* eax = логический номер предыдущего курсора
|
||||
|
||||
Функция устанавливает новый курсор для окна вызвавшего её потока,
|
||||
* eax = хэндл предыдущего установленного курсора
|
||||
Замечания:
|
||||
* Если передан некорректный хэндл, то функция восстановит курсор
|
||||
по умолчанию (стандартную стрелку). В частности, к восстановлению
|
||||
курсора по умолчанию приводит передача ecx=0.
|
||||
|
||||
----------------- Подфункция 6 - удалить курсор -----------------
|
||||
------------------ функция зарезервирована -----------------
|
||||
------------------- Подфункция 6 - удалить курсор --------------------
|
||||
Параметры:
|
||||
* eax = 37 - номер функции
|
||||
* ebx = 6 - номер подфункции
|
||||
* ecx = логический номер курсора загруженного фн. 37.4
|
||||
* ecx = хэндл курсора
|
||||
Возвращаемое значение:
|
||||
* eax = общее количество загруженных курсоров
|
||||
|
||||
Если удаляемый курсор является активным для данного окна,он заменяется
|
||||
системным. Функция не удаляет курсоры загруженные другим приложением.
|
||||
Системные курсоры не удаляются.
|
||||
* eax разрушается
|
||||
Замечания:
|
||||
* Курсор должен был быть ранее загружен текущим потоком
|
||||
(вызовом подфункции 4). Функция не удаляет системные курсоры и
|
||||
курсоры, загруженные другими приложениями.
|
||||
* Если удаляется активный (установленный подфункцией 5) курсор, то
|
||||
восстанавливается курсор по умолчанию (стандартная стрелка).
|
||||
|
||||
======================================================================
|
||||
================== Функция 38 - нарисовать отрезок. ==================
|
||||
@@ -2150,9 +2056,8 @@ db 'Kolibri',0
|
||||
зарезервирован этой же функцией (с такими же значениями ecx,edx).
|
||||
* При обнаружении ошибки (в обоих случаях) никаких действий
|
||||
не производится.
|
||||
* При загрузке система резервирует за собой порты 0..0xff, а при
|
||||
обнаружении COM-мыши - дополнительно диапазон COM-портов
|
||||
0x3f0..0x3ff и/или 0x2f0..0x2ff.
|
||||
* При загрузке система резервирует за собой порты
|
||||
0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно).
|
||||
* При завершении потока автоматически освобождаются все
|
||||
зарезервированные им порты.
|
||||
|
||||
@@ -2621,6 +2526,20 @@ dword-
|
||||
* текущая реализация возвращает eax=14, но это может быть изменено
|
||||
в следующих версиях
|
||||
|
||||
======================================================================
|
||||
====== Функция 52, подфункция 15 - получить локальный MAC-адрес. =====
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 52 - номер функции
|
||||
* ebx = 15 - номер подфункции
|
||||
* ecx = 0 - читать первые 4 байта,
|
||||
ecx = 4 - читать последние 2 байта
|
||||
Возвращаемое значение:
|
||||
* для ecx=0: eax = первые 4 байта MAC-адреса
|
||||
* для ecx=4: ax = последние 2 байта MAC-адреса,
|
||||
старшая половина eax разрушается
|
||||
* для других ecx: eax = -1 как признак ошибки
|
||||
|
||||
======================================================================
|
||||
============ Функция 53, подфункция 0 - открыть UDP-сокет. ===========
|
||||
======================================================================
|
||||
@@ -2915,31 +2834,6 @@ dword-
|
||||
* Данные должны сохраняться в памяти по крайней мере
|
||||
до конца проигрывания.
|
||||
|
||||
======================================================================
|
||||
============= Функция 56 - записать файл на жёсткий диск. ============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 56 - номер функции
|
||||
* ebx = указатель на имя файла
|
||||
* ecx = размер данных для записи (в байтах)
|
||||
* edx = указатель на данные для записи
|
||||
* esi = указатель на путь (ASCIIZ-строку)
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно, иначе код ошибки файловой системы
|
||||
Замечания:
|
||||
* Эта функция устарела; функция 70 позволяет выполнять
|
||||
те же действия с расширенными возможностями.
|
||||
* Данная функция предполагает, что во время её вызова одним
|
||||
приложением никакое другое приложение не работает
|
||||
с жёстким диском.
|
||||
* Путь к файлу - ASCIIZ-строка, которая может быть пустой
|
||||
(если файл создаётся в корневом каталоге) или иметь формат
|
||||
/d1/d2/.../dn, где все имена папок должны иметь формат 8+3, т.е.
|
||||
8 символов имени и 3 символа расширения без разделителя,
|
||||
при необходимости дополненные пробелами;
|
||||
все буквы должны быть заглавные.
|
||||
* Имя к файлу также должно иметь формат 8+3.
|
||||
|
||||
======================================================================
|
||||
============== Функция 58 - работа с файловой системой. ==============
|
||||
======================================================================
|
||||
@@ -3563,9 +3457,9 @@ IPC
|
||||
Замечания:
|
||||
* Есть другой способ выделения/освобождения динамической памяти -
|
||||
подфункции 11, 12, 13 функции 68.
|
||||
Функция не может использоваться совместно с 68.11, 68.12, 68.13
|
||||
Вызов функции будет игнорироваться если приложение создаст локальную
|
||||
кучу вызовом 68.11
|
||||
* Функция не может использоваться совместно с 68.11, 68.12, 68.13.
|
||||
Вызов функции будет игнорироваться, если приложение создаст
|
||||
локальную кучу вызовом 68.11.
|
||||
|
||||
======================================================================
|
||||
================= Функция 66 - работа с клавиатурой. =================
|
||||
@@ -3780,9 +3674,9 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* Вызов функции инициализирует кучу, из которой впоследствии можно
|
||||
выделять и освобождать блоки памяти подфункциями 12 и 13.
|
||||
Размер кучи равен размеру всей свободной памяти приложения.
|
||||
* При повторном вызове функции тем же процессом функция вернёт размер
|
||||
существующей кучи.
|
||||
* После создания кучи вызовы функции 64.1 игнорируются.
|
||||
* При повторном вызове функции тем же процессом функция вернёт
|
||||
размер существующей кучи.
|
||||
* После создания кучи вызовы функции 64 игнорируются.
|
||||
|
||||
======================================================================
|
||||
========== Функция 68, подфункция 12 - выделить блок памяти. =========
|
||||
@@ -3844,9 +3738,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
Параметры:
|
||||
* eax = 68 - номер функции
|
||||
* ebx = 16 - номер подфункции
|
||||
* ecx = указатель на ASCIIZ строку с именем драйвера
|
||||
максимальная длина имени 16 символов включая ноль
|
||||
остальные символы игнорируются
|
||||
* ecx = указатель на ASCIIZ-строку с именем драйвера
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - неудача
|
||||
* иначе eax = хэндл драйвера
|
||||
@@ -3854,10 +3746,12 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* Если драйвер ещё не загружен, он загружается;
|
||||
если драйвер уже загружен, ничего не меняется.
|
||||
* Имя драйвера чувствительно к регистру символов.
|
||||
Максимальная длина имени - 16 символов, включая завершающий
|
||||
нулевой символ, остальные символы игнорируются.
|
||||
* Можно загружать только драйвера, зарегистрированные в системе;
|
||||
в текущей реализации есть ровно 2 таких драйвера:
|
||||
* имя SOUND, файл /rd/1/unisound.obj
|
||||
* имя INFINITY, файл /rd/1/infinity.obj
|
||||
* имя SOUND, файл /rd/1/drivers/unisound.obj
|
||||
* имя INFINITY, файл /rd/1/drivers/infinity.obj
|
||||
|
||||
======================================================================
|
||||
========== Функция 68, подфункция 17 - управление драйвером. =========
|
||||
@@ -3890,6 +3784,21 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
* eax = адрес старого обработчика исключений
|
||||
(0, если он не был установлен)
|
||||
|
||||
======================================================================
|
||||
============= Функция 68, подфункция 19 - загрузить DLL. =============
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 68 - номер функции
|
||||
* ebx = 19 - номер подфункции
|
||||
* ecx = указатель на ASCIIZ-строку с полным путём к DLL
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - неудача
|
||||
* иначе eax = указатель на таблицу экспорта DLL
|
||||
Замечания:
|
||||
* Таблица экспорта представляет собой массив структур по 2 dword'а,
|
||||
заканчивающийся нулём. Первый dword в структуре является
|
||||
указателем на имя функции, второй содержит адрес функции.
|
||||
|
||||
======================================================================
|
||||
======================== Функция 69 - отладка. =======================
|
||||
======================================================================
|
||||
|
||||
+91
-111
@@ -1,4 +1,4 @@
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.6.0.0
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.6.3.0
|
||||
|
||||
Number of the function is located in the register eax.
|
||||
The call of the system function is executed by "int 0x40" command.
|
||||
@@ -680,7 +680,7 @@ Returned value:
|
||||
* eax = 0 - success
|
||||
* else eax = error code of the file system
|
||||
╟рьхўрэш :
|
||||
* Filename is fixed, "menuet.img" (global kernel variable
|
||||
* Filename is fixed, "kolibri.img" (global kernel variable
|
||||
'image_save' from 'preboot.inc')
|
||||
* Drive and partition are defined by subfunction 7
|
||||
and subfunction 8 of function 21.
|
||||
@@ -812,7 +812,7 @@ Format of the table: short version:
|
||||
otherwise it shows number of the recognized partitions, which
|
||||
can be not presented (if the drive is not formatted or if
|
||||
the file system is not supported). Current version of the kernel
|
||||
supports only FAT16 and FAT32 for hard disks.
|
||||
supports only FAT16, FAT32 and NTFS for hard disks.
|
||||
* +6: 4 db: reserved
|
||||
Format of the table: full version:
|
||||
* +0: 10 db: same as for the short version
|
||||
@@ -828,37 +828,13 @@ Format of the information about partition
|
||||
* +0: dword: first physical sector of the partition
|
||||
* +4: dword: last physical sector of the partition
|
||||
(belongs to the partition)
|
||||
* +8: dword: sectors per one copy of FAT
|
||||
* +12 = +0xC: dword: number of copies of FAT
|
||||
* +16 = +0x10: dword: number of sectors per cluster
|
||||
* +20 = +0x14: dword: bytes per sector;
|
||||
current implementation expects 0x200 = 512 in this field
|
||||
* +24 = +0x18: dword: first root cluster in FAT32, 0 for FAT16
|
||||
* +28 = +0x1C: dword: first physical sector of FAT
|
||||
* +32 = +0x20: dword: first physical root sector for FAT16,
|
||||
ignored for FAT32
|
||||
* +36 = +0x24: dword: number of root sectors for FAT16,
|
||||
0 for FAT32
|
||||
* +40 = +0x28: dword: physical sector of the beginning of
|
||||
the data area
|
||||
* +44 = +0x2C: dword: maximum number of a cluster
|
||||
* +48 = +0x30: dword: physical sector of the information
|
||||
about the file system for FAT32, ignored for FAT16
|
||||
* +52 = +0x34: dword: value used as boundary for special
|
||||
values in FAT
|
||||
* +56 = +0x38: dword: value used for bad clusters in FAT
|
||||
* +60 = +0x3C: dword: value used as the end marker for FAT chain
|
||||
* +64 = +0x40: dword: mask for FAT items
|
||||
* +68 = +0x44: byte: file system type: 16 шыш 32
|
||||
* +69 = +0x45: 31 db: reserved
|
||||
* +8: byte: file system type:
|
||||
16=FAT16, 32=FAT32, 1=NTFS
|
||||
* other data are dependent on file system, are modified with
|
||||
kernel modifications and therefore are not described
|
||||
Remarks:
|
||||
* The short table can be used for obtaining the information about
|
||||
available devices.
|
||||
* First two fields in the information about partition
|
||||
gives the parameters of partition, other - parameters of
|
||||
FAT file system. For other file systems (when they will be
|
||||
supported) specific for file system information will be, of
|
||||
course, another, but first two fields will have the same sense.
|
||||
|
||||
======================================================================
|
||||
========== Function 18, subfunction 13 - get kernel version. =========
|
||||
@@ -874,8 +850,8 @@ Structure of the buffer:
|
||||
db a,b,c,d for version a.b.c.d
|
||||
db UID_xxx: one of UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||
db 'name',0 - ASCIIZ-string with the name
|
||||
For Kolibri 0.5.8.1 kernel:
|
||||
db 0,5,8,1
|
||||
For Kolibri 0.6.3.0 kernel:
|
||||
db 0,6,3,0
|
||||
db 2
|
||||
db 'Kolibri',0
|
||||
|
||||
@@ -1139,21 +1115,6 @@ Remarks:
|
||||
use this variable.
|
||||
* To get system language use subfunction 5 of function 26.
|
||||
|
||||
======================================================================
|
||||
=========== Function 21, subfunction 6 - set WSS base port. ==========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 21 - function number
|
||||
* ebx = 6 - subfunction number
|
||||
* ecx = base port
|
||||
Returned value:
|
||||
* eax = 0 - success
|
||||
* eax = -1 - erratic port number
|
||||
Remarks:
|
||||
* Port number must satisfy to condition 0x100<=ecx.
|
||||
* WSS base is used by function 27.
|
||||
* To get WSS base port use subfunction 6 of function 26.
|
||||
|
||||
======================================================================
|
||||
============== Function 21, subfunction 7 - set HD base. =============
|
||||
======================================================================
|
||||
@@ -1574,18 +1535,6 @@ Remarks:
|
||||
appropriate icon (using this function).
|
||||
* To set system language use subfunction 5 of function 21.
|
||||
|
||||
======================================================================
|
||||
=========== Function 26, subfunction 6 - get WSS base port. ==========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 26 - function number
|
||||
* ebx = 6 - subfunction number
|
||||
Returned value:
|
||||
* eax = base port
|
||||
Remarks:
|
||||
* WSS base is used by function 27.
|
||||
* To set WSS base port use subfunction 6 of function 21.
|
||||
|
||||
======================================================================
|
||||
============== Function 26, subfunction 7 - get HD base. =============
|
||||
======================================================================
|
||||
@@ -1676,27 +1625,6 @@ Remarks:
|
||||
* The current implementation uses only low bit of ecx.
|
||||
* To set the current state use subfunction 12 of function 21.
|
||||
|
||||
======================================================================
|
||||
======== Function 27 - set Windows Sound System (WSS) volume. ========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 27 - function number
|
||||
* ebx = what to set:
|
||||
* 1 - set common volume
|
||||
* 2 - set Line In volume
|
||||
* cl = volume level (0x0=highest, 0x1F=lowest,
|
||||
if bit 0x80 is set=disable)
|
||||
Returned value:
|
||||
* eax = 0 - success
|
||||
* eax = 1 - WSS base is not defined
|
||||
* eax = 2 - incorrect subfunction
|
||||
Remarks:
|
||||
* Previously WSS base port must be defined by call to
|
||||
subfunction 6 of function 21.
|
||||
* Set of common volume is ignored (function simply returns eax=0).
|
||||
* Old documentation and kernel sources erraticly name function 2
|
||||
as CD-audio volume.
|
||||
|
||||
======================================================================
|
||||
=================== Function 28 - set SB16 volume. ===================
|
||||
======================================================================
|
||||
@@ -1797,7 +1725,7 @@ Remarks:
|
||||
the current videomode, use function 61.
|
||||
|
||||
======================================================================
|
||||
========= Function 37 - get coordinates/status of the mouse. =========
|
||||
=================== Function 37 - work with mouse. ===================
|
||||
======================================================================
|
||||
|
||||
---------- Subfunction 0 - screen coordinates of the mouse -----------
|
||||
@@ -1833,6 +1761,54 @@ Returned value:
|
||||
* bit 1 is set = right button is pressed
|
||||
* other bits are cleared
|
||||
|
||||
-------------------- Subfunction 4 - load cursor ---------------------
|
||||
Parameters:
|
||||
* eax = 37 - function number
|
||||
* ebx = 4 - subfunction number
|
||||
* dx = data source:
|
||||
* dx = LOAD_FROM_FILE = 0 - data in a file
|
||||
* ecx = pointer to full path to the cursor file
|
||||
* the file must be in the format .cur, which is standard for
|
||||
MS Windows, at that of the size 32*32 pixels
|
||||
* dx = LOAD_FROM_MEM = 1 - data of file are already loaded in memory
|
||||
* ecx = pointer to data of the cursor file
|
||||
* the data format is the same as in the previous case
|
||||
* dx = LOAD_INDIRECT = 2 - data in memory
|
||||
* ecx = pointer to cursor image in the format ARGB 32*32 pixels
|
||||
* edx = 0xXXYY0002, where
|
||||
* XX = x-coordinate of cursor hotspot
|
||||
* YY = y-coordinate
|
||||
* 0 <= XX, YY <= 31
|
||||
Returned value:
|
||||
* eax = 0 - failed
|
||||
* otherwise eax = cursor handle
|
||||
|
||||
--------------------- Subfunction 5 - set cursor ---------------------
|
||||
Sets new cursor for the window of the current thread.
|
||||
Parameters:
|
||||
* eax = 37 - function number
|
||||
* ebx = 5 - subfunction number
|
||||
* ecx = cursor handle
|
||||
Returned value:
|
||||
* eax = handle of previous cursor
|
||||
Remarks:
|
||||
* If the handle is incorrect, the function restores the default
|
||||
cursor (standard arrow). In particular, ecx=0 restores it.
|
||||
|
||||
------------------- Subfunction 6 - delete cursor --------------------
|
||||
Parameters:
|
||||
* eax = 37 - function number
|
||||
* ebx = 6 - subfunction number
|
||||
* ecx = cursor handle
|
||||
Returned value:
|
||||
* eax destroyed
|
||||
Remarks:
|
||||
* The cursor must be loaded previously by the current thread
|
||||
(with the call to subfunction 4). The function does not delete
|
||||
system cursors and cursors, loaded by another applications.
|
||||
* If the active cursor (set by subfunction 5) is deleted,
|
||||
the system restores the default cursor (standard arrow).
|
||||
|
||||
======================================================================
|
||||
====================== Function 38 - draw line. ======================
|
||||
======================================================================
|
||||
@@ -2051,9 +2027,8 @@ Remarks:
|
||||
that was not earlier reserved by this function
|
||||
(with same ecx,edx).
|
||||
* If an error occurs (for both cases) function performs no action.
|
||||
* At booting the system reserves for itself ports 0..0xff, and if
|
||||
COM-mouse is detected - additionally range of COM-ports
|
||||
0x3f0..0x3ff and/or 0x2f0..0x2ff.
|
||||
* At booting the system reserves for itself ports
|
||||
0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (inclusively).
|
||||
* When a thread terminates, all reserved by it ports
|
||||
are freed automatically.
|
||||
|
||||
@@ -2525,6 +2500,20 @@ Returned value:
|
||||
* the current implementation returns eax=14, but this can be changed
|
||||
in future versions
|
||||
|
||||
======================================================================
|
||||
======== Function 52, subfunction 15 - get local MAC address. ========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 52 - function number
|
||||
* ebx = 15 - subfunction number
|
||||
* ecx = 0 - read first 4 bytes,
|
||||
ecx = 4 - read last 2 bytes
|
||||
Returned value:
|
||||
* for ecx=0: eax = first 4 bytes of MAC address
|
||||
* for ecx=4: ax = last 2 bytes of MAC address,
|
||||
high half of eax is destroyed
|
||||
* for other ecx: eax = -1 indicates an error
|
||||
|
||||
======================================================================
|
||||
============ Function 53, subfunction 0 - open UDP-socket. ===========
|
||||
======================================================================
|
||||
@@ -2819,30 +2808,6 @@ Remarks:
|
||||
* The data must be kept in the memory at least up to the end
|
||||
of play.
|
||||
|
||||
======================================================================
|
||||
=============== Function 56 - write file to hard disk. ===============
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 56 - function number
|
||||
* ebx = pointer to the file name
|
||||
* ecx = size of data to write (in bytes)
|
||||
* edx = pointer to data to write
|
||||
* esi = pointer to path (ASCIIZ-string)
|
||||
Returned value:
|
||||
* eax = 0 - success, otherwise file system error code
|
||||
Remarks:
|
||||
* This function is obsolete; function 70 allows to fulfil the same
|
||||
operations with the extended possibilities.
|
||||
* This function assumes that during its call by one application
|
||||
no other application works with hard disk.
|
||||
* The path to file is ASCIIZ-string, which may be empty
|
||||
(if the file is created in the root folder) or have the format
|
||||
/d1/d2/.../dn, where all folder names must have the 8+3 format,
|
||||
i.e. 8 characters of name and 3 characters of the extension
|
||||
without separator, supplemented by blanks if necessary;
|
||||
all letters must be capital.
|
||||
* The file name must also have the format 8+3.
|
||||
|
||||
======================================================================
|
||||
================ Function 58 - work with file system. ================
|
||||
======================================================================
|
||||
@@ -3757,8 +3722,8 @@ Remarks:
|
||||
* The function can load only drivers which are registered in the
|
||||
system; the current implementation contains
|
||||
exactly 2 such drivers:
|
||||
* name SOUND, file /rd/1/unisound.obj
|
||||
* name INFINITY, file /rd/1/infinity.obj
|
||||
* name SOUND, file /rd/1/drivers/unisound.obj
|
||||
* name INFINITY, file /rd/1/drivers/infinity.obj
|
||||
|
||||
======================================================================
|
||||
============ Function 68, subfunction 17 - driver control. ===========
|
||||
@@ -3790,6 +3755,21 @@ Parameters:
|
||||
Returned value:
|
||||
* eax = address of the old exception handler (0, if it was not set)
|
||||
|
||||
======================================================================
|
||||
=============== Function 68, subfunction 19 - load DLL. ==============
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 68 - function number
|
||||
* ebx = 19 - subfunction number
|
||||
* ecx = pointer to ASCIIZ-string with the full path to DLL
|
||||
Returned value:
|
||||
* eax = 0 - failed
|
||||
* otherwise eax = pointer to DLL export table
|
||||
Remarks:
|
||||
* Export table is an array of structures of 2 dword's, terminated
|
||||
by zero. The first dword in structure points to function name,
|
||||
the second dword contains address of function.
|
||||
|
||||
======================================================================
|
||||
====================== Fucntion 69 - debugging. ======================
|
||||
======================================================================
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
;* to MBR - Mario79 *
|
||||
;*************************************************************
|
||||
|
||||
uglobal
|
||||
align 4
|
||||
|
||||
iglobal
|
||||
;******************************************************
|
||||
; Please do not change this place - variables in text
|
||||
; Mario79
|
||||
@@ -16,6 +16,7 @@ iglobal
|
||||
PARTITION_START dd 0x3f
|
||||
PARTITION_END dd 0
|
||||
fs_type db 0 ; 0=none, 1=NTFS, 16=FAT16, 32=FAT32
|
||||
align 4
|
||||
|
||||
fs_dependent_data_start:
|
||||
; FATxx data
|
||||
@@ -64,6 +65,8 @@ end virtual
|
||||
; End place
|
||||
; Mario79
|
||||
;***************************************************************************
|
||||
endg
|
||||
iglobal
|
||||
|
||||
partition_types: ; list of fat16/32 partitions
|
||||
db 0x04 ; DOS: fat16 <32M
|
||||
|
||||
@@ -1172,50 +1172,6 @@ sys_sb16II:
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
|
||||
sys_wss:
|
||||
|
||||
cmp word [wss],word 0
|
||||
jnz wssl1
|
||||
mov [esp+36],dword 1
|
||||
ret
|
||||
wssl1:
|
||||
|
||||
cmp eax,1 ; set volume - main
|
||||
jnz wssl2
|
||||
mov [esp+36],dword 0
|
||||
ret
|
||||
wssl2:
|
||||
|
||||
cmp eax,2 ; set volume - cd
|
||||
jnz wssl3
|
||||
; L
|
||||
mov dx,word [wss]
|
||||
add dx,4
|
||||
mov al,0x2
|
||||
out dx,al
|
||||
mov esi,1
|
||||
call delay_ms
|
||||
mov eax,ebx
|
||||
inc edx
|
||||
out dx,al
|
||||
; R
|
||||
mov dx,word [wss]
|
||||
add dx,4
|
||||
mov al,0x3
|
||||
out dx,al
|
||||
mov esi,1
|
||||
call delay_ms
|
||||
mov eax,ebx
|
||||
inc edx
|
||||
out dx,al
|
||||
mov [esp+36],dword 0
|
||||
ret
|
||||
wssl3:
|
||||
mov [esp+36],dword 2
|
||||
ret
|
||||
|
||||
display_number:
|
||||
|
||||
; eax = print type, al=0 -> ebx is number
|
||||
@@ -1385,7 +1341,6 @@ sys_setup:
|
||||
; 3=cd base 1, pri.master 2, pri slave 3 sec master, 4 sec slave
|
||||
; 4=sb16 base , base io address
|
||||
; 5=system language, 1eng 2fi 3ger 4rus
|
||||
; 6=wss base , base io address
|
||||
; 7=hd base 1, pri.master 2, pri slave 3 sec master, 4 sec slave
|
||||
; 8=fat32 partition in hd
|
||||
; 9
|
||||
@@ -1502,17 +1457,6 @@ cd_base db 0
|
||||
ret
|
||||
nsyse5:
|
||||
|
||||
cmp eax,6 ; WSS
|
||||
jnz nsyse6
|
||||
cmp ebx,0x100
|
||||
jb nsyse6
|
||||
mov [wss],ebx
|
||||
ret
|
||||
|
||||
wss_temp dd 0
|
||||
|
||||
nsyse6:
|
||||
|
||||
cmp eax,7 ; HD BASE
|
||||
jne nsyse7
|
||||
test ebx,ebx
|
||||
@@ -1612,7 +1556,6 @@ sys_getsetup:
|
||||
; 3=cd base 1, pri.master 2, pri slave 3 sec master, 4 sec slave
|
||||
; 4=sb16 base , base io address
|
||||
; 5=system language, 1eng 2fi 3ger 4rus
|
||||
; 6=wss base
|
||||
; 7=hd base 1, pri.master 2, pri slave 3 sec master, 4 sec slave
|
||||
; 8=fat32 partition in hd
|
||||
; 9=get hs timer tic
|
||||
@@ -1683,12 +1626,6 @@ sys_getsetup:
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
ngsyse5:
|
||||
cmp eax,6
|
||||
jnz ngsyse6
|
||||
mov eax,[wss]
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
ngsyse6:
|
||||
cmp eax,7
|
||||
jnz ngsyse7
|
||||
movzx eax,[hd_base]
|
||||
@@ -5022,7 +4959,6 @@ wraw_bacground_select db 0
|
||||
pci_access_enabled dd 0x0 ; 0 = disabled , 1 = enabled
|
||||
|
||||
sb16 dd 0x0
|
||||
wss dd 0x0
|
||||
|
||||
buttontype dd 0x0
|
||||
windowtypechanged dd 0x0
|
||||
|
||||
Reference in new issue
Block a user