Mexicanetz Express настраивает DOS

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

     "Not enough memory!" -- ругался тогда компьютер, а юзверь приходил в отчаяние, рвал где попало волосы и тщетно пытался запустить программу ещё и ещё раз, надеясь, что на 10000-й раз она запустится сама. Как же были далеки эти годы!

     Но голод не тетка, и с безденежья я пошёл настраивать старые компьютера, от 286 до 486, которые ещё вполне удачно справляются в бухгалтериях государственных предприятий, считая такие хрустящие деньги :D Первое, что поразило -- ими по 10 лет никто не занимался, и отлично работают! Посмотрел бы я на 4-й "пентиум" с 2000-й "виндой" и 1С-кой, за которыми никто не ухаживал!-))

     Но в сторону лирику, пора дело делать. Первым ходом был снос всего, что есть на винчестере, напрочь -- благо, винчестера по 60 мегабайт отлично влазят на дискетки. Полезного там было только архивы фокспрошных баз данных, которые в архивированном виде вообще практически невесомые. После архивации я всё отформатировал начисто, откалибровал диски и поставил 3 софтины:

Дистрибутивы этих на данный момент свободно распостраняемых программ можно взять в разделе "файловый архив".

     дело было за настройкой. В комплект NU входит полезный командный интерпретатор NDOS, преимущество которого заключается в способности максимально использовать "верхнюю" память, то же со всеми драйверами делает QEMM. Сначала необходимо разобраться, сколько драйверов нам нужно в системе, и сколько они занимают памяти. Дурное дело нехитрое -- взял да и перечислил:

DEVICE=C:\DOS\SETFNT.SYS -- для правильного отображения символов национальной
кодировки, выводимых драйверами при своей загрузке (до переключения таблиц
языка при помощи команды MODE в autoexec.bat)
DEVICE=C:\DOS\HIMEM.SYS -- для включения доступа к памяти (XMS) выше первого
мегабайта. И ёжику понятно, что даже если не прописать его, то он загрузится
автоматически при загрузке Windows`9x
DEVICE=C:\DOS\EMM386.EXE -- для получения доступа к высокой памяти, куда,
собственно, и будут пихаться драйвера (EMS, в которой есть UMB).
DEVICE=C:\DOS\SETVER.EXE -- а энта штука обеспечивает возможность запуска
старых программ. Она нам понадобится сегодня.
DEVICE=C:\UTILS\MTMCDAI.SYS /D:MSCD000  -- драйвер СиДирома. У меня стоит
MITSUMI FX3210, и это его родной драйвер, без "наворотов", через голый
PIO-4 режим
COUNTRY=007,866,C:\DOS\COUNTRY.SYS
DEVICE=C:\DOS\DISPLAY.SYS CON=(,,1) -- поддержка команды MODE, необходимая
из CONFIG.SYS. Внимание -- если его отключить, Norton Disk Doctor оставит
от ваших русских имён файлов на диске страшные "крокозябры", и разобраться
потом, "что есть ху" -- практически невозможно.

==========AUTOEXEC.BAT===========
mscdex /d:mscd000 --  окончательная загрузка драйвера CDROM
smartdrv c+ d -- кэширование дисков. Штука очень полезная при групповых
операциях над файлами
s3vbe20 /install -- включение режима VBE 2.0 соместимости у моей видеокарты
S3 Virge DX (375-я модель)
amouse /с1 -- поддержка мыши на COM1
doskey -- драйвер редактора командной строки. Без него под ДОСом как без рук
mkey -- русификатор. вместо страшно неудобного KEYB.COM переключает клавиатуру
для ввода кириллицы одним щелчком по ScrollLock -- да ещё и индикатор 
зажигает :) Для чайников можно даже клавишу и индикатор подписать :)

Ого! запускаем -- и драйвера съедают 200 килобайт памяти :( Непорядок! Придётся лечить :)

     Во-первых, получив доступ к HMA и UMB, укажем в CONFIG.SYS

DOS=HIGH,UMB
Во-вторых, загрузим в EMM386 следующие параметры:
DEVICE=C:\DOS\EMM386.EXE RAM ROM NOEMS NOVCPI HIGHSCAN I=B000-B7FF
Это отключит эмуляцию EMS, практически бесполезной, и бесполезного на сегодня интерфейса VCPI, зато включит в оборот 32-Кб кусочек памяти, обычно не используемый, но вполне доступный для загрузки драйверов (первый регион).

     Теперь после каждого DEVICE можно поставить HIGH, и драйвер будет загружаться в UMB, для autoexec.bat применяется команда LH. Ещё можно вручную прописать параметры интерфейса командной оболочки:

SHELLHIGH=C:\COMMAND.COM C:\ /P /E:256 /F:128.
Тот же HIGH может сопровождать команды FILES, BUFFERS, STACKS. И, кстати, урежем стэки до
STACKSHIGH=0,0

Перезагрузка. Душераздирающие писки PCspeaker, на экране чернота. Драйвер EMM386, оказывается, не понимает практически всех ключей. Однако, IBM своё детище сработала так топорно, что синтаксис MSDOS-овского драйвера практически не подходит для EMM386 из PC-DOS. Комментируем все параметры за исключением RAM. Жаль.

     Перезагрузка. Жуткое количество вываливающихся на экран сообщений об ошибках. Что на этот раз? Ах, PCDOS ещё не понимает наших попыток запихнуть в верхнюю память BUFFERS, FILES и иже с ними. Жаль. Такая задумка была! Комментируем весь блок :(


Перезагружаемся -- и что мы видим? Осталось занято всего 50 килобайт основной (conventional) памяти -- неплохой результат! Можно попробовать запустить нашу "неберущуюся высоту", то бишь незапускаемую программу.

     Бац! -- и сообщение, "program requires at least 620 Kbytes to run"

     Что же делать? Остаётся вариант всё же использовать возможности Notron Utilities и QEMM. Итак, вместо командной оболочки command.com будем использовать NDOS 7.

SHELL=C:\NU\NDOS.COM 
Настройки его таковы (файл c:\nu\ndos.ini)
[Primary]
Alias=256
Environment=256
History=512
UMBLoad=Yes
UMBEnvironment=Yes
Swapping=XMS, EMS, None
Этим мы уменьшаем количество используемой основной памяти за счёт помещения переменных среды и командного процессора в UMB, а также задаём своппинг памяти сначала в XMS (выше 1 мегабайта), потом в EMS (которого пока нет) и уж в конце на диск, при этом количество памяти, потреляемой САМИМ процессором, сводим к минимуму. Да если ещё добавить новую, более продвинутую стратегию распределения (displacement) памяти... (См раздел "Программирование для ДОС - STRATEGY")

     Вместо тупого и прожорливого SMARTDRV можно использовать Norton Cache, которого для вящей эффективности можно загрузить даже ещё в CONFIG.SYS:

INSTALLHIGH=C:\NU\NCACHE2.EXE INSTALL
Стоит отметить, что при загрузке Norton Cache напрочь отказывается работать с любой ОС версии выше 6.0. Вот и пригодилась нам команда SETVER: (подаём команду одноразово прямо с консоли)
SETVER NCACHE2.EXE 6.0

Перезагрузка! 620 килобайт достигнуто! Кстати, все параметры распределения памяти можно узнать при помощи команды MEM:
mem -- просто сводка памяти. Для чайников.
mem /c -- вывод данных по распределению памяти между всеми программами.
Рекомендуется большинству пользователей.
mem /d -- детальный анализ, вплоть до байтика, всех ваших внутренностей.
Только для "продвинутых" пользователей.
mem /f -- сводка свободной памяти. Для всех, ибо работает быстро
mem /m [имя_программы_без_расширения] -- статистика распределения программы
по всей памяти: в каком регионе, сколько килобайт, назначение модуля.
Данные можно просто посмотреть (если список длинный, разбейте его на страницы, добавив ключик /p), а можно списать в файлик для последующего неторопливого рассмотрения и анализа перенаправлением:
mem /d >memory.txt -- сбросит сверхдетальный лог памяти в файл MEMORY
mem /c/p -- покажет несколько страниц (переход к последующей странице -
нажатие ПРОБЕЛа или ЭНТЕРа) c детальной информацией по модулям.
Как человек, "входящий во вкус", ощущаю настоятельную потребность "вылизать" всё до последней капли. Используем возможности QEMM, драйвера, в своё время разреХламированого очень широко. Настраиваем Qsetup на включение ВСЕХ "фишек" и нажимаем "оптимизировать". Процесс, как говорится, пошёл!
Полный отчёт QEMM Manifest по системе хранится ЗДЕСЬ

     Отчёт стандартного MEM.EXE по памяти -- ЗДЕСЬ

     Итак, выключены (по отстутствии необходимости) Stealth-методы для " уплотнителей диска", VIDRAM (я буду работать с графикой), включены DOS-UP, Stealth Frame. Результат -- 634 К свободно под наши нужды, для некоторых программ включена эмуляция загрузки в обычную память (QEMM посчитал, что они справляются с загрузкой "наверх" сами лучше, чем он -- ну что ж, его право), программы рассованы по регионам памяти, для некоторых указано напрямую количество памяти, которую под их загрузку необходими резервировать. Конечно, ручное "рассовывание" драйверов по регионам дало бы лучший результат, но что же вы хотели за 3 перезагрузки и 0,1 секунды процессорного времени?

     ...но тут настало утро и Шахрезада прекратила дозволенные ей речи

      (с)1001 ночь