Программирование видеокарты без прерываний BIOS - PullRequest
0 голосов
/ 04 июля 2018

В настоящее время мне нужно создать собственную ОС для проверки некоторых идей. У меня вопрос: как установить разрешение видеокарты без прерываний? Моя система поддерживает стандарт мультизагрузки, и ядро ​​запускается в защищенном режиме, поэтому я, вероятно, не могу использовать службы BIOS.

Я не могу найти номер порта и т. Д., Чтобы инициализировать корзину для видео и установить разрешение. Я пытаюсь записать значение слова в графическом адресном пространстве VGA, но ничего не отображается.

Редактировать 1: Я нашел этот фрагмент кода: http://bos.asmhackers.net/docs/vga_without_bios/snippet_5/vga.php

Я не знаю, по какой лицензии она была опубликована, поэтому я не могу ее использовать. Также я предпочитаю писать собственный код на языке C.

Я перепишу это на C и скажу, что это работает, но кто-то может сказать мне, что это хорошо (какие противопоказания). Я спрашиваю, потому что вы спрашиваете меня, могу ли я встроить виртуальную машину в свое ядро.

Edit2

__asm__ (
"cli\n \
mov     %%cr0,%%eax\n\
mov     $1,%%cl \n\
xor     %%cl,%%cl \n\
and     %%cl, %%al \n\
mov     %%eax,%%cr0\n \
sti \n\
xor %%ax,%%ax\n \
mov $0x12,%%ah\n \
int $0x10\n \
cli\n \
mov     %%cr0,%%eax\n \
or      $1,%%al\n \
mov     %%eax,%%cr0\n  \
sti \
" : : : "eax", "ecx")

); Я не знаю, где можно разместить исходный код и получить помощь. Я написал выше код, который должен переключиться в реальный режим, установить режим видео и вернуться в защищенный режим. Я не знаю, что я делаю не так. Здесь таблица описаний чистая или что-то еще? Я довольно новичок в программировании ОС. Моя ОС сбрасывается в этом сегменте кода. Тройные осадки? Я нашел первую ошибку - вместо xor cl, cl должен быть neg / not cl. В обоих случаях ОС сбрасывается.

...