Утилита переноса файлов с дискет ПЭВМ РОБОТРОН 1715 на IBM PC

 Роботрон 1715 как дешевая, весьма надежная канцелярская 8- битная ПЭВМ получила в нашей стране широкое распространение. Большое количество текстовых и двоичных файлов, накопленных на ее дискетах за годы эксплуатации (свыше 4 лет), сохраняют свою актуальность и ценность. Появление IBM PC (XT, AT) привело к потребности в переносе файлов с дискет ПЭВМ Роботрон 1715 на эти системы. Удовлетворению такой потребности способствовала бы простая в эксплуатации утилита, позволяющая просматривать оглавление дискет Роботрон 1715 и копировать файлы на IBM PC. В связи с распространением на ПЭВМ Роботрон 1715 двух операционных систем (ОС) - SCP (Single user Control Program) разработки фирмы Роботрон (ГДР) и МикроДОС разработки Международного института проблем управления - необходимо, чтобы утилита просмотра/копирования обрабатывала дискеты в формате обеих ОС. Кроме того, МикроДОС позволяет использовать рабочие дискеты в формате СР/М, логично потребовать этого и от утилиты просмотра/копирования.
Такая утилита, разработанная автором и получившая название RIBM(r), может быть рекомендована широкому кругу пользователей ПЭВМ Роботрон 1715 и IBM PC.
Формат дискет SCP, МикроДОС и СР/М
На ПЭВМ Роботрон 1715 используются одно- и двусторонние дискеты на 40 и 80 дорожек (в зависимости от типа дисководов) с программным секторированием. Наиболее популярен размер сектора 1024 байт (этот размер используется в SCP, начиная с версии 5, и в МикроДОС), поэтому в описываемой ниже версии RIBM принят именно он. На дорожках дискеты в 5 и 1/4 дюйма, применяемых на
ПЭВМ Роботрон 1715, помещается пять секторов такого размера.
Наименьшая логическая единица информации, размещаемая в секторе, - запись размерами 256 байт в SCP и 128 байт в МикроДОС и СР/М; наименьшая единица дискетного пространства, выделяемого файлу, - блок размерами 2048 байт в SCP (два сектора на дискете) и 1024 байт в МикроДОС и СР/М (блок отображается в сектор). Вся информация о файлах и их расположении содержится в оглавлении дискеты, занимающем во всех трех ОС один блок (два сектора SCP и сектор в МикроДОС и СР/М). Локализация оглавления на дискетах указанных ОС различна, ее принято характеризовать смещением от начала дискеты в дорожках. В SCP оно равно трем, в МикроДОС - нулю, а в СР/М - двум. Заметим, что оглавление МикроДОС располагается не с начала блока, а со смещением в 128, первая запись блока содержит начальный загрузчик, считываемый в память при загрузке ОС (BOOT-record).
Относительная нумерация блоков на дискете начинается с блока, занятого оглавлением, которому присваивается номер 0. Дискетное пространство на дорожках, расположенных до оглавления (системных дорожках), в SCP и СР/М содержит ОС в абсолютном загружаемом формате или вообще не используется. В МикроДОС в блоке 1, непосредственно следующем за блоком оглавления, размещается системный загрузчик, загружающий ОС из файла типа СОМ .
 Оглавление рассматриваемых ОС имеет одинаковую структуру.Как видно из рисунка, оглавление состоит из однотипных элементов размером 32 байт, описывающих экстент (участок файла) длиной 32 Кбайт в SCP и 16 Кбайт в Микро- ЦОС и СР/М. Незанятое пространство в блоке оглавления первона
чально заполнено кодом 0Е5Н. Приведем описание существенных для наших целей полей:
UC - код пользователя, устанавливаемый командой ОС USER, по умолчанию содержит ООН. Если в этом поле записан код 0Е5Н, то данный элемент оглавления свободен;
F1...F8 - имя файла в коде ASCII, старшие биты полей F5...F8 могут использоваться прикладными программами;
Т1...ТЗ - тип файла (расширение имени) в коде ASCII, старшие биты полей Т1 и Т2 используются системой для установления специальных режимов обработки (защиты от записи и просмотра соответственно);
ЕХ - номер экстента, принимает следующие значения для элементов оглавления данного файла: в SCP, если экстент единственный, - 0, если же файл многоэкстентный, - 1,3,5,...,31; в МикроДОС и СР/М - 0,1,2,3,...,31;
SI, S2 используются системой;
RC - счетчик записей в экстенте, описываемом данным элементом оглавления;
D0...D15 - номера блоков дискеты, занимаемых экстентом файла, описываемым данным элементом оглавления. Если число блоков в экстенте меньше 16, то оставшиеся правые поля заполняются нулями. Встретившийся во время обработки элемента оглавления нулевой номер блока, таким образом, сигнализирует о конце файла.
Файл может быть описан одним или более элементами оглавления. Каждый экстент идентифицируется номером, содержащимся в элементе оглавления, соответствующем данному экстенту. Элементы, описывающие один и тот же файл, располагаются в оглавлении в порядке возрастания номеров экстентов, но не обязательно друг за другом. Признаком конца файла, помимо приведенного выше, является отсутствие в оглавлении элемента, описывающего следующий экстент.
Принцип работы RIBM и основные соотношения, использованные при создании утилиты
 Процесс переноса файлов с дискеты Роботрон 1715 на IBM PC укрупненно сводится к отысканию в оглавлении дискеты элементов,
описывающих файл с требуемым именем, извлечению из них номеров блоков, занимаемых файлом, считыванию секторов, соответствующих этим блокам, и записи их содержимого в предварительно открытый одноименный файл на IBM PC. Этот процесс должен осуществляться до исчерпания элементов оглавления, относящихся к данному файлу, или номеров блоков в текущем элементе оглавления, после чего файл на IBM PC должен быть закрыт. Повторяя указанные действия по отношению ко всем файлам (или их части), содержащимся на дискете Роботрон 1715, осуществляем требуемый перенос.
Для физического чтения секторов можно применить функцию BIOS 13Н, но при этом необходимо уметь преобразовывать относительный номер блока В в номера цилиндров С1,С2, поверхностей HI, Н2 и секторов SI, S2 с учетом числа используемых на дискете поверхностей NS и смещения оглавления OD. Напомним, что в ОС SCP блоку соответствуют два сектора. В ОС МикроДОС и СР/М, где блок отображается в сектор, нас должны интересовать только первые из указанных величин, а именно: CI, HI, SI. Требуемые соотношения для сектора размером 1024 байт (пять секторов на дорожке) приведены ниже:
 где int( ) - функция взятия целой части аргумента; mod( ) - функция нахождения остатка от деления первого аргумента на второй; Т1 и Т2 - номера дорожек. Соотношения (1)...(10) описывают необходимое преобразование для SCP, соотношения (1), (2), (7) и (9) - для МикроДОС и СР/М.
Некоторые подробности реализации утилиты на IBM PC
Чтение секторов дискеты Роботрон 1715 (в том числе и тех, на которых располагается оглавление) можно осуществить с помощью функции 13Н BIOS. Однако при этом следует учесть два обстоятель- :тва:
1) необходимо настроить таблицу параметров накопителей на [искетах на размер сектора в 1024 байт. Четырехбайтный адрес ука- анной таблицы находится по адресу 0 : 78Н (вектор INT 1ЕН). В айт по смещению 3 от начала этой таблицы необходимо занести начение 03Н перед выполнением функции 13Н на дискете Роботрон 715 и восстановить старое значение 02Н (соответствующее размеру гктора в 512 байт) перед выполнением на дискете MS DOS;
2) чтение сектора с дискеты (подфункция 02Н функции 13Н) не может быть нормально выполнено, если буфер для считывания сектора пересекает границы 64-Кбайтного сегмента. Это ограничение обусловлено особенностями работы адаптера прямого доступа к памяти (DMA). Так как заранее не известно, с какого физического адреса расположится буфер, необходимо перед его использованием осуществить проверку на пересечение буфером границ сегмента и, если оно имеет место, использовать другой буфер, непосредственно следующий за первым, что при размере буфера L < = 32 Кбайт дает гарантию непересечения. Для проверки выполнения указанного условия можно воспользоваться соотношением
int((A + L)/64K) < = int(A/64K) + 1,    (И)
где А - физический адрес буфера. Истинность неравенства (11) свидетельствует о выполнении требуемого условия.
Сведения об утилите RIBM
Утилита RIBM, реализованная автором, позволяет просматривать оглавление дискет Роботрон 1715 в SCP, МикроДОС, СР/М и копировать файлы на IBM PC. Управляется утилита с помощью командной строки
RIBM X:FILENAME.TYPe/Keys,
где X - имя накопителя, на котором установлена дискета Роботрон 1715. По умолчанию принимается накопитель A: FILENAME.TYPe - имя и тип файла, может задаваться в формате "wildcard" (*.*). Если имя файла и тип опущены, копируются все файлы с дискеты. Копирование осуществляется в текущую директорию на жесткий диск или дискету; /Keys - ключи. Могут использоваться следующие ключи:
/D - для просмотра оглавления;
/К-для трансляции кодов кириллицы Роботрон 1715 в альтернативные коды кириллицы, принятой на IBM PC. Одновременно строки в формате текстового редактора "Wordstar" в режиме форматирования текста преобразуются в обычные строки;
/2 - для обработки двусторонних дискет, по умолчанию обрабатываются односторонние дискеты Роботрон 1715;
/М - для обработки дискет в формате МикроДОС, по умолчанию принимается формат SCP;
/С - для обработки дискет в формате СР/М, по умолчанию принимается формат SCP;
/О.п - для задания нестандартного смещения оглавления, п - десятичная цифра;
/Н - для получения помощи.
В связи с простотой использования RIBM приведенной выше информации вполне достаточно для практической работы с утилитой. Ограничимся только некоторыми дополнительными замечаниями по ее применению.
1. В данной версии RIBM предусмотрена возможность работы только с дискетами с размером сектора 1024 байт.
2.    40-дорожечные дискеты Роботрон 1715 могут обрабатываться на накопителях 1,2 Мбайт и 360 КЗайт, 80-дорожечные дискеты - только на накопителях 1,2 Мбайт (IBM PC/AT).
3.    При обработке дискеты код пользователя и установленные специальные режимы обработки файлов игнорируются.
4.    Лишены смысла сочетания ключей /D и /К, /М и /С. Если использован ключ /Н, на экран выдается текст помощи и больше никаких действий не выполняется.
5.    Ключ /О позволяет обрабатывать дискету Роботрон 1715 с нестандартным расположением оглавления. При совместном использовании ключа О с ключами /М и /С он должен задаваться последним.
6.    Утилита RIBM выдает достаточно подробные сообщения на английском языке. В случае возникновения ошибок на уровне BIOS или файловой системы MS DOS сообщение об ошибке сопровождается кодом ошибки соответственно BIOS или MS DOS.
Утилита RIBM написана на языке ассемблера, на носителе она занимает менее 16 Кбайт.
Готовятся к выпуску утилиза IBMR, осуществляющая противоположные действия, а именно: перенос файлов с носителей IBM PC на дискеты Роботрон 1715, просмотр, переименование и удаление файлов с дискеты Роботрон 1715, а также утилита-интегратор, позволяющая эксплуатировать утилиты RIBM и IBMR в экранном режиме.
 


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным