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

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

П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

П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