И укажите порт принтера как LPT1.QNX.
Определяя принтер, который выглядит наподобие файла для Word-
Perfect, вы указываете WordPerfect использовать более скоростной
файловый вывод, который быстрее, чем метод, использующий Int 17.
2.15.6. Использование опций WordPerfect
WordPerfect 5.1 предоставляет несколько опций, которые позво-
ляют вам использовать его эффективно в среде QNX. В частности, вы
можете использовать опцию командной строки ID для указания того,
какие каталоги будут содержать файлы переполнения. Если вы также
указываете ОЗУ-диск для хранения временных файлов и файлов перепол-
нения, эти файлы могут затем "исчезнуть", если компьютер отключится
от электропитания. Вы могли бы вызвать WordPerfect для отдельного
пользователя, переопределяя группу [wp51] следующим образом (давай-
те примем, что каталог /tmp это ОЗУ-диск QNX):
[wp51]
R=-WP /nc /d-z:1 /r /pa=c:\WP51
pa=+wpsl
Dz=/tmp/
+k
Мы определили несколько опций WordPerfect с параметром Rundos
R=. Давайте рассмотрим, что эти опции делают:
Опция Описание
/nc Указывает WordPerfect использовать нормальный курсор (т.e.
использовать клавиатуру BIOS). Эта опция требуется, только
если параметр Rundos +k указывается.
- 40 -
/d Определяет место для файлов переполнения и временных фай-
лов. Данный пример помещает файлы переполнения WordPerfect
на дисковод z:, который является ОЗУ-диском QNX (/tmp).
/pa Определяет, где будут находиться специфические для поль-
зователя файлы WordPerfect .SET. Данный пример помещает ус-
тановки пользователя в его частный каталог wP51 на дисково-
де c:, который является уникальным для каждого пользовате-
ля.
/r Делает WordPerfect резидентным. Это уменьшает задержки
обращения к диску для оверлейных программ, улучшая таким
образом интерактивную реакцию.
3. Настройка Rundos
В этой Главе:
Введение
Работа с файлами конфигурации
Оптимизация характеристик Rundos в сети QNX
Использование альтернативных файловых конфигураций
Отладка
3.1. Введение
С конфигурацией по умолчанию Rundos вы можете выполнять ряд
общих пакетов DOS и MS-Windows, просто устанавливая их согласно
инструкциям, которые мы предоставляем (см. Главу 2). Однако, в за-
висимости от прикладных программ, которые вы используете, вы можете
нуждаться или хотеть выполнять дополнительную настройку. Например,
вам нужно изменять файл конфигурации Rundos, чтобы запускать новую
прикладную программу DOS, или нужно обращаться к файлам из реально-
го раздела DOS.
В этой главе мы рассматриваем:
- Работа с файлами конфигурации Rundos
- Оптимизация характеристик Rundos в сети QNX
- 41 -
- Использование альтернативных файловых конфигураций
- Отладку
3.2. Работа с файлами конфигурации
3.2.1. Файл по умолчанию
Rundos по умолчанию поставляется с файлом конфигурации, по
умолчанию называемым /etc/config/rundos/rdos.ini. Этот файл содер-
жит несколько элементов (подробно мы будем рассматривать эти эле-
менты позже в этом разделе):
Элемент Описание
[ .init] группа .init: Определяет значения по умолчанию
для параметров Rundos.
(set) Набор параметров: каждый набор содержит параметры,
требуемые для выполнения специфической функции
(например, поддержка "мыши" или запуск версии
co-D.Cam ).
[ group ] Группа прикладной программы: каждая группа содер-
жит параметры, требуемые для запуска данного паке-
та DOS (например. MS-Windows 3.1, WordPerfect
5.2). Параметры в группе прикладной программы об-
рабатываются, только если вы указываете прикладную
программу, когда вы вызываете Rundos.
#include. Строки включения: позволяют Rundos искать группы
прикладной программы и наборы параметров в индиви-
дуальных файлах конфигурации. Поскольку строки
включения - последние строки в файле rdos.ini,
группы или наборы в файлах индивидуальной конфигу-
рации могут отменять находящееся в этом файле.
3.2.2. Индивидуальные файлы конфигурации
Файл rdos.ini.site
Кроме файла конфигурации по умолчанию, Rundos также поддержи-
вает определяемый пользователем файл rdos.ini.site и файлы
- 42 -
rdos.ini.node (node - это номер узла сети).
Чтобы выполнять прикладные программы DOS, для которых нет
групп прикладной программы в файле конфигурации по умолчанию, вы
должны создать файл /etc/config/rundos/rdos.ini.site и определить
новые группы прикладной программы в том файле. Файл конфигурации,
по умолчанию rdos.ini, содержит строку, чтобы включать rdos.ini.si-
te:
#include. /etc/config/rundos/rdos.ini.dire
Эта строка включения - предпоследняя строка в файле rdos.ini.
Поскольку Rundos всегда использует последнее определение группы
(или набора) которое находит, группы, найденные в rdos.ini.site бу-
дут заменять любые соответствующие группы в файле rdos.ini.
Мы рекомендуем, чтобы вы никогда не изменяли файл по умолча-
нию, rdos.ini. Если вы делаете ваши индивидуальные изменения в этом
файле, ваши изменения могут быть потеряны, когда вы устанавливаете
более новую версию Rundos - установка может скопировать новый файл
rdos.ini на ваш диск.
Файлы rdos.ini.node
Если наборы параметров, определенные в rdos.ini или
rdos.ini.site, не поддерживают конфигурацию аппаратных средств дан-
ного узла, то вы можете устанавливать файл rdos.ini.node, определя-
ющий наборы, которые будут поддерживать ресурсы данной ЭВМ.
Файл конфигурации, по умолчанию, содержит строку для включения
всех файлов rdos.ini.node:
#include /etc/config/rundos/rdos.ini.[номер_узла]
Эта строка включения - последняя строка в файле конфигурации
по умолчанию. Поскольку Rundos всегда использует последнее опреде-
ление, которое находит для набора параметров, наборы в файле
rdos.ini.node будут заменять соответствующие наборы, определенные в
rdos.ini или rdos.ini.site.
3.2.3. Как обрабатываются параметры
При вызове Rundos читает свои файлы конфигурации и запоминает
все определения для групп и наборов. Затем она обрабатывает пара-
метры в этих определениях, следуя четырем шагам по порядку:
1) Обрабатывает все параметры, найденные в группе [init].
- 43 -
2) Если DOS autoexec файл определяется параметром 1= в группе
[.init], то он обрабатывает все операторы SET и PATH, найденные
в том autoexec- файле (файл по умолчанию rdos.ini определяет
C:\AUTOEXEC.BAT).
3) Если прикладная программа указывается в командной строке, то об-
рабатывает все параметры, найденные в группе этой прикладной
программы (например [WIN31]).
4) Если любые параметры Rundos указывались в командной строке, то
обрабатывает эти параметры.
3.2.4. Параметры по умолчанию - группа [.init]
Как мы сообщали ранее, файл конфигурации rdos.ini по умолчанию
Rundos, содержит несколько групп предопределенных параметров. Пер-
вая группа, [.init], содержит значения по умолчанию для параметров
Rundos:
[ .init]
Fa=/dosla/
Fb=/dos/b/
Dc=(HOME)/dos-c/
Ha=/uar/dos-a/
Hm=/uar/dos-m/
m=640
x=1024
pa=C:1
cd=C:1
=3.30
1=(c:)lautoexec.bat
a=TEW=C:\TEMP
a=OS=QNX
-k
F=30
+H
+SM
+SH
+(command)
+(mouse)
+(xmem)
+(printer)
+(init)
- 44 -
Назначения дисководов
Файл конфигурации по умолчанию принимает, что к каталогу QNX
dos-c в исходном каталоге пользователя надо обращаться, как к c:.
Он также принимает, что сетевой дисковод s: (находящийся в каталоге
QNX /usr/dos-s/) доступен для совместно используемых файлов. Обра-
щения к дискетам DOS будут направляться в каталог /dos-s/, который
использует Dosfsys, чтобы обращаться к реальной дискете DOS.
Переменные среды
Любое поле, включенное в фигурные скобки "{}" внутри файла
конфигурации, заменяется на содержимое переменной среды QNX, соот-
ветствующей имени поля.
Переменные от {A:} до {Z:} обрабатываются Rundos особым обра-
зом. Каждая заменяется на имя пути QNX, отображенное к соответству-
ющей букве дисковода DOS (конечная наклонная черта вправо в имени
пути QNX удаляется).
Текущий Каталог
Файл конфигурации по умолчанию принимает, что текущий каталог
DOS начинается в c:\, который является подкаталогом (dos-c/) исход-
ного каталога пользователя в QNX (то есть /home/user/dos-c/).
Заметьте, что параметр cd= позволяет вам указывать множествен-
ные пути. Если вы делаете так, Rundos будет выбирать первое имя пу-
ти, которое существует.
Установка command.сом
Многие программы используют интерпретатор команд DOS com-
mand.com, чтобы выполнять общие встроенные функции подобно CLS и
COPY.
Набор (command), указываемый в разделе [.init], содержит сле-
дующие параметры :
A=(C:)/command.com=(s:)/command.com
s=COMSPEC=C:\COMMAND.COM
s=PROMPT={LOGNAME}-$n>
V=C:\COMMAND.COM=3.30
Этот набор, по умолчанию, автоматически присваивает c:\COM-
- 45 -
MAND.COM псевдоним S:\COMMAND.COM. Это позволяет вам использовать
интерпретатор команд, поставляемый с Rundos, даже если дисковод c:\
отображается в раздел DOS через Dosfsys. Чтобы использовать реаль-
ный c:\COMMAND.COM, вы должны удалять параметр псевдонима (A=).
Переменные среды COMSPEC и PROMPT, также как параметр v=, ус-
тановлены, чтобы выполнять версию 3.30 COMMAND.COM (то есть версию,
поставляемую с Rundos). Чтобы использовать другую версию, вы должны
изменять эти назначения.
Файл Autoexec
Установка i={c:}/autoexec.bat в файле конфигурации по умолча-
нию указывает, что начальные установки PATH и SET должны браться из
файла C:\AUTOEXEC.BAT.
По умолчанию, Rundos не выполняет команды из этого файла; она
только обрабатывает файл в поиске операторов SET и PATH. Чтобы зас-
тавить Rundos выполнять AUTOEXEC.ВАТ, включите его как одну из под-
лежащих выполнению команд DOS.
Набор (init)
Поскольку она определяет умолчания, группа [.init] включает
набор параметров, называемый init. Этот набор не определяется в
файле rdos.ini, но вы можете определять его в файле rdos.ini.node,
чтобы заменять некоторые значения по умолчанию в группе [.init].
3.2.5. Группы прикладной программы
Кроме группы [.init], файл умолчания rdos.ini содержит группы
прикладной программы. В каждой из этих групп вы найдете параметры
для популярного пакета DOS (например MS-Windows 3.1, WordPerfect
5.2). Вы можете устанавливать любые дополнительные группы приклад-
ной программы, которые вам нужны в файле rdos.ini.site. (Если вы
хотите, чтобы только определенный пользователь мог обратится к
прикладной программе, вы можете вместо этого устанавливать группу
прикладной программы в файле rdos.ini.node этого пользователя).
Группа прикладной программы идентифицируется по имени группы,
включенному в скобки "[]". Rundos будет обрабатывать все параметры
между этим именем группы и следующим именем группы, когда вы указы-
ваете эту прикладную программу в командной строке. Например, если
вы вводите:
rdos win31
Rundos будет обрабатывать следующую группу прикладной програм-
- 46 -
мы, если она определяется в файле конфигурации:
[win31]
R=win /S
pa=+S:\WIN31
pa=+C:\WIN31
Заметьте, что вы можете определять только один параметр в
строке.
3.2.6. Наборы параметров
Кроме групп прикладной программы, файл конфигурации может со-
держать наборы параметров. Каждый содержит один или более парамет-
ров, которые выполняют конкретную функцию. Например, набор может
содержать параметры, требуемые для поддержки "мыши" или выполнения
версии COMMAND.COM.
Наборы параметров служат двум основным целям. Во-первых, они
предоставляют удобный способ определения обычно используемых пара-
метров. Во-вторых, поскольку они могут переопределяться для любой
ЭВМ в файле rdos.ini.node данной ЭВМ, они позволяют группам прик-
ладной программы в rdos.ini или rdos.ini.site работать на узлах с
различными конфигурациями аппаратных средств.
Определение наборов параметров
Вы определяете набор параметров в значительной степени также,
как группу прикладной программы, за исключением того, что использу-
ете круглые скобки вместо квадратных скобок. Например, вы могли бы
определять набор COMMAND.COM следующим образом:
(command)
pa=+C:\DOS
s=COMSPEC=C:\DOS\COMMAND.COM
V=c:\DOS\COMMAND.COM=3.30
Заметьте, что набор может включать другие наборы.
- 47 -
Использование наборов в группах прикладной программы
Давайте теперь рассмотрим, как включать наборы параметров в
группы прикладной программы. Например, допустим, что вы хотите соз-
дать индивидуальную группу прикладной программы, чтобы выполнять
прикладную программу MS-Windows из раздела жесткого диска DOS. Раз-
дел имеет COMMAND.COM версии 3.30, установленный в каталоге c:\DOS.
Эта группа для такого примера будет требовать параметров для
"мыши" и расширенной памяти; будут также требоваться параметры для
COMMAND.COM жесткого диска. Используйте следующие наборы, опреде-
ленные в файле /etc/config/rundos/rdos.ini.node:
(MOUSE)
+com1
(XMEM)
x=4096
(command)
pa=+C:\DOS
a=COMSPEC=C:\DOS\COMMAND.COM
V=C:\DOS\COMMAND.COM=3.30
Вы могли бы определять группу прикладной программы следующим
образом:
[myappl
R=myapp.exe /S
-k
+H
+ (mouse)
+ (M-)
+ (command)
pa=+C:\mydir
- 48 -
Заметьте, что вы вводите символ + перед набором при включении
его в группу прикладной программы.
Определение специфических для узла наборов аппаратных средств
Если наборы в rdos.ini или в rdos.ini.site не поддерживают ап-
паратные средства данной ЭВМ, вы можете переопределять их в файле
rdos.ini.node этой ЭВМ. Например, набор "мыши", определенный в фай-
ле конфигурации, по умолчанию принимает последовательную "мышь" на
COM1. Но допустим, что узел 30 использует шинную "мышь" IRQ 2. Что-
бы поддерживать такую "мышь" на этом узле, вы можете переопределить
набор "мыши" следующим образом в файле rdos.ini.30:
(mouse)
+bus2
3.2.7. Включаемые файлы
Вы можете использовать следующий синтаксис где угодно внутри
файла конфигурации, чтобы обрабатывать параметры, определенные в
другом файле:
#include имя_файла
Параметр имя_файла, должен быть полным именем пути. Всякий
раз, когда Rundos сталкивается с оператором include, она временно
переключается на этот файл, обрабатывая любые данные, которые она
там находит, затем продолжает обработку текущего файла со следующей
строки. Включаемые файлы могут указывать на другие включаемые фай-
лы, т.е. они могут быть вложенными. Вы можете вкладывать включаемые
файлы до 10 уровней.
Если вложенный файл не существует, Rundos будет игнорировать
этот оператор без генерации ошибки. Помните также, что любые группы
прикладной программы или наборы параметров, найденные во включаемом
файле, будут отменять предыдущие определения.
3.5. Оптимизация характеристик Rundos в сети QNX
Если вы работаете на рабочей станции QNX, вы можете достичь
огромное увеличение производительности, используя кэш-стороны поль-
зователя (Csc). Csc использует память рабочей станции для кэширова-
ния часто используемых частей файлов read-only (только для чтения).
Когда эти файлы впоследствии повторно читаются, данные возвращаются
- 49 -
из локального кэша, избегая таким образом расточительных сетевых
транзикций.
Когда вы выполняете прикладную программу MS-Windows, много
файлов открываются и закрываются неоднократно, особенно .DLL файлы
(динамически компануемые библиотеки). Csc может значительно улуч-
шить доступ к файлам .DLL.
Поскольку только файлы read-only кэшируются csc для Rundos,
вам нужно будет сделать некоторую административную работу для ваших
совместно используемых сетевых файлов. Вы должны удалить все разре-
шения на запись от всех файлов прикладной программы DOS на общедос-
тупном дисководе S:, про которые вы знаете, что для них никогда не
возникнет потребность в записи после их установки. Сюда должны вхо-
дить по крайней мере все .EXE и .DLL файлы.
Так как большинство общедоступных файлов находятся на дисково-
де S:, вы можете указать Csc - кэшировать файлы только на этом дис-
ководе. Например, если в корневом каталоге вы вызвали Csc следующим
образом:
Csc -c 1024 /usr/dos-s &
Тогда 1M системной памяти будет выделен для кэширования фай-
лов, находящихся в каталоге /usr/dos-s/ (дисковод S: ).
Для большего количества информации относительно кэша стороны
пользователя см. документацию QNx 4.2 для утилиты Csc.
3.4. Использование альтернативных файловых конфигураций
В этом разделе, мы рассматриваем альтернативные способы конфи-
гурирования ваших файлов на диске. В частности, мы рассматриваем:
- Объединение дисководов С:
- Доступ к файлам в текущем каталоге QNX
- Доступ к реальным дискам DOS
- Использование файлов DOS, постоянно находящихся в реальном разде-
ле DOS
3.4.1. Объединение дисководов С:
Используя символьные связи, вы можете легко предоставлять
пользователям Rundos доступ к частям пространства путей QNX. Напри-
- 50 -
мер, чтобы сделать дисководы C: некоторых пользователей QNX доступ-
ными всем пользователям Rundos как общий дисковод u:, сделайте сле-
дующее:
1) Создайте каталог /usr/dos-u/QNX, затем отобразите дисковод Run-
dos u: к этому каталогу QNX, используя следующий параметр:
Nu= /usr/dos-u/
Вы должны помещать этот параметр в набор (init) файла индивиду-
альной конфигурации.
2) Добавьте символьную связь в каталог /usr/dos-u для каждого пер-
сонального дисковода c:, который вы хотите сделать доступным
другим пользователям:
1n -s/home/userid/dos-c/ /usr/dos-u/userid
Эта процедура создает виртуальный дисковод u:, который содер-
жит псевдонимы для дисководов c: каждого пользователя. Из приклад-
ных программ DOS этот псевдоним будет выглядеть в форме:
U:\user\
3.4.2. Доступ к файлам в текущем каталоге QNX
Некоторые относительно замкнутые прикладные программы DOS, ти-
па компиляторов или ассемблеров, обычно устанавливаются на общедос-
тупном сетевом дисководе S: в дереве DOS (/usr/dos-s), но функцио-
нируют лучше всего на файлах в текущем каталоге QNX (./). Маловеро-
ятно, что эти файлы будут существовать в пространстве путей DOS (то
есть /uar/dos-s, /home/userid/dos-c ).
С такими прикладными программами часто полезно определять дис-
ковод DOS Z:, как текущий каталог QNX:
Dz=. /
Если переменная среды DOS PATH включает каталог DOS, который
содержит выполнимые программы DOS для этого пакета:
pa=+S:\BIN
тогда команда Rundos
- 51 -
rdos z: cd=z:\\"tasm /zi/ml/t teat.a,teat.o;" -V
запустит Turbo Assembler на файл QNX ./test.s, создавая выполнимый
./teat.o.
3.4.3. Доступ к реальным дискам DOS
С помощью Dosfsys, вы можете легко обращаться к файлам на ре-
альных дисках DOS. Если Dosfsys выполняется, любой или оба из ката-
логов /dos/a и /dos/c будут существовать в дереве каталогов QNX.
Гибкий диск будет доступен как дисковод A: с параметром Rundos по
умолчанию Fa=/dos/а. Вы можете сделать файлы жесткого диска доступ-
ными, именуя его как неиспользуемый дисковод. Например, чтобы де-
лать их доступными как дисковод D:, укажите "Dd =/dos/c/".
3.4.4. Использование файлов DOS, постоянно находящихся
в реальном разделе DOS
Если вы уже имеете раздел DOS в вашей системе, вы можете вы-
полнять прикладные программы DOS, постоянно находящиеся в этом раз-
деле без перемещения прикладных программ или их файлов данных к
QNX. В большинстве случаев вы должны просто следовать за указанными
шагами из QNX:
1) Начните Dosfsys (администратор файловой системы DOS):
Dosfsys
2) Вызовите COMMAND.COM:
rdos Dc=/dos/c/
Перед вами появится подсказка DOS "C>". Вы можете теперь вы-
полнять ваши прикладные программы, как будто вы находитесь в мест-
ном сеансе DOS. Чтобы вернуться к QNX, просто введите exit в ответ
на подсказку.
Rundos всегда выполняет COMMAND.COM, когда вы вызываете ее без
определения команд DOS, как в этом примере. Поскольку параметры
Rundos по умолчанию отображают s:\COMMAND.COM (версия, поставляемая
с Rundos) как псевдоним для C:\COMMAND.COM, Rundos использует собс-
твенную версию COMMAND.COM независимо от версии, установленной на
жестком диске.
- 52 -
3.5. Отладка
Прикладная программа DOS может работать прекрасно в реальной
DOS, однако может отказывать в Rundos. Чтобы помочь вам обнаружи-
вать любые несовместимости, Rundos поставляется с встроенными диаг-
ностическими средствами.
Если проблема может изолироваться и идентифицироваться, часто
можно решить ее, или же автор прикладной программы может сделать
изменения, чтобы избежать несовместимости.
Мы рекомендуем вам потратить время, чтобы тщательно анализиро-
вать и изолировать любые повторяющиеся несовместимости и передавать
детальную информацию об этом фирме QNX Software Systems. С этой ин-
формацией мы сможем усовершенствовать Rundos так, что данная прик-
ладная программа будет работать.
Вы можете указывать опции отладки Rundos только в командной
строке. Вы не можете включать их в файл конфигурации.
Для отладки большинства прикладных программ используются сле-
дующие опции:
Если вы указываете: Rundos будет:
+v Отображать подробную диагностическую информа-
цию на экране.
+d Входить в полный режим отладки и отображать
каждое обращение к DOS и BIOS (за исключением
видеовызовов Int 10). Эта информация, интерп-
ретируемая с помощью руководства по DOS, часто
дает ценные сведения относительно характера
несовместимости с Rundos.
+p Выводить запрос на продолжение работы после
каждого обращения к DOS (См. "Интерактивная
отладка" ниже).
3.5.1. Ориентированные на тексты программы
Базирующиеся на текстах прикладные программы DOS часто отлажи-
ваются на системной консоли. Например, приведенное ниже будет начи-
нать типичный сеанс отладки:
rdos application +v +d +p
- 53 -
3.5.2. Ориентированные на графику прикладные программы
Чтобы отлаживать основанные на графике прикладные программы,
вам нужно использовать опцию E=logfile, которая позволяет перенап-
равлять отладочную информацию к файлу QNX или на устройство, отлич-
ное от консоли. Хотя вы можете перенаправлять информацию в файл ре-
гистрации, терминал (/dev/serl) или локальный принтер (/dev/par),
вы вероятно найдете более удобным перенаправлять ее на консоль дру-
гого узла. Например:
rdos application +v +d +p E=l13/dev/cant
Иногда проблема показывает себя только после того, как прик-
ладная программа работала длительное время, это делает неудобным
регистрировать каждое обращение к DOS. Чтобы отлаживать в таких ус-
ловиях, вы можете вводить следующую команду (с другой консоли или
терминала) чтобы включать или выключать режим отладки, как требует-
ся:
rdos +T
3.5.3. Интерактивная отладка
Если вы указываете опцию +p (подсказки), Rundos будет отобра-
жать несколько строк информации для каждого обращения к BIOS/DOS;
информация будет сопровождаться следующей подсказкой:
DEBUG>
Когда вы видите эту подсказку, вы можете выполнять любое из
следующих действий:
Для того, чтобы: Введите:
перейти к следующему обращению к BIOS/DOS
переключать режим отладки вкл\выкл D
индицировать распределение памяти M
индицировать задачи T
индицировать открытые файлы O
просмотреть память DOS V
- 54 -
установить контрольную точку B
3.5.4. Прерывание работы Rundos
Если вы хотите прервать работу программы DOS до ее завершения,
вы можете вызвать следующую команду с другой виртуальной консоли
(или с консоли другой ЭВМ сети):
rdos +Q
Rundos будет завершать свою работу, как только она восстановит
управление, но при условии, что прикладная программа DOS в конце
выдает обращение к DOS или BIOS.
Если этот метод терпит неудачу, вы можете завершить сеанс Run-
dos утилитой slay:
slay rdos
.
- 55 -
ПРИЛОЖЕНИЕ A
Команды Rundos
В этом Приложении:
Обзор команд по пунктам
Режимы вызова
Описание команд
1. Обзор команд по назначению
Синтаксис
rdos [параметр]... Запуск COMMAND.COM
rdos команда [параметр]... Запуск данной команды DOS
rdos прикладная_программа [параметр]...
Запуск данной прикладной прог-
раммы, если она определена в
файле конфигурации
Параметры
Для каждого параметра, который использует "+", вы можете ука-
зывать "-", чтобы отключать этот параметр. Аналогично вы можете
отключать параметр, использующий "-" с помощью "+". Параметры "="
можно обычно отключать, давая пустую установку (например, "s1=").
Отображение дисководов DOS в каталоги QNX
Cx=каталог
Отображает дисковод CD ROM (на компактдиске) "x" в указанный
каталог QNX (где x может быть c... z, соответствуя CD ROM
дисководам C: ... Z:).
Dx=каталог
Отображает локальный жесткий диск "x" в указанный каталог
QNX (где x может быть c... z, соответствуя жестким дискам C:
... Z:).
- 56 -
Fx=каталог
Отображает дисковод для гибких дискет "x" в указанный ката-
лог QNX (где x может быть "a" или "b", соответствуя флоппи-
дисководам A: и B:).
Hx=каталог
Отображает сетевой дисковод "x" в этот каталог QNX (где "x"
может быть c... z, соответствуя сетевым дисководам C: ...
Z:).
Установка пути, переменных и текущего каталога DOS
cd=каталог_dos [,каталог_dos] ...
Это используется, как начальный текущий каталог DOS. Если
первое имя пути не существует, Rundos берет следующее.
pa=путь_dos
Это используется, как начальный маршрут поиска DOS (по умол-
чанию PATH=C:\).
pa=+компонент
Добавляет данный компонент впереди пути DOS.
S=env_var=value
Устанавливает данную переменную среды DOS.
Работа с портами
+bua2
Берет полное управление шинной "мышью" старого стиля на IRQ
2.
+Com1
Берет полное управление последовательным портом 3F8h на IRQ
4.
+Com2
Берет полное управление последовательным портом 2F8h на IRQ
3.
pn=устройство [ ,размер] [,pa]
Отображает параллельный порт "n" на данное устройство (где n
может быть 1 ...4, соответствуя LPT1 .. LPT4).
- 57 -
sn=device
Отображает последовательный порт "n" на данное устройство
(где n может быть 1 ...4, соответствуя COM1 .. COM4).
Обработка имен файлов
+2
Разрешаются дубликатные имена файлов.
Назначение приоритета
p=приоритет
Работа с указанным приоритетом (по умолчанию - 9).
Видеообработка
-A
Подавление эмуляции ANSI.SYS на консоли.
M=режим
Запуск в указанном (в шестнадцатеричной форме) видеорежиме
BIOS (по умолчанию - 83).
-V
Подавляет автоматическое программирование видеорежима.
Настройка памяти
+H
Включение эмуляции HIMEM.SYS (память XMS).
m=размер_памяти
Используется указанное количество основной памяти (определя-
ется в килобайтах; по умолчанию 640).
O=смещение
Пропустить указанное количество основной памяти (определяет-
ся в килобайтах ).
+SH
Включение эмуляции SHARE.EXE.
+SM
- 58 -
Включение эмуляции совместного использования памяти SMART-
DRV.EXE (используется Windows 3).
x=memsize
Делает указанное количество расширенной памяти доступным
(определяется в килобайтах; умолчание - 0).
Изменение A2O
-а20
Указание коду переключателя не влиять на A20.
W=a20_задержка
Коррекция задержки A20 по умолчанию (где задержка a20 опре-
деляется в мкс; умолчание - 20).
Сообщение о версии DOS
v=версия
Сообщает, что указанная версия PC-Dos используется (умолча-
ние - 3.30).
V=cmd=version
Указанная команда запускается. Параметр cmd - это полное имя
пути Dos (например c:\DOS\COMMAND.COM).
Указание псевдонима
A=имя_файла=псевдоним
Вместо открытия указанного файла QNX - обращение к фай-
лу-псевдониму.
Управление прерываниями
-k
Использовать драйвер клавиатуры ROM BIOS.
-t
Не регенерировать прерывания таймера в реальном режиме.
t=irq
Захватить указанное прерывание и регенерировать его в реаль-
ном режиме (где irq - десятичный номер IRQ).
- 59 -
Указание команды DOS
R=командная_строка
Запуск данной команды Dos для указанной прикладной програм-
мы. Многократные опции R= разрешаются для групп прикладных
программ (см. описание групп выше).
Запуск команды QNX
R=! Команда_qnx
Запуск данной команды QNX.
Указание файла Autoexec
i=init_file
Обработать указанный файл autoexec для установки PATH и SET
(умолчание - c:\autoexec.bat ). Если имя файла не начинается
с наклонной черты вправо (/), файл принимается относительно
каталога QNX, определенного для дисковода c:.
Отладка
+d
включает режим отладки.
E=файл_регистрации
Запись информации отладки в указанный файл (умолчание - те-
кущая консоль).
+p
После отображения каждого обращения к DOS выводится запрос
на продолжение работы.
+q
Завершить сеанс Rundos.
+t
Включение/выключение режима отладки в сеансе Rundos
+v
Вывод подробной информации о ходе отладки
Другие Опции
- 60 -
-B
Ограничивает емкость диска величиной 32M.
-C
Подавляет обработку встроенных команд DOS.
F=число_файлов
Позволяет владеть не более, чем указанным числом файлов
(умолчание - 30). Эквивалент параметру FILES= из CONFIG.SYS.
+I
предварительное открытие STDAUX и STDPRN для каждой задачи
DOS.
S=глубина [, число_открытых]
Определяет максимальную глубину просмотра каталога. Факуль-
тативный параметр число_открытых позволяет изменять сколько
одновременных вызовов opendir() позволяются (умолчание -
S=10, 3 ).
+X
Позволяет QNX обрабатывать ^C, ^S, и ^Q на консоли.
2. Режимы вызова
Rundos поддерживает следующие режимы вызова:
rdos [ параметр]...
rdos команда... [параметр]...
rdos прикладная_программа... [параметр].
Первый режим
В первом режиме Rundos вызывает COMMAND.COM - оболочку DOS.
Это позволяет вам запускать команды DOS или прикладные программы
DOS, как обычно в DOS. Чтобы вернуться в QNX, просто введите exit.
Второй режим
Во втором режиме команда является или программным файлом DOS,
или командой DOS (или серией команд). Вы можете указывать любую из
следующих встроенных команд:
- 61 -
@command
EcHO string
EcHO ON
EcHO OFF
BEM
PAUSE
EXIT
CD directory
CHDIR directory
а:
.
z:
При установке или запуске прикладной программы DOS вы найдете
команды от A: до Z: полезными для изменения дисковода по умолчанию
(Rundos запускается с C: как умолчание). Например, пусть вы хотите
выполнять процедуру установки, которая должна выполняться с гибкого
диска. Вы можете ввести командную строку, подобную следующей (если
DOS fsys работает):
rdos A: SETUP
Rundos игнорирует любые другие команды DOS, - они обычно обра-
батываются COMMAND.COM.
Третий режим
В третьем режиме прикладная программа - это программа DOS, оп-
ределенная в файле конфигурации Rundos. Если прикладная программа
указывается, Rundos будет обрабатывать параметры, определенные для
этой прикладной программы. Для большей информации, см. Главу 3,
"Настройка Rundos".
3. Описание команд в алфавитном порядке
+2
Разрешаются дубликатные имена файлов.
По умолчанию Rundos отображает имена файлов QNX в имена файлов
DOS, преобразуя символы имени файла DOS A... Z к символам имени
файла QNX нижнего регистра. Опция +2 подавляет это отображение,
разрешая именам файлов QNX с символами верхнего регистра "быть ви-
димыми" для прикладных программ DOS.
- 62 -
Многие прикладные программы DOS не работают хорошо, если сим-
волы имен файлов пишутся в разных регистрах.
-A
Подавляет эмуляцию ANSI.SYS на консоли. Если эта опция не
указывается, Rundos преобразует DOS ANSI-управляющие после-
довательности на консоли в управляющие последовательности
QNX.
A=файл=псевдоним
Вместо того, чтобы открывать указанный файл QNX, обращаться
к файлу псевдонима. Для примера того, как этот параметр ис-
пользуется, см. набор параметров (command) в файле /etc/con-
fig/rundos/rdos.ini (этот набор описывается в Главе 3).
-a20
Указывает коду переключателя не воздействовать на A20. Этот
параметр используется редко. Для большей информации см. При-
ложение D, "Совместимость оборудования".
-B
Ограничивает размеры дисков 32M. Поскольку Rundos эмулирует
DOS 3.3, которая непосредственно не поддерживает диски боль-
шие, чем 32M, некоторые пакеты DOS встречаются с трудностя-
ми, когда дисковые размеры превышают это ограничение. "-B"
решает эту проблему, указывая Rundos никогда не сообщать,
что свободное пространство на диске больше, чем 32M.
+Bus2
Берет полное управление шинной "мышью" старого стиля на IRQ
2. Вы нуждаетесь в этой опции при использовании неимпортной
шинной "мыши", использующей IRQ 2 (например "мыши", которые
приходят встроенными с некоторыми видеоплатами АТТ).
-C
Подавляет обработку встроенных команд DOS. Эта опция пре-
дотвращает Rundos от обработки встроенных команд указанных в
предыдущем разделе в этом приложении ("режимы вызова").
Cx=каталог
Отображает дисковод CD ROM (на компакт-дисках) "х" в указан-
ный каталог QNX (где x может быть c... z, соответствуя дис-
ководам CD ROM C: ... Z. : ).
- 63 -
cd=каталог_dos [,каталог_dos]
Использовать указанный каталог, как начальный текущий ката-
лог DOS. Многие программы DOS должны запускаться со специфи-
ческим текущим каталогом. Вы можете использовать cd=ката-
лог_dos, чтобы указывать начальный текущий каталог, как в
данном примере командной строки:
rdos прикладная_программа cd=C:\\WP5.1
При определении имен пути DOS в командной строке QNX, вы долж-
ны "цитировать" любой случай "\" другой наклонной чертой влево:
\\
Аналогично, с точкой с запятой:
\;
Это требуется, потому что и "\" и ";" имеют специальное значе-
ние в оболочке QNX. Заметьте, что вы не должны делать вышеописанное
в файле конфигурации Rundos.
Вы можете указывать множественные каталоги с помощью "cd=",
отделяя каталоги запятыми. Если первый каталог не существует, Run-
dos будет пытаться использовать следующий. Если это терпит неудачу,
Rundos будет пробовать следующий каталог, пока все каталоги не ис-
черпаны. Если ни один из определенных каталогов не существует, Run-
dos будет завершаться с сообщением об ошибке.
Например, давайте укажем, что текущий каталог определяется как
cd=C:\HOME\{ ИМЯ_РЕГИСТРАЦИИ }, C:\
Принимая определение по умолчанию дисковода C: (установленное
Dc={home}/dos-c/ в файле конфигурации), Rundos будет перебирать
следующие каталоги для пользователя jsbach:
C:\HOME\JSBACH -> /home/jsbach/dos-c/home/jsbach
C:\ -> /home/jsbach/dos-c/
+com1
Берет полное управление последовательным портом 3F8h на IRQ
4.
- 64 -
+com2
Берет полное управление последовательным портом 2F8h на IRQ
3.
Используйте параметры +com1 и +com2 для прикладных программ DOS,
которые устанавливают драйверы аппаратного прерывания на последова-
тельные порты. Microsoft Windows, например, устанавливает собствен-
ную программу обработки прерывания, если обнаружена последователь-
ная "мышь", так что требуется один из этих параметров.
Dx=каталог
Отображает локальный жесткий диск "x" в указанный каталог
QNX (где x может быть c .. z, соответствуя жестким дискам C:
... z:).
+d
Разрешает режим отладки. Чтобы использовать эту опцию, см.
Главу 3, "Настройка Rundos".
E=файл_регистрации
Информация отладки регистрируется в этом файле (умолчание -
текущая консоль). Чтобы использовать эту опцию, см. Главу 3,
"Настройка Rundos".
F=files
Разрешает не более чем указанное количество открытых файлов
(умолчание - 30). Эквивалент параметру FILES= в CONFIG.SYS.
Fx=каталог
Отображает флоппи-дисковод "x" в данный каталог QNX (где x
может быть или a, или b, соответствуя флоппи-дисководам A: и
B: ).
+H
Включает эмуляцию HIMEM.SYS XMS. Эта опция гарантирует, что
по крайней мере 320 КБ расширенной памяти предоставляется
для использования Rundos. Чтобы сделать больше доступной
расширенной памяти, используйте x=memsize. Когда указана +H,
Rundos использует протокол управления памятью XMS, чтобы уп-
равлять блоком расширенной памяти, зарезервированной для
Rundos. Прикладные программы типа Windows 3 требуют этих
функциональных возможностей, которые в большинстве установок
DOS обеспечиваются драйвером HIMEM.SYS.
- 65 -
+I
Предварительно открывает STDAUX и STDPRN для каждой задачи
DOS.
DOS резервирует файловые дескрипторы 3 и 4 для стандартного
принтера STDPRN и стандартного дополнительного последова-
тельного устройства STDAUX. Опция +I позволяет выполнять
прикладные программы DOS, принимающие, что STDPRN или STDAUX
предварительно открыты.
Поскольку большинство прикладных программ DOS не принимают,
что эти устройства предварительно открылись, Rundos не будет
предоткрывать их, если вы не указываете +I. Такая работа по
умолчанию оптимизирует спулинг сети QNX.
i=стартовый_файл
Обрабатывает этот стартовый файл для установки PATH и SET.
По умолчанию Rundos обрабатывает файл autoxec.bat дисковода
C: DOS, чтобы определить маршрут поиска и переменные среды,
которые нужно использовать прикладным программам DOS.
Используя параметр i=, вы можете указать Rundos использовать
другой autoexec файл. Если имя, которое вы указываете, не
начинается с наклонной черты вправо, файл принимается отно-
сительным к каталогу QNX, определенному для дисковода C:.
Заметьте, что поскольку Rundos игнорирует команды DOS PATH и
SET, если только они не найдены в файле, определенном пара-
метром i=, пакетные командные файлы, содержащие их, могут
запускаться без модификации при условии, что вы указываете
соответствующие параметры, чтобы достигать того же самого
эффекта.
-k
Использовать драйвер клавиатуры ROM BIOS.
Без "-k" ввод с клавиатуры обрабатывается QNX. Rundos выпол-
няет необходимую трансляцию между кодами, возвращенными QNX
и требуемыми прикладной программой DOS.
Однако некоторые прикладные программы DOS могут не принимать
эмуляцию Rundos BIOS клавиатуры. Если кажется, что имеется
проблема с обработкой клавиатуры, когда вы запускаете прик-
ладную программу, пробуйте вызывать Rundos с "-k". Это будет
направлять прерывания клавиатуры на ROM BIOS вашего PC, ког-
да Rundos работает.
Поскольку QNX отпускает клавиатуру, когда вы используете
"-k", вы не сможете переключать консоли.
M=режим
- 66 -
Запуск в данном (шестнадцатеричном) видеорежиме BIOS (умол-
чание - 83). Rundos первоначально использует BIOS, чтобы ус-
тановить экран в текстовый режим 25x80. Этот параметр позво-
ляет вам указывать другой начальный режим.
m=размер_памяти
Использовать указанное количество основной памяти (определя-
ется в килобайтах; умолчание - 640).
Заметьте, что Rundos никогда не будет пытаться распределять
больше, чем фактическое количество существующей основной па-
мяти (как показывает ROM BIOS ).
Nx=каталог
Отображает сетевой дисковод "x" в данный каталог QNX (где x
может быть c.. z, соответствуя дисководам сети C: ... Z: ).
O=смещение
Смещение (пропуск) указанного количество основной памяти
(определяется в килобайтах ).
Некоторые пакеты DOS имеют проблемы, когда они должны выпол-
няться в первых 64 КБ ОЗУ. Если произойдет, вы получите со-
общение "Packed file corrupt" ("Упакованный файл разрушен").
Указание O=1000 позволяет использовать некоторые эти пакетов
(за счет 64 КБ памяти ).
+ P
После индикации каждого обращения к DOS запрашивать пользо-
вателя перед продолжением работы. Чтобы использовать эту оп-
цию отладки, см. Главу 3, "Настройка Rundos".
p=приоритет
работа в этом приоритете (умолчание - 9).
pn=устройство [,размер_буфера]
Отображает параллельный порт "n" на это устройство QNX (где
n может быть 1.. 4, соответствуя LPT1 ... LPT4).
Этот параметр позволяет отображать параллельные порты от
LPT1 до LPT4 на файлы или устройства QNX. Например:
P1=pfile LPT1 - файл pfile
P2= //3/dev/par LPT2 - принтер на узле 3
P4=/dev/spool/ps LPf4 - устройство спулинга ps
Все запросы ввода/вывода к или от устройств DOS LPT1 ...
- 67 -
LPT4 будут направляться на указанные устройства QNX. Все Int
17 запросы BIOS будут также идти на эти устройства.
Определение размеров буфера BIOS
По умолчанию Rundos пытается буферизовать печатаемые символы
через обращения к BIOS. Размер буфера по умолчанию - 128 байтов.
Чтобы изменять размер, используйте параметр "размер". Например,
следующее будет устанавливать величину буфера в 1000 байт:
p1=/dev/par,1OOO
Чтобы отключить данный буфер, укажите параметр с размером 0.
Буфер автоматически очищается, когда он полон или когда приходит
любой управляющий символ.
Увеличение скорости печати
По умолчанию некоторые пакеты DOS (например WordPerfect с
текстовым режимом) печатают файлы, посимвольно используя обращения
к Int 17 BIOS. Этот метод работает в Rundos, но чрезвычайно медлен-
но.
Если программа использует этот метод, вам следует заставить
программу печатать в файл, называемый LPTI.QNX. Определяя принтер,
который выглядит наподобие файла, вы поощряете прикладную программу
использовать высокоуровневый файловый ввод/вывод, который предос-
тавляет более быструю печать, чем метод Int 17. Файлы будут посы-
латься тому же самому принтеру, как и в методе Int 17, поскольку
LPTI.xxxxx обрабатывается Rundos (и реальной DOS), как синоним для
LPT1:
Поддержка PostScript:
Чтобы помочь Rundos поддерживать общий (спулинговый) доступ к прин-
терам PostScript, вы можете добавлять суффикс ,ps к параметру прин-
тера. Например:
Pl=/devlapool/hp4, ps
С этим суффиксом Rundos контролирует данные, посылаемые принтеру.
Если она сталкивается с символом "D" ("конец задания" в Post-
Script), Rundos "пинает" спулер, чтобы данные, посланные до данного
момента, печатались немедленно.
- 68 -
pa=путь_dos
Использовать это, как начальный маршрут поиска DOS (умолча-
ние - PATH=C:\ ).
DOS использует маршрут поиска для нахождения выполнимых
программ ( .COM и .EXE файлы). Маршруты поиска поддерживают-
ся Rundos. Любые назначения PATH в файле AUTOEXEC.BAT стано-
вятся умолчанием. Если никакие назначения PATH не определя-
ются или если никакой autoexec файл не представлен, маршрут
C:\ становится маршрутом по умолчанию.
Вы можете использовать pa=путь_dos для использования маршру-
та, отличного от маршрута по умолчанию. Например:
rdos имя_программы pa=C:\\WINDOWS\; C:\\Dos
pa=+компонент
Добавляет указанный компонент спереди DOS PATH.
Этот параметр позволяет добавлять новые компоненты впереди
существующего маршрута PATH. Если вы включаете этот параметр
в группу прикладной программы файла конфигурации Rundos (в
противоположность включению этого параметра в группу
[.init]; см. Главу 3), указанные компоненты PATH добавляют-
ся, только если эта прикладная программа вызывается. Так как
загрузка прикладной программы может замедляться из-за увели-
чения числа компонентов PATH, добавление новых компонентов
маршрута только к группам прикладной программы оптимизирует
быстродействие загрузки.
+Q
Завершить сеанс Rundos. Чтобы использовать эту опцию отлад-
ки, см. Главу 3, "Настройка Rundos".
R=командная_строка
Выполнить эту команду Dos для определенной прикладной прог-
раммы (многократные опции R= разрешаются для группы приклад-
ной программы).
R=!команда_qnx
Выполнить эту команду QNX.
+ SE
Включают эмуляцию SHARE.EXE. Этот параметр требуется для вы-
полнения большинства сетевых прикладных программ DOS.
- 69 -
+ SM
Включают эмуляцию совместного использования памяти SMARTDRV.
EXE. Этот параметр требуется для запуска Windows 3.1
S=глубина [,open]
Определяет максимальную глубину просмотра каталога. Факуль-
тативный параметр "open" позволяет изменять то, сколько па-
раллельных обращений к opendir() позволяются (умолчание -
s=10, 3 ).
s=переменная_среды=значение
Установка данной переменной среды DOS. Подобно программам
QNX, программы DOS интенсивно используют переменные среды
так, чтобы они могли изменять свое поведение согласно систе-
ме или персональным назначениям пользователя.
Rundos запускается со следующим начальным набором переменных
среды DOS:
PATH=C:\ Маршрут поиска файлов
COMSPEC=C:\COMMAND.COM Имя оболочки DOS
PROMPT= { LOGNAME}-$n > Подсказка оболочки DOS
Вы можете добавлять или заменять назначения среды, используя описы-
ваемую команду, как в приведенном примере:
Rdos прикладная_программа a=COMSPEC=C:\\Dos\command.com
Чтобы указывать много переменных среды, введите раздельную ус-
тановку "a=" для каждой переменной.
sn=устройство
Отображает последовательный порт "n" на это устройство QNX
(где n может быть 1 ... 4, соответствуя COM1 ... COM4).
Этот параметр позволяет отображать последовательные порты
COM1 ... COM4 к файлам или устройствам QNX. Например:
a1=/dev/par COMI - местный принтер
a2=//3/dev/ser1 COM2 - последовательное устройство
узла 3
Все запросы ввода/вывода к или из устройств DOS COMn будут
направляться на указанные устройства QNX. Все запросы Int 14
- 70 -
BIOS будут также идти на эти QNX-устройства.
Некоторые прикладные программы DOS, включая многие эмуляторы
терминалов и модемные пакеты, захватывают последовательный
порт. С этими программами, переадресация последовательного
порта не будет функционировать. Такие прикладные программы
иногда требуют +com1, +com2, или "t=прерывание".
+T
Переключает режим отладки сеанса Rundos. Чтобы использовать
эту опцию отладки, см. Главу 3 "Настройка Rundos".
-t
Re генерировать прерывания таймера в реальном режиме. Этот
параметр требуется оборудованием шины Микроканал (PS/2).
Обычно физический IRQ 0 приводит к вызову программ обработки
прерывания DOS. С "-t", "реальное" прерывание не идет к
драйверам DOS. Вместо этого, таймирование симулируется пери-
одическими вызовами INT 1Ch и модифицированием переменных
времени BIOS.
t=прерывание
Захватить это прерывание и регенерировать его в реальном ре-
жиме (где "прерывание" - десятичный номер IRQ).
Некоторые прикладные программы DOS перехватывают аппаратные
прерывания. С некоторыми прерываниями это не представляет
проблемы: прерывание таймера IRQ 0 обычно обрабатывается в
реальном режиме Rundos, а прерывания клавиатуры обрабатыва-
ются параметром "-k", поэтому IRQ 1 будет вести себя как
ожидается. Однако остающиеся прерывания, типа прерываний 3 и
4, используемых последовательными портами, могут требовать
специальной обработки.
Если вы указываете аппаратное прерывание с параметром "t=",
то для этого прерывания будет всегда использоваться програм-
ма обработки прерывания реального режима. Любое перехватыва-
емое прерывание, которое происходит во время работы QNX (в
защищенном режиме), регенерируется Rundos в реальном режиме,
поэтому программа DOS может его обрабатывать.
Программы DOS, которые перехватывают последовательные преры-
вания (типа эмуляторов терминала или пакетов модема), иногда
требуют параметр "t=". Например, чтобы вызвать программу,
использующую шинную "мышь" на IRQ 5, можно вводить:
- 71 -
rdos mouse t=5
-v
Подавление автоматическое программирования видеорежима.
Некоторые только-текстовые прикладные программы DOS, типа
ассемблеров и компиляторов, генерируют данные только на
стандартный вывод. Такие программы не требуют программирова-
ния видеорежима. Однако большинство полноэкранных прикладных
программ работают лучше всего, если видеопрограммирование
оставлено включенным.
+v
Быть подробным: отображать информацию о ходе процесса. Чтобы
использовать эту опцию отладки, см. Главу 3 "Настройка Run-
dos".
v=version
Сообщать эту версию PC-DOS (умолчание - 3.30).
v=cmd=version
Сообщать эту версию PC-DOS, когда данная команда DOS выпол-
няется. Параметр cmd - полное имя пути DOS (например:
c:\Dos\command.com).
Если утилита DOS не работает, жалуясь на неправильную версию
DOS, вы можете использовать v=version или V=cmd=version,
чтобы указать Rundos сообщать другую версию DOS. Вы найдете
параметр V=cmd=version особенно полезным для выполнения COM-
MAND.COM, отличающегося от поставляемого с Rundos.
w=a20_задержка
Корректирует задержку A20 по умолчанию (задержка А20 опреде-
ляется в мкс; умолчание - 20). Этот параметр используется
редко. Для большей информации см. Приложение D "Совмести-
мость оборудования".
+х
Позволяет QNX обрабатывать ^C, ^S, и ^Q на консоли. Боль-
шинство полноэкранных программ DOS не допускают обработки
QNX этих символов. Однако некоторые неполноэкранные програм-
мы ведут себя более "удобно" для пользователя QNX с включен-
ными стандартными управляющими символами QNX.
- 72 -
x=размер_памяти
Делает указанное количество расширенной памяти доступным
(определяется в килобайтах; умолчание - 0).
Параметр "x=размер_памяти" позволяет резервировать часть
расширенной памяти для использования Rundos в дополнение к
количеству, зарезервированному опцией "R1". Следующий пример
будет резервировать дополнительный мегабайт расширенной па-
мяти:
rdos имя_программы x=1024
Некоторые программы используют вызовы Int 15 BIOS, чтобы об-
ращаться к расширенной памяти; параметр x=размер_памяти"
позволяет указывать, сколько расширенной памяти сделать дос-
тупной для таких программ.
.
- 73 -
ПРИЛОЖЕНИЕ B
Связь между задачами QNX и DOS
Когда программы DOS выполняются под Rundos, они имеют доступ к
услугам, обеспечиваемым средой DOS. Однако они не имеют прямого
доступа к примитивам QNX типа Send(), Receive() и Reply(), несмотря
на то, что большинство запросов DOS транслируются в примитивы QNX,
что в конечном счете посылает сообщение к серверу процессов QNX.
Хотя она не может обратиться к примитивам QNX, задача DOS мо-
жет связываться с процессами QNX непосредственно. Чтобы достичь
этого, используется расширение Rundos, называемое onpty(), чтобы
запустить программу QNX. Связь между программой DOS и программой
QNX будет происходить через стандартный файловый ввод/вывод, очень
похоже на связь между процессами QNX через конвейеры (каналы) QNX.
Программа QNX будет запускаться со своим стандартным вводом и выво-
дом (файловые дескрипторы 0, 1, и 2), присоединенными к подчиненной
(терминальной) стороне свободного устройства pty. Функция onpty()
будет возвращать дескриптор файла к задаче DOS, соединенной с глав-
ной стороной порта pty.
Любые данные, которые задача DOS записывает на этот файловый
дескриптор, будут выглядеть для программы QNX как ввод на ее stdin
(файловый дескриптор 0). Любые данные, записываемые программой QNX
на stdout (файловый дескриптор 1), будут выглядеть как ввод для
программы DOs.
Вызов onpty() выполняется Rundos как расширение DOS, используя
INT 21h со следующими назначениями регистров:
lnk onpty ( char far* команда_qnx);
-------------------------
INT 21H
ax = 0x44Fl
bx = 0
si = 0
di = 0
dx:cx = сегмент:смещение командной строки ASCII QNX, подлежащей вы-
полнению
0:x
означает использование умолчания "/bin/login"
returns ax=fd
Чтобы упрощать процесс опроса для ввода на pty канале, мы
- 74 -
предоставляем другое расширение Rundos, подобное программе
QNX dev, ischars():
int ischars (int fd);
--------------------
INT 21H
ax = 0x44F0
bx = fd
cx = 0
dx = 0
si = 0
di = 0
Возвращает ax = число доступных для чтения символов
Эти два примитива делают создание основанных на Windows внеш-
них интерфейсов (препроцессоров) относительно простым. Под управле-
нием внешнего интерфейса Windows программы QNX могут обрабатывать и
накапливать данные в реальном масштабе времени.
.
- 75 -
ПРИЛОЖЕНИЕ C
Как работает переключение между реальным и защищенным режимами
Intel 286 (и более поздние) процессоры работают в двух очень
различных режимах:
- Реальный режим
- Защищенный режим
В реальном режиме процессор эмулирует режим работы 8086, кото-
рый имеет 1M (20 разрядов) адресного пространства. DOS и большинс-
тво прикладных программ DOS записываются и функционируют в этом ре-
жиме, ограничивающем их к 640 КБ памяти (память, доступная на AT).
В защищенном режиме процессор имеет доступ к расширенной памяти
ЭВМ. Это режим, используемый QNX.
Rundos выполняет прикладные программы ДОС в основной памяти
ЭВМ (единственная память, доступная программам с реальным режимом).
QNX и все прикладные программы QNX используют расширенную память и
выполняются в защищенном режиме. Когда выполняется прикладная прог-
рамма DOS, процессор переходит в реальный режим; когда выполняется
QNX, процессор включается в защищенный режим.
Код программного переключателя помещается последовательно со
всеми аппаратными и программными прерываниями, переключая процессор
между реальным режимом и защищенным режимом, как требуется.
Прикладные программы DOS используют ряд программных прерыва-
ний, чтобы связываться с операционной системой. Таким образом, пе-
реключение между реальным и защищенным режимом должно происходить,
только когда прикладная программа запрашивает обслуживание системы
через программное прерывание или когда происходит аппаратное преры-
вание.
Следовать потоку управления довольно просто, когда прикладная
программа DOS выдает программное прерывание:
- 76 -
+---------------+ | +-----------------+
Ё Задача DOS Ё | Ё Rundos Ё
ЁРЕАЛЬНЫЙ режим Ё | ЁЗАЩИЩЕННЫЙ режим Ё
+---------------+ | +-----------------+
Ё Ё | Ё Ё
Ё Ё Переключатель | Переключатель Ё Ё
Ё Ё реального | защищенного Ё Ё
Ё Ё режима | режима Ё Ё
Ё Ё +-------------+ | +--------------+ Ё Ё
Ё +->Ё +----->Ё +>--+ Ё
Ё +-------------Ё | +--------------Ё Ё
+----<Ё +<-----Ё +<-----+
+-------------+ | +--------------+
Программное прерывание от задачи DOS.
Аппаратные прерывания могут происходить в любое время, напри-
мер, когда прикладная программа DOS выполняется в реальном режиме:
+---------------+ | +-----------------+
Ё Задача DOS Ё | Ё Задача QNX Ё
ЁРЕАЛЬHЫЙ режим Ё | ЁЗАЩИЩЕННЫЙ режим Ё
+---------------+ | +-----------------+
|
Переключатель | Переключатель
реального | защищенного
режима | режима +-----------+
Прерывание +-------------+ | +--------------+ ЁОбработчик Ё
--------->Ё +----->Ё +>----Ёпрерывания Ё
+-------------Ё | +--------------Ё ЁзащищенногоЁ
---------<Ё +<-----Ё +<----Ёрежима QNX Ё
Возврат из +-------------+ | +--------------+ +-----------+
прерывания
Аппаратное прерывание происходит в реальном режиме.
- 77 -
Прерывания могут также происходить, когда процесс QNX выполня-
ется в защищенном режиме:
+---------------+ | +-----------------+
Ё Задача DOS Ё | Ё Задача QNX Ё
ЁРЕАЛЬНЫЙ режим Ё | ЁЗАЩИЩЕННЫЙ режим Ё
+---------------+ | +-----------------+
|
Переключатель | Переключатель
реального | защищенного
режима | режима +-----------+
+-------------+ | +--------------+ ЁОбработчик Ё
Ё Ё | Ё Ё Ёпрерывания Ё
+-------------Ё | +--------------Ё ЁзащищенногоЁ
Ё Ё | Ё Ё Ёрежима QNX Ё
+-------------+ | +--------------+ +-----------+
_7%_0 Ё
Ё Ё
Прерывание Ё _7^
Возврат
Аппаратное прерывание происходит в защищенном режиме.
.
- 78 -
Некоторые прикладные программы DOS должны быть способны обра-
батывать аппаратные прерывания самостоятельно (через параметр t=),
добавляя дальнейшую степень сложности. Когда прикладная программа
DOS выполняется (реальный режим), и прерывание происходит, програм-
ма обработки прерывания DOS будет обрабатывать прерывание, как ожи-
дается:
+---------------+ | +-----------------+
Ё Задача DOS Ё | Ё Задача QNX Ё
ЁРЕАЛЬHЫЙ режим Ё | ЁЗАЩИЩЕННЫЙ режим Ё
+---------------+ | +-----------------+
_7%_0 Ё |
Ё Ё Переключатель | Переключатель
Ё Ё реального | защищенного
Ё Ё режима | режима +-----------+
Ё Ё +-------------+ | +--------------+ ЁОбработчик Ё
Ё Ё Ё Ё | Ё Ё Ёпрерывания Ё
Ё Ё +-------------Ё | +--------------Ё ЁзащищенногоЁ
Ё Ё Ё Ё | Ё Ё Ёрежима QNX Ё
Ё _7^_0 +-------------+ | +--------------+ +-----------+
Ё Возврат
Прерывание
Перехватываемое аппаратное прерывание происходит в реальном ре-
жиме.
- 79 -
Однако, если в это время выполняется процесс QNX, необходимо
временно переходить к реальному режиму, повторно выдать прерывание
так, чтобы драйвер DOS мог обработать его, затем вернуться к прог-
рамме защищенного режима, которая выполнялась:
+---------------+ | +-----------------+
Ё Задача DOS Ё | Ё Задача QNX Ё
ЁРЕАЛЬHЫЙ режим Ё | ЁЗАЩИЩЕННЫЙ режим Ё
+---------------+ | +-----------------+
|
Переключатель | Переключатель
реального | защищенного
режима | режима +-----------+
+-------------+ | +--------------+ ЁОбработчик Ё
Ё Ё | Ё +--+ Ёпрерывания Ё
+-------------Ё | +--------------Ё Ё ЁзащищенногоЁ
Ё Ё | Ё Ё Ё Ёрежима QNX Ё
+-------------+ | +--------------+ Ё +-----------+
Ё Ё
Ё _7^
Прерывание Возврат
Перехватываемое аппаратное прерывание происходит в защищенном
режиме.
Rundos заботится обо всех этих случаях, в дополнение к обычным
своим функциям.
- 80 -
ПРИЛОЖЕНИЕ D
Совместимость оборудования
В этом приложении:
Совместимость BIOS на 286 процессорах
Совместимость микроконтроллера клавиатуры
1. Совместимость BIOS на процессорах 286
Процесс переключения между защищенным режимом и реальным режи-
мом хотя и сложен, но технически возможен. В действительности то,
что мы описали, было бы невозможным на процессоре 286, если бы не
недокументированная аппаратная особенность объединительной платы
IBM.
BIOS используется Rundos только на процессорах 286; более
поздние процессоры ( 386, 486,... ) не требуют, чтобы сброс повтор-
но ввел реальный режим.
Переключатель из реального режима к защищенному режиму на про-
цессоре 286 - односторонний переключатель! Ничто, кроме сброса при
включении питания, не возвратит процессор к реальному режиму. Учи-
тывая это, проектировщики IBM предоставили возможность сбрасывать
286 процессор без воздействия на остальные аппаратные средства ЭВМ.
Встроенному контроллеру клавиатуры (однокристальная микроЭВМ) может
выдаваться команда послать импульс по линии сброса 286. Код рo-
wer-on-reset в ROM BIOS может обнаруживать, что процессор сбросился
под управлением процессора, и будет обходить обычную процедуру ди-
агностики, используемую при включении питания. Выполнение будет пе-
ремещаться к выбираемому адресу с программой, работающей в реальном
режиме. Вызовы Int 15 ROM BIOS используют эту возможность, чтобы
обращаться к расширенной памяти IBM AT.
К сожалению, метод указания адреса, к которому возвращается в
реальном режиме - недокументированная часть интерфейса ROM BIOS. В
результате многие совместимые BIOS, имеющиеся на рынке, используют
различный способ возврата от защищенного режима к реальному режиму.
Rundos полагается на этот недокументированный интерфейс, чтобы
переключаться между режимами работы 286, но так как этот механизм
зависит от кода в ROM BIOS, он работает только на IBM AT и ЭВМ, на
100% совместимой с IBM ROM BIOS. К счастью, большинство BIOS отно-
сятся к совместимой категории. Если кажется, что Rundos не работает
с вашей ЭВМ 286, вам следует войти в контакт с изготовителем вашей
объединительной платы, чтобы обсудить ее модификацию.
- 81 -
2. Совместимость микроконтроллера клавиатуры
Так как адресная линия A20 должна отключаться при переключении
к работе с реальным режимом, вы должны ждать, пока микроконтроллер
клавиатуры выполнит эту функцию. Это представляет две проблемы.
Во-первых, микроконтроллер клавиатуры выполняет эту функцию очень
медленно, тратя до одной миллисекунды на переключение режима.
Во-вторых (что более серьезно), как кажется, не все объединительные
платы строго придерживаются определения IBM для разрядов порта вы-
вода. Когда Rundos пытается включать/отключать линию A20, она долж-
на делать это искаженной загрузкой выходного порта контроллера кла-
виатуры. Наш опыт показывает, что этот порт - не порт для чте-
ния/записи, несмотря на то, что существуют средства, чтобы читать
порт. Мы полагаем, что на некоторые объединительные платы отрица-
тельно воздействует использование строгого IBM определения для этих
разрядов. Результат несовместимого использования битов порта вывода
контроллера клавиатуры то, что Rundos будет разрушаться ЭВМ.
Один способ обходить эту проблему состоит в том, чтобы указать
Rundos не беспокоиться о включении/отключении линии A20. Это устра-
няет потребность использовать контроллер клавиатуры вообще, что не
только позволяет избежать несовместимости аппаратных средств, но
также делает переключение режимов значительно более быстрым. Основ-
ной недостаток такого подхода то, что многие программы DOS будут
терпеть крах, если линия A20 не отключается. Загрузчик команды в
DOS, как кажется, сам полагается на эту особенность (возможно, неп-
реднамеренно) и будет отказывать со случайными интервалами. По этой
причине мы не можем рекомендовать этот подход, как долговременное
решение, хотя вы можете использовать его, как тест для совместимос-
ти аппаратных средств или с прикладными программами, которые вы
полностью проверили.
Чтобы отключать возможность "A20", укажите параметр -a20 при
запуске Rundos.
Когда вы указываете опцию +H (чтобы поддерживать возможности
HIMEM.SYS ), линия A20 будет включаться автоматически.
.
- 82 -
ПРИЛОЖЕНИЕ E
Области сложностей
В этом приложении:
Введение
Расширенная память
Векторы аппаратных прерываний
Рабочие файлы
Драйверы DOS.SYS
1. Введение
Фирма QNX Software Systems не гарантирует и не может гаранти-
ровать, что все прикладные программы PC DOS будут функционировать
правильно под Rundos. Аккуратно написанные прикладные программы
должны работать правильно, но, к сожалению, не все аккуратны. Прик-
ладная программа, которая делает любое из нижеописанного, может
вызвать проблемы и в худшем случае может разрушить QNX:
- Записывает в расширенную память
- Перехватывает векторы аппаратных прерываний, используемые QNX
- Создает рабочие файлы с фиксированными именами
- Использует драйверы устройств .SYS
2. Расширенная память
Rundos предоставляет возможности Int 15h и средства распреде-
ления памяти XMS. Если прикладная программа пробует обходить эти
возможности или обращаться к защищенному режиму непосредственно,
она почти наверняка вызовет крах QNX.
3. Векторы аппаратных прерываний
Rundos позволяет программам DOS перехватывать реальные аппа-
ратные прерывания, если вы указываете соответствующий параметр
- 83 -
t=irq. Однако может возникнуть проблема, если вы пробуете запускать
один из нескольких пакетов DOS, которые используют прерывания в ди-
апазоне E8h - EFh. Поскольку она работает в защищенном режиме, QNX
должна "перемещать" первичные аппаратные прерывания, обычно находя-
щиеся в IRQ 8 в ofh, куда-нибудь в другое место, а именно - в E8h.
Если прикладная программа использует только часть диапазона
E8h - EFh, вы сможете использовать эту прикладную программу под
Rundos. Например, интерфейс GEM (используемый некоторыми версиями
Ventura Publisher) использует Int EFh. Поскольку это прерывание со-
ответствует IRQ 7 в QNX, вы можете использовать GEM с Rundos, если
вы удостоверитесь, что никакие аппаратные средства не использует
IRQ 7.
Однако любая прикладная программа, которая использует весь
этот диапазон для программных прерываний (например QuaRro Professi-
onal), будет сталкиваться с аппаратными средствами, вызывая крах
QNX. Мало что можно сделать, чтобы такие прикладные программы рабо-
тали, но к счастью, очень немногие так себя ведут.
4. Рабочие файлы
Некоторые прикладные программы DOS, - текстовые процессоры в
особенности, - создают рабочие файлы с фиксированными именами. Если
рабочий файл создается в каталоге, где команда постоянно находится,
другой пользователь, совместно использующий этот каталог, не будет
способен использовать этот пакет, так как рабочий файл уже исполь-
зуется. С другой стороны, если рабочие файлы хранятся в текущем ка-
талоге пользователя, множественные пользователи будут способны од-
новременно редактировать файлы в различных каталогах. Некоторые
прикладные программы позволяют вам указывать каталог, где рабочие
файлы будут постоянно находиться.
5. Драйверы DOS.SYS
Rundos не поддерживает способность DOS загружать драйверы уст-
ройств ".SYS". Однако вы можете иногда использовать параметр Rundos
для достижения того же самого результата. Например, параметр +H
эмулирует драйвер HIMEM.SYS.
Кроме того, большинство драйверов .SYS имеют версии .COM или
.EXE, которые могут загружаться. Возьмем, например, имитатор расши-
ренной памяти. Хотя вы не можете использовать LIMSIM.SYS, коммер-
ческие версии LIMSIM.COM выполняют ту же самую функцию и работают с
Rundos.