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

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

П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

і і STP і полнении і
і і * * * і условия і
і і ST0 і і
і і чячячpячячяо і
і вание до і X X X X X HD US1 US0 і предыдущей і
і «больше і C і команде і
і или равно»і H і і
і і R і і
і і N і і
і і EOT і і
і і GPL і і
і і STP і і
і і * * * і і
і і ST0 і і
і і ST1 і і
і і ST2 і і
і і C і і
і і H і і
і і R і і
і і N і і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і10.Сканиро-і MT MF SK 1 1 1 0 1 і аналогично і
і вание до і X X X X X HD US1 US0 і предыдущей і
і «меньше і C і команде і
і или равно»і H і і
і і R і і

— 79 —

і і N і і
і і EOT і і
і і GPL і і
і і STP і і
і і * * * і і
і і ST0 і і
і і ST1 і і
і і ST2 і і
і і C і і
і і H і і
і і R і і
і і N і і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і11. Река- і 0 0 0 0 0 1 1 1 і Перемещение і
і либровать і Х Х Х Х Х 0 US1 US0 і головки на і
і і * * * і нулевую і
і і і дорожку і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і12. Опреде-і 0 0 0 0 0 0 1 1 і Задание і
і ление і і режима і
і і ND і работы і
і і і дисковода і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і13.Поиск і 0 0 0 0 1 1 1 1 і Позициониро-і
і і Х Х Х Х Х HD US1 US0 і вание голов-і
і і NCN і ки на задан-і
і і * * * і ную дорожку і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і14.Чтение і 0 0 0 0 1 0 0 0 і Чтение байтаі
і состояния і * * * і состояния і
і прерыванияі ST0 і ST0 после і
і і PCN і прерываний, і
і і і вызванных і
і і і изменением і
і і і готовности і
і і і дисковода і
і і і и операцией і
і і і поиска і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і15.Чтение і 0 0 0 0 0 1 0 0 і Чтение байтаі
і состояния і Х Х Х Х Х HD US1 US0 і состояния і
і НГМД і * * * і ST3 і
і і ST3 і і
і і і і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і16. Несуще-і < ошибочный код команды FDC> і При ошибоч- і
і ствующая і * * * і ной команде і
і команда і ST0 і возвращаетсяі
і і і ST0=80h і
і і і і
АДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

Смысловое значение элементов команд:

МТ=1 — многодорожечная (двусторонняя операция);

— 80 —

MF=1 — МЧМ-кодирование (двойная плотность) — пропуск
синхроимпульсов у единичных битов и пропуск синхроимпульсов у
нулевых битов, стоящих после единичных;

SK=1 — пропуск адресного маркера удаленных данных;

HD — номер головки (0 или 1);

US1, US0 — номер накопителя (0 — 3);

С — номер цилиндра;

Н — номер головки;

R — номер сектора;

N — код длины сектора (0 — 128, 1 — 256, 2 — 512, 3 — 1024
байтов);

EOT — номер последнего сектора на цилиндре;

GPL — длина межзонного промежутка (обычно 2Ah при обмене и
50h при форматировании);

DTL — число считываемых/записываемых байт (действительно
при N = 0);

ST0 — ST3 — байты состояния ST0-ST3;

STP — межсекторное смещение;

SRT — время скорости шага в милисекундах (обычно 0Dh);

HUT — время разгрузки головки в единицах по 16 милисекунд
(обычно = 0Fh);

HLT — время загрузки головки в единицах по 2 милисекунды
(обычно = 1);

ND=0 — режим работы с использованием ПДП, =1 — режим работы
без использования ПДП;

NCN — номер цилиндра после поиска;

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

SC — количество секторов на цилиндре;

D — символ-заполнитель для разметки (обычно 0F6h).

— 81 —

E8.3.2. Структура байтов состоянияF

Байт состояния ST0:

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і і і і і і і Биты:
АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДДД
і і і і і і АДДДБД> 0-1: номер накопителя (0 — 3)
і і і і і АДДДДДДДДД> 2: номер головки
і і і і АДДДДДДДДДДДДД> 3: НГМД не готов при обмене
і і і АДДДДДДДДДДДДДДДДД> 4: Сигнал «ошибка» НГМД или
і і і дорожка 0 не найдена после 77
і і і шагов рекалибровки
і і АДДДДДДДДДДДДДДДДДДДДД> 5: команда поиска завершена
АДДДБДДДДДДДДДДДДДДДДДДДДДДДДД> 6: код прерывания:
00-нормальное завершение команды
01-ненормальное завершение
10-недействительная команда
11-в фазе выполнения измени-
лась готовность дисковода

Бит 2 (номер головки) после выполнения команды поиска
всегда равен 0, независимо от того, на какой головке
осуществлялся поиск.

Бит 3 будет всегда равен 1, если на дисководе с одной
головкой вы попробуете обратиться к стороне 1 (допустима только
сторона 0).

Байт состояния ST1:

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

— 82 —

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

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

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

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

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

— 121 —

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

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

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

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

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

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

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

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

— 122 —

E13. CMOSF

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

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

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

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

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

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

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

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

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

— 123 —

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

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

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

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

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

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

— 124 —

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

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

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

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

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

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

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

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

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

Байт состояния ST2:

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

Байт ST3:

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

— 83 —

E8.4. Формат дорожкиF

Индикатором начала дорожки служит индексное отверстие.
Запись на дорожку осуществляется в несколько приемов. При
форматировании дорожка перезаписывается полностью. При операциях
записи перезаписываются отдельные сектора, что влечет за собой
сбой намагниченности диска в месте обрыва записи, причем
физическая длина сектора при его перезаписи не всегда точно
совпадает с длиной ранее имевшегося на этом месте сектора,
разница в длине может составлять до 4 — 5 бит даже при
перезаписи на одном дисководе в одно время. Для синхронизации
после сбоев на дорожке имеются зазоры и синхрозоны. В общем виде
формат дорожки можно изобразить следующим образом:

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і Определяется индексным
і Индекс і отверстием
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Зазор индекса і 80 байт 4Eh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і 12 байтов 00h, 3 байта 0C2h,
і Заголовок дорожки і 1 байт 0FCh, 50 байтов 4Eh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і 1-й сектор і 574 байта
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Межсекторный промежуток і 80 байт 4Eh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ

8 или 9 секторов на дорожке

ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Последний сектор і 574 байта
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Межсекторный промежуток і 80 байт 4Eh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Зазор дорожки і байты 4Eh до индексного
і і отверстия
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Индекс і

і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 84 —

Формат сектора:

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і
і Идентификатор сектора і 22 байта
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Зазор идентификатора і 22 байта 4Eh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Блок данных і 530 байт
і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Идентификатор сектора:

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і 12 байтов 00, 3 байта 0A1h
і Маркер идентификатора і 1 байт 0FEh
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і 6 байтов: цилиндр, головка,
іИдентификатор адреса сектораі дорожка, код длины сектора
і і и 2 байта контрольной суммы
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Блок данных:

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і 12 байтов 00, 3 байта 0A1h,
і Маркер данных і 1 байт 0FXh (Х=8 — удаленные
і і данные, 0Bh — действительные
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ данные)
і і
і Поле данных і 512 байт
і і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і
і Контрольная сумма поля і 2 байта
і данных і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 85 —

E8.5. Отличия контроллера для АТ-подобных ПЭВМF

Архитектура АТ-подобных ПЭВМ отличается от ХТ тем, что
контроллер гибких дисков находится на одной плате с контроллером
жестких дисков. К дополнительным возможностям относится
возможность регулирования скорости обмена данными и возможность
подключения двух контроллеров к одному ПЭВМ (в этом случае
вместо портов 3F2h — 3F7h используются порты 372h — 377h).
Функции контроллера гибких дисков на АТ-подобных ПЭВМ
выполняются микросхемой 82072 фирмы Intel (советских аналогов
нет). Дополнительно к описанным выше портам имеется еще один
порт 3F7h, позволяющий осуществить доступ к регистру выбора
скорости обмена данными (Data Rate Select Register, DSR).

Порт 3F7h.

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

Возможные скорости обмена данными в зависимости от битов 0
— 1 DSR приведены в таблице.

ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Биты і Скорость і
ГДДДДДДДДДВДДДДДДДДДЕДДДДДДДДДДДДДВДДДДДДДДДДДДґ
і 1 і 0 і МЧМ і ЧМ і
ГДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДґ
і 1 і 1 і 1 Мбит/сек і Невозможно і
і 0 і 0 і 500 Кбит/секі250 Кбит/секі
і 0 і 1 і 300 Кбит/секі150 Кбит/секі
і 1 і 0 і 250 Кбит/секі125 Кбит/секі
АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДБДДДДДДДДДДДДЩ

В зависимости от значений битов 2, 3 и 4 DSR возможны
следующие значения времени предкомперсации:

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

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

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

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

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

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

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

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

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

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

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

Свеpдловск
1990

— 1 —

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

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

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

— 2 —

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

— 3 —

EВведениеF

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

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

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

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

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

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

— 4 —

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

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

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

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

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

і і і і і и даты верен
і і і і АДДДДДДДДДДДД> 3: 1=жесткий диск не является
і і і і загружаемым
і і і АДДДДДДДДДДДДДДД> 4: 1=размер ОЗУ неверен
і і АДДДДДДДДДДДДДДДДДД> 5: 1=оборудование не соответствует
і і конфигурации CMOS
і АДДДДДДДДДДДДДДДДДДДДД> 6: 1=неверна контрольная сумма CMOS
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=неисправен автономный источник
питания CMOS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Fh Байт состояния перезагрузки. Этот байт считываетса после
сброса ЦП, чтобы определить не был ли сброс вызван для
вывода 80286 из защенного режима. Он принимает значения:

0 = теплый рестарт (по Ctrl-Alt-Del) или неожиданный
останов
1 = останов после определения размера ОЗУ
2 = останов после тестирования памяти
3 = останов по ошибке паритета памяти
4 = рестарт по запросу начального загрузчика
5 = рестарт по сбросу контроллера прерываний и
JMP FAR PTR [0:467h]

— 125 —

6, 7, 8 = останов после теста защищенного режима
9 = рестарт по JMP FAR PTR [0:467h]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
10h Тип НГМД А и В:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДДД> 0-3: тип дисковода А
АДДДДДДДДДДДДДДДДДДД> 4-7: тип дисковода В:
0 = нет дисковода или его тип
неизвестен
1 = 360 К, 5 1/4 дюйма
2 = 1.2 M, 5 1/4 дюйма
3 = 720 К, 3 1/2 дюйма
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
12h Тип жестких дисков C и D:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДДД> 0-3: тип дисковода C
АДДДДДДДДДДДДДДДДДДД> 4-7: тип дисковода D:
0000 = диска нет
1111 = см. адреса 19h и 1Ah
прочие=тип диска
(см. приложение 2)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
14h Байт оборудования:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і іX іX і і і Биты:
АДДЕДДБДДЕДДБДДБДДБВДБВДЩ ДДДД
і і і АДД> 0: 1=есть НГМД
і і АДДДДД> 1: 1=есть сопроцессор 80287
і АДДДДДДДДДДДДДДД> 4-5: тип дисплея:
і 00 — EGA или VGA
і 01 — CGA, 40 столбцов
і 10 — CGA, 80 столбцов
і 11 — монохромный
АДДДДДДДДДДДДДДДДДДДДД> 6-7: количество НГМД — 1
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
15h-16h Размер базовой памяти (0100h=256 K, 0200h=512 K,
0280h=640 K)
17h-18h Размер дополнительной памяти, Кб (от 0 до 3C00h)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
19h Тип диска С, если его тип в 12h равен 0Fh
1Ah Тип диска D, если его тип в 12h равен 0Fh
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
2Eh-2Fh Контрольная сумма адресов CMOS с 10h по 20h (обычная
16-битовая сумма этих байтов; 2Eh содержит старший
байт КС)

— 126 —

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
30h-31h Размер дополнительной памяти, Кб (0-3C00h), опреде-
ленный при начальном тестировании
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
32h Двоично-десятичный номер столетия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
33h Разная информация. Бит 7: 1=установлена опция 128К ОЗУ
Бит 6 используется программой SETUP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 127 —

E14. Прочие портыF

В этом разделе приведено описание портов, не относящихся к
конретным устройствам.

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
80h запись Используется в AT на этапе начального
тестирования для накопления информации об
ошибках.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
90h запись Управляющий порт центрального арбитра PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
91h чтение Обратная связь с выбранной платой PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
92h запись Управляющий порт A PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
94h запись Установка параметров системной платы PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
96h, 97h запись Выбор коннектора канаклов в PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0A0h запись Разрешение или запрещение NMI в PC/XT:
out 0A0h,80h — разрешает NMI;
out 0A0h,0 — запрещает NMI.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0F0h запись Вывод любого байта сбрасывает защелку
сопроцессора 80287, которая включается по
незамаскированной ошибке сопроцессора.

0F1h запись Вывод любого байта сбрасывает сопроцессор
80287 из защищенного режима в реальный.

0F8h-0FCh ДДД Эти порты используются процессором 80286
для обмена данными с сопроцессором.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
210h запись Управляющий порт блока расширения XT.
213h запись Разрешение блока расширения XT.
215h запись Регистр шины данных блока расширения XT.
215h запись Регистр адреса блока расширения XT
(старший байт).
216h запись Регистр адреса блока расширения XT
(младший байт).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 128 —

EПриложение 1. Скан-коды клавишF

Всякий раз, когда клавиатура вызывает прерывание по
нажатию или отпусканию клавиши, она передает обработчику этого
прерывания «скан-код» данной клавиши, т. е. ее порядковый номер
на клавиатуре. При этом скан-код клавиши является семибитовым,
а старший бит байта, содержащего скан-код, сообщает причину
прерывания: 0 — клавиша нажата, 1 — клавиша отпущена.

ЪДДДДДДДДВДДДДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДї
іСкан-коді Клавиша іСкан-коді Клавиша і
ГДДДДВДДДЕДДДДДДДДДДДДДЕДДДДВДДДЕДДДДДДДДДДДДДґ
і01h і 1 і Esc і2Bh і 43і \ | і
і02h і 2 і 1 ! і2Ch і 44і Z і
і03h і 3 і 2 @ і2Dh і 45і X і
і04h і 4 і 3 # і2Eh і 46і C і
і05h і 5 і 4 $ і2Fh і 47і V і
і06h і 6 і 5 % і30h і 48і B і
і07h і 7 і 6 ^ і31h і 49і N і
і08h і 8 і 7 & і32h і 50і M і
і09h і 9 і 8 * і33h і 51і , < і і0Ah і 10і 9 ( і34h і 52і . > і
і0Bh і 11і 0 ) і35h і 53і / ? і
і0Ch і 12і — _ і36h і 54іправый Shift і
і0Dh і 13і = + і37h і 55і PrtSc * і
і0Eh і 14і BackSpace і38h і 56і Alt і
і0Fh і 15і Tab і39h і 57і пробел і
і10h і 16і Q і3Ah і 58і CapsLock і
і11h і 17і W і3Bh і 59і F1 і
і12h і 18і E і3Ch і 60і F2 і
і13h і 19і R і3Dh і 61і F3 і
і14h і 20і T і3Eh і 62і F4 і
і15h і 21і Y і3Fh і 63і F5 і
і16h і 22і U і40h і 64і F6 і
і17h і 23і I і41h і 65і F7 і
і18h і 24і O і42h і 66і F8 і
і19h і 25і P і43h і 67і F9 і
і1Ah і 26і [ { і44h і 68і F10 і
і1Bh і 27і ] } і45h і 69і NumLock і
і1Ch і 28і Enter і46h і 70і ScrollLock і
і1Dh і 29і Ctrl і47h і 71і Home [7] і
і1Eh і 30і A і48h і 72істр. вверх[8]і
і1Fh і 31і S і49h і 73і PgUp [9] і
і20h і 32і D і4Ah і 74і — і
і21h і 33і F і4Bh і 75і [6] і
і24h і 36і J і4Eh і 78і + і
і25h і 37і K і4Fh і 79і End [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

— 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

— 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

PC, XT, AT, PCjr, PC Convertible и PS/2 — это имена
компьютеров семейства IBM PC. Все они более или менее совместимы
между собой на уровне прикладных пакетов, но имеют определенные
аппаратные различия:

PC: центральный процессор 8088, тактовая частота 4.77 МГц,
5 позиций для адаптерных плат.

PCjr: ЦП 8088, нет места для плат. Выпущена мизерным
тиражом и не совместима с остальными IBM PC. В нашей серии не
описывается.

XT: ЦП 8088, жесткий диск, 8 позиций для адаптерных плат. В
остальном аналогична PC.

Turbo PC: ПЭВМ других фирм (не IBM), совместимые с PC и XT,
но имеюший ЦП 8086 или V30 фирмы NEC, тактовая частота которых 6
или 8 МГц. Обычно имеет 8 позиций для плат.

XT-286: ЦП 80286, 8 позиций для плат, частота 6 Мгц без
холостых циклов (скорость как у AT с 8 МГц). Платы от AT к ней
не подходят, от PC подходят, но не позволяют использовать
преимущества 16-разрядной системной шины.

AT: ЦП 80286, 8 позиций для плат, тактовая частота 6 или 8
МГц.

PC Convertible: Портативный вариант AT. Отличия: плазменный
(LCD) дисплей, 3.5-дюймовые дисководы, нет позиций для плат
расширения.

PS/2: Новое семейство ПЭВМ фирмы IBM. Модели 25 и 30 — это
улучшенные версии старых PC, совместимые с ними по адаптерным
платам. Модели 50 и 60 — ЦП 80286, 32-разрядная шина
MicroChannel, совместимости со старыми платами нет. Модель 80
имеет ЦП 80386. Все модели оснащены дисководами размером 3.5
дюйма.

AT-386: ПЭВМ третьих фирм, совместимая с AT, но имеющая ЦП
80386.

Если рассматриваемые устройства зависят от типа ПЭВМ, то
используются следующие пометки:

PC/XT относится к ПЭВМ IBM PC и XT, включая
Portable PC
AT относится к ПЭВМ IBM PC AT
PS/2 относится к семейству PS/2

Отсутствие таких указаний означает, что данный материал
применим ко всем ПЭВМ фирмы IBM.

Десятичные числа записываются обычным образом,

— 5 —

шестнадцатиричные отличаются добавлением буквы «h» в конце.
Например, 256 и 100h означают десятичное число 256.

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

В некоторых случаях алгоритмы сопровождаются формулами.
Операции в формулах обозначаются, как принято в языке Си, а
именно:

арифметические: +, -, *, /, % (взятие остатка)
битовые: & (и), | (или), ~ (не)
сдвиги: >.

— 6 —

E1.Таблица портов ввода-выводаF

Приведенная ниже таблица содержит распределение адресного
пространства портов ввода-вывода для IBM PC/XT, AT и PS/2. При
этом:

— порты 0 — FFh отведены для системной платы;
— порты 100h — 3FFh отведены для контроллеров устройств;
— порты, начиная с 400h, недоступны для системной шины.

AT/PS-2 PC/XT Описание См. раздел
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
000-01F 000-00F Контроллер ПДП N 1, 8237А-5 2
020-03F 020-021 Контроллер прерываний N 1, 8259A 3
040-05F 040-043 Таймер (PC/XT:8253-5, AT:8254-2) 4
060-063 Программируемый интерфейс периферии 8255 5
060-06F Контроллер клавиатуры AT 8042 6
070-07F Память CMOS и маска NMI 13
080 Диагностический регистр 14

080-08F 080-083 Регистры страниц ПДП 74LS612 2
090-097 Блок управления каналами PS/2 ДДД
0A0 Маска NMI 14
0A0-0BF Контроллер прерываний N 2, 8259A 3
0C0-0DF Контроллер ПДП N 2, 8237A-5 2
0F0-0FF (N2 при MGA) 10
380-38F 380-38F Синхронные адаптеры: SDLC или BSC N 2 ДДД
3A0-3AF 3A0-3A9 Синхронный адаптер BSC N 1 ДДД
3B0-3BF 3B0-3BF Монохромный адаптер (MGA) + принтер N 1 7,10
3C0-3CF 3C0-3CF Расширенный графический адаптер (EGA) N 1 7
3D0-3DF 3D0-3DF Цветной графический адаптер (CGA) и EGA 7
3F0-3F7 3F0-3F7 Контроллер НГМД N 1 8
3F8-3FF 3F8-3FF Стык RS-232 N 1 11
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечание: В таблицу не включены устройства, базовый адрес
ввода-вывода которых может настраиваться (сетевые адаптеры,
контроллеры стриммерных лент и т.д.).

— 7 —

E2. Контроллер прямого доступа к памятиF

Контроллер прямого доступа к памяти (ПДП, DMA — Direct
Memory Access) обеспечивает высокоскоростной обмен данными между
устройствами ввода-вывода и ОЗУ без использования центрального
процессора, что позволяет освободить процессор для выполнения
вычислений параллельно с обменом и независимо от него. Наиболее
часто возможности ПДП используются при работе с дисковыми
накопителями, однако реализовано использование ПДП адаптерами
накопителей на магнитной ленте и рядом других устройств.
Ощутимые приемущества дает использование ПДП в процессе обмена с
устройствами, принимающими или передающими данные достаточно
большими порциями с высокой скоростью.

В IBM PC-подобных компьютерах функции контроллера ПДП
выполняет микросхема 8237А фирмы INTEL (советский аналог
КР580ВТ57) или ее аналоги 8237А-4 и 8237А-5, работающие с
тактовой частотой 4 и 5 Мгц соответственно (стандартная
микросхема 8237А работает на частоте 3 Мгц). Контроллер имеет 4
независимых канала, каждый из которых может обслуживать одно
периферийное устройство.

— 8 —

E2.1. Принципы работы контроллера ПДПF

В работе ПДП различаются 2 главных цикла: цикл ожидания
(Idle cycle) и активный цикл (Active cycle). Каждый цикл
подразделяется на ряд состояний, занимающих по времени один
период часов (тик). Из цикла ожидания контроллер может быть
переведен в состояние программирования (Program Condition) путем
подачи на вход RESET сигнала высокого уровня, длительностью не
менее 300 нc и следующей за ним подачи сигнала низкого уровня
(уровня 0) на вывод CS (Chip Select). В состоянии програм-
мирования контроллер будет находится до тех пор, пока на выводе
CS сохранится сигнал низкого уровня. В процессе программирования
контроллеру задаются:

— начальный адрес памяти для обмена;
— уменьшенное на единицу число передаваемых байтов;
— направление обмена,

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

Загрузка 16-разрядных регистров контроллера осуществляется
через 8-разрядные порты ввода-вывода. Перед загрузкой первого
(младшего) байта должен быть сброшен (очищен) триггер-защелка
(триггер первый/последний, First/Last flip-flop), который
изменяет свое состояние после вывода в порт первого байта и
таким образом дает возможность следующей командой вывода в тот
же порт загрузить старший байт соответствующего регистра.

Запрограммированный канал должен быть демаскирован (бит
маски канала устанавливается при этом в 0), после чего он может
принимать сигналы «Запрос на ПДП», генерируемые тем внешним
устройством, которое обслуживается через этот канал. Сигнал
«Запрос на ПДП» может быть также инициирован установкой в 1 бита
запроса данного канала в регистре запросов контроллера. После
появления сигнала запроса контроллер входит в активный цикл, в
котором выполняется обмен данными. Обмен может осуществляется в
одном из четырех режимов:

1. Режим одиночной передачи (Signle Transfer Mode). После
каждого цикла передачи контроллер освобождает шину процессору,
но сразу же начинает проверку сигналов запроса и, как только
обнаруживает активный сигнал запроса, инициирует следующий цикл
передачи.

2. Режим блочной передачи (Block Transfer Mode). В этом
режиме наличие сигнала запроса требуется только до момента
выдачи контроллером сигнала «Подтверждение запроса на ПДП»
(DACK), после чего шина не освобождается вплоть до завершения
передачи всего блока.

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