Compare commits

...

4 Commits

Author SHA1 Message Date
e7d1a0b5db dgen local fix for the quotes issue 2026-02-27 17:53:42 +02:00
cc1034d849 fb2reader: add to oberon07 build system (#343)
Part of issue #328

Reviewed-on: KolibriOS/kolibrios#343
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: hrigar <h4gar02@protonmail.com>
Co-committed-by: hrigar <h4gar02@protonmail.com>
2026-02-26 20:55:58 +00:00
06c1497624 system/docs: update docs and SF constants to match actual kernel (#306)
- Update sysfuncs.txt and sysfuncr.txt to match actual kernel code:
  - Add missing SF's info
  - Add missing constants
  - Fix some mistakes
- Update KOSfuncs.inc to match actual kernel code:
  - Remove obsolete constants
  - Add missing constants
  - Rename some constants to match their names in docs

Reviewed-on: KolibriOS/kolibrios#306
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-02-26 17:25:16 +00:00
b52da3e1c3 koldbg: use shared KOSfuncs definitions
Signed-off-by: hrigar <h4gar02@protonmail.com>
2026-02-25 01:05:45 +05:30
11 changed files with 394 additions and 427 deletions

View File

@@ -25,7 +25,6 @@ img_files = {
{"MACROS.INC", SRC_PROGS .. "/macros.inc"}, {"MACROS.INC", SRC_PROGS .. "/macros.inc"},
-- {"CONFIG.INC", SRC_PROGS .. "/config.inc"}, -- {"CONFIG.INC", SRC_PROGS .. "/config.inc"},
{"STRUCT.INC", SRC_PROGS .. "/struct.inc"}, {"STRUCT.INC", SRC_PROGS .. "/struct.inc"},
{"FB2READ", "common/fb2read"},
{"ALLGAMES", "common/allgames"}, {"ALLGAMES", "common/allgames"},
{"HOME.PNG", "common/wallpapers/T_Home.png"}, {"HOME.PNG", "common/wallpapers/T_Home.png"},
{"ICONS32.PNG", "common/icons32.png"}, {"ICONS32.PNG", "common/icons32.png"},
@@ -749,6 +748,7 @@ end -- tup.getconfig('NO_TCC') ~= 'full'
if tup.getconfig('NO_OB07') ~= 'full' then if tup.getconfig('NO_OB07') ~= 'full' then
tup.append_table(img_files, { tup.append_table(img_files, {
{"DEVELOP/CEDIT", VAR_PROGS .. "/develop/cedit/cedit"}, {"DEVELOP/CEDIT", VAR_PROGS .. "/develop/cedit/cedit"},
{"FB2READ", VAR_PROGS .. "/other/fb2reader/fb2read"},
}) })
end -- tup.getconfig('NO_OB07') ~= 'full' end -- tup.getconfig('NO_OB07') ~= 'full'

Binary file not shown.

View File

@@ -1985,7 +1985,7 @@ path db 'HD0/1',0
подфункция 2 функции 15. подфункция 2 функции 15.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET_RECT (39) eax - SF_BACKGROUND_GET (39)
====================================================================== ======================================================================
== Функция 39, подфункция 3 - получить прямоугольную область фона = == Функция 39, подфункция 3 - получить прямоугольную область фона =
====================================================================== ======================================================================
@@ -2169,7 +2169,7 @@ path db 'HD0/1',0
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
* ecx = указатель на таблицу цветов * ecx = указатель на таблицу цветов
* edx = размер таблицы цветов * edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости) (до 192 байт; 40 байт для базовой структуры)
Формат таблицы цветов указан в описании подфункции 3. Формат таблицы цветов указан в описании подфункции 3.
Возвращаемое значение: Возвращаемое значение:
* функция не возвращает значения * функция не возвращает значения
@@ -2196,32 +2196,33 @@ path db 'HD0/1',0
* ecx = указатель на буфер размером edx байт, * ecx = указатель на буфер размером edx байт,
куда будет записана таблица куда будет записана таблица
* edx = размер таблицы цветов * edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости) (до 192 байт; 40 байт для базовой структуры)
Возвращаемое значение: Возвращаемое значение:
* функция не возвращает значения * функция не возвращает значения
Формат таблицы цветов: каждый элемент - Формат таблицы цветов: каждый элемент -
dword-значение цвета 0x00RRGGBB dword-значение цвета 0x00RRGGBB
* +0: dword: none - зарезервировано * +0: dword: frame
* +4: dword: none - зарезервировано * +4: dword: grab
* +8: dword: work_dark - темный цвет рабочей области для придания * +8: dword: work_dark - темный цвет рабочей области для придания
объемна элементам интерфейса объемна элементам интерфейса
* +12 = +0xC: dword: work_light - светлый цвет рабочей области для * +12 = +0xC: dword: work_light - светлый цвет рабочей области для
придания объемна элементам интерфейса придания объемна элементам интерфейса
* +16 = +0x10: dword: grab_text - цвет текста на заголовке * +16 = +0x10: dword: grab_text - цвет текста на заголовке
* +20 = +0x14: dword: work - цвет рабочей области * +20 = +0x14: dword: work - цвет рабочей области
* +24 = +0x18: dword: button - цвет кнопки в рабочей области * +24 = +0x18: dword: work_button - цвет кнопки в рабочей области
* +28 = +0x1C: dword: button_text - цвет текста на кнопке * +28 = +0x1C: dword: work_button_text - цвет текста на кнопке
в рабочей области в рабочей области
* +32 = +0x20: dword: work_text - цвет текста в рабочей области * +32 = +0x20: dword: work_text - цвет текста в рабочей области
* +36 = +0x24: dword: graph - цвет графики в рабочей области * +36 = +0x24: dword: graph - цвет графики в рабочей области
Замечания: Замечания:
* Структура таблицы цветов описана в стандартном включаемом файле * Структура таблицы цветов описана в стандартном включаемом файле
macros.inc под названием system_colors; например, можно писать: macros.inc под названием system_colors; например, можно писать:
sc system_colors ; объявление переменной sc system_colors ; объявление переменной
... ; где-то надо вызвать ... ; вызов описываемой функции с ecx = sc
; описываемую функцию с ecx=sc mov ecx, [sc.work_button_text] ; устанавливаем цвет текста
mov ecx, [sc.button_text] ; читаем цвет текста ; на кнопке в рабочей области
; на кнопке в рабочей области * Таблица может быть больше (до 192 байт); дополнительные поля
копируются как есть и интерпретируются скинами.
* Использование/неиспользование этих цветов - дело исключительно * Использование/неиспользование этих цветов - дело исключительно
самой программы. Для использования нужно просто при вызове функций самой программы. Для использования нужно просто при вызове функций
рисования указывать цвет, взятый из этой таблицы. рисования указывать цвет, взятый из этой таблицы.
@@ -2491,6 +2492,7 @@ dword-значение цвета 0x00RRGGBB
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
===================== Функция 51, подфункция 1 ======================= ===================== Функция 51, подфункция 1 =======================
========================== Создать поток ============================= ========================== Создать поток =============================
@@ -2505,16 +2507,19 @@ dword-значение цвета 0x00RRGGBB
* иначе eax = TID - идентификатор потока * иначе eax = TID - идентификатор потока
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_THREAD (51) eax - SF_CREATE_THREAD (51) /
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
====================================================================== ======================================================================
===================== Функция 51, подфункция 2 ======================= ===================== Функция 51, подфункция 2 =======================
=================== Получить номер слота потока ====================== ============= Получить номер слота текущего потока ===================
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 51 - номер функции * eax = 51 - номер функции
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
Возвращаемое значение: Возвращаемое значение:
* eax = номер слота потока * eax = номер слота текущего потока
====================================================================== ======================================================================
===================== Функция 51, подфункция 3 ======================= ===================== Функция 51, подфункция 3 =======================
@@ -2755,10 +2760,10 @@ IPC применяется для посылок сообщений от одн
Программе доступны данные графического экрана (область памяти, которая Программе доступны данные графического экрана (область памяти, которая
собственно и отображает содержимое экрана) напрямую без вызовов собственно и отображает содержимое экрана) напрямую без вызовов
системных функций через селектор gs: системных функций через селектор gs:
mov eax, [gs:0] mov eax, [gs:0]
поместит в eax первый dword буфера, содержащий информацию о цвете поместит в eax первый dword буфера, содержащий информацию о цвете
левой верхней точки (и, возможно, цвета нескольких следующих). левой верхней точки (и, возможно, цвета нескольких следующих).
mov [gs:0], eax mov [gs:0], eax
при работе в режимах VESA c LFB при работе в режимах VESA c LFB
установит цвет левой верхней точки установит цвет левой верхней точки
(и возможно, цвета нескольких следующих). (и возможно, цвета нескольких следующих).
@@ -3356,6 +3361,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
====================== Функция 68, подфункция 14 ===================== ====================== Функция 68, подфункция 14 =====================
====== Ожидать получения сигнала от других приложений/драйверов. ===== ====== Ожидать получения сигнала от других приложений/драйверов. =====
@@ -3368,12 +3374,16 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* eax разрушается * eax разрушается
* буфер, на который указывает ecx, содержит следующую информацию: * буфер, на который указывает ecx, содержит следующую информацию:
* +0: dword: идентификатор последующих данных сигнала * +0: dword: идентификатор последующих данных сигнала
* +4: данные принятого сигнала (20 байт), формат которых * +4: 5 dword: данные принятого сигнала, формат которых
определяется первым dword-ом определяется первым dword-ом
Замечания:
* Бесконечно ожидает любое событие в очереди событий текущего потока.
* Сбрасывает байт приоритета в буфере.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
=========== Функция 68, подфункция 16 - загрузить драйвер. =========== =========== Функция 68, подфункция 16 - загрузить драйвер. ===========
====================================================================== ======================================================================
@@ -3382,19 +3392,20 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* ebx = 16 - номер подфункции * ebx = 16 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера * ecx = указатель на ASCIIZ-строку с именем драйвера
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - неудача * eax = хэндл драйвера
* иначе eax = хэндл драйвера 0 при ошибке
Замечания: Замечания:
* Если драйвер ещё не загружен, он загружается; * Если драйвер ещё не загружен, он загружается;
если драйвер уже загружен, ничего не меняется. если драйвер уже загружен, ничего не меняется.
* Имя драйвера чувствительно к регистру символов. * Имя драйвера чувствительно к регистру символов.
Максимальная длина имени - 16 символов, включая завершающий Максимальная длина имени - 16 символов, включая завершающий
нулевой символ, остальные символы игнорируются. нулевой символ, остальные символы игнорируются.
* Драйвер с именем ABC загружается из файла /sys/drivers/ABC.sys. * Драйвер с именем "ABC" загружается из файла /sys/drivers/ABC.sys.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16) ebx - SSF_LOAD_DRIVER (16)
====================================================================== ======================================================================
========== Функция 68, подфункция 17 - управление драйвером. ========= ========== Функция 68, подфункция 17 - управление драйвером. =========
====================================================================== ======================================================================
@@ -3405,19 +3416,21 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* +0: dword: хэндл драйвера * +0: dword: хэндл драйвера
* +4: dword: код функции драйвера * +4: dword: код функции драйвера
* +8: dword: указатель на входные данные * +8: dword: указатель на входные данные
* +12 = +0xC: dword: размер входных данных * +12 = +0x0C: dword: размер входных данных
* +16 = +0x10: dword: указатель на выходные данные * +16 = +0x10: dword: указатель на выходные данные
* +20 = +0x14: dword: размер выходных данных * +20 = +0x14: dword: размер выходных данных
Возвращаемое значение: Возвращаемое значение:
* eax = определяется драйвером * eax = определяется драйвером
-1 при ошибке
Замечания: Замечания:
* Коды функций и структура входных/выходных данных * Коды функций и структура входных/выходных данных
определяются драйвером. определяются драйвером.
* Предварительно должен быть получен хэндл драйвера подфункцией 16. * Хэндл драйвера необходимо предварительно получить подфункцией 16.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_CONTROL_DRIVER (17) ebx - SSF_CONTROL_DRIVER (17)
====================================================================== ======================================================================
== Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. ==
====================================================================== ======================================================================
@@ -3482,7 +3495,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
* ebx = 21 - номер подфункции * ebx = 21 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера * ecx = указатель на ASCIIZ-строку с путем к файлу драйвера
* edx = указатель на командную строку * edx = указатель на командную строку
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - неудача * eax = 0 - неудача
@@ -3674,22 +3687,40 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* функция загружает и, при необходимости, распаковывает файл (kunpack) * функция загружает и, при необходимости, распаковывает файл (kunpack)
====================================================================== ======================================================================
======== Функция 68, подфункция 29 - allocate ring memory. ========= ======= Функция 68, подфункция 29 - выделить кольцевую память. =======
====================================================================== ======================================================================
Parameters: Параметры:
* eax = 68 - function number * eax = 68 - номер функции
* ebx = 29 - subfunction number * ebx = 29 - номер подфункции
* ecx = required size in bytes * ecx = требуемый размер в байтах
Returned value: Возвращаемое значение:
* eax = 0 - failed * eax = 0 - неудача
* eax = pointer to the allocated ring * eax = указатель на выделенную кольцевую память
Remarks: Замечания:
* The requested size must be an exact multiple of pagesize (4 Kb) * Запрошенный размер должен быть кратен размеру страницы (4 Кб).
* The function allocates memory in such a way that you can read and * Память выделяется так, что доступ за пределами буфера приводит
write beyond the size of the allocated memory and will reach the к чтению/записи в его начало.
beginning of the buffer again.
======================================================================
=========== Функция 68, подфункция 30 - выгрузить драйвер. ===========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 30 - номер подфункции
* ecx = указатель на структуру SRV (хэндл драйвера)
* edx = указатель на командную строку (может быть 0)
Возвращаемое значение:
* eax = -1 - неверные параметры
* eax = -2 - ошибка при освобождении памяти драйвера
* иначе eax = указатель на следующую структуру SRV (бывший SRV.fd)
Замечания:
* Перед выгрузкой вызывается точка входа драйвера с DRV_EXIT.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_UNLOAD_DRIVER (30)
====================================================================== ======================================================================
======== Функция 68, подфункция 31 - получить данные драйвера. ======= ======== Функция 68, подфункция 31 - получить данные драйвера. =======
====================================================================== ======================================================================
@@ -3788,7 +3819,7 @@ Remarks:
и при поступлении нового сообщения система будет ждать. и при поступлении нового сообщения система будет ждать.
Для синхронизации обрамляйте всю работу с буфером операциями Для синхронизации обрамляйте всю работу с буфером операциями
блокировки/разблокировки блокировки/разблокировки
neg [bufsize] neg [bufsize]
* Данные в буфере трактуются как массив элементов переменной длины - * Данные в буфере трактуются как массив элементов переменной длины -
сообщений. Формат сообщения указан в общем описании. сообщений. Формат сообщения указан в общем описании.
@@ -4527,7 +4558,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_COUNT (255) bl - SSF_DEVICE_COUNT (-1)
====================================================================== ======================================================================
==== Функция 74, подфункция 0, Получить тип сетевого устройства. ===== ==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
====================================================================== ======================================================================
@@ -4723,10 +4754,11 @@ Remarks:
Возвращаемое значение: Возвращаемое значение:
* eax = число пакетов, полученных с ошибкой с момента запуска * eax = число пакетов, полученных с ошибкой с момента запуска
устройства, -1 при ошибке устройства, -1 при ошибке
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_ERROR_COUNT (14) bl - SSF_RX_PACKET_ERROR_COUNT (14)
====================================================================== ======================================================================
== Функция 74.15, Получить число пакетов отброшенных при получении. == == Функция 74.15, Получить число пакетов отброшенных при получении. ==
====================================================================== ======================================================================
@@ -4740,7 +4772,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12) bl - SSF_RX_PACKET_DROP_COUNT (15)
====================================================================== ======================================================================
=== Функция 74.16, Получить число пакетов утерянных при получении. === === Функция 74.16, Получить число пакетов утерянных при получении. ===
====================================================================== ======================================================================
@@ -4990,13 +5022,39 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_PROTOCOL (76) eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
====================================================================== ======================================================================
============= Функция 77, подфункция 0, Создать фьютекс. ============= ============= Функция 77, подфункция 0, Создать фьютекс. =============
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 0 - номер подфункции * ebx = 0 - номер подфункции
* ecx = указатель на контрольное значение фьютекса (dword) * ecx = контрольное значение фьютекса (dword)
Возвращаемое значение: Возвращаемое значение:
* eax = дескриптор фьютекса, 0 при ошибке * eax = дескриптор фьютекса, 0 при ошибке
@@ -5025,11 +5083,12 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
* ecx = дескриптор фьютекса * ecx = дескриптор фьютекса
* edx = контрольное значение * edx = контрольное значение фьютекса (dword)
* esi = таймаут в сотых секунды, 0 - ждать бесконечно * esi = таймаут в сотых секунды, 0 - ждать бесконечно
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - успешно, -1 - таймаут, * eax = 0 - успешно,
-2 - контрольное значение не соответствует -1 - таймаут,
-2 - контрольное значение фьютекса не соответствует
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5049,7 +5108,11 @@ Remarks:
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - SSF_WAKE (3) ebx - SSF_WAKE (3)
====================================================================== ======================================================================
======= Функция 77, подфункция 10, Прочитать из файла в буфер. ======= Замечания:
* Подфункции 4-7 зарезервированы и сейчас возвращают -1.
* Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF (-9).
======================================================================
=========== Функция 77, подфункция 10, Прочитать из файла. ===========
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 77 - номер функции * eax = 77 - номер функции
@@ -5059,10 +5122,15 @@ Remarks:
* esi = сколько байт прочитать * esi = сколько байт прочитать
Возвращаемое значение: Возвращаемое значение:
* eax = количество прочитанных байт * eax = количество прочитанных байт
0 при EOF
-EBADF (-9) при ошибке
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_FILE_READ (10)
====================================================================== ======================================================================
======== Функция 77, подфункция 11, Записать из буфера в файл. ======= ======== Функция 77, подфункция 11, Записать из буфера в файл. =======
====================================================================== ======================================================================
@@ -5070,14 +5138,19 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 11 - номер подфункции * ebx = 11 - номер подфункции
* ecx = дескриптор файла * ecx = дескриптор файла
* edx = указатель на буфер, откуда брать данные для записи * edx = указатель на буфер, откуда брать данные для записи
* esi = сколько байт записать * esi = сколько байт записать
Возвращаемое значение: Возвращаемое значение:
* eax = количество записанных байт * eax = количество записанных байт
-EBADF (-9) при ошибке
-EPIPE (-32) если нет читателей
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_FILE_WRITE (11)
====================================================================== ======================================================================
=========== Функция 77, подфункция 13, Создать новый pipe. =========== =========== Функция 77, подфункция 13, Создать новый pipe. ===========
====================================================================== ======================================================================
@@ -5089,15 +5162,20 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 13 - номер подфункции * ebx = 13 - номер подфункции
* ecx = адрес pipefd * ecx = адрес pipefd
* edx = флаги. На данный момент если поднят O_CLOEXEC (0x40000), то * edx = флаги. Разрешен только O_CLOEXEC (0x40000).
сисфункция завершится с ошибкой. Поэтому в качестве флагов можно Любые другие биты приводят к -EINVAL (-11).
передать просто 0.
Возвращаемое значение: Возвращаемое значение:
* eax = 0 если успех, иначе ошибка. * eax = 0 если успех,
иначе отрицательный код ошибки:
-EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24)
Примечания:
* В случае успеха pipefd[0] является дескриптором чтения, а pipefd[1]
- дескриптором записи.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_PIPE_CREATE (13)
====================================================================== ======================================================================
========== Функция -1 - завершить выполнение потока/процесса ========= ========== Функция -1 - завершить выполнение потока/процесса =========
====================================================================== ======================================================================
@@ -5115,6 +5193,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_TERMINATE_PROCESS (-1) eax - SF_TERMINATE_PROCESS (-1)
====================================================================== ======================================================================
=== Функция 80 - работа с файловой системой с указанием кодировки. === === Функция 80 - работа с файловой системой с указанием кодировки. ===
====================================================================== ======================================================================

View File

@@ -1972,7 +1972,7 @@ Remarks:
subfunction 2 of function 15. subfunction 2 of function 15.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_BACKGROUND_GET_RECT (39) eax - SF_BACKGROUND_GET (39)
====================================================================== ======================================================================
== Function 39, subfunction 3 - get rect from the background image. = == Function 39, subfunction 3 - get rect from the background image. =
====================================================================== ======================================================================
@@ -2152,7 +2152,7 @@ Parameters:
* ebx = 2 - subfunction number * ebx = 2 - subfunction number
* ecx = pointer to the color table * ecx = pointer to the color table
* edx = size of the color table * edx = size of the color table
(must be 40 bytes for future compatibility) (up to 192 bytes; 40 bytes for the base structure)
Format of the color table is shown in description of subfunction 3. Format of the color table is shown in description of subfunction 3.
Returned value: Returned value:
* function does not return value * function does not return value
@@ -2179,21 +2179,21 @@ Parameters:
* ecx = pointer to the buffer with size edx bytes, * ecx = pointer to the buffer with size edx bytes,
where table will be written where table will be written
* edx = size of color table * edx = size of color table
(must be 40 bytes for future compatibility) (up to 192 bytes; 40 bytes for the base structure)
Returned value: Returned value:
* function does not return value * function does not return value
Format of the color table: Format of the color table:
each item is dword-value for color 0x00RRGGBB each item is dword-value for color 0x00RRGGBB
* +0: dword: none - reserved * +0: dword: frame
* +4: dword: none - reserved * +4: dword: grab
* +8: dword: work_dark - dark color of working area * +8: dword: work_dark - dark color of working area
used to give a user 3D-like feelings about interface elements used to give a user 3D-like feelings about interface elements
* +12 = +0xC: dword: work_light - light color of working area * +12 = +0xC: dword: work_light - light color of working area
used to give a user 3D-like feelings about interface elements used to give a user 3D-like feelings about interface elements
* +16 = +0x10: dword: grab_text - color of text on header * +16 = +0x10: dword: grab_text - color of text on header
* +20 = +0x14: dword: work - color of working area * +20 = +0x14: dword: work - color of working area
* +24 = +0x18: dword: button - color of button in working area * +24 = +0x18: dword: work_button - color of button in working area
* +28 = +0x1C: dword: button_text - color of text on button * +28 = +0x1C: dword: work_button_text - color of text on button
in working area in working area
* +32 = +0x20: dword: work_text - color of text in working area * +32 = +0x20: dword: work_text - color of text in working area
* +36 = +0x24: dword: graph - color of graphics in working area * +36 = +0x24: dword: graph - color of graphics in working area
@@ -2206,6 +2206,8 @@ Remarks:
; this function with ecx=sc ; this function with ecx=sc
mov ecx, [sc.work_button_text] ; read text color on mov ecx, [sc.work_button_text] ; read text color on
; button in working area ; button in working area
* The table may be longer (up to 192 bytes); extra fields are copied
as-is and are interpreted by skins.
* A program itself decides to use or not to use color table. * A program itself decides to use or not to use color table.
For usage program must simply at calls to drawing functions select For usage program must simply at calls to drawing functions select
color taken from the table. color taken from the table.
@@ -2478,11 +2480,11 @@ Remarks:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
==================== Function 51 - create thread. ==================== ============= Function 51, subfunction 1 - create thread. ============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 51 - function number * eax = 51 - function number
* ebx = 1 - unique subfunction * ebx = 1 - subfunction number
* ecx = address of thread entry point (starting eip) * ecx = address of thread entry point (starting eip)
* edx = pointer to thread stack (starting esp) * edx = pointer to thread stack (starting esp)
Returned value: Returned value:
@@ -2491,6 +2493,49 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_CREATE_THREAD (51) eax - SF_CREATE_THREAD (51)
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
======================================================================
================== Function 51, subfunction 2 ========================
================== Get current thread slot number ====================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 2 - subfunction number
Returned value:
* eax = slot number of the current thread
======================================================================
================== Function 51, subfunction 3 ========================
===================== Get thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 3 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
======================================================================
================== Function 51, subfunction 4 ========================
===================== Set thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 4 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
* edx = new thread priority
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = previous thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
====================================================================== ======================================================================
==================== Function 54, subfunction 0 ====================== ==================== Function 54, subfunction 0 ======================
============== Get the number of slots in the clipboard. ============= ============== Get the number of slots in the clipboard. =============
@@ -3289,61 +3334,63 @@ Remarks:
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
===================== Function 68, subfunction 14 ==================== ===================== Function 68, subfunction 14 ====================
============ Wait for signal from another program/driver. ============ ======= Wait for a signal from other applications/drivers. ===========
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 14 - subfunction number * ebx = 14 - subfunction number
* ecx = pointer to the buffer for information (24 bytes) * ecx = pointer to data buffer (6 dword = 24 bytes)
Returned value: Returned value:
* eax is destroyed
* buffer pointed to by ecx contains the following information: * buffer pointed to by ecx contains the following information:
* +0: dword: identifier for following data of signal * +0: dword: EVENT.code (identifier of following data)
* +4: dword: data of signal (20 bytes), format of which is defined * +4: 5 dword: EVENT.data, format depends on EVENT.code
by the first dword Remarks:
* Waits indefinitely for any event in the current thread event queue.
* The priority byte in the buffer is cleared by the kernel.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
============= Function 68, subfunction 16 - load driver. ============= =========== Function 68, subfunction 16 - load driver. ===============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 16 - subfunction number * ebx = 16 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name * ecx = pointer to ASCIIZ-string with driver name
Returned value: Returned value:
* eax = 0 - failed * eax = driver handle, 0 on error
* otherwise eax = driver handle
Remarks: Remarks:
* If the driver was not loaded yet, it is loaded; * If the driver is not loaded yet, it is loaded;
if the driver was loaded yet, nothing happens. if the driver is already loaded, nothing changes.
* Driver name is case-sensitive. * Driver name is case-sensitive.
Maximum length of the name is 16 characters, including Maximum length of the name is 16 characters, including
terminating null character, the rest is ignored. terminating null character, the rest is ignored.
* Driver ABC is loaded from file /sys/drivers/ABC.sys. * Driver with name "ABC" is loaded from /sys/drivers/ABC.sys.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16) ebx - SSF_LOAD_DRIVER (16)
====================================================================== ======================================================================
============ Function 68, subfunction 17 - driver control. =========== ========== Function 68, subfunction 17 - control driver. =============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 17 - subfunction number * ebx = 17 - subfunction number
* ecx = pointer to the control structure: * ecx = pointer to the control structure:
* +0: dword: handle of driver * +0: dword: driver handle
* +4: dword: code of driver function * +4: dword: driver function code
* +8: dword: pointer to input data * +8: dword: pointer to input data
* +12 = +0xC: dword: size of input data * +12: dword: size of input data
* +16 = +0x10: dword: pointer to output data * +16: dword: pointer to output data
* +20 = +0x14: dword: size of output data * +20: dword: size of output data
Returned value: Returned value:
* eax = determined by driver * eax = determined by driver, -1 on error
Remarks: Remarks:
* Function codes and the structure of input/output data * Function codes and the structure of input/output data
are defined by driver. are defined by the driver.
* Previously one must obtain driver handle by subfunction 16. * Driver handle can be obtained by subfunction 16.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
@@ -3411,7 +3458,7 @@ Remarks:
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 21 - subfunction number * ebx = 21 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name * ecx = pointer to ASCIIZ-string with path to driver file
* edx = pointer to command line * edx = pointer to command line
Returned value: Returned value:
* eax = 0 - failed * eax = 0 - failed
@@ -3616,9 +3663,24 @@ Remarks:
write beyond the size of the allocated memory and will reach the write beyond the size of the allocated memory and will reach the
beginning of the buffer again. beginning of the buffer again.
======================================================================
=========== Function 68, subfunction 30 - unload driver. ============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 30 - subfunction number
* ecx = pointer to SRV structure (driver handle)
* edx = pointer to command line (may be 0)
Returned value:
* eax = -1 - invalid parameters
* eax = -2 - error while freeing driver memory
* otherwise eax = pointer to the next SRV structure (former SRV.fd)
Remarks:
* The driver entry is called with DRV_EXIT before unloading.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_MEM_ALLOC_RING (29) ebx - SSF_UNLOAD_DRIVER (30)
====================================================================== ======================================================================
=========== Function 68, subfunction 31 - get driver data. =========== =========== Function 68, subfunction 31 - get driver data. ===========
@@ -3833,7 +3895,7 @@ Remarks:
eax - SF_DEBUG (69) eax - SF_DEBUG (69)
ebx - SSF_RESUME (5) ebx - SSF_RESUME (5)
====================================================================== ======================================================================
= Fucntion 69, subfunction 6 - read from memory of debugged process. = = Function 69, subfunction 6 - read from memory of debugged process. =
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 69 - function number * eax = 69 - function number
@@ -4442,17 +4504,17 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_BLITTER (73) eax - SF_BLITTER (73)
====================================================================== ======================================================================
= Function 74, Subfunction 255, Get number of active network devices. = = Function 74, Subfunction -1, Get number of active network devices. =
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 74 - function number * eax = 74 - function number
* bl = 255 - subfunction number * bl = -1 - subfunction number
Returned value: Returned value:
* eax = number of active network devices * eax = number of active network devices
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_COUNT (255) bl - SSF_DEVICE_COUNT (-1)
====================================================================== ======================================================================
======== Function 74, Subfunction 0, Get network device type. ======== ======== Function 74, Subfunction 0, Get network device type. ========
====================================================================== ======================================================================
@@ -4605,7 +4667,7 @@ Parameters:
* bl = 11 - subfunction number * bl = 11 - subfunction number
* bh = device number * bh = device number
Returned value: Returned value:
* eax = Number of erroneous packets received since device start, -1 on error * eax = Number of erroneous packets transmitted since device start, -1 on error
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
@@ -4661,7 +4723,7 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12) bl - SSF_RX_PACKET_DROP_COUNT (15)
====================================================================== ======================================================================
==== Function 74, Subfunction 16, Get RX missed packets counter. ===== ==== Function 74, Subfunction 16, Get RX missed packets counter. =====
====================================================================== ======================================================================
@@ -5174,19 +5236,41 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_PROTOCOL (76) eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
====================================================================== ======================================================================
========== Function 77, Subfunction 0, Create futex object =========== ========== Function 77, Subfunction 0, Create futex object ===========
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 77 - function number * eax = 77 - function number
* ebx = 0 - subfunction number * ebx = 0 - subfunction number
* ecx = pointer to futex dword * ecx = futex control value (dword)
Returned value: Returned value:
* eax = futex handle, 0 on error * eax = futex handle, 0 on error
Remarks:
* Use subfunction 1 to destroy the futex.
The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5201,7 +5285,8 @@ Parameters:
Returned value: Returned value:
* eax = 0 - successfull, -1 on error * eax = 0 - successfull, -1 on error
Remarks: Remarks:
* The futex handle must have been created by subfunction 0 * The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5213,17 +5298,12 @@ Parameters:
* eax = 77 - function number * eax = 77 - function number
* ebx = 2 - subfunction number * ebx = 2 - subfunction number
* ecx = futex handle * ecx = futex handle
* edx = control value * edx = futex control value (dword)
* esi = timeout in system ticks or 0 for infinity * esi = timeout in hundredths of a second, 0 - wait forever
Returned value: Returned value:
* eax = 0 - successfull * eax = 0 - successfull
-1 - timeout -1 - timeout
-2 - futex dword does not have the same value as edx -2 - futex control value doesn't match
Remarks:
* This functionn tests that the value at the futex dword still
contains the expected control value, and if so, then sleeps
waiting for a wake operation on the futex.
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5239,15 +5319,71 @@ Parameters:
Returned value: Returned value:
* eax = number of waiters that were woken up * eax = number of waiters that were woken up
Remarks:
* This function wakes at most edx of the waiters that are
waiting (e.g., inside futex wait) on the futex dword
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - SSF_WAKE (3) ebx - SSF_WAKE (3)
====================================================================== ======================================================================
Remarks:
* Subfunctions 4-7 are reserved and currently return -1.
* Subfunctions 8-9 and 12 are not implemented and return -EBADF (-9).
======================================================================
============ Function 77, Subfunction 10, Read from file. ============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 10 - subfunction number
* ecx = file handle
* edx = pointer to destination buffer
* esi = number of bytes to read
Returned value:
* eax = number of bytes read,
0 on EOF,
-EBADF (-9) on error
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_FILE_READ (10)
======================================================================
=========== Function 77, Subfunction 11, Write to file. =============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 11 - subfunction number
* ecx = file handle
* edx = pointer to source buffer
* esi = number of bytes to write
Returned value:
* eax = number of bytes written,
-EBADF (-9) on error,
-EPIPE (-32) if no readers
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_FILE_WRITE (11)
======================================================================
========== Function 77, Subfunction 13, Create pipe. ================
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 13 - subfunction number
* ecx = pointer to pipefd[2] array (two dword handles)
* edx = flags (only O_CLOEXEC is allowed)
Returned value:
* eax = 0 on success,
negative errno value on error:
-EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24)
Remarks:
* On success, pipefd[0] is a read handle and pipefd[1] is a
write handle.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_PIPE_CREATE (13)
======================================================================
=== Function 80 - file system interface with parameter of encoding === === Function 80 - file system interface with parameter of encoding ===
====================================================================== ======================================================================
Parameters: Parameters:

View File

@@ -70,11 +70,11 @@ SF_SYSTEM=18
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
SSSF_GET_WB=1 SSSF_GET_WB=1
SSSF_SET_WB=2 SSSF_SET_WB=2
SF_MIDI=20 SF_MIDI=20 ; deprecated/undefined in current kernel
SSF_RESET=1 SSF_RESET=1 ; deprecated
SSF_OUTPUT=2 SSF_OUTPUT=2 ; deprecated
SF_SYSTEM_SET=21 SF_SYSTEM_SET=21
SSF_MPU_MIDI_BASE=1 SSF_MPU_MIDI_BASE=1 ; not used (reserved)
SSF_KEYBOARD_LAYOUT=2 SSF_KEYBOARD_LAYOUT=2
SSF_SYS_LANG=5 SSF_SYS_LANG=5
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
@@ -112,7 +112,7 @@ SF_BACKGROUND_GET=39
;SSF_PIXEL_BG=2 ;SSF_PIXEL_BG=2
;SSF_MODE_BG=4 ;SSF_MODE_BG=4
SF_SET_EVENTS_MASK=40 ; turn on/off desired events SF_SET_EVENTS_MASK=40 ; turn on/off desired events
SF_PORT_IN_OUT=43 ; input/output to a port SF_PORT_IN_OUT=43 ; deprecated/undefined in current kernel
SF_SET_PORTS=46 ; reserve/free a group of input/output ports SF_SET_PORTS=46 ; reserve/free a group of input/output ports
SF_DRAW_NUMBER=47 ; draw number to the window SF_DRAW_NUMBER=47 ; draw number to the window
SF_STYLE_SETTINGS=48 SF_STYLE_SETTINGS=48
@@ -132,6 +132,10 @@ SF_STYLE_SETTINGS=48
SF_APM=49 SF_APM=49
SF_SET_WINDOW_SHAPE=50 SF_SET_WINDOW_SHAPE=50
SF_CREATE_THREAD=51 SF_CREATE_THREAD=51
SSF_CREATE_THREAD=1
SSF_GET_CURR_THREAD_SLOT=2
SSF_GET_THREAD_PRIORITY=3
SSF_SET_THREAD_PRIORITY=4
SF_CLIPBOARD=54 SF_CLIPBOARD=54
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
SSF_READ_CB=1 SSF_READ_CB=1
@@ -184,7 +188,7 @@ SF_SYS_MISC=68
SSF_HEAP_INIT=11 SSF_HEAP_INIT=11
SSF_MEM_ALLOC=12 SSF_MEM_ALLOC=12
SSF_MEM_FREE=13 SSF_MEM_FREE=13
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver SSF_WAIT_SIGNAL=14 ; wait for a signal from other process
SSF_LOAD_DRIVER=16 SSF_LOAD_DRIVER=16
SSF_CONTROL_DRIVER=17 SSF_CONTROL_DRIVER=17
SSF_LOAD_DLL=19 SSF_LOAD_DLL=19
@@ -196,6 +200,9 @@ SF_SYS_MISC=68
SSF_SET_EXCEPTION_STATE=25 SSF_SET_EXCEPTION_STATE=25
SSF_MEM_FREE_EXT=26 SSF_MEM_FREE_EXT=26
SSF_LOAD_FILE=27 SSF_LOAD_FILE=27
SSF_MEM_ALLOC_RING=29
SSF_UNLOAD_DRIVER=30
SSF_GET_DRIVER_DATA=31
SF_DEBUG=69 SF_DEBUG=69
SSF_SET_MESSAGE_AREA=0 SSF_SET_MESSAGE_AREA=0
SSF_GET_REGISTERS=1 SSF_GET_REGISTERS=1
@@ -221,7 +228,7 @@ SF_FILE=70
SF_SET_CAPTION=71 SF_SET_CAPTION=71
SF_SEND_MESSAGE=72 SF_SEND_MESSAGE=72
SF_BLITTER=73 SF_BLITTER=73
SF_NETWORK_DEVICE=74 SF_NETWORK_GET=74
SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_COUNT=255 ; get number of active network devices
SSF_DEVICE_TYPE=0 SSF_DEVICE_TYPE=0
SSF_DEVICE_NAME=1 SSF_DEVICE_NAME=1
@@ -250,7 +257,7 @@ SF_NETWORK_SOCKET=75
SSF_RECEIVE=7 SSF_RECEIVE=7
SSF_SET_OPTIONS=8 SSF_SET_OPTIONS=8
SSF_GET_OPTIONS=9 SSF_GET_OPTIONS=9
SSF_SOCKET_PAIR=10 SSF_GET_PAIR=10
SF_NETWORK_PROTOCOL=76 SF_NETWORK_PROTOCOL=76
SSF_ETHERNET_READ_MAC=0 SSF_ETHERNET_READ_MAC=0
SSF_IP4_PACKETS_SENT=10000h SSF_IP4_PACKETS_SENT=10000h
@@ -283,6 +290,9 @@ SF_FUTEX=77
SSF_DESTROY=1 SSF_DESTROY=1
SSF_WAIT=2 SSF_WAIT=2
SSF_WAKE=3 SSF_WAKE=3
SSF_FILE_READ=10
SSF_FILE_WRITE=11
SSF_PIPE_CREATE=13
; File system errors: ; File system errors:
FSERR_SUCCESS=0 FSERR_SUCCESS=0

View File

@@ -172,7 +172,7 @@ else
end if end if
} }
include 'kosfuncs.inc' include '../../KOSfuncs.inc'
include '../../macros.inc' include '../../macros.inc'
include 'font.inc' include 'font.inc'

View File

@@ -1,298 +0,0 @@
; KolibriOS system functions:
SF_TERMINATE_PROCESS=-1
SF_CREATE_WINDOW=0 ; define and draw the window
SF_PUT_PIXEL=1 ; draw pixel to the window
SF_GET_KEY=2 ; get code of the pressed key
SF_GET_SYS_TIME=3
SF_DRAW_TEXT=4
SF_SLEEP=5 ; pause process
SF_PUT_IMAGE=7 ; draw image to the window
SF_DEFINE_BUTTON=8 ; define/delete the button
SF_THREAD_INFO=9 ; information on execution thread
SF_WAIT_EVENT=10 ; wait for event
SF_CHECK_EVENT=11 ; check for event and return
SF_REDRAW=12
SSF_BEGIN_DRAW=1
SSF_END_DRAW=2
SF_DRAW_RECT=13 ; draw rectangle to the window
SF_GET_SCREEN_SIZE=14 ; get screen resolution
SF_BACKGROUND_SET=15 ; work with desktop background graphics
SSF_SIZE_BG=1 ; set a size of the background image
SSF_PIXEL_BG=2 ; put pixel on the background image
SSF_REDRAW_BG=3 ; redraw background
SSF_MODE_BG=4 ; set drawing mode for the background
SSF_IMAGE_BG=5 ; put block of pixels on the background image
SSF_MAP_BG=6 ; map background image to the address space of the process
SSF_UNMAP_BG=7 ; close mapped background data
SSF_LAST_DRAW=8 ; get coordinates of the last draw to the background
SSF_REDRAW_RECT=9 ; redraws a rectangular part of the background
SF_RD_TO_FLOPPY=16 ; save ramdisk on the floppy
SF_GET_BUTTON=17 ; get ID of the pressed button
SF_SYSTEM=18
SSF_UNFOCUS_WINDOW=1 ; take focus from the window of the given thread
SSF_TERMINATE_THREAD=2 ; terminate process/thread by the slot number
SSF_FOCUS_WINDOW=3 ; give focus to the window of the given thread
SSF_GET_IDLE_COUNT=4 ; get counter of idle cycles per second
SSF_GET_CPU_FREQUENCY=5 ; get CPU clock rate
SSF_RD_TO_HDD=6 ; save ramdisk to the file on hard disk
SSF_GET_ACTIVE_WINDOW=7 ; get slot number of the active window
SSF_SPEAKER=8
SSSF_GET_STATE=1
SSSF_TOGGLE=2
SSF_SHUTDOWN=9 ; system shutdown/reboot
SSF_MINIMIZE_WINDOW=10 ; minimize active window
SSF_INFO_DISC_SYS=11 ; get disk subsystem information
SSF_KERNEL_VERSION=13 ; get kernel version
SSF_WAIT_RETRACE=14 ; wait for screen retrace
SSF_CURSOR_CENTER=15 ; center mouse cursor on the screen
SSF_GET_FREE_RAM=16 ; get size of free RAM
SSF_GET_TOTAL_RAM=17 ; get total amount of RAM
SSF_TERMINATE_THREAD_ID=18 ; Terminate process/thread by the ID
SSF_MOUSE_SETTINGS=19
SSSF_GET_SPEED=0
SSSF_SET_SPEED=1
SSSF_GET_SPEEDUP=2
SSSF_SET_SPEEDUP=3 ; set mouse acceleration
SSSF_SET_POS=4 ; set mouse pointer position
SSSF_SET_BUTTON=5 ; simulate state of mouse buttons
SSSF_GET_DOUBLE_CLICK_DELAY=6
SSSF_SET_DOUBLE_CLICK_DELAY=7
SSF_GET_RAM_INFO=20 ; get information on RAM
SSF_GET_THREAD_SLOT=21 ; get slot number of process/thread by the ID
SSF_FOREIGN_WINDOW=22 ; operations with window of another thread by slot/ID
SSSF_MINIMIZE=0
SSSF_MINIMIZE_ID=1
SSSF_RESTORE=2
SSSF_RESTORE_ID=3
SSF_MINIMIZE_ALL=23
SSF_SET_SCREEN_LIMITS=24
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
SSSF_GET_WB=1
SSSF_SET_WB=2
SF_MIDI=20
SSF_RESET=1
SSF_OUTPUT=2
SF_SYSTEM_SET=21
SSF_MPU_MIDI_BASE=1
SSF_KEYBOARD_LAYOUT=2
SSF_SYS_LANG=5
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
SSF_ACCESS_PCI=12 ; setting of low-level access to PCI
SF_SET_TIME_DATE=22
SF_WAIT_EVENT_TIMEOUT=23; wait for event with timeout
SF_CD=24
SSF_EJECT_TRAY=4
SSF_INSERT_TRAY=5
SF_SCREEN_PUT_IMAGE=25 ; put image on the background layer
SF_SYSTEM_GET=26
; Same as SF_SYSTEM_SET, plus:
SSF_TIME_COUNT=9
SSF_TIME_COUNT_PRO=10 ; get value of the high precision time counter
SF_GET_SYS_DATE=29
SF_CURRENT_FOLDER=30
SSF_SET_CF=1 ; set current folder for the thread
SSF_GET_CF=2
SSF_ADD_SYS_FOLDER=3 ; install the add.system directory for the kernel
SF_GET_PIXEL_OWNER=34 ; get slot number of the screen pixel owner
SF_GET_PIXEL=35 ; read the screen pixel color
SF_GET_IMAGE=36 ; read the screen area
SF_MOUSE_GET=37
SSF_SCREEN_POSITION=0
SSF_WINDOW_POSITION=1
SSF_BUTTON=2 ; states of the mouse buttons
SSF_BUTTON_EXT=3 ; states and events of the mouse buttons
SSF_LOAD_CURSOR=4
SSF_SET_CURSOR=5
SSF_DEL_CURSOR=6
SSF_SCROLL_DATA=7
SF_DRAW_LINE=38
SF_BACKGROUND_GET=39
;SSF_SIZE_BG=1
;SSF_PIXEL_BG=2
;SSF_MODE_BG=4
SF_SET_EVENTS_MASK=40 ; turn on/off desired events
SF_PORT_IN_OUT=43 ; input/output to a port
SF_SET_PORTS=46 ; reserve/free a group of input/output ports
SF_DRAW_NUMBER=47 ; draw number to the window
SF_STYLE_SETTINGS=48
SSF_APPLY=0 ; apply screen settings
SSF_SET_BUTTON_STYLE=1
SSF_SET_COLORS=2
SSF_GET_COLORS=3 ; get standard window colors
SSF_GET_SKIN_HEIGHT=4
SSF_GET_SCREEN_AREA=5 ; get screen working area
SSF_SET_SCREEN_AREA=6
SSF_GET_SKIN_MARGINS=7
SSF_SET_SKIN=8
SSF_GET_FONT_SMOOTH=9
SSF_SET_FONT_SMOOTH=10
SSF_GET_FONT_SIZE=11
SSF_SET_FONT_SIZE=12
SF_APM=49
SF_SET_WINDOW_SHAPE=50
SF_CREATE_THREAD=51
SF_CLIPBOARD=54
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
SSF_READ_CB=1
SSF_WRITE_CB=2
SSF_DEL_SLOT=3 ; delete the last slot in the clipboard
SSF_UNLOCK_BUFFER=4 ; emergency buffer unlock
SF_SPEAKER_PLAY=55
SF_PCI_BIOS=57
SF_IPC=60 ; Inter Process Communication
SSF_SET_AREA=1 ; set area for IPC receiving
SSF_SEND_MESSAGE=2
SF_GET_GRAPHICAL_PARAMS=61
SSF_SCREEN_SIZE=1
SSF_BITS_PER_PIXEL=2
SSF_BYTES_PER_LINE=3
SF_PCI=62
SSF_GET_VERSION=0 ; get version of PCI-interface
SSF_GET_LAST_BUS=1 ; get number of the last PCI-bus
SSF_GET_ADRR_MODE=2 ; get addressing mode of the PCI configuration space
SSF_READ_BYTE=4
SSF_READ_WORD=5
SSF_READ_DWORD=6
SSF_WRITE_BYTE=8
SSF_WRITE_WORD=9
SSF_WRITE_DWORD=10
SF_BOARD=63
SSF_DEBUG_WRITE=1
SSF_DEBUG_READ=2
SF_MEMORY_RESIZE=64 ; resize total application memory
SF_PUT_IMAGE_EXT=65 ; draw image with palette to the window
SF_KEYBOARD=66
SSF_SET_INPUT_MODE=1
SSF_GET_INPUT_MODE=2
SSF_GET_CONTROL_KEYS=3; get status of control keys
SSF_SET_SYS_HOTKEY=4
SSF_DEL_SYS_HOTKEY=5
SSF_LOCK_INPUT=6 ; block normal input
SSF_UNLOCK_INPUT=7 ; restore normal input
SF_CHANGE_WINDOW=67 ; change position/sizes of the window
SF_SYS_MISC=68
SSF_GET_TASK_SWITCH_COUNT=0
SSF_SWITCH_TASK=1
SSF_PERFORMANCE=2
SSSF_ALLOW_RDPMC=0
SSSF_CACHE_STATUS=1
SSSF_CACHE_ON=2
SSSF_CACHE_OFF=3
SSF_READ_MSR=3
SSF_WRITE_MSR=4
SSF_HEAP_INIT=11
SSF_MEM_ALLOC=12
SSF_MEM_FREE=13
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver
SSF_LOAD_DRIVER=16
SSF_CONTROL_DRIVER=17
SSF_LOAD_DLL=19
SSF_MEM_REALLOC=20
SSF_LOAD_DRIVER_PE=21
SSF_MEM_OPEN=22 ; open named memory area
SSF_MEM_CLOSE=23
SSF_SET_EXCEPTION_HANDLER=24
SSF_SET_EXCEPTION_STATE=25
SSF_MEM_FREE_EXT=26
SSF_LOAD_FILE=27
SF_DEBUG=69
SSF_SET_MESSAGE_AREA=0
SSF_GET_REGISTERS=1
SSF_SET_REGISTERS=2
SSF_DETACH=3
SSF_SUSPEND=4
SSF_RESUME=5
SSF_READ_MEMORY=6
SSF_WRITE_MEMORY=7
SSF_TERMINATE=8
SSF_DEFINE_BREAKPOINT=9
SF_FILE=70
SSF_READ_FILE=0
SSF_READ_FOLDER=1
SSF_CREATE_FILE=2
SSF_WRITE_FILE=3
SSF_SET_END=4
SSF_GET_INFO=5
SSF_SET_INFO=6
SSF_START_APP=7
SSF_DELETE=8
SSF_CREATE_FOLDER=9
SF_SET_CAPTION=71
SF_SEND_MESSAGE=72
SF_BLITTER=73
SF_NETWORK_DEVICE=74
SSF_DEVICE_COUNT=255 ; get number of active network devices
SSF_DEVICE_TYPE=0
SSF_DEVICE_NAME=1
SSF_RESET_DEVICE=2
SSF_STOP_DEVICE=3
SSF_DEVICE_POINTER=4
SSF_TX_PACKET_COUNT=6
SSF_RX_PACKET_COUNT=7
SSF_TX_BYTE_COUNT=8
SSF_RX_BYTE_COUNT=9
SSF_LINK_STATUS=10
SSF_TX_PACKET_ERROR_COUNT=11
SSF_TX_PACKET_DROP_COUNT=12
SSF_TX_PACKET_MISS_COUNT=13
SSF_RX_PACKET_ERROR_COUNT=14
SSF_RX_PACKET_DROP_COUNT=15
SSF_RX_PACKET_MISS_COUNT=16
SF_NETWORK_SOCKET=75
SSF_OPEN=0
SSF_CLOSE=1
SSF_BIND=2
SSF_LISTEN=3
SSF_CONNECT=4
SSF_ACCEPT=5
SSF_SEND=6
SSF_RECEIVE=7
SSF_SET_OPTIONS=8
SSF_GET_OPTIONS=9
SSF_SOCKET_PAIR=10
SF_NETWORK_PROTOCOL=76
SSF_ETHERNET_READ_MAC=0
SSF_IP4_PACKETS_SENT=10000h
SSF_IP4_PACKETS_RECEIVED=10001h
SSF_IP4_READ_IP=10002h
SSF_IP4_WRITE_IP=10003h
SSF_IP4_READ_DNS=10004h
SSF_IP4_WRITE_DNS=10005h
SSF_IP4_READ_SUBNET=10006h
SSF_IP4_WRITE_SUBNET=10007h
SSF_IP4_READ_GATEWAY=10008h
SSF_IP4_WRITE_GATEWAY=10009h
SSF_ICMP_PACKETS_SENT=20000h
SSF_ICMP_PACKETS_RECEIVED=20001h
SSF_ICMP_ECHO_REPLY=20003h
SSF_UDP_PACKETS_SENT=30000h
SSF_UDP_PACKETS_RECEIVED=30001h
SSF_TCP_PACKETS_SENT=40000h
SSF_TCP_PACKETS_RECEIVED=40001h
SSF_ARP_PACKETS_SENT=50000h
SSF_ARP_PACKETS_RECEIVED=50001h
SSF_ARP_GET_ENTRY_COUNT=50002h
SSF_ARP_READ_ENTRY=50003h
SSF_ARP_ADD_STATIC_ENTRY=50004h
SSF_ARP_DEL_ENTRY=50005h
SSF_ARP_SEND_ANNOUNCE=50006h
SSF_ARP_CONFLICTS_COUNT=50007h
SF_FUTEX=77
SSF_CREATE=0
SSF_DESTROY=1
SSF_WAIT=2
SSF_WAKE=3
; File system errors:
FSERR_SUCCESS=0
FSERR_UNSUPPORTED=2
FSERR_UNKNOWN=3
FSERR_FILE_NOT_FOUND=5
FSERR_END_OF_FILE=6
FSERR_INVALID_BUFFER=7
FSERR_DISK_FULL=8
FSERR_FAIL=9
FSERR_ACCESS_DENIED=10
FSERR_DEVICE_FAIL=11
FSERR_OUT_OF_MEMORY=12

View File

@@ -31,6 +31,10 @@
#include <OS.h> #include <OS.h>
#endif #endif
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
#ifdef __MINGW32__ #ifdef __MINGW32__
static long dgen_mingw_detach = 1; static long dgen_mingw_detach = 1;
#endif #endif
@@ -427,8 +431,34 @@ int main(int argc, char *argv[])
samples = (dgen_soundsegs * (rate / dgen_hz)); samples = (dgen_soundsegs * (rate / dgen_hz));
pd_sound_init(rate, samples); pd_sound_init(rate, samples);
} }
char path_buf[MAX_PATH];
char *p = path_buf;
int r;
rom = argv[optind]; path_buf[0] = '\0';
for (r = optind; r < argc; ++r) {
if (r > optind) { // Append a space in later iterations
if (p - path_buf < sizeof(path_buf) - 2) *p++ = ' ';
}
char *src = argv[r];
while (*src && (p - path_buf < sizeof(path_buf) - 1)) {
*p++ = *src++;
}
*p = '\0';
if (access(path_buf, F_OK) == 0) {
rom = path_buf; // Point rom to the static buffer
optind = r; // Update optind
break;
}
}
if (!rom && optind < argc) {
rom = argv[optind];
}
// Create the megadrive object. // Create the megadrive object.
megad = new md(dgen_pal, dgen_region); megad = new md(dgen_pal, dgen_region);
if ((megad == NULL) || (!megad->okay())) { if ((megad == NULL) || (!megad->okay())) {

View File

@@ -0,0 +1,9 @@
if tup.getconfig("NO_OB07") ~= "" then return end
if tup.getconfig("HELPERDIR") == ""
then
HELPERDIR = "../../"
end
tup.include(HELPERDIR .. "/use_ob07.lua")
build_ob07({"SRC/FB2READ.ob07"}, "fb2read", "-upper");

View File

@@ -1,6 +1,7 @@
OB07 = tup.getcwd() .. "/develop/oberon07/compiler" OB07 = tup.getcwd() .. "/develop/oberon07/compiler"
OB07_FLAGS = "-stk 1 -nochk a" OB07_FLAGS = "-stk 1 -nochk a"
function build_ob07(input, output) function build_ob07(input, output, extra_flags)
tup.rule(input, OB07 .. " %f kosexe -out %o " .. OB07_FLAGS .. " " .. tup.getconfig("KPACK_CMD"), output) extra_flags = extra_flags or ""
end tup.rule(input, OB07 .. " %f kosexe -out %o " .. OB07_FLAGS .. " " .. extra_flags .. " " .. tup.getconfig("KPACK_CMD"), output)
end