Помимо двух уже описанных частей - автономного теста функционирования
и программы запуска, система BIOS в ПЗУ содержит множество других программ
и они-то представляют для нас наибольший интерес. Сюда входят программы
обслуживания всего стандартного периферийного оборудования IBM/PC. Эти
программы выполняют основные функции управления клавиатурой, дисплеем,
дискетами, асинхронным адаптером связи, устройством печати и кассетным
интерфейсом. Работой с этими программами нам необходимо овладеть, чтобы
полностью использовать все возможности IBM/PC. Подробно мы рассмотрим их в
главах с 6 по 11.
4.4. Начальная загрузка - загрузочная запись
Загрузочная запись необходима для запуска ДОС. Принцип использования
загрузочной записи реализован практически на всех компьютерах. Загрузочная
запись содержит минимум необходимых команд для считывания и запуска
основных частей операционной системы.
При запуске IBM/PC либо включением питания, либо нажатием клавиш
Ctrl-Alt-Del, процедура запуска системы BIOS в ПЗУ считывает первую запись
дискеты, установленной в дисковод А и помещает ее в стандартную область
памяти, по адресу 31744 или 7С00 (шестнадцатиричное). После считывания
загрузочной записи BIOS передает ей управление, выполняя переход по адресу
31744. Далее загрузочная запись должна продолжить загрузку операционной
системы.
Основное назначение загрузочной записи для ДОС заключается просто в
загрузке файлов IBMBIO.COM и IBMDOS.COM. Загрузочная запись имеет размер
стандартного сектора на дискете, 512 байт, что недостаточно для сложной
программы. Для упрощения работы этой программы, оба файла, IBMBIO.COM и
IBMDOS.COM, размещаются в определенных постоянных местах на дискете. Это
избавляет программу загрузки от необходимости искать их в справочнике
дискеты.
Этим, кстати, "системная" дискета отличается от обычной - на ней, в
определенных местах, находятся два системных файла IBMDOS.COM и
IBMBIO.COM. Поэтому нельзя просто преобразовать обычную дискету в
системную - места, зарезервированные для системных файлов, могут быть
заняты другими файлами.
Хотя загрузочная программа не столь совершенна, чтобы осуществлять
поиск системных файлов, она все же способна проверить правильность их
включения в справочник. Поскольку оба системных файла включены в
справочник дискеты, они защищены как от стирания, так и от любых других
способов доступа установлением атрибутов скрытого и системного файла. (В
следующей главе мы поясним, что такое скрытые и системные файлы).
В связи с простотой ее задачи, программа загрузки является
относительно стабильной составной частью ДОС. Ее потребовалось изменить,
когда изменялся размер или местоположение системных файлов, а это
произошло с введением поддержки двухсторонних дискет в версии ДОС 1.10.
Вы можете обнаружить различия в загрузочных записях ДОС различных
версий. (Загрузочную запись легко просмотреть с помощью моей утилиты
DiskLook: запустите DiskLook, нажмите клавишу F7 и введите адрес
загрузочной записи на дискете: сторона 0, дорожка 00 и сектор 1, после
чего нажмите клавишу F6 - на экране будет отображена загрузочная запись).
Загрузочная запись ДОС версии 1.00 имеет одно незначительное отличие
от всех остальных версий, которое легко заметить.Вместо имени Роберта
О'Рира в исходной версии ДОС, во всех последующих версиях указывается
название фирмы "Майкрософт".
4.5. Дополнительные операции с устройствами: IBMBIO.COM
Первый из двух системных файлов, IBMBIO.COM, предназначен для
дополнения функций системы BIOS в ПЗУ. Как BIOS в ПЗУ, так и IBMBIO.COM
занимаются обслуживанием операций ввода/вывода или обслуживанием
устройств, что то же самое. Такая функция предполагает обработку различных
подробностей, связанных с функционированием устройств ввода/вывода. Сюда
же включается обнаружение ошибок и их исправление, что для программ еще
сложнее.
Программы IBMBIO.COM отличаются тем, что их легко можно изменить,
чего нельзя сказать о программах BIOS в ПЗУ. Файл IBMBIO.COM предназначен
для решения трех задач, которые невозможно решить с помощью системы BIOS в
ПЗУ. Первая задача заключается в настройке на нужды конкретной
операционной системы, ДОС. Любая операционная система, включая СР/М-86 и
р-систему Калифорнийского университета в Сан-Диего, может использовать
универсальную систему BIOS в ПЗУ, но в той части, в которой системы
различаются, они должны реализовывать собственные фрагменты системы
ввода/вывода.
Вторая задача IBMBIO.COM заключается в исправлении любых ошибок в
BIOS в ПЗУ, если в этом возникнет необходимость. Программы, подобные
системе BIOS, проверяются очень тщательно, ведь их размещение в ПЗУ не
допускает исправлений. Если ошибки все же будут позднее обнаружены в BIOS,
их можно будет исправить путем внесения соответствующих изменений в
IBMBIO.COM. Это делается путем изменения векторов прерываний таким
образом, чтобы управление при обращении к операциям BIOS сначала попадало
в IBMBIO.COM, а уже затем в BIOS. Соглашения о вызовах процедур системы
BIOS в ПЗУ всегда предполагает использование прерываний, вместо прямых
переходов по адресам ПЗУ. Основная причина использования прерываний как
раз и состоит в обеспечении возможностей перехвата управления у процедур
BIOS, ведь, в противном случае, такой возможности просто не существовало
бы. В главе 7, когда будет рассматриваться программа управления дискетами,
известная под названием "Disk base", Вы увидите одно из таких изменений,
частично подменяющее функции системы BIOS в ПЗУ.
Третья задача, которую не позволяет решить BIOS, и, которую за нее
решает IBMBIO.COM, заключается в обслуживании новых периферийных
устройств, таких как жесткие диски большой емкости, или восьмидюймовые
(203мм) дискеты, или плоттеры, или любые из сотен устройств, которые могут
быть подключены к IBM/PC. Когда новое устройство ввода/вывода подключается
к IBM/PC, обслуживающая его программа должна включаться в файл IBMBIO.COM
или его расширения, без необходимости замены микросхем ПЗУ, в которых
размещается система BIOS.
В наиболее ранних версиях ДОС задача включения нового устройства в
систему предполагала внесение изменений в IBMBIO.COM и, возможно, в другие
системные программы ДОС. Хотя это не слишком сложно для таких фирм как
"ИБМ" или "Майкрософт", такая задача может оказаться непосильной для
пользователя, которому требуется включить дополнительное оборудование в
свою систему.
Поскольку возможность добавления новых устройств к компьютеру
составляет немаловажное условие его успеха на рынке, процедура включения
обслуживающих программ в ДОС была упрощена, начиная с ДОС версии 2.00.
Когда управление впервые после запуска системы передается IBMBIO.COM, он
проверяет, находится ли на дискете файл конфигурации системы. Если файл
конфигурации найден, считываются его команды, часть которых определяет ряд
параметров системы.
Команды файла конфигурации включают имена всех программ обслуживания
устройств, которые необходимо включить в BIOS. Каждая из этих программ
загружается в память как дополнение к IBMBIO.COM. Такая схема облегчает
добавление новых устройств, позволяет делать это модульно, не затрагивая
системные файлы ДОС.
Как правило, любая программа, работающая на IBM/PC, будет
использовать обычную версию BIOS для ДОС. Однако, в некоторых случаях
программе необходимо бывает особое обслуживание операций ввода/вывода.
Поскольку IBMBIO.COM представляет собой дисковый файл, который можно
изменить, имеет смысл разработать версию IBMBIO.COM, настроенную на Ваши
конкретные нужды. Пример такой настройки Вы можете найти в диагностических
программах.
4.6. Основа ДОС: IBMDOS.COM
Разделение операционной системы на два модуля, IBMBIO.COM и
IBMDOS.COM позволяет разделить те части, которые специфичны для
конкретного компьютера и те, которые являются общими для всех компьютеров,
работающих под управлением ДОС.
Служебные процедуры ДОС, в определенной степени произвольно,
разделены на те, которые вызываются с помощью собственных прерываний, и
те, которые разделяют общее прерывание (номер 33, шестнадцатиричное
значение 21). В терминологии ДОС, первая группа называется прерываниями
ДОС, а вторая - вызовами функций. В обоих случаях для их вызова
используются программные прерывания, причем по той же причине, что и для
вызова программ BIOS: для обеспечения модульности.
Диапазон прерываний от 32 до 63 (шестнадцатиричные значения от 20 до
3F) зарезервированы для использования ДОС. Используется только часть этих
прерываний, а остальные обеспечивают возможность дальнейшего расширения.
Программы обслуживания прерываний ДОС включают чтение и запись секторов
дискеты, доступ к контролю за ошибками ДОС и операциями клавиатуры
Ctrl-Break.
Вызовы функций ДОС обеспечивают, в основном, промежуточный уровень
обслуживания операций ввода/вывода. В качестве примеров можно упомянуть
ввод с клавиатуры, обычный вывод на экран дисплея, ввод/вывод по
асинхронной линии связи и вывод на печать. Предусмотрены также логические
операции для дискет - открытие и закрытие файлов, поиск в справочнике
файлов, удаление и создание файлов, чтение и запись данных. Эти процедуры
обеспечивают практически все элементарные операции, которые могут
потребоваться программе для работы с файлами и данными, хранящимися в
файле, так чтобы программе не приходилось самостоятельно расшифровывать
данные справочников, таблиц размещения файлов и т.п.
Большая часть этих служебных процедур ДОС интенсивно используется
программами более высокого уровня ДОС. Например, процедура поиска в
справочнике используется командами DIR и COPY. Кроме того, она
используется интерпретатором команд для поиска программных файлов. В
разделе 4.9 будет рассмотрен полный список служебных процедур ДОС.
4.7. Файл COMMAND.COM и внутренние команды
Следующая составная часть ДОС, файл COMMAND.COM, одна из наиболее
интересных частей, как с точки зрения тех услуг, которые она предоставляет
пользователю, так и с точки зрения принципов ее функционирования.
COMMAND.COM имеет несколько функций. Прежде всего, это "процессор команд",
что означает возложенные на него функции ввода команды, набираемой на
клавиатуре, и определения дальнейших действий.
Когда вводится внутренняя команда, такая как DIR, COPY, TYPE, REM или
PAUSE, то запрашивается случайная процедура, "встроенная" в COMMAND.COM,
так что она может выполняться немедленно.
Чтобы распознавать внутренние команды, COMMAND.COM содержит таблицу
имен команд. Если просмотреть файл COMMAND.COM, то можно увидеть эти имена
команд. Для просмотра файла COMMAND.COM можно воспользоваться программой
DEBUG или DiskLook. Там же Вы увидите сообщение, которое ДОС выдает в
начале работы. При желании эти сообщения можно изменить с помощью команды
DEBUG или SecMod, так чтобы ДОС начинала работу выдачей Вашей фамилии или
названия компании. Можно также изменить и имена внутренних команд, причем
сделать это просто, если не изменяется длина имени.
Если команды нет в таблице внутренних команд, значит имеется в виду
внешняя команда, которую COMMAND.COM будет искать во внешнем файле. В
ответ на наш запрос, COMMAND.COM осуществляет поиск файла обработки
команды на соответствующей дискете и запускает его выполнение.