(35) Чтобы была обеспечена полная поддержка кириллицы в DOS стандартными средствами, должны быть указаны две строки в файле config.sys:
device=c:\windows\command\display.sys con=(ega,437,1)
country=007,866,c:\windows\command\country.sys
и три строки в файле autoexec.bat:
c:\windows\command\mode.com con cp prep=((866) c:\windows\command\ega3.cpi)
c:\windows\command\mode.com con cp select=866
c:\windows\command\keyb.com ru,,c:\windows\command\keybrd3.sys
Первая строка для config.sys обеспечивает загрузку драйвера, с помощью которого возможно отображение в DOS-окне символов кириллицы. Вторая включает поддержку русской кодовой страницы и в том числе поддержку имён файлов на кириллице, поэтому её присутствие важно, даже если вы не работаете с DOS-программами. Первые две строки для autoexec.bat подготавливают и выбирают русскую кодовую страницу в качестве текущей. А третья обеспечивает возможность ввода с клавиатуры символов кириллицы. Переключение на английскую раскладку осуществляется нажатием <Ctrl>+<левый Shift>, на русскую — <Ctrl>+<правый Shift>. Если вы для переключения раскладки вместо клавиши <Ctrl> предпочитаете использовать <Alt>, тогда вместо keybrd3.sys надо указать keybrd2.sys
(2) Как известно, длинные имена файлов и каталогов в DOS записываются, сами знаете в каком виде (например, Длинный файл.txt запишется как ДЛИННЫ~1.TXT).
Однако не всегда в этом есть необходимость, а иногда это просто неудобно. Например, если в одном каталоге находятся Norton Commander, Norton Utilities, Norton Navigator, Norton Crash Guard, (что там ещё у Нортона есть), то в DOS'овском NC это будет выглядеть как:
NORTON~1
NORTON~2
NORTON~3
NORTON~4
что, согласитесь, не очень-то информативно. А можно сделать, чтобы по умолчанию имя записывалось длиной в 8 символов, и только при необходимости добавлялась тильда. То есть так:
NORTONCO
NORTONCR
NORTONNA
NORTONUT
по крайней мере, ясно, где что. И только если появится ещё, скажем Norton Utilities 2.0, то появится запись NORTON~1.
А делается это очень просто. Открываем раздел
HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\FileSystem
находим двоичный параметр "NameNumericTail" (а скорее — не находим, ибо по умолчанию его нет; тогда создаём) и устанавливаем его значение как "00 00 00 00". И всё. После перезагрузки упомянутый выше Длинный файл.txt можно будет записать как ДЛИННЫЙФ.TXT
Victor Zabavin
(27) Выполнение приведённой рекомендации чревато некоторыми опасными последствиями. Дело в том, что в Windows у файлов, имена которых набраны только заглавными латинскими буквами и имеют длину не более 8 символов, длинного имени НЕТ вообще. В результате при попытке записать в один каталог файлы с именами, например, FILENAME.TXT (8 символов) и FILENAME2.TXT (9 символов) система, сравнив их по коротким именам, скажет: "Файл существует. Заменить?". Описанный случай не так уж редок: в каталогах текстов и рисунков сплошь и рядом можно увидеть "DOCUMENT.DOC" и "DOCUMENT2.DOC", либо "PICTURE1.JPG" и "PICTURE11.JPG". Без "хвостов" Windows будет их постоянно путать и пытаться наложить. Во избежание этого можно посоветовать ставить параметр "NameNumericTail" равным 0 только на период набивки машины программным обеспечением. А перед началом загрузки пользовательскими данными снова поставить 1 (либо уничтожить вообще). Тогда уже созданные каталоги Нортона, Офиса и т.д. будут красиво записаны без "~1 ~2 ~3", но и в дальнейшем путаницы происходить не будет.
(1) Если Вы хотите, чтобы при выборе команды "Перезагрузить компьютер в режиме эмуляции MS-DOS" после завершения работы Windows автоматически запустилась какая-то программа (например, Нортон командир), то впишите необходимые команды в файл dosstart.bat, который находится в папке Windows.
(29) Если вас достало пищание спикера каждый раз, когда вы переключаете раскладку в DOS-окне, тогда сделайте следующее. Возьмите любой hex-редактор (рекомендую hiew). В папке "c:\windows\command" откройте файл KEYB.COM и найдите последовательность
1F 5B 5E FB C3 2E 80
Замените последние два байта на EB 2F. В итоге у вас должно получиться:
1F 5B 5E FB C3 EB 2F
Сохраните сделанные изменения и перезагрузите машину. Теперь ваш спикер при переключении раскладки не будет орать, как резанный, и будить ваших домашних по ночам (у меня ещё и WinAMP перестал дёргаться во время переключения).
(21) Чтобы под Windows 95/98 независимо сохранялось состояние раскладки клавиатуры RU/EN в консольных и DOS-приложениях (например, в разных копиях FAR'а), надо в разделе [NonWindowsApp] файла system.ini добавить строку
LocalTSRs=keyb
То, что указано после "=" представляет собой список резидентных программ (tsr), копируемых в локальную виртуальную машину, которые надо записывать через пробел и без расширений. После такого указания в каждой DOS-задаче будет сидеть своя копия поименованных tsr со своим состоянием.
(34) Windows Me использует из файла Config.sys только информацию о переменных окружения. Если вы используете DOS-программы, которые открывают одновременно более 30 файлов, то вместо команды Files= в Config.sys, используемой ранее, вам надо в разделе [386Enh] файла SYSTEM.INI добавить строку
PerVMFiles=<число>
где <число> — это количество файлов, которые DOS-программа сможет открыть сверх 30. Максимальное задаваемое значение 225, что соответствует максимум 255 открываемым файлам.
(39) Иногда (а лично у меня довольно часто) возникает необходимость загрузить на Windows-машине старую программу для DOS, которая требует МНОГО (более 550 Кб) СТАНДАРТНОЙ памяти. У вас может быть 64 Мб оперативной памяти, но эти программы хотят именно стандартную (conventional) память (первые 640 Кб). Наиболее часто такое встречается в старых играх, хотя и не только.
Такие программы работать из-под запущенной Windows не будут. Для них надо загружаться в "чистый" DOS (режим командной строки) и настроить его на обеспечение максимальной свободной стандартной памяти, задействовав использование верхней (upper) памяти (диапазон адресов от 640 Кб до 1 Мб) с помощью драйвера EMM386.
Для этого лучше всего написать загрузочное меню в файле CONFIG.SYS:
[common]
dos=noauto
dos=high,umb
fileshigh=40
buffershigh=40
device=c:\windows\himem.sys
country=007,866,c:\windows\command\country.sys
[menu]
menuitem=WIN, Windows
menuitem=DOS, DOS Promtp (Max Memory)
menudefault=WIN, 4
[WIN]
device=c:\windows\ifshlp.sys
[DOS]
device=c:\windows\emm386.exe ram
В файле AUTOEXEC.BAT пишем:
@echo off
path c:\windows;c:\windows\command
goto %config%
:WIN
win.com
:DOS
mouse.com
В файле MSDOS.SYS находим в секции [Options] строчку BootGUI=1 и вместо 1 пишем 0.
Теперь по окончании выполнения AUTOEXEC.BAT у нас Windows не будет загружаться автоматически, но при выборе в загрузочном меню варианта "Windows" он будет загружаться командой win.com. При выборе варианта "DOS Promtp (Max Memory)" у нас обеспечивается много стандартной памяти, загружается DOS-драйвер мыши и мы остаёмся в DOS.
Естественно, в строке path в AUTOEXEC.BAT пропишите те пути, которые нужны вам; если собираетесь использовать такую загрузку для игр, не забудьте DOS-драйвер звуковой карты; если мышь не нужна — уберите загрузку её драйвера. Можно и программу-оболочку (NC, VC, DN) дописать в конец AUTOEXEC.BAT.
Если вам в DOS нужен русификатор, то, вместо стандартных display.sys и keyb.com или популярных русификаторов keyrus, rk и т.д., для экономии памяти стоит использовать программу S_Font, так как она заменяет шрифты в теневой (shadow) памяти видео BIOS и, следовательно, не занимает стандартную или верхнюю память. Одна проблема — эта программа сложна в настройке, так как нужно определить тип чипсета.
Примечание: драйвер ifshlp.sys обязательно должен быть в разделе [WIN] файла CONFIG.SYS, без него Windows не загрузится! Для режима командной строки он, однако, бесполезен, а память занимает, потому в разделе [DOS] не нужен. Но, загрузившись в DOS, не пытайтесь затем войти в Windows командой win.com — не получится.
Юрий Чертков (upml315_3 AT yahoo.com)
(39) Дополнительная оптимизация:
1. Сэкономить ещё 5 Кб стандартной памяти можно, поставив в секцию [DOS] файла CONFIG.SYS команды:
lastdrivehigh=X
stackshigh=9,256
Первая команда резервирует для организации доступа к дискам (физическим и логическим) место в верхней памяти, а не в стандартной. Вместо "X" надо указывать последнюю букву диска, который используется в DOS. Например, если у вас жёсткий диск разбит на два логических, а CD-ROM в DOS не используется, то пишите lastdrivehigh=D.
Вторая команда резервирует память под стеки в верхней области, вместо стандартной по умолчанию.
2. Для загрузки драйверов и резидентных программ в верхнюю память, вместо стандартной, следует в файле CONFIG.SYS использовать команды devicehigh (для sys-драйверов) и installhigh (для com- и exe-программ), а в файле AUTOEXEC.BAT, других bat-файлах и просто в командной строке — loadhigh (lh).
Например, драйвер мыши лучше загружать командой
lh mouse.com
3. При работе в "чистом" DOS весьма желательно загрузить в AUTOEXEC.BAT программу smartdrv.exe, которая организует кэширование дисков в расширенной (extended) памяти (адреса свыше 1 Мб), что при активной работе с файлами существенно увеличивает производительность. В этом случае, кстати, нет потребности в большом количестве буферов ввода-вывода и можно ограничиться 10:
buffershigh=10
Однако если, кроме smartdrv, вы собираетесь использовать в DOS звуковую карту, CD-ROM, мышь, русификатор экрана и клавиатуры, то всё это может и не поместится в верхней памяти. Иногда может помочь смена порядка загрузки драйверов и программ. Также можно попробовать поэкспериментировать с программой MemMaker, которая помогает подобрать оптимальный вариант загрузки. В крайнем случае, от smartdrv придётся отказаться.
(41) Если используемым DOS-программам не требуется отображаемая (expanded) память, то можно отказаться от её эмуляции драйвером EMM386 и сэкономить 64 Кб верхней памяти для драйверов, загружая EMM386 строкой
device=c:\windows\emm386.exe ram noems
Экспериментировать с порядком загрузки драйверов приходится, поскольку верхняя память сильно фрагментирована, а каждый драйвер должен полностью помещаться в непрерывную область адресного пространства памяти. Однако оптимизация программой MemMaker весьма убога и, оптимизируя вручную порядок загрузки, можно получить гораздо лучшие результаты (и даже лучшие, чем после работы более продвинутого оптимизатора QEMM). При этом нужно учитывать три параметра потребности в памяти у драйвера (размер модуля, минимально потребный размер блока памяти для загрузки драйвера, размер остающейся в памяти резидентной части), а также то, не требуется ли начальная загрузка в нижнюю (стандартную) область памяти. Соотнеся это с размерами блоков верхней памяти, можно использовать их "на всю катушку", освободив нижнюю память по максимуму. А вот исходные данные для "ручной работы" лучше всего получить как раз от оптимизатора QEMM.
Пытаясь "раздобыть" побольше нижней памяти, не следует забывать, что некоторые чипсеты (в частности, некоторые серверные Intel-материнские платы) вообще не дают возможность использовать верхнюю область памяти для программ (EMM386 просто не грузится). Установку DOS-задач на такие машины лучше вообще не планировать.