Работа с VESA в Паскале
Модераторы: Al_lexx, Sharp, ionika, Happy_MAN, 0xFF, Atom, Serega S.U.
Работа с VESA в Паскале
Есть режим 640*480 16М цветов. Необходимо вывести на экран цветовой градиент. Или подскажите, как в RGB изменяются цвета в десятичном формате т.е. начиная от 0 0 0 и заканчивая 255 255 255... Буду очень благодарен.
-
- Сообщения: 27
- Зарегистрирован: 21 июн 2006, 09:50
Занимался такой ерундой году так в 2000...
Т.к. ДОС может адресовать только 64К памяти, а 640х480х4 это около 1 мегабайта, то приходится использовать блоки (по 64К каждый) и переключатся между ними.
Короче, выгледит это примерно так:
Procedure SetGraphicsMode(mode:word);Assembler;
asm
Mov ax,$4F02 {$4F02 - функция инт 10h. Установка разр. экрана}
mov bx,mode; {помоему 112h -это и есть 640x480х32. Зависит от Видео карты}
int 10h;
end;
Procedure SetBlock(Block:Word);assembler;
Asm
Mov ax,$4F05; {насколлько я помню, смена блока - эта и есть функция 4F05, но могу и ошибаться.Если не сработает, то поробуй 4F06, 4F03}
mov bx,Block;
Int 10h;
end;
Соответственно - сначала заполняешь первый, второй и т.д. блоки. Заполняются они соответсвенно по РГБ форме. 4ый байт не используется. У ВЕСА адаптеров память начинается с сегмента A000h.
Т.к. ДОС может адресовать только 64К памяти, а 640х480х4 это около 1 мегабайта, то приходится использовать блоки (по 64К каждый) и переключатся между ними.
Короче, выгледит это примерно так:
Procedure SetGraphicsMode(mode:word);Assembler;
asm
Mov ax,$4F02 {$4F02 - функция инт 10h. Установка разр. экрана}
mov bx,mode; {помоему 112h -это и есть 640x480х32. Зависит от Видео карты}
int 10h;
end;
Procedure SetBlock(Block:Word);assembler;
Asm
Mov ax,$4F05; {насколлько я помню, смена блока - эта и есть функция 4F05, но могу и ошибаться.Если не сработает, то поробуй 4F06, 4F03}
mov bx,Block;
Int 10h;
end;
Соответственно - сначала заполняешь первый, второй и т.д. блоки. Заполняются они соответсвенно по РГБ форме. 4ый байт не используется. У ВЕСА адаптеров память начинается с сегмента A000h.