OSDev
http://osdev.su/

Работа на реальном железе
http://osdev.su/viewtopic.php?f=5&t=691
Страница 1 из 2

Автор:  IlyaChur [ 05 фев 2013, 15:04 ]
Заголовок сообщения:  Работа на реальном железе

Здравствуйте, не совсем понимаю, куда бы отнести данный вопрос, решил сюда... :oops:
Вчера решил попробовать запустить свою ОС не под виртуальной машиной (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/