Смекни!
smekni.com

Дисковая система IBM PC. (стр. 3 из 5)

│Cмещение│ Название │байт│ Описание │

├────────┼─────────────────┼────┼─────────────────────────────────┤

│ 00 │ Команда JMP │ 3 │ Длинный или короткий переход │

│ │ │ │ на программу загрузчика │

│ 03 │ Идентификатор │ 8 │ Идентификатор версии DOS, │

│ │ │ │ с помощью которой отформа- │

│ │ │ │ тирован диск │

│ 0B │ Байт/Сектор │ 2 │ Размер сектора в байтах │

│ 0D │ Сектор/Кластер │ 1 │ Число секторов в кластере │

│ 0E (*)│ Резерв │ 2 │ Количество резервных секторов │

│ 10 │ Число FAT │ 1 │ Число копий FAT на диске │

│ 11 │ Число корневых │ 2 │ Max количество записей в │

│ │ записей │ │ корневом каталоге диска │

│ 13(**)│ Всего секторов │ 2 │ Общее число секторов на диске │

│ 15 │ Носитель │ 1 │ Тип магнитного носителя │

│ 16 │ Сектор/FAT │ 2 │ Число секторов в каждой из FAT │

│ 18 │ Сектор/дорожка │ 2 │ Число секторов на одну дорожку │

│ 1A │ Число головок │ 2 │ Число головок на диске │

│ 1С │ Скрытых секторов│ 4 │ Число скрытых секторов на диске│

│ 20 │ Боьших секторов │ 4 │ Общее число секторов │

│ 22 │ Номер накопителя│ 1 │ Номер накопителя по BIOS'у │

│ 23 │ │ 1 │ Резерв │

│ 24 │ Сигнатура │ 1 │ Содержит число 29 │

│ 25 │ ID тома │ 4 │ Идентификатор тома диска │

│ 29 │ Метка тома │ 11 │ Копия метки тома │

│ 34 │ ID типа FAT │ 8 │ FAT12 или FAT16 -байт │

└────────┴─────────────────┴────┴─────────────────────────────────┘

(*) - _^^&для формата IBM PC длина зарезервированной области всегда

__составляет 1 сектор ( сектор загрузчика )

(**)- _^^&если более 65535 то 0

_"Таблица размещения файлов ( FAT )

Содержит информацию о месторасположении записанных на дискету

файлов. Системa MS-DOS выделяет для хранения файла, в зависимос-

ти от его длины, один или более кластеров ( кластер - единица

хранения данных на диске, обычно один кластер равен нескольким

секторам ), однако MS-DOS не заботится, чтобы запись файла проис-

ходила последовательно ( скорее наоборот : логика работы MS-DOS

такова, что она всячески способствует фрагментации файлов ), поэ-

тому необходимо хранить информацию, по каким именно кластерам

раскидан данный файл. В силу особой важности этой информации FAT

существует на диске в двух копиях. FAT дискеты состоит из 12-би-

товых элементов. Структура таблицы размещения файлов - следующая:

┌─────────────┬───────────────────────────────────────────┐

│ Элемент FAT │ Выполняемая функция │

├─────────────┼───────────────────────────────────────────┤

│ 0 │ Идентификатор формата │

│ 1 │ Зарезервирован ( должен быть FFF ) │

│ 2 │ Статус кластера 2 │

│ 3 │ Статус кластера 3 │

│ ... │ ... │

└─────────────┴───────────────────────────────────────────┘

Идентификатор формата может принимать

следующие значения :

F0 - 3'5/2/18 ( дискета 3'5, 2 стороны, 18 секторов )

F8 - жесткий диск

F9 - 5'25/2/15 или 3'5/2/9

FC - 5'25/1/9

FD - 5'25/2/9

FE - 5'25/1/8

FF - 5'25/2/8

Статус кластера может быть следующим :

000 - кластер свободен

FF0..FF6 - зарезервирован

FF7 - испорчен

FF8...FFF - последний кластер

иначе - номер следующего кластера файла

Интересно заметить, что, по-видимому, значение статуса 001 яв-

ляется запрещенной комбинацей.

_"Корневой каталог

Следует непосредственно за FAT. Содержит информацию об основ-

ных параметрах файлов ( длине, дате создания,...). Каждая запись

в каталоге, соответствуeт тому или иному файлу ( кроме, разумеет-

ся, метки диска ), включает номер первого кластера, назначенного

MS-DOS этому файлу, который используется как точка входа в FAT.

Начиная с этой точки, каждая запись в FAT содержит номер следую-

щего кластера, распеределенного под этот файл, или метку послед-

него кластера. Структура записи в корневом каталоге следующая :

┌─────────┬───────────┬───────────────────────────────────┐

│Cмещение │ Название │ Описание │

├─────────┼───────────┼───────────────────────────────────┤

│ 00 │ Имя │ Имя файла │

│ │ │ 0 если запись свободна │

│ │ │ E5 если файл удален │

│ │ │ 2E запись родительского каталога │

│ 08 │ Расширение│ │

│ 0B │ Атрибуты │ Системный атрибут файла │

│ 0C │ │ Резерв │

│ 16 │ Время │ Время последней перезаписи файла │

│ 18 │ Дата │ Дата последней перезаписи файла │

│ 1A │ Кластер │ Номер первого отведенного кластера│

│ 1C │ Размер │ Размер файла ( 4 байта ) │

└─────────┴───────────┴───────────────────────────────────┘

_"Область данных

Именно то место, ради которого и используется дискета - здесь

храниться информация пользователя. MS-DOS рассматривает эту об-

ласть как совокупность кластеров, каждый из которых содержит один

или несколько секторов. Из-за того что первые два поля FAT заре-

зервированы, первому кластеру в области данных присвоен номер 2.

Все каталоги, кроме корневого, также раасматриваются MS-DOS как

файлы особого вида, и поэтому помещаются в область данных.

_@Работа BIOS с НГМД

Програмное управление дискетой ( точнее говоря, адаптером НГМД)

осуществляется с помощью драйвера BIOS, вызов которого осущес-

твляется через прерывание int 13. Методика вызова конкретных фун-

кций стандартна, то есть номер функции загружается в ah, ос-

тальные параметры в другие регистры общего назначения, для адре-

совки буферов так же используется регистровая пара es:bx.

Всего стандартный драйвер поддерживает 6 функций работы с НГМД

с номерами от 0 до 5. Перечислим их в порядке возрастания :

_ 0__ _ -__ _ Сброс системы НГМД __ __ _ 3__ _ -__ _ Записать сектор

_ 1__ _ -__ _ Прочитать состояние __ __ _ 4__ _ -__ _ Проверить сектор

_ 2__ _ -__ _ Прочитать сектор __ __ _ 5__ _ -__ _ Разметка дорожки

Все функции выполняются, согласовываясь с базовой дисковой

таблицей, на которую указывает вектор 1e. Разумеется пользова-

тель может модифицировать этот вектор и создать свою таблицу. При

загрузке ОС BIOS инициализирует ее, а DOS модифицирует, чтобы

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

дующая ( везде, где не сказано иное, время указывается в квантах

системного таймера ).

┌────┬───────────────────────────────────────────────────────────┐

│Смещ│ Содержимое │

├────┼───────────────────────────────────────────────────────────┤

│ 0 │ биты 4-7: время перехода с дорожки на дорожку ( в млс ) │

│ │ биты 0-3: время под'ема головки после чтения/записи │

│ 1 │ бит 0: 1= исп.DMA , 0= DMA не используется │

│ │ биты 2-7: время опускания головок │

│ 2 │ время не остановки двигателя после окончания чтения/записи│

│ 3 │ размер сектора (0=128, 1=256, 2=512, 3=1024) │

│ 4 │ номер последнего сектора на дорожке │

│ 5 │ длина межсекторного промежутка для операций чтения/записи │

│ 6 │ Максимальная длина передаваемых данных │

│ 7 │ длина межсекторного промежутка для операции форматирования│

│ 8 │ символ-заполнитель для форматирования ( обычно f6 ) │

│ 9 │ время позиционирования головок │

│ a │ время разгона мотора (в 1/8-секундных интервалах) │

└────┴───────────────────────────────────────────────────────────┘

Также в BIOS Data Segment содержатся следующие параметры НГМД:

_ 0:043e__ требуется рекалибрация флоппи-дисковода

_ __ (бит 0=A, бит 1=B, etc.)