Программирование видеоадаптеров



Установка палитры из градаций серого цвета - подфункция 1Bh


Функция заполняет часть таблицы цветов значениями, соответствующими различным оттенкам серого цвета. Для каждого модифицируемого регистра таблицы цветов сначала читаются записанные в нем данные, а затем записываются обратно по следующему правилу: красного 30 - процентов, зеленого - 59 процентов и голубого - 11 процентов от считанного значения.

На входе:

AH

10h

AL

1Bh - установка палитры из градаций серого цвета

BX

Номер первого регистра таблицы цветов

CX

Количество модифицируемых регистров

На выходе:

Не используются

Следующий пример демонстрирует, как преобразовать таблицу цветов для отображения различных градаций серого цвета. Модифицируются значения регистров таблицы цветов, имеющих номера от first_num до end_num:

mov        ah,10h

mov        al,1Bh

; Номер первого модифицируемого регистра

mov        bx,first_num

; Номер последнего модифицируемого регистра

mov        cx,end_num

; Определяем число изменяемых регистров

sub         cx,bx

int           10h

Программа BIOSDAC демонстрирует использование функций BIOS для управления таблицей цветов. Исходный текст программы BIOSDAC представлен на листинге 5.5.

Листинг 5.5. Файл BIOSDAC.C

#include <conio.h>

#include <stdio.h>

#include <dos.h>

#include "sysp.h"

typedef struct _RGB_ {

 

unsigned char red;

 

unsigned char green;

 

unsigned char blue;

} RGB;

// Объявление функций

void        main(void);

void        SetVideoMode(unsigned char);

void        SetVgaDAC(unsigned, unsigned);

void        GrayScale(void);

//======================================================

// Главная функция

//======================================================

void main(void)

{

 

RGB color_table[256];

 

unsigned char   i,j;

 

unsigned char   far *ptr;

 

int error, x_num, y_num;

 

unsigned seg_table,off_table;

 

// Формируем новые значения для таблицы цветов

 

for(j = 0; j < 4; j++) {

               

for(i = 0; i < 64; i++) {




Содержание  Назад  Вперед