Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с установкой видео-режима!  (Прочитано 6424 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MMMasha
Гость
« : 04-02-2009 02:09 » new

Помогите мне пожалуйста. Есть такая проблема, на субноутбуке с разрешением 1024х600 не получается выставить видеорежим 800х600 (103h по стандарту VESA).
Работаю в среде Турбо Си версии 2.01. Попытка выставить режим осуществлялась следующим кодом:

Код:
#include<stdio.h>
#include<dos.h>

unsigned char far * Mem_SVGA = (unsigned char far *) 0xA0000000;

int main(){
union REGS in_r, out_r;
in_r.x.ax=0x4F02;
in_r.a.bx=0x103h;
int86(0x10, &in_r, &out_r);

/* ставим пиксель (100,100) */
*(Mem_SVGA+800*100+100)=1;
getch();
}

Дело в том, что код рабочий и режим выставляет, пиксель на экране ставит. но! Если я в момент выполнения прграммы переключаюсь на другое окно винды (Alt+Tab) появляется чёрный экран и всё виснет..... далее синий экран смерти и перезагрузка. Такой же эффект после завершения программы и выход в среду турбо Си - если я из турбо си пробую выйти после работы проги или переключить окно...
Уж не знаю что и делать!!! Ведь в выходных регистрах AH = 0 и AL = 4F то есть это признак того что данный режим 103h поддерживается. Причём этот код прекрасно работает на обычных ноутбуках с разрешением 1024 на 768 а на субноутбуках никак (тестировалось на ASUS EEE и LENOVO s10)... Вот. какие у кого мысли?
« Последнее редактирование: 04-02-2009 06:57 от Вад » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 04-02-2009 09:00 » 

MMMasha, попробуй начать с точки (10,10). По-моему от A000:0000 адресуется лишь 64 Кб, т.е. работает 320х200х8, а вот дальше что-то надо делать. То ли там дыры в памяти, то ли отображения разных участков. Сильное подозрение, что пишешь ты не в ту память.

Ещё попробуй ставить пиксели через функцию 0x10 прерывания. Для проверки, что дело именно в диапазонах адресов.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
MMMasha
Гость
« Ответ #2 : 04-02-2009 12:26 » 

да дело в том что такая же фигня даже если я никаких пикселей вовсе не ставлю, просто включаю режим и.. косяк.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 04-02-2009 12:29 » 

так может он не поддерживает этот режим?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
MMMasha
Гость
« Ответ #4 : 04-02-2009 13:33 » 

поддерживает. во-первых в настройках экрана он есть, во вторых при тестировании видеоадаптера был выведен список поддерживаемых режимов, скреди которых он есть, ну а в третьих регистры ah=0 al=4f после установки режима, что говорит о том что он установлен без ошибок. Тут может быть после установки режима надо выставить что-то ещё? типа палитры или какого-то окна видеопамяти... что-то косячит на субноутбуках, может быть по умолчанию что-то неправильно выставлено, что нужно вручную сделать перед использованием режима... потому что на обычных ноутах всё это прекрасно работает и на компах тож работает..
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines