ZX Format #04
14 июня 1996
  IS-DOS  

IS-DOS - Рубрика "IS-DOS - начинающим" No 4.

<b>IS-DOS</b> - Рубрика
   Рубрика "IS-DOS - начинающим" No 4

              Елисеев В. А.
      "IS-DOS - первое знакомство"
          (журнальный вариант)

(C) PENCRAFT 1995
(C) ISKRASOFT 1995

Продолжение, начало - в No 1, 2, 3
_________________________________________

     Интерпретатор командной строки

    В предыдущей части мы с Вами  изучили
один из важнейших способов вызова  наибо-
лее часто используемых  утилит  и  команд
IS-DOS - вызов по  специальным  клавишам.
Однако,далеко не всегда есть смысл  опре-
делять клавишу для той или иной  команды,
ведь некоторые команды бывают  нужны  до-
вольно редко, а под все утилиты со  всеми
возможными комбинациями  параметров  кла-
виш просто не хватит. Поэтому для органи-
зации оперативного обращения к системе  в
ней предусмотрен т. н. интерпретатор  ко-
мандной строки,  в  обязанности  которого
входит считывание и передача системе  ко-
манд,  вводимых  пользователем  в    спе-
циальную область памяти, называемую  "бу-
фером командной строки".  Ввод  команд  в
этот буфер осуществляется при помощи спе-
циальной программы -  монитора  командной
строки, которая называется mon.com и  за-
пускается обычно клавишей CS+m (в  IS-DOS
2.0 и ниже - m). Существует  также  рези-
дентный вариант монитора - mon.res, вызы-
ваемый клавишей m и обладающий рядом  до-
полнительных возможностей, о которых пой-
дет речь чуть позже.

    Монитор  командной  строки  открывает
специальную область экрана - окно монито-
ра, занимающее три верхних строки. В  ле-
вом верхнем углу этой  области  находится
мигающий курсор, такой же, как и в редак-
торе текстов. Вообще,  монитор  командной
строки представляет собой  текстовый  ре-
дактор  в  миниатюре,  только   созданный
текст не сохраняется в виде файла, а  пе-
редается в буфер командной строки, где  и
обрабатывается интерпретатором.

      Управляющие клавиши монитора:

CS+5 - курсор влево

CS+6 - курсор вниз

CS+7 - курсор вверх

CS+8 - курсор вправо

CS+0 - удалить символ слева

SS+W - удалить символ под курсором

SS+E - вставить пробел

CS+1 - режимы Рус/Lat

CS+2 - режимы Заглавные/Строчные

CS+3 - режимы Вставка/Замена

ENTER - завершение  ввода  и   выполнение
строки

CS+9, SS+ENTER, SS+CS, SS+A,  SS+SPACE  -
выход из монитора без выполнения  строки,
содержимое буфера не сохраняется

    Как Вы уже  поняли,  Нажатие  клавиши
ENTER приводит к завершению ввода  коман-
ды и  запускает  интерпретатор  командной
строки. По окончании работы команды,  как
правило, Вы возвращаетесь обратно в мони-
тор. При этом, если команда выполнена ус-
пешно, окно  редактирования  очищается  и
курсор устанавливается  в  левый  верхний
угол. Если в  командной  строке  допущена
синтаксическая  ошибка,  например  непра-
вильно заданы параметры, командная  стро-
ка сохраняется на экране, а курсор  уста-
навливается в конец строки, после чего Вы
получаете возможность исправить ошибку  и
вновь попытаться выполнить  команду,  на-
жав ENTER, если у Вас и после этого ниче-
го не получится - нажмите одну из  клавиш
выхода и внимательно прочтите help-файл к
необходимой Вам программе.

    Если  при  выполнении  Вашей  команды
произойдет системная ошибка - интерпрета-
тор сообщит об этом в специальном окне  в
нижней половине экрана, (расшифровку  но-
меров  системных  ошибок  см.  в    файле
S:HELP\error.txt), после чего, нажав  лю-
бую клавишу, Вы сможете выйти в  оболочку
IS-DOS и поразмышлять о  причинах  такого
печального  результата.  В  случае,  если
система не может найти  на  диске  нужный
Вам файл, в окне ошибок появится  надпись
"No filename". Если Вы вдруг получите та-
кое сообщение - помните, что оно не всег-
да означает, что  данного  файла  нет  на
диске вообще, просто укажите полный  путь
к нему, т. е.  в  каком  подкаталоге  его
следует искать.

    При работе в мониторе командной стро-
ки, в отличие от текстового редактора ос-
новные режимы (Рус/Lat,  Заглавные/Строч-
ные, Вставка/Замена) не  индицируются  на
экране,что создает  некоторые  трудности,
однако проблема эта легко разрешается при
помощи специальной резидентной  программы
indi.res. Установите и запустите  ее  ко-
мандами Q:RES\set Q:RES\indi.res и @indi,
и Вы увидите в правом  нижнем  углу  окна
редактирования стандартную индикацию  ре-
жимов: lat -  латинские  символы,  рус  -
русские, ins - режим вставки, ovr  -  ре-
жим замены, индикация режимов  заглавными
буквами сигнализирует о включении  режима
заглавных букв.

    Резидентный монитор командной  строки
mon.res, о котором уже упоминалось  выше,
выполняет те же функции, что  и  mon.com,
однако обладает рядом дополнительных воз-
можностей, значительно облегчающих  рабо-
ту с командной строкой.  Внутри  резиден-
тного монитора имеется специальный буфер,
размером 256 байт, в котором  запоминают-
ся команды, введенные нажатием ENTER. Это
избавляет Вас от необходимости заново на-
бирать текст команды, которую  необходимо
вызвать несколько раз. Кроме того, Вы мо-
жете отредактировать текст команды даже в
случае системной ошибки, или  ошибки  "No
filename". В случае  выхода  по  клавишам
отказа, команда не запоминается и  содер-
жимое буфера остается неизменным.  Коман-
ды в буфере резидентного монитора  распо-
лагаются в порядке их ввода, образуя  по-
добие кольцевого стека.  Для  перемещения
по нему в поисках нужной команды Вы може-
те использовать следующие клавиши:

SS+SPACE - перейти к предыдущей команде

SS+CS, CS+9 - перейти к следующей команде

    Таким образом, для  вызова  последней
введенной  команды   необходимо    нажать
SS+SPACE, а для вывода  самой  ранней  из
сохранившихся в буфере - SS+CS.  По  мере
заполнения буфера, более  старые  команды
стираются, содержимое стека смещается  на
одну строку и новая команда  записывается
на его вершину.  Максимальное  количество
запоминаемых команд зависит от их длины и
обычно составляет около 20.

    Резидентный монитор  имеет  еще  одну
полезную особенность - при нажатии клави-
ши SS+ENTER в текущую позицию курсора пе-
реносится имя файла или каталога, на  ко-
тором перед  вызовом  монитора  находился
курсор файловой панели. Выход из  монито-
ра с отказом от выполнения строки,  ввиду
занятости остальных клавиш  осуществляет-
ся только при помощи SS+A. Программа  ин-
дикации режимов indi.res работает с рези-
дентным монитором так же, как и с com'ов-
ским.

    Позволю себе напомнить, что при рабо-
те с резидентным монитором  категорически
запрещается удалять резиденты и драйверы,
установленные раньше,  чем  сам  mon.res,
это обязательно вызовет перемещение в па-
мяти самого монитора и приведет к  гаран-
тированному сбою в работе. В  таких  слу-
чаях пользуйтесь программой mon.com.

    Теперь поговорим более подробно о ко-
мандах в системе IS-DOS.  Команды  бывают
внутренние и внешние.  Внутренними  назы-
ваются команды, расположенные в теле сис-
темы. Таких команд всего пять:

L_S /n - назначить устройство n системным,

L_Q /n - назначить устройство n быстрым,

L_T /n - назначить устройство n текущим,

CAT s - сделать текущим подкаталог,  опи-
санный в строке s,

@m - запустить резидентную программу m

где  n - символьное  обозначение  устрой-
ства (как явные - A, B, C, D, E, F, так и
условные - S, Q, T),

s - полный путь к необходимому подкатало-
гу (например: Q:RES\TRANS\HELP\),

m - имя, под которым установлена резиден-
тная программа.

Примеры внутренних команд IS-DOS:

L_S /A - назначить устройство A системным

L_Q /S - назначить быстрым то же  устрой-
ство, которое назначено как системное

CAT S:UTIL\HELP - открыть (сделать  теку-
щим) каталог S:UTIL\HELP

@indi - запустить резидентную  программу,
установленную под именем indi

    Разумеется, перед вызовом  команды  @
необходимо, чтобы  резидентная  программа
была установлена утилитой set.com.

    Внешними командами в IS-DOS называют-
ся команды, подгружаемые с диска на  вре-
мя их исполнения. По сути  любой  com'ов-
ский файл может считаться внешней  коман-
дой.

    Для того, чтобы вызвать  любую  внеш-
нюю команду необходимо в командной  стро-
ке набрать  имя  этой  команды  со  всеми
необходимыми параметрами, не  забыв  ука-
зать полный путь к ней. Если команда  вы-
зывается из текущего каталога, путь  ука-
зывать не обязательно.

     Примеры вызова внешних команд:

Q:UTIL\diskname [вызов команды  изменения
имени диска]

Q:SHELL\exebat   T:SERVICE\BLK\ram128.bat
[вызов интерпретатора bat-файлов и испол-
нение файла ram128.bat]

Q:RES\set Q:RES\mon.res /e [удаление  ре-
зидентной программы mon.res]

set mon.res [то же, если на текущей пане-
ли открыт каталог RES\]

Q:UTIL\date  [вызов  программы  установки
текущей даты]

date [то же, если на текущей  панели  от-
кpыт каталог UTIL\]

           Командные bat-файлы

    Работать в мониторе командной строки,
как уже говорилось выше, хорошо, если ко-
манду нужно вызвать один - два раза. Если
же Вам необходимо часто использовать  ка-
кую-либо последовательность команд,  осо-
бенно если она достаточно велика, то луч-
ше создать т. н. командный файл,  который
позволит запускать эти команды  неограни-
ченное количество раз.

    Командные  файлы  в  системе   IS-DOS
представляют собой специальные  текстовые
файлы с расширением bat.  В  этих  файлах
содержатся тексты команд, которые необхо-
димо выполнить. Формат задания  команд  в
файлах такой же, как и в мониторе  коман-
дной  строки  -  по  сути  каждая  строка
bat-файла - это обычная командная строка.

    Интерпретацией bat-файлов  в  системе
IS-DOS занимается специальная  программа,
которая называется exebat.com и  распола-
гается в каталоге SHELL. Она считывает из
файла очередную строку и  помещает  ее  в
специально отведенную область памяти, где
ей уже  занимается  интерпретатор  коман-
дной строки системы.

    Командные файлы могут быть  вложенны-
ми, т. е. один командный файл может вызы-
вать другой командный файл.  Максимальная
глубина вложения составляет  120  файлов.
По окончании отработки каждого из вложен-
ных файлов управление передается  вызвав-
шему его файлу.

    Работу вложенных  командных  bat-фай-
лов пpоще всего пpедставить  на  конкpет-
ном пpимеpе, изобразив гpафически  после-
довательность исполнения команд.

    Например, если у нас в каталоге SHELL
есть четыре вот таких bat-файла:

[main.bat]

Q:UTIL\eliminat /r

Q:SHELL\exebat Q:SHELL\checksum.bat

Q:SHELL\exebat Q:SHELL\restres.bat

[checksum.bat]

Q:RES\set Q:RES\univ.res

Q:RES\set Q:RES\calc.res

@univ calc *.*

Q:RES\set Q:RES\univ.res /e

Q:RES\set Q:RES\calc.res /e

[restres.bat]

CAT Q:RES

set gmen.res

set mkdir.res

set date+3.res

@date+3

Q:SHELL\exebat Q:SHELL\setmon.bat

[setmon.bat]

set mon.res

set indi.res

@indi

то последовательность команд при  их  вы-
полнении будет следующей:

[начало работы main.bat]

Q:UTIL\eliminat /r

[начало работы checksum.bat]

Q:RES\set Q:RES\univ.res

Q:RES\set Q:RES\calc.res

@univ calc *.*

Q:RES\set Q:RES\univ.res /e

Q:RES\set Q:RES\calc.res /e

[конец работы checksum.bat]

[начало работы restres.bat]

CAT Q:RES

set gmen.res

set mkdir.res

set date+3.res

@date+3

[начало работы setmon.bat]

set mon.res

set indi.res

@indi

[конец работы setmon.bat]

[конец работы restres.bat]

[конец работы main.bat]

    В системе IS-DOS существует еще  одна
программа  для  работы  с  bat-файлами  -
bat.res. Это резидентная программа, кото-
рую  удобно  использовать  при  работе  с
большим числом bat-файлов, чтобы не вызы-
вать  каждый  раз  exebat.com.  Программа
bat-res устанавливается в систему при по-
мощи  команды  Q:RES\set   Q:RES\bat.res,
после чего для вызова bat-файла достаточ-
но ввести команду @bat, или  даже  просто
@,  указав   имя    вызываемого    файла.
@HEAD_EXAMPL = Например:

@ main.bat

при этом обязательно имя файла должно от-
деляться  от  символа  "@"  или   команды
"@bat" пробелом, иначе система  воспримет
его как имя резидентной программы.  Также
обязательно указывать расширение bat.

    Программа bat.res имеет три  дополни-
тельных команды, начинающиеся  с  символа
"*":

*L+ - выполняемые командные строки  выво-
дятся на дисплей в верхней части экрана.

*L- - выполняемые строки не выводятся  на
дисплей.

*E - специальная команда, которая  служит
для выхода из цепочки вложенных  bat-фай-
лов.  Она  ставится  в  начале  командной
строки, после исполнения которой происхо-
дит выход в  оболочку  с  восстановлением
программного стека.

    Команды можно набирать как  прописны-
ми, так и строчными буквами.

    Используя программу bat-res, не забы-
вайте о том, что во время ее работы опас-
но перемещать резидентные программы, уда-
лять резидентные  программы  и  драйверы,
так как это может вызвать  сброс  системы
из-за   перемещения    самой    программы
bat.res. Если командами eliminat или  set
удалить резидентную  программу,  установ-
ленную раньше, чем  bat.res,  то  послед-
ствия могут быть непредсказуемыми. В  та-
ких  случаях  лучше  все-таки  воспользо-
ваться услугами exebat.com.

         Составление USER-меню.

    Система  USER-меню  IS-DOS  позволяет
заранее запрограммировать вызов каких-ли-
бо часто  используемых  Вами  утилит  или
программ, оформив для  этого  специальное
окно со списком этих  программ,  курсором
для выбора и  краткими  комментариями.  В
этой главе речь пойдет о  том,  как  пра-
вильно самому написать  USER-меню  и  ис-
пользовать его для своих целей.

    USER-меню  представляет  собой   спе-
циальное определяемое пользователем окно,
состоящее из произвольного числа строк.

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

    Курсор меню перемещается  при  помощи
курсорных клавиш вверх  и  вниз,  нажатие
ENTER на одной из рабочих строк  вызывает
выполнение командной  строки,  закреплен-
ной за этой рабочей строкой  меню.  Выход
из USER-меню может быть осуществлен в лю-
бой момент нажатием стандартной  комбина-
ции клавиш SS+A.

    Конфигурация, внешний  вид  и  список
вызываемых команд для USER-меню содержит-
ся в текстовом файле в специальном форма-
те,  который  будет  описан  чуть  позже.
Интерпретацией  этого  файла   занимается
программа menu.com, находящаяся обычно  в
каталоге SHELL (до 06.95 - UTIL).

    Программа  menu.com  при  вызове   из
bat-файла или командной строки без  пара-
метров ищет в  текущем  каталоге  файл  с
именем menu.mnu (до  06.95  -  menu.txt),
содержащий описание меню, а не найдя  его
в текущем каталоге, ищет файл с таким  же
именем в каталоге  SHELL.  Это  позволяет
создавать практически  в  любом  каталоге
свои локальные USER-меню, а  общее,  уни-
версальное меню,  вызываемое  при  отсут-
ствии  локального,  держать  в   каталоге
SHELL.

    Кроме того при вызове  из  bat-файла,
или командной строки  программе  menu.com
может быть задано конкретное  имя  файла,
содержащего описание  необходимого  меню.
Это позволяет, в частности, закрепить вы-
зов конкретного USER-меню  за  какой-либо
клавишей в файле extkey.txt, или  органи-

C - командные строки, содержащие команды,
выполняемые при нажатии ENTER на соответ-
ствующей рабочей строке меню

c - командные строки, предназначенные для
вызова больших программ с адресом загруз-
ки ниже 25000

Z - строки для внутренних команд DOS, вы-
зываемых при нажатии ENTER перед выполне-
нием соответствующей командной строки

H - строки текстов-подсказок, которые мо-
гут выводиться  на  экран  при  установке
курсора на соответствующую рабочую строку

    Если в командной строке после  управ-
ляющего символа C, c или T  стоит  символ
"*", то имя файла, на  котором  находился
панельный курсор в момент вызова USER-ме-
ню, передается в качестве параметра вызы-
ваемой команде.

Поясним на примере:

    Допустим, что в  момент  вызова  меню
панельный курсор указывает на  имя  файла
prise.txt, тогда командная строка вида

С*Q:SHELL\delete

вызовет выполнение команды

Q:SHELL\delete prise.txt

    Строки K, P и T определяют  параметры
и команды для всего меню в целом,  поэто-
му в каждом меню не может быть более  од-
ной строки K, строки P и строки T.  Стро-
ки K, P, T, H  и  Z  не  являются  обяза-
тельными, при отсутствии строки  K  уста-
навливаются параметры по  умолчанию  (см.
далее).

    Положение строк K, P  и  T  в  тексте
значения не имеет, в каком бы месте  фай-
ла Вы их ни поместили - система все  рав-
но их найдет. Строки A и a  располагаются
в том порядке, в котором они должны  быть
выведены в окне меню.  Связанные  с  ними
строки Z, H, C и c  должны  располагаться
после соответствующей им строки A.

    Такая особенность позволяет использо-
вать одну строку команд или подсказок для
нескольких строк меню, но  требует  более
внимательного отношения к тексту.

Поясним на примере:

    Допустим, мы имеем файл menu.mnu сле-
дующего содержания:

a Работа с MS-DOS

a

A ВЫХОД В SHELL

AПИСАТЬ НА MS-DOS ДИСКИ

HЗапись отмеченных файлов

CQ:MSDOS\to_msdos.com

AЧИТАТЬ ИЗ MS-DOS ДИСКА

HЧтение дисков MS-DOS

CQ:MSDOS\from_msd.com

Этот файл содержит две серьезных ошибки:

1. При установке курсора на строку "ВЫХОД
В SHELL" система выведет подсказку, отно-
сящуюся к следующей строке, так как соот-
ветствующая этой строке подсказка  отсут-
ствует.

2. При нажатии ENTER на той же строке бу-
дет исполнена командная  строка,  относя-
щаяся к следующей строке  меню,  так  как
соответствующая командная  строка  отсут-
ствует.

    Эту проблему можно решить  как  мини-
мум двумя способами:

Вариант 1 - задать для  первой  строки  A
пустые строки C и H, тогда текст меню бу-
дет иметь вид:

a Работа с MS-DOS

a

A ВЫХОД В SHELL

H

C

AПИСАТЬ НА MS-DOS ДИСКИ

HЗапись отмеченных файлов

CQ:MSDOS\to_msdos.com

AЧИТАТЬ ИЗ MS-DOS ДИСКА

HЧтение дисков MS-DOS

CQ:MSDOS\from_msd.com

    Пустые строки H, Z, C и c можно опус-
тить, если в Вашем меню нет ни одной  та-
кой строки.

Вариант  2 - перенести  строку  "ВЫХОД  В
SHELL" в конец файла  и  дописать  строку
подсказки для нее:

a Работа с MS-DOS

a

AПИСАТЬ НА MS-DOS ДИСКИ

HЗапись отмеченных файлов

CQ:MSDOS\to_msdos.com

AЧИТАТЬ ИЗ MS-DOS ДИСКА

HЧтение дисков MS-DOS

CQ:MSDOS\from_msd.com

A ВЫХОД В SHELL

H Выход в оболочку

    Поскольку строка "ВЫХОД В SHELL" ока-
залась в конце текста, при ее выборе  ни-
чего не происходит и отработка  меню  за-
вершается с выходом в оболочку.

Формат строки ключей K:

Строка K в описании USER-меню имеет вид:

K/<символ> <число> / <символ> <число> ...

    Числа можно записывать  в  десятичном
формате (по умолчанию), например, 255;  в
16-ричном с префиксом #, например, #1F; в
октальном с префиксом o, например, o12; а
также в двоичном с префиксом %, например,
%01100011.

    Разделять ключи пробелами не требует-
ся, так как ключи и так отделены друг  от
друга символом "/". Строка K  интерпрети-
руется до тех пор, пока не  будет  встре-
чен символ перевода строки, поэтому  раз-
бивать ее на несколько строк нельзя. Так-
же в одном тексте меню не должно быть бо-
лее одной строки K,  в  противном  случае
интерпретируется только первая из них.

Ключи USER-меню:

A - байт конфигурации меню.

бит 1 - вид окна меню, "0"  -  без  тени,
"1" - с тенью.

бит 2 - реакция на ENTER, "0" - интерпре-
тируются строки c, C и Z, после  отработ-
ки осуществляется выход в оболочку, "1" -
выполняются только строки внутренних  ко-
манд Z, после чего происходит  возврат  в
меню.

бит 3 - рамка окна, "0" - одинарная,  "1"
- двойная.

бит 4 - отработка строки P  при  входе  в
меню, "0" - выполнить, "1"
- игнорировать.

биты 5 - 8 - не используются и могут  со-
держать любые значения.

    Все эти режимы удобно задавать  деся-
тичными числами 1, 2, 4 и 8 соответствен-
но, при этом суммарные значения  включают
несколько режимов одновременно, например:

/A5 - окно с тенью и двойной рамкой.

B - второй байт конфигурации.

биты 1 и 2 - не используются.

бит 3 - вид курсора, "0" -  курсор  выво-
дится на всю ширину окна,  "1"  -  курсор
выводится на внутреннюю область окна,  не
затрагивая область рамки.

бит 4 - не используется.

бит 5 - вид окна подсказки, "0" - с  рам-
кой, "1"- без рамки.

биты 6 и 7 - не используются.

    Эти значения  также  удобно  задавать
десятичными числами (4 и 16 соответствен-
но), также возможно  суммирование  значе-
ний, например:

/B20 - окно подсказки без  рамки,  курсор
внутри рамки окна.

E - X-координата окна меню в  знакоместах
8*8 пикселей.

D - Y-координата окна меню в строках.

    Размеры  окна  система  устанавливает
автоматически в соответствии  с  количес-
твом строк в меню и  максимальной  длиной
строки.

H - X-координата окна подсказки в  знако-
местах 8*8 пикселей.

G - Y-координата окна подсказки в строках.

N - высота подсказки в строках.

C - ширина окна подсказки  в  знакоместах
6*8 пикселей.

F - номер строки, на которой располагает-
ся курсор при вызове меню.

K - цвета окна меню

T - цвета тени окна меню

J - цвета курсора меню

O - цвета рабочего курсора меню

I - цвета окна подсказки

Цвета задаются в стандартном формате:

биты 0 - 2 - цвет чернил

биты 3 - 5 - цвет бумаги

бит 6 - яркость

бит 7 - мерцание

Для байта цветов тени биты 6 и 7 игнорируются.

    Как уже было сказано выше, при отсут-
ствии строки K параметры  устанавливаются
по  умолчанию.  Значения  параметров   по
умолчанию приводятся в табл. 5.

Таблица 5. Значения паpаметpов меню по умолчанию.

Паpаметp Значение по умолчанию

A         0

B         16

E         Центpовка по X

D         Центpовка по Y

H         0

G         0

N         1

C         32

K         %00001111

T         0

J         %00111001

O         %00100000

I         %00001111

Пример USER-меню:

TCAT Q:SHELL\

PCAT Q:

K/N3/B0/A5/G1/E0/D4/T%00000001/K%00101000/J%00001110/O%01001110/C38

a    USER MENU

a

A РАБОТА С ДИСКОМ

H Дисковые утилиты, работа с файлами

CQ:SHELL\menu Q:SHELL\MNU\disk.mnu

ZCAT Q:UTIL\

A    РЕЗИДЕНТЫ

CQ:SHELL\menu Q:SHELL\MNU\res.mnu

H Установка драйверов и резидентов

A РАБОТА С TR-DOS

CQ:SHELL\menu Q:SHELL\MNU\tr_dos.mnu

H Обмен файлами с системой TR-DOS

A РАБОТА С MS-DOS

CQ:SHELL\menu Q:SHELL\MNU\ms_dos.mnu

H Обмен файлами с системой MS-DOS

AДЕРЕВО КАТАЛОГОВ

CQ:UTIL\tree

H Вывод дерева каталогов текущего диска

A  СПРЯТАТЬ ФАЙЛЫ

H Установка атрибутов "Скрытый файл"

CQ:SHELL\exebat Q:RES\attrh.bat

A УВИДЕТЬ  ФАЙЛЫ

H Снятие атрибута "Скрытый файл"

CQ:SHELL\exebat Q:RES\attr.bat

A  ВЫХОД В SHELL

H Выход в оболочку IS-DOS

    Итак, на  этом  мы  завершаем  первую
статью рубрики "IS-DOS начинающим" и  на-
деемся, что Вы, уважаемые читатели  проч-
ли ее если  не  с  удовольствием,  то  по
крайней мере с интересом. Еще  раз  хотим
напомнить, что эта статья ни в коей  мере
не претендует на всеохватность  и  содер-
жит, в основном, первоначальные сведения,
необходимые для успешного и быстрого  ос-
воения системы и приобретение  практичес-
ких навыков работы с программами в  среде
IS-DOS.

    В следующих номерах журнала мы плани-
руем выпустить подробное описание тексто-
вого редактора IS-EDIT,  признанного  са-
мым мощным и удобным на сегодняшний  день
текстовым редактором  для  ZX-совместимых
компьютеров, на очереди  также  подробное
описание утилит IS-DOS, практическое  по-
собие по конфигурации и настройке  систе-
мы, описание программ печати и  просмотра
файлов и многое другое.

    Еще раз напоминаем, что все Ваши  по-
желания и замечания по этой статье  и  по
другим материалам, касающимся  IS-DOS  мы
всегда будем рады выслушать  по  телефону
245-00-91 (с 10.00 до  16.00  по  рабочим
дням,  спросить  Программный  отдел),  по
этому же телефону Вы можете получить опе-
ративную консультацию по  всем  вопросам,
касающимся системы  IS-DOS  и  прикладных
программ, работающих в ее среде.

Фирма "IskraSoft"
_________________________________________
,программ  -  детально прорабатывать алго-
ритм  взаимодействия своих произведений с
"внешним  миром", чтобы посмотреть на ра-
боту  программы можно было не только у ее
автора.

Подфункции  для  работы  с жестким диском
вступят в силу в версии 4.0 Теневого Сер-
вис-монитора.

hddid equ 34 ;идентификация жесткого дис-
ка
вх.:   C=34;
       буфер,  установленный  подфункцией
SETWRK (9);
вых.:  CY=1, если были ошибки, код ошибки
возвращается в аккумуляторе:
       Akk=86 жесткий диск не найден;
Действие: поиск жесткого диска и настрой-
ка на его параметры.
Предварительно  необходимо  задать буфер,
объемом  не  менее  512 байт, подфункцией
SETWRK  (9).  hddid выполняется автомати-
чески  каждый  раз  при "холодном" сбросе
компьютера.

hddmount   equ  35  ;подключение  раздела
TR-DOS к HDE
вх.:   C=35;
       Akk  -  номер  диска (1 "B", 2 "C"
или 3 "D") или тип раздела;
       de ■ текстовая строка спецификации
раздела (dr:[\]part\dos);
вых.:  CY=1, если были ошибки ■ раздел не
найден
Действие: подключение раздела
Для   начала  эмуляции  подразделов  типа
TR-DOS на устройствах "C" и "D" предвари-
тельно   необходимо   "соединить"   соот-
ветствующее устройство с подразделом. Ес-
ли    в   спецификации   раздела   задано
устройство (dr), то значение аккумулятора
игнорируется.  В  обозначение  part ■ имя
подраздела TR-DOS, dos ■ имя диска в под-
разделе.

Подфункция  hddmount  может  применятся и
для  установки  других типов подразделов,
конкретные  режимы указываются отдельными
битами аккумулятора.
Эта  подфункция находится в стадии отлад-
ки,  и некоторые параметры могут быть из-
менены.

$hddrd equ 36 ;чтение секторов из раздела
жесткого диска
вх.:   C=36;
 hl ■ адрес буфера в памяти;
       de  ■  начальный  номер сектора (в
разделе);
       b ■ число секторов (размер сектора
512 байт!)
вых.:  CY=1, если были ошибки.
Действие:   считывание  указанного  коли-
чества секторов из текущего подключенного
раздела в буфер.

$hddwr equ 37 ;запись секторов из раздела
жесткого диска
вых.:  C=37;
 hl ■ адрес буфера в памяти;
 de ■ начальный номер сектора;
       b ■ число секторов (размер сектора
512 байт!)
вых.:  CY=1, если были ошибки.
Действие:  запись  указанного  количества
секторов из буфера в текущий подключенный
раздел.
                ________

              RST 8 код 82h
      Установка переменных монитора

вх.:  DE  ■  код подфункции (тип перемен-
ных);
       BC  ■ относительный адрес перемен-
ных в подфункции;
       CY ■ вид операции: установленный ■
запись, сброшенный ■ чтение;
       Akk ■ записываемое или считываемое
значение.

При  изменении  отдельных  бит необходимо
сначала  считать значение переменной, за-
тем  изменить  требуемый  бит и, наконец,
записать новое значение.

Обозначения размеров переменных:
db ■ один байт;
dw  ■  два  байта,  но доступ должен осу-
ществляться побайтно;
ds  ■  несколько байт однотипных перемен-
ных.


DE=00  Системные переменные монитора

BC=+12 (db)
Отдельные  биты этого байта позволяют уп-
равлять выводом значений регистров на эк-
ран монитора (запись 1 запрещает вывод):
7 ■ PC
6 ■ SP
5 ■ IX
4 ■ IY
3 ■ HL (HL')
2 ■ DE (DE')
1 ■ BC (BC')
0 ■ AF (AF')
BC=+21 (db)
Байт управления выводом на принтер:
7  ■  (0) данные выводятся в прямом виде,
(1) данные выводятся в инверсном виде;
3  ■ (0) два стоповых бита, (1) один сто-
повой бит;
2 ■ (0) 8 бит в байте данных, (1) 7 бит в
байте данных;
,1  ■  (0) скорость передачи 9600 бод, (1)
скорость передачи 1200 бод;
0  ■ (0) интерфейс Centronics, (1) интер-
фейс RS232.


DE=02  Переменные режимов

BC=+0 (db)
константа  антидребезговой задержки мони-
тора.
BC=+1 (db)
константа задержки перед автоповтором.
BC=+2 (db)
константа задержки между автоповторами.
BC=+5 (db)
цвет  бордюра, устанавливаемый монитором,
при подаче звукового сигнала ошибки.
BC=+6 (db)
код  символа "возврата каретки" для прин-
тера.
BC=+7 (db)
код символа "перевода строки" для принте-
ра.
BC=+8 (db)
код  символа "перевода формата" для прин-
тера.
BC=+9 (dw)
код,  определяющий скорость передачи 9600
бод  для последовательного интерфейса (по
умолчанию 0bh).
BC=+0bh (dw)
код,  определяющий скорость передачи 1200
бод  для последовательного интерфейса (по
умолчанию 6ah).
BC=+0dh (ds 11)
первый  байт (+0dh) задает количество уп-
равляющих символов, служащих для перевода
принтера   в  графический  режим  (непос-
редственно  за ними будет выдано 768 байт
графической  информации при печати экрана
из монитора). Сами коды располагаются со-
ответственно со смещения +0eh и далее.
BC=+15h (ds 4)
коды,  служащие  для  перевода принтера в
текстовый режим, завершающие печать экра-
на. Байт +015h хранит количество управля-
ющих  кодов, сами коды хранятся со смеще-
ния +16h и далее.
BC=+1dh (db)
число  строк  на  странице  при печати на
принтере.
BC=+1eh (db)
число  символов  в  строке  при печати на
принтере.


DE=04  Переменные дисковой BIOS

BC=+4 (ds 4)
байты  хранят максимальное число секторов
Л4╔БДБТ зшР,на  дорожке при размере сектора 128, 256,
512 и 1024 байта соответственно.
BC=+0ah (db)
номер  текущего  дисковода:  0 ■ дисковод
"A", 1 ■ "B", 2 ■ "C" и 3 ■ "D".
BC=+0bh (db)
число  попыток считывания при ошибке, на-
чальное значение 3.
BC=+0ch (ds 4)
коды, определяющие тип дисководов (специ-
фикации)   "A",  "B",  "C"  и  "D"  соот-
ветственно.
BC=+10h (ds 4)
коды, определяющие тип дискеты в дисково-
дах "A", "B", "C" и "D" соответственно.
BC=+18h (ds 2)
коды,  time-out  для дисководов "A" и "B"
соответственно.
BC=+1dh (db)
код  ошибки дискового интерпретатора, ус-
танавливается RST 8, код 81h:

1  нет  готовности (диск не крутиться или
его нет);

2  попытка  записи  на защищенную дискету
(функции 6, 11 и 13);

3 во время выполнения функции была нажата
клавиша BREAK;

4  ошибка  при  чтении или записи сектора
функциями  5 или 6, можно воспользоваться
функциями 3 или 4;

5   ошибка   позиционирования  (не  соот-
ветствует номер дорожки);

6  ошибка  позиционирования  (не считался
адресный маркер дорожки);

8 ошибка позиционирования, несоответствие
типов (попытка использовать 80 дорожечный
диск   на  40  дорожечном  дисководе  или
двухсторонний  диск на одностороннем дис-
ководе);

9  неформатированная  дискета (функции 7,
8);

16   дискета   не  соответствует  формату
TR-DOS  по  физическим параметрам: размер
сектора,  плотность записи, либо нет кода
идентификатора <197> 10h (функция 8);

17  несовпадение кода типа дискеты TR-DOS
реальному формату;

18 не открыт рабочий буфер (функция 8);

20  были ошибки при чтении/записи дорожки
(функции 12, 13).
                  ____

              RST 8 код 83h
        Очистка окна пользователя

Подфункций нет.
вх.: IX ■ дескриптор используемого окна.
Действие:  инициализация  и очистка окна,
задаваемого "дескриптором" ■ блоком, сос-
тоящим  из  13  байт.  Назначение  байт в
дескрипторе окна приведено ниже.

+0, +1
Координаты  курсора  в  окне (Y, X) <197>
первоначально   устанавливаются   в  ноль
программой  очистки окна, затем могут мо-
дифицироваться пользователем.

+2, +3
Координаты  начала окна (Y, X). Эти коор-
динаты измеряются в стандартных знакомес-
тах размером 8*8 точек.

+4, +5 Размер окна в стандартных символах
(8*8  точек), первое число размер по вер-
тикали, второе <197> по горизонтали.

+6 Байт хранит цветовые атрибуты окна.

+7
Системные  атрибуты  окна,  задаются  от-
дельными битами:
5  ■ запрет вывода, все выводимые символы
игнорируются;
,4  ■  произвольный  формат, по достижению
правого края окна будут автоматически вы-
полнены  команды перевод строки и возврат
каретки (см. RST 8, код 84h);
3  ■ выполнять автоматический возврат ка-
ретки  при приходе символа перевода стро-
ки;
2   ■  выполнять  автоматический  переход
строки при приходе символа возврат карет-
ки;
1  ■ изменять атрибуты при выводе каждого
символа  (в противном случае атрибуты ус-
танавливаются только во время очистки ок-
на);
0 ■ не выводить символ курсора.

+8, +9
Служебные байты.

+10
Размер  символов в точках. Монитором под-
держивается  два размера символов в 6 и в
8 точек.

+11
Размер  окна в символах. Для символов в 8
точек этот размер совпадает с шириной ок-
на. Если размер символа 6 точек, то перед
инициализацией    (очисткой)   необходимо
рассчитать размер окна и поместить в этот
байт.

+12
Код  символа курсора. Код с этим символом
будет выводится в месте отмечая положение
курсора,  если  сброшен 0 бит в системных
атрибутах окна.

Использование:  прежде всего окно необхо-
димо  описать,  задав  в  дескрипторе на-
чальные координаты окна и его размер. Все
координаты  отсчитываются от верхнего ле-
вого  угла  окна, либо экрана. Затем окно
необходимо очистить функцией 83h, которая
инициализирует   некоторые  переменные  в
дескрипторе.
                  ____

              RST 8 код 85h
    Вывод символа в окно пользователя

Подфункций нет.
вх.: Akk код выводимого на принтер симво-
ла;
       IX  ■ дескриптор используемого ок-
на.
Действие: вывод символа в окно, указывае-
мое дескриптором. Символы из набора ASSCI
(коды   в   диапазоне   32...127)  непос-
редственно печатаются в определённом окне
экрана (см. режимы в дескрипторе, описан-
ные  в RST 8, код 84h). Наряду с обычными
"печатаемыми"   символами,  возможно  ис-
пользование управляющих кодов. Символом *
отмечены  управляющие коды, появившиеся и
действующие в версиях старше 3.0b (код 64
от 05.11.94).

1  Установка  атрибутов  для  последующих
символов
Непосредственно   за   управляющим  кодом
должны  быть  выведены  два байта: первый
байт  ■  маска устанавливаемых атрибутов,
второй  ■  маска  сбрасываемых атрибутов.
Значимые  биты  должны быть установлены в
байтах маски.

2 Восстановление запомненных атрибутов

4*  Вывод  с выравниванием Следом за этим
управляющим  кодом  должна  быть передана
строка печатаемых символов, которая будет
выровнена  по  центру или по правому краю
окна.  Длина  строки  не должна превышать
ширину окна, управляющие символы в строке
не  допускаются, за исключением двух сле-
дующих, завершающих строку, кодов.

5* Вывод строки по центру окна

6*  Вывод  строки  выровненной по правому
краю окна

7      Вывод звукового сигнала
Программа  отрабатывает короткий звуковой
сигнал.  Бордюр  получает  при этом цвет,
установленный  в специальной ячейке мони-
тора (см. Переменные режимов, цвета).

10     Перевод строки
Если курсор находится в последней строке,
то происходит "свиток".

12*  Очистка окна, курсор устанавливается
в левый верхний угол

13     Перевод каретки
Перемещение курсора в крайнюю левую пози-
цию  строки в окне. Если установлен соот-
ветствующий  бит  в  дескрипторе окна, то
совместно  с возвратом каретки вызывается
и программа обслуживания символа перевода
строки.

27  Позиционирование  курсора внутри окна
Непосредственно   за   управляющим  кодом
должны  быть  выведены  два байта. Первый
определяет позицию курсора в строке, вто-
рой номер строки. Отсчет ведётся от лево-
го верхнего угла окна начиная с нуля.

30*    Обратный свиток
Положение  курсора  не  изменяется,  весь
текст  в  окне  сдвигается на одну строку
вверх,  первая  строка  текста пропадает,
последняя строка заполняется пробелами.
                  ____

              RST 8 код 86h
  копия графического экрана на принтер

Подфункций нет.
вых.:  CY=1, если во время вывода был на-
жат BREAK.
Функция  доступна,  начиная с версии 2.4a
(код 3).
Действие:  вывод  на принтер копии графи-
ческого  экрана,  аналогичной получаемому
из  меню  Сервис-монитора. При печати ис-
пользуются текущие настройки монитора.
                  ____

              RST 8 код 87h
       установка двойной скорости

Подфункций нет.
вых.: CY=1, если плата компьютера не поз-
воляет переключать скорость.
Функция  доступна,  начиная с версии 2.4d
(код 3 от 11.12.93)
                  ____

              RST 8 код 88h
       установка обычной скорости

Подфункций нет.
вых.: CY=1, если плата компьютера не поз-
воляет переключать скорость.
Функция  доступна,  начиная с версии 2.4d
(код 3 от 11.12.93)
                  ____

              RST 8 код 89h
        работа с микросхемой CMOS

Подфункций нет.
вх.: D ■ код операции:
         7  ■  записать  (1)/ считать (0)
значение времени и/или даты;
         6 ■ считать в буфер (только, ес-
ли бит 7 = 0, см. также бит 5);
         5 ■ формат считывания ■ (1) пря-
мое  считывание; (0) считывание в формате
ASCIZ;
         0 ■ работать с датой (1), или со
временем (0);
,       HL  ■  адрес  буфера (если бит 6 =
1);
       C ■ секунды/число;
 B - минуты/месяц;
       E - часы/год | формат считывания в
буфер.

вых.:  CY=1, если микросхемы CMOS нет или
задан неверный формат запроса;
       (HL)  ■  строка текста ASCIZ (если
бит 6 = 1);
       C ■ секунды/число;
 B - минуты/месяц;
 E - часы/год;
 L - день недели.

Функция  доступна,  начиная с версии 3.1f
(код 70 от 21.05.95)
Действие:  установка или чтение показаний
текущего  времени из микросхемы энергоне-
зависимой памяти и часов (CMOS).
Использование: один вызов функции обеспе-
чивает  доступ либо к текущей дате (бит 0
регистра  D  установлен), либо к текущему
времени  (бит  0 регистра D сброшен). 7-м
битом регистра D указывается тип выполня-
емой  функцией операции: запись ■ 1, счи-
тывание ■ 0.

Считывание значений из микросхемы возмож-
но  в двух вариантах ■ передачей в буфер,
адрес которого указывается в регистрах HL
(бит 6 регистра D установлен), либо пере-
дачей  в  регистры C, B, E и L (бит 6 ре-
гистра D сброшен).

Интерпретация   считываемых  через  буфер
значений  определяется 5-м битом регистра
D. Если он установлен, то в буфер помеща-
ется  6  байт  данных о текущем времени и
дате (по одному байту на ■ секунды, мину-
ты,  часы,  число,  месяц, год). Если 5-й
бит регистра D сброшен, то осуществляется
перевод  времени или даты в строку симво-
лов ASCII, оканчивающуюся нулевым байтом.
При  этом содержимое регистра E использу-
ется  как  формат вывода: младшие 5 бит ■
символ разделителя ■ к ним будет добавле-
но 20h; биты 7, 6 и 5 разрешают вывод со-
ответственно  часов,  минут и секунд; для
вывода даты:
7 выводить день недели,
6 ставить символ "0" перед числом,
5 выводить месяц словом и перед годом до-
бавлять "19".

При изменение текущей даты задание нового
значения  возможно  только через регистры
C, B и E; изменить день недели нельзя, он
рассчитывается программно для текущей да-
ты.

Остальные ячейки CMOS-памяти используются
монитором   для   своих   нужд,   поэтому
подпрограмм работы с ними пока не предус-
мотрены.
              ____________

Замечания  и предложения по работе встро-
енного   программного  обеспечения  можно
высказать,  написав  письмо в электронную
почту по адресу 2:5030/25.1 (FidoNet) или
moa@ddeeds.spb.su (InterNet).



Другие статьи номера:

Игрушки - 48 утюгов (3 уровень).

Игрушки - прохождение La abadia del crimen.

Игрушки - новелла по игре "Приключения Винни Пуха" (Level 1)

Программистам - изучаем Бейсик (часть 4).

Программистам - Адаптация программ под TR-DOS #2.

Программистам - IMMORTAL #2 (бессмертие в играх).

Программистам - музыкальные Редакторы, которые мы выбираем.

Программистам - справочник по теневому сервис монитору Scorpion ZS 256.

Программистам - "В ПОИСКАХ ВЕЧНОЙ ЖИЗНИ".

IS-DOS - Рубрика "IS-DOS - начинающим" No 4.

IS-DOS - пользователям" No4: "Работа с электронным диском в среде IS-DOS".

IS-DOS - информация о фирме ISKRASOFT.

Железо - Nemo отвечает на вопросы пользователей.

Железо - Сообщение от фирмы Nemo (о микропроцессорах Z84C0010PEC).

Премьера - АССЕМБЛЕРЫ, КОТОРЫЕ МЫ ВЫБИРАЕМ (описание XAS).

Премьера - Описание программы 'CONVER-Commander V 4.50 pro'.

Премьера - НЛО-2. Дьяволы бездны.

Презентация - новгородская группа Digital Reality о себе.

Интервью - Интервью Капитана Nemo с комментариями фирмы Искрасофт.

Интервью - Николай Родионов и ZX-Sectrum.

Интервью - интервью с разработчиком компьютера HOBBIT Дмитрием Михайловым.

Отдохнём - HAL 9000

Отдохнём - Nemo рассказывает о ВиртуалЕТной реальности в России.

Почтовый ящик - письма читателей.

Почтовый ящик - доска обьявлений.

Почтовый ящик - "Империя Spectrum".

Разное - Вступительная новелла к игре Paradise Lost (Потерянный Рай).

Разное - перспективы П/О: WARCRAFT

Разное - Amiga Club: Вопросы и ответы #2.

Разное - Amiga Rulez или пропоганда здорового образа жизни.

От Авторов - о новом номере и планах на будущее.

Авторы журнала - ZX-Format No.4

Лотерея - первые итоги первой лотереи.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Четыре килобайта - С началом Нового учебного года!
Techno-nature - Наркомания XX: байка от Dj.Ironman'а.
Сплюнул и грязно выругался! - словарь компьютерного сленга.
Софт - описание программы проверки интеллекта.
Версии - 2 версии игры: UFO-1.

В этот день...   25 апреля