5.4 Контроллер дисковода.

В предыдущих версиях эмулятора (0.5 и ниже) поддерживался всего один образ
системного диска БК (файл с названием SYSDISK.IMG содержал образ диска БК-0011
на приводе A:). Соответственно, карта распределения дисководов имела вид:

    БК                   PC
-------------------------------------------------------------------------------
unit# 0 / drive A:       VDisk (SysDisk.Img), READ / WRITE, format ignored
unit# 1 / drive B:       IBM PC floppy drive A:, READ / WRITE / FORMAT (*)
unit# 2 / drive C:       IBM PC floppy drive B:, READ / WRITE / FORMAT (*)
unit# 3 / drive D:       ****** no drive *****


Начиная с версии 0.6 поддерживается изменяемая карта распределения дисков
для БК. Карта задается в конфигурационном файле эмулятора под названием
BK11_EML.CFG. Например, если в этом файле указаны команды:

A:=*C:\IMAGES.SYS\ANDOS310.IMG
B:=%
C:=*D:\STUFF\IMAGES.GMS\MAGIC_2.IMG
D:=A:

то карта распределения дисков для БК-0011М принимает следующий вид:

    БК                   PC
-------------------------------------------------------------------------------
unit# 0 / drive A:       VDisk (ANDOS310.IMG), READ / WRITE, format ignored
unit# 1 / drive B:       ****** no drive *****
unit# 2 / drive C:       VDisk (MAGIC_2.IMG), READ / WRITE, format ignored
unit# 3 / drive D:       IBM PC floppy drive A:, READ / WRITE / FORMAT (*)

Начиная с версии 4.12 поддерживаются 25 (drive letters от A до Y; устройство
Z: зарезервировано обращения к винчестеру IBM PC) БК-шных устройств, которые
могут физически ссылатся на реальный PC-дисковод или на IMAGE-файл с образом
бк-шной дискеты. Для работы дисками E: - Y: требуется дисковое ПЗУ
поддерживающее дополнительные диски. Стандартные ПЗУ 253 и 326 этому условию
не удовлетворяют, поэтому в комплекте с эмулятором идет доработанная 326 (а
точнее 327) прошивка. Максимальный размер IMG файла имеет теоретический предел
ровно в 1 GB (практически конечно размер ограничивается лишь объемом свободной
памяти имеющейся в IBM PC). Таким образом суммарный объем всех образов
может достигать 25 GB. Думаю этого должно хватить для хранения БК-шных прог-
рамм ;-) На практике однако для БК-шных программ будет доступно лишь первые
2.6MB "длинного" образа - из за ограничения количества треков на диске (255)
накладываемого используемой дисковой прошивкой. Это ограничение можно снять
слегка переделав прошивку и эмулятор - но стоит ли этим заниматся??

Загрузка IMG-файлов осуществляется в EMS память. Для файла любой длины
выделяется ровно столько страниц EMS по 16 килобайт сколько он занимает
+ 2 странички (для возможного хранения двух доп. треков). Если размер файла
менее 819200 байт (50 страниц EMS), то все равно выделяется 52 страницы 
EMS-памяти, однако загружаются только несколько начальных страниц в
соответствии с длиной такого "короткого" файла. Например, если длина IMG
файла составляет 409600 байт (40 треков), то данными о диске будут загружены
только первые 25 страниц EMS. При обновлении "коротких" файлов их
первоначальная длина сохраняется. Таким образом данный метод позволяет
работать и с образами 40-трековых дисков.

Из Монитора БК-11М можно загрузится с любого привода (конечно при условии, что
на дискете или в образе диска содержится валидный загрузчик), набрав команду 
nB, где n - номер привода (0 = A:, 1 = B:, 2 = C:, 3 = D:). Возможна загрузка
с дополнительных приводов E: - Y: (04 - 30 oct, например командой 25B). Авто-
матическая проверка наличия загрузчика производится только с приводов A: - D:
(ограничение используемой дисковой прошивки. Это легко подправить - но нужно
ли??).

При записи на виртуальный диск происходят изменения лишь в памяти. Физически
файлы-образы дисков (обычно они имеют расширение .IMG) обновляются только
после выхода из эмулятора. Если Вы не хотите случайно испортить файл образа
диска, то можно запретить его обновление, установив на этот файл атрибут
Read-Only. Файл, поставляемый в коплекте с эмулятором (DOS-B11.IMG) имеет
установленный атрибут Read-Only для защиты от случайного повреждения. 
Некоторые другие эмуляторы БК (например эмулятор Сергея Камнева) не могут
работать с образами дисков имеющими атрибут read-only, поэтому возможно Вы
решите снять его с данного файла. Это можно просто сделать например из
популярной оболочки Norton Commander или с помощью команды MS-DOS attirb.

(*) Для операции форматирования требуется наличие в памяти резидентного драй-
вера типа PU_1700 или 800, т.к. стандартный для БК формат диска (512K в одном
секторе, 10 секторов на дорожку) не поддерживается напрямую BIOS'ами старых
IBM PC (486, 386). Поддержка этого формата диска есть в award-bios'ах
новых компьютеров (Pentium, Pentium-II, Celeron). Однака эта поддержка ог-
раничивается как правило только чтением-записью, но не форматированием.
Таким образов 800 или PU_1700 необходим (PU_1700 предпочтительнее т к он
корректнее написан, меньше размером, стабильнее работает и выпущен позже
чем 800). Если такого рода драйвер не установлен в системе перед запуском
эмулятора, то физического форматирования диска производится не будет.
Также следует иметь в виду некоторые аспекты переносимости дискет с БК на
IBM и обратно. В общем случае, диски отформатированные и записанные на БК
нормально читаются (и записыватся) на IBM PC. Записанные на PC данные можно
опять прочитать на БК. Однако если диск отформатирован на IBM, то на БК с
обычным драйвером дисковода 253 или 326 (наиболее распостраненные Floppy
ROM) такой диск не прочитается, что связано со слишком маленьким временем
ожидания появления первого сектора на дорожке (ошибка была допущена при
разработке ROM Саяпиным А. А.). В настоящее время на БК существует несколько
дисковых ROM, в которых тем или иным образом исправлена данная ошибка.

Примечание: Хотя ПЗУ контроллера дисковода БК-0011М поддерживает работу с 4
дисководами, некоторые операционные системы на БК работают только с двумя (A:
и B:) Если даже в такой системе указать обращение к дискам C: или D:, то 
физически доступ будет осуществлятся к дисководам A: (или B:), но с включенным
признаком пропуска дорожек (для обработки 40-трековых дисков на 80-трековом 
дисководе на реальной БК; однако эмулятор игнорирует данный признак). 
Так ведет себя например AO-DOS. Для переконфигурации AO-DOS'а следует
использовать команды ASSIGN C C и ASSIGN D D. После этого доступ к приводам
C: и D: становится возможным.
