Фактически эта часть COMMAND.COM
не отличается от IBMDOS.COM.
Вторая часть COMMAND.COM используется только временно:
при запуске системы она осуществляет поиск файла пакетной
обработки AUTOEXEC.BAT и, если он найден, его выполнение.
После выполнения этой функции данная часть COMMAND.COM
уже не нужна.
Третья, наиболее интересная часть COMMAND.COM является
полурезидентной и одной из наиболее хорошо проработанных
частей ДОС. Эта часть включает интерпретатор команд и
программы, реализующие внутренние команды ДОС.
Необходимо
отдавать себе отчет в том, что такая сложная программа как
интерпретатор команд не может быть очень компактной. С одной
стороны, лучше всего было бы, чтобы интерпретатор команд
постоянно находился в памяти.
С другой стороны, не хотелось
бы, чтобы он занимал место в памяти все время, особенно, если
места не слишком много (в системах с 64К, например).
Интересное решение этой проблемы заключается в том,
чтобы разместить эту часть COMMAND.COM в верхних адресах
памяти (обычно используются последние адреса) и позволить
другим программам затирать эту область памяти.
Когда снова возникает необходимость использования
интерпретатора команд, резидентная часть СOMMAND.COM сначала
проверяет находится ли интерпретатор команд в памяти.
В ответ на наш запрос, COMMAND.COM
осуществляет поиск файла обработки команды на соответствующей
дискете и запускает его выполнение.
Существует три типа файлов обработки команд, поиск
которых в определенном порядке осуществляет COMMAND.COM.
Название команды точно совпадает с именем файла, в котором
хранится програма обработки команды. Три типа файлов
обработки команд различаются расширениями имен файлов. Три
расширения, в порядке их приоритетности: ".COM", которое
обозначает программный файл в одном из двух программных
форматов; ".EXE", обозначающее программный файл другого
формата и ".BAT", обозначающее файл пакетной обработки.
(Форматы этих файлов и масса другой информации, касающейся
файлов на дискетах, приведены в следующей главе.)
Когда COMMAND.COM находит программный файл в любом
формате, он выполняет загрузку этого файла в память и
выполняет любое необходимое преобразование. После загрузки
файла и формирования приставки программного сегмента,
COMMAND.COM передает управление этой программе, так чтобы она
могла выполнить свою работу.
Если файл обработки команды относится к типу ".BAT", то
есть является файлом пакетной обработки, то он содержит в
формате текстового файла в коде ASCII последовательность
команд, которые должны выполняться так, как будто они
вводятся с клавиатуры. Одна из многих задач COMMAND.COM
заключается в отслеживании позиции в файле пакетной
обработки, так чтобы после выполнения одной команды сразу
переходить к другой. Если в процессе обработки одного
пакетного файла будет вызван другой, то возврата к первому не
произойдет, так как файлы пакетной обработки не могут быть
вложенными, зато их можно объединять в цепочку.
В некоторых системах весь ввод команд может быть
переназначен на файл, причем это относится как к программам,
вводящим данные с клавиатуры, так и к интерпретатору команд.
К ДОС это не относится. Только интерпретатор команд
COMMAND.COM может автоматически выполнять чтение из файлов
пакетной обработки.
Кстати, программы могут вносить изменения в файл
пакетной обработки и таким образом определять, какая команда
будет выполнена следующей. Это часто делается в сложных
приложениях для замены последовательного выполнения программ.
Файл COMMAND.COM имеет значительно больше функций, чем
было описано. Фактически, COMMAND.COM разделяется на три
части. Первая часть размещается в памяти сразу после програм
IBMBIO.COM и IBMDOS.COM и, подобно им, становится
резидентной частью ДОС.