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

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

П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

E5.1. Описание ППИ 8255F

В состав IBM PC/XT входит программируемый периферийный
интерфейс (ППИ) 8255 (отечественный аналог КР580ИК55). ППИ
содержит три 8-разрядных порта (РА, РВ и РС) для организации
обмена между ЦП и внешними устройствами и регистр управления.
Порты сгруппированны в две группы: группа А состоит из РА и
старшей тетрады РС, группа В — из РВ и младшей тетрады РС.
Группа А может работать в трех режимах (0, 1, 2); группа В — в
двух (0 и 1). Режимы определяются содержимым регистра
управления, имеющим следуюший формат:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДВДДї
і1 і і і і і Биты: Маска:
АДДБДДЕДДБДДЕДДБВДБДЕДДЩ ДДДДД ДДДДДД
і і і АДДД> 0-1: определение группы В a & 3
і і і (зависит от режима)
і і АДДДДДДД> 2: режим группы В (0 или 1) a & 4
і АДДДДДДДДДДД> 3-4: определение группы А a & 18h
і (зависит от режима)
АДДДДДДДДДДДДДДДДД> 5-6: режим группы А: a & 60h
00=режим 0
01=режим 1
1X=режим 2

-Режим 0.- В этом режиме группа разделяется на два набора
(порт и тетрада РС). Каждый набор может использоваться только
для ввода. Биты определения группы в регистре управления
определяют, какие наборы предназначены для ввода , а какие — для
вывода (бит, равный нулю, задает набор для вывода, единица — для
ввода):

ЪДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і Бит і Набор і
ГДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і 4 і РА і
і 3 і Старшая тетрада РС і
і 1 і РВ і
і 0 і Младшая тетрада РС і
АДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ

-Режим 1.- Порты РА и РВ используются для передачи данных, РС
— для управляющих сигналов. Дальнейшее описание сделано на
примере группы А. Бит 4 регистра управления задает использование
порта РА (1 = порт ввода, 0 = порт вывода).

При вводе биты порта РС имеют следующее значение:

— 40 —

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4 (STBA) 0 = «стробировать» шину данных в порт РА
5 (IBFA) 1 = РА содержит данные, еще не выбранные процессором
6-7 если бит 3 регистра управления равен 0, то это
линии управления периферийным устройством; если он
равен 1, то это линии ввода состояния устройства.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

При выводе:

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4-5 то же, что 6,7 при вводе
6 (OBFA) 1 = РА содержит данные, еще не переданные
периферийному устройству
7 (ASKA) 0 = данные из РА приняты устройством
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

С группой А ассоциируется бит 3 порта РС, обозначаемый
INTRA. Этот сигнал применяется как линия запроса прерывания
системной шины. При вводе в порт РА на этом выходе формируется
1, когда новые данные помещаются в РА, и 0, когда процессор
считывает данные. При выводе INTRA = 1, когда содержимое РА
принято устройством, и 0, когда ЦП загружает новые данные.
Разрешением прерываний управляют бит 4 РС в режиме ввода и бит 6
в режиме вывода (1 = разрешить прерывание).

Для группы В ввод или вывод задается битом 1 регистра
управления. При вводе биты 2 и 1 порта РС именуются STBB и IBFB
(их назначение аналогично битам STBA и IBFA). При выводе биты 2
и 1 именуются OBFB и ASKB (см. выше). Бит 0 становится INTRB,
разрешениями прерываний управляет бит 2.

-Режим 2.- Этот режим допустим только для группы А. В нем
порт А становится двунаправленным, а старшая тетрада РС
определяется так:

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4 (STBA) 0 = «стробировать» шину данных РА
5 (IBFA) 1 = порт РА загружаются данные с шины,

0 = процессор читает данные
6 (ACKA) 1 = устройство готово читать данные с шины
7 (OBFA) 1 = процессор загружает в порт РА данные,
0 = данные приняты устройством
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 41 —

E5.2.Использование ППИ в IBM PCF

ППИ в IBM PC/XT занимает порты 60h — 63h. BIOS заносит в
регистр управления (порт 63h) 99h, т. е. программирует группы А
и В в режим 0, причем РА и РС является портами ввода, а РС —
портом вывода:

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
60h чтение Ввод из порта РА

61h запись Ввод в порт РВ
чтение Чтение последнего вывода в порт РВ

62h чтение Вывод из порта РС

63h чтение/ Регистр управления ППИ
запись
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Содержимое порта РА: если бит 7 в РВ равен 0, то чтение из
этого порта означает ввод скан-кода последней нажатой клавиши
(см. гл. 6); если же бит 7 в РВ установлен, то РА содержит
положение DIP-переключателей колодки SW1 системной платы:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і Биты: Маска:
АДДЕДДБДДЕДДБДДЕДДБВДБВДЩ ДДДДД ДДДДДД
і і і і АД>0: 1=есть НГМД а & 1
і і і АДДДД>1: 1=есть сопроцессор 8087 а & 2
і і АДДДДДДДД>2-3:размер ОЗУ системной платы: а & 0Еh
і і 00=16K, 04h=32K, 0eh=64K и более
і АДДДДДДДДДДДДДД>4-5:тип дисплея: а & 30h
і 00= EGA/VGA
і 10h=CGA, 40 столбцов
і 20h=CGA, 80 столбцов
і 30h=монохромный
АДДДДДДДДДДДДДДДДДДДД>6-7:количество НГМД-1 a & C0h
00=1, 40h=2, 80h=3, C0h=4

— 42 —

Содержимое порта РВ:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і і і АД> 0: вход GATE 2-го канала таймера:
і і і і і і і а OR 3 = вкл. звук
і і і і і і і а AND 0FCh = выкл. звук
і і і і і і АДДДД> 1: данные генератора звука
і і і і і АДДДДДДД> 2: определяет содержимое РС
і і і і АДДДДДДДДДД> 3: 0=включить мотор кассетного
і і і і магнитофона
і і і АДДДДДДДДДДДДД> 4: 0=разрешить проверку паритета ОЗУ
і і АДДДДДДДДДДДДДДДД> 5: 0=разрешить сигналы об ошибках
і і в платах расширения
і АДДДДДДДДДДДДДДДДДДД> 6: 0=запретить часы клавиатуры
АДДДДДДДДДДДДДДДДДДДДДД> 7: задает содержимое РА
(при вводе 1=подтверждение
от клавиатуры)

Содержимое порта РС зависит от бита 7 порта РВ. Если он
установлен, то биты 0-3 содержат младшую тетраду колодки
DIP-переключателей SW2, если сброшен, то старшую:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і Биты:
АВДБВДБВДБВДБДДБДДЕДДБДДЩ ДДДДД
і і і і АДДДД> 0-3: DIP-ключи SW2 (см. ниже)
і і і АДДДДДДДДДДДД> 4: ввод данных с касетного магнитофона
і і АДДДДДДДДДДДДДДД> 5: выход OUT 2-го канала таймера
і АДДДДДДДДДДДДДДДДДД> 6: 1=ошибка в платах расширения
АДДДДДДДДДДДДДДДДДДДДД> 7: 1=ошибка паритета ОЗУ

Колодка SW2 содержит следующие ключи:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДБДДБДДБДДБДДБДДБДДЩ ДДДДД
і АДДДДД> 0-3: общий размер ОЗУ
АДДДДДДДДДДДДДДДДД> 4-7: всегда равны нулю

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

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

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

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

— 43 —

E.6. КлавиатураF

E6.1. Клавиатура IBM PC/XTF

Связь с клавиатурой осуществляется через порты ППИ 60h и
61h (см. 5.2). При нажатии клавиши происходит аппаратное
прерывание IRQ1, связанное с вектором Int 9. Если Вы хотите
обрабатывать это прерывание сами, то программа обработки
прерывания должна иметь следующий вид:

Int_09h:
push ax
push di
push es
in al,60h ;скан. код клавиши из РА
les di,buffer ;адрес буфера
stosb ;сохранить код в буфере
pop es
pop di
in al,61h ;ввод порта РВ
mov ah,al
or al,80h ;установить бит «подтверждения ввода»
out 61h,al
xchg ah,al ;вывести старое значение РВ
out 61h,al
mov al,20h ;послать сигнал EOI
out 20h,al ;контроллеру прерываний
pop ax
iret

Перечень скан-кодов всех клавиш приведен в приложении 1. Вы
можете запретить прерывания от клавиатуры либо маскировкой бита
1 в регистре IMR контроллера прерываний, либо установкой бита 6
порта РВ ППИ:

in al,21h ;чтение IMR
or al,2 ;установка бита 1
out 21h,al ;запись IMR
или
in al,61h ;чтение РВ
or al,40h ;установка бита 6
out 61h,al ;запись РВ

Для разрешения работы клавиатуры необходимо выполнить
обратные действия.

— 44 —

E6.2. Клавиатура IBM PC ATF

Взаимодействие с клавиатурой в PC AT базируется на
микропроцессоре Intel 8042; благодаря этому программист имеет
гораздо большие возможности по управлению клавиатурой, нежели в
PC/XT.

Управление клавиатурой производится обращением к порту
ввода-вывода 64h. Для совместимости со старыми ПЭВМ допустимо
использование порта 60h. Если приведенные ниже примеры не
работают на Вашей ПЭВМ, то используйте порт 60h.

Порт 64h предназначен для вывода команд и данных и для
чтения состояния клавиатуры. Обшая схема посылки команд клавиа-
турe такова:

cli ;запрет прерываний
call wait_kbd ;ожидание готовности клавиатуры
mov al,cmd_code ;код команды
out 64h,al ;вывод в порт
sti ;разрешение прерываний

Для команд, сопровождающихся байтом данных, эта схема
принимает вид:

cli
call wait_kbd
mov al,cmd_code ;код команды
out 64h,al
call wait_kbd
mov al,data_value ;байт данных
out 64h,al
sti

Проверка ожидания готовности клавиатуры может иметь вид:

wait_kbd:
mov cx,2500h ;задержка порядка 10 мсек
test_kbd:
in al,64h ;читаем состояние клавиатуры
test al,2 ;проверка бита готовности
loopnz test_kbd
ret

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

Код команды Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0FFh Сброс клавиатуры и запуск внутреннего теста.

0FEh Повторить последнюю передачу.

0FDh Вызов прерывания IRQ1.

— 45 —

0F6h Привести клавиатуру в исходное состояние и
разрешить сканирование.

0f5h Привести клавиатуру в исходное состояние и
запретить сканирование.

0F4h Сбросить буфер клавиатуры и начать сканирование.

0F3h Задать задержку и скорость ввода символов.
Первоначально клавиатура начинает повторять
нажатую клавишу через 0,5 сек со скоростью
10 повторов в секунду. Вы можете изменить эти
параметры, послав следующий байт данных:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і і і Биты:
АДДБДДЕДДБДДБДДБВДБДДБДДЩ ДДДДД
і АДДДДДДДД> 0-4:количеств повторов в секунду
АДДДДДДДДДДДДДДДДДД> 5-6:начальная задержка в мсек:
00=250, 01=500, 10=750, 11=1000

Количество повторов задается следующей таблицей:

ЪДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДї
іКонст.іСкоростьіКонст.іСкоростьіКонст.іСкоростьі
ГДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДґ
і 00h і 30.0 і 0Bh і 10.9 і 16h і 4.3 і
і 01h і 26.7 і 0Ch і 10.0 і 17h і 4.0 і
і 02h і 24.0 і 0Dh і 9.2 і 18h і 3.7 і
і 03h і 21.8 і 0Eh і 8.6 і 19h і 3.3 і
і 04h і 20.0 і 0Fh і 8.0 і 1Ah і 3.0 і
і 05h і 18.5 і 10h і 7.5 і 1Bh і 2.7 і
і 06h і 17.1 і 11h і 6.7 і 1Ch і 2.5 і
і 07h і 16.0 і 12h і 6.0 і 1Dh і 2.3 і
і 08h і 15.0 і 13h і 5.5 і 1Eh і 2.1 і
і 09h і 13.3 і 14h і 5.0 і 1Fh і 2.0 і
і 0Ah і 12.0 і 15h і 4.6 і і і
АДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДЩ

0EEh Эхо (для диагностики). Просто возвращает 0ЕЕh.
0EDh Управление светодиодами клавиатуры. Для включения
или выключения светодиодов пошлите такой байт
данных:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
і і АДД> 0: 1 = включить ScrollLock
і АДДДДД> 1: 1 = включить NumLock
АДДДДДДДД> 2: 1 = включить CapsLock

0DFh Разрешить 20-битовую адресацию.
0DDh Запретить 20-битовую адресацию.

— 46 —

0D1h Запись в порт вывода 8042.
0D0h Чтение порта вывода 8042.
0C0h Чтение порта ввода 8042.
0AEh Разрешение клавиатуры.
0ADh Запрещение клавиатуры.
0ACh Чтение ОЗУ контроллера.
0ABh Тест синхронизации и данных.
0AAh Внутренний тест клавиатуры.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 47 —

E7. ДисплеиF

E7.1. Общее описаниеF

Программирование дисплея ПЭВМ IBM PC определяется типом
дисплейного адаптера и типом видеомонитора, подключенного к
этому адаптеру. В этой главе описаны четыре наиболее
распространенных видеоадаптера IBM PC, а именно:

— монохромный графический адаптер MGA;
— цветной графический адаптер CGA;

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

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