Операционная система MS-DOS
© Александр Фролов, Григорий Фролов
Том 1, книга 3, М.: Диалог-МИФИ, 1992.
|
|
(-2) 2 |
mcb_seg |
сегмент первого управляющего блока
памяти (MCB) |
(0) 4 |
dev_cb |
указатель на первый блок управления
устройствами DOS (DOS Device Control Block) |
(+4) 4 |
file_tab |
указатель на таблицу файлов DOS |
(+8) 4 |
clock_dr |
указатель на драйвер CLOCK$,
установленный или резидентный |
(+12) 4 |
con_dr |
указатель на актуальный драйвер CON,
установленный или резидентный |
|
|
----------- DOS 2.x ---------------- |
(+16) 1 |
num_lgdr |
число логических драйверов в системе |
(+17) 2 |
max_btbl |
максимальное число байтов/блоков любого
блочного устройства |
(+19) 4 |
disk_buf |
указатель на первый дисковый буфер |
(+23) - |
null_dr |
начало драйвера NUL - первого драйвера
в списке драйверов DOS |
|
|
----------- DOS 3.x, 4.x , 5.0----------- |
(+16) 2 |
max_btbl |
максимальное число байтов в блоке
блочного устройства |
(+18) 4 |
disk_buf |
указатель на первый дисковый буфер |
(+22) 4 |
drv_info |
укзатель на массив информации об
устройствах |
(+26) 4 |
fcb_tabl |
указатель на таблицу FCB |
(+30) 2 |
fcb_size |
размер таблицы FCB |
(+32) 1 |
num_bdev |
число блочных устройств |
(+33) 1 |
lastdriv |
значение LASTDRIVE в файле CONFIG.SYS (по
умолчанию равно 5) |
(+34) |
null_dr |
начало драйвера NUL - первого драйвера
в списке драйверов DOS |
(0) 1 |
type |
тип блока MCB (M или Z) |
(+1) 2 |
owner |
параграф владельца блока (если 0, то блок
описывает сам себя) |
(+3) 2 |
size |
число параграфов в этом блоке (один
параграф имеет размер 16 байт) |
(+5) 11 |
reserve |
зарезервировано |
(0) 2 |
int20h |
двоичный код команды int 20h (программы
могут использовать эту команду для завершения
своей работы) |
(+2) 2 |
mem_top |
нижняя граница доступной памяти в
системе в параграфах |
(+4) 1 |
reserv1 |
зарезервировано |
(+5) 5 |
call_dsp |
команда вызова FAR CALL диспетчера MS-DOS |
(+10) 4 |
term_adr |
адрес завершения (Terminate Address) |
(+14) 4 |
cbrk_adr |
адрес обработчика Ctrl-Break |
(+18) 4 |
crit_err |
адрес обработчика критической ошибки |
(+22) 2 |
parn_psp |
сегмент PSP программы, запустившей
данную программу (программы-родителя) |
(+24) 20 |
file_tab |
таблица открытых файлов, если здесь
находятся байты 0FFH, то таблица не
используется |
(+44) 2 |
env_seg |
сегмент блока памяти, содержащего
переменные среды |
(+46) 4 |
ss_sp |
адрес стека SS:SP программы |
(+50) 2 |
max_open |
максимальное число открытых файлов |
(+52) 4 |
file_tba |
адрес таблицы открытых файлов |
(+56) 24 |
reserv2 |
зарезервировано |
(+80) 3 |
disp |
диспетчер функций DOS |
(+83) 9 |
reserv3 |
зарезервировано |
(+92) 16 |
fcb1 |
форматируется как стандартный FCB,
если первый аргумент командной строки содержит
правильное имя файла |
(+108) 20 |
fcb2 |
заполняется для второго аргумента
командной строки аналогично fcb1 |
(+128) 1 |
p_size |
число значащих символов в
неформатированной области параметров, либо
буфер обмена с диском DTA, назначенный по
умолчанию |
(+129) 127 |
parm |
неформатированная область параметров,
заполняется при запуске программы из командной
строки |
для DOS версий 2.х и 3.х:
(0) 1 |
drv_num |
номер устройства (0 соответствует
устройству А:, 1 - В: и т.д.) |
(+1) 1 |
drv_numd |
дополнительный номер устройства внутри
драйвера |
(+2) 2 |
sec_size |
размер сектора в байтах |
(+4) 1 |
clu_size |
число, на единицу меньшее количества
секторов в кластере |
(+5) 1 |
clu_base |
число, являющееся степенью 2 числа
секторов в кластере |
(+6) 2 |
boot_siz |
количество зарезервированных секторов
(boot-сектора, начало корневого каталога) |
(+8) 1 |
fat_num |
количество копий FAT |
(+9) 2 |
max_dir |
максимальное число дескрипторов файлов
в корневом каталоге (т.е. максимальное число
файлов, которое может содержать корневой каталог
на этом устройстве) |
(+11) 2 |
data_sec |
номер первого сектора данных на диске
(номер сектора, соответствующего кластеру номер
2) |
(+13) 2 |
hi_clust |
максимальное количество кластеров
(равно увеличенному на 1 количеству кластерова
данных) |
(+15) 1 |
fat_size |
количество секторов, занимаемых одной
копией FAT |
(+16) 2 |
root_sec |
номер первого сектора корневого
каталога |
(+18) 4 |
drv_addr |
FAR-адрес заголовка драйвера,
обслуживающего данное устройство |
(+22) 1 |
media |
байт описания среды носителя данных |
(+23) 1 |
acc_flag |
флаг доступа, 0 означает, что к
устройству был доступ |
(+24) 4 |
next |
адрес следующего блока DDCB, для
последнего блока в поле смещения находится число
FFFF |
|
|
----------- только для DOS 2.x -------------- |
(+28) 2 |
dir_clu |
номер начального кластера текущего
каталога (0 для корневого каталога) |
(+30) 64 |
dir_path |
строка в формате ASCIIZ, содержащая путь к
текущему каталогу |
|
|
--------------- DOS 3.х ------------------------- |
(+28) 2 |
reserv1 |
зарезервировано, обычно равно 0 |
(+30) 2 |
built |
число FFFF в этом поле означает, что
блок DDCB был построен |
для DOS версии 4.х :
(0) 1 |
drv_num |
номер устройства (0 соответствует
устройству А:, 1 - В: и т.д.) |
(+1) 1 |
drv_numd |
дополнительный номер устройства внутри
драйвера |
(+2) 2 |
sec_size |
размер сектора в байтах |
(+4) 1 |
clu_size |
число, на единицу меньшее количества
секторов в кластере |
(+5) 1 |
clu_base |
число, являющееся степенью 2 числа
секторов в кластере |
(+6) 2 |
boot_siz |
количество зарезервированных секторов
(boot-сектора, начало корневого каталога) |
(+8) 1 |
fat_num |
количество копий FAT |
(+9) 2 |
max_dir |
максимальное число дескрипторов файлов
в корневом каталоге (т.е. максимальное число
файлов, которое может содержать корневой каталог
на этом устройстве) |
(+11) 2 |
data_sec |
номер первого сектора данных на диске
(номер сектора, соответствующего кластеру номер
2) |
(+13) 2 |
hi_clust |
максимальное количество кластеров
(равно увеличенному на 1 количеству кластеров
данных) |
(+15) 1 |
fat_size |
количество секторов, занимаемых одной
копией FAT |
(+16) 1 |
reserv1 |
зарезервировано |
(+17) 2 |
root_sec |
номер первого сектора корневого
каталога |
(+19) 4 |
drv_addr |
FAR-адрес заголовка драйвера,
обслуживающего данное устройство |
(+23) 1 |
media |
байт описания среды носителя данных |
(+24) 1 |
acc_flag |
флаг доступа, 0 означает, что к
устройству был доступ |
(+25) 4 |
next |
адрес следующего блока DDCB, для
последнего блока в поле смещения находится число
FFFF |
(+29) 2 |
reserv2 |
зарезервироано |
(+31) 2 |
built |
число FFFF в этом поле означает, что
блок DDCB был построен |
для DOS 3.х:
(0) 4 |
next |
указатель на следущую таблицу файлов |
(+4) 2 |
file_count |
количество файлов в этой таблице |
|
|
----- Дальше идут блоки DFCB в количестве
file_count штук ----- |
(0) 2 |
handl_num |
количество файловых чисел, связанных с
данным файлом (file handle) |
(+2) 1 |
access_mode |
режим доступа к файлу, заданный при
открытии файла |
(+3) 2 |
reserv1 |
зарезервировано |
(+5) 2 |
dev_info |
информация IOCTL, полученная для
устройства, на котором расположен этот файл
(подробно формат и назначение этого поля будут
расмотрены в главе, посвященной драйверам) |
(+7) 4 |
driver |
указатель на драйвер, обслуживающий
устройство, содержащее файл |
(+11) 2 |
first_clu |
номер первого кластера, распределенного
файлу |
(+13) 2 |
time |
время последнего изменения файла в
упакованном формате |
(+15) 2 |
date |
дата последнего изменения файла в
упакованном формате |
(+17) 4 |
fl_size |
размер файла в байтах |
(+21) 4 |
offset |
текущее смещение внутри файла в байтах |
(+25) 2 |
reserv2 |
зарезервировано |
(+27) 2 |
last_clu |
номер только что прочитанного кластера |
(+29) 3 |
reserv3 |
зарезервировано |
(+32) 11 |
filename |
имя файла в формате FCB (имя выравнено
на левую границу поля, дополнено пробелами до 8
символов, справа к нему прилегает 3 символа
расширения без точки) |
(+43) 2 |
reserv4 |
зарезервировано |
(+45) 2 |
ownr_psp |
PSP программы, открывшей файл |
(+47) 2 |
reserv5 |
зарезервировано |
для DOS 4.х:
(0) 4 |
next |
указатель на следущую таблицу файлов |
(+4) 2 |
file_count |
количество файлов в этой таблице |
|
|
-------- Дальше идут блоки DFCB в
количестве file_count штук ------ |
(0) 2 |
handl_num |
количество файловых чисел, связанных с
данным файлом (file handle) |
(+2) 1 |
access_mode |
режим доступа к файлу, заданный при
открытии файла |
(+3) 2 |
reserv1 |
зарезервировано |
(+5) 2 |
dev_info |
информация IOCTL, полученная для
устройства, на котором расположен этот файл
(подробно формат и назначение этого поля будут
расмотрены в главе, посвященной драйверам) |
(+7) 4 |
driver |
указатель на драйвер, обслуживающий
устройство, содержащее файл |
(+11) 2 |
first_clu |
номер первого кластера, распределенного
файлу |
(+13) 2 |
time |
время последнего изменения файла в
упакованном формате |
(+15) 2 |
date |
дата последнего изменения файла в
упакованном формате |
(+17) 4 |
fl_size |
размер файла в байтах |
(+21) 4 |
offset |
текущее смещение внутри файла в байтах |
(+25) 2 |
reserv2 |
зарезервировано |
(+27) 2 |
reserv7 |
зарезервировано |
(+29) 3 |
reserv3 |
зарезервировано |
(+32) 1 |
reserv4 |
зарезервировано |
(+33) 11 |
filename |
имя файла в формате FCB (имя выравнено
на левую границу поля, дополнено пробелами до 8
символов, справа к нему прилегает 3 символа
расширения без точки) |
(+44) 2 |
reserv5 |
зарезервировано |
(+46) 2 |
ownr_psp |
PSP программы, открывшей файл |
(+48) 2 |
reserv6 |
зарезервировано |
(+50) 2 |
last_clu |
номер только что прочитанного кластера |
(+52) 4 |
reserv8 |
зарезервировано |
(0) 4 |
next |
указатель на заголовок следующего
драйвера. Если смещение адреса следующего
драйвера равно FFFF, это последний драйвер в
цепочке |
(+4) 2 |
attrib |
атрибуты драйвера |
(+6) 2 |
strateg |
смещение программы стратегии драйвера |
(+8) 2 |
interrupt |
смещение программы обработки
прерывания для драйвера |
(+10) 8 |
dev_name |
имя устройства для символьных устройств
или количество обслуживаемых устройств для
блочных устройств. |
(0) 64 |
path |
текущий путь доступа для диска |
(+64) 2 |
reserv1 |
зарезервировано |
(+66) 2 |
reserv2 |
зарезервировано |
(+68) 1 |
reserv3 |
зарезервировано |
(+69) 4 |
ddcb |
адрес соответствующего DDCB |
(+73) 2 |
cdir_clu |
первый кластер текущего каталога на
диске. 0 соответствует корневому каталогу, -1
- если к диску еще не обращались |
(+75) 2 |
reserv4 |
зарезервировано |
(+77) 2 |
reserv5 |
зарезервировано |
(+79) 2 |
reserv6 |
зарезервировано |
|
|
---------------- для DOS 4.х ----------------- |
(+81) 7 |
reserv7 |
зарезервировано |
(0) 2 |
signature |
два байта 'MZ' (4Dh, 5Ah),
индентифицирующие файл в формате EXE |
(+2) 2 |
part_pag |
длина последней страницы программы в
байтах (страница содержит 512 байт) |
(+4) 2 |
file_size |
размер программы в страницах по 512 байт |
(+6) 2 |
rel_item |
число элементов в таблице расположения
сегментов |
(+8) 2 |
hdr_size |
размер заголовка файла в параграфах
(длина параграфа - 16 байт) |
(+10) 2 |
min_mem |
минимальное количество памяти в
параграфах, которое нужно зарезервировать в
памяти за концом загруженной программы |
(+12) 2 |
max_mem |
максимальное количество памяти в
параграфах, которое нужно зарезервировать в
памяти за концом загруженной программы |
(+14) 2 |
ss_reg |
величина смещения от начала программы,
которая используется для загрузки сегментного
регистра стека SS |
(+16) 2 |
sp_reg |
величина смещения от начала программы,
которая используется для загрузки регистра SP
|
(+18) 2 |
chk_summ |
контрольная сумма всех слов в файле |
(+20) 2 |
ip_reg |
значение для регистра IP, которое
будет использовано при начальном запуске
программы |
(+22) 2 |
cs_reg |
смещение от начала программы для
установки сегментного регистра кода CS |
(+24) 2 |
relt_off |
смещение от начала файла таблицы
расположения сегментов программы |
(+26) 2 |
overlay |
номер оверлея, равен 0 для основного
модуля |
Символьное устройство
Бит |
Назначение |
0 |
1 - драйвер обслуживает стандартное
устройство ввода;
0 - этот драйвер не обслуживает стандартное
устройство ввода |
1 |
1 - драйвер обслуживает стандартное
устройство вывода;
0 - драйвер не обслуживает стандартное
устройство вывода |
2 |
1 - это драйвер стандартного
устройства NUL;
0 - драйвер не обслуживает устройство NUL |
3 |
1 - драйвер обслуживает часы |
4 |
Зарезервировано, бит должен быть равен 0 |
5 |
Зарезервировано, бит должен быть равен 0 |
6 |
1 - разрешено использование
драйвером функций GENERIC IOCTL (для версий DOS,
более поздних, чем 3.2);
0 - функции GENERIC IOCTL не поддерживаются |
7-10 |
Эти биты зарезервированы и должны быть
равны 0 |
11 |
1 - поддерживаются функции
открытия/закрытия устройства (OPEN/CLOSE) для
символьных устройств;
0 - функции OPEN/CLOSE для символьных устройств
не поддерживаются |
12 |
Зарезервировано, бит должен быть равен 0 |
13 |
1 - для символьных устройств
поддерживается функция вывода до получения
состояния занятости устройства;
0 - функция вывода до состояния занятости не
поддерживается |
14 |
1 - поддерживаются функции IOCTL;
0 - функции IOCTL не поддерживаются |
15 |
1 - символьное устройство;
0 - блочное устройство |
Блочное устройство
Бит |
Назначение |
0 |
Зарезервировано, бит должен быть равен 0 |
1 |
1 - драйвер поддерживает 32-битовую
адресацию сектора (для версий DOS, начиная с 4.00 и
более поздних); если установлен этот бит, поле
номера сектора всех запросов является двойным
словом, добавляемым в конец заголовка запроса,
старое поле номера сектора должно содержать -1);
0 - используется 16-битовая адресация сектора |
2-5 |
Эти биты зарезервированы и должны быть
равны 0 |
6 |
1 - поддерживаются логические
устройства (используется блочными драйверами
для управления "виртуальными"
флоппи-дисками, создаваемые драйвером DRIVER.SYS
в DOS версии 3.2 и более поздних версиях);
0 - логические устройства для блочных
драйверов не поддерживаются; |
7-10 |
Эти биты зарезервированы и должны быть
равны 0 |
11 |
1 - единица в этом бите означает, что
драйвер поддерживает функцию проверки замены
носителя данных в устройстве (например, замены
дискеты), используется для DOS версий 3.00 и более
поздних;
0 - для блочных устройств функция проверки
замены носителя данных не поддерживается |
12 |
Зарезервировано, бит должен быть равен 0 |
13 |
1 - драйвер не использует стандартное
IBM-устройство, и необходимо выдать запрос на
построение блока параметров BIOSBIOS
BPB;
0 - используется IBM-устройство |
14 |
1 - поддерживаются функции IOCTL;
0 - функции IOCTL не поддерживаются |
15 |
1 - символьное устройство;
0 - блочное устройство |
(0) 1 |
size |
Длина запроса в байтах (длина заголовка
запроса плюс длина переменной части запроса) |
(+1) 1 |
unit |
Номер устройства (используется для
блочных устройств, указывает, с каким именно
устройством, обслуживаемым драйвером, будет
работать операционная система) |
(+2) 1 |
cmd |
Код команды, которую требуется
выполнить (может иметь значение от 0 до 18h) |
(+3) 2 |
status |
Слово состояния устройства, заполняется
драйвером перед возвратом управления
операционной системе |
(+5) 8 |
reserved |
Зарезервировано |
Бит |
Назначение |
0-7 |
Код ошибки устройства (если команда
выполнилась с ошибкой и драйвер установил
признак ошибки (бит 15) в единицу, то в это поле
он должен записать код ошибки). |
8 |
Команда выполнена. Этот бит всегда
устанавливается драйвером перед тем, как он
возвращает управление операционной системе. |
9 |
Занято. Этот бит устанавливается
обработчиком команды, когда физическое
устройство занято выполнением предыдущей
операции и поэтому не может выполнить требуемую
команду. Этот бит используется также для
передачи такой информации, как "буфер
клавиатуры не пуст", "среда носителя данных
заменяемая" (в команде проверки возможности
замены среды носителя данных). |
10-14 |
Зарезервировано. |
15 |
Признак ошибки. Устанавливается
драйвером, когда он не может обработать запрос
или произошла физическая либо логическая ошибка
при обработке правильного запроса. Биты 0-7
при этом должны содержать код ошибки. |
Код |
Описание |
0 |
Нарушение защиты от записи. Была
предпринята попытка записи информации на
защищенное от записи устройство. |
1 |
Неизвестное устройство. |
2 |
Устройство не готово. |
3 |
Неизвестная команда. Затребованная
команда не поддерживается драйвером. |
4 |
Ошибка CRC. При выполнении команды
обнаружена ошибка циклического кода проверки. |
5 |
Неправильная длина запроса. Поле длины в
заголовке запроса содержит неверное значение. |
6 |
Ошибка при поиске дорожки (дорожка не
найдена). |
7 |
Неизвестный носитель данных. |
8 |
Сектор не найден. |
9 |
Нет бумаги в принтере. |
0Ah |
Ошибка записи. |
0Bh |
Ошибка чтения. |
0Ch |
Общая ошибка. |
0Dh |
Зарезервировано. |
0Eh |
Зарезервировано. |
0Fh |
Неразрешенная замена диска (только для
DOS версии 3.0 и более поздних версий). |
(0) 2 |
sect_siz |
Количество байтов в одном секторе диска. |
(+2) 1 |
clustsiz |
Количество секторов в одном кластере. |
(+3) 2 |
res_sect |
Количество зарезервированных секторов. |
(+5) 1 |
fat_cnt |
Количество таблиц FAT. |
(+6) 2 |
root_siz |
Максимальное количество файловых
дескрипторов, содержащихся в корневом каталоге
диска. |
(+8) 2 |
tot_sect |
Общее количество секторов на носителе
данных (в разделе DOS). |
(+10) 1 |
media |
Байт-описатель среды носителя данных. |
(+11) 2 |
fat_size |
Количество секторов, занимаемых одной
копией FAT. |
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
n_units |
Количество устройств, обслуживаемых
драйвером. Это поле заполняется только блочным
драйвером. |
(+14) 4 |
end_addr |
Конечный FAR-адрес резидентной части
кода драйвера. В это поле драйвер записывает
адрес байта памяти, следующего за той частью кода
драйвера, которая должна стать резидентной. |
(+18) 4 |
parm |
FAR-адрес строки параметров
инициализации драйвера из файла CONFIG.SYS. Эта
строка содержит все, что находится в строке файла
после команды 'DEVICE=', она заканчивается
символами перевода строки и возврата каретки 0Ah,
0Dh. При возврате драйвер блочного устройства
должен записать в это поле адрес массива
указателей на блоки параметров BIOSBIOS
(BPB), по одному указателю на каждое устройство,
обслуживаемое драйвером. |
(+22) 1 |
drive |
Номер устройства. Для версии DOS 3.0 и более
поздних версий в это поле при загрузке драйвера
операционная система заносит номер, назначенный
устройству, обслуживаемому драйвером. Например,
для устройства А:это 0, для B: - 1 и т.д. |
- 1 - Проверка замены носителя
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
media |
В этом поле драйверу передается
байт-описатель среды носителя данных, с которым
DOS работала раньше. |
(+14) 1 |
reply |
В это поле драйвер должен поместить
ответ о факте замены среды:
1 - диск не заменялся;
0 - неизвестно;
-1 - диск был заменен. |
(+15) 4 |
vol_id |
Указатель на предыдущую метку тома (если
установлен бит 11 слова атрибута устройства и
диск был заменен) |
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
media |
В этом поле драйверу передается
байт-описатель среды носителя данных, с которым
DOS работала раньше. |
(+14) 4 |
buf_adr |
Адрес буфера обмена. Содержимое этого
буфера при вызове драйвера зависит от утановки
бита 13 слова атрибутов устройства (IBM-формат).
Если этот бит равен 0 (устройство формата IBM),
буфер содержит первый сектор первой копии FAT.
В противном случае указатель установлен на буфер
свободного сектора. |
(+18) 4 |
bpb_adr |
Указатель на новый BPB, записывается в
это поле драйвером. |
- 3, 4, 8, 9, 0Ch - Чтение/Запись.
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
media |
В этом поле драйверу передается
байт-описатель среды носителя данных. |
(+14) 4 |
buf_adr |
Адрес буфера для передачи данных. |
(+18) 2 |
count |
Количество передаваемых байтов для
символьных устройств или секторов для блочных
устройств. |
(+20) 2 |
sector |
Номер начального сектора, если драйвер
использует 16-битовую адресацию секторов или -1
для 32-битовой адресации. Это поле не используется
символьными драйверами. |
(+22) 4 |
vol_id |
Указатель на метку тома в формате ASCIIZ.
Возвращается блочным драйвером, если он
выставляет ошибку 15 (неправильная смена
диска). Это поле должно содержать ссылку на метку
требуемого диска. |
(+26) 4 |
sect32 |
Номер начального сектора, если
содержимое поля sector равно -1. Первым идет
старшее слово номера сектора. Если обнаружена
ошибка с номером 15, в это поле записывается
указатель на метку тома. |
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
byte |
В это поле драйвер записывает
извлеченный из буфера байт, который будет считан
по следующей команде ввода. |
- 6, 0Ah - Проверит состояние ввода/вывода.
Для команд проверки состояния запрос состоит
только из заголовка, область переменного формата
отсутствует.
- 7 - Сброс буфера устройства ввода.
- 11 - Сброс буфера устройства вывода.
Запрос состоит только из заголовка.
- 0Dh, 0Eh - Открыть/Закрыть устройство.
Запрос для этих команд состоит только из
заголовка.
- 15 - Проверка сменяемости диска.
Запрос состоит только из заголовка.
- 19 - Общее управление вводом/выводом (GENERIC_IOCTL).
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
funct |
Это поле содержит код функции команды
общего IOCTL. |
(+14) 1 |
subfunc |
Код подфункции для функции funct. |
(+15) 2 |
si_reg |
Значение регистра SI при вызове
функции 44h прерывания 21h. Эта функция DOS
предназначена для управления вводом/выводом. |
(+17) 2 |
di_reg |
Значение, передаваемое при вызове
функции 44h прерывания 21h через регистр DI.
|
(+19) 4 |
buf |
Указатель на буфер данных, содержащий
управляющую информацию для устройства или
предназначенный для приема информации от
устройства. |
- 23 - Получить активное логическое устройство.
- 24 - Установить активное логическое устройство.
(0) 13 |
header |
Заголовок запроса. |
(+13) 1 |
unit |
Код логического устройства, которое
должно стать активным при использовании команды 24,
или код активного устройства, помещаемый
драйвером по команде 23. |
(+14) 1 |
cmd |
Код команды. |
(+15) 4 |
status |
Слово состояния. |
(+19) 4 |
reserved |
Зарезервировано. |
0 |
Инициализация |
1 |
Проверка смены носителя данных |
2 |
Построить блок BPB |
3 |
Чтение IOCTL |
4 |
Чтение |
5 |
Неразрушающее чтение |
6 |
Проверка состояния ввода |
7 |
Сброс буферов ввода |
8 |
Запись |
9 |
Запись с проверкой |
10 |
Проверка состояния вывода |
11 |
Сброс буферов вывода |
12 |
Запись IOCTL |
13 |
Открыть устройство |
14 |
Закрыть устройство |
15 |
Проверка возможности смены носителя
данных |
16 |
Зарезервировано |
17 |
Зарезервировано |
18 |
Зарезервировано |
19 |
Общее управление вводом/выводом (GENERIC
IOCTL) |
20 |
Получить текущее логическое устройство |
21 |
Установить логическое устройство |
FF |
оригинальный IBM PC |
FE |
XT, Portable PC |
FD |
PCjr |
FC |
AT |
FB |
XT с памятью 640 К на материнской плате |
F9 |
Convertible PC |
+
¦Тип ¦ Количество ¦ Количество ¦ Емкость диска
¦ ¦ цилиндров ¦ головок ¦ в байтах
++++
¦ 1 ¦ 306 ¦ 4 ¦ 10.653.696
¦ 2 ¦ 615 ¦ 4 ¦ 21.411.840
¦ 3 ¦ 615 ¦ 6 ¦ 32.117.760
¦ 4 ¦ 940 ¦ 8 ¦ 65.454.080
¦ 5 ¦ 940 ¦ 6 ¦ 49.090.560
¦ 6 ¦ 615 ¦ 4 ¦ 21.411.840
¦ 7 ¦ 462 ¦ 8 ¦ 32.169.984
¦ 8 ¦ 733 ¦ 5 ¦ 31.900.160
¦ 9 ¦ 900 ¦ 15 ¦ 117.504.000
¦ 10 ¦ 820 ¦ 3 ¦ 21.411.840
¦ 11 ¦ 855 ¦ 5 ¦ 37.209.600
¦ 12 ¦ 855 ¦ 7 ¦ 52.093.440
¦ 13 ¦ 306 ¦ 8 ¦ 21.307.392
¦ 14 ¦ 733 ¦ 7 ¦ 44.660.224
¦ 15 ¦ 0 ¦ 0 ¦ 0
¦ 16 ¦ 612 ¦ 4 ¦ 21.307.392
¦ 17 ¦ 977 ¦ 5 ¦ 42.519.040
¦ 18 ¦ 977 ¦ 7 ¦ 59.526.656
¦ 19 ¦ 1024 ¦ 7 ¦ 62.390.272
¦ 20 ¦ 733 ¦ 5 ¦ 31.900.160
¦ 21 ¦ 733 ¦ 7 ¦ 44.660.224
¦ 22 ¦ 733 ¦ 5 ¦ 31.900.160
¦ 23 ¦ 306 ¦ 4 ¦ 10.653.696
¦ 24 ¦ 977 ¦ 5 ¦ 42.519.040
¦ 25 ¦ 1024 ¦ 9 ¦ 80.216.064
¦ 26 ¦ 1224 ¦ 7 ¦ 74.575.872
¦ 27 ¦ 1224 ¦ 11 ¦ 117.190.656
¦ 28 ¦ 1224 ¦ 15 ¦ 159.805.440
¦ 29 ¦ 1024 ¦ 8 ¦ 71.303.168
¦ 30 ¦ 1024 ¦ 11 ¦ 98.041.856
¦ 31 ¦ 918 ¦ 11 ¦ 87.892.992
¦ 32 ¦ 925 ¦ 9 ¦ 72.460.800
¦ 33 ¦ 1024 ¦ 10 ¦ 89.128.960
¦ 34 ¦ 1024 ¦ 12 ¦ 106.954.752
¦ 35 ¦ 1024 ¦ 13 ¦ 115.867.648
¦ 36 ¦ 1024 ¦ 14 ¦ 124.780.544
¦ 37 ¦ 1024 ¦ 2 ¦ 17.825.792
¦ 38 ¦ 1024 ¦ 16 ¦ 142.606.336
¦ 39 ¦ 918 ¦ 15 ¦ 119.854.080
¦ 40 ¦ 820 ¦ 6 ¦ 42.823.680
+----
++
¦Тип¦Емкость,¦Диаметр,¦Количество секторов¦Количество¦
¦ ¦Кбайтов ¦дюймы ¦на одну дорожку ¦цилиндров ¦
+++++¦
¦ 1 ¦ 360 ¦ 5 ¦ 9 ¦ 40 ¦
¦ 2 ¦ 1200 ¦ 5 ¦ 15 ¦ 80 ¦
¦ 3 ¦ 720 ¦ 3 ¦ 9 ¦ 40 ¦
¦ 4 ¦ 1440 ¦ 3 ¦ 18 ¦ 80 ¦
++
- 1 srt_hut
Биты 0...3 - SRT (Step Rate Time) - задержка
для переключения головок, лежит в пределах 1-16 мс и задается
с интервалом 1 мс (0Fh - 1mc, 0Eh - 2 mc, 0Dh - 3 mc, ...);
биты 4...7 - задержки разгрузки головки, лежит в пределах 16-240 мс
и задается с интервалом 16 мс (1 - 16 mc, 2 - 32 mc, ..., 0Fh - 240 mc).
(+1) 1 dma_hlt
Бит 0 - значение этого бита, равное 1, говорит о том, что используется
прямой доступ к памяти (DMA);
биты 2...7 - время загрузки головок HLT_- интервал между сигналом загрузки
головок и началом операции чтение/запись, лежит в пределах 2-254 мс
и задается с интервалом 2 мс (1 - 2 mc, 2 - 4 mc, ..., 0FFh - 254 mc).
(+2) 1 motor_w
Задержка перед выключением двигателя.
(+3) 1 sec_size
Код размера сектора в байтах (0 - 128 байтов, 1 - 256, 2 - 512, 3 - 1024).
(+4) 1 eot
Номер последнего сектора на дорожке
(+5) 1 gap_rw
Длина межсекторного промежутка для чтения/записи.
(+6) 1 dtl
Максимальная длина передаваемых данных, используется когда не задана длина сектора.
(+7) 1 gap_f
Длина межсекторного промежутка для опрации форматирования.
(+8) 1 fill_char
Байт-заполнитель для форматирования (обычно используется F6h).
(+9) 1 hst
Время установки головки в миллисекундах.
(+10) 1 mot_start
Время запуска двигателя в 1/8 долях секунды.
- 2 max_cyl
Максимальное количество цилиндров на диске.
(+2) 1 max_head
Максимальное количество магнитных головок.
(+3) 2 srwcc
Начальный цилиндр для предварительной записи (Starting reduced-write current cylinder).
(+5) 2 swpc
Начальный цилиндр для предварительной компенсации при записи
(Starting write precompensation cylinder).
(+7) 1 max_ecc
Максимальная длина блока коррекции ошибок ECC (Maximum ECC data burst length).
(+8) 1 dstopt
Опции устройства:
бит 7 - запрет восстановления;
бит 6 - запрет восстановления по блоку коррекции ошибок ECC (Error Correction Code);
биты 2-0 - опции устройства.
(+9) 1 st_del
Стандартная величина задержки.
(+10) 1 fm_del
Величина задержки для форматирования диска.
(+11) 1 chk_del
Величина задержки для проверки диска.
(+12) 4 reserve
Зарезервировано.
Команда Байты команды
Чтение ++
данных ¦MT ¦MFM¦SK ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Чтение удаленных ++
данных ¦MT ¦MFM¦SK ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Запись ++
данных ¦MT ¦MFM¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Запись удаленных ++
данных ¦MT ¦MFM¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Чтение данных ++
с дорожки ¦MT ¦MFM¦SK ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Сканирование до ++
"равно" ¦MT ¦MFM¦SK ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Сканирование до ++
"меньше" или ¦MT ¦MFM¦SK ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦
"равно" ++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Сканирование до ++
"больше" или ¦MT ¦MFM¦SK ¦ 1 ¦ 1 ¦ 1 ¦ 0 ¦ 1 ¦
"равно" ++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Форматирование ++
дорожки ¦ 0 ¦MFM¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 1 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Считывание ++
индексных ¦ 0 ¦MFM¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦
данных ++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Инициализация ++
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦
++
Чтение состояния ++
прерывания ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦
++
Определить ++
параметры ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦
++
Чтение ++
состояния ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦
накопителя ++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Поиск ++
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦
++++++++¦
¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦HDS¦DS1¦DS0¦
++
Байты параметров, которые должны следовать за
командами и байты результата, которые процессор
должен считать после выполнения команды:
Команда Байты Байты
параметров результата
Чтение данных C, H, R, N, EOT, ST0, ST1, ST2,
EOT, GPL, DTL C, H, R, N
Чтение удаленных
данных
Запись данных
Запись удаленных
данных
Чтение данных
с дорожки
Сканирование до
"равно"
Сканирование до
"меньше" или
"равно"
Сканирование до
"больше" или
"равно"
Форматирование N, SC, GPL, D ST0, ST1, ST2,
дорожки C, H, R, N
Чтение индексных отсутствуют ST0, ST1, ST2,
данных C, H, R, N
Инициализация отсутствуют отсутствуют
Чтение состояния отсутствуют ST0, PCN
прерывания
Определить 1 байт: отсутствуют
параметры мл. тетрада - HUT
ст. тетрада - SRT
2 байт:
бит 0 - ND
биты 1-7 - HLT
Чтение состояния отсутствуют ST3
накопителя
Поиск C отсутствуют
Формат регистра ST0:
Биты Название Назначение
1, 0 US1, US2 Эти биты содержат код накопителя при
прерывании.
2 HD Номер головки.
3 NC Накопитель не готов, устанавливается,
если накопитель не готов выполнить
команду чтения или записи.
4 EC Сбой оборудования
5 SE Завершена команда "Поиск"
7, 6 I, C Код прерывания:
00 - нормальное завершение;
01 - аварийное завершение;
10 - некорректная команда
11 - нет готовности дисковода.
Формат регистра ST1:
Биты Название Назначение
0 MA Пропуск адресной метки. Этот бит
устанавливается в 1, если контроллер
не может найти адресную метку
1 NN Защита записи, устанавливается , если
при выполнении операции контроллер
получает от дисковода сигнал защиты
записи.
2 ND Не найден сектор.
3 - Зарезервирован
4 OR Переполнение, процессор не успевает
выполнять обмен данными с контроллером
5 DE Ошибка в данных при проверке
контрольной суммы
6 - Зарезервирован.
7 EN Несуществующий сектор, устанавливается,
когда контроллер пытается прочесть
сектор с адресом, большим
существующего.
Формат регистра ST2:
Биты Название Назначение
0 MD Пропущен адресный маркер в поле данных.
1 BC Нечитающаяся дорожка.
2 SN Ошибка сканирования. Устанавливается,
если при выполнении команды
сканирования контроллер не может
найти требуемую дорожку.
3 SH Сканирование выполнено, дорожка
найдена.
4 WC Ошибка адреса дорожки.
5 DD Ошибка в поле данных.
6 CM Во время операции чтения или
сканирования не обнаружен сектор с
с маркером удаленных данных.
7 - Зарезервирован.
Формат регистра ST3:
Биты Название Назначение
1, 0 US1, US2 Код выбранного дисковода.
2 HD Номер выбранной головки.
3 TS Используется режим двухсторонней
записи.
4 T0 Головка установлена на дорожку 0.
5 RDY Дисковод готов к работе.
6 WP Защита записи на диске.
7 FT Неисправность дисковода.
В форматах команд и таблицах используются
следующие обозначения:
MT |
двухсторонняя операция |
MFM |
двойная/одинарная плотность записи |
SK |
пропуск удаленных данных |
HDS |
номер головки для двухстороннего
накопителя |
DS1, DS0 |
номер выбираемого накопителя |
C |
номер цилиндра |
H |
номер головки для двухстороннего
накопителя |
R |
номер сектора |
N |
число байтов в секторе |
EOT |
номер последнего сектора на дорожке |
GPL |
размер промежутка |
DTL |
число считываемых/записываемых байтов |
SC |
число секторов в цилиндре |
D |
данные |
PCN |
номер цилиндра после выполнения команды
|
чтения состояния прерывания |
|
SRT |
время шага, мс |
HUT |
время разгрузки головки |
HLT |
время загрузки головки |
ND |
режим прерывания |
NCN |
номер цилиндра после поиска |
00h |
Успешное завершение операции |
01h |
Неправильная команда |
02h |
Не найдена адресная метка |
03h |
Попытка записи на диск, защищенный от
записи |
04h |
Сектор не найден |
05h |
Ошибка при сбросе (НМД) |
06h |
Произошла замена дискеты |
07h |
Неправильные параметры дисковода (НМД) |
08h |
Переполнение канала ПДП (НГМД) |
09h |
Переход за границу 64К при работе с ПДП |
0Ah |
Обнаружен плохой сектор (НМД) |
0Bh |
Обнаружена плохая дорожка (НМД) |
0Ch |
Неправильный номер дорожки |
0Dh |
Неправильный номер сектора при
форматировании (НМД) |
0Eh |
Обнаружена адресная метка управляющих
данных (НМД) |
0Fh |
Ошибка ПДП (НМД) |
10h |
Обнаружена ошибка в CRC/ECC |
11h |
Данные скорректированы с
использованием ECC (НМД) |
20h |
Сбой контроллера |
40h |
Сбой при поиске дорожки |
80h |
Таймаут - программа не успевает
обрабатывать данные |
AAh |
Дисковод не готов (НМД) |
BBh |
Неизвестная ошибка (НМД) |
CCh |
Сбой при записи (НМД) |
E0h |
Ошибка регистра состояния (НМД) |
FFh |
Ошибка операции считывания (НМД) |
Смещение Размер Содержимое
(+0) 1BEh Загрузочная запись - программа,
которая загружается и выполняется
во время начальной загрузки
операционной системы
(+1BEh) 10H Элемент таблицы разделов диска
(+1CEh) 10H Элемент таблицы разделов диска
(+1DEh) 10H Элемент таблицы разделов диска
(+1EEh) 10H Элемент таблицы разделов диска
(+1FEh) 2 Признак таблицы разделов - 55AAh
Смещение Размер Содержимое
(+0) 1 Признак активного раздела:
0 - раздел не активный;
80h - раздел активный.
(+1) 1 Номер головки для начального сектора
раздела.
(+2) 2 Номер сектора и цилиндра для начального
сектора раздела в формате функции чтения
сектора INT_13h.
(+4) 1 Код системы:
0 - неизвестная система;
1, 4 - DOS;
5 - расширенный раздел DOS.
(+5) 1 Номер головки для последнего сектора
раздела.
(+6) 2 Номер сектора и цилиндра для последнего
сектора раздела в формате функции чтения
сектора INT_13h.
(+8) 4 Относительный номер сектора начала
раздела.
(+12) 4 Размер раздела в секторах.
Смещение Размер Содержимое
(+0) 3 Команда JMP xxxx - переход типа NEAR на
программу начальной загрузки
(+3) 8 Название фирмы-производителя
операционной системы и версия,
например: "IBM 4.0"
(+11) 13 BPB - блок параметров BIOS
(+24) 2 Количество секторов на дорожке
(+26) 2 Количество головок (поверхностей диска)
(+28) 2 Количество скрытых секторов, эти сектора
могут использоваться для схемы
разбиения физического диска на разделы
(0) 2 sect_siz Количество байтов в одном секторе диска.
(+2) 1 clustsiz Количество секторов в одном кластере.
(+3) 2 res_sect Количество зарезервированных секторов.
(+5) 1 fat_cnt Количество таблиц FAT.
(+6) 2 root_siz Максимальное количество дескрипторов файлов,
содержащихся в корневом каталоге диска.
(+8) 2 tot_sect Общее количество секторов на носителе данных
(в разделе DOS).
(+10) 1 media Байт-описатель среды носителя данных.
(+11) 2 fat_size Количество секторов, занимаемых одной
копией FAT.
Смещение Размер Содержимое
(+0) 3 Команда JMP xxxx - переход типа NEAR на
программу начальной загрузки
(+3) 8 Название фирмы-производителя
операционной системы и версия,
например: "IBM 4.0"
(+11) 25 Extended BPB - расширенный блок
параметров BIOS
(+36) 1 Физический номер дисковода (0 -флоппи,
80h - жесткий диск)
(+37) 1 Зарезервировано
(+38) 1 Символ ')' - признак расширенной
загрузочной записи DOS 4.0
(+39) 4 Серийный номер диска (Volume Serial
Number), создается во время
форматирования диска
(+43) 11 Метка диска (Volume Label)
(+54) 8 Зарезервировано, обычно содержит
запись типа 'FAT12 ', которая
идентифицирует формат таблицы размещения
файлов FAT
- 2 sect_siz
Количество байтов в одном секторе диска.
(+2) 1 clustsiz
Количество секторов в одном кластере.
(+3) 2 res_sect
Количество зарезервированных секторов.
(+5) 1 fat_cnt
Количество таблиц FAT.
(+6) 2 root_siz
Максимальное количество дескрипторов файлов, содержащихся в корневом каталоге диска.
(+8) 2 tot_sect
Общее количество секторов на носителе данных (в разделе DOS).
(+10) 1 media
Байт-описатель среды носителя данных.
(+11) 2 fat_size
Количество секторов, занимаемых одной копией FAT.
--------------- Расширение стандартного BPB --------------
(+13) 2 sectors
Количество секторов на дорожке
(+15) 2 heads
Количество магнитных головок
(+17) 2 hidden_l
Количество скрытых секторов для раздела, который по размеру меньше 32 мегабайтов.
(+19) 2 hidden_h
Количество скрытых секторов для раздела, превышающего
по размеру 32 мегабайта. (Только для DOS 4.0).
(+21) 4 tot_secs
Общее количество секторов на логическом диске для раздела,
превышающего по размеру 32 мегабайта.
FFh - 2 стороны, 8 секторов на дорожке;
FEh - 1 сторона, 8 секторов на дорожке;
FDh - 2 стороны, 9 секторов на дорожке;
FCh - 1 сторона, 9 секторов на дорожке;
F9h - 2 стороны, 15 секторов на дорожке;
F8h - жесткий диск.
FAT12 FAT16 Что означает
000h 0000h Свободный кластер
ff0h - ff6h fff0h - fff6h Зарезервированный кластер
ff7h fff7h Плохой кластер
ff8h - fffh fff8h - ffffh Последний кластер в списке
002h - fefh 0002h - ffefh Номер следующего кластера
в списке
Смещение Размер Содержимое
(+0) 8 Имя файла или каталога, выравненное
на левую границу и дополненное пробелами.
(+8) 3 Расширение имени файла, выравненное
на левую границу и дополненное пробелами.
(+11) 1 Атрибуты файла.
(+12) 10 Зарезервировано.
(+22) 2 Время создания файла или время
его последней модификации.
(+24) 2 Дата создания файла или дата
его последней модификации.
(+26) 2 Номер первого кластера, распределенного файлу.
(+28) 4 Размер файла в байтах.
0 |
Файл предназначен только для чтения, в
этот файл нельзя писать и его нельзя стирать. |
1 |
Скрытый файл, этот файл не будет
появляться в списке файлов, создаваемом командой
операционной системы DIR. |
2 |
Системный файл. Этот бит обычно
установлен в файлах, являющихся составной частью
операционной системы. |
3 |
Данный дескриптор описывает метку
диска. Для этого дескриптора поля имени файла и
расширения имени файла должны рассматриваться
как одно поле длиной 11 байт. Это поле содержит
метку диска. |
4 |
Дескриптор описывает файл, являющийся
подкаталогом данного каталога. |
5 |
Флаг архивации. Если этот бит установлен
в 1, это означает, что данный файл не был выгружен
утилитой архивации (например, программой BACKUP). |
6-7 |
Зарезервированы. |
|
|
15 11 10 5 4 0
++
¦ Часы (0...23) ¦ Минуты (0...59) ¦ Секунды/2 (0...29) ¦
++
15 9 8 5 4 0
++
¦ Год (0...119) ¦ Месяц (1...12) ¦ День (1...31) ¦
++
- 1 drv_num
номер устройства
(0 соответствует устройству А, 1 - В и т.д.)
(+1) 1 drv_numd
дополнительный номер устройства внутри драйвера
(+2) 2 sec_size
размер сектора в байтах
(+4) 1 clu_size
число, на единицу меньшее количества секторов в кластере
(+5) 1 clu_base
если содержимое этого поля не равно нулю, то для получения общего числа
секторов в кластере надо возвести 2 в степень clu_base и получившееся
число прибавить к clu_size
(+6) 2 boot_siz
количество зарезервированных секторов (boot-сектора, начало корневого каталога)
(+8) 1 fat_num
количество копий FAT
(+9) 2 max_dir
максимальное число дескрипторов файлов в корневом каталоге (т.е. максимальное
число файлов, которое может содержать корневой каталог на этом устройстве)
(+11) 2 data_sec
номер первого сектора данных на диске (номер сектора, соответствующего
кластеру номер 2)
(+13) 2 hi_clust
максимальное количество кластеров (равно увеличенному на 1 количеству
кластеров данных)
(+15) 1 fat_size
количество секторов, занимаемых одной копией FAT
(+16) 2 root_sec
номер первого сектора корневого каталога
(+18) 4 drv_addr
FAR-адрес заголовка драйвера, обслуживающего данное устройство
(+22) 1 media
байт описания среды носителя данных
(+23) 1 acc_flag
флаг доступа, 0 означает, что к устройству был доступ
(+24) 4 next
адрес следующего блока DDCB, для последнего блока в поле смещения
находится число FFFF
--------------- только для DOS 2.x -----------------
(+28) 2 dir_clu
номер начального кластера текущего каталога (0 для корневого каталога)
(+30) 64 dir_path
строка в формате ASCIIZ, содержащая путь к текущему каталогу
--------------- DOS 3.х ----------------------------
(+28) 2 reserv1
зарезервироано, обычно равно 0
(+30) 2 built
число FFFF в этом поле означает, что блок DDCB был построен
- 1 drv_num
номер устройства
(0 соответствует устройству А, 1 - В и т.д.)
(+1) 1 drv_numd
дополнительный номер устройства внутри драйвера
(+2) 2 sec_size
размер сектора в байтах
(+4) 1 clu_size
число, на единицу меньшее количества секторов в кластере
(+5) 1 clu_base
если содержимое этого поля не равно нулю, то для получения общего числа
секторов в кластере надо возвести 2 в степень clu_base и получившееся
число прибавить к clu_size
(+6) 2 boot_siz
количество зарезервированных секторов (boot-сектора, начало корневого каталога)
(+8) 1 fat_num
количество копий FAT
(+9) 2 max_dir
максимальное число дескрипторов файлов в корневом каталоге (т.е. максимальное
число файлов, которое может содержать корневой каталог на этом устройстве)
(+11) 2 data_sec
номер первого сектора данных на диске (номер сектора, соответствующего
кластеру номер 2)
(+13) 2 hi_clust
максимальное количество кластеров (равно увеличенному на 1 количеству
кластеров данных)
(+15) 1 fat_size
количество секторов, занимаемых одной копией FAT
(+16) 1 reserv1
зарезервировано
(+17) 2 root_sec
номер первого сектора корневого каталога
(+19) 4 drv_addr
FAR-адрес заголовка драйвера, обслуживающего данное устройство
(+23) 1 media
байт описания среды носителя данных
(+24) 1 acc_flag
флаг доступа, 0 означает, что к устройству был доступ
(+25) 4 next
адрес следующего блока DDCB, для последнего блока в поле смещения
находится число FFFF
(+29) 2 reserv2
зарезервироано
(+31) 2 built
число FFFF в этом поле означает, что блок DDCB был построен
F000:FFF5 (8) - дата изготовления BIOS;
F000:FFFC (2) - не используется;
F000:FFFE (1) - код типа компьютера.
|