УНИВЕРСАЛЬНЫЙ ДРАЙВЕР 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", облегчающую настройку для работы с различными генерациями мониторов опера- ционной системы.