
==================================================================
    (C) март 1985, июнь 1987			20 июля 1987
    Автор: Потемкин М.И., рабочий телефон 135-23-70,
	   ВЦ АН СССР, Москва, ГСП-1, ул. Вавилова, 40.
	   Отдел Вычислительной техники


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

	1. Передача не может преследовать никаких корыстных
	   целей.

	2. Право свободной передачи не распространяется  на
	   исходные тексты программ.

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

	4. Нельзя каким-либо образом делать доступными дру-
	   гим лицам или организациям описаные в данном до-
	   кументе программы, не передавая им текст данного
	   документа. Не экономьте место на диске  за  счет
	   времени автора, потраченного на телефонные  кон-
	   сультации.


==================================================================


  Файл HELP.MX содержит справочник по "SET MX:" командам.
				- 1 -

	1. ВВЕДЕНИЕ


    В этом файле описан драйвер (программа управления)  для
накопителей на гибких 133-х мм дискетах (НГМД  6022,  6021,
6121, Robotron и др.), подключенных к ЭВМ через  контроллер
"обычной плотности" (с "подорожечной" структурой записи). В
ОС ДВК этот драйвер называется "MX". Название "MX" было со-
хранено для устранения кривотолков (тот это драйвер или  не
тот?), хотя текст программы
	 Н Е    И М Е Е Т    Н И Ч Е Г О    О Б Щ Е Г О
с  соответствующей программой из ОС ДВК. Формат записи сов-
падает с принятым в ОС ДВК. В тексте приняты обозначения:

    MX ДВК - драйвер, поставляемый с ОС ДВК;
    MX V1  - первая версия драйвера, (март 1985);
    MX V2  - вторая версия драйвера, (июль 1987).



	2. ОТКУДА ОН ВЗЯЛСЯ ?

    Идея написать драйвер  для  устройства  MX  принадлежит
А. Чморе из ИППИ АН СССР. Он обратился к автору с предложе-
нием о совместной работе по увеличению надежности  хранения
информации на дискетах. Предполагалось, что Андрей разрабо-
тает мощный  проверочный  код  с  возможностью  исправления
группы ошибок, а автор встроит этот код в драйвер. Код  был
разработан, причем предложенная Андреем его программная ре-
ализация выполняла все вычисления в  реальном  времени,  не
замедляя обмен данными с диском. К сожалению, из  накоплен-
ной к этому времени статистики следовало, что основной при-
чиной сбоев являлись ошибки в драйвере MX из ОС ДВК:  иска-
жения информации, неустранимые повторным чтением, закладыва-
лись еще до записи. Если же сбой происходил по вине аппара-
туры, информация чаще всего оказывались искажена  так,  что
никакой контрольный код не мог ее восстановить. В этой  си-
туации автор решил не исправлять ошибки при чтении, а ввес-
ти в драйвер контроль качества записи. Это было  тем  более
оправдано, что новый драйвер даже  с  включенным  контролем
записи работал быстрее, чем его тезка из ОС ДВК.

    В результате появилась первая версия драйвера  (MX  V1,
март 1985), в 1.5 .. 2 раза более быстрая, более надежная и
менее изнашивающая дискеты, чем драйвер из ОС ДВК. Отданный
для пробы в несколько организаций, драйвер неожиданно быст-
ро и бесконтрольно распространился. Поскольку автор не  до-
гадался сделать описание возможностей и особенностей нового
драйвера, процесс распространения сопровождался лавиной те-
лефонных звонков (вместо  описания  автор  снабдил  драйвер
своим телефоном), что вызвало недовольство соседей по  ком-
нате. Изготовленное в панике описание уже не могло  сущест-
венно исправить ситуацию.

    Среди большого количества звонков встречались  полезные
- с предложениями по улучшению или с сообщениями  об  ошиб-
ках. Первую ошибку (в подсистеме ликвидации  сбоев  записи)
обнаружил А. Кондрашев, использовавший драйвер при реализа-
ции языка АПЛ. Кроме того, ряд пользователей указал на  не-
приятную задержку вывода  на  экран  при  работе  драйвера.
Большую помощь автору оказал  Р.А.  Бронштейн.  Он  добавил
распечатку текущих значений  параметров,  команду  "SET  MX
SYSGEN", а также инициировал работу по созданию второй вер-
сии драйвера, способной работать на разных типах дисководов,
и принимал активное участие в обсуждении возникавших  проб-
лем. К первому варианту второй версии драйвера  он  добавил
команды "SET MX ACTIV", "SET MX KNOW" и "SET MXn [NO]CHECK",
соответственно слегка модифицировав формат записи без поте-
ри совместимости с ОС ДВК, а также выполнил  локальную  оп-
оптимизацию драйвера. В благодарность за это автор  взвалил
на него нудную работу по испытаниям  второй  версии.  (Ска-
занное никоим образом не означает, что Р.А.  Бронштейн  не-
сет ответственность за оставшиеся  в  драйвере  ошибки:  их
вместе с драйвером делал все-таки автор,  и  делиться  лав-
рами он не собирается.)

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

    При написании первой версии драйвера у автора был боль-
шой соблазн изменить примитивный формат  записи  на  диске-
ту: заменить способ вычисления контрольных  сумм  на  более
надежный, сделать различимыми верхнюю и нижнюю сторону дис-
кеты, ввести контрольное суммирование заголовка  дорожки  и
т.п. Однако, любое серьезное изменение формата  привело  бы
к потере совместимости: драйвер MX из ОС  ДВК  не  смог  бы
читать дискеты, записанные новым драйвером. Чтобы не услож-
нять жизнь пользователей, формат записи  был  сохранен  без
изменеий.
    При подготовке новой версии (весна 1987) оказалось, что
программа не  может сама определить, с каким дисководом она
работает: одно- или двусторонним,  поскольку  односторонний
дисковод игнорирует сигнал выбора поверхности  и  выполняет
операции чтения/записи всегда с нижней стороной дискеты,  а
служебная информация формата не содержит номера поверхности.
В  результате  пришлось отказаться от автоматического опре-
деления типа дисковода в драйвере: оператор должен сам раз-
обраться, какой ему достался дисковод, и настроить  драйвер
на нужный режим работы. Программа MXDEF.SAV  сможет  помочь
оператору, но для определения типа  дисковода  ей  придется
выполнять пробную запись на дискету,  что,  вообще  говоря,
небезопасно для хранящейся на дискете информации.


	3. РАЗЛИЧИЯ ДРАЙВЕРА MX ИЗ ОС ДВК И MX V1
           (март 1985)

    При изучении драйвера MX из ОС ДВК в нем были обнаруже-
ны ошибки, которые приводили к потере информации при первом
же сбое чтения или записи на дискете. Кроме того,  алгоритм
работы этого драйвера был построен так, что на чтение  каж-
дой поверхности тратились два оборота, а при записи на каж-
дую поверхность расходовались три оборота; при записи  мас-
сива информации, расположеного более чем на одной  дорожке,
во время перехода к соседней дорожке пропускался  четвертый
оборот. Более эффективный алгоритм работы с дисководом  по-
зволяет обойтись одним (даже меньше, если читается  не  вся
дорожка) оборотом на поверхность при чтении и двумя  оборо-
тами при записи (при записи больших массивов - тремя на две
поверхности для двусторонних дисководов без проверки успеш-
ности записи и пятью с проверкой).
    Проще было написать новый  драйвер,  чем  пытаться  ис-
править  существующий. Автор так и поступил.
    Время выполнения команды

	COPY/DEVICE MX0: MX1:

уменьшилось со 105 секунд в ОС ДВК до 48 секунд. Кроме  то-
го, за счет введения тайм-аута на  начало  операции  чтения
драйвер перестал "подвешивать" ОС при обращении  к  пустому
карману дисковода.  До  этого,  если  случайно  происходило
обращение к пустому карману, вывести ЭВМ  из  "подвешеного"
состояния можно было только перезагрузив ОС или  вставив  в
требуемый карман форматированную дискету, ибо карман с  не-
форматированной дискетой воспринимается как пустой.  Коман-
да аварийного прекращения работы "^C" в  этой  ситуации  не
действовала, так как драйвер блокировал все  прерывания,  в
том числе и от клавиатуры.

    В силу аппаратных особенностей контроллер MX может  за-
писывать только целиком поверхность дорожки, а не отдельные
сектора на ней, как это делают другие контроллеры. На  каж-
дой поверхности размещены 5.5 блоков. Для перезаписи одного
из них надо считать всю поверхность, а  потом  записать  ее
назад, изменив нужный блок (отсюда и два оборота на поверх-
ность при записи). Для этой  операции  драйвер  резервирует
буфер на 5.5 блоков - именно поэтому он занимает так  много
места в памяти и на диске. Существование  буфера  с  самого
начала не давало покоя автору - столько места  используется
только в 10 процентах операций!

    Большинство программ (редакторы, трансляторы, etc.) чи-
тают и пишут даные по-блочно: блоки n, n+1, n+2, ... Диско-
вод в это время начинает характерно клацать, опуская и под-
нимая головку чтения/записи, а драйвер считывает каждую до-
рожку шесть раз подряд, хотя достаточно было бы  и  одного.
Да еще тратит время на подъем и  опускание  головок.  Когда
автор это осознал, в драйвер была добавлена подсистема  об-
служивания таймера. Если MX V1 загружен как системный (т.е.
ОС загружена с дискеты, на которой записан MX V1), он пере-
хватывает прерывания от таймера. Когда таймер включен,  го-
ловка поднимается не сразу после окончания работы, а спустя
примерно 5 секунд. В течение этого времени драйвер "помнит"
содержимое прочитанной дорожки и, если программа  обратится
к следующему блоку данных, он тут же выдаст содержимое бло-
ка из памяти, не тратя времени на чтение дискеты.  Если  же
обращений нет, через 5 секунд драйвер поднимет головку (при
этом на дисководе погаснет индикатор), и содержимое дорожки
будет "забыто", а еще через 20 секунд будет выключен двига-
тель дисковода, чтобы зря не изнашивались дискеты. Скорость
работы ЭВМ при включенном таймере возрастает  на  10  -  40
процентов, в зависимости от программы и расположения данных
на диске. Точных сведений об увеличении срока службы дискет
у автора нет, но ходят слухи, что с драйвером MX V1 дискеты
живут в несколько раз дольше, чем с драйвером  из  ОС  ДВК.
Если Вы располагаете проверенными данными, сообщите их, по-
жалуйста, автору.

    В результате перечисленных мер  драйвер  стал  работать
быстрее и надежнее, но  отказы  оставались  непозволительно
частыми. Тогда в драйвер был добавлен  режим  контроля  ка-
чества записи. Если этот режим включен (командой  SET  MXn:
VERIFY), драйвер сразу после  записи  считывает  дорожку  и
сравнивает ее с содержимым буфера (вот он и  еще  раз  при-
годился!). Обнаружив сбой, драйвер повторит запись и  снова
проверит ее качество. Если драйвер не диагностировал ошибку
записи, значит, данные были успешно прочитаны, и  есть  все
основания полагать, что их можно будет  прочесть  и  потом.
Контрольное чтение увеличивает время записи в 1,5 раза (по-
чти до скорости ОС ДВК), но суммарные потери невелики,  так
как операции записи составляют около 10 процентов  от  всех
обращений к драйверу. Любители острых ощущений, предпочита-
ющие скорость надежности (благо ГАИ не следит за работой на
ЭВМ), могут отключить контроль записи командой SET MXn: NO-
VERIFY.



	4. РАЗЛИЧИЯ ВЕРСИЙ ДРАЙВЕРА V1 (март 1985)
	   и V2 (июль 1987).

    Как уже говорилось, в новой версии  исправлены  обнару-
женные за два года интенсивной эксплуатации  ошибки:

  -     Исправлена ошибка в алгоритме коррекции сбоя записи
    на дискету. В MX V1 при включенном  режиме  верификации
    записи (SET MXn: VERIFY) драйвер правильно  распознавал
    сбой, но при попытке избавиться от него мог записать на
    дискету неправильную информацию. В  результате  в  роли
    любителей острых ощущений оказались и те, кто не  поль-
    зовался верификацией, и те, кто ею пользовался,  причем
    последние даже в большей степени: если у  первых  плохо
    записанные данные не читались и отказ был явным,  то  у
    вторых хорошо читались неправильные данные. В MX V2 эта
    ошибка исправлена, и режимом верификации можно  пользо-
    ваться безбоязненно.
        Более того, даже если скорость работы  Вам  важнее,
    чем надежность хранения информации, и Вы отказались  от
    контроля за качеством записи (SET MXn: NOVERIFY), драй-
    вер продолжает контролировать запись  на первые две до-
    рожки, чтобы не допустить искажения каталога дискеты.

  -     Ликвидирован конфликт между  драйвером и программой
    форматирования. В MX V1, если драйвер был загружен  как
    системный (иначе говоря, Вы загрузили ОС с дискеты,  на
    которой находился драйвер MX V1), при работающем тайме-
    ре примерно через 20  секунд  после  последнего  вызова
    драйвер выключал двигатель дисковода; не  подозревавшая
    о таком  подвохе  программа  форматирования  безнадежно
    "зависала". В MX V2 встроенная программа форматирования
    блокирует механизм остановки двигателя на  время  своей
    работы, и нет необходимости выключать таймер перед фор-
    матированием.


    Кроме исправления ошибок, в версии V2 сделаны следующие
изменения:

  -     Пользователи MX V1 жаловались, что при работе драй-
    вера информация выводится на экран "кусками",  "порция-
    ми", "плевками" (в зависимости от темперамента сидящего
    за дисплеем человека). Действительно, драйвер из ОС ДВК
    запрещал прерывания от  внешних  устройств  сразу,  как
    только получал управление, и не разрешал их до  оконча-
    ния работы (иногда это занимало  несколько  секунд).  В
    это время вывод на экран был вообще невозможен, так же,
    как невозможно было прервать неправильную  работу  про-
    граммы, набрав на клавиатуре '^C' (ввод  с  клавиатуры,
    как и вывод на экран, происходят по прерываниям). В  MX
    V1 прерывания "приоткрывались" на каждом обороте диске-
    ты. Это дало возможность вводить с клавиатуры по одному
    символу за оборот, но одновременно привело к  неэргоно-
    мичному выводу на экран.
        В MX V2 существенно увеличено время, в течение  ко-
    торого прерывания не запрещены, и вводить символы можно
    в темпе профессиональной машинистки.


  -     В первой версии SET MX: команды, требующие указания 
    номера привода (WRITE/NOWRITE, VERIFY/NOVERIFY,  SPEED)
    нельзя было выполнять под управлением старых версий  ОС
    (ОС ДВК, ОС ДВК-2, ФОДОС, РАФОС, РАФОС-II и RT-11  вер-
    сий меньше V05). Мониторы этих версий  неправильно  ин-
    терпретируют номер привода в команде. Многие  пользова-
    тели подвержены (не всегда здоровому)  консерватизму  и
    не желают ни за какие коврижки  в  виде  новых  команд,
    ключей и возможностей менять  раз  и  навсегда  обжитую
    версию ОС. Специально для таких пользователей, а  также
    для нетривиальных случаев подготовки дискет к  загрузке
    с дисковода другого типа, в MX V2 все  SET  MX  команды
    можно выполнить, вызвав драйвер как  обычную  программу
    командой

        RUN [dev:]MX.SYS

    где [dev:] означает необязательное  имя  устройства,  с
    которого Вы вызываете драйвер. В ответ на подсказку

        MX>

    Вы можете ввести команду в формате CSI.  Например,  ко-
    манды

        .RUN SY:MX.SYS
        MX>/T:MX1:80./N:MX1:SID/Y:MX1:SKI/L

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

        .SET MX1: TRACKS=80 NOSIDEUP SKIP LIST



  -     В MX V2 добавлена возможность работы с разными  ти-
    пами дисководов. Для этой цели был переработан механизм
    установки параметров, ведены новые SET  MX:  команды  и
    командный интерфейс в формате CSI. В  файле  HELP.MX  в
    сведены в таблицу все допустимые для MX V2 команды.



  -     В MX V2 программа форматирования  дискет включена в 
    файл драйвера. Этим "выстрелом" удалось подстрелить це-
    лую стаю  зайцев.  Во-первых,  освободилось  дефицитное
    место на системном диске. Размер файла MX.SYS не увели-
    чился, а с системного  диска  можно  удалить  программу
    форматирования объемом 4 блока (FM6022 от  MX  V1),  13
    (MXFORM или FORMAT  из  ОС  ДВК)  или  даже  39  блоков
    (TSTGMD из ОС ДВК, которую многие держат  на  системном
    диске только для форматирования дискет). Во-вторых, воз-
    росли возможности программы  форматирования.  Индивиду-
    ально для  каждого  привода  можно  указывать,  сколько
    сторон и  сколько дорожек надо  отформатировать.  Можно
    на двустороннем дисководе  сформатировать  дискету  для
    одностороннего и т.д. В-третьих, устранен конфликт меж-
    ду программой форматирования и драйвером.  В-четвертых,
    не надо каждый раз при вызове программы  форматирования
    указывать  требуемый формат. Если при вызове  программы
    в командной строке не было явного указания формата, вы-
    бирается формат, установленый в  драйвере  для  данного
    привода.  Например, если раньше была выполнена команда

	SET MX1: TRACKS=80 NOSIDEUP SKIP

    (т.е. "настроить 80-дорожечный  дисковод, установленный
    как привод  MX1:,  для  форматирования  и записи дискет
    в  формате  одностороннего  40-дорожечного"), то после-
    дующий вызов программы форматирования

	SET MX: FORMAT

    будет фоматировать дискеты в  приводе  MX1:  в  формате
    одностороннего 40-дорожечного дисковода.

	Кроме того, во встроенную программу  форматирования
    введена возможность форматирования не всей  дискеты,  а
    указывемых пользователем дорожек - вплоть до форматиро-
    вания единственного цилиндра (на двусторонних  дисково-
    дах одна дорожка содержит два цилиндра: нижний и  верх-
    ний, на односторонних - только нижний).


  -     В MX V1 выполнение любой SET MX: команды  приводило
    к перезаписи блоков 0 и 1 файла MX.SYS. В MX V2 переза-
    пись происходит только при выполнении SET  MX:  команд,
    изменяющих текст драйвера.


  -	несколько уменьшены длительности программно-отсчиты-
    ваемых выдержек времени: под'ем головки выполняется че-
    рез 2.5 секунды и останов двигателя через  7.5  секунд;
    это позволяет дополнительно уменьшитЬ износ дискет  при
    незначительной потере  производительности.


  -	изменен формат записи, а  именно:  добавлена  запись
    слова, в котором упакованы текущие параметры  настройки
    драйвера ("идентификационного слова"), в конец дорожки.
    Эта операция, выполняемая на каждой записываемой дорож-
    ке, не мешает работать  с  такими  дискетами  исходному
    драйверу из ОС ДВК, но позволяет новому драйверу разоб-
    раться, с какой дискетой он имеет дело, если уж  нельзя
    автоматически определить тип дисковода. Стандартно драй-
    вер выполняет запись на дискетту только при  совпадении
    его  текущей  настройки  с  "идентификационным  словом"
    дискеты по параметрам  [NO]SKIP  и  [NO]SIDEUP,  однако
    этот контроль может быть выключен, что позволяет  драй-
    веру выполнять запись и на "чужие" дискетты; тем не ме-
    нее, возможна ситуация, когда даже при выключенном кон-
    троле  запись  на  дискету  с  отличающимся  параметром
    [NO]SKIP будет выполнима только в нулевую дорожку -  на
    остальных контрольное чтение, выполняемое перед  каждой
    записью с целью проверки номера дорожки, окажется неус-
    пешным именно  из-за  несовпадения  ожидаемого  и  счи-
    танного с дискеты номеров дорожек; такая ситуация будет
    иметь место, если Вы пытаетесь работать на  80-дорожеч-
    ном дисководе в 80-дорожечном режиме с дискетой, отфор-
    матированной для работы на  80-дорожечном  дисководе  в
    40-дорожечном режиме (и наоборот).


        Соответственно введена операция вывода  на терминал
    "идентификационного слова" дискеты.


  -	как раз во время работы над второй версией драйвера
    автору стало известно весьма разумное предложение,  на-
    правленное на улучшение аппаратных свойств контроллера.
    Автор оптимистично предположил, что оно будет  реализо-
    вано - даже в несколько расширенном виде  -  и  получит
    заслуживающее распространение. Соответственно в драйвер
    введена возможность работы с такой аппаратурой.
 	Драйвер, работающий  со  стандартным  контроллером,
    имеет в своем имени метку "MX$TIM", работающий с  моди-
    фицированным контроллером - метку "HRD$MX" (имя драйве-
    ра выводится на терминал по команде "SET MX INFORM",  a
    также при загрузке драйвера как системного).
	Выбор варианта работы осуществляется при  генерации
    драйвера.





	5. КОМПЛЕКТ ПОСТАВКИ.


    Если Вы получили драйвер непосредственно от автора,  на
Вашей дискете должны быть:
    - Монитор операционной системы RT-11/SJ V05.00;
    - основные драйверы (MX.SYS,LP.SYS,TT.SYS,DX.SYS);
    - редактор командной строки SL.SYS, который можно
      использовать и как NL:;
    - несколько служебных файлов (STARTS.COM);
    - основные утилиты (PIP.SAV,DIR.SAV,DUP.SAV,RESORC.SAV)
    - описание драйвера MX в файле README.MX
    - справочник "SET MX:" команд драйвера в файле HELP.MX
    - программа определения характеристик дисковода 
      MXDEF.SAV

    Все файлы, за исключением MX.SYS, README.MX, HELP.MX  и
MXDEF.SAV, являются стандартными файлами операционной  сис-
темы RT-11 версии  5.0,  известной  также  под  псевдонимом
ФОДОС-2. Монитор отличается от  стандартного  тем,  что  не
требует присутствия на системном диске файла SWAP.SYS объе-
мом 26 блоков. Если этого файла нет, система загружается  и
успешно работает, пока не введены команды 

        SET USR  SWAP
 или    SET EXIT SWAP.

Если файл SWAP.SYS есть на системном диске, поведение  сис-
темы не отличается  от  описанного  во  всех  руководствах.
Создать файл SWAP.SYS можно командой

	CREATE SY:SWAP.SYS/ALLOCATE:26.

    Дискета записана в формате двустороннего 40-дорожечного
дисковода. (Две дискеты в формате  одностороннего  40-доро-
жечного дисковода.)

	ПРИМЕЧАНИЕ. В настояще время программа MXDEF не по-
		    ставляется.




	6. УСЛОВИЯ ПРИМЕНЕНИЯ


    Для нормальной работы драйвера MX необходимо иметь:
	- исправную микро-ЭВМ ДВК-2М или ДВК-3М с
	  контроллером обычной плотности и дисководом;
	- дискету, на которой записана операционая система
	  ОС ДВК или RT-11 версии не меньше 4.0;
	- дискету, на которой записан драйвер MX в 
	  приведенном выше "комплекте поставки".

    Драйвер может работать как системный в ОС РАФОС-II, ФО-
ДОС-2, ФОДОС-3, ОС ДВК-2 и RT-11 версий V4.0 и старше.  Не-
которые "SET MX: ..." команды  доступны  только  начиная  с
версий RT-11 V05.00 и старше (ФОДОС-2, ФОДОС-3). Для выпол-
нения соответствующих действий можно пользоваться  дополни-
тельным командным интерфейсом в формате CSI, но лучше  все-
таки сменить версию эпохи мини-юбок на более свежую. Что Вы
носите из одежды, купленной в 1976 (РАФОС, ОС  ДВК)  или  в
1979 (РАФОС-II, ОС ДВК-2) году? А ведь и ФОДОС-3 - это все-
го лишь 1984 год. Что Вы тогда носили? Если Вас не убеждает
сравнение ОС с одеждой, то вот другая аналогия:

        РАФОС, ОС ДВК         - вигвам, курная изба с 
                                удобствами во дворе;
        РАФОС-II, ОС ДВК-2    - дом с мусоропроводом 
                                (SPOOL), но без удобств;
        RT-11 V05.00          - дом с мусоропроводом,
                                лоджией и всеми удобствами;
        RT-11 V05.02, V05.04  - то же, но с изменяемой
                                планировкой.






        7. SET MXn:  КОМАНДЫ И ИНТЕРФЕЙС В ФОРМАТЕ CSI

    Многообразие типов поставляемых с ДВК дисководов заста-
вило отказаться от ссылок на конкретное название (например,
НГМД 6121) при описании команд. Удобнее оказалось использо-
вать обозначение с указание  возможностей дисковода в виде
"D<число дорожек>/<число поверхностей>":

    D40/2   - 40 дорожек, двусторонний;
    D40/1   - 40 дорожек, односторонний;
    D80/2   - 80 дорожек, двусторонний;
    D80/1   - 80 дорожек, односторонний.

Если вместо <числа дорожек> или <числа поверхностей>  стоит
символ '*', соответствующий параметр может принимать  любое
значение, например:

    D40/*   может быть  D40/1 или D40/2, а
    D*/1    означает D40/1 или D80/1.
    D*/*    соответствует любому типу дисковода.


    Формат записи на дискету как правило, соответствует ис-
пользуемому типу дисковода. Соответственно, форматы  записи
обозначаются:

    F40/2   - 40 дорожек, с двух сторон;
    F40/1   - 40 дорожек, с одной стороны;
    F80/2   - 80 дорожек, с двух сторон;
    F80/1   - 80 дорожек, с одной стороны.


    Если в команде надо обязательно указать номер  привода,
например, "MX0:" или "MX2:", об  этом  говорит  обозначение
"MXn:" в отличие от "MX:", которое показывает, что в данной
команде номер привода несущественен. Если в команде  должен
быть числовой аргумент, он обозначается:

    vv  - двузначное десятичное число;
    vv. - двузначное десятичное число, после которого
          следует символ точки '.';
    ooo - восьмеричное число.

    При описании каждой "SET MX:" команды приводится  соот-
ветствующая ей командная строка в формате CSI,  вводимая  в
ответ на подсказку "MX>" после вызова драйвера MX как прог-
раммы командой 

        RUN [dev:]MX.SYS

где [dev:] - необязательное имя устойства, с  которого  вы-
зывается драйвер.



    7.1 Как меняется драйвер ?

    Во время работы ОС драйвер может существовать  в  одном
экземпляре - на диске, или в двух - в  памяти  (загруженный
драйвер) и на диске. Кроме того, во  время  выполнения  SET
MX: команды в памяти находится еще одна копия,  загруженная
не как драйвер, а как программа. По  умолчанию,  любая  SET
MX: коман:" в отличие от "MX:", которое показывает, что в данной
команде номер привода несущественен. Если в команде  должен
быть числовой аргумент, он обозначается:

    vv  - двузначное десятичное число;
    vv. - двузначное десятичное число, после которого
          следует символ точки '.';
    ooo - восьмеричное число.

    При описании каждой "SET MX:" команды приводится  соот-
ветствующая ей командная строка в формате CSI,  вводимая  в
ответ на подсказку "MX>" после вызова драйвера MX как прог-
раммы командой 

        RUN [dev:]MX.SYS

где [dev:] - необязательное имя устойства, с  которого  вы-
зывается драйвер.



    7.1 Как меняется драйвер ?

    Во время работы ОС драйвер может существовать  в  одном
экземпляре - на диске, или в двух - в  памяти  (загруженный
драйвер) и на диске. Кроме того, во  время  выполнения  SET
MX: команды в памяти находится еще одна копия,  загруженная
не как драйвер, а как программа. По  умолчанию,  любая  SET
MX: коман:" в отличие от "MX:", которое показывает, что в данной
команде номер привода несущественен. Если в команде  должен
быть числовой аргумент, он обозначается:

    vv  - двузначное десятичное число;
    vv. - двузначное десятичное число, после которого
          следует символ точки '.';
    ooo - восьмеричное число.

    При описании каждой "SET MX:" команды приводится  соот-
ветствующая ей командная строка в формате CSI,  вводимая  в
ответ на подсказку "MX>" после вызова драйвера MX как прог-
раммы командой 

        RUN [dev:]MX.SYS

где [dev:] - необязательное имя устойства, с  которого  вы-
зывается драйвер.



    7.1 Как меняется драйвер ?

    Во время работы ОС драйвер может существовать  в  одном
экземпляре - на диске, или в двух - в  памяти  (загруженный
драйвер) и на диске. Кроме того, во  время  выполнения  SET
MX: команды в памяти находится еще одна копия,  загруженная
не как драйвер, а как программа. По  умолчанию,  любая  SET
MX: команЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ   В поставляемом драйвере  количество  дорожек  для  всех
приводов установленно равным 40.


    7.4 Задание числа повторов при сбоях.

        .SET MX: RETRY=vv         ( 1 <= vv <= 8 )
    или MX>/R:vv.
    или MX>/R:ooo

    Параметр RETRY определяет, сколько  раз  драйвер  будет
повторять неудачно завершившуюся операцию, прежде чем  при-
дет к выводу о неустранимости сбоя. Рекомендуется выполнять
команду

        .SET MX: RETRY=1 MEMORY

перед проверкой диска на плохие блоки командой

        .DIRECTORY/BADBLOCK/FILE MXn:

чтобы блоки, прочитанные только с 8 попытки, не считались 
хорошими. В поставляемом драйвере RETRY=8.



    7.5 Разрешение/запрещение записи.

        .SET MXn: NOWRITE
        MX>/N:MXn:WRI

    Запрещает выполнять запись на  указанный  привод.  Этой
командой удобно пользоваться при работе с архивными  диске-
тами.

        .SET MXn: WRITE
        MX>/Y:MXn:WRI

    Разрешает выполнять запись на  указанный  привод.  Этот
режим установлен в поставляемом драйвере для всех приводов.




    7.6 Включение/выключение контроля записи.

        .SET MXn: VERIFY
        MX>/Y:MXn:VER

    Включает контроль качества записи на указанном приводе.
Время выполнения операций записи возрастает в 1,5 раза, но,
поскольку эти операции составляют  около  10  процентов  от
всех обращений к драйверу, общая скорость работы  снижается
незначительно. После записи поверхности драйвер тут  же  ее
считывает и, если обнаружено  искажение  данных,  повторяет
запись и снова ее проверяет. Если драйвер не диагностировал
ошибку записи, значит, данные были считаны успешно  и  есть
основания верить, что их можно будет считать и потом.
    Этот режим установлен в поставляемом драйвере для  всех
приводов.

        .SET MXn: NOVERIFY
        MX>/N:MXn:VER

    Отключает контроль записи на указанном  приводе.  Время
выполнения операций записи уменьшается в 1,5 раза,  но  ка-
чество записи не гарантируется.



    7.7 Разрешение/запрещение контроля соответствия форматов.

        .SET MXn: NOCHECK
        MX>/N:MXn:CHE

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

        .SET MXn: CHECK
        MX>/Y:MXn:CHE

    Разрешает выполнять запись на  указанный  привод  толь-
ко при совпадении текущей настройки драйвера  с  "идентифи-
кационным  словом"  дискетты  по  параметрам   [NO]SKIP   и
[NO]SIDEUP, что дополнительно повышает надежность  хранения
информации.
    Этот режим установлен в поставляемом драйвере для  всех
приводов.


    7.8 Настройка драйвера на тип дисковода

    Для настройки  драйвера  на  конкретный  тип  дисковода
предусмотрены три SET  MX:  параметра:  TRACKS,  SIDEUP,  и
SKIP. Параметр TRACKS был рассмотрен ранее.

        .SET MXn: SIDEUP
        MX>/Y:MXn:SID

    Разрешает  использовать  верхнюю  поверхность   дискеты
(двусторонний формат).

        .SET MXn: NOSIDEUP
        MX>/N:MXn:SID

    Запрещает работу с верхней стороной дискеты (односто-
ронний формат).


    Обычно для  перемещения  головки  на  соседнюю  дорожку
драйвер делает один шаг. Этот режим установлен в поставляе-
мом драйвере для всех приводов и ему соответствует команда

        .SET MXn: NOSKIP
    или MX>/N:MXn:SKI

Однако, если надо прочитать дискету  в  формате  F40/1  или
F40/2 на D80/1 или D80/2, для перехода на соседнюю  дорожку
надо делать два шага, так как на D80/* дорожки  расположены
в два раза чаще, чем на D40/*. Для чтения дискет в  формате
F40/* на D80/* нужна команда

        .SET MXn: SKIP
    или MX>/Y:MXn:SKI




    7.9 Вызов встроенной программы форматирования

        .SET MX: FORMAT
        MX>/F

    Вызывает встроенную  программу  форматирования  дискет.
Если FORMAT - единственный параметр в команде, будущий фор-
мат дискеты определяется сделанными ранее  установками  для
того привода, на котором  происходит  форматирование.  Если
кроме FORMAT были и другие параметры, сначала модифицирует-
ся драйвер, а потом начинается форматирование, уже с новыми
установками.
    Программа запрашивает номер привода, на котором Вы  со-
бираетесь форматировать дискеты. Если вместо ответа  нажать
"^C", программа завершит работу, ничего не форматируя. Пос-
ле ответа на этот вопрос программа  демонстрирует  Вам  Ваш
выбор, зажигая на 1.5 секунды индикатор выбранного привода,
а затем просит вставить в выбранный привод дискету и задать
границы номеров цилиндров, в пределах которых будет  выпол-
няться форматирование. После нажатия <ВК> начинается  форм-
атирование, а после него контрольное  чтение  дискеты.  При
форматировании дискета прописывается  кодом  177777,  самым
"трудным" для последующего чтения (в  отличие  от  программ
форматирования  из ОС ДВК, которые пишут самый "лекгий" код
 - 000000). Этим объясняется тот факт, что  при  форматиро-
вании некоторых дискет, успешно форматирующихся в  ОС  ДВК,
печатаются сообщения об ошибках.
    Для завершения форматирования вместо <ВК> нажмите "^C".
Программа повторит вопрос о номере привода. Чтобы быйти  из
программы, нажмите "^C" еше раз.

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

    Общий формат задания границ форматирования:
		НН-КК<ВК>,
	где: НН - номер первого форматирумого цилиндра,
	     КК - номер последнего форматируемого цилиндра;
	оба числа десятичные; цилиндры нумеруются с нуля.
    Допустимы следующие упрощенния:
	<ВК>	- форматирование всей дискеты;
	НН<ВК>	- форматирование с цилиндра НН до конца;
	-КК<ВК>	- форматирование от начала по цилиндр КК.
    Если указаны обе границы форматирования и НН больше КК,
будет отформатирован единственный цилиндр с номером НН.

    Если Вы хотите  произвести  выборочное  форматирование,
при расчете требуемых номеров цилиндров исходите из соотно-
шения: в каждом цилиндре содержится 5.5 блоков информации.

    Не рекомендуется форматировать дискеты в формате  F40/*
на D80/*. Если Вам надо перенести данные с D80/* на  D40/*,
лучше отформатировать дискету на D40/*, а на  D80/*  только
записывать данные.


    7.10 Определение "идентификационного слова" дискетты

	.SET MX KNOW
	MX>/K

    Считывает "идентификационное слово"  с  дорожки  диске-
ты и выводит его на терминал.

    Диалог с пользователем в процессе выполнения работы
и завершение ее - аналогично режиму форматирования.

    В процессе выполнения операции поочередно считывает ци-
линдры в указанном диапазоне номеров  и  выводит  на  экран
его "идентификационное слово" в следующем порядке:
	номера цилиндра и дорожки, разделенные двоеточием,
	номер привода,
	набор параметров SKIP, SIDEUP, WRITE, VERIFY, CHECK,
      из которых только два первых имеют значение для  воз-
      можности последующей записи в данный цилиндр.
    В левой части некоторых строк могут быть напечатаны три
двузначных числа, разделенных двоеточиями. Это  бывает  при
несовпадении ожидаемого и считанного номеров  дорожек, что,
скорее всего, объясняется несоответствием  параметров  SKIP
(в отличие от всех нормальных  операций  чтения,  процедура
KNOW дочитывает в этом случае дорожку  до  конца).  Обычные
операции чтения/записи с такими дорожками невозможны.
    Три печатаемых числа означают (слева направо):
	расчетный номер цилиндра,
	фактический (считанный с дискеты) номер дорожки,
	ожидаемый номер дорожки.


    7.11 Печать информации о драйвере

        .SET MX: INFORM
        MX>/I

    Печатает информацию о драйвере, авторе и краткий  спра-
вочник о SET-параметрах и их аргументах.

        .SET MX: LIST
        MX>/L

    Для каждого привода печатаются текущие  значения  пара-
метров (число дорожек, время перехода, число поверхностей,
etc.).



    7.12 Смена параметров генерации

    Монитор ОС требует, чтобы параметры генерации  работаю-
щих с ним драйверов совпадали с его собственными. Если  при
попытке установить драйвер в системе Вы получили  сообщение
"Conflicting SYSGEN options" - "несовпадение параметров ге-
нерации", воспользуйтесь командой

        .SET MX: SYSGEN

По этой команде драйвер определит параметры генерации за-
груженного монитора и подстроится под них.



    7.12 Остановка двигателя дисководов.

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

        .SET MX: QUIET


ПРИМЕЧАНИЕ.  Команды SET можно выполнять до установки драй-
             вера в системе.



        8. ПРИМЕР НЕСТАНДАРТНОГО КОПИРОВАНИЯ ФАЙЛОВ

    Предположим, чот Вам надо перенести информацию,  содер-
жащуюся в файлах FILE1.PAS, FILE2.PAS, FILE3.PAS с D40/2 на
D80/1. Для этого надо выполнить следующие действия:

    1. Загрузить систему с D40/2, привод MX0:.
    2. Выполнить команды:
        .SET MX1 NOSIDEUP MEMORY FORMAT
            <диалог с программой форматирования>
        .INITIALIZE/NOQUERY MX1:
        .COPY/WAIT MX0:FILE(1,2,3).PAS MX1:
            <копирование с перестановкой дискет по подсказ-
             кам PIP>
        .SET MX1 SIDEUP MEMORY

    3. Перейти к ЭВМ с D80/1.
    4. Загрузить ОС на этой ЭВМ с привода MX0:.
    5. Вставить принесенную дискету в MX1:
    6. Выполнить команды:
        .SET MX1: SKIP TRACKS=40 MEMORY
        .DIR MX1:
            <убедиться, что каталог прочитан верно>
        .COPY MX1: MX0:/WAIT

    На этом операцию по переносу файлов можно закончить.


    Аналогичным образом можно перенести ОС с D40/2 на 
D80/1:

    1. Загрузить систему с D40/2, привод MX0:.
    2. Выполнить команды:
        .SET MX1 NOSIDEUP MEMORY FORMAT
            <диалог с программой форматирования>
        .INITIALIZE/NOQUERY MX1:
        .COPY/SYSTEM MX0:(RT11SJ,TT,SL,MX).SYS MX1:
        .COPY MX0:(PIP,DIR,DUP,RESORC).SAV MX1:
            <больше на MX1: не поместится>
        .RUN MX1:MX.SYS
        MX>/Y:MX0:SKI/N:MX0:SID/N:MX1:SID/T:MX1:80./L
            <по ключу /L драйвер распечатает новые значе-
             ния параметров. Убедитесь, что они соотвест-
             вуют:
                .SET MX0:  SKIP NOSIDEUP TRACKS = 40
                .SET MX1 NOSKIP NOSIDEUP TRACKS = 80 >
        .COPY/BOOT MX1:RT11SJ MX1:
        .SET MX1 SIDEUP MEMORY

    3. Перейти к ЭВМ с D80/1.
    4. Вставить принесенную дискету в MX0:
    5. Загрузить ОС на этой ЭВМ с привода MX0:.
    6. Выполнить команды:
        .SET MX1: FORMAT
            <отформатировать будущую системную дискету в 
             формате F80/1>
        .INITIALIZE/NOQUERY MX1:
        .COPY/SYSTEM SY: MX1:
        .RU MX1:MX.SYS
        MX>/T:MX0:80./N:MX0:SKI/L
            <Убедитесь, что MX0: и MX1: соответствуют
                .SET MX0: TRACKS = 80 NOSIDEUP NOSKIP
                .SET MX0: TRACKS = 80 NOSIDEUP NOSKIP >
        .COPY/BOOT MX1:RT11SJ MX1:
        .BOOT/WAIT MX0:
            <переставьте дискету из MX1: в MX0:, ответьте
             "Y" на вопрос "Continue?" - и у Вас загрузится
             уже родная для D80/1 ОС >
