Цитата(sergey sva @ Oct 2 2011, 17:02)

Что то не пойму как вывести картинку например 800+600 если диапазон видео памяти начинается от a0000 до afff если дальше писать то просто изображения не видно. видео режим 800+600 256 линейный 0х103.
Простите, а зачем я, как вы думаете, выложил исходники программ (под дос и под dos extender от zortech 3.1), где вызывается процедура переключения страниц видеопамяти как раз по информации, предоставляемой vesa bios? Запустите - программы рисуют картинки, похожие на BGIDEMO от Borland.
Цитата
800+600 256 линейный
В режиме 16/24/32 бита может оказаться быстрее - да и избавитесь от необходимости палитру загружать.
Пожалуй, 16 бит самое то.
Вот два метода перекючения страницы - через колбэк и медленный - через вызов функции vesa bios. Это для real mode.
Код
static void
vesa_setpage_bio(unsigned short page, unsigned w)
{
union REGS r;
r.x.ax = 0x4f05; /* 4fh/05h: Page service. */
r.h.bh = 0x00; /* bh = 0: set, bl = window */
r.h.bl = w; /* bh = 0: set, bl = window */
r.x.dx = page; /* In granularity units. */
int86(0x10, & r, & r);
if (r.x.ax != 0x004f)
{ printf("Error in function 0x4f/0x05\n");
return;
}
}
static void
vesa_setpage_dir(unsigned short page, unsigned w)
{
_SI = _SI; /* Force save register variables. */
_DI = _DI;
_DX = page; /* In granularity units. */
_BX = w; /* bh = 0: set, bl = window */
(* gcx.wpos)();
}
void (* vesa_setpage)(unsigned short, unsigned) = vesa_setpage_bio;