OSDev

для всех
Текущее время: 27 апр 2024, 12:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Графические режимы
СообщениеДобавлено: 10 дек 2012, 20:38 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 20:42 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 20:48 

Зарегистрирован: 23 ноя 2012, 13:02
Сообщения: 27
Так, то есть для начала мне надо сделать маску для вывода этих символов, а потом тогда печатать символы по этой маски?
И можно тогда еще один глупый вопрос, как задать цвет символа в графическом режиме, если я вывожу его попиксельно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 21:16 

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

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

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


Последний раз редактировалось phantom-84 10 дек 2012, 21:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 21:27 

Зарегистрирован: 23 ноя 2012, 13:02
Сообщения: 27
Цитата:
Кстати я использую адрес 0xA0000 в текстовом режиме.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 21:46 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 21:54 

Зарегистрирован: 23 ноя 2012, 13:02
Сообщения: 27
phantom-84 писал(а):
Я использую свою битовую карту.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 22:27 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 22:30 

Зарегистрирован: 23 ноя 2012, 13:02
Сообщения: 27
Да я про исходник имел в виду...
phantom-84 писал(а):
Не так давно была тема про конвертирование бинарника в массив констант для Си.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Графические режимы
СообщениеДобавлено: 10 дек 2012, 22:48 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Утилита здесь: viewtopic.php?p=7607#p7607

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB