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


Краткий обзор - часть 2


/p>

А теперь перечислим адреса тех же регистров, но уже для цветных режимов видеоадаптера:

Адрес

Регистр

3C2h

Регистр определения различных режимов работы (Miscellaneous Output Register - MOR),

Регистр состояния 0 (Input Status Register 0 - ISR0)

3DAh

Регистр управления дополнительным устройством Feature Control Register),

Регистр состояния 1 (Input Status Register 1 - ISR1)

3DBh

Регистр очистки защелки светового пера (Clear Light Pen Latch Register- CLPLR)

3DCh

Установка защелки светового пера (Set Light Pen Latch Register - SLPLR)

3C4h, 3C5h

Регистры синхронизатора (Sequencer Register's - SR)

3D4h, 3D5h

Регистры контроллера ЭЛТ (CRT Controller Register's - CRT_CR)

3CAh, 3CCh, 3CEh, 3CFh

Регистры графического контроллера (Graphics Controller Register's - GCR)

3C0h

Регистр контроллера атрибутов (Attribute Controller Register - ACR)

3C3h

Регистр разрешения работы системы VGA (VGA Enable Register - VGA_ER)

3C6h, 3C7h, 3C8h, 3C9h

Регистры ЦАП VGA (VGA Video DAC Register - VGA_DAC_R)

В зависимости от режима работы видеопамять адаптера занимает различное адресное пространство:

Номер режима работы

Адрес памяти

0,1,2,3,4,5,6

B000:8000h-B000:FFFFh

7

B000:0000h-B000:7FFFh

0Dh,0Eh,0Fh,10h,11h,12h,13h

A000:0000h-A000:FFFFh

Ниже мы привели исходный текст функции Get_Seg_Vmem. Данная функция определяет текущий режим работы видеоадаптера и возвращает сегментный адрес начала видеопамяти. Если видеоадаптер работает в нестандартном режиме, функция возвращает нулевое значение.

Чтобы узнать номер текущего режима видеоадаптера, используется функция 0Fh прерывания INT 10h. Пример вызова данной функции представлен в листинге 4.1.

Листинг 4.1. Файл SEGVMEM.C

// Файл SYSP.H представлен в листинге 3.2

#include "sysp.h"


unsigned GetSegVmem(void) {


 

unsigned char   mode;

 

unsigned                                             seg_address;


 

// Определяем текущий режим видеоадаптера




Начало  Назад  Вперед



Книжный магазин