Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
97
Добавлен:
09.02.2015
Размер:
5 Мб
Скачать
☆

Приложение А.10: Таблицы данных для видеосистемы

Продолжение таблицы А.10-1

 

 

 

 

 

113h

32k

 

800x600

*1

SVGA

 

114h

64k

 

800x600

*1

SVGA

 

115h

16M

 

800x600

*1

SVGA

 

116h

32k

 

1024x768

*1

SVGA

 

117h

64k

 

1024x768

*1

SVGA

 

118h

16M

 

1024x768

*1

SVGA

 

119h

32k

 

1280x1024

*1

SVGA

 

11Ah

64k

 

1280x1024

*1

SVGA

 

11Bh

16M

 

1280x1024

*1

SVGA

 

120h

256

 

1600x1200

*1

SVGA

Примечание 1: размеры и положение "окон" доступа к видеопамяти в режимах SVGA зависят от используемой видеокарты. Параметры доступа можно выяснить вызовом INT 10\AX=4F01h (8.01-36, A.10-7).

Примечание 2: графический видеорежим 102h (800x600x16) до принятия стандарта SVGA обозначался кодом 6Ah, и посредством этого кода может быть установлен с помощью INT 10\AH=00h (8.01-10).

Примечание 3: стандарт SVGA резервирует код BX=81FFh для обозначения специального видеорежима, открывающего неограниченный доступ к встроенной памяти видеокарты.

A.10-2 Сведения о статусе видеосистемы

Здесь показана структура 64-байтового блока данных, возвращаемого обработчиком прерывания INT 10\AH=1Bh (8.01-34) и характеризующего текущее состояние видеосистемы компьютера.

Смещение

Длина

Содержание

00h

4

Адрес таблицы стат. функциональности (A.10-3)

04h

1

Установленный видеорежим

05h

2

Число элементов адресации по горизонтали

07h

2

Размер буфера регенерации в байтах

09h

2

Начальный адрес буфера регенерации

0Bh

16

8 позиций курсора для видеостраниц 0 – 7

1Bh

2

Начальная и конечная строки курсора

1Dh

1

Номер активной видеостраницы

1Eh

2

Адрес порта контроллера CRT

20h

2

Значения, посланные в порты 03x8h и 03x9h

22h

1

Номер последней строки

23h

2

Число байтов на знак в таблице шрифта

25h

1

Код активного видеоадаптера

26h

1

Код второго видеоадаптера, если он имеется

 

 

– 649 –

Приложение А.10: Таблицы данных для видеосистемы

Продолжение таблицы А.10-2

27h

2

Число цветов (= 0000h для b/w видеорежимов)

29h

1

Число видеостраниц действующего видеорежима

2Ah

1

Число строк растра (примечание 1)

2Bh

1

Первый блок шрифта знакогенератора

2Ch

1

Второй блок шрифта знакогенератора

2Dh

1

Флаги текущего состояния (примечание 2)

31h

1

Видеопамять, 00h – 03h означают 64 – 256 кбайт

32h

1

Флаги, такие же как в байте 0Eh таблицы A.10-3.

Примечание 1: число строк растра определяется установлением в единицу одного бита в байте со смещением 2Ah, причем биты 0, 1, 2, 3, 4, 5, 6

соответствуют числам строк 200, 350, 400, 480, 512, 600, 768.

Примечание 2: установление битов в байте флагов 2Dh означает следующее: бит 0 – ограничений на установление видеорежимов нет бит 1 – включено полутоновое суммирование бит 2 – включен монохромный знакогенератор бит 3 – запрет загрузки произвольных палитр бит 4 – осуществляется эмуляция курсора

бит 5 – роль бита 7 в байте цвета (A.10-5)

бит 6 – шрифты 9-точечной ширины не поддерживаются. Если бит 5 в байте флагов сброшен в нуль, то бит 7 в байте цвета изменяет яркость фона, иначе он задает мерцание знака.

A.10-3 Формат таблицы статической функциональности

Таблица статической функциональности характеризует то множество видеорежимов, которое способна поддерживать видеокарта компьютера. Указатель

на таблицу статической функциональности выдается в первых четырех байтах таблицы сведений о статусе видеосистемы (A.10-2), возвращаемой обработчиком прерывания INT 10\AH=1Bh (8.01-34).

Смещение

Длина

Содержание

00h

7

Установление битов 00h – 13h означает поддержку

 

 

 

видеорежимов 00h – 13h. Роль битов после

 

 

 

13h зависит от изготовителя видеокарты.

07h

1

Биты 0

– 6 отмечают поддержку растров с числом

 

 

 

строк 200, 350, 400, 480, 512, 600, 768.

08h

1

Доступное число блоков шрифта знакогенератора

09h

1

Число одновременно используемых шрифтов

0Ah

2

Слово поддерживаемых функций:

 

 

бит 0

– произвольный выбор видеорежима

 

 

бит 1

– поддержка полутонового суммирования

 

 

 

– 650 –

Приложение А.10: Таблицы данных для видеосистемы

Продолжение таблицы А.10-3

бит 2 – поддержка загрузки шрифтов бит 3 – возможность запрета загрузки палитр бит 4 – поддержка эмуляции курсора

бит 5 – имеется встроенная палитра EGA бит 6 – встроенная цветностная палитра бит 7 – постраничные цветностные регистры бит 8 – световое перо (INT 10\AH=04h)

бит 9 – сохранение и восстановление состояния бит 10 – поддержка бита 7 байта цвета (A.10-5) бит 11 – поддержка нескольких видеокарт

0Eh 1 Байт поддержки шрифтов и палитр:

бит 0 – поддержка 512-знаковых шрифтов бит 1 – динамическая область сохранения бит 2 – перезагрузка текстовых шрифтов бит 3 – перезагрузка графических шрифтов бит 4 – поддержка перезагрузки палитр

бит 5 – поддержка расширений видеоадаптера

A.10-4 Сведения о SVGA-расширениях системы BIOS

Здесь приведены выборочные сведения из 512-байтового блока данных, возвращаемого обработчиком прерывания INT 10\AX=4F00h (8.01-35). Сведения характеризуют программное обеспечение, "зашитое" в микросхему постоянной памяти видеокарты.

Смещение

Длина

Содержание

00h

4

Сигнатура "VESA" или "VBE2"

04h

2

Номер версии SVGA-расширений системы BIOS

06h

4

Указатель на имя фирмы-изготовителя

0Eh

4

Адрес списка поддерживаемых видеорежимов,

 

 

оканчивающегося словом FFFFh

12h

2

Размер имеющейся видеопамяти, выраженный

 

 

числом блоков по 64 кбайт каждый.

A.10-5 Коды цветности 16-цветных видеорежимов

Из множества доступных видеорежимов и система BIOS, и MS-DOS7 по умолчанию выбирают 16-цветный текстовый видеорежим 03h, имеющийся во всех AT-совместимых компьютерах. Далее здесь дана расшифровка четырехбитовых кодов, определяющих цвета знаков и фона в видеорежиме 03h и в других 16-цветных видеорежимах (A.10-1).

– 651 –

Приложение А.10: Таблицы данных для видеосистемы

0000

0

черный

1000

8

серый

0001

1

синий

1001

9

ярко-синий

0010

2

зеленый

1010

10

ярко-зеленый

0011

3

голубой

1011

11

ярко-голубой

0100

4

красный

1100

12

ярко-красный

0101

5

пурпурный

1101

13

ярко-пурпурный

0110

6

коричневый

1110

14

желтый

0111

7

белый

1111

15

яркий белый

На основе показанных кодов формируются байты цветности (иногда называемые также байтами атрибутов). Чередующимися байтами цветности и знаковыми байтами заполняется видеопамять в текстовых видеорежимах. В каждом байте цветности биты 3 – 0 характеризуют цвет знака, а биты 6 – 4 – цвет фона. По умолчанию бит 7 характеризует не яркость фона, а мерцание знака, однако эта его роль может быть переопределена с помощью INT 10\AX=1003h (8.01-23), и тогда биты в обеих четырехбитовых группах будут иметь одинаковое значение. Роль бита 3, по умолчанию определяющего яркость знака, также может быть переопределена с помощью INT 10\AX=1103h (8.01-28) и тогда бит 3 будет направлять выбор знака к другому блоку шрифта, обеспечивая тем самым одновременное воспроизведение знаков из двух заранее загруженных шрифтов.

A.10-6 Видеоданные в области данных BIOS

В приведенной здесь таблице показаны избранные данные BIOS, которые могут иметь отношение к видеосистеме компьютера. Все значения смещений отсчитаны от сегментного адреса 0040h, то есть от начала области данных BIOS (A.01-1).

Смещение

Длина

Содержание

10h

2

Биты 4-5 определяют начальный видеорежим:

 

 

00b

– выбор предоставлен видеокарте

 

 

01b

– 40x25 текстовый цветной (CGA)

 

 

10b

– 80x25 текстовый цветной (CGA)

 

 

11b

– 80x25 монохромный текстовый.

49h

1

Установленный видеорежим (A.10-1)

4Ah

2

Число элементов адресации по горизонтали

4Ch

2

Размер видеостраницы (в байтах) в видеобуфере

4Eh

2

Начальный адрес активной видеостраницы

50h

16

Координаты курсора в каждой из 8 видеостраниц

60h

2

Начальная и конечная строки курсора (8.01-11)

62h

1

Номер активной видеостраницы

63h

2

Базовый порт CRT-контроллера (обычно 03D4h)

65h

1

Байт, посланный в порт 03B8h/03D8h:

 

 

– 652 –

 

 

Приложение А.10:

Таблицы данных для видеосистемы

Продолжение таблицы А.10-6

 

 

 

 

 

 

 

 

бит 5 – управление мерцанием (8.01-23)

 

 

 

 

 

 

 

 

 

66h

 

1

Байт, посланный последним в порт 03D9h:

 

 

 

 

 

 

 

бит 4 – яркость фона (8.01-23)

 

 

 

84h

 

1

Число элементов адресации по вертикали

 

 

 

85h

 

2

Число строк в вертикальном размере шрифта

 

 

 

87h

 

5

Флаги состояния видеокарты:

 

 

 

 

 

 

бит 0: эмуляция курсора не осуществляется

 

 

 

 

 

 

бит 1: применен монохромный дисплей

 

 

 

 

 

 

бит 2: нужна задержка на время прогрева CRT

 

 

 

 

 

 

бит 7: сохранять видеопамять при смене режима

 

 

 

A8h

 

4

Адрес блока указателей для видеорежимов VGA

 

 

Примечание 1: представленное расположение данных может быть изменено в зависимости от версии системы BIOS в Вашем компьютере.

A.10-7 Характеристики запрошенного видеорежима SVGA

Здесь представлены выборочные сведения из 256-байтового блока данных, который возвращает обработчик прерывания INT 10\AX=4F01h (8.01-36) в ответ на запрос о любом из поддерживаемых видеорежимов SVGA.

Смещение

Длина

Содержание

00h

2

Флаги:

 

 

 

бит 0

– запрошенный режим поддерживается

 

 

бит 2

– поддержка функций 8.01-21, 8.01-33

 

 

бит 3

– если сброшен, то режим монохромный

 

 

бит 4

– если сброшен, то режим текстовый

 

 

бит 5

– режим отличается от стандарта VGA

 

 

бит 6

– переключения банков памяти нет

 

 

бит 7

– линейный кадровый буфер доступен

02h

1

Окно "A":

 

 

бит 0

– скользящее окно "A" существует

 

 

бит 1

– окно "A" доступно для чтения

 

 

бит 2

– окно "A" доступно для записи

03h

1

Окно "B": то же, что в байте 02h для окна "A"

04h

2

Шаг (в кб) смещения "окон" по видеопамяти

06h

2

Размер "окон", выраженный в килобайтах

08h

2

Начальный сегмент окна "A" (для процессора)

0Ah

2

Начальный сегмент окна "B" (для процессора)

0Ch

4

Адрес

вызова подпрограммы позиционирования

 

 

окон, аналогичной INT 10\AX=4F05h (8.01-39)

10h

2

Число байтов видеопамяти на 1 строку развертки

 

 

 

– 653 –

Приложение А.10: Таблицы данных для видеосистемы

Продолжение таблицы А.10-7

 

 

12h

2

Длина строки (примечание 1)

 

14h

2

Размер растра по вертикали (примечание 1)

 

16h

1

Ширина знакоместа в пикселах

 

17h

1

Высота знакоместа в пикселах

 

18h

1

Число плоскостей видеопамяти

 

19h

1

Число битов видеопамяти на один пиксел

 

1Ah

1

Число банков памяти на видеокарте

 

1Bh

1

Модель заполнения видеопамяти:

 

 

 

00h

– текстовая, попеременно знак и цвет

 

 

 

03h

– 16-цветная графическая модель EGA

 

 

 

04h

– графическая с "упакованными" пикселами

 

 

 

06h

– 3 байта цветности на пиксел (HiColor)

 

 

 

07h

– модель яркость-цветность (YUV или YIQ)

 

1Ch

1

Размер банка видеопамяти в килобайтах

 

1Dh

1

Число видеостраниц

 

28h

4

Физический адрес видеобуфера (VBE версии 2.0)

Примечание 1: длина строки и размер растра для графических видеорежимов выражены в пикселах, а для текстовых – числом знакомест.

A.11 Спецификации оборудования компьютера

A.11-1 Слово аппаратной конфигурации

Слово аппаратной конфигурации возвращает обработчик прерывания INT 11 (8.01-42), он считывает это слово из области данных BIOS (A.01-1) обычно по адресу 0040:0010h (адрес может зависеть от версии BIOS). Расшифровка значений битов в слове аппаратной конфигурации дана в приведенной ниже таблице.

Биты

Значение

0

Имеется флоппи-дисковод, пригодный для загрузки компьютера

1

Имеется арифметический сопроцессор

2

Под управлением BIOS имеется манипулятор "мышь"

4-5

Начальный видеорежим, расшифровываемый в таблице A.10-1

6-7

Число флоппи-дисководов минус 1, только если установлен бит 0

9-11

Число последовательных портов (COM-портов)

12

Имеется игровой порт (для джойстика)

13

Имеется встроенный модем

14-15

Число параллельных портов (LPT-портов)

– 654 –

Приложение А.11: Спецификации оборудования компьютера

A.11-2 Идентификаторы модели компьютера для драйвера HIMEM.SYS

Для обеспечения доступа к расширенной памяти компьютера драйверу HIMEM.SYS (5.04-01) необходимо правильно определить тип центрального процессора. Однако в некоторых компьютерах драйвер HIMEM.SYS не может определить тип процессора правильно, и тогда в строке вызова драйвера нужно явно указать идентификатор или кодовый номер модели компьютера.

В приведенной ниже таблице перечислены идентификаторы и соответствующие кодовые номера тех моделей компьютеров, в которых не обеспечивается

определение типа центрального процессора по крайней мере некоторыми версиями драйвера HIMEM.SYS. Первое место в этой таблице (код 1) в порядке исключения занимает вполне определяемая модель IBM PC AT, потому что именно она принимается по умолчанию. Последние версии драйвера HIMEM.SYS способны

правильно определять типы процессоров почти во всех перечисленных здесь моделях компьютеров, кроме Acer 1100, Wyse, и IBM 7552.

Идентификатор

Код

Модель компьютера

at

1

IBM PC AT и совместимые с ней модели

ps2

2

IBM PS/2

ptlcascade

3

Phoenix Cascade BIOS

hpvectra

4

HP Vectra (A & A+)

att6300plus

5

AT&T 6300 Plus

acer1100

6

Acer 1100

toshiba

7

Toshiba 1600 & 1200XE

wyse

8

Wyse 12.5 Mhz 286

tulip

9

Tulip SX

zenith

10

Zenith ZBIOS

at1

11

Резервировано фирмой IBM

at2

12

Резервировано фирмой IBM

css

12

CSS Labs

at3

13

Резервировано фирмой IBM

philips

13

Philips

fasthp

14

HP Vectra

ibm7552

15

IBM 7552 Industrial Computer

bullmicral

16

Bull Micral 60

dell

17

Dell XBIOS

A.11-3 Контроллер клавиатуры

Контроллер клавиатуры – это микросхема на материнской плате компьютера. В AT-совместимых компьютерах применяют разные типы контроллеров клавиатуры,

– 655 –

Приложение А.11: Спецификации оборудования компьютера

но как их роли, так и управление ими в значительной степени унифицированы. "Общение" центрального процессора с контроллером клавиатуры происходит, в основном, через порты 60h и 64h.

Порт 64h всегда открыт для считывания текущего состояния контроллера клавиатуры. Установление в единицу отдельных битов в байте состояния, принятом командой IN (7.03-26) из порта 64h, означает следующее:

бит 7 – ошибка передачи данных от клавиатуры; бит 6 – клавиатура не отвечает контроллеру;

бит 4 – клавиатура заблокирована командой ADh;

бит 2 – самотестирование клавиатуры успешно закончено; бит 1 – контроллер еще не успел выполнить операцию; бит 0 – в порте 60h готов к считыванию код клавиши.

При каждом нажатии или отпускании любой клавиши контроллер выставляет соответствующий код клавиши в порт 60h и одновременно объявляет об этом, устанавливая в единицу бит 0 в порте 64h и посылая сигнал на вызов обработчика прерывания INT 09 через линию 4 своей выходной шины (примечание 1). Обработчик прерывания INT 09 (8.01-09) считывает подготовленный байт из порта 60h. Каждый акт считывания из порта 60h сбрасывает в нуль бит 0 в порте 64h.

Помимо прочего, порт 64h принимает коды операций контроллера клавиатуры, посылаемые ему посредством команды OUT (7.03-66). Поскольку контроллер работает значительно медленнее центрального процессора, постольку перед посылкой ему любого кода или любых данных необходимо ждать, пока будет сброшен в нуль бит 1 в байте состояния, считываемом из того же порта 64h: это будет означать, что контроллер завершил предыдущее действие и готов приступить к следующему. Коды наиболее важных системных операций, принимаемые контроллером клавиатуры через порт 64h, показаны в приведенной ниже таблице.

Код

Операция

ADh

Выключение (блокировка) клавиатуры

AEh

Активизация (разблокировка) клавиатуры

D1h

Открыть порт 60h для приема данных (примечание 1)

EDh

Открыть порт 60h для приема данных (примечание 2)

FEh

Сброс процессора в начальное состояние (примечание 3)

Примечание 1: при исполнении операции D1h порт 60h примет 1 байт данных и направит его в выходную шину контроллера. Биты байта данных распределяются по линиям шины следующим образом:

бит 7 – сигнал на линию данных к клавиатуре; бит 6 – на линию тактовых импульсов к клавиатуре;

бит 4 – на линию IRQ 1 для вызова INT 09 (8.01-09);

– 656 –

Приложение А.11: Спецификации оборудования компьютера

бит 1 – к вентилю линии A20 адресной шины;

бит 0 – на сброс процессора в начальное состояние. Активное состояние линий – нулевое, поэтому посылать байты с нулевым состоянием бита 0 нельзя (процессор будет заблокирован). По той же причине для открывания линии A20 следует посылать в порт 60h байт FFh, а для запрета доступа к HMA – байт FDh.

Примечание 2: при исполнении операции EDh порт 60h примет 1 байт данных и

направит его на управление светодиодными индикаторами клавиатуры, в частности:

бит 2 – к индикатору Caps Lock бит 1 – к индикатору Num Lock бит 0 – к индикатору Scroll Lock

Для включения (зажигания) индикатора соответствующий бит надо установить в единицу. Не упомянутые здесь биты в посылаемом байте данных должны быть обнулены.

Примечание 3: при исполнении операций F0h – FFh контроллер направит в свою выходную шину 4 младших бита кода операции, но, в отличие от операции D1h, не будет удерживать эти состояния линий, а выдаст их только в виде 6-микросекундного импульса. В частности, при посылке в порт 64h кода операции FEh будет сформирован импульс, направляемый в линию 0 выходной шины. Он сбросит процессор в начальное состояние подобно кнопке "Reset" на лицевой панели системного блока компьютера. Пути влияния на развитие событий после сброса кратко описаны в примечании 4 к A.12-1.

A.11-4. Флаги центрального процессора.

Обычный 16-разрядный регистр флагов в современных процессорах, начиная с модели 80386, расширен до 32 бит; кроме того, введены управляющие регистры CR0, CR2 и CR3. Позже, начиная с процессора Pentium, группа управляющих регистров дополнена регистром CR4. Из упомянутых управляющих регистров только регистр CR2 не содержит флагов – он выделен для хранения линейного адреса последней команды, запросившей доступ к неразрешенной странице памяти. Назначение некоторых флагов из регистра флагов, а также из регистров CR0, CR3 и CR4 показано в приведенной ниже таблице.

Регистр

Бит

Назначение

Примечания

FLAGS

00h

CF – флаг переноса в старшем разряде

*1

FLAGS

02h

PF – четность суммы младшего байта

*1

FLAGS

04h

AF – флаг переноса из 4-го разряда

*1

FLAGS

06h

ZF – флаг равенства или нуля

*1

– 657 –

Приложение А.11: Спецификации оборудования компьютера

Продолжение таблицы А.11-4

 

 

FLAGS

07h

SF – флаг знака числа

*1

 

FLAGS

08h

TF – флаг пошагового исполнения

 

 

FLAGS

09h

IF – флаг разрешения прерываний

*1

 

FLAGS

0Ah

DF – направление счета индексов

*1

 

FLAGS

0Bh

OF – флаг переполнения

*1

 

FLAGS

0Ch

2-битовое поле уровня привилегий

*2

 

FLAGS

0Eh

Флаг вложенной задачи

*3

 

FLAGS

0Fh

Признак процессоров 8086

*3

 

EFLAGS

10h

Флаг запрета отладочных прерываний

*4

 

EFLAGS

11h

Флаг установления режима V86

*4, *5

 

EFLAGS

12h

Флаг контроля выравнивания

*4, *6

 

EFLAGS

13h

Виртуальное разрешение прерываний

*4

 

EFLAGS

14h

Виртуальный запрос прерывания

*4

 

EFLAGS

15h

Идентификация процессора

*3, *4

 

CR0

00h

Флаг защищенного режима

*7

 

CR0

01h

Синхронизация сопроцессора (7.02-05)

*7

 

CR0

02h

Эмуляция сопроцессора через INT 07

*7

 

CR0

03h

Флаг переключения задач

*7

 

CR0

04h

Флаг поддержки команд сопроцессора

*7

 

CR0

05h

Исключение при ошибке сопроцессора

*7

 

CR0

10h

Защита от записи

*7, *8

 

CR0

12h

Разрешение выравнивания по маске

*7, *6

 

CR0

1Dh

Запрет сквозной записи кэша

*7

 

CR0

1Eh

Запрет заполнения кэша

*7

 

CR0

1Fh

Разрешение подкачки страниц

*7

 

CR3

03h

Сквозная запись при кэшировании

*7, *9

 

CR3

04h

Запрет страничного кэширования

*7, *9

 

CR4

00h

Разрешение виртуального флага V86

*7

 

CR4

01h

Разрешение виртуальных флагов

*7

 

CR4

02h

Запрет считывания счетчика времени

*7

 

CR4

03h

Разрешение INT 01 при вызове порта

*7

Примечание 1: роль и состояния этого флага описаны в разделе 6.05-15. Примечание 2: биты 0Ch и 0Dh в регистре флагов выражают необходимый уровень

привилегий для проведения операций ввода-вывода. В среде DOS биты 0Ch и 0Dh по умолчанию установлены: значит, прямой ввод- вывод разрешен всем процессам. Но только процессам с высшим (нулевым) уровнем привилегий дано право изменять состояния битов 0Ch и 0Dh командой POPF (7.03-68). По этому признаку можно проверить, исполняется ли текущий процесс на высшем уровне привилегий.

– 658 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]