DOS предпола-
гает, что клавиатура имеет ISR int 1Bh, так что ISR клавиатуры
может обрабатывать break немедленно. Для операций над блочными
устройствами DOS использует текущий директорий.
DOS поддерживает
список используемых кэш-блоков для обработки запросов на чте-
ние/запись отдельных блоков и для обращения к блокам директория и
FAT. Длина каждого кэш-блока указана в DOS_W_MaxSector.
Заголов-
ками для таблиц описателей и FCB файловой системы являются, соот-
ветственно, DOS_D_HDLSFT и DOS_D_FCBSFT. Листинг 4-12 показывает
содержимое этого списка.
Листинг 4-12.
Одно из неописанных полей
внутри FCB содержит номер системного файла(FSN); этот SFN являет-
ся индексом системной таблицы файлов FCB. Эта системная таблица
указывает DOS, как найти устройство.
"Список списков"
DOS записывает адреса системных таблиц как описателей так и
FCB в структуру данных, известную как "список списков". Эта
структура данных содержит и другую важную информацию. Вашему TSR
может понадобиться просмотреть содержимое этого списка или неко-
торые структуры данных, на которые он указывает. Недокументиро-
ванная функция AH=52h прерывания int 21h возвращает адрес списка
списков в паре регистров ES:BX. Фрагмент программы, приведенной
на листинге 4-11 показывает, как найти этот список.
- 4-18 -
Листинг 4-11. Поиск списка списков
----------------------------------------------------------------
ListAddr DW 0,0
mov ah,52h ; запрос DOS, где он размешен
int 21h ; (недокументированная функция)
mov ListAddr,bx ; адрес возвращается в ex:bx
mov ListAddr+2,es
----------------------------------------------------------------
Короче говоря, имеются вполне определенные функции для раз-
ных входов в список списков. Блочное устройство (обычно диск) за-
писывает информацию о структуре файловой системы в блок управле-
ния устройством (DCB). Данные DCB обычно включают размер диска,
количество входов в корневой директорий, количество FAT и т.д.
DOS записывает адрес системных часов в качестве оптимизатора про-
изводительности. Вдобавок к обработке запросов о времени и дате,
DOS записывает временные метки при каждой записи FCB и затем за-
писывает время самого последнего обращения к записи описателя.
DOS использует сохраненный адрес клавиатуры для проверки сигнала
break и для сообщения об ошибках "деление на нуль".