Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
75
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Глава 4: Команды файла Config.sys

Особенность таких операций в том, что высвобождение памяти, занятой уже загруженным модулем, DOS осуществляет только в пределах обыкновенной памяти, то есть до границы 640 кбайт. Когда в команде DOS (4.08) указан параметр NOAUTO, загрузка командой INSTALL будет производиться в обыкновенную память, и тогда можно временно загрузить, например, командный интерпретатор,

чтобы вызвать паузу и дать возможность прочитать выведенные на экран сообщения:

INSTALL=C:\Command.com /c pause

Еще один пример использования команды INSTALL для временной загрузки резидентного модуля приведен в разделе 9.09-01.

Примечание 1: команда INSTALL не принимает участия в процедуре оптимизации распределения памяти, организуемой программой MEMMAKER.EXE и не принимает дополнительные параметры (/L и /S, 4.07), влияющие на размещение загружаемых модулей.

Примечание 2: по умолчанию загружаемые командой INSTALL программы и драйверы размещаются за пределами обыкновенной памяти (выше 640 кбайт), но будут размещены ниже границы 640 кбайт, если в команде DOS (4.08) указан параметр NOAUTO, а также если адресное пространство в области UMB недостаточно или недоступно (условия доступности в разделе 4.07). В любом случае сообщение об ошибке не выдается.

4.16INSTALLHIGH – загрузить программу

Команда INSTALLHIGH делает то же самое, что команда INSTALL (4.15), но

только загружает программы и драйверы за пределы обыкновенной памяти независимо от того, указан ли параметр NOAUTO в команде DOS (4.08).Команду INSTALLHIGH не следует использовать для загрузки резидентных модулей, которые должны быть выгружены после исполнения своей миссии. Все остальные сведения из раздела 4.15 в равной мере применимы к команде INSTALLHIGH.

4.17LASTDRIVE – последний дисковод

Команда LASTDRIVE (= последний дисковод) определяет адресное пространство, выделяемое для системной таблицы CDS (A.03-03). Записи в таблице CDS хранят имена текущих каталогов для всех логических дисков как реальных, так и виртуальных. В начальный момент загрузки MS-DOS7 создает в таблице CDS по одной записи на каждый логический диск, опознанный системой BIOS компьютера, и потом заполняет оставшееся пространство недействительными записями (резервациями) до тех пор, пока не будет зарезервирована запись для

– 91 –

Глава 4: Команды файла Config.sys

последней буквы диска, указанной в команде LASTDRIVE. По умолчанию

принимается

LASTDRIVE=Z

Для размещения такой таблицы CDS потребуется 2288 байт. Если Вы считаете этот объем таблицы CDS избыточным, то можно указать другую последнюю букву диска, но в любом случае места там должно быть достаточно для всех дисков, включая те, которые могут быть задействованы позже посредством установки дополнительных драйверов (для CD/DVD-ROM, сетевых служб и т.п.).

Примечание 1: по умолчанию MS-DOS7 размещает таблицу CDS за пределами обыкновенной памяти (выше 640 кбайт), но будет размещать ее ниже границы 640 кбайт, если в команде DOS (4.08) указан параметр NOAUTO, а также если адресное пространство в области UMB недостаточно или недоступно (условия доступности в разделе 4.07). В любом случае сообщение об ошибке не выдается.

4.18LASTDRIVEHIGH – последний дисковод

Команда LASTDRIVEHIGH делает то же самое, что команда LASTDRIVE (4.17), но только определяет создание таблицы CDS за пределами обыкновенной памяти независимо от того, указан ли параметр NOAUTO в команде DOS (4.08). Все остальные сведения из раздела 4.17 в равной мере применимы к команде

LASTDRIVEHIGH.

4.19MENUCOLOR – цвет меню

Команда MENUCOLOR может быть применена только в составе конфигурационных меню или субменю, то есть в таких блоках команд, которые либо имеют заголовок [menu], либо объявлены как субменю в вышестоящем меню или субменю. Каждая команда MENUCOLOR задает цвета текста и фона при отображении того меню (или субменю), в блок команд которого она включена, например, так:

MENUCOLOR=7,0

Здесь первая цифра означает код цвета текста (7 – белый), а следующая после запятой цифра означает код цвета фона (0 – черный). Именно такие значения кода цвета принимаются по умолчанию, то есть когда команда MENUCOLOR в блоке меню отсутствует. Другие допустимые значения кодов цвета приведены в приложении A.10-5.

– 92 –

Глава 4: Команды файла Config.sys

4.20MENUDEFAULT – выбираемый по умолчанию пункт меню

Команда MENUDEFAULT может быть применена только в составе конфигурационных меню или субменю, то есть в таких блоках команд, которые либо имеют заголовок [menu], либо объявлены как субменю в вышестоящем меню или субменю. Обычно команда MENUDEFAULT помещается после перечня пунктов меню и определяет тот пункт, который должен быть выбран тогда, когда пользователь не осуществил свой выбор в течение заданного интервала времени,

например

MENUDEFAULT=L007,20

Здесь справа от знака равенства указано имя блока конфигурационных команд [L007], исполнение которого следует начать по умолчанию. Затем после запятой указан интервал времени – 20 секунд, в течение которого загрузчик IO.SYS должен ожидать выбора пункта меню пользователем, прежде чем запустить на исполнение вариант, заданный командой MENUDEFAULT. Допускаются задержки от 1 до 99 секунд. Примеры конфигурационных меню с использованием команды

MENUDEFAULT приведены в разделах 9.04-01, 9.09-01 и 9.11-03.

4.21MENUITEM – пункт меню

Команда MENUITEM может быть применена только в составе конфигурационных меню или субменю, то есть в таких блоках команд, которые либо имеют заголовок [menu], либо объявлены как субменю в вышестоящем меню или субменю. Для каждого пункта меню командой MENUITEM должно быть объявлено имя соответствующего блока конфигурационных команд, а также задан текст названия пункта, воспроизводимый на экране в составе меню, например

MENUITEM=L007, Relocate DOS to 5600 kb RAM-disk R:

Здесь "L007" – пример имени блока конфигурационных команд, который должен быть в файле CONFIG.SYS и должен начинаться с отдельной строки заголовка [L007] (2.03-05, пример в разделе 9.09-01). Далее в строке с командой MENUITEM, справа от запятой приведен текст названия данного пункта меню. Этот текст может содержать слова, разделяемые пробелами, но не должен содержать квадратных скобок [ ], знаков точки с запятой ( ; ), а также знаков косой черты, как прямых ( / ), так и обратных ( \ ).

Во время интерпретации выбора пункта меню загрузчик IO.SYS создает переменную окружения CONFIG и присваивает ей в качестве значения имя блока конфигурационных команд, соответствующего выбранному пункту меню (в приведенном выше примере это L007). Позже, во время интерпретации строк файла AUTOEXEC.BAT или любого другого batch-файла, значение переменной CONFIG

– 93 –

Глава 4: Команды файла Config.sys

может быть использовано для адаптации исполнения в соответствии с выбранным вариантом конфигурации.

Примечание 1: суммарное количество команд MENUITEM и SUBMENU (4.29) в любом блоке меню не должно превышать 9.

4.22MULTITRACK – многодорожечный доступ

Для доступа к любому диску необходимо указать начальный сектор и число секторов, которые надлежит прочитать или записать. Старые версии BIOS в компьютерах выпуска 1980-х годов обслуживали такие запросы на доступ только в пределах одной дорожки диска. Требовалось, чтобы сумма номера начального сектора и числа секторов не превосходила бы полного числа секторов на дорожке, иначе процесс записи или считывания "заворачивался" обратно на начало той же дорожки. На таких старых компьютерах нельзя пользоваться операциями многодорожечного доступа, и для того в файле CONFIG.SYS должна быть строка

MULTITRACK OFF

Все современные системы BIOS поддерживают операции многодорожечного доступа, то есть автоматически переводят процесс на следующую дорожку по завершении записи или считывания предыдущей дорожки. MS-DOS7 пользуется многодорожечным доступом, фактически принимая команду MULTITRACK ON по умолчанию. По этой причине сейчас команда MULTITRACK в файле CONFIG.SYS обычно не упоминается.

4.23NUMLOCK – режим цифровой части клавиатуры

Команда NUMLOCK (NUMerical keypad LOCK = запирание клавиш цифровой группы) определяет состояние функционирования группы клавиш цифрового набора в правой части клавиатуры. Обычно в современных компьютерах принимается по умолчанию выключенное состояние, при котором эти клавиши дублируют роли клавиш основной части клавиатуры (стрелочек, PgUp – PgDn и др.). Если важно избежать иного состояния, то надо ввести команду

NUMLOCK OFF

Для перехода к набору цифр и знаков арифметических операций необходимо изменить состояние на противоположное командой

NUMLOCK ON

В обоих состояниях переключателя NUMLOCK клавишами цифровой группы можно выбирать пункт конфигурационного меню в ходе загрузки MS-DOS7, но при выключенном состоянии они действуют как стрелочки вверх и вниз, а при

– 94 –

Глава 4: Команды файла Config.sys

включенном позволяют выбирать пункт по номеру. Если способ выбора пункта меню небезразличен, то команду NUMLOCK можно указать в составе блока [menu]

файла CONFIG.SYS.

О влиянии переключателя NUMLOCK на коды клавиш, возвращаемые обработчиком прерывания INT 16\AX=10h, написано в примечании 6 к таблице

A.02-1.

4.24REM – вставка комментария

Загрузчик IO.SYS воспринимает REM (REMark = замечание) как команду игнорировать все остальные слова в той же строке до конца данной строки. Основная миссия команды REM – обеспечить возможность введения в файл CONFIG.SYS строк комментариев, которые не нужно воспроизводить на экране. Команду REM иногда вставляют в начало строки специально для того, чтобы временно предотвратить исполнение записанной в данной строке другой команды.

Примечание 1: загрузчик IO.SYS при интерпретации строк файла CONFIG.SYS не предоставляет тех дополнительных возможностей, которые

обусловливают особенности исполнения одноименной команды REM (3.24) командным интерпретатором COMMAND.COM.

4.25SET – присвоение значения переменной

Команда SET (= установить) в строке файла CONFIG.SYS позволяет присваивать и переопределять значение переменной окружения, например:

SET Var_Name=New_Var_Value

здесь:

Var_name – пример имени переменной окружения. Оно может содержать цифры, но должно начинаться с буквы.

New_Var_Value – пример строкового значения, присваиваемого указанной переменной. Значение не должно содержать знаков равенства. Если в строке имеются пробелы, в том числе предшествующие или следующие до конца строки, то все эти

пробелы будут включены в состав значения переменной окружения.

Команда SET, интерпретируемая загрузчиком IO.SYS в строках файла CONFIG.SYS, действует не совсем так, как одноименная команда SET, исполняемая командным интерпретатором COMMAND.COM (3.25). Особенности исполнения команды SET загрузчиком IO.SYS состоят в следующем:

– 95 –

Глава 4: Команды файла Config.sys

если в строке файла CONFIG.SYS после команды SET не указано имя переменной, то исполнение этой команды не вызывает

воспроизведения на экране перечня действующих переменных окружения.

приписывание вопросительного знака справа (SET?=...) вызывает останов исполнения с запросом [Enter=Y, Esc=N]?. Дальнейшее

исполнение или неисполнение этой команды зависит от ответа пользователя.

все команды SET в файле CONFIG.SYS исполняются после команд DEVICE и DEVICEHIGH, но перед исполнением команд

INSTALL, NSTALLHIGH и SHELL. Именно такого порядка

расположения команд желательно придерживаться при составлении файла CONFIG.SYS.

подстановки значений (2.03-03) и перенаправления (2.04-022.04-05) в строках файла CONFIG.SYS не исполняются. Вместо того

соответствующие знаки вводятся в значение переменной окружения. Иногда этим намеренно пользуются для введения в

значение переменной знаков процента и перенаправлений.

4.26SHELL – загрузка командного интерпретатора

Команда SHELL (= оболочка) служит для передачи управления исполняемому файлу, который уже не вернет управление обратно загрузчику IO.SYS. Поэтому команда SHELL исполняется последней в файле CONFIG.SYS и обычно записывается в его последней строке. Программы, которым передается управление посредством команды SHELL, могут быть загрузчиками других операционных систем (например, LOADLIN.EXE для системы LINUX) или командными интерпретаторами. Вот пример строки с передачей управления командному интерпретатору NDOS.COM:

SHELL=C:\DOS\NU\Ndos.com /f @C:\DOS\NU\Ndos.ini

здесь:

C:\DOS\NU\ – пример пути к командному интерпретатору;

/f @C:\DOS\NU\Ndos.ini – пример группы параметров, передаваемых загружаемому командному интерпретатору.

Когда строки с командой SHELL в файле CONFIG.SYS нет, загрузчик IO.SYS пытается найти собственный командный интерпретатор MS-DOS7файл COMMAND.COM – в корневом каталоге текущего диска и передать управление ему. В таком случае COMMAND.COM будет запущен на исполнение с параметрами, принимаемыми по умолчанию. Тем не менее лучше указывать параметры запуска явно, например, так:

– 96 –

Глава 4: Команды файла Config.sys

SHELL=COMMAND.COM A:\ /e:1008 /p

В этом примере отсутствие пути перед именем файла COMMAND.COM означает, что его следует искать в текущем каталоге. Назначение параметров командного интерпретатора COMMAND.COM подробно рассмотрено в разделе 6-04. Другие примеры передачи управления командному интерпретатору с помощью команды SHELL приведены в разделах 9.01-01, 9.04-01 и 9.09-01.

4.27STACKS – спецификация дополнительных стеков

Команда STACKS (= стеки) в файле CONFIG.SYS резервирует место в памяти для дополнительных стеков DOS, используемых при обработке вложенных прерываний. Параметры команды определяют количество дополнительных стеков и пространство, выделяемое каждому стеку. Принимаемые по умолчанию значения

эквивалентны команде

STACKS=9,256

здесь:

9

количество дополнительных стеков (допустимо от 8 до 64 и 0);

256

длина каждого стека в байтах (допустимо от 32 до 512 и 0).

Переполнение стека неприятное событие, оно влечет за собой необходимость перезагрузки компьютера и может быть причиной потери части данных. Чтобы наверняка избежать переполнения, длину стеков не рекомендуется устанавливать меньше принимаемой по умолчанию величины.

Примечание 1: по умолчанию MS-DOS7 размещает дополнительные стеки за пределами обыкновенной памяти (выше 640 кбайт), но разместит их ниже границы 640 кбайт, если в команде DOS (4.08) указан параметр NOAUTO, а также если адресное пространство в области UMB недостаточно или недоступно (условия доступности в разделе 4.07). В любом случае сообщение об ошибке не выдается.

4.28STACKSHIGH – спецификация дополнительных стеков

Команда STACKSHIGH делает то же самое, что команда STACKS (4.27), но

только определяет создание стеков за пределами обыкновенной памяти независимо от того, указан ли параметр NOAUTO в команде DOS (4.08). Все остальные сведения из раздела 4.27 в равной мере применимы к команде STACKSHIGH.

– 97 –

Глава 4: Команды файла Config.sys

4.29SUBMENU – объявление субменю

Команда SUBMENU (= субменю) применяется наравне с командой MENUITEM (4.21) только в составе конфигурационных меню или субменю, то есть в таких блоках команд, которые либо имеют заголовок [menu], либо объявлены как субменю в вышестоящем меню или субменю. Команда SUBMENU объявляет имя блока конфигурационных команд, придает этому блоку статус меню, а также задает текст названия субменю, воспроизводимый на экране в составе меню, например:

SUBMENU=6000, Relocation to RAM-disk

Здесь "6000" – имя блока [6000] конфигурационных команд, которому будет присвоен статус субменю, а справа от запятой текст названия субменю. На этот текст налагаются те же ограничения, что и в команде MENUITEM (4.21). Блок конфигурационных команд, которому присваивается статус субменю, должен иметь такую же структуру, что и основной блок меню. Он может включать до 9 позиций выбора, каждая из которых представлена отдельной строкой с командой MENUITEM или SUBMENU. Отличие блока субменю состоит только в том, что его

произвольное уникальное имя не должно совпадать как с зарезервированными именами ( [menu] и [common] ), так и с именами других конфигурационных блоков.

4.30SWITCHES – дополнительные параметры

Команда SWITCHES (= переключатели) позволяет задать четыре необязательные установки режима работы DOS:

SWITCHES= /K /N /F /E:64

здесь:

/K

позволяет старым программам, разработанным в расчете на

 

86-клавишную клавиатуру, работать на компьютерах с

 

усовершенствованной 101/108-клавишной клавиатурой.

/N

блокирует клавиши F5 и F6 на время загрузки DOS,

 

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

 

команд в файлах CONFIG.SYS и AUTOEXEC.BAT.

/F

исключает двухсекундную задержку после воспроизведения на

 

экране сообщения "Starting WINDOWS...".

/E:64

выделяет 64 байта обыкновенной памяти (допускается от 48 до

 

1024 байт) для EBIOS – обработчика обращений к дискам с

 

адресацией LBA (примечание 4 к A.13-6). Если цифра после

 

параметра /E не указана, то весь код EBIOS будет размещен в

 

обыкновенной памяти. Параметр /E нужен старым компьютерам,

 

у которых система BIOS обеспечивает только адресацию CHS.

– 98 –

Глава 5 Избранные драйверы для MS-DOS7

Драйверы это файлы, содержащие исполняемый резидентный машинный код. Резидентным называется код, написанный специально для того, чтобы его загрузили в оперативную память компьютера и оставили там ждать момента, когда он будет запрошен. Когда запрос поступает, код драйвера принимает управление на себя, исполняет свою миссию, и потом снова "ждет" очередного запроса. По тому же принципу действуют элементы ядра любой операционной системы. MS-DOS

сочетает ограниченное число функций своего ядра с разнообразными функциональными расширениями от драйверов. Правильный выбор и своевременное обновление драйверов обеспечивают адаптацию и выживание DOS в условиях постоянного совершенствования аппаратной части компьютеров.

Драйверы могут представлять собой файлы со специальным драйверным заголовком (A.05-1), как правило, имеющие суффикс *.SYS, или обычные исполняемые файлы с резидентной частью, как правило, имеющие суффикс *.COM или *.EXE. Драйверы с суффиксом *.SYS необходимо загружать командой DEVICE (4.06) или DEVICEHIGH (4.07) из строк конфигурационного файла CONFIG.SYS. Примеры составления файла CONFIG.SYS приведены в разделах

9.01-01, 9.04-01, 9.09-01. Загрузка командами DEVICE и DEVICEHIGH дает больше возможностей повлиять на построение системных структур DOS, потому что процесс их построения к тому моменту еще не завершен.

Драйверы с суффиксами *.COM и *.EXE обычно загружаются позже либо из файла CONFIG.SYS командами INSTALL (4.15) или INSTALLHIGH (4.16), либо из файла AUTOEXEC.BAT (9.01-02, 9.04-02, 9.09-02), либо из командной строки непосредственно или с помощью команды LH (3.17). Загрузка из файла CONFIG.SYS в меньшей степени подвержена влиянию других программ и потому считается более безопасной. С другой стороны, команды INSTALL и INSTALLHIGH не вовлекаются в процесс оптимизации распределения памяти, организуемый программой MEMMAKER.EXE. Если последнее существенно, то следует предпочесть загрузку командой LH (3.17) из файла AUTOEXEC.BAT.

Базовую группу драйверов для MS-DOS7 составляют те, которые содержатся в комплектах поставки операционных систем WINDOWS-95/98 и на загрузочных дискетах для них. При стандартной установке этих операционных систем драйвера для MS-DOS7 находятся в каталогах \WINDOWS и \WINDOWS\COMMAND. Но если MS-DOS7 используется как независимая операционная система, то относящиеся к ней драйверы лучше скопировать в отдельный каталог, например, в C:\DOS\DRV. Такой путь указан в большинстве приведенных в этой главе примеров. Когда дело дойдет до практического следования этим примерам, тогда

– 99 –

Глава 5: Избранные драйверы для MS-DOS7

будет важно, чтобы указываемый путь соответствовал фактическому месту размещения каждого драйвера конкретно на диске Вашего компьютера.

Помимо "родных" драйверов фирмы Microsoft, имеется много драйверов для MS-DOS7, созданных после 1998 года заинтересованными разработчиками и поставщиками компьютерного оборудования. Из этого многообразия только немногие драйверы описаны в данной главе. Сюда не вошли некоторые драйверы, описанные в файле MSDOSDRV.TXT из комплектов поставки систем WINDOWS-95/98, а также драйверы для мало распространенного оборудования магнитооптических дисководов, дисководов марок ZIP и LS120, стримеров и т.п. Предпочтение отдано тем драйверам, которые особенно нужны при конфигурировании загрузки MS-DOS7 для выполнения восстановительных и настроечных работ.

5.01Системные службы DOS

5.01-01 Файл ядра IO.SYS и файл параметров MSDOS.SYS

В корневом каталоге диска, с которого производится загрузка систем MS-DOS7 или Windows-95/98, имеются два скрытых системных файла: IO.SYS и MSDOS.SYS. Они находятся там с момента установки операционной системы на данный диск, чтобы обеспечивать процесс ее загрузки. Файл IO.SYS содержит ядро MS-DOS7 в сочетании с интерпретатором и загрузчиком DOS, а файл MSDOS.SYS

это перечень параметров загрузки. Если у Вас этих файлов нет, то их можно считать из комплекта поставки Windows-95/98 на компакт-диске или скачать из сети, например, с сайта http://www.micosyen.com/msdos.php в составе архива dos7.zip.

Чтобы диск или дискета стали загрузочными, наличие упомянутых системных файлов в корневом каталоге необходимо, но не достаточно. Исполняемый код boot-сектора диска не будет "знать", кому передать управление продолжением процесса загрузки, если имя файла-загрузчика не "прописано" в boot-секторе. Поэтому копирование группы системных файлов в корневой каталог, как правило, выполняют согласованно с обновлением boot-сектора с помощью программы

SYS.COM (6.24).

Получив управление в свои "руки", загрузчик DOS считывает из файла MSDOS.SYS параметры, определяющие конфигурацию загрузки. От них зависят предоставляемые пользователю альтернативы, о которых написано в разделе 1.02, а также то, какая операционная система будет загружена MS-DOS7 или

Windows-95/98. Если программой ATTRIB.EXE (6.01) снять с файла MSDOS.SYS

атрибуты HRS (H = скрытый, S = системный, R = только для чтения), то его можно

– 100 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]