Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
75
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Приложение А.13: Таблицы параметров жестких магнитных дисков

Продолжение таблицы А.13-6

A9h Раздел операционной системы Net BSD

ABh Загрузочный раздел операционной системы MacOS BEh Загрузочный раздел операционной системы Solaris

D8h, DBh Разделы операционной системы CP/M EBh Файловая система BeOS (BFS1)

EEh Раздел GPT 64-разрядных систем Windows (примечание 5) FDh Раздел RAID операционной системы Linux

Примечание 1: расширенный раздел это формальная спецификация пространства для размещения нескольких не-первичных разделов (логических дисков). Параметры не-первичных разделов записываются не в MBR, а в выделенные сектора, прослеживаемые по цепи ссылок. MS-DOS не допускает замыкания этой цепи в кольцо, иначе при

загрузке она входит в бесконечный цикл поиска конца у этого кольца.

Примечание 2: в дескрипторах разделов (A.13-5) каждому комплекту параметров

CHS (Cylinder-Head-Sector) выделено 3 байта, так что они позволяют адресовать не более 2^24 секторов по 512 байт. Отсюда следует предел CHS-адресации в 2^23 кбайт, или 8 Гбайт. Поэтому разделы с адресацией CHS могут быть организованы только в пределах 8 Гбайт от начала дискового пространства (далее необходима адресация LBA). В таблице A.13-6 адресация CHS отмечена только у тех идентификаторов, которые выражают различия типов адресации.

Примечание 3: фирма Microsoft приписывает идентификатор 07h устанавливаемым файловым системам (IFS), то есть таким, которые не могут быть представлены пользователю без предварительного преобразования. Но фактически, помимо NTFS, идентификатором 07h бывает отмечена только редко используемая файловая система HPFS фирмы IBM.

Примечание 4: адресация LBA (Linear Block Addressing) основана на счете числа

секторов от начала дискового пространства по данным из байтов 08h – 0Fh в дескрипторах разделов (A.13-5). Она позволяет преодолеть границу 8 Гбайт, присущую адресации CHS. Для осуществления адресации LBA необходимо, чтобы и дисковод, и система BIOS компьютера поддерживали расширенный набор функций прерывания INT 13 (8.01-55). Во всех современных компьютерах такая поддержка обеспечивается.

Примечание 5: данные о разделах GPT (GUID Partition Table) содержатся в расширенной записи MBR, занимающей не один сектор, а значительную часть первой дорожки физического диска. Поддержку

– 679 –

Приложение А.13: Таблицы параметров жестких магнитных дисков

разделов GPT обеспечивают только 64-разрядные версии систем

Windows server 2003, Windows-XP и Windows Vista.

Примечание 6: идентификаторы 21h, 23h, 26h, 31h, 33h, 34h, 36h, 71h, 73h, 74h, 76h, 86h, A1h, A3h, A4h, B1h, B3h, B4h, B6h, E5h, E6h, F3h, F6h

считаются резервированными и пока, насколько известно, не используются.

A.13-7 Таблица свободного дискового пространства

Показанный в таблице блок данных со сведениями о свободном дисковом пространстве возвращает обработчик прерывания INT 21\AX=7303h (8.02-80),

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

FAT-12, FAT-16 и FAT-32.

Смещение

Длина

Содержание

00h

2

Размер данной таблицы в байтах

02h

2

Должно быть = 0000h при вызове

08h

4

Размер сектора в байтах

0Ch

4

Число свободных кластеров

10h

4

Общее число кластеров на диске

14h

4

Число свободных физических секторов на диске

18h

4

Общее число физических секторов на диске

1Ch

4

Число доступных выделяемых элементов

20h

4

Общее число выделяемых элементов на диске

A.14 Порты

A.14-1 Адреса некоторых портов

Порты представляют аппаратную часть компьютера, к которой следует обращаться опосредованно: либо через систему BIOS, адаптированную для обслуживания конкретной материнской платы, либо через драйверы, обслуживающие платы расширения. Как правило, пользовательские программы не обращаются к портам напрямую, хотя у этого правила есть исключения. Но в любом случае полезно знать адреса некоторых портов, хотя бы для того, чтобы избегать конфликтов при конфигурировании аппаратных средств компьютера.

Приведенная ниже таблица показывает относительно стабильные особенности общего распределения адресов портов в AT-совместимых компьютерах. Тем не

– 680 –

Приложение А.14: Порты

менее назначение адресов отдельных портов в Вашем компьютере может отличаться от показанного здесь.

Адреса портов

Адресуемые устройства

0000h – 001Fh

1-й контроллер прямого доступа к памяти (DMA1)

0020h – 0021h

1-й контроллер прерываний (IRQ 1 – IRQ 7, 8.01-09)

0022h – 0023h

Контроллер оперативной динамической памяти

0060h – 0064h

Контроллер клавиатуры (A.11-3)

0070h

Порт приема адреса данных CMOS RAM (примечание 1)

0071h

Порт ввода-вывода данных CMOS RAM (примечание 1)

0080h

Производственный диагностический порт

00A0h – 00A1h

2-й контроллер прерываний (IRQ 8 – IRQ 15, 8.03-75)

00B2h – 00B3h

Управление электропитанием компьютера

00C0h – 00DFh

2-й контроллер прямого доступа к памяти (DMA2)

00F0h – 00FFh

Арифметический сопроцессор

0168h – 016Fh

IFS-устройства или платы расширения

0170h – 0177h

2-й IDE контроллер жестких магнитных дисков (IRQ 15)

01E8h – 01Efh

Мышь PS/2 или другие устройства (IRQ 12)

01F0h – 01F7h

1-й IDE контроллер жестких магнитных дисков (IRQ 14)

01F8h

Управление линией A20 адресной шины

0200h – 020Fh

Игровой порт, джойстик

0279h

Конфигурационная система Plug-and-play

02E8h – 02EFh

Последовательный порт COM4

02F8h – 02FFh

Последовательный порт COM2 (IRQ 3)

0300h – 031Fh

Сетевые карты, совместимые с NE2000

0330h – 0331h

Интерфейс MIDI для музыкальных инструментов

0378h – 037Ah

Параллельный порт LPT1 (IRQ 7)

03C0h – 03CFh

Порты EGA-совместимых видеокарт (примечание 2)

03C4h

Порт селектора EGA-секвенсера (примечание 3)

03C5h

Порт данных EGA-секвенсера (примечание 3)

03CEh

Порт селектора графических регистров (примечание 4)

03CFh

Порт данных для графических регистров (примечание 4)

03DAh

Порт статуса видеокарт CGA/EGA/VGA (примечание 5)

03E0h – 03E7h

Порты контроллера PCMCIA (i82365)

03E8h – 03EFh

Последовательный порт COM3

03F0h – 03F7h

Контроллер флоппи-дисководов (IRQ 6)

03F8h – 03FFh

Последовательный порт COM1 (IRQ 4)

0A79h

Порт данных конфигурационной системы Plug-and-play

0CF8h – 0CFFh

Конфигурационные порты шины PCI

Примечание 1: многие данные из CMOS RAM доступны через программу BIOS Setup (1.01), данные об аппаратуре доступны через INT 11 (8.01-42),

– 681 –

Приложение А.14: Порты

сведения о памяти через INT 12 (8.01-43). Обращаться к CMOS RAM напрямую приходится для маскирования NMI (примечание 1 к 8.01-03), для получения сведений о флоппи-дисководах (байт 10h, расшифровка в таблице A.08-3), а также для задания действий BIOS после сброса процессора в начальное состояние, зависящих от значения байта 0Fh в CMOS RAM (примечание 4 к A.12-1). Для прямого доступа к данным в CMOS RAM нужно сначала послать номер запрашиваемого байта (до 7Fh) командой OUT (7.03-66) в порт 70h; затем через порт 71h можно будет считать состояние этого байта командой IN (7.03-26) или изменить его командой OUT.

Примечание 2: так как прорисовка графики посредством INT 10\AH=0Ch (8.01-19) выполняется относительно медленно, операционные системы "рисуют" свою графическую оболочку, обращаясь непосредственно к видеопамяти и к портам EGA-совместимых видеокарт. Поэтому адреса портов EGA фактически стали стандартом, хотя сами видеокарты EGA давно сошли со сцены.

Примечание 3: порт 03C5h пересылает байт, посланный из регистра AL командой OUT (7.03-66), по направлению, заранее заданному через порт 03C4h. Если в порт 03C4h заранее был послан байт AL=02h, то тогда байт, посланный в порт 03C5h, будет воспринят как маска цвета (обычно она имеет значение 0Fh).

Примечание 4: порт 03CFh пересылает байт, посланный из регистра AL командой OUT (7.03-66), по направлению, заранее заданному через порт 03CEh. Если в порт 03CEh заранее был послан байт AL=08h, то тогда байт, посланный в порт 03CFh, будет воспринят как маска битов для 8 последовательно расположенных пикселов. Если в порт 03CEh был послан байт AL=05h, то тогда байт, посланный в порт 03CFh, задаст режим записи в видеопамять (00h – 02h, примечание

3 к 8.01-39).

Примечание 5: порт 03DAh предназначен только для выдачи данных, причем в нем

каждый интервал обратного хода кадровой развертки отмечается установлением в единицу бита 3. Этот факт регистрируют командой IN (7.03-26) и используют для предотвращения появления "разрывов" изображения, которые иначе были бы видны при смене содержания изображения на прямом ходу кадровой развертки.

A.14-2 Статус последовательного порта

Здесь приведена расшифровка значения битов в байте статуса, возвращаемом в регистре AH функциями INT 14\AH=00h – INT 14\AH=03h (8.01-658.01-68).

– 682 –

Приложение А.14: Порты

 

Биты

 

Значение

 

0

 

Принимаемые данные подготовлены

 

1

 

Ошибка переполнения

 

2

 

Ошибка по четности

 

3

 

Ошибка кадровой синхронизации

 

4

 

Зарегистрирован перерыв передачи

 

5

 

Запоминающий регистр пуст

 

6

 

Передающий сдвиговый регистр пуст

 

7

 

Ответа нет, время ожидания истекло

A.14-3

Статус принтера, подключенного к параллельному порту

Здесь приведена расшифровка значения битов в байте статуса, возвращаемом в регистре AH функциями INT 17\AH=00h – INT 17\AH=02h (8.01-868.01-88).

Биты

Значение

0

Ответа нет, время ожидания истекло

1

Только от EPP BIOS: запрошенный порт не поддерживается

2

Не используется

3

Ошибка ввода-вывода

4

Порт задействован

5

В принтере нет бумаги

6

Подтверждение получено

7

Принтер свободен, ждет команды

Примечание 1: статус AH = 03h при установленном флаге CF означает, что EPP BIOS в данном компьютере имеется, но запрошенный параллельный порт ею не поддерживается.

Примечание 2: при ответе от EPP BIOS статус AH=00h означает, что данные возвращены в регистрах (A.14-4).

A.14-4 Некоторые функции EPP BIOS

EPP BIOS – это дополнение системы BIOS компьютера, обеспечивающее передачу данных через параллельные порты LPT согласно спецификации IEEE 1284. О наличии EPP BIOS в Вашем компьютере можно узнать с помощью INT 17\AX=0200h (8.01-88); заодно можно будет выяснить базовый адрес порта LPT, версию EPP BIOS, и адрес вызова ее функций. Если по этому адресу вызова совершить дальний переход командой CALL FAR (7.03-08), то система EPP BIOS выполнит операцию, определяемую кодом команды, который должен быть в

– 683 –

Приложение А.14: Порты

регистре AH в момент перехода. Для последней седьмой модификации EPP BIOS номер запрашиваемого порта LPT определяется его базовым адресом в регистре DX; предыдущие версии EPP BIOS определяли порт LPT по его номеру (00h – 03h) в регистре DL. Помимо того, некоторые функции нуждаются в дополнительных условиях, показанных во второй колонке приведенной ниже таблицы или в примечаниях (отсылки к примечаниям отмечены знаком "звездочка"). Если специально не оговорено иное, то функции EPP BIOS возвращают в регистре AH байт статуса (A.14-7), вызывают потерю значения в регистре BX, возвращают флаг CF сброшенным в нуль в случае успешного завершения и, напротив, устанавливают флаг CF в единицу в случае неудачи.

AH

При вызове

Функция EPP BIOS

При возврате

00h

 

Определение конфигурации

A.14-5

01h

A.14-6

Задание режима

AX изменен

02h

 

Выяснение режима

A.14-6

03h

AL=00h

Разрешить прерывания LPT

 

03h

AL=01h

Запретить прерывания LPT

 

04h

 

Сброс EPP

AL изменен

05h

AL=адрес

Задание адреса устройства

AL изменен

06h

 

Считывание адреса

AL=адрес

07h

AL=байт

Передача байта данных

 

08h

 

Передача блока данных

*1

09h

 

Прием байта данных

AL=байт

0Ah

 

Прием блока данных

*2

0Bh

AL=адрес

Адресный прием байта

AL=байт

0Ch

AL=адрес

Адресная передача байта

*3

0Dh

AL=адрес

Адресный прием блока

*2

0Eh

AL=адрес

Адресная передача блока

*1

0Fh

AL=порт

Заблокировать порт

*4

10h

AL=порт

Разблокировать порт

*4

11h

CH=00h

Не принимать прерывания

*5

11h

CH=01h

Разрешить прерывания

*5

12h

AL=00h

Подключено ли устройство?

AL=01h если да

12h

AL=01h

Добавить устройство

 

12h

AL=02h

Удалить устройство

 

40h

 

Подключен ли мультиплексор?

*6, *7

41h

AL=порт

Запрос порта мультиплексора

*6, *8

50h

AL=порт

Есть ли цепное подключение?

*6, *9

51h

AL=порт

Назначить номера по цепи

*6

Примечание 1: при вызове в DS:SI должен быть указатель на блок данных, а в CX

длина этого блока данных в байтах. Прежние версии, до

– 684 –

Приложение А.14: Порты

модификации 7 EPP BIOS, принимали указатель на блок данных из регистров ES:DI. При возврате в CX – число оставшихся, не пересланных байтов блока.

Примечание 2: при вызове в ES:DI должен быть указатель на буфер для приема данных, а в CX – число байтов, которые надлежит принять. При возврате в CX – число байтов буфера, оставшихся не заполненными после приема блока данных из порта.

Примечание 3: если используется модификация 7 EPP BIOS, то передаваемый байт данных должен быть в регистре CL, а предшествующие версии EPP BIOS принимали передаваемый байт из регистра DH.

Примечание 4: если устройства подключены через мультиплексор, то номер порта мультиплексора (от 1 до 8) указывают в битах 3 – 0 регистра AL, а если устройства подключены цепочкой, то номер адресуемого устройства (от 1 до 8) указывается в битах 7 – 4 регистра AL.

Примечание 5: в регистре AL нужно указать номер порта мультиплексора (01h – 08h) или 00h, если мультиплексор не используется. Для функции разрешения приема прерываний (CH = 01h) еще нужно указать в ES:DI адрес вызова обработчика прерывания.

Примечание 6: эта функция реализована начиная с 7-й модификации EPP BIOS и

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

Примечание 7: при возврате в регистре AL – номер мультиплексорного порта, который в данный момент активен, а в регистре CH – байт флагов, в котором установленное состояние бита 0 означает, что порт блокирован, а установленное состояние бита 1 – что данный порт запрашивает вызов обработчика прерывания.

Примечание 8: при возврате в регистре CH – байт флагов, в котором бит 0 – данный порт активизирован бит 1 – порт заблокирован

бит 2 – запрос вызова обработчика прерывания разрешен бит 3 – порт запрашивает вызов обработчика прерывания.

Примечание 9: эта функция возвращает в BH номер модификации EPP BIOS, в BL

номер активного устройства, в CH – байт флагов (такой же, как в примечании 7), в CL – количество подключенных цепочкой устройств (или 00h, если цепочки нет), в ES:DI – указатель на строку с именем фирмы разработчика драйвера.

– 685 –

Приложение А.14: Порты

A.14-5 Расшифровка байта конфигурации EPP BIOS

Функция "определение конфигурации" EPP BIOS, задаваемая значением AH=00h при вызове (A.14-4), возвращает в AL номер линии IRQ, выделенной порту LPT, в регистре BH возвращает номер версии EPP BIOS, в регистрах ES:DI возвращает указатель на название драйвера, в регистре CX возвращает базовый адрес порта LPT (только если EPP BIOS версии 1.0 – 3.0), а в регистре BL возвращает самое важное байт конфигурации EPP BIOS. Расшифровка этого байта дана в приведенной ниже таблице.

 

Биты

Значение

 

0

Подключен мультиплексор

 

1

Двунаправленная передача данных поддерживается

 

2

Устройства подключены цепочкой (daisy chain)

 

3

Поддерживается спецификация ECP

 

4

Поддерживается программная эмуляция функций EPP BIOS

 

5

Функции EPP BIOS действуют

 

6

Поддерживается протокол передачи "fast Centronics"

 

7

Разводка линий порта EPP стандартная

A.14-6

Расшифровка байта режима передачи через порт EPP

Функция EPP BIOS "выяснение режима передачи" (AH=02h, A.14-4) возвращает в регистре AL байт режима, а функция "задать режим передачи" (AH=01h, A.14-4) принимает байт режима из регистра AL. Состояние регистра AH при возврате не сохраняется. Расшифровка значения отдельных битов в байте режима показана в приведенной ниже таблице.

Биты

Значение

0

Совместимый режим передачи

1

Двунаправленная передача разрешена

2

Передача согласно спецификации EPP

3

Передача согласно спецификации ECP (примечание 1)

4

Программная эмуляция функций EPP BIOS (примечание 1)

5

Передача согласно спецификации "fast Centronics" (примечание 1)

6

= 0b (резервировано)

7

Запросы на прерывания принимаются (примечание 2)

Примечание 1: биты 3 – 5 можно устанавливать в единицу только если используется 7-я модификация EPP BIOS.

– 686 –

Приложение А.14: Порты

Примечание 2: бит 7 не принимается функцией "задать режим передачи" (AH=01h, A.14-4), но отображается при возврате функцией "выяснение режима передачи" (AH=02h, A.14-4).

A.14-7 Расшифровка кода статуса EPP BIOS

Почти все функции EPP BIOS (кроме 01h и 02h, A.14-4) возвращают в регистре AH код статуса; интерпретация этого кода дана в приведенной ниже таблице.

Код

Значение

00h

Успешное завершение операции

02h

Данная команда или свойство не поддерживаются

03h

Запрошенный параллельный порт не поддерживается

05h

При установленном режиме данный запрос не поддерживается

06h

Неверно указана подфункция

07h

Запрошенное состояние уже установлено ранее

20h

Мультиплексор к порту LPT не подключен (BIOS фирмы AMI)

40h

Мультиплексор к порту LPT не подключен

41h

Канал мультиплексора заблокирован

80h

Нет ответа, время ожидания истекло

FFh

Неверно указанная или не поддерживаемая функция

A.15 Таблицы параметров оптических дисков

A.15-1 Формат пакета загрузочной спецификации

Здесь представлен формат пакета загрузочной спецификации, на основании которого посредством INT 13\AH=4A00h или INT 13\AX=4C00h (8.01-61) система

BIOS осуществляет эмуляцию диска по его копии, считываемой с загрузочного оптического диска.

Смещение

Длина

Содержание

00h

1

Размер пакета в байтах (обычно = 13h)

01h

1

Тип копии диска (то же, что 21h в таблице A.15-3)

02h

1

Эмулируемый дисковод: 00h (A:), 80h (C:),...

03h

1

Номер эмулируемого дискового контроллера

04h

4

Номер начального логического блока копии

 

 

загрузочного диска (то же, что 28h в A.15-3).

– 687 –

Приложение А.15: Таблицы параметров оптических дисков

Продолжение таблицы А.15-1

 

 

 

 

08h

2

Бит 0: эмулировать ведомый дисковод IDE

 

 

 

биты 7-1: идентификатор и номер LUN (для SCSI)

 

 

 

биты 15-8: номер шины (для SCSI).

 

 

0Ah

2

Сегментный адрес кэш-буфера емкостью 3 кбайт

 

 

 

или значение 0000h, если кэширования нет.

 

0Ch

2

Сегментный

адрес

загрузки

boot-сектора

 

 

 

эмулируемого диска (то же, что 22h в A.15-3).

 

0Eh

2

Число виртуальных 512-байтовых секторов в копии

 

 

 

загрузочного диска (то же, что 26h в A.15-3).

 

10h

1

Младшие 8 бит максимального номера цилиндра

 

 

 

эмулируемого диска ( = CH в 8.01-49).

 

11h

1

Биты 0-5: номер последнего сектора на дорожке,

 

 

 

биты 6-7: старшие 2 бита максимального номера

 

 

 

цилиндра эмулируемого диска ( = CL в 8.01-49).

 

12h

1

Число головок эмулируемого дисковода.

A.15-2 Формат командного пакета

Показанный здесь формат командного пакета используется при вызове процедуры INT 13\AH=4Dh (8.01-63) считывания группы секторов оптического диска. Таким способом считывают загрузочный каталог оптического диска.

Смещение

Длина

Содержание

00h

1

Длина командного пакета в байтах (обычно = 08h)

01h

1

Число секторов, которые надлежит считывать

02h

4

Адрес буфера размещения считываемых данных

06h

2

Номер начального сектора считываемой группы

A.15-3 Формат загрузочного каталога оптического диска

Оптические диски потенциально позволяют осуществить несколько вариантов загрузки компьютера. Необходимые для этого данные должны быть на диске в виде записей скрытого каталога, который считывают посредством INT 13\AH=4Dh (8.01-63). Как в любом каталоге, записи имеют стандартную длину 20h байт. Минимальный состав загрузочного каталога включает две обязательных записи: запись области действия (validation entry) и дескриптор копии загрузочного диска, принимаемого по умолчанию. Приведенная ниже таблица представляет структуру этих двух записей, причем записи области действия соответствует интервал смещений 00h – 1Fh, а дескриптору копии загрузочного диска интервал смещений

20h – 3Fh.

– 688 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]