ACPI %-)
А может кто-нибудь посоветует вменяемую программу переводчик???
P.S. Phantom-84 ты наверное в совершенстве знаешь english, если смог осилить эту кучу текста...
Мне ее и в жизне не осилить. Я так кое чего знаю. Надо фантома на статью раскрутить по этому делу.
Осилить то возможно, но много времени нужно... меньше бы воды в этой книженции было, тогда бы все OK... ну по крайней мере, я, листая эту спецификацию, обнаружил как получить карту памяти :-)
Phantom-84, а тебя возможно раскрутить на статью по этой теме??? Сделал бы благое дело!!!!
Кто знает в чем проблема помогите!
Я вам не говорил, чтобы вы все изучали! ACPI - это попытка объединить в одном программном интерфейсе все то, что может понадобиться операционной системе и что ранее было разбросано по разным подсистемам BIOS! Лично я вас подбивал использовать ACPI только для детекта доступной памяти, потому что изучил исходники современных версий некоторых систем и пришел к выводу, что они используют именно алгоритм, описанный в этой спецификации. Из текста руководства выудить этот алгоритм и сопутствующие ему разделы очень просто! А статью я пока никакую писать не буду, потому как у меня есть дела и поважнее. Да и потом что писать? Фрагмент из своих исходников опубликовать с комментариями что ли? Так там больше оптимизационных решений под конкретную ось, чем логики, которая практически без изменений позаимствована из упомянутого алгоритма! Публичные комментарии по своей оси я начну писать только тогда, когда будет окончательно готов ее первый официальный релиз и необходимый набор утилит к ней. А пока могу поделиться с вами только той информацией, которая по моему мнению будет вам полезна, что собственно и делаю...
Sorry, но никто про весь интерфейс и не говорит... просто я имею ввиду, что из 500 страниц английского текста очень трудно выудить нужную информацию... например: я нашел функцию мапинга памяти, но почему-то (по неизведанным для меня причинам) она с правильно установленными регистрами (eax = 0e820h, ebx = 0, ecx = buffer_size, es:di = adress buffer, edx = 'SMAP') все время выдает флаг переноса...
Может хотя бы поделишься информацией по функции мапинга памяти?
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 можно повторно не перезагружать;
другие регистры должны быть перезагружены.
Если у тебя эта функция не поддерживается вообще, значит, комп совсем древний! Алгоритм из спецификации дает ответ на вопрос, что нужно делать в такой ситуации...
А ты еще какими-нибудь функциями ACPI пользуешься??? Может подскажешь еще какие-нибудь полезные фишки???
"PAMS" - это для fasm'а, для других может и "SMAP"... Планирую в упралении питанием перейти от APM к ACPI... Нет, "в управлении питанием" - это слишком громко сказано, по части управления питанием у меня пока реализовано только выключение компьютера...
P.S. А ты какой видео-режим используешь??? (я используе видеорежимы SVGA, но у них есть один небольшой недостаток: частота в 60 Hz, может знаешь как перепрограммировать видеокарту под более частотный режим)
sysbin'е. У меня там есть два раздела на эту тему:
http://board.sysbin.com/viewtopic.php?t=1204&start=0
http://board.sysbin.com/viewtopic.php?t=1055&start=0
Интересно узнать, как ты реализовал поддержку SVGA-режимов у себя, да и про векторные шрифты тоже очень интересно (например, какой формат файлов ты используешь, как выполняешь растеризацию символов)! Если не трудно, расскажи немного про это в первой из указанных тем...
По части графики ты меня сильно обогнал, у меня пока лишь текстовая консоль, хотя я сейчас уже начинаю работать над созданием видеодрайверов для поддержки графического режима. Посмотри на
http://board.sysbin.com/viewtopic.php?t=1204&start=0
http://board.sysbin.com/viewtopic.php?t=1055&start=0
Интересно узнать, как ты реализовал поддержку SVGA-режимов у себя, да и про векторные шрифты тоже очень интересно (например, какой формат файлов ты используешь, как выполняешь растеризацию символов)! Если не трудно, расскажи немного про это в первой из указанных тем...
А про векторные шрефты я бы не откозался тоже узнать.
Если честно признаться, шрифты не совсем векторные, но и не растровые, но они хорошо маштабируются и выглядят неплохо и просты в реализации... Они работают по принципу такому:
- Для отображения любой буквы алфавита, в принципе, необходимо всего три функции: окружность с заданным центром и углами отсечения, линия и точка. На этом принципе, с использование сопроцессора, и происходит растеризация символов из функций окружностей, линий и точек.
- Для быстроты отображения символов на экране, символы, с заданным масштабным коаэфицентом (то бишь размером), сначала растеризуются в оперативную память (создается растровая таблица символов), а потом подставляются в текстовое поле для отображения (растеризуются только растровые таблицы символов с размером, который используется в данный момент для экономии памяти)
- Формат файла тоже очень прост: сначала идут 256 указателей (содержат смещения от начала файла) на "векторные" таблицы символов (то есть один файл шрифта описывает всего 256 символов (мне хватает)), далее следуют эти таблицы, которые содержат в себе:
байт индефикатора функции (точка, линия, окружность или признак конца таблицы)
необходимые параметры для выполнения функции (например для окружности это координата центра, первый и второй углы отсечения)
P.S. Этот метод туп или с пивом потянет???
А про векторные шрефты я бы не откозался тоже узнать.[/QUOTE]
у меня нету описания этой функции, может поделишься???
Я сам с контролем частот не заморачивался.
infernodiablo, очень интересная реализация шрифтов! А как ты определяешь, какая часть символа является внутренней, а какая внешней, т.е. что нужно закрашивать, а что нет? Кстати, как я понял, у тебя не используется сглаживание, а я делал растровые шрифты, символы которых могли иметь двухцветный градиент (т.е. всего два бита на точку), причем заголовочная структура файлов у них очень сильно похоже на твою: 256 16-разрядных смещений символьных дескрипторов, первое из которых на самом деле указывает на дескриптор свойств (версия формата, имя шрифта, краткое описание и т.п.)...
Насчет градиента, то он по желанию используется или не используется (в случае неиспользования на отображения пиксела уходит 1 бит, а в случае использования - 1 байт), градиент зависит не только от градиентного коаэфицента, но и от толщины линий шрифта (точка в случае установленной толщины линий отличной от нуля отображается как закрашеная окружность). Градиент является одной из составляющих цевета (R,G или B), которая при построении символа уже на экране подставляется за место заданной составляющей (т.е. изменение цвета происходит только одной составляющейЮ что не всегда выглядит красиво). Постройка символа на экране, уже из растровой таблицы, происходит по следующему образу:
- есла в параметрах растровой таблицы задан градиент, то размер 1 пикселя = 1 байт, в противном случае бит.
- сканирование строк пикселей таблицы в поиске значений отличных от нуля
- когда найдено значение отличное от нуля в случае с гардиентом оно подставляется в указанную составляющую и далее подставляется в пиксел, координата которого вычисляется от "базы" символа и строк и столбцов в таблице символа, на эране. Если градиент не задан, то в пиксел подставляется значение цвета символа.
Т.е. нулевые значение не отображаются, отличные от нуля отоброжаются.
P.S. если интересно, то на недели могу выложить часть текста исходников (предварительно подрехтовав места, зависящие от ОС и дописав коментарии)
Ты наверно подумал, что с помощью функций окружностей, линий, точек у меня идет прорисовка контура символа??? Нет, это не так, эти функции обозначают линии, которые будут рисоваться и в совокупности отображать символ... с прорисовкой контура мне не захотелось маяться, хотя была такая мысля, и, по моему мнению, прорисовка контура - это уже излишество...
[QUOTE=infernodiablo]Ты наверно подумал, что с помощью функций окружностей, линий, точек у меня идет прорисовка контура символа??? Нет, это не так, эти функции обозначают линии, которые будут рисоваться и в совокупности отображать символ... с прорисовкой контура мне не захотелось маяться, хотя была такая мысля, и, по моему мнению, прорисовка контура - это уже излишество...[/QUOTE]Т.е. ты задействуешь для символообразующих фигур параметр "толщина линии"?
А насчет прорисовки контура я что-то "загорелся" этой идеей, и может начну ее реализовывать (появилось несколько интересных идей)