OSDev

для всех
Текущее время: 19 апр 2024, 10:57

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 04 мар 2018, 21:38 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Код функции: 0x4F00
Вход: AX = 0x4F00
ES: DI
Выход: AX = 0x004F

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 21:50 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
INT 21h в MS DOS?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 22:01 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Нет, я пишу ядро на си (точнее пытаюсь разобраться), и чтобы установить режим VESA необходимо получить видео режимы(пока просто получить их пытаюсь, не то чтобы установить), и насколько я понял нужны некие bios сервисы с 3 параметрами, первый функция второй на вход, и третий на выход

Но как организовать такую функцию ума не приложу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 22:45 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Ну, я, например, не могу разобраться, в чём именно проблема и что значит "организовать такую функцию" :)

Если говорить про нижний уровень, то нужно загрузить соответствующие параметры в подобающие регистры процессора (например, код функции, т.е. константу 4F00h в Вашем случае, в регистр AX, а адрес чего-то -- в регистры ES и DI) и выдать команду, вызывающую BIOS (INT 10h или 13h -- не помню, какая из них за видео отвечает, ибо отошёл от ПК примерно 100500 лет назад). Естественно, делается это на ассемблере, на чистом Си такое сделать технически невозможно. Впрочем, используемый компилятор может содержать средства для включения ассемблерного кода прямо в текст функции на Си либо предоставить ещё какие средства для реализации подобных задач -- но это уже надо смотреть документацию на конкретный компилятор, поскольку такие вещи стандартными не бывают в принципе.

Кстати говоря, если с ассемблером не дружите, то подружиться попросту необходимо: вещи типа ядер осей без него нельзя сделать вообще (другое дело, что никто не заставляет писать всё на ассемблере, но определённые части придётся-таки именно на нём).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 22:59 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Спасибо и на этом, теперь появилось хоть представление того что я пытаюсь сделать. Среди кучи английского текста трудно вытащить по настоящему ценную инфу кроме как примеров кода)))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 23:06 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Ну, можно поискать русские учебники по тому же ассемблеру -- там и примеры, и объяснения. Главное -- основы понять, дальше подобные вещи трудностей представлять не будут, и можно будет сосредоточиться на решении реальных задач.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2018, 23:43 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Да в общем то дело в том что VGA реализован, достаточно для реализвации ядра, да вот застрял я конкретно с управлением физической памяти, если быть конкретнее с не могу ее определить, все ругается на точку входа, решил отложить ненадолго, но судя по всему зря)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2018, 06:02 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Вызывать INT 10h надо через ассемблер. Стандарта тут считай что нету.
https://wiki.osdev.org/Inline_Assembly

Проще найти готовый пример.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2018, 12:26 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Какой у вас компилятор?
Какой режим процессора используете реальный RM или защищенный PM32, LM64?

Для LM64 единственный путь это программная эмуляция RM
https://habrahabr.ru/company/neobit/blog/176707/

Для PM32 так же лучше использовать программную эмуляцию. Возможно использовать аппаратную виртуализацию VM86.

Вызывать int 10h непосредственно из защищенного режима хотя и возможно, но работают не все функции. Вернее так работают те кроме нужных. Поэтому данный способ не пригоден для написания ОС и следует использовать эмуляцию.

Либо вовсе отказаться от вызова int 10h оставив установку видео режима за GRUB, а в своем ядре использовать лишь LFB.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2018, 17:07 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
ggc, PM32
Если использовать grub для установки видео режима я лишаюсь возможность уже после изменить или даже определить необходимый видео режим для железа.
Поэтому другого выхода не вижу, как и вообще выхода)))


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

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


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

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


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

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