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

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

П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

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

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

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

выводится младший байт 16-разрядного значения и затем старший

— 17 —

байт следующей команды вывода в тот же порт.

Вывод в порт 8h позволяет занести значение в регистр команд
ПДП. Описание битов регистра команд приведено в п.2.3.

Чтение из порта 8h считывает регистр состояния ПДП.
Описание битов регистра состояния приведено в п.2.3.

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

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
не используются і АДДБДД> 0-1: выбор канала 00 — 0
і 01 — 1
і 10 — 2
і 11 — 3
АДДДДДДДД> 2: 1=установить бит запроса на ПДП
0=сбросить бит запроса на ПДП

Запись в порт 0Ah позволяет установить или сбросить бит
маски в регистре масок для одного из каналов. Формат команды:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
не используются і АДДБДД> 0-1: выбор канала 00 — 0
і 01 — 1
і 10 — 2
і 11 — 3
АДДДДДДДД> 2: 1=установить бит маски
0=сбросить бит маски

Запись в порт 0Bh устанавливает значение в регистре режимов
одного из 4-х каналов ПДП. Биты 0 и 1 задают номер канала (00 —
0, 01 — 1, 10 — 2, 11 — 3). В биты 2 — 7 заносятся значения,
передаваемые соответственно в биты 0 — 6 регистра режимов.
Описание битов регистра режимов приведено в п. 2.3.

Запись в порт 0Dh задает программный сброс контроллера
(Master Clear). Вывод любого байта в этот порт имеет тот же
эффект, что и аппаратный сброс контроллера. При программном
сбросе очищаются регистры команд, состояния, запросов и рабочий
регистр. Так же сбрасывается триггер-защелка и устанавливается
все биты масок в регистре масок. После программного сброса
контроллер переходит в цикл ожидания.

Вывод любого байта в порт 0Eh очищает регистр масок —
сбрасывает биты масок всех 4-х каналов ПДП и таким образом
разрешает прием запросов на ПДП по всем каналам.

— 18 —

Через порт 0Fh можно задать произвольное значение регистра
масок ПДП. Для этого необходимо в битах 0 — 3 регистра AL
установить требуемое значение масок каналов 0 — 3 соответственно
и вывести это значение в порт.

Страничные регистры ПДП предназначены для задания параметра
страницы памяти, с которой будет производится обмен. Под номером
страницы понимаются старшие 4 бита полного 20-битового адреса
ОЗУ, т.е. начальные сегментные адреса страниц будут кратны 1000h
(0, 1000h, 2000h, …, 9000h). Напомним, что архитектура ПДП
позволяет работать только со страницей памяти размером 64К, а
логика, обеспечивающая переключение страниц устроена так, что
страницы имеют жесткие границы, описанные выше. Из-за этой
особенности невозможно с помощью ПДП осуществить обмен с блоками
памяти, пересекающими границу между двумя такими страницами.

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

IBM PC AT и AT-подобные ПЭВМ имеют два контроллера ПДП
8237А, работающиe в каскадном режиме.

Назначение каналов следующие:

0 — свободен;
1 — адаптер SDLC;
2 — контроллер накопителей на гибких дисках;
3 — контроллер накопителей на жестких дисках;
4 — каскад с первым контроллером ПДП;
5, 6, 7 — свободны.

Управление каналами 0 — 3 осуществляется аналогично PC/ХТ.

Каналы 4 — 7 предназначены для обмена 16-разрядными словами. В
связи с этим возникает ряд отличий в работе с этими каналами:

— бит 0 в данных, заносимых в регистры начального и
текущего адреса, всегда подразумевается равным 0, поэтому через
эти регистры передаются биты 1 — 16 полного 23-разрядного адреса
(а не биты 0 — 15 полного 20-разрядного адреса, как это
реализовано на ХТ-подобных ПЭВМ), по этой же причине в
страничные регистры каналов 4 — 7 заносятся биты 17 — 23 полного
адреса, а не биты 16 — 23, как это надо сделать при работе с
каналами 0 — 3;

— поскольку передача осуществляется 16-разрядными словами,
в регистры текущего и начального счетчика циклов заносится не
число байт, а число слов, уменьшенное на единицу;

— размеры страниц памяти, в пределах которых возможен обмен
в течение одной передачи составляют 2000h байтов.

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

— 19 —

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 0C0h і запись і Запись начального адреса в регистр начально-і
і і і го адреса и регистр текущего адреса канала 4і
і і і і
і 0C4h і запись і то же для канала 5 і
і і і і
і 0C8h і запись і то же для канала 6 і
і і і і
і 0CCh і запись і то же для канала 7 і
і і і і
і 0C0h і чтение і Чтение начального адреса из регистра началь-і
і і і ного адреса канала 4 і
і і і і
і 0C4h і чтение і то же для канала 5 і
і і і і
і 0C8h і чтение і то же для канала 6 і
і і і і
і 0CCh і чтение і то же для канала 7 і
і і і і
і 0C2h і запись і Запись в регистр начального счетчика циклов і
і і іи в регистр текущего счетчика циклов канала 4і
і і і і
і 0C6h і запись і то же для канала 5 і
і і і і
і 0CAh і запись і то же для канала 6 і
і і і і
і 0CEh і запись і то же для канала 7 і
і і і і
і 0C2h і чтение і Чтение текущего значения из регистра теку- і
і і і щего счетчика циклов канала 4 і
і і і і
і 0C6h і чтение і то же для канала 5 і
і і і і
і 0Cah і чтение і то же для канала 6 і
і і і і
і 0CCh і чтение і то же для канала 7 і
і і і і
і 89h і запись і Задание номера страницы для канала 6 і
і і і і
і 8Bh і запись і то же для канала 5 і
і і і і
і 8Ah і запись і то же для канала 7 і
і і і і
і 8Fh і запись і то же для канала 4 і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

В следующей таблице приведено описание назначения портов
второго контроллера ПДП с указанием аналогичных портов первого
контроллера. Форматы данных, вводимых/выводимых через эти порты
совпадают с форматами данных аналогичных портов первого
контроллера. При работе с этими портами следует только
учитывать, что нумерация каналов начинается не с 0, как у
первого контроллера, а с 4 (канал 4 — это канал 0 второго

— 20 —

контроллера, канал 5 — это его канал 1 и т. д.).

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДї
і Порт і і і Аналог. і
і і Режим і Назначение і порт і
і ПДП-2і і і ПДП-1 і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ
і 0D0h і запись і Запись регистра команд ПДП і 8h і
і і і і і
і 0D0h і чтение і Чтение регистра состояния ПДП і 8h і
і і і і і
і 0D2h і запись і Запись в регистр запросов ПДП і 9h і
і і і і і
і 0D4h і запись і Запись бита маски для одного из каі 0Ah і
і і і каналов ПДП і і
і і і і і

Страницы: 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

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

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

— 60 —

E7.6. Расширенный графический адаптер EGAF

Расширенный графический адаптер (EGA — Enhanced Graphics
Adapter) — это графический видеоконтроллер высокого разрешения,
программно совместимый с адаптерами CGA и MGA, но имеющий
гораздо большие возможности. В IBM PC для EGA зарезервированы
следующие порты ввода-вывода:

EGA #1 — порты 3C0h — 3DFh;
EGA #2 — порты 2C0h — 2DFh.

EGA может генерировать прерывание IRQ2 (Int 0Ah) в начале
вертикальной синхронизации. Однако, BIOS не использует эту
возможность; мы также не описываем ее, т. к. вектор Int 0Ah
используется в PC AT как каскад второго контроллера прерываний
(см. п. 3).

Все регистры EGA можно разбить на четыре группы:

3C0h Контроллер атрибутов (ATC)
3C2h Многоцелевой регистр
3C4h-3C5h Блок синхронизации (sequencer)
3CAh-3CFh Графический контроллер (GDC)
3D4h-3DCh или Блок управления дисплеем
3B4h-3BCh (адреса портов зависят от видеорежима)

Контроллер атрибутов (ATC) имеет 20 регистров, управляющих
цветами вывода:

Регистр Наименование Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
R0-R15 Регистры палитры Определяют цвета соответствующих
(только для записи) атрибутов:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXіr іg іb іR іG іB і Бит:
АДБДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і АДД> 0: Синий 2/3 яркости
і і і і АДДДДД> 1: Зеленый 2/3 яркости
і і і АДДДДДДДД> 2: Красный 2/3 яркости
і і АДДДДДДДДДДД> 3: Синий 1/3 яркости
і і (подчеркивание для MGA)
і АДДДДДДДДДДДДДД> 4: Зеленый 1/3 яркости
і (яркость для MGA)
АДДДДДДДДДДДДДДДДД> 5: Красный 1/3 яркости

— 61 —

R16 Управление режимами Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і і і Бит:
АДБДБДБДБВДБВДБВДБВДЩ ДДДД
і і і АДД> 0: Режим: 0=текстовый, 1=графический
і і АДДДДД> 1: 1=атрибуты MGA, 0=атрибуты CGA
і АДДДДДДДД> 2: Задает 9-ю точку для псевдографики:
і 1=9-я точка совпадает с 8-й точкой
і 0=вывод 9-й точки цветом фона
АДДДДДДДДДДД> 3: Бит 7 байта атрибутов задает:
1=мерцание символов, 0=яркость фона

R17 Цвет рамки Устроен так же, как регистры
палитры.
R18 Управление цветовыми Имеет следующую структуру:
плоскостями

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і Бит:
АДБДБДДЕДДБДДБДДЕДДБДДЩ ДДДД
і АДДДДДДД>0-3: 1=разрешить цветовую плоскость
і Ci, i = 0 — 3
АДДДДДДДДДДДДДДДД>4-5: мультиплексирование видеосигналов:
00=R&B, 01=b&G, 10=r&g,
11=не используется

R19 Горизонтальная прокрутка Задает сдвиг экрана влево в
точках (0 — 15).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечания.
1. Регистры палитры задают соответствие между значением
атрибута и его цветом. Например, засылка значения 02h в регистр
ATC определит его как зеленый цвет, 10h — как бледно-зеленый,
12h — как ярко-зеленый.

2. Для того, чтобы цвета атрибутов совпадали с цветами CGA,
регистры палитры должны иметь следующие значения:

ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДї
і Регистр Значение і Регистр Значение і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДґ
і 00h 00h і 08h 38h і
і 01h 01h і 09h 39h і
і 02h 02h і 0Ah 3Ah і
і 03h 03h і 0Bh 3Bh і
і 04h 04h і 0Ch 3Ch і
і 05h 05h і 0Dh 3Dh і
і 06h 14h і 0Eh 3Eh і
і 07h 07h і 0Fh 3Fh і
АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДЩ

— 62 —

Блок синхронизации обеспечивает синхронизацию вывода
символов с работой знакогенератора. Он имеет следующие
программируемые регистры.

Регистр Наименование Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
R0 Перезапуск блока Установка и сброс бита 0 вызы-
синхронизации вает асинхронный перезапуск
блока, установка и сброс бита 1
— синхронный перезапуск. Для
нормальной работы оба бита
должны быть установлены.
R1 Режим синхронизации Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і і і Бит:
АДБДБДБДБВДБВДБВДБВДЩ ДДДД
і і і АДД> 0: Высота символов: 1=8 точек, 0=9 точек
і і АДДДДД> 1: Полоса частот ЭЛТ: 1=низкая, 0=высокая
і АДДДДДДДД> 2: 0=сдвиг всех символов, 1=только четных
АДДДДДДДДДДД> 3: Частота генератора пикселей:
1=половинная, 0=обычная

R2 Маска битовых плоскостей Установка битов 0 — 3 разрешает
запись в соответствующие
битовые плоскости.
R3 Выбор карты символов Биты 0-1 выбирают карту B, биты
2-3 — карту A; карта A относит-
ся к символам, у которых бит 3
атрибутов установлен, карта B —
к символам, чей бит 3 сброшен.
Действительно только в случае,
когда ОЗУ EGA больше 64К.
R4 Режим видеопамяти Имеет следующую структуру:

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

Графический контроллер (GDC) управляет работой адаптера в
графическом режиме и имеет следующие регистры:

Регистр Наименование Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
R0 Установка/сброс Установка битов 0 — 3 выбирает
битовых плоскостей соответствующую битовую плос-
кость для режима записи 00.

— 63 —

R1 Разрешение установки Управляет доступом к R0.
и сброса
R2 Сравнение цветов Биты 0 — 3 выбирают цвет для
режима чтения 1.
R3 Параметры записи Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДВДДВДДВДДВДДВДДї
іXіXіXі і і Биты:
АДБДБДБДДЕДДБДДБВДБДДЩ ДДДДД
і АДДДД> 0-2: Счетчик циклических сдвигов влево
і для режима записи 00
АДДДДДДДДДДД> 3-4: Способ вывода в режимах записи 00 и
02: 00=без изменений, 01=И, 10=ИЛИ,
11=исключающее ИЛИ

Страницы: 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 і 1 1 1 0 0 0 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П Х Х У Х Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Расширенный тест контроллера (класс 0, опкод 4).

Команда проверяет функционирование составных частей

— 102 —

контроллера: микропроцессора, ОЗУ, ПЗУ и схем коррекции ошибок.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 1 1 1 0 0 1 0 0 і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Считывание без контроля (класс 7, опкод 5).

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

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

—> Запись без контроля (класс 7, опкод 6).

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

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

E9.1.4. Разметка дискаF

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

— 103 —

Дорожка обычно содержит от 8 до 26 секторов и для данного
конкретного накопителя число секторов на дорожке постоянно.
Начало дорожки определяется сигналом «индекс», который
генерируется накопителем при каждом обороте диска. Далее следует
первый сектор дорожки. Второй сектор будет отстоять от первого
на число секторов, равное значению фактора чередования минус 1,
третий еще на столько же и т. д. Таким образом при факторе
чередования равном 3, сектора на 17-секторной дорожке будут
располагаться следующим образом:

ЪДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДї
і 1і 7і13і2 і8 і14і3 і9 і15і4 і10і16і 5і11і17і 6і12і

ГДДБДДБДДБВДБДДБДДБВДБДДБДДБДДБДДБДДБДДБДДБДДБДДБДДґ
і і фактор і і
і ічер-ния і і
і і

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

ЪДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДї
іОбозначениеі Назначение іДлина і
і і і(байт)і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і АМ і Адресный маркер і 4 і
і ИНТ1 і Интервал і 9-12 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і і Поле идентификации: і і
і СИНХ1 і Синхробайт і 1 і
і ИНТ2 і Интервал і 2 і
і СРВ і Байт для сравнения і 1 і
і ЦСБ і Старший байт номера цилиндра і 1 і
і ЦМБ і Младший байт номера цилиндра і 1 і
і ГЛВ і Номер головки і 1 і
і СЕКТ і Номер сектора і 1 і
і ФЛАГ і Флаговый байт і 1 і
і НУЛЬ і Нулевой байт і 1 і
і КС1 і Контрольная сумма поля идентификации і 4 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і ИНТ3 і Интервал і 16 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і і Область данных: і і
і СИНХ2 і Синхробайт і 1 і
і ИНТ4 і Интервал і 2 і
і ДАННЫЕ і Поле данных і 512 і
і КС2 і Контрольная сумма поля данных і 4 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і ИНТ5 і Интервал і 43 і
АДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДЩ

Начало сектора обозначается при помощи уникальной
комбинации, называемой адресным маркером. Пять интервалов,
обозначенных в таблице ИНТ1 — ИНТ5, заполняются нулями, причем
длина ИНТ2 и ИНТ4 постоянна и равна 2 байтам, в то время как
ИНТ1, ИНТ3 и ИНТ5 могут иметь разную длину, немного отличающуюся
от значений, приведенных в таблице. Эти три интервала

— 104 —

предназначены для подготовки накопителя к считыванию (записи)
следующей за ним области, а различие в длине объясняется тем,
что адресный маркер, поле идентификации и данные могут
записываться в разное время поверх ранее имевшейся информации,
что не обеспечивает точного совпадения физической длины
записанной области и ранее имевшейся на этом месте области.
Отличия в длине могут составлять несколько бит, чем объясняется
наличие после после интервалов синхробайта, позволяющего
определить истинную начальную границу области и правильно
сгруппировать все последующие биты по байтам. Байт СРВ имеет
постоянное значение для всех секторов и используется для
проверки правильности считывания поля идентификации. Флаговый
байт содержит служебную информацию, в частности отмечает
дефектность сектора, если он не пригоден для записи. Контрольные
суммы служат для проверки правильности считывания информации из
поля идентификации и области данных и вычисляются специальным
генератором кодов коррекции ошибок (Error Correction Code, ECC)
с производящим полиномом 32-й степени.

— 105 —

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

IBM PC AT отличается от всех предыдущих моделей IBM PC и
совместимых ПЭВМ в следующем:

— стандартный BIOS обеспечивает возможность работы как с
накопителями на гибких, так и с накопителями на жестких дисках;

— контроллеры жестких и гибких дисков расположены на одной
плате;

— адреса портов ввода-вывода, предназначенных для управ-
ления жестким диском, и назначение портов полностью отличаются
от ХТ-подобных ПЭВМ.

Возможно подключение к одному ПЭВМ двух жестких дисков.
Каждый диск имеет свой набор портов (1F0h-1F7h для первого и
170h-177h для второго). Ниже будут описаны порты только первого
диска. Назначение портов второго диска аналогично первому.

E9.2.1. Описание портов ввода-выводаF

Порт 1F0h
Предназначен для обмена данными с внутренним ОЗУ
контроллера, являющимся промежуточным звеном между оперативной
памятью ПЭВМ и накопителем.

Порт 1F1h.
При чтении через этот порт можно получить информацию о
последней возникшей ошибке:

Страницы: 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