Рубрики: КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

про компютерное железо, документация, языки программирования

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— 86 —

ЪДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДї
і Биты і Время і
і 4 3 2 і предкомпенсации і
ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДґ
і 1 1 1 і Недопустимая і
і і комбинация і
і 0 0 1 і 41.67 нс і
і і і
і 0 1 0 і 83.34 нс і
і і і
і 0 1 1 і 125.00 нс і
і і і
і 1 0 0 і 166.00 нс і
і і і
і 1 0 1 і 208.33 нс і
і і і
і 1 1 0 і 250.00 нс і
і і і
і 0 0 0 і Взять значение і
і і по умолчанию і
АДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДЩ

Значения по умолчанию для времени предкомпенсации в
зависимости от скорости приведены в таблице.

ЪДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДї
і Скорость і Время і
і обмена і предкомпенсации і
ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДґ
і 1 Мбит/сек і 41.67 нс і
і 500 Кбит/сек і 125.00 нс і
і 300 Кбит/сек і 125.00 нс і
і 250 Кбит/сек і 125.00 нс і
АДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДЩ

Кроме пятнадцати описанных выше команд контроллера 8272,
82072 поддерживает еще 4 команды:

— изменить параметры конфигурации;
— включение/выключение мотора;
— относительный поиск;
— вернуть состояние регистров контроллера.

Описание команд приведено в таблице.

— 87 —

ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
і Команда і Шина данных і Назначение і
ГДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
і 1. Изменить і 0 0 0 1 0 0 1 1і Команда изме-і
і параметры іHDSA і няет указанныеі
і конфигурации і 0 EIS EF POLL і параметры і
і і і і
і і * * * і і
ГДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
і 2.Включение/ і ON/OFF US1 US0 0 1 0 1 1і Включает/ і
і выключение і і выключает мо- і
і мотора і і тор на задан- і
і і і ном дисководе і
ГДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
і 3. Относитель-і 1 DIR 0 0 1 1 1 1і Осуществляет-і
і ный поиск і 0 0 0 0 0 HD US1 US0і ся сдвиг голо-і
і і і вок в заданномі
і і * * * і направлении наі
і і і заданное числоі
і і і цилиндров і
ГДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
і 4. Вернуть і 0 0 0 0 1 1 1 0і Возвращает і
і состояние і * * * і состояние і
і регистров і і внутренних і
і і і регистров і
і і і контроллера і
і і і і
і і і і
і і NDі і
і і і і
і іHDSA і і
і і і і
і і 0 EIS EF POLL і і
і і і і
АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ

В таблице приняты следующие сокращения:

US1, US0 — номер устройства;

DIR — направление изменения (0-увеличение, 1-уменьшение);

HD — номер головки чтения/записи;

RCN — относительный номер цилиндра;

PCN — текущий номер цилиндра;

SRT — время скорости шага;

HUT -время разгрузки головки;

HLT — время загрузки головки;

ND — режим без ПДП;

— 88 —

SC/EOT — число секторов на дорожке/номер последнего сектора
на дорожке;

ON/OFF — включение/выключение мотора (0/1);

MON — задержка перед включением мотора;

MOFF — задержка перед выключением мотора;

EIS = 1 — разрешить автоматический поиск перед
чтением/записью данных, по умолчанию = 0;

EF = 1 — переводит контроллер в режим имитации 8272А;

POLL = 1 — запрещает обращение к устройствам;

HDSA = 1 — позволяет изменять временные задержки в
зависимости от скорости вращения дисковода;

PRETRK — номер дорожки для предкомпенсации (обычно = 0).

— 89 —

E9. Контроллер накопителей на жестких дискахF

В данном разделе описывается управление контроллером
накопителей на жестких магнитных дисках типа «винчестер».
Материалы раздела подобраны в основном из технической
документации и программного обеспечения для жестких дисков фирмы
Seagate, однако данных о том, что существуют значительные
отличия в управлении дисками, выпускаемыми другими фирмами, в
настоящий момент не имеется. В связи с тем, что управление
жесткими дисками в ХТ и АТ-подобных ПЭВМ принципиально
отличается, описание ХТ и АТ контроллеров приведены отдельно
друг от друга.

Часть информации, полученная из анализа программного
обеспечения, возможно является неполной. Такая информация
помечена звездочкой (*) в конкретной строке изложения или в
заголовке раздела.

— 90 —

E9.1. Контроллер жестких дисков для ХТ-подобных ПЭВМF

Архитектура ХТ-подобных ПЭВМ допускает подключение к одному
контроллеру до двух накопителей. Обмен с жесткими дисками
производится с использованием третьего канала ПДП. Контроллер
генерирует аппаратные прерывания 5-го уровня (IRQ5), вектор
прерывания 0Dh. Работа с диском осуществляется с использованием
отдельного ПЗУ, содержащего процедуры управления диском, что
является характерной особенностью ХТ-подобных ПЭВМ. Обычно в
качестве сегментного адреса ПЗУ используется 0C800h, но возможны
и другие значения (0CA00h, 0D000h или 0D800h для дисков ST-251
или ST-225 фирмы Seagate). Имеется 16 адресов портов
ввода-вывода, предназначенных для управления контроллером и
накопителями (320h-32Fh), однако реально используются только 4
из них, например 320h-323h, 324h-327h, 328h-32Bh или 32Ch-32Fh.
Назначение портов (1-й, 2-й, 3-й и 4-й в каждой группе) одно и
то же, поэтому далее будут описаны только порты 320h-323h.

E9.1.1. Порты ввода-выводаF

Назначение портов контроллера жестких дисков приведено в
таблице.

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 320h і запись і Передача команд по управлению накопителями і
і і і і
і 320h і чтение і Чтение параметров состояния после ошибок, і
і і і возникших в процессе выполнения последней і
і і і команды і
і і і і
і 321h і запись і Сброс контроллера і
і і і і
і 321h і чтение і Чтение состояния контроллера і
і і і і

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

PC, XT, AT, PCjr, PC Convertible и PS/2 — это имена
компьютеров семейства IBM PC. Все они более или менее совместимы
между собой на уровне прикладных пакетов, но имеют определенные
аппаратные различия:

PC: центральный процессор 8088, тактовая частота 4.77 МГц,
5 позиций для адаптерных плат.

PCjr: ЦП 8088, нет места для плат. Выпущена мизерным
тиражом и не совместима с остальными IBM PC. В нашей серии не
описывается.

XT: ЦП 8088, жесткий диск, 8 позиций для адаптерных плат. В
остальном аналогична PC.

Turbo PC: ПЭВМ других фирм (не IBM), совместимые с PC и XT,
но имеюший ЦП 8086 или V30 фирмы NEC, тактовая частота которых 6
или 8 МГц. Обычно имеет 8 позиций для плат.

XT-286: ЦП 80286, 8 позиций для плат, частота 6 Мгц без
холостых циклов (скорость как у AT с 8 МГц). Платы от AT к ней
не подходят, от PC подходят, но не позволяют использовать
преимущества 16-разрядной системной шины.

AT: ЦП 80286, 8 позиций для плат, тактовая частота 6 или 8
МГц.

PC Convertible: Портативный вариант AT. Отличия: плазменный
(LCD) дисплей, 3.5-дюймовые дисководы, нет позиций для плат
расширения.

PS/2: Новое семейство ПЭВМ фирмы IBM. Модели 25 и 30 — это
улучшенные версии старых PC, совместимые с ними по адаптерным
платам. Модели 50 и 60 — ЦП 80286, 32-разрядная шина
MicroChannel, совместимости со старыми платами нет. Модель 80
имеет ЦП 80386. Все модели оснащены дисководами размером 3.5
дюйма.

AT-386: ПЭВМ третьих фирм, совместимая с AT, но имеющая ЦП
80386.

Если рассматриваемые устройства зависят от типа ПЭВМ, то
используются следующие пометки:

PC/XT относится к ПЭВМ IBM PC и XT, включая
Portable PC
AT относится к ПЭВМ IBM PC AT
PS/2 относится к семейству PS/2

Отсутствие таких указаний означает, что данный материал
применим ко всем ПЭВМ фирмы IBM.

Десятичные числа записываются обычным образом,

— 5 —

шестнадцатиричные отличаются добавлением буквы «h» в конце.
Например, 256 и 100h означают десятичное число 256.

Все размеры полей в управляющих структурах приведены в
байтах, если не оговорено противное.

В некоторых случаях алгоритмы сопровождаются формулами.
Операции в формулах обозначаются, как принято в языке Си, а
именно:

арифметические: +, -, *, /, % (взятие остатка)
битовые: & (и), | (или), ~ (не)
сдвиги: >.

— 6 —

E1.Таблица портов ввода-выводаF

Приведенная ниже таблица содержит распределение адресного
пространства портов ввода-вывода для IBM PC/XT, AT и PS/2. При
этом:

— порты 0 — FFh отведены для системной платы;
— порты 100h — 3FFh отведены для контроллеров устройств;
— порты, начиная с 400h, недоступны для системной шины.

AT/PS-2 PC/XT Описание См. раздел
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
000-01F 000-00F Контроллер ПДП N 1, 8237А-5 2
020-03F 020-021 Контроллер прерываний N 1, 8259A 3
040-05F 040-043 Таймер (PC/XT:8253-5, AT:8254-2) 4
060-063 Программируемый интерфейс периферии 8255 5
060-06F Контроллер клавиатуры AT 8042 6
070-07F Память CMOS и маска NMI 13
080 Диагностический регистр 14

080-08F 080-083 Регистры страниц ПДП 74LS612 2
090-097 Блок управления каналами PS/2 ДДД
0A0 Маска NMI 14
0A0-0BF Контроллер прерываний N 2, 8259A 3
0C0-0DF Контроллер ПДП N 2, 8237A-5 2
0F0-0FF (N2 при MGA) 10
380-38F 380-38F Синхронные адаптеры: SDLC или BSC N 2 ДДД
3A0-3AF 3A0-3A9 Синхронный адаптер BSC N 1 ДДД
3B0-3BF 3B0-3BF Монохромный адаптер (MGA) + принтер N 1 7,10
3C0-3CF 3C0-3CF Расширенный графический адаптер (EGA) N 1 7
3D0-3DF 3D0-3DF Цветной графический адаптер (CGA) и EGA 7
3F0-3F7 3F0-3F7 Контроллер НГМД N 1 8
3F8-3FF 3F8-3FF Стык RS-232 N 1 11
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечание: В таблицу не включены устройства, базовый адрес
ввода-вывода которых может настраиваться (сетевые адаптеры,
контроллеры стриммерных лент и т.д.).

— 7 —

E2. Контроллер прямого доступа к памятиF

Контроллер прямого доступа к памяти (ПДП, DMA — Direct
Memory Access) обеспечивает высокоскоростной обмен данными между
устройствами ввода-вывода и ОЗУ без использования центрального
процессора, что позволяет освободить процессор для выполнения
вычислений параллельно с обменом и независимо от него. Наиболее
часто возможности ПДП используются при работе с дисковыми
накопителями, однако реализовано использование ПДП адаптерами
накопителей на магнитной ленте и рядом других устройств.
Ощутимые приемущества дает использование ПДП в процессе обмена с
устройствами, принимающими или передающими данные достаточно
большими порциями с высокой скоростью.

В IBM PC-подобных компьютерах функции контроллера ПДП
выполняет микросхема 8237А фирмы INTEL (советский аналог
КР580ВТ57) или ее аналоги 8237А-4 и 8237А-5, работающие с
тактовой частотой 4 и 5 Мгц соответственно (стандартная
микросхема 8237А работает на частоте 3 Мгц). Контроллер имеет 4
независимых канала, каждый из которых может обслуживать одно
периферийное устройство.

— 8 —

E2.1. Принципы работы контроллера ПДПF

В работе ПДП различаются 2 главных цикла: цикл ожидания
(Idle cycle) и активный цикл (Active cycle). Каждый цикл
подразделяется на ряд состояний, занимающих по времени один
период часов (тик). Из цикла ожидания контроллер может быть
переведен в состояние программирования (Program Condition) путем
подачи на вход RESET сигнала высокого уровня, длительностью не
менее 300 нc и следующей за ним подачи сигнала низкого уровня
(уровня 0) на вывод CS (Chip Select). В состоянии програм-
мирования контроллер будет находится до тех пор, пока на выводе
CS сохранится сигнал низкого уровня. В процессе программирования
контроллеру задаются:

— начальный адрес памяти для обмена;
— уменьшенное на единицу число передаваемых байтов;
— направление обмена,

а также устанавливаются требуемые режимы работы (разрешить или
запретить циклическое изменение приоритетов, автоинициализацию,
задать направление изменения адреса при обмене и т. д.).

Загрузка 16-разрядных регистров контроллера осуществляется
через 8-разрядные порты ввода-вывода. Перед загрузкой первого
(младшего) байта должен быть сброшен (очищен) триггер-защелка
(триггер первый/последний, First/Last flip-flop), который
изменяет свое состояние после вывода в порт первого байта и
таким образом дает возможность следующей командой вывода в тот
же порт загрузить старший байт соответствующего регистра.

Запрограммированный канал должен быть демаскирован (бит
маски канала устанавливается при этом в 0), после чего он может
принимать сигналы «Запрос на ПДП», генерируемые тем внешним
устройством, которое обслуживается через этот канал. Сигнал
«Запрос на ПДП» может быть также инициирован установкой в 1 бита
запроса данного канала в регистре запросов контроллера. После
появления сигнала запроса контроллер входит в активный цикл, в
котором выполняется обмен данными. Обмен может осуществляется в
одном из четырех режимов:

1. Режим одиночной передачи (Signle Transfer Mode). После
каждого цикла передачи контроллер освобождает шину процессору,
но сразу же начинает проверку сигналов запроса и, как только
обнаруживает активный сигнал запроса, инициирует следующий цикл
передачи.

2. Режим блочной передачи (Block Transfer Mode). В этом
режиме наличие сигнала запроса требуется только до момента
выдачи контроллером сигнала «Подтверждение запроса на ПДП»
(DACK), после чего шина не освобождается вплоть до завершения
передачи всего блока.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— расширенный графический адаптер EGA;
— графический видеомассив VGA.

Центральным устройством в управлении видеомонитором
является контроллер электронно-лучевой трубки (ЭЛТ). В IBM PC
применяются программируемые контроллеры фирмы Motorola,
позволяющие задать все основные параметры развертки изображения
на экране. Для понимания дальнейшего материала необходимо ввести
ряд часто используемых понятий. Режим работы видеомонитора
характеризуется следующими понятиями:

— вертикальным разрешением (количество строк растра на
экране);
— горизонтальным разрешением (количество символов или точек
в строке);
— представлением данных в видеопамяти;
— атрибутами вывода, задающими цвет, мерцание и т. п.

Горизонтальное и вертикальное разрешение определяются
последовательностью согласованных во времени сигналов
графического адаптера, управляющих движением луча ЭЛТ. Луч ЭЛТ
движется с постоянной скоростью вдоль строки растра и вниз с
одной строки растра на следующую, обновляя (разворачивая)
изображение на экране. Для перевода луча из крайней правой точки
строки в крайнюю левую точку следующей строки (обратный
горизинтальный ход луча) видеоадаптер генерирует сигнал
горизонтальной синхронизации; для перемещения луча из крайней
правой позиции нижнeй строки экрана в крайнюю левую позицию
первой строки (вертикальный обратный ход луча) — сигнал
вертикальной сихронизации.

Видеоадаптеры всегда програмируются так, чтобы вывод
видеобуфера на экране проходил быстрее, чем развертка одного
кадра. Это дает возможность вывести на экран бордюр (overscan),
окаймляющий изображение и позволяющий центрировать его на
экране.

Длительность сигналов развертки принято задавать в так
называемых символьных тактах (character clock). Символьный такт
— это отрезок времени, необходимый для вывода на экран 8 точек в
графическом режиме и 8 или 9 точек в алфавитно-цифровых режимах.

Параметры развертки заносятся в определенные регистры
контроллера ЭЛТ; назначение этих регистров различно в

— 48 —

контроллерах MGA/CGA и EGA/VGA.

E7.2. Контроллеры ЭЛТF

Адаптеры MGA и CGA содержат контроллер ЭЛТ Motorola 6845,
имеющий следующие программируемые регистры:

Регистр Наименование Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
R0 Общая длительность Время вывода строки растра в
строки (horizontal total) символьных тактах.
R1 Ширина кадра Количество символов в строке.
(horizontal displayed)
R2 Позиция горизонтальной Начало горизонтальной
синхронизации (horizontal синхронизации в символьных
sync position) тактах.
R3 Ширина синхронизации Длительность синхронизации
(sync width) (младшая тетрада — вертикальной,
старшая — горизонтальной).
R4 Размер кадра Общее количество строк
(vertical total) растра в кадре.
R5 Вертикальное выравнивание Поправка для частоты 50 или
(vertical adjust) 60 Гц.
R6 Высота кадра Количество строк
(vertical displayed) изображения в кадре.
R7 Позиция вертикальной Начало вертикальной
синхронизации (vertical синхронизации в символьных
sync position) тактах.
R8 Биты 4-5: режим расслоения
(interlace mode);
биты 6-7: сдвиг (skew)
R9 Макс. число строк растра Количество строк растра на
строку символов.
R10 Начало курсора Начальная строка курсора.
R11 Конец курсора Конечная строка курсора.
R12\Начальный адрес Старший байт
R13/видеопамяти Младший байт
R14\Позиция Старший байт
R15/курсора Младший байт
R16\Позиция Старший байт
R17/светового пера Младший байт
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Aдаптеры EGA и VGA имеют следующие программируемые
регистры, эмулирующие контроллер ЭЛТ:

Регистр Наименование Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

R0 Общая длительность Время вывода строки растра в
строки (horizontal total) символьных тактах.
R1 Ширина кадра (horizontal Количество символов в строке
display enable end) (см. R7).
R2 Начало горизонтального Символьная позиция, в которой
гашения (start horizontal начинается горизонтальное
blank) гашение луча.

— 49 —

R3 Конец горизонтального Символьная позиция, в которой
гашения (end horizontal заканчивается горизонтальное
blank) гашение луча (в битах 0-4);
разрешение сдвига (биты 5-6).
R4 Начало обратного хода луча Символьная позиция начала
по горизонтали (start горизонтальной синхронизации.
horizontal retrace)
R5 Конец обратного хода луча Символьная позиция окончания
по горизонтали (end горизонтальной синхронизации.
horizontal retrace)

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і Биты:
АВДБДДЕДДБДДБДДБВДБДДБДДЩ ДДДДД
і і АДДДДДД> 0-4: ширина обратного хода луча
і і по горизонтали
і АДДДДДДДДДДДДДДДД> 5-6: задержка обратного хода в
і символьных тактах
АДДДДДДДДДДДДДДДДДДДДД> 7: 1=начинать панорамирование с
четного адреса, 0=с нечетного

R6 Размер кадра Общее количество строк
(vertical total) растра в кадре (см. R7).
R7 Регистр переполнения Содержит старшие биты других
(overflow) регистров:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і і і АД> 0: 8-й бит размера кадра (R6)
і і і і і і АДДДД> 1: 8-й бит количества строк
і і і і і і отображения в кадре (R18)
і і і і і АДДДДДДД> 2: 8-й бит начала вертикальной
і і і і і синхронизации (R16)
і і і і АДДДДДДДДДД> 3: 8-й бит начала вертикального
і і і і гашения луча (R21)
і і і АДДДДДДДДДДДДД> 4: 8-й бит сравнения строк (R24)
і і АДДДДДДДДДДДДДДДД> 5: EGA: 8-й бит R10, VGA: 9-й бит R6
і АДДДДДДДДДДДДДДДДДДД> 6: 9-й бит R18 (только VGA)
АДДДДДДДДДДДДДДДДДДДДДД> 7: 9-й бит R16 (только VGA)

R8 Начало растра (preset Первая строка растра после
row scan) вертикальной синхронизации.
R9 Макс. число строк растра Количество строк растра на
строку символов (в битах 0-4);
для VGA: бит 5=9-й бит R21.
R10 Начало курсора Начальная строка курсора.
R11 Конец курсора Конечная строка курсора (биты
0-4); сдвиг курсора (биты 5-6).
R12\Начальный адрес Старший байт
R13/видеопамяти Младший байт
R14\Позиция Старший байт
R15/курсора Младший байт

— 50 —

При чтении:
R16\Позиция Старший байт
R17/светового пера Младший байт
При записи:
R16 Начало обратного хода луча Символьная позиция начала
по вертикали (start вертикальной синхронизации.
vertical retrace)
R17 Конец обратного хода луча Символьная позиция окончания
по вертикали (end вертикальной синхронизации.
vertical retrace)

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і0 і і і і Биты:
АВДБДДБВДБВДБДДБДДЕДДБДДЩ ДДДДД
і і і АДДДД> 0-3: ширина обратного хода луча
і і і по вертикали
і і АДДДДДДДДДДДД> 4: 0=очистить прерывание вертикальной
і і синхронизации
і АДДДДДДДДДДДДДДД> 5: 0=разрешить прерывание вертикаль-
і ной синхронизации (IRQ2)
АДДДДДДДДДДДДДДДДДДДДД> 7: VGA: запрет записи в R0 — R7

R18 Количество строк отобра- Количество строк растра,
жения в кадре (vertical занятых собственно изобра-
displayed end) жением
R19 Вертикальное смещение Количество слов данных в
(vertical displayed логической строке видеопамяти.
adjustment)
R20 Позиция подчеркивания Номер строки растра (биты 0-5).
R21 Начало вертикального Символьная позиция, в которой

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

і 322h і запись і Разблокировка (выбор) контроллера і
і і і і
і 322h і чтение і Чтение типа накопителя і
і і і і
і 323h і запись і Установка режима работы контроллера і
і і і і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Порт 320h.
Через этот порт контроллер принимает команды по управлению
накопителями. Команда содержит до шести байтов информации,
первый из которых определяет класс и код команды, а остальные
содержат требуемые для выполнения команды параметры. При
возникновении ошибки в процессе выполнения команды (бит 1 порта
321h) следует ввести в порт 320h команду «запрос состояния»,
после чего прочитать из него 4 байта состояния, первый из
которых определяет код ошибки.

— 91 —

Порт 321h.
Запись нулевого байта в этот порт вызывает сброс
контроллера. При чтении состояния контроллера возможны следующие
значения битов:

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і X і X і і X і і і і і Биты:
АДДДБДДДБДВДБДДДБДВДБДВДБДВДБДВДЩ ДДДДД
і і ГДДДДДДДЕДД> 0,2,3: 11=готовность к приему
і і і і і очередного байта
і і і і і команды
і і і і і 01=команда принята
і і і і і полностью
і АДДДБДДДДДДДБДД> 111=готовность к приему
і і новой команды
і АДДДДДД> 1: 1=ошибка
АДДДДДДДДДДДДДДДДДДДДДД> 5: номер накопителя (0-1)

Бит 2, равный 1, вместе с битом 0, равным 1, указывает на
то, что контроллер готов к приему очередного байта команды. Если
в ходе передачи команды бит 2 = 0, а бит 0 = 1, значит
контроллер считает, что он принял команду полностью и не ждет
ввода новых байтов команды.

Бит 3, равный 1, вместе с битами 0 и 1, равными 1,
указывает на готовность очередного байта состояния при
выполнении команды «запрос состояния». Если установлены в 1 биты
0, 2 и 3 — это означает, что контроллер свободен и готов к
приему первого байта новой команды.

Порт 322h.
Вывод произвольного байта в этот порт разблокирует
контроллер. Операция разблокирования (выбора, активизации)
контроллера (enable controller) должна выполняться каждый раз
перед началом вывода через порт 320h новой команды.

При чтении из порта 322h может быть прочитан байт 0FFh, что
не несет никакой информации, либо тип накопителя (применительно
к данной версии ПЗУ).

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і і і і і і і Биты:
АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДДД
і і і і і і і і
і і АДДДБДДДДДДДДДДДБДДДБДД> 0,1,4,5: 1111=один накопитель
і і і і большой емкости, иначе — тип
і і і і второго накопителя
АДДДБДДДДДДДДДДДБДДДБДДДДДДДДДД> 2,3,6,7: тип первого накопителя

Если тип второго накопителя (биты 5, 4, 1 и 0) равен 1111,
это означает, что к контроллеру подключен один накопитель
большой емкости (более 32 Мбайт), который при форматировании
следует разбивать на несколько логических дисков (говорят, что

— 92 —

установлен ключ разбиения (Split switch)). Стандартное ПЗУ XT
фирмы Seagate может работать со следующими 15-ю типами
накопителей (номера 0 — 14), приведенными в таблице. Типом 15
(неопределенный тип) отмечаются все накопители, отличные по
параметрам от описанных.

ЪДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДВДДДВДДДВДДДВДДДДї
іТипіФирма изготовитель и модель дискаі C і H і R і B і V і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 0 і Seagate ST-225 і615 і 4 і 17і 0 і21.4і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 1 і Seagate ST-4038 і733 і 5 і 17і 2 і31.9і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 2 і Miniscribe-3425 і615 і 4 і 17і 0 і21.4і

ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 3 і Seagate ST-212 і306 і 4 і 17і 0 і10.6і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 4 і Priam V-150 і987 і 5 і 17і 0 і42.9і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 5 і Priam V-170 і987 і 7 і 17і 0 і60.1і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 6 і Miniscribe-8425,Kyocera 20A/20B і615 і 4 і 17і 0 і21.4і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 7 і Seagate ST-138 і615 і 6 і 17і 0 і32.1і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 8 і Seagate ST-4051 і977 і 5 і 17і 2 і42.5і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 9 і Seagate ST-251/ST-251-1 і820 і 6 і 17і 0 і42.8і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 10і HH-725 і612 і 4 і 17і 0 і21.3і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 11і Seagate ST-4053, і1024і 5 і 17і 0 і44.5і
і і Miniscribe-3053/6053 і і і і і і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 12і Maxtor-1085, Newbury Data-1085 і1024і 8 і 17і 0 і71.3і
і і Miniscribe-6085 і і і і і і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 13і Seagate ST-4096 і1024і 9 і 17і 0 і80.2і
ГДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДЕДДДЕДДДЕДДДДґ
і 14і Maxtor-1140,Newbury Data-1140 і396 і 15і 17і 0 і51.7і
АДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДБДДДБДДДБДДДБДДДДЩ

Здесь
C-число цилиндров (десятичное);
H-число головок (десятичное);
R-число секторов на дорожке (десятичное);
B-стандартный управляющий байт (шестнадцатеричный);
V-емкость диска (Мбайт).

— 93 —

Порт 323h.

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і не используются і і і Бит:
АДДДБДДДБДДДБДДДБДДДБДДДБДВДБДВДЩ ДДДД
і АДДД> 0: 1=разрешить работу с ПДП
і 0=не использовать ПДП
АДДДДДДД> 1: 1=разрешить аппаратные
прерывания от контроллера
(IRQ5)

Установка режима работы производится обычно до раз-
блокировки контроллера перед началом вывода команды.

E9.1.2. Общий формат команды и терминологияF

Команда контроллера может состоять из 1 — 6 байт. Общий
формат команды приведен на рисунке.

ЪДДДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДї
і \ битыі і і і і і і і і
і \ і 7 і 6 і 5 і 4 і 3 і 2 і 1 і 0 і
ібайты\ і і і і і і і і і
ГДДДДДДДЕДДДДДБДДДДДБДДДДДЕДДДДДБДДДДДБДДДДДБДДДДДБДДДДДґ
і 0 і Класс команды і Код операции і
ГДДДДДДДЕДДДДДВДДДДДВДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 1 і 0 і 0 і У і Номер головки і
ГДДДДДДДЕДДДДДБДДДДДЕДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Цилиндр і і
і 2 і (старшие і Номер сектора і
і і биты) і і
ГДДДДДДДЕДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 3 і Цилиндр ( младшие биты ) і
ГДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 4 і Фактор чередования или число секторов і
і і (зависит от команды) і
ГДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 5 і Управляющий байт і
АДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Здесь и далее:

— класс команды и код операции определяют код команды
контроллера;

— У — номер устройства (0/1);

— номер сектора — номер начального сектора для обмена;

— фактор чередования (Interleave Factor) задает после-
довательность чередования секторов на дорожке (см. формат
дорожки);

— управляющий байт:

— 94 —

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і X X X і і і і Биты:

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

3. Режим передачи по требованию (Demand Transfer Mode).
Данный режим является промежуточным между двумя первыми:
передача идет непрерывно до тех пор, пока активен сигнал

— 9 —

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

4. Каскадный режим (Cascade Mode). Режим позволяет включить
в подсистему ПДП более одного контроллера в тех случаях, когда
недостаточно четырех каналов ПДП. В этом режиме один из каналов
ведущего контроллера используется для каскадирования с
контроллером второго уровня. Для работы в каскаде сигнал HRQ
(«Запрос на захват») ведомого контроллера подается на вход DREG
(«Запрос на канал ПДП») ведущего, а сигнал DACK («Подтверждение
запроса») ведущего подается на вход HDLA («Потверждение
захвата») ведомого.

Такая схема подключения аналогична подключению ведущего
(первого) контроллера к микропроцессору, с которым он
обменивается сигналами HRQ и HDLA.

— 10 —

E2.2. Типы передачF

1. Передача память-память (Memory-to-memory DMA).
Используется для передачи блока данных из одного места
памяти в другое. Исходный адрес определяется в регистрах
нулевого канала, выходной — в регистрах первого канала. Число
циклов обмена (число байт минус 1) задается в регистре числа
циклов канала 1. Передача происходит с использованием рабочего
регистра контроллера в качестве промежуточного звена для
хранения информации. При передачe память-память может быть задан
специальный режим фиксации адреса (Address hold), при котором
значение текущего адреса в регистре нулевого канала не
изменяется, при этом весь выходной блок памяти заполняется одним
и тем же элементом данных, находящимся по заданному адресу.

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

3. Режим фиксированных приоритетов.
В этом режиме канал 0 всегда имеет максимальный приоритет,
а канал 3 — минимальный. Это означает, что любая передача по
каналу с более высоким приоритетом будет выполняться раньше, чем
по каналу с более низким приоритетом.

4. Циклический сдвиг приоритетов.
Позволяет избежать «забивания» шины одним каналом при
одновременной передачe по нескольким каналам. Каждому каналу, по
которому прошла передача, автоматически присваивается низший
приоритет, после чего право на передачу получает канал с
наивысшим приоритетом, для которого передача в данный момент
возможна. Таким образом, если в начале работы распределение
приоритетов было обычным (канал 0 — наивысший), и пришли сигналы
запроса на ПДП по 1-му и 2-му каналам, то сначала будет
выполняться передача по первому каналу, затем он получит низший
приоритет (а канал 2, соответственно, высший, т. к. сдвиг
приоритетов циклический) и передача выполнится по 2-му каналу,
который затем получит низший приоритет, а высший приоритет
получит, сответственно, канал 3, который и будет обладать
преимущественным правом на передачу.

5. Сжатие времени передачи (Compressed transfer timing).
В случае, если временные характеристики быстродействия
обменивающихся устройств совпадают, ПДП может сократить время
выполнения каждого такта передачи на 2 цикла часов за счет
тактов ожидания, входящих в каждый цикл передачи.

— 11 —

E2.3. Описание внутренних регистров ПДПF

Контроллер имеет 344 бита внутренней памяти, организованной
в виде регистров. Описание внутренних регистров ПДП приведено в
таблице.

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДї
і Наименование і Разрядность і Число і
і регистра і (бит) і регистров і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДґ
і Регистр начального адреса і 16 і 4 і
і (Base Address Register) і і і
і і і і
і Регистр начального счетчика циклові 16 і 4 і
і (Base Word Count Register) і і і
і і і і
і Регистр текущего адреса і 16 і 4 і
і (Current Address Register) і і і
і і і і
і Регистр текущего счетчика циклов і 16 і 4 і
і (Current Word Count Register) і і і
і і і і
і Рабочий регистр адреса і 16 і 1 і
і (Temporary Address Register) і і і
і і і і
і Рабочий регистр счетчика циклов і 16 і 1 і
і (Temporary Word Count Register) і і і
і і і і
і Регистр состояния і 8 і 1 і
і (Status Register) і і і
і і і і
і Регистр команд і 8 і 1 і
і (Command Register) і і і
і і і і
і Регистр режима (Mode Register) і 6 і 4 і
і і і і
і Рабочий регистр і 8 і 1 і
і (Temporary Register) і і і
і і і і
і Регистр масок (Mask Register) і 4 і 1 і
і і і і
і Регистр запросов і 4 і 1 і
і (Request Register) і і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДДДДДДЩ

Регистр начального адреса (Base Address Register).
В этом регистре задается стартовый адрес ОЗУ, с которого
начинается передача. Регистр содержит 16 разрядов и определяет
адрес внутри заданной страницы памяти размером 64К. Задание
номера страницы памяти осуществляется через специальные
страничные регистры (Page Registers), поддерживаемые внешней
логикой. Каждый канал ПДП имеет свой регистр начального адреса и
страничный регистр. Такое деление памяти на страницы не
позволяет осуществить обмен с блоком памяти, находящимся на
пересечении двух страниц. Каждая страница начинается с

— 12 —

сегментного адреса, кратного 1000h (0, 1000h, 2000h, …,
9000h).

Регистр начального счетчика циклов (Base Word Count
Register).
В этом регистре задается начальное число циклов передачи
для программируемого канала. Фактическое число передаваемых во
время работы ПДП элементов данных на единицу превышает заданное
число циклов, т. е. если Вы задаете 100 циклов передачи, а
размер элемента будет равен 1 байту, то за сеанс обмена будет
передан 101 байт информации.

Регистр текущего адреса (Current Address Register).
Начальное значение заносится в этот регистр одновременно с
регистром начального адреса. В дальнейшем в ходе передачи
значение текущего адреса автоматически увеличивается или
уменьшается (конкретное направление изменения задается при
программировании в регистре режима). Если разрешена автоини-
циализация, то после окончания передачи в регистр автоматически
устанавливается значение из регистра начального адреса.

Регистр текущего счетчика циклов (Current Word Count
Register).
Регистр содержит текущее значение счетчика циклов (число
оставшихся циклов передачи). Отображаемое в нем число циклов
всегда на единицу меньше числа еще не переданных элементов
данных, так как изменение значения в этом регистре проиводится в
конце цикла передачи, уже после фактической передачи элемента
данных, а конец передачи фиксируется в момент переполнения
счетчика (изменение его значения с 0 на 0FFFFh).

Регистр режима (Mode Register).
Данный регистр задает режимы работы своего канала
контроллера.

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і і і Биты:
АДБДБДДЕДДБВДБВДБДДВДДЩ ДДДДД
і і і АДДДД> 0-1: Режим работы: 00=проверка,
і і і 01=запись (в память),
і і і 10=чтение (из памяти),
і і і 11=недопустимая комбинация
і і АДДДДДДДДД> 2: Автоинициализация: 1=разрешена,
і і 0=запрещена
і АДДДДДДДДДДДД> 3: Изменение текущего адреса при
і обмене: 0=увеличение, 1=уменьшение
АДДДДДДДДДДДДДДДД> 4-5: Тип передачи:

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

гашения (start vertical начинается вертикальное
blank) гашение луча.
R22 Конец вертикального Символьная позиция, в которой
гашения (end vertical заканчивается вертикальное
blank) гашение луча.

— 51 —

R23 Управление режимами:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і і і АД> 0: 0=режим совместимости с CGA
і і і і і і і для адресации графики
і і і і і і АДДДД> 1: выбор счетчика сканирования
і і і і і і строк
і і і і і АДДДДДДД> 2: горизонтальная синхронизация:
і і і і і 1=двойная, 0=обычная
і і і і АДДДДДДДДДД> 3: длительность синхронизации при
і і і і регенерации слов: 1=половинная,
і і і і 0=обычная
і і і АДДДДДДДДДДДДД> 4: 1=установить высокоимпедансный
і і і выход, 0=разрешить управление
і і і выходом
і і АДДДДДДДДДДДДДДДД> 5: режим расслоения адресов для
і і совместимости с CGA: 0=для 64К
і і ОЗУ, 1=для ОЗУ более 64К
і АДДДДДДДДДДДДДДДДДДД> 6: режим адресации: 1=байтовая,
і 0=словная
АДДДДДДДДДДДДДДДДДДДДДД> 7: 0=аппаратный сброс, 1=обычная
работа

R24 Сравнение строк Строка растра, используемая в
(line compare) операциях расщепления экрана.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

В заключение этого раздела подчеркнем, что самостоятельное
программирование контроллера ЭЛТ чревато физическим разрушением
видеомонитора, поэтому не следует прибегать к нему, если Вы не
вполне понимаете принципы расчета параметров развертки. Все
необходимые действия по инициализации дисплея обычно
выполняются BIOS, поэтому необходимость в непосредственном
программировании контроллера ЭЛТ возникает крайне редко.

— 52 —

E7.3. Атрибуты символовF

В текстовых режимах видеопамять состоит из пар (код
символа, атрибут); код символа определяет символ ASCII,
выводимый в соответствующей позиции экрана, а атрибут — цвет
этого символа. Соответствие цветов атрибутам зависит от типа
видеоадаптера.

Байт атрибутов для CGA имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іBlіr g b іI іR G B і Биты:
АВДБДДБВДБДДБВДБДДБВДБДДЩ ДДДДД
і і і АДДДД> 0-2: цвет символа
і і АДДДДДДДДДД> 3: 1=яркий цвет символа
і АДДДДДДДДДДДДДДДД> 4-6: цвет фона
АДДДДДДДДДДДДДДДДДДДДДД> 7: 1=мерцание символа

Таким образом, цвет фона может варьироваться от 0 до 7, а
цвет символа с учетом яркости — от 0 до 0Fh. Значение атрибута
задается формулой:

16 * цвет фона + цвет символа (плюс 128 для мерцания
символа)

Цвета задаются следующим образом:

ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДї
іНомер Цвет іНомер Цвет і
ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
і 0 Черный і 8 Серый і
і 1 Синий і 9 Ярко-синий і
і 2 Зеленый і 0Ah Ярко-зеленыйі
і 3 Бирюзовый і 0Bh Голубой і
і 4 Красный і 0Ch Алый і
і 5 Сиреневый і 0Dh Розовый і
і 6 Коричневый і 0Eh Желтый і
і 7 Светло-серый і 0Fh Белый і
АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДЩ

Адаптеры EGA и VGA имеют такую же структуру байта
атрибутов, но позволяют переопределять цвета, перечисленные в

таблице, перепрограммированием регистров палитр. Поэтому байт
атрибутов символа определяет одну из 64 (EGA) или 256 (VGA)
возможных комбинаций цветов.

Монохромные дисплеи допускают любые значения байта атри-
бутов, но реально отрабатывают только следующие его значения:

01h Подчеркнутый символ
07h Обычный вывод (светлый символ на темном фоне)
09h Яркий подчеркнутый символ
0Fh Ярко-светлый символ на темном фоне
70h Негатив (темный символ на светлом фоне)

— 53 —

81h Мерцающий подчеркнутый символ
87h Мерцающий светлый символ на темном фоне
89h Мерцающий яркий подчеркнутый символ
8Fh Мерцающий ярко-светлый символ на темном фоне

Следует учитывать, что старший бит байта атрибутов может
означать либо мерцание символа, либо повышенную яркость фона
(см. 7.4 — 7.6).

— 54 —

E7.4. Монохромный графический адаптер MGAF

Монохромный графический адаптер (MGA или Hercules) — это
графический видеоконтроллер высокого разрешения, совмещенный с
платой печатающего устройства. Для него зарезервированы порты
ввода-вывода 3B0h — 3BFh, имеющие следующее назначение.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3B4h Запись Регистр индекса ЭЛТ. Используется для выбора
регистра ЭЛТ. Для записи регистра ЭЛТ Rn нужно
выполнить команды:
out 3B4h,n и out 3B5h,данные.

3B5h Запись/ Регистр данных ЭЛТ. Позволяет записывать все
чтение регистры ЭЛТ и читать регистры R12 — R17.

3B8h Запись Регистр режимов дисплея:

7 6 5 4 3 2 1 0
ЪДДВДВДДВДВДДВДВДДВДї
і іXі іXі іXі іXі Бит:
АВДБДБВДБДБВДБДБВДБДЩ ДДДД
і і і АДДДД> 1: 0=текстовый режим, 1=графический режим
і і АДДДДДДДДД> 3: 0=очистить экран, 1=активизировать
і і экран
і АДДДДДДДДДДДДДД> 5: 1=бит 7 атрибутов — мерцание
і 0=бит 7 атрибутов — яркость фона
АДДДДДДДДДДДДДДДДДДД> 7: номер текущей видеостраницы

3B9h Запись/ Вывод любого байта включает триггер светового
Чтение пера.

3BAh Чтение Регистр состояния дисплея:

7 6 5 4 3 2 1 0
ЪДДВДВДВДВДДВДВДВДДї
і іXіXіXі іXіXі і Бит:
АВДБДБДБДБВДБДБДБВДЩ ДДДД
і і АДДД> 0: 0=вывод изображения, 1=горизонтальная
і і синхронизация
і АДДДДДДДДДД> 3: 0=экран включен, 1=выключен (позволяет
і проверить поступление видеосигнала на
і на экран)
АДДДДДДДДДДДДДДДДДДД> 7: 0=вертикальная синхронизация,
1=дисплей активен

3BBh Запись/ Вывод любого байта выключает триггер светового
Чтение пера.

3BCh-3BEh См. описание портов параллельного принтера (п. 10).

3BFh Запись Регистр конфигурации. Сюда заносится новая
конфигурация дисплея:
0 (DIAG) — работа только в текстовом режиме;

— 55 —

1 (HALF) — допустима работа только с
графической страницей 0;
3 (FULL) — доступны обе графические страницы.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Видеопамять MGA располагается в адесах ОЗУ B0000h — BFFFFh.
В текстовом режиме (25 строк по 80 символов в строке) она
занимает 4К с B0000h по B0FFFh. При этом адрес кода символа
равен B000h : 160*L+2*C, адрес атрибута на единицу больше. Здесь
L — номер строки (0 — 24), C — номер столбца (0 — 79).

Графический режим имеет разрешение 720 точек по горизонтали

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

АДВДБДВДБДДДБДДДБДДДБДВДБДВДБДВДЩ ДДДДД
і і АДДДБДДДБД> 0-2: период импульсов сигнала
і і «шаг»
і АДДДДДДДДДДДДДДДДДДДДДДДДД> 6: 1=запретить повторное счи-
і тывание при ошибке контр.
і суммы
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=запретить повторный доступ
к диску при ошибке.

Бит 7, равный 1, разрешает только одну попытку доступа к
диску при выполнении команды (иначе разрешены 4 попытки), при
тестировании накопителя должен быть равен 1, при нормальной
работе должен быть равен 0.

Бит 6, равный 1, запрещает повторное считывание секторов
при появлении ошибки контрольной суммы после первой попытки
считывания, если бит 6 равен 0 — разрешается повторное
считывание и, если повторное считывание успешно — признак ошибки
не устанавливается, обычно равен 0.

Биты 0 — 2 определяют тип накопителя и выбирают периоды
импульсов сигнала «шаг»:

значение 100 —> 200 микросекунд;
101 —> 70 микросекунд;
110 и 111 —> 3 милисекунды;

Остальные варианты указывают на неопределенный тип
накопителя и предполагают период в 3 милисекунды.

При описании команд использованы следующие сокращения и
обозначения:

0 или 1 — конкретные значения битов;
Х — бит не используется;
У — номер устройства (0/1);
П — использовать бит повторных попыток обращения к
накопителю (бит 7 управляющего байта);
ПС — использовать бит повторного считывания (бит 6
управляющего байта);
Ш — использовать биты задания периодичности импульсов
сигнала «шаг»;
ЦСБ — старшие 2 бита номера цилиндра;
ЦМБ — младшие 8 бит номера цилиндра;
НГ — номер головки (5 бит);
НС — номер начального сектора (6 бит);
ФЧ — фактор чередования (5 бит);
ЧС — число секторов (8 бит).

— 95 —

E9.1.3. Описание командF

—> Проверка готовности накопителя (класс 0, опкод 0).

Команда выбирает заданный накопитель и проверяет его
готовность.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Рекалибровать (класс 0, опкод 1).

Команда устанавливает головки чтения/записи на выбранном
накопителе на нулевой цилиндр.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 0 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запрос состояния (класс 0, опкод 3).

Команда подается непосредственно после обнаружения ошибки
(бит 1 порта 321h). Команда имеет длину 2 байта и вызывает
передачу контроллером четырех байтов результата, определяющих
параметры возникшей ошибки.

Формат команды:

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 1 1 і

ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

— 96 —

Формат результата:

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і байт состояния і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

Формат байта состояния:

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і 0 і і і і і і і Биты:
АДВДБДДДБДВДБДВДБДВДБДВДБДВДБДВДЩ
і і і і і і і
і і і АДДДБДДДБДДДБДД> 0-3: код ошибки
і і і
і АДДДБДДДДДДДДДДДДДДДДДД> 4-5: тип ошибки
і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=при выполнении команды
произошло обращение
к накопителю

Бит 7 байта состояния равен 1, если при выполнении команды
произошло обращение к накопителю, в этом случае байты 1 — 3
результата содержат корректную информацию, иначе эта информация
некорректна.

Описание возможных ошибок приведено в таблице.

— 97 —

ЪДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Тип і Код і і
іошибкиіошибкиі Значение і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 00 і 0000 і Нет ошибки (нормальное завершение команды) і
і 00 і 0001 і Нет сигнала по линии «индекс» і
і 00 і 0010 і Нет сигнала по линии «поиск закончен» і
і 00 і 0011 і Сигнал «ошибка записи» і
і 00 і 0100 і Накопитель не отвечает сигналом готовности і
і і і после разблокировки і
і 00 і 0101 і Не используется і
і 00 і 0110 і Нет сигнала «дорожка 0» і
і 00 і 0111 і Не используется і
і 00 і 1000 і При выполнении команды «проверка готовности і
і і і накопителя» накопитель находится в состоянии і
і і і поиска і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 01 і 0000 і Ошибка при считывании поля идентификации і
і 01 і 0001 і Неисправимая ошибка чтения і
і 01 і 0010 і Адресный маркер не обнаружен і
і 01 і 0011 і Не используется і
і 01 і 0100 і Сектор не найден і
і 01 і 0101 і Ошибка поиска і
і 01 і 0110 і Не используется і
і 01 і 0111 і Не описан і
і 01 і 1000 і Неисправимая ошибка і
і 01 і 1001 і Обнаружен флаг «дефектная дорожка» і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 10 і 0000 і Неверная команда і
і 10 і 0001 і Неверный логический адрес накопителя і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 11 і 0000 і Неуспешно окончена команда «диагностика і
і і і внутреннего ОЗУ контроллера» і
і 11 і 0001 і Неуспешно окончена диагностика ППЗУ і
і і і контроллера і
і 11 і 0010 і Неуспешно окончен тест генератора кодов і
і і і коррекции ошибок (ECC) і
АДДДДДДБДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

—> Форматирование накопителя (класс 0, опкод 4).

Команда форматирует все цилиндры, начиная с заданного до
конца накопителя и используя заданное значение фактора
чередования. При форматировании перезаписываются все поля
идентификации, поля данных заполняются байтами-заполнителями.

— 98 —

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

00=Режим передачи по требованию,
01=Режим одиночной передачи,
10=Режим блочной передачи,
11=Каскадный режим.

Каждый из четырех каналов ПДП имеет свой набор регистров,
описанных выше. Кроме того, имеется следующий набор регистров,

— 13 —

общих для всех каналов.

Регистр команд (Command Register).
Этот 8-битный регистр управляет работой контроллера. Он
программируется, когда контроллер находится в состоянии
программирования и очищается командами сброса «Reset» и «Master
Clear». Назначение битов регистра команд приведено на рисунке.

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДД
і і і і і і і АД> 0: 0=запретить передачу память-память,
і і і і і і і 1=разрешить
і і і і і і АДДДД> 1: 0=запретить фиксацию адреса в канале
і і і і і і 0, 1=разрешить
і і і і і АДДДДДДД> 2: 0=разблокировать, 1=заблокировать
і і і і і контроллер
і і і і АДДДДДДДДДД> 3: 0=нормальная временная диаграмма,
і і і і 1=сжатие времени передачи; если бит
і і і і 0 установлен, то игнорируется
і і і АДДДДДДДДДДДДД> 4: 0=режим фиксированных приоритетов,
і і і 1=режим циклического сдвига
і і і приоритетов
і і АДДДДДДДДДДДДДДДД> 5: 1=Режим расширенной записи,
і і 0=задержки при записи; если бит 3
і і установлен, то игнорируется
і АДДДДДДДДДДДДДДДДДДД> 6: 0=активным считается высокий уровень
і сигнала запроса (DREQ), 1=низкий
АДДДДДДДДДДДДДДДДДДДДДД> 7: активным считается высокий уровень
сигнала подтверждения запроса на
ПДП (DACK), 1=низкий

Регистр состояния (Status Register).
Регистр отражает текущее состояние запросов и передач по
всем четырем каналам. Биты 0 — 3 устанавливаются в единицу после
завершения передачи по каналам 0 — 3 (бит 0 — канал 0, бит 1 —
канал 1 и т.д.), если не задан режим автоинициализации. Эти биты
очищаются после команды сброса контроллера и после каждой
операции считывания состояния из регистра состояния. Биты 4 — 7
указывают по какому из каналов 0 — 3 активен в текущий момент
сигнал запроса на ПДП.

Регистр масок (Mask Register).
Каждый бит этого 4-битового регистра маскирует/демаскирует
свой канал ПДП, при этом значение 1 маскирует канал, значение 0
демаскирует канал и разрешает прием сигнала запроса по этому
каналу.

Регистр запросов (Request Register).
Сигнал запроса на ПДП (DREQ) может быть издан как
обслуживаемым устройством, так и программно. Для программного
издания сигнала запроса по одному из 4-х каналов ПДП необходимо
установить соответствующий бит в 4-разрядном регистре запросов.
Запрос на ПДП может быть отменен записью нулевого значения в

— 14 —

соответствующий бит регистра. Бит запроса очищается
автоматически при окончании передачи по данному каналу. Все биты
запросов очищаются при сбросе контроллера. Для того, чтобы
воспринимать программные запросы на ПДП, канал должен находится
в режиме блоковой передачи.

Рабочий регистр (Temporary Register).
Этот 8-разрядный регистр используется для хранения
элемента данных, передаваемого в режиме фиксированного адреса
при передаче память-память или для временного хранения
передаваемого байта при всех остальных режимах передачи.

— 15 —

E2.4. Программное управление контроллером ПДПF

Программное управление контроллером ПДП осуществляется
через порты ввода-вывода. Доступ к каждому регистру контроллера
может быть осуществлен через свои порты ввода-вывода. В разделах
2.4.1 и 2.4.2 описывается программное управление контроллерами
на XT- и АТ-подобных ПЭВМ соответственно.

E2.4.1. Организация и управление ПДП на XT-подобных ПЭВМF

IBM PC XT и XT-совместимые ПЭВМ имеют один 4-канальный
контроллер ПДП 8237А. Назначение каналов следующее:

0 — обмен память-память;
1 — свободен (может использоваться сетевыми адаптерами);
2 — обмен с контроллером гибких дисков;
3 — обмен с контроллером жестких дисков.

В таблице приведено описание портов ввода-вывода,
предназначенных для управления контроллером ПДП.

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 0h і запись і Запись начального адреса в регистр начально-і
і і і го адреса и регистр текущего адреса канала 0і
і і і і
і 2h і запись і то же для канала 1 і
і і і і
і 4h і запись і то же для канала 2 і
і і і і
і 6h і запись і то же для канала 3 і
і і і і
і 0h і чтение і Чтение начального адреса из регистра началь-і
і і і ного адреса канала 0 і
і і і і
і 2h і чтение і то же для канала 1 і
і і і і
і 4h і чтение і то же для канала 2 і
і і і і
і 6h і чтение і то же для канала 3 і
і і і і
і 1h і запись і Запись в регистр начального счетчика циклов і
і і іи в регистр текущего счетчика циклов канала 0і
і і і і
і 3h і запись і то же для канала 1 і
і і і і
і 5h і запись і то же для канала 2 і
і і і і
і 7h і запись і то же для канала 3 і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 16 —

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і і і
і 1h і чтение і Чтение текущего значения из регистра теку- і
і і і щего счетчика циклов канала 0 і
і і і і
і 3h і чтение і то же для канала 1 і
і і і і
і 5h і чтение і то же для канала 2 і
і і і і
і 7h і чтение і то же для канала 3 і
і і і і
і 8h і запись і Запись регистра команд ПДП і
і і і і
і 8h і чтение і Чтение регистра состояния ПДП і
і і і і
і 9h і запись і Запись в регистр запросов ПДП і
і і і і
і 0Ah і запись і Запись бита маски для одного из каналов ПДП і
і і і і
і 0Bh і запись і Запись регистра режимов для одного из і
і і і каналов ПДП і
і і і і
і 0Ch і запись і Очистка (сброс) триггера-защелки (триггера і
і і і первого/последнего) і
і і і і
і 0Dh і запись і Программный сброс контроллера і
і і і і
і 0Eh і запись і Очистка битов масок всех 4-х каналов і
і і і і
і 0Fh і запись і Запись регистра масок для всех 4-х каналов і
і і і і
і 0Dh і і і
і или і чтение і Чтение рабочего регистра ПДП і
і 0Fh і і і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 81h і запись і Задание номера страницы для канала 2 і
і і і і
і 82h і запись і то же для канала 3 і
і і і і
і 83h і запись і то же для канала 1 і
і і і і
і 87h і запись і то же для канала 0 і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Порты 0h — 7h предназначены для записи исходных значений в
регистры начального и текущего адреса, начального и текущего
счетчика циклов для всех 4-х каналов. Так как порты
восьмиразрядные, а регистры, в которые через них заносятся
данные, 16-разрядные, то запись производится в два приема. Перед
первой командой вывода в требуемый порт необходимо сбросить
триггер-защелку, для чего выполняется команда вывода
произвольного значения в порт 0Ch, после чего в требуемый порт

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

на 348 точек по вертикали, поэтому один графический экран
требует 32К видеопамяти. MGA имеет две графические страницы:
страница 0 размещается в адресах B0000h — B7FFFh, страница 1 — в
адресах B8000h — BFFFFh. Смещение от начала страницы до байта,
содержащего точку с координатами (X,Y), равно

2000h * (Y % 4) + 90 * int(Y/4) + int(X/8),

а номер соответствующего бита в этом байте равен 7 — (X % 8).
Здесь X — горизонтальная позиция точки (0 — 719), Y — ее верти-
кальная позиция (0 — 347).

В качестве примера приведем программу инициализации MGA в
текстовом или графическом режиме.

; Таблицы значений регистров ЭЛТ для двух режимов
Graph_Tbl db 35h,2Dh,2Eh,07h,5Bh,02h,57h,57h,02h,03h,00h,00h
Text_Tbl db 61h,50h,52h,0Fh,19h,06h,19h,19h,02h,0Dh,0Bh,0Ch

; Установка графического режима:
Gr_Mode:
mov al,2
lea si,Graph_Tbl
mov bx,0
mov cx,4000h
call Set_Mode
. . .

; Установка текстового режима:
Txt_Mode:
mov al,20h
lea si,Text_Tbl
mov bx,0720h
mov cx,2000h
call Set_Mode
. . .

; Подпрограмма инициализации MGA.
; Вход: AL — режим
; SI — адрес таблицы регистров ЭЛТ
; CX — размер экрана в словах
; BX — значение для очистки экрана
Set_mode proc near

— 56 —

push ax ; сохранить регистры
push bx
push cx
mov dx,3B8h ; регистр режимов
out dx,al ; изменить режим адаптера, отключив экран
mov ax,cs
mov ds,ax ; DS:SI = адрес таблицы
mov dx,3B4h ; регистр индекса
mov cx,12 ; 12 регистров ЭЛТ
xor ah,ah
cld
Set_CRT:
mov al,ah
out dx,al ; номер регистра ЭЛТ
inc dx
lodsb
out dx,al ; содержимое регистра ЭЛТ
dec dx
loop Set_CRT
pop cx
mov ax,0B000h
mov es,ax
pop ax
xor di,di ; ES:DI => видеопамять
rep stosw ; очистка экрана
mov dx,3B8h ; регистр режимов
pop ax
add al,8
out dx,al ; активизировать экран
ret
Set_Mode endp

— 57 —

E7.5. Цветной графический адаптер CGAF

Цветной графический адаптер (CGA — Color Graphics Adapter)
— это графический видеоконтроллер среднего разрешения. Для него
зарезервированы порты ввода-вывода 3D0h — 3DFh, имеющие
следующее назначение.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3D4h Запись Регистр индекса ЭЛТ. Используется для выбора
регистра ЭЛТ. Для записи регистра ЭЛТ Rn нужно
выполнить команды:

out 3D4h,n и out 3D5h,данные.

3D5h Запись/ Регистр данных ЭЛТ. Позволяет записывать все
чтение регистры ЭЛТ и читать регистры R12 — R17.

3D8h Запись Регистр режимов дисплея:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і і і і і Бит:
АДБДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і АДД>0: кол-во столбцов в текстовых режимах:
і і і і і 0=40 столбцов, 1=80 столбцов
і і і і АДДДДД>1: 0=текстовый режим, 1=графический режим
і і і АДДДДДДДД>2: 1=запрет цвета на композитном дисплее
і і АДДДДДДДДДДД>3: 0=очистить экран, 1=активизировать
і і экран
і АДДДДДДДДДДДДДД>4: разрешение по горизонтали:
і 0=320 точек, 1=640 точек
АДДДДДДДДДДДДДДДДД>5: 1=бит 7 атрибутов — мерцание
0=бит 7 атрибутов — яркость фона

3D9h Запись Регистр выбора цветов:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і іI R G B і Биты:
АДБДБВДБВДБДДБДДЕДДБДДЩ ДДДДД
і і АДДДДДД>0-3: цвет (см. 7.3): для текста — цвет
і і рамки, для графики — цвет фона
і АДДДДДДДДДДДДДД>4: яркость: для текста — яркость фона,
і для графики — яркость пикселей
АДДДДДДДДДДДДДДДДД>5: номер графической палитры (0 или 1)

Примечание: Выбор палитры задает набор основных цветов в
графическом режиме. Палитра 0 — зеленый/красный/коричневый,
палитра 1 — бирюзовый/сиреневый/светло-серый (т. е. отличается
добавлением синего цвета).

— 58 —

3DAh Чтение Регистр состояния дисплея:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і і і Бит:
АДБДБДБДБВДБВДБВДБВДЩ ДДДД
і і і АДДД>0: 0=вывод изображения, 1=горизонтальная
і і і или вертикальная синхронизация
і і АДДДДДД>1: 1=триггер светового пера сброшен
і АДДДДДДДДД>2: 1=защелка светового пера открыта
АДДДДДДДДДДДД>3: 0=экран включен, 1=выключен (позволяет
проверить поступление видеосигнала на
на экран — если этот бит установлен,
вывод на экран не вызывает «хлопьев»)

3DBh Запись/ Вывод любого байта выключает триггер светового
Чтение пера.

3DCh Запись/ Вывод любого байта включает триггер светового
Чтение пера.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Видеопамять CGA располагается в адесах ОЗУ B8000h — BFFFFh.
CGA имеет два типа текстовых режимов: 25 строк по 40 символов в
строке и по 80 символов в строке. В режимах 25 х 40 одна
страница занимает 800h байтов, поэтому видеопамять состоит из 8
страниц; в режимах 25 х 80 страница занимает 1000h байтов и
видеопамять состоит из 4 страниц.

Адрес кода символа в текстовых режимах равен B800h :
n*P+m*L+2*C, адрес атрибута на единицу больше. Здесь L — номер
строки (0 — 24), C — номер столбца (0 — 79 или 0 — 39), m = 2 *
количество столбцов режима, n = 800h при m=80 и 1000h при m=160.

CGA имеет два типа графических режимов: цветной режим,
имеющий разрешение 320 точек по горизонтали на 200 точек по
вертикали, и черно-белый режим с разрешением 640 точек на 200
точек. В режиме 320 х 200 каждый пиксель задается двумя битами,
кодирующими его цвет; в режиме 640 х 200 цвет пикселя задается
одним битом (белый/черный). В графических режимах один экран
требует 16К видеопамяти, поэтому имеется одна страница
видеопамяти, которая размещается в адресах B8000h — BFFFFh. Эта
страница расслоена на две области: область с адреса B8000h
содержит пиксели, имеющие четные номера строк; область с адреса
BA000h содержит пиксели из нечетных строк. Поэтому адрес байта,
содержащего точку с координатами (X,Y), равен в цветном режиме

B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4),

а номера соответствующих битов в этом байте равны 7 — 2 * (X %
4) и 6 — 2 * (X % 4). Здесь X — горизонтальная позиция точки (0
— 319), Y — ее вертикальная позиция (0 — 199).

Адрес байта, содержащего точку с координатами (X,Y), равен
в черно-белом режиме

— 59 —

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Проверка секторов (класс 0, опкод 5).

Команда проверяет возможность считывания заданных секторов
с диска без передачи их содержимого в ОЗУ ПЭВМ.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 0 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Форматирование дорожки (класс 0, опкод 6).

Команда форматирует одну заданную дорожку. В остальном ее
действие аналогично команде «форматирование накопителя».

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Форматирование дефектной дорожки (класс 0, опкод 7).

Команда форматирует одну заданную дорожку, устанавливая

— 99 —

флаги «дефектная дорожка» в заготовках секторов. Никакая
информация в поля данных не записывается.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Чтение секторов (класс 0, опкод 8).

Команда считывает запрошенное число секторов начиная с
заданного. Все сектора должны находиться на одной дорожке.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запись секторов (класс 0, опкод 0Ah).(*)

Команда записывает заданное в блоке параметров число
секторов на диск, начиная с указанного начального сектора. Все
записываемые сектора должны находиться на одной дорожке.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 0 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

— 100 —

—> Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)

Команда осуществляет позиционирование головок накопителя на
заданный цилиндр.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Чтение внутреннего ОЗУ контроллера (класс 0, опкод 0Eh).(*)

Команда считывает содержимое внутреннего ОЗУ контроллера
(512 байт). Данное ОЗУ используется контроллером при
чтении/записи и содержит информацию, считанную/записанную при
выполнении последней команды чтения/записи секторов.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запись внутреннего ОЗУ контроллера (класс 0, опкод 0Fh).(*)

Команда обновляет содержимое внутреннего ОЗУ контроллера.

— 101 —

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—>Диагностика внутреннего ОЗУ контроллера (класс 7,опкод 0).(*)

Команда проверяет правильность работы внутреннего ОЗУ
контроллера. В случае ошибки генерируется ошибка с типом 3 и
кодом 0.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 1 1 1 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Тест устройства (класс 7, опкод 3).

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36