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

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

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

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

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

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

Порт 1F2h.
Чтение/запись числа секторов для последующей операции.

Порт 1F3h.
Чтение/запись параметра «номер сектора» для последующей
операции.

— 106 —

Порт 1F4h.
Чтение/запись старших битов номера цилиндра для последующей
операции (биты 0 — 1 — это биты 8 — 9 в 10-битовом номере
цилиндра).

Порт 1F5h.
Чтение/запись младших восьми битов номера цилиндра для
последующей операции.

Порт 1F6h.
Чтение/запись номера устройства и головки для последующей
операции.

Порт 1F7h (запись).
Вывод команды по управлению накопителем.

Порт 1F7h (чтение).
Чтение состояния накопителя и результатов предыдущей
команды:

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

E9.2.2. Система командF

Код команды заносится в порт 1F7h после того, как
подготовлены все параметры в портах 1F2h — 1F6h. Выполнение
команды начинается сразу после занесения в порт 1F7h кода
команды. Команда состоит из одного байта. Старшие 4 бита
содержат код требуемой операции, младшие содержат параметры.
Перечень команд с возможными значениями параметров приведен в
таблице.

— 107 —

ЪДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Код і Назначение і Параметры і
іоперацииі і і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 1 і Рекалибровать (сброс і Период импульсов сигнала і
і і головок на цилиндр 0) і «шаг» і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 2 і Чтение секторов і Биты, определяющие необходи-і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ мость повторных обращений і
і 3 і Запись секторов і к диску и повторных попыток і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ считывания при ошибках і
і 4 і Проверка секторов і контрольной суммы і

ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 5 і Форматирование дорожкиі Параметр = 0 і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 7 і Поиск цилиндра і Период импульсов сигнала і
і і і «шаг» і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 9 і Диагностика і Параметр = 0 і
і ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Установка параметров і Параметр = 1 і
і і накопителя (максималь-і і
і і ное число головок и і і
і і секторов) і і
АДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 108 —

E10. Печатающее устройствоF

Устройство печати IBM PC-подобных компьютеров обычно
подключается к параллельному интерфейсу. Для подключения
используется стандартный разъем Centronix, имеющий 36 контактных
выходов (отечественный аналог ИРПР-М). Допускается три варианта
подключения принтеров к ПЭВМ:

— адаптер принтера может находится на одной плате с
адаптером монохромного дисплея, при этом используются порты
3BCh — 3BEh;

— к ПЭВМ могут подключены два отдельных адаптера для
управления принтерами, использующие порты 378h — 37Ah (первый
адаптер) и 278h — 27Ah (второй адаптер).

При программировании принтера важно знать адрес базового
порта ввода-вывода (первого порта из трех); адреса базовых
портов хранятся в области данных BIOS, начиная с адреса 0:408h
(LPT1) и далее по слову на принтер до LPT4. Дальнейшее описание
предполагает, что базовый адрес принтера равен 378h.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
378h Запись Регистр данных — сюда засылается байт, посылае-
мый на печать
Чтение Регистр данных — позволяет считать последний
байт, переданный принтеру

379h Чтение Регистр состояния принтера:

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

— 109 —

37Ah Чтение/ Регистр управления принтером:
Запись

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

Примечания.
1. Для запуска печати символа нужно на короткое время
установить бит 0 регистра управления, а затем сбросить его.

2. Прерывание происходит по окончании вывода символа на
печать: для первого принтера на седьмом уровне контроллера
прерываний (IRQ7, вектор прерывания 0Fh), для второго принтера —
на пятом уровне (IRQ5, вектор 0Dh). Следует отметить также, что
IRQ5 используется XT-контроллером жестких дисков для генерации
своих прерываний. Обычно этот бит не используется
(сбрасывается), а проверка готовности принтера производится на
основании опроса регистра состояния.

Типичная последовательность действий для вывода на печать
одного символа такова:

— вывести передаваемый байт в регистр данных;

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

— в цикле проверять состояние принтера до устaновки бита 7
регистра состояния (здесь возможно использование таймаута);

— проверить биты 3-5 регистра состояния на наличие ошибки;

— установить и сразу же сбросить нулевой бит регистра
управления, для этого подходит следующая последовательность
команд:

mov dx,37Ah ;адрес регистра управления
mov al,00001101b ;установить биты 0,2 и 3
out dx,al ;вывести команду
xor al,1 ;сбросить бит 0
out dx,al ;повторно вывести команду

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

Несмотря на простоту управления, принтер представляет из
себя достаточно сложное устройство, имеющее свой микропроцессор,

— 110 —

ПЗУ и ОЗУ. Микропроцессор используется для обработки управляющих
последовательностей и управления печатью. ПЗУ содержит описание
рисунков символов в зависимости от их кода и выбранной таблицы и
программы на языке используемого микропроцессора. ОЗУ
используется для временного хранения введенных данных и
спроектированных пользователем символов. Ряд принтеров, помимо
интерфейса Centronix, могут поключаться и к последовательному
интерфейсу. Принтер обрабатывает ряд спецсимволов (таких, как
звонок, забой, горизонтальная и вертикальная табуляция), а также
имеет достаточно сложную систему команд для изменения режимов
работы и управления печатью.

Обычно команды начинаются с символа ESC (шестнадцатиричный
код 1Bh) и имеют длину от двух байт и более (существуют
командные последовательности, включающие по несколько килобайт
информации, например команды загрузки спроектированных
пользователем шрифтов). Спецсимволы и байты команд передаются
принтеру так же, как и обычные символы, предназначеные для
печати, описанным выше способом. Подобный способ управления
удобен для программного изменения режимов работы устройства.
Учитывая, что выпуском принтеров для ПЭВМ занимается достаточно
большое число компаний и возможности принтеров постоянно
совершенствуются, нет смысла приводить полностью какую-либо
систему команд, так как, во-первых, она в разных марках и
моделях принтеров различна, и, во-вторых, достаточно полно
описывается в документации на каждый конкретный принтер.

Существует 2 основных стандарта на систему команд и таблицу
используемых символов (стандарты IBM и EPSON), которых в
основном придерживаются фирмы-изготовители, оставляя за собой
право вносить в них изменения и дополнения. Единого стандарта
как на систему команд, так и на расположение и рисунки символов
второй половины таблицы ASCII (коды 129-255) нет. Наиболее часто
используемые команды:

— установка вида шрифта и режима печати;

— черновой текстовый (draft) нормальной ширины (pica),
узкий (condensed) или средней ширины (elita).

— качественный шрифт (NLQ, Proportional, Orator, Script и
т. д.);

-выбор таблицы символов из ПЗУ (обычно имеется несколько
таблиц, отличающихся расположением управляющих кодов, наличием и
расположением псевдографических символов или курсива);

— загрузка в ОЗУ принтера спроектированных пользователем
шрифтов и работа с ОЗУ принтера (именно в этой группе команд,
имеются наибольшие различия между разными моделями);

— управление принтером в режиме точечной графики;

— установка служебных параметров (размеры отступов,
страницы, шаг табуляции, расстояние между строками) и изменение

— 111 —

характеристик (сброс, включение/отключение датчика конца бумаги,
печать в одну или в две стороны и т. п.).

Ряд характеристик и режимов работы может выбираться как
программно, так и аппаратно с использованием кнопок и клавиш на
лицевой панели и DIP-переключателей. Существуют характеристики,
изменить которые можно только аппаратно (например, возможность
загрузки шрифтов или размер используемого ОЗУ).

— 112 —

E11.Последовательный интерфейс RS-232F

E11.1. Общие сведенияF

В сотав IBM PC могут входить до четырех последовательных
интерфейсов, работающих в стандарте RS-232 (отечественный аналог
— стык С2) и именуемых СОМ1 — СОМ4. Им выделены следующие адреса
в области портов ввода-вывода:

СОМ1: 3F8h-3FFh COM3: 338h-33Fh
COM2: 278h-2FFh COM4: 238h-23Fh

(интерфейсы СОМ3 и СОМ4 поддерживаются только в моделях PS/2).

Каждый интерфейс связан с определенным уровнем контроллера
прерываний:

СОМ1 вызывает прерывание IRQ4 (Int 0Ch)
COM2 вызывает прерывание IRQ3 (Int 0Bh)
СОМ3 и СОМ4 не имеют стандартных векторов прерываний.

Каждое из устройств RS-232 представляет собой контроллер
8250, оснащенный 25- или 9- штырьковым разъемом на задней стенке
корпуса ПЭВМ. Этот разъем может использоваться для подключения
мыши, графопостроителя или организации связи между ПЭВМ.
Контакты стыка RS-232 имеют следующие наименования

ЪДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДВДДДДДДДДї
іНазваниеі Имя цепиіНомер контактаі Назначение іНаправ- і
ісигнала ГДДДВДДДДДЕДДДДДВДДДДДДДДґ іление і
і іEIAіCCITTі9-шт.і 25-шт. і і і
ГДДДДДДДДЕДДДЕДДДДДЕДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
і DCD іCF і 109 і 1 і 8 іСвязь модемов іВ ПЭВМ і
і і і і і іустановлена і і
і RX іBB і 104 і 2 і 3 іПринимаемые данные іВ ПЭВМ і
і TX іBA і 103 і 3 і 2 іПередаваемые данныеіИз ПЭВМ і
і DTR іCD і108/2і 4 і 20 іГотовность ПЭВМ к іИз ПЭВМ і
і і і і і іработе і і
і SG іAB і 102 і 5 і 7 іСигнальная земля і ДДДД і
і DSR іCC і 107 і 6 і 6 іГотовность модема кіВ ПЭВМ і
і і і і і іработе і і
і RTS іCA і 105 і 7 і 4 іЗапрос на передачу іИз ПЭВМ і
і CTS іCB і 106 і 8 і 5 іГотовность модема кіВ ПЭВМ і
і і і і і і к передачи і і
і RI іCE і 125 і 9 і 22 іИндикатор вызова іВ ПЭВМ і
і FG іAA і 101 і ДД і 1 іЗащитная земля і ДДДД і
АДДДДДДДДБДДДБДДДДДБДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДБДДДДДДДДЩ

Контроллер стыка RS-232 является полностью программируемым
устройством; вы можете задать следующие параметры обмена:
количество битов данных и стоп-битов, вид четности и скорость
обмена в бодах (бит/с).

— 113 —

E11.2. Описание портовF

Ниже описаны порты ввода-вывода для СОМ1, имеющего базовый
адрес 3F8h. Обратите внимание, что порты 3F8h и 3F9h имеют
разное назначение в зависимости от бита 7 порта 3F8h (т. н. бит
DLAB — Divisor Latch Access Bit).

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3F8h Запись Регистр передатчика — сюда засылается байт для
передачи
Чтение Регистр приемника — отсюда извлекается принятый
байт
Запись Если DLAB=1, то сюда засылается младший байт
скорости обмена (см. порт 3F9h)

3F9h Запись Если DLAB=1, то сюда засылается старший байт
скорости обмена. Скорость задается значением
делителя, равным 115200/V, где V — скорость
в бодах. Например, для скорости 9600 бод
делитель равен 115200/9600=12=0Ch, поэтому
нужно вывести 0Ch в порт 3F8h и 0 в порт 3F9h.
Запись Регистр управления прерываниями (1 = разрешить
прерывание):

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і0 і0 і 0і і і і і Бит:
АДДБДДБДДБДДБВДБВДБВДБВДЩ ДДДД
і і і АД> 0: прерывание по приему символа
і і АДДДД> 1: прерывание по завершению передачи
і і символа
і АДДДДДДД> 2: прерывание по обрыву линии или
і или ошибке в линии
АДДДДДДДДДД> 3: прерывание по изменению состояния
модема (любой из линий CTS, DSR, RI
и DCD)

3FAh Чтение Регистр идентификации прерывания. Когда
произошло прерывание, здесь содержится причина,
вызвавшая его:

7 6 5 4 3 2 1 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

гашения (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 і0 і0 і 0і 0і і і Бит:
АДДБДДБДДБДДБДДБДДЕДДБВДЩ ДДДД
і і
і АДД> 0: 0=есть отложенные прерывания
АДДДДДД> 1-2: причина прерывания:
11=ошибка или обрыв линии;
сбрасывается чтением регистра
состояния линии (порт 3FDh)
10=принят символ; сбрасывается
чтением приемника (порт 3F8h)
01=передан символ; сбрасывается

— 114 —

записью символа в регистр
передатчика (порт 3F8h)
00=изменение состояния модема
(линий CTS, DSR, RI или DCD);
сбрасывается чтением регистра
состояния модема (порт 3FEh)

3FBh Чтение/ Регистр управления линией:
Запись

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і Биты:
АВДБВДБВДБДДЕДДБВДБДДЕДДЩ ДДДДД
і і і і і і
і і і і і АДДД> 0-1: число битов данных:
і і і і і 00=5, 01=6, 10=6, 11=8
і і і і АДДДДДДДД> 2: число стоп-битов:
і і і і 0=1, 1=1.5 при 5 битах данных
і і і і и 2 в противном случае
і і і АДДДДДДДДДДДД> 3-4: тип четности:
і і і X0=нет,
і і і 01=нечетная,
і і і 11=четная
і і АДДДДДДДДДДДДДДДДД> 5: постоянная четность
і і 0=отмена постоянной четности
і і 1=постоянный бит четности,
і і зависит от битов 3-4:
і і биты 3-4=01 — бит четности
і і всегда 1
і і биты 3-4=11 — бит четности
і і всегда 0
і і биты 3-4=X0 — без бита четности
і АДДДДДДДДДДДДДДДДДДДД> 6: 1=имитировать обрыв линии
і (посылка нулей)
АДДДДДДДДДДДДДДДДДДДДДДД> 7: бит DLAB:
1=порты 3F8h и 3F9h для загрузки
скорости обмена;
0=порты 3F8h и 3F9h в обычном
режиме

3FCh Запись Регистр управления модемом

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і 0і 0і 0і і і і і і Бит:
АДДБДДБДДБВДБВДБВДБВДБВДЩ ДДД
і і і і АД> 0: 1=установить выход DTR
і і і АДДДД> 1: 1=установить выход RTS
і і АДДДДДДД> 2: 1=установить OUT1 (не используется)
і АДДДДДДДДДД> 3: 1=установить OUT2 (разрешить преры-
і вания от RS-232)
АДДДДДДДДДДДДД> 4: 1=диагностический режим (посылать
выход на вход стыка).

— 115 —

3FDh Чтение Регистр состояния линии. Биты 1-4 вызывают
прерывания по ошибке, если оно разрешено:

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

3FEh Чтение Регистр состояния модема. Биты 0-3 вызывают
прерываниe по изменению состояния модема,

если оно разрешено:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДД
і і і і і і і і
і і і і і і і АДД> 0:1=изменилось состояние линии CTS
і і і і і і АДДДДД> 1:1=изменилось состояние линии DSR
і і і і і АДДДДДДДД> 2:1=изменилось состояние линии RI
і і і і АДДДДДДДДДДД> 3:1=изменилось состояние линии DCD
і і і АДДДДДДДДДДДДДД> 4: состояние линии CTS
і і АДДДДДДДДДДДДДДДДД> 5: состояние линии DSR
і АДДДДДДДДДДДДДДДДДДДД> 6: состояние линии RI
АДДДДДДДДДДДДДДДДДДДДДДД> 7: состояние линии DCD

Примечание: «Изменилось состояние линии…» означает, что
данная линия стыка RS-232 изменила свое состояние по сравнению с
последним чтением этого регистра.

— 116 —

E11.3. Порядок инициализации 8250F

Для подготовки контроллера 8250 к работе необходимо
выполнить следующие шаги.

1. Установить бит DLAB порта 3FBh и заслать делитель,
задающий скорость обмена, в порты 3F8h и 3F9h.

2. Инициализировать регистр управления линией (порт 3FBh);
при этом сбросить бит DLAB.

3. Инициализировать регистр управления модемом (порт 3FCh).

4. Инициализировать регистр управления прерываниями (порт
3F9h) и, если прерывания разрешены, установить адрес программы
обработки прерываний от стыка RS-232.

В качестве примера приведем набор подпрограмм, обеспечива-
ющих обмен через порт COM1 в дуплексном режиме со скоростью 1200
бод.

title RS232
_DATA segment para public
Buf_Size equ 1024 ; размер буфера

Source db Buf_Size+2 dup (0) ; буфер приема символов
Src_ptr dw Source ; указатель позиции в буфере
Count dw 0 ; количество символов в буфере
Ser_ip dw 0 ; старый адрес Int 0Ch
Ser_cs dw 0
Save_ds dw 0 ; служебные переменные
Int_sts db 0
Overrun db 0
_DATA ends

_TEXT segment para public
assume cs:_TEXT, ds:_DATA
public Ser_Ini:near, Ser_Rst:near
public Get_Chr:near, Out_Chr:near
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма инициализации стыка COM1. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Ser_Ini proc near
push ax ; сохранить регистры
push dx
push bx
push es
in al,21h ; IMR 1-го контролера прерываний
or al,10h ; запретить прерывание IRQ4 от COM1
out 21h,al
mov al,0Ch
mov ah,35h
int 21h ; взять вектор Int 0Ch в es:bx
mov Ser_ip,bx ; и сохранить его
mov Ser_cs,es

— 117 —

mov al,0Ch
mov dx,offset Ser_int
push ds
mov bx,cs
mov ds,bx
mov ah,25h
int 21h ; установить Int 0Ch = ds:dx
pop ds
pop es
pop bx
cli ; запретить прерывания
in al,21h ; IMR 1-го контроллера прерываний
and al,not 10h
out 21h,al ; разрешить прерывания от COM1
mov dx,3FBh ; регистр управления линией
in al,dx
or al,80h ; установить бит DLAB
out dx,al

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

mov dx,3F8h
mov al,60h
out dx,al ; младший байт для скорости 1200 бод
inc dx
mov al,0
out dx,al ; старший байт скорости
mov dx,3FBh ; регистр управления линией
mov al,00000011b ; 8 бит, 2 стоп-бита, без четности
out dx,al
mov dx,3F9h ; регистр разрешения прерываний
mov al,1 ; разрешить прерывания по приему
out dx,al
nop ; и чуть-чуть подождать
nop
mov dx,3FCh ; регистр управления модемом
mov al,00001011b ; установить DTR, RTS и OUT2
out dx,al
sti ; разрешить прерывания
mov dx,3F8h ; регистр данных
in al,dx ; сбросить буфер приема
pop dx
pop ax
ret
Ser_Ini endp
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма отключения стыка COM1. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Ser_Rst proc near
push ax ; сохранить регистры
push dx
Wait_Free:
mov dx,3FDh ; регистр состояния линии
in al,dx
jmp short $+2 ; короткая задержка
test al,60h ; передача окончена?
jz Wait_Free ; ждем, если нет
mov dx,3F9h ; регистр разрешения прерываний

— 118 —

mov al,0 ; запретить прерывания
out dx,al
jmp short $+2 ; еще подождем…
jmp short $+2
mov dx,3FCh ; регистр управления модемом
mov al,00000011b ; активировать DTR и RTS
out dx,al
jmp short $+2
jmp short $+2
push bx
mov al,0Ch
mov dx,Ser_ip
push ds
mov bx,Ser_cs
mov ds,bx
mov ah,25h
int 21h ; восстановить вектор Int 0Ch
pop ds
pop bx
cli ; запрет прерываний
in al,21h ; читать маску прерываний
jmp short $+2
or al,10h ; запретить IRQ4
out 21h,al
sti ; разрешение прерываний
pop dx
pop ax
ret
Ser_Rst endp
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма обработки прерываний от COM1. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Ser_Int proc far
push ax
push dx
push ds
mov ax,seg _DATA
mov ds,ax
mov dx,3FAh ; регистр идентификации прерываний
in al,dx
mov Int_Sts,al; сохраним его содержимое
test al,1 ; есть отложенные прерывания?
jz Is_Int ; да
pop Save_ds ; нет, передаем управление
pop dx ; старому обработчику Int 0Ch
pop ax
push Ser_cs
push Ser_ip
push Save_ds
pop ds
ret ; длинный переход
Is_Int:
mov al,64h ; послать EOI для IRQ4
out 20h,al ; в 1-й контроллер прерываний
test Int_Sts,4 ; прерывание по приему?

— 119 —

jnz Read_Char ; да
No_Char:
sti ; нет, разрешить прерывания
jmp Int_Ret ; и закончить обработку Int 0Ch
Read_Char:
mov dx,3FDh ; регистр состояния линии
in al,dx
and al,2
mov Overrun,al; ovvrrun0, если была потеря символа
mov dx,3F8h ; регистр данных
in al,dx ; вводим символ
or al,al ; если принят нуль,
jz No_Char ; то игнорируем его
push bx
mov ah,Overrun
or ah,ah ; предыдущий символ потерян?
jz Save_Char ; нет
mov ah,al ; да,
mov al,7 ; заменяем его на звонок (07h)
Save_Char:
mov bx,Src_ptr; заносим символ в буфер
mov [bx],al
inc Src_ptr ; и обновляем счетчики
inc bx
cmp bx,offset Src_ptr-2 ; если конец буфера
jb Ser_Int_1
mov Src_ptr,offset Source ; то «зацикливаем» на начало
Ser_Int_1:
cmp Count,Buf_Size ; буфер полон?
jae Ser_Int_2 ; да
inc Count ; нет, учесть символ
Ser_Int_2:
or ah,ah ; если была потеря символа
jz Ser_Int_3
mov al,ah ; то занести в буфер сам символ
xor ah,ah
jmp short Save_Char
Ser_Int_3:
pop bx
sti ; разрешить прерывания
Int_Ret:
pop ds
pop dx
pop ax
iret
Ser_Int endp
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма вывода символа AL в порт. є
;є При ошибке возвращает CF=1, иначе CF=0. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Out_Chr proc near
push ax
push cx
push dx
mov ah,al

— 120 —

sub cx,cx
Wait_Line:
mov dx,3FDh ; регистр состояния линии
in al,dx
test al,20h ; стык готов к передаче?
jnz Output ; да
jmp short $+2
jmp short $+2
loop Wait_Line ; нет, ждем
pop dx
pop cx
pop ax
stc ; нет готовности порта
ret
Output:
mov al,ah
mov dx,3F8h ; регистр данных
jmp short $+2
out dx,al ; вывести символ
pop dx
pop cx
pop ax
clc ; нормальный возврат
ret
Out_Chr endp
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма ввода символа из порта в AL. є
;є Если буфер пуст, возвращает CF=1, иначе CF=0. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Get_Chr proc near
cmp Count,0 ; буфер пуст?
jne loc_1729 ; нет
stc ; да, возврат по ошибке
ret
loc_1729:
push si
cli ; запретим прерывания
mov si,Src_ptr

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

sub si,Count
cmp si,offset Source
jae loc_1730
add si,Buf_Size
loc_1730:
mov al,[si] ; выберем символ
dec Count ; и уменьшим счечик
sti ; разрешение прерываний
pop si
clc ; и нормальный возврат
ret
Get_Chr endp
_TEXT ends
end

— 121 —

E12. Игровой адаптерF

Игровой адаптер — это аналого-цифровой преобразователь,
который может использоваться для подключения к ПЭВМ аналоговых
устройств (например, джойстика или измерительных приборов). Он
принимает до четырех цифровых входов типа «включено/выключено»
(например, для нажатия кнопок) и до четырех аналоговых входов
(таких, как координаты джойстика или показания электронного
термометра). Игровой адаптер подключен в IBM PC к порту ввода
201h. Байт, введенный из этого порта, имеет следующий формат:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іB2 B1 A2 A1іBy Bx Ay Axі Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДД> 0-3: координаты (аналоговые входы)
АДДДДДДДДДДДДДДДДДД> 4-7: триггеры (цифровые входы)

Для чтения триггеров используются команды:

mov dx,201h
out dx,al ;инициировать обмен, AL -любой байт
in al,dx ;читать порт, биты 4-7 — 0=кнопка нажата
; 1=отпущена

Аналоговые входы считываются путем отслеживания времени,в
течениe которого соответствующий бит установлен в единицу, после
команды OUT 201h,XXX. Пример чтения координаты X устройства А:

mov dx,201h
out dx,al ;инициировать обмен, AL-любой байт
mov cx,-1 ;счетчик для цикла
Again:
in al,dx
inc cx ;увеличить счетчик
test al,1 ;бит AX сброшен?
jne Again ;нет, ждем

Результат в СX указывает координаты Х. Этот способ зависит
от тактовой частоты ЦП, поэтому аккуратней было бы использовать
не счетчик цикла, а системный таймер.

— 122 —

E13. CMOSF

E13.1. Доступ к CMOSF

В состав IBM PC AT входят часы реального времени (RTC) и 64
байта неразрушающейся оперативной памяти (CMOS), питающиеся от
автономного источника питания. При включении ПЭВМ содержимое
CMOS анализируется BIOS, который извлекает из нее конфигурацию
системы и текущие дату и время.

Для доступа к данным CMOS используются порты 70h и 71h.
Чтение байта CMOS производится следующим образом:

mov al,XXh
out 70h,al ;выбрать адрес CMOS XX
jmp $+2 ;небольшая задержка
in al,71h ;ввод байта из CMOS

Запись байта в CMOS производится аналогино:

mov al,XXh
out 70h,al
jmp $+2
in al,71h

Адреса CMOS с 10h по 20h защищены контрольной суммой,
хранящейся по адресу 2Eh. Поэтому изменения содержимого этих
адресов необходимо сопровождать пересчетом и изменением
контрольной суммы.

Порт 70h применяется не только для задания адреса CMOS, но
и для разрешения или запрещения NMI (немаскируемого прерывания).
Если бит 7 равен 0, то NMI разрешается, если 1 — запрещается,
например:

mov al,2Dh ;2Dh -резервный адрес CMOS
out 70h,al ;разрешить NMI
mov al,0ADh
out 70h,al ;запретить NMI

— 123 —

E13.2. Содержимое CMOSF

Краткая схема содержимого CMOS такова:

Адрес Содержимое
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
00h-0Dh Данные часов реального времени (RTC)
0Eh Байт результатов начального тестирования
0Fh Состояние перезагрузки
10h Тип НГМД
11h Резерв
12h Тип жесткого диска
13h Резерв
14h Байт оборудования
15h-16h Размер базовой памяти
17h-18h Размер дополнительной памяти
19h-1Ah Типы жестких дисков
1Bh-2Dh Резерв
2Eh-2Fh Контрольная сумма CMOS
30h-31h Размер дополнительной памяти
32h Текущее столетие
33h Разная информация
34h-3Fh Резерв
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Приведем полное описание всех полей CMOS.

Адрес Описание Примечание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0 Текущее время RTC, секунды Все данные RTC
1 Время побудки, секунды хранятся в двоично-
2 Текущее время, минуты десятичном формате
3 Время побудки, минуты (BCD)
4 Текущее время, часы
5 Время побудки, часы
6 Текущий день недели
7 Текущий день месяца
8 Текущий месяц
9 Текущий год
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Ah Регистр A состояния RTC:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і Биты:
АВДБДДБДВБДДБДДБДДЕДДБДДЩ ДДДДД
і і АДДДДДДД> 0-3:скорость отсчета (равна 0110)
і АДДДДДДДДДДДДДДДДД> 4-6: делитель (равен 010)
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: флаг обновления (0=можно читать)

— 124 —

0Bh Регистр B состояния RTC:

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

0Ch Регистр С состояния RTC: биты состояния прерываний,
только для чтения.
0Dh Регистр D состояния RTC. Бит 7=1, если CMOS получает
питание; 0=нет питания от автономного источника.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Eh Байт результатов начального тестирования:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і0 і0 і Биты:
АВДБВДБВДБВДБВДБВДБДДБДДЩ ДДДДД
і і і і і АДДДДДДДДД> 2: 1=формат текущего времени

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

И н ж е н е p н о — т е х н и ч е с к о е б ю p о

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

EЮ. С. Лукач, А. Е. СибиряковF

E
А Р Х И Т Е К Т У Р А В В О Д А — В Ы В О Д А
П Е Р С О Н А Л Ь Н Ы Х Э В М I B M P C
F

Цикл издается под pедакцией Ю. С. Лукача

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
(C) Инженеpно-техническое бюpо, 1990

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

Свеpдловск
1990

— 1 —

EСодеpжаниеF

Введение . . . . . . . . . . . . . . . . . . . . . . . . . 3
Обозначения . . . . . . . . . . . . . . . . . . . . . . . 4
1. Таблица портов ввода-вывода . . . . . . . . . . . . . . 6
2. Контроллер прямого доступа к памяти . . . . . . . . . . 7
2.1. Принципы работы контроллера ПДП . . . . . . . . . . . 8
2.2. Типы передач . . . . . . . . . . . . . . . . . . . . 10
2.3. Описание внутренних регистров ПДП . . . . . . . . . . 11
2.4. Программное управление контроллером ПДП . . . . . . . 15
2.4.1. Оpганизация и упpавление ПДП на XT-подобных ПЭВМ . 15
2.4.2. Оpганизация и упpавление ПДП на AT-подобных ПЭВМ . 18
3. Программируемый контроллер прерываний . . . . . . . . . 21
3.1. Описание основных элементов ПКП . . . . . . . . . . . 23
3.2. Режимы работы ПКП . . . . . . . . . . . . . . . . . . 25
3.3. Программирование ПКП. . . . . . . . . . . . . . . . . 26
4. Таймер и генерация звука . . . . . . . . . . . . . . . 31
4.1. Программируемый таймер 8253 . . . . . . . . . . . . . 31
4.2. Таймер на системной плате IBM PC . . . . . . . . . . 35
4.3. Генерация звука . . . . . . . . . . . . . . . . . . . 36
5. Программируемый периферийный интерфейс . . . . . . . . 39
5.1. Описание ППИ 8255 . . . . . . . . . . . . . . . . . . 39
5.2. Использование ППИ в IBM PC . . . . . . . . . . . . . 41
6. Клавиатура . . . . . . . . . . . . . . . . . . . . . . 43
6.1. Клавиатура IBM PC/XT . . . . . . . . . . . . . . . . 43
6.2. Клавиатура IBM PC AT . . . . . . . . . . . . . . . . 44
7. Дисплеи . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1. Общее описание . . . . . . . . . . . . . . . . . . . 47
7.2. Контроллеры ЭЛТ . . . . . . . . . . . . . . . . . . . 48
7.3. Атрибуты символов . . . . . . . . . . . . . . . . . . 52
7.4. Монохромный графический адаптер MGA . . . . . . . . . 54
7.5. Цветной графический адаптер CGA . . . . . . . . . . . 57
7.6. Расширенный графический адаптер EGA . . . . . . . . . 60ируемый таймер 8253 . . . . . . . . . . . . . 31

4.2. Таймер на системной плате IBM PC . . . . . . . . . . 35
4.3. Генерация звука . . . . . . . . . . . . . . . . . . . 36
5. Программируемый периферийный интерфейс . . . . . . . . 39
5.1. Описание ППИ 8255 . . . . . . . . . . . . . . . . . . 39
5.2. Использование ППИ в IBM PC . . . . . . . . . . . . . 41
6. Клавиатура . . . . . . . . . . . . . . . . . . . . . . 43
6.1. Клавиатура IBM PC/XT . . . . . . . . . . . . . . . . 43
6.2. Клавиатура IBM PC AT . . . . . . . . . . . . . . . . 44
7. Дисплеи . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1. Общее описание . . . . . . . . . . . . . . . . . . . 47
7.2. Контроллеры ЭЛТ . . . . . . . . . . . . . . . . . . . 48
7.3. Атрибуты символов . . . . . . . . . . . . . . . . . . 52
7.4. Монохромный графический адаптер MGA . . . . . . . . . 54
7.5. Цветной графический адаптер CGA . . . . . . . . . . . 57
7.6. Расширенный графический адаптер EGA . . . . . . . . . 60
7.7. Графический видеомассив VGA . . . . . . . . . . . . . 71
8. Контроллер накопителей на гибких дисках . . . . . . . . 72
8.1. Основные сведения о контроллере . . . . . . . . . . . 72
8.2. Порты контроллера накопителей на гибких дисках. . . . 73
8.3. Команды управления накопителями . . . . . . . . . . . 75
8.3.1. Пеpечень команд контpоллеpа НГМД . . . . . . . . . 75
8.3.2. Стpуктуpа байтов состояния . . . . . . . . . . . . 81
8.4. Формат дорожки. . . . . . . . . . . . . . . . . . . . 83
8.5. Отличия контроллера для АТ-подобных ПЭВМ. . . . . . . 85
9. Контроллер накопителей на жестких дисках . . . . . . . 89
9.1. Контроллер жестких дисков для ХТ-подобных ПЭВМ. . . . 90
9.1.1. Поpты ввода-вывода . . . . . . . . . . . . . . . . 90
9.1.2. Общий фоpмат команды и теpминология . . . . . . . . 93
9.1.3. Описание команд . . . . . . . . . . . . . . . . . . 95
9.1.4. Разметка диска . . . . . . . . . . . . . . . . . . 102
9.2. Контроллер жестких дисков для АТ-подобных ПЭВМ. . . . 105
9.2.1. Описание поpтов ввода-вывода . . . . . . . . . . . 105
9.2.2. Система команд . . . . . . . . . . . . . . . . . . 106
10. Печатающее устройство . . . . . . . . . . . . . . . . 108
11. Последовательный интерфейс RS-232 . . . . . . . . . . 112
11.1. Общие сведения . . . . . . . . . . . . . . . . . . . 112
11.2. Описание портов . . . . . . . . . . . . . . . . . . 113

— 2 —

11.3. Порядок инициализации 8250 . . . . . . . . . . . . . 116
12. Игровой адаптер . . . . . . . . . . . . . . . . . . . 121
13. CMOS . . . . . . . . . . . . . . . . . . . . . . . . . 122
13.1. Доступ к CMOS . . . . . . . . . . . . . . . . . . . 122
13.2. Содержимое CMOS . . . . . . . . . . . . . . . . . . 123
14. Прочие порты . . . . . . . . . . . . . . . . . . . . . 127
Приложение 1. Скан-коды клавиш . . . . . . . . . . . . . . 128
Приложение 2. Типы жестких дисков . . . . . . . . . . . . 129
Пpиложение 3. Подготовка ПЭВМ к pаботе . . . . . . . . . . 131
Глоссарий . . . . . . . . . . . . . . . . . . . . . . . . 137
Пеpечень pекомендуемых матеpиалов . . . . . . . . . . . . 139

— 3 —

EВведениеF

Данный документ содержит техническое описание устройств
ввода-вывода, входящих в состав ПЭВМ семейства IBM PC, включая
ПЭВМ IBM PC XT, AT и PS/2. Он основан на технической
документации фирм — производителей периферийной аппаратуры,
охватывающей несколько десятков руководств. В частности,
описание микросхем, размещенных на системной плате, базируется
на справочниках фирмы INTEL (Intel Handbooks).

Дополнительными источниками информации послужили
многочисленные монографии, журнальные статьи и диалоговые
справочные системы (такие, как TECH Help!, Norton Guide и др.).
Кроме того, данное описание учитывает опыт авторов по разработке
и сопровождению программ в среде MS-DOS. Этот опыт позволил,
во-первых, исправить отдельные неточности и недоговоренности в
использованных материалах, и, во-вторых, описать ряд недоку-
ментированных особенностей оборудования IBM PC.

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

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

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

620075, г. Свердловск,
ул. Луначарского 81,
Инженерно-техническое бюро.
тел. 56-92-54, 56-92-41.

— 4 —

EОбозначенияF

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