Интернет-журнал 'Домашняя лаборатория', 2008 №2 - Журнал «Домашняя лаборатория»
Шрифт:
Интервал:
Закладка:
Независимое сохранение раскладки клавиатуры в консольных и DOS-приложениях
Чтобы под Windows 95/98 независимо сохранялось состояние раскладки клавиатуры RU/EN в консольных и DOS-приложениях (например, в разных копиях FAR'а), надо в разделе [NonWindowsApp] файла system.ini добавить строку LocalTSRs=keyb. То, что указано после "=" представляет собой список резидентных программ (tsr), копируемых в локальную виртуальную машину, которые надо записывать через пробел и без расширений. После такого указания в каждой DOS-задаче будет сидеть своя копия поименованных tsr со своим состоянием.
Увеличение максимального числа одновременно открываемых файлов DOS-программами в Windows Me
Windows Me использует из файла Config.sys только информацию о переменных окружения. Если вы используете DOS-программы, которые открывают одновременно более 30 файлов, то вместо команды Files= в Config.sys, используемой ранее, вам надо в разделе [386Enh] файла SYSTEM.INI добавить строку PerVMFiles=<число> где <число> — это количество файлов, которые DOS-программа сможет открыть сверх 30. Максимальное задаваемое значение 225, что соответствует максимум 255 открываемым файлам.
Настройка режима DOS на оптимальное использование памяти
Иногда возникает необходимость загрузить на 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: windowshimem.sys
country=007,866,с: windowscommandcountry.sys
[menu]
menuitem=WIN, Windows
menuitem=DOS, DOS Promtp (Max Memory)
menudefault=WIN, 4
[WIN]
device=c: windowsifship.sys
[DOS]
device=c: windowsemm386.exe ram
В файле AUTOEXEC.BAT пишем:
@echo off
path с: windows;с: windowscommand
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 и, следовательно, не занимает стандартную или верхнюю память. Одна проблема — эта программа сложна в настройке, так как нужно определить тип чипсета.
Примечание: драйвер ifship.sys обязательно должен быть в разделе [WIN] файла CONFIG.SYS, без него Windows не загрузится! Для режима командной строки он, однако, бесполезен, а память занимает, потому в разделе [DOS] не нужен. Но, загрузившись в DOS, не пытайтесь затем войти в Windows командой win.com — не получится.
Дополнительная оптимизация:
1. Сэкономить ещё 5 Кб стандартной памяти можно, поставив в секцию [DOS] файла CONFIG.SYS команды: lastdrivehigh=X stackshigh=9,256. Первая команда резервирует для организации доступа к дискам (физическим и логическим) место в верхней памяти, а не в стандартной. Вместо "X" надо указывать последнюю букву диска, который используется в DOS. Например, если у вас жёсткий диск разбит на два логических, a CD-ROM в DOS не используется, то пишите lastdrivehigh=D.
Вторая команда резервирует память под стеки в верхней области, вместо стандартной по умолчанию.
2. Для загрузки драйверов и резидентных программ в верхнюю память, вместо стандартной, следует в файле CONFIG.SYS использовать команды devicehigh (для sys-драйверов) и installhigh (для соm- и ехе-программ), а в файле
AUTOEXEC.BAT, других bat-файлах и просто в командной строке — loadhigh (lh).
Например, драйвер мыши лучше загружать командой lh mouse.com 3. При работе в "чистом" DOS весьма желательно загрузить в AUTOEXEC.ВАТ программу smartdrv.exe, которая организует кэширование дисков в расширенной (extended) памяти (адреса свыше 1 Мб), что при активной работе с файлами существенно увеличивает производительность. В этом случае, кстати, нет потребности в большом количестве буферов ввода-вывода и можно ограничиться 10: buffershigh=10. Однако если, кроме smartdrv, вы собираетесь использовать в DOS звуковую карту, CD-ROM, мышь, русификатор экрана и клавиатуры, то всё это может и не поместится в верхней памяти. Иногда может помочь смена порядка загрузки драйверов и программ. Также можно попробовать поэкспериментировать с программой MemMaker, которая помогает подобрать оптимальный вариант загрузки.
В крайнем случае, от smartdrv придётся отказаться.
Если используемым DOS-программам не требуется отображаемая (expanded) память, то можно отказаться от её эмуляции драйвером EMM386 и сэкономить 64 Кб верхней памяти для драйверов, загружая EMM386 строкой device=c: windowsemm386.ехе ram noems. Экспериментировать с порядком загруз ки драйверов приходится, поскольку верхняя память сильно фрагментирована, а каждый драйвер должен полностью помещаться в непрерывную область адресного пространства памяти. Однако оптимизация программой MemMaker весьма убога и, оптимизируя вручную порядок загрузки, можно получить гораздо лучшие результаты (и даже лучшие, чем после работы более продвинутого оптимизатора QEMM). При этом нужно учитывать три параметра потребности в памяти у драйвера (размер модуля, минимально потребный размер блока памяти для загрузки драйвера, размер остающейся в памяти резидентной части), а также то, не требуется ли начальная загрузка в нижнюю (стандартную) область памяти. Соотнеся это с размерами блоков верхней памяти, можно использовать их "на всю катушку", освободив нижнюю память по максимуму. А вот исходные данные для "ручной работы" лучше всего