================================================================== (C) март 1985, июнь 1987 7 июля 1987 Автор: Потемкин М.И., рабочий телефон 135-23-70. ВЦ АН СССР, Москва, ГСП-1, ул. Вавилова, 40. Отдел Вычислительной техники. Описанное в данном документе программное обеспечение может свободно передаваться другим лицам и организациям, с обязательным соблюдением следующих условий: 1. Передача не может преследовать никаких корыстных целей. 2. Право свободной передачи не распространяется на исходные тексты программ. 3. Программы должны передаваться в том виде, в ко- тором они были разработаны автором, и не должны содержать никаких исправлений, улучшений и дру- гих изменений, сделаных без личного разрешения автора. Если Вы обнаружили ошибку или у Вас есть предложения по улучшению характеристик драйвера, сообщите об этом автору. Все предложения будут по возможности учтены при подготовке следующих версий. 4. Нельзя каким-либо образом делать доступными дру- гим лицам или организациям описаные в данном до- кументе программы, не передавая им текст данного документа. Не экономьте место на диске за счет времени автора, потраченного на телефонные кон- сультации. ================================================================== - 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", а также инициировал работу по созданию варианта драйвера, способного работать на разных типах дисководов и принимал активное участие в обсуждении возникавших проблем. В благодарность за это автор взвалил на него нудную работу по испытаниям второй версии. (Сказанное никоим образом не означает, что Р.А. Бронштейн несет ответственность за ос- тавшиеся в драйвере ошибки: их вместе с драйвером делал все-таки автор, и делиться лаврами он не собирается.) В процессе написания драйвера несколько раз выходил из строя то дисковод, то контроллер. Каждый раз М.В. Кулагин восстанавливал их работоспособность. Если бы не он, ни пер- вая, ни тем более вторая версия драйвера никогда на были бы завершены. При написании первой версии драйвера у автора был боль- шой соблазн изменить формат записи на дискету: заменить способ вычисления контрольных сумм на более надежный, сде- лать различимыми верхнюю и нижнюю сторону дискеты, ввести контрольное суммирование заголовка дорожки и т.п. Однако, любое изменение формата привело бы к потере совместимости: драйвер 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), драй- вер продолжает контролировать запись в блоки 0..12, чтобы не допустить искажения каталога дискеты. - Ликвидирован конфликт между драйвером и программой форматирования. В MX V1, если драйвер был загружен как системный (иначе говоря, Вы загрузили ОС с дискеты, на которой находился драйвер MX V1), при работающем тайме- ре примерно через 20 секунд после последнего вызова драйвер выключал двигатель дисковода; не подозревавшая о таком подвохе программа форматирования безнадежно "зависала". В MX V2 встроенная программа форматирования блокирует механизм остановки двигателя на время своей работы, и нет необходимости выключать таймер перед фор- матированием. - При работе на ЭВМ с процессором ВМ3 или другим, за- прещающим обращения к нечетному адресу как к слову, в подсистеме сбора статистики возникало прерывание по ошибке обращения к каналу. В 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: команд, изменяющих текст драйвера. 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 - программа определения характеристик дисковода MXDEF.SAV Все файлы, за исключением MX.SYS, README.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 или 35 дорожек, двусторонний; D40/1 - 40 или 35 дорожек, односторонний; D80/2 - 80 дорожек, двусторонний; D80/1 - 80 дорожек, односторонний. Если вместо <числа дорожек> или <числа поверхностей> стоит символ 'x', соответствующий параметр может принимать любое значение, например: D40/x может быть D40/1 или D40/2, а Dx/1 означает D40/1 или D80/1. Dx/x соответствует любому типу дисковода. Формат записи на дискету как правило, соответствует ис- пользуемому типу дисковода. Соответственно, форматы записи обозначаются: F40/2 - 40 дорожек, с двух сторон; F40/1 - 40 дорожек, с одной стороны; F80/2 - 80 дорожек, с двух сторон; F80/1 - 80 дорожек, с одной стороны. Если в команде надо обязательно указать номер привода, например, "MX0:" или "MX2:", об этом говорит обозначение "MXn:" в отличие от "MX:", которое показывает, что в данной команде номер привода несущественен. Если в команде должен быть числовой аргумент, он обозначается: vv - двузначное десятичное число; vv. - двузначное десятичное число, после которого следует символ точки '.'; ooo - восьмеричное число. При описании каждой SET MX: команды приводится соответ- ствующая ей командная строка, вводимая в ответ на подсказ- ку "MX>" после вызова драйвера MX как программы командой RUN [dev:]MX.SYS где [dev:] - необязательное имя устойства, с которого вы- зывается драйвер. 7.1 Как меняется драйвер ? Во время работы ОС драйвер может существовать в одном экземпляре - на диске, или в двух - в памяти (загруженный драйвер) и на диске. Кроме того, во время выполнения SET MX: команды в памяти находится еще одна копия, загруженная не как драйвер, а как программа. По умолчанию, любая SET MX: команда меняет драйвер на диске и (если драйвер загру- жен) в памяти. Если по каким-либо причинам Вы хотите изме- нить только загруженный в память драйвер, добавьте в список SET-параметров параметр MEMORY (ключ /M). Например, команда .SET MX: RETRY=1 MEMORY или MX>/R:1/M изменит только загруженный драйвер. Аналогично, если Вы хо- тите изменить только драйвер на диске, не меняя загруженный драйвер, добавьте в список SET-парметров параметр DISK (ключ /D). Например, команды .RUN MX1:MX.SYS MX>/N:MX0:SID/D изменят находящийся на дискете в приводе MX1: файл MX.SYS так, что он будет работать с приводом MX0: как с односто- ронним, но не изменят загруженного в память драйвера. Нако- нец, если в списке параметров встретятся и MEMORY и DISK, изменения будут сделаны только в той копии драйвера, кото- рая загружена как программа и нигде не сохранятся. 7.2 Управление временем перемещения головок. .SET MXn: SPEED = vv (для MX V1) .SET MXn: WAIT = vv (для MX V2) ( 10 <= vv <= 99) или MX>/W:vv. или MX>/W:ooo Задает временной интервал для перевода головок на со- седнюю дорожку при позиционировании головки. Интервал уста- навливается равным vv/2 миллисекунд. Для большинства диско- водов типа НГМД-6022 достаточно 12,5 мс (vv = 23), а для Robotron-.... - 8 мс (vv = 16). В поставляемом драйвере vv = 27, что достаточно для любого известного автору диско- вода. Программа MXDEF может определить vv для конкретного дисковода. 7.3 Установка числа дорожек .SET MXn: TRACKS = vv ( 2 <= vv <= 99 ) или MX>/T:MXn:vv. или MX>/T:MXn:ooo Основное назначение этой команды - задавать драйверу тип дисковода: D40/x или D80/x. Однако, большинство D40/x реально могут читать и писать 41, 42 или 43 дорожки, так же как большинство D80/x работают с 81, 82, ... дорожками. В условиях крайнего дефицита места на диске можно установить для своего дисковода нестандартное количество дорожек. Драйвер автоматически изменит объем соответствующего приво- да, но отформатированные и записанные на этом приводе дис- кеты могут не прочитаться на другом, с меньшим числом доро- жек. Для определения точного числа дорожек можно воспользо- ваться командой: .SET MXn: TRACKS = vv MEMORY DISK FORMAT, которая отформатирует дискету на указанной число дорожек, не меняя драйвер. Если форматирование завершится без оши- бок, можно изменить и сам драйвер командой .SET MXn: TRACKS = vv В поставляемом драйвере количество дорожек для всех приводов установленно равным 40. 7.4 Задание числа повторов при сбоях. .SET MX: RETRY = vv ( 0 <= vv <= 8 ) или MX>/R:vv. или MX>/R:ooo Параметр RETRY определяет, сколько раз драйвер будет повторять неудачно завершившуюся операцию, прежде чем при- дет к выводу о неустраимости сбоя. Рекомендуется выполнять команду .SET MX: RETRY = 0 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 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/x дорожки расположены в два раза чаще, чем на D40/x. Для чтения дискет в формате F40/x на D80/x нужна команда .SET MXn: SKIP или MX>/Y:MXn:SKI 7.8 Вызов встроенной программы форматирования .SET MX: FORMAT MX>/F Вызывает встроенную программу форматирования дискет. Если FORMAT - единственный параметр в команде, будущий фор- мат дискеты определяется сделанными ранее установками для того привода, на котором происходит форматирование. Если кроме FORMAT были и другие параметры, сначала модифицирует- ся драйвер, а потом начинается форматирование, уже с новыми установками. Программа запрашивает номер привода, на котором Вы со- бираетесь форматировать дискеты. Если вместо ответа нажать "^C", программа завершит работу, ничего не форматируя. Пос- ле ответа на этот вопрос программа просит вставить в вы- бранный привод дискету и нажать клавишу <ВК>. После нажатия <ВК> начинается форматирование, а после него контрольное чтение дискеты. При форматировании на дискета прописывается кодом 177777, самым "трудным" для последующего чтения (В отличие от программ форматирования из ОС ДВК, которые пишут самый "лекгий" код - 000000). Этим объясняется тот факт, что при форматировании некоторых дискет, успешно форматиру- ющихся в ОС ДВК, печатаются сообщения об ошибках. Для завершения форматирования вместо <ВК> нажмите "^C". Программа повторит вопрос о номере привода. Чтобы быйти из программы, нажмите "^C" еше раз. Не рекомендуется форматировать дискеты в формате F40/x на D80/x. Если Вам надо перенести данные с D80/x на D40/x, лучше отформатировать дискету на D40/x, а на D80/x только записывать данные. Из-за выяснившейся в последний момент странности про- цесса форматирования на дисководе Robotron в программу вставлена задержка, которая увеличила время работы на дву- сторонних дисководах. Как только выяснится причина сбоев, задержка будет устранена. 7.9 Печать информации о драйвере .SET MX: INFORM MX>/I Печатает информацию о драйвере, авторе и краткий спра- вочник о SET-параметрах и их аргументах. .SET MX: LIST MX>/L Для каждого привода печатаются текущие значения пара- метров (число дорожек, время перехода, число поверхностей, etc.). 7.10 Смена параметров генерации Монитор ОС требует, чтобы параметры генерации работаю- щих с ним драйверов совпадали с его собственными. Если при попытке установить драйвер в системе Вы получили сообщение "Conflicting SYSGEN options" - "несовпадение параметров ге- нерации", воспользуйтесь командой .SET MX: SYSGEN По этой команде драйвер определит параметры генерации за- груженного монитора и подстроится под них. 7.11 Остановка двигателя дисководов. Если драйвер используется не как системный, он не имеет возможности определить, что к нему долгое время нет обраще- ний, и не выключает двигатель дисковода. Чтобы не изнаши- вать дискеты, после работы с 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:(FILE1,FILE2,FILE3).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 .SET MX1 NOSKIP MEMORY На этом операцию по переносу файлов можно закончить. Аналогичноым образом можно перенести ОС с 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 ОС >