Page 1 of 1

sysfunc.txt KolibriOS 0.7.5

Posted: Mon Aug 24, 2009 9:23 am
by Dante
Имхо, очень неудобно искать нужные функции в файле sysfunc.txt. Я ожидал найти где-нибудь список всех API функций по группам, но ничего не нашел, поэтому пришлось сделать самому. Только все сетевые функции свалил в кучу, потому что в стетях я полный null.

Code: Select all

==============================================================================
==  Краткий список системных функций KolibriOS 0.7.5  ========================
==============================================================================

 Номера функций указаны в формате eax.ebx.ecx, т. е. под 18.8.1
подразумевается функция 18, подфункция 8, подподфункция 1.
 Графика в окне описана в разделе "Работа с окнами", а раздел "Графика"
описывает общесистемную графику.



I  Работа с окнами

 0       - определить и нарисовать окно
 12.1    - начать перерисовку окна
 12.2    - закончить перерисовку окна

 1       - поставить точку в окне
 38      - нарисовать отрезок
 13      - нарисовать прямоугольник в окне
 7       - вывести изображение в окно
 65      - вывести изображение с палитрой в окно
 4       - вывести строку текста в окно
 47      - вывести число в окно

 71.1    - установить заголовок окна программы
 18.10   - свернуть окно приложения
 67      - изменить положение/размеры окна
 50.0    - установка данных с информацией о форме окна
 50.1    - установка масштаба данных о форме окна
 8       - определить/удалить кнопку
 37.7    - данные прокрутки
 72      - послать сообщение окну



II  Работа с мышью и клавиатурой

 2       - получить код нажатой клавиши
 26.2    - получить раскладку клавиатуры
 21.2    - установить раскладку клавиатуры
 66.2    - получить режим ввода с клавиатуры
 66.1    - установить режим ввода с клавиатуры
 66.3    - получить состояние управляющих клавиш
 66.4    - установить общесистемную горячую клавишу
 66.5    - удалить установленную горячую клавишу

 17      - получить код нажатой кнопки
 37.2    - получить нажатые кнопки мыши
 18.19.5 - симулировать состояние клавиш мыши
 37.0    - получить экранные координаты мыши
 37.1    - получить координаты мыши относительно окна
 18.15   - поместить курсор мыши в центр экрана
 18.19.4 - установить положение курсора мыши
 18.19.0 - получить скорость мыши
 18.19.1 - установить скорость мыши
 18.19.2 - получить задержку мыши
 18.19.3 - установить задержку мыши
 37.4    - загрузить курсор
 37.5    - установить курсор
 37.6    - удалить курсор



III  Системные функции

 18.13   - получить версию ядра
 3       - получить системное время
 29      - получить системную дату
 22      - установить системную дату/время
 26.9    - получить значение счётчика времени
 68.0    - получить счётчик переключений задач
 26.5    - получить язык системы
 21.5    - установить язык системы

 18.16   - Получить размер свободной оперативной памяти
 18.17   - Получить размер имеющейся оперативной памяти
 18.20   - Получить информацию об оперативной памяти
 68.19   - загрузить DLL
 68.16   - загрузить драйвер
 68.17   - управление драйвером
 68.14   - ожидать извещения от драйвера
 63.1    - Записать байт в доску отладки
 63.2    - Прочитать байт из доски отладки

 43        - ввод/вывод в порт
 20.1    - сброс MIDI
 20.2    - вывести байт с MIDI
 21.1    - установить базовый порт MPU MIDI
 26.1    - получить базовый порт MPU MIDI
 21.12   - Разрешить/запретить низкоуровневый доступ к PCI
 26.12   - Узнать, разрешён ли низкоуровневый доступ к PCI
 57      - PCI BIOS
 62.0    - получить версию PCI-интерфейса
 62.1    - получить номер последней PCI-шины
 62.2    - Получить механизм обращения к конфигурационному пространству PCI
 62.4/5/6  - прочитать PCI-регистр
 62.8/9/10 - записать в PCI-регистр
 41      - узнать владельца IRQ
 42.0    - чтение данных полученных по IRQ
 42.1    - узнать размер данных по IRQ в буфере
 44      - определить действия при поступлении IRQ
 45      - зарезервировать/освободить IRQ
 46      - зарезервировать/освободить группу портов ввода/вывода

 18.5    - получить тактовую частоту
 68.2    - работа с кэшом и rdpmc
 68.3    - прочитать MSR-регистр
 68.4    - записать в MSR-регистр
 68.15   - установить обработчик исключений FPU
 68.18   - установить обработчик исключений SSE
 49      - Advanced Power Management (APM)
 18.9    - завершение работы системы



IV  Работа с файлами и дисками

 18.21   - Получить информацию о дисковой подсистеме
 58.15   - получить информацию о файловой системе

 30      - работа с текущей папкой
 58.0    - прочитать файл/папку
 70.0    - чтение файла с поддержкой длинных имён
 70.1    - чтение папки с поддержкой длинных имён
 70.2    - Создание/перезапись файла с поддержкой длинных имён
 70.3    - Запись в существующий файл с поддержкой длинных имён
 70.9    - создание папки
 70.8    - удаление файла/папки
 70.5    - получение информации о файле/папке
 70.6    - установка атрибутов файла/папки
 70.4    - установка размера файла

 6       - прочитать файл с рамдиска
 33      - записать файл на рамдиск
 32      - удалить файл с рамдиска
 18.6    - сохранить рамдиск в файл на жёстком диске
 16      - сохранить рамдиск на дискету

 26.7    - получить базу HD
 21.7    - установить базу HD
 26.8    - получить раздел HD
 21.8    - установить раздел HD
 26.11   - Узнать, разрешён ли низкоуровневый доступ к HD
 21.11   - Разрешить/запретить низкоуровневый доступ к HD
 58.8    - LBA-чтение с устройства

 26.3    - получить базу CD
 21.3    - установить базу CD
 24.4    - извлечь лоток привода диска
 24.5    - загрузить лоток привода диска



V  Работа с процессами

 70.7    - запуск программы
 51      - создать поток
 18.3    - сделать активным окно заданного потока
 68.1    - Переключиться на следующий поток выполнения
 18.22   - операции с окном другого процесса/потока
 18.7    - получить номер активного окна
 18.21   - Получить номер слота процесса/потока по идентификатору
 9       - информация о потоке выполнения

 5       - пауза
 10      - ожидать события
 11      - проверить, есть ли событие, без ожидания
 23      - ожидать события с таймаутом
 40      - установить маску для ожидаемых событий
 60.1    - установить область для получения IPC (Inter Process Communication)
 60.2    - послать сообщение IPC

 64      - перераспределить память приложения
 68.11   - инициализировать кучу процесса
 68.12   - выделить блок памяти
 68.20   - перераспределить блок памяти
 68.13   - освободить блок памяти
 68.22   - открыть именованную область памяти
 68.23   - закрыть именованную область памяти

 69.1    - Получить состояние регистров отлаживаемого потока
 69.2    - Установить состояние регистров отлаживаемого потока
 69.0    - Определить область данных для отладочных сообщений
 69.6    - Прочитать из памяти отлаживаемого процесса
 69.7    - записать в память отлаживаемого процесса
 69.9    - установить/снять аппаратную точку останова
 69.4    - приостановить отлаживаемый поток
 69.5    - возобновить выполнение отлаживаемого потока
 69.3    - отключиться от отлаживаемого процесса
 69.8    - завершить отлаживаемый поток

 18.18   - Завершить процесс/поток по идентификатору
 18.2    - завершить процесс/поток по слоту
 -1      - завершить выполнение потока/процесса



VI  Графика

 35      - прочитать цвет точки на экране
 36      - прочитать область экрана
 48.5    - получить рабочую область экрана
 48.6    - установить рабочую область экрана
 14      - получить размеры экрана
 61.1    - получить разрешение экрана
 21.13.1 - Инициализировать + получить информацию о драйвере vmode.mdr
 21.13.2 - Получить информацию о текущем видеорежиме
 21.13.3 - установить видеорежим
 21.13.4 - Вернуться к начальному видеорежиму
 21.13.5 - Увеличить/уменьшить размер видимой области монитора
 61.2    - получить число бит на пиксель
 61.3    - получить число байт на строку
 48.0    - применить настройки экрана
 18.14   - Ожидать начала обратного хода луча развёртки монитора

 48.4    - получить высоту скина (заголовка окон)
 48.7    - Получить область скина для текста заголовка
 48.3    - получить стандартные цвета окон
 48.2    - установить стандартные цвета окон
 48.6    - установить используемый скин окон
 48.1    - установить стиль кнопок

 39.1    - получить размер фонового изображения
 15.1    - установить размер фонового изображения
 39.2    - прочитать точку с фонового изображения
 15.2    - поставить точку на фоновом изображении
 15.5    - поместить блок пикселей на фон
 39.4    - получить режим отрисовки фона
 15.4    - установить режим отрисовки фона
 15.3    - перерисовать фон
 15.6    - Спроецировать данные фона на адресное пространство процесса
 15.7    - Закрыть проекцию данных фона на адресное пространство процесса




VII  Звук

 18.8.1  - получить состояние спикера
 18.8.2  - переключить состояние спикера
 55.55   - Начать проигрывать данные на встроенном спикере
 24.2    - получить информацию о дорожках CD
 24      - начать проигрывать CD-audio
 24.3    - остановить проигрываемое CD-audio



VIII  Работа с сетью

 52.0    - получить конфигурацию сетевого драйвера
 52.1    - получить локальный IP-адрес
 52.2    - установить конфигурацию сетевого драйвера
 52.3    - установить локальный IP-адрес
 52.6    - добавить данные в стек входной очереди
 52.8    - Прочитать данные из сетевой очереди вывода
 52.9    - получить gateway IP
 52.10   - получить маску подсети
 52.11   - установить gateway IP
 52.12   - установить маску подсети
 52.13   - получить DNS IP
 52.14   - установить DNS IP
 52.15   - получить локальный MAC-адрес
 53.0    - открыть UDP-сокет
 53.1    - закрыть UDP-сокет
 53.2    - опрос сокета
 53.3    - прочитать байт из сокета
 53.4    - записать в UDP-сокет
 53.5    - открыть TCP-сокет
 53.6    - получить состояние TCP-сокета
 53.7    - записать в TCP-сокет
 53.8    - закрыть TCP-сокет
 53.9    - проверить, свободен ли локальный порт
 53.10   - получить статус кабеля Ethernet
 53.11   - прочитать данные сетевого стека
 53.255  - отладочная информация сетевого драйвера

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 9:49 am
by <Lrz>
Напрасный труд.
http://diamond.kolibrios.org/

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 10:02 am
by Dante
Ну, мне с txt как-то сподручнее. :)

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 10:33 am
by Mario
http://diamond.kolibrios.org/klbr_doc.chm
Имхо что под Windows, что под Linux вполне себе работает.
И потом кто мешает папку из отельных TXT сделать, в которых по нужному принципу раскидать. Все равно без подробной документации работать не имеет смысла.

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 1:34 pm
by Dante
В Kolibri я открываю два фара - с funclist и с моим файлом.

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 4:39 pm
by bw
Dante, хорошая работа.

..bw

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 9:48 pm
by kogemyaka
Mario wrote:http://diamond.kolibrios.org/klbr_doc.chm
Имхо что под Windows, что под Linux вполне себе работает.
В Vista не работает, они забыли сделать просмотрщих своих собственных старых форматов hlp :D

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 10:31 pm
by Mario
Речь шла об относительно устоявшемся XP.

ЕМНИП - HTML Viewer уже поддерживает навигацию по локальным ссылкам, почему бы не использовать?

Re: sysfunc.txt

Posted: Mon Aug 24, 2009 11:17 pm
by diamond
kogemyaka wrote:В Vista не работает, они забыли сделать просмотрщих своих собственных старых форматов hlp
Чушь. Только что проверил - прекрасно работает. Да, и причём тут hlp, если klbr_doc.chm, как очевидно из имени файла, имеет формат chm?

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 2:09 am
by GerdtR
А я сделал макробиблиотеку, где назвал наиболее нужные вариации функций говорящими именами. Во-первых быстро познакомился с функциями Колибри, во-вторых код более читаемый. Для начинания очень полезная вещь.

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 9:34 am
by SoUrcerer
Еще одну макробиблиотеку ^_^
Вообще, если не использовать макробиблиотеки с системными функциями в асме - то можно писать более оптимальный код.

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 3:18 pm
by GerdtR
Можно и более оптимальный. Хотя я просто записал заполнение регистров и сам int. Потери не заметны. К счастью аналоги своей библиотеки я увидел позже, чем сделал. А то бы терпения не хватило делать то, что уже делали:) В любом случае своё удобнее.

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 7:30 pm
by SoUrcerer
GerdtR wrote:Можно и более оптимальный. Хотя я просто записал заполнение регистров и сам int. Потери не заметны. К счастью аналоги своей библиотеки я увидел позже, чем сделал. А то бы терпения не хватило делать то, что уже делали:) В любом случае своё удобнее.
Теперь представь, что у тебя много раз вызывается функция вывода текста, у которой из аргументов меняются только два регистра. Каждый раз при вызове макроса перезагружаются все регистры? Шоколадно :) А ведь можно было сэкономить на загрузке 4-5 регистров на каждый цикл.

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 7:36 pm
by dunkaist
SoUrcerer, а mcall 1,2, , , 5 ты никогда не делал? Или ты не пользуешься этим макросом?

Re: sysfunc.txt

Posted: Wed Nov 21, 2012 8:12 pm
by SoUrcerer
Это mcall. Я не очень знаком с механизмом работы макросов в fasm, так что не уверен, что для самописного макроса, к примеру, "text_out x,y,color,string" такое подойдет. Особенно если на вход действительно поступают x, y и color, а не соответствующие параметры для регистровых значений.