Значительно повысить скорость, надёжность и комфортность работы на БК можно, лишь подключив к нему дисковод. О том, как это сделать, и пойдёт речь в этой статье.

 

А.М. Надежин

БК0010: РАБОТА С ДИСКОВОДОМ

Введение

В адрес БК0010 - поистине самого массового бытового компьютера в нашей стране было сказано немало хороших слов, в том числе и в журнале «Вычислительная техника и её применение». За время выпуска БК, а это уже восемь пет, для него было написано множество программ разнообразного назначения. Многие из них по своим возможностям и даже дизайну не уступают программам профессиональных ЭВМ. Создано огромное количество текстовых и графических редакторов, систем управления базами данных и электронных таблиц, интерпретаторов и компиляторов различных языков программирования (от языка калькулятора МК61 до турбо-СИ), различных сервисных программ, облегчающих жизнь пользователю, ну и, конечно, компьютерных игр, количество которых уже перевалило за тысячу. Пользователями БК освоены различные периферийные устройства, такие, как джойстик, мышь, принтер.

Все приведённые выше аргументы доказывают, что БК0010 не бесполезная игрушка с ничтожно маленькой памятью, как утверждают некоторые (как правило, ни разу в жизни не работавшие на БК) критики, а достаточно хороший, мощный и удобный домашний персональный компьютер. Но разумеется, и БК не лишён недостатков. Основной из них, конечно, - малый объём памяти. Именно поэтому создание удобных и качественных программ для БК возможно только на языке Ассемблера, а для Ассемблера 16 Кбайт не так уж и мало (если представить себе программу, занимающую всю память и состоящую только из откомпилированного ассемблерного текста, этот текст был бы размером около 8000 строк). Другой недостаток БК - использование бытового магнитофона в качестве внешнего запоминающего устройства. Конечно, для загрузки игровых программ магнитофон вполне приемлем, но при работе с текстами, а тем более при программировании на Ассемблере, возникают определённые неудобства. Так, у программистов, занимающихся реализацией на БК достаточно серьёзных задач, на кассетах скапливается по сто и больше файлов с версиями исходного текста одной программы, не говоря уж о том, что сборка и перекомпиляция программы, состоящей, скажем, из пяти частей, записанных на магнитофон в разных файлах, весьма невесёлое и долгое занятие.

Для облегчения участи пользователей, использующих БК не только как игрушку, были предприняты попытки создания электронного диска. В качестве примера можно привести расширение памяти и операционную систему RAMDOS, предложенные В.С. Коренковым (ИНФО №6 за 1991 г. В. Коренков. Диспетчер ОЗУ и операционная система RAMDOS для БК-128К). Однако наличие электронного диска не избавляет пользователя от необходимости постоянно сбрасывать на магнитофон промежуточные результаты, ведь если этого не делать, может случиться так, что в один прекрасный момент у вас в доме отключат электричество, и все результаты трудов за день просто исчезнут. Значительно повысить скорость, надёжность и комфортность работы на БК можно, лишь подключив к нему дисковод. О том, как это сделать, и пойдёт речь в этой статье.

Итак, что же нужно, чтобы БК смогла работать с дисководом? Ну, разумеется, сама Бэкашка и дисковод. Но, я думаю, всем пользователям БК понятно, что напрямую дисковод к БК подключить нельзя. Для этого требуется специальное управляющее устройство - контроллер. Кроме того, потребуется операционная система - специальная программа, с помощью которой можно будет обращаться к дисководам, считывать и записывать файлы, переадресовывать обращения программ БК0010 с магнитофона на дисковод, выполнять сервисные функции; просмотр каталога, удаление, переименование, копирование файлов, форматирование дисков и т.д. Но как известно, многие программы БК0010 занимают всю память без остатка, поэтому потребуется ещё и дополнительная память для хранения операционной системы и промежуточных данных (например, каталогов дисков).

Ну что ж, начнём по порядку С БэКашкой всё понятно, а какой же нам нужен дисковод?

Дисководы

Существуют три стандартных формата дисков: 3, 5 и 8 дюймов. Для наших целей больше всего подходят пятидюймовые дисководы, ведь восьмидюймовые весьма громоздки и давно уже не выпускаются, а трёхдюймовые, наоборот, малогабаритны, удобны и перспективны, но, к сожалению, в нашей стране почти не выпускаются, а зарубежные модели пользователям БК совершенно недоступны (ввиду своей стоимости)

Существуют 40- и 80-дорожечные, одно- и двухсторонние пятидюймовые дисководы. Их можно использовать для подключения к БК, но более удобно использовать двухсторонние 80-дорожечные дисководы, так как они имеют наибольшую ёмкость (800 Кбайт) и распространены больше других.

Встречаются дисководы двух типоразмеров, «узкие» с передней панелью 150x42 мм (обычно 80-дорожечные, реже зарубежные 40-дорожечные), и «широкие» с передней панелью 150x85 мм (всегда 40-дорожечные). Из доступных дисководов наиболее надёжны в работе зеленоградские: 80-дорожечные двухсторонние МС5305 и «широкие» двухсторонние 40-дорожечные МС5301. Несколько хуже армянские МС5305 и «широкие» немецкие (ГДР). Значительно хуже болгарские дисководы ISOT ЕС5321

Итак, представим себе идеальную ситуацию вы приобрели два роскошных зеленоградских МС5305, да ещё и с блоком питания Какой же искать контроллер?

Контроллеры

Наиболее удобно воспользоваться готовым промышленным контроллером дисководов от ЭВМ с аналогичной архитектурой. Проще всего использовать контроллеры от БК0011 или БК0011М, однако подойдёт и контроллер от УК-НЦ, но о нём чуть позже. Конструктивно контроллеры от БК0011 и БК0011М выполнены в стандартном корпусе блока МСТД и подключаются к разъёму МПИ БК. Эти контроллеры построены на основе БИС 1801ВП1-128, поддерживают двойную плотность записи в стандарте MFM. аналогичную формату дисков IBM-совместимых компьютеров, и могут обслуживать один или два дисковода. Контроллер от БК0011 (блок КНГМД 3 059.001) отличается от контроллера БК0011М (блок КНГМД 3.059 014) только драйвером дисководов (программой управления) зашитым в ПЗУ (ПЗУ с драйверами для этих контроллеров называются соответственно 1801РЕ2-253 и 1801РЕ2-326) Более предпочтителен контроллер от БК0011М, так как его драйвер позволяет на БК0010 автоматически загружать с диска операционную систему. Для подключения этих контроллеров к БК требуется всего лишь установить перемычку между контактами разъёма А19 и А2 и резистор сопротивлением 300 Ом между контактами А29 и А4 разъёма МПИ контроллера. Резистор блокирует работу ПЗУ БК, расположенного по адресу 160000 (как раз к этим адресам и подключается ПЗУ контроллера).

Что касается контроллера от УК-НЦ (КМД УК), то для его подключения к БК потребуется больше времени, сил и средств, магистральные разъёмы БК и УК-НЦ различны, поэтому необходимо подпаять контроллер к 64-контактному разъёму БК; в контроллере от УК-НЦ нет тактового генератора, поэтому необходимо подать на него тактовую частоту 4 МГц от внешнего генератора; в контроллере от УК-НЦ нет ПЗУ с драйвером дисководов (но есть место под него), поэтому нужно установить в контроллер одну из двух вышеперечисленных БИС ПЗУ или загружать драйвер в дополнительное ОЗУ, некоторые разряды регистра управления у контроллеров от БК11 и УК-НЦ различны, поэтому нужно либо переделать контроллер от УК-НЦ в соответствии со схемой контроллера БК11, либо загрузить в ОЗУ специальный драйвер дисководов, переделанный под контроллер УК-НЦ.

Дополнительная память

Как уже говорилось, кроме дисковода и контроллера потребуется ещё и дополнительное ОЗУ. Использование для этой цели ПЗУ невозможно, так как, кроме операционной системы, в дополнительной памяти должны размещаться переменные и буфер чтения/записи. В принципе возможен (и даже реализован в операционной системе MicroDOS) отказ от использования ОЗУ с помощью свопинга (сохранения на диске участков памяти с последующим их восстановлением), однако в этом случае значительно уменьшается скорость работы с диском, и всё равно требуется использование нескольких ячеек основного ОЗУ для хранения переменных, и рабочей области контроллера дисководов Из-за этого в упомянутой MicroDOS невозможна корректная работа программ с автозапуском и адресом загрузки ниже 1000. Правда, возможен ещё один вариант - размещение операционной системы в ПЗУ, а переменных и буфера в дополнительном ОЗУ небольшого объёма, но, на мои взгляд, проще и удобнее изготовить или приобрести блок дополнительного ОЗУ.

Дополнительное ОЗУ должно располагаться по адресу 120000 (при этом ПЗУ Бейсика или Фокала, естественно, должно быть отключено) Объём этого ОЗУ может быть 8 или 16 Кбайт. При объёме ДОЗУ 16 Кбайт первые 8 Кбайт (адреса 120000 - 137777) занимает операционная система, оставшиеся же 8 Кбайт (адреса 140000 - 157777) предоставлены пользователю. Наиболее предпочтительно использование статического ОЗУ с подхватом питания. В этом случае достаточно будет один раз, загрузив с диска в ОЗУ операционную систему, пользоваться ей неограниченное время (время хранения информации в таком ОЗУ при выключенном питании ЭВМ может достигать нескольких месяцев).

Может возникнуть вопрос: не всё ли равно, грузить систему с диска или хранить в ОЗУ. Дело в том, что непосредственная загрузка возможна лишь с помощью контроллера от БК0011М (ПЗУ 1801РЕ2-326), в этом случае из монитора БК даётся команда старта по адресу 160000, а для того чтобы загрузиться с помощью контроллера от БК0011 (ПЗУ 1801РЕ2-253), потребуется сначала прочитать с магнитофона программу начального загрузчика и запустить её. Эта необходимость вызвана тем, что в подпрограмме загрузки драйвера дисковода ПЗУ 1801РЕ2-253 используется системное прерывание ЕМТ-112, на БК0010 вызывающее обращение к адресу 10546 и зависание.

Чтобы избежать этого, необходимо любым способом занести в указанную ячейку команду возврата из подпрограммы RET (код 207). Проще всего это сделать, прочитав с магнитофона программу начальной загрузки.

Существует несколько вариантов изготовления статического ОЗУ. Наиболее простой - ОЗУ на базе БИС 1809РУ1. В этом случае не потребуется никаких деталей, кроме самих микросхем ОЗУ и батарейки подхвата питания. Каждая такая БИС имеет ёмкость 2 Кбайт и подключается непосредственно к шине МПИ. Однако, несмотря на всю кажущуюся простоту, у этого варианта есть один существенный недостаток: БИС 1809РУ1 крайне дефицитны. Другой вариант - изготовление статического ОЗУ на базе логических микросхем распространённой серии 555 и микросхем ОЗУ серии 537. Несколько схем таких ОЗУ было опубликовано (ВТ № 11, 1991. Стр.40. Ю.Д. Хабибупин. Кассета ОЗУ ПЗУ для БК0010; ИНФО N 2, 1991. Стр.66. А Барсуков. Энергонезависимое ОЗУ; ИНФО № 3, 1991. Стр. 51. А. Диков и др. TermOS). Существует и третий вариант - использование специализированного контроллера ОЗУ 588ВГ2 значительно менее дефицитного чем 1809РУ1.

Схема такого ОЗУ, разработанная С.С. Авдюшиным, приведена на рис. 1. Регистр адреса (DD1, DD2) выполнен на микросхемах 555ИР22 (можно использовать любые регистры с записью низким уровнем). Блок ОЗУ состоит из 16 микросхем 537РУЗ (537РУ2), которые могут быть заменены на 4 микросхемы 537РУ10 (537РУ8), включённые по схеме, показанной на рис. 2. Формирователь на элементах DD3.1 DD3.2 предназначен для исключения ложных срабатываний регистров. Для повышения надёжности работы контроллера дисководов его вход SYNC также можно подключить не непосредственно к разъёму МПИ БК, а к выходу элемента DD3.2. Элементы DD3.3 DD3.4 служат для усиления мощности сигнала DOUT. На входах 12-14 контроллера DD4 задаётся адрес ОЗУ (при включении, показанном на схеме, адрес будет равен 120000). RC-цепочки на входах 2 и 17 контроллера нужны для формирования задержки сигнала RPLY на время задержки срабатывания микросхем памяти. Диоды VD1 и VD2 (обязательно германиевые) и элемент GB1 составляют схему подхвата питания микросхем ОЗУ. Кнопка S1 служит для перезапуска процессора в случае зависания программы или для выхода из программы в ОС. Кроме того, эта кнопка применяется для остановки процессора при включении и выключении ЭВМ (если во время подачи и снятия питания процессор не останавливать, может произойти разрушение информация в дополнительной памяти из-за выбросов управляющих сигналов). Резисторы R1 и R2 предназначены для отключения внутренних ПЗУ БК.

Ну что ж, теперь у нас есть БК, контроллер, дисковод, блок дополнительного ОЗУ. Это много, но ещё не всё. Нужна программа - операционная система, чтобы оживить всё это нагромождение железа.

Рис. 1

Рис. 2

Операционная система ANDOS

Когда было принято решение о написании операционной системы, встал вопрос о формате записи на диск. Предполагалось использовать один из следующих форматов: формат RT11, формат MS-DOS или свой собственный формат с шестнадцатисимвольным именем. Но у всех трёх вариантов были свои недостатки: Формат RT11 вводит серьёзные ограничения на имя файла (имя не может быть больше шести символов плюс три символа расширения, причём символы должны быть допустимы в коде RADIX50, то есть заглавные латинские буквы и цифры), кроме того, в связи с последовательной записью файлов при удалении образуются пустые области, которые необходимо сжимать, а операция сжатия (по сути, переписывание заново всего диска) выполнялась бы на БэКашке с её скудной памятью недопустимо долго. Новый формат записи, несмотря на все преимущества, имел серьёзный недостаток: диски, записанные на БК в этом формате, не были бы совместимыми ни с какими другими ЭВМ (разработчики MicroDos выбрали как раз такой, свой формат).

Оставался последний вариант - формат записи MS-DOS, применяющийся в IBM-совместимых компьютерах. Единственным недостатком этого формата была сложность его реализации (фрагментирование файлов, обработка таблицы размещения), но с этим пришлось смириться. Зато формат MS-DOS открывал большие перспективы - возможность чтения и обработки на IBM дисков, записанных на БК, допустимость использования почти любых символов (в том числе и русских букв) в имени, возможность работать без сжатия диска.

Основа файловой системы была написана С.С. Авдюшиным в 1990 году, последующие исправления и дополнения внёс автор этой статьи. Получившаяся операционная система получила название ANDOS. В апреле 1992 года была выпущена версия ANDOS V2.02$. О ней и пойдёт речь. ANDOS V2.02$ может работать как на БК0010, так и на БК0011(М), причём в этом случае не потребуется дополнительного ОЗУ, и появится возможность работать с переключаемыми страницами памяти.

Итак, возможности ANDOS V2.02$:

Формат дисков операционной системы ANDOS совместим с MS-DOS, но несколько отличается от формата «800». На диске может содержаться не более 112 файлов. Размер кластера (минимального объёма информации, последовательно записываемого на диск) выбран равным 4 секторам (2 Кбайт). Это позволило сократить объём таблицы размещения файлов (FAT) до 1200 байт, повысить скорость чтения фрагментированных файлов и облегчить восстановление испорченных дисков.

Системный диск ANDOS снабжён самоадаптирующимся загрузчиком. При загрузке он определяет тип машины и выполняет соответствующие действия; при попытке загрузки на обычной БК0010 выдаёт сообщение о невозможности работы без дополнительной памяти, на БК0010 с дополнительным ОЗУ загружает операционную систему ANDOS по адресу 120000 и передаёт ей управление, на БК0011М устанавливает палитру БК0010, загружает монитор БК0010 по адресу 100000 и операционную систему по адресу 120000, после чего модифицирует в мониторе команду обращения к драйверу магнитофона, копирует монитор и операционную систему в четвёртую страницу ОЗУ и запускает их. Загрузка на БК0011 отличается от загрузки на БК0011М тем, что стандартный монитор БК0010 модифицируется для обеспечения работы звука нажатия клавиши и записи на магнитофон.

После загрузки ANDOS выдаёт на экран заставку и ждёт нажатия любой клавиши, после которого происходит инициализация системы и автоматическая адаптация под конфигурацию ЭВМ (если монитор находится в ПЗУ, происходит перехват вектора 30), и выход в монитор БК0010. Не удивляйтесь, ANDOS не имеет своего командного монитора и использует обычный монитор БК.

ANDOS V2.02$ обслуживает три устройства:

М: - Магнитофон

А: - Верхний дисковод (привод 0)

В: - Нижний дисковод (привод 1)

Для передачи всех команд ANDOS использует стандартный блок параметров магнитофона, поэтому все команды передаются через имя файла, так, например, для удаления файла перед именем нужно поставить знак «-».

Как и во всех операционных системах профессиональных ЭВМ в ANDOS имеется устройство по умолчанию. После загрузки это дисковод А:. Устройство по умолчанию можно изменить в любой момент вводом имени устройства вместо имени файла. При исполнении всех операций при вводе имени файла происходит обращение к устройству по умолчанию, если же перед именем файла явно указано устройство, происходит обращение к нему. Удаляется файл в случае, когда перед именем файла стоит знак минус. Если указано пустое (состоящее из одних пробелов) имя, на экран выводится каталог с указанием имён файлов, количества занимаемых кластеров, адресов и длин. В конце каталога выводится общее число файлов, количество занятых и свободных кластеров. Имеется возможность приостановить вывод каталога на экран, нажав любую клавишу, а также просматривать каталог файлов, имена которых начинаются на указанную букву алфавита.

При чтении файла с диска ANDOS ведёт себя точно так же, как и монитор БК при чтении с магнитофона, поэтому в программах корректно работает автозапуск и проверка качества чтения.

Если при записи файла ANDOS обнаруживает на диске файл с таким же именем, на экран выводится запрос, в ответ на который можно отказаться от записи, переписать файл на место старого или перед записью заменить расширение у старого файла на .ВАК и записать файл. Таким образом, в режиме дублирования появляется возможность всегда хранить на диске две копии файла - текущую и предыдущую (страховочную).

При ошибке обращения к диску выводится сообщение с кодом ошибки контроллера и предлагается повторить операцию или отказаться от неё.

При выполнении любой операции с диском ANDOS считывает содержимое загрузочного сектора (Boot Record), в котором записаны все параметры данного диска (общий объём, размеры каталога и FATa, количество сторон, объём кластера и другие параметры), и если эти параметры соответствуют формату записи ANDOS, настраивает под них драйвер дисковода, в противном случае выдаётся сообщение «Неправильный формат диска».

Для того чтобы, работая в ANDOS, можно было бы автоматизировать процесс переноса программ с кассеты на диск и использовать программы с защитой имени в ANDOS, применена логическая обработка имени: если имя превышает восемь символов, ANDOS использует первые семь символов и последний. Приведу пример. Допустим, вы захотели скопировать с магнитофона на диск игру «ДЕСАНТНИК». Она состоит из шести файлов: ДЕСАНТНИК, ДЕСАНТНИК1 ... ДЕСАНТНИК5. Если бы операционная система использовала просто первые восемь символов имени, все шесть файлов стали бы называться ДЕСАНТНИ и, естественно, затёрли друг друга на диске. При копировании этих файлов в ANDOS с логической обработкой имени они получат имена ДЕСАНТНК, ДЕСАНТН1 ... ДЕСАНТН5. При запуске игры можно будет вводить как имя в каталоге (ДЕСАНТНК), так и полное имя (ДЕСАНТНИК). То же будет происходить и при чтении остальных пяти файлов в первой части игры (она даже и не узнает, что на самом-то деле их зовут совсем не так).

Дополнительное удобство ANDOS заключается в том, что для двух дисководов в памяти раздельно хранятся две таблицы параметров, что дает возможность подключать к БК два совершенно различных дисковода (например, один 80-дорожечный односторонний с быстрым приводом головки, а другой 40-дорожечный двухсторонний с медленным приводом).

Теперь хочется сказать несколько слов по поводу совместимости с IBM. Для успешного чтения на IBM диски ANDOS должны быть отформатированы на БК. (Диски, отформатированные на IBM, не читаются на БК по аппаратным причинам). К сожалению, у БК0010 и у IBM-совместимых компьютеров несколько разные требования к загрузчику, поэтому на IBM будут читаться только несистемные диски ANDOS. Чтобы прочитать системный диск, придётся запустить специальную утилиту ANDOS, модифицировать загрузчик, а затем после работы на IBM восстановить его. Это связано с тем, что для успешной загрузки на БК первой командой загрузчика должен быть NOP (код 240), а IBM при любом обращении к диску проверяет наличие в начале загрузчика команды перехода на подпрограмму загрузки JMP, и естественно, когда IBM обнаруживает в загрузчике БэКашный NOP, она говорит, что диск якобы не форматирован. Нормальное чтение дисков ANDOS на IBM возможно лишь на дисководе высокой плотности (1,2 Мбайт), при этом должен быть запущен какой-либо драйвер, позволяющий читать диски с плотностью записи 10 секторов на дорожку (800, PU_1700, FDREAD, DCE). Следует иметь в виду, что программа Norton Disk Doctor, обрабатывая диски ANDOS, будет выдавать сообщение о неправильном загрузчике (Invalid Boot Record), а в некоторых случаях ещё и сообщение о неправильном типе диска (Media Descriptor). Это связано с тем, что диск у нас всё-таки не IВМовский, а БэКашный, и ошибкой не будет. Следует иметь в виду, что ANDOS записывает адреса файлов в поле времени, поэтому при просмотре каталога ANDOSовского диска на IBM даты у всех файлов будут 01.01.1980, а времена произвольные (могут быть и несуществующие). Однако, как показали эксперименты, все программы IBM (в том числе и архиваторы) не изменяют времени создания файла, даже когда оно некорректно, следовательно, адреса БэКашных программ при копировании останутся неизменными. Для того чтобы на IBM можно было читать русские имена файлов и просматривать русские тексты, написанные на БК, был создан загрузчик шрифта КОИ8 в IBM. Правда, при его работе IВМовские программы, использующие псевдографику (например, Norton Commander), выглядят несколько странно, но с этим можно смириться.

Итак, для чего же может пригодиться совместимость с IBM? Ну, во-первых, для сохранения архива программ БК на дисках IBM (архиваторы, работающие на IBM, позволяют сжать даже самую плотную программу БК, как минимум в два раза). Во-вторых, для переноса текстов с БК на IBM и обратно (появляется возможность вводить тексты для IBM дома на БэКашке). В-третьих, для переноса графических картинок с IBM на БК (для этой цели А.С. Барским была написана программа, позволяющая записывать картинки, выведенные на экран IBM в экранном формате БК с перекодировкой цветов). В-четвёртых, мощные программы IBM помогут обрабатывать диски ANDOS (С помощью Norton Unerase можно восстанавливать стёртые файлы, уже упомянутым Norton Disk Doctor можно проверять и восстанавливать диски, программа Norton Disk Editor поможет внести исправления в загрузчик, каталог и FAT ну и, наконец, Norton Commander позволит вам наконец-то разобраться с архивом программ БК).

В комплект поставки ANDOS входит несколько системных утилит.

Программа KOI8.COM загружает в IBM шрифт КОИ8.

Кроме того, разработана программа тиражирования кассет ANCAS. Она позволяет копировать с диска на кассету до 99 указанных файлов, причём возможно переименование каждого файла. Имеется возможность указывать скорость записи и число копий. Список файлов и переименований создаётся с помощью встроенного текстового редактора. Список файлов может быть сохранен на диске для последующего использования. Перед началом копирования можно выделись файлы из списка, не подлежащие копированию.

В заключение хочется сказать несколько слов о приобретении наших программных продуктов. Если вы решили приобрести операционную систему ANDOS V2.02$, программу ANCAS или драйвер дисководов, адаптированный под контроллер от УКНЦ, следует направить заявку по адресу: Москва 115573, А/Я 8, ANCO В заявку вложите конверт с вашим адресом. Ответ с условиями поставки ANDOS V2.02$ вы получите не позже чем через две недели после получения заявки.

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

Performed by © gid, 2012-2022.