eXeL@B —› Программирование —› Текстовый режим без API |
Посл.ответ | Сообщение |
|
Создано: 03 декабря 2011 20:54 · Личное сообщение · #1 Хочу делать тестовый вывод из дрова. По некоторым причинам апи неприемлемо. Нужно просто переключить видяху в текст.mode3 и писать напрямую в видеопамять. Не получается блять. рипнул код из биоса, он под виндой не работает. Т.е. работает, переключает в текст, но вывода нет. Единственный рабочий вариант - переключаться в RM, звать биос, потом обратно. Это нифига неправильно. Где-то косяк. Кто прогал видео, поделитесь. |
|
Создано: 03 декабря 2011 21:12 · Личное сообщение · #2 |
|
Создано: 03 декабря 2011 21:22 · Личное сообщение · #3 |
|
Создано: 03 декабря 2011 21:28 · Поправил: reversecode · Личное сообщение · #4 и что бы без релоков? ну если биос клацнул уже видео в текстовый режим пробуй писать что то в память текстового режима в реал моде она b800 в протекте сам пересчитай где это будет, я хз, там же еще страничная адрессация будет кстати! bootvid.dll же это и делал-делает?! но самый правильный способ это притянуть какойто емулятор x86 кода в ядро на С языке их полно x86emu например есть в гугле ps исходники bootvid вроде должны быть в reactos либо дизассемблируй биос и вытяни и перепиши код int 10h из реал в пм-под ах нет, bootvid кажется перед выводом уже прыгает обратно в RM а адресс b800 может быть фиг знает где поэтому 1) разбирать код биоса на int 10h или 2) тянуть сишный (или переписывать на asm) x86 емулятор и пускать код биоса под ним |
|
Создано: 03 декабря 2011 21:57 · Личное сообщение · #5 Поясню. рип-код из биоса под виндой не работает. Я трейсил банально весь I/O в RM и скидывал в лог. Потом этот ио перекинул в свой кодес под вынью. С учетом префиксов. Этот кодес работает под рм (досом), но не работает в винде. Где-то нюанс. Причем если винду переклбючить реалмоду и звать биос, то опятьже все работает. Какие-то нюансы в графике. На васме когда то похожие темы бодали BC и кто-то еще. Киньте в личку кусочек, если есть что кинуть )) |
|
Создано: 03 декабря 2011 22:04 · Поправил: reversecode · Личное сообщение · #6 там ньюанс может быть только один - порты ввода вывода либо они директ, либо отмапленные IO адрессное пространство видухи поэтому ничего и не пашет, ты обращаешься с портами ввода вывода не видухи скорее всего я кстати забыл уточнить что бы в емуль x86+сграбленный биос под ним пошел(заработал) в емуль нужно поставить калбеки на IO портов byte/word/dword R/W и вот эти обращения IO портов должны быть предварительно отмапленые в адрессное пространство видухи или биоса (вот здесь уже чать подзабыл) по которому он должен располагатся в ПМ режиме с учетом РМ |
|
Создано: 03 декабря 2011 22:17 · Личное сообщение · #7 |
|
Создано: 03 декабря 2011 22:26 · Личное сообщение · #8 начинаю понемногу вспоминать VGA порты считаются стандартными и каждая видуха должна по стандарту их поддерживать на практике насколько я помню все иначе вектор int 10h, в обычном мозерборадр биосе перебиватся на адресс видео биоса в самой видухе(после инициализации материнки+видео) и дальнейший алого по работе с видео на int 10h стандартный таким образом производители видео ушли от стандартных портов насчет знакогенератора не помню надо смотреть по bootvid, там вроде какойто статический при инициализации есть... но это в старой XP... как там в висте и 7 уже хз.. во всяком случае знакогенератор уже в видео биосе поскольку int 10h перебит(читаем выше) и перебивание его виндой мне кажется надуманым... там кстати в видео биосе есть еще entry называемый "инициализацией" который сбрасывает все настройки видео для того что бы int10h нормально работала |
|
Создано: 13 декабря 2011 04:54 · Личное сообщение · #9 |
|
Создано: 13 декабря 2011 05:26 · Личное сообщение · #10 spinz Ждём новую флешку-вымогалку =) ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: SReg, DimitarSerg, Lacoste |
eXeL@B —› Программирование —› Текстовый режим без API |