Графика под ДОС №2
исходник крутой, но мои познания в Ассемблере так широко не простираются. У меня почему-то под TAsm
не компилирует. Но если дизассемблирую exe, то получаю почти такой же исходник.
Пишу в Turbo Pascal:
asm
mov ax,4F01h
mov cx,118h
int 10h
end;
не работает!!!(mov ax,4f02h - тоже)
Пишу:
asm
mov di,512
mov ax,4F01h
mov cx,118h
int 10h
end;
-Дос виснет(даже если Mov di,512h)
Видео карта разрешение поддерживает(exe выполняется)
У меня такой вопрос:
Как инициализировать 800x600x24 bits (какая функция 10h прерывания(кстати, причем здесь mov cx,* ?))
В каких сегменте находится видео память, сколько страниц видео памяти(и как переключать на активную(и как заполнять неактивную)), и как "запульнуть"
3 байта цвета?
Заранее ОГРОМНОЕ СПАСИБО! Если можно - не исходником.
По существу.
ax=4F01h - чтение информации о видео режиме.
в cx - номер режима (118h - 1024x768x16M)
в ES:DI - адрес буфера рамером 100h (скорее всего, из-за этого у тебя дос и виснет, поскольку в твоем листинге ES неопределен)
Установить 800х600 можно так:
mov ax,4F02h
mov bx, 115h - номер режима 800х600х16М
int 10h
видеопамять находится по адресу 0A000:0000 до 0A000:FFFF - это "окно" отображения "настоящей" видеопамяти.
Количество страниц зависит от объёма видеопамяти и выбранного видеорежима.
Двигать это окно можно. Окон может быть два.
Запулевать кажется нужно четыре байта (не помню) и порядок не помню. Попробуй сам прописать чего-нить в A000:0000 - разберешся.
Подробнее ищи в нете описание работы с функциями VESA SVGA.