eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: hlmadip, alepolann, daFix (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Программирование —› Текстовый режим без API
Посл.ответ Сообщение

Ранг: 46.1 (посетитель)
Статус: Участник

Создано: 3 декабря 2011 20:54 New!
Цитата · Личное сообщение · #1

Хочу делать тестовый вывод из дрова. По некоторым причинам апи неприемлемо. Нужно просто переключить видяху в текст.mode3 и писать напрямую в видеопамять. Не получается блять. рипнул код из биоса, он под виндой не работает. Т.е. работает, переключает в текст, но вывода нет. Единственный рабочий вариант - переключаться в RM, звать биос, потом обратно. Это нифига неправильно.
Где-то косяк. Кто прогал видео, поделитесь.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 декабря 2011 21:12 New!
Цитата · Личное сообщение · #2

spinz пишет:
Не получается блять. рипнул код из биоса, он под виндой не работает.

емуль x86 тяни в дров, и под емулем пускай свой биос
тогда все заработает
ну либо виндовый x86 емуль зови
в видео дрове он помоему есть или в hal, не помню уже

Ранг: 46.1 (посетитель)
Статус: Участник

Создано: 3 декабря 2011 21:22 New!
Цитата · Личное сообщение · #3

reversecode пишет:
емуль x86 тяни в дров, и под емулем пускай свой биос
тогда все заработает
ну либо виндовый x86 емуль зови
в видео дрове он помоему есть или в hal, не помню уже

повторю, нужно без винды, чистым I/O.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 декабря 2011 21:28 · Поправил: reversecode New!
Цитата · Личное сообщение · #4

и что бы без релоков?
ну если биос клацнул уже видео в текстовый режим
пробуй писать что то в память текстового режима в реал моде она b800
в протекте сам пересчитай где это будет, я хз, там же еще страничная адрессация будет
кстати! bootvid.dll же это и делал-делает?!

но самый правильный способ это притянуть какойто емулятор x86 кода в ядро
на С языке их полно x86emu например есть в гугле

ps исходники bootvid вроде должны быть в reactos
либо дизассемблируй биос и вытяни и перепиши код int 10h из реал в пм-под

ах нет, bootvid кажется перед выводом уже прыгает обратно в RM
а адресс b800 может быть фиг знает где

поэтому
1) разбирать код биоса на int 10h
или
2) тянуть сишный (или переписывать на asm) x86 емулятор и пускать код биоса под ним

Ранг: 46.1 (посетитель)
Статус: Участник

Создано: 3 декабря 2011 21:57 New!
Цитата · Личное сообщение · #5

Поясню. рип-код из биоса под виндой не работает. Я трейсил банально весь I/O в RM и скидывал в лог. Потом этот ио перекинул в свой кодес под вынью. С учетом префиксов.
Этот кодес работает под рм (досом), но не работает в винде. Где-то нюанс. Причем если винду переклбючить реалмоду и звать биос, то опятьже все работает. Какие-то нюансы в графике. На васме когда то похожие темы бодали BC и кто-то еще. Киньте в личку кусочек, если есть что кинуть ))


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 декабря 2011 22:04 · Поправил: reversecode New!
Цитата · Личное сообщение · #6

там ньюанс может быть только один - порты ввода вывода
либо они директ,
либо отмапленные IO адрессное пространство видухи
поэтому ничего и не пашет, ты обращаешься с портами ввода вывода не видухи скорее всего

я кстати забыл уточнить
что бы в емуль x86+сграбленный биос под ним пошел(заработал)
в емуль нужно поставить калбеки на IO портов byte/word/dword R/W
и вот эти обращения IO портов должны быть предварительно отмапленые в адрессное пространство видухи или биоса (вот здесь уже чать подзабыл) по которому он должен располагатся в ПМ режиме с учетом РМ

Ранг: 46.1 (посетитель)
Статус: Участник

Создано: 3 декабря 2011 22:17 New!
Цитата · Личное сообщение · #7

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


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 декабря 2011 22:26 New!
Цитата · Личное сообщение · #8

начинаю понемногу вспоминать
VGA порты считаются стандартными и каждая видуха должна по стандарту их поддерживать
на практике насколько я помню все иначе
вектор int 10h, в обычном мозерборадр биосе перебиватся на адресс видео биоса в самой видухе(после инициализации материнки+видео)
и дальнейший алого по работе с видео на int 10h стандартный
таким образом производители видео ушли от стандартных портов

насчет знакогенератора не помню
надо смотреть по bootvid, там вроде какойто статический при инициализации есть...
но это в старой XP... как там в висте и 7 уже хз..

во всяком случае знакогенератор уже в видео биосе поскольку int 10h перебит(читаем выше)
и перебивание его виндой мне кажется надуманым...
там кстати в видео биосе есть еще entry называемый "инициализацией"
который сбрасывает все настройки видео для того что бы int10h нормально работала

Ранг: 46.1 (посетитель)
Статус: Участник

Создано: 13 декабря 2011 04:54 New!
Цитата · Личное сообщение · #9

Оказалось все просто. Вынь действительно херит второй цветовой слой, где расположены фонты знакогенератора. Достаточно было подгрузить туда свои фонты и все заработало.


Ранг: 523.8 (!)
Статус: Участник
оптимист

Создано: 13 декабря 2011 05:26 New!
Цитата · Личное сообщение · #10

spinz
Ждём новую флешку-вымогалку =)

| Сообщение посчитали полезным: SReg, DimitarSerg, Lacoste

 eXeL@B —› Программирование —› Текстовый режим без API

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS