Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ACPI %-)

8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
Ужас... скачал спецификацию на ACPI, так она в 500 страниц, да еще на английском, половина - вода, может кто-нибудь знает где взять перевод, а то я самостоятельно смогу осилить лишь страниц 20, перед тем как скопычусь...
А может кто-нибудь посоветует вменяемую программу переводчик???
P.S. Phantom-84 ты наверное в совершенстве знаешь english, если смог осилить эту кучу текста...
551
26 августа 2006 года
Pavia
357 / / 22.04.2004
Мне ее и в жизне не осилить. Я так кое чего знаю. Надо фантома на статью раскрутить по этому делу.
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
[QUOTE=Pavia]Мне ее и в жизне не осилить. Я так кое чего знаю. Надо фантома на статью раскрутить по этому делу.[/QUOTE]
Осилить то возможно, но много времени нужно... меньше бы воды в этой книженции было, тогда бы все OK... ну по крайней мере, я, листая эту спецификацию, обнаружил как получить карту памяти :-)
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
Phantom-84, а тебя возможно раскрутить на статью по этой теме??? Сделал бы благое дело!!!!
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
Ну что это за вещь ACPI??? нашел в спецификации такую фишку: типа в реальном режиме, через функцию прерывания 15h e820h можно получить карту системной памяти... написал специально прогу (целый час над ней мучался) которая выводит на экран таблицу с дескрипторами полученными этой функции... а эта функция у меня вообще не работает, при вызове выдает установленный флаг переноса...
Кто знает в чем проблема помогите!
349
26 августа 2006 года
Phantom-84
656 / / 27.10.2005
Я вам не говорил, чтобы вы все изучали! ACPI - это попытка объединить в одном программном интерфейсе все то, что может понадобиться операционной системе и что ранее было разбросано по разным подсистемам BIOS! Лично я вас подбивал использовать ACPI только для детекта доступной памяти, потому что изучил исходники современных версий некоторых систем и пришел к выводу, что они используют именно алгоритм, описанный в этой спецификации. Из текста руководства выудить этот алгоритм и сопутствующие ему разделы очень просто! А статью я пока никакую писать не буду, потому как у меня есть дела и поважнее. Да и потом что писать? Фрагмент из своих исходников опубликовать с комментариями что ли? Так там больше оптимизационных решений под конкретную ось, чем логики, которая практически без изменений позаимствована из упомянутого алгоритма! Публичные комментарии по своей оси я начну писать только тогда, когда будет окончательно готов ее первый официальный релиз и необходимый набор утилит к ней. А пока могу поделиться с вами только той информацией, которая по моему мнению будет вам полезна, что собственно и делаю...
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
[QUOTE=Phantom-84]Я вам не говорил, чтобы вы все изучали! ACPI - это попытка объединить в одном программном интерфейсе все то, что может понадобиться операционной системе и что ранее было разбросано по разным подсистемам BIOS! Лично я вас подбивал использовать ACPI только для детекта доступной памяти, потому что изучил исходники современных версий некоторых систем и пришел к выводу, что они используют именно алгоритм, описанный в этой спецификации. Из текста руководства выудить этот алгоритм и сопутствующие ему разделы очень просто! А статью я пока никакую писать не буду, потому как у меня есть дела и поважнее. Да и потом что писать? Фрагмент из своих исходников опубликовать с комментариями что ли? Так там больше оптимизационных решений под конкретную ось, чем логики, которая практически без изменений позаимствована из упомянутого алгоритма! Публичные комментарии по своей оси я начну писать только тогда, когда будет окончательно готов ее первый официальный релиз и необходимый набор утилит к ней. А пока могу поделиться с вами только той информацией, которая по моему мнению будет вам полезна, что собственно и делаю...[/QUOTE]
Sorry, но никто про весь интерфейс и не говорит... просто я имею ввиду, что из 500 страниц английского текста очень трудно выудить нужную информацию... например: я нашел функцию мапинга памяти, но почему-то (по неизведанным для меня причинам) она с правильно установленными регистрами (eax = 0e820h, ebx = 0, ecx = buffer_size, es:di = adress buffer, edx = 'SMAP') все время выдает флаг переноса...
Может хотя бы поделишься информацией по функции мапинга памяти?
349
26 августа 2006 года
Phantom-84
656 / / 27.10.2005
При первом вызове:
es:di <-- указатель на буфер
xor ebx, ebx
mov edx, "PAMS"
mov ecx, 20
mov eax, 0000E820h
int 15h
jc byte not_supported
cmp eax, "PAMS"
jne byte not_supported
and ebx, ebx
jz byte break иначе continue

При последующих вызовах:
ebx остается от предыдущего вызова;
ecx и es:di можно повторно не перезагружать;
другие регистры должны быть перезагружены.

Если у тебя эта функция не поддерживается вообще, значит, комп совсем древний! Алгоритм из спецификации дает ответ на вопрос, что нужно делать в такой ситуации...
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
Phantom-84, не... у меня комп не древний, в этом году внутренности обновлял... ошибка была всего лишь в сигнатуре... у меня было вместо "PAMS" - "SMAP"... вот и все! хм... интересные, кстати, значения она выдает :-)...
А ты еще какими-нибудь функциями ACPI пользуешься??? Может подскажешь еще какие-нибудь полезные фишки???
349
26 августа 2006 года
Phantom-84
656 / / 27.10.2005
"PAMS" - это для fasm'а, для других может и "SMAP"... Планирую в упралении питанием перейти от APM к ACPI... Нет, "в управлении питанием" - это слишком громко сказано, по части управления питанием у меня пока реализовано только выключение компьютера...
8.5K
26 августа 2006 года
infernodiablo
73 / / 04.03.2006
Да... вижу работаешь как заведенный, а я пока мало сделал... подсистему видеовывода с поддержкой векторных шрифтов, несколько драйверов, недоделал планировщик задач и сейчас остановился на подсистеме управления памятью, на 4 раз ее уже переделываю и все мне не нравиться (я использую сегментную модель памяти с одной лишь таблицей страниц, т.к. назначение моей ос не требует использования концепций заложенных в такие ос как WINDOWS и т.п.)
P.S. А ты какой видео-режим используешь??? (я используе видеорежимы SVGA, но у них есть один небольшой недостаток: частота в 60 Hz, может знаешь как перепрограммировать видеокарту под более частотный режим)
349
27 августа 2006 года
Phantom-84
656 / / 27.10.2005
По части графики ты меня сильно обогнал, у меня пока лишь текстовая консоль, хотя я сейчас уже начинаю работать над созданием видеодрайверов для поддержки графического режима. Посмотри на sysbin'е. У меня там есть два раздела на эту тему:
http://board.sysbin.com/viewtopic.php?t=1204&start=0
http://board.sysbin.com/viewtopic.php?t=1055&start=0

Интересно узнать, как ты реализовал поддержку SVGA-режимов у себя, да и про векторные шрифты тоже очень интересно (например, какой формат файлов ты используешь, как выполняешь растеризацию символов)! Если не трудно, расскажи немного про это в первой из указанных тем...
551
27 августа 2006 года
Pavia
357 / / 22.04.2004
Частотой можно управлять через VESA AX = 4F0Bh Get/Set pixel clock, правда многое надо будет учесть. Почитать можно в VBE3. Сам PLL(генератор частот) вещь хитрая и у каждой видео карты программируется по разному, имет различные частоты.
А про векторные шрефты я бы не откозался тоже узнать.
8.5K
27 августа 2006 года
infernodiablo
73 / / 04.03.2006
Phantom-84, рассказывать то особо нечего... сама подсистема эта была мною написана не для ОС, а для программы, переключавшейся в защищенный режим, чтобы сделать отображаемую графическую информацию более "красивой"... в общем SVGA режим я включаю через функции биоса int 10h AH = 4fh (ну это и так понятно), получаю физический 32 разрядный адрес буфера, который запихиваю в некэшируемый сегмент, описанный в GDT...
Если честно признаться, шрифты не совсем векторные, но и не растровые, но они хорошо маштабируются и выглядят неплохо и просты в реализации... Они работают по принципу такому:
- Для отображения любой буквы алфавита, в принципе, необходимо всего три функции: окружность с заданным центром и углами отсечения, линия и точка. На этом принципе, с использование сопроцессора, и происходит растеризация символов из функций окружностей, линий и точек.
- Для быстроты отображения символов на экране, символы, с заданным масштабным коаэфицентом (то бишь размером), сначала растеризуются в оперативную память (создается растровая таблица символов), а потом подставляются в текстовое поле для отображения (растеризуются только растровые таблицы символов с размером, который используется в данный момент для экономии памяти)
- Формат файла тоже очень прост: сначала идут 256 указателей (содержат смещения от начала файла) на "векторные" таблицы символов (то есть один файл шрифта описывает всего 256 символов (мне хватает)), далее следуют эти таблицы, которые содержат в себе:
байт индефикатора функции (точка, линия, окружность или признак конца таблицы)
необходимые параметры для выполнения функции (например для окружности это координата центра, первый и второй углы отсечения)

P.S. Этот метод туп или с пивом потянет???
8.5K
27 августа 2006 года
infernodiablo
73 / / 04.03.2006
[QUOTE=Pavia]Частотой можно управлять через VESA AX = 4F0Bh Get/Set pixel clock, правда многое надо будет учесть. Почитать можно в VBE3. Сам PLL(генератор частот) вещь хитрая и у каждой видео карты программируется по разному, имет различные частоты.
А про векторные шрефты я бы не откозался тоже узнать.[/QUOTE]
у меня нету описания этой функции, может поделишься???
551
27 августа 2006 года
Pavia
357 / / 22.04.2004
Я сам с контролем частот не заморачивался.
http://www.vesa.org/Public/VBE/vbe3.pdf
349
27 августа 2006 года
Phantom-84
656 / / 27.10.2005
infernodiablo, очень интересная реализация шрифтов! А как ты определяешь, какая часть символа является внутренней, а какая внешней, т.е. что нужно закрашивать, а что нет? Кстати, как я понял, у тебя не используется сглаживание, а я делал растровые шрифты, символы которых могли иметь двухцветный градиент (т.е. всего два бита на точку), причем заголовочная структура файлов у них очень сильно похоже на твою: 256 16-разрядных смещений символьных дескрипторов, первое из которых на самом деле указывает на дескриптор свойств (версия формата, имя шрифта, краткое описание и т.п.)...
8.5K
27 августа 2006 года
infernodiablo
73 / / 04.03.2006
[QUOTE=Phantom-84]infernodiablo, очень интересная реализация шрифтов! А как ты определяешь, какая часть символа является внутренней, а какая внешней, т.е. что нужно закрашивать, а что нет? Кстати, как я понял, у тебя не используется сглаживание, а я делал растровые шрифты, символы которых могли иметь двухцветный градиент (т.е. всего два бита на точку), причем заголовочная структура файлов у них очень сильно похоже на твою: 256 16-разрядных смещений символьных дескрипторов, первое из которых на самом деле указывает на дескриптор свойств (версия формата, имя шрифта, краткое описание и т.п.)...[/QUOTE]
Насчет градиента, то он по желанию используется или не используется (в случае неиспользования на отображения пиксела уходит 1 бит, а в случае использования - 1 байт), градиент зависит не только от градиентного коаэфицента, но и от толщины линий шрифта (точка в случае установленной толщины линий отличной от нуля отображается как закрашеная окружность). Градиент является одной из составляющих цевета (R,G или B), которая при построении символа уже на экране подставляется за место заданной составляющей (т.е. изменение цвета происходит только одной составляющейЮ что не всегда выглядит красиво). Постройка символа на экране, уже из растровой таблицы, происходит по следующему образу:
- есла в параметрах растровой таблицы задан градиент, то размер 1 пикселя = 1 байт, в противном случае бит.
- сканирование строк пикселей таблицы в поиске значений отличных от нуля
- когда найдено значение отличное от нуля в случае с гардиентом оно подставляется в указанную составляющую и далее подставляется в пиксел, координата которого вычисляется от "базы" символа и строк и столбцов в таблице символа, на эране. Если градиент не задан, то в пиксел подставляется значение цвета символа.
Т.е. нулевые значение не отображаются, отличные от нуля отоброжаются.
P.S. если интересно, то на недели могу выложить часть текста исходников (предварительно подрехтовав места, зависящие от ОС и дописав коментарии)
8.5K
27 августа 2006 года
infernodiablo
73 / / 04.03.2006
[QUOTE=Phantom-84]infernodiablo, очень интересная реализация шрифтов! А как ты определяешь, какая часть символа является внутренней, а какая внешней, т.е. что нужно закрашивать, а что нет? Кстати, как я понял, у тебя не используется сглаживание, а я делал растровые шрифты, символы которых могли иметь двухцветный градиент (т.е. всего два бита на точку), причем заголовочная структура файлов у них очень сильно похоже на твою: 256 16-разрядных смещений символьных дескрипторов, первое из которых на самом деле указывает на дескриптор свойств (версия формата, имя шрифта, краткое описание и т.п.)...[/QUOTE]
Ты наверно подумал, что с помощью функций окружностей, линий, точек у меня идет прорисовка контура символа??? Нет, это не так, эти функции обозначают линии, которые будут рисоваться и в совокупности отображать символ... с прорисовкой контура мне не захотелось маяться, хотя была такая мысля, и, по моему мнению, прорисовка контура - это уже излишество...
349
27 августа 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=infernodiablo]Т.е. нулевые значение не отображаются, отличные от нуля отоброжаются.[/QUOTE]А у меня по аналогии с виндами можно либо пропускать точки с кодом 00b, либо выводить их цветом фона. Все зависит от того, какая из функций используется для отображения символов.

[QUOTE=infernodiablo]Ты наверно подумал, что с помощью функций окружностей, линий, точек у меня идет прорисовка контура символа??? Нет, это не так, эти функции обозначают линии, которые будут рисоваться и в совокупности отображать символ... с прорисовкой контура мне не захотелось маяться, хотя была такая мысля, и, по моему мнению, прорисовка контура - это уже излишество...[/QUOTE]Т.е. ты задействуешь для символообразующих фигур параметр "толщина линии"?
8.5K
27 августа 2006 года
infernodiablo
73 / / 04.03.2006
Да именно так... при толщине равной нулю реальная отображаемая толщина = 1 пиксель...
А насчет прорисовки контура я что-то "загорелся" этой идеей, и может начну ее реализовывать (появилось несколько интересных идей)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог