OSDev http://osdev.su/ |
|
Работа на реальном железе http://osdev.su/viewtopic.php?f=5&t=691 |
Страница 1 из 2 |
Автор: | IlyaChur [ 05 фев 2013, 15:04 ] |
Заголовок сообщения: | Работа на реальном железе |
Здравствуйте, не совсем понимаю, куда бы отнести данный вопрос, решил сюда... ![]() Вчера решил попробовать запустить свою ОС не под виртуальной машиной (qemu, virtual box), а на реальном компе, записал на диск, загрузился... Все работает, но обнаружилось следующее: 1. Белый цвет почему-то отображается как серый 2. Экран мигает, то есть то все исчезает, то все появляется с определенной частотой. Отсюда вопрос, чем может быть вызвано подобное поведение? |
Автор: | pavia [ 05 фев 2013, 15:55 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
У вас описание сумбурное. отлаживайте. Зделайте несколько вариантов и попробойте по переключать видео режим и способы отрисовки. Мигание может быть вызванно соотвествующим режимом. Три бита цвет четвёртый бит моргание. А есть режим с 16 цветами где четвёртый бит кодирует светлый тон, а не моргание. Что касется серого, то может быть выбран режим 6 бит, 6 бит, 6 бит, а не 8 бит, 8 бит, 8 бит. Плюс возможно вы не учли обратный ход луча. В LCD он тоже есть для совместимости с CRT. Ещё возможно вы выбрали частоту или разрешение не поддерживаемое вашем монитором. Или ещё ошибка в коде экран перезатирается или очишается. Неправильно рассчитываются банки. |
Автор: | IlyaChur [ 05 фев 2013, 18:23 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Да, возможно я не совсем корректно выразился, дело в том, что я не переключаю видео режимы, ОС работает в текстовом режиме, пишу напрямую в видео буфер, по адресу 0xB8000... Поэтому про переключение режима и выставление расширения экрана пока даже речи не идет... |
Автор: | pavia [ 05 фев 2013, 19:46 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
А ну тогда всё точно. У тебя виде режим где цвет символа кодируются 4 битами и 4 бит отвечает за моргание. Поэтому текст и серый и моргает. Просто надо другой режим включить. |
Автор: | pavia [ 05 фев 2013, 20:01 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Код: mov ah,10h ; группа функций по управлению палитрой
mov al,3 ; функция отвечающая за выбор интенсивность/моргание. mov bl,0 ; 0- интенсивность; 1- моргание int 10h ; Прерывание отвечающие за подсистему видео карты. |
Автор: | IlyaChur [ 05 фев 2013, 20:05 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
pavia писал(а): Код: mov ah,10h ; группа функций по управлению палитрой mov al,3 ; функция отвечающая за выбор интенсивность/моргание. mov bl,0 ; 0- интенсивность; 1- моргание int 10h ; Прерывание отвечающие за подсистему видео карты. Спасибо... Но я сам не настраиваю видеорежим, за меня это делает граб... А для того, чтобы выполнить данный код придется переключаться обратно в реальный режим... Можно ли сделать что-нибудь подобное с помощью grub? |
Автор: | pavia [ 05 фев 2013, 20:19 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Можно и через порты сделать тоже самое. C ошибкой |
Автор: | IlyaChur [ 05 фев 2013, 20:47 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Я сейчас через порты попытался переключить режимы, не получается, перестает работать полностью вывод на экран... Экран очищается и больше ничего не выводится... ![]() |
Автор: | pavia [ 05 фев 2013, 21:32 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Сейчас перечитал внимательнее руководство. Код не проверяю. Всё оказалось гораздо запутаннее. Код: push dx
dx, 3DAh in al,dx ; Сбрасываем Flip-Flop dx, 3C0h mov al,10h+20h ; 10h - индекс доступа к атрибутам ; 20h разрешить доступ к регистрам. out dx,al dx, 3C1h ; регистр для чтения in al,dx and al, 11110111b push al dx, 3DAh in al,dx ; Сбрасываем Flip-Flop dx, 3C0h mov al,10h +20h; 10h - индекс доступа к атрибутам ; 20h разрешить доступ к регистрам. out dx,al pop al dx, 3C0h ; регистр на запись совпадает с индексным регистром out dx,al pop dx ret |
Автор: | IlyaChur [ 05 фев 2013, 21:42 ] |
Заголовок сообщения: | Re: Работа на реальном железе |
Я проверил сейчас код, тоже похоже, что что-то не то, опять тот же результат, экран очищается и вывод на экран не работает... |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |