Из журнала ZX Format #4, Санкт-Петербург, 15.06.1996 Рубрика "IS-DOS - пользователям" No 4 "Работа с электронным диском в среде IS-DOS" (C) В.Елисеев _________________________________________ Сегодня в нашей рубрике "IS-DOS - пользователям" пойдет речь о том, как правильно сформировать электронный диск, как устанавливать его при загрузке систе- мы на различных моделях Spectrum-совмес- тимых компьютеров. 1. Что такое "Электронный диск" и для че- го он нужен в среде IS-DOS. Электронным диском в системе IS-DOS называется виртуальное блочное устрой- ство, организуемое в страничной памяти Spectrum-совместимого компьютера с объе- мом оперативной памяти более 48К. Другими словами, это область памяти, организован- ная таким образом, что к ней можно обра- щаться непосредственно из файловой обо- лочки IS-DOS как к обычному дисководу. Может быть это покажется Вам стран- ным, - зачем имитировать дисковод, когда он уже есть, - но электронный диск обла- дает одним неоспоримым преимуществом по сравнению с дисководом и даже винчстером - это скорость чтения-записи, соизмеримая со скоростью работы самого компьютера. Используя электронный диск Вы значительно сокращаете затраты времени на подгрузку с диска внешних команд, утилит и оверлейных модулей программ. Достаточно один раз по- работать с электронным диском и Вы сразу "почувствуете разницу". Разумеется, содержимое электронного диска во многом зависит от объема памяти Вашего компьютера. Обычно на электронном диске размещаются наиболее часто ис- пользуемые программы и системные утилиты, например tv.com, filecopy.com, dele- te.com, текстовый редактор и т. п. Полез- но также держать там конфигурационные файлы системы: extent.txt, extkey.txt и др. Оптимальный объем оперативной памяти, при котором наиболее полно реализуются возможности электронного диска - 256-512К, отличные результаты показывают компьютеры с 1 мегабайтом ОЗУ, однако и на обычных 128-х Спектрумах применение электронного, или, как его еще называют, RAM-диска, то- же дает вполне ощутимое увеличение произ- водительности. 2. Драйвер электронного диска. Работа с электронным диском в среде IS-DOS организуется системой при помощи специальной программы, называемой "драй- вером электронного диска". Драйвер электроного диска - это аппа- ратно-зависимая резидентная программа . Это значит, что для каждого типа ZX-сов- местимых компьютеров должен существовать свой собственный драйвер, делающий его аппаратные особенности "прозрачными" для системы и пользователя. На сегодняшний день система IS-DOS поддерживает все основные стандарты рас- ширенной памяти ZX Spectrum, это: 1. Стандарт Spectrum 128 (Pentagon 128, Contact 128 и др.) - используется вся па- мять выше 48К, что позволяет создать электронный диск размером 320 блоков (80К); 2. Стандарт Scorpion (Scorpion 256, Pe- ters 256, KAY 256) - используется вся па- мять выше 48К, что позволяет создать диск с объемом 832 блока (208К), есть возмож- ность использования только памяти свыше 128К, что уменьшает RAM-диск до 512 бло- ков (128К), но позволяет одновременно пользоваться дополнительным буфером 80К при работе с копировщиками filecopy.com, copy.com, copy25.com и др. 3. Стандарт Profi (Profi 1024) - ис- пользуется вся память выше 128К, что поз- воляет создать электронный диск размером от 1536 блоков (384К) для Profi 512 до 3500 блоков (896К) для полного ОЗУ 1Мб. 4. Компьютеры ATM - здесь дело обстоит несколько сложнее в связи с тем, что ад- ресация расширенной памяти в этих компью- терах неоднократно менялась от версии к версии, что вызывает определенные пробле- мы при написании драйверов. Поэтому су- ществующие драйверы АТМ могут с успехом работать на одной плате и совершенно не работать на всех остальных. В связи с этим драйверы для АТМ пишутся в нашей фирме на заказ с предоставлением заказчи- ком необходимой технической информации по его плате. На компьютерах АТМ использует- ся память выше 128К, что дает 1536 блоков (384К). 5. И, наконец, последнее - для вла- дельцев 48-х компьютеров с "теневым ОЗУ" по адресам #0000-#3FFF (HOBBIT и различ- ные самоделки) разработан специальный драйвер, позволяющий создать электронный диск размером 64 блока (16К). Это, конеч- но, мало, но все-таки лучше, чем ничего. Специальная программа-настройщик позволит выбрать номера портов для машин с нестан- дартным подключением "теневого" ОЗУ. В случае, если Ваша машина не соот- ветствует ни одному из вышеперечисленных стандартов, Вы можете заказать в фирме ISKRA SOFT специальный драйвер, предоста- вив нам необходимую техническую информа- цию по Вашей машине. 3. Первичное создание RAM-диска. 3.1 Создание электронного диска начина- ется, как Вы уже догадались, с загрузки драйвера. Драйверы электронного диска, как и драйверы всех блочных устройств, находятся в каталоге SERVICE\BLK\ базово- го комплекта IS-DOS. Для установки драй- вера необходимо выполнить одно из следую- щих действий: 1. Выйти в Монитор командной строки (клавиша m) и набрать команду: Q:RES\set Q:SERVICE\BLK\xxxx.blk где xxxx - имя Вашего драйвера 2. Создать в текстовом редакторе и за- пустить командный bat-файл, содержащий строку, описанную в п. 1 3. Установить курсор на имя Вашего драй- вера и нажать клавишу ENTER. С этого момента драйвер установлен в системе, в чем можно убедиться, просмот- рев область драйверов при помощи программ show.com или eliminat.com. Драйвер электронного диска при ус- тановке автоматически присоединяется к первому свободному устройству (чаще всего к устройству С, но, если у Вас есть тре- тий дисковод или винчестер, драйвер уста- новится на другое устройство). Просмот- реть соответствие блочных драйверов устройствам IS-DOS можно при помощи ути- литы choose.com, она выводит на дисплей список из 8 возможных в IS-DOS устройств и напротив каждого - имя соответствующего ему драйвера. Переустановить драйвер на другое устройство можно при помощи утили- ты dev.com. Стандартный драйвер электронного дис- ка занимает в памяти около 600 байт. В последнее время появились новые драйверы, значительно уменьшенные (менее 256 байт), они отличаются от старых отсутствием внутреннего буфера, что, впрочем, никак не отражается на работе системы, за исключением единственного случая - сохра- нения текущей системы командой sv.com на электронный диск, но, поскольку такая си- туация, как и любая другая, связанная с копированием содержимого верхних 16К в электронный диск, практически не встреча- ется при работе в IS-DOS, этим вполне можно пренебречь, сэкономив 500 байт в основной памяти машины. Еще несколько слов о драйверах электронного диска, разработанных фирмой ISKRA-SOFT для разных моделей Spec- trum-совместимых компьютеров: ed_128.blk (04.10.94, 560 байт) стан- дартный драйвер для всех машин с 128К ОЗУ Может быть использован НА ЛЮБОМ ZX Spectrum для создания RAM-диска размером не более 80К. Необходимо помнить, что для создания электронного диска этот драйвер использу- ет ту же самую область памяти, что и до- полнительный буфер копировщиков, поэтому совместное их использование не допускает- ся и вышеупомянутый буфер перед установ- кой электронного диска необходимо отклю- чить при помощи утилиты copytune.com во всех копировщиках (filecopy.com, co- py.com, copy25.com, from_msd.com, to_msdos.com, from_trd.com. to_trdos.com) ed128-.blk (24.04.95, 169 байт) умень- шенный вариант драйвера для Spectrum 128 и других ма- шин, имеющих не менее 128К. ed_scorp.blk (04.10.94, 533 байта) стан- дартный драйвер для компью- теров Scorpion и совмести- мых с ними компьютеров Pe- ters 256 и KAY 256. Он ис- пользует 128К памяти, не входящих в конфигурацию Spectrum 128, что позволяет избежать конфликта между электронным диском и допол- нительным буфером копиров- щиков. edsco+.blk (02.09.94, 546 байт) альтер- нативный драйвер для компьютеров, совместимых со стандартом Scorpion. Он ис- пользует всю память выше 48К и позволяет создать диск размером до 208К. Ес- тественно, требует выключе- ния буфера копировщиков. edsco-.blk (29.04.95, 195 байт) умень- шенный вариант драйвера ed_sco+.blk ed_profi.blk (01.11.93, 528 байт) драйвер для компьютеров Profi с объемом ОЗУ до 1Мб. Он ис- пользует только память, не входящую в конфигурацию Spectrum 128, что позволяет спокойно пользоваться буфе- ром копировщиков и дает возможность создавать диск объемом до 896К, что на 300 байт превышает объем диске- ты в IS-DOS! edprof-.blk (20.06.95, 178 байт) умень- шенный драйвер для Profi. ed_atm.blk (30.09.94, 538 байт) драйвер электронного диска, работа- ющий на одном из компьюте- ров серии ATM, на каком именно, к сожалению пока установить не удалось в связи с разнообразием и не- достаточной распространен- ностью этих компьютеров в нашем городе. В ближайшем будущем возможно прояс- нение ситуации и создание драйвера, га- рантированно работающего на ATM TURBO 2+, но пока владельцы ATM могут расчитывать только на получение исходного ассемблер- ного текста драйвера и самостоятельную доработку его под свою плату. Написание же драйвера на заказ возможно только при наличии технической информации по органи- зации памяти в каждом конкретном случае. ed16.blk (27.06.93, 72 байта) специ- альный драйвер для компью- теров с "теневым ОЗУ", поз- воляет создать 16-кило- байтный электроный диск, поставляется с настройщиком ed16tune.com, который спо- собен настраивать адрес порта, включающего теневую страницу на различных моде- лях компьютеров. Кроме того, существует ряд специали- зированных драйверов, как то: ed_3.blk для компьютеров Amstrad, ed128rom.blk для компьютеров с системой IS-DOS, прошитой в ПЗУ, ed128ram.blk для IS-DOS CHIC и т. п. Разумеется, из всех этих драйверов Вам понадобится только один - тот, кото- рый предназначен для Вашего компьютера. Его-то Вы и должны будете установить пе- ред началом работы одним из вышеописанных способов. 3.2 Следующий этап работы - формирование на электронном диске "системной области", т. е. запись специальной служебной инфор- мации и формирование корневого каталога. Эта операция выполняется при помощи ути- литы create.com, т. е. так же, как и на дискетах, с той только разницей, что электронный диск не нужно размечать при помощи программы format.com, так как эта программа выполняет специфическую размет- ку дискеты на низком уровне, не имеющую смысла на виртуальном блочном устройстве. Утилита create.com может работать как в ручном режиме, так и в командной строке или командном bat-файле. В первом случае все параметры задаются вручную в меню программы, во втором - при помощи специальных ключей. Внешний вид программы create.com показан на рис. 1 +---------------------------------------+ | +-------------+ | | +----------+ |Name:IS-DOS | | | |Drive: C| |Double | | | |Retry: 4| |Tracks: 80| | | |Check: Y| |Sec Size:1024| | | |Exist: ask| |boot: no boot| | | |Parameters| |Dev Size: 512| | | |Create | |Dir Size: 2| | | |Save | |Continuous | | | |Exit | |Quit | | | +----------+ +-------------+ | +---------------------------------------| | Рис. 1 Утилита create.com | +---------------------------------------+ Одним из основных параметров на этом этапе работы является размер электронного диска в блоках, задаваемый в строке Dev Size в правом меню. Эта величина зависит от объема ОЗУ Вашего компьютера и расчи- тывается по следующим формулам: для Spectrum 128,256: D=RAM-48000\256 (1) для Spectrum 512,1024: D=RAM-128000\256 (2) где D - искомый размер диска в блоках RAM - общий объем ОЗУ компьютера В случае если Вы захотите в Spectrum 256 использовать электронный диск сов- местно с дополнительным буфером копиров- щика, то его размер следует также расчи- тывать по формуле (2). Сводная таблица типовых размеров электронных дисков для компьютеров с различным объемом ОЗУ при- ведена в Табл. 1. Таблица 1 Типовые размеры электронных дисков. +============+========+=================+ | Модель | Объем | Размер диска | | | ОЗУ +--------+--------+ |компъютера | (Кб) | блоки | Кб | |------------+--------+--------+--------+ |HOBBIT | 48 | 64 | 16 | |------------+--------+--------+--------+ |Spectrum 128| | | | |Contact 128 | 128 | 320 | 80 | |Pentagon 128| | | | |------------+--------+--------+--------+ |Scorpion 256| | 832 *)| 208 *)| |Peters 256 | 256 | --- | --- | |KAY 256 | | 512 | 128 | |------------+--------+--------+--------+ |ATM TURBO | 512 | 1536 | 384 | |PROFI 512 | | | | |------------+--------+--------+--------+ |PROFI | 1024 | 3500 | 896 | +============+========+========+========+ *) в числителе - без буфера копировщиков, в знаменателе - с использованием буфера. При создании электронного диска наи- более важными, как уже говорилось выше, являются размер диска и имя устройства, к которому подключен драйвер. Остальные па- раметры можно оставить по умолчанию, од- нако с их помощью можно несколько оптими- зировать создаваемый диск, сэкономив не- которое количество памяти, что особенно важно на машинах с небольшим объемом ОЗУ. В первую очередь необходимо устано- вить опцию "boot" в правом меню в положе- ние "no boot" - это сэкономит Вам 4 бло- ка, занимаемые загрузочным сектором, ко- торый совершенно не нужен на виртуальном устройстве. Далее необходимо определить размер корневого каталога в блоках и установить параметр "Continuous", т. к. непрерывный каталог на 1 блок короче сегментированно- го. При расчете размера корневого катало- га необходимо помнить, что в каждом блоке помещается 8 описателей файлов или ката- логов, так что заранее рассчитав пример- ное их количество, можно задать ровно столько блоков, сколько понадобится. Это относится и ко всем другим каталогам IS-DOS. Еще один параметр - "Check" в левом меню будучи выключенным значительно сок- ратит время работы утилиты, так как не будет производить бессмысленную на вирту- альном устройстве проверку качества маг- нитного покрытия. Параметр "Exist" определяет действие утилиты при попытке пересоздать уже имею- щееся устройство и может принимать три значения: Yes - пересоздать сразу, No - не пересоздавать вообще и Ask - запросить дополнительное подтверждение перед нача- лом работы. Помните, что при пересоздании диска его корневой каталог стирается, однако часть информации из подкаталогов может быть извлечена при помощи утилиты fdisk.com. При работе из командной строки или bat-файла Вы можете использовать ключи для передачи параметров утилите crea- te.com. Формат вызова ее следующий: Q:SERVICE\create AAA [ключи], где AAA - имя создаваемого диска (любое до 8 символов) Ключи: /-N, где N - логическое имя устройства, чаще всего "С" /dM, где M - размер диска в блоках, /сX, где X - тип корневого каталога: "0" - если сегментированный, "1" - если непрерывный, /sY, где Y - размер корневого каталога в блоках, /vZ, где Z - флаг проверки качества дис- ка, при работе с RAM-диском жела- тельно установить в "0", /bQ, где Q - тип загрузочной записи, при работе с RAM-диском желательно ус- тановить значение "2" (без загру- зочной записи), /n - не пересоздавать имеющийся диск, /r - пересоздать имеющийся диск, /m - запросить подтверждение на пере- создание диска. Примеры вызова create.com: для Spectrum 128: create RAM /-C /d320 /c1 /s2 /v0 /b2 /m для Scorpion 256 без буфера копировщиков: create ZX256 /-E /d832 /c1 /s4 /v0 /b2 /r 3.3 Теперь, когда мы с Вами создали электроный диск, пока еще пустой, настало время заполнить его первой полезной ин- формацией. Вообще-то на электронном диске можно хранить все, что угодно, однако предпочтительнее поместить на него наибо- лее часто используемые системные утилиты и файлы, что позволит значительно уско- рить работу системы. Итак, какие файлы лучше помещать на электронный диск? Ответ на этот вопрос лучше всего построить на конкретном при- мере. Расмотрим процесс заполнения электронного диска для Spectrum 128. 80 килобайт - это довольно мало, поэ- тому ограничимся только самым необходи- мым. Предположим, что электронный диск установлен на устройстве C. Свободный объем чистого диска равен 316 блокам (320 минус 2 блока системной информации и 2 блока корневого каталога): 1. Скопируем в корневой каталог файл extent.txt, это позволит ускорить ре- акцию системы на клавишу ENTER и зай- мет 2 блока дискового пространства: Q:SHELL\copy Q:extent.txt C: 2. Создадим на электронном диске каталог SHELL, сделав его непрерывным и задав размер не более 2 блоков (ключи /с и /s2): Q:SHELL\mkdir C:SHELL /c /s2 3. Скопируем в каталог SHELL наиболее важные системные утилиты и конфигура- ционные файлы оболочки: Q:SHELL\copy Q:SHELL\filecopy.com C:SHELL Q:SHELL\copy Q:SHELL\tv.com C:SHELL то же самое выполнить для файлов: extkey.txt, extview.txt, exebat.com, menu.com, menu.mnu Это займет примерно 42 блока на электрон- ном диске. 4. Создадим каталог RES и запишем в него файл set.com (еще 9 блоков): Q:SHELL\mkdir C:RES /c /s2 Q:SHELL\copy Q:RES\set.com C:RES После всего этого у нас остается еще 261 блок дискового пространства, на кото- рое можно записать текстовый редактор (файлы dry.com, ed*.ovr, ed_copy.com, ed_ext.txt, ed_mac.txt, edit+.com, edi- tor.com, wet.com из каталога EDIT) - это еще 99 блоков, учитывая и объем каталога C:EDIT. Оставшиеся 162 блока Вы можете использовать по Вашему усмотрению и запи- сать туда те файлы, которыми Вы наиболее часто пользуетесь. Аналогичным образом формируется RAM-диск и в машинах с 256 и 512К памяти, с той только разницей, что файлов туда поместится гораздо больше. Принципиальные отличия имеет только работа с электроным диском размером в 1Мб, но об этом - чуть позже. 3.4 И, наконец, последний этап первично- го формирования электронного диска - наз- начение его как "быстрого" устройства. Эта операция выполняется при помощи внут- ренней команды DOS L_Q: L_Q /C (все буквы обязательно заглавные) После этого система будет искать все файлы сначала на устройстве "Q", т. е. на электронном диске, и только не найдя их там будет обращаться к устройству "S", т. е. к дисководу. Разумеется, эту последовательность операций, даже если ее оформить как bat-файл, вы вряд-ли захотите выполнять каждый раз при загрузке системы. К счастью, это и не нужно. Достаточно один раз создать электронный диск вручную, после чего сохранить его образ в файле для быстрой распаковки на электронный диск. Поэтому сейчас мы рассмотрим этот процесс в деталях. 4. Создание образа электронного диска. После того, как диск создан, необхо- димо запустить специальную утилиту sv_image.com, которая позволит сохранить в файле все содержимое электронного диска Утилита запускается следующим обра- зом: 1. На текущей панели открывается диск, на который Вы будете сохранять образ RAM-диска. 2. Запускается утилита sv_image.com с ключом /N, где N - логическое имя устройства, на котором находится RAM-диск: Q:SERVICE\sv_image /C Эта команда создаст на текущем дис- ководе файл image.img, который может быть впоследствии быстро распакован ути- литой image.com. Его можно переименовать, хотя рекомендуется сохранять расширение img, как признак образа диска, и помес- тить в любой каталог, например специально созданный S:RAM. Кстати, в состав img-файла входит только реально занятый объем диска, исключая пустую область в конце, поэтому размер файла сильно зави- сит от заполненности электронного диска. После этого Вы можете спокойно впи- сать в Ваш autoexec.bat команды для уста- новки электронного диска, из которых по- надобятся только команды установки драй- вера и распаковки образа диска. Фрагмент такого файла для Spectrum 128 Вы можете увидеть ниже: Q:RES\set Q:SERVICE\BLK\ed_128.blk Q:SERVICE\image S:RAM\image.img /-C L_Q /C Поскольку объем img-файла растет по мере увеличения объема RAM-диска, такие файлы для компьютеров с 512К могут дости- гать полутора тысяч блоков,в связи с чем возникает проблема с их размещением на системном диске. В таком случае полезно создать специальный диск с минимальным комплектом системных файлов и img-файлом со всеми необходимыми утилитами. В состав такого диска должны входить следующие файлы: S:extent.txt S:autoexec.bat S:SHELL\exebat.com S:UTIL\find.com S:RES\set.com S:SERVICE\is_dos.sys S:SERVICE\con.com S:SERVICE\boot.com S:SERVICE\image.com S:SERVICE\BLK\ed_128.blk (или другой) S:RAM\image.img После копирования всех этих файлов не забудьте сделать диск загружаемым, на всякий случай напомню, что это можно сде- лать при помощи следующей последова- тельности команд: 1. Открыть на текущей панели каталог S:SERVICE 2. Выйти клавишей "m" в монитор командной строки и набрать команды: con is boot 3. Выйти из монитора командной строки клавишами SS+A. Теперь при загрузке с этого диска Ваш Spectrum 512 будет автоматически рас- паковывать образ электронного диска. 5. Теперь нам осталось поговорить только об особенностях работы с электронным дис- ком на компьютерах с 1Мб ОЗУ. Как уже бы- ло сказано выше, на такой RAM-диск спо- собна поместиться целая дискета IS-DOS! Разумеется, мы не позволим себе проигно- рировать такую прекрасную возможность, поэтому специально для пользователей ме- габайтных электронных дисков существуют трековые копировщики acca.com и adbc.com. Копировщик acca.com используется ес- ли Ваш электронный диск находится на устройстве "С", а загружается система с дисковода "A". Копировщик adbc.com ис- пользуется если электронный диск установ- лен как "D", а загрузка идет также с дис- ковода "A". Для копирования дискеты на электронный диск необходимо вставить ее в дисковод "А", открыть ее на текущей пане- ли и вызвать один из вышеупомянутых копи- ровщиков. Далее Вы можете назначить электрон- ный диск как системный, быстрый и текущий одновременно и на весь день забыть о дис- кетах (радость-то какая!). Не забудьте только по окончании ра- боты совершить обратное копирование с RAM-диска на дискету при помощи тех же копировщиков, иначе все результаты Вашей работы исчезнут с выключением питания. Обратное копирование выполняется при помощи тех же программ, только при их вы- зове на текущей панели должен быть открыт RAM-диск. Еще одно последнее замечание по поводу трековых копировщиков: логика их работы весьма оригинальна, поэтому ее лучше представить в виде таблицы (см. Табл. 2) Таблица 2 Логика работы копировщиков acca и adbc. +============+=============+============+ |Копировщик | Источник | Приемник | |------------+-------------+------------+ |acca.com | A | C | | | B | D | | | C | A | | | D | B | |------------+-------------+------------+ | | | | |adbc.com | A | D | | | B | C | | | C | B | | | D | A | +============+=============+============+ Ну вот и все. Надеюсь, что эта не- большая статья расставит все точки над "i" в вопросе, касающемся работы с электронным диском в среде IS-DOS и поз- волит Вам сделать Вашу работу более удоб- ной и эффективной. Удачи Вам, дорогие читатели! _________________________________________