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

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

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

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

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

— 86 —

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

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

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

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

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

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

— 87 —

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

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

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

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

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

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

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

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

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

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

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

— 88 —

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

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

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

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

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

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

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

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

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

— 89 —

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

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

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

— 90 —

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

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

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

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

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

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

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

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

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

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

Если ведомый контроллер работает на уровне 4, то его ICW3 будет
таким:

— 28 —

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 і 0 і 0 і 1 і 0 і 0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Последнее слово инициализации (ICW4) имеет следующий
формат:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 іSFNMі BUFі M/SіAEOIі mPMі
АДДДДБДДДДБДДДДБДДДДБДВДДБДВДДБДВДДБДВДДБДВДДЩ
і і і і і
і і і і АДДД> 1=8088/8086
і і і і 0=8080/8085
і і і АДДДДДДДД> 1=AEOI
і і і 0=EOI
і і АДДДДДДДДДДДДД> 1=ведущий
і і 0=ведомый
і і (только при BUF=1)
і АДДДДДДДДДДДДДДДДДД> 1=режим
і буферизации
АДДДДДДДДДДДДДДДДДДДДДДД> 1=специальный
вложенный режим

Бит 0 (mPM) определяет, с каким микропроцессором работает
ПКП (0 — 8080/8085, 1 — 8086/8088).

Бит 1 (AEOI), равный 1, задает режим автоматического
завершения обработки прерывания, описанный выше. Если этот бит
равен 0, действует обычное соглашение: процедура обработки
аппаратного прерывания должна сама сбрасывать свой бит в ISR.

Бит 2 (M/S) игнорируется, если бит 3 (BUF) = 0. При наличии
одного контроллера и BUF = 1 устанавливается в 1. При наличии
каскада должен быть равен 1 только для ведущего контроллера.

Бит 4 (SFNM) устанавливает специальный вложенный режим,
применяемый при каскадировании для определения приоритетов
запросов от разных контроллеров (Special Fully Nested Mode).

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

В процессе работы с ПКП Вы можете без переинициализации:

— маскировать и размаскировать аппаратные прерывания;
— изменять приоритеты уровней;
— издавать команду завершения обработки аппаратного пре-
рывания;
— устанавливать/сбрасывать режим специальной маски;
— переводить контроллер в режим опроса и считывать
состояние регистров ISR и IRR; для этого Вам потребуется вывести
в порты ПКП одно из трех слов рабочих приказов OCW1 — OCW3.

— 29 —

Формат первого слова рабочих приказов OCW1:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і M7 і M6 і M5 і M4 і M3 і M2 і M1 і M0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Единичное значение одного из битов М0 — М7 означает, что
прерывания соответствующего уровня (IR0 — IR7) маскируются и не
будут обрабатываться контроллером.

Второе слово рабочих приказов (OCW2) предназначено для
вывода команды завершения обработки аппаратного прерывания
(EOI), циклического сдвига и явного изменения приоритетов
уровней. Назначение битов OCW2 следующее:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 0 і R і SL і EOIі 0 і 0 і L2 і L1 і L0 і
АДДДДБДВДДБДВДДБДВДДБДДДДБДДДДБДВДДБДВДДБДВДДЩ
і і і і і АДД> Эти 3 бита опреде-
і і і і АДДДДДДД> ляют номер уровня
і і і АДДДДДДДДДДДД> прервания, если он
і і і требуется в команде.
і і і

і і і
і і АДДДДДДДДДДДДДДДДДДДДДДДДДДД> 1-команда завер-
v v шения обработки
ЪДДДДВДДДДї аппаратного
і 0 і 0 і Используется вместе с EOI=1 прерывания
ГДДДДЕДДДДґ
і 0 і 1 і Специфицированный EOI (сбрасывает бит, определя-
ГДДДДЕДДДДґ емый полями L0 — L2 в ISR)
і 1 і 0 і Циклический сдвиг приоритетов влево на одну
ГДДДДЕДДДДґ позицию
і 1 і 1 і Назначение низшего приоритета уровню, определяе-
АДДДДБДДДДЩ мому полями L0 — L2

Как уже говорилось, процедура обработки аппаратного
прерывания должна перед своим завершением очистить свой бит в
ISR выводом команды завершения обработки прерывания (End Of
Interrupt, EOI). Существует два варианта команды EOI: обычный и
специфицированный EOI. Обычный EOI очищает бит в ISR, соот-
ветствующий прерыванию с максимальным приоритетом. Специфи-
цированный EOI (R=0, SL=1, EOI=1, L0 — L2 равно номеру уровня
прерывания) очищает в ISR бит, соответствующий прерыванию с
номером, указанным в L0 — L2 независимо от его приоритета.
Команды с битом R=1 позволяют изменить приоритеты уровней.
Циклический сдвиг приоритетов сдвигает приоритеты влево на
единицу, при этом, если после обычного распределения
приоритетов, издать команду циклического сдвига, уровень 0
получит низший приоритет, уровень 1 — наивысший, уровень 2 —
следующий за ним и т.д. Команда явного назначения низшего
приоритета одному из уровней изменяет приоритеты остальных
уровней циклически. Таким образом, если Вы зададите низший

— 30 —

приоритет уровню 5, то уровень 6 получит наивысший.

Третье слово рабочих приказов OCW3 позволяет установить и
отменить режим специальной маски, перевести контроллер в режим
опроса и прочитать содержимое IRR и ISR. Назначение битов OCW3
приведено на рисунке

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 0 і 0 іESMMі SMMі 0 і 1 і P і RR і RISі
АДДДДБДДДДБДВДДБДВДДБДДДДБДДДДБДВДДБДДВДБДВДДЩ
ЪДДДДДДДДДЩ і і і і
і ЪДДДДДДДДДДЩ АДВДДДЕДДДЕДД> 1-режим опроса
v v v v v
ЪДДДВДДДї ЪДДДВДДДВДДДї
і 1 і 0 і-Отменить режим і 0 і 1 і 0 і Чтение IRR
ГДДДЕДДДґ специальной маски ГДДДЕДДДЕДДДґ
і 1 і 1 і-Установить режим і 0 і 1 і 1 і Чтение ISR
АДДДБДДДЩ специальной маски АДДДБДДДБДДДЩ

Единичное значение бита Р (бит опроса, Polling Bit)
переводит контроллер в режим опроса. Если после этого считать
данные из порта с четным адресом, в регистр AL загрузится байт
следующего содержания:

7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і I і 0 і 0 і 0 і 0 і L2 і L1 і L0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Если I = 1, значит имеются запросы на прерывания и тогда L0
— L2 — это номер уровня с наивысшим приоритетом, по которому
имеется запрос на прерывание.

Если P=0, Вы можете считать информацию из ISR или IRR. Для
этого необходимо издать команду чтения ISR или IRR (см. рисунок
выше) и затем считать значение из порта с нечетным адресом.

Единичное значение бита ESMM позволяет в зависимости от
значения бита SMM установить или отменить режим специальной
маски.

— 31 —

E4. Таймер и генерация звукаF

E4.1. Программируемый таймер 8253F

Для задания временных интервалов и формирования сигналов с
различными временными параметрами в IBM PC/XT применяется
программируемый таймер 8253 (отечественный аналог КР580ВН53), в
AT — 8254. С точки зрения программиста они идентичны. В состав
таймера входят: буфер шины данных, схема управления
вводом-выводом и три независимых канала, каждый из которых
содержит регистр режима, схему управления каналом, буфер и
16-разрядный счетчик.

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

-Режим 0- (прерывание терминального счета). После записи
управляющего слова в регистр режима канала на выходе ОUT
устанавливается напряжение низкого уровня; загрузка счетчика не

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

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

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

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

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

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

— 91 —

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

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

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

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

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

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

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

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

— 92 —

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

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

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

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

— 93 —

Порт 323h.

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

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

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

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

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

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

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

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

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

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

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

— 94 —

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

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

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

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

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

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

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

-Режим 1- (ждущий мультивибратор). На выходе OUT формируется
отрицательный импульс длительностью t=n*T, где n — число,
загруженное в счетчик, T — период тактовых импульсов. Низкий
уровень на выходе OUT устанавливается со следующего такта после
подачи на вход GATE сигнала высокого уровня.

Загрузка в счетчик нового числа не влияет на длительность
текущего импульса, а учитывается при следующем запуске.
Перезапуск счетчика производится нарастающим фронтом входа GATE
(без перезагрузки счетчика). Минимальное допустимое n=1.

-Режим 2- (генератор частоты). Каждый раз после достижения
счетчиком нуля на выходе OUT появляется отрицательный импульс с
длительностью один такт. Перезагрузка счетчика сказывается
только после перезапуска счетчика. При исчезновении сигнала
высокого уровня на входе GATE прекращается счет и на выход OUT
подается напряжение высокого уровня. Перезапуск счетчика
происходит при наличии на входе GATE сигнала высокого уровня.

-Режим 3- (генератор меандра). Аналогичен режиму 2, но
положительный уровень выходного сигнала занимает первый

— 32 —

полупериод, а отрицательный — второй полупериод. Точнее, если n
(начальное значение счетчика) четно, то длительность
положительного и отрицательного полупериодов равна n*T/2; если
же n нечетно — то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй
уровень сигнала на входе GATE запрещает счет, на выходе OUT
устанавливается сигнал высокого уровня. Высокий уровень GATE
разрешает счет, а нарастание его запускает счетчик начального
состояния. Отметим, что n=3 в этом режиме недопустимо.

-Режим 4- (счетчик событий). По окончании отсчета числа,
загруженного в счетчик, на выходе OUT формируется отрицательный
импульс длительностью один такт. Запись в счетчик во время счета
младшего байта не влияет на текущий счет, а запись старшего
байта перезапускает счетчик. Низкий уровень входа GATE запрещает
счет, высокий — разрешает. Минимальное допустимое значение
счетчика равно 1.

-Режим 5- (счетчик событий с автозагрузкой). Отличие от
режима 4 состоит в том, что каждое нарастание сигнала на входе
GATE перезапускает счетчик. Перезагрузка счетчика не влияет на
текущий цикл, однако следующий цикл определяется вновь
занесенным числом.

Временные диаграммы режимов таймера приведены на следующем
рисунке:

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=5 ЪДДДДДДДДДДДДДДДДїn=4 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДД
GATE ГДДДДДДДЩ АДДДЩ
ГДДДДДї ЪДДДДДДДДДї ЪДД
OUT і АДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 5 4 3 2 1 0 4 3 2 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 0

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДї ЪДї ЪДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДДЩ АДДДДЩ
ГДДДДДДДДДДДї ЪДДДДДДДї ЪДД
OUT і АДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 4 3 2 1 0 5 4 3 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 1

— 33 —

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДїn=3 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДД
GATE ГДДДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДї ЪДДДДї ЪДДДДДї ЪДДДДДДДДДДї ЪДД
OUT і АДЩ АДЩ АДЩ АДЩ
і
n і 4 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 2

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДД
GATE ГДДДДДЩ АДДДЩ
ГДДДДДДДДДДї ЪДДДДДї ЪДДДДДї ЪДДДДДДДД
OUT і АДДДДЩ АДДДДЩ АДДДДЩ
і
n і 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 5 5 4
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 3

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДД
GATE і АДДДЩ
ГДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 5 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 4

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ
і ЪДДДДДДДДї ЪДї ЪДДДДДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДЩ АДДДЩ
ГДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДї ЪДДДДДД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 4 3 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 5

— 34 —

В IBM PC таймер имеет базовый адрес 40h и следующие
программируемые регистры:

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
40h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0

41h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1

42h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2

43h запись Запись управляющего слова
в регистр режима канала
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Управляющее слово имеет следующий формат:

7 6 5 4 3 2 1 0
ЪДВДДВДДВДДВДДВДДВДДВДДї
і і і і і Биты Маска
АДЕДДБДДЕДДБДДБВДБДДБДВЩ ДДДД ДДДДДДД
і і і А> 0: 0 = двоичный код, а & 1
і і і 1 = двоично-десятичный код
і і АДДДДДДД> 1-3: режим работы канала: а & 0Eh
і і 000 — режим 0
і і 001 — режим 1
і і X10 — режим 2
і і X11 — режим 3
і і 100 — режим 4
і і 101 — режим 5
і АДДДДДДДДДДДДДД> 4-5: вид загрузки счетчика: а & 30h
і 00 — «защелкивание»
і (биты 0-3 безразличны)
і 01 — только младший байт
і 10 — только старший байт
і 00 — младший байт, затем старший
АДДДДДДДДДДДДДДДДДДДД> 6-7: номер канала: a & C0h
00 — канал 0
01 — канал 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

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

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

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

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

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

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

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

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

— 95 —

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

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

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

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

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

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

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

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

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

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

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

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

— 96 —

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

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

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

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

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

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

— 97 —

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

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

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

— 98 —

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

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

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

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

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

10 — канал 2
11 — запрещенная комбинация

Существует два способа чтения текущего значения счетчика
канала.

1. Чтение с остановом счетчика. Для обеспечения стабильных
показаний необходимо приостановить работу канала либо подачей
сигнала низкого уровня на вход GATE (кроме режима 1), либо
блокированием тактовых импульсов.

2. Чтение «на лету». Для считывания счетчика без остановки
процесса счета используется посылка в порт 43h управляющего

— 35 —

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

E4.2. Таймер на системной плате IBM PCF

В IBM PC каналы таймера имеют следующее назначение.

Канал Назначение Режим
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0 системные часы (IRQ0) 3, счетчик=0 (65536)
1 запрос для канала 0 ПДП
(регенерация памяти) 2, счетчик=18
2 генератор звука ДД
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Тактовая частота каждого канала равна 1,19318 МГц, т. е.
каждый такт имеет длительность 0,84 мсек. Вход GATE каналов 0 и
1 всегда имеют высокий уровень, поэтому счет на этих каналах
разрешен всегда. Вход GATE канала 2 управляется битом 0 порта PB
интерфейса 8255 (см. гл. 5), связанного с портом 61h.

При начальной загрузке BIOS инициализирует канал 0 для
работы в режиме 3 со счетчиком 0 (т. е. 65536 декрементов на
цикл счета). Поэтому частота системных часов равна
1,19 МГц/65536 = 18.2 Гц
и прерывание IRQ0, связанное с вектором Int 8, происходит 18,2
раз в секунду, т. е. каждые 55 мсек.

Вы можете перепрограммировать канал 0, но тогда

— BIOS не сможет отслеживать текущее время и дату;

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

Канал 1 работает в режиме 2 со счетчиком 18, поэтому
регенерация памяти происходит каждые 18 мсек. Перепрог-
раммировать его нельзя, т. к. это приведет к потере данных в
ОЗУ.

Программирование канала 2 описано в следующем пункте.

— 36 —

E4.3. Генерация звукаF

На вход звукогенератора поступает логическое «И» двух
сигналов: выхода OUT 2-го канала таймера и содержимого бита 1
порта РВ интерфейса 8255. Поэтому простейший способ генерации
звука состоит в программировании канала 2 таймера так, чтобы он
выдавал прямоугольный импульс заданной частоты, лежащий в
звуковом диапазоне (20 Гц — 20 КГц). Для этого следует
использовать режим таймера 3 с подходящим начальным значением
счетчика. Если затем установить биты 0 и 1 порта РВ, то импульс
начнет поступать на вход звукогенератора (бит 0 — это вход GATE
канала 2, разрешающий счет, а бит 1 — разрешение выдачи выхода
OUT на вход звукогенератора). Для выключения звука достаточно
сбросить биты 0 — 1 в РВ. Преимущество этого метода состоит в
том, что, запустив генерацию звука, ЦП может выполнять другие
действия. Значение счетчика 2-го канала вычисляется по формуле
n=1193181/f=1234DDh/f (1193181 — тактовая частота таймера в Гц,
f — требуемая частота звука).

Пример:

;
; подпрограмма генерации звука
; Вход: АX= частота звука в Гц
;
Sound proc near
push ax ;сохранить регистры
push bx
push dx
mov bx,ax ;частота
mov ax,34DDh

mov dx,12h ;(dx,ax)=1193181
cmp dx,bx ;если bx < 18Гц, то выход jnb Done ;чтобы избежать переполнения div bx ;ax=(dx,ax)/bx mov bx,ax ;счетчик таймера in al,61h ;порт РВ or al,3 ;установить биты 0-1 out 61h,al mov al,00001011b ;управляющее слово таймера: ;канал 2, режим 3, двоичное слово mov dx,43h out dx,al ;вывод в регистр режима dec dx mov al,bl out dx,al ;младший байт счетчика mov al,bh out dx,al ;старший байт счетчика Done: pop dx ;восстановить регистры pop bx pop ax ret Sound endp ; - 37 - ;подпрограмма выключения звука ; No_Sound proc near push ax in al,61h ;порт РВ and al,not 3 ;сброс битов 0-1 out 61h,al pop ax ret No_Sound endp Для генерации музыки можно использовать следующий алгоритм. Пусть octave - номер октавы (1, 2, ...); note - номер ноты в октаве (до=1, до#=2, ..., си=12). Тогда: f := 32.625; for i := 1 to oktave do f := 2*f; for i := 1 to note do f := 1.059463094*f Sound (round(f)); Второй способ генерации звука состоит в том, чтобы генерировать звуковые импульсы не выходом таймера, а установкой и сбросом бита 1 в регистре РВ. Для управления задержками можно использовать программный цикл, например: ; ; Программа генерации звука ; Вход: N=количество импульсов ; FREQ=длительность импульса ; in al,61h ;порт РВ and al,not ;сброс бита 0 mov dx,N Repeat: or al,2 out 61h,al ;установить бит 1 mov cx,FREQ Wait_On: loop Wait_On and al,not 2 ;сбросить бит 1 out 61h,al mov cx,FREQ Wait_Off: loop Wait_Off dec dx jnz Repeat Программирование этого способа основано на следующих формулах. Если Т - длительность звучания в сек, f - частота звука в Гц, а t - тактовая частота процессора ПЭВМ, то N=T*f; FREQ=t/(34*f). Константа 34 объясняется тем, что длительность каждого из циклов Wait_on и Wait_off приблизительно равна (17*cx) машинных - 38 - тактов. Неудобство этого метода состоит в том, что ЦП полностью занят генерацией звука - любое прерывание испортит временную диаграмму звукового сигнала. Однако он обеспечивает точную подстройку частоты и позволяет создавать несимметричные импульсы варьированием задержек в циклах Wait_on и Wait_off. - 39 - E5. Программируемый периферийный интерфейс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

П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