










		      УНИВЕРСАЛЬНЫЙ ДРАЙВЕР
	    133-мм (5"1/4) ДИСКОВОДОВ для ДВК-2, ДВК-3
		Работает под управлением всех версий
		    РАФОС, ФОДОС, ОС ДВК, RT-11

		    (C) март 1985, октябрь 1987








			Файл "README.MX"
		    ------------------------
			25 января 1988







	Потемкин М.И.,	р. 135-23-70,
			Москва, ГСП-1, ул. Вавилова, 40
			ВЦ АН СССР, Отдел Вычислительной техники
	Бронштейн Р.А., р. 227-00-14, доб.23-89
			НИФХИ им. Л.Я.Карпова, отдел ОЭТ,
			сектор СЭПиА


	    Полная документация на драйвер MX V2.2
			содержит файлы:

  NOTES.MX	Краткий перечень основных отличительных свойств
  HELP.MX	справочник по управлению драйвером
  README.MX	общее описание свойств драйвера
  MANUAL.MX	руководство по использованию драйвера
  TRICKS.MX	руководство по особым случаям применения

README.MX		  - 2 -			  README.MX



==================================================================
==		    Взаимные обязательства			==
==	  пользователей и распространителей драйвера MX		==
==    -----------------------------------------------------	==
==								==
==	1. Распространителем драйвера является КМТО "Импульс".	==
== Драйвер поставляется пользователям по письменным заказам. По	==
== получении заказа распространитель  копирует  пользователю на	==
== на его дискеты оплаченное  количество экземпляров драйвера и	==
== документации. Цена одного экземпляра - около 80 рублей.	==
==								==
==    ТИПОВАЯ ФОРМА заказа на драйвер:				==
==		141070  г. КАЛИНИНГРАД Моск. обл.		==
==			ул. Октябрьская, 1.			==
==		   Председателю КМТО "Импульс"			==
==			тов. КРАПЧИТОВУ П.А.			==
==	Просим Вас продать (поставить, предоставить, передать)	==
== нам ___ экземпляров драйвера MX V2.2 для ДВК-2/3.		==
==    Оплату гарантируем. Наш расчетный счет ....		==
==								==
==	2. Зарегистрированные в  КМТО  владельцы оплаченных эк-	==
== земпляров драйвера пользуются правом  информационного обслу-	==
== живания:							==
==	- авторы драйвера оказывают им консультации по сложным	==
==    вопросам применения драйвера (лично или по телефону);	==
==	- распространители  направляют им  сообщения об обнару-	==
==    женных ошибках и предоставляют  исправленные  экземпляры	==
==    без дополнительной оплаты;				==
==	- авторы и распространители сообщают им о новых версиях	==
==    драйвера, об их отличительных особенностях и свойствах.	==
==								==
==	3. Каждый экземпляр драйвера снабжается при копировании	==
== уникальным идентификационным кодом.  Обладатели драйвера, не	==
== зарегистрированные в КМТО или имеющие  драйвер с незарегист-	==
== рированным номером, не имеют	права на информационное  обслу-	==
== живание.							==
==	Зарегистрированные в КМТО пользователи  драйвера, обла-	==
== дающие экземпляром с индентификационным  номером, обнаружен-	==
== ным у незарегистрированных пользователей, снимаются с инфор-	==
== мационного обслуживания.					==
==================================================================

README.MX		  - 3 -			README.MX


	    ДРАЙВЕР 133-мм ДИСКОВОДОВ для ЭВМ ряда ДВК


	С О Д Е Р Ж А Н И Е
							стр.
1. ВВЕДЕНИЕ..............................................3
2. ОТКУДА ОН ВЗЯЛСЯ?.....................................3
3. РАЗЛИЧИЯ ДРАЙВЕРОВ MX ДВК и MX V1 (март 1985).........4
4. РАЗЛИЧИЯ ВЕРСИЙ ДРАЙВЕРА V1 (март 1985) и V2
    (июль-октябрь 1987)..................................6
5. ЛУЧШЕЕ - ВРАГ ХОРОШЕГО? (проект версии V3)...........11



	1. ВВЕДЕНИЕ

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

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

    Основные концепции, заложенные в  первую  версию  драйвера,
алгоритмы и их  реализация  принадлежат  М.И.Потемкину;  вторая
версия драйвера выполнена авторами совместно.

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

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

    В этой ситуации автор решил не исправлять ошибки  при  чте-
нии, а контролировать качество записи. Такое решение  было  тем

README.MX		  - 4 -			README.MX

более оправдано, что новый драйвер даже с включенным  контролем
записи должен был работать быстрее, чем его тезка из ОС ДВК.
    У автора был большой соблазн изменить формат записи на дис-
кету: заменить способ вычисления контрольных сумм на более  на-
дежный, сделать различимыми верхнюю и нижнюю  сторону  дискеты,
ввести контрольное суммирование заголовка дорожки и т.п.  Одна-
ко, любое серьезное изменение формата привело бы к потере  сов-
местимости: драйвер MX ДВК не смог бы читать дискеты,  записан-
ные новым драйвером, и наоборот. Чтобы не усложнять жизнь поль-
зователей, формат записи был сохранен без изменений.

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

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

    Отданный для пробы в несколько организаций, MX V1 неожидан-
но быстро и бесконтрольно распространился. Поскольку  автор  не
догадался сделать описание возможностей  и  особенностей  новой
программы, процесс распространения сопровождался лавиной  теле-
фонных звонков (вместо описания автор снабдил драйвер своим те-
лефоном), что вызвало недовольство соседей по рабочей  комнате.
Изготовленное в панике краткое описание уже не могло существен-
но исправить ситуацию.
    Среди большого количества звонков встречались полезные -  с
предложениями по улучшению или с сообщениями об ошибках. Первую
ошибку (в подсистеме ликвидации сбоев записи) обнаружил А. Кон-
драшев, использовавший драйвер при реализации языка АПЛ.  Кроме
того, ряд пользователей указал на неприятную задержку вывода на
экран при работе драйвера и на замедление работы редактора K52.
    Ряд ценных сведений, на которые далее будет несколько  ссы-
лок, сообщил авторам Е. А. Коноплев (КИИГА). См. также его ста-
тью в журнале "Микропроцессорные средства и системы", N1, 1988.



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

    Для выяснения формата записи и для уточнения назначения би-
тов регистра состояния контроллера драйвер MX ДВК был  реассем-
блирован. При изучении полученного макро-текста в  драйвере  MX
ДВК были обнаружены ошибки, которые приводили к потере информа-
ции при первом же сбое чтения или записи на дискете.
    Выяснилось также, что алгоритм работы предусматривал по два
оборота на чтение каждой поверхности, а при  записи  на  каждую
поверхность расходовались три оборота; при записи  массива  ин-
формации, расположеного более чем на одной  дорожке,  во  время
перехода к соседней дорожке пропускался еще один оборот.

README.MX		  - 5 -			README.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 секунд будет выключен  двига-
тель дисковода, чтобы зря не изнашивались дискеты.
    При включенном таймере скорость работы системы с  драйвером
MX V1 дополнительно возрастает на 8..25 процентов, в зависимос-
ти от программы и расположения данных на диске, а долговечность
дискет, по данным Е.А.Коноплева, увеличивается в 3..4 раза.

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

    В силу аппаратных особенностей, контроллер MX может записы-
вать поверхность дорожки только целиком, а не отдельные сектора
на ней, как это делают другие контроллеры. На каждой поверхнос-
ти размещены 5.5 блоков. Для перезаписи одного из них надо про-
читать всю поверхность в буфер, изменить в нем требуемый  блок,
а потом записать весь буфер (переписав тем  самым  всю  поверх-
ность заново) - отсюда и два оборота на поверхность при записи.
Для этой операции драйвер резервирует корость надежности (благо ГАИ не следит за
работой на ЭВМ), могут отключить контроль записи командой
	    SET MXn: NOVERIFY.

    В драйвер была введена возможность запрещать или  разрешать
запись на отдельные приводы, изменять время  перехода с дорожки
на дорожку и задавать количество попыток повторения  неуспешных
операций командами
	    SET MXn: [NO]WRITE
	    SET MXn: SPEED=...
	    SET MX:  RETRY=...

    В сентябре 1986г. Р.А.Бронштейн  дополнил  команду  "SET MX
INFORM", первоначально предназначенную для  сообщения  сведений
об авторе, распечаткой текущих значений всех установок.
    Он же ввел в драйвер команду  "SET MX SYSGEN",  облегчающую
настройку для работы с различными генерациями мониторов  опера-
ционной системы.