OSDev
http://osdev.su/

Графические режимы
http://osdev.su/viewtopic.php?f=6&t=662
Страница 1 из 2

Автор:  IlyaChur [ 10 дек 2012, 20:38 ]
Заголовок сообщения:  Графические режимы

Очень прошу сразу не кидаться камнями, понимаю, что про это уже много где писалось, но все же...
Я хотел бы спросить в чем разница в выводе символов на экран в режимах 0xa0000 и 0xb8000.
Раньше я выводил все напрямую в текстовый видеобуфер 0xb8000, теперь хочу начать начать использовать VESA, а для этого, насколько я понял, нужен графический режим, то есть для начала надо настраивать видеобуфер на адрес 0xa0000. Так вот, после того как я пытаюсь настроить видео буфер на адрес 0xa0000 и вывести сообщение на экран - ничего не происходит, текст не появляется, но при этом специальные символы (\t\n) работают. Отсюда собственно и вопрос, в чем отличие вывода текста в данных режимах?
Прошу сильно не бить :oops:

Автор:  SII [ 10 дек 2012, 20:42 ]
Заголовок сообщения:  Re: Графические режимы

Это не режимы, а базовые адреса видеопамяти для древних видеорежимов. A0000 -- адрес для цветных графических режимов, начиная с CGA, B8000 -- адрес для текстовых режимов. По какому адресу располагалась память для чёрно-белых графических режимов типа Hercules'а, я не помню. А разница элементарна: если включен именно графический режим, то буковки надо рисовать по пикселям, записывая соответствующие значения в нужные ячейки видеопамяти, а если в текстовом режиме, то в видеопамять пишутся по два байта на символ: его код и следом за ним -- атрибут, задающий цвет и мерцание/яркость.

Автор:  IlyaChur [ 10 дек 2012, 20:48 ]
Заголовок сообщения:  Re: Графические режимы

Так, то есть для начала мне надо сделать маску для вывода этих символов, а потом тогда печатать символы по этой маски?
И можно тогда еще один глупый вопрос, как задать цвет символа в графическом режиме, если я вывожу его попиксельно?

Автор:  phantom-84 [ 10 дек 2012, 21:16 ]
Заголовок сообщения:  Re: Графические режимы

IlyaChur писал(а):
Так, то есть для начала мне надо сделать маску для вывода этих символов, а потом тогда печатать символы по этой маски?
Это называется битовой картой символов/шрифта.

Цитата:
И можно тогда еще один глупый вопрос, как задать цвет символа в графическом режиме, если я вывожу его попиксельно?
Символы состоят из точек, цвет точки определяет ее двоичный код, глубина цветового кодирования (т.е. количество бит на одну точку) определяется текущим видеорежимом.

Кстати я использую адрес 0xA0000 в текстовом режиме. Это позволяет нормально использовать все окно размером в 128 Кб, т.е. весь диапазон "знакомест" от 0 до 0xFFFF.

Автор:  IlyaChur [ 10 дек 2012, 21:27 ]
Заголовок сообщения:  Re: Графические режимы

Цитата:
Кстати я использую адрес 0xA0000 в текстовом режиме.

Но при этом вы все-равно пользуетесь битовой картой символов?
А размерность символов в этой карте зависит от видеорежима?

Автор:  phantom-84 [ 10 дек 2012, 21:46 ]
Заголовок сообщения:  Re: Графические режимы

IlyaChur писал(а):
Но при этом вы все-равно пользуетесь битовой картой символов?
Я использую свою битовую карту прежде всего из-за того, что мне нужна кириллица. В текстовом режиме шрифт может быть однократно загружен в знакогенератор, а потом для вывода отдельного символа достаточно выводить только его код и атрибуты (2 байта).

Цитата:
А размерность символов в этой карте зависит от видеорежима?
Размерность "знакомест" на экране зависит от параметров видеорежима. Я использую видеорежимы с размерностью знакоместа 9x16, при этом фактическая битовая карта символа имеет размерность 8x16, однако в видеопамяти, где хранится шрифт, его карта всегда занимает 8x32 бит.

Автор:  IlyaChur [ 10 дек 2012, 21:54 ]
Заголовок сообщения:  Re: Графические режимы

phantom-84 писал(а):
Я использую свою битовую карту.

Вы ее сами вручную составляли?
Или программу конвертирующую шрифт в битовую маску писали?

Автор:  phantom-84 [ 10 дек 2012, 22:27 ]
Заголовок сообщения:  Re: Графические режимы

Куда вставлял? В исходник? У меня нет такой необходимости, т.я. у меня ядро написано на fasm'е. Вставляю непосредственно бинарник со шрифтом. Если тебе нужно конвертировать бинарник в исходник, поищи по форуму. Не так давно была тема про конвертирование бинарника в массив констант для Си. Еще раньше была тема, касающаяся конвертирования бинарника в ассемблерный исходник.

Автор:  IlyaChur [ 10 дек 2012, 22:30 ]
Заголовок сообщения:  Re: Графические режимы

Да я про исходник имел в виду...
phantom-84 писал(а):
Не так давно была тема про конвертирование бинарника в массив констант для Си.

Да, это как раз то что нужно, спасибо большое, посмотрю! :D

Автор:  Yoda [ 10 дек 2012, 22:48 ]
Заголовок сообщения:  Re: Графические режимы

Утилита здесь: viewtopic.php?p=7607#p7607

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/