[an error occurred while processing this directive]

.цв

.шп+8

Драйвер управления виртуальной дисковой памятью

VIRT128 .BIN для среды ДОС 3.3 ПЭВМ "АГАТ-9"

(описание для программистов и пользователей)

.шп-8

.лв

.шп+8

1. Назначение

.шп-8

Драйвер управления виртуальной дисковой памятью VIRT128 .BIN (версия 28.04.94) предназначен для эмуляции оперативной памяти модулей дополнительного ОЗУ (при наличии их в ПЭВМ) в качестве дискового устройства хранения информации. При этом память указанных областей будет организована по типу дисковой памяти. Доступ к виртуальному дисковому пространству осуществляется с помощью специальной программы виртуальной RWTS (Read/Write Trek/Sector), входящей в состав драйвера и устанавливающегося в систему ДОС 3.3 при его загрузке, через общую RWTS среды ДОС на уровне сэмулированных треков и секторов. Таким образом ДОС может обращаться к виртуальному диску на всех уровнях своей организации (RWTS, менеджера файловой системы, и уровне команд), выполняя свои обычные функции.

Удобство работы пользователя с виртуальным диском очевидно. При использовании в системе ДОС драйвера управления виртуальной дисковой памятью (минимальным требованием к его использованию является наличие одного модуля ДОП ОЗУ (ячейка ФРГ00170) в составе ПЭВМ) хранение временой информации и ее обмен становится более быстрым и удобным. Например, сразу после загрузки системы ДОС 3.3 и интерпретатора "Бейсик" весьма удобно переписать на виртуальный диск все программы, с которыми в дальнейшем предполагается работать. Последующий обмен информацией с виртуальным диском будет происходить в среднем в 10 раз быстрее чем с обычным НГМД, что особенно удобно использовать при работе с оверлейными программами или базами данных.

.сс

.шп+8

2. Установка драйвера в оперативную память.

.шп-8

Драйвер VIRT128 .BIN загружается в оперативную память ПЭВМ с адреса ¤6000 и занимает ¤500 байт. (Существует перемещаемая версия драйвера VIRT128 .EXE, загрузка которого возможна с произвольного, допустимого средой, адреса.) При старте драйвера происходит установка его резидентной части в систему ДОС 3.3 на адреса ¤DF00-¤DFFF первой половины 8-го банка ДОС и ¤E700-¤E7FF 9-го банка. Кроме того на адреса ¤6EC-¤6FF устанавливается подпрограмма вызова резидентной части драйвера при старте ДОС. Некоторые изменения вносятся также в служебные подпрограммы ДОС и ее RWTS. После установки резидентной части драйвер производит определение конфигурации дополнительной оперативной памяти, информация о которой вносится в таблицу конфигурации ПЭВМ системы ДОС (расположена по адресам ¤4F5-¤4FA). Эта информация необходима рабочим подпрограммам драйвера для доступа к формируемым и уже открытым виртуальным дискам. Дальнейшим этапом установки драйвера является процесс форматирования всех виртуальных дисков (их количество равно количеству модулей ДОП ОЗУ в составе конфигурации ПЭВМ). При этом происходит обнуление всей памяти ДОП ОЗУ, формирование каталога диска и VTOC (таблицы оглавления каталога, VOLUME TABLE OF CONTENTS).

* Примечание: Процесс форматирования может и не выполняться драйвером. Это происходит в том случае, если ранее драйвер уже был установлен в систему и было произведено форматирование дисков. Такая организация процесса установки драйвера дает возможность сохранения ранее записаннной на виртуальный диск информации и неуничтожения ее в процессе повторной его установки или рестарте системы ДОС.

После завершения процесса форматирования (сопровождается "щелчками" динамика) на экран будет выдана заставка драйвера и сообщение о его установке:

.шп+8

.гр

/--------------------------/
|   VIRTUAL DISKS DRIVER   |
| by Serkov S.V.  28.04.95 |
|--------------------------

ВИРТУАЛЬНЫЙ ДИСК            
ИНСТАЛИРОВАН НА МОДУЛЯХ ДОП 
ЕМКОСТЬ КАЖДОГО ПО 128КБ    

.шп-8

.тт

После установки драйвера в систему ДОС 3.3 новая система может быть записана на магнитный диск путем создания системного диска командой ДОС "INIT filename". При этом вместе с ней будет записана резидентная часть драйвера управления виртуальной памятью. При загрузке с такого системного диска пройзойдет инициализация драйвера с форматированием всех виртуальных дисков и т.д. (заставка драйвера не выводится). То есть новая система ДОС 3.3 будет поддерживать работу с виртуальными дисками посредством встроенного драйвера-резидента.

Примечание:

1] При старте новой системы запуск стартового файла (без изменений) будет производиться не с виртуального диска, а с того НГМД, с которого производится загрузка системы.

2] Новая система DOS 3.3 потеряет возможность поддерживать работу с сетью.

После завершения процесса установки, происходит пересчет контрольной суммы DOS 3.3. По измененной контрольной сумме утилита CHECKSYS.BAS фирмы "Friends' Software" информирует пользователя, что в систему установлен драйвер виртуального диска (определяется также его версия). По окончанию установки драйвера, управление возвращается в вызывающую программу.

Если загрузка драйвера VIRT128 произведена на ПЭВМ, неимеющей в своей конфигурации модулей ДОП ОЗУ, то драйвер диагностирует ошибку "НЕ НАЙДЕНА ЯЧЕЙКА ДОП ОЗУ" или будет произведена ее обработка в соответствии с программой обработки ошибок, предусмотренной в вашей Бейсик-программе при использовании оператора языка "Бейсик" ONERR GOTO. При этом в ERRCOD (ячейка 222 (¤DE)) записывается код ошибки "НЕТ УСТРОЙСТВА" (16 (¤10)).

.сс

.шп+8

3. Работа с виртуальным диском.

.шп-8

Организация работы с виртуальными дисками, открытыми с помощью драйвера управления виртуальной дисковой памятью, с точки зрения пользователя, ничем не отличается от работы с обычным магнитным диском в НГМД. Доступ к любому виртуальному диску на уровне команд ДОС осуществляется с помощью указания в команде номера разъема S ПЭВМ, в который установлен модуль ДОП ОЗУ. При этом, указание номера привода D и номера тома V является не обязательным (они не используются RWTS виртуального диска). При форматировании виртуальному диску всегда присваивается номер тома V=254 (¤FE).

.шп+8

3.1.Особенности работы команды INIT.

.шп-8

Команда DOS 3.3 INIT filename по отношению к виртуальному диску не производит записи на него Системы DOS и интерпретатора "Бейсик", а аналогична по своим действиям команде INIT без указания имени файла (производит разметку виртуального диска с обнулением всех секторов, создание каталога и VTOC).

Виртуальный диск может быть размечен (отформатирован) на различную емкость (собственно, диск всегда размечается на полную емкость: 32 трека * 16 секторов = 512 секторов (128 кб), однако во VTOC некоторые треки отмечаются занятыми. С этой точки зрения, возможно 4 типа форматирования виртуального диска:

  1] Форматирование, производимое при старте DOS 3.3, имеющей
     в составе резидент драйвера или осуществляемое при
     запуске самого драйвера.

При этом:

А. Форматируются все виртуальные диски сразу (их кол-во равно кол-ву модулей ДОП ОЗУ в составе ПЭВМ).

Б. Емкость свободной области каждого диска составляет 31 трек * 16 секторов = 496 секторов (17 трек (¤11) занят под каталог).

  2] Форматирование командой DOS 3.3 "INIT"
     (без указания имени файла).

При этом емкость свободной памяти формируемого диска составляет 30 треков * 16 секторов - 1 сектор = 479 секторов (занятыми во VTOC отмечаются трек каталога (17-й трек), трек 0 и сектор 15 31-го трека (такая карта свободной области диска формируется менеджером файлов системы DOS).

  3] Форматирование командой DOS 3.3 "INIT filename".

3А]. filename указано без параметров адреса и длины файла
     (формируется файл типа "A" - "Бейсик"-файл).

При таком форматировании, емкость свободной памяти составляет 23 трека * 16 секторов - 1 сектор = 367 секторов (занятыми отмечаются трек 17, треки 0-6 и сектор 15 трека 31).

После форматирования на виртуальный диск также записывается имевшаяся в памяти Бейсик-программа. Данные о свободной области указаны без учета дискового пространства, отводящегося на хранение файла.

3Б]. filename указано с перечислением параметров стартового
     адреса (A) и длины (L)
     (в этом случае после форматирования формируется файл
     типа "B" - бинарный).

Емкость свободной области в этом случае составит 27 треков * 16 секторов - 1 сектор = 431 сектор; резервируется трек 17, треки 0-3 и 15 сектор трека 31. Записывается бинарный файл с указанным именем (filename) (емкость свободной области указана без учета размера "B"-файла).

.сс

В случае форматирования по типу 3, система DOS (в случае 3Б) или система DOS + интерпретатор "Бейсик" (в случае 3A) на виртуальный диск не записываются (однако под них формируются свободные области (указаны выше). (Возможно это будет реализовано в последующих версиях драйвера.) Программисты их могут использовать в качестве хранения другой информации, доступ к которой должны организовывать особые программы. В общем случае можно использовать любую свободную область виртуального диска в нестандартных целях, используя доступ к ним самостоятельно или через RWTS (однако, не забудьте отметить используемые области занятыми во VTOC во избежание конфликтных ситуаций). При этом на виртуальном диске может храниться файловая или секторная информация, сохраняемая там с помощью стандартных доступов (через DOS, менеджер файлов и RWTS) и другая информация, сохраняемая программистом, организующим доступ к ДОП ОЗУ с помощью собственных программ. При соблюдении указанных правил, различная информация не будет смешиваться и накладываться друг на друга.

.шп+8

3.2.Обращение к виртуальному диску на уровне RWTS и некоторые

полезные алгоритмы (для программистов).

.шп-8

Как известно, обращение к RWTS системы DOS 3.3 производится путем обращения к двум подпрограммам:

JSR ¤3E3 - установить адрес управляющей таблицы RWTS
JSR ¤3D9 - обращение к RWTS

Перед этим необходимо заполнить список параметров управляющей таблицы RWTS IOB, располагающейся по адресу ¤557 (ее формат для работы с НГМД ЕС5088 и ЕС 5323 подробно описан в технической документации ПЭВМ "АГАТ-9", однако автор настоящего описания считает нелишним его напомнить (см. ниже)). Обращение к виртуальному диску (при установленном драйвере) на уровне RWTS осуществляется точно также. Параметры IOB имеют такое же значение. Предлагаемая таблица RWTS (знаками "*" отмечены параметры, используемые VRWTS (RWTS виртуального диска) аналогична таблице, представленной в техническом описании, но также содержит формат обращения к виртуальным дискам. Остальные параметры при обращении к нему можно не указывать (однако они важны для обращения к RWTS других накопителей информации). В таблице также указаны диапазоны значений, разрешенных для использования при обращении к виртуальному диску и обычным НГМД. При несоответствии в диапазонах, RWTS возвращает код ошибочного завершения обмена (см. таблицу).

.сс

.шп+8

Управляющая таблица общей RWTS ДОС 3.3.

(в ДОС располагается по адресу ¤557)

.шп-8

.гр

/----------/------------------------------------------------/
|  БАЙТ    |             СОДЕРЖИМОЕ                         |
|----------+------------------------------------------------/
|          |                                                |
|   1      |  тип таблицы = ¤01                             |
|          |                                                |
|*  2      |  S*¤10 (номер разъема НГМД, умноженный на ¤10) |
|          |                                                |
|   3      |  D (номер привода НГМД)                        |
|          |                                                |
|   4      |  V (номер тома НГМД, ¤00-игнорировать)         |
|          |                                                |
|*  5      |  номер трека: ¤00-¤22 для НГМД ЕС5088          |
|          |               ¤00-¤9F для НГМД FD55.F          |
|          |               ¤00-¤7F для НГМД FD55.E и TM65-21|
|          |               ¤00-¤3F для НГМД ROBOTRON        |
|          |*              ¤00-¤1F для виртуального диска   |
|          |                                                |
|*  6      |  номер сектора: ¤00-¤14 для НГМД FD55, ROBOTRON|
|          |                 ¤00-¤0F для НГМД ЕС5088        |
|          |*                ¤00-¤0F для виртуального диска |
|          |                                                |
|*  7      |  действие: 0-немедленное, не 0-отложенное      |
|          |                                                |
|   8      |  не используется                               |
|          |                                                |
|* 9-10    |  адрес буфера для чтения/записи                |
|          |                                                |
| 11-12    |  не используются                               |
|          |                                                |
|* 13      |  код работы:                                   |
|          |  0-включить НГМД, подвести головку             |
|          |* 1-чтение 256 байт в буфер                     |
|          |* 2-запись 256 байт из буфера                   |
|          |* 4-разметка ГМД                                |
|          |                                                |
|* 14      |  код завершения обмена:                        |
|          |* ¤00-нормальное завершение                     |
|          |  ¤10-ГМД защищен от записи                     |
|          |  ¤20-не тот номер тома                         |
|          |* ¤40-сбой в чтении/записи                      |
|          |* ¤80-нет устройства                            |
|          |                                                |
|  15      |  V (номер тома ГМД, предыдущее обращение)      |
|          |                                                |
|* 16      |  S*¤10 (номер разъема предыдущее обращение)    |
|          |                                                |
|  17      |  D (номер привода НГМД, предыдущее обращение)  |
|          |                                                |
|----------+------------------------------------------------

.тт

* Примечание: знаками "*" отмечены параметры IOB, используемые, возвращаемые или имеющие значение для VRWTS. При форматировании виртуального диска через RWTS, каталог не создается (фактически происходит очистка (обнуление) всей памяти ДОП ОЗУ).

Для обращения к виртуальным дискам из программ могут быть полезны следующие алгоритмы:

1) Определение наличия драйвера управления виртуальными

дисками в системе DOS.

Для этого достаточно опросить ячейку памяти с адресом ¤65A. При наличии указанного драйвера в памяти, указанная ячейка будет содержать нулевой байт.

2) Определение разъемов, на которых открыты виртуальные диски

(определение разъемов ДОП ОЗУ).

Для этого достаточно опросить ячейки ¤4F5-¤4FA. Чтение в одной из указанных ячеек константы ¤10, указывает на наличие в разъеме N=A-¤4F4 модуля ДОП ОЗУ, где A - номер ячейки в диапазоне ¤4F5-¤4FA.

Обращение к виртуальному диску на уровне менеджера файлов происходит обычным образом (так, как при работе с НГМД) (см. в соответствующих описаниях по ДОС).

.шп+8

5. Рекомендации по эксплуатации драйвера.

.шп-8

Надежность работы драйвера гарантируется фирмой "Friends' Software" и автором при соблюдении правил его использования и корректном обращении к виртуальным дискам.

Информация, записанная на виртуальный диск сохраняется на нем при загрузке любых систем и программ не использующих память ДОП ОЗУ. При последующем перезапуске среды DOS 3.3 и драйвера VIRT128 (отдельно или в резидентном виде) можно снова получить доступ к записанной ранее информации (т.к. виртуальные диски в этом случае не форматируются; см. примечание к пунту 2). Однако, если Вы использовали системы, пользующиеся памятью модулей ДОП ОЗУ, то записанная на виртуальные диски информация может быть частично, или полностью испорчена (драйвер VIRT128 производит их полное форматирование при загрузке только в том случае, если разрушен VTOC каталога). Это неизбежно приведет к ошибкам в содержащейся на виртуальных дисках файловой информации и возможно, нарушению структуры диска и его каталогов. Во избежание указанных осложнений для уверенности в целостности дисков, рекомендуется их форматирование командой "INIT" DOS 3.3 (прибегайте к этому действию всякий раз при неуверенности в полной сохранности информации на виртуальных дисках).

Если Вы не производили загрузку других сред и операционных систем (то есть постоянно работали в среде DOS 3.3), гарантируется полная сохранность информации на открытых виртуальных дисках (естественно, в том случае, если за период Вашей работы не было отключения питания ПЭВМ).

.шп+8

6. От автора.

.шп-8

Драйвер VIRT128 .BIN (версия 28.04.95) создан программистом фирмы "Friends' Software" Серковым С.В. При написании данного драйвера были использованы идеи и дизассемблированный текст драйвера VDK, созданного Волковым И.М. (Biocomputer software, 1992). Естественно, настоящий драйвер является улучшенной и во многом переработанной версией драйвера Волкова И.М. и, что очевидно, гораздо более надежной и удобной в использовании.

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

.шп+8

Серков С.В. 07.04.95.

(095) 400-6865

.шп-8

[an error occurred while processing this directive]