Новости сайта
Об ошибках и не только
Проверка PCB файлов
Полезная информация для разработчиков
Проекты
О проекте и зачем всё это нужно
  Как настроить DOS сессии в Windows XP, чтобы было комфортно работать с DOS программами?
Некоторые рекомендации и решения.

      Пересев на Windows XP и настраивая DOS систему под себя, к огорчению обнаружил проблему с русской кодировкой в DOS сессиях.
      Сравнивая с Windows 98, в котором по умолчанию была предусмотрена загрузка драйвера клавиатуры keyb.com и установка кодовой страницы CP866 из autoexec.bat, где был нормальный, уже привычный вид шрифта.

      При старте DOS сессии в Windows XP русская кодировка присутствует до первого запуска какой-либо программы работающей с графикой, да и переключения клавиатуры не предусмотрено вообще :(
      Есть некоторое количество программ-руссификаторов, таких как GAMMA.COM, KEYRUS.COM, RUSVGAO.EXE, CYRKEYB.COM которые работают, но не обеспечивают такой комфортности как раньше. К тому же, то раскладка клавиатуры нестандартна, то вид шрифтов не очень-то приятный, то бывают глюки при работе в DOS сессии с другими программами (DPMI).

      Ещё одна особенность Windows XP - нежелание запускать свои же программы из autoexec.nt! К примеру: в замен keyb.com (Win98) есть kb16.com, которая работает только в уже инициализированной сессии. То есть запуск из autoexec.nt просто игнорируется, хотя можно грузить, как обычно, сторонние TSR программы :(

      На чём я остановился:

 RK-866

DOS in XP  

 
      RK.COM Russian keyboard driver. Version 1.6 (C) 1989,1990 A.Strakhov, AcademySoft.
      Как и в предыдущих случаях, не нравился вид шрифта и раскладка клавиатуры. Однако, программа позволяет модифицировать собственные ресурсы и менять настройки :)
      Что получилось? Я вынул коды описания экранных шрифтов (8x8, 14x8, 16x8) из EGA3.CPI кодировки 866 и немного модифицировал описание раскладки клавиатуры и загнал в RK.COM (/S).
      Получилось всё, что я хотел :)

      Запуск производится из %SystemRoot%\System32\autoexec.nt, где надо прописать:
LH C:\RK-866.COM (если она находится в корне диска C:)
      Переключение раскладки клавиатуры поставлено: Ctrl+RightShift (/R5)
      Если Вы хотите заменить на левую сторону Ctrl+LeftShift: надо подписать RK-866.COM /R6 в строку запуска или один раз запустить: RK-866.COM /R6 /S. (Название файла изменено, чтобы не путать программы).
 
 
  Файл: rk-866.com   Размер: 13934 байт
  Версия: 1.6 (DOS)   Скачано:

       Попробуйте в файле config.nt добавить строку:
EMM = RAM
      И тогда свободной памяти в DOS сессиях у вас будет больше, и команды LH (LoadHigh) будут работать почти в полной мере :).
      Дело в том, что верхняя память не выделяется по умолчанию если установлена отличная от 0 ("Нет") величина памяти EMS в файле PIF (нужная при работе P-CAD 4.5)! Однако, всё равно Windows XP не хочет грузить DOSX в верхнюю память даже при наличии достаточного пространства в ней. Без DOSX не будут работать программы нуждающиеся в защищённом режиме процессора (P-CAD 8.5). Получаются довольно непонятные особенности работы DOS сессий. Но, если вам будет хватать примерно 591520 байт, то всё можно оставить как есть.

      Предложенная по умолчанию в autoexec.nt загрузка "Установка расширений для поддержки CD ROM" lh %SystemRoot%\system32\mscdexnt.exe и "Установка сетевого редиректора" lh %SystemRoot%\system32\redir - не нужна по причине наличия поддержки всего этого в системе независимо от включения в autoexec.nt (какого-то действия этих программ мною не замечено), хотя при использовании EMM = RAM в config.nt - грузится в верхнюю память и не занимает основную.


      Примеры файлов конфигурации для DOS сессий (%SystemRoot%\system32\):

Config.nt
dos=high, umb
device=%SystemRoot%\system32\himem.sys
files=40
NTCMDPROMPT
EMM = RAM

Autoexec.nt
@echo off
REM Установка расширений для поддержки CD ROM
:lh %SystemRoot%\system32\mscdexnt.exe

REM Установка сетевого редиректора (загружается перед dosx.exe)
:lh %SystemRoot%\system32\redir

REM Установка поддержки DPMI
lh %SystemRoot%\system32\dosx

REM Установка поддержки Sound Blaster 2.0 на NTVDM.
SET BLASTER=A220 I5 D1 P330 T3

PATH=%SystemRoot%;%SystemRoot%\System32;c:\dn;c:\dos;c:\dos\pak;c:\pcad\exe;c:\vov\bc\bin;

lh C:\DOS\RK-866


Теперь, что получается (mem /c):
Строка: EMM = RAM в config.nt VS config.nt по умолчанию!!!

>>> По умолчанию...

Обычная память :

 Имя               Размер (десятичный)     Размер (Hex)
-------------      ---------------------   -------------
 MSDOS              11440      ( 11.2K)       2CB0
 KBD                 3296      (  3.2K)        CE0
 EMM                  176      (  0.2K)         B0
 HIMEM               1248      (  1.2K)        4E0
 MOUSE              12528      ( 12.2K)       30F0
 COMMAND             4064      (  4.0K)        FE0
 DN                  1856      (  1.8K)        740
 MSCDEXNT             464      (  0.5K)        1D0
 REDIR               2672      (  2.6K)        A70

 DOSX               34848      ( 34.0K)       8820
 RK-866             10960      ( 10.7K)       2AD0
 COMMAND             4656      (  4.5K)       1230
 СВОБОДНО             112      (  0.1K)         70
 СВОБОДНО              64      (  0.1K)         40
 СВОБОДНО          566576      (553.3K)      8A530

Всего СВОБОДНО :       566752      (553.5K)

Всего доступно программам:                                    566752   (553.5K)
Максимальный размер программы:                                565664   (552.4K)


 16777216 байт - всего памяти EMS
 16777216 байт - свободной памяти EMS

 33554432 байт - всего непрерывной дополнительной памяти
        0 байт - доступно непрерывной дополнительной памяти
 16628736 байт - доступной памяти XMS
          резидентная часть MS-DOS загружена в сегмент HMA


>>> Со строкой EMM = RAM....

Обычная память :

 Имя               Размер (десятичный)     Размер (Hex)
-------------      ---------------------   -------------
 MSDOS              12848      ( 12.5K)       3230
 KBD                 3296      (  3.2K)        CE0
 EMM                  176      (  0.2K)         B0
 HIMEM               1248      (  1.2K)        4E0
 COMMAND             4064      (  4.0K)        FE0
 DOSX               34720      ( 33.9K)       87A0
 DN                  1856      (  1.8K)        740
 COMMAND             4656      (  4.5K)       1230
 СВОБОДНО             112      (  0.1K)         70
 СВОБОДНО          592096      (578.2K)      908E0

Всего СВОБОДНО :       592208      (578.3K)

Верхняя память :

 Имя               Размер (десятичный)     Размер (Hex)
-------------      ---------------------   -------------
 SYSTEM            212976      (208.0K)      33FF0
 DOSX                 128      (  0.1K)         80
 MOUSE              12528      ( 12.2K)       30F0
 MSCDEXNT             464      (  0.5K)        1D0
 REDIR               2672      (  2.6K)        A70
 RK-866             10960      ( 10.7K)       2AD0

 СВОБОДНО             880      (  0.9K)        370
 СВОБОДНО              64      (  0.1K)         40
 СВОБОДНО           21312      ( 20.8K)       5340

Всего СВОБОДНО :        22256      ( 21.7K)

Всего доступно программам (обычной + верхней памяти):         614464   (600.1K)
Максимальный размер программы:                                591184   (577.3K)

Максимальный размер блока верхней памяти:                      21312   ( 20.8K)

 16777216 байт - всего памяти EMS
 16777216 байт - свободной памяти EMS

 33554432 байт - всего непрерывной дополнительной памяти
        0 байт - доступно непрерывной дополнительной памяти
 16628736 байт - доступной памяти XMS
          резидентная часть MS-DOS загружена в сегмент HMA

      К сожалению мне так и не удалось полностью загнать DOSX.EXE в верхнюю память :( И место вроде бы есть. DOSX загружается туда только при отсутствии выделения EMS памяти!
      Напомню также, что 16Мб EMS и XMS вы получаете установкой соответствующих значений в Свойствах Ярлыка к программе (.PIF) в закладке Память.
VOV 17/01/2006
 
 
     
  #14'045  VZ & VOV Projects © 1995-2020